--- /srv/rebuilderd/tmp/rebuilderdezcuSh/inputs/spooles-doc_2.2-14.1_all.deb +++ /srv/rebuilderd/tmp/rebuilderdezcuSh/out/spooles-doc_2.2-14.1_all.deb ├── file list │ @@ -1,3 +1,3 @@ │ -rw-r--r-- 0 0 0 4 2024-02-29 17:18:08.000000 debian-binary │ -rw-r--r-- 0 0 0 1948 2024-02-29 17:18:08.000000 control.tar.xz │ --rw-r--r-- 0 0 0 6789412 2024-02-29 17:18:08.000000 data.tar.xz │ +-rw-r--r-- 0 0 0 6779096 2024-02-29 17:18:08.000000 data.tar.xz ├── control.tar.xz │ ├── control.tar │ │ ├── ./control │ │ │ @@ -1,13 +1,13 @@ │ │ │ Package: spooles-doc │ │ │ Source: spooles │ │ │ Version: 2.2-14.1 │ │ │ Architecture: all │ │ │ Maintainer: Debian Science Maintainers │ │ │ -Installed-Size: 6888 │ │ │ +Installed-Size: 6871 │ │ │ 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 2024-02-29 17:18:08.000000 ./ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-02-29 17:18:08.000000 ./usr/ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-02-29 17:18:08.000000 ./usr/share/ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-02-29 17:18:08.000000 ./usr/share/doc/ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/ │ │ │ --rw-r--r-- 0 root (0) root (0) 151984 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/A2.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 151582 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/A2.ps.gz │ │ │ -rw-r--r-- 0 root (0) root (0) 596035 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/ASHCRAFC.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 67784 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/AllInOne.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 127870 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/BKL.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 156040 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/BPG.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 190312 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/Chv.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 100973 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/ChvList.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 94687 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/ChvManager.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 120925 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/Coords.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 115961 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/DSTree.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 134087 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/DV.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 117820 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/DenseMtx.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 107533 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/Drand.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 121527 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/EGraph.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 220984 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/ETree.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 87866 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/Eigen.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 179621 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/FrontMtx.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 275674 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/FrontTrees.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 184605 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/GPart.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 190181 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/Graph.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 131966 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/I2Ohash.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 109951 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/IIheap.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 121751 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/IV.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 124708 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/IVL.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 95646 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/Ideq.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 205023 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/InpMtx.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 127735 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/LinSol.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 89448 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/Lock.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 176475 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/MPI.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 168529 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/MSMD.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 163489 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/MT.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 146523 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/Network.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 143567 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/PatchAndGoInfo.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 124730 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/Pencil.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 107274 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/Perm.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 149676 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/ReferenceManual.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 153022 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/SemiImplMtx.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 134559 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/SolveMap.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 175780 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/SubMtx.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 101641 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/SubMtxList.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 117809 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/SubMtxManager.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 120951 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/SymbFac.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 167992 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/Tree.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 190234 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/Utilities.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 127971 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/ZV.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 67307 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/AllInOne.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 127482 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/BKL.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 155721 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/BPG.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 189934 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/Chv.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 100580 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/ChvList.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 94305 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/ChvManager.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 120545 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/Coords.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 115577 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/DSTree.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 133684 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/DV.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 117406 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/DenseMtx.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 107213 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/Drand.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 121242 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/EGraph.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 220587 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/ETree.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 87471 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/Eigen.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 179327 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/FrontMtx.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 275098 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/FrontTrees.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 184153 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/GPart.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 189768 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/Graph.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 131671 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/I2Ohash.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 109557 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/IIheap.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 121351 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/IV.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 124244 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/IVL.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 95284 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/Ideq.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 204620 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/InpMtx.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 127499 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/LinSol.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 89064 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/Lock.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 176130 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/MPI.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 168342 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/MSMD.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 163073 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/MT.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 146123 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/Network.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 143176 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/PatchAndGoInfo.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 124326 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/Pencil.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 106869 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/Perm.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 149352 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/ReferenceManual.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 152706 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/SemiImplMtx.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 134307 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/SolveMap.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 175606 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/SubMtx.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 101241 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/SubMtxList.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 117435 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/SubMtxManager.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 120563 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/SymbFac.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 167621 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/Tree.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 189916 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/Utilities.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 127540 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/ZV.ps.gz │ │ │ -rw-r--r-- 0 root (0) root (0) 760 2024-02-29 17:18:08.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) 189185 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/misc.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 188706 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/misc.ps.gz │ │ │ -rw-r--r-- 0 root (0) root (0) 9600 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/spooles.2.2.html │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-02-29 17:18:08.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 2024.02.29:1857 │ │ │ │ +%DVIPSSource: TeX output 2025.10.04:1733 │ │ │ │ %%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 │ │ │ │ @@ -2062,23 +2062,23 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 50 /two put │ │ │ │ dup 52 /four put │ │ │ │ -dup 57 /nine put │ │ │ │ +dup 53 /five put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 70 /F put │ │ │ │ -dup 97 /a put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ +dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ -dup 117 /u put │ │ │ │ -dup 121 /y put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -2252,95 +2252,85 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA647CD0E2539DFAD9604486DCCFA49 │ │ │ │ -AC96130D106A8F8387633622C3809400D6E8FF9D60877C743502E4D211CEBF62 │ │ │ │ -9A6F91045C22D5D20C5FF677D89983D02E5EE26C71A9EAE0E7C52465DA5A149A │ │ │ │ -9B731C27EC8366BC3E841C0CAE49A33DE164A857365B17B09CAD121C47A980CB │ │ │ │ -C75E1030F6C394EDB46C54B46880D2344127B903FB22684C9CAACE6053DC3BFA │ │ │ │ -4E47C565ECAF19C4295A11BD68CA6D45B5738B932BB3690A8C712904C49C1636 │ │ │ │ -A7702075F2FEA8DB3EB3A3C1216BB769DD0BAF4507A18E3052F2C846B0797933 │ │ │ │ -8CE9BB2DB5DFADAF1B0FC3A22BAB82A0D5D290F7AD950013CFA465BE11C1076D │ │ │ │ -5833FF92321FBF90D9229D3BA09DD18EEC44D9FCF8FCF63CC09D2977BFA798B6 │ │ │ │ -47FB047EA6AF69C7DE570176F5B6C0FED74DEDBF7DDF49550DD84BA14AC09423 │ │ │ │ -F70D5B14F0F8588F1E2FFE0DFE0760E77A9E39DEDAC5C5AE3760722C029B916D │ │ │ │ -96A2A7D1DD6A61F90B4B9806314A668EB7A0E107A3527310A240490453CC18D7 │ │ │ │ -3793B4CF3CE13EA332E7F5C2BACF85AC75FE84693B966BB0F6FB9A179A331C4E │ │ │ │ -55E9EF30E2734E44A88E053CD5E650D7E529E94CB7F8B733E68315ACAC5BEFC5 │ │ │ │ -3FE4F585F875310267865679AB381125C31E9AEB7226DC9F18DA80A9DE2F38A4 │ │ │ │ -51B8F9D5B2FBA0F50D53AE6212AFE41466A594F7A303B4E82F1493C0B8D65756 │ │ │ │ -BE6AF2931E5ADA5CE7D51CB5B1EC916C6C6D674808939331CA66F8181DD2B112 │ │ │ │ -1A12198CCCB6BBF1D40C803E794B65241ACE1E0D30CCA1C6F2D3E1415B98726B │ │ │ │ -9BA303BE2C4C276108CC78C093F1CC85CA454CC38535D1DEBFA341D84E8A5DDF │ │ │ │ -D53D8DD0F4A812B5BA63871BEB3BCE93FBC77AD395914E2CD757546C2BE2D641 │ │ │ │ -FDB12258E1E1D10E1B963EABB265F2C8B2547D48963E1AD3B223B666B46915A1 │ │ │ │ -157F5EA0AB8D8411C07AA2EB5D0EF1A1BA6D81C47473A3D3D6287104C7BF61F8 │ │ │ │ -3BDB64995DE96A65BF2B7288C51ADAA3D373A95C40D5240C5FF397551554AA9E │ │ │ │ -C89C7E45AA7738503CB058EF6AD5052CC78E4445C810C250BF25394B8D7DE82E │ │ │ │ -315C9CCD6E1E9150EC79EE0F354C668AE199C1AFF39C67337A86CB932E8D64E9 │ │ │ │ -389FF3CC08B538492DEED017686DBB9BDEA30FE67FB4EBDB3627C16FD15F243A │ │ │ │ -7FDEB310EFC940E57726E94340472F2C452815927ADE21578C959890216BE504 │ │ │ │ -225BE4B4D2E3B19F5E06B5A0B25AF168C3A2B26F599A829F89C16BD2026E8CC9 │ │ │ │ -8FB3CBB830C3E36C099071A70D0B8834FF2C17364EB50D5C71440CC7BFE02321 │ │ │ │ -8C6ECAC2F7EC1BE39077DB0E8B2B251626A71FD038EB2CF1FC254D98C1535CAA │ │ │ │ -A8C987BC266482BD860A333048E1EDB3DD40A6ECD6DA0088AD9B9640202D89AA │ │ │ │ -0BB9A0ADF63491E67F2E97E35942D77E59B9B8AB0ED28B022EE5CD3449FC5B7A │ │ │ │ -19E38845B488F97D155C4312885E29537EAE97719C65845663480CE79DE8F037 │ │ │ │ -68995C0928FE8AFBEE554F01381EE5187578DF5D2542F26F66A599EE8ECC1F68 │ │ │ │ -FBADF3C2BA968C3CEB86675CF9A6CFD736E1422800D270417D497903DE87F2AE │ │ │ │ -938E39E120E9D3079F512E545E0E2616B84E81FE41392184F96818A7C86BF541 │ │ │ │ -F2E67C48CA56DA838C9FA0FAD538073B9F26319140D1F80EEEBCA190DE660A31 │ │ │ │ -457CAC16E92F87449A3734F9EA751588514865B58DC073658C8A857B5398AAC7 │ │ │ │ -3DC11E069996EF74A3189A07630D5DB87C5E028CD193C086B4D0E8BABC4F2393 │ │ │ │ -235EC96091B16C4A6D97DA1BD30A2D2E71F55869223CA66AD12448B668685F6E │ │ │ │ -06E7888D7F20045C662C4F7994CC7E1CE9AAC33A026716AA0551DF12343F0E22 │ │ │ │ -6E9F4B21C90406CC4997601194EF37A973221D1F4D73DD5666BD297F621C92AA │ │ │ │ -E3F698BC1146ADE754C4120EDF5B3E974D75A237E51DB49D52CD6CC7C9E8BD2D │ │ │ │ -E6849DF8F4DBA86C655D0C57CB54836C8A841C1D814F6B493F96ADBFCAD78D3B │ │ │ │ -430C58EF169950851B6A0B46411488B1A6F6974832787A24C0CDDBE27996EFB1 │ │ │ │ -DB341FA34B1DC6238D978D1E1D34AF3FB375ED6DA9C88699F195C88A54622F7C │ │ │ │ -36DAFC663D85660E756733A7E22F20C6A5D91F06087CAD10F7217BD33F343DC6 │ │ │ │ -F5EB9F16FE763672243EE6AE5CB6063A1D64670E1C059DD52134974E27D9D89C │ │ │ │ -BC658FCD814F20703D610C978FDCD6E2AEA31C18D1A310F215B28199F66C87DB │ │ │ │ -3B23980A393E1DD77AFA3045EDB6942505F3CF6204315A14E5B6BF2E96F3BB1F │ │ │ │ -628D24AC1893BC7DAEF3AA63F2116837F31DB90D872CBD9E5C48BCDEE781D20D │ │ │ │ -C6553D2D15F4E8438A9D1C7CEE1B72BD6AA08DC0AFEAF8B4DC1038707EE4A1BF │ │ │ │ -3D84460E60AF90F55002C1D8EBF0700F7EC3EFC944BEA78D0E0536F3AA6D9A84 │ │ │ │ -604A781AC5ACFEB7E681365315EE11E991C03DA431B65B332AD8F83F6F3AE66C │ │ │ │ -1BF434D3793FB5BCC44E44ACFF2855C2770C4AC678C6ACD6EB071974ACF1AE37 │ │ │ │ -D02C1736C62CC205A2F3488448527EFFA379613A8E6A6D134F4BFBAE6127304D │ │ │ │ -576C900A458E32CD42A4674415E03D8EB5742E71B854B3EDFD271AA214436544 │ │ │ │ -D1BCFD52F439298847E1FA258E5D38384FC85BC4EDC6F9E4431621CF763B137B │ │ │ │ -22DB6E3268B3F78881D55EA7C52ABF23FB73C152B06B708084FE1B00CFE72D9D │ │ │ │ -57B62AEE912E63BBD89D4D13CE896735454F1A16C3D9FB6CDF142CCA9F1C0242 │ │ │ │ -46F62109DF30667DA327F7CF6DC19B880C860C69080597FFCB1793313E202D4F │ │ │ │ -120A7C6B052C2EB7597B71B0985D24FDD2D3918393BF720E762C5DBBC2BB1E91 │ │ │ │ -B04560364EFE5B16EB068E0560FB932E0C617CFB95A166388E99AC4CB020F5BC │ │ │ │ -E24BB77352D7C3B21C37D404051A70FFFA0F726C35501A1FBB411F832CE46A2E │ │ │ │ -B424E26BD4 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFD8CDE285A2827F4659E339460ABEF319FE44D7A91E93CA309E9266E03DA │ │ │ │ +735F5DEF3920C01189BB63C2BD7ED0B92EABB481F123641477CDCCAB9751FB7B │ │ │ │ +F67DA7CE6EB134BC10D0228562BA5A6BFE6940907EF030ABF9EC4A8A0DFEF73D │ │ │ │ +3289E8CB4DC37694F5A656A935D92C72B3D82B012F578A27711B161DE9652ADC │ │ │ │ +71C51E743E4E9A7C6CF6FF16C5D65C1F60954C0858B48FAAC4FBB21988E2A934 │ │ │ │ +AC50C097DDF42C416359647D79F830E1430FB9BB803451A6732D1B5CAB817C1B │ │ │ │ +673B3077D9A180F184267E9990C087BCDEBC8EB8B889934DD0EB63C2EBCED4A3 │ │ │ │ +83A0D6A365412CFF610EF7BD5F82B02AA293F1D2F868768CDE9B801C929B4A38 │ │ │ │ +64E20C70BC4041F837AD15423517F7336A067D140A2C7906DC5D45885FFB3B69 │ │ │ │ +724E5B9B138BD15A9359EB25D14BC4193E529D1A49FEB0DC1015BF94CEBBD5E0 │ │ │ │ +EA148B185C53E12BD9FA6DBC097D789A73E832F02F55080D8ED6087F5952EA78 │ │ │ │ +250A4C65CE4C4013554A031446D2092D813C4CB1A605D97A40CF867F656ECD1C │ │ │ │ +C23F80230AD1E449AA8B4007134F71156719206441D92B1A6DD25101ABF69F70 │ │ │ │ +538CCCE216376E1BD6E423986BD4E83B1975B15092D4E19F885672F9E7C02485 │ │ │ │ +E02DA0F4243D324A5983D1D46444E5F6573F699E4F2A3395EF0EB7808B7D4D62 │ │ │ │ +690FD033E93AA553082273636503DA4BBBBFA6D127CE10424DD1DDF4F879305C │ │ │ │ +14F64180E7851D091B3220DFC70CAA44716B8F7F0C6FBEDB167801DED77F9E69 │ │ │ │ +E9B31CD2D8044DB946E511162976C34DE27F2BB974B70509005562A0A21317B7 │ │ │ │ +46D826A31C476C8F9A778F941FF5956BA2D765B1AD0AC4BC7AE1CD8A2A81F039 │ │ │ │ +06EB13EBD099BBDB2EBDB54D459C288EA69FB0018CE9255BBFB08C1F90FF30BD │ │ │ │ +C971DA7FDB193281B8F967F21AB42F13F36085AC9EC0D6B6B448C8F289B0AD70 │ │ │ │ +DB521A4755ECF9CA594741E5C674220C21C265EF3BAE594197B00048C8D4DB73 │ │ │ │ +4AC47B6A86EAC7EECD042C8E23C347F8C9FCB870473C1FBD91C298174BCBF1A9 │ │ │ │ +7B366C570A9A04A433495FBC9FD0FFC22A0E8181424C0F038ED97AD5054B10CC │ │ │ │ +1CD5BA0719DD0B4F4F18932AE87FF8B8C1CF0C7482B7847049761505DCD85146 │ │ │ │ +4EE5CB53993A9449CD05233E961BD49AE92D308E2065D6C6BF038538039AA56A │ │ │ │ +C59D424BE3175427337E16892D3920598D518423E145C6B2DD3881F338845F0D │ │ │ │ +16C47AA0D9C2D6DE99C6A302D567ACD6F98BF38223F1890E099C8F93348FFDAA │ │ │ │ +C2D3440187C8FED87C1A891EF11EFA7168EC47F72AF8BC5BE1B88B1084E704F5 │ │ │ │ +82099F1A79E556D94CC38851C97DC3864945A7470F1389BCF608BADAE45B236D │ │ │ │ +2934A20FFBCF169BF84DF496B07E7F1D9002E62B030337642804403DF7E4B3FF │ │ │ │ +C5A421EE0033BA06C50A041FBFE8F81AFC145664E2976505EB14859CF0377EBA │ │ │ │ +EA604CF8BFB5F9ADB9A7ED56E6F0F919E791D57C7232241C892EAC3E55D2D03B │ │ │ │ +FF43B9DAB7B1D8C6588D6D3503F49E80121E52254431B308752A936E0B51124D │ │ │ │ +C7F23C316BA6FA73E6BC47EB9550003E1393C68360067C094C65C0DD17214FA0 │ │ │ │ +45FF0F9C3E0AE4C81093752D23EA95E163C98EC04873ECE3FB0882567329525C │ │ │ │ +0A3937B16CA72B5EB6D2DC10C1B485C0BA939587AFEBB6D837A40401C666BC1C │ │ │ │ +F3344FBAB3E48BEE18F3AF5CDB33BA63778D373A851333C8C34E2F35AB94E8B4 │ │ │ │ +FF7E62A92ED83B872894E0A17209E14CF61269204A35A4BC8C7EE4B16F19E91F │ │ │ │ +669C4EFCECB187F6C7FAF92B4E14E400C6B3C81679D4A7196D66DB1E897DDA42 │ │ │ │ +47CC2848B46D581A95EEF85AB528E8CDEEB275D1E1FE197A3A08D36406E2DADF │ │ │ │ +A87D817AF18B5525F89B7C2E584F4A1254A1FC71E749999A2152870631A69CB6 │ │ │ │ +666EBD6BB3366A598F6592040D0E82B9D866DF0A76C362E76C2804D108A0C148 │ │ │ │ +51F42E9E0ABD52CC2D02B156B63AFD03313AFC80EACC83DF9B59F05FD798951D │ │ │ │ +FCF5335636DFC6561910ACE0AEC47F74CFD302EB7421D28AAAC8FF82B7CE2B2A │ │ │ │ +340B8BCE09F57BFCBC77F91096D97A85726E68846398C8C9C8D3A65A252AE8FB │ │ │ │ +166750C244963BC61E2236BAAC529FABD6FC774550096374A8DB81B6AF1EA843 │ │ │ │ +27F671C0045D629E3734EF037447C4763514FD1C4AE858A494AFC23A64C82149 │ │ │ │ +F4C0A7023B3865B84FAC2DC88D1553DCEBA3D8FB5DBC1103123F6B8CB5B3A399 │ │ │ │ +B665B26B001BF1E4BFABE42BFF6B02D69FA88D5CBCA5A11D5B48CFB4EAE60558 │ │ │ │ +5FBE254AD3BE01761CD4995E766E172D768621223505FD6AA8F89FC042EB814C │ │ │ │ +34373DAEC4FAAF71C0752F814154C5299F751CE7E0F9C673D2E448D0204C214C │ │ │ │ +C04DC34671FBEF72350FFBA263662E86A0D3795E310153AAF4C8A2623E167E6E │ │ │ │ +1F13A9BA485D5DDFC451D691DBA7C49E20354A7AD79D89F7EDE24F0D5B48B27D │ │ │ │ +568D01EF2555504196C09841F5970D8CF6C5D47FFFCF18AE6B2A485342000AAD │ │ │ │ +1F922FBEF7C98E0965609C89240E7B131A59551F57CD5C92097FCE75F5D2778F │ │ │ │ +F9ACF43A3273551363442C8C539205903A835C744A4AA953545506081D3D231A │ │ │ │ +A140E01F280BC42A3C35EDAD5F6B8CE6E51C68E41CA813710864ED880FCE846C │ │ │ │ +1B66D27CC2DBCDC2B1B96A12490BD76D67A415D4A6595CD9B19D3104A83D2C82 │ │ │ │ +C46DCD2C027F0565EDB83E54FF99498194D3140E55E8EE65EBDEAC5409B5616A │ │ │ │ +73141DA2D581E300A6057F4301A02DD160AB3E55A116313525122D0608816AA8 │ │ │ │ +4712EEF3D6FE8C893DF37D │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -4628,16 +4618,16 @@ │ │ │ │ %%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 134[44 │ │ │ │ -3[46 2[33 12[37 2[46 42 26[54 11[23 42 4[42 1[42 1[42 │ │ │ │ +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 4[42 42 1[42 1[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 │ │ │ │ @@ -4763,42 +4753,41 @@ │ │ │ │ 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 1228 4 v │ │ │ │ -1393 w Fl(A2)26 b Ff(:)37 b Fh(DRAFT)28 b Ff(F)-7 b(ebruary)26 │ │ │ │ -b(29,)h(2024)p 2673 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 1265 4 v │ │ │ │ +1430 w Fl(A2)27 b Ff(:)37 b Fh(DRAFT)27 b Ff(Octob)r(er)g(4,)g(2025)p │ │ │ │ +2635 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 │ │ │ │ @@ -4833,17 +4822,17 @@ │ │ │ │ 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 1228 4 v 1393 100 a Fl(A2)27 │ │ │ │ -b Ff(:)37 b Fh(DRAFT)110 b Ff(F)-7 b(ebruary)27 b(29,)f(2024)p │ │ │ │ -2633 100 V 1228 w Fm(3)101 390 y(6.)42 b Fl(double)f(*)i(A2_row)e(\()i │ │ │ │ +TeXDict begin 3 2 bop 83 100 1265 4 v 1431 100 a Fl(A2)27 │ │ │ │ +b Ff(:)37 b Fh(DRAFT)110 b Ff(Octob)r(er)27 b(4,)g(2025)p │ │ │ │ +2596 100 V 1265 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 │ │ │ │ @@ -4914,51 +4903,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 1228 4 v │ │ │ │ -1393 w Fl(A2)26 b Ff(:)37 b Fh(DRAFT)28 b Ff(F)-7 b(ebruary)26 │ │ │ │ -b(29,)h(2024)p 2673 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 1265 4 v │ │ │ │ +1430 w Fl(A2)27 b Ff(:)37 b Fh(DRAFT)27 b Ff(Octob)r(er)g(4,)g(2025)p │ │ │ │ +2635 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 │ │ │ │ @@ -5008,17 +4997,17 @@ │ │ │ │ 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 1228 4 v 1393 100 a Fl(A2)27 │ │ │ │ -b Ff(:)37 b Fh(DRAFT)110 b Ff(F)-7 b(ebruary)27 b(29,)f(2024)p │ │ │ │ -2633 100 V 1228 w Fm(5)101 390 y(4.)42 b Fl(void)f(A2_applyQT)f(\()j │ │ │ │ +TeXDict begin 5 4 bop 83 100 1265 4 v 1431 100 a Fl(A2)27 │ │ │ │ +b Ff(:)37 b Fh(DRAFT)110 b Ff(Octob)r(er)27 b(4,)g(2025)p │ │ │ │ +2596 100 V 1265 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 │ │ │ │ @@ -5086,23 +5075,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 1228 4 v │ │ │ │ -1393 w Fl(A2)26 b Ff(:)37 b Fh(DRAFT)28 b Ff(F)-7 b(ebruary)26 │ │ │ │ -b(29,)h(2024)p 2673 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 1265 4 v │ │ │ │ +1430 w Fl(A2)27 b Ff(:)37 b Fh(DRAFT)27 b Ff(Octob)r(er)g(4,)g(2025)p │ │ │ │ +2635 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 │ │ │ │ @@ -5169,17 +5158,17 @@ │ │ │ │ (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 1228 4 v 1393 100 a Fl(A2)27 │ │ │ │ -b Ff(:)37 b Fh(DRAFT)110 b Ff(F)-7 b(ebruary)27 b(29,)f(2024)p │ │ │ │ -2633 100 V 1228 w Fm(7)208 390 y Fh(Err)l(or)k(che)l(cking:)38 │ │ │ │ +TeXDict begin 7 6 bop 83 100 1265 4 v 1431 100 a Fl(A2)27 │ │ │ │ +b Ff(:)37 b Fh(DRAFT)110 b Ff(Octob)r(er)27 b(4,)g(2025)p │ │ │ │ +2596 100 V 1265 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 │ │ │ │ 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 │ │ │ │ @@ -5253,19 +5242,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 1228 4 v │ │ │ │ -1393 w Fl(A2)26 b Ff(:)37 b Fh(DRAFT)28 b Ff(F)-7 b(ebruary)26 │ │ │ │ -b(29,)h(2024)p 2673 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 1265 4 v │ │ │ │ +1430 w Fl(A2)27 b Ff(:)37 b Fh(DRAFT)27 b Ff(Octob)r(er)g(4,)g(2025)p │ │ │ │ +2635 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) │ │ │ │ @@ -5338,17 +5327,17 @@ │ │ │ │ (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 1228 4 v 1393 100 a Fl(A2)27 │ │ │ │ -b Ff(:)37 b Fh(DRAFT)110 b Ff(F)-7 b(ebruary)27 b(29,)f(2024)p │ │ │ │ -2633 100 V 1228 w Fm(9)60 390 y(23.)41 b Fl(void)g(A2_sub)h(\()h(A2)g │ │ │ │ +TeXDict begin 9 8 bop 83 100 1265 4 v 1431 100 a Fl(A2)27 │ │ │ │ +b Ff(:)37 b Fh(DRAFT)110 b Ff(Octob)r(er)27 b(4,)g(2025)p │ │ │ │ +2596 100 V 1265 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 │ │ │ │ @@ -5435,21 +5424,21 @@ │ │ │ │ (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 1207 4 │ │ │ │ -v 1371 w Fl(A2)27 b Ff(:)37 b Fh(DRAFT)27 b Ff(F)-7 b(ebruary)27 │ │ │ │ -b(29,)g(2024)p 2694 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 │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fm(10)p 166 100 1244 4 │ │ │ │ +v 1409 w Fl(A2)27 b Ff(:)37 b Fh(DRAFT)27 b Ff(Octob)r(er)g(4,)g(2025)p │ │ │ │ +2656 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 │ │ │ │ 854 y Fh(Err)l(or)i(che)l(cking:)38 b Fm(If)27 b Fl(mtx)e │ │ │ │ Fm(or)g Fl(fn)h Fm(are)g Fl(NULL)p Fm(,)f(or)g(if)i Fl(fn)f │ │ │ │ Fm(is)g(not)g(of)h(the)g(form)f Fl(*.a2f)e Fm(\(for)i(a)g(formatted)h │ │ │ │ @@ -5522,17 +5511,17 @@ │ │ │ │ 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 1207 4 v 1372 100 a Fl(A2)27 │ │ │ │ -b Ff(:)37 b Fh(DRAFT)110 b Ff(F)-7 b(ebruary)27 b(29,)g(2024)p │ │ │ │ -2613 100 V 1207 w Fm(11)307 390 y Fi(\210)42 b Fm(The)28 │ │ │ │ +TeXDict begin 11 10 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(4,)g(2025)p │ │ │ │ +2575 100 V 1244 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 │ │ │ │ ├── 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 February 29, 2024 │ │ │ │ │ + 2 A2 : DRAFT October 4, 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 February 29, 2024 3 │ │ │ │ │ + A2 : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 4 A2 : DRAFT October 4, 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 February 29, 2024 5 │ │ │ │ │ + A2 : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 6 A2 : DRAFT October 4, 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 February 29, 2024 7 │ │ │ │ │ + A2 : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 8 A2 : DRAFT October 4, 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 February 29, 2024 9 │ │ │ │ │ + A2 : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 10 A2 : DRAFT October 4, 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 February 29, 2024 11 │ │ │ │ │ + A2 : DRAFT October 4, 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 │ │ │ │ @@ -10,15 +10,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 2024.02.29:1857 │ │ │ │ +%DVIPSSource: TeX output 2025.10.04:1733 │ │ │ │ %%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 │ │ │ │ @@ -1374,23 +1374,23 @@ │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 46 /period put │ │ │ │ dup 48 /zero put │ │ │ │ dup 50 /two put │ │ │ │ dup 52 /four put │ │ │ │ -dup 57 /nine put │ │ │ │ +dup 53 /five put │ │ │ │ dup 65 /A put │ │ │ │ dup 66 /B put │ │ │ │ dup 67 /C put │ │ │ │ dup 68 /D put │ │ │ │ -dup 70 /F put │ │ │ │ dup 71 /G put │ │ │ │ dup 74 /J put │ │ │ │ dup 75 /K put │ │ │ │ +dup 79 /O put │ │ │ │ dup 80 /P put │ │ │ │ dup 82 /R put │ │ │ │ dup 87 /W put │ │ │ │ dup 97 /a put │ │ │ │ dup 98 /b put │ │ │ │ dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ @@ -1401,16 +1401,14 @@ │ │ │ │ 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 117 /u put │ │ │ │ -dup 121 /y put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA │ │ │ │ 0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 │ │ │ │ 51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 │ │ │ │ 7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 │ │ │ │ @@ -1585,217 +1583,205 @@ │ │ │ │ E6D6662189CC2D95AB85D7473F65C5D7B4AC63B0FE928F3400035D5A9D443D0D │ │ │ │ F3532B99F3AC26CB25EA3CD64C341159061E02EFBC7C033C05CD919BBD827A6A │ │ │ │ BAD50D9C98DD94332DB4C7155F8A52013F9ECB7CCE3CFB3E667C57B022A0A753 │ │ │ │ A45E41A9D8229D5198031ABA3DAAC142AEA5FAB6694A6433629E15AE45A67FDA │ │ │ │ 34DE10D995ABCAF45FBB3B6B73E80D05F4C51F8C29D4B0F67C8A86432A6C5E86 │ │ │ │ F0126AB25A5CA2875B48C61CB8112A4CF9AA08F8B0157396CF63CBECDB8867CC │ │ │ │ AC10F060630C9BFBAD84B1FF01C814878F0C177F552BDC9BB181B14581C6E968 │ │ │ │ -DAAAB2896FCFB745795C4D2C87CC15BAA041EF80C5BDC12EC1F5786BB41A5A21 │ │ │ │ -073EE0BC436B346E014DB4099EDC67BC432E470A4B779FD556341061CA3F2BE8 │ │ │ │ -EFA332637AEC878C2BB189CA3267B2BE5B8178E6B7889A33771F86276E6F0B8E │ │ │ │ -8E93B816AC7005575762EF4DE45E2794B7322F9B6D8E634FB8FF250D638EB502 │ │ │ │ -818321B3C46DB51B8EC6C2EF1D05C716519A3BD6B12A67239898F8A010CC5002 │ │ │ │ -66A34D9A945241085DB92E154F24CED4AB4CB0251F8FDB8B45610FFAD3AC143D │ │ │ │ -497BF58D529490D85811CBA2722BF5EE91BA50B51C7F0AA44BC16DF35B38C636 │ │ │ │ -88741E6A1E3EE714E36FEFB8CB546821F0E47D69D999CD2BF4BB620A72391764 │ │ │ │ -F24F2D52F80531634712DF1487327F983E4226F6A794872B979C311EAB79CFE8 │ │ │ │ -0353865569CD6ECA56FD9C62CC41D3E7211E5011F177482EF6A25A19274852F8 │ │ │ │ -9112B6BC87E103429288757010B0EDEB481970DCCA8F2768DE3B46D51DBF8704 │ │ │ │ -13913F31B525A3397D76EA9E29B6D4989A88F6C456E7B0154CC42DA65C167C6F │ │ │ │ -0986F462CFA5C0114DD00204A4A95420BD32C35DC8C47DCD13C0A632756EC95A │ │ │ │ -FC60FC91801109520619656C494A14608BA441731C62C096699459647B090624 │ │ │ │ -360F9C33A4A82CD70158C0BADE4616A6B58C3B249BBEEEE1D79F5866D5668BAD │ │ │ │ -44B3C2966BF2A3268BDD657ED1086A87A67F65A911FC152CBF43408EA0880E57 │ │ │ │ -1D6B5BF382CC68A690BFF5B2BE9A7D2F3785D1F710CB62CC40C3736D41C7BC1B │ │ │ │ -5963A2E0945C1B066C0A4DF97826DF6F4927C453869DD8741B8D7AA105E7E2C5 │ │ │ │ -06B1BE8693AF7AE0E0DC97EE943047F4CAECFCD9DCDD1BE01F0185301ECD5A74 │ │ │ │ -A22894928A3BFCE6D0D0DE59E2A282B810BE6B716796D1E6902A5ABA176672A2 │ │ │ │ -F595EC214018EF7560E8EFD37F34F7A327F5317885AFD5F146D480050FB973E3 │ │ │ │ -75D292603FB6ADF09936F29BA10D809687C207AA14114AD10D6F1139E099A826 │ │ │ │ -903D4E70F167FD3E4DCF0ADBF46EC7EBF7CA963B7B903CCFB042E4EA668728C4 │ │ │ │ -BE0F331105ACA1C826932A5097D314EFC2A682C8BFEF31D74A9AE1F84D510387 │ │ │ │ -A3AA22DEC58E1EFC062FE3B73ADCFD6584A3F6D8F7A32E36F4E8347F1F762125 │ │ │ │ -315CC1EDED5DEFF5C6CED4A1C00608C2172E8954FE7E4A5903438646738C4D80 │ │ │ │ -DE9B0172F1518136E81439A022923728954E77F704F907FB35D9703270547763 │ │ │ │ -B3F1E889E99591D6CBC3F79DCEE015CE428BED616FD63CAF74B49BDFBABE084F │ │ │ │ -DBE81947FB1BEA25A4219873EAB902A66CFB4E62145B806F1207B15B46E651E0 │ │ │ │ -F080AA322BF59FD1DC7317CF0BB960577862096FA15E4D96D5DC3DC8DF10D37D │ │ │ │ -67819810D51E2B269391036786F6A475DC4FDB486028E57BC5670417F678BF78 │ │ │ │ -06C7D90F8C24B5D134642B6827CF196EEE6CB4D4B87C989945BB624E2EA4D763 │ │ │ │ -1C8605B8F7285B3A816B9579C2CEFAD07D26E62724E0D3CAB931C935A3955CEC │ │ │ │ -9D9327C9A5FF3A3BC77B4244157B1D24065BB054210E1DC081E44E4F0B0AF7DB │ │ │ │ -41CE6AADD05FB0C0E48F3C6449C7B81E748ADB5E8545F56CD1655E8EC615A055 │ │ │ │ -FD54534020D4AE3DDDB01A2F654205529D6DEC78402315BE043597F963DFE686 │ │ │ │ -F66F5D9672DCCCF5D41001CD926C9B6E280E521B30759408BD270EB91E1B75B0 │ │ │ │ -0AF95E852FF7FB1EA6F23A4A86B35C2D2261D21A63C7F61F4B6126604BB3082C │ │ │ │ -401BEB3E8F9988B21F45D92A1C34C4C35C621DFE1BC0AA27C0CF091B6F936FF9 │ │ │ │ -32109F05F84C35C3E5011AA44F0BF76ACD1BAB430E8FE34A525F3DE6570EAA8E │ │ │ │ -DB2BADAC296FE091A3555C505B48CC594654FAA90D0A89A4B7DE875A60496B10 │ │ │ │ -36E1FC2A6025A8870B20FA36A0215794287D11A1EDD7A942935016539660E1DD │ │ │ │ -46CDF26B22FF0743C1876DB371241723949B0179CF7DE67FA286D97CFF203AEE │ │ │ │ -75A51057AF9E883D82131C4DFA8033B931E6CF3A77359F762781BD66E6794CF9 │ │ │ │ -B1B9B02BB56113478EFE6D7EF6D1C878DCD95DED662EF71BDF31B5D1BF75F632 │ │ │ │ -C826A6AD72E76B33DAC35644A4370D8093F0579CFEE1574BC1791654C46C4377 │ │ │ │ -919E786FB00C1979665622CFA6204B269E9CE878BCBEE0BF6B4047C81AEF5B4A │ │ │ │ -10214171DAA0637FA2DD482E4181F8ABD12EDDEF73ECF97F51B622AF52015CA2 │ │ │ │ -7E4F13129BD726B0EEED633D62306D84F948972B135937F45D1FF77381AAE34B │ │ │ │ -6DAE431075091C4789B3332408B5A07CC7E0069E4906F8120A0044F79AD99575 │ │ │ │ -A5BF5E20BBC3D3878A335CCF453FE530338A35B763BFAE9F688F78932220A647 │ │ │ │ -FBBA751B7A614E53D6E49E1091D56D9F6D97E1C882A242816DB9E091E1BFF082 │ │ │ │ -A5E35A81F1187C050F84BB61B77988220E1A40BC538A0F6050555A2CF0525484 │ │ │ │ -74EF3E4ED873C7C0DA084B4415EBA180821F2315BFCE64E97CF63831FC96E552 │ │ │ │ -54344C090E850AD7EE8C10D67656B8A3D7C9B9DA932F275A518F2D16B78CA640 │ │ │ │ -2D59D18FE83D09C100A893D62B0794112F066EC3B9DD999EF175D3FC2DF9FB8F │ │ │ │ -D36E44AC56CC6A7F06E1B872F3513EB90ACD0A215789E7067453638414F0BD63 │ │ │ │ -F753745FD845B420751BED58A47F2D0EC44FFA381D52D7FD2AA01D8BF66EDF2C │ │ │ │ -4828C92E77222B994A3828FC74B3876A89B426B92FB11D073EC521A063480192 │ │ │ │ -9BD47A0DFCCCB5F222A0B8A0598A69009E7B8F6363940246FFF5A9984FA79685 │ │ │ │ -18FB3B6DA96439A1689CEEC503B5847EBB177C5343FD09CD6598387C55DC8D23 │ │ │ │ -A846762BFD984BF10C6DBF20BC4D96D40D61E7F1C2AF149FF0871E9CFF03703D │ │ │ │ -03E2889188CB6C0E6B6324062D0A045681D05DDB5B0B712F7845CB7EC707D717 │ │ │ │ -D144512BF8E5FB4531330EB7C38A96C369705644B50F40C129F1B60ACDA2D259 │ │ │ │ -C7C179785A641AF0435CAAC20F91889D4CED600CA41F315C2CD5F92CE6C1BCC7 │ │ │ │ -E1E6D9F86D3A0AF9B556F8254110A04AEC3A9C051B2C4DA55BC7C6B65EBECCDC │ │ │ │ -CC8ABA50AD40D6B4C3250C0C5642461579063EB7155D3CA53E9DC30D3E04867F │ │ │ │ -A6C8FBF2307125AEAA975EF32538578DF5231AEB82F5F587A6F2916AC16E116A │ │ │ │ -1DC6F990DCE00025BB81CE8280D63207BC9421EDA24AD0AD0F8B2901679F1CA4 │ │ │ │ -DAD441FD6FEAE108E3547EB222DDC1866819464C28A65F6C96CF21A8DE04D43D │ │ │ │ -C8E2F68BADBE33B25234615675DD34FC8DA442D66110E93291595A85CB112980 │ │ │ │ -E53841091E78D2F325C05EB7230F7C3B55C0BF62A4E9185FE78D41AEFD25B9FB │ │ │ │ -A71AA70662D4157E11C616533FA1AB4E7F8CA53C5E98185D2ED4151A9B1E982B │ │ │ │ -D685E02667CDEBB2715F8874EB68CC4228B634421F93A19C7070E0A2D463DB6B │ │ │ │ -2FAEB6ADC3F4971232BEED29476A475D578A3FB98C18BC767ADFFBAF1BF7F41C │ │ │ │ -170CA90EC8553CD37AA30A396CB022DF3FEEA02CE128448AE7A5F11ABEC39EA6 │ │ │ │ -57A3B22BE80FCDC2E4F11714F7EA77AE59BEE5A9E818CB93CBD73F406B3986CC │ │ │ │ -3DC5503DB81FDDA9FAAA9DBC0F4876BF7BB28C45B89CADFBDEED7D2AAB51C816 │ │ │ │ -ECF8BF61D1345654D7C3C442D34E4B891EAC52B1A0B6A7511D2D30FE701E2FAD │ │ │ │ -A786E59854F35D32507D9FA095F3A5CB61A831D3879F89F107826C1888B45871 │ │ │ │ -77E3293E6CD5F1322E8905FEE512658E5A77A9C20E82BBDCECC792360A96575F │ │ │ │ -21B1F415C6FE0A97C43E30CBC4E587B67D92948A413C9C7857232A7A6F17C49E │ │ │ │ -286AFF915A29270D0878D1B28D7BD900865EEE2BBC89AD804AACA938708E43E9 │ │ │ │ -F23E64E2AD7F84DBEDBDC9F55478492C4F6A7635B85ECFCEBDC0B22108298E8F │ │ │ │ -75689B5F91B465D5F01702338EA21F30F7836B3C36CA3911FA9326430A1C0506 │ │ │ │ -5EC0A17BE7556BA854F5C9814FFA388F79C309D1AD8C56C1C87AF432085F50D7 │ │ │ │ -A7256DEF2AE4AE86974CE1F7EA4EC93EE140A79E7DEB06908559D2C53E3367EF │ │ │ │ -FF629DB15F5E2F30BF8165662BCC09DB431B4DE7B0E4A2DAED721D884045F049 │ │ │ │ -3EAA8DC211F390F109475504847E9647962241E6FCE9A048131269D842CA9CC6 │ │ │ │ -9863CD1DFDF98A3E8A237406D4A94E87D88B683F3FC1665F9D8D1DA0858599B7 │ │ │ │ -1599D78A52F042EB297EFBF03B077DAE48633318F2C6450D0C6507989B747501 │ │ │ │ -6AE91A387FC5C06EA6F995BB0D89BCD1F8FE94CAA3EAF7F683F05900FCA1C89B │ │ │ │ -C1452A671403D75F4DD47134B430F883FAC922722F55F1DEEBAAB867D94FF020 │ │ │ │ -C441082DC8F19101A0DF559B0D4A2FBC984CD6C2E232D59349A00BA578E1D02D │ │ │ │ -3486A70B0FC7DC28995A7BA3E4B6643A4019C6526B4D33906247EEC2825497E0 │ │ │ │ -F32F6C61C33E5ED3818A433CAB8035F15CC08F06E606833B780ABBE8DB111CF6 │ │ │ │ -7DEA8F68B2C83E564E989C7A4C48565D70A40B10D4E3109DC7C0DBDF36DE3D68 │ │ │ │ -938AD412CD719D7C62CF8AFA3F6B28D9DA96993D2F02C13B5AF304D9986847CB │ │ │ │ -68D2E53AF622BAE69C37A8E3238FC1CCD07979FE01A846D0987E4DFC8F8C55F4 │ │ │ │ -8259A7059EE8DBDDB1EC09CD8B92E3635A68CD134D053BE847C78FF3DEE6817C │ │ │ │ -B8023A49460357A83896F4F2AC0A8CC32C64D014D5BBE9F734196FDE5AD4ACAA │ │ │ │ -2948E4B5DC282665B40E07AD965F8EEDDB28DBE4174AFFFEB953A6669194A3B9 │ │ │ │ -306B3F6048323B4DD28204625811638C18EB81A45E16A9354A203F7967A854B1 │ │ │ │ -383658F8BA54CD8D9B7DF2816BAC7AFD4DB1D5C00A02EDE341075A00B2AF1958 │ │ │ │ -0C45948419DA16A0E0050AD763C4C314762BB34AB00E8CEEFC66C1731101F394 │ │ │ │ -3928D30B10B40757B719701DE336D24186AD8D40805E9B35A476AF7310EB8DE6 │ │ │ │ -B9BA3718E3853AD9CE64827642CCBA9CBC14AED5EB909B897C7D16AFECFC3D04 │ │ │ │ -A7FD4E0DBC62B5AAE1C61E6A2722D4E5E54E43D3F3F2DD11FA647CBE242B612E │ │ │ │ -1DD5F67EF4E408E87B80A7A5107C57E3636E25CF668DFA96C73942DAAD9A8FA0 │ │ │ │ -DE2D9B5563EC1300121C1EACD2E31ADB4129D78B493785D260D396D68AA45958 │ │ │ │ -B4B46046B994242BF986879177C40B9CCB90014F104759B562908F735A7D3086 │ │ │ │ -8F0845548FA06862B715C87C56FD452A315995FBF798710C65031D54CCECD79A │ │ │ │ -73BF16249F24027B94879910087A0D676DC37E067011B54AC40FCBB4520FD93A │ │ │ │ -E1454304A44C4F11E59387A186967EB335D31C3FA0A70FDB75B839A16AB9CC01 │ │ │ │ -2624F6339181BD77DE2A8E2C9F168326C5526B561375B6985038CECEB8F6F509 │ │ │ │ -85539B9CFCFD63AED4D7BF29A22C40C0B964B39B14811DE5C844A0E1323D2B6F │ │ │ │ -A8484E53E01D9EAD263DBCA321E57ACD975BDEAE2B32AD338C5551A7DB7117D3 │ │ │ │ -B2A869F471E6AB613B6EF72E12D47BEB465F636F01C2CFF6832D119F6D528405 │ │ │ │ -50FA437AE8ABAD1C42D89AFF07A47A7C9CDA94243873C9B955F0A2E44A8D415D │ │ │ │ -E5B6E638C571429117204F98EADED36EC0F684E0979DA93DBFD4A001BD6B588C │ │ │ │ -3FADEE16E191B7ECDCB0C40FBE6FDF096D1125480104E3995DE3BFE18114E527 │ │ │ │ -78CD63E11E4D6F66BC1B87811C776F2F05BD22363EFA51E37B3D17567253A496 │ │ │ │ -8A54BBC3180600F4E09FDA13A552F715E509BA485F52BE77773F8B167495561B │ │ │ │ -1C82F4B323A3E27542098AE73239A6EAE29F7C918C1966DEA204345426D1999C │ │ │ │ -8CFCC45FCBA0A22B0A58E78FC2E56E3B58718FF7E2B6D4526F1DBC2A385014FE │ │ │ │ -9CE7E69DF74BB46BA6C4BB61C96316B52470A69FC29EBD5F9BA5394F060AEC47 │ │ │ │ -F1E4B2013E5F4ABF3DF0C4FC3F9617C39FCABD267CBAA5590D4078A2A0BD36CE │ │ │ │ -FC87EC5F0FB0B1F932D1487F838B7B694D53E60A7CE7FC96969C368BC331D4DF │ │ │ │ -9EE94B2C279BEBB3BA468641620D5F668251713283134DF74908D8CD1C0C114F │ │ │ │ -01B228282C79F684874B260E137CC5E2A4F8E7595AFA5344E0E078CC559D256B │ │ │ │ -134F045E56B87E3F77131117C553CE911B128E028AC79F3646B43622D0FABEFB │ │ │ │ -935710419CBB40AE012D8D74984A0BBE96E7BA82297CC32CE7DA999F022C0E5F │ │ │ │ -CF527E0DC3BFD2AF1FEF721F8CE882E29C1EA94D96A8336B81CA034F160928D1 │ │ │ │ -CC2275FB9513F08FEC01F138616133B5A83C484C3CA1298DC8849E90F329A94F │ │ │ │ -FDBC2A96D53EF78281A8F3191466A99EBA42A337E9E1D962A3B870F0838A1242 │ │ │ │ -5882FA785151F66C354DCD5D6C72DB406618B3E81AFFE2BFBB53C2CC4D6D4B65 │ │ │ │ -38AA073C4769E12E282F071EA248E38F1705756BDDF07FBF77FB02E3D350B2B3 │ │ │ │ -A48325FCD365C68DDC4B91569A5E131E581329FD78669EF573203C4B5746F8B1 │ │ │ │ -524814CD9E67C7834168E0B3B3DAE2741609BBF4312A074587F8C87459267ECF │ │ │ │ -00E0D59716AD4334032AB799A6F56C9722DF3252048DE676B071BD5016787390 │ │ │ │ -A7D72D7E57AEE435AC667AD781291120812755E09641C53A94C451742EC77296 │ │ │ │ -38BBC18EEC0898DBA69E96EA7FC3F23FFF911CD3832ABF22DC06E42C201F9B75 │ │ │ │ -F8604372AB6789AB773CFCBB3AC309FC389374FAFD15DC7F9208C240C8D958C4 │ │ │ │ -7E32C2C1CB7688240EDB5D8AA364003E0E46ED5A160AEA4D3EE5F35E5F7C1F9F │ │ │ │ -68D1A4DDEF4E31021B7AAA0B27248F26DE238F737E206EF37D8215FBDC6680C6 │ │ │ │ -8FD4C026A95D67DA0B823A8BC504BD07DE9025A338C229717A7728C6B8B950D6 │ │ │ │ -477C046CE90BB359B8A977EA18C298B65D22CB9459780F3508DEF31DADA14962 │ │ │ │ -090B5D61D222FA98AA934FDF6C3A5E3D4CF50E8ACB939BBD4C99D7272F6ADE14 │ │ │ │ -1FE5624F3E2F3368F9DF9E01B1FDC3F4AA5DD45F4A477F9C220B8CA2D1351F6F │ │ │ │ -72882AA45F4B23DB96587034227C0890F069EAE9D3CECF606BC623EE45D6362E │ │ │ │ -14FF00861AF41B35096DBEF3498BB8529EC17DECD1108F4BF48730532900FF68 │ │ │ │ -839540E3982A69235E472940E945E5D3BBF167A6A9EF2A6F3493B458338D6723 │ │ │ │ -D3D5C4F8BE132F5AAA8CA3E627ACD3E066D5C5E001A759510BDA89D9F9D87993 │ │ │ │ -E53584AD4D23267D4FD7FB3F4E9951781D4B89DF879BD094842D0A31DB74003C │ │ │ │ -2D63C36EB28D817437A0B22FFBD665A8048507D0825ECB8D4439848051794629 │ │ │ │ -D0C14E87E8BCCFD51ECDDAFAE5E5F3D08072CF800D335ABC96167789211C5655 │ │ │ │ -232A9AA0D2FBCE9A3B3F8023F4698856470905780AB321EE13C6C058D83A9A26 │ │ │ │ -A17F195CD2336C3E2FB8C42F4C5D56EE8B30DBB01BA1FAE344B75AFADCCBAA47 │ │ │ │ -B2D3655E10860658E894DA047ABF907AE34773E8287A3B968836CF84A67D0BEB │ │ │ │ -E40AF1FE30559C5AEC1FF667BA02372FE3320A1B98B46912B2344D86CE88D874 │ │ │ │ -52AC78A478993A8CFEE78B83AC0C104249A48D39A9A76BCCA0451F1A8160F0E6 │ │ │ │ -0AF359F6FB7AF7C4F9802CABA69766CA3CBAEF5320D26E65BE876424A13BB878 │ │ │ │ -158171D04247D4518FCC654D454529184E27900D78274302B0BFEA6218D03E59 │ │ │ │ -6AAD889297D3B8CA868B5F3D166C13AD69988C6ED2848ABFABB04B3CFDC5D1F5 │ │ │ │ -FD065843B304223ABFF91F9EA27668A4050EA29294BFC9FF2F82092D5A3D6FC9 │ │ │ │ -4EABBF7B6A119586BE33484F9E718FCDE628966AD0023549EF81CEAA5E93D6A9 │ │ │ │ -50BCE62D02475BF7408E7A530BE6FDCE94AC597E7C02AE0F6A3B8A4135D53C97 │ │ │ │ -4E1A32082D2E6785B76CD1B7F6E597D224F51C77EC71ACC2D3D619334E8115DE │ │ │ │ -16AC464B86E31714C8A847C6C5DA3A79BCDC9E8C1B27B50C88B13DCF66ED2AD9 │ │ │ │ -1058F2C98F95432B3BA9761DC53F97A7E862B252F2B78980452BD3F7F34CA8AA │ │ │ │ -EC207C1DA42B88E2052DCFBBD9D22DA50B25768E8F1A8A261A3B9E406D44AA1F │ │ │ │ -0F98805B4CE9B7312A3846C5640B6B370A4BECA7A7F752D59C4874988367A55C │ │ │ │ -CD2BD907DCE54103198BDEBBA37522C340D009589FA540A10ACE603BEB41A47B │ │ │ │ -C151050E01C0013A9B132A68CF885E146238C9805608DB9EB46086CCC2729313 │ │ │ │ -B7A9450A52BDF9AB2A053F432A9DAEACEA81A6A06AADD63ED7BA95C523D217CD │ │ │ │ -C79FD94E145773A3C3300B2A0190BB593F4F37173B419533526225A0F45B83CD │ │ │ │ -570953EAA8ED349463A70FBA9A1CA725641DED1D8F50928E1B68F20E86AC70B0 │ │ │ │ -C05E4EA175736C34360E99F75939A69B2DEE9FE3B80D8E288DDCEDAC7852F835 │ │ │ │ -8CD5FF863AA622D865BDBABE12450D54681EB702A57A83A3F55D34062DEDF647 │ │ │ │ -2B94B635EF9E18D7E6ABEBBA650C441D6489D8098F7953FF332F964A69B4C7B0 │ │ │ │ -054EABECE15DB652ACBB3EFF5D023F03DDD9C6B6CA53051D899CB1D520BCD187 │ │ │ │ -1DE17D25C7DB8FC81569A11DC62A720FCDFFB00C0D8124B5C67A3D9B434A3DE5 │ │ │ │ -277BADB3A19D400B00B1D6959DD210B3ED8F82557CC721F16D85D4DCA1A43B42 │ │ │ │ -C23505DF186371D0C339E5F0E174483B1C36C58675BF81D64A2442FCD5836AA8 │ │ │ │ -0936F2478CEC63E12B58916C7B905004B5C18C29F454044A93C7367C18F423BB │ │ │ │ -A9E49D8B51C5BCD0C5E43869E280B090C3B500D411685CEA063D7B15889A8E2C │ │ │ │ -A73B68E59B340A3DFEE79BE9891B991D33827844D2B313FEAE336893E5062901 │ │ │ │ -553C65661E7DAD44835D8E58AEBF41877392C2E5E20E8B603E9E80D675EA9DEB │ │ │ │ -F69CBCC129B1F871FA062EA37899624D6EC851F5F2655D3FABEAC2AEFE726FD3 │ │ │ │ -3031895B17099CD3469B93E2A3690A964BF80A5A53E73102E0B49920CD1C84DA │ │ │ │ -9BB46BA3E8B81B43BF689DB356F2039AB19359160414AFE18D9099C93082E803 │ │ │ │ -4FB8B6D5749B258ADF7C451F7AA34EAADA2BE4FE68986A40C7D04D17C42262E1 │ │ │ │ -8C986415802E339CDB627A93E18A743434B65A8C49D0CF29F74199D60E0EDE54 │ │ │ │ -347C8556495A18862FC6924B34012C12FA1313C414CB6A0E750F1E64B2C1AC82 │ │ │ │ -ECC67773282D454DFA075315B4E9B63E2AE88B4A05D88903FD465D36AECA1474 │ │ │ │ -F738C9B357001C6593913C606C9334B482398ED10558411D7B65290BC159F2CE │ │ │ │ -CFF9AF628D83D94D71388D76EEAC095FA04E868D2B7FEEA2C046179A9F3FA806 │ │ │ │ -D42DD94AB119A0568F672305C6157DA7A8ECCACC0C38CED0A2C3CAA2A1CE9812 │ │ │ │ -7DAD2157AA8EF0053F6201945A55F273399FE97001C6BE297BE87325048D7D64 │ │ │ │ -E413479D0A578854D1AAD3FF7B69151396A91E6296E46CC3CC8DF8D999F0B507 │ │ │ │ -75DFBBB78371E420E49F5C761712A4F582EC765A6DF563B6D98E9B33EE49BFBB │ │ │ │ -DB035FFCF4C3B123CD4D3DA80146986932524AC81676F11DCEBC27B74271C1CF │ │ │ │ -D05C1365E40AA8DD8534CC5DABAC4442C6351532CF3522A000 │ │ │ │ +DAAAB2896FCFB745795C4D2C87CC14FE0D165EF1C2A06A9B89855A1E543F3691 │ │ │ │ +B90E4EE9F324FFCE2D59A8810987DCF0CC270D5E734D22592A1B77DB98075341 │ │ │ │ +C48676342C1C74660E7D79B7329A7F6AB723AEED60BF2E1158F0591CC962E5A6 │ │ │ │ +ACDD131797F623F38B06F9E9EBCBCB1FE26371AC95C993BF2A625BDF1D49FAB3 │ │ │ │ +AFF04E871B6F2BF4F0127C5A92A54E9D2307AFBAEF86AA35B1AAD6E5330470DA │ │ │ │ +6A84A8C260EF31ECBCD67CAB9BA3B37D12C31E41D1E495C18DD72C72032FFAB1 │ │ │ │ +0E6CBFDD29230A54263B258412B9203851F7C143784D25983F44C1501736D9B2 │ │ │ │ +4EE0A930903A7F162D696EF01A72D0A23F37CD4DCB9086F8C71D982895820AB4 │ │ │ │ +94C525F6F106902EC4BD576A81F742E2AB46FAFAD0E66E7330D16677347BFAC0 │ │ │ │ +E1A2475B77855DA11BF9B13237B5D2E7193BAFBF3012F08A512D08E5B38262EB │ │ │ │ +089DE5A9C5A8C204C4842EF50CD3FCB1F206112701CCD9A4D5D1736B1EEA9D22 │ │ │ │ +6D8EB21CB8F414541067CE6D72C76B0E363D8AE6D476A373DDFC57F8F1DAF55C │ │ │ │ +427EDAE4EF14F9E60E48CA2981368AED03797043F1E32F6EC962673E88451EAA │ │ │ │ +061DBDFB786D3241EE5267B7DEAEDE795735FE77B8A1EE0C420935CF7C5CFD5E │ │ │ │ +BE1989C8E23FA7EC6EA0A2BD22BFBF61A946293B5B5D6B7EBD4076F8DC0281EF │ │ │ │ +855A20870C6741B80B08B608D31749333C95892A2083C1AA1A441BBE87A48315 │ │ │ │ +6CF22C6637428155E49EB8B7FA2A0166EBCF0890C9FE9F6B4A21BF3F81975CC0 │ │ │ │ +C9D43F48C4130456523EC8C785172FFD69E0CD8204CEEAA2D639401F5E8F5B04 │ │ │ │ +A8A8125DB4A3D6BEE54192FA690F08B891AAD7936C9C8D4D5D695BC575005A31 │ │ │ │ +1985250CEB7876BDA27110CAB0C55FDD6CE8ADAADDEAA81D03FCEE5B9EB96D72 │ │ │ │ +72DEE8B23E00336EE1790F03B947D97FE95890CBD72A842DF3B0039E69DF5079 │ │ │ │ +EA391E92F8D811F7F2BF5F4F0354FA35C4FE6BFBD2DE012B1B32343831841F62 │ │ │ │ +1DB7AC11B5B2C63666522D2DFD7C7FF8F5B79844A2E98298699044A7FB76A005 │ │ │ │ +6EBD18B0D845A10089AD7E620877F6E4E2BADCA0151ECB2CE0FB93F70D364CBF │ │ │ │ +8A0187EDF336556EA4D82CD6DF49D1CE43485817FE988F74C11CC15237B23101 │ │ │ │ +4F032A9B3025B1FC2C6A76477155E9B50DCD572B34060DEE5399CFCF7E6F2E02 │ │ │ │ +09810D4FA25BB5F2E9498CBC744D1393D6024016CC48BCFE5AB771064C03BE46 │ │ │ │ +9575EAEA7583958A9AC31C86CDE039EC3BEC28047ED860A9FA2FC8B026ACDE27 │ │ │ │ +BE55F4C69F27A6C65B8FCB5EAE638C44BBC10B69674A5DAFC5C5809CEE25B83C │ │ │ │ +FE4FB7B7B3D01A4CAE88D5940C8D67452197D8A5BBE1A487F6F504EACBF03B8F │ │ │ │ +3A5EBA0E2DEC943CA31A7729F1AEBE2BC19EF471D364473A0E10501C2B015C6A │ │ │ │ +4170077E8EB5D10D881C3B72DECF52172D60CDF1C8DB415DB8A08A9153AC8A6B │ │ │ │ +8F360E3235E2485322C47D4CCD450149E2128B6BDE9885E491D52CA07E1FA3A5 │ │ │ │ +3BC7FDC4610569E1C970503369C085C5C9FC36F1F575203BDE4D3621D274FD7B │ │ │ │ +D87664F94D4D552955C410558FAF80F4BF91A79F1634DA509E0A0650B9834AAE │ │ │ │ +98FE48F66AA55C0C013EE2819C0DBB6C2006A80BC741D97D1E404B7CC2788375 │ │ │ │ +BFC3270B935F786BAB2B0D11B5A32EEEEB5B30C6B5573D5B4B7596E867AEEF69 │ │ │ │ +0078B5621C661CD3924F3E4B2B4EF5A498390B265160AA7BFD99D2120C1C4177 │ │ │ │ +51FAB1DBF443D05BADBD0756295267215FEB73FAE3A497E48BA823624F407A49 │ │ │ │ +77798A610B6E028ABC0A2735BB11CC658BF42B130A401CCDD79393B94B2CB39C │ │ │ │ +1E746BE19728358229BB6F25A817B93353E72C5904F092660DC356A35520AF06 │ │ │ │ +C5B597FACDA2981083C0CCF64DCFA5C6B810B21CEB98901AB1E22F7260A3E92B │ │ │ │ +0F98E0CFA69C47D3E5C1E00CD5F75E64AB498FE45BA6D4B1A39B08DEF4707325 │ │ │ │ +4A9871428FB3B9A4E27E4D960569698A44B1ECD44F8DCBEE19696865A9FFE042 │ │ │ │ +38885D1D2E1BC7BB2E752DB5D9CF416D7B56340B9188786B3BBCB4231674EECE │ │ │ │ +D86D10D86FC72B04228B35EC1E1863CECC91ACFEC8D145E371CDF038CD2E6DEC │ │ │ │ +1B322A9625C4F3B357136B7F69321D703342CB6B19F024E6D146FD1511D25C67 │ │ │ │ +08DB4CB180736A4BD083B22D7C3EEF6B817F972605F4A27D0611585CFB115760 │ │ │ │ +709C6B4EF466930FAD653925733853E096F67A62894EA1DCFEB1278FE3A8F782 │ │ │ │ +527F0FD3C614DD694EF64DC837018886BDB771AC7A64FE28C25537CE3C938735 │ │ │ │ +A97B2C820D9207E024E2EF8998916F04B870268486B1B6125D3FCBE9A102724B │ │ │ │ +681B4F60365E18C95A55E844B12DD91A33C88D689E7A8D7BA0F74FDBAEE70A15 │ │ │ │ +9B8E217F4CC0DD656952E71F86B9D9715A66D582E6C05A58336C252ABF33CD05 │ │ │ │ +9E04D30E22C1368E68AB078BF0B73A502C34012FB2A74F4FF541913F9719A38A │ │ │ │ +409A76F9E9822A23142BB017A0D4ECB92A8187B08E05A7185C5EFAEE47DE8CB4 │ │ │ │ +5165A7BFA0F3D479691E5A39C42E6EDCB374FB640AB73A3643578AA9F2F1ED01 │ │ │ │ +EC51663EB8BF41A1597E037D508ED3FDF6B6048474D70D2B5E84424CD0FDC8FE │ │ │ │ +10458B14D261F14ABEEF2AF0E5DC50E8CE709100699555D04DE315D3522E21D1 │ │ │ │ +CB9A7AA9A9B9C4C9C1C5CF3608B7721964EAB18B35F94766DE8C7ADAB3BC7382 │ │ │ │ +89C980800938C949EED2608F2D0D3675B9CB3E27D38009CCCD80BA8B66764246 │ │ │ │ +ABA62296A2D3EE7B2BCC92B7156C12AE33ED0B336AD69F6CAE0ED3A9EA8EAA55 │ │ │ │ +2A552AC11764450798AFFF5B0C6836A8A093406D77E5FF6E12E651C36D2C0EB0 │ │ │ │ +83B69B71FB4EE2E399EE0AC35881260DC9528B1B2705282EEE5DB7CF68D4658D │ │ │ │ +02A0950EBBCE13C82C3701A37A18D87C4A6592881BB995DF35C9B7A6DAC93FE5 │ │ │ │ +B2EC95D0EC72AB096FD099333DB7DCC137EE2BE8949A7744A58B63AFE598C352 │ │ │ │ +6CD5BE296E367DF37CE45EA5EBDF865227E99096221AAEE8AD015C5F4F98FD8B │ │ │ │ +730C615731932CFA7A32B1D981A726CE0430B67A573E3DBC817A29588A1294B2 │ │ │ │ +641EDDCE8A1194F5BDD95768064D1EA5436F491CB0021704E39EA68AC19F24D0 │ │ │ │ +191A04432F806533BEB93B52239912CE045ABC6C688FB0513BB3BCF622A5B328 │ │ │ │ +A2FD008C77DC6D831691721C8ED67F1485CE563967BFCDB2354614D51DF94803 │ │ │ │ +7BECA84CAC4B3FA3AD5FBCD1C1AB54D7E8DF11A1172B9DBD4A02CB8E0827BB2E │ │ │ │ +0FFF2ECBDEA8A53112D425B2DBEC9988FF6EDB130271206F8656361856E57EA6 │ │ │ │ +F89AA3BA9CF04926C571130ABC7B98D376991902DB217A394A95BABC078BEC3D │ │ │ │ +28DBADD0730220B8C73403C54A58D48158AAE816C6A2249EBB832E922869954D │ │ │ │ +8B236AFDBD4EECA4EDE000284AAB0A39E87F734A404054A5B295C8191CD733A2 │ │ │ │ +7E0633FCC219DFFAD9A7F76C60A3C964FCC6148AE1B090607327902971F4287E │ │ │ │ +1FFCA7814375DE4296E2B3E786266778EA4E3CECA74EA66508163C5EDE7CF2F0 │ │ │ │ +6AD72D15A5474C03073509C70CD9C6A9417DBBF9D784583F569242DF74A04680 │ │ │ │ +EB990C09176198731B8DABC2BC671C5F401BEFEEA8FC88767EFBE717155E208B │ │ │ │ +28D1651931DC5B9E6009EB9FC96A567321A4FB3D3C1C48C6CF56111FEF7F4638 │ │ │ │ +2E4CD81E4ADB439A44AA6F591F13E2D751E1430AF034B26A01B00D4AB9552FB6 │ │ │ │ +9C1ED50DA601461EAF7F499E1A603B5820BD78C63F8CF26E327F816A886B721A │ │ │ │ +DC8D8C7317F1A1707EA756B6A9B40FBBB91C68D5293B4B3F56403EC4C62D25B1 │ │ │ │ +ED56825365002F8EA2A912792D5F553389E076B16AFEB6B6F8981D71BFF6AB3C │ │ │ │ +855A1D19BE29FC042AFC8C8EF4BA90CC1A1E03D55FBACA2414B51483F36D340C │ │ │ │ +F4E2AEE48BCF551E4EB41CB3650B46D3DA1E49A26FB35FFC2C319B19A717E3DE │ │ │ │ +C048D5222A0C0772628EC01D98709D9A2AA9C839C0EBAA8F631191D33C5CC516 │ │ │ │ +B1F81AA1FFB70CE008FEF7FF231530C06F5F0A0521D86A9CA3AE8BE545AA54C4 │ │ │ │ +DA8CBC1EFE0923E825C182278068D5AD0DDF99B8BD000521985CF840DB06E3AF │ │ │ │ +0117506CC4093E656DBDC0844417BB1F8DE475E50EFB27DCD772CD87C5CDC442 │ │ │ │ +32304B1FE8CA756671DF4DAE9BDF05ED3801B4150E6FF48DCD1FDD53DBB957E6 │ │ │ │ +C9D9B6B23E75A81AD150F70634FD5DA8BE626BB81EE9716F6C7F73535C119E6F │ │ │ │ +5B9D872C800F5FD30D53C38C0F0A1A54EB5676A3B42F4E843659F1FFCCF19E85 │ │ │ │ +5093B3DEE97751FF9677450CCA916F61240B45DAB1E3758AD0182A5C4BF6B5DE │ │ │ │ +740DD013BF9E49312E647DA5B3E3C45C4D8EB301CC62FD15BDD6626BA4682136 │ │ │ │ +FF4FB31D4514EB6D787973F316481FA3B90D69923720F96D32976E2D43480C58 │ │ │ │ +C0A928853F26660A4864A4F3466E583A59B7B6A8D656270AEDA55EA6B6699D4D │ │ │ │ +91835736F7A7C172B81464E7AA6B8466B9C4CAA250D0B7096D2655C49EED6D97 │ │ │ │ +AE1FD5287F4DFB0C1268C7D43611F3F51650BB9F251D99F699BC2F589A26EE90 │ │ │ │ +6866CDA2F449D1059DA4A451EA9955457D41824FC98521A60D9284A8F7478334 │ │ │ │ +8324D2ACF1E9DF9CFDBE7198BF47407EB9118F9890604C5EC5C319CF156CEEA1 │ │ │ │ +1940846188611E97682D5AE9257716581F3A803372A57EC35B29520377C55BA9 │ │ │ │ +EE34EBA51CF8D0E176E16C4F182378CF5A20BFB65BD28B81C52CB8E9D4301A1A │ │ │ │ +45D67419C409C281AE3E2AA91A85551EE1804FE716EDA120AD543542C4947833 │ │ │ │ +486EAE7FE9EC70BE7698F1E96E7B5E248CF6960678707FB384246BD70178CB66 │ │ │ │ +D84AA428466E5EBB8F962F1EB51409D0EE9E2F7D01E48AA2F9C9AC81DFF4A719 │ │ │ │ +6C442CF52D4F7E600A98CF21263A578B9CD05F0909FDFFB13F964ED56EC3690E │ │ │ │ +E82D963E0A2AB4F6A016A4055D956CBBF4F4B661CC333F15CBF2573F28AC4F22 │ │ │ │ +E496978B08AD8E0EDEEBFBDE4992C11AE9B9EFB9E2D12EF71C55B508576B5253 │ │ │ │ +EFC7B996A89FE4FA9666A9B6CF4FB20BF2B14D6452A185B572F62BC26813144F │ │ │ │ +F8EACD8CAF0597E926476B1615858F9B07B169C4071B7C6281558769C0E23394 │ │ │ │ +D7FB9F7CE25B48962C844CABB71BB3F276AF01CD3B2A89184A3092E36068155C │ │ │ │ +98F9EAE3715576587E2068331D8FC2DE5C318C42EBE83A1EAE61F3F46FF4603F │ │ │ │ +0601CC51925BCCBDC5583E65AE57E735B8174D652D168470DD17EE58E5FB3A1D │ │ │ │ +AAC5CADFA18A9C10E0DA6E798BC88420E838C0A80624198F25E4DD0B4F4FC286 │ │ │ │ +236ABCE6D10EF49349387E0010A531D3CA6CE3FE560CE98E9E7E0D3A64CAAF69 │ │ │ │ +A2EA672463E16CCCFD1A863575A525B8873D2A84EA561B7477EBFD302DFE55BE │ │ │ │ +0CD2C7F1F472A07373BFE5D5BF36948DDB0ED4458B377394F6C519265A43D217 │ │ │ │ +60B00AB4F9CCABF541E87ADDDC1AB66E60916ADEE75EFEFC65E852030CA418B3 │ │ │ │ +452B05A9E0A4D4AC857D918243F29A177B215BAD413F3382BFCCD0429A496CEE │ │ │ │ +10031BFC4BD0DCE89109ED1A286ABADD835304025D6F5E9F5D1128F3F7F41275 │ │ │ │ +CF3641542E1E84ACCE4F7B3EAEE18935337F9344FAD17090B39539C03BD0FDEB │ │ │ │ +942B340EDBC044EB635EE290F24AFBD3ED23D9D27BE511A4BFBEA46432BE4859 │ │ │ │ +11EB00D7218E5B0E2E4CFF2A155A85196F8B5582933914938EA554F0A9704807 │ │ │ │ +9310FBA0BCCC67F5B6AB11BF5CF5CC741EE444A0F564E85AD44BDD0A8232E62E │ │ │ │ +AEAD6F9C50AA2E02601B8D2F4725CCB624BCFDC5B87FAA7E539A90A1CF92E5EA │ │ │ │ +E0D0812978BA87F58BFA388624C07C23CE5EB50D2B71F8EF8BA5AB3DCAF81AB9 │ │ │ │ +214ECECF7FBCBA891FD7CF8E708C839BE512AC69FE13E15D0094FBFE74523053 │ │ │ │ +2B35444F0C1D21EAAD0F91B77F3B441D5E44F0F48187CF3FD93ADAAE414CE254 │ │ │ │ +F6BC549A1B9CA2044B40D6230ACE8AD9368A3FA861A40034586CCBC197F61A95 │ │ │ │ +EEAE2EC67A350F163C0A570A5CA0E928ABE9CDE7C0D7556F0D25D2725A6DA8D7 │ │ │ │ +C199FA82405D1ECF70C8D3E18817834F5A79BA4B32D33499A73B65DBDD23A030 │ │ │ │ +448ECB6FB65B630B675A7F53DFF1D04244A2F2C9D01FA18E9426239DECB91301 │ │ │ │ +E23856E258427323048551078AD850932BD2678AC41187F526382406DDADB037 │ │ │ │ +F67BA76FCC46F1EE93003450D5DC28CBACE09B335B155131B827D723359E1354 │ │ │ │ +84E0370669CB4218BD0DE118E5A36A562774660EB83CD0E68C7990512CE9BEB6 │ │ │ │ +A99585670BC5320D8C82B8389691146305A0CC14E890B5E6727837B5401500C6 │ │ │ │ +4D4148A4A946A5D570EA05E73A10C236867D80B5D9E6B88C99672747CAC45461 │ │ │ │ +E07F425138691F288755FABCFEB0AEDE12604318F4981411546C0621A8075C25 │ │ │ │ +FBAD56548DE83FBF3C312EAA04F2EEA5B3F5268B5B8603D5CD8ADD88C22BA909 │ │ │ │ +2422F8550342E5CBCE12FB7B3E917215364866F730DFCCA4AA5759FD60A5F980 │ │ │ │ +3DFCB43CC524BD85BD33C43A5B34DD187C506309A36F57CD571042B2B38DD764 │ │ │ │ +B14078AB6FCE09F1A384A30F16BB30E3EAFE35EDEF2462047BC43956B6D7DC18 │ │ │ │ +8CD249CF0ED8E923AE853AC4D77DF8CCA5E82865CE7A45AC5F3F3AAB424BC94E │ │ │ │ +35C2DDA6B05D96B159D48247DE6ED8D91F32475E84D9EC372E5B8976A50CB691 │ │ │ │ +6FA4119CFE599414CAE0BB2A5CB4AFB961FDD57637EF5D5C6436F2811EEE3099 │ │ │ │ +7A6B1F7E36B62EA4C51B34F98ABB452F434945A4F1E2C9F161F31C94301FE498 │ │ │ │ +AEC3CB65F0FCC8841F80DE5C9B27F0378E55DB92C96A394B1B25A805AFD7BA43 │ │ │ │ +E04F7942A60AB600F70F1DEDC050952637140F14092799280E8ABB451BB92728 │ │ │ │ +1B4BCF5A51F87BC5EAAA5141334E729829726400146577DE83B7250669A623CA │ │ │ │ +1CA33CD8895B26C96D55A3BD2867EE30E4D0ECA757D82E891D85A1D1DD4CF734 │ │ │ │ +51309DBE433CD7DB9A787B9A85EA1EAF2E99EAB4F690062E956E345599C6AD35 │ │ │ │ +1AB91CC47744B7495DB555FCFF0638875D34B3F1468990CEAA34EE7FB187A87D │ │ │ │ +130E254DF39B4DE51A4DC60EB44E8E2A24C6CB95D63C760ECAABF8E191FFD2EA │ │ │ │ +46292AC28BCCDB44BA20506DDA189E8D8302695D721DCC78C664F7EC4702D663 │ │ │ │ +4A354214B07D7E57818A191BEEC583DA8E9E700AC17B5BBC8FFED4D8D6B3132B │ │ │ │ +25E03754BF1B0CE4CCD5F45ADD435EFA3166C8ED1F81FABC526190044DC490E1 │ │ │ │ +F255E92D9C7536D4AEAE97F6C7AED0A69C3ABDDE983DA4E9AB8F4C2B27A378F3 │ │ │ │ +D30700343152930EA94C9354195F9641DB23DD8C4C8542D0FAD3C305986DFFAD │ │ │ │ +098C4D908E9E3699E0363F69478B697BC17BB0DD2D2BC6184EECA7E7BC243FBD │ │ │ │ +84A64E2F92FB8E0C005A631B5F611F1D566007FDBB136BA75F5C3AB53295D52A │ │ │ │ +285430424F6F42CD6733DFC56D0EFD4F8BFC8C9A7AFD498060A57AC248A339F3 │ │ │ │ +02A7559127398FB41E8D6CAA105B123707B915C2BEA2C26F768EE41D475713B0 │ │ │ │ +B5570225EF46CCE93AC50A6FFF4A8581E33D189A505E347E016E385BA7661B27 │ │ │ │ +7A62EF2CE70A1EDB252E5EF4627C68A503849245069D3DAD5B09B6C0411CEC9D │ │ │ │ +F3B61776C83518C6DE7852332668A2574B43BBFE9C70A104F8726A72110E6F64 │ │ │ │ +F26CEBC08B6E5629285391F7670BFAD99BCFDF28B6031FE8167733477CFFC09B │ │ │ │ +C50199E77BAAACDE37F32A1F83C91059269FA723B9FBE6CB4DFF35AF6828F004 │ │ │ │ +A6BB3494FEA24FA427E7E03F4C6CFF21079C7ED368B6A03B875FD3F326BAD5D6 │ │ │ │ +AE9215A4E808460C7CC8A0DC545F5E9508298630CC359684B2A5705140A60A93 │ │ │ │ +65494D619D78B412128D528DD952FB9AB021160F03CC301025E9092E5DA5D679 │ │ │ │ +6A6EFFBBFA28B992B8196D7F25D2DE5A41121CBF78D6CE9DAF8FD7709690F818 │ │ │ │ +7EBA748E1486636947B84B7BF21747B435A890DEF4507CC5475E03C26B54F6A7 │ │ │ │ +09BC982904E8CE0401748968227CA2104D85AF0220FE7224237C8A9B6CFF1F24 │ │ │ │ +FE0065299E09DBCD4E7A8D8372A8F873520523B2EDE115BFF664CD97F0654672 │ │ │ │ +4B6BBF41499231DF203419BCAF9DE40852701348476C0F6153DCDEB8F2721F3E │ │ │ │ +C961FA3D6028D7535DB06AF09ECEEFA5D81BAF5741E4EA74615753094B1C46B6 │ │ │ │ +E514269F96524FE6E52D36A3A424FC72325CC228C6A64AE9407FF516B669C53F │ │ │ │ +090CBC7237E2A4A5905E721D358407D4183D3A27980F2AC62604862F8B2505E9 │ │ │ │ +E4AEFE08886BEE59684F4C34759770827EA543A3A1BE86A63B7612E9094BF4A3 │ │ │ │ +E020E86F697E13AACD1D41090CF2A39594106655527CC9E15ACB94A56209588F │ │ │ │ +875F6D362D17D2189F93D75841F6E3BA088D45F9D822605E3AACB0843C3A503B │ │ │ │ +964823AC08B09EFE6E833F940C4042C4882033E095BC10DCB5F8A9CC7FE39EC5 │ │ │ │ +A478866BDCCCE15D8A8318D11EDE2B2FF040B32F427A1249A12C92EBD01F8A74 │ │ │ │ +FB82B5A60AD06E66EDF1C7A94D7E5936BE42E0B801797CB3C8CAB192480BDD22 │ │ │ │ +63FF15F22DE6C9243DBAD244FDD356540FD207D34431C9693EBF5A8262F35A09 │ │ │ │ +7DFD783CAAE2294073AE0C07E605F51D56C25063C57669D449E4D41FE79B014E │ │ │ │ +88ED12C4B8C3646EDEA4AEC2F9858082F13AC281475D327A574B7A1A9017A021 │ │ │ │ +B76CF50F6E9F035A41401F013F01B7C769276713E76ACF82B5033525CE18FDDE │ │ │ │ +EE2CADF8390F9A292AC52E689374905FAF83884E57E5E8830E4E770359ED0870 │ │ │ │ +CACD8C30D31627572B27F5B73469BAF986D2448549F1614849 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -2462,21 +2448,21 @@ │ │ │ │ /Fd 1 43 df<000C0000001E0000001E0000001E0000001E0000001E0000601E0180781E │ │ │ │ 0780FC0C0FC07F0C3F803F8C7F0007CCF80001FFE000007F8000001E0000007F800001FF │ │ │ │ E00007CCF8003F8C7F007F0C3F80FC0C0FC0781E0780601E0180001E0000001E0000001E │ │ │ │ 0000001E0000001E0000000C00001A1D7C9E23>42 D E │ │ │ │ /Fd load 0 Fd currentfont 66.6667 scalefont put/FMat │ │ │ │ X/FBB X/IEn X │ │ │ │ %EndDVIPSBitmapFont │ │ │ │ -/Fe 134[51 3[54 38 38 38 2[49 54 81 1[51 1[27 54 49 30 │ │ │ │ -43 1[43 54 49 9[100 4[72 1[66 4[76 50 2[77 64 1[75 70 │ │ │ │ -69 73 7[49 4[49 1[49 1[49 1[27 1[27 44[{}34 99.6264 /CMR12 │ │ │ │ -rf /Ff 172[90 2[110 121 2[97 6[106 18[81 3[45 46[{}7 │ │ │ │ -143.462 /CMBX12 rf /Fg 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 │ │ │ │ +/Fe 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 11[49 │ │ │ │ +49 1[49 1[49 1[27 1[27 44[{}32 99.6264 /CMR12 rf /Ff │ │ │ │ +172[90 2[110 121 2[97 6[106 18[81 3[45 46[{}7 143.462 │ │ │ │ +/CMBX12 rf /Fg 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 } │ │ │ │ @@ -2486,20 +2472,20 @@ │ │ │ │ end │ │ │ │ %%EndSetup │ │ │ │ %%Page: 1 1 │ │ │ │ TeXDict begin 1 0 bop 590 739 a Fg(Solving)43 b(Linear)g(Systems)f │ │ │ │ (using)h Ff(SPOOLES)54 b(2.2)778 1005 y Fe(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 Fd(*)1566 1341 y Fe(F)g(ebruary)33 b(29,)f(2024)p 0 │ │ │ │ -5173 1560 4 v 92 5226 a Fc(*)127 5249 y Fb(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 Fa(1)p eop end │ │ │ │ +y Fd(*)1610 1341 y Fe(Octob)s(er)33 b(4,)f(2025)p 0 5173 │ │ │ │ +1560 4 v 92 5226 a Fc(*)127 5249 y Fb(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 Fa(1)p eop end │ │ │ │ %%Trailer │ │ │ │ │ │ │ │ userdict /end-hook known{end-hook}if │ │ │ │ %%EOF │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -1,8 +1,8 @@ │ │ │ │ │ Solving Linear Systems using SPOOLES 2.2 │ │ │ │ │ C. C. Ashcraft, R. G. Grimes, D. J. Pierce, D. K. Wah │ │ │ │ │ Boeing Phantom Works∗ │ │ │ │ │ - February 29, 2024 │ │ │ │ │ + October 4, 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 │ │ ├── ./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 2024.02.29:1857 │ │ │ │ +%DVIPSSource: TeX output 2025.10.04:1733 │ │ │ │ %%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 │ │ │ │ @@ -2555,23 +2555,23 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 50 /two put │ │ │ │ dup 52 /four put │ │ │ │ -dup 57 /nine put │ │ │ │ +dup 53 /five put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 70 /F put │ │ │ │ -dup 97 /a put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ +dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ -dup 117 /u put │ │ │ │ -dup 121 /y put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -2745,95 +2745,85 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA647CD0E2539DFAD9604486DCCFA49 │ │ │ │ -AC96130D106A8F8387633622C3809400D6E8FF9D60877C743502E4D211CEBF62 │ │ │ │ -9A6F91045C22D5D20C5FF677D89983D02E5EE26C71A9EAE0E7C52465DA5A149A │ │ │ │ -9B731C27EC8366BC3E841C0CAE49A33DE164A857365B17B09CAD121C47A980CB │ │ │ │ -C75E1030F6C394EDB46C54B46880D2344127B903FB22684C9CAACE6053DC3BFA │ │ │ │ -4E47C565ECAF19C4295A11BD68CA6D45B5738B932BB3690A8C712904C49C1636 │ │ │ │ -A7702075F2FEA8DB3EB3A3C1216BB769DD0BAF4507A18E3052F2C846B0797933 │ │ │ │ -8CE9BB2DB5DFADAF1B0FC3A22BAB82A0D5D290F7AD950013CFA465BE11C1076D │ │ │ │ -5833FF92321FBF90D9229D3BA09DD18EEC44D9FCF8FCF63CC09D2977BFA798B6 │ │ │ │ -47FB047EA6AF69C7DE570176F5B6C0FED74DEDBF7DDF49550DD84BA14AC09423 │ │ │ │ -F70D5B14F0F8588F1E2FFE0DFE0760E77A9E39DEDAC5C5AE3760722C029B916D │ │ │ │ -96A2A7D1DD6A61F90B4B9806314A668EB7A0E107A3527310A240490453CC18D7 │ │ │ │ -3793B4CF3CE13EA332E7F5C2BACF85AC75FE84693B966BB0F6FB9A179A331C4E │ │ │ │ -55E9EF30E2734E44A88E053CD5E650D7E529E94CB7F8B733E68315ACAC5BEFC5 │ │ │ │ -3FE4F585F875310267865679AB381125C31E9AEB7226DC9F18DA80A9DE2F38A4 │ │ │ │ -51B8F9D5B2FBA0F50D53AE6212AFE41466A594F7A303B4E82F1493C0B8D65756 │ │ │ │ -BE6AF2931E5ADA5CE7D51CB5B1EC916C6C6D674808939331CA66F8181DD2B112 │ │ │ │ -1A12198CCCB6BBF1D40C803E794B65241ACE1E0D30CCA1C6F2D3E1415B98726B │ │ │ │ -9BA303BE2C4C276108CC78C093F1CC85CA454CC38535D1DEBFA341D84E8A5DDF │ │ │ │ -D53D8DD0F4A812B5BA63871BEB3BCE93FBC77AD395914E2CD757546C2BE2D641 │ │ │ │ -FDB12258E1E1D10E1B963EABB265F2C8B2547D48963E1AD3B223B666B46915A1 │ │ │ │ -157F5EA0AB8D8411C07AA2EB5D0EF1A1BA6D81C47473A3D3D6287104C7BF61F8 │ │ │ │ -3BDB64995DE96A65BF2B7288C51ADAA3D373A95C40D5240C5FF397551554AA9E │ │ │ │ -C89C7E45AA7738503CB058EF6AD5052CC78E4445C810C250BF25394B8D7DE82E │ │ │ │ -315C9CCD6E1E9150EC79EE0F354C668AE199C1AFF39C67337A86CB932E8D64E9 │ │ │ │ -389FF3CC08B538492DEED017686DBB9BDEA30FE67FB4EBDB3627C16FD15F243A │ │ │ │ -7FDEB310EFC940E57726E94340472F2C452815927ADE21578C959890216BE504 │ │ │ │ -225BE4B4D2E3B19F5E06B5A0B25AF168C3A2B26F599A829F89C16BD2026E8CC9 │ │ │ │ -8FB3CBB830C3E36C099071A70D0B8834FF2C17364EB50D5C71440CC7BFE02321 │ │ │ │ -8C6ECAC2F7EC1BE39077DB0E8B2B251626A71FD038EB2CF1FC254D98C1535CAA │ │ │ │ -A8C987BC266482BD860A333048E1EDB3DD40A6ECD6DA0088AD9B9640202D89AA │ │ │ │ -0BB9A0ADF63491E67F2E97E35942D77E59B9B8AB0ED28B022EE5CD3449FC5B7A │ │ │ │ -19E38845B488F97D155C4312885E29537EAE97719C65845663480CE79DE8F037 │ │ │ │ -68995C0928FE8AFBEE554F01381EE5187578DF5D2542F26F66A599EE8ECC1F68 │ │ │ │ -FBADF3C2BA968C3CEB86675CF9A6CFD736E1422800D270417D497903DE87F2AE │ │ │ │ -938E39E120E9D3079F512E545E0E2616B84E81FE41392184F96818A7C86BF541 │ │ │ │ -F2E67C48CA56DA838C9FA0FAD538073B9F26319140D1F80EEEBCA190DE660A31 │ │ │ │ -457CAC16E92F87449A3734F9EA751588514865B58DC073658C8A857B5398AAC7 │ │ │ │ -3DC11E069996EF74A3189A07630D5DB87C5E028CD193C086B4D0E8BABC4F2393 │ │ │ │ -235EC96091B16C4A6D97DA1BD30A2D2E71F55869223CA66AD12448B668685F6E │ │ │ │ -06E7888D7F20045C662C4F7994CC7E1CE9AAC33A026716AA0551DF12343F0E22 │ │ │ │ -6E9F4B21C90406CC4997601194EF37A973221D1F4D73DD5666BD297F621C92AA │ │ │ │ -E3F698BC1146ADE754C4120EDF5B3E974D75A237E51DB49D52CD6CC7C9E8BD2D │ │ │ │ -E6849DF8F4DBA86C655D0C57CB54836C8A841C1D814F6B493F96ADBFCAD78D3B │ │ │ │ -430C58EF169950851B6A0B46411488B1A6F6974832787A24C0CDDBE27996EFB1 │ │ │ │ -DB341FA34B1DC6238D978D1E1D34AF3FB375ED6DA9C88699F195C88A54622F7C │ │ │ │ -36DAFC663D85660E756733A7E22F20C6A5D91F06087CAD10F7217BD33F343DC6 │ │ │ │ -F5EB9F16FE763672243EE6AE5CB6063A1D64670E1C059DD52134974E27D9D89C │ │ │ │ -BC658FCD814F20703D610C978FDCD6E2AEA31C18D1A310F215B28199F66C87DB │ │ │ │ -3B23980A393E1DD77AFA3045EDB6942505F3CF6204315A14E5B6BF2E96F3BB1F │ │ │ │ -628D24AC1893BC7DAEF3AA63F2116837F31DB90D872CBD9E5C48BCDEE781D20D │ │ │ │ -C6553D2D15F4E8438A9D1C7CEE1B72BD6AA08DC0AFEAF8B4DC1038707EE4A1BF │ │ │ │ -3D84460E60AF90F55002C1D8EBF0700F7EC3EFC944BEA78D0E0536F3AA6D9A84 │ │ │ │ -604A781AC5ACFEB7E681365315EE11E991C03DA431B65B332AD8F83F6F3AE66C │ │ │ │ -1BF434D3793FB5BCC44E44ACFF2855C2770C4AC678C6ACD6EB071974ACF1AE37 │ │ │ │ -D02C1736C62CC205A2F3488448527EFFA379613A8E6A6D134F4BFBAE6127304D │ │ │ │ -576C900A458E32CD42A4674415E03D8EB5742E71B854B3EDFD271AA214436544 │ │ │ │ -D1BCFD52F439298847E1FA258E5D38384FC85BC4EDC6F9E4431621CF763B137B │ │ │ │ -22DB6E3268B3F78881D55EA7C52ABF23FB73C152B06B708084FE1B00CFE72D9D │ │ │ │ -57B62AEE912E63BBD89D4D13CE896735454F1A16C3D9FB6CDF142CCA9F1C0242 │ │ │ │ -46F62109DF30667DA327F7CF6DC19B880C860C69080597FFCB1793313E202D4F │ │ │ │ -120A7C6B052C2EB7597B71B0985D24FDD2D3918393BF720E762C5DBBC2BB1E91 │ │ │ │ -B04560364EFE5B16EB068E0560FB932E0C617CFB95A166388E99AC4CB020F5BC │ │ │ │ -E24BB77352D7C3B21C37D404051A70FFFA0F726C35501A1FBB411F832CE46A2E │ │ │ │ -B424E26BD4 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFD8CDE285A2827F4659E339460ABEF319FE44D7A91E93CA309E9266E03DA │ │ │ │ +735F5DEF3920C01189BB63C2BD7ED0B92EABB481F123641477CDCCAB9751FB7B │ │ │ │ +F67DA7CE6EB134BC10D0228562BA5A6BFE6940907EF030ABF9EC4A8A0DFEF73D │ │ │ │ +3289E8CB4DC37694F5A656A935D92C72B3D82B012F578A27711B161DE9652ADC │ │ │ │ +71C51E743E4E9A7C6CF6FF16C5D65C1F60954C0858B48FAAC4FBB21988E2A934 │ │ │ │ +AC50C097DDF42C416359647D79F830E1430FB9BB803451A6732D1B5CAB817C1B │ │ │ │ +673B3077D9A180F184267E9990C087BCDEBC8EB8B889934DD0EB63C2EBCED4A3 │ │ │ │ +83A0D6A365412CFF610EF7BD5F82B02AA293F1D2F868768CDE9B801C929B4A38 │ │ │ │ +64E20C70BC4041F837AD15423517F7336A067D140A2C7906DC5D45885FFB3B69 │ │ │ │ +724E5B9B138BD15A9359EB25D14BC4193E529D1A49FEB0DC1015BF94CEBBD5E0 │ │ │ │ +EA148B185C53E12BD9FA6DBC097D789A73E832F02F55080D8ED6087F5952EA78 │ │ │ │ +250A4C65CE4C4013554A031446D2092D813C4CB1A605D97A40CF867F656ECD1C │ │ │ │ +C23F80230AD1E449AA8B4007134F71156719206441D92B1A6DD25101ABF69F70 │ │ │ │ +538CCCE216376E1BD6E423986BD4E83B1975B15092D4E19F885672F9E7C02485 │ │ │ │ +E02DA0F4243D324A5983D1D46444E5F6573F699E4F2A3395EF0EB7808B7D4D62 │ │ │ │ +690FD033E93AA553082273636503DA4BBBBFA6D127CE10424DD1DDF4F879305C │ │ │ │ +14F64180E7851D091B3220DFC70CAA44716B8F7F0C6FBEDB167801DED77F9E69 │ │ │ │ +E9B31CD2D8044DB946E511162976C34DE27F2BB974B70509005562A0A21317B7 │ │ │ │ +46D826A31C476C8F9A778F941FF5956BA2D765B1AD0AC4BC7AE1CD8A2A81F039 │ │ │ │ +06EB13EBD099BBDB2EBDB54D459C288EA69FB0018CE9255BBFB08C1F90FF30BD │ │ │ │ +C971DA7FDB193281B8F967F21AB42F13F36085AC9EC0D6B6B448C8F289B0AD70 │ │ │ │ +DB521A4755ECF9CA594741E5C674220C21C265EF3BAE594197B00048C8D4DB73 │ │ │ │ +4AC47B6A86EAC7EECD042C8E23C347F8C9FCB870473C1FBD91C298174BCBF1A9 │ │ │ │ +7B366C570A9A04A433495FBC9FD0FFC22A0E8181424C0F038ED97AD5054B10CC │ │ │ │ +1CD5BA0719DD0B4F4F18932AE87FF8B8C1CF0C7482B7847049761505DCD85146 │ │ │ │ +4EE5CB53993A9449CD05233E961BD49AE92D308E2065D6C6BF038538039AA56A │ │ │ │ +C59D424BE3175427337E16892D3920598D518423E145C6B2DD3881F338845F0D │ │ │ │ +16C47AA0D9C2D6DE99C6A302D567ACD6F98BF38223F1890E099C8F93348FFDAA │ │ │ │ +C2D3440187C8FED87C1A891EF11EFA7168EC47F72AF8BC5BE1B88B1084E704F5 │ │ │ │ +82099F1A79E556D94CC38851C97DC3864945A7470F1389BCF608BADAE45B236D │ │ │ │ +2934A20FFBCF169BF84DF496B07E7F1D9002E62B030337642804403DF7E4B3FF │ │ │ │ +C5A421EE0033BA06C50A041FBFE8F81AFC145664E2976505EB14859CF0377EBA │ │ │ │ +EA604CF8BFB5F9ADB9A7ED56E6F0F919E791D57C7232241C892EAC3E55D2D03B │ │ │ │ +FF43B9DAB7B1D8C6588D6D3503F49E80121E52254431B308752A936E0B51124D │ │ │ │ +C7F23C316BA6FA73E6BC47EB9550003E1393C68360067C094C65C0DD17214FA0 │ │ │ │ +45FF0F9C3E0AE4C81093752D23EA95E163C98EC04873ECE3FB0882567329525C │ │ │ │ +0A3937B16CA72B5EB6D2DC10C1B485C0BA939587AFEBB6D837A40401C666BC1C │ │ │ │ +F3344FBAB3E48BEE18F3AF5CDB33BA63778D373A851333C8C34E2F35AB94E8B4 │ │ │ │ +FF7E62A92ED83B872894E0A17209E14CF61269204A35A4BC8C7EE4B16F19E91F │ │ │ │ +669C4EFCECB187F6C7FAF92B4E14E400C6B3C81679D4A7196D66DB1E897DDA42 │ │ │ │ +47CC2848B46D581A95EEF85AB528E8CDEEB275D1E1FE197A3A08D36406E2DADF │ │ │ │ +A87D817AF18B5525F89B7C2E584F4A1254A1FC71E749999A2152870631A69CB6 │ │ │ │ +666EBD6BB3366A598F6592040D0E82B9D866DF0A76C362E76C2804D108A0C148 │ │ │ │ +51F42E9E0ABD52CC2D02B156B63AFD03313AFC80EACC83DF9B59F05FD798951D │ │ │ │ +FCF5335636DFC6561910ACE0AEC47F74CFD302EB7421D28AAAC8FF82B7CE2B2A │ │ │ │ +340B8BCE09F57BFCBC77F91096D97A85726E68846398C8C9C8D3A65A252AE8FB │ │ │ │ +166750C244963BC61E2236BAAC529FABD6FC774550096374A8DB81B6AF1EA843 │ │ │ │ +27F671C0045D629E3734EF037447C4763514FD1C4AE858A494AFC23A64C82149 │ │ │ │ +F4C0A7023B3865B84FAC2DC88D1553DCEBA3D8FB5DBC1103123F6B8CB5B3A399 │ │ │ │ +B665B26B001BF1E4BFABE42BFF6B02D69FA88D5CBCA5A11D5B48CFB4EAE60558 │ │ │ │ +5FBE254AD3BE01761CD4995E766E172D768621223505FD6AA8F89FC042EB814C │ │ │ │ +34373DAEC4FAAF71C0752F814154C5299F751CE7E0F9C673D2E448D0204C214C │ │ │ │ +C04DC34671FBEF72350FFBA263662E86A0D3795E310153AAF4C8A2623E167E6E │ │ │ │ +1F13A9BA485D5DDFC451D691DBA7C49E20354A7AD79D89F7EDE24F0D5B48B27D │ │ │ │ +568D01EF2555504196C09841F5970D8CF6C5D47FFFCF18AE6B2A485342000AAD │ │ │ │ +1F922FBEF7C98E0965609C89240E7B131A59551F57CD5C92097FCE75F5D2778F │ │ │ │ +F9ACF43A3273551363442C8C539205903A835C744A4AA953545506081D3D231A │ │ │ │ +A140E01F280BC42A3C35EDAD5F6B8CE6E51C68E41CA813710864ED880FCE846C │ │ │ │ +1B66D27CC2DBCDC2B1B96A12490BD76D67A415D4A6595CD9B19D3104A83D2C82 │ │ │ │ +C46DCD2C027F0565EDB83E54FF99498194D3140E55E8EE65EBDEAC5409B5616A │ │ │ │ +73141DA2D581E300A6057F4301A02DD160AB3E55A116313525122D0608816AA8 │ │ │ │ +4712EEF3D6FE8C893DF37D │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -4123,15 +4113,15 @@ │ │ │ │ 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 │ │ │ │ -134[48 3[51 2[36 12[40 2[51 45 26[59 11[25 45 4[45 1[45 │ │ │ │ +139[35 1[36 2[45 9[40 1[40 51 18[71 20[25 4[45 45 1[45 │ │ │ │ 1[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 │ │ │ │ @@ -4241,17 +4231,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 1140 4 v │ │ │ │ -1322 w Fk(BKL)29 b Fh(:)i Fg(DRAFT)f Fh(F)-8 b(ebruary)30 │ │ │ │ -b(29,)i(2024)p 2760 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 1181 4 v │ │ │ │ +1363 w Fk(BKL)29 b Fh(:)i Fg(DRAFT)f Fh(Octob)s(er)h(4,)g(2025)p │ │ │ │ +2719 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 │ │ │ │ @@ -4296,17 +4286,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 1140 4 v 1321 100 a Fk(BKL)30 │ │ │ │ -b Fh(:)g Fg(DRAFT)122 b Fh(F)-8 b(ebruary)30 b(29,)h(2024)p │ │ │ │ -2713 100 V 1140 w Fl(3)0 399 y Fe(1.3.1)112 b(Initializer)38 │ │ │ │ +TeXDict begin 3 2 bop 91 100 1181 4 v 1363 100 a Fk(BKL)29 │ │ │ │ +b Fh(:)i Fg(DRAFT)121 b Fh(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2672 100 V 1181 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 │ │ │ │ @@ -4370,17 +4360,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 1140 4 v │ │ │ │ -1322 w Fk(BKL)29 b Fh(:)i Fg(DRAFT)f Fh(F)-8 b(ebruary)30 │ │ │ │ -b(29,)i(2024)p 2760 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 1181 4 v │ │ │ │ +1363 w Fk(BKL)29 b Fh(:)i Fg(DRAFT)f Fh(Octob)s(er)h(4,)g(2025)p │ │ │ │ +2719 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 │ │ │ │ @@ -4448,17 +4438,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 1140 4 v 1321 100 a Fk(BKL)30 │ │ │ │ -b Fh(:)g Fg(DRAFT)122 b Fh(F)-8 b(ebruary)30 b(29,)h(2024)p │ │ │ │ -2713 100 V 1140 w Fl(5)111 399 y(3.)46 b Fk(float)h(BKL_eval)e(\()j │ │ │ │ +TeXDict begin 5 4 bop 91 100 1181 4 v 1363 100 a Fk(BKL)29 │ │ │ │ +b Fh(:)i Fg(DRAFT)121 b Fh(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2672 100 V 1181 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 February 29, 2024 │ │ │ │ │ + 2 BKL : DRAFT October 4, 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 February 29, 2024 3 │ │ │ │ │ + BKL : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 4 BKL : DRAFT October 4, 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 February 29, 2024 5 │ │ │ │ │ + BKL : DRAFT October 4, 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 2024.02.29:1857 │ │ │ │ +%DVIPSSource: TeX output 2025.10.04:1733 │ │ │ │ %%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 │ │ │ │ @@ -1427,23 +1427,23 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 50 /two put │ │ │ │ dup 52 /four put │ │ │ │ -dup 57 /nine put │ │ │ │ +dup 53 /five put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 70 /F put │ │ │ │ -dup 97 /a put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ +dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ -dup 117 /u put │ │ │ │ -dup 121 /y put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1617,95 +1617,85 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA647CD0E2539DFAD9604486DCCFA49 │ │ │ │ -AC96130D106A8F8387633622C3809400D6E8FF9D60877C743502E4D211CEBF62 │ │ │ │ -9A6F91045C22D5D20C5FF677D89983D02E5EE26C71A9EAE0E7C52465DA5A149A │ │ │ │ -9B731C27EC8366BC3E841C0CAE49A33DE164A857365B17B09CAD121C47A980CB │ │ │ │ -C75E1030F6C394EDB46C54B46880D2344127B903FB22684C9CAACE6053DC3BFA │ │ │ │ -4E47C565ECAF19C4295A11BD68CA6D45B5738B932BB3690A8C712904C49C1636 │ │ │ │ -A7702075F2FEA8DB3EB3A3C1216BB769DD0BAF4507A18E3052F2C846B0797933 │ │ │ │ -8CE9BB2DB5DFADAF1B0FC3A22BAB82A0D5D290F7AD950013CFA465BE11C1076D │ │ │ │ -5833FF92321FBF90D9229D3BA09DD18EEC44D9FCF8FCF63CC09D2977BFA798B6 │ │ │ │ -47FB047EA6AF69C7DE570176F5B6C0FED74DEDBF7DDF49550DD84BA14AC09423 │ │ │ │ -F70D5B14F0F8588F1E2FFE0DFE0760E77A9E39DEDAC5C5AE3760722C029B916D │ │ │ │ -96A2A7D1DD6A61F90B4B9806314A668EB7A0E107A3527310A240490453CC18D7 │ │ │ │ -3793B4CF3CE13EA332E7F5C2BACF85AC75FE84693B966BB0F6FB9A179A331C4E │ │ │ │ -55E9EF30E2734E44A88E053CD5E650D7E529E94CB7F8B733E68315ACAC5BEFC5 │ │ │ │ -3FE4F585F875310267865679AB381125C31E9AEB7226DC9F18DA80A9DE2F38A4 │ │ │ │ -51B8F9D5B2FBA0F50D53AE6212AFE41466A594F7A303B4E82F1493C0B8D65756 │ │ │ │ -BE6AF2931E5ADA5CE7D51CB5B1EC916C6C6D674808939331CA66F8181DD2B112 │ │ │ │ -1A12198CCCB6BBF1D40C803E794B65241ACE1E0D30CCA1C6F2D3E1415B98726B │ │ │ │ -9BA303BE2C4C276108CC78C093F1CC85CA454CC38535D1DEBFA341D84E8A5DDF │ │ │ │ -D53D8DD0F4A812B5BA63871BEB3BCE93FBC77AD395914E2CD757546C2BE2D641 │ │ │ │ -FDB12258E1E1D10E1B963EABB265F2C8B2547D48963E1AD3B223B666B46915A1 │ │ │ │ -157F5EA0AB8D8411C07AA2EB5D0EF1A1BA6D81C47473A3D3D6287104C7BF61F8 │ │ │ │ -3BDB64995DE96A65BF2B7288C51ADAA3D373A95C40D5240C5FF397551554AA9E │ │ │ │ -C89C7E45AA7738503CB058EF6AD5052CC78E4445C810C250BF25394B8D7DE82E │ │ │ │ -315C9CCD6E1E9150EC79EE0F354C668AE199C1AFF39C67337A86CB932E8D64E9 │ │ │ │ -389FF3CC08B538492DEED017686DBB9BDEA30FE67FB4EBDB3627C16FD15F243A │ │ │ │ -7FDEB310EFC940E57726E94340472F2C452815927ADE21578C959890216BE504 │ │ │ │ -225BE4B4D2E3B19F5E06B5A0B25AF168C3A2B26F599A829F89C16BD2026E8CC9 │ │ │ │ -8FB3CBB830C3E36C099071A70D0B8834FF2C17364EB50D5C71440CC7BFE02321 │ │ │ │ -8C6ECAC2F7EC1BE39077DB0E8B2B251626A71FD038EB2CF1FC254D98C1535CAA │ │ │ │ -A8C987BC266482BD860A333048E1EDB3DD40A6ECD6DA0088AD9B9640202D89AA │ │ │ │ -0BB9A0ADF63491E67F2E97E35942D77E59B9B8AB0ED28B022EE5CD3449FC5B7A │ │ │ │ -19E38845B488F97D155C4312885E29537EAE97719C65845663480CE79DE8F037 │ │ │ │ -68995C0928FE8AFBEE554F01381EE5187578DF5D2542F26F66A599EE8ECC1F68 │ │ │ │ -FBADF3C2BA968C3CEB86675CF9A6CFD736E1422800D270417D497903DE87F2AE │ │ │ │ -938E39E120E9D3079F512E545E0E2616B84E81FE41392184F96818A7C86BF541 │ │ │ │ -F2E67C48CA56DA838C9FA0FAD538073B9F26319140D1F80EEEBCA190DE660A31 │ │ │ │ -457CAC16E92F87449A3734F9EA751588514865B58DC073658C8A857B5398AAC7 │ │ │ │ -3DC11E069996EF74A3189A07630D5DB87C5E028CD193C086B4D0E8BABC4F2393 │ │ │ │ -235EC96091B16C4A6D97DA1BD30A2D2E71F55869223CA66AD12448B668685F6E │ │ │ │ -06E7888D7F20045C662C4F7994CC7E1CE9AAC33A026716AA0551DF12343F0E22 │ │ │ │ -6E9F4B21C90406CC4997601194EF37A973221D1F4D73DD5666BD297F621C92AA │ │ │ │ -E3F698BC1146ADE754C4120EDF5B3E974D75A237E51DB49D52CD6CC7C9E8BD2D │ │ │ │ -E6849DF8F4DBA86C655D0C57CB54836C8A841C1D814F6B493F96ADBFCAD78D3B │ │ │ │ -430C58EF169950851B6A0B46411488B1A6F6974832787A24C0CDDBE27996EFB1 │ │ │ │ -DB341FA34B1DC6238D978D1E1D34AF3FB375ED6DA9C88699F195C88A54622F7C │ │ │ │ -36DAFC663D85660E756733A7E22F20C6A5D91F06087CAD10F7217BD33F343DC6 │ │ │ │ -F5EB9F16FE763672243EE6AE5CB6063A1D64670E1C059DD52134974E27D9D89C │ │ │ │ -BC658FCD814F20703D610C978FDCD6E2AEA31C18D1A310F215B28199F66C87DB │ │ │ │ -3B23980A393E1DD77AFA3045EDB6942505F3CF6204315A14E5B6BF2E96F3BB1F │ │ │ │ -628D24AC1893BC7DAEF3AA63F2116837F31DB90D872CBD9E5C48BCDEE781D20D │ │ │ │ -C6553D2D15F4E8438A9D1C7CEE1B72BD6AA08DC0AFEAF8B4DC1038707EE4A1BF │ │ │ │ -3D84460E60AF90F55002C1D8EBF0700F7EC3EFC944BEA78D0E0536F3AA6D9A84 │ │ │ │ -604A781AC5ACFEB7E681365315EE11E991C03DA431B65B332AD8F83F6F3AE66C │ │ │ │ -1BF434D3793FB5BCC44E44ACFF2855C2770C4AC678C6ACD6EB071974ACF1AE37 │ │ │ │ -D02C1736C62CC205A2F3488448527EFFA379613A8E6A6D134F4BFBAE6127304D │ │ │ │ -576C900A458E32CD42A4674415E03D8EB5742E71B854B3EDFD271AA214436544 │ │ │ │ -D1BCFD52F439298847E1FA258E5D38384FC85BC4EDC6F9E4431621CF763B137B │ │ │ │ -22DB6E3268B3F78881D55EA7C52ABF23FB73C152B06B708084FE1B00CFE72D9D │ │ │ │ -57B62AEE912E63BBD89D4D13CE896735454F1A16C3D9FB6CDF142CCA9F1C0242 │ │ │ │ -46F62109DF30667DA327F7CF6DC19B880C860C69080597FFCB1793313E202D4F │ │ │ │ -120A7C6B052C2EB7597B71B0985D24FDD2D3918393BF720E762C5DBBC2BB1E91 │ │ │ │ -B04560364EFE5B16EB068E0560FB932E0C617CFB95A166388E99AC4CB020F5BC │ │ │ │ -E24BB77352D7C3B21C37D404051A70FFFA0F726C35501A1FBB411F832CE46A2E │ │ │ │ -B424E26BD4 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFD8CDE285A2827F4659E339460ABEF319FE44D7A91E93CA309E9266E03DA │ │ │ │ +735F5DEF3920C01189BB63C2BD7ED0B92EABB481F123641477CDCCAB9751FB7B │ │ │ │ +F67DA7CE6EB134BC10D0228562BA5A6BFE6940907EF030ABF9EC4A8A0DFEF73D │ │ │ │ +3289E8CB4DC37694F5A656A935D92C72B3D82B012F578A27711B161DE9652ADC │ │ │ │ +71C51E743E4E9A7C6CF6FF16C5D65C1F60954C0858B48FAAC4FBB21988E2A934 │ │ │ │ +AC50C097DDF42C416359647D79F830E1430FB9BB803451A6732D1B5CAB817C1B │ │ │ │ +673B3077D9A180F184267E9990C087BCDEBC8EB8B889934DD0EB63C2EBCED4A3 │ │ │ │ +83A0D6A365412CFF610EF7BD5F82B02AA293F1D2F868768CDE9B801C929B4A38 │ │ │ │ +64E20C70BC4041F837AD15423517F7336A067D140A2C7906DC5D45885FFB3B69 │ │ │ │ +724E5B9B138BD15A9359EB25D14BC4193E529D1A49FEB0DC1015BF94CEBBD5E0 │ │ │ │ +EA148B185C53E12BD9FA6DBC097D789A73E832F02F55080D8ED6087F5952EA78 │ │ │ │ +250A4C65CE4C4013554A031446D2092D813C4CB1A605D97A40CF867F656ECD1C │ │ │ │ +C23F80230AD1E449AA8B4007134F71156719206441D92B1A6DD25101ABF69F70 │ │ │ │ +538CCCE216376E1BD6E423986BD4E83B1975B15092D4E19F885672F9E7C02485 │ │ │ │ +E02DA0F4243D324A5983D1D46444E5F6573F699E4F2A3395EF0EB7808B7D4D62 │ │ │ │ +690FD033E93AA553082273636503DA4BBBBFA6D127CE10424DD1DDF4F879305C │ │ │ │ +14F64180E7851D091B3220DFC70CAA44716B8F7F0C6FBEDB167801DED77F9E69 │ │ │ │ +E9B31CD2D8044DB946E511162976C34DE27F2BB974B70509005562A0A21317B7 │ │ │ │ +46D826A31C476C8F9A778F941FF5956BA2D765B1AD0AC4BC7AE1CD8A2A81F039 │ │ │ │ +06EB13EBD099BBDB2EBDB54D459C288EA69FB0018CE9255BBFB08C1F90FF30BD │ │ │ │ +C971DA7FDB193281B8F967F21AB42F13F36085AC9EC0D6B6B448C8F289B0AD70 │ │ │ │ +DB521A4755ECF9CA594741E5C674220C21C265EF3BAE594197B00048C8D4DB73 │ │ │ │ +4AC47B6A86EAC7EECD042C8E23C347F8C9FCB870473C1FBD91C298174BCBF1A9 │ │ │ │ +7B366C570A9A04A433495FBC9FD0FFC22A0E8181424C0F038ED97AD5054B10CC │ │ │ │ +1CD5BA0719DD0B4F4F18932AE87FF8B8C1CF0C7482B7847049761505DCD85146 │ │ │ │ +4EE5CB53993A9449CD05233E961BD49AE92D308E2065D6C6BF038538039AA56A │ │ │ │ +C59D424BE3175427337E16892D3920598D518423E145C6B2DD3881F338845F0D │ │ │ │ +16C47AA0D9C2D6DE99C6A302D567ACD6F98BF38223F1890E099C8F93348FFDAA │ │ │ │ +C2D3440187C8FED87C1A891EF11EFA7168EC47F72AF8BC5BE1B88B1084E704F5 │ │ │ │ +82099F1A79E556D94CC38851C97DC3864945A7470F1389BCF608BADAE45B236D │ │ │ │ +2934A20FFBCF169BF84DF496B07E7F1D9002E62B030337642804403DF7E4B3FF │ │ │ │ +C5A421EE0033BA06C50A041FBFE8F81AFC145664E2976505EB14859CF0377EBA │ │ │ │ +EA604CF8BFB5F9ADB9A7ED56E6F0F919E791D57C7232241C892EAC3E55D2D03B │ │ │ │ +FF43B9DAB7B1D8C6588D6D3503F49E80121E52254431B308752A936E0B51124D │ │ │ │ +C7F23C316BA6FA73E6BC47EB9550003E1393C68360067C094C65C0DD17214FA0 │ │ │ │ +45FF0F9C3E0AE4C81093752D23EA95E163C98EC04873ECE3FB0882567329525C │ │ │ │ +0A3937B16CA72B5EB6D2DC10C1B485C0BA939587AFEBB6D837A40401C666BC1C │ │ │ │ +F3344FBAB3E48BEE18F3AF5CDB33BA63778D373A851333C8C34E2F35AB94E8B4 │ │ │ │ +FF7E62A92ED83B872894E0A17209E14CF61269204A35A4BC8C7EE4B16F19E91F │ │ │ │ +669C4EFCECB187F6C7FAF92B4E14E400C6B3C81679D4A7196D66DB1E897DDA42 │ │ │ │ +47CC2848B46D581A95EEF85AB528E8CDEEB275D1E1FE197A3A08D36406E2DADF │ │ │ │ +A87D817AF18B5525F89B7C2E584F4A1254A1FC71E749999A2152870631A69CB6 │ │ │ │ +666EBD6BB3366A598F6592040D0E82B9D866DF0A76C362E76C2804D108A0C148 │ │ │ │ +51F42E9E0ABD52CC2D02B156B63AFD03313AFC80EACC83DF9B59F05FD798951D │ │ │ │ +FCF5335636DFC6561910ACE0AEC47F74CFD302EB7421D28AAAC8FF82B7CE2B2A │ │ │ │ +340B8BCE09F57BFCBC77F91096D97A85726E68846398C8C9C8D3A65A252AE8FB │ │ │ │ +166750C244963BC61E2236BAAC529FABD6FC774550096374A8DB81B6AF1EA843 │ │ │ │ +27F671C0045D629E3734EF037447C4763514FD1C4AE858A494AFC23A64C82149 │ │ │ │ +F4C0A7023B3865B84FAC2DC88D1553DCEBA3D8FB5DBC1103123F6B8CB5B3A399 │ │ │ │ +B665B26B001BF1E4BFABE42BFF6B02D69FA88D5CBCA5A11D5B48CFB4EAE60558 │ │ │ │ +5FBE254AD3BE01761CD4995E766E172D768621223505FD6AA8F89FC042EB814C │ │ │ │ +34373DAEC4FAAF71C0752F814154C5299F751CE7E0F9C673D2E448D0204C214C │ │ │ │ +C04DC34671FBEF72350FFBA263662E86A0D3795E310153AAF4C8A2623E167E6E │ │ │ │ +1F13A9BA485D5DDFC451D691DBA7C49E20354A7AD79D89F7EDE24F0D5B48B27D │ │ │ │ +568D01EF2555504196C09841F5970D8CF6C5D47FFFCF18AE6B2A485342000AAD │ │ │ │ +1F922FBEF7C98E0965609C89240E7B131A59551F57CD5C92097FCE75F5D2778F │ │ │ │ +F9ACF43A3273551363442C8C539205903A835C744A4AA953545506081D3D231A │ │ │ │ +A140E01F280BC42A3C35EDAD5F6B8CE6E51C68E41CA813710864ED880FCE846C │ │ │ │ +1B66D27CC2DBCDC2B1B96A12490BD76D67A415D4A6595CD9B19D3104A83D2C82 │ │ │ │ +C46DCD2C027F0565EDB83E54FF99498194D3140E55E8EE65EBDEAC5409B5616A │ │ │ │ +73141DA2D581E300A6057F4301A02DD160AB3E55A116313525122D0608816AA8 │ │ │ │ +4712EEF3D6FE8C893DF37D │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -4749,16 +4739,16 @@ │ │ │ │ @start /Fa 173[50 8[29 3[49 69[{}3 58.1154 /CMMI7 rf │ │ │ │ /Fb 133[50 59 3[62 44 44 46 1[62 56 62 93 31 2[31 62 │ │ │ │ 56 1[51 62 50 1[54 11[86 5[84 1[106 3[42 1[88 2[86 1[80 │ │ │ │ 11[56 56 56 56 56 56 2[31 37 45[{}33 99.6264 /CMBX12 │ │ │ │ rf /Fc 175[62 8[62 4[62 66[{}3 119.552 /CMTT12 rf /Fd │ │ │ │ 134[71 2[71 75 52 53 55 1[75 67 75 112 2[41 37 75 67 │ │ │ │ 41 61 75 60 75 65 13[75 2[92 11[103 16[67 67 67 2[37 │ │ │ │ -46[{}27 119.552 /CMBX12 rf /Fe 134[44 3[46 2[33 12[37 │ │ │ │ -2[46 42 26[54 11[23 42 4[42 1[42 1[42 3[23 44[{}13 83.022 │ │ │ │ +46[{}27 119.552 /CMBX12 rf /Fe 139[32 1[33 2[42 9[37 │ │ │ │ +1[37 46 18[65 20[23 4[42 42 1[42 1[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 │ │ │ │ @@ -4907,30 +4897,29 @@ │ │ │ │ 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 1210 4 v │ │ │ │ -1375 w Fl(BPG)27 b Fe(:)h Fk(DRAFT)f Fe(F)-7 b(ebruary)26 │ │ │ │ -b(29,)h(2024)p 2690 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 1248 4 v │ │ │ │ +1413 w Fl(BPG)26 b Fe(:)i Fk(DRAFT)f Fe(Octob)r(er)g(4,)g(2025)p │ │ │ │ +2653 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 │ │ │ │ @@ -5038,17 +5027,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 1210 4 v 1376 100 a Fl(BPG)26 │ │ │ │ -b Fe(:)i Fk(DRAFT)110 b Fe(F)-7 b(ebruary)27 b(29,)g(2024)p │ │ │ │ -2651 100 V 1210 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 1248 4 v 1414 100 a Fl(BPG)26 │ │ │ │ +b Fe(:)i Fk(DRAFT)110 b Fe(Octob)r(er)27 b(4,)g(2025)p │ │ │ │ +2613 100 V 1248 w Fm(3)0 390 y(la)n(y)n(ers)e(to)i(the)g(wide)g │ │ │ │ (separator,)e(but)j(the)f(con)n(v)n(erse)e(do)r(es)h(not)h(hold.)37 │ │ │ │ b(W)-7 b(e)27 b(w)n(ere)f(then)i(free)e(to)h(examine)g(wide)g │ │ │ │ (separators)0 490 y(that)f(had)f(more)g(than)g(t)n(w)n(o)g(la)n(y)n │ │ │ │ (ers)e(from)i(whic)n(h)g(to)h(\014nd)g(a)f(minimal)g(w)n(eigh)n(t)g │ │ │ │ (separator.)34 b(It)26 b(turns)f(out)g(that)h(three)f(la)n(y)n(ers)0 │ │ │ │ 589 y(is)i(b)r(etter)h(than)g(t)n(w)n(o,)f(in)h(practice.)125 │ │ │ │ 720 y(W)-7 b(e)34 b(did)g(write)f(a)g(separate)f(ob)5 │ │ │ │ @@ -5109,55 +5098,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 1210 4 v │ │ │ │ -1375 w Fl(BPG)27 b Fe(:)h Fk(DRAFT)f Fe(F)-7 b(ebruary)26 │ │ │ │ -b(29,)h(2024)p 2690 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 1248 4 v │ │ │ │ +1413 w Fl(BPG)26 b Fe(:)i Fk(DRAFT)f Fe(Octob)r(er)g(4,)g(2025)p │ │ │ │ +2653 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 │ │ │ │ @@ -5203,17 +5192,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 1210 4 v 1376 100 a Fl(BPG)26 │ │ │ │ -b Fe(:)i Fk(DRAFT)110 b Fe(F)-7 b(ebruary)27 b(29,)g(2024)p │ │ │ │ -2651 100 V 1210 w Fm(5)0 390 y Fb(1.2.5)112 b(Dulmage-Mendelsohn)42 │ │ │ │ +TeXDict begin 5 4 bop 83 100 1248 4 v 1414 100 a Fl(BPG)26 │ │ │ │ +b Fe(:)i Fk(DRAFT)110 b Fe(Octob)r(er)27 b(4,)g(2025)p │ │ │ │ +2613 100 V 1248 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 │ │ │ │ @@ -5308,34 +5297,34 @@ │ │ │ │ 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 1210 4 v │ │ │ │ -1375 w Fl(BPG)27 b Fe(:)h Fk(DRAFT)f Fe(F)-7 b(ebruary)26 │ │ │ │ -b(29,)h(2024)p 2690 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(ted)f(and)g(zero)g(is)g │ │ │ │ -(returned.)101 922 y(4.)42 b Fl(int)g(BPG_writeToFile)37 │ │ │ │ -b(\()43 b(BPG)g(*bpg,)e(char)h(*fn)h(\))g(;)208 1055 │ │ │ │ -y Fm(This)20 b(metho)r(d)h(writes)g(a)f Fl(BPG)g Fm(ob)5 │ │ │ │ -b(ject)20 b(to)h(a)f(\014le.)35 b(The)20 b(metho)r(d)i(tries)e(to)g(op) │ │ │ │ -r(en)h(the)g(\014le)g(and)g(if)g(it)g(is)g(successful,)g(it)h(then)208 │ │ │ │ -1154 y(calls)h Fl(BPG)p 526 1154 27 4 v 30 w(writeFromFormatte)o(dF)o │ │ │ │ -(ile)o(\(\))18 b Fm(or)23 b Fl(BPG)p 1857 1154 V 30 w(writeFromBinaryF) │ │ │ │ -o(il)o(e\(\))o Fm(,)c(closes)k(the)i(\014le)f(and)g(returns)g(the)208 │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fm(6)p 125 100 1248 4 v │ │ │ │ +1413 w Fl(BPG)26 b Fe(:)i Fk(DRAFT)f Fe(Octob)r(er)g(4,)g(2025)p │ │ │ │ +2653 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 │ │ │ │ +(ted)f(and)g(zero)g(is)g(returned.)101 922 y(4.)42 b │ │ │ │ +Fl(int)g(BPG_writeToFile)37 b(\()43 b(BPG)g(*bpg,)e(char)h(*fn)h(\))g │ │ │ │ +(;)208 1055 y Fm(This)20 b(metho)r(d)h(writes)g(a)f Fl(BPG)g │ │ │ │ +Fm(ob)5 b(ject)20 b(to)h(a)f(\014le.)35 b(The)20 b(metho)r(d)i(tries)e │ │ │ │ +(to)g(op)r(en)h(the)g(\014le)g(and)g(if)g(it)g(is)g(successful,)g(it)h │ │ │ │ +(then)208 1154 y(calls)h Fl(BPG)p 526 1154 27 4 v 30 │ │ │ │ +w(writeFromFormatte)o(dF)o(ile)o(\(\))18 b Fm(or)23 b │ │ │ │ +Fl(BPG)p 1857 1154 V 30 w(writeFromBinaryF)o(il)o(e\(\))o │ │ │ │ +Fm(,)c(closes)k(the)i(\014le)f(and)g(returns)g(the)208 │ │ │ │ 1254 y(v)-5 b(alue)27 b(returned)g(from)g(the)h(called)g(routine.)208 │ │ │ │ 1387 y Fk(Err)l(or)f(che)l(cking:)38 b Fm(If)25 b Fl(bpg)f │ │ │ │ Fm(or)g Fl(fn)g Fm(is)h Fl(NULL)p Fm(,)e(or)h(if)i Fl(fn)e │ │ │ │ Fm(is)h(not)g(of)g(the)g(form)g Fl(*.bpgf)d Fm(\(for)j(a)f(formatted)h │ │ │ │ (\014le\))g(or)f Fl(*.bpgb)208 1487 y Fm(\(for)j(a)g(binary)g │ │ │ │ (\014le\),)h(an)f(error)f(message)g(is)i(prin)n(ted)f(and)h(the)g │ │ │ │ (metho)r(d)g(returns)f(zero.)101 1653 y(5.)42 b Fl(int)g │ │ │ │ @@ -5401,17 +5390,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 1210 4 v 1376 100 a Fl(BPG)26 │ │ │ │ -b Fe(:)i Fk(DRAFT)110 b Fe(F)-7 b(ebruary)27 b(29,)g(2024)p │ │ │ │ -2651 100 V 1210 w Fm(7)307 390 y Fh(\210)42 b Fm(The)33 │ │ │ │ +TeXDict begin 7 6 bop 83 100 1248 4 v 1414 100 a Fl(BPG)26 │ │ │ │ +b Fe(:)i Fk(DRAFT)110 b Fe(Octob)r(er)27 b(4,)g(2025)p │ │ │ │ +2613 100 V 1248 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 February 29, 2024 │ │ │ │ │ + 2 BPG : DRAFT October 4, 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 February 29, 2024 3 │ │ │ │ │ + BPG : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 4 BPG : DRAFT October 4, 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 February 29, 2024 5 │ │ │ │ │ + BPG : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 6 BPG : DRAFT October 4, 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 February 29, 2024 7 │ │ │ │ │ + BPG : DRAFT October 4, 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 2024.02.29:1857 │ │ │ │ +%DVIPSSource: TeX output 2025.10.04:1733 │ │ │ │ %%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 │ │ │ │ @@ -2518,23 +2518,23 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 50 /two put │ │ │ │ dup 52 /four put │ │ │ │ -dup 57 /nine put │ │ │ │ +dup 53 /five put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 70 /F put │ │ │ │ -dup 97 /a put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ +dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ -dup 117 /u put │ │ │ │ -dup 121 /y put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -2708,95 +2708,85 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA647CD0E2539DFAD9604486DCCFA49 │ │ │ │ -AC96130D106A8F8387633622C3809400D6E8FF9D60877C743502E4D211CEBF62 │ │ │ │ -9A6F91045C22D5D20C5FF677D89983D02E5EE26C71A9EAE0E7C52465DA5A149A │ │ │ │ -9B731C27EC8366BC3E841C0CAE49A33DE164A857365B17B09CAD121C47A980CB │ │ │ │ -C75E1030F6C394EDB46C54B46880D2344127B903FB22684C9CAACE6053DC3BFA │ │ │ │ -4E47C565ECAF19C4295A11BD68CA6D45B5738B932BB3690A8C712904C49C1636 │ │ │ │ -A7702075F2FEA8DB3EB3A3C1216BB769DD0BAF4507A18E3052F2C846B0797933 │ │ │ │ -8CE9BB2DB5DFADAF1B0FC3A22BAB82A0D5D290F7AD950013CFA465BE11C1076D │ │ │ │ -5833FF92321FBF90D9229D3BA09DD18EEC44D9FCF8FCF63CC09D2977BFA798B6 │ │ │ │ -47FB047EA6AF69C7DE570176F5B6C0FED74DEDBF7DDF49550DD84BA14AC09423 │ │ │ │ -F70D5B14F0F8588F1E2FFE0DFE0760E77A9E39DEDAC5C5AE3760722C029B916D │ │ │ │ -96A2A7D1DD6A61F90B4B9806314A668EB7A0E107A3527310A240490453CC18D7 │ │ │ │ -3793B4CF3CE13EA332E7F5C2BACF85AC75FE84693B966BB0F6FB9A179A331C4E │ │ │ │ -55E9EF30E2734E44A88E053CD5E650D7E529E94CB7F8B733E68315ACAC5BEFC5 │ │ │ │ -3FE4F585F875310267865679AB381125C31E9AEB7226DC9F18DA80A9DE2F38A4 │ │ │ │ -51B8F9D5B2FBA0F50D53AE6212AFE41466A594F7A303B4E82F1493C0B8D65756 │ │ │ │ -BE6AF2931E5ADA5CE7D51CB5B1EC916C6C6D674808939331CA66F8181DD2B112 │ │ │ │ -1A12198CCCB6BBF1D40C803E794B65241ACE1E0D30CCA1C6F2D3E1415B98726B │ │ │ │ -9BA303BE2C4C276108CC78C093F1CC85CA454CC38535D1DEBFA341D84E8A5DDF │ │ │ │ -D53D8DD0F4A812B5BA63871BEB3BCE93FBC77AD395914E2CD757546C2BE2D641 │ │ │ │ -FDB12258E1E1D10E1B963EABB265F2C8B2547D48963E1AD3B223B666B46915A1 │ │ │ │ -157F5EA0AB8D8411C07AA2EB5D0EF1A1BA6D81C47473A3D3D6287104C7BF61F8 │ │ │ │ -3BDB64995DE96A65BF2B7288C51ADAA3D373A95C40D5240C5FF397551554AA9E │ │ │ │ -C89C7E45AA7738503CB058EF6AD5052CC78E4445C810C250BF25394B8D7DE82E │ │ │ │ -315C9CCD6E1E9150EC79EE0F354C668AE199C1AFF39C67337A86CB932E8D64E9 │ │ │ │ -389FF3CC08B538492DEED017686DBB9BDEA30FE67FB4EBDB3627C16FD15F243A │ │ │ │ -7FDEB310EFC940E57726E94340472F2C452815927ADE21578C959890216BE504 │ │ │ │ -225BE4B4D2E3B19F5E06B5A0B25AF168C3A2B26F599A829F89C16BD2026E8CC9 │ │ │ │ -8FB3CBB830C3E36C099071A70D0B8834FF2C17364EB50D5C71440CC7BFE02321 │ │ │ │ -8C6ECAC2F7EC1BE39077DB0E8B2B251626A71FD038EB2CF1FC254D98C1535CAA │ │ │ │ -A8C987BC266482BD860A333048E1EDB3DD40A6ECD6DA0088AD9B9640202D89AA │ │ │ │ -0BB9A0ADF63491E67F2E97E35942D77E59B9B8AB0ED28B022EE5CD3449FC5B7A │ │ │ │ -19E38845B488F97D155C4312885E29537EAE97719C65845663480CE79DE8F037 │ │ │ │ -68995C0928FE8AFBEE554F01381EE5187578DF5D2542F26F66A599EE8ECC1F68 │ │ │ │ -FBADF3C2BA968C3CEB86675CF9A6CFD736E1422800D270417D497903DE87F2AE │ │ │ │ -938E39E120E9D3079F512E545E0E2616B84E81FE41392184F96818A7C86BF541 │ │ │ │ -F2E67C48CA56DA838C9FA0FAD538073B9F26319140D1F80EEEBCA190DE660A31 │ │ │ │ -457CAC16E92F87449A3734F9EA751588514865B58DC073658C8A857B5398AAC7 │ │ │ │ -3DC11E069996EF74A3189A07630D5DB87C5E028CD193C086B4D0E8BABC4F2393 │ │ │ │ -235EC96091B16C4A6D97DA1BD30A2D2E71F55869223CA66AD12448B668685F6E │ │ │ │ -06E7888D7F20045C662C4F7994CC7E1CE9AAC33A026716AA0551DF12343F0E22 │ │ │ │ -6E9F4B21C90406CC4997601194EF37A973221D1F4D73DD5666BD297F621C92AA │ │ │ │ -E3F698BC1146ADE754C4120EDF5B3E974D75A237E51DB49D52CD6CC7C9E8BD2D │ │ │ │ -E6849DF8F4DBA86C655D0C57CB54836C8A841C1D814F6B493F96ADBFCAD78D3B │ │ │ │ -430C58EF169950851B6A0B46411488B1A6F6974832787A24C0CDDBE27996EFB1 │ │ │ │ -DB341FA34B1DC6238D978D1E1D34AF3FB375ED6DA9C88699F195C88A54622F7C │ │ │ │ -36DAFC663D85660E756733A7E22F20C6A5D91F06087CAD10F7217BD33F343DC6 │ │ │ │ -F5EB9F16FE763672243EE6AE5CB6063A1D64670E1C059DD52134974E27D9D89C │ │ │ │ -BC658FCD814F20703D610C978FDCD6E2AEA31C18D1A310F215B28199F66C87DB │ │ │ │ -3B23980A393E1DD77AFA3045EDB6942505F3CF6204315A14E5B6BF2E96F3BB1F │ │ │ │ -628D24AC1893BC7DAEF3AA63F2116837F31DB90D872CBD9E5C48BCDEE781D20D │ │ │ │ -C6553D2D15F4E8438A9D1C7CEE1B72BD6AA08DC0AFEAF8B4DC1038707EE4A1BF │ │ │ │ -3D84460E60AF90F55002C1D8EBF0700F7EC3EFC944BEA78D0E0536F3AA6D9A84 │ │ │ │ -604A781AC5ACFEB7E681365315EE11E991C03DA431B65B332AD8F83F6F3AE66C │ │ │ │ -1BF434D3793FB5BCC44E44ACFF2855C2770C4AC678C6ACD6EB071974ACF1AE37 │ │ │ │ -D02C1736C62CC205A2F3488448527EFFA379613A8E6A6D134F4BFBAE6127304D │ │ │ │ -576C900A458E32CD42A4674415E03D8EB5742E71B854B3EDFD271AA214436544 │ │ │ │ -D1BCFD52F439298847E1FA258E5D38384FC85BC4EDC6F9E4431621CF763B137B │ │ │ │ -22DB6E3268B3F78881D55EA7C52ABF23FB73C152B06B708084FE1B00CFE72D9D │ │ │ │ -57B62AEE912E63BBD89D4D13CE896735454F1A16C3D9FB6CDF142CCA9F1C0242 │ │ │ │ -46F62109DF30667DA327F7CF6DC19B880C860C69080597FFCB1793313E202D4F │ │ │ │ -120A7C6B052C2EB7597B71B0985D24FDD2D3918393BF720E762C5DBBC2BB1E91 │ │ │ │ -B04560364EFE5B16EB068E0560FB932E0C617CFB95A166388E99AC4CB020F5BC │ │ │ │ -E24BB77352D7C3B21C37D404051A70FFFA0F726C35501A1FBB411F832CE46A2E │ │ │ │ -B424E26BD4 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFD8CDE285A2827F4659E339460ABEF319FE44D7A91E93CA309E9266E03DA │ │ │ │ +735F5DEF3920C01189BB63C2BD7ED0B92EABB481F123641477CDCCAB9751FB7B │ │ │ │ +F67DA7CE6EB134BC10D0228562BA5A6BFE6940907EF030ABF9EC4A8A0DFEF73D │ │ │ │ +3289E8CB4DC37694F5A656A935D92C72B3D82B012F578A27711B161DE9652ADC │ │ │ │ +71C51E743E4E9A7C6CF6FF16C5D65C1F60954C0858B48FAAC4FBB21988E2A934 │ │ │ │ +AC50C097DDF42C416359647D79F830E1430FB9BB803451A6732D1B5CAB817C1B │ │ │ │ +673B3077D9A180F184267E9990C087BCDEBC8EB8B889934DD0EB63C2EBCED4A3 │ │ │ │ +83A0D6A365412CFF610EF7BD5F82B02AA293F1D2F868768CDE9B801C929B4A38 │ │ │ │ +64E20C70BC4041F837AD15423517F7336A067D140A2C7906DC5D45885FFB3B69 │ │ │ │ +724E5B9B138BD15A9359EB25D14BC4193E529D1A49FEB0DC1015BF94CEBBD5E0 │ │ │ │ +EA148B185C53E12BD9FA6DBC097D789A73E832F02F55080D8ED6087F5952EA78 │ │ │ │ +250A4C65CE4C4013554A031446D2092D813C4CB1A605D97A40CF867F656ECD1C │ │ │ │ +C23F80230AD1E449AA8B4007134F71156719206441D92B1A6DD25101ABF69F70 │ │ │ │ +538CCCE216376E1BD6E423986BD4E83B1975B15092D4E19F885672F9E7C02485 │ │ │ │ +E02DA0F4243D324A5983D1D46444E5F6573F699E4F2A3395EF0EB7808B7D4D62 │ │ │ │ +690FD033E93AA553082273636503DA4BBBBFA6D127CE10424DD1DDF4F879305C │ │ │ │ +14F64180E7851D091B3220DFC70CAA44716B8F7F0C6FBEDB167801DED77F9E69 │ │ │ │ +E9B31CD2D8044DB946E511162976C34DE27F2BB974B70509005562A0A21317B7 │ │ │ │ +46D826A31C476C8F9A778F941FF5956BA2D765B1AD0AC4BC7AE1CD8A2A81F039 │ │ │ │ +06EB13EBD099BBDB2EBDB54D459C288EA69FB0018CE9255BBFB08C1F90FF30BD │ │ │ │ +C971DA7FDB193281B8F967F21AB42F13F36085AC9EC0D6B6B448C8F289B0AD70 │ │ │ │ +DB521A4755ECF9CA594741E5C674220C21C265EF3BAE594197B00048C8D4DB73 │ │ │ │ +4AC47B6A86EAC7EECD042C8E23C347F8C9FCB870473C1FBD91C298174BCBF1A9 │ │ │ │ +7B366C570A9A04A433495FBC9FD0FFC22A0E8181424C0F038ED97AD5054B10CC │ │ │ │ +1CD5BA0719DD0B4F4F18932AE87FF8B8C1CF0C7482B7847049761505DCD85146 │ │ │ │ +4EE5CB53993A9449CD05233E961BD49AE92D308E2065D6C6BF038538039AA56A │ │ │ │ +C59D424BE3175427337E16892D3920598D518423E145C6B2DD3881F338845F0D │ │ │ │ +16C47AA0D9C2D6DE99C6A302D567ACD6F98BF38223F1890E099C8F93348FFDAA │ │ │ │ +C2D3440187C8FED87C1A891EF11EFA7168EC47F72AF8BC5BE1B88B1084E704F5 │ │ │ │ +82099F1A79E556D94CC38851C97DC3864945A7470F1389BCF608BADAE45B236D │ │ │ │ +2934A20FFBCF169BF84DF496B07E7F1D9002E62B030337642804403DF7E4B3FF │ │ │ │ +C5A421EE0033BA06C50A041FBFE8F81AFC145664E2976505EB14859CF0377EBA │ │ │ │ +EA604CF8BFB5F9ADB9A7ED56E6F0F919E791D57C7232241C892EAC3E55D2D03B │ │ │ │ +FF43B9DAB7B1D8C6588D6D3503F49E80121E52254431B308752A936E0B51124D │ │ │ │ +C7F23C316BA6FA73E6BC47EB9550003E1393C68360067C094C65C0DD17214FA0 │ │ │ │ +45FF0F9C3E0AE4C81093752D23EA95E163C98EC04873ECE3FB0882567329525C │ │ │ │ +0A3937B16CA72B5EB6D2DC10C1B485C0BA939587AFEBB6D837A40401C666BC1C │ │ │ │ +F3344FBAB3E48BEE18F3AF5CDB33BA63778D373A851333C8C34E2F35AB94E8B4 │ │ │ │ +FF7E62A92ED83B872894E0A17209E14CF61269204A35A4BC8C7EE4B16F19E91F │ │ │ │ +669C4EFCECB187F6C7FAF92B4E14E400C6B3C81679D4A7196D66DB1E897DDA42 │ │ │ │ +47CC2848B46D581A95EEF85AB528E8CDEEB275D1E1FE197A3A08D36406E2DADF │ │ │ │ +A87D817AF18B5525F89B7C2E584F4A1254A1FC71E749999A2152870631A69CB6 │ │ │ │ +666EBD6BB3366A598F6592040D0E82B9D866DF0A76C362E76C2804D108A0C148 │ │ │ │ +51F42E9E0ABD52CC2D02B156B63AFD03313AFC80EACC83DF9B59F05FD798951D │ │ │ │ +FCF5335636DFC6561910ACE0AEC47F74CFD302EB7421D28AAAC8FF82B7CE2B2A │ │ │ │ +340B8BCE09F57BFCBC77F91096D97A85726E68846398C8C9C8D3A65A252AE8FB │ │ │ │ +166750C244963BC61E2236BAAC529FABD6FC774550096374A8DB81B6AF1EA843 │ │ │ │ +27F671C0045D629E3734EF037447C4763514FD1C4AE858A494AFC23A64C82149 │ │ │ │ +F4C0A7023B3865B84FAC2DC88D1553DCEBA3D8FB5DBC1103123F6B8CB5B3A399 │ │ │ │ +B665B26B001BF1E4BFABE42BFF6B02D69FA88D5CBCA5A11D5B48CFB4EAE60558 │ │ │ │ +5FBE254AD3BE01761CD4995E766E172D768621223505FD6AA8F89FC042EB814C │ │ │ │ +34373DAEC4FAAF71C0752F814154C5299F751CE7E0F9C673D2E448D0204C214C │ │ │ │ +C04DC34671FBEF72350FFBA263662E86A0D3795E310153AAF4C8A2623E167E6E │ │ │ │ +1F13A9BA485D5DDFC451D691DBA7C49E20354A7AD79D89F7EDE24F0D5B48B27D │ │ │ │ +568D01EF2555504196C09841F5970D8CF6C5D47FFFCF18AE6B2A485342000AAD │ │ │ │ +1F922FBEF7C98E0965609C89240E7B131A59551F57CD5C92097FCE75F5D2778F │ │ │ │ +F9ACF43A3273551363442C8C539205903A835C744A4AA953545506081D3D231A │ │ │ │ +A140E01F280BC42A3C35EDAD5F6B8CE6E51C68E41CA813710864ED880FCE846C │ │ │ │ +1B66D27CC2DBCDC2B1B96A12490BD76D67A415D4A6595CD9B19D3104A83D2C82 │ │ │ │ +C46DCD2C027F0565EDB83E54FF99498194D3140E55E8EE65EBDEAC5409B5616A │ │ │ │ +73141DA2D581E300A6057F4301A02DD160AB3E55A116313525122D0608816AA8 │ │ │ │ +4712EEF3D6FE8C893DF37D │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -5385,16 +5375,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 134[48 3[51 2[36 │ │ │ │ -12[40 2[51 45 26[59 11[25 45 4[45 1[45 1[45 3[25 44[{}13 │ │ │ │ +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 4[45 45 1[45 1[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 │ │ │ │ @@ -5522,34 +5512,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 1135 4 v │ │ │ │ -1317 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(F)-8 b(ebruary)30 │ │ │ │ -b(29,)i(2024)p 2765 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 1176 4 v │ │ │ │ +1358 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(Octob)s(er)h(4,)g(2025)p │ │ │ │ +2724 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 │ │ │ │ @@ -5715,17 +5705,17 @@ │ │ │ │ b(is)f(inheren)m(tly)g(a)h(serial,)g(single)g(threaded)e(ob)5 │ │ │ │ b(ject,)34 b(meaning)e(it)g(is)g(designed)g(so)g(that)h(only)0 │ │ │ │ 5407 y(one)h(thread)g(or)f(pro)s(cess)h(\\o)m(wns")g(or)g(op)s(erates)g │ │ │ │ (on)g(a)g(particular)g 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 1135 4 v 1316 100 a Fm(Chv)30 │ │ │ │ -b Fi(:)40 b Fl(DRAFT)122 b Fi(F)-8 b(ebruary)30 b(29,)h(2024)p │ │ │ │ -2718 100 V 1135 w Fn(3)0 399 y(of)38 b(comm)m(unication.)63 │ │ │ │ +TeXDict begin 3 2 bop 91 100 1176 4 v 1358 100 a Fm(Chv)29 │ │ │ │ +b Fi(:)41 b Fl(DRAFT)121 b Fi(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2677 100 V 1176 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 │ │ │ │ @@ -5794,19 +5784,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 1135 4 v │ │ │ │ -1317 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(F)-8 b(ebruary)30 │ │ │ │ -b(29,)i(2024)p 2765 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 1176 4 v │ │ │ │ +1358 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(Octob)s(er)h(4,)g(2025)p │ │ │ │ +2724 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 │ │ │ │ @@ -5864,17 +5854,17 @@ │ │ │ │ (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 1135 4 v 1316 100 a Fm(Chv)30 │ │ │ │ -b Fi(:)40 b Fl(DRAFT)122 b Fi(F)-8 b(ebruary)30 b(29,)h(2024)p │ │ │ │ -2718 100 V 1135 w Fn(5)0 399 y Fc(1.2.2)112 b(Instance)38 │ │ │ │ +TeXDict begin 5 4 bop 91 100 1176 4 v 1358 100 a Fm(Chv)29 │ │ │ │ +b Fi(:)41 b Fl(DRAFT)121 b Fi(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2677 100 V 1176 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 │ │ │ │ @@ -5934,25 +5924,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 1135 4 v │ │ │ │ -1317 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(F)-8 b(ebruary)30 │ │ │ │ -b(29,)i(2024)p 2765 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 1176 4 v │ │ │ │ +1358 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(Octob)s(er)h(4,)g(2025)p │ │ │ │ +2724 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 │ │ │ │ @@ -6024,17 +6014,17 @@ │ │ │ │ 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 1135 4 v 1316 100 a Fm(Chv)30 │ │ │ │ -b Fi(:)40 b Fl(DRAFT)122 b Fi(F)-8 b(ebruary)30 b(29,)h(2024)p │ │ │ │ -2718 100 V 1135 w Fn(7)66 399 y(15.)46 b Fm(Chv_locationOfComplexEntr)o │ │ │ │ +TeXDict begin 7 6 bop 91 100 1176 4 v 1358 100 a Fm(Chv)29 │ │ │ │ +b Fi(:)41 b Fl(DRAFT)121 b Fi(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2677 100 V 1176 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 │ │ │ │ @@ -6107,30 +6097,29 @@ │ │ │ │ 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 1135 4 v │ │ │ │ -1317 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(F)-8 b(ebruary)30 │ │ │ │ -b(29,)i(2024)p 2765 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 1176 4 v │ │ │ │ +1358 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(Octob)s(er)h(4,)g(2025)p │ │ │ │ +2724 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 │ │ │ │ @@ -6186,17 +6175,17 @@ │ │ │ │ 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 1135 4 v 1316 100 a Fm(Chv)30 │ │ │ │ -b Fi(:)40 b Fl(DRAFT)122 b Fi(F)-8 b(ebruary)30 b(29,)h(2024)p │ │ │ │ -2718 100 V 1135 w Fn(9)227 399 y(This)h(metho)s(d)g(returns)g(the)h(lo) │ │ │ │ +TeXDict begin 9 8 bop 91 100 1176 4 v 1358 100 a Fm(Chv)29 │ │ │ │ +b Fi(:)41 b Fl(DRAFT)121 b Fi(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2677 100 V 1176 w Fn(9)227 399 y(This)h(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 │ │ │ │ @@ -6280,33 +6269,32 @@ │ │ │ │ (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 1112 4 │ │ │ │ -v 1295 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2788 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 │ │ │ │ -1093 y(void)g(Chv_updateH)e(\()i(Chv)g(*chv,)f(SubMtx)g(*mtxD,)h │ │ │ │ -(SubMtx)f(*mtxU,)g(DV)h(*tempDV)f(\))h(;)227 1206 y(void)g(Chv_updateN) │ │ │ │ -e(\()i(Chv)g(*chv,)f(SubMtx)g(*mtxL,)h(SubMtx)f(*mtxD,)g(SubMtx)g │ │ │ │ -(*mtxU,)1134 1318 y(DV)h(*tempDV)f(\))i(;)227 1470 y │ │ │ │ -Fn(These)36 b(metho)s(ds)f(p)s(erform)f(an)i(up)s(date)f(to)i(a)f(c)m │ │ │ │ -(hevron)g(during)f(the)h(factorization.)60 b(F)-8 b(or)36 │ │ │ │ -b(a)h(symmetric)227 1582 y(c)m(hevron,)31 b(w)m(e)g(compute)1067 │ │ │ │ -1788 y Fb(T)1120 1803 y Fa(J)6 b Fk(\\)p Fa(@)t(I)f(;J)h │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fn(10)p 182 100 1153 4 │ │ │ │ +v 1336 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(Octob)s(er)g(4,)h(2025) │ │ │ │ +p 2747 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 1093 y(void)g(Chv_updateH)e(\()i(Chv)g(*chv,)f(SubMtx)g │ │ │ │ +(*mtxD,)h(SubMtx)f(*mtxU,)g(DV)h(*tempDV)f(\))h(;)227 │ │ │ │ +1206 y(void)g(Chv_updateN)e(\()i(Chv)g(*chv,)f(SubMtx)g(*mtxL,)h │ │ │ │ +(SubMtx)f(*mtxD,)g(SubMtx)g(*mtxU,)1134 1318 y(DV)h(*tempDV)f(\))i(;) │ │ │ │ +227 1470 y Fn(These)36 b(metho)s(ds)f(p)s(erform)f(an)i(up)s(date)f(to) │ │ │ │ +i(a)f(c)m(hevron)g(during)f(the)h(factorization.)60 b(F)-8 │ │ │ │ +b(or)36 b(a)h(symmetric)227 1582 y(c)m(hevron,)31 b(w)m(e)g(compute) │ │ │ │ +1067 1788 y Fb(T)1120 1803 y Fa(J)6 b Fk(\\)p Fa(@)t(I)f(;J)h │ │ │ │ Fk(\\)p Fa(@)t(I)1564 1788 y Fn(:=)83 b Fb(T)1796 1803 │ │ │ │ y Fa(J)6 b Fk(\\)p Fa(@)t(I)f(;J)h Fk(\\)p Fa(@)t(I)2177 │ │ │ │ 1788 y Fh(\000)20 b Fb(U)2340 1751 y Fa(T)2330 1811 y(I)5 │ │ │ │ b(;J)h Fk(\\)p Fa(@)t(I)2559 1788 y Fb(D)2634 1802 y │ │ │ │ Fa(I)f(;I)2729 1788 y Fb(U)2791 1803 y Fa(I)g(;J)h Fk(\\)p │ │ │ │ Fa(@)t(I)1026 1940 y Fb(T)1079 1955 y Fa(J)g Fk(\\)p │ │ │ │ Fa(@)t(I)f(;@)t(J)h Fk(\\)p Fa(@)t(I)1564 1940 y Fn(:=)83 │ │ │ │ @@ -6388,17 +6376,17 @@ │ │ │ │ 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 1112 4 v 1294 100 a Fm(Chv)29 │ │ │ │ -b Fi(:)41 b Fl(DRAFT)121 b Fi(F)-8 b(ebruary)30 b(29,)h(2024)p │ │ │ │ -2695 100 V 1112 w Fn(11)227 399 y(call)e(to)g(assem)m(ble)g(en)m(tries) │ │ │ │ +TeXDict begin 11 10 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(4,)h(2025)p │ │ │ │ +2654 100 V 1153 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 │ │ │ │ @@ -6486,31 +6474,31 @@ │ │ │ │ (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 1112 │ │ │ │ -4 v 1295 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2788 100 V 227 399 a Fl(Err)-5 │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fn(12)p 182 100 1153 │ │ │ │ +4 v 1336 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(Octob)s(er)g(4,)h │ │ │ │ +(2025)p 2747 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 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(*chv)f(\))i(;)227 1343 y Fn(This)28 b(metho)s(d)h(is)g(used)f │ │ │ │ -(during)f(the)i(factorization)j(of)d(a)g(fron)m(t,)h(p)s(erforming)d(a) │ │ │ │ -j(rank-t)m(w)m(o)g(up)s(date)e(of)h(the)227 1456 y(c)m(hevron.)41 │ │ │ │ +(program)g(exits.)111 1192 y(4.)46 b Fm(int)h(Chv_r2upd)e(\()j(Chv)f │ │ │ │ +(*chv)f(\))i(;)227 1343 y Fn(This)28 b(metho)s(d)h(is)g(used)f(during)f │ │ │ │ +(the)i(factorization)j(of)d(a)g(fron)m(t,)h(p)s(erforming)d(a)j(rank-t) │ │ │ │ +m(w)m(o)g(up)s(date)e(of)h(the)227 1456 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(nonsingular,)g Fm(0)g Fn(otherwise.)227 1607 │ │ │ │ y Fl(Err)-5 b(or)31 b(che)-5 b(cking:)39 b Fn(If)26 b │ │ │ │ Fm(chv)h Fn(is)g Fm(NULL)p Fn(,)f(or)h(if)g(the)g(c)m(hevron)h(is)f │ │ │ │ (nonsymmetric,)g(an)g(error)g(message)h(is)f(prin)m(ted)227 │ │ │ │ 1720 y(and)j(the)h(program)f(exits.)111 1909 y(5.)46 │ │ │ │ b Fm(void)h(Chv_maxabsInChevron)42 b(\()48 b(Chv)f(*chv,)f(int)h(ichv,) │ │ │ │ @@ -6564,17 +6552,17 @@ │ │ │ │ 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 1112 4 v 1294 100 a Fm(Chv)29 │ │ │ │ -b Fi(:)41 b Fl(DRAFT)121 b Fi(F)-8 b(ebruary)30 b(29,)h(2024)p │ │ │ │ -2695 100 V 1112 w Fn(13)227 399 y(This)f(metho)s(d)g(is)g(used)g(to)h │ │ │ │ +TeXDict begin 13 12 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(4,)h(2025)p │ │ │ │ +2654 100 V 1153 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 │ │ │ │ @@ -6654,19 +6642,19 @@ │ │ │ │ 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 1112 │ │ │ │ -4 v 1295 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2788 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 │ │ │ │ +TeXDict begin 14 13 bop 0 100 a Fn(14)p 182 100 1153 │ │ │ │ +4 v 1336 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(Octob)s(er)g(4,)h │ │ │ │ +(2025)p 2747 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 │ │ │ │ (greater)g(than)f(or)g(equal)h(to)g Fm(droptol)d Fn(are)i(copied.)68 │ │ │ │ b(This)227 995 y(metho)s(d)27 b(is)g(called)h(after)f(a)h(fron)m(t)f │ │ │ │ @@ -6753,17 +6741,17 @@ │ │ │ │ 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 1112 4 v 1294 100 a Fm(Chv)29 │ │ │ │ -b Fi(:)41 b Fl(DRAFT)121 b Fi(F)-8 b(ebruary)30 b(29,)h(2024)p │ │ │ │ -2695 100 V 1112 w Fn(15)227 399 y Fl(Err)-5 b(or)35 b(che)-5 │ │ │ │ +TeXDict begin 15 14 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(4,)h(2025)p │ │ │ │ +2654 100 V 1153 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 │ │ │ │ @@ -6833,55 +6821,54 @@ │ │ │ │ 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 1112 │ │ │ │ -4 v 1295 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2788 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(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 b(ject)28 │ │ │ │ -b(with)g(the)g(en)m(tries)h(in)e(the)h(\(2)p Fb(;)15 │ │ │ │ -b Fn(1\))30 b(blo)s(c)m(k)f(of)f(the)227 2810 y(c)m(hevron.)227 │ │ │ │ -2983 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 │ │ │ │ -3215 y(9.)46 b Fm(double)g(Chv_maxabs)f(\()j(Chv)f(*chv)f(\))i(;)227 │ │ │ │ -3388 y Fn(This)30 b(metho)s(d)g(returns)f(the)h(magnitude)h(of)f(the)h │ │ │ │ -(en)m(try)g(of)f(largest)i(magnitude)e(in)g(the)h(ob)5 │ │ │ │ +TeXDict begin 16 15 bop 0 100 a Fn(16)p 182 100 1153 │ │ │ │ +4 v 1336 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(Octob)s(er)g(4,)h │ │ │ │ +(2025)p 2747 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(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 │ │ │ │ +b(ject)28 b(with)g(the)g(en)m(tries)h(in)e(the)h(\(2)p │ │ │ │ +Fb(;)15 b Fn(1\))30 b(blo)s(c)m(k)f(of)f(the)227 2810 │ │ │ │ +y(c)m(hevron.)227 2983 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 3215 y(9.)46 b Fm(double)g(Chv_maxabs)f(\()j(Chv)f(*chv)f │ │ │ │ +(\))i(;)227 3388 y Fn(This)30 b(metho)s(d)g(returns)f(the)h(magnitude)h │ │ │ │ +(of)f(the)h(en)m(try)g(of)f(largest)i(magnitude)e(in)g(the)h(ob)5 │ │ │ │ b(ject.)227 3560 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.)66 3793 │ │ │ │ y(10.)46 b Fm(double)g(Chv_frobNorm)f(\()i(Chv)g(*chv)g(\))g(;)227 │ │ │ │ 3966 y Fn(This)30 b(metho)s(d)g(returns)f(the)h(F)-8 │ │ │ │ b(rob)s(enius)30 b(norm)g(of)g(the)h(c)m(hevron.)227 │ │ │ │ 4138 y Fl(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fn(If)30 │ │ │ │ @@ -6898,17 +6885,17 @@ │ │ │ │ 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 1112 4 v 1294 100 a Fm(Chv)29 │ │ │ │ -b Fi(:)41 b Fl(DRAFT)121 b Fi(F)-8 b(ebruary)30 b(29,)h(2024)p │ │ │ │ -2695 100 V 1112 w Fn(17)0 399 y Fc(1.2.12)113 b(IO)37 │ │ │ │ +TeXDict begin 17 16 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(4,)h(2025)p │ │ │ │ +2654 100 V 1153 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 │ │ │ │ @@ -6968,20 +6955,20 @@ │ │ │ │ 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 1112 │ │ │ │ -4 v 1295 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2788 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 │ │ │ │ +TeXDict begin 18 17 bop 0 100 a Fn(18)p 182 100 1153 │ │ │ │ +4 v 1336 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(Octob)s(er)g(4,)h │ │ │ │ +(2025)p 2747 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 │ │ │ │ b(Use)41 b(the)f(script)h(\014le)g Fm(do)p 1967 779 V │ │ │ │ 34 w(assmbChv)d Fn(for)j(testing.)72 b(When)41 b(the)g(output)f(\014le) │ │ │ │ @@ -7055,17 +7042,17 @@ │ │ │ │ 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 1112 4 v 1294 100 a Fm(Chv)29 │ │ │ │ -b Fi(:)41 b Fl(DRAFT)121 b Fi(F)-8 b(ebruary)30 b(29,)h(2024)p │ │ │ │ -2695 100 V 1112 w Fn(19)337 399 y Fe(\210)45 b Fn(The)35 │ │ │ │ +TeXDict begin 19 18 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(4,)h(2025)p │ │ │ │ +2654 100 V 1153 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 │ │ │ │ @@ -7141,21 +7128,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 1112 │ │ │ │ -4 v 1295 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2788 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 1153 │ │ │ │ +4 v 1336 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(Octob)s(er)g(4,)h │ │ │ │ +(2025)p 2747 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 │ │ │ │ @@ -7223,17 +7210,17 @@ │ │ │ │ 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 1112 4 v 1294 100 a Fm(Chv)29 │ │ │ │ -b Fi(:)41 b Fl(DRAFT)121 b Fi(F)-8 b(ebruary)30 b(29,)h(2024)p │ │ │ │ -2695 100 V 1112 w Fn(21)337 399 y Fe(\210)45 b Fn(The)33 │ │ │ │ +TeXDict begin 21 20 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(4,)h(2025)p │ │ │ │ +2654 100 V 1153 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 │ │ │ │ @@ -7303,19 +7290,19 @@ │ │ │ │ (\(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 1112 │ │ │ │ -4 v 1295 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2788 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 │ │ │ │ +TeXDict begin 22 21 bop 0 100 a Fn(22)p 182 100 1153 │ │ │ │ +4 v 1336 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(Octob)s(er)g(4,)h │ │ │ │ +(2025)p 2747 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:) │ │ │ │ 38 b Fm(Chv)p 2038 1027 V 33 w(swapRowsAndColumns\(\))p │ │ │ │ @@ -7389,17 +7376,17 @@ │ │ │ │ 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 1112 4 v 1294 100 a Fm(Chv)29 │ │ │ │ -b Fi(:)41 b Fl(DRAFT)121 b Fi(F)-8 b(ebruary)30 b(29,)h(2024)p │ │ │ │ -2695 100 V 1112 w Fn(23)337 399 y Fe(\210)45 b Fn(The)30 │ │ │ │ +TeXDict begin 23 22 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(4,)h(2025)p │ │ │ │ +2654 100 V 1153 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 │ │ │ │ ├── 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 February 29, 2024 │ │ │ │ │ + 2 Chv : DRAFT October 4, 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 February 29, 2024 3 │ │ │ │ │ + Chv : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 4 Chv : DRAFT October 4, 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 February 29, 2024 5 │ │ │ │ │ + Chv : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 6 Chv : DRAFT October 4, 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 February 29, 2024 9 │ │ │ │ │ + Chv : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 10 Chv : DRAFT October 4, 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 February 29, 2024 11 │ │ │ │ │ + Chv : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 12 Chv : DRAFT October 4, 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 February 29, 2024 13 │ │ │ │ │ + Chv : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 14 Chv : DRAFT October 4, 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 February 29, 2024 15 │ │ │ │ │ + Chv : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 16 Chv : DRAFT October 4, 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 February 29, 2024 17 │ │ │ │ │ + Chv : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 18 Chv : DRAFT October 4, 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 February 29, 2024 19 │ │ │ │ │ + Chv : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 20 Chv : DRAFT October 4, 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 February 29, 2024 21 │ │ │ │ │ + Chv : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 22 Chv : DRAFT October 4, 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 February 29, 2024 23 │ │ │ │ │ + Chv : DRAFT October 4, 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 2024.02.29:1857 │ │ │ │ +%DVIPSSource: TeX output 2025.10.04:1733 │ │ │ │ %%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 │ │ │ │ @@ -1762,23 +1762,23 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 50 /two put │ │ │ │ dup 52 /four put │ │ │ │ -dup 57 /nine put │ │ │ │ +dup 53 /five put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 70 /F put │ │ │ │ -dup 97 /a put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ +dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ -dup 117 /u put │ │ │ │ -dup 121 /y put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1952,95 +1952,85 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA647CD0E2539DFAD9604486DCCFA49 │ │ │ │ -AC96130D106A8F8387633622C3809400D6E8FF9D60877C743502E4D211CEBF62 │ │ │ │ -9A6F91045C22D5D20C5FF677D89983D02E5EE26C71A9EAE0E7C52465DA5A149A │ │ │ │ -9B731C27EC8366BC3E841C0CAE49A33DE164A857365B17B09CAD121C47A980CB │ │ │ │ -C75E1030F6C394EDB46C54B46880D2344127B903FB22684C9CAACE6053DC3BFA │ │ │ │ -4E47C565ECAF19C4295A11BD68CA6D45B5738B932BB3690A8C712904C49C1636 │ │ │ │ -A7702075F2FEA8DB3EB3A3C1216BB769DD0BAF4507A18E3052F2C846B0797933 │ │ │ │ -8CE9BB2DB5DFADAF1B0FC3A22BAB82A0D5D290F7AD950013CFA465BE11C1076D │ │ │ │ -5833FF92321FBF90D9229D3BA09DD18EEC44D9FCF8FCF63CC09D2977BFA798B6 │ │ │ │ -47FB047EA6AF69C7DE570176F5B6C0FED74DEDBF7DDF49550DD84BA14AC09423 │ │ │ │ -F70D5B14F0F8588F1E2FFE0DFE0760E77A9E39DEDAC5C5AE3760722C029B916D │ │ │ │ -96A2A7D1DD6A61F90B4B9806314A668EB7A0E107A3527310A240490453CC18D7 │ │ │ │ -3793B4CF3CE13EA332E7F5C2BACF85AC75FE84693B966BB0F6FB9A179A331C4E │ │ │ │ -55E9EF30E2734E44A88E053CD5E650D7E529E94CB7F8B733E68315ACAC5BEFC5 │ │ │ │ -3FE4F585F875310267865679AB381125C31E9AEB7226DC9F18DA80A9DE2F38A4 │ │ │ │ -51B8F9D5B2FBA0F50D53AE6212AFE41466A594F7A303B4E82F1493C0B8D65756 │ │ │ │ -BE6AF2931E5ADA5CE7D51CB5B1EC916C6C6D674808939331CA66F8181DD2B112 │ │ │ │ -1A12198CCCB6BBF1D40C803E794B65241ACE1E0D30CCA1C6F2D3E1415B98726B │ │ │ │ -9BA303BE2C4C276108CC78C093F1CC85CA454CC38535D1DEBFA341D84E8A5DDF │ │ │ │ -D53D8DD0F4A812B5BA63871BEB3BCE93FBC77AD395914E2CD757546C2BE2D641 │ │ │ │ -FDB12258E1E1D10E1B963EABB265F2C8B2547D48963E1AD3B223B666B46915A1 │ │ │ │ -157F5EA0AB8D8411C07AA2EB5D0EF1A1BA6D81C47473A3D3D6287104C7BF61F8 │ │ │ │ -3BDB64995DE96A65BF2B7288C51ADAA3D373A95C40D5240C5FF397551554AA9E │ │ │ │ -C89C7E45AA7738503CB058EF6AD5052CC78E4445C810C250BF25394B8D7DE82E │ │ │ │ -315C9CCD6E1E9150EC79EE0F354C668AE199C1AFF39C67337A86CB932E8D64E9 │ │ │ │ -389FF3CC08B538492DEED017686DBB9BDEA30FE67FB4EBDB3627C16FD15F243A │ │ │ │ -7FDEB310EFC940E57726E94340472F2C452815927ADE21578C959890216BE504 │ │ │ │ -225BE4B4D2E3B19F5E06B5A0B25AF168C3A2B26F599A829F89C16BD2026E8CC9 │ │ │ │ -8FB3CBB830C3E36C099071A70D0B8834FF2C17364EB50D5C71440CC7BFE02321 │ │ │ │ -8C6ECAC2F7EC1BE39077DB0E8B2B251626A71FD038EB2CF1FC254D98C1535CAA │ │ │ │ -A8C987BC266482BD860A333048E1EDB3DD40A6ECD6DA0088AD9B9640202D89AA │ │ │ │ -0BB9A0ADF63491E67F2E97E35942D77E59B9B8AB0ED28B022EE5CD3449FC5B7A │ │ │ │ -19E38845B488F97D155C4312885E29537EAE97719C65845663480CE79DE8F037 │ │ │ │ -68995C0928FE8AFBEE554F01381EE5187578DF5D2542F26F66A599EE8ECC1F68 │ │ │ │ -FBADF3C2BA968C3CEB86675CF9A6CFD736E1422800D270417D497903DE87F2AE │ │ │ │ -938E39E120E9D3079F512E545E0E2616B84E81FE41392184F96818A7C86BF541 │ │ │ │ -F2E67C48CA56DA838C9FA0FAD538073B9F26319140D1F80EEEBCA190DE660A31 │ │ │ │ -457CAC16E92F87449A3734F9EA751588514865B58DC073658C8A857B5398AAC7 │ │ │ │ -3DC11E069996EF74A3189A07630D5DB87C5E028CD193C086B4D0E8BABC4F2393 │ │ │ │ -235EC96091B16C4A6D97DA1BD30A2D2E71F55869223CA66AD12448B668685F6E │ │ │ │ -06E7888D7F20045C662C4F7994CC7E1CE9AAC33A026716AA0551DF12343F0E22 │ │ │ │ -6E9F4B21C90406CC4997601194EF37A973221D1F4D73DD5666BD297F621C92AA │ │ │ │ -E3F698BC1146ADE754C4120EDF5B3E974D75A237E51DB49D52CD6CC7C9E8BD2D │ │ │ │ -E6849DF8F4DBA86C655D0C57CB54836C8A841C1D814F6B493F96ADBFCAD78D3B │ │ │ │ -430C58EF169950851B6A0B46411488B1A6F6974832787A24C0CDDBE27996EFB1 │ │ │ │ -DB341FA34B1DC6238D978D1E1D34AF3FB375ED6DA9C88699F195C88A54622F7C │ │ │ │ -36DAFC663D85660E756733A7E22F20C6A5D91F06087CAD10F7217BD33F343DC6 │ │ │ │ -F5EB9F16FE763672243EE6AE5CB6063A1D64670E1C059DD52134974E27D9D89C │ │ │ │ -BC658FCD814F20703D610C978FDCD6E2AEA31C18D1A310F215B28199F66C87DB │ │ │ │ -3B23980A393E1DD77AFA3045EDB6942505F3CF6204315A14E5B6BF2E96F3BB1F │ │ │ │ -628D24AC1893BC7DAEF3AA63F2116837F31DB90D872CBD9E5C48BCDEE781D20D │ │ │ │ -C6553D2D15F4E8438A9D1C7CEE1B72BD6AA08DC0AFEAF8B4DC1038707EE4A1BF │ │ │ │ -3D84460E60AF90F55002C1D8EBF0700F7EC3EFC944BEA78D0E0536F3AA6D9A84 │ │ │ │ -604A781AC5ACFEB7E681365315EE11E991C03DA431B65B332AD8F83F6F3AE66C │ │ │ │ -1BF434D3793FB5BCC44E44ACFF2855C2770C4AC678C6ACD6EB071974ACF1AE37 │ │ │ │ -D02C1736C62CC205A2F3488448527EFFA379613A8E6A6D134F4BFBAE6127304D │ │ │ │ -576C900A458E32CD42A4674415E03D8EB5742E71B854B3EDFD271AA214436544 │ │ │ │ -D1BCFD52F439298847E1FA258E5D38384FC85BC4EDC6F9E4431621CF763B137B │ │ │ │ -22DB6E3268B3F78881D55EA7C52ABF23FB73C152B06B708084FE1B00CFE72D9D │ │ │ │ -57B62AEE912E63BBD89D4D13CE896735454F1A16C3D9FB6CDF142CCA9F1C0242 │ │ │ │ -46F62109DF30667DA327F7CF6DC19B880C860C69080597FFCB1793313E202D4F │ │ │ │ -120A7C6B052C2EB7597B71B0985D24FDD2D3918393BF720E762C5DBBC2BB1E91 │ │ │ │ -B04560364EFE5B16EB068E0560FB932E0C617CFB95A166388E99AC4CB020F5BC │ │ │ │ -E24BB77352D7C3B21C37D404051A70FFFA0F726C35501A1FBB411F832CE46A2E │ │ │ │ -B424E26BD4 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFD8CDE285A2827F4659E339460ABEF319FE44D7A91E93CA309E9266E03DA │ │ │ │ +735F5DEF3920C01189BB63C2BD7ED0B92EABB481F123641477CDCCAB9751FB7B │ │ │ │ +F67DA7CE6EB134BC10D0228562BA5A6BFE6940907EF030ABF9EC4A8A0DFEF73D │ │ │ │ +3289E8CB4DC37694F5A656A935D92C72B3D82B012F578A27711B161DE9652ADC │ │ │ │ +71C51E743E4E9A7C6CF6FF16C5D65C1F60954C0858B48FAAC4FBB21988E2A934 │ │ │ │ +AC50C097DDF42C416359647D79F830E1430FB9BB803451A6732D1B5CAB817C1B │ │ │ │ +673B3077D9A180F184267E9990C087BCDEBC8EB8B889934DD0EB63C2EBCED4A3 │ │ │ │ +83A0D6A365412CFF610EF7BD5F82B02AA293F1D2F868768CDE9B801C929B4A38 │ │ │ │ +64E20C70BC4041F837AD15423517F7336A067D140A2C7906DC5D45885FFB3B69 │ │ │ │ +724E5B9B138BD15A9359EB25D14BC4193E529D1A49FEB0DC1015BF94CEBBD5E0 │ │ │ │ +EA148B185C53E12BD9FA6DBC097D789A73E832F02F55080D8ED6087F5952EA78 │ │ │ │ +250A4C65CE4C4013554A031446D2092D813C4CB1A605D97A40CF867F656ECD1C │ │ │ │ +C23F80230AD1E449AA8B4007134F71156719206441D92B1A6DD25101ABF69F70 │ │ │ │ +538CCCE216376E1BD6E423986BD4E83B1975B15092D4E19F885672F9E7C02485 │ │ │ │ +E02DA0F4243D324A5983D1D46444E5F6573F699E4F2A3395EF0EB7808B7D4D62 │ │ │ │ +690FD033E93AA553082273636503DA4BBBBFA6D127CE10424DD1DDF4F879305C │ │ │ │ +14F64180E7851D091B3220DFC70CAA44716B8F7F0C6FBEDB167801DED77F9E69 │ │ │ │ +E9B31CD2D8044DB946E511162976C34DE27F2BB974B70509005562A0A21317B7 │ │ │ │ +46D826A31C476C8F9A778F941FF5956BA2D765B1AD0AC4BC7AE1CD8A2A81F039 │ │ │ │ +06EB13EBD099BBDB2EBDB54D459C288EA69FB0018CE9255BBFB08C1F90FF30BD │ │ │ │ +C971DA7FDB193281B8F967F21AB42F13F36085AC9EC0D6B6B448C8F289B0AD70 │ │ │ │ +DB521A4755ECF9CA594741E5C674220C21C265EF3BAE594197B00048C8D4DB73 │ │ │ │ +4AC47B6A86EAC7EECD042C8E23C347F8C9FCB870473C1FBD91C298174BCBF1A9 │ │ │ │ +7B366C570A9A04A433495FBC9FD0FFC22A0E8181424C0F038ED97AD5054B10CC │ │ │ │ +1CD5BA0719DD0B4F4F18932AE87FF8B8C1CF0C7482B7847049761505DCD85146 │ │ │ │ +4EE5CB53993A9449CD05233E961BD49AE92D308E2065D6C6BF038538039AA56A │ │ │ │ +C59D424BE3175427337E16892D3920598D518423E145C6B2DD3881F338845F0D │ │ │ │ +16C47AA0D9C2D6DE99C6A302D567ACD6F98BF38223F1890E099C8F93348FFDAA │ │ │ │ +C2D3440187C8FED87C1A891EF11EFA7168EC47F72AF8BC5BE1B88B1084E704F5 │ │ │ │ +82099F1A79E556D94CC38851C97DC3864945A7470F1389BCF608BADAE45B236D │ │ │ │ +2934A20FFBCF169BF84DF496B07E7F1D9002E62B030337642804403DF7E4B3FF │ │ │ │ +C5A421EE0033BA06C50A041FBFE8F81AFC145664E2976505EB14859CF0377EBA │ │ │ │ +EA604CF8BFB5F9ADB9A7ED56E6F0F919E791D57C7232241C892EAC3E55D2D03B │ │ │ │ +FF43B9DAB7B1D8C6588D6D3503F49E80121E52254431B308752A936E0B51124D │ │ │ │ +C7F23C316BA6FA73E6BC47EB9550003E1393C68360067C094C65C0DD17214FA0 │ │ │ │ +45FF0F9C3E0AE4C81093752D23EA95E163C98EC04873ECE3FB0882567329525C │ │ │ │ +0A3937B16CA72B5EB6D2DC10C1B485C0BA939587AFEBB6D837A40401C666BC1C │ │ │ │ +F3344FBAB3E48BEE18F3AF5CDB33BA63778D373A851333C8C34E2F35AB94E8B4 │ │ │ │ +FF7E62A92ED83B872894E0A17209E14CF61269204A35A4BC8C7EE4B16F19E91F │ │ │ │ +669C4EFCECB187F6C7FAF92B4E14E400C6B3C81679D4A7196D66DB1E897DDA42 │ │ │ │ +47CC2848B46D581A95EEF85AB528E8CDEEB275D1E1FE197A3A08D36406E2DADF │ │ │ │ +A87D817AF18B5525F89B7C2E584F4A1254A1FC71E749999A2152870631A69CB6 │ │ │ │ +666EBD6BB3366A598F6592040D0E82B9D866DF0A76C362E76C2804D108A0C148 │ │ │ │ +51F42E9E0ABD52CC2D02B156B63AFD03313AFC80EACC83DF9B59F05FD798951D │ │ │ │ +FCF5335636DFC6561910ACE0AEC47F74CFD302EB7421D28AAAC8FF82B7CE2B2A │ │ │ │ +340B8BCE09F57BFCBC77F91096D97A85726E68846398C8C9C8D3A65A252AE8FB │ │ │ │ +166750C244963BC61E2236BAAC529FABD6FC774550096374A8DB81B6AF1EA843 │ │ │ │ +27F671C0045D629E3734EF037447C4763514FD1C4AE858A494AFC23A64C82149 │ │ │ │ +F4C0A7023B3865B84FAC2DC88D1553DCEBA3D8FB5DBC1103123F6B8CB5B3A399 │ │ │ │ +B665B26B001BF1E4BFABE42BFF6B02D69FA88D5CBCA5A11D5B48CFB4EAE60558 │ │ │ │ +5FBE254AD3BE01761CD4995E766E172D768621223505FD6AA8F89FC042EB814C │ │ │ │ +34373DAEC4FAAF71C0752F814154C5299F751CE7E0F9C673D2E448D0204C214C │ │ │ │ +C04DC34671FBEF72350FFBA263662E86A0D3795E310153AAF4C8A2623E167E6E │ │ │ │ +1F13A9BA485D5DDFC451D691DBA7C49E20354A7AD79D89F7EDE24F0D5B48B27D │ │ │ │ +568D01EF2555504196C09841F5970D8CF6C5D47FFFCF18AE6B2A485342000AAD │ │ │ │ +1F922FBEF7C98E0965609C89240E7B131A59551F57CD5C92097FCE75F5D2778F │ │ │ │ +F9ACF43A3273551363442C8C539205903A835C744A4AA953545506081D3D231A │ │ │ │ +A140E01F280BC42A3C35EDAD5F6B8CE6E51C68E41CA813710864ED880FCE846C │ │ │ │ +1B66D27CC2DBCDC2B1B96A12490BD76D67A415D4A6595CD9B19D3104A83D2C82 │ │ │ │ +C46DCD2C027F0565EDB83E54FF99498194D3140E55E8EE65EBDEAC5409B5616A │ │ │ │ +73141DA2D581E300A6057F4301A02DD160AB3E55A116313525122D0608816AA8 │ │ │ │ +4712EEF3D6FE8C893DF37D │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3306,16 +3296,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 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 134[48 3[51 2[36 12[40 2[51 45 │ │ │ │ -26[59 11[25 45 4[45 1[45 1[45 3[25 44[{}13 90.9091 /CMSL10 │ │ │ │ +90.9091 /CMTI10 rf /Ff 139[35 1[36 2[45 9[40 1[40 51 │ │ │ │ +18[71 20[25 4[45 45 1[45 1[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 │ │ │ │ @@ -3427,25 +3417,25 @@ │ │ │ │ (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 1040 4 v │ │ │ │ -1221 w Fh(ChvList)29 b Ff(:)40 b Fe(DRAFT)31 b Ff(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2861 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 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fi(2)p 136 100 1081 4 v │ │ │ │ +1263 w Fh(ChvList)28 b Ff(:)41 b Fe(DRAFT)30 b Ff(Octob)s(er)g(4,)h │ │ │ │ +(2025)p 2820 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 │ │ │ │ (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 │ │ │ │ @@ -3490,17 +3480,17 @@ │ │ │ │ (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 1040 4 v 1221 100 a Fh(ChvList)28 │ │ │ │ -b Ff(:)41 b Fe(DRAFT)121 b Ff(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2814 100 V 1040 w Fi(3)111 399 y(3.)46 b Fh(void)h(ChvList_clearData)c │ │ │ │ +TeXDict begin 3 2 bop 91 100 1081 4 v 1262 100 a Fh(ChvList)28 │ │ │ │ +b Ff(:)41 b Fe(DRAFT)121 b Ff(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2772 100 V 1081 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 │ │ │ │ @@ -3563,27 +3553,27 @@ │ │ │ │ 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 1040 4 v │ │ │ │ -1221 w Fh(ChvList)29 b Ff(:)40 b Fe(DRAFT)31 b Ff(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2861 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)s(c)m(k)g(unlo)s(c)m(k)m(ed.)47 b(The)32 b(sa)m(v)m(ed)227 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fi(4)p 136 100 1081 4 v │ │ │ │ +1263 w Fh(ChvList)28 b Ff(:)41 b Fe(DRAFT)30 b Ff(Octob)s(er)g(4,)h │ │ │ │ +(2025)p 2820 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) │ │ │ │ +s(c)m(k)g(unlo)s(c)m(k)m(ed.)47 b(The)32 b(sa)m(v)m(ed)227 │ │ │ │ 888 y(p)s(oin)m(ter)f(is)f(returned.)227 1038 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 1151 │ │ │ │ y(is)h(prin)m(ted)f(and)f(zero)j(is)e(returned.)111 1338 │ │ │ │ y(4.)46 b Fh(void)h(ChvList_addObjectToList)41 b(\()48 │ │ │ │ b(ChvList)e(*list,)g(Chv)h(*chv,)f(int)h(ilist)f(\))i(;)227 │ │ │ │ ├── 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 February 29, 2024 │ │ │ │ │ + 2 ChvList : DRAFT October 4, 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 February 29, 2024 3 │ │ │ │ │ + ChvList : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 4 ChvList : DRAFT October 4, 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 2024.02.29:1857 │ │ │ │ +%DVIPSSource: TeX output 2025.10.04:1733 │ │ │ │ %%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 │ │ │ │ @@ -1159,23 +1159,23 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 50 /two put │ │ │ │ dup 52 /four put │ │ │ │ -dup 57 /nine put │ │ │ │ +dup 53 /five put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 70 /F put │ │ │ │ -dup 97 /a put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ +dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ -dup 117 /u put │ │ │ │ -dup 121 /y put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1349,95 +1349,85 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA647CD0E2539DFAD9604486DCCFA49 │ │ │ │ -AC96130D106A8F8387633622C3809400D6E8FF9D60877C743502E4D211CEBF62 │ │ │ │ -9A6F91045C22D5D20C5FF677D89983D02E5EE26C71A9EAE0E7C52465DA5A149A │ │ │ │ -9B731C27EC8366BC3E841C0CAE49A33DE164A857365B17B09CAD121C47A980CB │ │ │ │ -C75E1030F6C394EDB46C54B46880D2344127B903FB22684C9CAACE6053DC3BFA │ │ │ │ -4E47C565ECAF19C4295A11BD68CA6D45B5738B932BB3690A8C712904C49C1636 │ │ │ │ -A7702075F2FEA8DB3EB3A3C1216BB769DD0BAF4507A18E3052F2C846B0797933 │ │ │ │ -8CE9BB2DB5DFADAF1B0FC3A22BAB82A0D5D290F7AD950013CFA465BE11C1076D │ │ │ │ -5833FF92321FBF90D9229D3BA09DD18EEC44D9FCF8FCF63CC09D2977BFA798B6 │ │ │ │ -47FB047EA6AF69C7DE570176F5B6C0FED74DEDBF7DDF49550DD84BA14AC09423 │ │ │ │ -F70D5B14F0F8588F1E2FFE0DFE0760E77A9E39DEDAC5C5AE3760722C029B916D │ │ │ │ -96A2A7D1DD6A61F90B4B9806314A668EB7A0E107A3527310A240490453CC18D7 │ │ │ │ -3793B4CF3CE13EA332E7F5C2BACF85AC75FE84693B966BB0F6FB9A179A331C4E │ │ │ │ -55E9EF30E2734E44A88E053CD5E650D7E529E94CB7F8B733E68315ACAC5BEFC5 │ │ │ │ -3FE4F585F875310267865679AB381125C31E9AEB7226DC9F18DA80A9DE2F38A4 │ │ │ │ -51B8F9D5B2FBA0F50D53AE6212AFE41466A594F7A303B4E82F1493C0B8D65756 │ │ │ │ -BE6AF2931E5ADA5CE7D51CB5B1EC916C6C6D674808939331CA66F8181DD2B112 │ │ │ │ -1A12198CCCB6BBF1D40C803E794B65241ACE1E0D30CCA1C6F2D3E1415B98726B │ │ │ │ -9BA303BE2C4C276108CC78C093F1CC85CA454CC38535D1DEBFA341D84E8A5DDF │ │ │ │ -D53D8DD0F4A812B5BA63871BEB3BCE93FBC77AD395914E2CD757546C2BE2D641 │ │ │ │ -FDB12258E1E1D10E1B963EABB265F2C8B2547D48963E1AD3B223B666B46915A1 │ │ │ │ -157F5EA0AB8D8411C07AA2EB5D0EF1A1BA6D81C47473A3D3D6287104C7BF61F8 │ │ │ │ -3BDB64995DE96A65BF2B7288C51ADAA3D373A95C40D5240C5FF397551554AA9E │ │ │ │ -C89C7E45AA7738503CB058EF6AD5052CC78E4445C810C250BF25394B8D7DE82E │ │ │ │ -315C9CCD6E1E9150EC79EE0F354C668AE199C1AFF39C67337A86CB932E8D64E9 │ │ │ │ -389FF3CC08B538492DEED017686DBB9BDEA30FE67FB4EBDB3627C16FD15F243A │ │ │ │ -7FDEB310EFC940E57726E94340472F2C452815927ADE21578C959890216BE504 │ │ │ │ -225BE4B4D2E3B19F5E06B5A0B25AF168C3A2B26F599A829F89C16BD2026E8CC9 │ │ │ │ -8FB3CBB830C3E36C099071A70D0B8834FF2C17364EB50D5C71440CC7BFE02321 │ │ │ │ -8C6ECAC2F7EC1BE39077DB0E8B2B251626A71FD038EB2CF1FC254D98C1535CAA │ │ │ │ -A8C987BC266482BD860A333048E1EDB3DD40A6ECD6DA0088AD9B9640202D89AA │ │ │ │ -0BB9A0ADF63491E67F2E97E35942D77E59B9B8AB0ED28B022EE5CD3449FC5B7A │ │ │ │ -19E38845B488F97D155C4312885E29537EAE97719C65845663480CE79DE8F037 │ │ │ │ -68995C0928FE8AFBEE554F01381EE5187578DF5D2542F26F66A599EE8ECC1F68 │ │ │ │ -FBADF3C2BA968C3CEB86675CF9A6CFD736E1422800D270417D497903DE87F2AE │ │ │ │ -938E39E120E9D3079F512E545E0E2616B84E81FE41392184F96818A7C86BF541 │ │ │ │ -F2E67C48CA56DA838C9FA0FAD538073B9F26319140D1F80EEEBCA190DE660A31 │ │ │ │ -457CAC16E92F87449A3734F9EA751588514865B58DC073658C8A857B5398AAC7 │ │ │ │ -3DC11E069996EF74A3189A07630D5DB87C5E028CD193C086B4D0E8BABC4F2393 │ │ │ │ -235EC96091B16C4A6D97DA1BD30A2D2E71F55869223CA66AD12448B668685F6E │ │ │ │ -06E7888D7F20045C662C4F7994CC7E1CE9AAC33A026716AA0551DF12343F0E22 │ │ │ │ -6E9F4B21C90406CC4997601194EF37A973221D1F4D73DD5666BD297F621C92AA │ │ │ │ -E3F698BC1146ADE754C4120EDF5B3E974D75A237E51DB49D52CD6CC7C9E8BD2D │ │ │ │ -E6849DF8F4DBA86C655D0C57CB54836C8A841C1D814F6B493F96ADBFCAD78D3B │ │ │ │ -430C58EF169950851B6A0B46411488B1A6F6974832787A24C0CDDBE27996EFB1 │ │ │ │ -DB341FA34B1DC6238D978D1E1D34AF3FB375ED6DA9C88699F195C88A54622F7C │ │ │ │ -36DAFC663D85660E756733A7E22F20C6A5D91F06087CAD10F7217BD33F343DC6 │ │ │ │ -F5EB9F16FE763672243EE6AE5CB6063A1D64670E1C059DD52134974E27D9D89C │ │ │ │ -BC658FCD814F20703D610C978FDCD6E2AEA31C18D1A310F215B28199F66C87DB │ │ │ │ -3B23980A393E1DD77AFA3045EDB6942505F3CF6204315A14E5B6BF2E96F3BB1F │ │ │ │ -628D24AC1893BC7DAEF3AA63F2116837F31DB90D872CBD9E5C48BCDEE781D20D │ │ │ │ -C6553D2D15F4E8438A9D1C7CEE1B72BD6AA08DC0AFEAF8B4DC1038707EE4A1BF │ │ │ │ -3D84460E60AF90F55002C1D8EBF0700F7EC3EFC944BEA78D0E0536F3AA6D9A84 │ │ │ │ -604A781AC5ACFEB7E681365315EE11E991C03DA431B65B332AD8F83F6F3AE66C │ │ │ │ -1BF434D3793FB5BCC44E44ACFF2855C2770C4AC678C6ACD6EB071974ACF1AE37 │ │ │ │ -D02C1736C62CC205A2F3488448527EFFA379613A8E6A6D134F4BFBAE6127304D │ │ │ │ -576C900A458E32CD42A4674415E03D8EB5742E71B854B3EDFD271AA214436544 │ │ │ │ -D1BCFD52F439298847E1FA258E5D38384FC85BC4EDC6F9E4431621CF763B137B │ │ │ │ -22DB6E3268B3F78881D55EA7C52ABF23FB73C152B06B708084FE1B00CFE72D9D │ │ │ │ -57B62AEE912E63BBD89D4D13CE896735454F1A16C3D9FB6CDF142CCA9F1C0242 │ │ │ │ -46F62109DF30667DA327F7CF6DC19B880C860C69080597FFCB1793313E202D4F │ │ │ │ -120A7C6B052C2EB7597B71B0985D24FDD2D3918393BF720E762C5DBBC2BB1E91 │ │ │ │ -B04560364EFE5B16EB068E0560FB932E0C617CFB95A166388E99AC4CB020F5BC │ │ │ │ -E24BB77352D7C3B21C37D404051A70FFFA0F726C35501A1FBB411F832CE46A2E │ │ │ │ -B424E26BD4 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFD8CDE285A2827F4659E339460ABEF319FE44D7A91E93CA309E9266E03DA │ │ │ │ +735F5DEF3920C01189BB63C2BD7ED0B92EABB481F123641477CDCCAB9751FB7B │ │ │ │ +F67DA7CE6EB134BC10D0228562BA5A6BFE6940907EF030ABF9EC4A8A0DFEF73D │ │ │ │ +3289E8CB4DC37694F5A656A935D92C72B3D82B012F578A27711B161DE9652ADC │ │ │ │ +71C51E743E4E9A7C6CF6FF16C5D65C1F60954C0858B48FAAC4FBB21988E2A934 │ │ │ │ +AC50C097DDF42C416359647D79F830E1430FB9BB803451A6732D1B5CAB817C1B │ │ │ │ +673B3077D9A180F184267E9990C087BCDEBC8EB8B889934DD0EB63C2EBCED4A3 │ │ │ │ +83A0D6A365412CFF610EF7BD5F82B02AA293F1D2F868768CDE9B801C929B4A38 │ │ │ │ +64E20C70BC4041F837AD15423517F7336A067D140A2C7906DC5D45885FFB3B69 │ │ │ │ +724E5B9B138BD15A9359EB25D14BC4193E529D1A49FEB0DC1015BF94CEBBD5E0 │ │ │ │ +EA148B185C53E12BD9FA6DBC097D789A73E832F02F55080D8ED6087F5952EA78 │ │ │ │ +250A4C65CE4C4013554A031446D2092D813C4CB1A605D97A40CF867F656ECD1C │ │ │ │ +C23F80230AD1E449AA8B4007134F71156719206441D92B1A6DD25101ABF69F70 │ │ │ │ +538CCCE216376E1BD6E423986BD4E83B1975B15092D4E19F885672F9E7C02485 │ │ │ │ +E02DA0F4243D324A5983D1D46444E5F6573F699E4F2A3395EF0EB7808B7D4D62 │ │ │ │ +690FD033E93AA553082273636503DA4BBBBFA6D127CE10424DD1DDF4F879305C │ │ │ │ +14F64180E7851D091B3220DFC70CAA44716B8F7F0C6FBEDB167801DED77F9E69 │ │ │ │ +E9B31CD2D8044DB946E511162976C34DE27F2BB974B70509005562A0A21317B7 │ │ │ │ +46D826A31C476C8F9A778F941FF5956BA2D765B1AD0AC4BC7AE1CD8A2A81F039 │ │ │ │ +06EB13EBD099BBDB2EBDB54D459C288EA69FB0018CE9255BBFB08C1F90FF30BD │ │ │ │ +C971DA7FDB193281B8F967F21AB42F13F36085AC9EC0D6B6B448C8F289B0AD70 │ │ │ │ +DB521A4755ECF9CA594741E5C674220C21C265EF3BAE594197B00048C8D4DB73 │ │ │ │ +4AC47B6A86EAC7EECD042C8E23C347F8C9FCB870473C1FBD91C298174BCBF1A9 │ │ │ │ +7B366C570A9A04A433495FBC9FD0FFC22A0E8181424C0F038ED97AD5054B10CC │ │ │ │ +1CD5BA0719DD0B4F4F18932AE87FF8B8C1CF0C7482B7847049761505DCD85146 │ │ │ │ +4EE5CB53993A9449CD05233E961BD49AE92D308E2065D6C6BF038538039AA56A │ │ │ │ +C59D424BE3175427337E16892D3920598D518423E145C6B2DD3881F338845F0D │ │ │ │ +16C47AA0D9C2D6DE99C6A302D567ACD6F98BF38223F1890E099C8F93348FFDAA │ │ │ │ +C2D3440187C8FED87C1A891EF11EFA7168EC47F72AF8BC5BE1B88B1084E704F5 │ │ │ │ +82099F1A79E556D94CC38851C97DC3864945A7470F1389BCF608BADAE45B236D │ │ │ │ +2934A20FFBCF169BF84DF496B07E7F1D9002E62B030337642804403DF7E4B3FF │ │ │ │ +C5A421EE0033BA06C50A041FBFE8F81AFC145664E2976505EB14859CF0377EBA │ │ │ │ +EA604CF8BFB5F9ADB9A7ED56E6F0F919E791D57C7232241C892EAC3E55D2D03B │ │ │ │ +FF43B9DAB7B1D8C6588D6D3503F49E80121E52254431B308752A936E0B51124D │ │ │ │ +C7F23C316BA6FA73E6BC47EB9550003E1393C68360067C094C65C0DD17214FA0 │ │ │ │ +45FF0F9C3E0AE4C81093752D23EA95E163C98EC04873ECE3FB0882567329525C │ │ │ │ +0A3937B16CA72B5EB6D2DC10C1B485C0BA939587AFEBB6D837A40401C666BC1C │ │ │ │ +F3344FBAB3E48BEE18F3AF5CDB33BA63778D373A851333C8C34E2F35AB94E8B4 │ │ │ │ +FF7E62A92ED83B872894E0A17209E14CF61269204A35A4BC8C7EE4B16F19E91F │ │ │ │ +669C4EFCECB187F6C7FAF92B4E14E400C6B3C81679D4A7196D66DB1E897DDA42 │ │ │ │ +47CC2848B46D581A95EEF85AB528E8CDEEB275D1E1FE197A3A08D36406E2DADF │ │ │ │ +A87D817AF18B5525F89B7C2E584F4A1254A1FC71E749999A2152870631A69CB6 │ │ │ │ +666EBD6BB3366A598F6592040D0E82B9D866DF0A76C362E76C2804D108A0C148 │ │ │ │ +51F42E9E0ABD52CC2D02B156B63AFD03313AFC80EACC83DF9B59F05FD798951D │ │ │ │ +FCF5335636DFC6561910ACE0AEC47F74CFD302EB7421D28AAAC8FF82B7CE2B2A │ │ │ │ +340B8BCE09F57BFCBC77F91096D97A85726E68846398C8C9C8D3A65A252AE8FB │ │ │ │ +166750C244963BC61E2236BAAC529FABD6FC774550096374A8DB81B6AF1EA843 │ │ │ │ +27F671C0045D629E3734EF037447C4763514FD1C4AE858A494AFC23A64C82149 │ │ │ │ +F4C0A7023B3865B84FAC2DC88D1553DCEBA3D8FB5DBC1103123F6B8CB5B3A399 │ │ │ │ +B665B26B001BF1E4BFABE42BFF6B02D69FA88D5CBCA5A11D5B48CFB4EAE60558 │ │ │ │ +5FBE254AD3BE01761CD4995E766E172D768621223505FD6AA8F89FC042EB814C │ │ │ │ +34373DAEC4FAAF71C0752F814154C5299F751CE7E0F9C673D2E448D0204C214C │ │ │ │ +C04DC34671FBEF72350FFBA263662E86A0D3795E310153AAF4C8A2623E167E6E │ │ │ │ +1F13A9BA485D5DDFC451D691DBA7C49E20354A7AD79D89F7EDE24F0D5B48B27D │ │ │ │ +568D01EF2555504196C09841F5970D8CF6C5D47FFFCF18AE6B2A485342000AAD │ │ │ │ +1F922FBEF7C98E0965609C89240E7B131A59551F57CD5C92097FCE75F5D2778F │ │ │ │ +F9ACF43A3273551363442C8C539205903A835C744A4AA953545506081D3D231A │ │ │ │ +A140E01F280BC42A3C35EDAD5F6B8CE6E51C68E41CA813710864ED880FCE846C │ │ │ │ +1B66D27CC2DBCDC2B1B96A12490BD76D67A415D4A6595CD9B19D3104A83D2C82 │ │ │ │ +C46DCD2C027F0565EDB83E54FF99498194D3140E55E8EE65EBDEAC5409B5616A │ │ │ │ +73141DA2D581E300A6057F4301A02DD160AB3E55A116313525122D0608816AA8 │ │ │ │ +4712EEF3D6FE8C893DF37D │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3108,16 +3098,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 134[48 3[51 2[36 12[40 2[51 45 26[59 11[25 45 │ │ │ │ -4[45 1[45 1[45 3[25 44[{}13 90.9091 /CMSL10 rf /Fe 134[44 │ │ │ │ +rf /Fd 139[35 1[36 2[45 9[40 1[40 51 18[71 20[25 4[45 │ │ │ │ +45 1[45 1[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 │ │ │ │ @@ -3237,21 +3227,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 1016 4 v │ │ │ │ -1197 w Fg(DChvList)29 b Fd(:)40 b Fe(DRAFT)30 b Fd(F)-8 │ │ │ │ -b(ebruary)31 b(29,)g(2024)p 2885 100 V 0 399 a Fh(requires)f(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 1057 4 v │ │ │ │ +1239 w Fg(DChvList)28 b Fd(:)40 b Fe(DRAFT)31 b Fd(Octob)s(er)f(4,)h │ │ │ │ +(2025)p 2844 100 V 0 399 a Fh(requires)f(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 │ │ │ │ @@ -3300,17 +3290,17 @@ │ │ │ │ (free'ing)h(the)g(ob)5 b(ject.)111 5146 y(1.)46 b Fg(ChvManager)f(*)j │ │ │ │ (ChvManager_new)c(\()j(void)g(\))g(;)227 5294 y Fh(This)28 │ │ │ │ b(metho)s(d)f(simply)h(allo)s(cates)i(storage)g(for)e(the)g │ │ │ │ Fg(ChvManager)e Fh(structure)h(and)h(then)g(sets)g(the)h(default)227 │ │ │ │ 5407 y(\014elds)h(b)m(y)g(a)h(call)h(to)f Fg(ChvManager)p │ │ │ │ 1426 5407 V 32 w(setDefaultFields\(\))p Fh(.)p eop end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 91 100 1016 4 v 1197 100 a Fg(DChvList)28 │ │ │ │ -b Fd(:)41 b Fe(DRAFT)121 b Fd(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2838 100 V 1016 w Fh(3)111 399 y(2.)46 b Fg(void)h │ │ │ │ +TeXDict begin 3 2 bop 91 100 1057 4 v 1238 100 a Fg(DChvList)28 │ │ │ │ +b Fd(:)41 b Fe(DRAFT)121 b Fd(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2796 100 V 1057 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 │ │ │ │ @@ -3377,25 +3367,24 @@ │ │ │ │ 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 1016 4 v │ │ │ │ -1197 w Fg(DChvList)29 b Fd(:)40 b Fe(DRAFT)30 b Fd(F)-8 │ │ │ │ -b(ebruary)31 b(29,)g(2024)p 2885 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 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fh(4)p 136 100 1057 4 v │ │ │ │ +1239 w Fg(DChvList)28 b Fd(:)40 b Fe(DRAFT)31 b Fd(Octob)s(er)f(4,)h │ │ │ │ +(2025)p 2844 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 │ │ │ │ 486 1289 29 4 v 32 w(clearData\(\))p Fh(,)27 b(3)0 1402 │ │ │ │ y Fg(ChvManager)p 486 1402 V 32 w(free\(\))p Fh(,)i(3)0 │ │ │ │ 1515 y Fg(ChvManager)p 486 1515 V 32 w(init\(\))p Fh(,)g(3)0 │ │ │ │ 1628 y Fg(ChvManager)p 486 1628 V 32 w(new\(\))p Fh(,)g(2)0 │ │ │ │ 1741 y Fg(ChvManager)p 486 1741 V 32 w(newObjectOfSizeNbytes\(\))o │ │ │ │ ├── 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 February 29, 2024 │ │ │ │ │ + 2 DChvList : DRAFT October 4, 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 February 29, 2024 3 │ │ │ │ │ + DChvList : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 4 DChvList : DRAFT October 4, 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 2024.02.29:1857 │ │ │ │ +%DVIPSSource: TeX output 2025.10.04:1733 │ │ │ │ %%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 │ │ │ │ @@ -1238,23 +1238,23 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 50 /two put │ │ │ │ dup 52 /four put │ │ │ │ -dup 57 /nine put │ │ │ │ +dup 53 /five put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 70 /F put │ │ │ │ -dup 97 /a put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ +dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ -dup 117 /u put │ │ │ │ -dup 121 /y put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1428,95 +1428,85 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA647CD0E2539DFAD9604486DCCFA49 │ │ │ │ -AC96130D106A8F8387633622C3809400D6E8FF9D60877C743502E4D211CEBF62 │ │ │ │ -9A6F91045C22D5D20C5FF677D89983D02E5EE26C71A9EAE0E7C52465DA5A149A │ │ │ │ -9B731C27EC8366BC3E841C0CAE49A33DE164A857365B17B09CAD121C47A980CB │ │ │ │ -C75E1030F6C394EDB46C54B46880D2344127B903FB22684C9CAACE6053DC3BFA │ │ │ │ -4E47C565ECAF19C4295A11BD68CA6D45B5738B932BB3690A8C712904C49C1636 │ │ │ │ -A7702075F2FEA8DB3EB3A3C1216BB769DD0BAF4507A18E3052F2C846B0797933 │ │ │ │ -8CE9BB2DB5DFADAF1B0FC3A22BAB82A0D5D290F7AD950013CFA465BE11C1076D │ │ │ │ -5833FF92321FBF90D9229D3BA09DD18EEC44D9FCF8FCF63CC09D2977BFA798B6 │ │ │ │ -47FB047EA6AF69C7DE570176F5B6C0FED74DEDBF7DDF49550DD84BA14AC09423 │ │ │ │ -F70D5B14F0F8588F1E2FFE0DFE0760E77A9E39DEDAC5C5AE3760722C029B916D │ │ │ │ -96A2A7D1DD6A61F90B4B9806314A668EB7A0E107A3527310A240490453CC18D7 │ │ │ │ -3793B4CF3CE13EA332E7F5C2BACF85AC75FE84693B966BB0F6FB9A179A331C4E │ │ │ │ -55E9EF30E2734E44A88E053CD5E650D7E529E94CB7F8B733E68315ACAC5BEFC5 │ │ │ │ -3FE4F585F875310267865679AB381125C31E9AEB7226DC9F18DA80A9DE2F38A4 │ │ │ │ -51B8F9D5B2FBA0F50D53AE6212AFE41466A594F7A303B4E82F1493C0B8D65756 │ │ │ │ -BE6AF2931E5ADA5CE7D51CB5B1EC916C6C6D674808939331CA66F8181DD2B112 │ │ │ │ -1A12198CCCB6BBF1D40C803E794B65241ACE1E0D30CCA1C6F2D3E1415B98726B │ │ │ │ -9BA303BE2C4C276108CC78C093F1CC85CA454CC38535D1DEBFA341D84E8A5DDF │ │ │ │ -D53D8DD0F4A812B5BA63871BEB3BCE93FBC77AD395914E2CD757546C2BE2D641 │ │ │ │ -FDB12258E1E1D10E1B963EABB265F2C8B2547D48963E1AD3B223B666B46915A1 │ │ │ │ -157F5EA0AB8D8411C07AA2EB5D0EF1A1BA6D81C47473A3D3D6287104C7BF61F8 │ │ │ │ -3BDB64995DE96A65BF2B7288C51ADAA3D373A95C40D5240C5FF397551554AA9E │ │ │ │ -C89C7E45AA7738503CB058EF6AD5052CC78E4445C810C250BF25394B8D7DE82E │ │ │ │ -315C9CCD6E1E9150EC79EE0F354C668AE199C1AFF39C67337A86CB932E8D64E9 │ │ │ │ -389FF3CC08B538492DEED017686DBB9BDEA30FE67FB4EBDB3627C16FD15F243A │ │ │ │ -7FDEB310EFC940E57726E94340472F2C452815927ADE21578C959890216BE504 │ │ │ │ -225BE4B4D2E3B19F5E06B5A0B25AF168C3A2B26F599A829F89C16BD2026E8CC9 │ │ │ │ -8FB3CBB830C3E36C099071A70D0B8834FF2C17364EB50D5C71440CC7BFE02321 │ │ │ │ -8C6ECAC2F7EC1BE39077DB0E8B2B251626A71FD038EB2CF1FC254D98C1535CAA │ │ │ │ -A8C987BC266482BD860A333048E1EDB3DD40A6ECD6DA0088AD9B9640202D89AA │ │ │ │ -0BB9A0ADF63491E67F2E97E35942D77E59B9B8AB0ED28B022EE5CD3449FC5B7A │ │ │ │ -19E38845B488F97D155C4312885E29537EAE97719C65845663480CE79DE8F037 │ │ │ │ -68995C0928FE8AFBEE554F01381EE5187578DF5D2542F26F66A599EE8ECC1F68 │ │ │ │ -FBADF3C2BA968C3CEB86675CF9A6CFD736E1422800D270417D497903DE87F2AE │ │ │ │ -938E39E120E9D3079F512E545E0E2616B84E81FE41392184F96818A7C86BF541 │ │ │ │ -F2E67C48CA56DA838C9FA0FAD538073B9F26319140D1F80EEEBCA190DE660A31 │ │ │ │ -457CAC16E92F87449A3734F9EA751588514865B58DC073658C8A857B5398AAC7 │ │ │ │ -3DC11E069996EF74A3189A07630D5DB87C5E028CD193C086B4D0E8BABC4F2393 │ │ │ │ -235EC96091B16C4A6D97DA1BD30A2D2E71F55869223CA66AD12448B668685F6E │ │ │ │ -06E7888D7F20045C662C4F7994CC7E1CE9AAC33A026716AA0551DF12343F0E22 │ │ │ │ -6E9F4B21C90406CC4997601194EF37A973221D1F4D73DD5666BD297F621C92AA │ │ │ │ -E3F698BC1146ADE754C4120EDF5B3E974D75A237E51DB49D52CD6CC7C9E8BD2D │ │ │ │ -E6849DF8F4DBA86C655D0C57CB54836C8A841C1D814F6B493F96ADBFCAD78D3B │ │ │ │ -430C58EF169950851B6A0B46411488B1A6F6974832787A24C0CDDBE27996EFB1 │ │ │ │ -DB341FA34B1DC6238D978D1E1D34AF3FB375ED6DA9C88699F195C88A54622F7C │ │ │ │ -36DAFC663D85660E756733A7E22F20C6A5D91F06087CAD10F7217BD33F343DC6 │ │ │ │ -F5EB9F16FE763672243EE6AE5CB6063A1D64670E1C059DD52134974E27D9D89C │ │ │ │ -BC658FCD814F20703D610C978FDCD6E2AEA31C18D1A310F215B28199F66C87DB │ │ │ │ -3B23980A393E1DD77AFA3045EDB6942505F3CF6204315A14E5B6BF2E96F3BB1F │ │ │ │ -628D24AC1893BC7DAEF3AA63F2116837F31DB90D872CBD9E5C48BCDEE781D20D │ │ │ │ -C6553D2D15F4E8438A9D1C7CEE1B72BD6AA08DC0AFEAF8B4DC1038707EE4A1BF │ │ │ │ -3D84460E60AF90F55002C1D8EBF0700F7EC3EFC944BEA78D0E0536F3AA6D9A84 │ │ │ │ -604A781AC5ACFEB7E681365315EE11E991C03DA431B65B332AD8F83F6F3AE66C │ │ │ │ -1BF434D3793FB5BCC44E44ACFF2855C2770C4AC678C6ACD6EB071974ACF1AE37 │ │ │ │ -D02C1736C62CC205A2F3488448527EFFA379613A8E6A6D134F4BFBAE6127304D │ │ │ │ -576C900A458E32CD42A4674415E03D8EB5742E71B854B3EDFD271AA214436544 │ │ │ │ -D1BCFD52F439298847E1FA258E5D38384FC85BC4EDC6F9E4431621CF763B137B │ │ │ │ -22DB6E3268B3F78881D55EA7C52ABF23FB73C152B06B708084FE1B00CFE72D9D │ │ │ │ -57B62AEE912E63BBD89D4D13CE896735454F1A16C3D9FB6CDF142CCA9F1C0242 │ │ │ │ -46F62109DF30667DA327F7CF6DC19B880C860C69080597FFCB1793313E202D4F │ │ │ │ -120A7C6B052C2EB7597B71B0985D24FDD2D3918393BF720E762C5DBBC2BB1E91 │ │ │ │ -B04560364EFE5B16EB068E0560FB932E0C617CFB95A166388E99AC4CB020F5BC │ │ │ │ -E24BB77352D7C3B21C37D404051A70FFFA0F726C35501A1FBB411F832CE46A2E │ │ │ │ -B424E26BD4 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFD8CDE285A2827F4659E339460ABEF319FE44D7A91E93CA309E9266E03DA │ │ │ │ +735F5DEF3920C01189BB63C2BD7ED0B92EABB481F123641477CDCCAB9751FB7B │ │ │ │ +F67DA7CE6EB134BC10D0228562BA5A6BFE6940907EF030ABF9EC4A8A0DFEF73D │ │ │ │ +3289E8CB4DC37694F5A656A935D92C72B3D82B012F578A27711B161DE9652ADC │ │ │ │ +71C51E743E4E9A7C6CF6FF16C5D65C1F60954C0858B48FAAC4FBB21988E2A934 │ │ │ │ +AC50C097DDF42C416359647D79F830E1430FB9BB803451A6732D1B5CAB817C1B │ │ │ │ +673B3077D9A180F184267E9990C087BCDEBC8EB8B889934DD0EB63C2EBCED4A3 │ │ │ │ +83A0D6A365412CFF610EF7BD5F82B02AA293F1D2F868768CDE9B801C929B4A38 │ │ │ │ +64E20C70BC4041F837AD15423517F7336A067D140A2C7906DC5D45885FFB3B69 │ │ │ │ +724E5B9B138BD15A9359EB25D14BC4193E529D1A49FEB0DC1015BF94CEBBD5E0 │ │ │ │ +EA148B185C53E12BD9FA6DBC097D789A73E832F02F55080D8ED6087F5952EA78 │ │ │ │ +250A4C65CE4C4013554A031446D2092D813C4CB1A605D97A40CF867F656ECD1C │ │ │ │ +C23F80230AD1E449AA8B4007134F71156719206441D92B1A6DD25101ABF69F70 │ │ │ │ +538CCCE216376E1BD6E423986BD4E83B1975B15092D4E19F885672F9E7C02485 │ │ │ │ +E02DA0F4243D324A5983D1D46444E5F6573F699E4F2A3395EF0EB7808B7D4D62 │ │ │ │ +690FD033E93AA553082273636503DA4BBBBFA6D127CE10424DD1DDF4F879305C │ │ │ │ +14F64180E7851D091B3220DFC70CAA44716B8F7F0C6FBEDB167801DED77F9E69 │ │ │ │ +E9B31CD2D8044DB946E511162976C34DE27F2BB974B70509005562A0A21317B7 │ │ │ │ +46D826A31C476C8F9A778F941FF5956BA2D765B1AD0AC4BC7AE1CD8A2A81F039 │ │ │ │ +06EB13EBD099BBDB2EBDB54D459C288EA69FB0018CE9255BBFB08C1F90FF30BD │ │ │ │ +C971DA7FDB193281B8F967F21AB42F13F36085AC9EC0D6B6B448C8F289B0AD70 │ │ │ │ +DB521A4755ECF9CA594741E5C674220C21C265EF3BAE594197B00048C8D4DB73 │ │ │ │ +4AC47B6A86EAC7EECD042C8E23C347F8C9FCB870473C1FBD91C298174BCBF1A9 │ │ │ │ +7B366C570A9A04A433495FBC9FD0FFC22A0E8181424C0F038ED97AD5054B10CC │ │ │ │ +1CD5BA0719DD0B4F4F18932AE87FF8B8C1CF0C7482B7847049761505DCD85146 │ │ │ │ +4EE5CB53993A9449CD05233E961BD49AE92D308E2065D6C6BF038538039AA56A │ │ │ │ +C59D424BE3175427337E16892D3920598D518423E145C6B2DD3881F338845F0D │ │ │ │ +16C47AA0D9C2D6DE99C6A302D567ACD6F98BF38223F1890E099C8F93348FFDAA │ │ │ │ +C2D3440187C8FED87C1A891EF11EFA7168EC47F72AF8BC5BE1B88B1084E704F5 │ │ │ │ +82099F1A79E556D94CC38851C97DC3864945A7470F1389BCF608BADAE45B236D │ │ │ │ +2934A20FFBCF169BF84DF496B07E7F1D9002E62B030337642804403DF7E4B3FF │ │ │ │ +C5A421EE0033BA06C50A041FBFE8F81AFC145664E2976505EB14859CF0377EBA │ │ │ │ +EA604CF8BFB5F9ADB9A7ED56E6F0F919E791D57C7232241C892EAC3E55D2D03B │ │ │ │ +FF43B9DAB7B1D8C6588D6D3503F49E80121E52254431B308752A936E0B51124D │ │ │ │ +C7F23C316BA6FA73E6BC47EB9550003E1393C68360067C094C65C0DD17214FA0 │ │ │ │ +45FF0F9C3E0AE4C81093752D23EA95E163C98EC04873ECE3FB0882567329525C │ │ │ │ +0A3937B16CA72B5EB6D2DC10C1B485C0BA939587AFEBB6D837A40401C666BC1C │ │ │ │ +F3344FBAB3E48BEE18F3AF5CDB33BA63778D373A851333C8C34E2F35AB94E8B4 │ │ │ │ +FF7E62A92ED83B872894E0A17209E14CF61269204A35A4BC8C7EE4B16F19E91F │ │ │ │ +669C4EFCECB187F6C7FAF92B4E14E400C6B3C81679D4A7196D66DB1E897DDA42 │ │ │ │ +47CC2848B46D581A95EEF85AB528E8CDEEB275D1E1FE197A3A08D36406E2DADF │ │ │ │ +A87D817AF18B5525F89B7C2E584F4A1254A1FC71E749999A2152870631A69CB6 │ │ │ │ +666EBD6BB3366A598F6592040D0E82B9D866DF0A76C362E76C2804D108A0C148 │ │ │ │ +51F42E9E0ABD52CC2D02B156B63AFD03313AFC80EACC83DF9B59F05FD798951D │ │ │ │ +FCF5335636DFC6561910ACE0AEC47F74CFD302EB7421D28AAAC8FF82B7CE2B2A │ │ │ │ +340B8BCE09F57BFCBC77F91096D97A85726E68846398C8C9C8D3A65A252AE8FB │ │ │ │ +166750C244963BC61E2236BAAC529FABD6FC774550096374A8DB81B6AF1EA843 │ │ │ │ +27F671C0045D629E3734EF037447C4763514FD1C4AE858A494AFC23A64C82149 │ │ │ │ +F4C0A7023B3865B84FAC2DC88D1553DCEBA3D8FB5DBC1103123F6B8CB5B3A399 │ │ │ │ +B665B26B001BF1E4BFABE42BFF6B02D69FA88D5CBCA5A11D5B48CFB4EAE60558 │ │ │ │ +5FBE254AD3BE01761CD4995E766E172D768621223505FD6AA8F89FC042EB814C │ │ │ │ +34373DAEC4FAAF71C0752F814154C5299F751CE7E0F9C673D2E448D0204C214C │ │ │ │ +C04DC34671FBEF72350FFBA263662E86A0D3795E310153AAF4C8A2623E167E6E │ │ │ │ +1F13A9BA485D5DDFC451D691DBA7C49E20354A7AD79D89F7EDE24F0D5B48B27D │ │ │ │ +568D01EF2555504196C09841F5970D8CF6C5D47FFFCF18AE6B2A485342000AAD │ │ │ │ +1F922FBEF7C98E0965609C89240E7B131A59551F57CD5C92097FCE75F5D2778F │ │ │ │ +F9ACF43A3273551363442C8C539205903A835C744A4AA953545506081D3D231A │ │ │ │ +A140E01F280BC42A3C35EDAD5F6B8CE6E51C68E41CA813710864ED880FCE846C │ │ │ │ +1B66D27CC2DBCDC2B1B96A12490BD76D67A415D4A6595CD9B19D3104A83D2C82 │ │ │ │ +C46DCD2C027F0565EDB83E54FF99498194D3140E55E8EE65EBDEAC5409B5616A │ │ │ │ +73141DA2D581E300A6057F4301A02DD160AB3E55A116313525122D0608816AA8 │ │ │ │ +4712EEF3D6FE8C893DF37D │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3896,15 +3886,15 @@ │ │ │ │ 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 134[48 3[51 2[36 12[40 2[51 45 26[59 11[25 45 4[45 │ │ │ │ +/Fc 139[35 1[36 2[45 9[40 1[40 51 18[71 20[25 4[45 45 │ │ │ │ 1[45 1[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 │ │ │ │ @@ -4011,34 +4001,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 1063 4 v │ │ │ │ -1245 w Fj(Coords)29 b Fc(:)41 b Fb(DRAFT)30 b Fc(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2837 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 1105 4 v │ │ │ │ +1286 w Fj(Coords)29 b Fc(:)41 b Fb(DRAFT)30 b Fc(Octob)s(er)g(4,)h │ │ │ │ +(2025)p 2796 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 │ │ │ │ @@ -4090,17 +4080,17 @@ │ │ │ │ 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 1063 4 v 1245 100 a Fj(Coords)28 │ │ │ │ -b Fc(:)41 b Fb(DRAFT)121 b Fc(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2790 100 V 1063 w Fk(3)227 399 y(This)f(metho)s(d)g(initializes)i(a)f │ │ │ │ +TeXDict begin 3 2 bop 91 100 1105 4 v 1286 100 a Fj(Coords)29 │ │ │ │ +b Fc(:)40 b Fb(DRAFT)121 b Fc(Octob)s(er)31 b(4,)g(2025)p │ │ │ │ +2749 100 V 1105 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 │ │ │ │ @@ -4181,32 +4171,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 1063 4 v │ │ │ │ -1245 w Fj(Coords)29 b Fc(:)41 b Fb(DRAFT)30 b Fc(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2837 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 1105 4 v │ │ │ │ +1286 w Fj(Coords)29 b Fc(:)41 b Fb(DRAFT)30 b Fc(Octob)s(er)g(4,)h │ │ │ │ +(2025)p 2796 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 │ │ │ │ @@ -4268,17 +4258,17 @@ │ │ │ │ 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 1063 4 v 1245 100 a Fj(Coords)28 │ │ │ │ -b Fc(:)41 b Fb(DRAFT)121 b Fc(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2790 100 V 1063 w Fk(5)111 399 y(7.)46 b Fj(int)h │ │ │ │ +TeXDict begin 5 4 bop 91 100 1105 4 v 1286 100 a Fj(Coords)29 │ │ │ │ +b Fc(:)40 b Fb(DRAFT)121 b Fc(Octob)s(er)31 b(4,)g(2025)p │ │ │ │ +2749 100 V 1105 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 │ │ │ │ @@ -4342,26 +4332,26 @@ │ │ │ │ 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 1063 4 v │ │ │ │ -1245 w Fj(Coords)29 b Fc(:)41 b Fb(DRAFT)30 b Fc(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2837 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 Fj(*.coordsf)p Fk(\),)i(or)h(a)h(binary)e(\014le)i(\(if)g │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fk(6)p 136 100 1105 4 v │ │ │ │ +1286 w Fj(Coords)29 b Fc(:)41 b Fb(DRAFT)30 b Fc(Octob)s(er)g(4,)h │ │ │ │ +(2025)p 2796 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 │ │ │ │ +Fj(*.coordsf)p Fk(\),)i(or)h(a)h(binary)e(\014le)i(\(if)g │ │ │ │ Fj(outCoordsFile)26 b Fk(is)31 b(of)f(the)h(form)f Fj(*.coordsb)p │ │ │ │ Fk(\).)p eop end │ │ │ │ %%Page: 7 7 │ │ │ │ TeXDict begin 7 6 bop 0 866 a Fl(Index)0 1289 y Fj(Coords)p │ │ │ │ 294 1289 29 4 v 33 w(clearData\(\))p Fk(,)27 b(2)0 1402 │ │ │ │ y Fj(Coords)p 294 1402 V 33 w(free\(\))p Fk(,)i(2)0 1515 │ │ │ │ y Fj(Coords)p 294 1515 V 33 w(init\(\))p Fk(,)g(2)0 1628 │ │ │ │ ├── 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 February 29, 2024 │ │ │ │ │ + 2 Coords : DRAFT October 4, 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 February 29, 2024 3 │ │ │ │ │ + Coords : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 4 Coords : DRAFT October 4, 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 February 29, 2024 5 │ │ │ │ │ + Coords : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 6 Coords : DRAFT October 4, 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 2024.02.29:1857 │ │ │ │ +%DVIPSSource: TeX output 2025.10.04:1733 │ │ │ │ %%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,23 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 50 /two put │ │ │ │ dup 52 /four put │ │ │ │ -dup 57 /nine put │ │ │ │ +dup 53 /five put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 70 /F put │ │ │ │ -dup 97 /a put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ +dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ -dup 117 /u put │ │ │ │ -dup 121 /y put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1598,95 +1598,85 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA647CD0E2539DFAD9604486DCCFA49 │ │ │ │ -AC96130D106A8F8387633622C3809400D6E8FF9D60877C743502E4D211CEBF62 │ │ │ │ -9A6F91045C22D5D20C5FF677D89983D02E5EE26C71A9EAE0E7C52465DA5A149A │ │ │ │ -9B731C27EC8366BC3E841C0CAE49A33DE164A857365B17B09CAD121C47A980CB │ │ │ │ -C75E1030F6C394EDB46C54B46880D2344127B903FB22684C9CAACE6053DC3BFA │ │ │ │ -4E47C565ECAF19C4295A11BD68CA6D45B5738B932BB3690A8C712904C49C1636 │ │ │ │ -A7702075F2FEA8DB3EB3A3C1216BB769DD0BAF4507A18E3052F2C846B0797933 │ │ │ │ -8CE9BB2DB5DFADAF1B0FC3A22BAB82A0D5D290F7AD950013CFA465BE11C1076D │ │ │ │ -5833FF92321FBF90D9229D3BA09DD18EEC44D9FCF8FCF63CC09D2977BFA798B6 │ │ │ │ -47FB047EA6AF69C7DE570176F5B6C0FED74DEDBF7DDF49550DD84BA14AC09423 │ │ │ │ -F70D5B14F0F8588F1E2FFE0DFE0760E77A9E39DEDAC5C5AE3760722C029B916D │ │ │ │ -96A2A7D1DD6A61F90B4B9806314A668EB7A0E107A3527310A240490453CC18D7 │ │ │ │ -3793B4CF3CE13EA332E7F5C2BACF85AC75FE84693B966BB0F6FB9A179A331C4E │ │ │ │ -55E9EF30E2734E44A88E053CD5E650D7E529E94CB7F8B733E68315ACAC5BEFC5 │ │ │ │ -3FE4F585F875310267865679AB381125C31E9AEB7226DC9F18DA80A9DE2F38A4 │ │ │ │ -51B8F9D5B2FBA0F50D53AE6212AFE41466A594F7A303B4E82F1493C0B8D65756 │ │ │ │ -BE6AF2931E5ADA5CE7D51CB5B1EC916C6C6D674808939331CA66F8181DD2B112 │ │ │ │ -1A12198CCCB6BBF1D40C803E794B65241ACE1E0D30CCA1C6F2D3E1415B98726B │ │ │ │ -9BA303BE2C4C276108CC78C093F1CC85CA454CC38535D1DEBFA341D84E8A5DDF │ │ │ │ -D53D8DD0F4A812B5BA63871BEB3BCE93FBC77AD395914E2CD757546C2BE2D641 │ │ │ │ -FDB12258E1E1D10E1B963EABB265F2C8B2547D48963E1AD3B223B666B46915A1 │ │ │ │ -157F5EA0AB8D8411C07AA2EB5D0EF1A1BA6D81C47473A3D3D6287104C7BF61F8 │ │ │ │ -3BDB64995DE96A65BF2B7288C51ADAA3D373A95C40D5240C5FF397551554AA9E │ │ │ │ -C89C7E45AA7738503CB058EF6AD5052CC78E4445C810C250BF25394B8D7DE82E │ │ │ │ -315C9CCD6E1E9150EC79EE0F354C668AE199C1AFF39C67337A86CB932E8D64E9 │ │ │ │ -389FF3CC08B538492DEED017686DBB9BDEA30FE67FB4EBDB3627C16FD15F243A │ │ │ │ -7FDEB310EFC940E57726E94340472F2C452815927ADE21578C959890216BE504 │ │ │ │ -225BE4B4D2E3B19F5E06B5A0B25AF168C3A2B26F599A829F89C16BD2026E8CC9 │ │ │ │ -8FB3CBB830C3E36C099071A70D0B8834FF2C17364EB50D5C71440CC7BFE02321 │ │ │ │ -8C6ECAC2F7EC1BE39077DB0E8B2B251626A71FD038EB2CF1FC254D98C1535CAA │ │ │ │ -A8C987BC266482BD860A333048E1EDB3DD40A6ECD6DA0088AD9B9640202D89AA │ │ │ │ -0BB9A0ADF63491E67F2E97E35942D77E59B9B8AB0ED28B022EE5CD3449FC5B7A │ │ │ │ -19E38845B488F97D155C4312885E29537EAE97719C65845663480CE79DE8F037 │ │ │ │ -68995C0928FE8AFBEE554F01381EE5187578DF5D2542F26F66A599EE8ECC1F68 │ │ │ │ -FBADF3C2BA968C3CEB86675CF9A6CFD736E1422800D270417D497903DE87F2AE │ │ │ │ -938E39E120E9D3079F512E545E0E2616B84E81FE41392184F96818A7C86BF541 │ │ │ │ -F2E67C48CA56DA838C9FA0FAD538073B9F26319140D1F80EEEBCA190DE660A31 │ │ │ │ -457CAC16E92F87449A3734F9EA751588514865B58DC073658C8A857B5398AAC7 │ │ │ │ -3DC11E069996EF74A3189A07630D5DB87C5E028CD193C086B4D0E8BABC4F2393 │ │ │ │ -235EC96091B16C4A6D97DA1BD30A2D2E71F55869223CA66AD12448B668685F6E │ │ │ │ -06E7888D7F20045C662C4F7994CC7E1CE9AAC33A026716AA0551DF12343F0E22 │ │ │ │ -6E9F4B21C90406CC4997601194EF37A973221D1F4D73DD5666BD297F621C92AA │ │ │ │ -E3F698BC1146ADE754C4120EDF5B3E974D75A237E51DB49D52CD6CC7C9E8BD2D │ │ │ │ -E6849DF8F4DBA86C655D0C57CB54836C8A841C1D814F6B493F96ADBFCAD78D3B │ │ │ │ -430C58EF169950851B6A0B46411488B1A6F6974832787A24C0CDDBE27996EFB1 │ │ │ │ -DB341FA34B1DC6238D978D1E1D34AF3FB375ED6DA9C88699F195C88A54622F7C │ │ │ │ -36DAFC663D85660E756733A7E22F20C6A5D91F06087CAD10F7217BD33F343DC6 │ │ │ │ -F5EB9F16FE763672243EE6AE5CB6063A1D64670E1C059DD52134974E27D9D89C │ │ │ │ -BC658FCD814F20703D610C978FDCD6E2AEA31C18D1A310F215B28199F66C87DB │ │ │ │ -3B23980A393E1DD77AFA3045EDB6942505F3CF6204315A14E5B6BF2E96F3BB1F │ │ │ │ -628D24AC1893BC7DAEF3AA63F2116837F31DB90D872CBD9E5C48BCDEE781D20D │ │ │ │ -C6553D2D15F4E8438A9D1C7CEE1B72BD6AA08DC0AFEAF8B4DC1038707EE4A1BF │ │ │ │ -3D84460E60AF90F55002C1D8EBF0700F7EC3EFC944BEA78D0E0536F3AA6D9A84 │ │ │ │ -604A781AC5ACFEB7E681365315EE11E991C03DA431B65B332AD8F83F6F3AE66C │ │ │ │ -1BF434D3793FB5BCC44E44ACFF2855C2770C4AC678C6ACD6EB071974ACF1AE37 │ │ │ │ -D02C1736C62CC205A2F3488448527EFFA379613A8E6A6D134F4BFBAE6127304D │ │ │ │ -576C900A458E32CD42A4674415E03D8EB5742E71B854B3EDFD271AA214436544 │ │ │ │ -D1BCFD52F439298847E1FA258E5D38384FC85BC4EDC6F9E4431621CF763B137B │ │ │ │ -22DB6E3268B3F78881D55EA7C52ABF23FB73C152B06B708084FE1B00CFE72D9D │ │ │ │ -57B62AEE912E63BBD89D4D13CE896735454F1A16C3D9FB6CDF142CCA9F1C0242 │ │ │ │ -46F62109DF30667DA327F7CF6DC19B880C860C69080597FFCB1793313E202D4F │ │ │ │ -120A7C6B052C2EB7597B71B0985D24FDD2D3918393BF720E762C5DBBC2BB1E91 │ │ │ │ -B04560364EFE5B16EB068E0560FB932E0C617CFB95A166388E99AC4CB020F5BC │ │ │ │ -E24BB77352D7C3B21C37D404051A70FFFA0F726C35501A1FBB411F832CE46A2E │ │ │ │ -B424E26BD4 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFD8CDE285A2827F4659E339460ABEF319FE44D7A91E93CA309E9266E03DA │ │ │ │ +735F5DEF3920C01189BB63C2BD7ED0B92EABB481F123641477CDCCAB9751FB7B │ │ │ │ +F67DA7CE6EB134BC10D0228562BA5A6BFE6940907EF030ABF9EC4A8A0DFEF73D │ │ │ │ +3289E8CB4DC37694F5A656A935D92C72B3D82B012F578A27711B161DE9652ADC │ │ │ │ +71C51E743E4E9A7C6CF6FF16C5D65C1F60954C0858B48FAAC4FBB21988E2A934 │ │ │ │ +AC50C097DDF42C416359647D79F830E1430FB9BB803451A6732D1B5CAB817C1B │ │ │ │ +673B3077D9A180F184267E9990C087BCDEBC8EB8B889934DD0EB63C2EBCED4A3 │ │ │ │ +83A0D6A365412CFF610EF7BD5F82B02AA293F1D2F868768CDE9B801C929B4A38 │ │ │ │ +64E20C70BC4041F837AD15423517F7336A067D140A2C7906DC5D45885FFB3B69 │ │ │ │ +724E5B9B138BD15A9359EB25D14BC4193E529D1A49FEB0DC1015BF94CEBBD5E0 │ │ │ │ +EA148B185C53E12BD9FA6DBC097D789A73E832F02F55080D8ED6087F5952EA78 │ │ │ │ +250A4C65CE4C4013554A031446D2092D813C4CB1A605D97A40CF867F656ECD1C │ │ │ │ +C23F80230AD1E449AA8B4007134F71156719206441D92B1A6DD25101ABF69F70 │ │ │ │ +538CCCE216376E1BD6E423986BD4E83B1975B15092D4E19F885672F9E7C02485 │ │ │ │ +E02DA0F4243D324A5983D1D46444E5F6573F699E4F2A3395EF0EB7808B7D4D62 │ │ │ │ +690FD033E93AA553082273636503DA4BBBBFA6D127CE10424DD1DDF4F879305C │ │ │ │ +14F64180E7851D091B3220DFC70CAA44716B8F7F0C6FBEDB167801DED77F9E69 │ │ │ │ +E9B31CD2D8044DB946E511162976C34DE27F2BB974B70509005562A0A21317B7 │ │ │ │ +46D826A31C476C8F9A778F941FF5956BA2D765B1AD0AC4BC7AE1CD8A2A81F039 │ │ │ │ +06EB13EBD099BBDB2EBDB54D459C288EA69FB0018CE9255BBFB08C1F90FF30BD │ │ │ │ +C971DA7FDB193281B8F967F21AB42F13F36085AC9EC0D6B6B448C8F289B0AD70 │ │ │ │ +DB521A4755ECF9CA594741E5C674220C21C265EF3BAE594197B00048C8D4DB73 │ │ │ │ +4AC47B6A86EAC7EECD042C8E23C347F8C9FCB870473C1FBD91C298174BCBF1A9 │ │ │ │ +7B366C570A9A04A433495FBC9FD0FFC22A0E8181424C0F038ED97AD5054B10CC │ │ │ │ +1CD5BA0719DD0B4F4F18932AE87FF8B8C1CF0C7482B7847049761505DCD85146 │ │ │ │ +4EE5CB53993A9449CD05233E961BD49AE92D308E2065D6C6BF038538039AA56A │ │ │ │ +C59D424BE3175427337E16892D3920598D518423E145C6B2DD3881F338845F0D │ │ │ │ +16C47AA0D9C2D6DE99C6A302D567ACD6F98BF38223F1890E099C8F93348FFDAA │ │ │ │ +C2D3440187C8FED87C1A891EF11EFA7168EC47F72AF8BC5BE1B88B1084E704F5 │ │ │ │ +82099F1A79E556D94CC38851C97DC3864945A7470F1389BCF608BADAE45B236D │ │ │ │ +2934A20FFBCF169BF84DF496B07E7F1D9002E62B030337642804403DF7E4B3FF │ │ │ │ +C5A421EE0033BA06C50A041FBFE8F81AFC145664E2976505EB14859CF0377EBA │ │ │ │ +EA604CF8BFB5F9ADB9A7ED56E6F0F919E791D57C7232241C892EAC3E55D2D03B │ │ │ │ +FF43B9DAB7B1D8C6588D6D3503F49E80121E52254431B308752A936E0B51124D │ │ │ │ +C7F23C316BA6FA73E6BC47EB9550003E1393C68360067C094C65C0DD17214FA0 │ │ │ │ +45FF0F9C3E0AE4C81093752D23EA95E163C98EC04873ECE3FB0882567329525C │ │ │ │ +0A3937B16CA72B5EB6D2DC10C1B485C0BA939587AFEBB6D837A40401C666BC1C │ │ │ │ +F3344FBAB3E48BEE18F3AF5CDB33BA63778D373A851333C8C34E2F35AB94E8B4 │ │ │ │ +FF7E62A92ED83B872894E0A17209E14CF61269204A35A4BC8C7EE4B16F19E91F │ │ │ │ +669C4EFCECB187F6C7FAF92B4E14E400C6B3C81679D4A7196D66DB1E897DDA42 │ │ │ │ +47CC2848B46D581A95EEF85AB528E8CDEEB275D1E1FE197A3A08D36406E2DADF │ │ │ │ +A87D817AF18B5525F89B7C2E584F4A1254A1FC71E749999A2152870631A69CB6 │ │ │ │ +666EBD6BB3366A598F6592040D0E82B9D866DF0A76C362E76C2804D108A0C148 │ │ │ │ +51F42E9E0ABD52CC2D02B156B63AFD03313AFC80EACC83DF9B59F05FD798951D │ │ │ │ +FCF5335636DFC6561910ACE0AEC47F74CFD302EB7421D28AAAC8FF82B7CE2B2A │ │ │ │ +340B8BCE09F57BFCBC77F91096D97A85726E68846398C8C9C8D3A65A252AE8FB │ │ │ │ +166750C244963BC61E2236BAAC529FABD6FC774550096374A8DB81B6AF1EA843 │ │ │ │ +27F671C0045D629E3734EF037447C4763514FD1C4AE858A494AFC23A64C82149 │ │ │ │ +F4C0A7023B3865B84FAC2DC88D1553DCEBA3D8FB5DBC1103123F6B8CB5B3A399 │ │ │ │ +B665B26B001BF1E4BFABE42BFF6B02D69FA88D5CBCA5A11D5B48CFB4EAE60558 │ │ │ │ +5FBE254AD3BE01761CD4995E766E172D768621223505FD6AA8F89FC042EB814C │ │ │ │ +34373DAEC4FAAF71C0752F814154C5299F751CE7E0F9C673D2E448D0204C214C │ │ │ │ +C04DC34671FBEF72350FFBA263662E86A0D3795E310153AAF4C8A2623E167E6E │ │ │ │ +1F13A9BA485D5DDFC451D691DBA7C49E20354A7AD79D89F7EDE24F0D5B48B27D │ │ │ │ +568D01EF2555504196C09841F5970D8CF6C5D47FFFCF18AE6B2A485342000AAD │ │ │ │ +1F922FBEF7C98E0965609C89240E7B131A59551F57CD5C92097FCE75F5D2778F │ │ │ │ +F9ACF43A3273551363442C8C539205903A835C744A4AA953545506081D3D231A │ │ │ │ +A140E01F280BC42A3C35EDAD5F6B8CE6E51C68E41CA813710864ED880FCE846C │ │ │ │ +1B66D27CC2DBCDC2B1B96A12490BD76D67A415D4A6595CD9B19D3104A83D2C82 │ │ │ │ +C46DCD2C027F0565EDB83E54FF99498194D3140E55E8EE65EBDEAC5409B5616A │ │ │ │ +73141DA2D581E300A6057F4301A02DD160AB3E55A116313525122D0608816AA8 │ │ │ │ +4712EEF3D6FE8C893DF37D │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3659,16 +3649,16 @@ │ │ │ │ {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 134[48 3[51 2[36 12[40 2[51 45 │ │ │ │ -26[59 11[25 45 4[45 1[45 1[45 3[25 44[{}13 90.9091 /CMSL10 │ │ │ │ +119.552 /CMTT12 rf /Fd 139[35 1[36 2[45 9[40 1[40 51 │ │ │ │ +18[71 20[25 4[45 45 1[45 1[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 │ │ │ │ @@ -3786,56 +3776,55 @@ │ │ │ │ 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 1111 4 v │ │ │ │ -1293 w Fi(Tree)29 b Fd(:)41 b Fh(DRAFT)30 b Fd(F)-8 b(ebruary)30 │ │ │ │ -b(29,)i(2024)p 2789 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 │ │ │ │ -(clearing)0 1366 y(an)m(y)31 b(allo)s(cated)h(data,)f(and)f(free'ing)h │ │ │ │ -(the)g(ob)5 b(ject.)111 1629 y(1.)46 b Fi(DSTree)g(*)i(DSTree_new)d(\() │ │ │ │ -i(void)g(\))g(;)227 1789 y Fj(This)27 b(metho)s(d)f(allo)s(cates)k │ │ │ │ -(storage)e(for)f(an)g(instance)h(of)f(the)g Fi(DSTree)f │ │ │ │ -Fj(ob)5 b(ject.)40 b(The)27 b(default)g(\014elds)g(are)g(set)227 │ │ │ │ -1902 y(b)m(y)k(a)f(call)i(to)f Fi(DSTree)p 1001 1902 │ │ │ │ -29 4 v 33 w(setDefaultFields\(\))p Fj(.)111 2110 y(2.)46 │ │ │ │ -b Fi(void)h(DSTree_setDefaultFields)41 b(\()48 b(DSTree)e(*dstree)g(\)) │ │ │ │ -h(;)227 2271 y Fj(This)30 b(metho)s(d)g(sets)g(the)h(data)g(\014elds)f │ │ │ │ -(to)h(default)g(v)-5 b(alues:)41 b Fi(tree)29 b Fj(and)h │ │ │ │ -Fi(mapIV)f Fj(are)h(set)h(to)g Fi(NULL)f Fj(;)227 2431 │ │ │ │ -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 2639 y(3.)46 │ │ │ │ -b Fi(void)h(DSTree_clearData)c(\()48 b(DSTree)e(*dstree)g(\))h(;)227 │ │ │ │ -2800 y Fj(This)27 b(metho)s(d)g(clears)i(the)f(data)g(\014elds,)g │ │ │ │ -(free'ing)g(storage)h(that)g(has)e(b)s(een)g(allo)s(cated)j(b)m(y)d │ │ │ │ -(the)h(ob)5 b(ject)29 b(and)227 2912 y(free'ing)39 b(ob)5 │ │ │ │ -b(jects)39 b(that)f(it)h(o)m(wns.)63 b(This)37 b(metho)s(d)h(c)m(hec)m │ │ │ │ -(ks)h(to)g(see)g(whether)e Fi(dstree)f Fj(is)i Fi(NULL)p │ │ │ │ -Fj(.)g(If)f Fi(tree)227 3025 y Fj(is)c(not)g Fi(NULL)p │ │ │ │ -Fj(,)f(then)g Fi(Tree)p 1141 3025 V 33 w(free\(tree\))e │ │ │ │ -Fj(is)j(called.)48 b(If)33 b Fi(mapIV)e Fj(is)i(not)f │ │ │ │ -Fi(NULL)p Fj(,)g(then)h Fi(IV)p 3254 3025 V 33 w(free\(mapIV\))d │ │ │ │ -Fj(is)227 3138 y(called.)42 b(Then)29 b(the)h(structure's)g(default)g │ │ │ │ -(\014elds)f(are)i(set)f(via)h(a)f(call)h(to)g Fi(DSTree)p │ │ │ │ -2989 3138 V 33 w(setDefaultFields\(\))p Fj(.)227 3299 │ │ │ │ -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 3507 y(4.)46 │ │ │ │ -b Fi(void)h(DSTree_free)e(\()i(DSTree)f(*dstree)g(\))h(;)227 │ │ │ │ -3667 y Fj(This)37 b(metho)s(d)f(c)m(hec)m(ks)j(to)f(see)g(whether)f │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fj(2)p 136 100 1152 4 v │ │ │ │ +1334 w Fi(Tree)29 b Fd(:)41 b Fh(DRAFT)30 b Fd(Octob)s(er)g(4,)h(2025)p │ │ │ │ +2748 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(clearing)0 │ │ │ │ +1366 y(an)m(y)31 b(allo)s(cated)h(data,)f(and)f(free'ing)h(the)g(ob)5 │ │ │ │ +b(ject.)111 1629 y(1.)46 b Fi(DSTree)g(*)i(DSTree_new)d(\()i(void)g(\)) │ │ │ │ +g(;)227 1789 y Fj(This)27 b(metho)s(d)f(allo)s(cates)k(storage)e(for)f │ │ │ │ +(an)g(instance)h(of)f(the)g Fi(DSTree)f Fj(ob)5 b(ject.)40 │ │ │ │ +b(The)27 b(default)g(\014elds)g(are)g(set)227 1902 y(b)m(y)k(a)f(call)i │ │ │ │ +(to)f Fi(DSTree)p 1001 1902 29 4 v 33 w(setDefaultFields\(\))p │ │ │ │ +Fj(.)111 2110 y(2.)46 b Fi(void)h(DSTree_setDefaultFields)41 │ │ │ │ +b(\()48 b(DSTree)e(*dstree)g(\))h(;)227 2271 y Fj(This)30 │ │ │ │ +b(metho)s(d)g(sets)g(the)h(data)g(\014elds)f(to)h(default)g(v)-5 │ │ │ │ +b(alues:)41 b Fi(tree)29 b Fj(and)h Fi(mapIV)f Fj(are)h(set)h(to)g │ │ │ │ +Fi(NULL)f Fj(;)227 2431 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 2639 y(3.)46 b Fi(void)h(DSTree_clearData)c(\()48 │ │ │ │ +b(DSTree)e(*dstree)g(\))h(;)227 2800 y Fj(This)27 b(metho)s(d)g(clears) │ │ │ │ +i(the)f(data)g(\014elds,)g(free'ing)g(storage)h(that)g(has)e(b)s(een)g │ │ │ │ +(allo)s(cated)j(b)m(y)d(the)h(ob)5 b(ject)29 b(and)227 │ │ │ │ +2912 y(free'ing)39 b(ob)5 b(jects)39 b(that)f(it)h(o)m(wns.)63 │ │ │ │ +b(This)37 b(metho)s(d)h(c)m(hec)m(ks)h(to)g(see)g(whether)e │ │ │ │ +Fi(dstree)f Fj(is)i Fi(NULL)p Fj(.)g(If)f Fi(tree)227 │ │ │ │ +3025 y Fj(is)c(not)g Fi(NULL)p Fj(,)f(then)g Fi(Tree)p │ │ │ │ +1141 3025 V 33 w(free\(tree\))e Fj(is)j(called.)48 b(If)33 │ │ │ │ +b Fi(mapIV)e Fj(is)i(not)f Fi(NULL)p Fj(,)g(then)h Fi(IV)p │ │ │ │ +3254 3025 V 33 w(free\(mapIV\))d Fj(is)227 3138 y(called.)42 │ │ │ │ +b(Then)29 b(the)h(structure's)g(default)g(\014elds)f(are)i(set)f(via)h │ │ │ │ +(a)f(call)h(to)g Fi(DSTree)p 2989 3138 V 33 w(setDefaultFields\(\))p │ │ │ │ +Fj(.)227 3299 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 │ │ │ │ +3507 y(4.)46 b Fi(void)h(DSTree_free)e(\()i(DSTree)f(*dstree)g(\))h(;) │ │ │ │ +227 3667 y Fj(This)37 b(metho)s(d)f(c)m(hec)m(ks)j(to)f(see)g(whether)f │ │ │ │ Fi(dstree)e Fj(is)i Fi(NULL)p Fj(.)g(If)g(so,)i(an)e(error)g(message)h │ │ │ │ (is)g(prin)m(ted)f(and)227 3780 y(the)31 b(program)g(exits.)43 │ │ │ │ b(Otherwise,)31 b(it)g(releases)h(an)m(y)g(storage)g(b)m(y)f(a)g(call)h │ │ │ │ (to)g Fi(DSTree)p 3141 3780 V 32 w(clearData\(\))c Fj(then)227 │ │ │ │ 3893 y(free's)j(the)f(storage)i(for)e(the)h(structure)f(with)g(a)h │ │ │ │ (call)g(to)h Fi(free\(\))p Fj(.)227 4053 y Fh(Err)-5 │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fj(If)30 b Fi(dstree)f │ │ │ │ @@ -3851,17 +3840,17 @@ │ │ │ │ 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 1111 4 v 1292 100 a Fi(Tree)30 │ │ │ │ -b Fd(:)40 b Fh(DRAFT)121 b Fd(F)-8 b(ebruary)31 b(29,)g(2024)p │ │ │ │ -2742 100 V 1111 w Fj(3)0 399 y Fb(1.2.3)112 b(Initializer)38 │ │ │ │ +TeXDict begin 3 2 bop 91 100 1152 4 v 1334 100 a Fi(Tree)29 │ │ │ │ +b Fd(:)41 b Fh(DRAFT)121 b Fd(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2701 100 V 1152 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 │ │ │ │ @@ -3929,32 +3918,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 1111 4 v │ │ │ │ -1293 w Fi(Tree)29 b Fd(:)41 b Fh(DRAFT)30 b Fd(F)-8 b(ebruary)30 │ │ │ │ -b(29,)i(2024)p 2789 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 1152 4 v │ │ │ │ +1334 w Fi(Tree)29 b Fd(:)41 b Fh(DRAFT)30 b Fd(Octob)s(er)g(4,)h(2025)p │ │ │ │ +2748 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 │ │ │ │ @@ -4010,17 +3999,17 @@ │ │ │ │ (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 1111 4 v 1292 100 a Fi(Tree)30 │ │ │ │ -b Fd(:)40 b Fh(DRAFT)121 b Fd(F)-8 b(ebruary)31 b(29,)g(2024)p │ │ │ │ -2742 100 V 1111 w Fj(5)111 399 y(3.)46 b Fi(int)h(DSTree_domainWeight)c │ │ │ │ +TeXDict begin 5 4 bop 91 100 1152 4 v 1334 100 a Fi(Tree)29 │ │ │ │ +b Fd(:)41 b Fh(DRAFT)121 b Fd(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2701 100 V 1152 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 │ │ │ │ @@ -4087,21 +4076,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 1111 4 v │ │ │ │ -1293 w Fi(Tree)29 b Fd(:)41 b Fh(DRAFT)30 b Fd(F)-8 b(ebruary)30 │ │ │ │ -b(29,)i(2024)p 2789 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 1152 4 v │ │ │ │ +1334 w Fi(Tree)29 b Fd(:)41 b Fh(DRAFT)30 b Fd(Octob)s(er)g(4,)h(2025)p │ │ │ │ +2748 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 │ │ │ │ @@ -4171,17 +4160,17 @@ │ │ │ │ 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 1111 4 v 1292 100 a Fi(Tree)30 │ │ │ │ -b Fd(:)40 b Fh(DRAFT)121 b Fd(F)-8 b(ebruary)31 b(29,)g(2024)p │ │ │ │ -2742 100 V 1111 w Fj(7)111 399 y(2.)46 b Fi(writeStagesIV)e(msglvl)j │ │ │ │ +TeXDict begin 7 6 bop 91 100 1152 4 v 1334 100 a Fi(Tree)29 │ │ │ │ +b Fd(:)41 b Fh(DRAFT)121 b Fd(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2701 100 V 1152 w Fj(7)111 399 y(2.)46 b Fi(writeStagesIV)e(msglvl)j │ │ │ │ (msgFile)e(inFile)h(type)h(outFile)227 544 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 657 y(a)i(\014le.)337 │ │ │ │ 855 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 968 y(the)j Fi(DSTree)e Fj(ob)5 │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -21,15 +21,15 @@ │ │ │ │ │ The DSTree object has a very simple data structure. It contains a Tree object to represent the │ │ │ │ │ tree fields of the domains and separators, and an IV object to hold the map from the vertices to │ │ │ │ │ the domains and separators. │ │ │ │ │ • Tree *tree : pointer to the Tree object │ │ │ │ │ • IV *mapIV : pointer to the IV object that holds the map from vertices to domains and │ │ │ │ │ separators. │ │ │ │ │ 1 │ │ │ │ │ - 2 Tree : DRAFT February 29, 2024 │ │ │ │ │ + 2 Tree : DRAFT October 4, 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 February 29, 2024 3 │ │ │ │ │ + Tree : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 4 Tree : DRAFT October 4, 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 February 29, 2024 5 │ │ │ │ │ + Tree : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 6 Tree : DRAFT October 4, 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 February 29, 2024 7 │ │ │ │ │ + Tree : DRAFT October 4, 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 2024.02.29:1857 │ │ │ │ +%DVIPSSource: TeX output 2025.10.04:1733 │ │ │ │ %%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 │ │ │ │ @@ -2352,23 +2352,23 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 50 /two put │ │ │ │ dup 52 /four put │ │ │ │ -dup 57 /nine put │ │ │ │ +dup 53 /five put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 70 /F put │ │ │ │ -dup 97 /a put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ +dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ -dup 117 /u put │ │ │ │ -dup 121 /y put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -2542,95 +2542,85 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA647CD0E2539DFAD9604486DCCFA49 │ │ │ │ -AC96130D106A8F8387633622C3809400D6E8FF9D60877C743502E4D211CEBF62 │ │ │ │ -9A6F91045C22D5D20C5FF677D89983D02E5EE26C71A9EAE0E7C52465DA5A149A │ │ │ │ -9B731C27EC8366BC3E841C0CAE49A33DE164A857365B17B09CAD121C47A980CB │ │ │ │ -C75E1030F6C394EDB46C54B46880D2344127B903FB22684C9CAACE6053DC3BFA │ │ │ │ -4E47C565ECAF19C4295A11BD68CA6D45B5738B932BB3690A8C712904C49C1636 │ │ │ │ -A7702075F2FEA8DB3EB3A3C1216BB769DD0BAF4507A18E3052F2C846B0797933 │ │ │ │ -8CE9BB2DB5DFADAF1B0FC3A22BAB82A0D5D290F7AD950013CFA465BE11C1076D │ │ │ │ -5833FF92321FBF90D9229D3BA09DD18EEC44D9FCF8FCF63CC09D2977BFA798B6 │ │ │ │ -47FB047EA6AF69C7DE570176F5B6C0FED74DEDBF7DDF49550DD84BA14AC09423 │ │ │ │ -F70D5B14F0F8588F1E2FFE0DFE0760E77A9E39DEDAC5C5AE3760722C029B916D │ │ │ │ -96A2A7D1DD6A61F90B4B9806314A668EB7A0E107A3527310A240490453CC18D7 │ │ │ │ -3793B4CF3CE13EA332E7F5C2BACF85AC75FE84693B966BB0F6FB9A179A331C4E │ │ │ │ -55E9EF30E2734E44A88E053CD5E650D7E529E94CB7F8B733E68315ACAC5BEFC5 │ │ │ │ -3FE4F585F875310267865679AB381125C31E9AEB7226DC9F18DA80A9DE2F38A4 │ │ │ │ -51B8F9D5B2FBA0F50D53AE6212AFE41466A594F7A303B4E82F1493C0B8D65756 │ │ │ │ -BE6AF2931E5ADA5CE7D51CB5B1EC916C6C6D674808939331CA66F8181DD2B112 │ │ │ │ -1A12198CCCB6BBF1D40C803E794B65241ACE1E0D30CCA1C6F2D3E1415B98726B │ │ │ │ -9BA303BE2C4C276108CC78C093F1CC85CA454CC38535D1DEBFA341D84E8A5DDF │ │ │ │ -D53D8DD0F4A812B5BA63871BEB3BCE93FBC77AD395914E2CD757546C2BE2D641 │ │ │ │ -FDB12258E1E1D10E1B963EABB265F2C8B2547D48963E1AD3B223B666B46915A1 │ │ │ │ -157F5EA0AB8D8411C07AA2EB5D0EF1A1BA6D81C47473A3D3D6287104C7BF61F8 │ │ │ │ -3BDB64995DE96A65BF2B7288C51ADAA3D373A95C40D5240C5FF397551554AA9E │ │ │ │ -C89C7E45AA7738503CB058EF6AD5052CC78E4445C810C250BF25394B8D7DE82E │ │ │ │ -315C9CCD6E1E9150EC79EE0F354C668AE199C1AFF39C67337A86CB932E8D64E9 │ │ │ │ -389FF3CC08B538492DEED017686DBB9BDEA30FE67FB4EBDB3627C16FD15F243A │ │ │ │ -7FDEB310EFC940E57726E94340472F2C452815927ADE21578C959890216BE504 │ │ │ │ -225BE4B4D2E3B19F5E06B5A0B25AF168C3A2B26F599A829F89C16BD2026E8CC9 │ │ │ │ -8FB3CBB830C3E36C099071A70D0B8834FF2C17364EB50D5C71440CC7BFE02321 │ │ │ │ -8C6ECAC2F7EC1BE39077DB0E8B2B251626A71FD038EB2CF1FC254D98C1535CAA │ │ │ │ -A8C987BC266482BD860A333048E1EDB3DD40A6ECD6DA0088AD9B9640202D89AA │ │ │ │ -0BB9A0ADF63491E67F2E97E35942D77E59B9B8AB0ED28B022EE5CD3449FC5B7A │ │ │ │ -19E38845B488F97D155C4312885E29537EAE97719C65845663480CE79DE8F037 │ │ │ │ -68995C0928FE8AFBEE554F01381EE5187578DF5D2542F26F66A599EE8ECC1F68 │ │ │ │ -FBADF3C2BA968C3CEB86675CF9A6CFD736E1422800D270417D497903DE87F2AE │ │ │ │ -938E39E120E9D3079F512E545E0E2616B84E81FE41392184F96818A7C86BF541 │ │ │ │ -F2E67C48CA56DA838C9FA0FAD538073B9F26319140D1F80EEEBCA190DE660A31 │ │ │ │ -457CAC16E92F87449A3734F9EA751588514865B58DC073658C8A857B5398AAC7 │ │ │ │ -3DC11E069996EF74A3189A07630D5DB87C5E028CD193C086B4D0E8BABC4F2393 │ │ │ │ -235EC96091B16C4A6D97DA1BD30A2D2E71F55869223CA66AD12448B668685F6E │ │ │ │ -06E7888D7F20045C662C4F7994CC7E1CE9AAC33A026716AA0551DF12343F0E22 │ │ │ │ -6E9F4B21C90406CC4997601194EF37A973221D1F4D73DD5666BD297F621C92AA │ │ │ │ -E3F698BC1146ADE754C4120EDF5B3E974D75A237E51DB49D52CD6CC7C9E8BD2D │ │ │ │ -E6849DF8F4DBA86C655D0C57CB54836C8A841C1D814F6B493F96ADBFCAD78D3B │ │ │ │ -430C58EF169950851B6A0B46411488B1A6F6974832787A24C0CDDBE27996EFB1 │ │ │ │ -DB341FA34B1DC6238D978D1E1D34AF3FB375ED6DA9C88699F195C88A54622F7C │ │ │ │ -36DAFC663D85660E756733A7E22F20C6A5D91F06087CAD10F7217BD33F343DC6 │ │ │ │ -F5EB9F16FE763672243EE6AE5CB6063A1D64670E1C059DD52134974E27D9D89C │ │ │ │ -BC658FCD814F20703D610C978FDCD6E2AEA31C18D1A310F215B28199F66C87DB │ │ │ │ -3B23980A393E1DD77AFA3045EDB6942505F3CF6204315A14E5B6BF2E96F3BB1F │ │ │ │ -628D24AC1893BC7DAEF3AA63F2116837F31DB90D872CBD9E5C48BCDEE781D20D │ │ │ │ -C6553D2D15F4E8438A9D1C7CEE1B72BD6AA08DC0AFEAF8B4DC1038707EE4A1BF │ │ │ │ -3D84460E60AF90F55002C1D8EBF0700F7EC3EFC944BEA78D0E0536F3AA6D9A84 │ │ │ │ -604A781AC5ACFEB7E681365315EE11E991C03DA431B65B332AD8F83F6F3AE66C │ │ │ │ -1BF434D3793FB5BCC44E44ACFF2855C2770C4AC678C6ACD6EB071974ACF1AE37 │ │ │ │ -D02C1736C62CC205A2F3488448527EFFA379613A8E6A6D134F4BFBAE6127304D │ │ │ │ -576C900A458E32CD42A4674415E03D8EB5742E71B854B3EDFD271AA214436544 │ │ │ │ -D1BCFD52F439298847E1FA258E5D38384FC85BC4EDC6F9E4431621CF763B137B │ │ │ │ -22DB6E3268B3F78881D55EA7C52ABF23FB73C152B06B708084FE1B00CFE72D9D │ │ │ │ -57B62AEE912E63BBD89D4D13CE896735454F1A16C3D9FB6CDF142CCA9F1C0242 │ │ │ │ -46F62109DF30667DA327F7CF6DC19B880C860C69080597FFCB1793313E202D4F │ │ │ │ -120A7C6B052C2EB7597B71B0985D24FDD2D3918393BF720E762C5DBBC2BB1E91 │ │ │ │ -B04560364EFE5B16EB068E0560FB932E0C617CFB95A166388E99AC4CB020F5BC │ │ │ │ -E24BB77352D7C3B21C37D404051A70FFFA0F726C35501A1FBB411F832CE46A2E │ │ │ │ -B424E26BD4 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFD8CDE285A2827F4659E339460ABEF319FE44D7A91E93CA309E9266E03DA │ │ │ │ +735F5DEF3920C01189BB63C2BD7ED0B92EABB481F123641477CDCCAB9751FB7B │ │ │ │ +F67DA7CE6EB134BC10D0228562BA5A6BFE6940907EF030ABF9EC4A8A0DFEF73D │ │ │ │ +3289E8CB4DC37694F5A656A935D92C72B3D82B012F578A27711B161DE9652ADC │ │ │ │ +71C51E743E4E9A7C6CF6FF16C5D65C1F60954C0858B48FAAC4FBB21988E2A934 │ │ │ │ +AC50C097DDF42C416359647D79F830E1430FB9BB803451A6732D1B5CAB817C1B │ │ │ │ +673B3077D9A180F184267E9990C087BCDEBC8EB8B889934DD0EB63C2EBCED4A3 │ │ │ │ +83A0D6A365412CFF610EF7BD5F82B02AA293F1D2F868768CDE9B801C929B4A38 │ │ │ │ +64E20C70BC4041F837AD15423517F7336A067D140A2C7906DC5D45885FFB3B69 │ │ │ │ +724E5B9B138BD15A9359EB25D14BC4193E529D1A49FEB0DC1015BF94CEBBD5E0 │ │ │ │ +EA148B185C53E12BD9FA6DBC097D789A73E832F02F55080D8ED6087F5952EA78 │ │ │ │ +250A4C65CE4C4013554A031446D2092D813C4CB1A605D97A40CF867F656ECD1C │ │ │ │ +C23F80230AD1E449AA8B4007134F71156719206441D92B1A6DD25101ABF69F70 │ │ │ │ +538CCCE216376E1BD6E423986BD4E83B1975B15092D4E19F885672F9E7C02485 │ │ │ │ +E02DA0F4243D324A5983D1D46444E5F6573F699E4F2A3395EF0EB7808B7D4D62 │ │ │ │ +690FD033E93AA553082273636503DA4BBBBFA6D127CE10424DD1DDF4F879305C │ │ │ │ +14F64180E7851D091B3220DFC70CAA44716B8F7F0C6FBEDB167801DED77F9E69 │ │ │ │ +E9B31CD2D8044DB946E511162976C34DE27F2BB974B70509005562A0A21317B7 │ │ │ │ +46D826A31C476C8F9A778F941FF5956BA2D765B1AD0AC4BC7AE1CD8A2A81F039 │ │ │ │ +06EB13EBD099BBDB2EBDB54D459C288EA69FB0018CE9255BBFB08C1F90FF30BD │ │ │ │ +C971DA7FDB193281B8F967F21AB42F13F36085AC9EC0D6B6B448C8F289B0AD70 │ │ │ │ +DB521A4755ECF9CA594741E5C674220C21C265EF3BAE594197B00048C8D4DB73 │ │ │ │ +4AC47B6A86EAC7EECD042C8E23C347F8C9FCB870473C1FBD91C298174BCBF1A9 │ │ │ │ +7B366C570A9A04A433495FBC9FD0FFC22A0E8181424C0F038ED97AD5054B10CC │ │ │ │ +1CD5BA0719DD0B4F4F18932AE87FF8B8C1CF0C7482B7847049761505DCD85146 │ │ │ │ +4EE5CB53993A9449CD05233E961BD49AE92D308E2065D6C6BF038538039AA56A │ │ │ │ +C59D424BE3175427337E16892D3920598D518423E145C6B2DD3881F338845F0D │ │ │ │ +16C47AA0D9C2D6DE99C6A302D567ACD6F98BF38223F1890E099C8F93348FFDAA │ │ │ │ +C2D3440187C8FED87C1A891EF11EFA7168EC47F72AF8BC5BE1B88B1084E704F5 │ │ │ │ +82099F1A79E556D94CC38851C97DC3864945A7470F1389BCF608BADAE45B236D │ │ │ │ +2934A20FFBCF169BF84DF496B07E7F1D9002E62B030337642804403DF7E4B3FF │ │ │ │ +C5A421EE0033BA06C50A041FBFE8F81AFC145664E2976505EB14859CF0377EBA │ │ │ │ +EA604CF8BFB5F9ADB9A7ED56E6F0F919E791D57C7232241C892EAC3E55D2D03B │ │ │ │ +FF43B9DAB7B1D8C6588D6D3503F49E80121E52254431B308752A936E0B51124D │ │ │ │ +C7F23C316BA6FA73E6BC47EB9550003E1393C68360067C094C65C0DD17214FA0 │ │ │ │ +45FF0F9C3E0AE4C81093752D23EA95E163C98EC04873ECE3FB0882567329525C │ │ │ │ +0A3937B16CA72B5EB6D2DC10C1B485C0BA939587AFEBB6D837A40401C666BC1C │ │ │ │ +F3344FBAB3E48BEE18F3AF5CDB33BA63778D373A851333C8C34E2F35AB94E8B4 │ │ │ │ +FF7E62A92ED83B872894E0A17209E14CF61269204A35A4BC8C7EE4B16F19E91F │ │ │ │ +669C4EFCECB187F6C7FAF92B4E14E400C6B3C81679D4A7196D66DB1E897DDA42 │ │ │ │ +47CC2848B46D581A95EEF85AB528E8CDEEB275D1E1FE197A3A08D36406E2DADF │ │ │ │ +A87D817AF18B5525F89B7C2E584F4A1254A1FC71E749999A2152870631A69CB6 │ │ │ │ +666EBD6BB3366A598F6592040D0E82B9D866DF0A76C362E76C2804D108A0C148 │ │ │ │ +51F42E9E0ABD52CC2D02B156B63AFD03313AFC80EACC83DF9B59F05FD798951D │ │ │ │ +FCF5335636DFC6561910ACE0AEC47F74CFD302EB7421D28AAAC8FF82B7CE2B2A │ │ │ │ +340B8BCE09F57BFCBC77F91096D97A85726E68846398C8C9C8D3A65A252AE8FB │ │ │ │ +166750C244963BC61E2236BAAC529FABD6FC774550096374A8DB81B6AF1EA843 │ │ │ │ +27F671C0045D629E3734EF037447C4763514FD1C4AE858A494AFC23A64C82149 │ │ │ │ +F4C0A7023B3865B84FAC2DC88D1553DCEBA3D8FB5DBC1103123F6B8CB5B3A399 │ │ │ │ +B665B26B001BF1E4BFABE42BFF6B02D69FA88D5CBCA5A11D5B48CFB4EAE60558 │ │ │ │ +5FBE254AD3BE01761CD4995E766E172D768621223505FD6AA8F89FC042EB814C │ │ │ │ +34373DAEC4FAAF71C0752F814154C5299F751CE7E0F9C673D2E448D0204C214C │ │ │ │ +C04DC34671FBEF72350FFBA263662E86A0D3795E310153AAF4C8A2623E167E6E │ │ │ │ +1F13A9BA485D5DDFC451D691DBA7C49E20354A7AD79D89F7EDE24F0D5B48B27D │ │ │ │ +568D01EF2555504196C09841F5970D8CF6C5D47FFFCF18AE6B2A485342000AAD │ │ │ │ +1F922FBEF7C98E0965609C89240E7B131A59551F57CD5C92097FCE75F5D2778F │ │ │ │ +F9ACF43A3273551363442C8C539205903A835C744A4AA953545506081D3D231A │ │ │ │ +A140E01F280BC42A3C35EDAD5F6B8CE6E51C68E41CA813710864ED880FCE846C │ │ │ │ +1B66D27CC2DBCDC2B1B96A12490BD76D67A415D4A6595CD9B19D3104A83D2C82 │ │ │ │ +C46DCD2C027F0565EDB83E54FF99498194D3140E55E8EE65EBDEAC5409B5616A │ │ │ │ +73141DA2D581E300A6057F4301A02DD160AB3E55A116313525122D0608816AA8 │ │ │ │ +4712EEF3D6FE8C893DF37D │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -4204,16 +4194,16 @@ │ │ │ │ /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 134[48 3[51 2[36 12[40 2[51 45 │ │ │ │ -26[59 11[25 45 4[45 1[45 1[45 3[25 44[{}13 90.9091 /CMSL10 │ │ │ │ +90.9091 /CMTI10 rf /Fg 139[35 1[36 2[45 9[40 1[40 51 │ │ │ │ +18[71 20[25 4[45 45 1[45 1[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 │ │ │ │ @@ -4331,17 +4321,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 1164 4 v │ │ │ │ -1346 w Fk(DV)29 b Fg(:)i Ff(DRAFT)f Fg(F)-8 b(ebruary)30 │ │ │ │ -b(29,)i(2024)p 2737 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 1205 4 v │ │ │ │ +1387 w Fk(DV)30 b Fg(:)g Ff(DRAFT)g Fg(Octob)s(er)h(4,)g(2025)p │ │ │ │ +2695 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 │ │ │ │ @@ -4395,17 +4385,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 1164 4 v 1345 100 a Fk(DV)30 │ │ │ │ -b Fg(:)h Ff(DRAFT)121 b Fg(F)-8 b(ebruary)30 b(29,)h(2024)p │ │ │ │ -2689 100 V 1164 w Fl(3)0 399 y Fd(1.2.2)112 b(Instance)38 │ │ │ │ +TeXDict begin 3 2 bop 91 100 1205 4 v 1386 100 a Fk(DV)30 │ │ │ │ +b Fg(:)h Ff(DRAFT)121 b Fg(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2648 100 V 1205 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 │ │ │ │ @@ -4459,33 +4449,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 1164 4 v │ │ │ │ -1346 w Fk(DV)29 b Fg(:)i Ff(DRAFT)f Fg(F)-8 b(ebruary)30 │ │ │ │ -b(29,)i(2024)p 2737 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 1205 4 v │ │ │ │ +1387 w Fk(DV)30 b Fg(:)g Ff(DRAFT)g Fg(Octob)s(er)h(4,)g(2025)p │ │ │ │ +2695 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 │ │ │ │ @@ -4545,17 +4535,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 1164 4 v 1345 100 a Fk(DV)30 │ │ │ │ -b Fg(:)h Ff(DRAFT)121 b Fg(F)-8 b(ebruary)30 b(29,)h(2024)p │ │ │ │ -2689 100 V 1164 w Fl(5)227 399 y(the)37 b(v)m(ector)h(is)e(lost,)j │ │ │ │ +TeXDict begin 5 4 bop 91 100 1205 4 v 1386 100 a Fk(DV)30 │ │ │ │ +b Fg(:)h Ff(DRAFT)121 b Fg(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2648 100 V 1205 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 │ │ │ │ @@ -4614,55 +4604,55 @@ │ │ │ │ 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 1164 4 v │ │ │ │ -1346 w Fk(DV)29 b Fg(:)i Ff(DRAFT)f Fg(F)-8 b(ebruary)30 │ │ │ │ -b(29,)i(2024)p 2737 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(and)g(the)g(program)g │ │ │ │ -(exits.)111 1988 y(9.)46 b Fk(void)h(DV_fill)f(\()h(DV)g(*dv,)g(double) │ │ │ │ -f(value)g(\))i(;)227 2148 y Fl(This)30 b(metho)s(d)g(\014lls)g(the)g(v) │ │ │ │ -m(ector)i(with)e(a)h(scalar)h(v)-5 b(alue.)227 2308 y │ │ │ │ -Ff(Err)g(or)34 b(che)-5 b(cking:)40 b Fl(If)30 b Fk(dv)g │ │ │ │ -Fl(is)h Fk(NULL)p Fl(,)e(an)h(error)g(message)i(is)e(prin)m(ted)g(and)g │ │ │ │ -(the)g(program)h(exits.)66 2515 y(10.)46 b Fk(void)h(DV_zero)f(\()h(DV) │ │ │ │ -g(*dv)g(\))h(;)227 2675 y Fl(This)30 b(metho)s(d)g(\014lls)g(the)g(v)m │ │ │ │ -(ector)i(with)e(zeros.)227 2835 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)p Fl(,)e(an)h(error)g │ │ │ │ -(message)i(is)e(prin)m(ted)g(and)g(the)g(program)h(exits.)66 │ │ │ │ -3042 y(11.)46 b Fk(void)h(DV_copy)f(\()h(DV)g(*dv1,)g(DV)g(*dv2)g(\))g │ │ │ │ -(;)227 3202 y Fl(This)30 b(metho)s(d)g(\014lls)h(the)f │ │ │ │ -Fk(dv1)g Fl(ob)5 b(ject)32 b(with)e(en)m(tries)h(in)g(the)g │ │ │ │ -Fk(iv2)e Fl(ob)5 b(ject.)43 b(Note,)32 b(this)f(is)f(a)h │ │ │ │ -Ff(mapp)-5 b(e)g(d)34 b Fl(cop)m(y)-8 b(,)227 3315 y │ │ │ │ -Fk(dv1)24 b Fl(and)g Fk(dv2)f Fl(need)i(not)f(ha)m(v)m(e)i(the)f(same)g │ │ │ │ -(size.)39 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 3428 y(of)31 b(the)f(t)m(w)m(o)i │ │ │ │ -(sizes.)227 3588 y Ff(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ -b Fl(If)30 b Fk(dv1)g Fl(or)g Fk(dv2)g Fl(is)g Fk(NULL)p │ │ │ │ -Fl(,)g(an)g(error)g(message)h(is)g(prin)m(ted)f(and)f(the)i(program)f │ │ │ │ -(exits.)66 3795 y(12.)46 b Fk(void)h(DV_log10profile)d(\()j(DV)g(*dv,)g │ │ │ │ -(int)g(npts,)f(DV)h(*xDV,)g(DV)g(*yDV,)f(double)g(tausmall,)1325 │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fl(6)p 136 100 1205 4 v │ │ │ │ +1387 w Fk(DV)30 b Fg(:)g Ff(DRAFT)g Fg(Octob)s(er)h(4,)g(2025)p │ │ │ │ +2695 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 │ │ │ │ +(and)g(the)g(program)g(exits.)111 1988 y(9.)46 b Fk(void)h(DV_fill)f │ │ │ │ +(\()h(DV)g(*dv,)g(double)f(value)g(\))i(;)227 2148 y │ │ │ │ +Fl(This)30 b(metho)s(d)g(\014lls)g(the)g(v)m(ector)i(with)e(a)h(scalar) │ │ │ │ +h(v)-5 b(alue.)227 2308 y Ff(Err)g(or)34 b(che)-5 b(cking:)40 │ │ │ │ +b Fl(If)30 b Fk(dv)g Fl(is)h Fk(NULL)p Fl(,)e(an)h(error)g(message)i │ │ │ │ +(is)e(prin)m(ted)g(and)g(the)g(program)h(exits.)66 2515 │ │ │ │ +y(10.)46 b Fk(void)h(DV_zero)f(\()h(DV)g(*dv)g(\))h(;)227 │ │ │ │ +2675 y Fl(This)30 b(metho)s(d)g(\014lls)g(the)g(v)m(ector)i(with)e │ │ │ │ +(zeros.)227 2835 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)p Fl(,)e(an)h(error)g(message)i │ │ │ │ +(is)e(prin)m(ted)g(and)g(the)g(program)h(exits.)66 3042 │ │ │ │ +y(11.)46 b Fk(void)h(DV_copy)f(\()h(DV)g(*dv1,)g(DV)g(*dv2)g(\))g(;)227 │ │ │ │ +3202 y Fl(This)30 b(metho)s(d)g(\014lls)h(the)f Fk(dv1)g │ │ │ │ +Fl(ob)5 b(ject)32 b(with)e(en)m(tries)h(in)g(the)g Fk(iv2)e │ │ │ │ +Fl(ob)5 b(ject.)43 b(Note,)32 b(this)f(is)f(a)h Ff(mapp)-5 │ │ │ │ +b(e)g(d)34 b Fl(cop)m(y)-8 b(,)227 3315 y Fk(dv1)24 b │ │ │ │ +Fl(and)g Fk(dv2)f Fl(need)i(not)f(ha)m(v)m(e)i(the)f(same)g(size.)39 │ │ │ │ +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 3428 y(of)31 b(the)f(t)m(w)m(o)i(sizes.)227 │ │ │ │ +3588 y Ff(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fl(If)30 │ │ │ │ +b Fk(dv1)g Fl(or)g Fk(dv2)g Fl(is)g Fk(NULL)p Fl(,)g(an)g(error)g │ │ │ │ +(message)h(is)g(prin)m(ted)f(and)f(the)i(program)f(exits.)66 │ │ │ │ +3795 y(12.)46 b Fk(void)h(DV_log10profile)d(\()j(DV)g(*dv,)g(int)g │ │ │ │ +(npts,)f(DV)h(*xDV,)g(DV)g(*yDV,)f(double)g(tausmall,)1325 │ │ │ │ 3908 y(double)g(taubig,)g(int)h(*pnzero,)e(int)i(*pnsmall,)f(int)g │ │ │ │ (*pnbig)h(\))g(;)227 4068 y Fl(This)34 b(metho)s(d)f(scans)i(the)f(en)m │ │ │ │ (tries)h(in)f(the)g Fk(DV)g Fl(ob)5 b(ject)35 b(and)f(\014lls)g │ │ │ │ Fk(xDV)f Fl(and)h Fk(yDV)f Fl(with)h(data)h(that)g(allo)m(ws)227 │ │ │ │ 4181 y(a)c(simple)f(log)703 4203 y Fc(10)808 4181 y Fl(distribution)f │ │ │ │ (plot.)41 b(Only)29 b(en)m(tries)i(whose)f(magnitudes)g(lie)h(in)e(the) │ │ │ │ h(range)h Fk([tausmall,)227 4294 y(taubig])i Fl(con)m(tribute)j(to)g │ │ │ │ @@ -4684,17 +4674,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 1164 4 v 1345 100 a Fk(DV)30 │ │ │ │ -b Fg(:)h Ff(DRAFT)121 b Fg(F)-8 b(ebruary)30 b(29,)h(2024)p │ │ │ │ -2689 100 V 1164 w Fl(7)111 399 y(1.)46 b Fk(int)h(DV_readFromFile)d(\() │ │ │ │ +TeXDict begin 7 6 bop 91 100 1205 4 v 1386 100 a Fk(DV)30 │ │ │ │ +b Fg(:)h Ff(DRAFT)121 b Fg(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2648 100 V 1205 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 │ │ │ │ @@ -4775,41 +4765,41 @@ │ │ │ │ (\))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 1164 4 v │ │ │ │ -1346 w Fk(DV)29 b Fg(:)i Ff(DRAFT)f Fg(F)-8 b(ebruary)30 │ │ │ │ -b(29,)i(2024)p 2737 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 1225 y(...)227 1450 y Fl(for)31 b(eac)m(h)h(en)m(try)g(in)e(the) │ │ │ │ -i(v)m(ector.)44 b(Note,)33 b(the)e(output)g(indexing)g(is)g(1-based,)h │ │ │ │ -(not)f(0-based.)43 b(The)31 b(v)-5 b(alue)31 b Fk(1)227 │ │ │ │ -1563 y Fl(is)g(returned.)227 1714 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.)0 2025 y Fh(1.3)135 b(Driv)l(er)46 │ │ │ │ -b(programs)g(for)f(the)g Fe(DV)60 b(object)111 2253 y │ │ │ │ -Fl(1.)46 b Fk(testIO)g(msglvl)g(msgFile)g(inFile)g(outFile)227 │ │ │ │ -2403 y Fl(This)f(driv)m(er)g(program)g(tests)h(the)f │ │ │ │ -Fk(DV)f Fl(IO)h(metho)s(ds,)k(and)44 b(is)h(useful)g(for)g(translating) │ │ │ │ -h(b)s(et)m(w)m(een)g(the)227 2516 y(formatted)31 b Fk(*.dvf)e │ │ │ │ -Fl(and)h(binary)g Fk(*.dvb)e Fl(\014les.)337 2728 y Fi(\210)45 │ │ │ │ -b Fl(The)f Fk(msglvl)e Fl(parameter)j(determines)f(the)g(amoun)m(t)h │ │ │ │ -(of)f(output.)82 b(Use)44 b Fk(msglvl)i(=)i(1)c Fl(for)g(just)427 │ │ │ │ -2841 y(timing)31 b(output.)337 2988 y Fi(\210)45 b Fl(The)33 │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fl(8)p 136 100 1205 4 v │ │ │ │ +1387 w Fk(DV)30 b Fg(:)g Ff(DRAFT)g Fg(Octob)s(er)h(4,)g(2025)p │ │ │ │ +2695 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 │ │ │ │ +1225 y(...)227 1450 y Fl(for)31 b(eac)m(h)h(en)m(try)g(in)e(the)i(v)m │ │ │ │ +(ector.)44 b(Note,)33 b(the)e(output)g(indexing)g(is)g(1-based,)h(not)f │ │ │ │ +(0-based.)43 b(The)31 b(v)-5 b(alue)31 b Fk(1)227 1563 │ │ │ │ +y Fl(is)g(returned.)227 1714 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.)0 2025 y Fh(1.3)135 b(Driv)l(er)46 b(programs)g(for)f │ │ │ │ +(the)g Fe(DV)60 b(object)111 2253 y Fl(1.)46 b Fk(testIO)g(msglvl)g │ │ │ │ +(msgFile)g(inFile)g(outFile)227 2403 y Fl(This)f(driv)m(er)g(program)g │ │ │ │ +(tests)h(the)f Fk(DV)f Fl(IO)h(metho)s(ds,)k(and)44 b(is)h(useful)g │ │ │ │ +(for)g(translating)h(b)s(et)m(w)m(een)g(the)227 2516 │ │ │ │ +y(formatted)31 b Fk(*.dvf)e Fl(and)h(binary)g Fk(*.dvb)e │ │ │ │ +Fl(\014les.)337 2728 y Fi(\210)45 b Fl(The)f Fk(msglvl)e │ │ │ │ +Fl(parameter)j(determines)f(the)g(amoun)m(t)h(of)f(output.)82 │ │ │ │ +b(Use)44 b Fk(msglvl)i(=)i(1)c Fl(for)g(just)427 2841 │ │ │ │ +y(timing)31 b(output.)337 2988 y Fi(\210)45 b Fl(The)33 │ │ │ │ b Fk(msgFile)e Fl(parameter)j(determines)f(the)h(message)g(\014le)f(|)h │ │ │ │ (if)f Fk(msgFile)e Fl(is)i Fk(stdout)p Fl(,)g(then)g(the)427 │ │ │ │ 3100 y(message)27 b(\014le)f(is)g Ff(stdout)p Fl(,)i(otherwise)e(a)h │ │ │ │ (\014le)f(is)f(op)s(ened)g(with)h Ff(app)-5 b(end)28 │ │ │ │ b Fl(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 3213 │ │ │ │ y(data.)337 3359 y Fi(\210)45 b Fl(The)29 b Fk(inFile)f │ │ │ │ Fl(parameter)j(is)e(the)h(name)g(of)g(the)g(\014le)f(from)h(whic)m(h)f │ │ │ │ ├── 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 February 29, 2024 │ │ │ │ │ + 2 DV : DRAFT October 4, 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 February 29, 2024 3 │ │ │ │ │ + DV : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 4 DV : DRAFT October 4, 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 February 29, 2024 5 │ │ │ │ │ + DV : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 6 DV : DRAFT October 4, 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 February 29, 2024 7 │ │ │ │ │ + DV : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 8 DV : DRAFT October 4, 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 2024.02.29:1857 │ │ │ │ +%DVIPSSource: TeX output 2025.10.04:1733 │ │ │ │ %%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 │ │ │ │ @@ -1623,23 +1623,23 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 50 /two put │ │ │ │ dup 52 /four put │ │ │ │ -dup 57 /nine put │ │ │ │ +dup 53 /five put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 70 /F put │ │ │ │ -dup 97 /a put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ +dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ -dup 117 /u put │ │ │ │ -dup 121 /y put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1813,95 +1813,85 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA647CD0E2539DFAD9604486DCCFA49 │ │ │ │ -AC96130D106A8F8387633622C3809400D6E8FF9D60877C743502E4D211CEBF62 │ │ │ │ -9A6F91045C22D5D20C5FF677D89983D02E5EE26C71A9EAE0E7C52465DA5A149A │ │ │ │ -9B731C27EC8366BC3E841C0CAE49A33DE164A857365B17B09CAD121C47A980CB │ │ │ │ -C75E1030F6C394EDB46C54B46880D2344127B903FB22684C9CAACE6053DC3BFA │ │ │ │ -4E47C565ECAF19C4295A11BD68CA6D45B5738B932BB3690A8C712904C49C1636 │ │ │ │ -A7702075F2FEA8DB3EB3A3C1216BB769DD0BAF4507A18E3052F2C846B0797933 │ │ │ │ -8CE9BB2DB5DFADAF1B0FC3A22BAB82A0D5D290F7AD950013CFA465BE11C1076D │ │ │ │ -5833FF92321FBF90D9229D3BA09DD18EEC44D9FCF8FCF63CC09D2977BFA798B6 │ │ │ │ -47FB047EA6AF69C7DE570176F5B6C0FED74DEDBF7DDF49550DD84BA14AC09423 │ │ │ │ -F70D5B14F0F8588F1E2FFE0DFE0760E77A9E39DEDAC5C5AE3760722C029B916D │ │ │ │ -96A2A7D1DD6A61F90B4B9806314A668EB7A0E107A3527310A240490453CC18D7 │ │ │ │ -3793B4CF3CE13EA332E7F5C2BACF85AC75FE84693B966BB0F6FB9A179A331C4E │ │ │ │ -55E9EF30E2734E44A88E053CD5E650D7E529E94CB7F8B733E68315ACAC5BEFC5 │ │ │ │ -3FE4F585F875310267865679AB381125C31E9AEB7226DC9F18DA80A9DE2F38A4 │ │ │ │ -51B8F9D5B2FBA0F50D53AE6212AFE41466A594F7A303B4E82F1493C0B8D65756 │ │ │ │ -BE6AF2931E5ADA5CE7D51CB5B1EC916C6C6D674808939331CA66F8181DD2B112 │ │ │ │ -1A12198CCCB6BBF1D40C803E794B65241ACE1E0D30CCA1C6F2D3E1415B98726B │ │ │ │ -9BA303BE2C4C276108CC78C093F1CC85CA454CC38535D1DEBFA341D84E8A5DDF │ │ │ │ -D53D8DD0F4A812B5BA63871BEB3BCE93FBC77AD395914E2CD757546C2BE2D641 │ │ │ │ -FDB12258E1E1D10E1B963EABB265F2C8B2547D48963E1AD3B223B666B46915A1 │ │ │ │ -157F5EA0AB8D8411C07AA2EB5D0EF1A1BA6D81C47473A3D3D6287104C7BF61F8 │ │ │ │ -3BDB64995DE96A65BF2B7288C51ADAA3D373A95C40D5240C5FF397551554AA9E │ │ │ │ -C89C7E45AA7738503CB058EF6AD5052CC78E4445C810C250BF25394B8D7DE82E │ │ │ │ -315C9CCD6E1E9150EC79EE0F354C668AE199C1AFF39C67337A86CB932E8D64E9 │ │ │ │ -389FF3CC08B538492DEED017686DBB9BDEA30FE67FB4EBDB3627C16FD15F243A │ │ │ │ -7FDEB310EFC940E57726E94340472F2C452815927ADE21578C959890216BE504 │ │ │ │ -225BE4B4D2E3B19F5E06B5A0B25AF168C3A2B26F599A829F89C16BD2026E8CC9 │ │ │ │ -8FB3CBB830C3E36C099071A70D0B8834FF2C17364EB50D5C71440CC7BFE02321 │ │ │ │ -8C6ECAC2F7EC1BE39077DB0E8B2B251626A71FD038EB2CF1FC254D98C1535CAA │ │ │ │ -A8C987BC266482BD860A333048E1EDB3DD40A6ECD6DA0088AD9B9640202D89AA │ │ │ │ -0BB9A0ADF63491E67F2E97E35942D77E59B9B8AB0ED28B022EE5CD3449FC5B7A │ │ │ │ -19E38845B488F97D155C4312885E29537EAE97719C65845663480CE79DE8F037 │ │ │ │ -68995C0928FE8AFBEE554F01381EE5187578DF5D2542F26F66A599EE8ECC1F68 │ │ │ │ -FBADF3C2BA968C3CEB86675CF9A6CFD736E1422800D270417D497903DE87F2AE │ │ │ │ -938E39E120E9D3079F512E545E0E2616B84E81FE41392184F96818A7C86BF541 │ │ │ │ -F2E67C48CA56DA838C9FA0FAD538073B9F26319140D1F80EEEBCA190DE660A31 │ │ │ │ -457CAC16E92F87449A3734F9EA751588514865B58DC073658C8A857B5398AAC7 │ │ │ │ -3DC11E069996EF74A3189A07630D5DB87C5E028CD193C086B4D0E8BABC4F2393 │ │ │ │ -235EC96091B16C4A6D97DA1BD30A2D2E71F55869223CA66AD12448B668685F6E │ │ │ │ -06E7888D7F20045C662C4F7994CC7E1CE9AAC33A026716AA0551DF12343F0E22 │ │ │ │ -6E9F4B21C90406CC4997601194EF37A973221D1F4D73DD5666BD297F621C92AA │ │ │ │ -E3F698BC1146ADE754C4120EDF5B3E974D75A237E51DB49D52CD6CC7C9E8BD2D │ │ │ │ -E6849DF8F4DBA86C655D0C57CB54836C8A841C1D814F6B493F96ADBFCAD78D3B │ │ │ │ -430C58EF169950851B6A0B46411488B1A6F6974832787A24C0CDDBE27996EFB1 │ │ │ │ -DB341FA34B1DC6238D978D1E1D34AF3FB375ED6DA9C88699F195C88A54622F7C │ │ │ │ -36DAFC663D85660E756733A7E22F20C6A5D91F06087CAD10F7217BD33F343DC6 │ │ │ │ -F5EB9F16FE763672243EE6AE5CB6063A1D64670E1C059DD52134974E27D9D89C │ │ │ │ -BC658FCD814F20703D610C978FDCD6E2AEA31C18D1A310F215B28199F66C87DB │ │ │ │ -3B23980A393E1DD77AFA3045EDB6942505F3CF6204315A14E5B6BF2E96F3BB1F │ │ │ │ -628D24AC1893BC7DAEF3AA63F2116837F31DB90D872CBD9E5C48BCDEE781D20D │ │ │ │ -C6553D2D15F4E8438A9D1C7CEE1B72BD6AA08DC0AFEAF8B4DC1038707EE4A1BF │ │ │ │ -3D84460E60AF90F55002C1D8EBF0700F7EC3EFC944BEA78D0E0536F3AA6D9A84 │ │ │ │ -604A781AC5ACFEB7E681365315EE11E991C03DA431B65B332AD8F83F6F3AE66C │ │ │ │ -1BF434D3793FB5BCC44E44ACFF2855C2770C4AC678C6ACD6EB071974ACF1AE37 │ │ │ │ -D02C1736C62CC205A2F3488448527EFFA379613A8E6A6D134F4BFBAE6127304D │ │ │ │ -576C900A458E32CD42A4674415E03D8EB5742E71B854B3EDFD271AA214436544 │ │ │ │ -D1BCFD52F439298847E1FA258E5D38384FC85BC4EDC6F9E4431621CF763B137B │ │ │ │ -22DB6E3268B3F78881D55EA7C52ABF23FB73C152B06B708084FE1B00CFE72D9D │ │ │ │ -57B62AEE912E63BBD89D4D13CE896735454F1A16C3D9FB6CDF142CCA9F1C0242 │ │ │ │ -46F62109DF30667DA327F7CF6DC19B880C860C69080597FFCB1793313E202D4F │ │ │ │ -120A7C6B052C2EB7597B71B0985D24FDD2D3918393BF720E762C5DBBC2BB1E91 │ │ │ │ -B04560364EFE5B16EB068E0560FB932E0C617CFB95A166388E99AC4CB020F5BC │ │ │ │ -E24BB77352D7C3B21C37D404051A70FFFA0F726C35501A1FBB411F832CE46A2E │ │ │ │ -B424E26BD4 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFD8CDE285A2827F4659E339460ABEF319FE44D7A91E93CA309E9266E03DA │ │ │ │ +735F5DEF3920C01189BB63C2BD7ED0B92EABB481F123641477CDCCAB9751FB7B │ │ │ │ +F67DA7CE6EB134BC10D0228562BA5A6BFE6940907EF030ABF9EC4A8A0DFEF73D │ │ │ │ +3289E8CB4DC37694F5A656A935D92C72B3D82B012F578A27711B161DE9652ADC │ │ │ │ +71C51E743E4E9A7C6CF6FF16C5D65C1F60954C0858B48FAAC4FBB21988E2A934 │ │ │ │ +AC50C097DDF42C416359647D79F830E1430FB9BB803451A6732D1B5CAB817C1B │ │ │ │ +673B3077D9A180F184267E9990C087BCDEBC8EB8B889934DD0EB63C2EBCED4A3 │ │ │ │ +83A0D6A365412CFF610EF7BD5F82B02AA293F1D2F868768CDE9B801C929B4A38 │ │ │ │ +64E20C70BC4041F837AD15423517F7336A067D140A2C7906DC5D45885FFB3B69 │ │ │ │ +724E5B9B138BD15A9359EB25D14BC4193E529D1A49FEB0DC1015BF94CEBBD5E0 │ │ │ │ +EA148B185C53E12BD9FA6DBC097D789A73E832F02F55080D8ED6087F5952EA78 │ │ │ │ +250A4C65CE4C4013554A031446D2092D813C4CB1A605D97A40CF867F656ECD1C │ │ │ │ +C23F80230AD1E449AA8B4007134F71156719206441D92B1A6DD25101ABF69F70 │ │ │ │ +538CCCE216376E1BD6E423986BD4E83B1975B15092D4E19F885672F9E7C02485 │ │ │ │ +E02DA0F4243D324A5983D1D46444E5F6573F699E4F2A3395EF0EB7808B7D4D62 │ │ │ │ +690FD033E93AA553082273636503DA4BBBBFA6D127CE10424DD1DDF4F879305C │ │ │ │ +14F64180E7851D091B3220DFC70CAA44716B8F7F0C6FBEDB167801DED77F9E69 │ │ │ │ +E9B31CD2D8044DB946E511162976C34DE27F2BB974B70509005562A0A21317B7 │ │ │ │ +46D826A31C476C8F9A778F941FF5956BA2D765B1AD0AC4BC7AE1CD8A2A81F039 │ │ │ │ +06EB13EBD099BBDB2EBDB54D459C288EA69FB0018CE9255BBFB08C1F90FF30BD │ │ │ │ +C971DA7FDB193281B8F967F21AB42F13F36085AC9EC0D6B6B448C8F289B0AD70 │ │ │ │ +DB521A4755ECF9CA594741E5C674220C21C265EF3BAE594197B00048C8D4DB73 │ │ │ │ +4AC47B6A86EAC7EECD042C8E23C347F8C9FCB870473C1FBD91C298174BCBF1A9 │ │ │ │ +7B366C570A9A04A433495FBC9FD0FFC22A0E8181424C0F038ED97AD5054B10CC │ │ │ │ +1CD5BA0719DD0B4F4F18932AE87FF8B8C1CF0C7482B7847049761505DCD85146 │ │ │ │ +4EE5CB53993A9449CD05233E961BD49AE92D308E2065D6C6BF038538039AA56A │ │ │ │ +C59D424BE3175427337E16892D3920598D518423E145C6B2DD3881F338845F0D │ │ │ │ +16C47AA0D9C2D6DE99C6A302D567ACD6F98BF38223F1890E099C8F93348FFDAA │ │ │ │ +C2D3440187C8FED87C1A891EF11EFA7168EC47F72AF8BC5BE1B88B1084E704F5 │ │ │ │ +82099F1A79E556D94CC38851C97DC3864945A7470F1389BCF608BADAE45B236D │ │ │ │ +2934A20FFBCF169BF84DF496B07E7F1D9002E62B030337642804403DF7E4B3FF │ │ │ │ +C5A421EE0033BA06C50A041FBFE8F81AFC145664E2976505EB14859CF0377EBA │ │ │ │ +EA604CF8BFB5F9ADB9A7ED56E6F0F919E791D57C7232241C892EAC3E55D2D03B │ │ │ │ +FF43B9DAB7B1D8C6588D6D3503F49E80121E52254431B308752A936E0B51124D │ │ │ │ +C7F23C316BA6FA73E6BC47EB9550003E1393C68360067C094C65C0DD17214FA0 │ │ │ │ +45FF0F9C3E0AE4C81093752D23EA95E163C98EC04873ECE3FB0882567329525C │ │ │ │ +0A3937B16CA72B5EB6D2DC10C1B485C0BA939587AFEBB6D837A40401C666BC1C │ │ │ │ +F3344FBAB3E48BEE18F3AF5CDB33BA63778D373A851333C8C34E2F35AB94E8B4 │ │ │ │ +FF7E62A92ED83B872894E0A17209E14CF61269204A35A4BC8C7EE4B16F19E91F │ │ │ │ +669C4EFCECB187F6C7FAF92B4E14E400C6B3C81679D4A7196D66DB1E897DDA42 │ │ │ │ +47CC2848B46D581A95EEF85AB528E8CDEEB275D1E1FE197A3A08D36406E2DADF │ │ │ │ +A87D817AF18B5525F89B7C2E584F4A1254A1FC71E749999A2152870631A69CB6 │ │ │ │ +666EBD6BB3366A598F6592040D0E82B9D866DF0A76C362E76C2804D108A0C148 │ │ │ │ +51F42E9E0ABD52CC2D02B156B63AFD03313AFC80EACC83DF9B59F05FD798951D │ │ │ │ +FCF5335636DFC6561910ACE0AEC47F74CFD302EB7421D28AAAC8FF82B7CE2B2A │ │ │ │ +340B8BCE09F57BFCBC77F91096D97A85726E68846398C8C9C8D3A65A252AE8FB │ │ │ │ +166750C244963BC61E2236BAAC529FABD6FC774550096374A8DB81B6AF1EA843 │ │ │ │ +27F671C0045D629E3734EF037447C4763514FD1C4AE858A494AFC23A64C82149 │ │ │ │ +F4C0A7023B3865B84FAC2DC88D1553DCEBA3D8FB5DBC1103123F6B8CB5B3A399 │ │ │ │ +B665B26B001BF1E4BFABE42BFF6B02D69FA88D5CBCA5A11D5B48CFB4EAE60558 │ │ │ │ +5FBE254AD3BE01761CD4995E766E172D768621223505FD6AA8F89FC042EB814C │ │ │ │ +34373DAEC4FAAF71C0752F814154C5299F751CE7E0F9C673D2E448D0204C214C │ │ │ │ +C04DC34671FBEF72350FFBA263662E86A0D3795E310153AAF4C8A2623E167E6E │ │ │ │ +1F13A9BA485D5DDFC451D691DBA7C49E20354A7AD79D89F7EDE24F0D5B48B27D │ │ │ │ +568D01EF2555504196C09841F5970D8CF6C5D47FFFCF18AE6B2A485342000AAD │ │ │ │ +1F922FBEF7C98E0965609C89240E7B131A59551F57CD5C92097FCE75F5D2778F │ │ │ │ +F9ACF43A3273551363442C8C539205903A835C744A4AA953545506081D3D231A │ │ │ │ +A140E01F280BC42A3C35EDAD5F6B8CE6E51C68E41CA813710864ED880FCE846C │ │ │ │ +1B66D27CC2DBCDC2B1B96A12490BD76D67A415D4A6595CD9B19D3104A83D2C82 │ │ │ │ +C46DCD2C027F0565EDB83E54FF99498194D3140E55E8EE65EBDEAC5409B5616A │ │ │ │ +73141DA2D581E300A6057F4301A02DD160AB3E55A116313525122D0608816AA8 │ │ │ │ +4712EEF3D6FE8C893DF37D │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3690,15 +3680,15 @@ │ │ │ │ %%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 134[44 3[46 2[33 12[37 2[46 42 26[54 11[23 42 4[42 │ │ │ │ +/Fe 139[32 1[33 2[42 9[37 1[37 46 18[65 20[23 4[42 42 │ │ │ │ 1[42 1[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 │ │ │ │ @@ -3822,41 +3812,40 @@ │ │ │ │ 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 1097 4 v │ │ │ │ -1262 w Fi(DenseMtx)24 b Fe(:)37 b Fh(DRAFT)27 b Fe(F)-7 │ │ │ │ -b(ebruary)27 b(29,)g(2024)p 2804 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)d(an)n(y)h(allo)r(cated)0 1237 │ │ │ │ -y(data,)27 b(and)h(free'ing)f(the)h(ob)5 b(ject.)101 │ │ │ │ -1447 y(1.)42 b Fi(DenseMtx)e(*)j(DenseMtx_new)c(\()k(void)f(\))h(;)208 │ │ │ │ -1581 y Fj(This)27 b(metho)r(d)h(simply)g(allo)r(cates)f(storage)f(for)h │ │ │ │ -(the)h Fi(DenseMtx)d Fj(structure)i(and)g(then)i(sets)e(the)h(default)g │ │ │ │ -(\014elds)g(b)n(y)f(a)208 1681 y(call)g(to)g Fi(DenseMtx)p │ │ │ │ -818 1681 27 4 v 28 w(setDefaultFields\()o(\))p Fj(.)101 │ │ │ │ -1849 y(2.)42 b Fi(void)f(DenseMtx_setDefau)o(ltF)o(ie)o(lds)c(\()43 │ │ │ │ -b(DenseMtx)d(*mtx)i(\))h(;)208 1983 y Fj(The)29 b(structure's)g │ │ │ │ -(\014elds)g(are)g(set)g(to)g(default)h(v)-5 b(alues:)40 │ │ │ │ -b Fi(type)28 b Fj(=)h Fi(SPOOLES)p 2558 1983 V 29 w(REAL)p │ │ │ │ -Fj(,)e Fi(rowid)h Fj(=)h Fi(colid)e Fj(=)i Fi(-1)p Fj(,)h │ │ │ │ -Fi(nrow)d Fj(=)208 2083 y Fi(ncol)h Fj(=)i Fi(inc1)f │ │ │ │ -Fj(=)h Fi(inc2)e Fj(=)i(0)g(and)g Fi(rowind)e Fj(=)i │ │ │ │ -Fi(colind)e Fj(=)i Fi(entries)d Fj(=)j Fi(next)f Fj(=)h │ │ │ │ -Fi(NULL)f Fj(.)h(The)g Fi(wrkDV)f Fj(ob)5 b(ject)30 b(has)208 │ │ │ │ -2183 y(its)d(default)h(\014elds)g(set)g(via)f(a)g(call)g(to)h │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fj(2)p 125 100 1134 4 v │ │ │ │ +1299 w Fi(DenseMtx)25 b Fe(:)37 b Fh(DRAFT)27 b Fe(Octob)r(er)g(4,)g │ │ │ │ +(2025)p 2766 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) │ │ │ │ +d(an)n(y)h(allo)r(cated)0 1237 y(data,)27 b(and)h(free'ing)f(the)h(ob)5 │ │ │ │ +b(ject.)101 1447 y(1.)42 b Fi(DenseMtx)e(*)j(DenseMtx_new)c(\()k(void)f │ │ │ │ +(\))h(;)208 1581 y Fj(This)27 b(metho)r(d)h(simply)g(allo)r(cates)f │ │ │ │ +(storage)f(for)h(the)h Fi(DenseMtx)d Fj(structure)i(and)g(then)i(sets)e │ │ │ │ +(the)h(default)g(\014elds)g(b)n(y)f(a)208 1681 y(call)g(to)g │ │ │ │ +Fi(DenseMtx)p 818 1681 27 4 v 28 w(setDefaultFields\()o(\))p │ │ │ │ +Fj(.)101 1849 y(2.)42 b Fi(void)f(DenseMtx_setDefau)o(ltF)o(ie)o(lds)c │ │ │ │ +(\()43 b(DenseMtx)d(*mtx)i(\))h(;)208 1983 y Fj(The)29 │ │ │ │ +b(structure's)g(\014elds)g(are)g(set)g(to)g(default)h(v)-5 │ │ │ │ +b(alues:)40 b Fi(type)28 b Fj(=)h Fi(SPOOLES)p 2558 1983 │ │ │ │ +V 29 w(REAL)p Fj(,)e Fi(rowid)h Fj(=)h Fi(colid)e Fj(=)i │ │ │ │ +Fi(-1)p Fj(,)h Fi(nrow)d Fj(=)208 2083 y Fi(ncol)h Fj(=)i │ │ │ │ +Fi(inc1)f Fj(=)h Fi(inc2)e Fj(=)i(0)g(and)g Fi(rowind)e │ │ │ │ +Fj(=)i Fi(colind)e Fj(=)i Fi(entries)d Fj(=)j Fi(next)f │ │ │ │ +Fj(=)h Fi(NULL)f Fj(.)h(The)g Fi(wrkDV)f Fj(ob)5 b(ject)30 │ │ │ │ +b(has)208 2183 y(its)d(default)h(\014elds)g(set)g(via)f(a)g(call)g(to)h │ │ │ │ Fi(DV)p 1497 2183 V 30 w(setDefaultFields)o(\(\))p Fj(.)208 │ │ │ │ 2317 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.)101 2485 y(3.)42 b Fi(void)f(DenseMtx_clearDat) │ │ │ │ o(a)d(\()43 b(DenseMtx)d(*mtx)i(\))h(;)208 2619 y Fj(This)29 │ │ │ │ b(metho)r(d)i(clears)d(the)i(ob)5 b(ject)30 b(and)g(free's)f(an)n(y)g │ │ │ │ (o)n(wned)g(data)h(b)n(y)f(in)n(v)n(oking)g(the)p 2928 │ │ │ │ @@ -3897,17 +3886,17 @@ │ │ │ │ f(the)i(ro)n(w)e(incremen)n(t)g(of)h(the)h(ob)5 b(ject,)24 │ │ │ │ b(the)h(di\013erence)f(in)g(memory)f(lo)r(cations)h(of)g(t)n(w)n(o)f │ │ │ │ (en)n(tries)208 5273 y(in)k(consecutiv)n(e)g(columns)g(in)h(the)g(same) │ │ │ │ f(ro)n(w.)208 5407 y 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 1097 4 v 1262 100 a Fi(DenseMtx)25 │ │ │ │ -b Fe(:)37 b Fh(DRAFT)110 b Fe(F)-7 b(ebruary)26 b(29,)h(2024)p │ │ │ │ -2764 100 V 1097 w Fj(3)101 390 y(5.)42 b Fi(int)g(DenseMtx_rowIncr)o │ │ │ │ +TeXDict begin 3 2 bop 83 100 1134 4 v 1300 100 a Fi(DenseMtx)24 │ │ │ │ +b Fe(:)37 b Fh(DRAFT)111 b Fe(Octob)r(er)26 b(4,)i(2025)p │ │ │ │ +2727 100 V 1134 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 │ │ │ │ @@ -3978,31 +3967,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 1097 4 v │ │ │ │ -1262 w Fi(DenseMtx)24 b Fe(:)37 b Fh(DRAFT)27 b Fe(F)-7 │ │ │ │ -b(ebruary)27 b(29,)g(2024)p 2804 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 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fj(4)p 125 100 1134 4 v │ │ │ │ +1299 w Fi(DenseMtx)25 b Fe(:)37 b Fh(DRAFT)27 b Fe(Octob)r(er)g(4,)g │ │ │ │ +(2025)p 2766 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 │ │ │ │ -(column)g Fi(jcol)p Fj(.)208 1153 y Fh(R)l(eturn)j(c)l(o)l(des:)45 │ │ │ │ +(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 │ │ │ │ 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 │ │ │ │ @@ -4075,17 +4064,17 @@ │ │ │ │ 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 1097 4 v 1262 100 a Fi(DenseMtx)25 │ │ │ │ -b Fe(:)37 b Fh(DRAFT)110 b Fe(F)-7 b(ebruary)26 b(29,)h(2024)p │ │ │ │ -2764 100 V 1097 w Fj(5)0 390 y Fc(1.2.4)112 b(Utilit)m(y)38 │ │ │ │ +TeXDict begin 5 4 bop 83 100 1134 4 v 1300 100 a Fi(DenseMtx)24 │ │ │ │ +b Fe(:)37 b Fh(DRAFT)111 b Fe(Octob)r(er)26 b(4,)i(2025)p │ │ │ │ +2727 100 V 1134 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 │ │ │ │ @@ -4164,35 +4153,34 @@ │ │ │ │ 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 1097 4 v │ │ │ │ -1262 w Fi(DenseMtx)24 b Fe(:)37 b Fh(DRAFT)27 b Fe(F)-7 │ │ │ │ -b(ebruary)27 b(29,)g(2024)p 2804 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 │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fj(6)p 125 100 1134 4 v │ │ │ │ +1299 w Fi(DenseMtx)25 b Fe(:)37 b Fh(DRAFT)27 b Fe(Octob)r(er)g(4,)g │ │ │ │ +(2025)p 2766 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 │ │ │ │ y Fj(This)27 b(metho)r(d)h(the)g(en)n(tries)f(in)h(the)g(matrix)f(with) │ │ │ │ h(random)f(n)n(um)n(b)r(ers)g(using)g(the)h Fi(drand)e │ │ │ │ Fj(ob)5 b(ject.)208 1737 y Fh(Err)l(or)30 b(che)l(cking:)38 │ │ │ │ b Fj(If)28 b Fi(mtx)f Fj(or)g Fi(drand)e 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.)60 1906 y(12.)41 b Fi(void)g(DenseMtx_checksum)o(s)d(\()43 │ │ │ │ @@ -4248,17 +4236,17 @@ │ │ │ │ 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 1097 4 v 1262 100 a Fi(DenseMtx)25 │ │ │ │ -b Fe(:)37 b Fh(DRAFT)110 b Fe(F)-7 b(ebruary)26 b(29,)h(2024)p │ │ │ │ -2764 100 V 1097 w Fj(7)0 390 y Fc(1.2.5)112 b(IO)38 b(metho)s(ds)0 │ │ │ │ +TeXDict begin 7 6 bop 83 100 1134 4 v 1300 100 a Fi(DenseMtx)24 │ │ │ │ +b Fe(:)37 b Fh(DRAFT)111 b Fe(Octob)r(er)26 b(4,)i(2025)p │ │ │ │ +2727 100 V 1134 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 │ │ │ │ @@ -4345,22 +4333,21 @@ │ │ │ │ 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 1097 4 v │ │ │ │ -1262 w Fi(DenseMtx)24 b Fe(:)37 b Fh(DRAFT)27 b Fe(F)-7 │ │ │ │ -b(ebruary)27 b(29,)g(2024)p 2804 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 1134 4 v │ │ │ │ +1299 w Fi(DenseMtx)25 b Fe(:)37 b Fh(DRAFT)27 b Fe(Octob)r(er)g(4,)g │ │ │ │ +(2025)p 2766 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 February 29, 2024 │ │ │ │ │ + 2 DenseMtx : DRAFT October 4, 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 February 29, 2024 3 │ │ │ │ │ + DenseMtx : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 4 DenseMtx : DRAFT October 4, 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 February 29, 2024 5 │ │ │ │ │ + DenseMtx : DRAFT October 4, 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. │ │ │ │ │ @@ -174,21 +174,21 @@ │ │ │ │ │ Error checking: If mtx is NULL, an error message is printed and the program exits. │ │ │ │ │ 7. void DenseMtx_copyRow ( DenseMtx *mtxB, int irowB, DenseMtx *mtxA, int irowA ) ; │ │ │ │ │ This method copies 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. │ │ │ │ │ 8. void DenseMtx_copyRowAndIndex ( DenseMtx *mtxB, int irowB, │ │ │ │ │ - DenseMtx *mtxA, int irowA ) ; │ │ │ │ │ + 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 February 29, 2024 │ │ │ │ │ + 6 DenseMtx : DRAFT October 4, 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 February 29, 2024 7 │ │ │ │ │ + DenseMtx : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 8 DenseMtx : DRAFT October 4, 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 2024.02.29:1857 │ │ │ │ +%DVIPSSource: TeX output 2025.10.04:1733 │ │ │ │ %%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 │ │ │ │ @@ -1721,23 +1721,23 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 50 /two put │ │ │ │ dup 52 /four put │ │ │ │ -dup 57 /nine put │ │ │ │ +dup 53 /five put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 70 /F put │ │ │ │ -dup 97 /a put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ +dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ -dup 117 /u put │ │ │ │ -dup 121 /y put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1911,95 +1911,85 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA647CD0E2539DFAD9604486DCCFA49 │ │ │ │ -AC96130D106A8F8387633622C3809400D6E8FF9D60877C743502E4D211CEBF62 │ │ │ │ -9A6F91045C22D5D20C5FF677D89983D02E5EE26C71A9EAE0E7C52465DA5A149A │ │ │ │ -9B731C27EC8366BC3E841C0CAE49A33DE164A857365B17B09CAD121C47A980CB │ │ │ │ -C75E1030F6C394EDB46C54B46880D2344127B903FB22684C9CAACE6053DC3BFA │ │ │ │ -4E47C565ECAF19C4295A11BD68CA6D45B5738B932BB3690A8C712904C49C1636 │ │ │ │ -A7702075F2FEA8DB3EB3A3C1216BB769DD0BAF4507A18E3052F2C846B0797933 │ │ │ │ -8CE9BB2DB5DFADAF1B0FC3A22BAB82A0D5D290F7AD950013CFA465BE11C1076D │ │ │ │ -5833FF92321FBF90D9229D3BA09DD18EEC44D9FCF8FCF63CC09D2977BFA798B6 │ │ │ │ -47FB047EA6AF69C7DE570176F5B6C0FED74DEDBF7DDF49550DD84BA14AC09423 │ │ │ │ -F70D5B14F0F8588F1E2FFE0DFE0760E77A9E39DEDAC5C5AE3760722C029B916D │ │ │ │ -96A2A7D1DD6A61F90B4B9806314A668EB7A0E107A3527310A240490453CC18D7 │ │ │ │ -3793B4CF3CE13EA332E7F5C2BACF85AC75FE84693B966BB0F6FB9A179A331C4E │ │ │ │ -55E9EF30E2734E44A88E053CD5E650D7E529E94CB7F8B733E68315ACAC5BEFC5 │ │ │ │ -3FE4F585F875310267865679AB381125C31E9AEB7226DC9F18DA80A9DE2F38A4 │ │ │ │ -51B8F9D5B2FBA0F50D53AE6212AFE41466A594F7A303B4E82F1493C0B8D65756 │ │ │ │ -BE6AF2931E5ADA5CE7D51CB5B1EC916C6C6D674808939331CA66F8181DD2B112 │ │ │ │ -1A12198CCCB6BBF1D40C803E794B65241ACE1E0D30CCA1C6F2D3E1415B98726B │ │ │ │ -9BA303BE2C4C276108CC78C093F1CC85CA454CC38535D1DEBFA341D84E8A5DDF │ │ │ │ -D53D8DD0F4A812B5BA63871BEB3BCE93FBC77AD395914E2CD757546C2BE2D641 │ │ │ │ -FDB12258E1E1D10E1B963EABB265F2C8B2547D48963E1AD3B223B666B46915A1 │ │ │ │ -157F5EA0AB8D8411C07AA2EB5D0EF1A1BA6D81C47473A3D3D6287104C7BF61F8 │ │ │ │ -3BDB64995DE96A65BF2B7288C51ADAA3D373A95C40D5240C5FF397551554AA9E │ │ │ │ -C89C7E45AA7738503CB058EF6AD5052CC78E4445C810C250BF25394B8D7DE82E │ │ │ │ -315C9CCD6E1E9150EC79EE0F354C668AE199C1AFF39C67337A86CB932E8D64E9 │ │ │ │ -389FF3CC08B538492DEED017686DBB9BDEA30FE67FB4EBDB3627C16FD15F243A │ │ │ │ -7FDEB310EFC940E57726E94340472F2C452815927ADE21578C959890216BE504 │ │ │ │ -225BE4B4D2E3B19F5E06B5A0B25AF168C3A2B26F599A829F89C16BD2026E8CC9 │ │ │ │ -8FB3CBB830C3E36C099071A70D0B8834FF2C17364EB50D5C71440CC7BFE02321 │ │ │ │ -8C6ECAC2F7EC1BE39077DB0E8B2B251626A71FD038EB2CF1FC254D98C1535CAA │ │ │ │ -A8C987BC266482BD860A333048E1EDB3DD40A6ECD6DA0088AD9B9640202D89AA │ │ │ │ -0BB9A0ADF63491E67F2E97E35942D77E59B9B8AB0ED28B022EE5CD3449FC5B7A │ │ │ │ -19E38845B488F97D155C4312885E29537EAE97719C65845663480CE79DE8F037 │ │ │ │ -68995C0928FE8AFBEE554F01381EE5187578DF5D2542F26F66A599EE8ECC1F68 │ │ │ │ -FBADF3C2BA968C3CEB86675CF9A6CFD736E1422800D270417D497903DE87F2AE │ │ │ │ -938E39E120E9D3079F512E545E0E2616B84E81FE41392184F96818A7C86BF541 │ │ │ │ -F2E67C48CA56DA838C9FA0FAD538073B9F26319140D1F80EEEBCA190DE660A31 │ │ │ │ -457CAC16E92F87449A3734F9EA751588514865B58DC073658C8A857B5398AAC7 │ │ │ │ -3DC11E069996EF74A3189A07630D5DB87C5E028CD193C086B4D0E8BABC4F2393 │ │ │ │ -235EC96091B16C4A6D97DA1BD30A2D2E71F55869223CA66AD12448B668685F6E │ │ │ │ -06E7888D7F20045C662C4F7994CC7E1CE9AAC33A026716AA0551DF12343F0E22 │ │ │ │ -6E9F4B21C90406CC4997601194EF37A973221D1F4D73DD5666BD297F621C92AA │ │ │ │ -E3F698BC1146ADE754C4120EDF5B3E974D75A237E51DB49D52CD6CC7C9E8BD2D │ │ │ │ -E6849DF8F4DBA86C655D0C57CB54836C8A841C1D814F6B493F96ADBFCAD78D3B │ │ │ │ -430C58EF169950851B6A0B46411488B1A6F6974832787A24C0CDDBE27996EFB1 │ │ │ │ -DB341FA34B1DC6238D978D1E1D34AF3FB375ED6DA9C88699F195C88A54622F7C │ │ │ │ -36DAFC663D85660E756733A7E22F20C6A5D91F06087CAD10F7217BD33F343DC6 │ │ │ │ -F5EB9F16FE763672243EE6AE5CB6063A1D64670E1C059DD52134974E27D9D89C │ │ │ │ -BC658FCD814F20703D610C978FDCD6E2AEA31C18D1A310F215B28199F66C87DB │ │ │ │ -3B23980A393E1DD77AFA3045EDB6942505F3CF6204315A14E5B6BF2E96F3BB1F │ │ │ │ -628D24AC1893BC7DAEF3AA63F2116837F31DB90D872CBD9E5C48BCDEE781D20D │ │ │ │ -C6553D2D15F4E8438A9D1C7CEE1B72BD6AA08DC0AFEAF8B4DC1038707EE4A1BF │ │ │ │ -3D84460E60AF90F55002C1D8EBF0700F7EC3EFC944BEA78D0E0536F3AA6D9A84 │ │ │ │ -604A781AC5ACFEB7E681365315EE11E991C03DA431B65B332AD8F83F6F3AE66C │ │ │ │ -1BF434D3793FB5BCC44E44ACFF2855C2770C4AC678C6ACD6EB071974ACF1AE37 │ │ │ │ -D02C1736C62CC205A2F3488448527EFFA379613A8E6A6D134F4BFBAE6127304D │ │ │ │ -576C900A458E32CD42A4674415E03D8EB5742E71B854B3EDFD271AA214436544 │ │ │ │ -D1BCFD52F439298847E1FA258E5D38384FC85BC4EDC6F9E4431621CF763B137B │ │ │ │ -22DB6E3268B3F78881D55EA7C52ABF23FB73C152B06B708084FE1B00CFE72D9D │ │ │ │ -57B62AEE912E63BBD89D4D13CE896735454F1A16C3D9FB6CDF142CCA9F1C0242 │ │ │ │ -46F62109DF30667DA327F7CF6DC19B880C860C69080597FFCB1793313E202D4F │ │ │ │ -120A7C6B052C2EB7597B71B0985D24FDD2D3918393BF720E762C5DBBC2BB1E91 │ │ │ │ -B04560364EFE5B16EB068E0560FB932E0C617CFB95A166388E99AC4CB020F5BC │ │ │ │ -E24BB77352D7C3B21C37D404051A70FFFA0F726C35501A1FBB411F832CE46A2E │ │ │ │ -B424E26BD4 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFD8CDE285A2827F4659E339460ABEF319FE44D7A91E93CA309E9266E03DA │ │ │ │ +735F5DEF3920C01189BB63C2BD7ED0B92EABB481F123641477CDCCAB9751FB7B │ │ │ │ +F67DA7CE6EB134BC10D0228562BA5A6BFE6940907EF030ABF9EC4A8A0DFEF73D │ │ │ │ +3289E8CB4DC37694F5A656A935D92C72B3D82B012F578A27711B161DE9652ADC │ │ │ │ +71C51E743E4E9A7C6CF6FF16C5D65C1F60954C0858B48FAAC4FBB21988E2A934 │ │ │ │ +AC50C097DDF42C416359647D79F830E1430FB9BB803451A6732D1B5CAB817C1B │ │ │ │ +673B3077D9A180F184267E9990C087BCDEBC8EB8B889934DD0EB63C2EBCED4A3 │ │ │ │ +83A0D6A365412CFF610EF7BD5F82B02AA293F1D2F868768CDE9B801C929B4A38 │ │ │ │ +64E20C70BC4041F837AD15423517F7336A067D140A2C7906DC5D45885FFB3B69 │ │ │ │ +724E5B9B138BD15A9359EB25D14BC4193E529D1A49FEB0DC1015BF94CEBBD5E0 │ │ │ │ +EA148B185C53E12BD9FA6DBC097D789A73E832F02F55080D8ED6087F5952EA78 │ │ │ │ +250A4C65CE4C4013554A031446D2092D813C4CB1A605D97A40CF867F656ECD1C │ │ │ │ +C23F80230AD1E449AA8B4007134F71156719206441D92B1A6DD25101ABF69F70 │ │ │ │ +538CCCE216376E1BD6E423986BD4E83B1975B15092D4E19F885672F9E7C02485 │ │ │ │ +E02DA0F4243D324A5983D1D46444E5F6573F699E4F2A3395EF0EB7808B7D4D62 │ │ │ │ +690FD033E93AA553082273636503DA4BBBBFA6D127CE10424DD1DDF4F879305C │ │ │ │ +14F64180E7851D091B3220DFC70CAA44716B8F7F0C6FBEDB167801DED77F9E69 │ │ │ │ +E9B31CD2D8044DB946E511162976C34DE27F2BB974B70509005562A0A21317B7 │ │ │ │ +46D826A31C476C8F9A778F941FF5956BA2D765B1AD0AC4BC7AE1CD8A2A81F039 │ │ │ │ +06EB13EBD099BBDB2EBDB54D459C288EA69FB0018CE9255BBFB08C1F90FF30BD │ │ │ │ +C971DA7FDB193281B8F967F21AB42F13F36085AC9EC0D6B6B448C8F289B0AD70 │ │ │ │ +DB521A4755ECF9CA594741E5C674220C21C265EF3BAE594197B00048C8D4DB73 │ │ │ │ +4AC47B6A86EAC7EECD042C8E23C347F8C9FCB870473C1FBD91C298174BCBF1A9 │ │ │ │ +7B366C570A9A04A433495FBC9FD0FFC22A0E8181424C0F038ED97AD5054B10CC │ │ │ │ +1CD5BA0719DD0B4F4F18932AE87FF8B8C1CF0C7482B7847049761505DCD85146 │ │ │ │ +4EE5CB53993A9449CD05233E961BD49AE92D308E2065D6C6BF038538039AA56A │ │ │ │ +C59D424BE3175427337E16892D3920598D518423E145C6B2DD3881F338845F0D │ │ │ │ +16C47AA0D9C2D6DE99C6A302D567ACD6F98BF38223F1890E099C8F93348FFDAA │ │ │ │ +C2D3440187C8FED87C1A891EF11EFA7168EC47F72AF8BC5BE1B88B1084E704F5 │ │ │ │ +82099F1A79E556D94CC38851C97DC3864945A7470F1389BCF608BADAE45B236D │ │ │ │ +2934A20FFBCF169BF84DF496B07E7F1D9002E62B030337642804403DF7E4B3FF │ │ │ │ +C5A421EE0033BA06C50A041FBFE8F81AFC145664E2976505EB14859CF0377EBA │ │ │ │ +EA604CF8BFB5F9ADB9A7ED56E6F0F919E791D57C7232241C892EAC3E55D2D03B │ │ │ │ +FF43B9DAB7B1D8C6588D6D3503F49E80121E52254431B308752A936E0B51124D │ │ │ │ +C7F23C316BA6FA73E6BC47EB9550003E1393C68360067C094C65C0DD17214FA0 │ │ │ │ +45FF0F9C3E0AE4C81093752D23EA95E163C98EC04873ECE3FB0882567329525C │ │ │ │ +0A3937B16CA72B5EB6D2DC10C1B485C0BA939587AFEBB6D837A40401C666BC1C │ │ │ │ +F3344FBAB3E48BEE18F3AF5CDB33BA63778D373A851333C8C34E2F35AB94E8B4 │ │ │ │ +FF7E62A92ED83B872894E0A17209E14CF61269204A35A4BC8C7EE4B16F19E91F │ │ │ │ +669C4EFCECB187F6C7FAF92B4E14E400C6B3C81679D4A7196D66DB1E897DDA42 │ │ │ │ +47CC2848B46D581A95EEF85AB528E8CDEEB275D1E1FE197A3A08D36406E2DADF │ │ │ │ +A87D817AF18B5525F89B7C2E584F4A1254A1FC71E749999A2152870631A69CB6 │ │ │ │ +666EBD6BB3366A598F6592040D0E82B9D866DF0A76C362E76C2804D108A0C148 │ │ │ │ +51F42E9E0ABD52CC2D02B156B63AFD03313AFC80EACC83DF9B59F05FD798951D │ │ │ │ +FCF5335636DFC6561910ACE0AEC47F74CFD302EB7421D28AAAC8FF82B7CE2B2A │ │ │ │ +340B8BCE09F57BFCBC77F91096D97A85726E68846398C8C9C8D3A65A252AE8FB │ │ │ │ +166750C244963BC61E2236BAAC529FABD6FC774550096374A8DB81B6AF1EA843 │ │ │ │ +27F671C0045D629E3734EF037447C4763514FD1C4AE858A494AFC23A64C82149 │ │ │ │ +F4C0A7023B3865B84FAC2DC88D1553DCEBA3D8FB5DBC1103123F6B8CB5B3A399 │ │ │ │ +B665B26B001BF1E4BFABE42BFF6B02D69FA88D5CBCA5A11D5B48CFB4EAE60558 │ │ │ │ +5FBE254AD3BE01761CD4995E766E172D768621223505FD6AA8F89FC042EB814C │ │ │ │ +34373DAEC4FAAF71C0752F814154C5299F751CE7E0F9C673D2E448D0204C214C │ │ │ │ +C04DC34671FBEF72350FFBA263662E86A0D3795E310153AAF4C8A2623E167E6E │ │ │ │ +1F13A9BA485D5DDFC451D691DBA7C49E20354A7AD79D89F7EDE24F0D5B48B27D │ │ │ │ +568D01EF2555504196C09841F5970D8CF6C5D47FFFCF18AE6B2A485342000AAD │ │ │ │ +1F922FBEF7C98E0965609C89240E7B131A59551F57CD5C92097FCE75F5D2778F │ │ │ │ +F9ACF43A3273551363442C8C539205903A835C744A4AA953545506081D3D231A │ │ │ │ +A140E01F280BC42A3C35EDAD5F6B8CE6E51C68E41CA813710864ED880FCE846C │ │ │ │ +1B66D27CC2DBCDC2B1B96A12490BD76D67A415D4A6595CD9B19D3104A83D2C82 │ │ │ │ +C46DCD2C027F0565EDB83E54FF99498194D3140E55E8EE65EBDEAC5409B5616A │ │ │ │ +73141DA2D581E300A6057F4301A02DD160AB3E55A116313525122D0608816AA8 │ │ │ │ +4712EEF3D6FE8C893DF37D │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3610,16 +3600,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 134[48 3[51 2[36 12[40 2[51 45 26[59 11[25 │ │ │ │ -45 4[45 1[45 1[45 3[25 44[{}13 90.9091 /CMSL10 rf /Fe │ │ │ │ +/CMTI10 rf /Fd 139[35 1[36 2[45 9[40 1[40 51 18[71 20[25 │ │ │ │ +4[45 45 1[45 1[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 │ │ │ │ /tieaccentlowercase.new/tieaccentcapital.new/.notdef/afii61664.asc/uni2422 3 │ │ │ │ @@ -3711,32 +3701,31 @@ │ │ │ │ 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 1087 4 v │ │ │ │ -1269 w Fh(Drand)29 b Fd(:)41 b Fc(DRAFT)30 b Fd(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2813 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 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fj(2)p 136 100 1128 4 v │ │ │ │ +1310 w Fh(Drand)29 b Fd(:)41 b Fc(DRAFT)30 b Fd(Octob)s(er)g(4,)h(2025) │ │ │ │ +p 2772 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 │ │ │ │ @@ -3770,17 +3759,17 @@ │ │ │ │ (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 1087 4 v 1269 100 a Fh(Drand)29 │ │ │ │ -b Fd(:)40 b Fc(DRAFT)121 b Fd(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2766 100 V 1087 w Fj(3)111 399 y(3.)46 b Fh(void)h(Drand_setSeeds)d(\() │ │ │ │ +TeXDict begin 3 2 bop 91 100 1128 4 v 1310 100 a Fh(Drand)29 │ │ │ │ +b Fd(:)40 b Fc(DRAFT)121 b Fd(Octob)s(er)31 b(4,)g(2025)p │ │ │ │ +2725 100 V 1128 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 │ │ │ │ @@ -3835,20 +3824,20 @@ │ │ │ │ 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 1087 4 v │ │ │ │ -1269 w Fh(Drand)29 b Fd(:)41 b Fc(DRAFT)30 b Fd(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2813 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 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fj(4)p 136 100 1128 4 v │ │ │ │ +1310 w Fh(Drand)29 b Fd(:)41 b Fc(DRAFT)30 b Fd(Octob)s(er)g(4,)h(2025) │ │ │ │ +p 2772 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) │ │ │ │ 427 1020 y(message)27 b(\014le)f(is)g Fc(stdout)p Fj(,)i(otherwise)e(a) │ │ │ │ h(\014le)f(is)f(op)s(ened)g(with)h Fc(app)-5 b(end)28 │ │ │ │ b Fj(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 1133 │ │ │ │ ├── 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 February 29, 2024 │ │ │ │ │ + 2 Drand : DRAFT October 4, 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 February 29, 2024 3 │ │ │ │ │ + Drand : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 4 Drand : DRAFT October 4, 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 2024.02.29:1857 │ │ │ │ +%DVIPSSource: TeX output 2025.10.04:1733 │ │ │ │ %%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 │ │ │ │ @@ -1407,23 +1407,23 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 50 /two put │ │ │ │ dup 52 /four put │ │ │ │ -dup 57 /nine put │ │ │ │ +dup 53 /five put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 70 /F put │ │ │ │ -dup 97 /a put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ +dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ -dup 117 /u put │ │ │ │ -dup 121 /y put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1597,95 +1597,85 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA647CD0E2539DFAD9604486DCCFA49 │ │ │ │ -AC96130D106A8F8387633622C3809400D6E8FF9D60877C743502E4D211CEBF62 │ │ │ │ -9A6F91045C22D5D20C5FF677D89983D02E5EE26C71A9EAE0E7C52465DA5A149A │ │ │ │ -9B731C27EC8366BC3E841C0CAE49A33DE164A857365B17B09CAD121C47A980CB │ │ │ │ -C75E1030F6C394EDB46C54B46880D2344127B903FB22684C9CAACE6053DC3BFA │ │ │ │ -4E47C565ECAF19C4295A11BD68CA6D45B5738B932BB3690A8C712904C49C1636 │ │ │ │ -A7702075F2FEA8DB3EB3A3C1216BB769DD0BAF4507A18E3052F2C846B0797933 │ │ │ │ -8CE9BB2DB5DFADAF1B0FC3A22BAB82A0D5D290F7AD950013CFA465BE11C1076D │ │ │ │ -5833FF92321FBF90D9229D3BA09DD18EEC44D9FCF8FCF63CC09D2977BFA798B6 │ │ │ │ -47FB047EA6AF69C7DE570176F5B6C0FED74DEDBF7DDF49550DD84BA14AC09423 │ │ │ │ -F70D5B14F0F8588F1E2FFE0DFE0760E77A9E39DEDAC5C5AE3760722C029B916D │ │ │ │ -96A2A7D1DD6A61F90B4B9806314A668EB7A0E107A3527310A240490453CC18D7 │ │ │ │ -3793B4CF3CE13EA332E7F5C2BACF85AC75FE84693B966BB0F6FB9A179A331C4E │ │ │ │ -55E9EF30E2734E44A88E053CD5E650D7E529E94CB7F8B733E68315ACAC5BEFC5 │ │ │ │ -3FE4F585F875310267865679AB381125C31E9AEB7226DC9F18DA80A9DE2F38A4 │ │ │ │ -51B8F9D5B2FBA0F50D53AE6212AFE41466A594F7A303B4E82F1493C0B8D65756 │ │ │ │ -BE6AF2931E5ADA5CE7D51CB5B1EC916C6C6D674808939331CA66F8181DD2B112 │ │ │ │ -1A12198CCCB6BBF1D40C803E794B65241ACE1E0D30CCA1C6F2D3E1415B98726B │ │ │ │ -9BA303BE2C4C276108CC78C093F1CC85CA454CC38535D1DEBFA341D84E8A5DDF │ │ │ │ -D53D8DD0F4A812B5BA63871BEB3BCE93FBC77AD395914E2CD757546C2BE2D641 │ │ │ │ -FDB12258E1E1D10E1B963EABB265F2C8B2547D48963E1AD3B223B666B46915A1 │ │ │ │ -157F5EA0AB8D8411C07AA2EB5D0EF1A1BA6D81C47473A3D3D6287104C7BF61F8 │ │ │ │ -3BDB64995DE96A65BF2B7288C51ADAA3D373A95C40D5240C5FF397551554AA9E │ │ │ │ -C89C7E45AA7738503CB058EF6AD5052CC78E4445C810C250BF25394B8D7DE82E │ │ │ │ -315C9CCD6E1E9150EC79EE0F354C668AE199C1AFF39C67337A86CB932E8D64E9 │ │ │ │ -389FF3CC08B538492DEED017686DBB9BDEA30FE67FB4EBDB3627C16FD15F243A │ │ │ │ -7FDEB310EFC940E57726E94340472F2C452815927ADE21578C959890216BE504 │ │ │ │ -225BE4B4D2E3B19F5E06B5A0B25AF168C3A2B26F599A829F89C16BD2026E8CC9 │ │ │ │ -8FB3CBB830C3E36C099071A70D0B8834FF2C17364EB50D5C71440CC7BFE02321 │ │ │ │ -8C6ECAC2F7EC1BE39077DB0E8B2B251626A71FD038EB2CF1FC254D98C1535CAA │ │ │ │ -A8C987BC266482BD860A333048E1EDB3DD40A6ECD6DA0088AD9B9640202D89AA │ │ │ │ -0BB9A0ADF63491E67F2E97E35942D77E59B9B8AB0ED28B022EE5CD3449FC5B7A │ │ │ │ -19E38845B488F97D155C4312885E29537EAE97719C65845663480CE79DE8F037 │ │ │ │ -68995C0928FE8AFBEE554F01381EE5187578DF5D2542F26F66A599EE8ECC1F68 │ │ │ │ -FBADF3C2BA968C3CEB86675CF9A6CFD736E1422800D270417D497903DE87F2AE │ │ │ │ -938E39E120E9D3079F512E545E0E2616B84E81FE41392184F96818A7C86BF541 │ │ │ │ -F2E67C48CA56DA838C9FA0FAD538073B9F26319140D1F80EEEBCA190DE660A31 │ │ │ │ -457CAC16E92F87449A3734F9EA751588514865B58DC073658C8A857B5398AAC7 │ │ │ │ -3DC11E069996EF74A3189A07630D5DB87C5E028CD193C086B4D0E8BABC4F2393 │ │ │ │ -235EC96091B16C4A6D97DA1BD30A2D2E71F55869223CA66AD12448B668685F6E │ │ │ │ -06E7888D7F20045C662C4F7994CC7E1CE9AAC33A026716AA0551DF12343F0E22 │ │ │ │ -6E9F4B21C90406CC4997601194EF37A973221D1F4D73DD5666BD297F621C92AA │ │ │ │ -E3F698BC1146ADE754C4120EDF5B3E974D75A237E51DB49D52CD6CC7C9E8BD2D │ │ │ │ -E6849DF8F4DBA86C655D0C57CB54836C8A841C1D814F6B493F96ADBFCAD78D3B │ │ │ │ -430C58EF169950851B6A0B46411488B1A6F6974832787A24C0CDDBE27996EFB1 │ │ │ │ -DB341FA34B1DC6238D978D1E1D34AF3FB375ED6DA9C88699F195C88A54622F7C │ │ │ │ -36DAFC663D85660E756733A7E22F20C6A5D91F06087CAD10F7217BD33F343DC6 │ │ │ │ -F5EB9F16FE763672243EE6AE5CB6063A1D64670E1C059DD52134974E27D9D89C │ │ │ │ -BC658FCD814F20703D610C978FDCD6E2AEA31C18D1A310F215B28199F66C87DB │ │ │ │ -3B23980A393E1DD77AFA3045EDB6942505F3CF6204315A14E5B6BF2E96F3BB1F │ │ │ │ -628D24AC1893BC7DAEF3AA63F2116837F31DB90D872CBD9E5C48BCDEE781D20D │ │ │ │ -C6553D2D15F4E8438A9D1C7CEE1B72BD6AA08DC0AFEAF8B4DC1038707EE4A1BF │ │ │ │ -3D84460E60AF90F55002C1D8EBF0700F7EC3EFC944BEA78D0E0536F3AA6D9A84 │ │ │ │ -604A781AC5ACFEB7E681365315EE11E991C03DA431B65B332AD8F83F6F3AE66C │ │ │ │ -1BF434D3793FB5BCC44E44ACFF2855C2770C4AC678C6ACD6EB071974ACF1AE37 │ │ │ │ -D02C1736C62CC205A2F3488448527EFFA379613A8E6A6D134F4BFBAE6127304D │ │ │ │ -576C900A458E32CD42A4674415E03D8EB5742E71B854B3EDFD271AA214436544 │ │ │ │ -D1BCFD52F439298847E1FA258E5D38384FC85BC4EDC6F9E4431621CF763B137B │ │ │ │ -22DB6E3268B3F78881D55EA7C52ABF23FB73C152B06B708084FE1B00CFE72D9D │ │ │ │ -57B62AEE912E63BBD89D4D13CE896735454F1A16C3D9FB6CDF142CCA9F1C0242 │ │ │ │ -46F62109DF30667DA327F7CF6DC19B880C860C69080597FFCB1793313E202D4F │ │ │ │ -120A7C6B052C2EB7597B71B0985D24FDD2D3918393BF720E762C5DBBC2BB1E91 │ │ │ │ -B04560364EFE5B16EB068E0560FB932E0C617CFB95A166388E99AC4CB020F5BC │ │ │ │ -E24BB77352D7C3B21C37D404051A70FFFA0F726C35501A1FBB411F832CE46A2E │ │ │ │ -B424E26BD4 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFD8CDE285A2827F4659E339460ABEF319FE44D7A91E93CA309E9266E03DA │ │ │ │ +735F5DEF3920C01189BB63C2BD7ED0B92EABB481F123641477CDCCAB9751FB7B │ │ │ │ +F67DA7CE6EB134BC10D0228562BA5A6BFE6940907EF030ABF9EC4A8A0DFEF73D │ │ │ │ +3289E8CB4DC37694F5A656A935D92C72B3D82B012F578A27711B161DE9652ADC │ │ │ │ +71C51E743E4E9A7C6CF6FF16C5D65C1F60954C0858B48FAAC4FBB21988E2A934 │ │ │ │ +AC50C097DDF42C416359647D79F830E1430FB9BB803451A6732D1B5CAB817C1B │ │ │ │ +673B3077D9A180F184267E9990C087BCDEBC8EB8B889934DD0EB63C2EBCED4A3 │ │ │ │ +83A0D6A365412CFF610EF7BD5F82B02AA293F1D2F868768CDE9B801C929B4A38 │ │ │ │ +64E20C70BC4041F837AD15423517F7336A067D140A2C7906DC5D45885FFB3B69 │ │ │ │ +724E5B9B138BD15A9359EB25D14BC4193E529D1A49FEB0DC1015BF94CEBBD5E0 │ │ │ │ +EA148B185C53E12BD9FA6DBC097D789A73E832F02F55080D8ED6087F5952EA78 │ │ │ │ +250A4C65CE4C4013554A031446D2092D813C4CB1A605D97A40CF867F656ECD1C │ │ │ │ +C23F80230AD1E449AA8B4007134F71156719206441D92B1A6DD25101ABF69F70 │ │ │ │ +538CCCE216376E1BD6E423986BD4E83B1975B15092D4E19F885672F9E7C02485 │ │ │ │ +E02DA0F4243D324A5983D1D46444E5F6573F699E4F2A3395EF0EB7808B7D4D62 │ │ │ │ +690FD033E93AA553082273636503DA4BBBBFA6D127CE10424DD1DDF4F879305C │ │ │ │ +14F64180E7851D091B3220DFC70CAA44716B8F7F0C6FBEDB167801DED77F9E69 │ │ │ │ +E9B31CD2D8044DB946E511162976C34DE27F2BB974B70509005562A0A21317B7 │ │ │ │ +46D826A31C476C8F9A778F941FF5956BA2D765B1AD0AC4BC7AE1CD8A2A81F039 │ │ │ │ +06EB13EBD099BBDB2EBDB54D459C288EA69FB0018CE9255BBFB08C1F90FF30BD │ │ │ │ +C971DA7FDB193281B8F967F21AB42F13F36085AC9EC0D6B6B448C8F289B0AD70 │ │ │ │ +DB521A4755ECF9CA594741E5C674220C21C265EF3BAE594197B00048C8D4DB73 │ │ │ │ +4AC47B6A86EAC7EECD042C8E23C347F8C9FCB870473C1FBD91C298174BCBF1A9 │ │ │ │ +7B366C570A9A04A433495FBC9FD0FFC22A0E8181424C0F038ED97AD5054B10CC │ │ │ │ +1CD5BA0719DD0B4F4F18932AE87FF8B8C1CF0C7482B7847049761505DCD85146 │ │ │ │ +4EE5CB53993A9449CD05233E961BD49AE92D308E2065D6C6BF038538039AA56A │ │ │ │ +C59D424BE3175427337E16892D3920598D518423E145C6B2DD3881F338845F0D │ │ │ │ +16C47AA0D9C2D6DE99C6A302D567ACD6F98BF38223F1890E099C8F93348FFDAA │ │ │ │ +C2D3440187C8FED87C1A891EF11EFA7168EC47F72AF8BC5BE1B88B1084E704F5 │ │ │ │ +82099F1A79E556D94CC38851C97DC3864945A7470F1389BCF608BADAE45B236D │ │ │ │ +2934A20FFBCF169BF84DF496B07E7F1D9002E62B030337642804403DF7E4B3FF │ │ │ │ +C5A421EE0033BA06C50A041FBFE8F81AFC145664E2976505EB14859CF0377EBA │ │ │ │ +EA604CF8BFB5F9ADB9A7ED56E6F0F919E791D57C7232241C892EAC3E55D2D03B │ │ │ │ +FF43B9DAB7B1D8C6588D6D3503F49E80121E52254431B308752A936E0B51124D │ │ │ │ +C7F23C316BA6FA73E6BC47EB9550003E1393C68360067C094C65C0DD17214FA0 │ │ │ │ +45FF0F9C3E0AE4C81093752D23EA95E163C98EC04873ECE3FB0882567329525C │ │ │ │ +0A3937B16CA72B5EB6D2DC10C1B485C0BA939587AFEBB6D837A40401C666BC1C │ │ │ │ +F3344FBAB3E48BEE18F3AF5CDB33BA63778D373A851333C8C34E2F35AB94E8B4 │ │ │ │ +FF7E62A92ED83B872894E0A17209E14CF61269204A35A4BC8C7EE4B16F19E91F │ │ │ │ +669C4EFCECB187F6C7FAF92B4E14E400C6B3C81679D4A7196D66DB1E897DDA42 │ │ │ │ +47CC2848B46D581A95EEF85AB528E8CDEEB275D1E1FE197A3A08D36406E2DADF │ │ │ │ +A87D817AF18B5525F89B7C2E584F4A1254A1FC71E749999A2152870631A69CB6 │ │ │ │ +666EBD6BB3366A598F6592040D0E82B9D866DF0A76C362E76C2804D108A0C148 │ │ │ │ +51F42E9E0ABD52CC2D02B156B63AFD03313AFC80EACC83DF9B59F05FD798951D │ │ │ │ +FCF5335636DFC6561910ACE0AEC47F74CFD302EB7421D28AAAC8FF82B7CE2B2A │ │ │ │ +340B8BCE09F57BFCBC77F91096D97A85726E68846398C8C9C8D3A65A252AE8FB │ │ │ │ +166750C244963BC61E2236BAAC529FABD6FC774550096374A8DB81B6AF1EA843 │ │ │ │ +27F671C0045D629E3734EF037447C4763514FD1C4AE858A494AFC23A64C82149 │ │ │ │ +F4C0A7023B3865B84FAC2DC88D1553DCEBA3D8FB5DBC1103123F6B8CB5B3A399 │ │ │ │ +B665B26B001BF1E4BFABE42BFF6B02D69FA88D5CBCA5A11D5B48CFB4EAE60558 │ │ │ │ +5FBE254AD3BE01761CD4995E766E172D768621223505FD6AA8F89FC042EB814C │ │ │ │ +34373DAEC4FAAF71C0752F814154C5299F751CE7E0F9C673D2E448D0204C214C │ │ │ │ +C04DC34671FBEF72350FFBA263662E86A0D3795E310153AAF4C8A2623E167E6E │ │ │ │ +1F13A9BA485D5DDFC451D691DBA7C49E20354A7AD79D89F7EDE24F0D5B48B27D │ │ │ │ +568D01EF2555504196C09841F5970D8CF6C5D47FFFCF18AE6B2A485342000AAD │ │ │ │ +1F922FBEF7C98E0965609C89240E7B131A59551F57CD5C92097FCE75F5D2778F │ │ │ │ +F9ACF43A3273551363442C8C539205903A835C744A4AA953545506081D3D231A │ │ │ │ +A140E01F280BC42A3C35EDAD5F6B8CE6E51C68E41CA813710864ED880FCE846C │ │ │ │ +1B66D27CC2DBCDC2B1B96A12490BD76D67A415D4A6595CD9B19D3104A83D2C82 │ │ │ │ +C46DCD2C027F0565EDB83E54FF99498194D3140E55E8EE65EBDEAC5409B5616A │ │ │ │ +73141DA2D581E300A6057F4301A02DD160AB3E55A116313525122D0608816AA8 │ │ │ │ +4712EEF3D6FE8C893DF37D │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3905,16 +3895,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 134[48 3[51 2[36 12[40 2[51 45 26[59 11[25 │ │ │ │ -45 4[45 1[45 1[45 3[25 44[{}13 90.9091 /CMSL10 rf │ │ │ │ +/CMTT12 rf /Fd 139[35 1[36 2[45 9[40 1[40 51 18[71 20[25 │ │ │ │ +4[45 45 1[45 1[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 │ │ │ │ @@ -4034,88 +4024,88 @@ │ │ │ │ (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 1063 4 v │ │ │ │ -1245 w Fj(EGraph)29 b Fd(:)41 b Fg(DRAFT)30 b Fd(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2837 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(clearing)0 1339 y(an)m(y)31 b(allo)s(cated)h(data,)f(and)f │ │ │ │ -(free'ing)h(the)g(ob)5 b(ject.)111 1587 y(1.)46 b Fj(EGraph)g(*)i │ │ │ │ -(EGraph_new)d(\()i(void)g(\))g(;)227 1742 y Fk(This)25 │ │ │ │ -b(metho)s(d)g(simply)f(allo)s(cates)k(storage)f(for)e(the)h │ │ │ │ -Fj(EGraph)d Fk(structure)i(and)g(then)g(sets)g(the)h(default)f │ │ │ │ -(\014elds)227 1855 y(b)m(y)31 b(a)f(call)i(to)f Fj(EGraph)p │ │ │ │ -1001 1855 29 4 v 33 w(setDefaultFields\(\))p Fk(.)111 │ │ │ │ -2052 y(2.)46 b Fj(void)h(EGraph_setDefaultFields)41 b(\()48 │ │ │ │ -b(EGraph)e(*egraph)g(\))h(;)227 2206 y Fk(This)28 b(metho)s(d)f(sets)i │ │ │ │ -(the)f(structure's)g(\014elds)g(are)g(set)h(to)g(default)f(v)-5 │ │ │ │ -b(alues:)40 b Fj(type)47 b(=)g(nelem)f(=)i(nvtx)f(=)g(0)p │ │ │ │ -Fk(,)227 2319 y Fj(adjIVL)f(=)i(vwghts)e(=)h(NULL)p Fk(.)227 │ │ │ │ -2474 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)g Fk(an)g(error)g(message)h(is)g(prin)m │ │ │ │ -(ted)f(and)f(the)i(program)f(exits.)111 2671 y(3.)46 │ │ │ │ -b Fj(void)h(EGraph_clearData)c(\()48 b(EGraph)e(*egraph)g(\))h(;)227 │ │ │ │ -2825 y Fk(This)25 b(metho)s(d)g(clears)i(data)g(and)e(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)25 b Fj(egraph->adjIVL)227 2938 y Fk(is)c(not)f │ │ │ │ -Fj(NULL)p Fk(,)f(then)h Fj(IVL)p 1043 2938 V 34 w │ │ │ │ -(free\(egraph->adjIVL\))15 b Fk(is)20 b(called)h(to)h(free)e(the)g │ │ │ │ -Fj(IVL)g Fk(ob)5 b(ject.)38 b(If)20 b Fj(egraph->vwghts)227 │ │ │ │ -3051 y Fk(is)31 b(not)g Fj(NULL)p Fk(,)e(then)i Fj │ │ │ │ -(IVfree\(egraph->vwghts\))24 b Fk(is)31 b(called)g(to)h(free)e(the)h │ │ │ │ -Fj(int)f Fk(v)m(ector.)43 b(It)31 b(then)f(sets)h(the)227 │ │ │ │ -3164 y(structure's)f(default)h(\014elds)f(with)g(a)g(call)i(to)f │ │ │ │ -Fj(EGraph)p 2071 3164 V 33 w(setDefaultFields\(\))p Fk(.)227 │ │ │ │ -3319 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)g Fk(an)g(error)g(message)h(is)g(prin)m │ │ │ │ -(ted)f(and)f(the)i(program)f(exits.)111 3516 y(4.)46 │ │ │ │ -b Fj(void)h(EGraph_free)e(\()i(EGraph)f(*egraph)g(\))h(;)227 │ │ │ │ -3670 y Fk(This)26 b(metho)s(d)f(releases)j(an)m(y)e(storage)i(b)m(y)e │ │ │ │ -(a)h(call)g(to)g Fj(EGraph)p 2317 3670 V 33 w(clearData\(\))c │ │ │ │ -Fk(then)j(free's)g(the)g(storage)i(for)227 3783 y(the)j(structure)f │ │ │ │ -(with)g(a)h(call)g(to)g Fj(free\(\))p Fk(.)227 3938 y │ │ │ │ -Fg(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fk(If)30 b Fj(egraph)f │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fk(2)p 136 100 1105 4 v │ │ │ │ +1286 w Fj(EGraph)29 b Fd(:)41 b Fg(DRAFT)30 b Fd(Octob)s(er)g(4,)h │ │ │ │ +(2025)p 2796 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 │ │ │ │ +(clearing)0 1339 y(an)m(y)31 b(allo)s(cated)h(data,)f(and)f(free'ing)h │ │ │ │ +(the)g(ob)5 b(ject.)111 1587 y(1.)46 b Fj(EGraph)g(*)i(EGraph_new)d(\() │ │ │ │ +i(void)g(\))g(;)227 1742 y Fk(This)25 b(metho)s(d)g(simply)f(allo)s │ │ │ │ +(cates)k(storage)f(for)e(the)h Fj(EGraph)d Fk(structure)i(and)g(then)g │ │ │ │ +(sets)g(the)h(default)f(\014elds)227 1855 y(b)m(y)31 │ │ │ │ +b(a)f(call)i(to)f Fj(EGraph)p 1001 1855 29 4 v 33 w │ │ │ │ +(setDefaultFields\(\))p Fk(.)111 2052 y(2.)46 b Fj(void)h │ │ │ │ +(EGraph_setDefaultFields)41 b(\()48 b(EGraph)e(*egraph)g(\))h(;)227 │ │ │ │ +2206 y Fk(This)28 b(metho)s(d)f(sets)i(the)f(structure's)g(\014elds)g │ │ │ │ +(are)g(set)h(to)g(default)f(v)-5 b(alues:)40 b Fj(type)47 │ │ │ │ +b(=)g(nelem)f(=)i(nvtx)f(=)g(0)p Fk(,)227 2319 y Fj(adjIVL)f(=)i │ │ │ │ +(vwghts)e(=)h(NULL)p Fk(.)227 2474 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)g Fk(an)g(error)g(message)h(is)g(prin)m(ted)f(and)f(the)i │ │ │ │ +(program)f(exits.)111 2671 y(3.)46 b Fj(void)h(EGraph_clearData)c(\()48 │ │ │ │ +b(EGraph)e(*egraph)g(\))h(;)227 2825 y Fk(This)25 b(metho)s(d)g(clears) │ │ │ │ +i(data)g(and)e(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)25 b Fj(egraph->adjIVL)227 │ │ │ │ +2938 y Fk(is)c(not)f Fj(NULL)p Fk(,)f(then)h Fj(IVL)p │ │ │ │ +1043 2938 V 34 w(free\(egraph->adjIVL\))15 b Fk(is)20 │ │ │ │ +b(called)h(to)h(free)e(the)g Fj(IVL)g Fk(ob)5 b(ject.)38 │ │ │ │ +b(If)20 b Fj(egraph->vwghts)227 3051 y Fk(is)31 b(not)g │ │ │ │ +Fj(NULL)p Fk(,)e(then)i Fj(IVfree\(egraph->vwghts\))24 │ │ │ │ +b Fk(is)31 b(called)g(to)h(free)e(the)h Fj(int)f Fk(v)m(ector.)43 │ │ │ │ +b(It)31 b(then)f(sets)h(the)227 3164 y(structure's)f(default)h │ │ │ │ +(\014elds)f(with)g(a)g(call)i(to)f Fj(EGraph)p 2071 3164 │ │ │ │ +V 33 w(setDefaultFields\(\))p Fk(.)227 3319 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)g Fk(an)g(error)g(message)h(is)g(prin)m(ted)f(and)f │ │ │ │ -(the)i(program)f(exits.)0 4219 y Fb(1.2.2)112 b(Initializer)38 │ │ │ │ -b(metho)s(ds)111 4420 y Fk(1.)46 b Fj(void)h(EGraph_init)e(\()i(EGraph) │ │ │ │ -f(*egraph,)g(int)h(type,)f(int)h(nelem,)f(int)h(nvtx,)1134 │ │ │ │ -4533 y(int)g(IVL_type)f(\))h(;)227 4688 y Fk(This)41 │ │ │ │ -b(metho)s(d)h(initializes)i(an)e Fj(EGraph)e Fk(ob)5 │ │ │ │ -b(ject)43 b(giv)m(en)g(the)f(t)m(yp)s(e)g(of)h(v)m(ertices,)j(n)m(um)m │ │ │ │ -(b)s(er)41 b(of)h(elemen)m(ts,)227 4801 y(n)m(um)m(b)s(er)g(of)h(v)m │ │ │ │ -(ertices,)49 b(and)42 b(storage)j(t)m(yp)s(e)e(for)g(the)h │ │ │ │ -Fj(IVL)e Fk(elemen)m(t)j(list)e(ob)5 b(ject.)80 b(It)44 │ │ │ │ -b(then)f(clears)h(an)m(y)227 4914 y(previous)39 b(data)i(with)e(a)h │ │ │ │ -(call)h(to)f Fj(EGraph)p 1706 4914 V 33 w(clearData\(\))p │ │ │ │ -Fk(.)65 b(The)39 b Fj(IVL)g Fk(ob)5 b(ject)40 b(is)g(initialized)h(b)m │ │ │ │ -(y)f(a)g(call)227 5027 y(to)35 b Fj(IVL)p 492 5027 V │ │ │ │ -33 w(init1\(\))p Fk(.)48 b(If)33 b Fj(type)47 b(=)g(1)p │ │ │ │ -Fk(,)35 b(the)e Fj(vwghts)f Fk(is)i(initialized)h(via)f(a)g(call)h(to)f │ │ │ │ -Fj(IVinit\(\))p Fk(.)48 b(See)34 b(the)g Fj(IVL)227 5140 │ │ │ │ -y Fk(ob)5 b(ject)32 b(for)e(a)g(description)h(of)f(the)h │ │ │ │ -Fj(IVL)p 1593 5140 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 │ │ │ │ +(the)i(program)f(exits.)111 3516 y(4.)46 b Fj(void)h(EGraph_free)e(\()i │ │ │ │ +(EGraph)f(*egraph)g(\))h(;)227 3670 y Fk(This)26 b(metho)s(d)f │ │ │ │ +(releases)j(an)m(y)e(storage)i(b)m(y)e(a)h(call)g(to)g │ │ │ │ +Fj(EGraph)p 2317 3670 V 33 w(clearData\(\))c Fk(then)j(free's)g(the)g │ │ │ │ +(storage)i(for)227 3783 y(the)j(structure)f(with)g(a)h(call)g(to)g │ │ │ │ +Fj(free\(\))p Fk(.)227 3938 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)g │ │ │ │ +Fk(an)g(error)g(message)h(is)g(prin)m(ted)f(and)f(the)i(program)f │ │ │ │ +(exits.)0 4219 y Fb(1.2.2)112 b(Initializer)38 b(metho)s(ds)111 │ │ │ │ +4420 y Fk(1.)46 b Fj(void)h(EGraph_init)e(\()i(EGraph)f(*egraph,)g(int) │ │ │ │ +h(type,)f(int)h(nelem,)f(int)h(nvtx,)1134 4533 y(int)g(IVL_type)f(\))h │ │ │ │ +(;)227 4688 y Fk(This)41 b(metho)s(d)h(initializes)i(an)e │ │ │ │ +Fj(EGraph)e Fk(ob)5 b(ject)43 b(giv)m(en)g(the)f(t)m(yp)s(e)g(of)h(v)m │ │ │ │ +(ertices,)j(n)m(um)m(b)s(er)41 b(of)h(elemen)m(ts,)227 │ │ │ │ +4801 y(n)m(um)m(b)s(er)g(of)h(v)m(ertices,)49 b(and)42 │ │ │ │ +b(storage)j(t)m(yp)s(e)e(for)g(the)h Fj(IVL)e Fk(elemen)m(t)j(list)e │ │ │ │ +(ob)5 b(ject.)80 b(It)44 b(then)f(clears)h(an)m(y)227 │ │ │ │ +4914 y(previous)39 b(data)i(with)e(a)h(call)h(to)f Fj(EGraph)p │ │ │ │ +1706 4914 V 33 w(clearData\(\))p Fk(.)65 b(The)39 b Fj(IVL)g │ │ │ │ +Fk(ob)5 b(ject)40 b(is)g(initialized)h(b)m(y)f(a)g(call)227 │ │ │ │ +5027 y(to)35 b Fj(IVL)p 492 5027 V 33 w(init1\(\))p Fk(.)48 │ │ │ │ +b(If)33 b Fj(type)47 b(=)g(1)p Fk(,)35 b(the)e Fj(vwghts)f │ │ │ │ +Fk(is)i(initialized)h(via)f(a)g(call)h(to)f Fj(IVinit\(\))p │ │ │ │ +Fk(.)48 b(See)34 b(the)g Fj(IVL)227 5140 y Fk(ob)5 b(ject)32 │ │ │ │ +b(for)e(a)g(description)h(of)f(the)h Fj(IVL)p 1593 5140 │ │ │ │ +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 1063 4 v 1245 100 a Fj(EGraph)28 │ │ │ │ -b Fd(:)41 b Fg(DRAFT)121 b Fd(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2790 100 V 1063 w Fk(3)0 399 y Fb(1.2.3)112 b(Utilit)m(y)38 │ │ │ │ +TeXDict begin 3 2 bop 91 100 1105 4 v 1286 100 a Fj(EGraph)29 │ │ │ │ +b Fd(:)40 b Fg(DRAFT)121 b Fd(Octob)s(er)31 b(4,)g(2025)p │ │ │ │ +2749 100 V 1105 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 │ │ │ │ @@ -4187,37 +4177,37 @@ │ │ │ │ 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 1063 4 v │ │ │ │ -1245 w Fj(EGraph)29 b Fd(:)41 b Fg(DRAFT)30 b Fd(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2837 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 Fg(Err)-5 b(or)47 b(che)-5 b(cking:)66 b Fk(If)44 │ │ │ │ -b Fj(egraph)e Fk(or)h Fj(fn)g Fk(are)i Fj(NULL)p Fk(,)d(or)i(if)g │ │ │ │ -Fj(fn)f Fk(is)h(not)g(of)f(the)h(form)g Fj(*.egraphf)d │ │ │ │ -Fk(\(for)j(a)227 1031 y(formatted)32 b(\014le\))g(or)f │ │ │ │ -Fj(*.egraphb)e Fk(\(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 │ │ │ │ -1144 y(returns)e(zero.)111 1325 y(5.)46 b Fj(int)h │ │ │ │ -(EGraph_writeToFormattedFi)o(le)42 b(\()47 b(EGraph)f(*egraph,)g(FILE)g │ │ │ │ -(*fp)h(\))h(;)227 1472 y Fk(This)27 b(metho)s(d)g(writes)g(an)g │ │ │ │ -Fj(EGraph)f Fk(ob)5 b(ject)28 b(to)g(a)g(formatted)g(\014le.)40 │ │ │ │ -b(If)27 b(there)g(are)h(no)f(errors)g(in)g(writing)h(the)227 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fk(4)p 136 100 1105 4 v │ │ │ │ +1286 w Fj(EGraph)29 b Fd(:)41 b Fg(DRAFT)30 b Fd(Octob)s(er)g(4,)h │ │ │ │ +(2025)p 2796 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 │ │ │ │ +Fg(Err)-5 b(or)47 b(che)-5 b(cking:)66 b Fk(If)44 b Fj(egraph)e │ │ │ │ +Fk(or)h Fj(fn)g Fk(are)i Fj(NULL)p Fk(,)d(or)i(if)g Fj(fn)f │ │ │ │ +Fk(is)h(not)g(of)f(the)h(form)g Fj(*.egraphf)d Fk(\(for)j(a)227 │ │ │ │ +1031 y(formatted)32 b(\014le\))g(or)f Fj(*.egraphb)e │ │ │ │ +Fk(\(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 1144 y(returns)e(zero.)111 │ │ │ │ +1325 y(5.)46 b Fj(int)h(EGraph_writeToFormattedFi)o(le)42 │ │ │ │ +b(\()47 b(EGraph)f(*egraph,)g(FILE)g(*fp)h(\))h(;)227 │ │ │ │ +1472 y Fk(This)27 b(metho)s(d)g(writes)g(an)g Fj(EGraph)f │ │ │ │ +Fk(ob)5 b(ject)28 b(to)g(a)g(formatted)g(\014le.)40 b(If)27 │ │ │ │ +b(there)g(are)h(no)f(errors)g(in)g(writing)h(the)227 │ │ │ │ 1585 y(data,)k(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(fprintf)p Fk(,)f(zero)i(is)f(returned.)227 1732 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.)111 1913 y(6.)46 │ │ │ │ b Fj(int)h(EGraph_writeToBinaryFile)41 b(\()48 b(EGraph)e(*egraph,)f │ │ │ │ @@ -4269,17 +4259,17 @@ │ │ │ │ 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 1063 4 v 1245 100 a Fj(EGraph)28 │ │ │ │ -b Fd(:)41 b Fg(DRAFT)121 b Fd(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2790 100 V 1063 w Fk(5)337 399 y Fe(\210)45 b Fk(The)35 │ │ │ │ +TeXDict begin 5 4 bop 91 100 1105 4 v 1286 100 a Fj(EGraph)29 │ │ │ │ +b Fd(:)40 b Fg(DRAFT)121 b Fd(Octob)s(er)31 b(4,)g(2025)p │ │ │ │ +2749 100 V 1105 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 │ │ │ │ @@ -4351,26 +4341,26 @@ │ │ │ │ (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 1063 4 v │ │ │ │ -1245 w Fj(EGraph)29 b Fd(:)41 b Fg(DRAFT)30 b Fd(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2837 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 Fj(*.egraphf)p Fk(\),)i(or)h(a)h(binary)e(\014le)i(\(if)g │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fk(6)p 136 100 1105 4 v │ │ │ │ +1286 w Fj(EGraph)29 b Fd(:)41 b Fg(DRAFT)30 b Fd(Octob)s(er)g(4,)h │ │ │ │ +(2025)p 2796 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 │ │ │ │ +Fj(*.egraphf)p Fk(\),)i(or)h(a)h(binary)e(\014le)i(\(if)g │ │ │ │ Fj(outEGraphFile)26 b Fk(is)31 b(of)f(the)h(form)f Fj(*.egraphb)p │ │ │ │ Fk(\).)p eop end │ │ │ │ %%Page: 7 7 │ │ │ │ TeXDict begin 7 6 bop 0 866 a Fl(Index)0 1289 y Fj(EGraph)p │ │ │ │ 294 1289 29 4 v 33 w(clearData\(\))p Fk(,)27 b(2)0 1402 │ │ │ │ y Fj(EGraph)p 294 1402 V 33 w(free\(\))p Fk(,)i(2)0 1515 │ │ │ │ y Fj(EGraph)p 294 1515 V 33 w(init\(\))p Fk(,)g(2)0 1628 │ │ │ │ ├── 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 February 29, 2024 │ │ │ │ │ + 2 EGraph : DRAFT October 4, 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 February 29, 2024 3 │ │ │ │ │ + EGraph : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 4 EGraph : DRAFT October 4, 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 February 29, 2024 5 │ │ │ │ │ + EGraph : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 6 EGraph : DRAFT October 4, 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 2024.02.29:1857 │ │ │ │ +%DVIPSSource: TeX output 2025.10.04:1733 │ │ │ │ %%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 │ │ │ │ @@ -3607,23 +3607,23 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 50 /two put │ │ │ │ dup 52 /four put │ │ │ │ -dup 57 /nine put │ │ │ │ +dup 53 /five put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 70 /F put │ │ │ │ -dup 97 /a put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ +dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ -dup 117 /u put │ │ │ │ -dup 121 /y put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -3797,95 +3797,85 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA647CD0E2539DFAD9604486DCCFA49 │ │ │ │ -AC96130D106A8F8387633622C3809400D6E8FF9D60877C743502E4D211CEBF62 │ │ │ │ -9A6F91045C22D5D20C5FF677D89983D02E5EE26C71A9EAE0E7C52465DA5A149A │ │ │ │ -9B731C27EC8366BC3E841C0CAE49A33DE164A857365B17B09CAD121C47A980CB │ │ │ │ -C75E1030F6C394EDB46C54B46880D2344127B903FB22684C9CAACE6053DC3BFA │ │ │ │ -4E47C565ECAF19C4295A11BD68CA6D45B5738B932BB3690A8C712904C49C1636 │ │ │ │ -A7702075F2FEA8DB3EB3A3C1216BB769DD0BAF4507A18E3052F2C846B0797933 │ │ │ │ -8CE9BB2DB5DFADAF1B0FC3A22BAB82A0D5D290F7AD950013CFA465BE11C1076D │ │ │ │ -5833FF92321FBF90D9229D3BA09DD18EEC44D9FCF8FCF63CC09D2977BFA798B6 │ │ │ │ -47FB047EA6AF69C7DE570176F5B6C0FED74DEDBF7DDF49550DD84BA14AC09423 │ │ │ │ -F70D5B14F0F8588F1E2FFE0DFE0760E77A9E39DEDAC5C5AE3760722C029B916D │ │ │ │ -96A2A7D1DD6A61F90B4B9806314A668EB7A0E107A3527310A240490453CC18D7 │ │ │ │ -3793B4CF3CE13EA332E7F5C2BACF85AC75FE84693B966BB0F6FB9A179A331C4E │ │ │ │ -55E9EF30E2734E44A88E053CD5E650D7E529E94CB7F8B733E68315ACAC5BEFC5 │ │ │ │ -3FE4F585F875310267865679AB381125C31E9AEB7226DC9F18DA80A9DE2F38A4 │ │ │ │ -51B8F9D5B2FBA0F50D53AE6212AFE41466A594F7A303B4E82F1493C0B8D65756 │ │ │ │ -BE6AF2931E5ADA5CE7D51CB5B1EC916C6C6D674808939331CA66F8181DD2B112 │ │ │ │ -1A12198CCCB6BBF1D40C803E794B65241ACE1E0D30CCA1C6F2D3E1415B98726B │ │ │ │ -9BA303BE2C4C276108CC78C093F1CC85CA454CC38535D1DEBFA341D84E8A5DDF │ │ │ │ -D53D8DD0F4A812B5BA63871BEB3BCE93FBC77AD395914E2CD757546C2BE2D641 │ │ │ │ -FDB12258E1E1D10E1B963EABB265F2C8B2547D48963E1AD3B223B666B46915A1 │ │ │ │ -157F5EA0AB8D8411C07AA2EB5D0EF1A1BA6D81C47473A3D3D6287104C7BF61F8 │ │ │ │ -3BDB64995DE96A65BF2B7288C51ADAA3D373A95C40D5240C5FF397551554AA9E │ │ │ │ -C89C7E45AA7738503CB058EF6AD5052CC78E4445C810C250BF25394B8D7DE82E │ │ │ │ -315C9CCD6E1E9150EC79EE0F354C668AE199C1AFF39C67337A86CB932E8D64E9 │ │ │ │ -389FF3CC08B538492DEED017686DBB9BDEA30FE67FB4EBDB3627C16FD15F243A │ │ │ │ -7FDEB310EFC940E57726E94340472F2C452815927ADE21578C959890216BE504 │ │ │ │ -225BE4B4D2E3B19F5E06B5A0B25AF168C3A2B26F599A829F89C16BD2026E8CC9 │ │ │ │ -8FB3CBB830C3E36C099071A70D0B8834FF2C17364EB50D5C71440CC7BFE02321 │ │ │ │ -8C6ECAC2F7EC1BE39077DB0E8B2B251626A71FD038EB2CF1FC254D98C1535CAA │ │ │ │ -A8C987BC266482BD860A333048E1EDB3DD40A6ECD6DA0088AD9B9640202D89AA │ │ │ │ -0BB9A0ADF63491E67F2E97E35942D77E59B9B8AB0ED28B022EE5CD3449FC5B7A │ │ │ │ -19E38845B488F97D155C4312885E29537EAE97719C65845663480CE79DE8F037 │ │ │ │ -68995C0928FE8AFBEE554F01381EE5187578DF5D2542F26F66A599EE8ECC1F68 │ │ │ │ -FBADF3C2BA968C3CEB86675CF9A6CFD736E1422800D270417D497903DE87F2AE │ │ │ │ -938E39E120E9D3079F512E545E0E2616B84E81FE41392184F96818A7C86BF541 │ │ │ │ -F2E67C48CA56DA838C9FA0FAD538073B9F26319140D1F80EEEBCA190DE660A31 │ │ │ │ -457CAC16E92F87449A3734F9EA751588514865B58DC073658C8A857B5398AAC7 │ │ │ │ -3DC11E069996EF74A3189A07630D5DB87C5E028CD193C086B4D0E8BABC4F2393 │ │ │ │ -235EC96091B16C4A6D97DA1BD30A2D2E71F55869223CA66AD12448B668685F6E │ │ │ │ -06E7888D7F20045C662C4F7994CC7E1CE9AAC33A026716AA0551DF12343F0E22 │ │ │ │ -6E9F4B21C90406CC4997601194EF37A973221D1F4D73DD5666BD297F621C92AA │ │ │ │ -E3F698BC1146ADE754C4120EDF5B3E974D75A237E51DB49D52CD6CC7C9E8BD2D │ │ │ │ -E6849DF8F4DBA86C655D0C57CB54836C8A841C1D814F6B493F96ADBFCAD78D3B │ │ │ │ -430C58EF169950851B6A0B46411488B1A6F6974832787A24C0CDDBE27996EFB1 │ │ │ │ -DB341FA34B1DC6238D978D1E1D34AF3FB375ED6DA9C88699F195C88A54622F7C │ │ │ │ -36DAFC663D85660E756733A7E22F20C6A5D91F06087CAD10F7217BD33F343DC6 │ │ │ │ -F5EB9F16FE763672243EE6AE5CB6063A1D64670E1C059DD52134974E27D9D89C │ │ │ │ -BC658FCD814F20703D610C978FDCD6E2AEA31C18D1A310F215B28199F66C87DB │ │ │ │ -3B23980A393E1DD77AFA3045EDB6942505F3CF6204315A14E5B6BF2E96F3BB1F │ │ │ │ -628D24AC1893BC7DAEF3AA63F2116837F31DB90D872CBD9E5C48BCDEE781D20D │ │ │ │ -C6553D2D15F4E8438A9D1C7CEE1B72BD6AA08DC0AFEAF8B4DC1038707EE4A1BF │ │ │ │ -3D84460E60AF90F55002C1D8EBF0700F7EC3EFC944BEA78D0E0536F3AA6D9A84 │ │ │ │ -604A781AC5ACFEB7E681365315EE11E991C03DA431B65B332AD8F83F6F3AE66C │ │ │ │ -1BF434D3793FB5BCC44E44ACFF2855C2770C4AC678C6ACD6EB071974ACF1AE37 │ │ │ │ -D02C1736C62CC205A2F3488448527EFFA379613A8E6A6D134F4BFBAE6127304D │ │ │ │ -576C900A458E32CD42A4674415E03D8EB5742E71B854B3EDFD271AA214436544 │ │ │ │ -D1BCFD52F439298847E1FA258E5D38384FC85BC4EDC6F9E4431621CF763B137B │ │ │ │ -22DB6E3268B3F78881D55EA7C52ABF23FB73C152B06B708084FE1B00CFE72D9D │ │ │ │ -57B62AEE912E63BBD89D4D13CE896735454F1A16C3D9FB6CDF142CCA9F1C0242 │ │ │ │ -46F62109DF30667DA327F7CF6DC19B880C860C69080597FFCB1793313E202D4F │ │ │ │ -120A7C6B052C2EB7597B71B0985D24FDD2D3918393BF720E762C5DBBC2BB1E91 │ │ │ │ -B04560364EFE5B16EB068E0560FB932E0C617CFB95A166388E99AC4CB020F5BC │ │ │ │ -E24BB77352D7C3B21C37D404051A70FFFA0F726C35501A1FBB411F832CE46A2E │ │ │ │ -B424E26BD4 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFD8CDE285A2827F4659E339460ABEF319FE44D7A91E93CA309E9266E03DA │ │ │ │ +735F5DEF3920C01189BB63C2BD7ED0B92EABB481F123641477CDCCAB9751FB7B │ │ │ │ +F67DA7CE6EB134BC10D0228562BA5A6BFE6940907EF030ABF9EC4A8A0DFEF73D │ │ │ │ +3289E8CB4DC37694F5A656A935D92C72B3D82B012F578A27711B161DE9652ADC │ │ │ │ +71C51E743E4E9A7C6CF6FF16C5D65C1F60954C0858B48FAAC4FBB21988E2A934 │ │ │ │ +AC50C097DDF42C416359647D79F830E1430FB9BB803451A6732D1B5CAB817C1B │ │ │ │ +673B3077D9A180F184267E9990C087BCDEBC8EB8B889934DD0EB63C2EBCED4A3 │ │ │ │ +83A0D6A365412CFF610EF7BD5F82B02AA293F1D2F868768CDE9B801C929B4A38 │ │ │ │ +64E20C70BC4041F837AD15423517F7336A067D140A2C7906DC5D45885FFB3B69 │ │ │ │ +724E5B9B138BD15A9359EB25D14BC4193E529D1A49FEB0DC1015BF94CEBBD5E0 │ │ │ │ +EA148B185C53E12BD9FA6DBC097D789A73E832F02F55080D8ED6087F5952EA78 │ │ │ │ +250A4C65CE4C4013554A031446D2092D813C4CB1A605D97A40CF867F656ECD1C │ │ │ │ +C23F80230AD1E449AA8B4007134F71156719206441D92B1A6DD25101ABF69F70 │ │ │ │ +538CCCE216376E1BD6E423986BD4E83B1975B15092D4E19F885672F9E7C02485 │ │ │ │ +E02DA0F4243D324A5983D1D46444E5F6573F699E4F2A3395EF0EB7808B7D4D62 │ │ │ │ +690FD033E93AA553082273636503DA4BBBBFA6D127CE10424DD1DDF4F879305C │ │ │ │ +14F64180E7851D091B3220DFC70CAA44716B8F7F0C6FBEDB167801DED77F9E69 │ │ │ │ +E9B31CD2D8044DB946E511162976C34DE27F2BB974B70509005562A0A21317B7 │ │ │ │ +46D826A31C476C8F9A778F941FF5956BA2D765B1AD0AC4BC7AE1CD8A2A81F039 │ │ │ │ +06EB13EBD099BBDB2EBDB54D459C288EA69FB0018CE9255BBFB08C1F90FF30BD │ │ │ │ +C971DA7FDB193281B8F967F21AB42F13F36085AC9EC0D6B6B448C8F289B0AD70 │ │ │ │ +DB521A4755ECF9CA594741E5C674220C21C265EF3BAE594197B00048C8D4DB73 │ │ │ │ +4AC47B6A86EAC7EECD042C8E23C347F8C9FCB870473C1FBD91C298174BCBF1A9 │ │ │ │ +7B366C570A9A04A433495FBC9FD0FFC22A0E8181424C0F038ED97AD5054B10CC │ │ │ │ +1CD5BA0719DD0B4F4F18932AE87FF8B8C1CF0C7482B7847049761505DCD85146 │ │ │ │ +4EE5CB53993A9449CD05233E961BD49AE92D308E2065D6C6BF038538039AA56A │ │ │ │ +C59D424BE3175427337E16892D3920598D518423E145C6B2DD3881F338845F0D │ │ │ │ +16C47AA0D9C2D6DE99C6A302D567ACD6F98BF38223F1890E099C8F93348FFDAA │ │ │ │ +C2D3440187C8FED87C1A891EF11EFA7168EC47F72AF8BC5BE1B88B1084E704F5 │ │ │ │ +82099F1A79E556D94CC38851C97DC3864945A7470F1389BCF608BADAE45B236D │ │ │ │ +2934A20FFBCF169BF84DF496B07E7F1D9002E62B030337642804403DF7E4B3FF │ │ │ │ +C5A421EE0033BA06C50A041FBFE8F81AFC145664E2976505EB14859CF0377EBA │ │ │ │ +EA604CF8BFB5F9ADB9A7ED56E6F0F919E791D57C7232241C892EAC3E55D2D03B │ │ │ │ +FF43B9DAB7B1D8C6588D6D3503F49E80121E52254431B308752A936E0B51124D │ │ │ │ +C7F23C316BA6FA73E6BC47EB9550003E1393C68360067C094C65C0DD17214FA0 │ │ │ │ +45FF0F9C3E0AE4C81093752D23EA95E163C98EC04873ECE3FB0882567329525C │ │ │ │ +0A3937B16CA72B5EB6D2DC10C1B485C0BA939587AFEBB6D837A40401C666BC1C │ │ │ │ +F3344FBAB3E48BEE18F3AF5CDB33BA63778D373A851333C8C34E2F35AB94E8B4 │ │ │ │ +FF7E62A92ED83B872894E0A17209E14CF61269204A35A4BC8C7EE4B16F19E91F │ │ │ │ +669C4EFCECB187F6C7FAF92B4E14E400C6B3C81679D4A7196D66DB1E897DDA42 │ │ │ │ +47CC2848B46D581A95EEF85AB528E8CDEEB275D1E1FE197A3A08D36406E2DADF │ │ │ │ +A87D817AF18B5525F89B7C2E584F4A1254A1FC71E749999A2152870631A69CB6 │ │ │ │ +666EBD6BB3366A598F6592040D0E82B9D866DF0A76C362E76C2804D108A0C148 │ │ │ │ +51F42E9E0ABD52CC2D02B156B63AFD03313AFC80EACC83DF9B59F05FD798951D │ │ │ │ +FCF5335636DFC6561910ACE0AEC47F74CFD302EB7421D28AAAC8FF82B7CE2B2A │ │ │ │ +340B8BCE09F57BFCBC77F91096D97A85726E68846398C8C9C8D3A65A252AE8FB │ │ │ │ +166750C244963BC61E2236BAAC529FABD6FC774550096374A8DB81B6AF1EA843 │ │ │ │ +27F671C0045D629E3734EF037447C4763514FD1C4AE858A494AFC23A64C82149 │ │ │ │ +F4C0A7023B3865B84FAC2DC88D1553DCEBA3D8FB5DBC1103123F6B8CB5B3A399 │ │ │ │ +B665B26B001BF1E4BFABE42BFF6B02D69FA88D5CBCA5A11D5B48CFB4EAE60558 │ │ │ │ +5FBE254AD3BE01761CD4995E766E172D768621223505FD6AA8F89FC042EB814C │ │ │ │ +34373DAEC4FAAF71C0752F814154C5299F751CE7E0F9C673D2E448D0204C214C │ │ │ │ +C04DC34671FBEF72350FFBA263662E86A0D3795E310153AAF4C8A2623E167E6E │ │ │ │ +1F13A9BA485D5DDFC451D691DBA7C49E20354A7AD79D89F7EDE24F0D5B48B27D │ │ │ │ +568D01EF2555504196C09841F5970D8CF6C5D47FFFCF18AE6B2A485342000AAD │ │ │ │ +1F922FBEF7C98E0965609C89240E7B131A59551F57CD5C92097FCE75F5D2778F │ │ │ │ +F9ACF43A3273551363442C8C539205903A835C744A4AA953545506081D3D231A │ │ │ │ +A140E01F280BC42A3C35EDAD5F6B8CE6E51C68E41CA813710864ED880FCE846C │ │ │ │ +1B66D27CC2DBCDC2B1B96A12490BD76D67A415D4A6595CD9B19D3104A83D2C82 │ │ │ │ +C46DCD2C027F0565EDB83E54FF99498194D3140E55E8EE65EBDEAC5409B5616A │ │ │ │ +73141DA2D581E300A6057F4301A02DD160AB3E55A116313525122D0608816AA8 │ │ │ │ +4712EEF3D6FE8C893DF37D │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -5427,16 +5417,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 134[48 3[51 2[36 12[40 2[51 45 26[59 11[25 │ │ │ │ -45 4[45 1[45 1[45 3[25 44[{}13 90.9091 /CMSL10 rf │ │ │ │ +/CMTI10 rf /Fk 139[35 1[36 2[45 9[40 1[40 51 18[71 20[25 │ │ │ │ +4[45 45 1[45 1[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 │ │ │ │ @@ -5549,31 +5539,30 @@ │ │ │ │ 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 1087 4 v │ │ │ │ -1269 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2813 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 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fo(2)p 136 100 1128 4 v │ │ │ │ +1310 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(Octob)s(er)g(4,)h(2025) │ │ │ │ +p 2772 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 │ │ │ │ (free'ing)h(the)g(ob)5 b(ject.)111 2322 y(1.)46 b Fn(ETree)h(*)g │ │ │ │ (ETree_new)e(\()j(void)e(\))i(;)227 2474 y Fo(This)28 │ │ │ │ b(metho)s(d)g(simply)h(allo)s(cates)i(storage)f(for)e(the)h │ │ │ │ Fn(ETree)f Fo(structure)g(and)g(then)g(sets)i(the)f(default)f(\014elds) │ │ │ │ @@ -5613,17 +5602,17 @@ │ │ │ │ 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 1087 4 v 1269 100 a Fn(ETree)29 │ │ │ │ -b Fk(:)40 b Fj(DRAFT)121 b Fk(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2766 100 V 1087 w Fo(3)111 399 y(2.)46 b Fn(int)h(ETree_nvtx)e(\()j │ │ │ │ +TeXDict begin 3 2 bop 91 100 1128 4 v 1310 100 a Fn(ETree)29 │ │ │ │ +b Fk(:)40 b Fj(DRAFT)121 b Fk(Octob)s(er)31 b(4,)g(2025)p │ │ │ │ +2725 100 V 1128 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 │ │ │ │ @@ -5671,30 +5660,30 @@ │ │ │ │ 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 1087 4 v │ │ │ │ -1269 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2813 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 1128 4 v │ │ │ │ +1310 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(Octob)s(er)g(4,)h(2025) │ │ │ │ +p 2772 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 │ │ │ │ @@ -5739,17 +5728,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 1087 4 v 1269 100 a Fn(ETree)29 │ │ │ │ -b Fk(:)40 b Fj(DRAFT)121 b Fk(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2766 100 V 1087 w Fo(5)227 399 y(with)i(a)g(call)i(to)e │ │ │ │ +TeXDict begin 5 4 bop 91 100 1128 4 v 1310 100 a Fn(ETree)29 │ │ │ │ +b Fk(:)40 b Fj(DRAFT)121 b Fk(Octob)s(er)31 b(4,)g(2025)p │ │ │ │ +2725 100 V 1128 w Fo(5)227 399 y(with)j(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 │ │ │ │ @@ -5827,26 +5816,26 @@ │ │ │ │ 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 1087 4 v │ │ │ │ -1269 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2813 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 b(or)d(the)g(n)m(um)m(b)s(er)f(of)h(factor)i(indices,)0 │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fo(6)p 136 100 1128 4 v │ │ │ │ +1310 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(Octob)s(er)g(4,)h(2025) │ │ │ │ +p 2772 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 │ │ │ │ +b(or)d(the)g(n)m(um)m(b)s(er)f(of)h(factor)i(indices,)0 │ │ │ │ 1128 y(en)m(tries)31 b(or)g(op)s(erations)f(required)g(b)m(y)g(the)h │ │ │ │ (ob)5 b(ject.)111 1391 y(1.)46 b Fn(int)h(ETree_sizeOf)e(\()i(ETree)f │ │ │ │ (*etree)h(\))g(;)227 1551 y Fo(This)24 b(metho)s(d)g(returns)f(the)h(n) │ │ │ │ m(um)m(b)s(er)f(of)h(b)m(ytes)h(tak)m(en)h(b)m(y)e(this)g(ob)5 │ │ │ │ b(ject)25 b(\(whic)m(h)g(includes)f(the)g(b)m(ytes)h(tak)m(en)227 │ │ │ │ 1664 y(b)m(y)31 b(the)f(in)m(ternal)h Fn(Tree)e Fo(structure\).)227 │ │ │ │ 1825 y Fj(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fo(If)30 │ │ │ │ @@ -5912,17 +5901,17 @@ │ │ │ │ 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 1087 4 v 1269 100 a Fn(ETree)29 │ │ │ │ -b Fk(:)40 b Fj(DRAFT)121 b Fk(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2766 100 V 1087 w Fo(7)111 399 y(6.)46 b Fn(double)g │ │ │ │ +TeXDict begin 7 6 bop 91 100 1128 4 v 1310 100 a Fn(ETree)29 │ │ │ │ +b Fk(:)40 b Fj(DRAFT)121 b Fk(Octob)s(er)31 b(4,)g(2025)p │ │ │ │ +2725 100 V 1128 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 │ │ │ │ @@ -6008,25 +5997,24 @@ │ │ │ │ 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 1087 4 v │ │ │ │ -1269 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2813 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 │ │ │ │ -788 y(complemen)m(t.)43 b(The)30 b Fn(mapIV)f Fo(ob)5 │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fo(8)p 136 100 1128 4 v │ │ │ │ +1310 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(Octob)s(er)g(4,)h(2025) │ │ │ │ +p 2772 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 788 y(complemen)m(t.)43 b(The)30 b Fn(mapIV)f Fo(ob)5 │ │ │ │ b(ject)31 b(maps)f(v)m(ertices)i(to)g(domains)e(or)g(the)h(Sc)m(h)m(ur) │ │ │ │ f(complemen)m(t)i(|)e(if)h(the)227 901 y(en)m(try)g(is)f │ │ │ │ Fn(0)p Fo(,)h(the)f(v)m(ertex)i(is)e(in)g(the)h(Sc)m(h)m(ur)e │ │ │ │ (complemen)m(t,)j(otherwise)f(it)g(is)f(in)g(a)h(domain.)227 │ │ │ │ 1064 y Fj(Err)-5 b(or)35 b(che)-5 b(cking:)41 b Fo(If)31 │ │ │ │ b Fn(etree0)p Fo(,)e Fn(graph)p Fo(,)h Fn(mapIV)g Fo(or)g │ │ │ │ Fn(etree1)g Fo(is)h Fn(NULL)p Fo(,)f(an)h(error)f(message)i(is)f(prin)m │ │ │ │ @@ -6087,17 +6075,17 @@ │ │ │ │ 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 1087 4 v 1269 100 a Fn(ETree)29 │ │ │ │ -b Fk(:)40 b Fj(DRAFT)121 b Fk(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2766 100 V 1087 w Fo(9)0 399 y Fh(1.2.6)112 b(Compression)39 │ │ │ │ +TeXDict begin 9 8 bop 91 100 1128 4 v 1310 100 a Fn(ETree)29 │ │ │ │ +b Fk(:)40 b Fj(DRAFT)121 b Fk(Octob)s(er)31 b(4,)g(2025)p │ │ │ │ +2725 100 V 1128 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 │ │ │ │ @@ -6165,25 +6153,25 @@ │ │ │ │ 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 1065 4 │ │ │ │ -v 1247 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)31 b Fk(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2836 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 │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fo(10)p 182 100 1106 4 │ │ │ │ +v 1288 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(Octob)s(er)g(4,)h │ │ │ │ +(2025)p 2795 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 │ │ │ │ 951 y Fj(Err)-5 b(or)37 b(che)-5 b(cking:)47 b Fo(If)33 │ │ │ │ b Fn(etree)g Fo(or)g Fn(frontMapIV)e Fo(is)j Fn(NULL)p │ │ │ │ Fo(,)f(or)g(if)h Fn(nfront)29 b Fg(<)i Fo(1,)k(or)f(if)f │ │ │ │ Fn(nvtx)d Fg(<)h Fo(1,)k(an)e(error)227 1064 y(message)f(is)e(prin)m │ │ │ │ (ted)g(and)g(the)g(program)h(exits.)0 1369 y Fh(1.2.7)112 │ │ │ │ b(Justi\014cation)38 b(metho)s(ds)0 1578 y Fo(Giv)m(en)g(an)g │ │ │ │ Fn(ETree)e Fo(ob)5 b(ject,)40 b(ho)m(w)e(should)e(the)i(c)m(hildren)f │ │ │ │ @@ -6239,17 +6227,17 @@ │ │ │ │ (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 1065 4 v 1246 100 a Fn(ETree)29 │ │ │ │ -b Fk(:)40 b Fj(DRAFT)122 b Fk(F)-8 b(ebruary)30 b(29,)h(2024)p │ │ │ │ -2743 100 V 1065 w Fo(11)111 399 y(2.)46 b Fn(IV)h(*)h │ │ │ │ +TeXDict begin 11 10 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(4,)h(2025)p │ │ │ │ +2702 100 V 1106 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 │ │ │ │ @@ -6321,21 +6309,21 @@ │ │ │ │ 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 1065 │ │ │ │ -4 v 1247 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)31 b Fk(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2836 100 V 227 399 a Fo(strictly)36 │ │ │ │ -b(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 │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fo(12)p 182 100 1106 │ │ │ │ +4 v 1288 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(Octob)s(er)g(4,)h │ │ │ │ +(2025)p 2795 100 V 227 399 a Fo(strictly)36 b(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 │ │ │ │ @@ -6424,17 +6412,17 @@ │ │ │ │ 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 1065 4 v 1246 100 a Fn(ETree)29 │ │ │ │ -b Fk(:)40 b Fj(DRAFT)122 b Fk(F)-8 b(ebruary)30 b(29,)h(2024)p │ │ │ │ -2743 100 V 1065 w Fo(13)0 399 y Fh(1.2.10)113 b(T)-9 │ │ │ │ +TeXDict begin 13 12 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(4,)h(2025)p │ │ │ │ +2702 100 V 1106 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 │ │ │ │ @@ -6523,31 +6511,31 @@ │ │ │ │ (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 1065 │ │ │ │ -4 v 1247 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)31 b Fk(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2836 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 b(that)g(go)m(v)m(erns)g(the)f(merging)h │ │ │ │ -(pro)s(cess)f(is)g Fn(maxzeros)p Fo(,)e(the)j(n)m(um)m(b)s(er)e(of)h │ │ │ │ -(zero)h(en)m(tries)g(that)g(can)227 888 y(b)s(e)36 b(in)m(tro)s(duced)f │ │ │ │ -(b)m(y)h(merging)h(a)f(c)m(hild)h(and)e(paren)m(t)h(fron)m(t)h │ │ │ │ -(together.)59 b(On)35 b(input,)i Fn(nzerosIV)d Fo(con)m(tains)227 │ │ │ │ -1001 y(the)d(n)m(um)m(b)s(er)e(of)i(zeros)g(presen)m(tly)g(in)f(eac)m │ │ │ │ -(h)i(fron)m(t.)41 b(It)31 b(is)f(mo)s(di\014ed)f(on)i(output)f(to)h │ │ │ │ +TeXDict begin 14 13 bop 0 100 a Fo(14)p 182 100 1106 │ │ │ │ +4 v 1288 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(Octob)s(er)g(4,)h │ │ │ │ +(2025)p 2795 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 │ │ │ │ +b(that)g(go)m(v)m(erns)g(the)f(merging)h(pro)s(cess)f(is)g │ │ │ │ +Fn(maxzeros)p Fo(,)e(the)j(n)m(um)m(b)s(er)e(of)h(zero)h(en)m(tries)g │ │ │ │ +(that)g(can)227 888 y(b)s(e)36 b(in)m(tro)s(duced)f(b)m(y)h(merging)h │ │ │ │ +(a)f(c)m(hild)h(and)e(paren)m(t)h(fron)m(t)h(together.)59 │ │ │ │ +b(On)35 b(input,)i Fn(nzerosIV)d Fo(con)m(tains)227 1001 │ │ │ │ +y(the)d(n)m(um)m(b)s(er)e(of)i(zeros)g(presen)m(tly)g(in)f(eac)m(h)i │ │ │ │ +(fron)m(t.)41 b(It)31 b(is)f(mo)s(di\014ed)f(on)i(output)f(to)h │ │ │ │ (corresp)s(ond)f(with)g(the)227 1114 y(new)g(fron)m(t)h(tree.)41 │ │ │ │ b(This)30 b(metho)s(d)f(only)i(tries)g(to)g(merge)g(a)f(fron)m(t)h │ │ │ │ (with)f(its)h(only)f(c)m(hild.)227 1265 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 │ │ │ │ 1377 y(and)k(the)h(program)f(exits.)111 1566 y(2.)46 │ │ │ │ @@ -6613,17 +6601,17 @@ │ │ │ │ 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 1065 4 v 1246 100 a Fn(ETree)29 │ │ │ │ -b Fk(:)40 b Fj(DRAFT)122 b Fk(F)-8 b(ebruary)30 b(29,)h(2024)p │ │ │ │ -2743 100 V 1065 w Fo(15)227 399 y Fn(ETree)47 b(*)g(ETree_transform2)c │ │ │ │ +TeXDict begin 15 14 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(4,)h(2025)p │ │ │ │ +2702 100 V 1106 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 │ │ │ │ @@ -6688,51 +6676,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 1065 │ │ │ │ -4 v 1247 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)31 b Fk(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2836 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 1106 │ │ │ │ +4 v 1288 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(Octob)s(er)g(4,)h │ │ │ │ +(2025)p 2795 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 │ │ │ │ @@ -6767,17 +6755,17 @@ │ │ │ │ (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 1065 4 v 1246 100 a Fn(ETree)29 │ │ │ │ -b Fk(:)40 b Fj(DRAFT)122 b Fk(F)-8 b(ebruary)30 b(29,)h(2024)p │ │ │ │ -2743 100 V 1065 w Fo(17)111 399 y(5.)46 b Fn(void)h │ │ │ │ +TeXDict begin 17 16 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(4,)h(2025)p │ │ │ │ +2702 100 V 1106 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 │ │ │ │ @@ -6851,19 +6839,19 @@ │ │ │ │ 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 1065 │ │ │ │ -4 v 1247 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)31 b Fk(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2836 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 │ │ │ │ +TeXDict begin 18 17 bop 0 100 a Fo(18)p 182 100 1106 │ │ │ │ +4 v 1288 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(Octob)s(er)g(4,)h │ │ │ │ +(2025)p 2795 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 │ │ │ │ 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 │ │ │ │ @@ -6932,17 +6920,17 @@ │ │ │ │ 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 1065 4 v 1246 100 a Fn(ETree)29 │ │ │ │ -b Fk(:)40 b Fj(DRAFT)122 b Fk(F)-8 b(ebruary)30 b(29,)h(2024)p │ │ │ │ -2743 100 V 1065 w Fo(19)337 399 y Fl(\210)45 b Fo(The)24 │ │ │ │ +TeXDict begin 19 18 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(4,)h(2025)p │ │ │ │ +2702 100 V 1106 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 │ │ │ │ @@ -7014,29 +7002,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 1065 │ │ │ │ -4 v 1247 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)31 b Fk(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2836 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 1106 │ │ │ │ +4 v 1288 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(Octob)s(er)g(4,)h │ │ │ │ +(2025)p 2795 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 │ │ │ │ @@ -7094,17 +7082,17 @@ │ │ │ │ h(n)m(um)m(b)s(er)e(of)h(v)m(ertices)i(in)e(a)h(fron)m(t)f(|)h(an)m(y) │ │ │ │ 427 5146 y(original)j(fron)m(t)f(that)g(con)m(tains)h(more)f(than)f │ │ │ │ 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 1065 4 v 1246 100 a Fn(ETree)29 │ │ │ │ -b Fk(:)40 b Fj(DRAFT)122 b Fk(F)-8 b(ebruary)30 b(29,)h(2024)p │ │ │ │ -2743 100 V 1065 w Fo(21)337 399 y Fl(\210)45 b Fo(The)30 │ │ │ │ +TeXDict begin 21 20 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(4,)h(2025)p │ │ │ │ +2702 100 V 1106 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 │ │ │ │ @@ -7187,32 +7175,32 @@ │ │ │ │ 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 1065 │ │ │ │ -4 v 1247 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)31 b Fk(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2836 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(message)g(\014le.)337 │ │ │ │ -1151 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 1264 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 │ │ │ │ -1377 y(data.)337 1527 y Fl(\210)45 b Fo(The)36 b Fn(inETreeFile)d │ │ │ │ +TeXDict begin 22 21 bop 0 100 a Fo(22)p 182 100 1106 │ │ │ │ +4 v 1288 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(Octob)s(er)g(4,)h │ │ │ │ +(2025)p 2795 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 │ │ │ │ +(message)g(\014le.)337 1151 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 │ │ │ │ +1264 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 1377 │ │ │ │ +y(data.)337 1527 y Fl(\210)45 b Fo(The)36 b Fn(inETreeFile)d │ │ │ │ Fo(parameter)j(is)g(the)g(input)f(\014le)h(for)g(the)g │ │ │ │ Fn(ETree)f Fo(ob)5 b(ject)36 b(for)g(the)g(compressed)427 │ │ │ │ 1640 y(graph.)53 b(It)34 b(m)m(ust)g(b)s(e)g(of)h(the)f(form)g │ │ │ │ Fn(*.etreef)e Fo(or)j Fn(*.etreeb)p Fo(.)50 b(The)34 │ │ │ │ b Fn(ETree)f Fo(ob)5 b(ject)36 b(is)e(read)g(from)427 │ │ │ │ 1753 y(the)d(\014le)f(via)h(the)g Fn(ETree)p 1282 1753 │ │ │ │ 29 4 v 33 w(readFromFile\(\))26 b Fo(metho)s(d.)337 1903 │ │ │ │ @@ -7272,17 +7260,17 @@ │ │ │ │ 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 1065 4 v 1246 100 a Fn(ETree)29 │ │ │ │ -b Fk(:)40 b Fj(DRAFT)122 b Fk(F)-8 b(ebruary)30 b(29,)h(2024)p │ │ │ │ -2743 100 V 1065 w Fo(23)0 453 y(Figure)26 b(1.1:)40 b │ │ │ │ +TeXDict begin 23 22 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(4,)h(2025)p │ │ │ │ +2702 100 V 1106 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 │ │ │ │ @@ -7681,20 +7669,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 1065 │ │ │ │ -4 v 1247 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)31 b Fk(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2836 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 1106 │ │ │ │ +4 v 1288 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(Octob)s(er)g(4,)h │ │ │ │ +(2025)p 2795 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 │ │ │ │ @@ -7772,17 +7760,17 @@ │ │ │ │ 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 1065 4 v 1246 100 a Fn(ETree)29 │ │ │ │ -b Fk(:)40 b Fj(DRAFT)122 b Fk(F)-8 b(ebruary)30 b(29,)h(2024)p │ │ │ │ -2743 100 V 1065 w Fo(25)227 399 y(the)h Fn(flag)e Fo(and)h │ │ │ │ +TeXDict begin 25 24 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(4,)h(2025)p │ │ │ │ +2702 100 V 1106 w Fo(25)227 399 y(the)h 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 │ │ │ │ @@ -7846,19 +7834,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 1065 │ │ │ │ -4 v 1247 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)31 b Fk(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2836 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 1106 │ │ │ │ +4 v 1288 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(Octob)s(er)g(4,)h │ │ │ │ +(2025)p 2795 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 │ │ │ │ @@ -7926,17 +7914,17 @@ │ │ │ │ (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 1065 4 v 1246 100 a Fn(ETree)29 │ │ │ │ -b Fk(:)40 b Fj(DRAFT)122 b Fk(F)-8 b(ebruary)30 b(29,)h(2024)p │ │ │ │ -2743 100 V 1065 w Fo(27)337 399 y Fl(\210)45 b Fo(The)30 │ │ │ │ +TeXDict begin 27 26 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(4,)h(2025)p │ │ │ │ +2702 100 V 1106 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) │ │ │ │ @@ -9739,18 +9727,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 1065 │ │ │ │ -4 v 1247 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)31 b Fk(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2836 100 V 0 731 a Fo(Figure)c(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 1106 │ │ │ │ +4 v 1288 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(Octob)s(er)g(4,)h │ │ │ │ +(2025)p 2795 100 V 0 731 a Fo(Figure)c(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 │ │ │ │ @@ -12020,17 +12008,17 @@ │ │ │ │ 60 60 480 480 rectstroke │ │ │ │ │ │ │ │ showpage │ │ │ │ │ │ │ │ %%EndDocument │ │ │ │ @endspecial 3879 5026 V 1965 5029 1918 4 v eop end │ │ │ │ %%Page: 29 29 │ │ │ │ -TeXDict begin 29 28 bop 91 100 1065 4 v 1246 100 a Fn(ETree)29 │ │ │ │ -b Fk(:)40 b Fj(DRAFT)122 b Fk(F)-8 b(ebruary)30 b(29,)h(2024)p │ │ │ │ -2743 100 V 1065 w Fo(29)227 399 y(of)j(this)g(sup)s(erno)s(de)d │ │ │ │ +TeXDict begin 29 28 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(4,)h(2025)p │ │ │ │ +2702 100 V 1106 w Fo(29)227 399 y(of)j(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 │ │ │ │ @@ -12191,17 +12179,17 @@ │ │ │ │ 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 1065 4 v 1246 100 a Fn(ETree)29 │ │ │ │ -b Fk(:)40 b Fj(DRAFT)122 b Fk(F)-8 b(ebruary)30 b(29,)h(2024)p │ │ │ │ -2743 100 V 1065 w Fo(31)0 399 y Fn(ETree)p 246 399 29 │ │ │ │ +TeXDict begin 31 30 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(4,)h(2025)p │ │ │ │ +2702 100 V 1106 w Fo(31)0 399 y Fn(ETree)p 246 399 29 │ │ │ │ 4 v 33 w(vtxToFront\(\))p Fo(,)c(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 │ │ │ │ ├── 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 February 29, 2024 │ │ │ │ │ + 2 ETree : DRAFT October 4, 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 February 29, 2024 3 │ │ │ │ │ + ETree : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 4 ETree : DRAFT October 4, 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 February 29, 2024 5 │ │ │ │ │ + ETree : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 6 ETree : DRAFT October 4, 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 February 29, 2024 7 │ │ │ │ │ + ETree : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 8 ETree : DRAFT October 4, 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 February 29, 2024 9 │ │ │ │ │ + ETree : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 10 ETree : DRAFT October 4, 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 February 29, 2024 11 │ │ │ │ │ + ETree : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 12 ETree : DRAFT October 4, 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 February 29, 2024 13 │ │ │ │ │ + ETree : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 14 ETree : DRAFT October 4, 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 February 29, 2024 15 │ │ │ │ │ + ETree : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 16 ETree : DRAFT October 4, 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 February 29, 2024 17 │ │ │ │ │ + ETree : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 18 ETree : DRAFT October 4, 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 February 29, 2024 19 │ │ │ │ │ + ETree : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 20 ETree : DRAFT October 4, 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 February 29, 2024 21 │ │ │ │ │ + ETree : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 22 ETree : DRAFT October 4, 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 February 29, 2024 23 │ │ │ │ │ + ETree : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 24 ETree : DRAFT October 4, 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 February 29, 2024 25 │ │ │ │ │ + ETree : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 26 ETree : DRAFT October 4, 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 February 29, 2024 27 │ │ │ │ │ + ETree : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 28 ETree : DRAFT October 4, 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 February 29, 2024 29 │ │ │ │ │ + ETree : DRAFT October 4, 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 February 29, 2024 31 │ │ │ │ │ + ETree : DRAFT October 4, 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 │ │ │ │ @@ -7,15 +7,15 @@ │ │ │ │ %%BoundingBox: 0 0 612 792 │ │ │ │ %%DocumentFonts: CMR17 CMBX12 CMR12 CMR8 CMR6 CMR9 CMTT9 │ │ │ │ %%DocumentPaperSizes: Letter │ │ │ │ %%EndComments │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o Eigen.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2024.02.29:1858 │ │ │ │ +%DVIPSSource: TeX output 2025.10.04:1734 │ │ │ │ %%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 │ │ │ │ @@ -2007,20 +2007,20 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 50 /two put │ │ │ │ dup 52 /four put │ │ │ │ -dup 57 /nine put │ │ │ │ +dup 53 /five put │ │ │ │ dup 65 /A put │ │ │ │ dup 66 /B put │ │ │ │ dup 67 /C put │ │ │ │ -dup 70 /F put │ │ │ │ dup 74 /J put │ │ │ │ +dup 79 /O put │ │ │ │ dup 80 /P put │ │ │ │ dup 87 /W put │ │ │ │ dup 97 /a put │ │ │ │ dup 98 /b put │ │ │ │ dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ dup 102 /f put │ │ │ │ @@ -2031,17 +2031,15 @@ │ │ │ │ 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 │ │ │ │ -dup 121 /y put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA │ │ │ │ 0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 │ │ │ │ 51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 │ │ │ │ 7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 │ │ │ │ @@ -2211,195 +2209,186 @@ │ │ │ │ 7F4E88E917F0FFDCE68F22998AC0AF2A60A73258C3A4BBC42A2F918123128195 │ │ │ │ 196D0E150D79AC3CF4628503D1F3FC528265ED8324E56849A47B3B07C29940B9 │ │ │ │ 1BC270071E221D355EA51E9942D3BD7F99816304FFFC8F5B036C953B38759341 │ │ │ │ ED5D7B9C8E6B70C409DD8362FD291201CC385E4A98D73E8518A4C0E544152563 │ │ │ │ 82032FBD2FCB6E403D34B85ED4053A8CB619BDD4DE001F4C3007B1F317579651 │ │ │ │ E6D6662189CC2D95AB85D7473F65C5D7B4AC63B0FE928F3400035D5A9D443D0D │ │ │ │ F3532B99F3AC26CB25EA3CD64C341159061E02EFBC7C033C05CD919BBD827A6A │ │ │ │ -BFCF3BD739E32E7FE909AEE068D50FAC33605FFF98C7D0115FB860178FD03DB9 │ │ │ │ -7985B78E0AC21F2EA065FA841F5928FB85163B2E2D8F850DC7EE313912C45C28 │ │ │ │ -2783F6762C67882EFEDDC7E7567F91C16B16FD8D5A1ABF35B5586307701B91AD │ │ │ │ -54984598F2AD46FEE3D68A2731BEAA754C8E730FE0E84952EF77930E4118F8D7 │ │ │ │ -2F3AD7547D3E54167FB0B315756753DC0DF935CC3D1CBB93A9A575EBF5BBB34F │ │ │ │ -2CBD38692849D484C11BB5CF75F095251A87F37EC4727933F21C3932EEE24157 │ │ │ │ -6C7AFD8361708C885FA63C37FCEC2057BBC47FBA727F94569921D2F4B8F0DB6A │ │ │ │ -2E398A672F4122E3B1E3B4EE28D0AB51662DAA00AC11C2A9FED18429ACED7465 │ │ │ │ -4F427E7965A7CAE7FDBE67EAAE97D91A082303BCADE1B1361D66DCB0CB8BFC7E │ │ │ │ -107366EB90AE246B2C8528DDBA2E621C4382FD8516E071B813A5BDE514EE30D4 │ │ │ │ -C647C8877BAD1BFDF9D6068AC5537C48EDC2B9D1BA2E90D4FC2D8B2B28547E0F │ │ │ │ -0CA3F834903BD3E34D8D041778BA8D03914A0FAD861C76BE8DADC6F2409E58ED │ │ │ │ -F00A13ED0D7A32B44DDD2E55068F610132BD988276F1B9FC6D87C0895E6F3F11 │ │ │ │ -470BCB2863BB76B4A2DEF9A4B0E84D2141C43C205C777F8AB1AD08D738B0B5DB │ │ │ │ -677A0E889A98A0FA33D9C380D1B5D3DEEF9B3697B1D207633BE95C3ED360929A │ │ │ │ -233CD0AB73CC2A8674AA86DE3E9E75781252B59E4C8A69D91A88CBCDAD3BA46E │ │ │ │ -F66CBE9CADB844A7A817BD4878D6B0259A579E7362101052F796A3E4572764C9 │ │ │ │ -EA7FFD253DAAF4365F588B5E15836E9A78C1D3F69B29F53BC5E34A57318E3627 │ │ │ │ -4644E0294B6CE43312A3E1C75B675B1E37E9D9C079AA24AF4730B348FFE40887 │ │ │ │ -6932AD20FBD9818DA0C83C59F6BF32BC43002E4A660DC867B37927D0FE62B8BF │ │ │ │ -EEBFA79620F7078289BBF1E7EE65F169A790AF3C19F971F4156C96A7B510094D │ │ │ │ -58952179582A8F7BB37B53DF3DA8C386B84141DE44AA19132110DF656B144A1B │ │ │ │ -7091C5B37EB83D640B169F0D28941A2D61559BD6F1C37078ADBB7710673F702F │ │ │ │ -3874E72793773E60C201F9C00ECA2FB27F2E1799CC7AD881723A593992226C99 │ │ │ │ -7686EE2622F2DEE22F32C1F609BC847568C15CCEB4AA8E95E821D9D2897A2370 │ │ │ │ -C2CD0061FD2B0D00C5947DD7AA5EDF825F025002E29D49E7317EDFE0DA794D76 │ │ │ │ -9D19D2119CB5DC252DE84CF71782888C2C0EDE06FC3149D002C0C2BDA33FDFE4 │ │ │ │ -D9433D86472AEF1530E3EEB6AC47B2FC009043D799C21158CCC396B678500F13 │ │ │ │ -243FE64ACAA12D17A5A681F67EC6904B6BF9384191E81A7F2F5964D0657E715D │ │ │ │ -9F1637C31B755E0207A2CD6DF5A4A068FC71A7824C6278DD208E26713701D43B │ │ │ │ -8A5851C30B74FDB28D951BAB756E4DD92B896421A99530BF800740B252A22BAE │ │ │ │ -0FB01D3B453CCA523665B7027D9C872B4E57CBB3F0561B9AF06BFBACD682441A │ │ │ │ -03438AE9E3DB06277A4EB7F6985E17D877939ECC0B8D4FB1191B7A5F6DF79EC7 │ │ │ │ -89F7D00F083FBC69348C6AA944FAD56235DBC92218347577369D040881A4DF7C │ │ │ │ -FAF251B36805A3835617E45A1C8A60D1CEDB7AC87942A1BB84DC11EFC5701492 │ │ │ │ -9A4A1DEAA69509EF331D253CA751E00E7527560685A712124C7CA918D72051DB │ │ │ │ -6CFB19DA45813993266A9B4E0BC85108F16DB026969DC7496F761B2AB57EE9C0 │ │ │ │ -FED3E74299EEE0DD9AB14E50A22BCBD43A82229E3FA058B212483689EA45827E │ │ │ │ -4DC5E6B76FD506C24694DB27DBA5FE30FF5918D26A2BBBF33474F7C7AD581DF9 │ │ │ │ -282E7C5679BA0526296B44532C310823CF0CF7B8B4C4163196D26B1501843218 │ │ │ │ -AB8A3B95C49DED4F75BA5EA0C76946A5D93AE0BD0B4DC0DE170C2D24C405D71D │ │ │ │ -E3D8470BC27F8525C7FF988BE846A17D3189B2555D0569E817A1AF7D0A536FBD │ │ │ │ -62FA4E8F32BAAF42E2C24DD67D465EE1E09781639361A04F7E179277183D20D3 │ │ │ │ -2A417FBA93D10A980535BFD546D5065C67BC3A92502740C416D40B5C05E61588 │ │ │ │ -BD5FE2B8D2DED25D991153590C8FEB0EBA85198F35397A1446CB45183984989E │ │ │ │ -7009564214078E4ADB97C7D20F94823647446288B8671903363A9C5BA26D3705 │ │ │ │ -5CE572C658F2CD8BF6A18C187E13E0B4271DB0E4D466CBA93905C401460043AF │ │ │ │ -829F31D73D03CFE07D04431E1F1CB1483ADD92E4FA5D3B6A52778A4AEF3430DB │ │ │ │ -2D24ADB65F0875AADCB6C40393B75A9C111C48DA12647E6F80540811E7469F94 │ │ │ │ -366307EB4B2BD9951CB4F7396A8050111FCA7116E7ABA66E8D610EE40988B969 │ │ │ │ -14314485AC9234A32856316D7F4D9C73B08A83EAD3E03DEC0ED7E444CF1497F6 │ │ │ │ -162B3190F32652F36BDF1DB5ADFBEDCFC2CFD1FFB8192D2A4636E839BE57309D │ │ │ │ -47FCB719904D51C97078E8787F84BE1B02A641AA286DAE1173C5124E3E27F381 │ │ │ │ -FDB205BF51A2A0E4CA4A27DBEFAAE18FDB474C81E1ABD12578555C8F55374A96 │ │ │ │ -3F5A9D270A5511F093AA49FFFE7894530AD36CE9E22EB4FA8250FBD9A310795B │ │ │ │ -469825F31A9820830F08E9227E980727E25BB2390970A764A06DC62C4CB9B7E6 │ │ │ │ -EF4CE2B1A09CB1FB9083950DEC8FF4805096BF30C49D0A8AA4B5A60713B2BD77 │ │ │ │ -3FCE483ABC7A4EC1E77C40DE9FB5FD18EF6FBEDE7065CA45DE8447E50D443802 │ │ │ │ -B83BDDBE5D00B3999426B7751B5F37E50F34899326C26EBE31D7CCE0FB287B14 │ │ │ │ -BAB6EBE6B91B0ECFD2B7F421C0492488C9F27378463587E5F7A58FFD588D07FC │ │ │ │ -17EE10CDC5BD0BF700321F7864291A3B3F75AA1818D24CC658142A77AF4E58E9 │ │ │ │ -0194A0C4183718A5051C155BA8D82F67F1E86B6F8B474915D136E53C45324A75 │ │ │ │ -C4F67749BA1FBC5B725733121E0FCB84F73CB1915E806018CE3C6240F919B5CD │ │ │ │ -0DF2FEDFF0D4D44AD96B6A988CE566C8B57D5BAEED4A8E8649C99C3BAACE6783 │ │ │ │ -3592F38B8097E8E69A2D44FE3B9D28F42661988C23D6F0D5C0DB5612A8F995EC │ │ │ │ -EB27C46434FCED35CE92126E50C383BACC294B83557616722C53F28B774CB733 │ │ │ │ -3D921CC637985D163056D43FA60DAC0D48D112FE9DCD5233CE97AEE08FFFF04E │ │ │ │ -9DE01BC086F5991883643FBDE218852753BC60B2F3110469EEB25B313935B612 │ │ │ │ -FC799A963D7225F1D0C3625B844AF6CB1A14E7719FD491CCDE9F077798356DB8 │ │ │ │ -5371B92F825DEC88CEDABDF0B48066ACEBC495E82995ADD4B9CDFC37927D9EF2 │ │ │ │ -C4C1E4BEAFF561681D2E5567A47FDC7488EB607B436A62EAF4DE26E39DD8D71F │ │ │ │ -80011F8981CEA91CFA57162ADA588EAF4CE1D85E1C72AE3077EE47BF71F8673C │ │ │ │ -E6FCE282B981A4FA66601BD8C8B1A5A30A9847FEC54847F2353F8DA1A5078078 │ │ │ │ -0ABE089613F5C8F763D84960DD3CE602776A7272E81C9380C92886EC5C42223F │ │ │ │ -5487F6F4D64EE359B3CBD8F3202B56CB1EE1119DF397DC95E949C40AC89A4DC3 │ │ │ │ -33BA3C532D51C5EF6E5860F3CD08C4BF8B8281C586646D0C4195F1FC162A3FF7 │ │ │ │ -1D08E3B6221045BEAE3DADC3CCD00FE9FEBF50F4FCF2D4D910A04F12655E36A1 │ │ │ │ -9CBFC7EA86C1FA9780B4C79726FD3B14FB594553215451A3A8B18F9E5BC9663F │ │ │ │ -03C80E0EDA5A005CEDE70B75DF2E237952398CF17009176E8E77BD25FF37F366 │ │ │ │ -68923D484ABF311DC1CBE8A6D60F8CC84489233910DBC3D45107B742698DE11D │ │ │ │ -EF1EC6E037D2F54AA5F010E6D580C3BAF6A14F5FD9FFE19DB14D5AA74B857A3A │ │ │ │ -134AE00DB61091B9BCE02D7AA6A1E92B98B998F855730B1F9F1C3213C13085EE │ │ │ │ -871F46325549777D70E5F924E63C02F24927923E08F001081409EE7FAE5DEDAF │ │ │ │ -E4C648C5433494F7C3A90253FDA3254AE5F5A604745225B64A4A67023F4B0513 │ │ │ │ -245994CADF409B9877082D321C9F6EE161F54E30F8C5D9366F7124768D82D55A │ │ │ │ -795F530605ED70E553ED82DE195E7148057EBF991F9F82FA96C0B1FF5CCF9BB4 │ │ │ │ -A51500E315A58A528A50F76AA12781F52DE761CCFC261B09315AE8A31EA7E2F6 │ │ │ │ -8F930656B56F880D5B17E4939E2543A6E6653513C9AE4E7E761BE1978A7ACE03 │ │ │ │ -2D010D65DFDE675D073F4152D06F71513CA8099D955CD7F44C73213E989A8383 │ │ │ │ -F084E8F513388718158D0B1349F6570C01CAC8CA059FD3EE84A63520AF3A7BB2 │ │ │ │ -BD452B427F92883A2D6D484ED9A40E05FD99524663E06F4FC5C30FD6D600034B │ │ │ │ -00964C1D3D3AECF9298313FD549527D1E02418F8CDCD686CCAD6BAF5BA8D5C0B │ │ │ │ -60D55D8090F9DEF1B80F288275BF05BA3EB8A2B87A12C9F211F71A2969D1F153 │ │ │ │ -C09B379E836E4CA191E332E0D285E06F8741AE6FBBC04573CD9B198EEF9AF011 │ │ │ │ -85FB5A01ED626749B3DEFDA6431BFD0C9AE4B314CC9D6A1919A510DEDD9874C9 │ │ │ │ -A4911EDA45AA11FFB67BDB3EDFEEBBB344C34ADF5DF298AEE16C6D1BDC7E76F5 │ │ │ │ -FAB39EE9D230312DE7CD8B5E74215604178A2574ED8CD9F9EF8998A04FD0A4C6 │ │ │ │ -4C8BE6CC65D7D78631D2108A11F72A8A9BA6C7C3F476AA63F2F54DF6FF18C551 │ │ │ │ -41B822EAB0634D8464CC30B4996BCA9DB284B544829F5A7EA7E9741CD104DD7B │ │ │ │ -09C0C76CC945A2F8BD8343E49E2ADEA223F92F1E0CB9615834962F29903A7907 │ │ │ │ -3996EAE81B24BC507FC6CDEB356BAB28D97425B59F49CF2E7CE85C9B0548EE2F │ │ │ │ -C2C49224ED6C6C5C48A0245CE2AD53CCBFBF6FBE16BFE0FA8005501988B7F840 │ │ │ │ -EBECF8C60AD5D75F78405FA205C5AAF170FB785C69D91F4EC9B1B115705F64FF │ │ │ │ -7EFCD312CE0A0572A7C83BEA445C407FAAF3C35E194EC4307B4EAD5ABF36AB64 │ │ │ │ -E9D4079798AA4123C00655D2C16629867D1DCAF3D715607A7B172FD104E5A2F3 │ │ │ │ -A2D9B7EA8D84F2F4A29D99FE98B0BA73C7061EFCB6BB25BFBB0934340C44A73E │ │ │ │ -4C779BFF925C6FB6A59362A31BBFF5D1C72D9BE009FA8C0B806D279E0575DE94 │ │ │ │ -4AA809853A4A344F381738EE9D6388FE845AED239CBAE584EA9E50212115DC06 │ │ │ │ -22DA1512E24806E46AAA1E3C1456C5E95595F0CD5AAB53E5A996B0FECF0645F8 │ │ │ │ -B9C66D73678FDE76E5E2495E3B4EEB177DFA5EC4CC6B5AFEC525B044DAA984D7 │ │ │ │ -A9CCCFB1369108B5715C10F32C4051866F1AE01A469917F62A05DAC9599A95C8 │ │ │ │ -4904AFEC02DA85CE15ED8387D6A31C3C311E008BC021C3D3DFCF33CAD9BDF007 │ │ │ │ -FB7263739A93F079A2FEA962A11DD270E3D0AF14F8C079DEFB95E69E93DB472F │ │ │ │ -8D019D4E800033B59940FA1DA6597579F551F0450FB41B6752845553D7C7D693 │ │ │ │ -0956F2CD29DB08B2A57CCEE90888914F44001783585CCECC47A3586D275A1C57 │ │ │ │ -1354E67B340C00CB63287FCE76B157406DB65EDD26599603D57697AD09AFD794 │ │ │ │ -ACCBA53D72B1F8752EE585B63629F8569356E9776F7396E6DD2EE39A70C15EFA │ │ │ │ -FC60E58F9E6ABFFB5EE96506A250EF269B3851CCD563FB5C4BC2D719F00B882F │ │ │ │ -39F8F8E6520D8674124D6166C226CF9C2581127DC729D282246002D507FE194F │ │ │ │ -8E5F406C749171D50739E66AF0E7A2040AA49CC7E5F97DA8E7B088D5F5B32991 │ │ │ │ -0F2E1576A8BB6D4C536E65F74AD5A770967A912218583D38F98FD1B623E8EB1A │ │ │ │ -16308BFD1DA4E07912C9666905BC600486D53D6BBE9A570BD14937480BE5DF7D │ │ │ │ -6FE91B55B66336A92050BFAAC202FBA639A7B863F3CE63D74F9284641EB779B2 │ │ │ │ -A8E4D1AB260DAE9DC92F4CD55B6B4A9A217A02F835D4092DEEAEE1836316BA9C │ │ │ │ -8C1BA457EFCEC18E4F576C1C4570B039B89F09F861E43032F549B81ED670281B │ │ │ │ -418FC76A201946BFEC5B28DFEC1B32D25FB1BDCB0EE4A8E16676456E366C477B │ │ │ │ -3603B79221105BB5DF92C55C02E83B4BC871285A0BF393A03024DE91BBE53366 │ │ │ │ -AE254764B6FBA36136583F28DD81767B1B84DCB12E468C65C4FE8DBCB9DAD3D6 │ │ │ │ -1652CF92552DD28CB1A63B62A7C94840F9CF90A5B05BC70ACB242634C7837726 │ │ │ │ -4561ADFFBEB79289BF6C6568373A5C837D629582B3088ABD7D8980B176299FAF │ │ │ │ -AD4B97F2B4CDD8E811338AE3E0CBF1114129C2D8CD8880A5D6E1024F208668FC │ │ │ │ -FEAD9B47F824D4513AEC2631486A3A20EA51EF7FA28420D21FAE2DC77B512D21 │ │ │ │ -4A4AEC8A0019469C82AE06234D91FDE0EB305B7BCF22134BB377CB36FDB0DAAE │ │ │ │ -FE25D10A51C51E9EDB7C1C273DD44088A908C1B8AA84570955EE32220F79C32C │ │ │ │ -909459B32340DB26CBDCC5BD4618C802ED8684EA1CB24FF4D54B7358EC8FCABE │ │ │ │ -B68C6AC2AE4C6272763658F54FC22999572234AB9DF7B70F17CA73F7A69FD9C2 │ │ │ │ -7C5A8FE3BFA22C76891524113C38E58A7CDDA07F0FAEBF670A8EBF01A41DDB81 │ │ │ │ -561D80E2CF4063B5A5A4BDA0B42D5C46602DD0DA80F459C866BC808D704D7D44 │ │ │ │ -8EE61A7C7E732F5DDA5745E9DA148AC6BC7A4626FFBD045AFB2CCC0D36EE6EA9 │ │ │ │ -524775D2FA7B936A99CEB59A500CD5B41B9C6E8B98F3C9C3F9F6E63ABB5E4AE0 │ │ │ │ -9DA2E9588D9ED4B95B891D64AB2A608A484D9546AB9744806AB8EA35FD311694 │ │ │ │ -E01513F380AABFAECF127835F47E7BB66BF32ECACAAA7E9864E868B4913744BB │ │ │ │ -8C222D1E3EEA5073FEC8F6535C89D6BF64D84ADD48256B53C91BCD522981E74B │ │ │ │ -3AFAA1972AC4A3D41C8734B180238E56817A0B38AF41931CAFC3CCEA91041D36 │ │ │ │ -18B37F6C1FFC127519187423B08A3B83B9D86EDB3053D64F00A0CC632DA235FE │ │ │ │ -285B91DABC87ACA547CE1563BE18E09EB86B143E14FEFF46F7796E31CB067540 │ │ │ │ -CA784A02F5FC193E1FAADA5621B544FA0AD4847C578C77718C8209AEAFCF641B │ │ │ │ -A4389221A8FA9756CB601DCDC821D2780C852E801E7E7A2B8BB1A8947D159CD1 │ │ │ │ -62476C18AF6CB33B496517D753210435C81AED94881475B3E7CB57DFA5BA2C5E │ │ │ │ -6500089903669FF1B01DC4B9B010794245E3A21F98FFB44B5FC3580BF3A3C44E │ │ │ │ -A9108882DAC8D9C50417EE420BFEB027CC51594E01D5A5B40D8051D3EDCAAAF4 │ │ │ │ -34A5D7CF9D5D199E5F7FE9C0E4A39B2ACE2D8FE4742FA0B1A77127FC99C25640 │ │ │ │ -284C093425120E9536F51347847B691E2A057D7F7831658FB98789E9A9E2935B │ │ │ │ -FA258C90B880FF9D4B69A8E18F98336F38D9D5DFC13D6D0F2F36EFF516261FD7 │ │ │ │ -B31B1474F0B53A3179793F37F06C04C6FAEC67B15A6182BDE9DA549E4F9AF3FC │ │ │ │ -EAB8B76E56CFD94A0EF926F8371A3F59CD379D1F2D5528BBEE2AD111DC714239 │ │ │ │ -DBE5EE9B1F1C561C3B224C2FBCAA9C7DA4BE1837BD0DD90F335373F21A9AA116 │ │ │ │ -B1BBE0A5BD7DA7353ADF8C829D188145D25E250335E05CDD957533D22B05B0A0 │ │ │ │ -55D68F034B3861AAED096DA698A618EE2BC16CBD585547D1A74EF8377FA709A4 │ │ │ │ -CC50F9E7F00864D64FE8648636C759E3ABDD1111B377D0F022657E3F0EAA6D6C │ │ │ │ -AA5EA660B5E16FD98AD2DEA35D51A6A067606EC3177F6F998AE6E072B40FB793 │ │ │ │ -826E2CF551B156FD179EF2A3A5E1EB0E877B216E94B235ED95911E7C5BD778A3 │ │ │ │ -CD0C5FE9640068558F45C4C9D2C7BEE5498C68523D793A1BA95A7FCC1A56E0E1 │ │ │ │ -C420874954C7DC1A604CFEEC1AEB8F96CD22BDD16FBF2E22E9A90794A0EBD2D7 │ │ │ │ -2B3257D41AC9EA3D8B26FEF84CDCF0DB6D12182D115BB3ADC014BE138752EE7E │ │ │ │ -5591A6E0E4B136C1E26BE0B49BD84502483D7D334FD35F345BE5C77AD473EB39 │ │ │ │ -AEB12E7DEB6A1F285D1B9B7284D32C402C32F9678F4B3D45D66EEB841F73BF40 │ │ │ │ -3D794DCEDD231D02E784B9F7C0FED79EF58A837B500404145BEBC1CD021F75E6 │ │ │ │ -1A03F0C7B5EFF067E72C8F61A7DEC2F468BD7DE84F5A4120F4FA0673A9C4F9C0 │ │ │ │ -8ABDB2D6E9F40D70C4C49A154016F7D63A4EF3C4E82A41076E1931DCB986B2F3 │ │ │ │ -89034EC42A7AD4840AA1A1578694B49A5D8BA2152D52AF8F41295343631DEBE7 │ │ │ │ -9B3715AD94865009E8C859C4854B28A2F311EA013D824CB19EDEEEC814BA0C54 │ │ │ │ -103137ACDE2671A97E00FF3E918E4B370B624065D6B33E77B1DA53623DB640C1 │ │ │ │ -36F419705E375D6752ACE9326371FE5AF9252F405C75D32C6EC6925D740A9C7D │ │ │ │ -719A3588DBA55DAED943246FD82E615FA27DAF6EE4AC18399AE9E3F924DF2826 │ │ │ │ -48B31630DA51E0785614691ED269B2585167AAE615B0CA7F0CC946B588DFD793 │ │ │ │ -265A9E50E2BE16931D5B86B36B616031DB639C262B55DD4084EB9F28E802BB8C │ │ │ │ -C8A1AA12808C13F3955A5B628475464DA17D8596B33667BE6B79282D84FDFABD │ │ │ │ -8CDD49E54926EEBF9A0704AD93B6721360404EF3BCE654DD95E472C7CAEFD3AE │ │ │ │ -8040D3E1EB4B578B67C09BAF42EBEAD5C320BC990F4A8761B4A19C254CF08A10 │ │ │ │ -8453A4AE74021680541BADAAAFD1D4AA24DAA3561BAE9370748F7FC3E2575A │ │ │ │ +B36258037B5F0DF7D78C26C1D24931A18A2606939F9933100C723ED2FD991F4C │ │ │ │ +98CCB4F15E381B4886FE0E928D4989A0257051C547165291D35FA5BCF359E153 │ │ │ │ +7EF69FEC09DBE6A9E866BAE054F56E86CA2D299F8DCB88685B932117314A73CB │ │ │ │ +5954C6D639CEB6F8A0A1F4D9414F1CA7CF3DEDEE81F75D8B5CEB205425442B32 │ │ │ │ +8703A8A79A51613E3E6A46C9B7B1052C0A5491130E312ED3A0A2F32C5D52B15F │ │ │ │ +9621BA9E1688463FEA43F72D5FDB6E8D0739003C1D8A04E1589A7FD3F405364F │ │ │ │ +CD0677FB7EADC0D62CB762350689F751F19E6389284C97A5163CAD892E9A7043 │ │ │ │ +AFEC5A36E7D86F5EE345576F3AE6927C6F5B2A095817E7796AB8CDFE0CECB764 │ │ │ │ +1D3459669942B17D3825972CAC8ABE85D65653F80D780A1DD8CE08BC9C7DFDA2 │ │ │ │ +C9F2AB7C6CEB4FE5A158ADCFDBCD6B4F3C9CE40724AE4FAE30F0C406B5CE2F7D │ │ │ │ +64487C640627136AD6FBDD1DB07602D6898F36B41F3F05E8D372458B8B1DC1CB │ │ │ │ +8931B0B6AA5B9301DF1AD61A1DF72E6E1E9367DDB31A278C8FB7D8CAF5B0F397 │ │ │ │ +0F36CD8D13B3C2E65B5EFBAE8124826EBFE1AB2F2774E3AF8C5A15513E552173 │ │ │ │ +AB61A24BD189EF65413EB261484556C37471697B37B76A93EE13D66B9391CA99 │ │ │ │ +8249134A33B4D675F994F30428B52B3907F4A97FB4D2B3C070180B50C16179AE │ │ │ │ +03DF9709FF1DA296703240F859F20E991422B38AB0D364FED870A0059BC9601E │ │ │ │ +37D09EEE73271CD255F8DF03C6CB4B41037FC77131835E0CEC55F01E2A34318B │ │ │ │ +7BF1F13A7997335A19249102A48BE6579F9CE29482F18FF1C32793B52B6C6550 │ │ │ │ +8403DBD0D9235174A5AAC21AB9714B6F2718BE7E558D59AB96B2EDEBA3047BA3 │ │ │ │ +73CE874904C5DB61A19C3C41057220A74199972C0E8E8BE2CCAC8B15A421A9BE │ │ │ │ +ACD4C3FFFC6CCCCA140CD7A07CC47946CFCAECB183BCFAF3FAC46A0164E5E410 │ │ │ │ +27D6739A041B24D30FDF1EFB5E60F9BD968B9C06AB87A979278981AA3CDFE761 │ │ │ │ +E9CB6D81A34E204E27E0835614980663D7D88B4AA2BCEA84EABB29A85D2CF3B9 │ │ │ │ +2CAB233D7D765962863297472FE59D410F690493E7A06A5B11939F594B2947B5 │ │ │ │ +0A4A95FD73E205FF5D3ACEE599C1968206A04B15BF321636ECED3F6FA3D7B6BE │ │ │ │ +F2DCBF81FAD140D932E3BEEAAB4A904B7AD7A3330063E3A146799A21D51A6A43 │ │ │ │ +61C204C9495C00B6E65982931E573CE70161B00A96963CC8F2B237F92659B2C4 │ │ │ │ +AC9A4EEC2CA784D1A7C53172A7280B963FDE5063A5BF53BC65CDD985EADBA532 │ │ │ │ +100E33D434E97F193B4A168CDF57CDBDAB70BA8BA707CDAF8E3B5B06C15A4A8E │ │ │ │ +E148829B5D559408929CC30F5DCBFB983AB5BCD5C063821AAC7CE0D0EE772D17 │ │ │ │ +04C9AC22B840E335139BD3F0C6BDFAA2839921B39253DB1FE4D6C1F0B862CEA6 │ │ │ │ +3C0A7280C8C8734EE8158C254A4D2ED7C77A3F9CFDC1019DBA77BDBD3A5F3FD6 │ │ │ │ +97940A52B22AE14AEA235A735D9B7D9BB3D68F91D4F13604D2EE90899BAE2F33 │ │ │ │ +14FDFED94112DCF0C53E2E4C25BA5F884A08844400816621B1E7E9D9AE9AA465 │ │ │ │ +351FD44C2F86213EB52F813F6F89B52DB4745733BCDA6392CE950C940B1CAA8D │ │ │ │ +0F13FD442E1D1593387013FC3F0C95626A6FF458CEC9C7EE0404A95DB1D1B26A │ │ │ │ +87415D6451E773F691A58AC3F3B16D909846C03D63B115C1633847320BD84C3C │ │ │ │ +C4C91300477F71E9108427F24B312C521B7E90AA5592C581B842E4E78D8B0B6C │ │ │ │ +C04CADD279FBDD1AEB32E0E23F0117DE9E9D5CE1D2A339A99761D38E5F27EE36 │ │ │ │ +F3759600B8F001B2D2FF625AE52699F16700554BB5F6E0D412D0578DE14F2489 │ │ │ │ +01D34F93AC70092796FB475B7DE4EE9E194B42E532592376A74B70FF650B81C4 │ │ │ │ +CECF7DD5957A24363D2F14EA327438B0322672AB2FB58E2FE05D8E06F2C4307A │ │ │ │ +F2F4C5C241D50AEBCD0C89D27BFA3AC84E1EAF01A345868FC98B71FA66A36A94 │ │ │ │ +14D4C43692A3125554FD4CFD338A67FA9E720D2124947323B7A1353D433D6F61 │ │ │ │ +741EB33A12D951DC1952391061131EF7F61DFA4D386E0ECC42C68BF876E5ED9E │ │ │ │ +85685229A1BA061EF85F89F09B25F78633320DDEFA749BE6B78F7B476D2625B8 │ │ │ │ +00DD6FBE43A473D59D351D979D3E1F2609DD571D5514D703516AF1959B5E0904 │ │ │ │ +41F3537E152408B9F9725E73CCF1AD7EE0174200848D2229CBD4E565B60801DD │ │ │ │ +29D710B69B23B5C88892A77DEFBA41EA5D802D69B8EE4DD3F9D64814B58D5899 │ │ │ │ +18B0D3D46E8E8F80446B72821F52F92BB618085B3EAEB5A1D01963A81F309907 │ │ │ │ +43F793893791296D994E7452E33FB2A619658D2E18BE8C23FF1DD976970FE26E │ │ │ │ +F282B99A33F94D17E43B58F98FDEA329FAFF2D0548061C5610C5FF8F8BD41B52 │ │ │ │ +7EB6D097A7146D5FFE884A7582DBFE37036F5DBCF09509B729A0E375A3DDB880 │ │ │ │ +200DDDE8428C8FB0ADE147112E1E0CD2CAECF7D3D22A3C228C627FCDE73CF1FE │ │ │ │ +13D74BE91406754600BECB2185ED5DAC77C9B5A9DBCD4829D5025DE9E2E0AFE5 │ │ │ │ +8F0A6E9EE05214944FC793E8741B086053D5345865E874C3DA4DB9571F4B10D2 │ │ │ │ +4AEC3CDC2D79709B31F1063F7CB477CF99AB1536A6158FE0C164BC7D3CAC875F │ │ │ │ +3B157CA3A3E7090688E45FD346E098445D5299FAB049AC7A9A1857A8641549A5 │ │ │ │ +0C3E9A55C016A7FD63A58B7E7BB9F878C79B5DFF1EC3AB6001D55D605D3E88C5 │ │ │ │ +60A47D333F58A4BAD99E3483EB5FF9BDDB597B8E17AE46460D022FF9518D24CE │ │ │ │ +7CEBBCB40E2CACD7739A189579F76B3D6F399E0A66E8156796AEC27E3C523CCF │ │ │ │ +FEA81B813D29B9514411D718242C583BFE77F521CC75120E398F611E68FC08C8 │ │ │ │ +89267F54EF9CE0C63338837ABF995BCC0E3B46FB3FF5EB2A29A8E46778D6B086 │ │ │ │ +8CA08779877D1CB81510CBCAC0D3A8ECFD7FFCEB2226A13142A9600F696DE0A9 │ │ │ │ +E341A698BE43B4D719A864E2AD13AE6CCD1A3B32B85F617405509545C5D09760 │ │ │ │ +8A0039C63A382C376649157180B5C26B1A73FAD1D9E486CD0246A25DF13B306E │ │ │ │ +642C0441412166CD24796C72147509AED41346E6DB535CE3718AD32A0D57A21B │ │ │ │ +90FF457F76A8B84EABBF083B41D466B40E7A3997BDDF9955866B5BC8E4267BD8 │ │ │ │ +92D944A518602215B55AB6C91684DBB4A82D55D56C9B7CD46BEB2C6D7D99CCFA │ │ │ │ +6F0482D2A7202707AB978864F83E1DCA2B89EEBC9941274EA98251F35C60C018 │ │ │ │ +6443712C97DA76FFC048A8A16F5D25BF2E00BFBB643FB4D6801086E6889477F1 │ │ │ │ +5EEA40E82D72D61A684FDA3830A7B1578EB1DEE8520BCE5C02B2CA775923120C │ │ │ │ +BF5F561E004C329E8E264A5D93DE954223E074CCD3CF14B1CD8CA001073486CC │ │ │ │ +B7975A537AF1D67826D162625BC6FB3D13C3E5293C2FC773D10F803B9EE0A8B5 │ │ │ │ +2E5F37C7DB61BFF31305334A5256D743F40BCA1A5469760C0B19989E03CB4851 │ │ │ │ +F4E2C5F6A180D0F9BBDA2B786FBE2861BE9BD3D7E282CDFD37DB1010FC194F22 │ │ │ │ +92D4C0D31240A10F4D68BD6C363F32C388C33B1B2E4F505A91E0F7042EE71319 │ │ │ │ +4218DD0FB882BB91CBD3FFB1EBBF0C3E801B716950A9BF7F4212CF16A61CBC94 │ │ │ │ +31316944286EB21FFEE295103034A9E0CD4A016A153B39779E10ED3742E73DE6 │ │ │ │ +B32E58EC6B78909A6C7E489A2AF26F81F46BAE063928F59E786D8B2A2996D77A │ │ │ │ +F9EEBDA6AC861146F56411272ED1B12DA7AFAF420B93BD96CA4BA686E469EDE3 │ │ │ │ +9CC9152AF0DD72B03034E79EA6682919D580C24248A7268AD1F05D58DAD8DF2F │ │ │ │ +1BF5A1CDD1B8D4BFCF84539D8DBEF196344BB39AD3665B8A6E483B55C3AC8C48 │ │ │ │ +C125A546521987CF32916013282FC84BEBA6AC9D4FBC8ECC2B4170922814CDB2 │ │ │ │ +C08445C545CCB4C7FFAC5DDCF7E933CCF6B9506111FBDAF65EAD74D26384126F │ │ │ │ +69D29C84BE69B92298DAE8DB02F63667C12DAD81D7274DE9493E219926A729A6 │ │ │ │ +C2AAA0190182797E602172D0D1EF0C92362101AEA9DB999B6FBF3265D4F654A0 │ │ │ │ +0A56D0D0EA3468ADFDF71486BF2FD1E63ACB30D05A596127EE35BB7159D32E94 │ │ │ │ +D60288D1E9F1036F4DC5435141CEB90B8561498BBF137D85B2A96E5D1736CAF9 │ │ │ │ +CAF6057C31E8ADDFB238D23EDCDCAA026CC3FF0148B75CB11111FD6B1676B2D6 │ │ │ │ +EBCC95F10564A83199F6EBBEE04F3D58E4A41B0F5A852F9EF6FFAF4D22FB2E90 │ │ │ │ +45032FD8FD228A55650616AB14FEB1C08E4EEA1F593880CC7318D6FC9F1C6A68 │ │ │ │ +4A04521F80BACAA4744846ADE39CB7F1936E77C44B66DA2ECECAE57CB4C504D0 │ │ │ │ +D272992EA20C14C1D3061C1F7D20F4B8D5CA80DBE6899B432375A84FEF889CBC │ │ │ │ +FA4B4AD458BF13DE2DD62845DD95AF93390869EE21EA2EC6F64526EF16DEE980 │ │ │ │ +F3F49DFD0C2AC4DEADB6B31FDB14998CB4FAA9FC2098B8E84A81FE3E85B5BC72 │ │ │ │ +EF325A565AFFC1EB02E46227BD09831310E455095C3C47679819F17696A95494 │ │ │ │ +04845C6E4A98E559FCBD9CF03D566377524FD165B8D9D8683EA64997FDE31564 │ │ │ │ +8DB82ECF7E88B83D9C7A979FBC2917E3F98A145034B6B430CE30C2C1E5E04468 │ │ │ │ +8A370A82AFF2C9020815E2E1BE6830CD87718D9C65004FD684F0C65F2F4DA61D │ │ │ │ +A978AF289297571342E0DFAFB9A3538000AE5A7BA2F2DC02AE05BA522AB1695A │ │ │ │ +C3F9995F1C752853E53522140290FCC7C5CC5B58C1D68FE502FDDB4390D360F2 │ │ │ │ +C88F5E34429AF02F49139EF115BA6DD1EA99E59F468DF4A84BAF3CFBD49A69FF │ │ │ │ +0FBC5F8B998945AE47564231FBE01B1090B2BAB1ADD9C574682E9EA67353E856 │ │ │ │ +39374C40C301C201091401A3C6DCACEFBA7C0926556E64CB5C846FA64F10096A │ │ │ │ +97F0FDCC2977AABA6B71974D75FFCE76C597D231A971C3575732A858C44E8CA3 │ │ │ │ +DBCEC3B0D242FA15D89618638E65CDC60D48C630680A96AA81C877A06BC487C8 │ │ │ │ +54AD4599E771D6C9C5A7E09A4303C6709CDFFDB179E377F1BBD2A222817ABF83 │ │ │ │ +5D04632D3D0D4721E9C97DBAC9225F091A5C95C7940ECF4870052104182B4932 │ │ │ │ +1BDBB8F4E4EB7C18AA4DA7D509ADF32B0D201542BD6AA032A3829CFB0B1C8589 │ │ │ │ +5B8E132938E792DBF379681317DECDFC53A3D21C3D22D195AA6EEF25E6FC9CE0 │ │ │ │ +4E7AEA2C7EED8C730E9B28C0DDFB5C67CD850B4CCC216486C599018F454B928E │ │ │ │ +1E4B7B1CB3D6D0708B9F70BFDBEB975960C5C8CA5E5103157754B2F6AF47D2DA │ │ │ │ +384748F16C28A4B6DFE6AE0C4C28A05E66B39A764EBADC0611CCF5D700E86BD6 │ │ │ │ +883E8E2E19346BCC5B532F9B24159EDD3FA6BCA703A86BA19D8C7201576044BC │ │ │ │ +C8B1F35D526BD3AC714E6A847254763C9C7090443EF541CB453E4F4D467952AB │ │ │ │ +A8076B1FDA09F4361E2A2E423B5202871D69E33482D3DE5FBA0D5A2629483A9C │ │ │ │ +8334DBD30B93F098AF2CB4EDC02FBBF30802BFE0D06BA9321E3FBFEB4FFD9907 │ │ │ │ +91090ACF34496997A259F033EAD05C557B45392EF2D73918686B620CAD2DA2AC │ │ │ │ +DC099EE4BDA64E2A59EB9C7E7D98057E1A627520DFDC60D0ADB18847CE0EA9DD │ │ │ │ +41166F9C1F9B103E2AFFA0C4D4E970360FEC86249DCA372CFBF8B56AC66813CF │ │ │ │ +F57003A3FDD5CD0A3AFDA7B6B43046AB2E3E68B23DBD076E76F15E2034D38FA9 │ │ │ │ +DF123C5F4851059B4FA80BDC178A00D9F7FB7D4BEABE11A083C7C028187C5F0A │ │ │ │ +43CD5683E1CA0CDD671A9F8C3FE4E9B00ABC387BEB353D374B2EB9B5C28DD6A1 │ │ │ │ +89304A5B5B7E2FF83B7D9E7D7244104267F6B02C7546A9BFBB1CE433B567C0F6 │ │ │ │ +351FC1E1AA0F94A42A312CBC8BA58C5F06ADDD9B7F3B09C9D7D42D6E4BDF7E3B │ │ │ │ +FE1BE2CC6F1ACDD880808441B460D74F3F341E120F8DE4DF066F8C9B19AE4E9C │ │ │ │ +8430237B22CF12ED046B8C5DA5939BFA435FE5C032FC2C1B82E8E7A39C138EBA │ │ │ │ +D48833DA8E03CE1D9C8659A7B70C17F3DB11D6A419CA97EA27EF2199D4305F37 │ │ │ │ +2C5E402321103BC461E387148954E4DC0D727033AE0CBDB41BEC800FAB77BF39 │ │ │ │ +4DEDD6F407780D7CEE15178998BF927C837A556DC04CC450BB607EB5A5808A69 │ │ │ │ +C2AB7BF689DA96542A817E0C7AFBFBAA1C8ECD4C1C42F264818348023EF6C97F │ │ │ │ +3F543219B0FBB90221C0204717715DC799E9C34C735DB15FD0280121EBC0491E │ │ │ │ +FB18A38229E40CE6D6867EB024A3C93759AC62B1AE4EC1F481172CE536C70879 │ │ │ │ +478F840A53CD43B74A38D0CA538F7F2BC0E047159D10278FE033D3F711AD23F2 │ │ │ │ +4674F8522010959775C0896BF93DB576176EE13D922FFECEE548CFF777875BC3 │ │ │ │ +3F5ED0617830734B0EB13259E92DA5B5EDF8C5DB2B7B2C1DC90488E9B0E0A983 │ │ │ │ +AF06FCF09E3749698581691451D5781C204BA4B5A8C4AD143324FA8CDEB9AFD2 │ │ │ │ +ABCC8F39436B8B6FA12707B6C420582C40FC704D2326CFC16568F6367AA7948B │ │ │ │ +DAA9332C63418507B85720B951BC23FF235F12998E3379AAC1381C9FF527A6FE │ │ │ │ +142EDA32968CC52F0FEAC971134B91B84B926A530B9D6A1DE7D570380EA9F813 │ │ │ │ +08D4C0891E38D7567F58FBC2E99A00C387597F821D4F391F8C7456E4A3189529 │ │ │ │ +B996B20B81A74E70FAACF264F4B5DCCE4E2CE34F96839391EC2B64259717D2F6 │ │ │ │ +31EA2B8F0D2636FF786A958042B9B5C6DC18D9800ACB61BD35610617C6A5FF1C │ │ │ │ +C748045E5F2794240D81775B38134499CB68A995DCE80D40CF6D90C4A0497199 │ │ │ │ +56B5B82C2FA86F9A61A73DBAE831DDA2D1A8F43D57C3DF57BBDC899AD6816679 │ │ │ │ +95D69E391F30F43BA29FDFABF582E92AB2628904FD8E1DDDD078A3CEC019E53B │ │ │ │ +CC06FF61E483CE73C1F652D0802CF4CCDAFEEED54A89DE5186930F5FFA5B7481 │ │ │ │ +050ED943785E584DDBAE82550015F0735F2630005F8FFD0C0438ED609317BE62 │ │ │ │ +7A0932B457C6B5E89DF5EF60CEADDA569691DCD3FB6794BB000AFAE11AA7A63F │ │ │ │ +B394FC6360E168A0562E74D36830782D4D2A06F017DBB7878FE32814379F257B │ │ │ │ +11BA5D6264DF4355E838A1ABDCD5126A86F13510EAE883E41BE6EE87753C2628 │ │ │ │ +A08632CD1A0FAF3858BAC14A805848349187F63362D81295D55B4DE9E20A9AA2 │ │ │ │ +3560EBB0AD7480EFAD3D73EDB445F4705BE08FF81D78C0BBFB59E35FE2229EEA │ │ │ │ +E03F7032CFB6033D9B439BF1E56AC3C4ED4B70DCE7E33193B52456FE51395886 │ │ │ │ +45FBCE9751827A1A36B33C06A6AFBA76C8A2BB6CBE7944DD116F365631795D70 │ │ │ │ +B8D20C4E32A24947859EB46955A3E6A39934D4975058700EB1A2B9B338909108 │ │ │ │ +A5EBE6CE4CB47FF16338E67F7F77032B52504473185996076C2E1671ACE5CF31 │ │ │ │ +7D1554A1934F0F791765A820DC47B799F0E6909423BCCFE8F149C81A35D65A97 │ │ │ │ +AD0895EC4C50F45E8D995FF74A3589AB493D167327E4AEA1900C37838883904A │ │ │ │ +3FF16CFFC673DB8EA6BC82D98C66971461CBE2C99F7D68031AFC87AECFE21948 │ │ │ │ +87C1D8D7A9709E3678C0A3E9DB210234E91FC27B95B644F7A4463B9E0D71535C │ │ │ │ +2D9A639D14A905661F73F20F570F71CF7FCB67D551A1BC9A05CA52FA5C51062D │ │ │ │ +BDB316FF77290AD201614A1F802EE70DED782D7D473033FBD3415052A00F5FD4 │ │ │ │ +32271791872AA42F4C07877553AA9C2178D56640882B5265352AFDFF55F149C8 │ │ │ │ +C5A6E98C951B1C89DA62CAF764B70C9866FCC90FF8F29177605D765DBBD6D55D │ │ │ │ +F03D8892B39CF8A00948D8B0F1C2B364995D86B53700C94CE360D97BB6995639 │ │ │ │ +5A8D8991D6F794A121E207EA550D461DE3CC27631805ED826E4394B62C854CC9 │ │ │ │ +08D7B87FA853F5C032CE7548F62AA10EE86DA80F4488BB56027094CBE511B09F │ │ │ │ +3046B89D394E3F33A750AD3845BE58FA556EFC0EDBF77308339FAAB3A8E08C89 │ │ │ │ +1C79289B1544FFF04C2278CCEFE04797D177F3C3BEE490D5AFDAC11F36C7B6BE │ │ │ │ +E94049712232004BBD3ECF65187CCF │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3109,22 +3098,22 @@ │ │ │ │ @start /Fa 136[39 39 1[39 39 39 1[39 39 39 39 39 2[39 │ │ │ │ 39 39 39 39 39 39 39 39 32[39 17[39 46[{}21 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 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 /Fc 205[30 │ │ │ │ 30 49[{}2 49.8132 /CMR6 rf /Fd 205[35 35 49[{}2 66.4176 │ │ │ │ -/CMR8 rf /Fe 134[51 2[51 54 38 38 38 2[49 54 81 27 51 │ │ │ │ -1[27 54 49 30 43 1[43 54 49 9[100 6[66 5[50 3[64 2[70 │ │ │ │ -69 73 7[49 4[49 1[49 1[49 3[27 44[{}31 99.6264 /CMR12 │ │ │ │ -rf /Ff 165[99 6[90 2[110 121 126 1[97 6[106 1[117 1[122 │ │ │ │ -65[{}9 143.462 /CMBX12 rf /Fg 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 │ │ │ │ +/CMR8 rf /Fe 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 │ │ │ │ +11[49 49 1[49 1[49 3[27 44[{}29 99.6264 /CMR12 rf /Ff │ │ │ │ +165[99 6[90 2[110 121 126 1[97 6[106 1[117 1[122 65[{}9 │ │ │ │ +143.462 /CMBX12 rf /Fg 133[58 70 2[70 1[51 52 51 1[73 │ │ │ │ +66 73 1[36 70 1[36 73 66 40 58 73 58 73 66 13[73 6[83 │ │ │ │ +2[47 3[90 2[94 99 14[66 3[36 43 45[{}29 143.462 /CMR17 │ │ │ │ +rf end │ │ │ │ %%EndProlog │ │ │ │ %%BeginSetup │ │ │ │ %%Feature: *Resolution 600dpi │ │ │ │ TeXDict begin │ │ │ │ %%BeginPaperSize: Letter │ │ │ │ /setpagedevice where │ │ │ │ { pop << /PageSize [612 792] >> setpagedevice } │ │ │ │ @@ -3136,16 +3125,16 @@ │ │ │ │ %%Page: 1 1 │ │ │ │ TeXDict begin 1 0 bop 109 1940 a Fg(In)l(tegrating)43 │ │ │ │ b(the)g Ff(SPOOLES)h Fg(2.2)e(Sparse)i(Linear)f(Algebra)g(Library)326 │ │ │ │ 2123 y(in)l(to)g(the)h Ff(LANCZOS)e Fg(Blo)t(c)l(k-shifted)h(Lanczos)g │ │ │ │ (Eigensolv)l(er)950 2513 y Fe(Clev)m(e)35 b(Ashcraft)737 │ │ │ │ 2629 y(Bo)s(eing)d(Phan)m(tom)i(W)-8 b(orks)1753 2593 │ │ │ │ y Fd(1)2334 2513 y Fe(Jim)33 b(P)m(atterson)2107 2629 │ │ │ │ -y(Bo)s(eing)f(Phan)m(tom)i(W)-8 b(orks)3123 2593 y Fd(2)1566 │ │ │ │ -2891 y Fe(F)g(ebruary)33 b(29,)f(2024)104 4919 y Fc(1)138 │ │ │ │ +y(Bo)s(eing)f(Phan)m(tom)i(W)-8 b(orks)3123 2593 y Fd(2)1610 │ │ │ │ +2891 y Fe(Octob)s(er)33 b(4,)f(2025)104 4919 y Fc(1)138 │ │ │ │ 4951 y Fb(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 Fa │ │ │ │ (cleve.ashcraft@boeing.com)p Fb(.)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 │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -1,11 +1,11 @@ │ │ │ │ │ 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 │ │ │ │ │ - February 29, 2024 │ │ │ │ │ + October 4, 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. │ │ ├── ./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 2024.02.29:1857 │ │ │ │ +%DVIPSSource: TeX output 2025.10.04:1733 │ │ │ │ %%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 │ │ │ │ @@ -1760,23 +1760,23 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 50 /two put │ │ │ │ dup 52 /four put │ │ │ │ -dup 57 /nine put │ │ │ │ +dup 53 /five put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 70 /F put │ │ │ │ -dup 97 /a put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ +dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ -dup 117 /u put │ │ │ │ -dup 121 /y put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1950,95 +1950,85 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA647CD0E2539DFAD9604486DCCFA49 │ │ │ │ -AC96130D106A8F8387633622C3809400D6E8FF9D60877C743502E4D211CEBF62 │ │ │ │ -9A6F91045C22D5D20C5FF677D89983D02E5EE26C71A9EAE0E7C52465DA5A149A │ │ │ │ -9B731C27EC8366BC3E841C0CAE49A33DE164A857365B17B09CAD121C47A980CB │ │ │ │ -C75E1030F6C394EDB46C54B46880D2344127B903FB22684C9CAACE6053DC3BFA │ │ │ │ -4E47C565ECAF19C4295A11BD68CA6D45B5738B932BB3690A8C712904C49C1636 │ │ │ │ -A7702075F2FEA8DB3EB3A3C1216BB769DD0BAF4507A18E3052F2C846B0797933 │ │ │ │ -8CE9BB2DB5DFADAF1B0FC3A22BAB82A0D5D290F7AD950013CFA465BE11C1076D │ │ │ │ -5833FF92321FBF90D9229D3BA09DD18EEC44D9FCF8FCF63CC09D2977BFA798B6 │ │ │ │ -47FB047EA6AF69C7DE570176F5B6C0FED74DEDBF7DDF49550DD84BA14AC09423 │ │ │ │ -F70D5B14F0F8588F1E2FFE0DFE0760E77A9E39DEDAC5C5AE3760722C029B916D │ │ │ │ -96A2A7D1DD6A61F90B4B9806314A668EB7A0E107A3527310A240490453CC18D7 │ │ │ │ -3793B4CF3CE13EA332E7F5C2BACF85AC75FE84693B966BB0F6FB9A179A331C4E │ │ │ │ -55E9EF30E2734E44A88E053CD5E650D7E529E94CB7F8B733E68315ACAC5BEFC5 │ │ │ │ -3FE4F585F875310267865679AB381125C31E9AEB7226DC9F18DA80A9DE2F38A4 │ │ │ │ -51B8F9D5B2FBA0F50D53AE6212AFE41466A594F7A303B4E82F1493C0B8D65756 │ │ │ │ -BE6AF2931E5ADA5CE7D51CB5B1EC916C6C6D674808939331CA66F8181DD2B112 │ │ │ │ -1A12198CCCB6BBF1D40C803E794B65241ACE1E0D30CCA1C6F2D3E1415B98726B │ │ │ │ -9BA303BE2C4C276108CC78C093F1CC85CA454CC38535D1DEBFA341D84E8A5DDF │ │ │ │ -D53D8DD0F4A812B5BA63871BEB3BCE93FBC77AD395914E2CD757546C2BE2D641 │ │ │ │ -FDB12258E1E1D10E1B963EABB265F2C8B2547D48963E1AD3B223B666B46915A1 │ │ │ │ -157F5EA0AB8D8411C07AA2EB5D0EF1A1BA6D81C47473A3D3D6287104C7BF61F8 │ │ │ │ -3BDB64995DE96A65BF2B7288C51ADAA3D373A95C40D5240C5FF397551554AA9E │ │ │ │ -C89C7E45AA7738503CB058EF6AD5052CC78E4445C810C250BF25394B8D7DE82E │ │ │ │ -315C9CCD6E1E9150EC79EE0F354C668AE199C1AFF39C67337A86CB932E8D64E9 │ │ │ │ -389FF3CC08B538492DEED017686DBB9BDEA30FE67FB4EBDB3627C16FD15F243A │ │ │ │ -7FDEB310EFC940E57726E94340472F2C452815927ADE21578C959890216BE504 │ │ │ │ -225BE4B4D2E3B19F5E06B5A0B25AF168C3A2B26F599A829F89C16BD2026E8CC9 │ │ │ │ -8FB3CBB830C3E36C099071A70D0B8834FF2C17364EB50D5C71440CC7BFE02321 │ │ │ │ -8C6ECAC2F7EC1BE39077DB0E8B2B251626A71FD038EB2CF1FC254D98C1535CAA │ │ │ │ -A8C987BC266482BD860A333048E1EDB3DD40A6ECD6DA0088AD9B9640202D89AA │ │ │ │ -0BB9A0ADF63491E67F2E97E35942D77E59B9B8AB0ED28B022EE5CD3449FC5B7A │ │ │ │ -19E38845B488F97D155C4312885E29537EAE97719C65845663480CE79DE8F037 │ │ │ │ -68995C0928FE8AFBEE554F01381EE5187578DF5D2542F26F66A599EE8ECC1F68 │ │ │ │ -FBADF3C2BA968C3CEB86675CF9A6CFD736E1422800D270417D497903DE87F2AE │ │ │ │ -938E39E120E9D3079F512E545E0E2616B84E81FE41392184F96818A7C86BF541 │ │ │ │ -F2E67C48CA56DA838C9FA0FAD538073B9F26319140D1F80EEEBCA190DE660A31 │ │ │ │ -457CAC16E92F87449A3734F9EA751588514865B58DC073658C8A857B5398AAC7 │ │ │ │ -3DC11E069996EF74A3189A07630D5DB87C5E028CD193C086B4D0E8BABC4F2393 │ │ │ │ -235EC96091B16C4A6D97DA1BD30A2D2E71F55869223CA66AD12448B668685F6E │ │ │ │ -06E7888D7F20045C662C4F7994CC7E1CE9AAC33A026716AA0551DF12343F0E22 │ │ │ │ -6E9F4B21C90406CC4997601194EF37A973221D1F4D73DD5666BD297F621C92AA │ │ │ │ -E3F698BC1146ADE754C4120EDF5B3E974D75A237E51DB49D52CD6CC7C9E8BD2D │ │ │ │ -E6849DF8F4DBA86C655D0C57CB54836C8A841C1D814F6B493F96ADBFCAD78D3B │ │ │ │ -430C58EF169950851B6A0B46411488B1A6F6974832787A24C0CDDBE27996EFB1 │ │ │ │ -DB341FA34B1DC6238D978D1E1D34AF3FB375ED6DA9C88699F195C88A54622F7C │ │ │ │ -36DAFC663D85660E756733A7E22F20C6A5D91F06087CAD10F7217BD33F343DC6 │ │ │ │ -F5EB9F16FE763672243EE6AE5CB6063A1D64670E1C059DD52134974E27D9D89C │ │ │ │ -BC658FCD814F20703D610C978FDCD6E2AEA31C18D1A310F215B28199F66C87DB │ │ │ │ -3B23980A393E1DD77AFA3045EDB6942505F3CF6204315A14E5B6BF2E96F3BB1F │ │ │ │ -628D24AC1893BC7DAEF3AA63F2116837F31DB90D872CBD9E5C48BCDEE781D20D │ │ │ │ -C6553D2D15F4E8438A9D1C7CEE1B72BD6AA08DC0AFEAF8B4DC1038707EE4A1BF │ │ │ │ -3D84460E60AF90F55002C1D8EBF0700F7EC3EFC944BEA78D0E0536F3AA6D9A84 │ │ │ │ -604A781AC5ACFEB7E681365315EE11E991C03DA431B65B332AD8F83F6F3AE66C │ │ │ │ -1BF434D3793FB5BCC44E44ACFF2855C2770C4AC678C6ACD6EB071974ACF1AE37 │ │ │ │ -D02C1736C62CC205A2F3488448527EFFA379613A8E6A6D134F4BFBAE6127304D │ │ │ │ -576C900A458E32CD42A4674415E03D8EB5742E71B854B3EDFD271AA214436544 │ │ │ │ -D1BCFD52F439298847E1FA258E5D38384FC85BC4EDC6F9E4431621CF763B137B │ │ │ │ -22DB6E3268B3F78881D55EA7C52ABF23FB73C152B06B708084FE1B00CFE72D9D │ │ │ │ -57B62AEE912E63BBD89D4D13CE896735454F1A16C3D9FB6CDF142CCA9F1C0242 │ │ │ │ -46F62109DF30667DA327F7CF6DC19B880C860C69080597FFCB1793313E202D4F │ │ │ │ -120A7C6B052C2EB7597B71B0985D24FDD2D3918393BF720E762C5DBBC2BB1E91 │ │ │ │ -B04560364EFE5B16EB068E0560FB932E0C617CFB95A166388E99AC4CB020F5BC │ │ │ │ -E24BB77352D7C3B21C37D404051A70FFFA0F726C35501A1FBB411F832CE46A2E │ │ │ │ -B424E26BD4 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFD8CDE285A2827F4659E339460ABEF319FE44D7A91E93CA309E9266E03DA │ │ │ │ +735F5DEF3920C01189BB63C2BD7ED0B92EABB481F123641477CDCCAB9751FB7B │ │ │ │ +F67DA7CE6EB134BC10D0228562BA5A6BFE6940907EF030ABF9EC4A8A0DFEF73D │ │ │ │ +3289E8CB4DC37694F5A656A935D92C72B3D82B012F578A27711B161DE9652ADC │ │ │ │ +71C51E743E4E9A7C6CF6FF16C5D65C1F60954C0858B48FAAC4FBB21988E2A934 │ │ │ │ +AC50C097DDF42C416359647D79F830E1430FB9BB803451A6732D1B5CAB817C1B │ │ │ │ +673B3077D9A180F184267E9990C087BCDEBC8EB8B889934DD0EB63C2EBCED4A3 │ │ │ │ +83A0D6A365412CFF610EF7BD5F82B02AA293F1D2F868768CDE9B801C929B4A38 │ │ │ │ +64E20C70BC4041F837AD15423517F7336A067D140A2C7906DC5D45885FFB3B69 │ │ │ │ +724E5B9B138BD15A9359EB25D14BC4193E529D1A49FEB0DC1015BF94CEBBD5E0 │ │ │ │ +EA148B185C53E12BD9FA6DBC097D789A73E832F02F55080D8ED6087F5952EA78 │ │ │ │ +250A4C65CE4C4013554A031446D2092D813C4CB1A605D97A40CF867F656ECD1C │ │ │ │ +C23F80230AD1E449AA8B4007134F71156719206441D92B1A6DD25101ABF69F70 │ │ │ │ +538CCCE216376E1BD6E423986BD4E83B1975B15092D4E19F885672F9E7C02485 │ │ │ │ +E02DA0F4243D324A5983D1D46444E5F6573F699E4F2A3395EF0EB7808B7D4D62 │ │ │ │ +690FD033E93AA553082273636503DA4BBBBFA6D127CE10424DD1DDF4F879305C │ │ │ │ +14F64180E7851D091B3220DFC70CAA44716B8F7F0C6FBEDB167801DED77F9E69 │ │ │ │ +E9B31CD2D8044DB946E511162976C34DE27F2BB974B70509005562A0A21317B7 │ │ │ │ +46D826A31C476C8F9A778F941FF5956BA2D765B1AD0AC4BC7AE1CD8A2A81F039 │ │ │ │ +06EB13EBD099BBDB2EBDB54D459C288EA69FB0018CE9255BBFB08C1F90FF30BD │ │ │ │ +C971DA7FDB193281B8F967F21AB42F13F36085AC9EC0D6B6B448C8F289B0AD70 │ │ │ │ +DB521A4755ECF9CA594741E5C674220C21C265EF3BAE594197B00048C8D4DB73 │ │ │ │ +4AC47B6A86EAC7EECD042C8E23C347F8C9FCB870473C1FBD91C298174BCBF1A9 │ │ │ │ +7B366C570A9A04A433495FBC9FD0FFC22A0E8181424C0F038ED97AD5054B10CC │ │ │ │ +1CD5BA0719DD0B4F4F18932AE87FF8B8C1CF0C7482B7847049761505DCD85146 │ │ │ │ +4EE5CB53993A9449CD05233E961BD49AE92D308E2065D6C6BF038538039AA56A │ │ │ │ +C59D424BE3175427337E16892D3920598D518423E145C6B2DD3881F338845F0D │ │ │ │ +16C47AA0D9C2D6DE99C6A302D567ACD6F98BF38223F1890E099C8F93348FFDAA │ │ │ │ +C2D3440187C8FED87C1A891EF11EFA7168EC47F72AF8BC5BE1B88B1084E704F5 │ │ │ │ +82099F1A79E556D94CC38851C97DC3864945A7470F1389BCF608BADAE45B236D │ │ │ │ +2934A20FFBCF169BF84DF496B07E7F1D9002E62B030337642804403DF7E4B3FF │ │ │ │ +C5A421EE0033BA06C50A041FBFE8F81AFC145664E2976505EB14859CF0377EBA │ │ │ │ +EA604CF8BFB5F9ADB9A7ED56E6F0F919E791D57C7232241C892EAC3E55D2D03B │ │ │ │ +FF43B9DAB7B1D8C6588D6D3503F49E80121E52254431B308752A936E0B51124D │ │ │ │ +C7F23C316BA6FA73E6BC47EB9550003E1393C68360067C094C65C0DD17214FA0 │ │ │ │ +45FF0F9C3E0AE4C81093752D23EA95E163C98EC04873ECE3FB0882567329525C │ │ │ │ +0A3937B16CA72B5EB6D2DC10C1B485C0BA939587AFEBB6D837A40401C666BC1C │ │ │ │ +F3344FBAB3E48BEE18F3AF5CDB33BA63778D373A851333C8C34E2F35AB94E8B4 │ │ │ │ +FF7E62A92ED83B872894E0A17209E14CF61269204A35A4BC8C7EE4B16F19E91F │ │ │ │ +669C4EFCECB187F6C7FAF92B4E14E400C6B3C81679D4A7196D66DB1E897DDA42 │ │ │ │ +47CC2848B46D581A95EEF85AB528E8CDEEB275D1E1FE197A3A08D36406E2DADF │ │ │ │ +A87D817AF18B5525F89B7C2E584F4A1254A1FC71E749999A2152870631A69CB6 │ │ │ │ +666EBD6BB3366A598F6592040D0E82B9D866DF0A76C362E76C2804D108A0C148 │ │ │ │ +51F42E9E0ABD52CC2D02B156B63AFD03313AFC80EACC83DF9B59F05FD798951D │ │ │ │ +FCF5335636DFC6561910ACE0AEC47F74CFD302EB7421D28AAAC8FF82B7CE2B2A │ │ │ │ +340B8BCE09F57BFCBC77F91096D97A85726E68846398C8C9C8D3A65A252AE8FB │ │ │ │ +166750C244963BC61E2236BAAC529FABD6FC774550096374A8DB81B6AF1EA843 │ │ │ │ +27F671C0045D629E3734EF037447C4763514FD1C4AE858A494AFC23A64C82149 │ │ │ │ +F4C0A7023B3865B84FAC2DC88D1553DCEBA3D8FB5DBC1103123F6B8CB5B3A399 │ │ │ │ +B665B26B001BF1E4BFABE42BFF6B02D69FA88D5CBCA5A11D5B48CFB4EAE60558 │ │ │ │ +5FBE254AD3BE01761CD4995E766E172D768621223505FD6AA8F89FC042EB814C │ │ │ │ +34373DAEC4FAAF71C0752F814154C5299F751CE7E0F9C673D2E448D0204C214C │ │ │ │ +C04DC34671FBEF72350FFBA263662E86A0D3795E310153AAF4C8A2623E167E6E │ │ │ │ +1F13A9BA485D5DDFC451D691DBA7C49E20354A7AD79D89F7EDE24F0D5B48B27D │ │ │ │ +568D01EF2555504196C09841F5970D8CF6C5D47FFFCF18AE6B2A485342000AAD │ │ │ │ +1F922FBEF7C98E0965609C89240E7B131A59551F57CD5C92097FCE75F5D2778F │ │ │ │ +F9ACF43A3273551363442C8C539205903A835C744A4AA953545506081D3D231A │ │ │ │ +A140E01F280BC42A3C35EDAD5F6B8CE6E51C68E41CA813710864ED880FCE846C │ │ │ │ +1B66D27CC2DBCDC2B1B96A12490BD76D67A415D4A6595CD9B19D3104A83D2C82 │ │ │ │ +C46DCD2C027F0565EDB83E54FF99498194D3140E55E8EE65EBDEAC5409B5616A │ │ │ │ +73141DA2D581E300A6057F4301A02DD160AB3E55A116313525122D0608816AA8 │ │ │ │ +4712EEF3D6FE8C893DF37D │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -5005,15 +4995,15 @@ │ │ │ │ 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 │ │ │ │ -134[48 3[51 2[36 12[40 2[51 45 26[59 11[25 45 4[45 1[45 │ │ │ │ +139[35 1[36 2[45 9[40 1[40 51 18[71 20[25 4[45 45 1[45 │ │ │ │ 1[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 │ │ │ │ @@ -5150,23 +5140,23 @@ │ │ │ │ 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 1016 4 v │ │ │ │ -1197 w Fl(FrontMtx)29 b Ff(:)40 b Fh(DRAFT)30 b Ff(F)-8 │ │ │ │ -b(ebruary)31 b(29,)g(2024)p 2885 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 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fm(2)p 136 100 1057 4 v │ │ │ │ +1239 w Fl(FrontMtx)28 b Ff(:)40 b Fh(DRAFT)31 b Ff(Octob)s(er)f(4,)h │ │ │ │ +(2025)p 2844 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 │ │ │ │ %%%EndComments │ │ │ │ │ │ │ │ 0.5 setgray │ │ │ │ 25 0 75 75 rectfill │ │ │ │ @@ -5244,17 +5234,17 @@ │ │ │ │ b(ject,)36 b(but)d(it)i(do)s(es)f(not)g(mo)s(dify)f(the)h(ob)5 │ │ │ │ b(ject,)37 b(nor)c(do)s(es)h(it)g(o)m(wn)g(the)h(storage)g(for)f(the)g │ │ │ │ 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 1016 4 v 1197 100 a Fl(FrontMtx)28 │ │ │ │ -b Ff(:)41 b Fh(DRAFT)121 b Ff(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2838 100 V 1016 w Fm(3)137 399 y Fi(\210)45 b Fm(An)35 │ │ │ │ +TeXDict begin 3 2 bop 91 100 1057 4 v 1238 100 a Fl(FrontMtx)28 │ │ │ │ +b Ff(:)41 b Fh(DRAFT)121 b Ff(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2796 100 V 1057 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 │ │ │ │ @@ -5338,21 +5328,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 1016 4 v │ │ │ │ -1197 w Fl(FrontMtx)29 b Ff(:)40 b Fh(DRAFT)30 b Ff(F)-8 │ │ │ │ -b(ebruary)31 b(29,)g(2024)p 2885 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 1057 4 v │ │ │ │ +1239 w Fl(FrontMtx)28 b Ff(:)40 b Fh(DRAFT)31 b Ff(Octob)s(er)f(4,)h │ │ │ │ +(2025)p 2844 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 │ │ │ │ @@ -5410,17 +5400,17 @@ │ │ │ │ (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 1016 4 v 1197 100 a Fl(FrontMtx)28 │ │ │ │ -b Ff(:)41 b Fh(DRAFT)121 b Ff(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2838 100 V 1016 w Fm(5)137 399 y Fi(\210)45 b Fl(int)i(dataMode)28 │ │ │ │ +TeXDict begin 5 4 bop 91 100 1057 4 v 1238 100 a Fl(FrontMtx)28 │ │ │ │ +b Ff(:)41 b Fh(DRAFT)121 b Ff(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2796 100 V 1057 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 │ │ │ │ @@ -5477,21 +5467,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 1016 4 v │ │ │ │ -1197 w Fl(FrontMtx)29 b Ff(:)40 b Fh(DRAFT)30 b Ff(F)-8 │ │ │ │ -b(ebruary)31 b(29,)g(2024)p 2885 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 1057 4 v │ │ │ │ +1239 w Fl(FrontMtx)28 b Ff(:)40 b Fh(DRAFT)31 b Ff(Octob)s(er)f(4,)h │ │ │ │ +(2025)p 2844 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 │ │ │ │ @@ -5547,17 +5537,17 @@ │ │ │ │ (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 1016 4 v 1197 100 a Fl(FrontMtx)28 │ │ │ │ -b Ff(:)41 b Fh(DRAFT)121 b Ff(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2838 100 V 1016 w Fm(7)0 399 y Fb(1.2.1)112 b(Basic)38 │ │ │ │ +TeXDict begin 7 6 bop 91 100 1057 4 v 1238 100 a Fl(FrontMtx)28 │ │ │ │ +b Ff(:)41 b Fh(DRAFT)121 b Ff(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2796 100 V 1057 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) │ │ │ │ @@ -5616,76 +5606,75 @@ │ │ │ │ (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 1016 4 v │ │ │ │ -1197 w Fl(FrontMtx)29 b Ff(:)40 b Fh(DRAFT)30 b Ff(F)-8 │ │ │ │ -b(ebruary)31 b(29,)g(2024)p 2885 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(*frontmtx,)g(int)i(J,)1468 1013 │ │ │ │ -y(int)g(*pnD,)f(int)h(*pnL,)g(int)g(*pnU,)f(int)h(*pnbytes)e(\))j(;)227 │ │ │ │ -1166 y Fm(This)29 b(metho)s(d)h(\014lls)g(the)g(four)f(p)s(oin)m(ter)h │ │ │ │ -(argumen)m(ts)g(with)g(the)g(n)m(um)m(b)s(er)f(of)h(in)m(ternal)h(ro)m │ │ │ │ -(ws)f(and)f(columns,)227 1279 y(n)m(um)m(b)s(er)36 b(of)h(ro)m(ws)f(in) │ │ │ │ -h(the)g(lo)m(w)m(er)g(blo)s(c)m(k,)j(n)m(um)m(b)s(er)35 │ │ │ │ -b(of)i(columns)f(in)h(the)g(upp)s(er)d(blo)s(c)m(k,)39 │ │ │ │ -b(and)d(n)m(um)m(b)s(er)g(of)227 1392 y(b)m(ytes)31 b(for)f(a)h │ │ │ │ -Fl(Chv)f Fm(ob)5 b(ject)31 b(to)g(hold)f(the)g(fron)m(t.)41 │ │ │ │ -b(in)30 b(fron)m(t)h Fl(J)p Fm(.)227 1546 y Fh(Err)-5 │ │ │ │ -b(or)30 b(che)-5 b(cking:)38 b Fm(If)26 b Fl(frontmtx)d │ │ │ │ -Fm(is)j Fl(NULL)p Fm(,)f(or)h(if)g Fl(J)g Fm(is)f(not)i(in)e │ │ │ │ -Fl([0,nfront\))p Fm(,)g(or)g(if)h(an)m(y)h(of)f(the)g(four)f(p)s(oin)m │ │ │ │ -(ter)227 1659 y(argumen)m(ts)31 b(are)g(NULL,)f(an)h(error)f(message)h │ │ │ │ -(is)f(prin)m(ted)g(and)g(the)h(program)f(exits.)111 1853 │ │ │ │ -y(5.)46 b Fl(int)h(FrontMtx_frontSize)c(\()k(FrontMtx)f(*frontmtx,)f │ │ │ │ -(int)i(J)g(\))h(;)227 2006 y Fm(This)30 b(metho)s(d)g(returns)f(the)h │ │ │ │ -(n)m(um)m(b)s(er)f(of)i(in)m(ternal)g(ro)m(ws)f(and)g(columns)g(in)g │ │ │ │ -(fron)m(t)h Fl(J)p Fm(.)227 2160 y Fh(Err)-5 b(or)33 │ │ │ │ -b(che)-5 b(cking:)40 b Fm(If)29 b Fl(frontmtx)e Fm(or)i │ │ │ │ -Fl(frontsizesIV)d Fm(is)k Fl(NULL)p Fm(,)e(or)i(if)f │ │ │ │ -Fl(J)g Fm(is)g(not)h(in)f Fl([0,nfront\))p Fm(,)e(an)i(error)227 │ │ │ │ -2273 y(message)j(is)e(prin)m(ted)g(and)g(the)g(program)h(exits.)111 │ │ │ │ -2467 y(6.)46 b Fl(void)h(FrontMtx_setFrontSize)42 b(\()47 │ │ │ │ -b(FrontMtx)f(*frontmtx,)f(int)i(J,)g(int)g(size)g(\))g(;)227 │ │ │ │ -2621 y Fm(This)23 b(metho)s(d)f(sets)i(the)f(n)m(um)m(b)s(er)f(of)h(in) │ │ │ │ -m(ternal)h(ro)m(ws)f(and)g(columns)g(in)g(fron)m(t)g │ │ │ │ -Fl(J)g Fm(to)g(b)s(e)g Fl(size)p Fm(.)37 b(This)22 b(metho)s(d)227 │ │ │ │ -2733 y(is)37 b(used)e(during)g(factorizations)k(with)d(piv)m(oting)i │ │ │ │ -(enabled)e(since)h(w)m(e)g(cannot)g(tell)h(ahead)e(of)h(time)g(ho)m(w) │ │ │ │ -227 2846 y(man)m(y)31 b(ro)m(ws)f(and)g(columns)g(in)g(a)h(fron)m(t)f │ │ │ │ -(will)h(b)s(e)f(eliminated.)227 3000 y Fh(Err)-5 b(or)42 │ │ │ │ -b(che)-5 b(cking:)56 b Fm(If)38 b Fl(frontmtx)e Fm(or)j │ │ │ │ -Fl(frontsizesIV)c Fm(is)k Fl(NULL)p Fm(,)e(or)i(if)f │ │ │ │ -Fl(J)g Fm(is)h(not)f(in)h Fl([0,nfront\))p Fm(,)e(or)i(if)227 │ │ │ │ -3113 y Fl(size)24 b Fk(<)h Fm(0,)31 b(an)g(error)f(message)h(is)g(prin) │ │ │ │ -m(ted)e(and)h(the)h(program)f(exits.)111 3307 y(7.)46 │ │ │ │ -b Fl(void)h(FrontMtx_columnIndices)42 b(\()47 b(FrontMtx)f(*frontmtx,)f │ │ │ │ -(int)i(J,)1659 3420 y(int)g(*pncol,)f(int)h(**pindices)e(\))i(;)227 │ │ │ │ -3574 y Fm(This)32 b(metho)s(d)f(\014lls)h Fl(*pncol)f │ │ │ │ -Fm(with)h(the)g(n)m(um)m(b)s(er)f(of)i(columns)f(and)f │ │ │ │ -Fl(*pindices)f Fm(with)i(a)h(p)s(oin)m(ter)f(to)h(the)227 │ │ │ │ -3686 y(column)d(indices)h(for)f(fron)m(t)h Fl(J)p Fm(.)227 │ │ │ │ -3840 y Fh(Err)-5 b(or)40 b(che)-5 b(cking:)52 b Fm(If)36 │ │ │ │ -b Fl(frontmtx)p Fm(,)g Fl(pncol)f Fm(or)h Fl(pindices)e │ │ │ │ -Fm(is)j Fl(NULL)p Fm(,)e(or)h(if)h Fl(J)f Fm(is)g(not)h(in)f │ │ │ │ -Fl([0,nfront\))p Fm(,)f(an)227 3953 y(error)30 b(message)i(is)e(prin)m │ │ │ │ -(ted)g(and)g(the)g(program)h(exits.)111 4147 y(8.)46 │ │ │ │ -b Fl(void)h(FrontMtx_rowIndices)42 b(\()48 b(FrontMtx)d(*frontmtx,)g │ │ │ │ -(int)i(J,)1516 4260 y(int)g(*pnrow,)f(int)h(**pindices)e(\))i(;)227 │ │ │ │ -4414 y Fm(This)30 b(metho)s(d)f(\014lls)h Fl(*pnrow)f │ │ │ │ -Fm(with)h(the)g(n)m(um)m(b)s(er)f(of)h(ro)m(ws)h(and)e │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fm(8)p 136 100 1057 4 v │ │ │ │ +1239 w Fl(FrontMtx)28 b Ff(:)40 b Fh(DRAFT)31 b Ff(Octob)s(er)f(4,)h │ │ │ │ +(2025)p 2844 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 │ │ │ │ +(*frontmtx,)g(int)i(J,)1468 1013 y(int)g(*pnD,)f(int)h(*pnL,)g(int)g │ │ │ │ +(*pnU,)f(int)h(*pnbytes)e(\))j(;)227 1166 y Fm(This)29 │ │ │ │ +b(metho)s(d)h(\014lls)g(the)g(four)f(p)s(oin)m(ter)h(argumen)m(ts)g │ │ │ │ +(with)g(the)g(n)m(um)m(b)s(er)f(of)h(in)m(ternal)h(ro)m(ws)f(and)f │ │ │ │ +(columns,)227 1279 y(n)m(um)m(b)s(er)36 b(of)h(ro)m(ws)f(in)h(the)g(lo) │ │ │ │ +m(w)m(er)g(blo)s(c)m(k,)j(n)m(um)m(b)s(er)35 b(of)i(columns)f(in)h(the) │ │ │ │ +g(upp)s(er)d(blo)s(c)m(k,)39 b(and)d(n)m(um)m(b)s(er)g(of)227 │ │ │ │ +1392 y(b)m(ytes)31 b(for)f(a)h Fl(Chv)f Fm(ob)5 b(ject)31 │ │ │ │ +b(to)g(hold)f(the)g(fron)m(t.)41 b(in)30 b(fron)m(t)h │ │ │ │ +Fl(J)p Fm(.)227 1546 y Fh(Err)-5 b(or)30 b(che)-5 b(cking:)38 │ │ │ │ +b Fm(If)26 b Fl(frontmtx)d Fm(is)j Fl(NULL)p Fm(,)f(or)h(if)g │ │ │ │ +Fl(J)g Fm(is)f(not)i(in)e Fl([0,nfront\))p Fm(,)g(or)g(if)h(an)m(y)h │ │ │ │ +(of)f(the)g(four)f(p)s(oin)m(ter)227 1659 y(argumen)m(ts)31 │ │ │ │ +b(are)g(NULL,)f(an)h(error)f(message)h(is)f(prin)m(ted)g(and)g(the)h │ │ │ │ +(program)f(exits.)111 1853 y(5.)46 b Fl(int)h(FrontMtx_frontSize)c(\()k │ │ │ │ +(FrontMtx)f(*frontmtx,)f(int)i(J)g(\))h(;)227 2006 y │ │ │ │ +Fm(This)30 b(metho)s(d)g(returns)f(the)h(n)m(um)m(b)s(er)f(of)i(in)m │ │ │ │ +(ternal)g(ro)m(ws)f(and)g(columns)g(in)g(fron)m(t)h Fl(J)p │ │ │ │ +Fm(.)227 2160 y Fh(Err)-5 b(or)33 b(che)-5 b(cking:)40 │ │ │ │ +b Fm(If)29 b Fl(frontmtx)e Fm(or)i Fl(frontsizesIV)d │ │ │ │ +Fm(is)k Fl(NULL)p Fm(,)e(or)i(if)f Fl(J)g Fm(is)g(not)h(in)f │ │ │ │ +Fl([0,nfront\))p Fm(,)e(an)i(error)227 2273 y(message)j(is)e(prin)m │ │ │ │ +(ted)g(and)g(the)g(program)h(exits.)111 2467 y(6.)46 │ │ │ │ +b Fl(void)h(FrontMtx_setFrontSize)42 b(\()47 b(FrontMtx)f(*frontmtx,)f │ │ │ │ +(int)i(J,)g(int)g(size)g(\))g(;)227 2621 y Fm(This)23 │ │ │ │ +b(metho)s(d)f(sets)i(the)f(n)m(um)m(b)s(er)f(of)h(in)m(ternal)h(ro)m │ │ │ │ +(ws)f(and)g(columns)g(in)g(fron)m(t)g Fl(J)g Fm(to)g(b)s(e)g │ │ │ │ +Fl(size)p Fm(.)37 b(This)22 b(metho)s(d)227 2733 y(is)37 │ │ │ │ +b(used)e(during)g(factorizations)k(with)d(piv)m(oting)i(enabled)e │ │ │ │ +(since)h(w)m(e)g(cannot)g(tell)h(ahead)e(of)h(time)g(ho)m(w)227 │ │ │ │ +2846 y(man)m(y)31 b(ro)m(ws)f(and)g(columns)g(in)g(a)h(fron)m(t)f(will) │ │ │ │ +h(b)s(e)f(eliminated.)227 3000 y Fh(Err)-5 b(or)42 b(che)-5 │ │ │ │ +b(cking:)56 b Fm(If)38 b Fl(frontmtx)e Fm(or)j Fl(frontsizesIV)c │ │ │ │ +Fm(is)k Fl(NULL)p Fm(,)e(or)i(if)f Fl(J)g Fm(is)h(not)f(in)h │ │ │ │ +Fl([0,nfront\))p Fm(,)e(or)i(if)227 3113 y Fl(size)24 │ │ │ │ +b Fk(<)h Fm(0,)31 b(an)g(error)f(message)h(is)g(prin)m(ted)e(and)h(the) │ │ │ │ +h(program)f(exits.)111 3307 y(7.)46 b Fl(void)h(FrontMtx_columnIndices) │ │ │ │ +42 b(\()47 b(FrontMtx)f(*frontmtx,)f(int)i(J,)1659 3420 │ │ │ │ +y(int)g(*pncol,)f(int)h(**pindices)e(\))i(;)227 3574 │ │ │ │ +y Fm(This)32 b(metho)s(d)f(\014lls)h Fl(*pncol)f Fm(with)h(the)g(n)m │ │ │ │ +(um)m(b)s(er)f(of)i(columns)f(and)f Fl(*pindices)f Fm(with)i(a)h(p)s │ │ │ │ +(oin)m(ter)f(to)h(the)227 3686 y(column)d(indices)h(for)f(fron)m(t)h │ │ │ │ +Fl(J)p Fm(.)227 3840 y Fh(Err)-5 b(or)40 b(che)-5 b(cking:)52 │ │ │ │ +b Fm(If)36 b Fl(frontmtx)p Fm(,)g Fl(pncol)f Fm(or)h │ │ │ │ +Fl(pindices)e Fm(is)j Fl(NULL)p Fm(,)e(or)h(if)h Fl(J)f │ │ │ │ +Fm(is)g(not)h(in)f Fl([0,nfront\))p Fm(,)f(an)227 3953 │ │ │ │ +y(error)30 b(message)i(is)e(prin)m(ted)g(and)g(the)g(program)h(exits.) │ │ │ │ +111 4147 y(8.)46 b Fl(void)h(FrontMtx_rowIndices)42 b(\()48 │ │ │ │ +b(FrontMtx)d(*frontmtx,)g(int)i(J,)1516 4260 y(int)g(*pnrow,)f(int)h │ │ │ │ +(**pindices)e(\))i(;)227 4414 y Fm(This)30 b(metho)s(d)f(\014lls)h │ │ │ │ +Fl(*pnrow)f Fm(with)h(the)g(n)m(um)m(b)s(er)f(of)h(ro)m(ws)h(and)e │ │ │ │ Fl(*pindices)f Fm(with)i(a)g(p)s(oin)m(ter)g(to)h(the)g(ro)m(w)227 │ │ │ │ 4526 y(indices)g(for)f(fron)m(t)g Fl(J)p Fm(.)227 4680 │ │ │ │ y Fh(Err)-5 b(or)40 b(che)-5 b(cking:)52 b Fm(If)36 b │ │ │ │ Fl(frontmtx)p Fm(,)g Fl(pnrow)f Fm(or)h Fl(pindices)e │ │ │ │ Fm(is)j Fl(NULL)p Fm(,)e(or)h(if)h Fl(J)f Fm(is)g(not)h(in)f │ │ │ │ Fl([0,nfront\))p Fm(,)f(an)227 4793 y(error)30 b(message)i(is)e(prin)m │ │ │ │ (ted)g(and)g(the)g(program)h(exits.)111 4987 y(9.)46 │ │ │ │ @@ -5695,17 +5684,17 @@ │ │ │ │ (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 1016 4 v 1197 100 a Fl(FrontMtx)28 │ │ │ │ -b Ff(:)41 b Fh(DRAFT)121 b Ff(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2838 100 V 1016 w Fm(9)66 399 y(10.)46 b Fl(SubMtx)g(*)i │ │ │ │ +TeXDict begin 9 8 bop 91 100 1057 4 v 1238 100 a Fl(FrontMtx)28 │ │ │ │ +b Ff(:)41 b Fh(DRAFT)121 b Ff(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2796 100 V 1057 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 │ │ │ │ @@ -5777,40 +5766,39 @@ │ │ │ │ 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 993 4 │ │ │ │ -v 1175 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(F)-8 │ │ │ │ -b(ebruary)30 b(29,)i(2024)p 2908 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(and)c(initializing)j(the)e(in)m(ternal)h │ │ │ │ -(ob)5 b(jects)25 b(as)f(necessary)-8 b(.)227 1214 y(See)41 │ │ │ │ -b(the)f(previous)g(section)h(on)f(data)h(structures)f(for)g(the)g │ │ │ │ -(meanings)h(of)f(the)g Fl(type)p Fm(,)i Fl(symmetryflag)p │ │ │ │ -Fm(,)227 1327 y Fl(sparsityflag)34 b Fm(and)j Fl(pivotingflag)d │ │ │ │ -Fm(parameters.)63 b(The)37 b Fl(lockflag)e Fm(parameter)j(has)f(the)g │ │ │ │ -(follo)m(wing)227 1440 y(meaning.)337 1645 y Fi(\210)45 │ │ │ │ -b Fl(0)30 b Fm(|)h(the)f Fl(Lock)f Fm(ob)5 b(ject)32 │ │ │ │ -b(is)e(not)h(allo)s(cated)h(or)e(initialized.)337 1800 │ │ │ │ -y Fi(\210)45 b Fl(1)d Fm(|)h(the)f Fl(Lock)f Fm(ob)5 │ │ │ │ -b(ject)44 b(is)e(allo)s(cated)j(and)c(initialized)k(to)e(sync)m │ │ │ │ -(hronize)f(only)h(threads)f(in)g(this)427 1913 y(pro)s(cess.)337 │ │ │ │ -2068 y Fi(\210)j Fl(2)27 b Fm(|)g(the)h Fl(Lock)e Fm(ob)5 │ │ │ │ -b(ject)28 b(is)f(allo)s(cated)j(and)c(initialized)j(to)f(sync)m │ │ │ │ -(hronize)g(threads)f(in)g(this)g(and)g(other)427 2181 │ │ │ │ -y(pro)s(cesses.)227 2386 y(If)j Fl(lockflag)e Fm(is)j(not)f │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fm(10)p 182 100 1034 4 │ │ │ │ +v 1216 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(Octob)s(er)h(4,)g │ │ │ │ +(2025)p 2866 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 │ │ │ │ +(and)c(initializing)j(the)e(in)m(ternal)h(ob)5 b(jects)25 │ │ │ │ +b(as)f(necessary)-8 b(.)227 1214 y(See)41 b(the)f(previous)g(section)h │ │ │ │ +(on)f(data)h(structures)f(for)g(the)g(meanings)h(of)f(the)g │ │ │ │ +Fl(type)p Fm(,)i Fl(symmetryflag)p Fm(,)227 1327 y Fl(sparsityflag)34 │ │ │ │ +b Fm(and)j Fl(pivotingflag)d Fm(parameters.)63 b(The)37 │ │ │ │ +b Fl(lockflag)e Fm(parameter)j(has)f(the)g(follo)m(wing)227 │ │ │ │ +1440 y(meaning.)337 1645 y Fi(\210)45 b Fl(0)30 b Fm(|)h(the)f │ │ │ │ +Fl(Lock)f Fm(ob)5 b(ject)32 b(is)e(not)h(allo)s(cated)h(or)e │ │ │ │ +(initialized.)337 1800 y Fi(\210)45 b Fl(1)d Fm(|)h(the)f │ │ │ │ +Fl(Lock)f Fm(ob)5 b(ject)44 b(is)e(allo)s(cated)j(and)c(initialized)k │ │ │ │ +(to)e(sync)m(hronize)f(only)h(threads)f(in)g(this)427 │ │ │ │ +1913 y(pro)s(cess.)337 2068 y Fi(\210)j Fl(2)27 b Fm(|)g(the)h │ │ │ │ +Fl(Lock)e Fm(ob)5 b(ject)28 b(is)f(allo)s(cated)j(and)c(initialized)j │ │ │ │ +(to)f(sync)m(hronize)g(threads)f(in)g(this)g(and)g(other)427 │ │ │ │ +2181 y(pro)s(cesses.)227 2386 y(If)j Fl(lockflag)e Fm(is)j(not)f │ │ │ │ Fl(0)p Fm(,)h(the)f(lo)s(c)m(k)i(is)e(allo)s(cated)i(and)e │ │ │ │ (initialized.)227 2545 y(This)g(metho)s(d)g(allo)s(cates)k(as)d(m)m(uc) │ │ │ │ m(h)f(storage)j(as)e(p)s(ossible.)41 b(When)31 b(piv)m(oting)h(is)e │ │ │ │ (not)h(enabled)g(and)f(dense)227 2658 y(fron)m(ts)40 │ │ │ │ b(are)g(stored)g(the)g(structure)f(of)h(the)g(factor)h(matrix)f(is)g │ │ │ │ (\014xed)f(and)g(giv)m(en)i(b)m(y)f(the)g Fl(frontETree)227 │ │ │ │ 2771 y Fm(ob)5 b(ject.)58 b(The)35 b(diagonal)i Fk(D)1190 │ │ │ │ @@ -5856,17 +5844,17 @@ │ │ │ │ (indices)g(\(when)f(nonsymem)m(tric\))h(are)g(copied.)48 │ │ │ │ b(Finally)34 b(the)e(fron)m(t's)h(en)m(tries)227 5248 │ │ │ │ y(are)e(zero)s(ed)g(via)g(a)f(call)i(to)f 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 993 4 v 1174 100 a Fl(FrontMtx)28 │ │ │ │ -b Ff(:)41 b Fh(DRAFT)121 b Ff(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2815 100 V 993 w Fm(11)111 399 y(2.)46 b Fl(char)h │ │ │ │ +TeXDict begin 11 10 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(4,)g(2025)p │ │ │ │ +2774 100 V 1034 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 │ │ │ │ @@ -5929,19 +5917,19 @@ │ │ │ │ (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 993 4 │ │ │ │ -v 1175 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(F)-8 │ │ │ │ -b(ebruary)30 b(29,)i(2024)p 2908 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 │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fm(12)p 182 100 1034 │ │ │ │ +4 v 1216 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(Octob)s(er)h(4,) │ │ │ │ +g(2025)p 2866 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 │ │ │ │ b(cking:)40 b Fm(None)31 b(presen)m(tly)-8 b(.)111 1129 │ │ │ │ y(9.)46 b Fl(ChvList)g(*)i(FrontMtx_aggregateList)41 │ │ │ │ @@ -6007,17 +5995,17 @@ │ │ │ │ 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 993 4 v 1174 100 a Fl(FrontMtx)28 │ │ │ │ -b Ff(:)41 b Fh(DRAFT)121 b Ff(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2815 100 V 993 w Fm(13)227 399 y(This)27 b(metho)s(d)f(is)h(used)g(to)h │ │ │ │ +TeXDict begin 13 12 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(4,)g(2025)p │ │ │ │ +2774 100 V 1034 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 │ │ │ │ @@ -6085,43 +6073,42 @@ │ │ │ │ (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 993 4 │ │ │ │ -v 1175 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(F)-8 │ │ │ │ -b(ebruary)30 b(29,)i(2024)p 2908 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 1034 │ │ │ │ +4 v 1216 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(Octob)s(er)h(4,) │ │ │ │ +g(2025)p 2866 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 │ │ │ │ @@ -6158,17 +6145,17 @@ │ │ │ │ (*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 993 4 v 1174 100 a Fl(FrontMtx)28 │ │ │ │ -b Ff(:)41 b Fh(DRAFT)121 b Ff(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2815 100 V 993 w Fm(15)227 399 y(and)27 b(up)s(date)g(matrices)h(are)g │ │ │ │ +TeXDict begin 15 14 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(4,)g(2025)p │ │ │ │ +2774 100 V 1034 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 │ │ │ │ @@ -6240,36 +6227,36 @@ │ │ │ │ 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 993 4 │ │ │ │ -v 1175 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(F)-8 │ │ │ │ -b(ebruary)30 b(29,)i(2024)p 2908 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 1034 │ │ │ │ +4 v 1216 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(Octob)s(er)h(4,) │ │ │ │ +g(2025)p 2866 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 │ │ │ │ @@ -6320,17 +6307,17 @@ │ │ │ │ (all)h(the)g(solv)m(e)h(metho)s(ds)d(|)h(serial,)i(m)m(ultithreaded)e │ │ │ │ (and)g(MPI.)111 5181 y(1.)46 b 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 993 4 v 1174 100 a Fl(FrontMtx)28 │ │ │ │ -b Ff(:)41 b Fh(DRAFT)121 b Ff(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2815 100 V 993 w Fm(17)227 399 y(This)c(metho)s(d)g(creates)h(and)f │ │ │ │ +TeXDict begin 17 16 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(4,)g(2025)p │ │ │ │ +2774 100 V 1034 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 │ │ │ │ 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 │ │ │ │ @@ -6398,51 +6385,50 @@ │ │ │ │ 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 993 4 │ │ │ │ -v 1175 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(F)-8 │ │ │ │ -b(ebruary)30 b(29,)i(2024)p 2908 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 b(Solv)m(e)g(metho)s(d)111 1380 y Fm(1.)46 │ │ │ │ -b Fl(void)h(FrontMtx_solve)d(\()j(FrontMtx)f(*frontmtx,)f(DenseMtx)g │ │ │ │ -(*mtxX,)h(DenseMtx)g(*mtxB,)657 1493 y(SubMtxManager)e(*mtxmanager,)g │ │ │ │ -(double)j(cpus[],)e(int)i(msglvl,)f(FILE)h(*msgFile)e(\))j(;)227 │ │ │ │ -1642 y Fm(This)24 b(metho)s(d)f(is)h(used)g(to)h(solv)m(e)g(one)g(of)f │ │ │ │ -(three)h(linear)f(systems)g(of)h(equations)g(|)f(\()p │ │ │ │ -Fk(U)3144 1609 y Fj(T)3207 1642 y Fm(+)8 b Fk(I)f Fm(\))p │ │ │ │ -Fk(D)s Fm(\()p Fk(I)15 b Fm(+)8 b Fk(U)i Fm(\))p Fk(X)32 │ │ │ │ -b Fm(=)227 1755 y Fk(B)5 b Fm(,)28 b(\()p Fk(U)461 1722 │ │ │ │ -y Fj(H)542 1755 y Fm(+)14 b Fk(I)7 b Fm(\))p Fk(D)s Fm(\()p │ │ │ │ -Fk(I)21 b Fm(+)14 b Fk(U)c Fm(\))p Fk(X)33 b Fm(=)25 │ │ │ │ -b Fk(B)32 b Fm(or)27 b(\()p Fk(L)14 b Fm(+)g Fk(I)7 b │ │ │ │ -Fm(\))p Fk(D)s Fm(\()p Fk(I)21 b Fm(+)14 b Fk(U)c Fm(\))p │ │ │ │ -Fk(X)33 b Fm(=)25 b Fk(B)5 b Fm(.)39 b(En)m(tries)27 │ │ │ │ -b(of)h Fk(B)j Fm(are)d Fh(r)-5 b(e)g(ad)29 b Fm(from)d │ │ │ │ -Fl(mtxB)h Fm(and)227 1867 y(en)m(tries)34 b(of)f Fk(X)40 │ │ │ │ -b Fm(are)33 b(written)g(to)h Fl(mtxX)p Fm(.)e(Therefore,)h │ │ │ │ -Fl(mtxX)f Fm(and)g Fl(mtxB)g Fm(can)h(b)s(e)g(the)g(same)g(ob)5 │ │ │ │ -b(ject.)49 b(\(Note,)227 1980 y(this)41 b(do)s(es)g(not)h(hold)e(true)h │ │ │ │ -(for)g(an)g(MPI)h(factorization)h(with)e(piv)m(oting.\))75 │ │ │ │ -b(The)41 b Fl(mtxmanager)d Fm(ob)5 b(ject)227 2093 y(manages)32 │ │ │ │ -b(the)g(w)m(orking)f(storage)i(using)e(the)g(solv)m(e.)44 │ │ │ │ -b(On)31 b(return)f(the)h Fl(cpus[])f Fm(v)m(ector)j(is)e(\014lled)g │ │ │ │ -(with)g(the)227 2206 y(follo)m(wing.)337 2390 y Fi(\210)45 │ │ │ │ -b Fl(cpus[0])29 b Fm(|)h(set)h(up)e(the)i(solv)m(es)337 │ │ │ │ -2532 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 2675 y Fi(\210)45 │ │ │ │ +TeXDict begin 18 17 bop 0 100 a Fm(18)p 182 100 1034 │ │ │ │ +4 v 1216 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(Octob)s(er)h(4,) │ │ │ │ +g(2025)p 2866 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 │ │ │ │ +b(Solv)m(e)g(metho)s(d)111 1380 y Fm(1.)46 b Fl(void)h(FrontMtx_solve)d │ │ │ │ +(\()j(FrontMtx)f(*frontmtx,)f(DenseMtx)g(*mtxX,)h(DenseMtx)g(*mtxB,)657 │ │ │ │ +1493 y(SubMtxManager)e(*mtxmanager,)g(double)j(cpus[],)e(int)i(msglvl,) │ │ │ │ +f(FILE)h(*msgFile)e(\))j(;)227 1642 y Fm(This)24 b(metho)s(d)f(is)h │ │ │ │ +(used)g(to)h(solv)m(e)g(one)g(of)f(three)h(linear)f(systems)g(of)h │ │ │ │ +(equations)g(|)f(\()p Fk(U)3144 1609 y Fj(T)3207 1642 │ │ │ │ +y Fm(+)8 b Fk(I)f Fm(\))p Fk(D)s Fm(\()p Fk(I)15 b Fm(+)8 │ │ │ │ +b Fk(U)i Fm(\))p Fk(X)32 b Fm(=)227 1755 y Fk(B)5 b Fm(,)28 │ │ │ │ +b(\()p Fk(U)461 1722 y Fj(H)542 1755 y Fm(+)14 b Fk(I)7 │ │ │ │ +b Fm(\))p Fk(D)s Fm(\()p Fk(I)21 b Fm(+)14 b Fk(U)c Fm(\))p │ │ │ │ +Fk(X)33 b Fm(=)25 b Fk(B)32 b Fm(or)27 b(\()p Fk(L)14 │ │ │ │ +b Fm(+)g Fk(I)7 b Fm(\))p Fk(D)s Fm(\()p Fk(I)21 b Fm(+)14 │ │ │ │ +b Fk(U)c Fm(\))p Fk(X)33 b Fm(=)25 b Fk(B)5 b Fm(.)39 │ │ │ │ +b(En)m(tries)27 b(of)h Fk(B)j Fm(are)d Fh(r)-5 b(e)g(ad)29 │ │ │ │ +b Fm(from)d Fl(mtxB)h Fm(and)227 1867 y(en)m(tries)34 │ │ │ │ +b(of)f Fk(X)40 b Fm(are)33 b(written)g(to)h Fl(mtxX)p │ │ │ │ +Fm(.)e(Therefore,)h Fl(mtxX)f Fm(and)g Fl(mtxB)g Fm(can)h(b)s(e)g(the)g │ │ │ │ +(same)g(ob)5 b(ject.)49 b(\(Note,)227 1980 y(this)41 │ │ │ │ +b(do)s(es)g(not)h(hold)e(true)h(for)g(an)g(MPI)h(factorization)h(with)e │ │ │ │ +(piv)m(oting.\))75 b(The)41 b Fl(mtxmanager)d Fm(ob)5 │ │ │ │ +b(ject)227 2093 y(manages)32 b(the)g(w)m(orking)f(storage)i(using)e │ │ │ │ +(the)g(solv)m(e.)44 b(On)31 b(return)f(the)h Fl(cpus[])f │ │ │ │ +Fm(v)m(ector)j(is)e(\014lled)g(with)g(the)227 2206 y(follo)m(wing.)337 │ │ │ │ +2390 y Fi(\210)45 b Fl(cpus[0])29 b Fm(|)h(set)h(up)e(the)i(solv)m(es) │ │ │ │ +337 2532 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 2675 y Fi(\210)45 │ │ │ │ b Fl(cpus[2])29 b Fm(|)h(forw)m(ard)g(solv)m(e)337 2817 │ │ │ │ y Fi(\210)45 b Fl(cpus[3])29 b Fm(|)h(diagonal)i(solv)m(e)337 │ │ │ │ 2959 y Fi(\210)45 b Fl(cpus[4])29 b Fm(|)h(bac)m(kw)m(ard)h(solv)m(e) │ │ │ │ 337 3102 y Fi(\210)45 b Fl(cpus[5])29 b Fm(|)h(total)i(time)f(in)f(the) │ │ │ │ h(metho)s(d.)227 3285 y Fh(Err)-5 b(or)33 b(che)-5 b(cking:)39 │ │ │ │ b Fm(If)28 b Fl(frontmtx)p Fm(,)f Fl(mtxB)g Fm(or)i Fl(cpus)e │ │ │ │ Fm(is)i Fl(NULL)p Fm(,)e(or)i(if)f Fl(msglvl)f Fm(>)h(0)h(and)f │ │ │ │ @@ -6482,17 +6468,17 @@ │ │ │ │ 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 993 4 v 1174 100 a Fl(FrontMtx)28 │ │ │ │ -b Ff(:)41 b Fh(DRAFT)121 b Ff(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2815 100 V 993 w Fm(19)337 399 y Fi(\210)45 b Fl(cpus[4])29 │ │ │ │ +TeXDict begin 19 18 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(4,)g(2025)p │ │ │ │ +2774 100 V 1034 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 │ │ │ │ @@ -6554,28 +6540,27 @@ │ │ │ │ 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 993 4 │ │ │ │ -v 1175 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(F)-8 │ │ │ │ -b(ebruary)30 b(29,)i(2024)p 2908 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 │ │ │ │ -b(FrontMtx)d(*frontmtx,)g(char)i(*fn)g(\))g(;)227 1405 │ │ │ │ -y Fm(This)25 b(metho)s(d)g(reads)g(a)h Fl(FrontMtx)45 │ │ │ │ +TeXDict begin 20 19 bop 0 100 a Fm(20)p 182 100 1034 │ │ │ │ +4 v 1216 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(Octob)s(er)h(4,) │ │ │ │ +g(2025)p 2866 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 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 b(FrontMtx)d(*frontmtx,)g(char)i(*fn)g(\))g(;)227 │ │ │ │ +1405 y Fm(This)25 b(metho)s(d)g(reads)g(a)h Fl(FrontMtx)45 │ │ │ │ b(object)24 b Fm(from)h(a)h(\014le.)39 b(It)26 b(tries)g(to)g(op)s(en)e │ │ │ │ (the)i(\014le)g(and)f(if)g(it)h(is)f(success-)227 1518 │ │ │ │ y(ful,)g(it)f(then)g(calls)h Fl(FrontMtx)p 1252 1518 │ │ │ │ 29 4 v 32 w(readFromFormattedFile\(\))17 b Fm(or)24 b │ │ │ │ Fl(FrontMtx)p 2894 1518 V 32 w(readFromBinaryFile\(\))p │ │ │ │ Fm(,)227 1631 y(closes)32 b(the)e(\014le)h(and)f(returns)f(the)h(v)-5 │ │ │ │ b(alue)31 b(returned)e(from)h(the)h(called)g(routine.)227 │ │ │ │ @@ -6641,17 +6626,17 @@ │ │ │ │ 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 993 4 v 1174 100 a Fl(FrontMtx)28 │ │ │ │ -b Ff(:)41 b Fh(DRAFT)121 b Ff(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2815 100 V 993 w Fm(21)111 399 y(7.)46 b Fl(int)h │ │ │ │ +TeXDict begin 21 20 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(4,)g(2025)p │ │ │ │ +2774 100 V 1034 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 │ │ │ │ @@ -6714,23 +6699,23 @@ │ │ │ │ 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 993 4 │ │ │ │ -v 1175 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(F)-8 │ │ │ │ -b(ebruary)30 b(29,)i(2024)p 2908 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 │ │ │ │ +TeXDict begin 22 21 bop 0 100 a Fm(22)p 182 100 1034 │ │ │ │ +4 v 1216 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(Octob)s(er)h(4,) │ │ │ │ +g(2025)p 2866 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 │ │ │ │ (Hermitian,)500 949 y Fe({)45 b Fl(type)i(=)g(2)h(\(SPOOLES)p │ │ │ │ 1417 949 V 32 w(NONSYMMETRIC\))427 1095 y Fm(for)30 b │ │ │ │ Fk(A)h Fm(real)g(or)f(complex)h(nonsymmetric.)337 1241 │ │ │ │ y Fi(\210)45 b Fm(The)30 b Fl(sparsityflag)d Fm(parameter)k(signals)g │ │ │ │ (a)g(direct)g(or)f(appro)m(ximate)h(factorization.)500 │ │ │ │ 1387 y Fe({)45 b Fl(sparsityflag)g(=)i(0)h(\(FRONTMTX)p │ │ │ │ @@ -6794,17 +6779,17 @@ │ │ │ │ 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 993 4 v 1174 100 a Fl(FrontMtx)28 │ │ │ │ -b Ff(:)41 b Fh(DRAFT)121 b Ff(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2815 100 V 993 w Fm(23)337 399 y Fi(\210)45 b Fm(The)30 │ │ │ │ +TeXDict begin 23 22 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(4,)g(2025)p │ │ │ │ +2774 100 V 1034 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 │ │ │ │ @@ -6894,16 +6879,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 993 4 v 1174 100 a Fl(FrontMtx)28 │ │ │ │ -b Ff(:)41 b Fh(DRAFT)121 b Ff(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2815 100 V 993 w Fm(25)0 399 y Fl(FrontMtx)p 390 399 │ │ │ │ +TeXDict begin 25 24 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(4,)g(2025)p │ │ │ │ +2774 100 V 1034 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 February 29, 2024 │ │ │ │ │ + 2 FrontMtx : DRAFT October 4, 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 February 29, 2024 3 │ │ │ │ │ + FrontMtx : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 4 FrontMtx : DRAFT October 4, 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 February 29, 2024 5 │ │ │ │ │ + FrontMtx : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 6 FrontMtx : DRAFT October 4, 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 February 29, 2024 7 │ │ │ │ │ + FrontMtx : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 8 FrontMtx : DRAFT October 4, 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 February 29, 2024 9 │ │ │ │ │ + FrontMtx : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 10 FrontMtx : DRAFT October 4, 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 February 29, 2024 11 │ │ │ │ │ + FrontMtx : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 12 FrontMtx : DRAFT October 4, 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 February 29, 2024 13 │ │ │ │ │ + FrontMtx : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 14 FrontMtx : DRAFT October 4, 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 February 29, 2024 15 │ │ │ │ │ + FrontMtx : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 16 FrontMtx : DRAFT October 4, 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 February 29, 2024 17 │ │ │ │ │ + FrontMtx : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 18 FrontMtx : DRAFT October 4, 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 February 29, 2024 19 │ │ │ │ │ + FrontMtx : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 20 FrontMtx : DRAFT October 4, 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 February 29, 2024 21 │ │ │ │ │ + FrontMtx : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 22 FrontMtx : DRAFT October 4, 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 February 29, 2024 23 │ │ │ │ │ + FrontMtx : DRAFT October 4, 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 February 29, 2024 25 │ │ │ │ │ + FrontMtx : DRAFT October 4, 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 2024.02.29:1857 │ │ │ │ +%DVIPSSource: TeX output 2025.10.04:1733 │ │ │ │ %%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 │ │ │ │ @@ -3346,31 +3346,30 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 50 /two put │ │ │ │ dup 52 /four put │ │ │ │ -dup 57 /nine put │ │ │ │ +dup 53 /five put │ │ │ │ dup 70 /F put │ │ │ │ dup 79 /O put │ │ │ │ dup 84 /T put │ │ │ │ dup 97 /a put │ │ │ │ dup 98 /b put │ │ │ │ +dup 99 /c put │ │ │ │ dup 100 /d put │ │ │ │ dup 101 /e put │ │ │ │ dup 103 /g put │ │ │ │ dup 105 /i put │ │ │ │ dup 110 /n put │ │ │ │ dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ dup 115 /s put │ │ │ │ dup 116 /t put │ │ │ │ -dup 117 /u put │ │ │ │ -dup 121 /y put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -3547,136 +3546,127 @@ │ │ │ │ 60F5C3F629F7BC5A27C207D70DE63FBE0E023452097D5B7AA5B2CAC668D4D075 │ │ │ │ 1A0F70683E96AE35A6BA0B59619C215A7012568991AFC0C35789DD0ECE45C649 │ │ │ │ F44580845F0FA422868CFCC8029513235C0286B76196E350498845EA934DF289 │ │ │ │ 1D0C954B079BD2977384B96D8460B4F50EE635A4C8F7A3B6866F93CA641F3F2C │ │ │ │ C93ECCD6BBCD792189A12FC9366BA7134EFD67A22B4FD62465250E0BA6B7C627 │ │ │ │ 73E8F50E379328B7FABA341B0D50F9A2CFB055E01DDF6BBCF6FE4114BC36C10B │ │ │ │ E581D76A84EA12995506C33DAE9035683FBD5F54AA1545992B94B8ED946E5866 │ │ │ │ -2F2CF265A5AE5DF94A417B9C586F6B9C596D5A5CEFE74F770B8779D3CDEACF5E │ │ │ │ -4DEC459759D7D3D77E7B60A16227426FF8C81730EEBF03D84CCD2B72602D2A8F │ │ │ │ -76384DB473890FA5F27B754832C547717B04A1FC5EBFE112917604D7233B3B9F │ │ │ │ -FE133B09AAFC8C60E806F3A2A811EB19B57E9F174F71E74E1BF08845925D5CEE │ │ │ │ -D8B32184B962EEFF0432AE8F4ACD5D181C186B6C87AE283E6F3B6399730155B1 │ │ │ │ -34BC5A74637D22B4AC24A765F4CB1881306E9D114472DB2D8482D3E70456875D │ │ │ │ -74EC2A7E24F94C1B867EA193FADA6F132370A02A7F704404421DBBEEF4D377B0 │ │ │ │ -6FD3B44C4B53DF870E932BA700422DD125FC00D210197A2B78C149C9C3BF04A4 │ │ │ │ -E3EF6A6176E23204BCFB04D985B1196C831374A8CD31383AFB3C9C2FDF8C83E8 │ │ │ │ -CE84F332FB505DB3A3EBE03860F8E885D659DCF532B026E8A2AE9D9584A5073E │ │ │ │ -3DC9E54BAF8DB26AE708C4B7353490B531096051727ADD35B17A54E519432D87 │ │ │ │ -48863163EABCE4311F2E95EC8C1061B3B3772A751B41E6E8D10AA9C9FAD95161 │ │ │ │ -4C69AA33848D17D5D3B550B8BF69108E3A2521948A4574BCA0E31922B1B10F51 │ │ │ │ -BB7DCAE275B7C18116580B2D8E26F40A45F84DAF1E0A155F5CA88236395451E1 │ │ │ │ -8BECE73222A7F459CF47F6F664107A1CB538547134CF8BE12B379976D6D1E349 │ │ │ │ -FA050837B0D6FC3C15946120841D18093C107AA487B2157308DE5D05C74AA177 │ │ │ │ -96EE4CD0AAAEA93474BEFBF609AF88907D7E41E53B8AFEB8705F2F4B1A7BD50F │ │ │ │ -419904A55622427205948BAF3DB3FB0A2AC0F286DEAF327BD653B11C4EA789B0 │ │ │ │ -A52F8C3AC1C1748E48B39AC00B21CAB44512544AE9EB262FE09F990C372917CD │ │ │ │ -E0CA4CEA02343C05FDDF44AE1267865F67798D5D9166819A5AF2C7C0B6717E8B │ │ │ │ -794AB2DB2D1111B65EF0ECE75DAFF23728E507919958626AAB6E4127C11D9A15 │ │ │ │ -CF88BC585F4D4622095DE2BCF2EB8D854F4D3A294079EF837D5CB60095AC42A5 │ │ │ │ -7AF9F334DC54F826BCDF88A6C4F23E642A4A4BB961E8AF9D3A5677C883BCD9A4 │ │ │ │ -7BD93C1C837C9B067CF126E6601310EDC8138FC65676B557A3EF472F605EFDE5 │ │ │ │ -722ECA54C47EE86F80668BA07667254F2CC3D8D6BBA20210A33D192ACCED9216 │ │ │ │ -21678983EFA1DBE5A7EA21596EB37E9C021FFF4729178BFF48B79840BCB88B9E │ │ │ │ -4BBB054DA96F2B91E0AE0A9751C0C5B34000889C9B6CEF404CC6A1C423788895 │ │ │ │ -D000BDAD854AEA009DBD40264F78B67A42A9B5ED4D1C3A7540A745039360DE9E │ │ │ │ -7557B14C067B1E2D580E40023A7B71EE3FA014835F0DEDED12AEAAD17731A255 │ │ │ │ -B91F0536584E217663A93739D701D8DBB235FA8B8AFD8162DDF6F9EA8ECC1601 │ │ │ │ -E56E95C55E974630324E6E1683C4BF4EE789D94BEE2C51874EFE6A547789C8CB │ │ │ │ -4218B9DD3540EE3DEFF810A0762A36C0E4DDAF3C779FD4F3AA23E0CE9682F392 │ │ │ │ -0B9C171C3DE0E095F7129DC6B689323D049CAE22DAA2916E48ED43904415BE7D │ │ │ │ -60069E8450D3B84F97543B14D92D783E6628BC5270BF2DB40FA891AE78EBF7DA │ │ │ │ -854D79C96C559C5056415FEDD1B761C56BFBE85133756FA344C8CEA0C882C612 │ │ │ │ -CFD22EC26F9B27614667E493A65B65D77CEB0969EF21152BB958CA8EEFE546CE │ │ │ │ -7418A47653A2C0C30D8674A0D2E616F6684DFBF33086A4CEFB63B92C8FAC31FC │ │ │ │ -959BECBAEAEACF2C476EE1357D9C79B0FA6FD1DDAF82D56F3027C8B7D8515541 │ │ │ │ -9C8B46035BB746B8CF0205C4AAAC05BD5F936C8465C21642E21D1C28C2725010 │ │ │ │ -9C2CB373CAC62CE465E6654A607AB253A0EB925A2F08D402AFDC458B60381AF7 │ │ │ │ -8BED3D0CF72A54105E7A572D3D50E2FB0C549EACCCCB9AA6BC3849239AC9E4E0 │ │ │ │ -DCF0C33648C1E6D80FFD3C045D5909B92F3F94F452F400FF7570CD6ECD906E16 │ │ │ │ -BA70F50CD403CD7EB9EDC080BC86024602E3E4619F75445491E0F00C6AB88F02 │ │ │ │ -287008EFA0D34BA2E407A9FD745C79CB6E13620A1EA783B20D439102E938C9C4 │ │ │ │ -4D486C4597E96649D2CE8E06FE72F0F4F2C4AE762D26B02B62321216A7834313 │ │ │ │ -6571582A3E6FFD7A82E577EA13B611531AE2AB3596B470FCE84A78F16CB89374 │ │ │ │ -90A239447A035247A708433B373C634EEDA34C89CDDEF45B406BC699B27D1812 │ │ │ │ -99361FAAEBEAF2148A1A8F20DBFAB70C2C2C70357BDEA2AEF61D002FAA28AFB7 │ │ │ │ -B9643BDD4AADF8B9676CD705CE7306F23852F1DFE31D12729D51005953266617 │ │ │ │ -4C0A01A6AD92CC4D8B7071489BD095D891BAFF4414EDC6546EF085230B458647 │ │ │ │ -F5B64782ECA7272C963E372B31DF263361A2E0CDFAF518F3F1010FDE30DE8A0D │ │ │ │ -305594E793771E80498839BD3A614A04CEF1D5D5D7E1C3146F4BD9CAD305862F │ │ │ │ -674A3E6BFEC39E74E639D0CFF442878618B70423104C0E0C755E3C669884646C │ │ │ │ -D0386D037E0BE386B52ABBB7322BFC4E142B39E5E3218DA31D7D3FB4B17506CF │ │ │ │ -1F0CC96D8C31E42D8DD8A82558F24C51CC22544F59E576215369320958F3028A │ │ │ │ -DC96EDFF4BDDBA921EF3E5B394B8BDDD762AB9E1FF9D3A01D0B3DFA73DB29D31 │ │ │ │ -5451E9D944853AE343C3450732A03E6056CFBE512E7606F88D9EBA710F419628 │ │ │ │ -8D738480ABE50F36C7E45B22E4ACE502F8EC009C04C6B17A5DB18D559C972F24 │ │ │ │ -1B85C385DC79A253FD074E6F066D4DD3905581D2F84558D62A5CC797649BB504 │ │ │ │ -0E31431DE029FEBE5E54661834B9E84BA137EFE8699DDCBD2E2151D7AC25622B │ │ │ │ -7A5F309155AAFE3B3474DB009A3012D9CBEF6E900847A174FC0DDB5AF2D38DC8 │ │ │ │ -E7A32557E48A775715D7BAFF9F84EE890903DCF919C07B1E7B8735E3B5F764EE │ │ │ │ -D55A638A1071819E0A365626B0CAF9C20C967E0E794E68C266E459E77909A24E │ │ │ │ -B067F88B97B8248C100C59AFBED5C7BE9FEC9E4D050919728818DC93AD855368 │ │ │ │ -34B86AB02E2A5FE8D6EB681C4C234284A2BD933B4309BE0587F08AF170A467D1 │ │ │ │ -54A2828B1F054A755F818885A8FF71CCDF3C151B61C907E8A401A25B732F26BF │ │ │ │ -A940DF50E84E8CAFEE6D5D6C740F555E57ECCBBEE7F45DD50364D80169B303D3 │ │ │ │ -8DF4351694AE53FF4D0F16C1C3CFB7C6D323743150A6631C0AE4FF9563071B8C │ │ │ │ -4DE0BC39D95815889C809E9C0D3FC06C45E5B98301775BFE7470FF8D9A688F07 │ │ │ │ -338F1488340255C135F0ACBC09AABA843FDEE45B6AB9FF0A807AD6B633364FD1 │ │ │ │ -E7FDE118ADFBE192ACA2F23F44325823DB047E41A9F724446B3C96FF9C990486 │ │ │ │ -280959D8147566AFA796C128EFDBE07C509210B3676A428FE06E0135F7E04906 │ │ │ │ -B9EDE749A26A9685797EDD296A8E706D5CA8C4F9AFCAB0D77A44BEE3E635AB67 │ │ │ │ -266566A23A090DF9263D3950E5C1CE205607EE27BC96F6A2F4F86CC1C9F94866 │ │ │ │ -A8DD863A622755B0A726BD83323DB0466E2C83E6707EBF5C46923F0D4903E43F │ │ │ │ -361C468EDB813AC0FE10A38330779EEEF176748B1B7DDD3FE09E1194A748B7A6 │ │ │ │ -4FAB62C5D2A39CB8548D2DDD50B78FB864944DC6883455B5348EAF76E944F163 │ │ │ │ -3ABD42A9642B5AF0FE79D5D8B495AEB88D46714843199F2D2BA11B6BBB1D422F │ │ │ │ -8A940070FC066C1A4C78849CDC97B864EB803E3F4A8B66A865B7D3F1A95057A8 │ │ │ │ -4261F8C3CD878AC701E6459FE1E28FA04043F71AE7BE9A79AF2389A3416390DF │ │ │ │ -53343BB9FD059459F8F88D453C0C1A9D942237DEED680D282DE82C1CFE14706C │ │ │ │ -2DA7EE5326F45F524667C876C84FA568E61475F25D426B385F240BF6A32FD717 │ │ │ │ -8BE6C8E0AB6DBB30E0D380B7D7E111BFDD6024730B47406ABF23F6A8F3FECB47 │ │ │ │ -AE5CA81FE6A84860D5C5A07D70ED95B7B0040CDC4020778E32E2E667D2F05295 │ │ │ │ -704C32ACFF19D5857B0C8C2DC33F8FBC3880C618C1814F112E88F754932AD43F │ │ │ │ -F25CC5D73519025A5B45740258C021B707885F24447A1B8165185886DB6324EB │ │ │ │ -B9D77F0A1CB6F6B6EF4CC62505F0F53D98B4F33F6DBBEC4ED3883D97B9DCBAE9 │ │ │ │ -77C1A6361E4F355E2EAC17EFE29589FC2243485C7D0D719D003A6BC6E1810BC6 │ │ │ │ -40701C560887497F53B5AE125F364237560ECAF51EC1D0A7B5EE64FCC02BB549 │ │ │ │ -90FD0073304D49CA63374BEEAA79FDA6BC1894B49960267793D30FBBC7C2513A │ │ │ │ -E7A0CE496890BC014F10B0E3AD975D586FC6B8C0F9BD1B60CFC0F12E0C087AE3 │ │ │ │ -DE32A8F4B701B215767F9DEBC879DAF317C8D343C57F9F7E5BA673F75E15F472 │ │ │ │ -9730325BF1769B97B63F68D0E0E18908C87F0A5BA25CD775FAD1837B1022F9D6 │ │ │ │ -CC783FC224B7D4177A287A80E01BC5611F80360393FD5BA298D3F5A7C7B98860 │ │ │ │ -827BF3CDFF1E6B9A390B756F08CD85F75F066456638ACFBAE34163B4EF55E3F8 │ │ │ │ -67DD0F3B1ED6305D674F2DF299F9B85C50757ACB73CA04FEF48E13925807EA39 │ │ │ │ -DC4613894EE0D8DFF98F991F65689D4F8B47B6A66CE1B539CE510AF1A35C4BBB │ │ │ │ -9B4AAD9ECC84B7DAE8C9E50C71A51546884B967E1375A4AC48E728FB5205763F │ │ │ │ -F26690E1B7ABF1699EA3AC3EF976A7668F0CD07F50ECD824D20B3357959A69AE │ │ │ │ -07DED050B1089628A803A32B6484678609FB5A4C949FE88AD2B12955FE3936D5 │ │ │ │ -000DB231D6F92CE2503298C49258743909A35BA1B5CB88C37E4A6F74ECB65373 │ │ │ │ -4076586435F59D921D0BC9F9F54A0DBCCA6A3AFF415C92CC2323180373921193 │ │ │ │ -E0A49A319DA68F6CB66EE8B7392C75A575AB32C5EF8E6FCE5D344A49C4F41E20 │ │ │ │ -A5AA179DFB14B260D58227BCDC66823E1FA0A6BDDCD099CF3D84F90342BC7190 │ │ │ │ -EAF493C7FDECB512EFF53AB6688DD596F41159E1CCCA8471EBB1C8315A5C1EF3 │ │ │ │ -E04221E6EB2A54738DEAFCAFEF1C6D50BDFDEFA7F8098A0FE0F2A6ACD6C99269 │ │ │ │ -5E32F479363C65C29F022EDB88F51F7410519CA7FA157B4C8BCC93E3F1E3640A │ │ │ │ -0D1B178AA3B218BCF6B7B848D5FCAA4C3EE274068A744EF2B8BD10B5646E81B1 │ │ │ │ -00F872484C92F06E2F64FFE39AECB02BDD3F2B7138211D55BDAF991885C574D1 │ │ │ │ -276B8F33AD22F5A363FF1EA9855578B8B9FFEF62FB247DBAFDB4D7E143BFE299 │ │ │ │ -B779CCE258AAFEF4EBD4E18DB18007D85B37E446D43404A306BA4049756FDAF2 │ │ │ │ -01C9E6830B46BD1B95CBF3679C4FD7D79D1494757248601D7C4176C59106AEE2 │ │ │ │ -AC6A5B314515FFFBD75A2978CEC1A26AC102837C9B9A6DBF3C159805BD04DD07 │ │ │ │ -0B16148B1C6B0EAB7228BC5D5BE1A573A92B83BEDF2615FC1AB174BE08956DB3 │ │ │ │ -A05484A90CE934EE781FC1BF80955D59361080550F69705204CD8FA90444F358 │ │ │ │ -2281849CD9C622D85104BD8F9CB86E78CEACEAAD8303780714851A9628C91035 │ │ │ │ -9EEABE88D85B963C00DAC07E9C4AE3D8EA49A081EEF1C9D83510370F3DE71FC0 │ │ │ │ -6D21C967026069DE6B63FB66768AF86EAFC0839069F6A50ECFE98BBEFFB89035 │ │ │ │ -1CAE04069AF9897B21DC60D3E32DE6F4F7E869480325C3EF33E24111D05DF5B8 │ │ │ │ -4F60AB24962BA1E7F15812814B2025CC1329B7A8C843B331CCAFB2A664A4C4BC │ │ │ │ -1102D35E4DC35E2B832DEC255836C33729C966A112B20BB71539301CB38E633F │ │ │ │ -A6B970F6B8B2004A34FE69C6C1746EDB04646D0F5BB02AC27F377BB4 │ │ │ │ +2F2CF265A67D34469B3FF1541D72B9B0B9AFB330FB72CB4D9444809EE3E5547C │ │ │ │ +80FD855F1733F58FB223DBBE8D1E7E062138E3F3554A7A07EB9C00BB1712A05D │ │ │ │ +624AB5E1D9A596177E566E14EC543AF373D6737BBA050C7478A65B851C2B285C │ │ │ │ +216A86A2C8607B03CEB9DED58C9BB5E9282CBFAA3CC2BA792FB5A4E3054FBFAF │ │ │ │ +8875C1396824B8E12C4B838BB34D41DB2DFC4C96F2237620EFA9C4FDFA969CCA │ │ │ │ +02CBC8203772884CB1652AA46485C52019D47B16F35F548035C0B263BDDB677A │ │ │ │ +A51564759CBE2847EE0835D3BF4D8F63970B594574AE314938F4019D4A350E32 │ │ │ │ +AB25DCCD4D43ECC7ABCFA07DBD7BBDFCEB8908AFBFC28E8F7517222B89C453A6 │ │ │ │ +89FDF47AC918C44F4AEE7607C5237DBB341B32032BD7B842E3147A09F1D236BF │ │ │ │ +B36493E9849967F12ED58C4CFD280FE501E1B70FC0222A6D4CCAD56EF1C0BA7D │ │ │ │ +4021FEA4EBA2806EF25C397AF9DBE171332A8029FE5C5FF2A99FA9AE577CEDC6 │ │ │ │ +6221A4205DF59039F7393F53EA4A871176B5B4C28362293C4D7E83F65055A0B5 │ │ │ │ +F4B68C67E93B8E5D620F528409DC57D72616176C70C2DF1DB79A59171F7C8CF5 │ │ │ │ +56A7E9DF32C224D2A21920F40CC41C6C40D746C87E43ED4F9E185AFB4233AE50 │ │ │ │ +9AD7B91A239067AB0D70008B7ABAB5485FBF248A62DCAE71320951DFF118250A │ │ │ │ +D4EA85BA4A23D01D13C7E6413D11A71704994AF04C23F0B23621B10EF5130E76 │ │ │ │ +FB6E5232F9913ADF19E8881875348CF850A5C9A34FAD91D0F6FF4798E2140DAC │ │ │ │ +6C2C9744F3383D2F6B900ADB0BFB0CB8382D6A531FB945E31449F16025E87BB9 │ │ │ │ +E336E71D878EF07E1DB62068E2BEE7C92E89AE7F84710D6ACFD23EAC7A06D10C │ │ │ │ +25DBF5825AE721E6BFC1BC30C28F239BF2E13A3FBC6E8E7BBDA5FBA60F3A2133 │ │ │ │ +60EB7C2CBD93CBA245696B318BFE00BCFEEACB3ACE59DC36C0C396FB05DCD2BD │ │ │ │ +F500D84BE30F38AC12AF54BC089984D956232D5195DF2525044179124A36FDC9 │ │ │ │ +91179B3155EFDBB66FDDCAA1CC65458C4731C4ECC6C31D795C00407AC1103A1B │ │ │ │ +FF267981ED2DE0707171625599A1D1A2E56BFBD64A28EDCF009F80D03EB1BBE0 │ │ │ │ +4A57B7DF88AC292B838EAA6CFBE6C7CBF9EA6F8F999AB22403B53D2824ECAA63 │ │ │ │ +BF215E4F5873754A32CFC3E0C98A0506B236FF62BF6FF20C72A8315ACDD8891D │ │ │ │ +F65426D815EB28EC5721F7780CF5DDB1CD5A433EAA684798E2E85BEDAAA4E662 │ │ │ │ +B8EBB83F1F197910EF2BCE2F75B07A03E3D60A05CF4FC215E2FEC430220C2F9C │ │ │ │ +570A04AE37CBAED2846D6FD3A06C498871B7B5E4336431F4648318E02671E2A7 │ │ │ │ +E8E8BC45DAB0097F68F4A563B6C857EDE22B303E555BE5A7C35B267C8EA0446D │ │ │ │ +5F0582E4FCFCF0E28F1E205843325E6D1EBC03DC9B6449345A0C6C2803A8745F │ │ │ │ +A6A26C8F3BC28C5F96EDB6070AE0D8592F9D82CB3D897C409B376661A23438C3 │ │ │ │ +9452B0A7868AE2832849BD3EC4F7DC92B6F918530A6D47D8BED332261D8A6486 │ │ │ │ +665CEDBCF3870BC1DC35E4783BE8CBDB4CE1B6215C2117E9F5C047E01DA82A95 │ │ │ │ +35C6D8F0A42C81716DA7657B2F8BB707F032E4DC4264837FE571040A922E0808 │ │ │ │ +D174A344198C07126B64F71C467D14EE44444D248598B6539EC8D65D5AF706F0 │ │ │ │ +A30AB013598B70AAC7973F46D8107CB2364CF6FB577D6C34F179A7752FDB8264 │ │ │ │ +CF2EBFC51F2F17CC076A16D8F8A673893A6EF9825FC7DD2AFB2495CBAF5A15DF │ │ │ │ +65FEEA776E281953768F46F68D2AA91A615A336584A26523F70B62208C9A8AD9 │ │ │ │ +8C795817C73E8AC4291FBE18EB5CF59C8E417008B754110071BA5E982B8800B9 │ │ │ │ +3A9C66AD3C7B792B2FDCFA53B23D70D751CF942CA946AB76CC6C042D464BCA78 │ │ │ │ +1F3C47C0A4F9D3784F8F1FB728B5D56BE632EF9272E1CF317DD2EDE7799D4331 │ │ │ │ +C6EA248DFD688E2373A40F7C0B4810F04CEABA32A36D10C65E7189D0607BD85D │ │ │ │ +087EFD3E5953408A326A97D9305F6F4C33C83B286A0C0F89C692C006EFDD9061 │ │ │ │ +BF04576868FEBEFADA6537CA48EADDEC9161F2AE38463CA9AE91A69336E25885 │ │ │ │ +3937F718F17FCC8CB3F32301DD76AE21AB579DBCD7F71238C8D44AF02384CAFC │ │ │ │ +8A375D355DB9737F0C78EB648D58F470D37F8D3118151D09531F63C7AEFAD30C │ │ │ │ +7902A94976425EE3142DBB98709AC8595498140CB8382E21A9691973619CDE0F │ │ │ │ +F652FB564748929DE4B8FE7BDA83CE2302786D5F9B3F5AA0936183CABAAFA15B │ │ │ │ +F77E1439ECA2328386E1EE53095976CAD4C927613EA1F0DCFD1C3B3490031DB6 │ │ │ │ +4E7A1A103FFC9017D210C279BDA79AA7E7F2734F743CCC102D73A76827CD7D41 │ │ │ │ +966355B6117867D0EBB7D0461A4FC8EE9969465E9268B15A79ACA322D93B4B1F │ │ │ │ +5FE94673E18D36CC0D3B6F872185043D2676CBA62D62F589EA1119ED592365AA │ │ │ │ +26DE1325832C3532701D05D8E31C3682982C56BF25E89D22092B428178C2BE78 │ │ │ │ +9A0E04E66A20FBC7A477E53DAEB5998E9A14698EF41B173210560A8BA333D46A │ │ │ │ +C7AD6DB25A25A0721B9DD2B579118AE10D5F897059CC010857C5427BBDA37753 │ │ │ │ +F7516C09F1172174321F9CF45F3C2EBE1FBDB2DAD258439B6A2995EE0690A278 │ │ │ │ +91BF36DF7CBA94E8F31F0CBD0E92FDA0567C4970099808019C91C6BAF89ED308 │ │ │ │ +5B5B1B89B3D538568D434B4DE2DB4869209A70FEC4781B7C07412090AB99AFB2 │ │ │ │ +89D0E786CBA984D05D8FFA2A1C5FC19877AE00B29EB9B5E0FC837E2552E8F7BB │ │ │ │ +D05671AB2B021AC1FA89B6A995B21EA06B86CAF8B3787718B18D2F9B899A3F3E │ │ │ │ +8CB1B502D13DE3B201BC98F4BD8C8F159EAE391590AAF6B23786C122E10990EE │ │ │ │ +02F38AF08AB8532FEF4176AF4673B7D6145F809562C28B9D3A71EA6CD16BF2F6 │ │ │ │ +40E3FEA3051F3A70AA63A9E3C10561D860874623AFC55D5D6C21AE0178B1FDF1 │ │ │ │ +0B02A00FB319B99493DFA82DDAE147797B0EC50263E5B40D771E58DEF0620886 │ │ │ │ +C7EE2ED07B881D67BE29C7ADB1B457328BA634D0CC2B62F41CE5BD28FA873815 │ │ │ │ +B081707FDD055B5ACBD101FFFD723FAD8B38D66B6913244AEA2B416D7DDB2D64 │ │ │ │ +E614E48DE087965E2418F93AE4F1EF66847BD3E9789EE3B9D340DFDFB3401F21 │ │ │ │ +34F252577E1D972C0FEA655F6ECCD5F67D5B155E8FF285DBFB125DDF97E6A436 │ │ │ │ +EAEB9D4213DDED6BEDF658C5C53009476AE7922C739F1982CC1F30A16E7FAA9A │ │ │ │ +100E7EC8766221E4B019495CD15E0D7C1BCBAE79C67EEFCB38FA5D43D80E0910 │ │ │ │ +5AF3BCBB6C523EF610CC29A530B3F5917F16141D11332477239F95BB91355740 │ │ │ │ +1B4FAEE09AC8263278E48320A8256C4B75A7A978B2152730276202CB2DB3A0FB │ │ │ │ +78921894BFDAA51D15C924ED29B71E8FBFAEE1A782DA4B19274A7A8EB4745350 │ │ │ │ +DC98502A584D692703672CD6E880DB4CD8F4E8737F61BD60E00156037D8AC88A │ │ │ │ +E3DD4ED69E1065460F2A13E5CEB51E7A762E033BD9C333C710AAAB7AAF6CB8CF │ │ │ │ +0CFAB5CF435B4FBF5BE1B740D4604CD516941B65FFF6790B241214E283B3805A │ │ │ │ +5A2B41E361463053E47B93473C4167121D05E97D261396AD0E9574445F3CDC85 │ │ │ │ +5CEDCFABAFBC9A7ECE322E8EC8B38C0A8DFABC0AE7D147C03A138815088F9782 │ │ │ │ +A545886B6423C2C68416DA586273B16E4F58605DE9E197008564D73FEC5480C3 │ │ │ │ +4B0DB5EB21F4257DA9CB58479D54793EA51393B6EDD112440995AEBD04616831 │ │ │ │ +F0F2001BD0D721F7363FA488729120B609A7CD9AD6F8EF712DD968DB2CF8F816 │ │ │ │ +941B2455FC8D8E4A8CA40193C8BDE09C2C93597D2FFB83695FDE55165D2F498A │ │ │ │ +8201D82560FD3D90CED7AE62C6A311B68FB0B27A335DEB93058E744ABF2DA157 │ │ │ │ +D56126767BE2146AF8F380A2713D88B8CD176B338CE725B2E363AF4C069156E1 │ │ │ │ +49035A73CC17E8C75337205E4F50B91F8F133E12BA02C0E2E3F8DF558DFC574B │ │ │ │ +5DFBB9B071E943043CBAF2660D2DDDD10A5E6D467FCD85BAFA665978EAE005F1 │ │ │ │ +5D47C93FD4ED5FA6FB49B88773FEC2290EE11ACA2AC2E286B52ADB352F8A7ADF │ │ │ │ +3B0372DBFF1C19239D84DE48BD5EAEEBA2AB51FB22292A28FAAF3B95B2B05782 │ │ │ │ +8F98854EDC661BEB140F850854AB6528318A5DC7644632F83C6235865F460FD9 │ │ │ │ +ADF12C32F3D1B508B9301E3847A31FACE1304071A2EF7F8A4CF52DB81CAEF881 │ │ │ │ +3796653909C7634070C9C793162A2AD131393B3DA5723CE5CDEAFA611C43DBBF │ │ │ │ +2C38BFE08DA56948BC4D7DD00B933F401EF96A6B2A980A7709B57090ECFDF769 │ │ │ │ +132F90C8F3C7CD7F15D490A70F55BEB6C7FF2EAAEC543F62F9A9A9F19BC8A9F8 │ │ │ │ +5195329BF5FD847FBF35A0D634BA9CFA6220ED432377CA1060FFAAD1CBA1F17C │ │ │ │ +B7C618F5CFB13A2DC79538C3BF39FA97F3619C459ECE5642539B81FBAF30DB6E │ │ │ │ +BD8A8A4EB345A8F56FF2FBA8E48030DB12D5B59107105FA14AB21EADA2F9527F │ │ │ │ +6B5B95828871FA7599BB863F538C2F64910DEF08A9906A8F1F9788DAE2C83FFA │ │ │ │ +2E35EB028823C033886BBAE255CD152DC64E35EB6C838F7DDA1469354997C8EC │ │ │ │ +CCA1C08BD760148ADEA1B0DB4E681C775EFF84218D9F493B7779372FC9D630D4 │ │ │ │ +FF4C05C47CDE903F0A3032F6955CD274FA236BE37C224333DD2EF0DF55A38927 │ │ │ │ +4891C4AAFA2638BA6CA3D338C4A98B5FBBE9F9A2142292C3A0390801BBDCBF48 │ │ │ │ +1C2D698EE58E7EBD177F601AA7323C55FCE72C4AA43A44E8697F5A0EE7AE2AAE │ │ │ │ +38BA322C38DEF4F9E503B7CE5F0512BD2ACDAEA7421E3821022355CD74AFE53C │ │ │ │ +3BD8FF8293FC5609B1CF33DEB439E565C3049D5DEB0446ED429187A75F615746 │ │ │ │ +3064FFE5F839F1C28E1B8868D306D105547AFD2825AD8DDD6F040FBDC85661A3 │ │ │ │ +9B8CCB4C7224A84EE2EC204EA0883B42982E0C6BC555227F4E7B70EE5B737BFA │ │ │ │ +5B71B542DF8F3C080680E470E93C9ED92EC18DB5661C99FE4E90F3BAF9EC7BE0 │ │ │ │ +E67E60511528462D3841B1077C146D45DCD5DE0C1E4DB343E161241536E75F8F │ │ │ │ +CA6D8C50AACE9BCB72ED5AFC287DCBE199F579FFAEC7366A56842E5EACB07C6D │ │ │ │ +12BF5B878013879210DDD98991E159CD71C063B5DEE59985ABB9B2913A3608DE │ │ │ │ +70870281529C2D432328269C463DCD59E954A90E10A1440FC0F0E0811A3E3D30 │ │ │ │ +BA0D5CD19196949C45FE6DB1650D7DB91CDCA90FF0A8D275F5295445523AB7 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -6750,20 +6740,20 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 50 /two put │ │ │ │ dup 52 /four put │ │ │ │ -dup 57 /nine put │ │ │ │ +dup 53 /five put │ │ │ │ dup 65 /A put │ │ │ │ dup 66 /B put │ │ │ │ dup 67 /C put │ │ │ │ -dup 70 /F put │ │ │ │ dup 71 /G put │ │ │ │ +dup 79 /O put │ │ │ │ dup 83 /S put │ │ │ │ dup 97 /a put │ │ │ │ dup 98 /b put │ │ │ │ dup 99 /c put │ │ │ │ dup 100 /d put │ │ │ │ dup 101 /e put │ │ │ │ dup 102 /f put │ │ │ │ @@ -6775,15 +6765,14 @@ │ │ │ │ dup 111 /o put │ │ │ │ dup 112 /p put │ │ │ │ dup 114 /r put │ │ │ │ dup 115 /s put │ │ │ │ dup 116 /t put │ │ │ │ dup 117 /u put │ │ │ │ dup 118 /v put │ │ │ │ -dup 121 /y put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA │ │ │ │ 0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 │ │ │ │ 51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 │ │ │ │ 7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 │ │ │ │ @@ -6953,182 +6942,176 @@ │ │ │ │ 7F4E88E917F0FFDCE68F22998AC0AF2A60A73258C3A4BBC42A2F918123128195 │ │ │ │ 196D0E150D79AC3CF4628503D1F3FC528265ED8324E56849A47B3B07C29940B9 │ │ │ │ 1BC270071E221D355EA51E9942D3BD7F99816304FFFC8F5B036C953B38759341 │ │ │ │ ED5D7B9C8E6B70C409DD8362FD291201CC385E4A98D73E8518A4C0E544152563 │ │ │ │ 82032FBD2FCB6E403D34B85ED4053A8CB619BDD4DE001F4C3007B1F317579651 │ │ │ │ E6D6662189CC2D95AB85D7473F65C5D7B4AC63B0FE928F3400035D5A9D443D0D │ │ │ │ F3532B99F3AC26CB25EA3CD64C341159061E02EFBC7C033C05CD919BBD827A6A │ │ │ │ -BFCF3BD739E32E7FE909AEE068D50FAC33605FFF98C7D0115FB860178FD03DB9 │ │ │ │ -7985B78E0AC21F2EA065FA841F5928FB85163B2E2D8F850DC7EE313912C45C28 │ │ │ │ -2783F6762C67882EFEDDC7E7567F91C16B16FD8D5A1ABF35B5586307701B91AD │ │ │ │ -54984598F2AD46FEE3D68A2731BEAA754C8E730FE0E84952EF77930E4118F8D7 │ │ │ │ -2F3AD7547ECD7EB31108291A22BBC656F4D968DF891E4F87EF8FFE711A48FFD9 │ │ │ │ -94762E9918C42251D75772AC97BC15A4FF63D911D96AADA1CFAACE8D7001935C │ │ │ │ -9D7A0E6B35E1522780C2629D74057738FCE1BD41CD81D97BFD99D19FE03B2EFF │ │ │ │ -7B80B18DA5538D06A810DD315F31DE1331EDB82DAC760E6D8A855FCA3C8DD9E3 │ │ │ │ -61164D1386FCA2A0E7735AD69D7D9C6335F02064419B2296ADA17DC51A1E2195 │ │ │ │ -45FA3A158E075213ACD6607B07385F0D9F5F3C5C385624B43B10016D497FA569 │ │ │ │ -103C0A7CC701BF1558C587B15A8094D8E4524D74DC263BE9C5D1C96970A7324F │ │ │ │ -5514ED0576D79D5A7C8CC2859C832B0C5869166DA1DB8CAC589AC9EB48379CBB │ │ │ │ -33B840FDDADDDA5FFFC54678E901A33854A703C01C16945C99655BF1BEA74EDA │ │ │ │ -723B5FC176D9693ACA831C563CDB35C96C69575A510E33D5BB62701CC6CF52B6 │ │ │ │ -0DC2562927C51CEE40731A968C796BBD399BFD4CF070FCA8E806F693E20AF9BF │ │ │ │ -64FECE20D4E0C6CA2A65F219F242989DAF5EF91F938A2DEEA46C955E8CA1B9C5 │ │ │ │ -8009E9BD1BFF6AF50E0EA9BAA0869F4377633A88B45E0213ECC54844CCEA9D84 │ │ │ │ -1F6977C49C4A8B7534547FD77218695D18B20D2DE3AB9E395FF3CFAF16B68567 │ │ │ │ -1CDD1815897177510547D05A6DBECB4043C9357DC6AFE4A3EABE996F5E769F84 │ │ │ │ -43ACD351A94D21ECD47F0B1684C323ED025FA44AB18FB87208F4EE00A3F7840D │ │ │ │ -BA11B94E295355A9D39C3142C78B352545AAA6F873837D87ED73C153187658CB │ │ │ │ -F39E6F64461AD7D018D9D095FA76167C36A66F06B2A6996192792904544A4E40 │ │ │ │ -E5366B12E53A34F06CAC4888D7169B177900B5A2D57F4516A7A3D0167450040E │ │ │ │ -80E47BFD76C69688F0EEA55F1695F38A07A4B3B963C3E0FB9EF0ED8832FCC5FC │ │ │ │ -935FD2EFFBA3CE5ADDAFE117C450B5FC8746D2F9E2365DBEC0575CAE967D5906 │ │ │ │ -F21BE7A91B0F2DF60798B7AD2CAB9DB5163EBCAAA14DBEB94B329AE9655E3870 │ │ │ │ -6347E63296241DCA7EED41E41FA5CECD4590EE8AC82C3EBA829777992B66846E │ │ │ │ -B8EAE74DC7A0F63F4DEB2D2512E0FE79572B944498DC2FDCD3DCCB12DF34EA9E │ │ │ │ -678BBE03B738B0FBDA297C8F3BD4791D778D9BA4900244582E79703FA686F5C3 │ │ │ │ -BA6E6CD5AA138BB71204DCF99C9100AA22479B9C5B383AFE84C92E7538144201 │ │ │ │ -B4C7FEB55DFA54ED5CBB3767ABE829B08B0D2F4B5714F065A0974A58CCC0C3C6 │ │ │ │ -078CD042A17E0005FF4DBF16290FD1208DF802E18F70A51E891D6783BDD2FA13 │ │ │ │ -9EFE4E64593C67913644931C523B0A824632DC34573C5147BEC162C7436B2F82 │ │ │ │ -F649D143F647A684B95411BB2448723E4253AC477DE616A38A157F3B52474DF0 │ │ │ │ -EC8D348917611076D1DA4BFFFE07058B931420C09E36399CD174DDF3B4829A7D │ │ │ │ -C7DDE89FB8A253A4D73C4A194A792092056FC2D15F85B40C8DC250E4622CB7BD │ │ │ │ -B1750593BA4023C4295EF8A1797637B82AE4BF7F6F4AE668E8917F5BAB2B0C2C │ │ │ │ -0E88524B3B3A45BDA3DDB3EBCA8235DCAEBA3304B6863071208DA3D4FB681A83 │ │ │ │ -8995C261C38E1C48336E73338829E8573CB4403487BE2EC457427498997519A9 │ │ │ │ -3B555D37417E639149D760EC7BBE7E4362BFEB1906704F2C240BFC55DBB1402B │ │ │ │ -8868E661F87857807A7683ED000CC65CC0820173CB67B6124E2A5ADAA0ED6DA2 │ │ │ │ -C0337775D7EAD9D4B4728E5EB080B558498E8C06DF39EC06F8531929C5B4C7F8 │ │ │ │ -1FCB5BEDF03A824186730FC6ABDE3FD34666EAD00C1C424BE369209A782893A3 │ │ │ │ -FF1B5C936EACE0C788B3B84C695945F6216104FA0DB059C40EAD8193A292260B │ │ │ │ -9D0BE792C0DE37B81700C163101540DAFCB57101418A826CD4F67F7FAD9A7292 │ │ │ │ -6F101A72D8A82F7C68450A4F5F12AA18CFE358D41A1C29BACD346D33DC2E62CB │ │ │ │ -DFC88327FF7F7469F0017B7D36117C71A5F52694498E870F26750E6A8AC8AF94 │ │ │ │ -403291CA685F938B14DFF416C6D61A1E468133498674581C9AAC477253337EA0 │ │ │ │ -FA469A5AA3DAAFDEA74D4CD65EA395E5A4D4E87534E6DD20A534587B28143FE8 │ │ │ │ -7AD79F058223666D3ECD2430E2D1111218AF0DC460745705230773D18863449F │ │ │ │ -72F8E1900AC0FA5454A8036ACF68D86D230C6F946567B64448D6886D04FE60FC │ │ │ │ -0F223489C0765F3EBF456D8525BC448AEE535D1A0FDC71B559B76344E263BA35 │ │ │ │ -F2B713EE4937DC800F0FBC0ECF642C476C82C056E181AC1A91E590AD38466F8A │ │ │ │ -A97EBE82E45E392FFCC6404680593477FD2C734499907AFDCA039936C6D7A580 │ │ │ │ -FFD258E9D65F214322E97CFD5B5EADEEBEE026D56DACE65C39026E5C212AFD60 │ │ │ │ -07046EFF05C0C3D90057D8C30DCDA63C961AEC3DABDAF62529214186F66D7070 │ │ │ │ -AFBC41E14F70F3DD887C436CDC5ED3CEEC8F2E424F2CBD93277754FC551641CF │ │ │ │ -5483A47C5E99A7BDB8932D9EE7C6D29F589B894783D73F3386B3840A4997E106 │ │ │ │ -AC600BED4930B7CF3AE7EDECD4F21A7B9908D50839BF1FC4C1235CAF3686F91B │ │ │ │ -39EE3E6E45CD70D8A4E302C859494E0007DCC86BCE5E2770814AFF0A6F04B80F │ │ │ │ -4B87F0CC511810CAB0ACCE294CA3A381FD07383D301035B11B2EBDFFE375730C │ │ │ │ -AC1B2DB49560F4064B26C802531B956FFAB5D30C16311DAC808A829A4B5747DA │ │ │ │ -D80954BE943D8A04E6529E183C4E52082DCCD38CC4874C25E12FCC2923C7AD7F │ │ │ │ -D5A458A2142D2E272260F5E5C864C83C968BB336D0560841241A363F1061FCCF │ │ │ │ -E86D80F84A91630ECEC549DFCC5F5611029E7003EF5AC047E00301BC1FE192DA │ │ │ │ -C18F96D3872C6DCE5585FC530AA0ABC24F934ABCA25AEC6500D0A8B2E8D33DB6 │ │ │ │ -4BD3BD0BECD3D9C63ECA2AD3850126139176EBCAA1A806DBB24F58FEF3EEEDD7 │ │ │ │ -9B75D16110561892E26CA07F926C5309D90FD07B0EA7BA39FD81A157B129A1F4 │ │ │ │ -7993C2CC9F10224FA54E7437617EF0582B1BFA6167BE59517B33FDBBDDEA9A09 │ │ │ │ -9A027B68433B0606C967D2C7AEF9C4501CE1398F8D4CBD49CA418C34625C734D │ │ │ │ -8DA2EEC82C36E9442EF078AE635DCF026F0E268FD3079C6AAC926AF0ABB4126E │ │ │ │ -002C33BA0489C3E4136D341F55660118D3903D6B912C27A55E547E47718F7D30 │ │ │ │ -17C4C3A18598C0C3FC14283DE219DA04EC1EAA69FB023FC94012AD42B12D6D57 │ │ │ │ -BA482F757970FC05D857DB6E00AC7357B878C0CA03B501E59EF3BF3033502E1F │ │ │ │ -59F53F8A2777A8064A8DD59A2856F24DC07DDE6C1594593A070A8B567C475666 │ │ │ │ -E8658FD098C3EDB30EC9A5307B0D94F9DD7C705631D84E365B4509C35E7CB200 │ │ │ │ -D6929F0C0CDB86E465903D4D5EA95BB8AEC99B0CB61CFC941E6786C92AE54BDB │ │ │ │ -E1EEF5862D4A566B4422A65D60BCB7B1FDD7D83FA8EDFB7D51F04181C189EDDC │ │ │ │ -426FE887AA6CE6B1CE413A584003D15BE332551EABEA85710DBB2A6176F22C3E │ │ │ │ -16AAD37365CFAD105EEAE775D295FFD041C66337678351D387DBD5D5C9699047 │ │ │ │ -10EE1BFA702FF5CBAE295AED22FEFDB973BDA9BC2BD33C56AA458CBAE69E5DC4 │ │ │ │ -6EB08947ED42EF800244C20FF6059487A656F81F14C104F9566BD6CA7F386040 │ │ │ │ -77B3237216CF4D29B1C65E674DE316E509B146DFAEEF2072B2957D98A1892EA5 │ │ │ │ -2C1C4A8EDD1F484269D8FC96C4A27FE7F7F9511BF3354475C5F9E1B1322FBAE5 │ │ │ │ -74D8DECF6BC1CD19081C5F07D13D81E6D24C7A86F97339551A75340BF40CBDAE │ │ │ │ -F7ABAB036E28C9FB44061511047F651C86D037322AA80CF41D1F1897C28F1C7B │ │ │ │ -CD913960D6470519B2DFFF1548AB0CD965F374FFBC77AE08490A2C18F74C859C │ │ │ │ -3BAABFE9FB79182D238733DF113FB55AFAE02ADEE8FD7E9AC28E9EDFFCE3F903 │ │ │ │ -56386146B70F8ECD431452583E0A9F964530E5EF0382F425DB6326A760F17EE0 │ │ │ │ -4293335FE20AC1D28461A349D97951F6B88D36443FF47E67115F94D0B71C4F90 │ │ │ │ -141CED3CB627404C3665C776A58C3538F43A53B78CE335CCCDAA51206B9CF8DD │ │ │ │ -198301DBD0AD5C8832A930A5481D6F2FC46036AC976D3E02BEF8D2CC7070473D │ │ │ │ -ED607FEAEE6CF4F4AC93652DA6292E961530A29B06916CE6357F65FFE4A45DD2 │ │ │ │ -04947274001D093F0C99BBA57580CEA99F66CA3D709E0A4F5A8411809C71D1F8 │ │ │ │ -1FBA6E5BE545067B1A695C89E82A24C97EDA1AA964032AF25090E3619D7657F2 │ │ │ │ -C60005FD9400F31A103A523EF545FD8E2544F5302B1440FF9FD85536567F3B23 │ │ │ │ -F362E59EE45003DF9342AD5FCE60BDFDC2923EFC0476D50D006F68C0FE568B27 │ │ │ │ -AFD8B130F28BE27E0EFA9393FACC27CCD0F3C8F75A2B0D0AFE57A4206DAAC07E │ │ │ │ -B1F1593F9C9ADEB3C382554D139751AE64B7F8F979016093999DFB9BA38F6F16 │ │ │ │ -9BD3590D2F4140CC997DB940C48D15D76D5C50BA5E365C33352147C2BF3E0FA3 │ │ │ │ -37217920208E2F6B96C4F4324C63853FAEFEC9B919E97A02E63F8B304B501966 │ │ │ │ -32C4142F2362DCF542667190D9817D703F511109AF5A63D503176588A1AF6E8E │ │ │ │ -266D90EBEA4C25F73198075A4DEC1DF026B5E66106B7162549B7A546FB93F08F │ │ │ │ -29F04A697570CD8D9A463CFADE98DB49050266DC95C4736BD1443CB3FCC1B06E │ │ │ │ -49FBD0CBB45ED3044F19F5A0433E059C7DD5CC28E07EFCF7DD16DF3B3203A011 │ │ │ │ -ACF6D7DE3AA89E262DD177C74A84A5B644D6C81BF1F887F424E9D66CE22181F4 │ │ │ │ -46814E223CC1434D1B066AAA87A6156249D105419C1ED6308DA42EADEB4DBCEF │ │ │ │ -31E7EAA8BA7F774B2B90E2201A3AEA2B73875938BE310D0033732DD3ED4CEC10 │ │ │ │ -FCD9137F7E29929E98D2375250B0E11718FC419AE4581F89D022C0A6FA571A02 │ │ │ │ -55772CB57048CD1378BCC331C478B7763C5574793C668EDD5C62CE3A72EDFF16 │ │ │ │ -B0F3B2122691C6117CD05ABD47AF12E2F01B5AA3BCB12D4B7E324C88A56817B3 │ │ │ │ -3188B1FC3DF5B0E4AD770BDBC2AE49B5EC91F4B3441D3AF5ADF70B40B300B103 │ │ │ │ -70B58EEECD16B96E3B61705763E6CBD620B27E38311AF73F99C353DC30A2536C │ │ │ │ -FE25F2C7EB2C3C61A6632E47D07DC5A45B6DE42BC5405908F82A029283BC18D0 │ │ │ │ -FC6D166F96E80FD1C6DD302F967546207F0918BE67DF5E151C4941AAFFB99C85 │ │ │ │ -51D7E126B0C15BB51F7F54782429A21E2AF2B7536C033127BB852D7ED15847C8 │ │ │ │ -2AF738D1F03362AB26338442600B6FE6F76335CFA3C5BE39E67CCE32343ECE29 │ │ │ │ -50135AE4E1CF7BF39CF7B157CEC382FA2773D2E06E582C07EE3FDCB8A7040E4B │ │ │ │ -47FDF1BBEA485324F2DA364FF4D78590A0EF555FFEE8710EBA49341F58A94E73 │ │ │ │ -B5ABB51D27F1ECFBBF097503B35579DA0D81B92C12ADB6373D03BD07B8A0D0EC │ │ │ │ -B484ED404898C9CD4D1C0B15265535E738225363A9C829038FC3A7098F0ABCCE │ │ │ │ -BF343307FAAACBF0C17696AEABC7799655B0311AF2E26A628BF9494110942847 │ │ │ │ -7DAE21DCA9039DA02BB3F98A13DB98A029BFB56C1CC359BF11351EC8AF891CC1 │ │ │ │ -45883D821F10D5BB6938AE0213D79D6A2DA1A9313C95795412845E83133FDA1A │ │ │ │ -43352A9B94FE090C8D378B34DE43A67E6376575D55D421B30E80BF34042B018E │ │ │ │ -26680857F9655CEF2BB82B8A154ED651C6514E5BB36415AF06D6B9ED6C0DCB29 │ │ │ │ -5249365351A9846216191026A9BEF0730D2910D8D1BF98DEA645120BB0333677 │ │ │ │ -973F2E2C76F10C83E9B1A0AC23CB7C126C48BE79CC32DF755F59CEBE81267A54 │ │ │ │ -4B7C3BE8D0904479229ECB0C12B34A5A945BFFFA0424F36ADCCEEDB9113E31CB │ │ │ │ -F47CEEF6D65C1719DCEC3710FEFB099FC7458A657766187D92A8B25390E6883F │ │ │ │ -BBCD1ADE5E58C3A37053CC677AD59A6E35F0892E0C213ED28C09AFF587D5EE06 │ │ │ │ -B87EF594709B0E7582CECA654398AFF4D4B9FA214A43DFE47D804A6DB3E45B27 │ │ │ │ -FA8250FBD981E664B7EF01EECF257B1E9BA42403DBB856E5B238DAC4A6B2E73C │ │ │ │ -AE9F061AC3AEA27413625191756F3CDACD8E283BE1E640BD0B8774022D71FADE │ │ │ │ -F6F49BFCC172C3D4340388EF856B40B3ECD2CB93B617238EB891CB1D61DDFFF2 │ │ │ │ -C38B68469357AE0284271F44CE12BAD5731A7BA8047BBFA87575F677CDCD4B1F │ │ │ │ -6F34C7BE67E45058CE5A77824E41B9BDF796134553C7B5FA91A13862C45FAF8A │ │ │ │ -0D27FD36287B701431CFC5D478494C70B6520E59FAFE2103D5C347AC576D1760 │ │ │ │ -EBA73FEDF2ACDBBC9A6EE6BDA6D2472867BD030ED45CA029C4D40F8CFCB700DC │ │ │ │ -FF16AAD25A5EB119749FFE1197F498AA76A0D5DF55145A90B55C7813B0E48DF8 │ │ │ │ -96A1DF75998F0372BC957AD6FE15760E191CFDBA9E2DDD38B8CBC516B9256E4D │ │ │ │ -7A710673827C9741B595453BF81BB7A8B1A8AE3794CDECBAD66EC26621ACDAE9 │ │ │ │ -6BB63996EB890A9558EE1192D70E11CC9A8A98DD5E0CA73B01D085A72BBBD341 │ │ │ │ -BC5D8D5D9173436DC31C9818117AC978465D1F8743FBB6783EFE258E0A59282E │ │ │ │ -4D69A4C498059320516761B696A37A52792E3FD6FDADEBA1DD6C86E7AE011794 │ │ │ │ -44EC49BEFE13D9339C2B38B6682B633D1577008DE1F28D815C3F0979879AC2F5 │ │ │ │ -D4D3B2ACBE512D292A95A82E955F3FECF0FCEEB23B915E952669A31166758D38 │ │ │ │ -955A35B70900EAD5DE08740F8EA72BCBC9FBCE92C9DCDA23128F34780FD32DAF │ │ │ │ -AE9F7639B2F858CD15BBBC2E41782E89BBA1C1FC0BE0DFCA0ACE20281C2DEE33 │ │ │ │ -43C10F478323409430851B0B4AFE6EB43100E7609907320199E2ED87B18EEBC8 │ │ │ │ -DE58284AFC78EFBA7DB5E0B7F540317F92CCC0BABB18DF1214B3A283A624CFCB │ │ │ │ -41C4AC20146B12750563E1871A1F150DFA94E56B3FCA6F60EE61AD566E259411 │ │ │ │ -898C98796D62A5CB279EE5F9D14D49A88A6D2E8C990A7A73F6F7436140A7DEA9 │ │ │ │ -681EE16441C391535D5CCCF89AE0735D32471BB0A1B77DF1780506979C4B0AE0 │ │ │ │ -570AFE32C6EA0AE3774EE98F15D9C14B4565234AC1FA5BA4A0754C9CE77C18E5 │ │ │ │ -211F68C6B995B6710539018FA133CE3884502CCE056B81AC32A5C1B37859E7AB │ │ │ │ -26A1F12C2E038D275429D01A340104524E701CCC51A25956158BCC12532FFED6 │ │ │ │ -BCB563BC485E336BA4EF81277BECA964C54B43DBFC95C37A655B425680BF6B61 │ │ │ │ -F2ACF9D87D9172A437DF0016B1813D6BB3BBF45B204DA8300630DD201CFF1B8A │ │ │ │ -F2F5AF7EF270328B91E834A1013B0615DAEB7A28594753D59EE4D7662C8A3D16 │ │ │ │ -5FDC8482245F2896AACB8289A6A2DA2560DB960D928C388E0C3FF9D39725C972 │ │ │ │ -F19E2395B34110EE521630B760E992D88783FA00DA8BE816518BDEC8A1B718E6 │ │ │ │ -B44CDB61AC6313003686C05BA80C6610C14BEF2FDF35A97F539DC1F7AFAB00C1 │ │ │ │ -7AD0B07D495E7E693612A867539A3A9C0D350E4D5AF484F099937F5D786797D1 │ │ │ │ -34CCD8BC394D38E27A94E858237E1396F6A85025CD304A4B9CE252832491C68B │ │ │ │ -04667961A741893C25062E84B01672EAF03772259F0704CF207AF623455FE37B │ │ │ │ -4C326F3875AC760BF975098549E968875799C51EFAB53EE825783300CCC9F4C7 │ │ │ │ -2E6A86A170915EA1D8 │ │ │ │ +B36258037B5F0DF7D78C26C1D24931A18A2606939F9933100C723ED2FD991F4C │ │ │ │ +98CCB4F15E381B4886FE0E928D4989A0257051C547165291D35FA5BCF359E153 │ │ │ │ +7EF69FEC09DBE6A9E866BAE054F56E86CA2D299F8DCB88685B932117314A73CB │ │ │ │ +5954C6D639CEB6F8A0A1F4D9414F1CA7CF3DEDEE81F75D8B5CEB205425442B32 │ │ │ │ +8703A8A79A51613E3E6A46C9B7B1052C0A5491130E312ED3A0A2F32C5D52B15F │ │ │ │ +9621BA9E1688463FEA43F72D5FDB6E8D0739003C1D8A04E1589A7FD3F405364F │ │ │ │ +CD0677FB7EADC0D62CB762350689F751F19E6389284C97A5163CAD892E9A7043 │ │ │ │ +AFEC5A36E7D86F5EE345576F3AE6927C6F5B2A095817E7796AB8CDFE0CECB764 │ │ │ │ +1D3459669942B17D3825972CAC8ABE85D65653F80D780A1DD8CE08BC9C7DFDA2 │ │ │ │ +C9F2AB7C6CEB4FE5A158ADCFDBCD6B4F3C9CE40724AE4FAE30F0C406B5CE2F7D │ │ │ │ +64487C640627136AD6FBDD1DB07602D6898F36B41F3F05E8D372458B8B1DC1CB │ │ │ │ +8931B0B6AA5B9301DF1AD61A1DF72E6E1E9367DDB31A278C8FB7D8CAF5B0F397 │ │ │ │ +0F36CD8D13B3C2E65B5EFBAE8124826EBFE1AB2F2774E3AF8C5A15513E552173 │ │ │ │ +AB61A24BD189EF65413EB261484556C37471697B37B76A93EE13D66B9391CA99 │ │ │ │ +8249134A33B4D675F994F30428B52B3907F4A97FB4D2B3C070180B50C16179AE │ │ │ │ +03DF9709FF1DA296703240F859F20E991422B38AB0D364FED870A0059BC9601E │ │ │ │ +37D09EEE73271CD255F8DF03C6CB4B41037FC77131835E0CEC55F01E2A34318B │ │ │ │ +7BF1F13A7997335A19249102A48BE6579F9CE29482F18FF1C32793B52B6C6550 │ │ │ │ +8403DBD0D9235174A5AAC21AB9714B6F2718BE7E558D59AB96B2EDEBA3047BA3 │ │ │ │ +73CE874904C5DB61A19C3C41057220A74199972C0E8E8BE2CCAC8B15A421A9BE │ │ │ │ +ACD4C3FFFC6CCCCA140CD7A07CC47946CFCAECB183BCFAF3FAC46A0164E5E410 │ │ │ │ +27D6739A041B24D30FDF1EFB5E60F9BD968B9C06AB87A979278981AA3CDFE761 │ │ │ │ +E9CB6D81A34E204E27E0835614980663D7D88B4AA2BCEA84EABB29A85D2CF3B9 │ │ │ │ +2CAB233D7D765962863297472FE59D410F690493E7A06A5B11939F594B2947B5 │ │ │ │ +0A4A95FD73E205FF5D3ACEE599C1968206A04B15BF321636ECED3F6FA3D7B6BE │ │ │ │ +F2DCBF81FAD140D932E3BEEAAB4A904B7AD7A3330063E3A146799A21D51A6A43 │ │ │ │ +61C204C9495C00B6E65982931E573CE70161B00A96963CC8F2B237F92659B2C4 │ │ │ │ +AC9A4EEC2CA784D1A7C53172A7280B963FDE5063A5BF53BC65CDD985EADBA532 │ │ │ │ +100E33D434E97F193B4A168CDF57CDBDAB70BA8BA707CDAF8E3B5B06C15A4A8E │ │ │ │ +E148829B5D559408929CC30F5DCBFB983AB5BCD5C063821AAC7CE0D0EE772D17 │ │ │ │ +04C9AC22B840E335139BD3F0C6BDFAA2839921B39253DB1FE4D6C1F0B862CEA6 │ │ │ │ +3C0A7280C8C8734EE8158C254A4D2ED7C77A3F9CFDC1019DBA77BDBD3A5F3FD6 │ │ │ │ +97940A52B22AE14AEA235A735D9B7D9BB3D68F91D4F13604D2EE90899BAE2F33 │ │ │ │ +14FDFED94112DCF0C53E2E4C25BA5F884A08844400816621B1E7E9D9AE9AA465 │ │ │ │ +351FD44C2F86213EB52F813F6F89B52DB4745733BCDA6392CE950C940B1CAA8D │ │ │ │ +0F13FD442E1D1593387013FC3F0C95626A6FF458CEC9C7EE0404A95DB1D1B26A │ │ │ │ +87415D6451E773F691A58AC3F3B16D909846C03D63B115C1633847320BD84C3C │ │ │ │ +C4C91300477F71E9108427F24B312C521B7E90AA5592C581B842E4E78D8B0B6C │ │ │ │ +C04CADD279FBDD1AEB32E0E23F0117DE9E9D5CE1D2A339A99761D38E5F27EE36 │ │ │ │ +F3759600B8F001B2D2FF625AE52699F16700554BB5F6E0D412D0578DE14F2489 │ │ │ │ +01D34F93AC70092796FB475B7DE4EE9E194B42E532592376A74B70FF650B81C4 │ │ │ │ +CECF7DD5957A24363D2F14EA327438B0322672AB2FB58E2FE05D8E06F2C4307A │ │ │ │ +F2F4C5C241D50AEBCD0C89D27BFA3AC84E1EAF01A345868FC98B71FA66A36A94 │ │ │ │ +14D4C43692A3125554FD4CFD338A67FA9E720D2124947323B7A1353D433D6F61 │ │ │ │ +741EB33A12D951DC1952391061131EF7F61DFA4D386E0ECC42C68BF876E5ED9E │ │ │ │ +85685229A1BA061EF85F89F09B25F78633320DDEFA749BE6B78F7B476D2625B8 │ │ │ │ +00DD6FBE43A473D59D351D979D3E1F2609DD571D5514D703516AF1959B5E0904 │ │ │ │ +41F3537E152408B9F9725E73CCF1AD7EE0174200848D2229CBD4E565B60801DD │ │ │ │ +29D710B69B23B5C88892A77DEFBA41EA5D802D69B8EE4DD3F9D64814B58D5899 │ │ │ │ +18B0D3D46E8E8F80446B72821F52F92BB618085B338FD29FCE6A6302FE928673 │ │ │ │ +58289D9B3823C6AB3ACA4AD8F83D53C90A6A95C58E5821DC7A060881E3FE0294 │ │ │ │ +FA02F8CFB24330EE4E83B9A8AB39E1F28705DAA9B80A2DD1904DEB467260B05F │ │ │ │ +0A2A3CB30033759A501E6577657B938EF1CCF05A2E1343959FC6D030B379556D │ │ │ │ +323E7D7FD61C8B945D595DAAF0772E17327B5495606F47F7F6E5207E745EFF24 │ │ │ │ +A60BFF45373A559F57EC7329016C4731DB5CC77F8383CDC5F1960D24108EB626 │ │ │ │ +4C73959D07E8DEC0D16CF9CA52E466398F454B282537DFE510BECBCC312B5F4B │ │ │ │ +2088C8C8EE30129D4632A7E08D26CB1751E6F6F92303B73E2C18CD185FB8F8F5 │ │ │ │ +817F6CE198E6A3DD6C4D799DE07BCC34825A3440FFC5594B2295183E37CE546A │ │ │ │ +B574FAF6781896291FA49EB171A32189C6225613EB5D2032568F70B27DF932D9 │ │ │ │ +ACE5DBFFC61BB655893C4122206C12C0B14C63556E8A0FC862560A24CFC217F8 │ │ │ │ +A2B830C4020CA6538FD0514AA4DD4F6864DF27FFB2E7D5FCD3E9903EE2B3EC74 │ │ │ │ +93F6538DF51A8DC1B74B73E545A477558E1D73FB23A620D36B7ED99A27DD110D │ │ │ │ +A92B5BDD0A004DDAA2A1BC8299855A9813CAF3D5F6449470E9993D2C6EE4F187 │ │ │ │ +DF90E55692BA97A5819EA1C055FF78DEDA3446667D4E1F418D07475B28D8EDE4 │ │ │ │ +FE5AF25510DA931AF66D4CD3427DC73B711C04E123E2B8F06D5BE1CC255C38C5 │ │ │ │ +92F3A8C6BCE6418161F583C49C4DD8245339F77E984ADFC4099E16ACE80F7F2C │ │ │ │ +4367ACA943EE23302091E85FB4661206612C6F104C71EBDEC5EA6250361C3691 │ │ │ │ +B77560ED60A764C015004DE2DD92ADC4BEE6CF7929B8DEFFDF62530F5DEAEF12 │ │ │ │ +618172AF7C0B9168315A86FE5E0D6B96CE2130D96A7BE89FF39D74172F4D24BA │ │ │ │ +618A99CE0F761F7061084BEAFFBB6E48ED332B77DC0A62DCAB3E55FFD17A2CBA │ │ │ │ +8DE23D8F422F1165C5C1C123AC6BE948AF7324F0A36725EDBD8071037DB6064E │ │ │ │ +3C4AD2FB7E0DD087595530B345CA12B0574C8653C70BCEB10848A5BB7638B8A3 │ │ │ │ +C93765101E6DCF9A0A6EEBD4D9A8FFAB482B7E3F800C696969247A9A281810FB │ │ │ │ +0955442340368E642CBB0ACC9F4FDE33878AC33E54C86554584956A91C9C9C56 │ │ │ │ +E79AB1E268F91B776944519DED648B286E933D16B1C4A06512B4A5E79FB67C73 │ │ │ │ +E9A1A9E6B83FF19E3896DA7F7C77FCB3E81EE6D0F6E97DBB3F13781C6F65C0A0 │ │ │ │ +9B5475BDFEED52D536C0E19CAC01E06EAEC6FBE0B9BEFD6A57E2AB6E6B91CD5D │ │ │ │ +E5CA55F8B4A9494DCE21BB82164B8F1BE758C675640D853D40A8F0ECE352AE48 │ │ │ │ +1AC289FD24379ECF47480F4C5FCCBEE8A8ABE192F0450FCBEE2EAF6D50D43AF5 │ │ │ │ +3FBBC5E0F749BC6B29B1991EFB4C22FC91B305FDB3EBFD4F38C31CF4FB714C05 │ │ │ │ +6F260533BDC812DA745A52279980233FE976C35D851BA95548542B061C7A127C │ │ │ │ +4A2706B1AEBACA721D4F30F9F70D47D81C60135DC1B97EDD4C54B1693E5896FD │ │ │ │ +71733B6D5EF942BB1FBC0493F49A0255FB139812625383EA6FA17C5D14FBAB1A │ │ │ │ +1E4824555FFD192D6623E84FBC14C3290A43680FAC6C93C35291618D94C0AA98 │ │ │ │ +6D50A7B9AAF1A26890704324CA2C71AFDF0461EFE9B29183C4764B465ED174B1 │ │ │ │ +CE866F89FF8DE7E8F10BC22595B2519DF8B87562DB552A728A02C12C21B53A26 │ │ │ │ +9C3FD64D92D65F04CD2E724B16A740E02C011D4CB9FAD26186AE29B5E2252C3A │ │ │ │ +1D7C211B464D9D8D5C018D6478F1E9C3392020C0D079335281478339F1FEF879 │ │ │ │ +8E91116F9AB3BDF831244D1CDEB515F1B16E2B05F820D718AA4C478BFE8FB85B │ │ │ │ +F12EF7DEF075429D587A145A79FF611A8E2F455951B98448F99E6E15BD4E934E │ │ │ │ +16DED9E4D59E5F3D8837F31CFE0402A4925BE2884DFCDFAB64552B41E752776B │ │ │ │ +4994670D3D8804DB6526D490616B1622EFACEB46946DFC1C9636F5A5B3E56201 │ │ │ │ +B3172FEB830CB7DF579184AC84A4AD6B2BD2D7849196CF87774FBC07C3F63A4A │ │ │ │ +65662761DBE0513D41535F4E1AF14C80D2EAEFB8B9D47413E3898334BD99CF13 │ │ │ │ +C1083811434A7FBA494654C77B5F944BCF5A6E942F43CBCA835E07CF73E32089 │ │ │ │ +C408301815AC66ABA6E58F79CF376AAAA76510408BE12D91B08314DE5FC75470 │ │ │ │ +7EF9A17D5EA0B99788F445C4140EBEDA56E5E20965FAB1814B820DA5703B63C0 │ │ │ │ +04C531021661630FA4EF7D71C1BB67D2F82CE2A1D228026EFE4FEBD0E749115D │ │ │ │ +8EE0973497E1D1514EEF5F4C1B7249833B15F6313E2F441454CDF0EBF5A2F198 │ │ │ │ +F44763C2786B348CA1D18B186FCA311FBCA7710ABA5FBC1DEDEBC211E20669BC │ │ │ │ +B0355B104A19C54C1F1299E9144B2BB710E1E2C2B5F8A6AA8B9644A1060D2449 │ │ │ │ +34CB97F8203A778B66E8DB578F9D345C37DA1B437A47BE57DF7769E683BD82A6 │ │ │ │ +25CBEB52DF8D0AD758BE831F1321ACBA4E0C1139E3F29AD4CFFAAE76AE59DFAF │ │ │ │ +E46E61B9E8F4EDCF5D70E2124B951ADE0CFDF867388578E8F48C9FA56E568629 │ │ │ │ +556DCD580003E24061C05BCB8DC95C92CD839E695C3624755CABBEEA8C4A8E8F │ │ │ │ +FA3E5E16A9342F1D1836662EAD6CE4606EDBF7194BB4B42CA815EAFE62B4BF69 │ │ │ │ +3DDFE47B149AD447605F2EACFA308373E07C19F1834CA573CCFF6480C66F2600 │ │ │ │ +672B3037EAD6BE94144D6A9ABC45C069AB94164BD029AA6A9E23218303505DA3 │ │ │ │ +449A6B6FAFE6A4266B685697242CAF88A76C7F19E6C72536CE96072AF74E21E1 │ │ │ │ +3CEB81B9EFABE72C7195FE31C9C164F9E822038021106A414C9815C19601D036 │ │ │ │ +FFA34B6EB0F5C433218ED747370E5CE740B77BAF448D687779D351641B4FA535 │ │ │ │ +FDECA37E7E8586DA27D3305106EE34A9375060737A823E58CB2BB21B6B3798B3 │ │ │ │ +941544A3056E38A0835F9C92D192329B46829DF3EC892C0AD2A8490B3749A4B9 │ │ │ │ +58A2ED9502E1B7BBEEC19B5D6B1575559A05401A3A9DC06C7B364E6040B5F0DA │ │ │ │ +22F08D33BAE61389D0373C3EE0BB24B246A9DFA5574630958658116480AAD42B │ │ │ │ +38231B1CB6FE9A1C1218C9613801A7D518C584F09B6D976C3195FA386B389244 │ │ │ │ +F65262735321C998AFD281864615DD89783BA5F739A48286EBDE25465DF2474E │ │ │ │ +9ADAA51AC3556B48BF53EDCEB427A347756A20F34A8196FAA683B7E135252BAB │ │ │ │ +6CD5C44E1382C307E7E8ABB2DD68C84F9799F7D619EF5C5E07B713DA7E8FF824 │ │ │ │ +69863FABE7B8E5EFD215DD166A31845175CB028D2C7B6780EBDFFA968524FFDA │ │ │ │ +F994E825ED9710DA326D0A79FF61870016AC45D39CDF302F2E4F667EA0A511A2 │ │ │ │ +3CD874BF8B3F4093377530E8F013453919B330C9854C40B8B439A5E305D4C76A │ │ │ │ +56E978375EA0B1BF836DA542A410D861A840F9D4F064FF124BA5049D5026B096 │ │ │ │ +5D4F5036B1E3DDDBE02EEC1630C5811305E465D4D83F153447C4D47FB2B2A80A │ │ │ │ +B7B924F11CEDC065401CA93263D296D6CC26D807337192642144E685EC3EC665 │ │ │ │ +2222163096528A6B471516B96532879CDF43BB5A27BCF0D8B00653AD253920EF │ │ │ │ +3F13BA7E5A5445A2F9049712FC3C892E25D06235879CE87E3C366D53B49157DF │ │ │ │ +37662919900ADC06548D591553A25C7D709E1D00D0AA5FCDFB04E2F1E468E89F │ │ │ │ +AAD93477273C251BE6C27A597AF97C6E82720ED6D4BECD8178A383D85BC439AE │ │ │ │ +18B7A9D54F642B0E4CA1B29935B9125248AFB463F992AC352A7139341BE25F23 │ │ │ │ +965A9A6D35DCED17D649B0C33DF564D5F098E2F74ED4E13422F801BDD9C1F5DE │ │ │ │ +2F5461202E4FD4659F71D4BFF53E57AB847E4F0ECD8E0D1376C31B35D87A8D13 │ │ │ │ +087FA22DB805B94830A3F5CBCC0E5B7A5DBB1E8704FB86F356A8797C9F564CBC │ │ │ │ +692CEE0C66A0837CA1EE01CD456635961B8A0A2272B72BB2D0B76EBE17CEC3AE │ │ │ │ +070C54431BFE9CE7E69DF74BB46AE7F8B7568E80070B5A7AE9283EECE66927A0 │ │ │ │ +CD743E3E83F01B0BA8563968378E78FE9A438800E76D2C6D64B2543D746455A4 │ │ │ │ +B2A714F9E8039887ED765A84672DF909233458EEC1D2085D412F4617CC361ECA │ │ │ │ +CCA2A5B1CBF288DAFC35A28A1E3854CBE89D3F66C4BC5C26B935E02269A3A99F │ │ │ │ +7D6DAE3B2D08FC85A44CE6EE44EEE8A9438D84BD01779BACA10F3431439C15C4 │ │ │ │ +16F36DE4707F5D13091C9B89611F1678415CB1B62C8294532D7FEB38FCD361FC │ │ │ │ +762A0261A67027DA9EE271DAD6D5E395B4E68EE47DE5CEE615D45E3BDAA9A81B │ │ │ │ +9D71558B2E84E322D21F2997107E3D96C255A6EB57A8E0A7C24E34EA1EE118E6 │ │ │ │ +8E9EFD3A532EF9E8BDF5D5CED8F8E40398ADFC55CDD7FE9B46465842FC70F604 │ │ │ │ +73F4C62D5888E8FEFC7245477D37B6700F813473AA7C12532A777184529DE1FF │ │ │ │ +FA0D06905C43AA68808D7E03E5409C34F6E57923795C09C3D7C018FF68A5D96F │ │ │ │ +20ABEC3A426196B5FF99D094350B4F13801C79487F81CF3D5E1221BA2D0A2831 │ │ │ │ +FBD46B24A74DB777C1CDC25A453EAB7D93609CDCC35A2DF14540F5E40B46D0F1 │ │ │ │ +105DC8425C248ACC705578EA022547147BD64A41CF6F70E01E7A90F1FFB16FCF │ │ │ │ +C420771A05DB836CBBDA7A296A0EC44D8FC2DAAC1D23C97D32DDAB457BE71903 │ │ │ │ +E55F765AF05C060333E9B33372AA69C2D80BDAB04C67D4472B132B0B1ADD7A27 │ │ │ │ +20821BDEDA8674471453CF71ACD3615064FA42BB72D47436FBCEC46821C991D9 │ │ │ │ +25E33451F907FAD4EB4AB87B6EF6CF154029F97261FDD1E36EBD529F6496C11A │ │ │ │ +0EE2E00C4C59B3C954BCB42181514AA8D41F7ED0AFBC7C4A6F74249E9F5EB75C │ │ │ │ +BCADA98CA8DE2B5C9ECD080D6C773A299110066EF87C18E50E3FF10E61E3875F │ │ │ │ +D1401E8501F4C55F05AC52B28444DEB18A5184EFD5D7E92E55FAC799FE229F57 │ │ │ │ +D048FC25229E9C02C5E94625EFB8F300E32DBB04162F82087F4EC176A2C0DF5A │ │ │ │ +B787D8C31D1F6AE61B5AEC6657CBAE7BD037BAB174D315A89A573563721750F9 │ │ │ │ +28D7B35CDEAF6F39EED99109B91BE730F0923BEBFE5A3ACD02427B28144572EB │ │ │ │ +98265B936BC618C9897DB9313C47A6BF0DBCC1155ACF5538A423FEAB14B2D0CC │ │ │ │ +7B9C31CFEC37C027925F99019932ED946336FECB024C8BA29DC01D0A930D0E97 │ │ │ │ +7D3C8BE0C467131168B1FFB4F27B440A18860911A0F6FD63A1F9BBD07AE4AEE8 │ │ │ │ +6E1E356D2AA07F3ABDC77C8329804D8CB52E58FB3C │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -7540,22 +7523,21 @@ │ │ │ │ 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 134[44 3[46 │ │ │ │ -32 33 33 2[42 46 4[23 1[42 1[37 46 1[46 42 12[60 4[65 │ │ │ │ -8[54 12[42 4[42 1[42 1[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 139[32 33 33 │ │ │ │ +2[42 46 4[23 1[42 1[37 46 37 46 42 12[60 4[65 8[54 16[42 │ │ │ │ +42 1[42 1[42 3[23 44[{}20 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 │ │ │ │ @@ -7582,19 +7564,19 @@ │ │ │ │ /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 134[51 2[51 54 38 38 38 1[54 49 54 1[27 2[27 54 49 │ │ │ │ -30 43 54 43 54 49 13[54 11[77 64 2[70 69 73 7[49 4[49 │ │ │ │ -1[49 1[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 │ │ │ │ +/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 11[49 49 1[49 │ │ │ │ +1[49 3[27 44[{}29 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 │ │ │ │ %%BeginPaperSize: Letter │ │ │ │ /setpagedevice where │ │ │ │ { pop << /PageSize [612 792] >> setpagedevice } │ │ │ │ @@ -7603,17 +7585,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(*)1566 1262 y Fu(F)-8 │ │ │ │ -b(ebruary)33 b(29,)f(2024)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(*)1610 1262 y Fu(Octob)s(er)f(4,)f │ │ │ │ +(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 │ │ │ │ @@ -7692,16 +7674,16 @@ │ │ │ │ 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 1721 │ │ │ │ -4 v 1914 w(F)g(ebruary)26 b(29,)h(2024)0 390 y Fs(2)135 │ │ │ │ +b(and)h(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1442 100 1796 │ │ │ │ +4 v 1989 w(Octob)r(er)27 b(4,)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 │ │ │ │ @@ -7804,16 +7786,16 @@ │ │ │ │ y(matrices\),)27 b(there)h(is)f(an)g(easier)g(w)n(a)n(y)-7 │ │ │ │ b(.)35 b(One)28 b(can)f(create)g(an)g 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(F)-7 b(ebruary)26 b(29,)h(2024)p │ │ │ │ -737 100 1749 4 v 1912 w(Orderings)f(and)i(F)-7 b(ron)n(t)27 │ │ │ │ +TeXDict begin 3 2 bop 0 100 a Fj(Octob)r(er)27 b(4,)g(2025)p │ │ │ │ +662 100 1824 4 v 1987 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 │ │ │ │ @@ -7866,16 +7848,16 @@ │ │ │ │ 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 1721 │ │ │ │ -4 v 1914 w(F)g(ebruary)26 b(29,)h(2024)125 390 y Ff(\210)42 │ │ │ │ +b(and)h(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1442 100 1796 │ │ │ │ +4 v 1989 w(Octob)r(er)27 b(4,)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 │ │ │ │ @@ -7946,16 +7928,16 @@ │ │ │ │ (great)g(deal)h(of)g(monitoring)g(and)g(debug)g(co)r(de)g(in)g(the)h │ │ │ │ (soft)n(w)n(are.)37 b(Large)26 b(v)-5 b(alues)28 b(of)g │ │ │ │ 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(F)-7 b(ebruary)26 b(29,)h(2024)p │ │ │ │ -737 100 1749 4 v 1912 w(Orderings)f(and)i(F)-7 b(ron)n(t)27 │ │ │ │ +TeXDict begin 5 4 bop 0 100 a Fj(Octob)r(er)27 b(4,)g(2025)p │ │ │ │ +662 100 1824 4 v 1987 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 │ │ │ │ @@ -8026,16 +8008,16 @@ │ │ │ │ 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 1721 │ │ │ │ -4 v 1914 w(F)g(ebruary)26 b(29,)h(2024)125 390 y Fr(Let)33 │ │ │ │ +b(and)h(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1442 100 1796 │ │ │ │ +4 v 1989 w(Octob)r(er)27 b(4,)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 │ │ │ │ @@ -8103,16 +8085,16 @@ │ │ │ │ (;)0 5113 y(ETree_initFromGr)o(aph)o(Wi)o(th)o(Per)o(ms)o(\(ve)o(tr)o │ │ │ │ (ee,)e(graph,)k(newToOld,)f(oldToNew\))g(;)0 5308 y 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(F)-7 b(ebruary)26 b(29,)h(2024)p │ │ │ │ -737 100 1749 4 v 1912 w(Orderings)f(and)i(F)-7 b(ron)n(t)27 │ │ │ │ +TeXDict begin 7 6 bop 0 100 a Fj(Octob)r(er)27 b(4,)g(2025)p │ │ │ │ +662 100 1824 4 v 1987 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 │ │ │ │ @@ -8988,16 +8970,16 @@ │ │ │ │ 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 1721 │ │ │ │ -4 v 1914 w(F)g(ebruary)26 b(29,)h(2024)701 1332 y Fr(Figure)g(3:)36 │ │ │ │ +b(and)h(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1442 100 1796 │ │ │ │ +4 v 1989 w(Octob)r(er)27 b(4,)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 │ │ │ │ %%BeginDocument: vtree.eps │ │ │ │ %!PS-Adobe-2.0 EPSF-1.2 │ │ │ │ %%BoundingBox: 0 0 600 600 │ │ │ │ /CSH { │ │ │ │ @@ -9447,16 +9429,16 @@ │ │ │ │ grestore │ │ │ │ │ │ │ │ showpage │ │ │ │ │ │ │ │ %%EndDocument │ │ │ │ @endspecial eop end │ │ │ │ %%Page: 9 9 │ │ │ │ -TeXDict begin 9 8 bop 0 100 a Fj(F)-7 b(ebruary)26 b(29,)h(2024)p │ │ │ │ -737 100 1749 4 v 1912 w(Orderings)f(and)i(F)-7 b(ron)n(t)27 │ │ │ │ +TeXDict begin 9 8 bop 0 100 a Fj(Octob)r(er)27 b(4,)g(2025)p │ │ │ │ +662 100 1824 4 v 1987 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 │ │ │ │ @@ -9535,16 +9517,16 @@ │ │ │ │ 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 1679 │ │ │ │ -4 v 1872 w(F)g(ebruary)26 b(29,)h(2024)0 489 y Fr(Figure)22 │ │ │ │ +b(and)j(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1484 100 1755 │ │ │ │ +4 v 1947 w(Octob)r(er)27 b(4,)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 │ │ │ │ %%BeginDocument: fsvtree.eps │ │ │ │ %!PS-Adobe-2.0 EPSF-1.2 │ │ │ │ @@ -10338,21 +10320,20 @@ │ │ │ │ grestore │ │ │ │ │ │ │ │ showpage │ │ │ │ │ │ │ │ %%EndDocument │ │ │ │ @endspecial eop end │ │ │ │ %%Page: 11 11 │ │ │ │ -TeXDict begin 11 10 bop 0 100 a Fj(F)-7 b(ebruary)26 │ │ │ │ -b(29,)h(2024)p 737 100 1707 4 v 1871 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(Octob)r(er)27 b(4,)g(2025)p │ │ │ │ +662 100 1782 4 v 1946 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 │ │ │ │ @@ -10692,16 +10673,16 @@ │ │ │ │ xnw ynw dx dy adjncyL draw_matrix │ │ │ │ xnw ynw dx dy nrow ncol sn_info draw_sn_overlay │ │ │ │ │ │ │ │ %%EndDocument │ │ │ │ @endspecial eop end │ │ │ │ %%Page: 12 12 │ │ │ │ TeXDict begin 12 11 bop 0 100 a 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 1679 │ │ │ │ -4 v 1872 w(F)g(ebruary)26 b(29,)h(2024)0 864 y Fr(Figure)33 │ │ │ │ +b(and)j(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1484 100 1755 │ │ │ │ +4 v 1947 w(Octob)r(er)27 b(4,)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 │ │ │ │ 4071 y @beginspecial 0 @llx 0 @lly 600 @urx 600 @ury │ │ │ │ 3600 @rwi 3600 @rhi @setspecial │ │ │ │ %%BeginDocument: amvtree.eps │ │ │ │ @@ -11308,21 +11289,20 @@ │ │ │ │ grestore │ │ │ │ │ │ │ │ showpage │ │ │ │ │ │ │ │ %%EndDocument │ │ │ │ @endspecial eop end │ │ │ │ %%Page: 13 13 │ │ │ │ -TeXDict begin 13 12 bop 0 100 a Fj(F)-7 b(ebruary)26 │ │ │ │ -b(29,)h(2024)p 737 100 1707 4 v 1871 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(Octob)r(er)27 b(4,)g(2025)p │ │ │ │ +662 100 1782 4 v 1946 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 │ │ │ │ @@ -11616,18 +11596,18 @@ │ │ │ │ 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 1679 │ │ │ │ -4 v 1872 w(F)g(ebruary)26 b(29,)h(2024)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(and)j(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1484 100 1755 │ │ │ │ +4 v 1947 w(Octob)r(er)27 b(4,)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 │ │ │ │ @@ -11715,22 +11695,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(F)-7 b(ebruary)26 │ │ │ │ -b(29,)h(2024)p 737 100 1707 4 v 1871 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(Octob)r(er)27 b(4,)g(2025)p │ │ │ │ +662 100 1782 4 v 1946 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 │ │ │ │ % │ │ │ │ @@ -12356,16 +12336,16 @@ │ │ │ │ │ │ │ │ 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 1679 │ │ │ │ -4 v 1872 w(F)g(ebruary)26 b(29,)h(2024)420 595 y Fr(Figure)g(9:)37 │ │ │ │ +b(and)j(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1484 100 1755 │ │ │ │ +4 v 1947 w(Octob)r(er)27 b(4,)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 │ │ │ │ %%BeginDocument: spmtx.eps │ │ │ │ %!PS-Adobe-2.0 EPSF-1.2 │ │ │ │ %%BoundingBox: 0.000 0.000 550.000 550.000 │ │ │ │ @@ -12685,45 +12665,44 @@ │ │ │ │ b(2021347776)692 4948 y(merge)26 b(an)n(y)p 1114 4978 │ │ │ │ V 99 w(0.012)279 b(597)232 b(85366)142 b(3753241)154 │ │ │ │ b(2035158539)692 5048 y(split)p 1114 5078 V 316 w(0.043)279 │ │ │ │ b(643)190 b(115139)142 b(3753241)154 b(2035158539)692 │ │ │ │ 5148 y(\014nal)p 1114 5177 V 316 w(0.423)279 b(643)190 │ │ │ │ b(115128)142 b(3752694)154 b(2034396840)p eop end │ │ │ │ %%Page: 17 17 │ │ │ │ -TeXDict begin 17 16 bop 0 100 a Fj(F)-7 b(ebruary)26 │ │ │ │ -b(29,)h(2024)p 737 100 1707 4 v 1871 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(Octob)r(er)27 b(4,)g(2025)p │ │ │ │ +662 100 1782 4 v 1946 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 │ │ │ │ @@ -12804,16 +12783,16 @@ │ │ │ │ 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 1679 │ │ │ │ -4 v 1872 w(F)g(ebruary)26 b(29,)h(2024)0 390 y Fr(the)g(submatrices)e │ │ │ │ +b(and)j(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1484 100 1755 │ │ │ │ +4 v 1947 w(Octob)r(er)27 b(4,)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 │ │ │ │ @@ -12908,30 +12887,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(F)-7 b(ebruary)26 │ │ │ │ -b(29,)h(2024)p 737 100 1707 4 v 1871 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(Octob)r(er)27 b(4,)g(2025)p │ │ │ │ +662 100 1782 4 v 1946 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 │ │ │ │ @@ -12997,16 +12976,16 @@ │ │ │ │ 5308 y([12])41 b(A.)27 b(Gupta.)37 b(W)n(GPP:)27 b(Watson)g(Graph)g │ │ │ │ (Partitioning)f(and)h(sparse)f(matrix)h(ordering)e(Pac)n(k)-5 │ │ │ │ b(age.)34 b(T)-7 b(ec)n(hnical)27 b(Rep)r(ort)171 5407 │ │ │ │ y(Users)g(Man)n(ual,)f(IBM)i(T.J.)f(W)-7 b(atson)28 b(Researc)n(h)e │ │ │ │ (Cen)n(ter,)h(New)h(Y)-7 b(ork,)27 b(1996.)p eop end │ │ │ │ %%Page: 20 20 │ │ │ │ TeXDict begin 20 19 bop 0 100 a 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 1679 │ │ │ │ -4 v 1872 w(F)g(ebruary)26 b(29,)h(2024)0 390 y Fr([13])41 │ │ │ │ +b(and)j(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1484 100 1755 │ │ │ │ +4 v 1947 w(Octob)r(er)27 b(4,)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(T)-7 b(ec)n(hnical)23 b(Rep)r(ort)f(SAND92-1460,)g(Sandia)h(National) │ │ │ │ f(Lab)r(oratories,)g(Albuquerque,)h(NM,)h(1992.)0 656 │ │ │ │ y([14])41 b(B.)f(Hendric)n(kson)f(and)h(R.)g(Leland.)74 │ │ │ │ b(The)40 b(Chaco)f(user's)g(guide.)74 b(T)-7 b(ec)n(hnical)39 │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -1,11 +1,11 @@ │ │ │ │ │ Ordering Sparse Matrices and Transforming Front Trees │ │ │ │ │ ∗ │ │ │ │ │ Cleve Ashcraft, Boeing Shared Services Group │ │ │ │ │ - February 29, 2024 │ │ │ │ │ + October 4, 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 February 29, 2024 │ │ │ │ │ + 2 Orderings and Front Trees October 4, 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) ; │ │ │ │ │ - February 29, 2024 Orderings and Front Trees 3 │ │ │ │ │ + October 4, 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 February 29, 2024 │ │ │ │ │ + 4 Orderings and Front Trees October 4, 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. │ │ │ │ │ - February 29, 2024 Orderings and Front Trees 5 │ │ │ │ │ + October 4, 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 February 29, 2024 │ │ │ │ │ + 6 Orderings and Front Trees October 4, 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. │ │ │ │ │ - February 29, 2024 Orderings and Front Trees 7 │ │ │ │ │ + October 4, 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 February 29, 2024 │ │ │ │ │ + 8 Orderings and Front Trees October 4, 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 │ │ │ │ │ - February 29, 2024 Orderings and Front Trees 9 │ │ │ │ │ + October 4, 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 February 29, 2024 │ │ │ │ │ + 10 Orderings and Front Trees October 4, 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 │ │ │ │ │ - February 29, 2024 Orderings and Front Trees 11 │ │ │ │ │ + October 4, 2025 Orderings and Front Trees 11 │ │ │ │ │ Figure 5: Block structure of L with the fundamental supernode partition. │ │ │ │ │ - 12 Orderings and Front Trees February 29, 2024 │ │ │ │ │ + 12 Orderings and Front Trees October 4, 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 │ │ │ │ │ - February 29, 2024 Orderings and Front Trees 13 │ │ │ │ │ + October 4, 2025 Orderings and Front Trees 13 │ │ │ │ │ Figure 7: Block structure of L with the amalgamated supernode partition. │ │ │ │ │ - 14 Orderings and Front Trees February 29, 2024 │ │ │ │ │ + 14 Orderings and Front Trees October 4, 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. │ │ │ │ │ - February 29, 2024 Orderings and Front Trees 15 │ │ │ │ │ + October 4, 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 February 29, 2024 │ │ │ │ │ + 16 Orderings and Front Trees October 4, 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 │ │ │ │ │ - February 29, 2024 Orderings and Front Trees 17 │ │ │ │ │ + October 4, 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 February 29, 2024 │ │ │ │ │ + 18 Orderings and Front Trees October 4, 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. │ │ │ │ │ - February 29, 2024 Orderings and Front Trees 19 │ │ │ │ │ + October 4, 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 February 29, 2024 │ │ │ │ │ + 20 Orderings and Front Trees October 4, 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 2024.02.29:1857 │ │ │ │ +%DVIPSSource: TeX output 2025.10.04:1734 │ │ │ │ %%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 │ │ │ │ @@ -1790,23 +1790,23 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 50 /two put │ │ │ │ dup 52 /four put │ │ │ │ -dup 57 /nine put │ │ │ │ +dup 53 /five put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 70 /F put │ │ │ │ -dup 97 /a put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ +dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ -dup 117 /u put │ │ │ │ -dup 121 /y put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1980,95 +1980,85 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA647CD0E2539DFAD9604486DCCFA49 │ │ │ │ -AC96130D106A8F8387633622C3809400D6E8FF9D60877C743502E4D211CEBF62 │ │ │ │ -9A6F91045C22D5D20C5FF677D89983D02E5EE26C71A9EAE0E7C52465DA5A149A │ │ │ │ -9B731C27EC8366BC3E841C0CAE49A33DE164A857365B17B09CAD121C47A980CB │ │ │ │ -C75E1030F6C394EDB46C54B46880D2344127B903FB22684C9CAACE6053DC3BFA │ │ │ │ -4E47C565ECAF19C4295A11BD68CA6D45B5738B932BB3690A8C712904C49C1636 │ │ │ │ -A7702075F2FEA8DB3EB3A3C1216BB769DD0BAF4507A18E3052F2C846B0797933 │ │ │ │ -8CE9BB2DB5DFADAF1B0FC3A22BAB82A0D5D290F7AD950013CFA465BE11C1076D │ │ │ │ -5833FF92321FBF90D9229D3BA09DD18EEC44D9FCF8FCF63CC09D2977BFA798B6 │ │ │ │ -47FB047EA6AF69C7DE570176F5B6C0FED74DEDBF7DDF49550DD84BA14AC09423 │ │ │ │ -F70D5B14F0F8588F1E2FFE0DFE0760E77A9E39DEDAC5C5AE3760722C029B916D │ │ │ │ -96A2A7D1DD6A61F90B4B9806314A668EB7A0E107A3527310A240490453CC18D7 │ │ │ │ -3793B4CF3CE13EA332E7F5C2BACF85AC75FE84693B966BB0F6FB9A179A331C4E │ │ │ │ -55E9EF30E2734E44A88E053CD5E650D7E529E94CB7F8B733E68315ACAC5BEFC5 │ │ │ │ -3FE4F585F875310267865679AB381125C31E9AEB7226DC9F18DA80A9DE2F38A4 │ │ │ │ -51B8F9D5B2FBA0F50D53AE6212AFE41466A594F7A303B4E82F1493C0B8D65756 │ │ │ │ -BE6AF2931E5ADA5CE7D51CB5B1EC916C6C6D674808939331CA66F8181DD2B112 │ │ │ │ -1A12198CCCB6BBF1D40C803E794B65241ACE1E0D30CCA1C6F2D3E1415B98726B │ │ │ │ -9BA303BE2C4C276108CC78C093F1CC85CA454CC38535D1DEBFA341D84E8A5DDF │ │ │ │ -D53D8DD0F4A812B5BA63871BEB3BCE93FBC77AD395914E2CD757546C2BE2D641 │ │ │ │ -FDB12258E1E1D10E1B963EABB265F2C8B2547D48963E1AD3B223B666B46915A1 │ │ │ │ -157F5EA0AB8D8411C07AA2EB5D0EF1A1BA6D81C47473A3D3D6287104C7BF61F8 │ │ │ │ -3BDB64995DE96A65BF2B7288C51ADAA3D373A95C40D5240C5FF397551554AA9E │ │ │ │ -C89C7E45AA7738503CB058EF6AD5052CC78E4445C810C250BF25394B8D7DE82E │ │ │ │ -315C9CCD6E1E9150EC79EE0F354C668AE199C1AFF39C67337A86CB932E8D64E9 │ │ │ │ -389FF3CC08B538492DEED017686DBB9BDEA30FE67FB4EBDB3627C16FD15F243A │ │ │ │ -7FDEB310EFC940E57726E94340472F2C452815927ADE21578C959890216BE504 │ │ │ │ -225BE4B4D2E3B19F5E06B5A0B25AF168C3A2B26F599A829F89C16BD2026E8CC9 │ │ │ │ -8FB3CBB830C3E36C099071A70D0B8834FF2C17364EB50D5C71440CC7BFE02321 │ │ │ │ -8C6ECAC2F7EC1BE39077DB0E8B2B251626A71FD038EB2CF1FC254D98C1535CAA │ │ │ │ -A8C987BC266482BD860A333048E1EDB3DD40A6ECD6DA0088AD9B9640202D89AA │ │ │ │ -0BB9A0ADF63491E67F2E97E35942D77E59B9B8AB0ED28B022EE5CD3449FC5B7A │ │ │ │ -19E38845B488F97D155C4312885E29537EAE97719C65845663480CE79DE8F037 │ │ │ │ -68995C0928FE8AFBEE554F01381EE5187578DF5D2542F26F66A599EE8ECC1F68 │ │ │ │ -FBADF3C2BA968C3CEB86675CF9A6CFD736E1422800D270417D497903DE87F2AE │ │ │ │ -938E39E120E9D3079F512E545E0E2616B84E81FE41392184F96818A7C86BF541 │ │ │ │ -F2E67C48CA56DA838C9FA0FAD538073B9F26319140D1F80EEEBCA190DE660A31 │ │ │ │ -457CAC16E92F87449A3734F9EA751588514865B58DC073658C8A857B5398AAC7 │ │ │ │ -3DC11E069996EF74A3189A07630D5DB87C5E028CD193C086B4D0E8BABC4F2393 │ │ │ │ -235EC96091B16C4A6D97DA1BD30A2D2E71F55869223CA66AD12448B668685F6E │ │ │ │ -06E7888D7F20045C662C4F7994CC7E1CE9AAC33A026716AA0551DF12343F0E22 │ │ │ │ -6E9F4B21C90406CC4997601194EF37A973221D1F4D73DD5666BD297F621C92AA │ │ │ │ -E3F698BC1146ADE754C4120EDF5B3E974D75A237E51DB49D52CD6CC7C9E8BD2D │ │ │ │ -E6849DF8F4DBA86C655D0C57CB54836C8A841C1D814F6B493F96ADBFCAD78D3B │ │ │ │ -430C58EF169950851B6A0B46411488B1A6F6974832787A24C0CDDBE27996EFB1 │ │ │ │ -DB341FA34B1DC6238D978D1E1D34AF3FB375ED6DA9C88699F195C88A54622F7C │ │ │ │ -36DAFC663D85660E756733A7E22F20C6A5D91F06087CAD10F7217BD33F343DC6 │ │ │ │ -F5EB9F16FE763672243EE6AE5CB6063A1D64670E1C059DD52134974E27D9D89C │ │ │ │ -BC658FCD814F20703D610C978FDCD6E2AEA31C18D1A310F215B28199F66C87DB │ │ │ │ -3B23980A393E1DD77AFA3045EDB6942505F3CF6204315A14E5B6BF2E96F3BB1F │ │ │ │ -628D24AC1893BC7DAEF3AA63F2116837F31DB90D872CBD9E5C48BCDEE781D20D │ │ │ │ -C6553D2D15F4E8438A9D1C7CEE1B72BD6AA08DC0AFEAF8B4DC1038707EE4A1BF │ │ │ │ -3D84460E60AF90F55002C1D8EBF0700F7EC3EFC944BEA78D0E0536F3AA6D9A84 │ │ │ │ -604A781AC5ACFEB7E681365315EE11E991C03DA431B65B332AD8F83F6F3AE66C │ │ │ │ -1BF434D3793FB5BCC44E44ACFF2855C2770C4AC678C6ACD6EB071974ACF1AE37 │ │ │ │ -D02C1736C62CC205A2F3488448527EFFA379613A8E6A6D134F4BFBAE6127304D │ │ │ │ -576C900A458E32CD42A4674415E03D8EB5742E71B854B3EDFD271AA214436544 │ │ │ │ -D1BCFD52F439298847E1FA258E5D38384FC85BC4EDC6F9E4431621CF763B137B │ │ │ │ -22DB6E3268B3F78881D55EA7C52ABF23FB73C152B06B708084FE1B00CFE72D9D │ │ │ │ -57B62AEE912E63BBD89D4D13CE896735454F1A16C3D9FB6CDF142CCA9F1C0242 │ │ │ │ -46F62109DF30667DA327F7CF6DC19B880C860C69080597FFCB1793313E202D4F │ │ │ │ -120A7C6B052C2EB7597B71B0985D24FDD2D3918393BF720E762C5DBBC2BB1E91 │ │ │ │ -B04560364EFE5B16EB068E0560FB932E0C617CFB95A166388E99AC4CB020F5BC │ │ │ │ -E24BB77352D7C3B21C37D404051A70FFFA0F726C35501A1FBB411F832CE46A2E │ │ │ │ -B424E26BD4 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFD8CDE285A2827F4659E339460ABEF319FE44D7A91E93CA309E9266E03DA │ │ │ │ +735F5DEF3920C01189BB63C2BD7ED0B92EABB481F123641477CDCCAB9751FB7B │ │ │ │ +F67DA7CE6EB134BC10D0228562BA5A6BFE6940907EF030ABF9EC4A8A0DFEF73D │ │ │ │ +3289E8CB4DC37694F5A656A935D92C72B3D82B012F578A27711B161DE9652ADC │ │ │ │ +71C51E743E4E9A7C6CF6FF16C5D65C1F60954C0858B48FAAC4FBB21988E2A934 │ │ │ │ +AC50C097DDF42C416359647D79F830E1430FB9BB803451A6732D1B5CAB817C1B │ │ │ │ +673B3077D9A180F184267E9990C087BCDEBC8EB8B889934DD0EB63C2EBCED4A3 │ │ │ │ +83A0D6A365412CFF610EF7BD5F82B02AA293F1D2F868768CDE9B801C929B4A38 │ │ │ │ +64E20C70BC4041F837AD15423517F7336A067D140A2C7906DC5D45885FFB3B69 │ │ │ │ +724E5B9B138BD15A9359EB25D14BC4193E529D1A49FEB0DC1015BF94CEBBD5E0 │ │ │ │ +EA148B185C53E12BD9FA6DBC097D789A73E832F02F55080D8ED6087F5952EA78 │ │ │ │ +250A4C65CE4C4013554A031446D2092D813C4CB1A605D97A40CF867F656ECD1C │ │ │ │ +C23F80230AD1E449AA8B4007134F71156719206441D92B1A6DD25101ABF69F70 │ │ │ │ +538CCCE216376E1BD6E423986BD4E83B1975B15092D4E19F885672F9E7C02485 │ │ │ │ +E02DA0F4243D324A5983D1D46444E5F6573F699E4F2A3395EF0EB7808B7D4D62 │ │ │ │ +690FD033E93AA553082273636503DA4BBBBFA6D127CE10424DD1DDF4F879305C │ │ │ │ +14F64180E7851D091B3220DFC70CAA44716B8F7F0C6FBEDB167801DED77F9E69 │ │ │ │ +E9B31CD2D8044DB946E511162976C34DE27F2BB974B70509005562A0A21317B7 │ │ │ │ +46D826A31C476C8F9A778F941FF5956BA2D765B1AD0AC4BC7AE1CD8A2A81F039 │ │ │ │ +06EB13EBD099BBDB2EBDB54D459C288EA69FB0018CE9255BBFB08C1F90FF30BD │ │ │ │ +C971DA7FDB193281B8F967F21AB42F13F36085AC9EC0D6B6B448C8F289B0AD70 │ │ │ │ +DB521A4755ECF9CA594741E5C674220C21C265EF3BAE594197B00048C8D4DB73 │ │ │ │ +4AC47B6A86EAC7EECD042C8E23C347F8C9FCB870473C1FBD91C298174BCBF1A9 │ │ │ │ +7B366C570A9A04A433495FBC9FD0FFC22A0E8181424C0F038ED97AD5054B10CC │ │ │ │ +1CD5BA0719DD0B4F4F18932AE87FF8B8C1CF0C7482B7847049761505DCD85146 │ │ │ │ +4EE5CB53993A9449CD05233E961BD49AE92D308E2065D6C6BF038538039AA56A │ │ │ │ +C59D424BE3175427337E16892D3920598D518423E145C6B2DD3881F338845F0D │ │ │ │ +16C47AA0D9C2D6DE99C6A302D567ACD6F98BF38223F1890E099C8F93348FFDAA │ │ │ │ +C2D3440187C8FED87C1A891EF11EFA7168EC47F72AF8BC5BE1B88B1084E704F5 │ │ │ │ +82099F1A79E556D94CC38851C97DC3864945A7470F1389BCF608BADAE45B236D │ │ │ │ +2934A20FFBCF169BF84DF496B07E7F1D9002E62B030337642804403DF7E4B3FF │ │ │ │ +C5A421EE0033BA06C50A041FBFE8F81AFC145664E2976505EB14859CF0377EBA │ │ │ │ +EA604CF8BFB5F9ADB9A7ED56E6F0F919E791D57C7232241C892EAC3E55D2D03B │ │ │ │ +FF43B9DAB7B1D8C6588D6D3503F49E80121E52254431B308752A936E0B51124D │ │ │ │ +C7F23C316BA6FA73E6BC47EB9550003E1393C68360067C094C65C0DD17214FA0 │ │ │ │ +45FF0F9C3E0AE4C81093752D23EA95E163C98EC04873ECE3FB0882567329525C │ │ │ │ +0A3937B16CA72B5EB6D2DC10C1B485C0BA939587AFEBB6D837A40401C666BC1C │ │ │ │ +F3344FBAB3E48BEE18F3AF5CDB33BA63778D373A851333C8C34E2F35AB94E8B4 │ │ │ │ +FF7E62A92ED83B872894E0A17209E14CF61269204A35A4BC8C7EE4B16F19E91F │ │ │ │ +669C4EFCECB187F6C7FAF92B4E14E400C6B3C81679D4A7196D66DB1E897DDA42 │ │ │ │ +47CC2848B46D581A95EEF85AB528E8CDEEB275D1E1FE197A3A08D36406E2DADF │ │ │ │ +A87D817AF18B5525F89B7C2E584F4A1254A1FC71E749999A2152870631A69CB6 │ │ │ │ +666EBD6BB3366A598F6592040D0E82B9D866DF0A76C362E76C2804D108A0C148 │ │ │ │ +51F42E9E0ABD52CC2D02B156B63AFD03313AFC80EACC83DF9B59F05FD798951D │ │ │ │ +FCF5335636DFC6561910ACE0AEC47F74CFD302EB7421D28AAAC8FF82B7CE2B2A │ │ │ │ +340B8BCE09F57BFCBC77F91096D97A85726E68846398C8C9C8D3A65A252AE8FB │ │ │ │ +166750C244963BC61E2236BAAC529FABD6FC774550096374A8DB81B6AF1EA843 │ │ │ │ +27F671C0045D629E3734EF037447C4763514FD1C4AE858A494AFC23A64C82149 │ │ │ │ +F4C0A7023B3865B84FAC2DC88D1553DCEBA3D8FB5DBC1103123F6B8CB5B3A399 │ │ │ │ +B665B26B001BF1E4BFABE42BFF6B02D69FA88D5CBCA5A11D5B48CFB4EAE60558 │ │ │ │ +5FBE254AD3BE01761CD4995E766E172D768621223505FD6AA8F89FC042EB814C │ │ │ │ +34373DAEC4FAAF71C0752F814154C5299F751CE7E0F9C673D2E448D0204C214C │ │ │ │ +C04DC34671FBEF72350FFBA263662E86A0D3795E310153AAF4C8A2623E167E6E │ │ │ │ +1F13A9BA485D5DDFC451D691DBA7C49E20354A7AD79D89F7EDE24F0D5B48B27D │ │ │ │ +568D01EF2555504196C09841F5970D8CF6C5D47FFFCF18AE6B2A485342000AAD │ │ │ │ +1F922FBEF7C98E0965609C89240E7B131A59551F57CD5C92097FCE75F5D2778F │ │ │ │ +F9ACF43A3273551363442C8C539205903A835C744A4AA953545506081D3D231A │ │ │ │ +A140E01F280BC42A3C35EDAD5F6B8CE6E51C68E41CA813710864ED880FCE846C │ │ │ │ +1B66D27CC2DBCDC2B1B96A12490BD76D67A415D4A6595CD9B19D3104A83D2C82 │ │ │ │ +C46DCD2C027F0565EDB83E54FF99498194D3140E55E8EE65EBDEAC5409B5616A │ │ │ │ +73141DA2D581E300A6057F4301A02DD160AB3E55A116313525122D0608816AA8 │ │ │ │ +4712EEF3D6FE8C893DF37D │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -5505,16 +5495,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 134[48 3[51 2[36 12[40 │ │ │ │ -2[51 45 26[59 11[25 45 4[45 1[45 1[45 3[25 44[{}13 90.9091 │ │ │ │ +63[{}5 90.9091 /CMBX10 rf /Fg 139[35 1[36 2[45 9[40 1[40 │ │ │ │ +51 18[71 20[25 4[45 45 1[45 1[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 │ │ │ │ @@ -5665,27 +5655,27 @@ │ │ │ │ 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 1087 4 v │ │ │ │ -1269 w Fo(GPart)29 b Fg(:)41 b Fm(DRAFT)30 b Fg(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2813 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(tain)i(information)0 1169 y(ab)s(out)30 b(the)h(partition)g(of)f │ │ │ │ -(the)h(graph.)141 1307 y(The)f(follo)m(wing)i(\014elds)e(are)g(alw)m(a) │ │ │ │ -m(ys)i(activ)m(e.)137 1523 y Fn(\210)45 b Fo(Graph)i(*graph)28 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fp(2)p 136 100 1128 4 v │ │ │ │ +1310 w Fo(GPart)29 b Fg(:)41 b Fm(DRAFT)30 b Fg(Octob)s(er)g(4,)h(2025) │ │ │ │ +p 2772 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 │ │ │ │ +(tain)i(information)0 1169 y(ab)s(out)30 b(the)h(partition)g(of)f(the)h │ │ │ │ +(graph.)141 1307 y(The)f(follo)m(wing)i(\014elds)e(are)g(alw)m(a)m(ys)i │ │ │ │ +(activ)m(e.)137 1523 y Fn(\210)45 b Fo(Graph)i(*graph)28 │ │ │ │ b Fp(:)41 b(p)s(oin)m(ter)30 b(to)h(the)g Fo(Graph)e │ │ │ │ Fp(ob)5 b(ject)137 1713 y Fn(\210)45 b Fo(int)i(nvtx)29 │ │ │ │ b Fp(:)41 b(n)m(um)m(b)s(er)29 b(of)i(in)m(ternal)g(v)m(ertices)h(of)e │ │ │ │ (the)h(graph)137 1903 y Fn(\210)45 b Fo(int)i(nvbnd)29 │ │ │ │ b Fp(:)41 b(n)m(um)m(b)s(er)29 b(of)h(b)s(oundary)f(v)m(ertices)j(of)e │ │ │ │ (the)h(graph)137 2094 y Fn(\210)45 b Fo(int)i(ncomp)29 │ │ │ │ b Fp(:)41 b(n)m(um)m(b)s(er)29 b(of)h(comp)s(onen)m(ts)h(in)f(the)h │ │ │ │ @@ -5730,17 +5720,17 @@ │ │ │ │ b(It)32 b(con)m(tains)0 5053 y(input)g(parameters)h(for)f(the)h │ │ │ │ (di\013eren)m(t)g(stages)h(of)f(the)g 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 1087 4 v 1269 100 a Fo(GPart)29 │ │ │ │ -b Fg(:)40 b Fm(DRAFT)121 b Fg(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2766 100 V 1087 w Fp(3)330 399 y Ff({)45 b Fo(int)i(minweight)p │ │ │ │ +TeXDict begin 3 2 bop 91 100 1128 4 v 1310 100 a Fo(GPart)29 │ │ │ │ +b Fg(:)40 b Fm(DRAFT)121 b Fg(Octob)s(er)31 b(4,)g(2025)p │ │ │ │ +2725 100 V 1128 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 │ │ │ │ @@ -5804,34 +5794,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 1087 4 v │ │ │ │ -1269 w Fo(GPart)29 b Fg(:)41 b Fm(DRAFT)30 b Fg(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2813 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 1128 4 v │ │ │ │ +1310 w Fo(GPart)29 b Fg(:)41 b Fm(DRAFT)30 b Fg(Octob)s(er)g(4,)h(2025) │ │ │ │ +p 2772 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 │ │ │ │ @@ -5874,17 +5864,17 @@ │ │ │ │ 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 1087 4 v 1269 100 a Fo(GPart)29 │ │ │ │ -b Fg(:)40 b Fm(DRAFT)121 b Fg(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2766 100 V 1087 w Fp(5)0 399 y Fb(1.2.3)112 b(Utilit)m(y)38 │ │ │ │ +TeXDict begin 5 4 bop 91 100 1128 4 v 1310 100 a Fo(GPart)29 │ │ │ │ +b Fg(:)40 b Fm(DRAFT)121 b Fg(Octob)s(er)31 b(4,)g(2025)p │ │ │ │ +2725 100 V 1128 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 │ │ │ │ @@ -5964,25 +5954,24 @@ │ │ │ │ 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 1087 4 v │ │ │ │ -1269 w Fo(GPart)29 b Fg(:)41 b Fm(DRAFT)30 b Fg(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2813 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 │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fp(6)p 136 100 1128 4 v │ │ │ │ +1310 w Fo(GPart)29 b Fg(:)41 b Fm(DRAFT)30 b Fg(Octob)s(er)g(4,)h(2025) │ │ │ │ +p 2772 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 │ │ │ │ @@ -6046,17 +6035,17 @@ │ │ │ │ b(W)-8 b(e)27 b(then)g(construct)g(the)227 5294 y(bipartite)j(graph)e │ │ │ │ (that)h(represen)m(ts)f(the)h(connectivit)m(y)i(of)e(the)g(domains)f │ │ │ │ (and)g(segmen)m(ts.)41 b(Eac)m(h)30 b(segmen)m(t)227 │ │ │ │ 5407 y(is)36 b(an)f(\\edge")i(that)g(connects)f(t)m(w)m(o)h(\\adjacen)m │ │ │ │ (t")h(domains.)56 b(This)34 b(allo)m(ws)j(us)e(to)h(use)g(a)g(v)-5 │ │ │ │ b(arian)m(t)36 b(of)g(the)p eop end │ │ │ │ %%Page: 7 7 │ │ │ │ -TeXDict begin 7 6 bop 91 100 1087 4 v 1269 100 a Fo(GPart)29 │ │ │ │ -b Fg(:)40 b Fm(DRAFT)121 b Fg(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2766 100 V 1087 w Fp(7)227 399 y(Kernighan-Lin)j(algorithm)h(to)g │ │ │ │ +TeXDict begin 7 6 bop 91 100 1128 4 v 1310 100 a Fo(GPart)29 │ │ │ │ +b Fg(:)40 b Fm(DRAFT)121 b Fg(Octob)s(er)31 b(4,)g(2025)p │ │ │ │ +2725 100 V 1128 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 │ │ │ │ @@ -6155,44 +6144,43 @@ │ │ │ │ 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 1087 4 v │ │ │ │ -1269 w Fo(GPart)29 b Fg(:)41 b Fm(DRAFT)30 b Fg(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2813 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 897 y(error)30 b(message)i(is)e(prin)m(ted)g(and)g(the) │ │ │ │ -g(program)h(exits.)111 1103 y(3.)46 b Fo(void)h(*)g │ │ │ │ -(GPart_smoothBy2layers)42 b(\()48 b(GPart)e(*gpart,)g(int)h(bipartite,) │ │ │ │ -e(float)h(alpha)h(\))g(;)227 1262 y Fp(This)22 b(metho)s(d)h(forms)f │ │ │ │ -(the)h(wide)g(separator)h Fl(Y)43 b Fp(from)22 b(t)m(w)m(o)i(la)m(y)m │ │ │ │ -(ers)h(of)e(v)m(ertices,)j(either)e Fl(Y)3205 1276 y │ │ │ │ -Fj(B)3291 1262 y Fp(=)g Fl(S)11 b Fi([)5 b Fp(\()p Fl(Ad)-10 │ │ │ │ -b(j)5 b Fp(\()p Fl(S)g Fp(\))g Fi(\\)227 1375 y Fl(B)g │ │ │ │ -Fp(\))36 b(or)g Fl(Y)542 1389 y Fj(W)657 1375 y Fp(=)e │ │ │ │ -Fl(S)29 b Fi([)24 b Fp(\()p Fl(Ad)-10 b(j)5 b Fp(\()p │ │ │ │ -Fl(S)g Fp(\))26 b Fi(\\)e Fl(W)13 b Fp(\).)57 b(\(If)36 │ │ │ │ -b Fi(j)p Fl(B)5 b Fi(j)35 b(\025)f(j)p Fl(W)13 b Fi(j)p │ │ │ │ -Fp(,)38 b(w)m(e)e(\014rst)f(lo)s(ok)i(at)g Fl(Y)2885 │ │ │ │ -1389 y Fj(B)2981 1375 y Fp(and)f(if)g(no)g(impro)m(v)m(emen)m(t)227 │ │ │ │ -1488 y(can)43 b(b)s(e)f(made)h(w)m(e)g(lo)s(ok)h(at)f │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fp(8)p 136 100 1128 4 v │ │ │ │ +1310 w Fo(GPart)29 b Fg(:)41 b Fm(DRAFT)30 b Fg(Octob)s(er)g(4,)h(2025) │ │ │ │ +p 2772 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 │ │ │ │ +897 y(error)30 b(message)i(is)e(prin)m(ted)g(and)g(the)g(program)h │ │ │ │ +(exits.)111 1103 y(3.)46 b Fo(void)h(*)g(GPart_smoothBy2layers)42 │ │ │ │ +b(\()48 b(GPart)e(*gpart,)g(int)h(bipartite,)e(float)h(alpha)h(\))g(;) │ │ │ │ +227 1262 y Fp(This)22 b(metho)s(d)h(forms)f(the)h(wide)g(separator)h │ │ │ │ +Fl(Y)43 b Fp(from)22 b(t)m(w)m(o)i(la)m(y)m(ers)h(of)e(v)m(ertices,)j │ │ │ │ +(either)e Fl(Y)3205 1276 y Fj(B)3291 1262 y Fp(=)g Fl(S)11 │ │ │ │ +b Fi([)5 b Fp(\()p Fl(Ad)-10 b(j)5 b Fp(\()p Fl(S)g Fp(\))g │ │ │ │ +Fi(\\)227 1375 y Fl(B)g Fp(\))36 b(or)g Fl(Y)542 1389 │ │ │ │ +y Fj(W)657 1375 y Fp(=)e Fl(S)29 b Fi([)24 b Fp(\()p │ │ │ │ +Fl(Ad)-10 b(j)5 b Fp(\()p Fl(S)g Fp(\))26 b Fi(\\)e Fl(W)13 │ │ │ │ +b Fp(\).)57 b(\(If)36 b Fi(j)p Fl(B)5 b Fi(j)35 b(\025)f(j)p │ │ │ │ +Fl(W)13 b Fi(j)p Fp(,)38 b(w)m(e)e(\014rst)f(lo)s(ok)i(at)g │ │ │ │ +Fl(Y)2885 1389 y Fj(B)2981 1375 y Fp(and)f(if)g(no)g(impro)m(v)m(emen)m │ │ │ │ +(t)227 1488 y(can)43 b(b)s(e)f(made)h(w)m(e)g(lo)s(ok)h(at)f │ │ │ │ Fl(Y)1329 1502 y Fj(W)1409 1488 y Fp(,)j(and)d(the)f(rev)m(erse)i(if)f │ │ │ │ Fi(j)p Fl(W)13 b Fi(j)45 b Fl(>)h Fi(j)p Fl(B)5 b Fi(j)p │ │ │ │ Fp(.\))78 b(The)42 b Fo(bipartite)e Fp(parameter)227 │ │ │ │ 1601 y(de\014nes)28 b(the)h(t)m(yp)s(e)g(of)g(net)m(w)m(ork)h(problem)e │ │ │ │ (w)m(e)i(solv)m(e.)41 b(The)29 b(net)m(w)m(ork)g(induced)f(b)m(y)h(the) │ │ │ │ g(wide)g(separator)g Fl(Y)227 1714 y Fp(need)34 b(not)f(b)s(e)g │ │ │ │ (bipartite,)j(and)d(will)h(not)g(b)s(e)e(bipartite)j(if)e │ │ │ │ @@ -6277,17 +6265,17 @@ │ │ │ │ 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 1087 4 v 1269 100 a Fo(GPart)29 │ │ │ │ -b Fg(:)40 b Fm(DRAFT)121 b Fg(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2766 100 V 1087 w Fp(9)0 399 y Fb(1.2.7)112 b(Recursiv)m(e)38 │ │ │ │ +TeXDict begin 9 8 bop 91 100 1128 4 v 1310 100 a Fo(GPart)29 │ │ │ │ +b Fg(:)40 b Fm(DRAFT)121 b Fg(Octob)s(er)31 b(4,)g(2025)p │ │ │ │ +2725 100 V 1128 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 │ │ │ │ @@ -6350,62 +6338,61 @@ │ │ │ │ (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 1065 4 │ │ │ │ -v 1247 w Fo(GPart)29 b Fg(:)40 b Fm(DRAFT)31 b Fg(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2836 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 1106 4 │ │ │ │ +v 1288 w Fo(GPart)29 b Fg(:)41 b Fm(DRAFT)30 b Fg(Octob)s(er)g(4,)h │ │ │ │ +(2025)p 2795 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 │ │ │ │ @@ -6414,17 +6401,17 @@ │ │ │ │ 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 1065 4 v 1246 100 a Fo(GPart)29 │ │ │ │ -b Fg(:)40 b Fm(DRAFT)122 b Fg(F)-8 b(ebruary)30 b(29,)h(2024)p │ │ │ │ -2743 100 V 1065 w Fp(11)337 399 y Fn(\210)45 b Fp(The)30 │ │ │ │ +TeXDict begin 11 10 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(4,)h(2025)p │ │ │ │ +2702 100 V 1106 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 │ │ │ │ @@ -6493,32 +6480,32 @@ │ │ │ │ 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 1065 │ │ │ │ -4 v 1247 w Fo(GPart)29 b Fg(:)40 b Fm(DRAFT)31 b Fg(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2836 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 Fp(m)m(ust)i(b)s(e)g(of)h(the)f(form)g │ │ │ │ -Fo(*.ivf)f Fp(or)i Fo(*.ivb)p Fp(.)337 1028 y Fn(\210)45 │ │ │ │ -b Fp(The)32 b Fo(option)f Fp(parameter)i(sp)s(eci\014es)f(the)h(t)m(yp) │ │ │ │ -s(e)f(of)h(net)m(w)m(ork)g(optimization)i(problem)d(that)h(will)g(b)s │ │ │ │ -(e)427 1141 y(solv)m(ed.)500 1286 y Ff({)45 b Fo(option)h(=)i(1)30 │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fp(12)p 182 100 1106 │ │ │ │ +4 v 1288 w Fo(GPart)29 b Fg(:)41 b Fm(DRAFT)30 b Fg(Octob)s(er)g(4,)h │ │ │ │ +(2025)p 2795 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 │ │ │ │ +Fp(m)m(ust)i(b)s(e)g(of)h(the)f(form)g Fo(*.ivf)f Fp(or)i │ │ │ │ +Fo(*.ivb)p Fp(.)337 1028 y Fn(\210)45 b Fp(The)32 b Fo(option)f │ │ │ │ +Fp(parameter)i(sp)s(eci\014es)f(the)h(t)m(yp)s(e)f(of)h(net)m(w)m(ork)g │ │ │ │ +(optimization)i(problem)d(that)h(will)g(b)s(e)427 1141 │ │ │ │ +y(solv)m(ed.)500 1286 y Ff({)45 b Fo(option)h(=)i(1)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 │ │ │ │ (and)f(is)h(bipartite.)500 1415 y Ff({)45 b Fo(option)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 1544 y Ff({)45 │ │ │ │ b Fo(option)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.)337 1689 y Fn(\210)45 b Fp(The)30 b Fo(alpha)f │ │ │ │ @@ -6574,17 +6561,17 @@ │ │ │ │ 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 1065 4 v 1246 100 a Fo(GPart)29 │ │ │ │ -b Fg(:)40 b Fm(DRAFT)122 b Fg(F)-8 b(ebruary)30 b(29,)h(2024)p │ │ │ │ -2743 100 V 1065 w Fp(13)337 399 y Fn(\210)45 b Fp(The)c │ │ │ │ +TeXDict begin 13 12 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(4,)h(2025)p │ │ │ │ +2702 100 V 1106 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 │ │ │ │ @@ -6654,26 +6641,25 @@ │ │ │ │ 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 1065 │ │ │ │ -4 v 1247 w Fo(GPart)29 b Fg(:)40 b Fm(DRAFT)31 b Fg(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2836 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 1106 │ │ │ │ +4 v 1288 w Fo(GPart)29 b Fg(:)41 b Fm(DRAFT)30 b Fg(Octob)s(er)g(4,)h │ │ │ │ +(2025)p 2795 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 February 29, 2024 │ │ │ │ │ + 2 GPart : DRAFT October 4, 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 February 29, 2024 3 │ │ │ │ │ + GPart : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 4 GPart : DRAFT October 4, 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 February 29, 2024 5 │ │ │ │ │ + GPart : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 6 GPart : DRAFT October 4, 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 February 29, 2024 7 │ │ │ │ │ + GPart : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 8 GPart : DRAFT October 4, 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 February 29, 2024 9 │ │ │ │ │ + GPart : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 10 GPart : DRAFT October 4, 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 February 29, 2024 11 │ │ │ │ │ + GPart : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 12 GPart : DRAFT October 4, 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 February 29, 2024 13 │ │ │ │ │ + GPart : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 14 GPart : DRAFT October 4, 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 2024.02.29:1857 │ │ │ │ +%DVIPSSource: TeX output 2025.10.04:1734 │ │ │ │ %%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 │ │ │ │ @@ -1204,23 +1204,23 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 50 /two put │ │ │ │ dup 52 /four put │ │ │ │ -dup 57 /nine put │ │ │ │ +dup 53 /five put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 70 /F put │ │ │ │ -dup 97 /a put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ +dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ -dup 117 /u put │ │ │ │ -dup 121 /y put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1394,95 +1394,85 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA647CD0E2539DFAD9604486DCCFA49 │ │ │ │ -AC96130D106A8F8387633622C3809400D6E8FF9D60877C743502E4D211CEBF62 │ │ │ │ -9A6F91045C22D5D20C5FF677D89983D02E5EE26C71A9EAE0E7C52465DA5A149A │ │ │ │ -9B731C27EC8366BC3E841C0CAE49A33DE164A857365B17B09CAD121C47A980CB │ │ │ │ -C75E1030F6C394EDB46C54B46880D2344127B903FB22684C9CAACE6053DC3BFA │ │ │ │ -4E47C565ECAF19C4295A11BD68CA6D45B5738B932BB3690A8C712904C49C1636 │ │ │ │ -A7702075F2FEA8DB3EB3A3C1216BB769DD0BAF4507A18E3052F2C846B0797933 │ │ │ │ -8CE9BB2DB5DFADAF1B0FC3A22BAB82A0D5D290F7AD950013CFA465BE11C1076D │ │ │ │ -5833FF92321FBF90D9229D3BA09DD18EEC44D9FCF8FCF63CC09D2977BFA798B6 │ │ │ │ -47FB047EA6AF69C7DE570176F5B6C0FED74DEDBF7DDF49550DD84BA14AC09423 │ │ │ │ -F70D5B14F0F8588F1E2FFE0DFE0760E77A9E39DEDAC5C5AE3760722C029B916D │ │ │ │ -96A2A7D1DD6A61F90B4B9806314A668EB7A0E107A3527310A240490453CC18D7 │ │ │ │ -3793B4CF3CE13EA332E7F5C2BACF85AC75FE84693B966BB0F6FB9A179A331C4E │ │ │ │ -55E9EF30E2734E44A88E053CD5E650D7E529E94CB7F8B733E68315ACAC5BEFC5 │ │ │ │ -3FE4F585F875310267865679AB381125C31E9AEB7226DC9F18DA80A9DE2F38A4 │ │ │ │ -51B8F9D5B2FBA0F50D53AE6212AFE41466A594F7A303B4E82F1493C0B8D65756 │ │ │ │ -BE6AF2931E5ADA5CE7D51CB5B1EC916C6C6D674808939331CA66F8181DD2B112 │ │ │ │ -1A12198CCCB6BBF1D40C803E794B65241ACE1E0D30CCA1C6F2D3E1415B98726B │ │ │ │ -9BA303BE2C4C276108CC78C093F1CC85CA454CC38535D1DEBFA341D84E8A5DDF │ │ │ │ -D53D8DD0F4A812B5BA63871BEB3BCE93FBC77AD395914E2CD757546C2BE2D641 │ │ │ │ -FDB12258E1E1D10E1B963EABB265F2C8B2547D48963E1AD3B223B666B46915A1 │ │ │ │ -157F5EA0AB8D8411C07AA2EB5D0EF1A1BA6D81C47473A3D3D6287104C7BF61F8 │ │ │ │ -3BDB64995DE96A65BF2B7288C51ADAA3D373A95C40D5240C5FF397551554AA9E │ │ │ │ -C89C7E45AA7738503CB058EF6AD5052CC78E4445C810C250BF25394B8D7DE82E │ │ │ │ -315C9CCD6E1E9150EC79EE0F354C668AE199C1AFF39C67337A86CB932E8D64E9 │ │ │ │ -389FF3CC08B538492DEED017686DBB9BDEA30FE67FB4EBDB3627C16FD15F243A │ │ │ │ -7FDEB310EFC940E57726E94340472F2C452815927ADE21578C959890216BE504 │ │ │ │ -225BE4B4D2E3B19F5E06B5A0B25AF168C3A2B26F599A829F89C16BD2026E8CC9 │ │ │ │ -8FB3CBB830C3E36C099071A70D0B8834FF2C17364EB50D5C71440CC7BFE02321 │ │ │ │ -8C6ECAC2F7EC1BE39077DB0E8B2B251626A71FD038EB2CF1FC254D98C1535CAA │ │ │ │ -A8C987BC266482BD860A333048E1EDB3DD40A6ECD6DA0088AD9B9640202D89AA │ │ │ │ -0BB9A0ADF63491E67F2E97E35942D77E59B9B8AB0ED28B022EE5CD3449FC5B7A │ │ │ │ -19E38845B488F97D155C4312885E29537EAE97719C65845663480CE79DE8F037 │ │ │ │ -68995C0928FE8AFBEE554F01381EE5187578DF5D2542F26F66A599EE8ECC1F68 │ │ │ │ -FBADF3C2BA968C3CEB86675CF9A6CFD736E1422800D270417D497903DE87F2AE │ │ │ │ -938E39E120E9D3079F512E545E0E2616B84E81FE41392184F96818A7C86BF541 │ │ │ │ -F2E67C48CA56DA838C9FA0FAD538073B9F26319140D1F80EEEBCA190DE660A31 │ │ │ │ -457CAC16E92F87449A3734F9EA751588514865B58DC073658C8A857B5398AAC7 │ │ │ │ -3DC11E069996EF74A3189A07630D5DB87C5E028CD193C086B4D0E8BABC4F2393 │ │ │ │ -235EC96091B16C4A6D97DA1BD30A2D2E71F55869223CA66AD12448B668685F6E │ │ │ │ -06E7888D7F20045C662C4F7994CC7E1CE9AAC33A026716AA0551DF12343F0E22 │ │ │ │ -6E9F4B21C90406CC4997601194EF37A973221D1F4D73DD5666BD297F621C92AA │ │ │ │ -E3F698BC1146ADE754C4120EDF5B3E974D75A237E51DB49D52CD6CC7C9E8BD2D │ │ │ │ -E6849DF8F4DBA86C655D0C57CB54836C8A841C1D814F6B493F96ADBFCAD78D3B │ │ │ │ -430C58EF169950851B6A0B46411488B1A6F6974832787A24C0CDDBE27996EFB1 │ │ │ │ -DB341FA34B1DC6238D978D1E1D34AF3FB375ED6DA9C88699F195C88A54622F7C │ │ │ │ -36DAFC663D85660E756733A7E22F20C6A5D91F06087CAD10F7217BD33F343DC6 │ │ │ │ -F5EB9F16FE763672243EE6AE5CB6063A1D64670E1C059DD52134974E27D9D89C │ │ │ │ -BC658FCD814F20703D610C978FDCD6E2AEA31C18D1A310F215B28199F66C87DB │ │ │ │ -3B23980A393E1DD77AFA3045EDB6942505F3CF6204315A14E5B6BF2E96F3BB1F │ │ │ │ -628D24AC1893BC7DAEF3AA63F2116837F31DB90D872CBD9E5C48BCDEE781D20D │ │ │ │ -C6553D2D15F4E8438A9D1C7CEE1B72BD6AA08DC0AFEAF8B4DC1038707EE4A1BF │ │ │ │ -3D84460E60AF90F55002C1D8EBF0700F7EC3EFC944BEA78D0E0536F3AA6D9A84 │ │ │ │ -604A781AC5ACFEB7E681365315EE11E991C03DA431B65B332AD8F83F6F3AE66C │ │ │ │ -1BF434D3793FB5BCC44E44ACFF2855C2770C4AC678C6ACD6EB071974ACF1AE37 │ │ │ │ -D02C1736C62CC205A2F3488448527EFFA379613A8E6A6D134F4BFBAE6127304D │ │ │ │ -576C900A458E32CD42A4674415E03D8EB5742E71B854B3EDFD271AA214436544 │ │ │ │ -D1BCFD52F439298847E1FA258E5D38384FC85BC4EDC6F9E4431621CF763B137B │ │ │ │ -22DB6E3268B3F78881D55EA7C52ABF23FB73C152B06B708084FE1B00CFE72D9D │ │ │ │ -57B62AEE912E63BBD89D4D13CE896735454F1A16C3D9FB6CDF142CCA9F1C0242 │ │ │ │ -46F62109DF30667DA327F7CF6DC19B880C860C69080597FFCB1793313E202D4F │ │ │ │ -120A7C6B052C2EB7597B71B0985D24FDD2D3918393BF720E762C5DBBC2BB1E91 │ │ │ │ -B04560364EFE5B16EB068E0560FB932E0C617CFB95A166388E99AC4CB020F5BC │ │ │ │ -E24BB77352D7C3B21C37D404051A70FFFA0F726C35501A1FBB411F832CE46A2E │ │ │ │ -B424E26BD4 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFD8CDE285A2827F4659E339460ABEF319FE44D7A91E93CA309E9266E03DA │ │ │ │ +735F5DEF3920C01189BB63C2BD7ED0B92EABB481F123641477CDCCAB9751FB7B │ │ │ │ +F67DA7CE6EB134BC10D0228562BA5A6BFE6940907EF030ABF9EC4A8A0DFEF73D │ │ │ │ +3289E8CB4DC37694F5A656A935D92C72B3D82B012F578A27711B161DE9652ADC │ │ │ │ +71C51E743E4E9A7C6CF6FF16C5D65C1F60954C0858B48FAAC4FBB21988E2A934 │ │ │ │ +AC50C097DDF42C416359647D79F830E1430FB9BB803451A6732D1B5CAB817C1B │ │ │ │ +673B3077D9A180F184267E9990C087BCDEBC8EB8B889934DD0EB63C2EBCED4A3 │ │ │ │ +83A0D6A365412CFF610EF7BD5F82B02AA293F1D2F868768CDE9B801C929B4A38 │ │ │ │ +64E20C70BC4041F837AD15423517F7336A067D140A2C7906DC5D45885FFB3B69 │ │ │ │ +724E5B9B138BD15A9359EB25D14BC4193E529D1A49FEB0DC1015BF94CEBBD5E0 │ │ │ │ +EA148B185C53E12BD9FA6DBC097D789A73E832F02F55080D8ED6087F5952EA78 │ │ │ │ +250A4C65CE4C4013554A031446D2092D813C4CB1A605D97A40CF867F656ECD1C │ │ │ │ +C23F80230AD1E449AA8B4007134F71156719206441D92B1A6DD25101ABF69F70 │ │ │ │ +538CCCE216376E1BD6E423986BD4E83B1975B15092D4E19F885672F9E7C02485 │ │ │ │ +E02DA0F4243D324A5983D1D46444E5F6573F699E4F2A3395EF0EB7808B7D4D62 │ │ │ │ +690FD033E93AA553082273636503DA4BBBBFA6D127CE10424DD1DDF4F879305C │ │ │ │ +14F64180E7851D091B3220DFC70CAA44716B8F7F0C6FBEDB167801DED77F9E69 │ │ │ │ +E9B31CD2D8044DB946E511162976C34DE27F2BB974B70509005562A0A21317B7 │ │ │ │ +46D826A31C476C8F9A778F941FF5956BA2D765B1AD0AC4BC7AE1CD8A2A81F039 │ │ │ │ +06EB13EBD099BBDB2EBDB54D459C288EA69FB0018CE9255BBFB08C1F90FF30BD │ │ │ │ +C971DA7FDB193281B8F967F21AB42F13F36085AC9EC0D6B6B448C8F289B0AD70 │ │ │ │ +DB521A4755ECF9CA594741E5C674220C21C265EF3BAE594197B00048C8D4DB73 │ │ │ │ +4AC47B6A86EAC7EECD042C8E23C347F8C9FCB870473C1FBD91C298174BCBF1A9 │ │ │ │ +7B366C570A9A04A433495FBC9FD0FFC22A0E8181424C0F038ED97AD5054B10CC │ │ │ │ +1CD5BA0719DD0B4F4F18932AE87FF8B8C1CF0C7482B7847049761505DCD85146 │ │ │ │ +4EE5CB53993A9449CD05233E961BD49AE92D308E2065D6C6BF038538039AA56A │ │ │ │ +C59D424BE3175427337E16892D3920598D518423E145C6B2DD3881F338845F0D │ │ │ │ +16C47AA0D9C2D6DE99C6A302D567ACD6F98BF38223F1890E099C8F93348FFDAA │ │ │ │ +C2D3440187C8FED87C1A891EF11EFA7168EC47F72AF8BC5BE1B88B1084E704F5 │ │ │ │ +82099F1A79E556D94CC38851C97DC3864945A7470F1389BCF608BADAE45B236D │ │ │ │ +2934A20FFBCF169BF84DF496B07E7F1D9002E62B030337642804403DF7E4B3FF │ │ │ │ +C5A421EE0033BA06C50A041FBFE8F81AFC145664E2976505EB14859CF0377EBA │ │ │ │ +EA604CF8BFB5F9ADB9A7ED56E6F0F919E791D57C7232241C892EAC3E55D2D03B │ │ │ │ +FF43B9DAB7B1D8C6588D6D3503F49E80121E52254431B308752A936E0B51124D │ │ │ │ +C7F23C316BA6FA73E6BC47EB9550003E1393C68360067C094C65C0DD17214FA0 │ │ │ │ +45FF0F9C3E0AE4C81093752D23EA95E163C98EC04873ECE3FB0882567329525C │ │ │ │ +0A3937B16CA72B5EB6D2DC10C1B485C0BA939587AFEBB6D837A40401C666BC1C │ │ │ │ +F3344FBAB3E48BEE18F3AF5CDB33BA63778D373A851333C8C34E2F35AB94E8B4 │ │ │ │ +FF7E62A92ED83B872894E0A17209E14CF61269204A35A4BC8C7EE4B16F19E91F │ │ │ │ +669C4EFCECB187F6C7FAF92B4E14E400C6B3C81679D4A7196D66DB1E897DDA42 │ │ │ │ +47CC2848B46D581A95EEF85AB528E8CDEEB275D1E1FE197A3A08D36406E2DADF │ │ │ │ +A87D817AF18B5525F89B7C2E584F4A1254A1FC71E749999A2152870631A69CB6 │ │ │ │ +666EBD6BB3366A598F6592040D0E82B9D866DF0A76C362E76C2804D108A0C148 │ │ │ │ +51F42E9E0ABD52CC2D02B156B63AFD03313AFC80EACC83DF9B59F05FD798951D │ │ │ │ +FCF5335636DFC6561910ACE0AEC47F74CFD302EB7421D28AAAC8FF82B7CE2B2A │ │ │ │ +340B8BCE09F57BFCBC77F91096D97A85726E68846398C8C9C8D3A65A252AE8FB │ │ │ │ +166750C244963BC61E2236BAAC529FABD6FC774550096374A8DB81B6AF1EA843 │ │ │ │ +27F671C0045D629E3734EF037447C4763514FD1C4AE858A494AFC23A64C82149 │ │ │ │ +F4C0A7023B3865B84FAC2DC88D1553DCEBA3D8FB5DBC1103123F6B8CB5B3A399 │ │ │ │ +B665B26B001BF1E4BFABE42BFF6B02D69FA88D5CBCA5A11D5B48CFB4EAE60558 │ │ │ │ +5FBE254AD3BE01761CD4995E766E172D768621223505FD6AA8F89FC042EB814C │ │ │ │ +34373DAEC4FAAF71C0752F814154C5299F751CE7E0F9C673D2E448D0204C214C │ │ │ │ +C04DC34671FBEF72350FFBA263662E86A0D3795E310153AAF4C8A2623E167E6E │ │ │ │ +1F13A9BA485D5DDFC451D691DBA7C49E20354A7AD79D89F7EDE24F0D5B48B27D │ │ │ │ +568D01EF2555504196C09841F5970D8CF6C5D47FFFCF18AE6B2A485342000AAD │ │ │ │ +1F922FBEF7C98E0965609C89240E7B131A59551F57CD5C92097FCE75F5D2778F │ │ │ │ +F9ACF43A3273551363442C8C539205903A835C744A4AA953545506081D3D231A │ │ │ │ +A140E01F280BC42A3C35EDAD5F6B8CE6E51C68E41CA813710864ED880FCE846C │ │ │ │ +1B66D27CC2DBCDC2B1B96A12490BD76D67A415D4A6595CD9B19D3104A83D2C82 │ │ │ │ +C46DCD2C027F0565EDB83E54FF99498194D3140E55E8EE65EBDEAC5409B5616A │ │ │ │ +73141DA2D581E300A6057F4301A02DD160AB3E55A116313525122D0608816AA8 │ │ │ │ +4712EEF3D6FE8C893DF37D │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -5636,16 +5626,16 @@ │ │ │ │ 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 134[48 3[51 2[36 12[40 │ │ │ │ -2[51 45 26[59 11[25 45 4[45 1[45 1[45 3[25 44[{}13 90.9091 │ │ │ │ +46[{}27 119.552 /CMBX12 rf /Fe 139[35 1[36 2[45 9[40 │ │ │ │ +1[40 51 18[71 20[25 4[45 45 1[45 1[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 │ │ │ │ @@ -5765,34 +5755,34 @@ │ │ │ │ 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 1087 4 v │ │ │ │ -1269 w Fn(Graph)29 b Fe(:)41 b Fl(DRAFT)30 b Fe(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2813 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(and)g(map)h(bac)m(k)g(to)g(the)g(unit)f(w)m(eigh)m │ │ │ │ -(t)i(graph.)53 b(The)0 737 y(sa)m(vings)31 b(in)f(time)h(and)f(space)h │ │ │ │ -(can)g(b)s(e)e(considerable.)141 884 y(The)e Fn(Graph)e │ │ │ │ -Fo(ob)5 b(ject)28 b(has)e(a)i(metho)s(d)e(to)i(\014nd)d(the)i │ │ │ │ -Fj(\036)g Fo(map)g(for)f(the)i(natural)f(compressed)f(graph;)i(it)f │ │ │ │ -(requires)0 997 y Fj(O)s Fo(\()p Fi(j)p Fj(V)21 b Fi(j)p │ │ │ │ -Fo(\))37 b(space)g(and)f Fj(O)s Fo(\()p Fi(j)p Fj(E)5 │ │ │ │ -b Fi(j)p Fo(\))38 b(time.)61 b(There)36 b(is)h(a)g(metho)s(d)f(to)h │ │ │ │ -(compress)g(a)g(graph)f(\(i.e.,)k(giv)m(en)e Fj(G)p Fo(\()p │ │ │ │ -Fj(V)5 b(;)15 b(E)5 b Fo(\))39 b(and)0 1110 y(an)32 b(arbitrary)h │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fo(2)p 136 100 1128 4 v │ │ │ │ +1310 w Fn(Graph)29 b Fe(:)41 b Fl(DRAFT)30 b Fe(Octob)s(er)g(4,)h(2025) │ │ │ │ +p 2772 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 │ │ │ │ +(and)g(map)h(bac)m(k)g(to)g(the)g(unit)f(w)m(eigh)m(t)i(graph.)53 │ │ │ │ +b(The)0 737 y(sa)m(vings)31 b(in)f(time)h(and)f(space)h(can)g(b)s(e)e │ │ │ │ +(considerable.)141 884 y(The)e Fn(Graph)e Fo(ob)5 b(ject)28 │ │ │ │ +b(has)e(a)i(metho)s(d)e(to)i(\014nd)d(the)i Fj(\036)g │ │ │ │ +Fo(map)g(for)f(the)i(natural)f(compressed)f(graph;)i(it)f(requires)0 │ │ │ │ +997 y Fj(O)s Fo(\()p Fi(j)p Fj(V)21 b Fi(j)p Fo(\))37 │ │ │ │ +b(space)g(and)f Fj(O)s Fo(\()p Fi(j)p Fj(E)5 b Fi(j)p │ │ │ │ +Fo(\))38 b(time.)61 b(There)36 b(is)h(a)g(metho)s(d)f(to)h(compress)g │ │ │ │ +(a)g(graph)f(\(i.e.,)k(giv)m(en)e Fj(G)p Fo(\()p Fj(V)5 │ │ │ │ +b(;)15 b(E)5 b Fo(\))39 b(and)0 1110 y(an)32 b(arbitrary)h │ │ │ │ Fj(\036)p Fo(,)g(construct)g Fk(G)p Fo(\()p Fk(V)q Fj(;)15 │ │ │ │ b Fk(E)p Fo(\)\))34 b(and)e(a)h(metho)s(d)f(to)h(expand)f(a)h(graph)f │ │ │ │ (\(i.e.,)j(giv)m(en)e Fk(G)p Fo(\()p Fk(V)q Fj(;)15 b │ │ │ │ Fk(E)p Fo(\))34 b(and)e(an)0 1223 y(arbitrary)e Fj(\036)p │ │ │ │ Fo(,)h(construct)g Fj(G)p Fo(\()p Fj(V)5 b(;)15 b(E)5 │ │ │ │ b Fo(\)\).)141 1369 y(There)28 b(are)h(sev)m(eral)h(utilit)m(y)g(metho) │ │ │ │ s(ds)d(to)j(return)d(information)i(ab)s(out)f(the)h(memory)f(in)g(use)g │ │ │ │ @@ -5831,17 +5821,17 @@ │ │ │ │ (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 1087 4 v 1269 100 a Fn(Graph)29 │ │ │ │ -b Fe(:)40 b Fl(DRAFT)121 b Fe(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2766 100 V 1087 w Fo(3)0 399 y Fa(1.2.1)112 b(Basic)38 │ │ │ │ +TeXDict begin 3 2 bop 91 100 1128 4 v 1310 100 a Fn(Graph)29 │ │ │ │ +b Fe(:)40 b Fl(DRAFT)121 b Fe(Octob)s(er)31 b(4,)g(2025)p │ │ │ │ +2725 100 V 1128 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 │ │ │ │ @@ -5908,27 +5898,26 @@ │ │ │ │ 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 1087 4 v │ │ │ │ -1269 w Fn(Graph)29 b Fe(:)41 b Fl(DRAFT)30 b Fe(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2813 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 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fo(4)p 136 100 1128 4 v │ │ │ │ +1310 w Fn(Graph)29 b Fe(:)41 b Fl(DRAFT)30 b Fe(Octob)s(er)g(4,)h(2025) │ │ │ │ +p 2772 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 b(and)f(the)g Fn(vwghts)f │ │ │ │ Fo(v)m(ector.)227 1004 y(Note,)32 b Fn(adjIVL)p Fo(,)c │ │ │ │ Fn(vwghts)g Fo(and)h Fn(ewghtIVL)f Fo(are)i(o)m(wned)g(b)m(y)g(the)g │ │ │ │ Fn(Graph)e Fo(ob)5 b(ject)31 b(and)e(will)h(b)s(e)f(free'd)h(when)227 │ │ │ │ 1117 y(the)h Fn(Graph)e Fo(ob)5 b(ject)31 b(is)f(free'd.)227 │ │ │ │ 1270 y Fl(Err)-5 b(or)38 b(che)-5 b(cking:)47 b Fo(If)33 │ │ │ │ b Fn(graph)g Fo(or)g Fn(adjIVL)g Fo(is)h Fn(NULL)p Fo(,)e │ │ │ │ @@ -5999,17 +5988,17 @@ │ │ │ │ b(alence)27 b(map)e(from)h(the)g(graph)f(to)i(its)f(natural)g │ │ │ │ (compressed)f(graph.)227 5294 y(The)33 b(map)f 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 1087 4 v 1269 100 a Fn(Graph)29 │ │ │ │ -b Fe(:)40 b Fl(DRAFT)121 b Fe(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2766 100 V 1087 w Fo(5)227 399 y Fl(Err)-5 b(or)33 b(che)-5 │ │ │ │ +TeXDict begin 5 4 bop 91 100 1128 4 v 1310 100 a Fn(Graph)29 │ │ │ │ +b Fe(:)40 b Fl(DRAFT)121 b Fe(Octob)s(er)31 b(4,)g(2025)p │ │ │ │ +2725 100 V 1128 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 │ │ │ │ @@ -6069,31 +6058,31 @@ │ │ │ │ 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 1087 4 v │ │ │ │ -1269 w Fn(Graph)29 b Fe(:)41 b Fl(DRAFT)30 b Fe(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2813 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 1098 y(4.)46 b Fn(int)h(Graph_adjAndEweights)42 │ │ │ │ -b(\()48 b(Graph)e(*graph,)g(int)h(u,)g(int)g(*pusize,)1516 │ │ │ │ -1210 y(int)g(**puadj,)e(int)i(**puewghts\))e(;)227 1357 │ │ │ │ -y Fo(This)27 b(metho)s(d)g(\014lls)g Fn(*psize)f Fo(with)i(the)f(size)i │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fo(6)p 136 100 1128 4 v │ │ │ │ +1310 w Fn(Graph)29 b Fe(:)41 b Fl(DRAFT)30 b Fe(Octob)s(er)g(4,)h(2025) │ │ │ │ +p 2772 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 │ │ │ │ +1098 y(4.)46 b Fn(int)h(Graph_adjAndEweights)42 b(\()48 │ │ │ │ +b(Graph)e(*graph,)g(int)h(u,)g(int)g(*pusize,)1516 1210 │ │ │ │ +y(int)g(**puadj,)e(int)i(**puewghts\))e(;)227 1357 y │ │ │ │ +Fo(This)27 b(metho)s(d)g(\014lls)g Fn(*psize)f Fo(with)i(the)f(size)i │ │ │ │ (of)e(the)h(adjacency)h(list,)g Fn(*puadj)c Fo(p)s(oin)m(ts)j(to)g(the) │ │ │ │ g(start)g(of)g(the)227 1470 y(list)j(v)m(ector)h(and)e │ │ │ │ Fn(*puewghts)e Fo(p)s(oin)m(ts)i(to)h(the)g(start)g(of)f(the)h(edge)g │ │ │ │ (w)m(eigh)m(ts)h(v)m(ector.)227 1616 y Fl(Err)-5 b(or)34 │ │ │ │ b(che)-5 b(cking:)40 b Fo(If)29 b Fn(graph)g Fo(is)g │ │ │ │ Fn(NULL)p Fo(,)g(or)h(if)g Fn(u)48 b(<)f(0)30 b Fo(or)f │ │ │ │ Fn(u)48 b(>=)f(nvtx)29 b Fo(or)h(if)f Fn(pusize)p Fo(,)g │ │ │ │ @@ -6165,17 +6154,17 @@ │ │ │ │ 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 1087 4 v 1269 100 a Fn(Graph)29 │ │ │ │ -b Fe(:)40 b Fl(DRAFT)121 b Fe(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2766 100 V 1087 w Fo(7)227 399 y Fl(Err)-5 b(or)32 b(che)-5 │ │ │ │ +TeXDict begin 7 6 bop 91 100 1128 4 v 1310 100 a Fn(Graph)29 │ │ │ │ +b Fe(:)40 b Fl(DRAFT)121 b Fe(Octob)s(er)31 b(4,)g(2025)p │ │ │ │ +2725 100 V 1128 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 │ │ │ │ @@ -6257,34 +6246,33 @@ │ │ │ │ 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 1087 4 v │ │ │ │ -1269 w Fn(Graph)29 b Fe(:)41 b Fl(DRAFT)30 b Fe(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2813 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 │ │ │ │ -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.)111 1020 y(7.)46 │ │ │ │ -b Fn(int)h(Graph_writeForHumanEye)42 b(\()47 b(Graph)g(*graph,)f(FILE)g │ │ │ │ -(*fp)h(\))h(;)227 1175 y Fo(This)c(metho)s(d)h(writes)g(a)g │ │ │ │ -Fn(Graph)f Fo(ob)5 b(ject)46 b(to)f(a)h(\014le)f(in)f(a)i(h)m(uman)e │ │ │ │ -(readable)h(format.)85 b(The)44 b(metho)s(d)227 1288 │ │ │ │ -y Fn(Graph)p 473 1288 29 4 v 33 w(writeStats\(\))23 b │ │ │ │ -Fo(is)j(called)i(to)f(write)f(out)h(the)f(header)g(and)g(statistics.)41 │ │ │ │ -b(The)26 b(v)-5 b(alue)27 b Fn(1)f Fo(is)g(returned.)227 │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fo(8)p 136 100 1128 4 v │ │ │ │ +1310 w Fn(Graph)29 b Fe(:)41 b Fl(DRAFT)30 b Fe(Octob)s(er)g(4,)h(2025) │ │ │ │ +p 2772 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 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.)111 │ │ │ │ +1020 y(7.)46 b Fn(int)h(Graph_writeForHumanEye)42 b(\()47 │ │ │ │ +b(Graph)g(*graph,)f(FILE)g(*fp)h(\))h(;)227 1175 y Fo(This)c(metho)s(d) │ │ │ │ +h(writes)g(a)g Fn(Graph)f Fo(ob)5 b(ject)46 b(to)f(a)h(\014le)f(in)f(a) │ │ │ │ +i(h)m(uman)e(readable)h(format.)85 b(The)44 b(metho)s(d)227 │ │ │ │ +1288 y Fn(Graph)p 473 1288 29 4 v 33 w(writeStats\(\))23 │ │ │ │ +b Fo(is)j(called)i(to)f(write)f(out)h(the)f(header)g(and)g(statistics.) │ │ │ │ +41 b(The)26 b(v)-5 b(alue)27 b Fn(1)f Fo(is)g(returned.)227 │ │ │ │ 1444 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.)111 │ │ │ │ 1641 y(8.)46 b Fn(int)h(Graph_writeStats)d(\()j(Graph)f(*graph,)g(FILE) │ │ │ │ h(*fp)g(\))g(;)227 1797 y Fo(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 Fn(1)f Fo(is)g(returned.)227 1952 y Fl(Err)-5 b(or)34 │ │ │ │ @@ -6331,17 +6319,17 @@ │ │ │ │ b(alence)37 b(map)f(to)227 5181 y(its)g(natural)g(compressed)f(graph)g │ │ │ │ (\(the)i(\014rst)d(graph)h(need)h(not)g(b)s(e)f(unit)g(w)m(eigh)m(t\),) │ │ │ │ k(and)c(constructs)h(the)227 5294 y(natural)24 b(compressed)f(graph.)38 │ │ │ │ b(The)23 b(equiv)-5 b(alence)25 b(map)e(and)g(compressed)g(graph)g(are) │ │ │ │ h(optionally)h(written)227 5407 y(out)31 b(to)g(\014les.)p │ │ │ │ eop end │ │ │ │ %%Page: 9 9 │ │ │ │ -TeXDict begin 9 8 bop 91 100 1087 4 v 1269 100 a Fn(Graph)29 │ │ │ │ -b Fe(:)40 b Fl(DRAFT)121 b Fe(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2766 100 V 1087 w Fo(9)337 399 y Fc(\210)45 b Fo(The)28 │ │ │ │ +TeXDict begin 9 8 bop 91 100 1128 4 v 1310 100 a Fn(Graph)29 │ │ │ │ +b Fe(:)40 b Fl(DRAFT)121 b Fe(Octob)s(er)31 b(4,)g(2025)p │ │ │ │ +2725 100 V 1128 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 │ │ │ │ @@ -6424,51 +6412,50 @@ │ │ │ │ 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 1065 4 │ │ │ │ -v 1247 w Fn(Graph)29 b Fe(:)40 b Fl(DRAFT)31 b Fe(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2836 100 V 227 399 a Fo(This)d(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 1106 4 │ │ │ │ +v 1288 w Fn(Graph)29 b Fe(:)41 b Fl(DRAFT)30 b Fe(Octob)s(er)g(4,)h │ │ │ │ +(2025)p 2795 100 V 227 399 a Fo(This)d(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) │ │ │ │ @@ -6504,17 +6491,17 @@ │ │ │ │ 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 1065 4 v 1246 100 a Fn(Graph)29 │ │ │ │ -b Fe(:)40 b Fl(DRAFT)122 b Fe(F)-8 b(ebruary)30 b(29,)h(2024)p │ │ │ │ -2743 100 V 1065 w Fo(11)337 399 y Fc(\210)45 b Fo(The)37 │ │ │ │ +TeXDict begin 11 10 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(4,)h(2025)p │ │ │ │ +2702 100 V 1106 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 │ │ │ │ @@ -6571,18 +6558,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 1065 │ │ │ │ -4 v 1247 w Fn(Graph)29 b Fe(:)40 b Fl(DRAFT)31 b Fe(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2836 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 1106 │ │ │ │ +4 v 1288 w Fn(Graph)29 b Fe(:)41 b Fl(DRAFT)30 b Fe(Octob)s(er)g(4,)h │ │ │ │ +(2025)p 2795 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 February 29, 2024 │ │ │ │ │ + 2 Graph : DRAFT October 4, 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 February 29, 2024 3 │ │ │ │ │ + Graph : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 4 Graph : DRAFT October 4, 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 February 29, 2024 5 │ │ │ │ │ + Graph : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 6 Graph : DRAFT October 4, 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 February 29, 2024 7 │ │ │ │ │ + Graph : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 8 Graph : DRAFT October 4, 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 February 29, 2024 9 │ │ │ │ │ + Graph : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 10 Graph : DRAFT October 4, 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 February 29, 2024 11 │ │ │ │ │ + Graph : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 12 Graph : DRAFT October 4, 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 2024.02.29:1857 │ │ │ │ +%DVIPSSource: TeX output 2025.10.04:1734 │ │ │ │ %%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 │ │ │ │ @@ -2425,23 +2425,23 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 50 /two put │ │ │ │ dup 52 /four put │ │ │ │ -dup 57 /nine put │ │ │ │ +dup 53 /five put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 70 /F put │ │ │ │ -dup 97 /a put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ +dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ -dup 117 /u put │ │ │ │ -dup 121 /y put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -2615,95 +2615,85 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA647CD0E2539DFAD9604486DCCFA49 │ │ │ │ -AC96130D106A8F8387633622C3809400D6E8FF9D60877C743502E4D211CEBF62 │ │ │ │ -9A6F91045C22D5D20C5FF677D89983D02E5EE26C71A9EAE0E7C52465DA5A149A │ │ │ │ -9B731C27EC8366BC3E841C0CAE49A33DE164A857365B17B09CAD121C47A980CB │ │ │ │ -C75E1030F6C394EDB46C54B46880D2344127B903FB22684C9CAACE6053DC3BFA │ │ │ │ -4E47C565ECAF19C4295A11BD68CA6D45B5738B932BB3690A8C712904C49C1636 │ │ │ │ -A7702075F2FEA8DB3EB3A3C1216BB769DD0BAF4507A18E3052F2C846B0797933 │ │ │ │ -8CE9BB2DB5DFADAF1B0FC3A22BAB82A0D5D290F7AD950013CFA465BE11C1076D │ │ │ │ -5833FF92321FBF90D9229D3BA09DD18EEC44D9FCF8FCF63CC09D2977BFA798B6 │ │ │ │ -47FB047EA6AF69C7DE570176F5B6C0FED74DEDBF7DDF49550DD84BA14AC09423 │ │ │ │ -F70D5B14F0F8588F1E2FFE0DFE0760E77A9E39DEDAC5C5AE3760722C029B916D │ │ │ │ -96A2A7D1DD6A61F90B4B9806314A668EB7A0E107A3527310A240490453CC18D7 │ │ │ │ -3793B4CF3CE13EA332E7F5C2BACF85AC75FE84693B966BB0F6FB9A179A331C4E │ │ │ │ -55E9EF30E2734E44A88E053CD5E650D7E529E94CB7F8B733E68315ACAC5BEFC5 │ │ │ │ -3FE4F585F875310267865679AB381125C31E9AEB7226DC9F18DA80A9DE2F38A4 │ │ │ │ -51B8F9D5B2FBA0F50D53AE6212AFE41466A594F7A303B4E82F1493C0B8D65756 │ │ │ │ -BE6AF2931E5ADA5CE7D51CB5B1EC916C6C6D674808939331CA66F8181DD2B112 │ │ │ │ -1A12198CCCB6BBF1D40C803E794B65241ACE1E0D30CCA1C6F2D3E1415B98726B │ │ │ │ -9BA303BE2C4C276108CC78C093F1CC85CA454CC38535D1DEBFA341D84E8A5DDF │ │ │ │ -D53D8DD0F4A812B5BA63871BEB3BCE93FBC77AD395914E2CD757546C2BE2D641 │ │ │ │ -FDB12258E1E1D10E1B963EABB265F2C8B2547D48963E1AD3B223B666B46915A1 │ │ │ │ -157F5EA0AB8D8411C07AA2EB5D0EF1A1BA6D81C47473A3D3D6287104C7BF61F8 │ │ │ │ -3BDB64995DE96A65BF2B7288C51ADAA3D373A95C40D5240C5FF397551554AA9E │ │ │ │ -C89C7E45AA7738503CB058EF6AD5052CC78E4445C810C250BF25394B8D7DE82E │ │ │ │ -315C9CCD6E1E9150EC79EE0F354C668AE199C1AFF39C67337A86CB932E8D64E9 │ │ │ │ -389FF3CC08B538492DEED017686DBB9BDEA30FE67FB4EBDB3627C16FD15F243A │ │ │ │ -7FDEB310EFC940E57726E94340472F2C452815927ADE21578C959890216BE504 │ │ │ │ -225BE4B4D2E3B19F5E06B5A0B25AF168C3A2B26F599A829F89C16BD2026E8CC9 │ │ │ │ -8FB3CBB830C3E36C099071A70D0B8834FF2C17364EB50D5C71440CC7BFE02321 │ │ │ │ -8C6ECAC2F7EC1BE39077DB0E8B2B251626A71FD038EB2CF1FC254D98C1535CAA │ │ │ │ -A8C987BC266482BD860A333048E1EDB3DD40A6ECD6DA0088AD9B9640202D89AA │ │ │ │ -0BB9A0ADF63491E67F2E97E35942D77E59B9B8AB0ED28B022EE5CD3449FC5B7A │ │ │ │ -19E38845B488F97D155C4312885E29537EAE97719C65845663480CE79DE8F037 │ │ │ │ -68995C0928FE8AFBEE554F01381EE5187578DF5D2542F26F66A599EE8ECC1F68 │ │ │ │ -FBADF3C2BA968C3CEB86675CF9A6CFD736E1422800D270417D497903DE87F2AE │ │ │ │ -938E39E120E9D3079F512E545E0E2616B84E81FE41392184F96818A7C86BF541 │ │ │ │ -F2E67C48CA56DA838C9FA0FAD538073B9F26319140D1F80EEEBCA190DE660A31 │ │ │ │ -457CAC16E92F87449A3734F9EA751588514865B58DC073658C8A857B5398AAC7 │ │ │ │ -3DC11E069996EF74A3189A07630D5DB87C5E028CD193C086B4D0E8BABC4F2393 │ │ │ │ -235EC96091B16C4A6D97DA1BD30A2D2E71F55869223CA66AD12448B668685F6E │ │ │ │ -06E7888D7F20045C662C4F7994CC7E1CE9AAC33A026716AA0551DF12343F0E22 │ │ │ │ -6E9F4B21C90406CC4997601194EF37A973221D1F4D73DD5666BD297F621C92AA │ │ │ │ -E3F698BC1146ADE754C4120EDF5B3E974D75A237E51DB49D52CD6CC7C9E8BD2D │ │ │ │ -E6849DF8F4DBA86C655D0C57CB54836C8A841C1D814F6B493F96ADBFCAD78D3B │ │ │ │ -430C58EF169950851B6A0B46411488B1A6F6974832787A24C0CDDBE27996EFB1 │ │ │ │ -DB341FA34B1DC6238D978D1E1D34AF3FB375ED6DA9C88699F195C88A54622F7C │ │ │ │ -36DAFC663D85660E756733A7E22F20C6A5D91F06087CAD10F7217BD33F343DC6 │ │ │ │ -F5EB9F16FE763672243EE6AE5CB6063A1D64670E1C059DD52134974E27D9D89C │ │ │ │ -BC658FCD814F20703D610C978FDCD6E2AEA31C18D1A310F215B28199F66C87DB │ │ │ │ -3B23980A393E1DD77AFA3045EDB6942505F3CF6204315A14E5B6BF2E96F3BB1F │ │ │ │ -628D24AC1893BC7DAEF3AA63F2116837F31DB90D872CBD9E5C48BCDEE781D20D │ │ │ │ -C6553D2D15F4E8438A9D1C7CEE1B72BD6AA08DC0AFEAF8B4DC1038707EE4A1BF │ │ │ │ -3D84460E60AF90F55002C1D8EBF0700F7EC3EFC944BEA78D0E0536F3AA6D9A84 │ │ │ │ -604A781AC5ACFEB7E681365315EE11E991C03DA431B65B332AD8F83F6F3AE66C │ │ │ │ -1BF434D3793FB5BCC44E44ACFF2855C2770C4AC678C6ACD6EB071974ACF1AE37 │ │ │ │ -D02C1736C62CC205A2F3488448527EFFA379613A8E6A6D134F4BFBAE6127304D │ │ │ │ -576C900A458E32CD42A4674415E03D8EB5742E71B854B3EDFD271AA214436544 │ │ │ │ -D1BCFD52F439298847E1FA258E5D38384FC85BC4EDC6F9E4431621CF763B137B │ │ │ │ -22DB6E3268B3F78881D55EA7C52ABF23FB73C152B06B708084FE1B00CFE72D9D │ │ │ │ -57B62AEE912E63BBD89D4D13CE896735454F1A16C3D9FB6CDF142CCA9F1C0242 │ │ │ │ -46F62109DF30667DA327F7CF6DC19B880C860C69080597FFCB1793313E202D4F │ │ │ │ -120A7C6B052C2EB7597B71B0985D24FDD2D3918393BF720E762C5DBBC2BB1E91 │ │ │ │ -B04560364EFE5B16EB068E0560FB932E0C617CFB95A166388E99AC4CB020F5BC │ │ │ │ -E24BB77352D7C3B21C37D404051A70FFFA0F726C35501A1FBB411F832CE46A2E │ │ │ │ -B424E26BD4 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFD8CDE285A2827F4659E339460ABEF319FE44D7A91E93CA309E9266E03DA │ │ │ │ +735F5DEF3920C01189BB63C2BD7ED0B92EABB481F123641477CDCCAB9751FB7B │ │ │ │ +F67DA7CE6EB134BC10D0228562BA5A6BFE6940907EF030ABF9EC4A8A0DFEF73D │ │ │ │ +3289E8CB4DC37694F5A656A935D92C72B3D82B012F578A27711B161DE9652ADC │ │ │ │ +71C51E743E4E9A7C6CF6FF16C5D65C1F60954C0858B48FAAC4FBB21988E2A934 │ │ │ │ +AC50C097DDF42C416359647D79F830E1430FB9BB803451A6732D1B5CAB817C1B │ │ │ │ +673B3077D9A180F184267E9990C087BCDEBC8EB8B889934DD0EB63C2EBCED4A3 │ │ │ │ +83A0D6A365412CFF610EF7BD5F82B02AA293F1D2F868768CDE9B801C929B4A38 │ │ │ │ +64E20C70BC4041F837AD15423517F7336A067D140A2C7906DC5D45885FFB3B69 │ │ │ │ +724E5B9B138BD15A9359EB25D14BC4193E529D1A49FEB0DC1015BF94CEBBD5E0 │ │ │ │ +EA148B185C53E12BD9FA6DBC097D789A73E832F02F55080D8ED6087F5952EA78 │ │ │ │ +250A4C65CE4C4013554A031446D2092D813C4CB1A605D97A40CF867F656ECD1C │ │ │ │ +C23F80230AD1E449AA8B4007134F71156719206441D92B1A6DD25101ABF69F70 │ │ │ │ +538CCCE216376E1BD6E423986BD4E83B1975B15092D4E19F885672F9E7C02485 │ │ │ │ +E02DA0F4243D324A5983D1D46444E5F6573F699E4F2A3395EF0EB7808B7D4D62 │ │ │ │ +690FD033E93AA553082273636503DA4BBBBFA6D127CE10424DD1DDF4F879305C │ │ │ │ +14F64180E7851D091B3220DFC70CAA44716B8F7F0C6FBEDB167801DED77F9E69 │ │ │ │ +E9B31CD2D8044DB946E511162976C34DE27F2BB974B70509005562A0A21317B7 │ │ │ │ +46D826A31C476C8F9A778F941FF5956BA2D765B1AD0AC4BC7AE1CD8A2A81F039 │ │ │ │ +06EB13EBD099BBDB2EBDB54D459C288EA69FB0018CE9255BBFB08C1F90FF30BD │ │ │ │ +C971DA7FDB193281B8F967F21AB42F13F36085AC9EC0D6B6B448C8F289B0AD70 │ │ │ │ +DB521A4755ECF9CA594741E5C674220C21C265EF3BAE594197B00048C8D4DB73 │ │ │ │ +4AC47B6A86EAC7EECD042C8E23C347F8C9FCB870473C1FBD91C298174BCBF1A9 │ │ │ │ +7B366C570A9A04A433495FBC9FD0FFC22A0E8181424C0F038ED97AD5054B10CC │ │ │ │ +1CD5BA0719DD0B4F4F18932AE87FF8B8C1CF0C7482B7847049761505DCD85146 │ │ │ │ +4EE5CB53993A9449CD05233E961BD49AE92D308E2065D6C6BF038538039AA56A │ │ │ │ +C59D424BE3175427337E16892D3920598D518423E145C6B2DD3881F338845F0D │ │ │ │ +16C47AA0D9C2D6DE99C6A302D567ACD6F98BF38223F1890E099C8F93348FFDAA │ │ │ │ +C2D3440187C8FED87C1A891EF11EFA7168EC47F72AF8BC5BE1B88B1084E704F5 │ │ │ │ +82099F1A79E556D94CC38851C97DC3864945A7470F1389BCF608BADAE45B236D │ │ │ │ +2934A20FFBCF169BF84DF496B07E7F1D9002E62B030337642804403DF7E4B3FF │ │ │ │ +C5A421EE0033BA06C50A041FBFE8F81AFC145664E2976505EB14859CF0377EBA │ │ │ │ +EA604CF8BFB5F9ADB9A7ED56E6F0F919E791D57C7232241C892EAC3E55D2D03B │ │ │ │ +FF43B9DAB7B1D8C6588D6D3503F49E80121E52254431B308752A936E0B51124D │ │ │ │ +C7F23C316BA6FA73E6BC47EB9550003E1393C68360067C094C65C0DD17214FA0 │ │ │ │ +45FF0F9C3E0AE4C81093752D23EA95E163C98EC04873ECE3FB0882567329525C │ │ │ │ +0A3937B16CA72B5EB6D2DC10C1B485C0BA939587AFEBB6D837A40401C666BC1C │ │ │ │ +F3344FBAB3E48BEE18F3AF5CDB33BA63778D373A851333C8C34E2F35AB94E8B4 │ │ │ │ +FF7E62A92ED83B872894E0A17209E14CF61269204A35A4BC8C7EE4B16F19E91F │ │ │ │ +669C4EFCECB187F6C7FAF92B4E14E400C6B3C81679D4A7196D66DB1E897DDA42 │ │ │ │ +47CC2848B46D581A95EEF85AB528E8CDEEB275D1E1FE197A3A08D36406E2DADF │ │ │ │ +A87D817AF18B5525F89B7C2E584F4A1254A1FC71E749999A2152870631A69CB6 │ │ │ │ +666EBD6BB3366A598F6592040D0E82B9D866DF0A76C362E76C2804D108A0C148 │ │ │ │ +51F42E9E0ABD52CC2D02B156B63AFD03313AFC80EACC83DF9B59F05FD798951D │ │ │ │ +FCF5335636DFC6561910ACE0AEC47F74CFD302EB7421D28AAAC8FF82B7CE2B2A │ │ │ │ +340B8BCE09F57BFCBC77F91096D97A85726E68846398C8C9C8D3A65A252AE8FB │ │ │ │ +166750C244963BC61E2236BAAC529FABD6FC774550096374A8DB81B6AF1EA843 │ │ │ │ +27F671C0045D629E3734EF037447C4763514FD1C4AE858A494AFC23A64C82149 │ │ │ │ +F4C0A7023B3865B84FAC2DC88D1553DCEBA3D8FB5DBC1103123F6B8CB5B3A399 │ │ │ │ +B665B26B001BF1E4BFABE42BFF6B02D69FA88D5CBCA5A11D5B48CFB4EAE60558 │ │ │ │ +5FBE254AD3BE01761CD4995E766E172D768621223505FD6AA8F89FC042EB814C │ │ │ │ +34373DAEC4FAAF71C0752F814154C5299F751CE7E0F9C673D2E448D0204C214C │ │ │ │ +C04DC34671FBEF72350FFBA263662E86A0D3795E310153AAF4C8A2623E167E6E │ │ │ │ +1F13A9BA485D5DDFC451D691DBA7C49E20354A7AD79D89F7EDE24F0D5B48B27D │ │ │ │ +568D01EF2555504196C09841F5970D8CF6C5D47FFFCF18AE6B2A485342000AAD │ │ │ │ +1F922FBEF7C98E0965609C89240E7B131A59551F57CD5C92097FCE75F5D2778F │ │ │ │ +F9ACF43A3273551363442C8C539205903A835C744A4AA953545506081D3D231A │ │ │ │ +A140E01F280BC42A3C35EDAD5F6B8CE6E51C68E41CA813710864ED880FCE846C │ │ │ │ +1B66D27CC2DBCDC2B1B96A12490BD76D67A415D4A6595CD9B19D3104A83D2C82 │ │ │ │ +C46DCD2C027F0565EDB83E54FF99498194D3140E55E8EE65EBDEAC5409B5616A │ │ │ │ +73141DA2D581E300A6057F4301A02DD160AB3E55A116313525122D0608816AA8 │ │ │ │ +4712EEF3D6FE8C893DF37D │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -4347,16 +4337,16 @@ │ │ │ │ @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 134[48 3[51 │ │ │ │ -2[36 12[40 2[51 45 26[59 11[25 45 4[45 1[45 1[45 3[25 │ │ │ │ +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 4[45 45 1[45 1[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 │ │ │ │ @@ -4470,20 +4460,20 @@ │ │ │ │ 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 1040 4 v │ │ │ │ -1221 w Fl(I2Ohash)29 b Fh(:)40 b Fi(DRAFT)31 b Fh(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2861 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 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fm(2)p 136 100 1081 4 v │ │ │ │ +1263 w Fl(I2Ohash)28 b Fh(:)41 b Fi(DRAFT)30 b Fh(Octob)s(er)g(4,)h │ │ │ │ +(2025)p 2820 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 │ │ │ │ Fl(I2Ohash)e Fm(ob)5 b(ject)32 b(will)g(ha)m(v)m(e)g │ │ │ │ Fl(nlist)46 b(>)i(0)p Fm(.)43 b(If)31 b Fl(grow)f Fm(is)h(zero)i(and)0 │ │ │ │ 1059 y(a)e(new)f Fl()25 b Fm(triple)31 │ │ │ │ @@ -4530,17 +4520,17 @@ │ │ │ │ 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 1040 4 v 1221 100 a Fl(I2Ohash)28 │ │ │ │ -b Fh(:)41 b Fi(DRAFT)121 b Fh(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2814 100 V 1040 w Fm(3)111 399 y(1.)46 b Fl(void)h(I2Ohash_init)d(\()k │ │ │ │ +TeXDict begin 3 2 bop 91 100 1081 4 v 1262 100 a Fl(I2Ohash)28 │ │ │ │ +b Fh(:)41 b Fi(DRAFT)121 b Fh(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2772 100 V 1081 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 │ │ │ │ @@ -4616,27 +4606,27 @@ │ │ │ │ (*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 1040 4 v │ │ │ │ -1221 w Fl(I2Ohash)29 b Fh(:)40 b Fi(DRAFT)31 b Fh(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2861 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 1002 y(table.)337 1215 y Fk(\210)45 b Fm(The)f │ │ │ │ -Fl(msglvl)e Fm(parameter)j(determines)f(the)g(amoun)m(t)h(of)f(output.) │ │ │ │ -82 b(Use)44 b Fl(msglvl)i(=)i(1)c Fm(for)g(just)427 1328 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fm(4)p 136 100 1081 4 v │ │ │ │ +1263 w Fl(I2Ohash)28 b Fh(:)41 b Fi(DRAFT)30 b Fh(Octob)s(er)g(4,)h │ │ │ │ +(2025)p 2820 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 │ │ │ │ +1002 y(table.)337 1215 y Fk(\210)45 b Fm(The)f Fl(msglvl)e │ │ │ │ +Fm(parameter)j(determines)f(the)g(amoun)m(t)h(of)f(output.)82 │ │ │ │ +b(Use)44 b Fl(msglvl)i(=)i(1)c Fm(for)g(just)427 1328 │ │ │ │ y(timing)31 b(output.)337 1474 y Fk(\210)45 b Fm(The)33 │ │ │ │ b Fl(msgFile)e Fm(parameter)j(determines)f(the)h(message)g(\014le)f(|)h │ │ │ │ (if)f Fl(msgFile)e Fm(is)i Fl(stdout)p Fm(,)g(then)g(the)427 │ │ │ │ 1587 y(message)27 b(\014le)f(is)g Fi(stdout)p Fm(,)i(otherwise)e(a)h │ │ │ │ (\014le)f(is)f(op)s(ened)g(with)h Fi(app)-5 b(end)28 │ │ │ │ b Fm(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 1700 │ │ │ │ y(data.)337 1846 y Fk(\210)45 b Fm(The)30 b Fl(size)f │ │ │ │ ├── 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 February 29, 2024 │ │ │ │ │ + 2 I2Ohash : DRAFT October 4, 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 February 29, 2024 3 │ │ │ │ │ + I2Ohash : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 4 I2Ohash : DRAFT October 4, 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 2024.02.29:1857 │ │ │ │ +%DVIPSSource: TeX output 2025.10.04:1734 │ │ │ │ %%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 │ │ │ │ @@ -1278,23 +1278,23 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 50 /two put │ │ │ │ dup 52 /four put │ │ │ │ -dup 57 /nine put │ │ │ │ +dup 53 /five put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 70 /F put │ │ │ │ -dup 97 /a put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ +dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ -dup 117 /u put │ │ │ │ -dup 121 /y put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1468,95 +1468,85 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA647CD0E2539DFAD9604486DCCFA49 │ │ │ │ -AC96130D106A8F8387633622C3809400D6E8FF9D60877C743502E4D211CEBF62 │ │ │ │ -9A6F91045C22D5D20C5FF677D89983D02E5EE26C71A9EAE0E7C52465DA5A149A │ │ │ │ -9B731C27EC8366BC3E841C0CAE49A33DE164A857365B17B09CAD121C47A980CB │ │ │ │ -C75E1030F6C394EDB46C54B46880D2344127B903FB22684C9CAACE6053DC3BFA │ │ │ │ -4E47C565ECAF19C4295A11BD68CA6D45B5738B932BB3690A8C712904C49C1636 │ │ │ │ -A7702075F2FEA8DB3EB3A3C1216BB769DD0BAF4507A18E3052F2C846B0797933 │ │ │ │ -8CE9BB2DB5DFADAF1B0FC3A22BAB82A0D5D290F7AD950013CFA465BE11C1076D │ │ │ │ -5833FF92321FBF90D9229D3BA09DD18EEC44D9FCF8FCF63CC09D2977BFA798B6 │ │ │ │ -47FB047EA6AF69C7DE570176F5B6C0FED74DEDBF7DDF49550DD84BA14AC09423 │ │ │ │ -F70D5B14F0F8588F1E2FFE0DFE0760E77A9E39DEDAC5C5AE3760722C029B916D │ │ │ │ -96A2A7D1DD6A61F90B4B9806314A668EB7A0E107A3527310A240490453CC18D7 │ │ │ │ -3793B4CF3CE13EA332E7F5C2BACF85AC75FE84693B966BB0F6FB9A179A331C4E │ │ │ │ -55E9EF30E2734E44A88E053CD5E650D7E529E94CB7F8B733E68315ACAC5BEFC5 │ │ │ │ -3FE4F585F875310267865679AB381125C31E9AEB7226DC9F18DA80A9DE2F38A4 │ │ │ │ -51B8F9D5B2FBA0F50D53AE6212AFE41466A594F7A303B4E82F1493C0B8D65756 │ │ │ │ -BE6AF2931E5ADA5CE7D51CB5B1EC916C6C6D674808939331CA66F8181DD2B112 │ │ │ │ -1A12198CCCB6BBF1D40C803E794B65241ACE1E0D30CCA1C6F2D3E1415B98726B │ │ │ │ -9BA303BE2C4C276108CC78C093F1CC85CA454CC38535D1DEBFA341D84E8A5DDF │ │ │ │ -D53D8DD0F4A812B5BA63871BEB3BCE93FBC77AD395914E2CD757546C2BE2D641 │ │ │ │ -FDB12258E1E1D10E1B963EABB265F2C8B2547D48963E1AD3B223B666B46915A1 │ │ │ │ -157F5EA0AB8D8411C07AA2EB5D0EF1A1BA6D81C47473A3D3D6287104C7BF61F8 │ │ │ │ -3BDB64995DE96A65BF2B7288C51ADAA3D373A95C40D5240C5FF397551554AA9E │ │ │ │ -C89C7E45AA7738503CB058EF6AD5052CC78E4445C810C250BF25394B8D7DE82E │ │ │ │ -315C9CCD6E1E9150EC79EE0F354C668AE199C1AFF39C67337A86CB932E8D64E9 │ │ │ │ -389FF3CC08B538492DEED017686DBB9BDEA30FE67FB4EBDB3627C16FD15F243A │ │ │ │ -7FDEB310EFC940E57726E94340472F2C452815927ADE21578C959890216BE504 │ │ │ │ -225BE4B4D2E3B19F5E06B5A0B25AF168C3A2B26F599A829F89C16BD2026E8CC9 │ │ │ │ -8FB3CBB830C3E36C099071A70D0B8834FF2C17364EB50D5C71440CC7BFE02321 │ │ │ │ -8C6ECAC2F7EC1BE39077DB0E8B2B251626A71FD038EB2CF1FC254D98C1535CAA │ │ │ │ -A8C987BC266482BD860A333048E1EDB3DD40A6ECD6DA0088AD9B9640202D89AA │ │ │ │ -0BB9A0ADF63491E67F2E97E35942D77E59B9B8AB0ED28B022EE5CD3449FC5B7A │ │ │ │ -19E38845B488F97D155C4312885E29537EAE97719C65845663480CE79DE8F037 │ │ │ │ -68995C0928FE8AFBEE554F01381EE5187578DF5D2542F26F66A599EE8ECC1F68 │ │ │ │ -FBADF3C2BA968C3CEB86675CF9A6CFD736E1422800D270417D497903DE87F2AE │ │ │ │ -938E39E120E9D3079F512E545E0E2616B84E81FE41392184F96818A7C86BF541 │ │ │ │ -F2E67C48CA56DA838C9FA0FAD538073B9F26319140D1F80EEEBCA190DE660A31 │ │ │ │ -457CAC16E92F87449A3734F9EA751588514865B58DC073658C8A857B5398AAC7 │ │ │ │ -3DC11E069996EF74A3189A07630D5DB87C5E028CD193C086B4D0E8BABC4F2393 │ │ │ │ -235EC96091B16C4A6D97DA1BD30A2D2E71F55869223CA66AD12448B668685F6E │ │ │ │ -06E7888D7F20045C662C4F7994CC7E1CE9AAC33A026716AA0551DF12343F0E22 │ │ │ │ -6E9F4B21C90406CC4997601194EF37A973221D1F4D73DD5666BD297F621C92AA │ │ │ │ -E3F698BC1146ADE754C4120EDF5B3E974D75A237E51DB49D52CD6CC7C9E8BD2D │ │ │ │ -E6849DF8F4DBA86C655D0C57CB54836C8A841C1D814F6B493F96ADBFCAD78D3B │ │ │ │ -430C58EF169950851B6A0B46411488B1A6F6974832787A24C0CDDBE27996EFB1 │ │ │ │ -DB341FA34B1DC6238D978D1E1D34AF3FB375ED6DA9C88699F195C88A54622F7C │ │ │ │ -36DAFC663D85660E756733A7E22F20C6A5D91F06087CAD10F7217BD33F343DC6 │ │ │ │ -F5EB9F16FE763672243EE6AE5CB6063A1D64670E1C059DD52134974E27D9D89C │ │ │ │ -BC658FCD814F20703D610C978FDCD6E2AEA31C18D1A310F215B28199F66C87DB │ │ │ │ -3B23980A393E1DD77AFA3045EDB6942505F3CF6204315A14E5B6BF2E96F3BB1F │ │ │ │ -628D24AC1893BC7DAEF3AA63F2116837F31DB90D872CBD9E5C48BCDEE781D20D │ │ │ │ -C6553D2D15F4E8438A9D1C7CEE1B72BD6AA08DC0AFEAF8B4DC1038707EE4A1BF │ │ │ │ -3D84460E60AF90F55002C1D8EBF0700F7EC3EFC944BEA78D0E0536F3AA6D9A84 │ │ │ │ -604A781AC5ACFEB7E681365315EE11E991C03DA431B65B332AD8F83F6F3AE66C │ │ │ │ -1BF434D3793FB5BCC44E44ACFF2855C2770C4AC678C6ACD6EB071974ACF1AE37 │ │ │ │ -D02C1736C62CC205A2F3488448527EFFA379613A8E6A6D134F4BFBAE6127304D │ │ │ │ -576C900A458E32CD42A4674415E03D8EB5742E71B854B3EDFD271AA214436544 │ │ │ │ -D1BCFD52F439298847E1FA258E5D38384FC85BC4EDC6F9E4431621CF763B137B │ │ │ │ -22DB6E3268B3F78881D55EA7C52ABF23FB73C152B06B708084FE1B00CFE72D9D │ │ │ │ -57B62AEE912E63BBD89D4D13CE896735454F1A16C3D9FB6CDF142CCA9F1C0242 │ │ │ │ -46F62109DF30667DA327F7CF6DC19B880C860C69080597FFCB1793313E202D4F │ │ │ │ -120A7C6B052C2EB7597B71B0985D24FDD2D3918393BF720E762C5DBBC2BB1E91 │ │ │ │ -B04560364EFE5B16EB068E0560FB932E0C617CFB95A166388E99AC4CB020F5BC │ │ │ │ -E24BB77352D7C3B21C37D404051A70FFFA0F726C35501A1FBB411F832CE46A2E │ │ │ │ -B424E26BD4 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFD8CDE285A2827F4659E339460ABEF319FE44D7A91E93CA309E9266E03DA │ │ │ │ +735F5DEF3920C01189BB63C2BD7ED0B92EABB481F123641477CDCCAB9751FB7B │ │ │ │ +F67DA7CE6EB134BC10D0228562BA5A6BFE6940907EF030ABF9EC4A8A0DFEF73D │ │ │ │ +3289E8CB4DC37694F5A656A935D92C72B3D82B012F578A27711B161DE9652ADC │ │ │ │ +71C51E743E4E9A7C6CF6FF16C5D65C1F60954C0858B48FAAC4FBB21988E2A934 │ │ │ │ +AC50C097DDF42C416359647D79F830E1430FB9BB803451A6732D1B5CAB817C1B │ │ │ │ +673B3077D9A180F184267E9990C087BCDEBC8EB8B889934DD0EB63C2EBCED4A3 │ │ │ │ +83A0D6A365412CFF610EF7BD5F82B02AA293F1D2F868768CDE9B801C929B4A38 │ │ │ │ +64E20C70BC4041F837AD15423517F7336A067D140A2C7906DC5D45885FFB3B69 │ │ │ │ +724E5B9B138BD15A9359EB25D14BC4193E529D1A49FEB0DC1015BF94CEBBD5E0 │ │ │ │ +EA148B185C53E12BD9FA6DBC097D789A73E832F02F55080D8ED6087F5952EA78 │ │ │ │ +250A4C65CE4C4013554A031446D2092D813C4CB1A605D97A40CF867F656ECD1C │ │ │ │ +C23F80230AD1E449AA8B4007134F71156719206441D92B1A6DD25101ABF69F70 │ │ │ │ +538CCCE216376E1BD6E423986BD4E83B1975B15092D4E19F885672F9E7C02485 │ │ │ │ +E02DA0F4243D324A5983D1D46444E5F6573F699E4F2A3395EF0EB7808B7D4D62 │ │ │ │ +690FD033E93AA553082273636503DA4BBBBFA6D127CE10424DD1DDF4F879305C │ │ │ │ +14F64180E7851D091B3220DFC70CAA44716B8F7F0C6FBEDB167801DED77F9E69 │ │ │ │ +E9B31CD2D8044DB946E511162976C34DE27F2BB974B70509005562A0A21317B7 │ │ │ │ +46D826A31C476C8F9A778F941FF5956BA2D765B1AD0AC4BC7AE1CD8A2A81F039 │ │ │ │ +06EB13EBD099BBDB2EBDB54D459C288EA69FB0018CE9255BBFB08C1F90FF30BD │ │ │ │ +C971DA7FDB193281B8F967F21AB42F13F36085AC9EC0D6B6B448C8F289B0AD70 │ │ │ │ +DB521A4755ECF9CA594741E5C674220C21C265EF3BAE594197B00048C8D4DB73 │ │ │ │ +4AC47B6A86EAC7EECD042C8E23C347F8C9FCB870473C1FBD91C298174BCBF1A9 │ │ │ │ +7B366C570A9A04A433495FBC9FD0FFC22A0E8181424C0F038ED97AD5054B10CC │ │ │ │ +1CD5BA0719DD0B4F4F18932AE87FF8B8C1CF0C7482B7847049761505DCD85146 │ │ │ │ +4EE5CB53993A9449CD05233E961BD49AE92D308E2065D6C6BF038538039AA56A │ │ │ │ +C59D424BE3175427337E16892D3920598D518423E145C6B2DD3881F338845F0D │ │ │ │ +16C47AA0D9C2D6DE99C6A302D567ACD6F98BF38223F1890E099C8F93348FFDAA │ │ │ │ +C2D3440187C8FED87C1A891EF11EFA7168EC47F72AF8BC5BE1B88B1084E704F5 │ │ │ │ +82099F1A79E556D94CC38851C97DC3864945A7470F1389BCF608BADAE45B236D │ │ │ │ +2934A20FFBCF169BF84DF496B07E7F1D9002E62B030337642804403DF7E4B3FF │ │ │ │ +C5A421EE0033BA06C50A041FBFE8F81AFC145664E2976505EB14859CF0377EBA │ │ │ │ +EA604CF8BFB5F9ADB9A7ED56E6F0F919E791D57C7232241C892EAC3E55D2D03B │ │ │ │ +FF43B9DAB7B1D8C6588D6D3503F49E80121E52254431B308752A936E0B51124D │ │ │ │ +C7F23C316BA6FA73E6BC47EB9550003E1393C68360067C094C65C0DD17214FA0 │ │ │ │ +45FF0F9C3E0AE4C81093752D23EA95E163C98EC04873ECE3FB0882567329525C │ │ │ │ +0A3937B16CA72B5EB6D2DC10C1B485C0BA939587AFEBB6D837A40401C666BC1C │ │ │ │ +F3344FBAB3E48BEE18F3AF5CDB33BA63778D373A851333C8C34E2F35AB94E8B4 │ │ │ │ +FF7E62A92ED83B872894E0A17209E14CF61269204A35A4BC8C7EE4B16F19E91F │ │ │ │ +669C4EFCECB187F6C7FAF92B4E14E400C6B3C81679D4A7196D66DB1E897DDA42 │ │ │ │ +47CC2848B46D581A95EEF85AB528E8CDEEB275D1E1FE197A3A08D36406E2DADF │ │ │ │ +A87D817AF18B5525F89B7C2E584F4A1254A1FC71E749999A2152870631A69CB6 │ │ │ │ +666EBD6BB3366A598F6592040D0E82B9D866DF0A76C362E76C2804D108A0C148 │ │ │ │ +51F42E9E0ABD52CC2D02B156B63AFD03313AFC80EACC83DF9B59F05FD798951D │ │ │ │ +FCF5335636DFC6561910ACE0AEC47F74CFD302EB7421D28AAAC8FF82B7CE2B2A │ │ │ │ +340B8BCE09F57BFCBC77F91096D97A85726E68846398C8C9C8D3A65A252AE8FB │ │ │ │ +166750C244963BC61E2236BAAC529FABD6FC774550096374A8DB81B6AF1EA843 │ │ │ │ +27F671C0045D629E3734EF037447C4763514FD1C4AE858A494AFC23A64C82149 │ │ │ │ +F4C0A7023B3865B84FAC2DC88D1553DCEBA3D8FB5DBC1103123F6B8CB5B3A399 │ │ │ │ +B665B26B001BF1E4BFABE42BFF6B02D69FA88D5CBCA5A11D5B48CFB4EAE60558 │ │ │ │ +5FBE254AD3BE01761CD4995E766E172D768621223505FD6AA8F89FC042EB814C │ │ │ │ +34373DAEC4FAAF71C0752F814154C5299F751CE7E0F9C673D2E448D0204C214C │ │ │ │ +C04DC34671FBEF72350FFBA263662E86A0D3795E310153AAF4C8A2623E167E6E │ │ │ │ +1F13A9BA485D5DDFC451D691DBA7C49E20354A7AD79D89F7EDE24F0D5B48B27D │ │ │ │ +568D01EF2555504196C09841F5970D8CF6C5D47FFFCF18AE6B2A485342000AAD │ │ │ │ +1F922FBEF7C98E0965609C89240E7B131A59551F57CD5C92097FCE75F5D2778F │ │ │ │ +F9ACF43A3273551363442C8C539205903A835C744A4AA953545506081D3D231A │ │ │ │ +A140E01F280BC42A3C35EDAD5F6B8CE6E51C68E41CA813710864ED880FCE846C │ │ │ │ +1B66D27CC2DBCDC2B1B96A12490BD76D67A415D4A6595CD9B19D3104A83D2C82 │ │ │ │ +C46DCD2C027F0565EDB83E54FF99498194D3140E55E8EE65EBDEAC5409B5616A │ │ │ │ +73141DA2D581E300A6057F4301A02DD160AB3E55A116313525122D0608816AA8 │ │ │ │ +4712EEF3D6FE8C893DF37D │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3726,15 +3716,15 @@ │ │ │ │ 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 134[48 3[51 2[36 12[40 2[51 45 26[59 11[25 45 4[45 │ │ │ │ +/Fc 139[35 1[36 2[45 9[40 1[40 51 18[71 20[25 4[45 45 │ │ │ │ 1[45 1[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 │ │ │ │ @@ -3842,30 +3832,30 @@ │ │ │ │ 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 1063 4 v │ │ │ │ -1245 w Fj(IIheap)29 b Fc(:)41 b Fi(DRAFT)30 b Fc(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2837 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 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fk(2)p 136 100 1105 4 v │ │ │ │ +1286 w Fj(IIheap)29 b Fc(:)41 b Fi(DRAFT)30 b Fc(Octob)s(er)g(4,)h │ │ │ │ +(2025)p 2796 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 │ │ │ │ Fk(are)i Fj(NULL)p Fk(.)227 1858 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.)111 2057 y(3.)46 b Fj(void)h(IIheap_clearData)c(\()48 │ │ │ │ b(IIheap)e(*heap)g(\))i(;)227 2213 y Fk(This)d(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.)88 │ │ │ │ @@ -3902,17 +3892,17 @@ │ │ │ │ 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 1063 4 v 1245 100 a Fj(IIheap)28 │ │ │ │ -b Fc(:)41 b Fi(DRAFT)121 b Fc(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2790 100 V 1063 w Fk(3)111 399 y(2.)46 b Fj(void)h(IIheap_root)e(\()i │ │ │ │ +TeXDict begin 3 2 bop 91 100 1105 4 v 1286 100 a Fj(IIheap)29 │ │ │ │ +b Fc(:)40 b Fi(DRAFT)121 b Fc(Octob)s(er)31 b(4,)g(2025)p │ │ │ │ +2749 100 V 1105 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 │ │ │ │ ├── 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 February 29, 2024 │ │ │ │ │ + 2 IIheap : DRAFT October 4, 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 February 29, 2024 3 │ │ │ │ │ + IIheap : DRAFT October 4, 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 2024.02.29:1857 │ │ │ │ +%DVIPSSource: TeX output 2025.10.04:1734 │ │ │ │ %%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 │ │ │ │ @@ -1610,23 +1610,23 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 50 /two put │ │ │ │ dup 52 /four put │ │ │ │ -dup 57 /nine put │ │ │ │ +dup 53 /five put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 70 /F put │ │ │ │ -dup 97 /a put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ +dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ -dup 117 /u put │ │ │ │ -dup 121 /y put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1800,95 +1800,85 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA647CD0E2539DFAD9604486DCCFA49 │ │ │ │ -AC96130D106A8F8387633622C3809400D6E8FF9D60877C743502E4D211CEBF62 │ │ │ │ -9A6F91045C22D5D20C5FF677D89983D02E5EE26C71A9EAE0E7C52465DA5A149A │ │ │ │ -9B731C27EC8366BC3E841C0CAE49A33DE164A857365B17B09CAD121C47A980CB │ │ │ │ -C75E1030F6C394EDB46C54B46880D2344127B903FB22684C9CAACE6053DC3BFA │ │ │ │ -4E47C565ECAF19C4295A11BD68CA6D45B5738B932BB3690A8C712904C49C1636 │ │ │ │ -A7702075F2FEA8DB3EB3A3C1216BB769DD0BAF4507A18E3052F2C846B0797933 │ │ │ │ -8CE9BB2DB5DFADAF1B0FC3A22BAB82A0D5D290F7AD950013CFA465BE11C1076D │ │ │ │ -5833FF92321FBF90D9229D3BA09DD18EEC44D9FCF8FCF63CC09D2977BFA798B6 │ │ │ │ -47FB047EA6AF69C7DE570176F5B6C0FED74DEDBF7DDF49550DD84BA14AC09423 │ │ │ │ -F70D5B14F0F8588F1E2FFE0DFE0760E77A9E39DEDAC5C5AE3760722C029B916D │ │ │ │ -96A2A7D1DD6A61F90B4B9806314A668EB7A0E107A3527310A240490453CC18D7 │ │ │ │ -3793B4CF3CE13EA332E7F5C2BACF85AC75FE84693B966BB0F6FB9A179A331C4E │ │ │ │ -55E9EF30E2734E44A88E053CD5E650D7E529E94CB7F8B733E68315ACAC5BEFC5 │ │ │ │ -3FE4F585F875310267865679AB381125C31E9AEB7226DC9F18DA80A9DE2F38A4 │ │ │ │ -51B8F9D5B2FBA0F50D53AE6212AFE41466A594F7A303B4E82F1493C0B8D65756 │ │ │ │ -BE6AF2931E5ADA5CE7D51CB5B1EC916C6C6D674808939331CA66F8181DD2B112 │ │ │ │ -1A12198CCCB6BBF1D40C803E794B65241ACE1E0D30CCA1C6F2D3E1415B98726B │ │ │ │ -9BA303BE2C4C276108CC78C093F1CC85CA454CC38535D1DEBFA341D84E8A5DDF │ │ │ │ -D53D8DD0F4A812B5BA63871BEB3BCE93FBC77AD395914E2CD757546C2BE2D641 │ │ │ │ -FDB12258E1E1D10E1B963EABB265F2C8B2547D48963E1AD3B223B666B46915A1 │ │ │ │ -157F5EA0AB8D8411C07AA2EB5D0EF1A1BA6D81C47473A3D3D6287104C7BF61F8 │ │ │ │ -3BDB64995DE96A65BF2B7288C51ADAA3D373A95C40D5240C5FF397551554AA9E │ │ │ │ -C89C7E45AA7738503CB058EF6AD5052CC78E4445C810C250BF25394B8D7DE82E │ │ │ │ -315C9CCD6E1E9150EC79EE0F354C668AE199C1AFF39C67337A86CB932E8D64E9 │ │ │ │ -389FF3CC08B538492DEED017686DBB9BDEA30FE67FB4EBDB3627C16FD15F243A │ │ │ │ -7FDEB310EFC940E57726E94340472F2C452815927ADE21578C959890216BE504 │ │ │ │ -225BE4B4D2E3B19F5E06B5A0B25AF168C3A2B26F599A829F89C16BD2026E8CC9 │ │ │ │ -8FB3CBB830C3E36C099071A70D0B8834FF2C17364EB50D5C71440CC7BFE02321 │ │ │ │ -8C6ECAC2F7EC1BE39077DB0E8B2B251626A71FD038EB2CF1FC254D98C1535CAA │ │ │ │ -A8C987BC266482BD860A333048E1EDB3DD40A6ECD6DA0088AD9B9640202D89AA │ │ │ │ -0BB9A0ADF63491E67F2E97E35942D77E59B9B8AB0ED28B022EE5CD3449FC5B7A │ │ │ │ -19E38845B488F97D155C4312885E29537EAE97719C65845663480CE79DE8F037 │ │ │ │ -68995C0928FE8AFBEE554F01381EE5187578DF5D2542F26F66A599EE8ECC1F68 │ │ │ │ -FBADF3C2BA968C3CEB86675CF9A6CFD736E1422800D270417D497903DE87F2AE │ │ │ │ -938E39E120E9D3079F512E545E0E2616B84E81FE41392184F96818A7C86BF541 │ │ │ │ -F2E67C48CA56DA838C9FA0FAD538073B9F26319140D1F80EEEBCA190DE660A31 │ │ │ │ -457CAC16E92F87449A3734F9EA751588514865B58DC073658C8A857B5398AAC7 │ │ │ │ -3DC11E069996EF74A3189A07630D5DB87C5E028CD193C086B4D0E8BABC4F2393 │ │ │ │ -235EC96091B16C4A6D97DA1BD30A2D2E71F55869223CA66AD12448B668685F6E │ │ │ │ -06E7888D7F20045C662C4F7994CC7E1CE9AAC33A026716AA0551DF12343F0E22 │ │ │ │ -6E9F4B21C90406CC4997601194EF37A973221D1F4D73DD5666BD297F621C92AA │ │ │ │ -E3F698BC1146ADE754C4120EDF5B3E974D75A237E51DB49D52CD6CC7C9E8BD2D │ │ │ │ -E6849DF8F4DBA86C655D0C57CB54836C8A841C1D814F6B493F96ADBFCAD78D3B │ │ │ │ -430C58EF169950851B6A0B46411488B1A6F6974832787A24C0CDDBE27996EFB1 │ │ │ │ -DB341FA34B1DC6238D978D1E1D34AF3FB375ED6DA9C88699F195C88A54622F7C │ │ │ │ -36DAFC663D85660E756733A7E22F20C6A5D91F06087CAD10F7217BD33F343DC6 │ │ │ │ -F5EB9F16FE763672243EE6AE5CB6063A1D64670E1C059DD52134974E27D9D89C │ │ │ │ -BC658FCD814F20703D610C978FDCD6E2AEA31C18D1A310F215B28199F66C87DB │ │ │ │ -3B23980A393E1DD77AFA3045EDB6942505F3CF6204315A14E5B6BF2E96F3BB1F │ │ │ │ -628D24AC1893BC7DAEF3AA63F2116837F31DB90D872CBD9E5C48BCDEE781D20D │ │ │ │ -C6553D2D15F4E8438A9D1C7CEE1B72BD6AA08DC0AFEAF8B4DC1038707EE4A1BF │ │ │ │ -3D84460E60AF90F55002C1D8EBF0700F7EC3EFC944BEA78D0E0536F3AA6D9A84 │ │ │ │ -604A781AC5ACFEB7E681365315EE11E991C03DA431B65B332AD8F83F6F3AE66C │ │ │ │ -1BF434D3793FB5BCC44E44ACFF2855C2770C4AC678C6ACD6EB071974ACF1AE37 │ │ │ │ -D02C1736C62CC205A2F3488448527EFFA379613A8E6A6D134F4BFBAE6127304D │ │ │ │ -576C900A458E32CD42A4674415E03D8EB5742E71B854B3EDFD271AA214436544 │ │ │ │ -D1BCFD52F439298847E1FA258E5D38384FC85BC4EDC6F9E4431621CF763B137B │ │ │ │ -22DB6E3268B3F78881D55EA7C52ABF23FB73C152B06B708084FE1B00CFE72D9D │ │ │ │ -57B62AEE912E63BBD89D4D13CE896735454F1A16C3D9FB6CDF142CCA9F1C0242 │ │ │ │ -46F62109DF30667DA327F7CF6DC19B880C860C69080597FFCB1793313E202D4F │ │ │ │ -120A7C6B052C2EB7597B71B0985D24FDD2D3918393BF720E762C5DBBC2BB1E91 │ │ │ │ -B04560364EFE5B16EB068E0560FB932E0C617CFB95A166388E99AC4CB020F5BC │ │ │ │ -E24BB77352D7C3B21C37D404051A70FFFA0F726C35501A1FBB411F832CE46A2E │ │ │ │ -B424E26BD4 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFD8CDE285A2827F4659E339460ABEF319FE44D7A91E93CA309E9266E03DA │ │ │ │ +735F5DEF3920C01189BB63C2BD7ED0B92EABB481F123641477CDCCAB9751FB7B │ │ │ │ +F67DA7CE6EB134BC10D0228562BA5A6BFE6940907EF030ABF9EC4A8A0DFEF73D │ │ │ │ +3289E8CB4DC37694F5A656A935D92C72B3D82B012F578A27711B161DE9652ADC │ │ │ │ +71C51E743E4E9A7C6CF6FF16C5D65C1F60954C0858B48FAAC4FBB21988E2A934 │ │ │ │ +AC50C097DDF42C416359647D79F830E1430FB9BB803451A6732D1B5CAB817C1B │ │ │ │ +673B3077D9A180F184267E9990C087BCDEBC8EB8B889934DD0EB63C2EBCED4A3 │ │ │ │ +83A0D6A365412CFF610EF7BD5F82B02AA293F1D2F868768CDE9B801C929B4A38 │ │ │ │ +64E20C70BC4041F837AD15423517F7336A067D140A2C7906DC5D45885FFB3B69 │ │ │ │ +724E5B9B138BD15A9359EB25D14BC4193E529D1A49FEB0DC1015BF94CEBBD5E0 │ │ │ │ +EA148B185C53E12BD9FA6DBC097D789A73E832F02F55080D8ED6087F5952EA78 │ │ │ │ +250A4C65CE4C4013554A031446D2092D813C4CB1A605D97A40CF867F656ECD1C │ │ │ │ +C23F80230AD1E449AA8B4007134F71156719206441D92B1A6DD25101ABF69F70 │ │ │ │ +538CCCE216376E1BD6E423986BD4E83B1975B15092D4E19F885672F9E7C02485 │ │ │ │ +E02DA0F4243D324A5983D1D46444E5F6573F699E4F2A3395EF0EB7808B7D4D62 │ │ │ │ +690FD033E93AA553082273636503DA4BBBBFA6D127CE10424DD1DDF4F879305C │ │ │ │ +14F64180E7851D091B3220DFC70CAA44716B8F7F0C6FBEDB167801DED77F9E69 │ │ │ │ +E9B31CD2D8044DB946E511162976C34DE27F2BB974B70509005562A0A21317B7 │ │ │ │ +46D826A31C476C8F9A778F941FF5956BA2D765B1AD0AC4BC7AE1CD8A2A81F039 │ │ │ │ +06EB13EBD099BBDB2EBDB54D459C288EA69FB0018CE9255BBFB08C1F90FF30BD │ │ │ │ +C971DA7FDB193281B8F967F21AB42F13F36085AC9EC0D6B6B448C8F289B0AD70 │ │ │ │ +DB521A4755ECF9CA594741E5C674220C21C265EF3BAE594197B00048C8D4DB73 │ │ │ │ +4AC47B6A86EAC7EECD042C8E23C347F8C9FCB870473C1FBD91C298174BCBF1A9 │ │ │ │ +7B366C570A9A04A433495FBC9FD0FFC22A0E8181424C0F038ED97AD5054B10CC │ │ │ │ +1CD5BA0719DD0B4F4F18932AE87FF8B8C1CF0C7482B7847049761505DCD85146 │ │ │ │ +4EE5CB53993A9449CD05233E961BD49AE92D308E2065D6C6BF038538039AA56A │ │ │ │ +C59D424BE3175427337E16892D3920598D518423E145C6B2DD3881F338845F0D │ │ │ │ +16C47AA0D9C2D6DE99C6A302D567ACD6F98BF38223F1890E099C8F93348FFDAA │ │ │ │ +C2D3440187C8FED87C1A891EF11EFA7168EC47F72AF8BC5BE1B88B1084E704F5 │ │ │ │ +82099F1A79E556D94CC38851C97DC3864945A7470F1389BCF608BADAE45B236D │ │ │ │ +2934A20FFBCF169BF84DF496B07E7F1D9002E62B030337642804403DF7E4B3FF │ │ │ │ +C5A421EE0033BA06C50A041FBFE8F81AFC145664E2976505EB14859CF0377EBA │ │ │ │ +EA604CF8BFB5F9ADB9A7ED56E6F0F919E791D57C7232241C892EAC3E55D2D03B │ │ │ │ +FF43B9DAB7B1D8C6588D6D3503F49E80121E52254431B308752A936E0B51124D │ │ │ │ +C7F23C316BA6FA73E6BC47EB9550003E1393C68360067C094C65C0DD17214FA0 │ │ │ │ +45FF0F9C3E0AE4C81093752D23EA95E163C98EC04873ECE3FB0882567329525C │ │ │ │ +0A3937B16CA72B5EB6D2DC10C1B485C0BA939587AFEBB6D837A40401C666BC1C │ │ │ │ +F3344FBAB3E48BEE18F3AF5CDB33BA63778D373A851333C8C34E2F35AB94E8B4 │ │ │ │ +FF7E62A92ED83B872894E0A17209E14CF61269204A35A4BC8C7EE4B16F19E91F │ │ │ │ +669C4EFCECB187F6C7FAF92B4E14E400C6B3C81679D4A7196D66DB1E897DDA42 │ │ │ │ +47CC2848B46D581A95EEF85AB528E8CDEEB275D1E1FE197A3A08D36406E2DADF │ │ │ │ +A87D817AF18B5525F89B7C2E584F4A1254A1FC71E749999A2152870631A69CB6 │ │ │ │ +666EBD6BB3366A598F6592040D0E82B9D866DF0A76C362E76C2804D108A0C148 │ │ │ │ +51F42E9E0ABD52CC2D02B156B63AFD03313AFC80EACC83DF9B59F05FD798951D │ │ │ │ +FCF5335636DFC6561910ACE0AEC47F74CFD302EB7421D28AAAC8FF82B7CE2B2A │ │ │ │ +340B8BCE09F57BFCBC77F91096D97A85726E68846398C8C9C8D3A65A252AE8FB │ │ │ │ +166750C244963BC61E2236BAAC529FABD6FC774550096374A8DB81B6AF1EA843 │ │ │ │ +27F671C0045D629E3734EF037447C4763514FD1C4AE858A494AFC23A64C82149 │ │ │ │ +F4C0A7023B3865B84FAC2DC88D1553DCEBA3D8FB5DBC1103123F6B8CB5B3A399 │ │ │ │ +B665B26B001BF1E4BFABE42BFF6B02D69FA88D5CBCA5A11D5B48CFB4EAE60558 │ │ │ │ +5FBE254AD3BE01761CD4995E766E172D768621223505FD6AA8F89FC042EB814C │ │ │ │ +34373DAEC4FAAF71C0752F814154C5299F751CE7E0F9C673D2E448D0204C214C │ │ │ │ +C04DC34671FBEF72350FFBA263662E86A0D3795E310153AAF4C8A2623E167E6E │ │ │ │ +1F13A9BA485D5DDFC451D691DBA7C49E20354A7AD79D89F7EDE24F0D5B48B27D │ │ │ │ +568D01EF2555504196C09841F5970D8CF6C5D47FFFCF18AE6B2A485342000AAD │ │ │ │ +1F922FBEF7C98E0965609C89240E7B131A59551F57CD5C92097FCE75F5D2778F │ │ │ │ +F9ACF43A3273551363442C8C539205903A835C744A4AA953545506081D3D231A │ │ │ │ +A140E01F280BC42A3C35EDAD5F6B8CE6E51C68E41CA813710864ED880FCE846C │ │ │ │ +1B66D27CC2DBCDC2B1B96A12490BD76D67A415D4A6595CD9B19D3104A83D2C82 │ │ │ │ +C46DCD2C027F0565EDB83E54FF99498194D3140E55E8EE65EBDEAC5409B5616A │ │ │ │ +73141DA2D581E300A6057F4301A02DD160AB3E55A116313525122D0608816AA8 │ │ │ │ +4712EEF3D6FE8C893DF37D │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3761,16 +3751,16 @@ │ │ │ │ 2[51 62 50 1[54 11[86 5[84 5[42 6[80 12[56 56 56 56 56 │ │ │ │ 2[31 46[{}25 99.6264 /CMBX12 rf /Fb 139[62 4[62 4[62 │ │ │ │ 4[62 1[62 62 11[62 12[62 73[{}8 119.552 /CMTT12 rf /Fc │ │ │ │ 134[71 2[71 75 52 53 55 1[75 67 75 112 3[37 75 67 41 │ │ │ │ 61 75 60 1[65 13[75 2[92 11[103 16[67 67 67 2[37 46[{}25 │ │ │ │ 119.552 /CMBX12 rf /Fd 138[49 30 37 38 1[46 46 51 74 │ │ │ │ 1[42 1[28 46 42 1[42 46 42 1[46 12[65 1[66 11[59 62 69 │ │ │ │ -2[68 6[28 58[{}23 90.9091 /CMTI10 rf /Fe 134[48 3[51 │ │ │ │ -2[36 12[40 2[51 45 26[59 11[25 45 4[45 1[45 1[45 3[25 │ │ │ │ +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 4[45 45 1[45 1[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 │ │ │ │ @@ -3898,28 +3888,28 @@ │ │ │ │ (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 1164 4 v │ │ │ │ -1346 w Fi(IV)29 b Fe(:)i Fd(DRAFT)f Fe(F)-8 b(ebruary)30 │ │ │ │ -b(29,)i(2024)p 2737 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 Fj('s)i(has)h(b)s(een)227 1252 y(allo)s(cated)i(b)m │ │ │ │ -(y)e(this)g(ob)5 b(ject)33 b(and)f(can)g(b)s(e)g(free'd)g(b)m(y)g(the)g │ │ │ │ -(ob)5 b(ject.)47 b(When)32 b Fi(nowned)46 b(=)h(0)32 │ │ │ │ -b Fj(but)f Fi(maxsize)46 b(>)227 1365 y(0)p Fj(,)31 b(this)f(ob)5 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fj(2)p 136 100 1205 4 v │ │ │ │ +1387 w Fi(IV)30 b Fe(:)g Fd(DRAFT)g Fe(Octob)s(er)h(4,)g(2025)p │ │ │ │ +2695 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 │ │ │ │ +Fj('s)i(has)h(b)s(een)227 1252 y(allo)s(cated)i(b)m(y)e(this)g(ob)5 │ │ │ │ +b(ject)33 b(and)f(can)g(b)s(e)g(free'd)g(b)m(y)g(the)g(ob)5 │ │ │ │ +b(ject.)47 b(When)32 b Fi(nowned)46 b(=)h(0)32 b Fj(but)f │ │ │ │ +Fi(maxsize)46 b(>)227 1365 y(0)p Fj(,)31 b(this)f(ob)5 │ │ │ │ b(ject)31 b(p)s(oin)m(ts)f(to)h(en)m(tries)h(that)f(ha)m(v)m(e)g(b)s │ │ │ │ (een)f(allo)s(cated)i(elsewhere,)f(and)f(these)h(en)m(tries)g(will)g │ │ │ │ (not)227 1478 y(b)s(e)f(free'd)g(b)m(y)h(this)f(ob)5 │ │ │ │ b(ject.)137 1652 y Fg(\210)45 b Fi(int)i(*vec)29 b Fj(:)41 │ │ │ │ b(p)s(oin)m(ter)30 b(to)i(the)e(base)h(address)e(of)i(the)f │ │ │ │ Fd(int)h Fj(v)m(ector)0 1824 y(The)36 b Fi(size)p Fj(,)g │ │ │ │ Fi(maxsize)p Fj(,)g Fi(owned)f Fj(and)g Fi(vec)h Fj(\014elds)f(need)h │ │ │ │ @@ -3966,17 +3956,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 1164 4 v 1345 100 a Fi(IV)30 │ │ │ │ -b Fe(:)h Fd(DRAFT)121 b Fe(F)-8 b(ebruary)30 b(29,)h(2024)p │ │ │ │ -2689 100 V 1164 w Fj(3)0 399 y Fa(1.2.2)112 b(Instance)38 │ │ │ │ +TeXDict begin 3 2 bop 91 100 1205 4 v 1386 100 a Fi(IV)30 │ │ │ │ +b Fe(:)h Fd(DRAFT)121 b Fe(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2648 100 V 1205 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 │ │ │ │ @@ -4032,30 +4022,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 1164 4 v │ │ │ │ -1346 w Fi(IV)29 b Fe(:)i Fd(DRAFT)f Fe(F)-8 b(ebruary)30 │ │ │ │ -b(29,)i(2024)p 2737 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 1205 4 v │ │ │ │ +1387 w Fi(IV)30 b Fe(:)g Fd(DRAFT)g Fe(Octob)s(er)h(4,)g(2025)p │ │ │ │ +2695 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 │ │ │ │ @@ -4121,17 +4111,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 1164 4 v 1345 100 a Fi(IV)30 │ │ │ │ -b Fe(:)h Fd(DRAFT)121 b Fe(F)-8 b(ebruary)30 b(29,)h(2024)p │ │ │ │ -2689 100 V 1164 w Fj(5)227 399 y(en)m(tries)e(and)e Fi(IV)p │ │ │ │ +TeXDict begin 5 4 bop 91 100 1205 4 v 1386 100 a Fi(IV)30 │ │ │ │ +b Fe(:)h Fd(DRAFT)121 b Fe(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2648 100 V 1205 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 │ │ │ │ @@ -4192,19 +4182,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 1164 4 v │ │ │ │ -1346 w Fi(IV)29 b Fe(:)i Fd(DRAFT)f Fe(F)-8 b(ebruary)30 │ │ │ │ -b(29,)i(2024)p 2737 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 │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fj(6)p 136 100 1205 4 v │ │ │ │ +1387 w Fi(IV)30 b Fe(:)g Fd(DRAFT)g Fe(Octob)s(er)h(4,)g(2025)p │ │ │ │ +2695 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 │ │ │ │ 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 │ │ │ │ @@ -4261,17 +4251,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 1164 4 v 1345 100 a Fi(IV)30 │ │ │ │ -b Fe(:)h Fd(DRAFT)121 b Fe(F)-8 b(ebruary)30 b(29,)h(2024)p │ │ │ │ -2689 100 V 1164 w Fj(7)66 399 y(15.)46 b Fi(int)h(IV_findValue)e(\()i │ │ │ │ +TeXDict begin 7 6 bop 91 100 1205 4 v 1386 100 a Fi(IV)30 │ │ │ │ +b Fe(:)h Fd(DRAFT)121 b Fe(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2648 100 V 1205 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 │ │ │ │ @@ -4342,31 +4332,30 @@ │ │ │ │ 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 1164 4 v │ │ │ │ -1346 w Fi(IV)29 b Fe(:)i Fd(DRAFT)f Fe(F)-8 b(ebruary)30 │ │ │ │ -b(29,)i(2024)p 2737 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 1205 4 v │ │ │ │ +1387 w Fi(IV)30 b Fe(:)g Fd(DRAFT)g Fe(Octob)s(er)h(4,)g(2025)p │ │ │ │ +2695 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 │ │ │ │ @@ -4431,17 +4420,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 1164 4 v 1345 100 a Fi(IV)30 │ │ │ │ -b Fe(:)h Fd(DRAFT)121 b Fe(F)-8 b(ebruary)30 b(29,)h(2024)p │ │ │ │ -2689 100 V 1164 w Fj(9)66 399 y(10.)46 b Fi(int)h(IV_writeForMatlab)c │ │ │ │ +TeXDict begin 9 8 bop 91 100 1205 4 v 1386 100 a Fi(IV)30 │ │ │ │ +b Fe(:)h Fd(DRAFT)121 b Fe(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2648 100 V 1205 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 February 29, 2024 │ │ │ │ │ + 2 IV : DRAFT October 4, 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 February 29, 2024 3 │ │ │ │ │ + IV : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 4 IV : DRAFT October 4, 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 February 29, 2024 5 │ │ │ │ │ + IV : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 6 IV : DRAFT October 4, 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 February 29, 2024 7 │ │ │ │ │ + IV : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 8 IV : DRAFT October 4, 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 February 29, 2024 9 │ │ │ │ │ + IV : DRAFT October 4, 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 2024.02.29:1858 │ │ │ │ +%DVIPSSource: TeX output 2025.10.04:1734 │ │ │ │ %%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 │ │ │ │ @@ -1857,23 +1857,23 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 50 /two put │ │ │ │ dup 52 /four put │ │ │ │ -dup 57 /nine put │ │ │ │ +dup 53 /five put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 70 /F put │ │ │ │ -dup 97 /a put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ +dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ -dup 117 /u put │ │ │ │ -dup 121 /y put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -2047,95 +2047,85 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA647CD0E2539DFAD9604486DCCFA49 │ │ │ │ -AC96130D106A8F8387633622C3809400D6E8FF9D60877C743502E4D211CEBF62 │ │ │ │ -9A6F91045C22D5D20C5FF677D89983D02E5EE26C71A9EAE0E7C52465DA5A149A │ │ │ │ -9B731C27EC8366BC3E841C0CAE49A33DE164A857365B17B09CAD121C47A980CB │ │ │ │ -C75E1030F6C394EDB46C54B46880D2344127B903FB22684C9CAACE6053DC3BFA │ │ │ │ -4E47C565ECAF19C4295A11BD68CA6D45B5738B932BB3690A8C712904C49C1636 │ │ │ │ -A7702075F2FEA8DB3EB3A3C1216BB769DD0BAF4507A18E3052F2C846B0797933 │ │ │ │ -8CE9BB2DB5DFADAF1B0FC3A22BAB82A0D5D290F7AD950013CFA465BE11C1076D │ │ │ │ -5833FF92321FBF90D9229D3BA09DD18EEC44D9FCF8FCF63CC09D2977BFA798B6 │ │ │ │ -47FB047EA6AF69C7DE570176F5B6C0FED74DEDBF7DDF49550DD84BA14AC09423 │ │ │ │ -F70D5B14F0F8588F1E2FFE0DFE0760E77A9E39DEDAC5C5AE3760722C029B916D │ │ │ │ -96A2A7D1DD6A61F90B4B9806314A668EB7A0E107A3527310A240490453CC18D7 │ │ │ │ -3793B4CF3CE13EA332E7F5C2BACF85AC75FE84693B966BB0F6FB9A179A331C4E │ │ │ │ -55E9EF30E2734E44A88E053CD5E650D7E529E94CB7F8B733E68315ACAC5BEFC5 │ │ │ │ -3FE4F585F875310267865679AB381125C31E9AEB7226DC9F18DA80A9DE2F38A4 │ │ │ │ -51B8F9D5B2FBA0F50D53AE6212AFE41466A594F7A303B4E82F1493C0B8D65756 │ │ │ │ -BE6AF2931E5ADA5CE7D51CB5B1EC916C6C6D674808939331CA66F8181DD2B112 │ │ │ │ -1A12198CCCB6BBF1D40C803E794B65241ACE1E0D30CCA1C6F2D3E1415B98726B │ │ │ │ -9BA303BE2C4C276108CC78C093F1CC85CA454CC38535D1DEBFA341D84E8A5DDF │ │ │ │ -D53D8DD0F4A812B5BA63871BEB3BCE93FBC77AD395914E2CD757546C2BE2D641 │ │ │ │ -FDB12258E1E1D10E1B963EABB265F2C8B2547D48963E1AD3B223B666B46915A1 │ │ │ │ -157F5EA0AB8D8411C07AA2EB5D0EF1A1BA6D81C47473A3D3D6287104C7BF61F8 │ │ │ │ -3BDB64995DE96A65BF2B7288C51ADAA3D373A95C40D5240C5FF397551554AA9E │ │ │ │ -C89C7E45AA7738503CB058EF6AD5052CC78E4445C810C250BF25394B8D7DE82E │ │ │ │ -315C9CCD6E1E9150EC79EE0F354C668AE199C1AFF39C67337A86CB932E8D64E9 │ │ │ │ -389FF3CC08B538492DEED017686DBB9BDEA30FE67FB4EBDB3627C16FD15F243A │ │ │ │ -7FDEB310EFC940E57726E94340472F2C452815927ADE21578C959890216BE504 │ │ │ │ -225BE4B4D2E3B19F5E06B5A0B25AF168C3A2B26F599A829F89C16BD2026E8CC9 │ │ │ │ -8FB3CBB830C3E36C099071A70D0B8834FF2C17364EB50D5C71440CC7BFE02321 │ │ │ │ -8C6ECAC2F7EC1BE39077DB0E8B2B251626A71FD038EB2CF1FC254D98C1535CAA │ │ │ │ -A8C987BC266482BD860A333048E1EDB3DD40A6ECD6DA0088AD9B9640202D89AA │ │ │ │ -0BB9A0ADF63491E67F2E97E35942D77E59B9B8AB0ED28B022EE5CD3449FC5B7A │ │ │ │ -19E38845B488F97D155C4312885E29537EAE97719C65845663480CE79DE8F037 │ │ │ │ -68995C0928FE8AFBEE554F01381EE5187578DF5D2542F26F66A599EE8ECC1F68 │ │ │ │ -FBADF3C2BA968C3CEB86675CF9A6CFD736E1422800D270417D497903DE87F2AE │ │ │ │ -938E39E120E9D3079F512E545E0E2616B84E81FE41392184F96818A7C86BF541 │ │ │ │ -F2E67C48CA56DA838C9FA0FAD538073B9F26319140D1F80EEEBCA190DE660A31 │ │ │ │ -457CAC16E92F87449A3734F9EA751588514865B58DC073658C8A857B5398AAC7 │ │ │ │ -3DC11E069996EF74A3189A07630D5DB87C5E028CD193C086B4D0E8BABC4F2393 │ │ │ │ -235EC96091B16C4A6D97DA1BD30A2D2E71F55869223CA66AD12448B668685F6E │ │ │ │ -06E7888D7F20045C662C4F7994CC7E1CE9AAC33A026716AA0551DF12343F0E22 │ │ │ │ -6E9F4B21C90406CC4997601194EF37A973221D1F4D73DD5666BD297F621C92AA │ │ │ │ -E3F698BC1146ADE754C4120EDF5B3E974D75A237E51DB49D52CD6CC7C9E8BD2D │ │ │ │ -E6849DF8F4DBA86C655D0C57CB54836C8A841C1D814F6B493F96ADBFCAD78D3B │ │ │ │ -430C58EF169950851B6A0B46411488B1A6F6974832787A24C0CDDBE27996EFB1 │ │ │ │ -DB341FA34B1DC6238D978D1E1D34AF3FB375ED6DA9C88699F195C88A54622F7C │ │ │ │ -36DAFC663D85660E756733A7E22F20C6A5D91F06087CAD10F7217BD33F343DC6 │ │ │ │ -F5EB9F16FE763672243EE6AE5CB6063A1D64670E1C059DD52134974E27D9D89C │ │ │ │ -BC658FCD814F20703D610C978FDCD6E2AEA31C18D1A310F215B28199F66C87DB │ │ │ │ -3B23980A393E1DD77AFA3045EDB6942505F3CF6204315A14E5B6BF2E96F3BB1F │ │ │ │ -628D24AC1893BC7DAEF3AA63F2116837F31DB90D872CBD9E5C48BCDEE781D20D │ │ │ │ -C6553D2D15F4E8438A9D1C7CEE1B72BD6AA08DC0AFEAF8B4DC1038707EE4A1BF │ │ │ │ -3D84460E60AF90F55002C1D8EBF0700F7EC3EFC944BEA78D0E0536F3AA6D9A84 │ │ │ │ -604A781AC5ACFEB7E681365315EE11E991C03DA431B65B332AD8F83F6F3AE66C │ │ │ │ -1BF434D3793FB5BCC44E44ACFF2855C2770C4AC678C6ACD6EB071974ACF1AE37 │ │ │ │ -D02C1736C62CC205A2F3488448527EFFA379613A8E6A6D134F4BFBAE6127304D │ │ │ │ -576C900A458E32CD42A4674415E03D8EB5742E71B854B3EDFD271AA214436544 │ │ │ │ -D1BCFD52F439298847E1FA258E5D38384FC85BC4EDC6F9E4431621CF763B137B │ │ │ │ -22DB6E3268B3F78881D55EA7C52ABF23FB73C152B06B708084FE1B00CFE72D9D │ │ │ │ -57B62AEE912E63BBD89D4D13CE896735454F1A16C3D9FB6CDF142CCA9F1C0242 │ │ │ │ -46F62109DF30667DA327F7CF6DC19B880C860C69080597FFCB1793313E202D4F │ │ │ │ -120A7C6B052C2EB7597B71B0985D24FDD2D3918393BF720E762C5DBBC2BB1E91 │ │ │ │ -B04560364EFE5B16EB068E0560FB932E0C617CFB95A166388E99AC4CB020F5BC │ │ │ │ -E24BB77352D7C3B21C37D404051A70FFFA0F726C35501A1FBB411F832CE46A2E │ │ │ │ -B424E26BD4 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFD8CDE285A2827F4659E339460ABEF319FE44D7A91E93CA309E9266E03DA │ │ │ │ +735F5DEF3920C01189BB63C2BD7ED0B92EABB481F123641477CDCCAB9751FB7B │ │ │ │ +F67DA7CE6EB134BC10D0228562BA5A6BFE6940907EF030ABF9EC4A8A0DFEF73D │ │ │ │ +3289E8CB4DC37694F5A656A935D92C72B3D82B012F578A27711B161DE9652ADC │ │ │ │ +71C51E743E4E9A7C6CF6FF16C5D65C1F60954C0858B48FAAC4FBB21988E2A934 │ │ │ │ +AC50C097DDF42C416359647D79F830E1430FB9BB803451A6732D1B5CAB817C1B │ │ │ │ +673B3077D9A180F184267E9990C087BCDEBC8EB8B889934DD0EB63C2EBCED4A3 │ │ │ │ +83A0D6A365412CFF610EF7BD5F82B02AA293F1D2F868768CDE9B801C929B4A38 │ │ │ │ +64E20C70BC4041F837AD15423517F7336A067D140A2C7906DC5D45885FFB3B69 │ │ │ │ +724E5B9B138BD15A9359EB25D14BC4193E529D1A49FEB0DC1015BF94CEBBD5E0 │ │ │ │ +EA148B185C53E12BD9FA6DBC097D789A73E832F02F55080D8ED6087F5952EA78 │ │ │ │ +250A4C65CE4C4013554A031446D2092D813C4CB1A605D97A40CF867F656ECD1C │ │ │ │ +C23F80230AD1E449AA8B4007134F71156719206441D92B1A6DD25101ABF69F70 │ │ │ │ +538CCCE216376E1BD6E423986BD4E83B1975B15092D4E19F885672F9E7C02485 │ │ │ │ +E02DA0F4243D324A5983D1D46444E5F6573F699E4F2A3395EF0EB7808B7D4D62 │ │ │ │ +690FD033E93AA553082273636503DA4BBBBFA6D127CE10424DD1DDF4F879305C │ │ │ │ +14F64180E7851D091B3220DFC70CAA44716B8F7F0C6FBEDB167801DED77F9E69 │ │ │ │ +E9B31CD2D8044DB946E511162976C34DE27F2BB974B70509005562A0A21317B7 │ │ │ │ +46D826A31C476C8F9A778F941FF5956BA2D765B1AD0AC4BC7AE1CD8A2A81F039 │ │ │ │ +06EB13EBD099BBDB2EBDB54D459C288EA69FB0018CE9255BBFB08C1F90FF30BD │ │ │ │ +C971DA7FDB193281B8F967F21AB42F13F36085AC9EC0D6B6B448C8F289B0AD70 │ │ │ │ +DB521A4755ECF9CA594741E5C674220C21C265EF3BAE594197B00048C8D4DB73 │ │ │ │ +4AC47B6A86EAC7EECD042C8E23C347F8C9FCB870473C1FBD91C298174BCBF1A9 │ │ │ │ +7B366C570A9A04A433495FBC9FD0FFC22A0E8181424C0F038ED97AD5054B10CC │ │ │ │ +1CD5BA0719DD0B4F4F18932AE87FF8B8C1CF0C7482B7847049761505DCD85146 │ │ │ │ +4EE5CB53993A9449CD05233E961BD49AE92D308E2065D6C6BF038538039AA56A │ │ │ │ +C59D424BE3175427337E16892D3920598D518423E145C6B2DD3881F338845F0D │ │ │ │ +16C47AA0D9C2D6DE99C6A302D567ACD6F98BF38223F1890E099C8F93348FFDAA │ │ │ │ +C2D3440187C8FED87C1A891EF11EFA7168EC47F72AF8BC5BE1B88B1084E704F5 │ │ │ │ +82099F1A79E556D94CC38851C97DC3864945A7470F1389BCF608BADAE45B236D │ │ │ │ +2934A20FFBCF169BF84DF496B07E7F1D9002E62B030337642804403DF7E4B3FF │ │ │ │ +C5A421EE0033BA06C50A041FBFE8F81AFC145664E2976505EB14859CF0377EBA │ │ │ │ +EA604CF8BFB5F9ADB9A7ED56E6F0F919E791D57C7232241C892EAC3E55D2D03B │ │ │ │ +FF43B9DAB7B1D8C6588D6D3503F49E80121E52254431B308752A936E0B51124D │ │ │ │ +C7F23C316BA6FA73E6BC47EB9550003E1393C68360067C094C65C0DD17214FA0 │ │ │ │ +45FF0F9C3E0AE4C81093752D23EA95E163C98EC04873ECE3FB0882567329525C │ │ │ │ +0A3937B16CA72B5EB6D2DC10C1B485C0BA939587AFEBB6D837A40401C666BC1C │ │ │ │ +F3344FBAB3E48BEE18F3AF5CDB33BA63778D373A851333C8C34E2F35AB94E8B4 │ │ │ │ +FF7E62A92ED83B872894E0A17209E14CF61269204A35A4BC8C7EE4B16F19E91F │ │ │ │ +669C4EFCECB187F6C7FAF92B4E14E400C6B3C81679D4A7196D66DB1E897DDA42 │ │ │ │ +47CC2848B46D581A95EEF85AB528E8CDEEB275D1E1FE197A3A08D36406E2DADF │ │ │ │ +A87D817AF18B5525F89B7C2E584F4A1254A1FC71E749999A2152870631A69CB6 │ │ │ │ +666EBD6BB3366A598F6592040D0E82B9D866DF0A76C362E76C2804D108A0C148 │ │ │ │ +51F42E9E0ABD52CC2D02B156B63AFD03313AFC80EACC83DF9B59F05FD798951D │ │ │ │ +FCF5335636DFC6561910ACE0AEC47F74CFD302EB7421D28AAAC8FF82B7CE2B2A │ │ │ │ +340B8BCE09F57BFCBC77F91096D97A85726E68846398C8C9C8D3A65A252AE8FB │ │ │ │ +166750C244963BC61E2236BAAC529FABD6FC774550096374A8DB81B6AF1EA843 │ │ │ │ +27F671C0045D629E3734EF037447C4763514FD1C4AE858A494AFC23A64C82149 │ │ │ │ +F4C0A7023B3865B84FAC2DC88D1553DCEBA3D8FB5DBC1103123F6B8CB5B3A399 │ │ │ │ +B665B26B001BF1E4BFABE42BFF6B02D69FA88D5CBCA5A11D5B48CFB4EAE60558 │ │ │ │ +5FBE254AD3BE01761CD4995E766E172D768621223505FD6AA8F89FC042EB814C │ │ │ │ +34373DAEC4FAAF71C0752F814154C5299F751CE7E0F9C673D2E448D0204C214C │ │ │ │ +C04DC34671FBEF72350FFBA263662E86A0D3795E310153AAF4C8A2623E167E6E │ │ │ │ +1F13A9BA485D5DDFC451D691DBA7C49E20354A7AD79D89F7EDE24F0D5B48B27D │ │ │ │ +568D01EF2555504196C09841F5970D8CF6C5D47FFFCF18AE6B2A485342000AAD │ │ │ │ +1F922FBEF7C98E0965609C89240E7B131A59551F57CD5C92097FCE75F5D2778F │ │ │ │ +F9ACF43A3273551363442C8C539205903A835C744A4AA953545506081D3D231A │ │ │ │ +A140E01F280BC42A3C35EDAD5F6B8CE6E51C68E41CA813710864ED880FCE846C │ │ │ │ +1B66D27CC2DBCDC2B1B96A12490BD76D67A415D4A6595CD9B19D3104A83D2C82 │ │ │ │ +C46DCD2C027F0565EDB83E54FF99498194D3140E55E8EE65EBDEAC5409B5616A │ │ │ │ +73141DA2D581E300A6057F4301A02DD160AB3E55A116313525122D0608816AA8 │ │ │ │ +4712EEF3D6FE8C893DF37D │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3823,15 +3813,15 @@ │ │ │ │ @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 134[48 3[51 2[36 12[40 2[51 45 26[59 11[25 45 4[45 │ │ │ │ +/Fe 139[35 1[36 2[45 9[40 1[40 51 18[71 20[25 4[45 45 │ │ │ │ 1[45 1[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 │ │ │ │ @@ -3948,17 +3938,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 1140 4 v │ │ │ │ -1322 w Fi(IVL)29 b Fe(:)i Fd(DRAFT)f Fe(F)-8 b(ebruary)30 │ │ │ │ -b(29,)i(2024)p 2760 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 1181 4 v │ │ │ │ +1363 w Fi(IVL)29 b Fe(:)i Fd(DRAFT)f Fe(Octob)s(er)h(4,)g(2025)p │ │ │ │ +2719 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 │ │ │ │ @@ -4025,17 +4015,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 1140 4 v 1321 100 a Fi(IVL)30 │ │ │ │ -b Fe(:)g Fd(DRAFT)122 b Fe(F)-8 b(ebruary)30 b(29,)h(2024)p │ │ │ │ -2713 100 V 1140 w Fj(3)111 399 y(3.)46 b Fi(void)h(IVL_clearData)d(\()k │ │ │ │ +TeXDict begin 3 2 bop 91 100 1181 4 v 1363 100 a Fi(IVL)29 │ │ │ │ +b Fe(:)i Fd(DRAFT)121 b Fe(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2672 100 V 1181 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 │ │ │ │ @@ -4083,27 +4073,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 1140 4 v │ │ │ │ -1322 w Fi(IVL)29 b Fe(:)i Fd(DRAFT)f Fe(F)-8 b(ebruary)30 │ │ │ │ -b(29,)i(2024)p 2760 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 1181 4 v │ │ │ │ +1363 w Fi(IVL)29 b Fe(:)i Fd(DRAFT)f Fe(Octob)s(er)h(4,)g(2025)p │ │ │ │ +2719 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 │ │ │ │ @@ -4172,17 +4162,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 1140 4 v 1321 100 a Fi(IVL)30 │ │ │ │ -b Fe(:)g Fd(DRAFT)122 b Fe(F)-8 b(ebruary)30 b(29,)h(2024)p │ │ │ │ -2713 100 V 1140 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 1181 4 v 1363 100 a Fi(IVL)29 │ │ │ │ +b Fe(:)i Fd(DRAFT)121 b Fe(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2672 100 V 1181 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 │ │ │ │ @@ -4225,28 +4215,28 @@ │ │ │ │ 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 1140 4 v │ │ │ │ -1322 w Fi(IVL)29 b Fe(:)i Fd(DRAFT)f Fe(F)-8 b(ebruary)30 │ │ │ │ -b(29,)i(2024)p 2760 100 V 605 311 2918 4 v 605 2506 4 │ │ │ │ -2196 v 663 414 a Fj(if)f 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 Fi(type)f Fj(is)i Fi(IVL)p 1382 │ │ │ │ -1318 V 33 w(UNKNOWN)d Fj(then)898 1431 y(set)j(the)g(p)s(oin)m(ter)663 │ │ │ │ -1544 y(else)898 1656 y(if)g(the)f(presen)m(t)h(size)g(of)f(list)h │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fj(6)p 136 100 1181 4 v │ │ │ │ +1363 w Fi(IVL)29 b Fe(:)i Fd(DRAFT)f Fe(Octob)s(er)h(4,)g(2025)p │ │ │ │ +2719 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 │ │ │ │ +Fi(type)f Fj(is)i Fi(IVL)p 1382 1318 V 33 w(UNKNOWN)d │ │ │ │ +Fj(then)898 1431 y(set)j(the)g(p)s(oin)m(ter)663 1544 │ │ │ │ +y(else)898 1656 y(if)g(the)f(presen)m(t)h(size)g(of)f(list)h │ │ │ │ Fi(ilist)e Fj(is)i(smaller)g(than)f Fi(isize)f Fj(then)1133 │ │ │ │ 1769 y(get)j(new)d(storage)j(for)e(a)h(new)f(larger)h(list)898 │ │ │ │ 1882 y(endif)898 1995 y(set)g(the)g(size)898 2108 y(if)g │ │ │ │ Fi(ivec)e Fj(is)h(not)h Fi(NULL)e Fj(then)1133 2221 y(cop)m(y)i(the)g │ │ │ │ (en)m(tries)898 2334 y(endif)663 2447 y(endif)p 3519 │ │ │ │ 2506 4 2196 v 605 2509 2918 4 v 227 2720 a Fd(Err)-5 │ │ │ │ b(or)28 b(che)-5 b(cking:)37 b Fj(If)23 b Fi(ivl)g Fj(is)g │ │ │ │ @@ -4278,17 +4268,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 1140 4 v 1321 100 a Fi(IVL)30 │ │ │ │ -b Fe(:)g Fd(DRAFT)122 b Fe(F)-8 b(ebruary)30 b(29,)h(2024)p │ │ │ │ -2713 100 V 1140 w Fj(7)111 399 y(3.)46 b Fi(int)h(IVL_sortUp)e(\()j │ │ │ │ +TeXDict begin 7 6 bop 91 100 1181 4 v 1363 100 a Fi(IVL)29 │ │ │ │ +b Fe(:)i Fd(DRAFT)121 b Fe(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2672 100 V 1181 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 │ │ │ │ @@ -4356,49 +4346,48 @@ │ │ │ │ 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 1140 4 v │ │ │ │ -1322 w Fi(IVL)29 b Fe(:)i Fd(DRAFT)f Fe(F)-8 b(ebruary)30 │ │ │ │ -b(29,)i(2024)p 2760 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 │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fj(8)p 136 100 1181 4 v │ │ │ │ +1363 w Fi(IVL)29 b Fe(:)i Fd(DRAFT)f Fe(Octob)s(er)h(4,)g(2025)p │ │ │ │ +2719 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(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 │ │ │ │ @@ -4431,17 +4420,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 1140 4 v 1321 100 a Fi(IVL)30 │ │ │ │ -b Fe(:)g Fd(DRAFT)122 b Fe(F)-8 b(ebruary)30 b(29,)h(2024)p │ │ │ │ -2713 100 V 1140 w Fj(9)111 399 y(3.)46 b Fi(int)h │ │ │ │ +TeXDict begin 9 8 bop 91 100 1181 4 v 1363 100 a Fi(IVL)29 │ │ │ │ +b Fe(:)i Fd(DRAFT)121 b Fe(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2672 100 V 1181 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 │ │ │ │ @@ -4508,19 +4497,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 1117 4 │ │ │ │ -v 1300 w Fi(IVL)29 b Fe(:)i Fd(DRAFT)f Fe(F)-8 b(ebruary)30 │ │ │ │ -b(29,)h(2024)p 2783 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 1159 4 │ │ │ │ +v 1341 w Fi(IVL)29 b Fe(:)i Fd(DRAFT)f Fe(Octob)s(er)g(4,)h(2025)p │ │ │ │ +2742 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 February 29, 2024 │ │ │ │ │ + 2 IVL : DRAFT October 4, 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 February 29, 2024 3 │ │ │ │ │ + IVL : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 4 IVL : DRAFT October 4, 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 February 29, 2024 5 │ │ │ │ │ + IVL : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 6 IVL : DRAFT October 4, 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 February 29, 2024 7 │ │ │ │ │ + IVL : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 8 IVL : DRAFT October 4, 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 February 29, 2024 9 │ │ │ │ │ + IVL : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 10 IVL : DRAFT October 4, 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 2024.02.29:1858 │ │ │ │ +%DVIPSSource: TeX output 2025.10.04:1734 │ │ │ │ %%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 │ │ │ │ @@ -1257,23 +1257,23 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 50 /two put │ │ │ │ dup 52 /four put │ │ │ │ -dup 57 /nine put │ │ │ │ +dup 53 /five put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 70 /F put │ │ │ │ -dup 97 /a put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ +dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ -dup 117 /u put │ │ │ │ -dup 121 /y put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1447,95 +1447,85 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA647CD0E2539DFAD9604486DCCFA49 │ │ │ │ -AC96130D106A8F8387633622C3809400D6E8FF9D60877C743502E4D211CEBF62 │ │ │ │ -9A6F91045C22D5D20C5FF677D89983D02E5EE26C71A9EAE0E7C52465DA5A149A │ │ │ │ -9B731C27EC8366BC3E841C0CAE49A33DE164A857365B17B09CAD121C47A980CB │ │ │ │ -C75E1030F6C394EDB46C54B46880D2344127B903FB22684C9CAACE6053DC3BFA │ │ │ │ -4E47C565ECAF19C4295A11BD68CA6D45B5738B932BB3690A8C712904C49C1636 │ │ │ │ -A7702075F2FEA8DB3EB3A3C1216BB769DD0BAF4507A18E3052F2C846B0797933 │ │ │ │ -8CE9BB2DB5DFADAF1B0FC3A22BAB82A0D5D290F7AD950013CFA465BE11C1076D │ │ │ │ -5833FF92321FBF90D9229D3BA09DD18EEC44D9FCF8FCF63CC09D2977BFA798B6 │ │ │ │ -47FB047EA6AF69C7DE570176F5B6C0FED74DEDBF7DDF49550DD84BA14AC09423 │ │ │ │ -F70D5B14F0F8588F1E2FFE0DFE0760E77A9E39DEDAC5C5AE3760722C029B916D │ │ │ │ -96A2A7D1DD6A61F90B4B9806314A668EB7A0E107A3527310A240490453CC18D7 │ │ │ │ -3793B4CF3CE13EA332E7F5C2BACF85AC75FE84693B966BB0F6FB9A179A331C4E │ │ │ │ -55E9EF30E2734E44A88E053CD5E650D7E529E94CB7F8B733E68315ACAC5BEFC5 │ │ │ │ -3FE4F585F875310267865679AB381125C31E9AEB7226DC9F18DA80A9DE2F38A4 │ │ │ │ -51B8F9D5B2FBA0F50D53AE6212AFE41466A594F7A303B4E82F1493C0B8D65756 │ │ │ │ -BE6AF2931E5ADA5CE7D51CB5B1EC916C6C6D674808939331CA66F8181DD2B112 │ │ │ │ -1A12198CCCB6BBF1D40C803E794B65241ACE1E0D30CCA1C6F2D3E1415B98726B │ │ │ │ -9BA303BE2C4C276108CC78C093F1CC85CA454CC38535D1DEBFA341D84E8A5DDF │ │ │ │ -D53D8DD0F4A812B5BA63871BEB3BCE93FBC77AD395914E2CD757546C2BE2D641 │ │ │ │ -FDB12258E1E1D10E1B963EABB265F2C8B2547D48963E1AD3B223B666B46915A1 │ │ │ │ -157F5EA0AB8D8411C07AA2EB5D0EF1A1BA6D81C47473A3D3D6287104C7BF61F8 │ │ │ │ -3BDB64995DE96A65BF2B7288C51ADAA3D373A95C40D5240C5FF397551554AA9E │ │ │ │ -C89C7E45AA7738503CB058EF6AD5052CC78E4445C810C250BF25394B8D7DE82E │ │ │ │ -315C9CCD6E1E9150EC79EE0F354C668AE199C1AFF39C67337A86CB932E8D64E9 │ │ │ │ -389FF3CC08B538492DEED017686DBB9BDEA30FE67FB4EBDB3627C16FD15F243A │ │ │ │ -7FDEB310EFC940E57726E94340472F2C452815927ADE21578C959890216BE504 │ │ │ │ -225BE4B4D2E3B19F5E06B5A0B25AF168C3A2B26F599A829F89C16BD2026E8CC9 │ │ │ │ -8FB3CBB830C3E36C099071A70D0B8834FF2C17364EB50D5C71440CC7BFE02321 │ │ │ │ -8C6ECAC2F7EC1BE39077DB0E8B2B251626A71FD038EB2CF1FC254D98C1535CAA │ │ │ │ -A8C987BC266482BD860A333048E1EDB3DD40A6ECD6DA0088AD9B9640202D89AA │ │ │ │ -0BB9A0ADF63491E67F2E97E35942D77E59B9B8AB0ED28B022EE5CD3449FC5B7A │ │ │ │ -19E38845B488F97D155C4312885E29537EAE97719C65845663480CE79DE8F037 │ │ │ │ -68995C0928FE8AFBEE554F01381EE5187578DF5D2542F26F66A599EE8ECC1F68 │ │ │ │ -FBADF3C2BA968C3CEB86675CF9A6CFD736E1422800D270417D497903DE87F2AE │ │ │ │ -938E39E120E9D3079F512E545E0E2616B84E81FE41392184F96818A7C86BF541 │ │ │ │ -F2E67C48CA56DA838C9FA0FAD538073B9F26319140D1F80EEEBCA190DE660A31 │ │ │ │ -457CAC16E92F87449A3734F9EA751588514865B58DC073658C8A857B5398AAC7 │ │ │ │ -3DC11E069996EF74A3189A07630D5DB87C5E028CD193C086B4D0E8BABC4F2393 │ │ │ │ -235EC96091B16C4A6D97DA1BD30A2D2E71F55869223CA66AD12448B668685F6E │ │ │ │ -06E7888D7F20045C662C4F7994CC7E1CE9AAC33A026716AA0551DF12343F0E22 │ │ │ │ -6E9F4B21C90406CC4997601194EF37A973221D1F4D73DD5666BD297F621C92AA │ │ │ │ -E3F698BC1146ADE754C4120EDF5B3E974D75A237E51DB49D52CD6CC7C9E8BD2D │ │ │ │ -E6849DF8F4DBA86C655D0C57CB54836C8A841C1D814F6B493F96ADBFCAD78D3B │ │ │ │ -430C58EF169950851B6A0B46411488B1A6F6974832787A24C0CDDBE27996EFB1 │ │ │ │ -DB341FA34B1DC6238D978D1E1D34AF3FB375ED6DA9C88699F195C88A54622F7C │ │ │ │ -36DAFC663D85660E756733A7E22F20C6A5D91F06087CAD10F7217BD33F343DC6 │ │ │ │ -F5EB9F16FE763672243EE6AE5CB6063A1D64670E1C059DD52134974E27D9D89C │ │ │ │ -BC658FCD814F20703D610C978FDCD6E2AEA31C18D1A310F215B28199F66C87DB │ │ │ │ -3B23980A393E1DD77AFA3045EDB6942505F3CF6204315A14E5B6BF2E96F3BB1F │ │ │ │ -628D24AC1893BC7DAEF3AA63F2116837F31DB90D872CBD9E5C48BCDEE781D20D │ │ │ │ -C6553D2D15F4E8438A9D1C7CEE1B72BD6AA08DC0AFEAF8B4DC1038707EE4A1BF │ │ │ │ -3D84460E60AF90F55002C1D8EBF0700F7EC3EFC944BEA78D0E0536F3AA6D9A84 │ │ │ │ -604A781AC5ACFEB7E681365315EE11E991C03DA431B65B332AD8F83F6F3AE66C │ │ │ │ -1BF434D3793FB5BCC44E44ACFF2855C2770C4AC678C6ACD6EB071974ACF1AE37 │ │ │ │ -D02C1736C62CC205A2F3488448527EFFA379613A8E6A6D134F4BFBAE6127304D │ │ │ │ -576C900A458E32CD42A4674415E03D8EB5742E71B854B3EDFD271AA214436544 │ │ │ │ -D1BCFD52F439298847E1FA258E5D38384FC85BC4EDC6F9E4431621CF763B137B │ │ │ │ -22DB6E3268B3F78881D55EA7C52ABF23FB73C152B06B708084FE1B00CFE72D9D │ │ │ │ -57B62AEE912E63BBD89D4D13CE896735454F1A16C3D9FB6CDF142CCA9F1C0242 │ │ │ │ -46F62109DF30667DA327F7CF6DC19B880C860C69080597FFCB1793313E202D4F │ │ │ │ -120A7C6B052C2EB7597B71B0985D24FDD2D3918393BF720E762C5DBBC2BB1E91 │ │ │ │ -B04560364EFE5B16EB068E0560FB932E0C617CFB95A166388E99AC4CB020F5BC │ │ │ │ -E24BB77352D7C3B21C37D404051A70FFFA0F726C35501A1FBB411F832CE46A2E │ │ │ │ -B424E26BD4 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFD8CDE285A2827F4659E339460ABEF319FE44D7A91E93CA309E9266E03DA │ │ │ │ +735F5DEF3920C01189BB63C2BD7ED0B92EABB481F123641477CDCCAB9751FB7B │ │ │ │ +F67DA7CE6EB134BC10D0228562BA5A6BFE6940907EF030ABF9EC4A8A0DFEF73D │ │ │ │ +3289E8CB4DC37694F5A656A935D92C72B3D82B012F578A27711B161DE9652ADC │ │ │ │ +71C51E743E4E9A7C6CF6FF16C5D65C1F60954C0858B48FAAC4FBB21988E2A934 │ │ │ │ +AC50C097DDF42C416359647D79F830E1430FB9BB803451A6732D1B5CAB817C1B │ │ │ │ +673B3077D9A180F184267E9990C087BCDEBC8EB8B889934DD0EB63C2EBCED4A3 │ │ │ │ +83A0D6A365412CFF610EF7BD5F82B02AA293F1D2F868768CDE9B801C929B4A38 │ │ │ │ +64E20C70BC4041F837AD15423517F7336A067D140A2C7906DC5D45885FFB3B69 │ │ │ │ +724E5B9B138BD15A9359EB25D14BC4193E529D1A49FEB0DC1015BF94CEBBD5E0 │ │ │ │ +EA148B185C53E12BD9FA6DBC097D789A73E832F02F55080D8ED6087F5952EA78 │ │ │ │ +250A4C65CE4C4013554A031446D2092D813C4CB1A605D97A40CF867F656ECD1C │ │ │ │ +C23F80230AD1E449AA8B4007134F71156719206441D92B1A6DD25101ABF69F70 │ │ │ │ +538CCCE216376E1BD6E423986BD4E83B1975B15092D4E19F885672F9E7C02485 │ │ │ │ +E02DA0F4243D324A5983D1D46444E5F6573F699E4F2A3395EF0EB7808B7D4D62 │ │ │ │ +690FD033E93AA553082273636503DA4BBBBFA6D127CE10424DD1DDF4F879305C │ │ │ │ +14F64180E7851D091B3220DFC70CAA44716B8F7F0C6FBEDB167801DED77F9E69 │ │ │ │ +E9B31CD2D8044DB946E511162976C34DE27F2BB974B70509005562A0A21317B7 │ │ │ │ +46D826A31C476C8F9A778F941FF5956BA2D765B1AD0AC4BC7AE1CD8A2A81F039 │ │ │ │ +06EB13EBD099BBDB2EBDB54D459C288EA69FB0018CE9255BBFB08C1F90FF30BD │ │ │ │ +C971DA7FDB193281B8F967F21AB42F13F36085AC9EC0D6B6B448C8F289B0AD70 │ │ │ │ +DB521A4755ECF9CA594741E5C674220C21C265EF3BAE594197B00048C8D4DB73 │ │ │ │ +4AC47B6A86EAC7EECD042C8E23C347F8C9FCB870473C1FBD91C298174BCBF1A9 │ │ │ │ +7B366C570A9A04A433495FBC9FD0FFC22A0E8181424C0F038ED97AD5054B10CC │ │ │ │ +1CD5BA0719DD0B4F4F18932AE87FF8B8C1CF0C7482B7847049761505DCD85146 │ │ │ │ +4EE5CB53993A9449CD05233E961BD49AE92D308E2065D6C6BF038538039AA56A │ │ │ │ +C59D424BE3175427337E16892D3920598D518423E145C6B2DD3881F338845F0D │ │ │ │ +16C47AA0D9C2D6DE99C6A302D567ACD6F98BF38223F1890E099C8F93348FFDAA │ │ │ │ +C2D3440187C8FED87C1A891EF11EFA7168EC47F72AF8BC5BE1B88B1084E704F5 │ │ │ │ +82099F1A79E556D94CC38851C97DC3864945A7470F1389BCF608BADAE45B236D │ │ │ │ +2934A20FFBCF169BF84DF496B07E7F1D9002E62B030337642804403DF7E4B3FF │ │ │ │ +C5A421EE0033BA06C50A041FBFE8F81AFC145664E2976505EB14859CF0377EBA │ │ │ │ +EA604CF8BFB5F9ADB9A7ED56E6F0F919E791D57C7232241C892EAC3E55D2D03B │ │ │ │ +FF43B9DAB7B1D8C6588D6D3503F49E80121E52254431B308752A936E0B51124D │ │ │ │ +C7F23C316BA6FA73E6BC47EB9550003E1393C68360067C094C65C0DD17214FA0 │ │ │ │ +45FF0F9C3E0AE4C81093752D23EA95E163C98EC04873ECE3FB0882567329525C │ │ │ │ +0A3937B16CA72B5EB6D2DC10C1B485C0BA939587AFEBB6D837A40401C666BC1C │ │ │ │ +F3344FBAB3E48BEE18F3AF5CDB33BA63778D373A851333C8C34E2F35AB94E8B4 │ │ │ │ +FF7E62A92ED83B872894E0A17209E14CF61269204A35A4BC8C7EE4B16F19E91F │ │ │ │ +669C4EFCECB187F6C7FAF92B4E14E400C6B3C81679D4A7196D66DB1E897DDA42 │ │ │ │ +47CC2848B46D581A95EEF85AB528E8CDEEB275D1E1FE197A3A08D36406E2DADF │ │ │ │ +A87D817AF18B5525F89B7C2E584F4A1254A1FC71E749999A2152870631A69CB6 │ │ │ │ +666EBD6BB3366A598F6592040D0E82B9D866DF0A76C362E76C2804D108A0C148 │ │ │ │ +51F42E9E0ABD52CC2D02B156B63AFD03313AFC80EACC83DF9B59F05FD798951D │ │ │ │ +FCF5335636DFC6561910ACE0AEC47F74CFD302EB7421D28AAAC8FF82B7CE2B2A │ │ │ │ +340B8BCE09F57BFCBC77F91096D97A85726E68846398C8C9C8D3A65A252AE8FB │ │ │ │ +166750C244963BC61E2236BAAC529FABD6FC774550096374A8DB81B6AF1EA843 │ │ │ │ +27F671C0045D629E3734EF037447C4763514FD1C4AE858A494AFC23A64C82149 │ │ │ │ +F4C0A7023B3865B84FAC2DC88D1553DCEBA3D8FB5DBC1103123F6B8CB5B3A399 │ │ │ │ +B665B26B001BF1E4BFABE42BFF6B02D69FA88D5CBCA5A11D5B48CFB4EAE60558 │ │ │ │ +5FBE254AD3BE01761CD4995E766E172D768621223505FD6AA8F89FC042EB814C │ │ │ │ +34373DAEC4FAAF71C0752F814154C5299F751CE7E0F9C673D2E448D0204C214C │ │ │ │ +C04DC34671FBEF72350FFBA263662E86A0D3795E310153AAF4C8A2623E167E6E │ │ │ │ +1F13A9BA485D5DDFC451D691DBA7C49E20354A7AD79D89F7EDE24F0D5B48B27D │ │ │ │ +568D01EF2555504196C09841F5970D8CF6C5D47FFFCF18AE6B2A485342000AAD │ │ │ │ +1F922FBEF7C98E0965609C89240E7B131A59551F57CD5C92097FCE75F5D2778F │ │ │ │ +F9ACF43A3273551363442C8C539205903A835C744A4AA953545506081D3D231A │ │ │ │ +A140E01F280BC42A3C35EDAD5F6B8CE6E51C68E41CA813710864ED880FCE846C │ │ │ │ +1B66D27CC2DBCDC2B1B96A12490BD76D67A415D4A6595CD9B19D3104A83D2C82 │ │ │ │ +C46DCD2C027F0565EDB83E54FF99498194D3140E55E8EE65EBDEAC5409B5616A │ │ │ │ +73141DA2D581E300A6057F4301A02DD160AB3E55A116313525122D0608816AA8 │ │ │ │ +4712EEF3D6FE8C893DF37D │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3215,16 +3205,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 134[48 3[51 2[36 12[40 2[51 45 26[59 11[25 45 │ │ │ │ -4[45 1[45 1[45 3[25 44[{}13 90.9091 /CMSL10 rf /Fd 142[62 │ │ │ │ +rf /Fc 139[35 1[36 2[45 9[40 1[40 51 18[71 20[25 4[45 │ │ │ │ +45 1[45 1[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 │ │ │ │ @@ -3324,35 +3314,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 1111 4 v │ │ │ │ -1293 w Fh(Ideq)29 b Fc(:)41 b Fg(DRAFT)30 b Fc(F)-8 b(ebruary)30 │ │ │ │ -b(29,)i(2024)p 2789 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 1152 4 v │ │ │ │ +1334 w Fh(Ideq)29 b Fc(:)41 b Fg(DRAFT)30 b Fc(Octob)s(er)g(4,)h(2025)p │ │ │ │ +2748 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 │ │ │ │ @@ -3389,17 +3379,17 @@ │ │ │ │ Fi(and)h Fh(maxsize)e Fi(\014elds)i(are)h(set.)41 b(The)30 │ │ │ │ b(metho)s(d)f(then)i(returns)e Fh(1)p Fi(.)227 5294 y │ │ │ │ Fg(Err)-5 b(or)28 b(che)-5 b(cking:)37 b Fi(If)23 b Fh(deq)g │ │ │ │ Fi(is)g Fh(NULL)p Fi(,)g(or)h(if)f Fh(newsize)h Fa(<)h │ │ │ │ Fi(0,)g(an)f(error)f(message)i(is)e(prin)m(ted)g(and)g(the)h(program) │ │ │ │ 227 5407 y(exits.)p eop end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 91 100 1111 4 v 1292 100 a Fh(Ideq)30 │ │ │ │ -b Fc(:)40 b Fg(DRAFT)121 b Fc(F)-8 b(ebruary)31 b(29,)g(2024)p │ │ │ │ -2742 100 V 1111 w Fi(3)0 399 y Fb(1.2.3)112 b(Utilit)m(y)38 │ │ │ │ +TeXDict begin 3 2 bop 91 100 1152 4 v 1334 100 a Fh(Ideq)29 │ │ │ │ +b Fc(:)41 b Fg(DRAFT)121 b Fc(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2701 100 V 1152 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 │ │ │ │ @@ -3468,21 +3458,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 1111 4 v │ │ │ │ -1293 w Fh(Ideq)29 b Fc(:)41 b Fg(DRAFT)30 b Fc(F)-8 b(ebruary)30 │ │ │ │ -b(29,)i(2024)p 2789 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 1152 4 v │ │ │ │ +1334 w Fh(Ideq)29 b Fc(:)41 b Fg(DRAFT)30 b Fc(Octob)s(er)g(4,)h(2025)p │ │ │ │ +2748 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 February 29, 2024 │ │ │ │ │ + 2 Ideq : DRAFT October 4, 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 February 29, 2024 3 │ │ │ │ │ + Ideq : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 4 Ideq : DRAFT October 4, 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 2024.02.29:1858 │ │ │ │ +%DVIPSSource: TeX output 2025.10.04:1734 │ │ │ │ %%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 │ │ │ │ @@ -2764,23 +2764,23 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 50 /two put │ │ │ │ dup 52 /four put │ │ │ │ -dup 57 /nine put │ │ │ │ +dup 53 /five put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 70 /F put │ │ │ │ -dup 97 /a put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ +dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ -dup 117 /u put │ │ │ │ -dup 121 /y put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -2954,95 +2954,85 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA647CD0E2539DFAD9604486DCCFA49 │ │ │ │ -AC96130D106A8F8387633622C3809400D6E8FF9D60877C743502E4D211CEBF62 │ │ │ │ -9A6F91045C22D5D20C5FF677D89983D02E5EE26C71A9EAE0E7C52465DA5A149A │ │ │ │ -9B731C27EC8366BC3E841C0CAE49A33DE164A857365B17B09CAD121C47A980CB │ │ │ │ -C75E1030F6C394EDB46C54B46880D2344127B903FB22684C9CAACE6053DC3BFA │ │ │ │ -4E47C565ECAF19C4295A11BD68CA6D45B5738B932BB3690A8C712904C49C1636 │ │ │ │ -A7702075F2FEA8DB3EB3A3C1216BB769DD0BAF4507A18E3052F2C846B0797933 │ │ │ │ -8CE9BB2DB5DFADAF1B0FC3A22BAB82A0D5D290F7AD950013CFA465BE11C1076D │ │ │ │ -5833FF92321FBF90D9229D3BA09DD18EEC44D9FCF8FCF63CC09D2977BFA798B6 │ │ │ │ -47FB047EA6AF69C7DE570176F5B6C0FED74DEDBF7DDF49550DD84BA14AC09423 │ │ │ │ -F70D5B14F0F8588F1E2FFE0DFE0760E77A9E39DEDAC5C5AE3760722C029B916D │ │ │ │ -96A2A7D1DD6A61F90B4B9806314A668EB7A0E107A3527310A240490453CC18D7 │ │ │ │ -3793B4CF3CE13EA332E7F5C2BACF85AC75FE84693B966BB0F6FB9A179A331C4E │ │ │ │ -55E9EF30E2734E44A88E053CD5E650D7E529E94CB7F8B733E68315ACAC5BEFC5 │ │ │ │ -3FE4F585F875310267865679AB381125C31E9AEB7226DC9F18DA80A9DE2F38A4 │ │ │ │ -51B8F9D5B2FBA0F50D53AE6212AFE41466A594F7A303B4E82F1493C0B8D65756 │ │ │ │ -BE6AF2931E5ADA5CE7D51CB5B1EC916C6C6D674808939331CA66F8181DD2B112 │ │ │ │ -1A12198CCCB6BBF1D40C803E794B65241ACE1E0D30CCA1C6F2D3E1415B98726B │ │ │ │ -9BA303BE2C4C276108CC78C093F1CC85CA454CC38535D1DEBFA341D84E8A5DDF │ │ │ │ -D53D8DD0F4A812B5BA63871BEB3BCE93FBC77AD395914E2CD757546C2BE2D641 │ │ │ │ -FDB12258E1E1D10E1B963EABB265F2C8B2547D48963E1AD3B223B666B46915A1 │ │ │ │ -157F5EA0AB8D8411C07AA2EB5D0EF1A1BA6D81C47473A3D3D6287104C7BF61F8 │ │ │ │ -3BDB64995DE96A65BF2B7288C51ADAA3D373A95C40D5240C5FF397551554AA9E │ │ │ │ -C89C7E45AA7738503CB058EF6AD5052CC78E4445C810C250BF25394B8D7DE82E │ │ │ │ -315C9CCD6E1E9150EC79EE0F354C668AE199C1AFF39C67337A86CB932E8D64E9 │ │ │ │ -389FF3CC08B538492DEED017686DBB9BDEA30FE67FB4EBDB3627C16FD15F243A │ │ │ │ -7FDEB310EFC940E57726E94340472F2C452815927ADE21578C959890216BE504 │ │ │ │ -225BE4B4D2E3B19F5E06B5A0B25AF168C3A2B26F599A829F89C16BD2026E8CC9 │ │ │ │ -8FB3CBB830C3E36C099071A70D0B8834FF2C17364EB50D5C71440CC7BFE02321 │ │ │ │ -8C6ECAC2F7EC1BE39077DB0E8B2B251626A71FD038EB2CF1FC254D98C1535CAA │ │ │ │ -A8C987BC266482BD860A333048E1EDB3DD40A6ECD6DA0088AD9B9640202D89AA │ │ │ │ -0BB9A0ADF63491E67F2E97E35942D77E59B9B8AB0ED28B022EE5CD3449FC5B7A │ │ │ │ -19E38845B488F97D155C4312885E29537EAE97719C65845663480CE79DE8F037 │ │ │ │ -68995C0928FE8AFBEE554F01381EE5187578DF5D2542F26F66A599EE8ECC1F68 │ │ │ │ -FBADF3C2BA968C3CEB86675CF9A6CFD736E1422800D270417D497903DE87F2AE │ │ │ │ -938E39E120E9D3079F512E545E0E2616B84E81FE41392184F96818A7C86BF541 │ │ │ │ -F2E67C48CA56DA838C9FA0FAD538073B9F26319140D1F80EEEBCA190DE660A31 │ │ │ │ -457CAC16E92F87449A3734F9EA751588514865B58DC073658C8A857B5398AAC7 │ │ │ │ -3DC11E069996EF74A3189A07630D5DB87C5E028CD193C086B4D0E8BABC4F2393 │ │ │ │ -235EC96091B16C4A6D97DA1BD30A2D2E71F55869223CA66AD12448B668685F6E │ │ │ │ -06E7888D7F20045C662C4F7994CC7E1CE9AAC33A026716AA0551DF12343F0E22 │ │ │ │ -6E9F4B21C90406CC4997601194EF37A973221D1F4D73DD5666BD297F621C92AA │ │ │ │ -E3F698BC1146ADE754C4120EDF5B3E974D75A237E51DB49D52CD6CC7C9E8BD2D │ │ │ │ -E6849DF8F4DBA86C655D0C57CB54836C8A841C1D814F6B493F96ADBFCAD78D3B │ │ │ │ -430C58EF169950851B6A0B46411488B1A6F6974832787A24C0CDDBE27996EFB1 │ │ │ │ -DB341FA34B1DC6238D978D1E1D34AF3FB375ED6DA9C88699F195C88A54622F7C │ │ │ │ -36DAFC663D85660E756733A7E22F20C6A5D91F06087CAD10F7217BD33F343DC6 │ │ │ │ -F5EB9F16FE763672243EE6AE5CB6063A1D64670E1C059DD52134974E27D9D89C │ │ │ │ -BC658FCD814F20703D610C978FDCD6E2AEA31C18D1A310F215B28199F66C87DB │ │ │ │ -3B23980A393E1DD77AFA3045EDB6942505F3CF6204315A14E5B6BF2E96F3BB1F │ │ │ │ -628D24AC1893BC7DAEF3AA63F2116837F31DB90D872CBD9E5C48BCDEE781D20D │ │ │ │ -C6553D2D15F4E8438A9D1C7CEE1B72BD6AA08DC0AFEAF8B4DC1038707EE4A1BF │ │ │ │ -3D84460E60AF90F55002C1D8EBF0700F7EC3EFC944BEA78D0E0536F3AA6D9A84 │ │ │ │ -604A781AC5ACFEB7E681365315EE11E991C03DA431B65B332AD8F83F6F3AE66C │ │ │ │ -1BF434D3793FB5BCC44E44ACFF2855C2770C4AC678C6ACD6EB071974ACF1AE37 │ │ │ │ -D02C1736C62CC205A2F3488448527EFFA379613A8E6A6D134F4BFBAE6127304D │ │ │ │ -576C900A458E32CD42A4674415E03D8EB5742E71B854B3EDFD271AA214436544 │ │ │ │ -D1BCFD52F439298847E1FA258E5D38384FC85BC4EDC6F9E4431621CF763B137B │ │ │ │ -22DB6E3268B3F78881D55EA7C52ABF23FB73C152B06B708084FE1B00CFE72D9D │ │ │ │ -57B62AEE912E63BBD89D4D13CE896735454F1A16C3D9FB6CDF142CCA9F1C0242 │ │ │ │ -46F62109DF30667DA327F7CF6DC19B880C860C69080597FFCB1793313E202D4F │ │ │ │ -120A7C6B052C2EB7597B71B0985D24FDD2D3918393BF720E762C5DBBC2BB1E91 │ │ │ │ -B04560364EFE5B16EB068E0560FB932E0C617CFB95A166388E99AC4CB020F5BC │ │ │ │ -E24BB77352D7C3B21C37D404051A70FFFA0F726C35501A1FBB411F832CE46A2E │ │ │ │ -B424E26BD4 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFD8CDE285A2827F4659E339460ABEF319FE44D7A91E93CA309E9266E03DA │ │ │ │ +735F5DEF3920C01189BB63C2BD7ED0B92EABB481F123641477CDCCAB9751FB7B │ │ │ │ +F67DA7CE6EB134BC10D0228562BA5A6BFE6940907EF030ABF9EC4A8A0DFEF73D │ │ │ │ +3289E8CB4DC37694F5A656A935D92C72B3D82B012F578A27711B161DE9652ADC │ │ │ │ +71C51E743E4E9A7C6CF6FF16C5D65C1F60954C0858B48FAAC4FBB21988E2A934 │ │ │ │ +AC50C097DDF42C416359647D79F830E1430FB9BB803451A6732D1B5CAB817C1B │ │ │ │ +673B3077D9A180F184267E9990C087BCDEBC8EB8B889934DD0EB63C2EBCED4A3 │ │ │ │ +83A0D6A365412CFF610EF7BD5F82B02AA293F1D2F868768CDE9B801C929B4A38 │ │ │ │ +64E20C70BC4041F837AD15423517F7336A067D140A2C7906DC5D45885FFB3B69 │ │ │ │ +724E5B9B138BD15A9359EB25D14BC4193E529D1A49FEB0DC1015BF94CEBBD5E0 │ │ │ │ +EA148B185C53E12BD9FA6DBC097D789A73E832F02F55080D8ED6087F5952EA78 │ │ │ │ +250A4C65CE4C4013554A031446D2092D813C4CB1A605D97A40CF867F656ECD1C │ │ │ │ +C23F80230AD1E449AA8B4007134F71156719206441D92B1A6DD25101ABF69F70 │ │ │ │ +538CCCE216376E1BD6E423986BD4E83B1975B15092D4E19F885672F9E7C02485 │ │ │ │ +E02DA0F4243D324A5983D1D46444E5F6573F699E4F2A3395EF0EB7808B7D4D62 │ │ │ │ +690FD033E93AA553082273636503DA4BBBBFA6D127CE10424DD1DDF4F879305C │ │ │ │ +14F64180E7851D091B3220DFC70CAA44716B8F7F0C6FBEDB167801DED77F9E69 │ │ │ │ +E9B31CD2D8044DB946E511162976C34DE27F2BB974B70509005562A0A21317B7 │ │ │ │ +46D826A31C476C8F9A778F941FF5956BA2D765B1AD0AC4BC7AE1CD8A2A81F039 │ │ │ │ +06EB13EBD099BBDB2EBDB54D459C288EA69FB0018CE9255BBFB08C1F90FF30BD │ │ │ │ +C971DA7FDB193281B8F967F21AB42F13F36085AC9EC0D6B6B448C8F289B0AD70 │ │ │ │ +DB521A4755ECF9CA594741E5C674220C21C265EF3BAE594197B00048C8D4DB73 │ │ │ │ +4AC47B6A86EAC7EECD042C8E23C347F8C9FCB870473C1FBD91C298174BCBF1A9 │ │ │ │ +7B366C570A9A04A433495FBC9FD0FFC22A0E8181424C0F038ED97AD5054B10CC │ │ │ │ +1CD5BA0719DD0B4F4F18932AE87FF8B8C1CF0C7482B7847049761505DCD85146 │ │ │ │ +4EE5CB53993A9449CD05233E961BD49AE92D308E2065D6C6BF038538039AA56A │ │ │ │ +C59D424BE3175427337E16892D3920598D518423E145C6B2DD3881F338845F0D │ │ │ │ +16C47AA0D9C2D6DE99C6A302D567ACD6F98BF38223F1890E099C8F93348FFDAA │ │ │ │ +C2D3440187C8FED87C1A891EF11EFA7168EC47F72AF8BC5BE1B88B1084E704F5 │ │ │ │ +82099F1A79E556D94CC38851C97DC3864945A7470F1389BCF608BADAE45B236D │ │ │ │ +2934A20FFBCF169BF84DF496B07E7F1D9002E62B030337642804403DF7E4B3FF │ │ │ │ +C5A421EE0033BA06C50A041FBFE8F81AFC145664E2976505EB14859CF0377EBA │ │ │ │ +EA604CF8BFB5F9ADB9A7ED56E6F0F919E791D57C7232241C892EAC3E55D2D03B │ │ │ │ +FF43B9DAB7B1D8C6588D6D3503F49E80121E52254431B308752A936E0B51124D │ │ │ │ +C7F23C316BA6FA73E6BC47EB9550003E1393C68360067C094C65C0DD17214FA0 │ │ │ │ +45FF0F9C3E0AE4C81093752D23EA95E163C98EC04873ECE3FB0882567329525C │ │ │ │ +0A3937B16CA72B5EB6D2DC10C1B485C0BA939587AFEBB6D837A40401C666BC1C │ │ │ │ +F3344FBAB3E48BEE18F3AF5CDB33BA63778D373A851333C8C34E2F35AB94E8B4 │ │ │ │ +FF7E62A92ED83B872894E0A17209E14CF61269204A35A4BC8C7EE4B16F19E91F │ │ │ │ +669C4EFCECB187F6C7FAF92B4E14E400C6B3C81679D4A7196D66DB1E897DDA42 │ │ │ │ +47CC2848B46D581A95EEF85AB528E8CDEEB275D1E1FE197A3A08D36406E2DADF │ │ │ │ +A87D817AF18B5525F89B7C2E584F4A1254A1FC71E749999A2152870631A69CB6 │ │ │ │ +666EBD6BB3366A598F6592040D0E82B9D866DF0A76C362E76C2804D108A0C148 │ │ │ │ +51F42E9E0ABD52CC2D02B156B63AFD03313AFC80EACC83DF9B59F05FD798951D │ │ │ │ +FCF5335636DFC6561910ACE0AEC47F74CFD302EB7421D28AAAC8FF82B7CE2B2A │ │ │ │ +340B8BCE09F57BFCBC77F91096D97A85726E68846398C8C9C8D3A65A252AE8FB │ │ │ │ +166750C244963BC61E2236BAAC529FABD6FC774550096374A8DB81B6AF1EA843 │ │ │ │ +27F671C0045D629E3734EF037447C4763514FD1C4AE858A494AFC23A64C82149 │ │ │ │ +F4C0A7023B3865B84FAC2DC88D1553DCEBA3D8FB5DBC1103123F6B8CB5B3A399 │ │ │ │ +B665B26B001BF1E4BFABE42BFF6B02D69FA88D5CBCA5A11D5B48CFB4EAE60558 │ │ │ │ +5FBE254AD3BE01761CD4995E766E172D768621223505FD6AA8F89FC042EB814C │ │ │ │ +34373DAEC4FAAF71C0752F814154C5299F751CE7E0F9C673D2E448D0204C214C │ │ │ │ +C04DC34671FBEF72350FFBA263662E86A0D3795E310153AAF4C8A2623E167E6E │ │ │ │ +1F13A9BA485D5DDFC451D691DBA7C49E20354A7AD79D89F7EDE24F0D5B48B27D │ │ │ │ +568D01EF2555504196C09841F5970D8CF6C5D47FFFCF18AE6B2A485342000AAD │ │ │ │ +1F922FBEF7C98E0965609C89240E7B131A59551F57CD5C92097FCE75F5D2778F │ │ │ │ +F9ACF43A3273551363442C8C539205903A835C744A4AA953545506081D3D231A │ │ │ │ +A140E01F280BC42A3C35EDAD5F6B8CE6E51C68E41CA813710864ED880FCE846C │ │ │ │ +1B66D27CC2DBCDC2B1B96A12490BD76D67A415D4A6595CD9B19D3104A83D2C82 │ │ │ │ +C46DCD2C027F0565EDB83E54FF99498194D3140E55E8EE65EBDEAC5409B5616A │ │ │ │ +73141DA2D581E300A6057F4301A02DD160AB3E55A116313525122D0608816AA8 │ │ │ │ +4712EEF3D6FE8C893DF37D │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -5610,16 +5600,16 @@ │ │ │ │ 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 134[44 │ │ │ │ -3[46 2[33 12[37 2[46 42 26[54 11[23 42 4[42 1[42 1[42 │ │ │ │ +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 4[42 42 1[42 1[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 │ │ │ │ @@ -5758,19 +5748,19 @@ │ │ │ │ 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 1140 4 v │ │ │ │ -1305 w Fo(InpMtx)26 b Fj(:)37 b Fm(DRAFT)27 b Fj(F)-7 │ │ │ │ -b(ebruary)26 b(29,)h(2024)p 2760 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 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fp(2)p 125 100 1178 4 v │ │ │ │ +1343 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(Octob)r(er)g(4,)g │ │ │ │ +(2025)p 2723 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 │ │ │ │ b Fp(metho)r(d)33 b(returns)e(an)h Fo(IVL)f Fp(ob)5 b(ject)33 │ │ │ │ @@ -5858,17 +5848,17 @@ │ │ │ │ (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 1140 4 v 1306 100 a Fo(InpMtx)25 │ │ │ │ -b Fj(:)37 b Fm(DRAFT)110 b Fj(F)-7 b(ebruary)27 b(29,)g(2024)p │ │ │ │ -2721 100 V 1140 w Fp(3)301 390 y Fi({)41 b Fo(INPMTX)p │ │ │ │ +TeXDict begin 3 2 bop 83 100 1178 4 v 1344 100 a Fo(InpMtx)25 │ │ │ │ +b Fj(:)37 b Fm(DRAFT)110 b Fj(Octob)r(er)27 b(4,)g(2025)p │ │ │ │ +2683 100 V 1178 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 │ │ │ │ @@ -5964,27 +5954,27 @@ │ │ │ │ (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 1140 4 v │ │ │ │ -1305 w Fo(InpMtx)26 b Fj(:)37 b Fm(DRAFT)27 b Fj(F)-7 │ │ │ │ -b(ebruary)26 b(29,)h(2024)p 2760 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 Fn(\210)42 b Fo(INPMTX)p 477 730 V 28 w(IS)p 593 │ │ │ │ -730 V 31 w(REAL)p 800 730 V 30 w(ENTRIES\(mtx\))22 b │ │ │ │ -Fp(returns)27 b Fo(1)h Fp(if)g(the)g(en)n(tries)f(are)f(real,)h(and)g │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fp(4)p 125 100 1178 4 v │ │ │ │ +1343 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(Octob)r(er)g(4,)g │ │ │ │ +(2025)p 2723 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 │ │ │ │ +Fn(\210)42 b Fo(INPMTX)p 477 730 V 28 w(IS)p 593 730 │ │ │ │ +V 31 w(REAL)p 800 730 V 30 w(ENTRIES\(mtx\))22 b Fp(returns)27 │ │ │ │ +b Fo(1)h Fp(if)g(the)g(en)n(tries)f(are)f(real,)h(and)g │ │ │ │ Fo(0)h Fp(otherwise.)125 900 y Fn(\210)42 b Fo(INPMTX)p │ │ │ │ 477 900 V 28 w(IS)p 593 900 V 31 w(COMPLEX)p 932 900 │ │ │ │ V 28 w(ENTRIES\(mtx\))23 b Fp(returns)k Fo(1)g Fp(if)h(the)g(en)n │ │ │ │ (tries)f(are)g(complex,)g(and)h Fo(0)f Fp(otherwise.)0 │ │ │ │ 1205 y Fh(1.2)135 b(Protot)l(yp)t(es)46 b(and)f(descriptions)g(of)g │ │ │ │ Ff(InpMtx)d Fh(metho)t(ds)0 1414 y Fp(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 │ │ │ │ @@ -6040,17 +6030,17 @@ │ │ │ │ 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 1140 4 v 1306 100 a Fo(InpMtx)25 │ │ │ │ -b Fj(:)37 b Fm(DRAFT)110 b Fj(F)-7 b(ebruary)27 b(29,)g(2024)p │ │ │ │ -2721 100 V 1140 w Fp(5)208 390 y Fm(Err)l(or)j(che)l(cking:)38 │ │ │ │ +TeXDict begin 5 4 bop 83 100 1178 4 v 1344 100 a Fo(InpMtx)25 │ │ │ │ +b Fj(:)37 b Fm(DRAFT)110 b Fj(Octob)r(er)27 b(4,)g(2025)p │ │ │ │ +2683 100 V 1178 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 │ │ │ │ @@ -6108,37 +6098,37 @@ │ │ │ │ (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 1140 4 v │ │ │ │ -1305 w Fo(InpMtx)26 b Fj(:)37 b Fm(DRAFT)27 b Fj(F)-7 │ │ │ │ -b(ebruary)26 b(29,)h(2024)p 2760 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 │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fp(6)p 125 100 1178 4 v │ │ │ │ +1343 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(Octob)r(er)g(4,)g │ │ │ │ +(2025)p 2723 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(vecids[])c Fp(v)n(ector.)208 1093 y Fm(Err)l(or)30 │ │ │ │ +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 │ │ │ │ +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 1261 y(13.)41 │ │ │ │ +b Fo(int)h(*)h(InpMtx_sizes)c(\()k(InpMtx)e(*inpmtx)g(\))i(;)208 │ │ │ │ +1394 y Fp(This)27 b(metho)r(d)h(returns)f(the)h(base)f(address)f(of)i │ │ │ │ +(the)g Fo(sizes[])d Fp(v)n(ector.)208 1528 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 1261 y(13.)41 b Fo(int)h(*)h(InpMtx_sizes)c(\()k(InpMtx)e │ │ │ │ -(*inpmtx)g(\))i(;)208 1394 y Fp(This)27 b(metho)r(d)h(returns)f(the)h │ │ │ │ -(base)f(address)f(of)i(the)g Fo(sizes[])d Fp(v)n(ector.)208 │ │ │ │ -1528 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 1696 y(14.)41 │ │ │ │ -b Fo(int)h(*)h(InpMtx_offsets)38 b(\()43 b(InpMtx)e(*inpmtx)g(\))i(;) │ │ │ │ -208 1829 y Fp(This)27 b(metho)r(d)h(returns)f(the)h(base)f(address)f │ │ │ │ -(of)i(the)g Fo(offsets[])c Fp(v)n(ector.)208 1963 y Fm(Err)l(or)30 │ │ │ │ +(exits.)60 1696 y(14.)41 b Fo(int)h(*)h(InpMtx_offsets)38 │ │ │ │ +b(\()43 b(InpMtx)e(*inpmtx)g(\))i(;)208 1829 y Fp(This)27 │ │ │ │ +b(metho)r(d)h(returns)f(the)h(base)f(address)f(of)i(the)g │ │ │ │ +Fo(offsets[])c Fp(v)n(ector.)208 1963 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 2131 y(15.)41 b Fo(void)g(InpMtx_vector)e(\()k(InpMtx)e │ │ │ │ (*inpmtx,)f(int)j(id,)f(int)g(*pnent,)f(int)h(**pindices)e(\))j(;)208 │ │ │ │ 2231 y(void)e(InpMtx_realVector)c(\()43 b(InpMtx)e(*inpmtx,)g(int)h │ │ │ │ (id,)g(int)h(*pnent,)1297 2330 y(int)g(**pindices,)c(double)i │ │ │ │ (**pentries)e(\))k(;)208 2430 y(void)e(InpMtx_complexVec)o(tor)c(\()43 │ │ │ │ @@ -6188,17 +6178,17 @@ │ │ │ │ 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 1140 4 v 1306 100 a Fo(InpMtx)25 │ │ │ │ -b Fj(:)37 b Fm(DRAFT)110 b Fj(F)-7 b(ebruary)27 b(29,)g(2024)p │ │ │ │ -2721 100 V 1140 w Fp(7)60 390 y(19.)41 b Fo(void)g(InpMtx_setMaxnvec)o │ │ │ │ +TeXDict begin 7 6 bop 83 100 1178 4 v 1344 100 a Fo(InpMtx)25 │ │ │ │ +b Fj(:)37 b Fm(DRAFT)110 b Fj(Octob)r(er)27 b(4,)g(2025)p │ │ │ │ +2683 100 V 1178 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 │ │ │ │ @@ -6283,25 +6273,24 @@ │ │ │ │ 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 1140 4 v │ │ │ │ -1305 w Fo(InpMtx)26 b Fj(:)37 b Fm(DRAFT)27 b Fj(F)-7 │ │ │ │ -b(ebruary)26 b(29,)h(2024)p 2760 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 1178 4 v │ │ │ │ +1343 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(Octob)r(er)g(4,)g │ │ │ │ +(2025)p 2723 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) │ │ │ │ @@ -6383,17 +6372,17 @@ │ │ │ │ (colind[])f(\))i(;)208 5208 y(void)e(InpMtx_inputRealM)o(atr)o(ix)c(\() │ │ │ │ 43 b(InpMtx)e(*inpmtx,)g(int)h(nrow,)f(int)i(col,)338 │ │ │ │ 5308 y(int)g(rowstride,)c(int)j(colstride,)e(int)i(rowind[],)e(int)i │ │ │ │ (colind[],)e(double)h(mtxent[])g(\))i(;)208 5407 y(void)e │ │ │ │ (InpMtx_inputCompl)o(exM)o(at)o(rix)c(\()43 b(InpMtx)e(*inpmtx,)f(int)j │ │ │ │ (nrow,)e(int)h(col,)p eop end │ │ │ │ %%Page: 9 9 │ │ │ │ -TeXDict begin 9 8 bop 83 100 1140 4 v 1306 100 a Fo(InpMtx)25 │ │ │ │ -b Fj(:)37 b Fm(DRAFT)110 b Fj(F)-7 b(ebruary)27 b(29,)g(2024)p │ │ │ │ -2721 100 V 1140 w Fp(9)338 390 y Fo(int)43 b(rowstride,)c(int)j │ │ │ │ +TeXDict begin 9 8 bop 83 100 1178 4 v 1344 100 a Fo(InpMtx)25 │ │ │ │ +b Fj(:)37 b Fm(DRAFT)110 b Fj(Octob)r(er)27 b(4,)g(2025)p │ │ │ │ +2683 100 V 1178 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 │ │ │ │ @@ -6491,31 +6480,30 @@ │ │ │ │ (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 1120 4 │ │ │ │ -v 1284 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)28 b Fj(F)-7 │ │ │ │ -b(ebruary)26 b(29,)h(2024)p 2781 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 │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fp(10)p 166 100 1157 4 │ │ │ │ +v 1322 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(Octob)r(er)g(4,)g │ │ │ │ +(2025)p 2743 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 │ │ │ │ 927 y Fo(1)p Fp(,)g(\(ra)n(w)g(triples\).)208 1065 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.)0 1336 y Fe(1.2.6)112 b(Matrix-matrix)39 │ │ │ │ b(m)m(ultiply)f(metho)s(ds)0 1518 y Fp(There)18 b(are)f(four)h │ │ │ │ (families)h(of)f(matrix-v)n(ector)e(and)j(matrix-matrix)d(m)n(ultiply)j │ │ │ │ (metho)r(ds.)34 b(The)19 b Fo(InpMtx)p 3214 1518 V 29 │ │ │ │ @@ -6604,17 +6592,17 @@ │ │ │ │ 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 1120 4 v 1285 100 a Fo(InpMtx)25 │ │ │ │ -b Fj(:)37 b Fm(DRAFT)111 b Fj(F)-7 b(ebruary)26 b(29,)h(2024)p │ │ │ │ -2700 100 V 1120 w Fp(11)101 390 y(2.)42 b Fo(void)f(InpMtx_nonsym_mmm)o │ │ │ │ +TeXDict begin 11 10 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(4,)g(2025)p │ │ │ │ +2662 100 V 1157 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) │ │ │ │ @@ -6716,30 +6704,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 1120 │ │ │ │ -4 v 1284 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)28 b Fj(F)-7 │ │ │ │ -b(ebruary)26 b(29,)h(2024)p 2781 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 1157 │ │ │ │ +4 v 1322 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(Octob)r(er)g(4,)g │ │ │ │ +(2025)p 2743 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 │ │ │ │ @@ -6818,17 +6806,17 @@ │ │ │ │ (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 1120 4 v 1285 100 a Fo(InpMtx)25 │ │ │ │ -b Fj(:)37 b Fm(DRAFT)111 b Fj(F)-7 b(ebruary)26 b(29,)h(2024)p │ │ │ │ -2700 100 V 1120 w Fp(13)0 390 y Fe(1.2.8)112 b(Submatrix)39 │ │ │ │ +TeXDict begin 13 12 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(4,)g(2025)p │ │ │ │ +2662 100 V 1157 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 │ │ │ │ @@ -6916,20 +6904,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 1120 │ │ │ │ -4 v 1284 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)28 b Fj(F)-7 │ │ │ │ -b(ebruary)26 b(29,)h(2024)p 2781 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 1157 │ │ │ │ +4 v 1322 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(Octob)r(er)g(4,)g │ │ │ │ +(2025)p 2743 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 │ │ │ │ @@ -7019,17 +7007,17 @@ │ │ │ │ 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 1120 4 v 1285 100 a Fo(InpMtx)25 │ │ │ │ -b Fj(:)37 b Fm(DRAFT)111 b Fj(F)-7 b(ebruary)26 b(29,)h(2024)p │ │ │ │ -2700 100 V 1120 w Fp(15)0 390 y Fe(1.2.10)113 b(IO)37 │ │ │ │ +TeXDict begin 15 14 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(4,)g(2025)p │ │ │ │ +2662 100 V 1157 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 │ │ │ │ @@ -7126,22 +7114,22 @@ │ │ │ │ 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 1120 │ │ │ │ -4 v 1284 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)28 b Fj(F)-7 │ │ │ │ -b(ebruary)26 b(29,)h(2024)p 2781 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 │ │ │ │ +TeXDict begin 16 15 bop 0 100 a Fp(16)p 166 100 1157 │ │ │ │ +4 v 1322 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(Octob)r(er)g(4,)g │ │ │ │ +(2025)p 2743 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 │ │ │ │ b(ject)28 b(to)f(a)g(\014le)h(in)g(a)f(Matlab)g(format.)37 │ │ │ │ b(A)28 b(sample)f(line)h(is)208 1119 y Fo(a\(10,5\))40 │ │ │ │ @@ -7216,17 +7204,17 @@ │ │ │ │ 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 1120 4 v 1285 100 a Fo(InpMtx)25 │ │ │ │ -b Fj(:)37 b Fm(DRAFT)111 b Fj(F)-7 b(ebruary)26 b(29,)h(2024)p │ │ │ │ -2700 100 V 1120 w Fp(17)307 390 y Fn(\210)42 b Fp(The)19 │ │ │ │ +TeXDict begin 17 16 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(4,)g(2025)p │ │ │ │ +2662 100 V 1157 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 │ │ │ │ @@ -7322,50 +7310,49 @@ │ │ │ │ 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 1120 │ │ │ │ -4 v 1284 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)28 b Fj(F)-7 │ │ │ │ -b(ebruary)26 b(29,)h(2024)p 2781 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 1157 │ │ │ │ +4 v 1322 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(Octob)r(er)g(4,)g │ │ │ │ +(2025)p 2743 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 │ │ │ │ @@ -7426,17 +7413,17 @@ │ │ │ │ 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 1120 4 v 1285 100 a Fo(InpMtx)25 │ │ │ │ -b Fj(:)37 b Fm(DRAFT)111 b Fj(F)-7 b(ebruary)26 b(29,)h(2024)p │ │ │ │ -2700 100 V 1120 w Fp(19)469 390 y Fo(nvtx)42 b(nadj)469 │ │ │ │ +TeXDict begin 19 18 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(4,)g(2025)p │ │ │ │ +2662 100 V 1157 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 │ │ │ │ @@ -7526,24 +7513,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 1120 │ │ │ │ -4 v 1284 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)28 b Fj(F)-7 │ │ │ │ -b(ebruary)26 b(29,)h(2024)p 2781 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 1157 │ │ │ │ +4 v 1322 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(Octob)r(er)g(4,)g │ │ │ │ +(2025)p 2743 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 │ │ │ │ @@ -7603,17 +7590,17 @@ │ │ │ │ 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 1120 4 v 1285 100 a Fo(InpMtx)25 │ │ │ │ -b Fj(:)37 b Fm(DRAFT)111 b Fj(F)-7 b(ebruary)26 b(29,)h(2024)p │ │ │ │ -2700 100 V 1120 w Fp(21)1154 1747 y @beginspecial 47 │ │ │ │ +TeXDict begin 21 20 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(4,)g(2025)p │ │ │ │ +2662 100 V 1157 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 │ │ │ │ @@ -8018,37 +8005,36 @@ │ │ │ │ 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 1120 │ │ │ │ -4 v 1284 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)28 b Fj(F)-7 │ │ │ │ -b(ebruary)26 b(29,)h(2024)p 2781 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 Fl(\013A)3537 │ │ │ │ -792 y Fk(H)3600 823 y Fl(X)7 b Fp(.)58 b(The)208 922 │ │ │ │ -y(program's)25 b(output)j(is)g(a)f(\014le)g(whic)n(h)h(when)g(sen)n(t)f │ │ │ │ -(in)n(to)h(Matlab,)f(outputs)h(the)g(error)d(in)j(the)g(computation.) │ │ │ │ -307 1106 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 │ │ │ │ +TeXDict begin 22 21 bop 0 100 a Fp(22)p 166 100 1157 │ │ │ │ +4 v 1322 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(Octob)r(er)g(4,)g │ │ │ │ +(2025)p 2743 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 │ │ │ │ +Fl(\013A)3537 792 y Fk(H)3600 823 y Fl(X)7 b Fp(.)58 │ │ │ │ +b(The)208 922 y(program's)25 b(output)j(is)g(a)f(\014le)g(whic)n(h)h │ │ │ │ +(when)g(sen)n(t)f(in)n(to)h(Matlab,)f(outputs)h(the)g(error)d(in)j(the) │ │ │ │ +g(computation.)307 1106 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 │ │ │ │ 1206 y Fp(ob)5 b(ject)28 b(is)f(written)h(to)f(the)h(message)e(\014le.) │ │ │ │ 307 1339 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 1439 │ │ │ │ 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 1573 y Fn(\210)42 b Fo(dataType)25 │ │ │ │ @@ -8129,17 +8115,17 @@ │ │ │ │ (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 1120 4 v 1285 100 a Fo(InpMtx)25 │ │ │ │ -b Fj(:)37 b Fm(DRAFT)111 b Fj(F)-7 b(ebruary)26 b(29,)h(2024)p │ │ │ │ -2700 100 V 1120 w Fp(23)307 390 y Fn(\210)42 b Fo(alphaReal)24 │ │ │ │ +TeXDict begin 23 22 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(4,)g(2025)p │ │ │ │ +2662 100 V 1157 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 │ │ │ │ @@ -8320,17 +8306,17 @@ │ │ │ │ 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 1120 4 v 1285 100 a Fo(InpMtx)25 │ │ │ │ -b Fj(:)37 b Fm(DRAFT)111 b Fj(F)-7 b(ebruary)26 b(29,)h(2024)p │ │ │ │ -2700 100 V 1120 w Fp(25)0 390 y Fo(InpMtx)p 269 390 27 │ │ │ │ +TeXDict begin 25 24 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(4,)g(2025)p │ │ │ │ +2662 100 V 1157 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 │ │ │ │ ├── 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 February 29, 2024 │ │ │ │ │ + 2 InpMtx : DRAFT October 4, 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 February 29, 2024 3 │ │ │ │ │ + InpMtx : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 4 InpMtx : DRAFT October 4, 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 February 29, 2024 5 │ │ │ │ │ + InpMtx : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 6 InpMtx : DRAFT October 4, 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 February 29, 2024 7 │ │ │ │ │ + InpMtx : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 8 InpMtx : DRAFT October 4, 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 February 29, 2024 9 │ │ │ │ │ + InpMtx : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 10 InpMtx : DRAFT October 4, 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 February 29, 2024 11 │ │ │ │ │ + InpMtx : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 12 InpMtx : DRAFT October 4, 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 February 29, 2024 13 │ │ │ │ │ + InpMtx : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 14 InpMtx : DRAFT October 4, 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 February 29, 2024 15 │ │ │ │ │ + InpMtx : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 16 InpMtx : DRAFT October 4, 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 February 29, 2024 17 │ │ │ │ │ + InpMtx : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 18 InpMtx : DRAFT October 4, 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 February 29, 2024 19 │ │ │ │ │ + InpMtx : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 20 InpMtx : DRAFT October 4, 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 February 29, 2024 21 │ │ │ │ │ + InpMtx : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 22 InpMtx : DRAFT October 4, 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 February 29, 2024 23 │ │ │ │ │ + InpMtx : DRAFT October 4, 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 February 29, 2024 25 │ │ │ │ │ + InpMtx : DRAFT October 4, 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 │ │ │ │ @@ -7,15 +7,15 @@ │ │ │ │ %%BoundingBox: 0 0 612 792 │ │ │ │ %%DocumentFonts: CMR17 CMBX12 CMR12 CMR8 CMR6 CMR9 CMBX10 CMR10 CMTT10 │ │ │ │ %%DocumentPaperSizes: Letter │ │ │ │ %%EndComments │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o LinSol.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2024.02.29:1858 │ │ │ │ +%DVIPSSource: TeX output 2025.10.04:1734 │ │ │ │ %%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 │ │ │ │ @@ -3431,20 +3431,20 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 50 /two put │ │ │ │ dup 52 /four put │ │ │ │ -dup 57 /nine put │ │ │ │ +dup 53 /five put │ │ │ │ dup 65 /A put │ │ │ │ dup 66 /B put │ │ │ │ dup 67 /C put │ │ │ │ -dup 70 /F put │ │ │ │ dup 71 /G put │ │ │ │ +dup 79 /O put │ │ │ │ dup 80 /P put │ │ │ │ dup 82 /R put │ │ │ │ dup 83 /S put │ │ │ │ dup 97 /a put │ │ │ │ dup 98 /b put │ │ │ │ dup 99 /c put │ │ │ │ dup 100 /d put │ │ │ │ @@ -3458,15 +3458,14 @@ │ │ │ │ dup 111 /o put │ │ │ │ dup 112 /p put │ │ │ │ dup 114 /r put │ │ │ │ dup 115 /s put │ │ │ │ dup 116 /t put │ │ │ │ dup 117 /u put │ │ │ │ dup 118 /v put │ │ │ │ -dup 121 /y put │ │ │ │ dup 122 /z put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA │ │ │ │ 0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 │ │ │ │ 51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 │ │ │ │ @@ -3637,199 +3636,193 @@ │ │ │ │ 7F4E88E917F0FFDCE68F22998AC0AF2A60A73258C3A4BBC42A2F918123128195 │ │ │ │ 196D0E150D79AC3CF4628503D1F3FC528265ED8324E56849A47B3B07C29940B9 │ │ │ │ 1BC270071E221D355EA51E9942D3BD7F99816304FFFC8F5B036C953B38759341 │ │ │ │ ED5D7B9C8E6B70C409DD8362FD291201CC385E4A98D73E8518A4C0E544152563 │ │ │ │ 82032FBD2FCB6E403D34B85ED4053A8CB619BDD4DE001F4C3007B1F317579651 │ │ │ │ E6D6662189CC2D95AB85D7473F65C5D7B4AC63B0FE928F3400035D5A9D443D0D │ │ │ │ F3532B99F3AC26CB25EA3CD64C341159061E02EFBC7C033C05CD919BBD827A6A │ │ │ │ -BFCF3BD739E32E7FE909AEE068D50FAC33605FFF98C7D0115FB860178FD03DB9 │ │ │ │ -7985B78E0AC21F2EA065FA841F5928FB85163B2E2D8F850DC7EE313912C45C28 │ │ │ │ -2783F6762C67882EFEDDC7E7567F91C16B16FD8D5A1ABF35B5586307701B91AD │ │ │ │ -54984598F2AD46FEE3D68A2731BEAA754C8E730FE0E84952EF77930E4118F8D7 │ │ │ │ -2F3AD7547BA1B44C698428BA878986BAD1DA8368E8F5B3774FCBE3C72540A92C │ │ │ │ -7BA6298D386975A4FE6B5612A807D5C03EE4582DBD9DD9BF6A01C6C70A9A765A │ │ │ │ -38D20AB1B02DA94DEF94BF1A2CD76923DACC5566750775CD474EAA165C02262F │ │ │ │ -2A896898A8F67CBCBCE53648ABE9CC1CAC420AAD2B48D9054F2A27FDA27BF115 │ │ │ │ -23732B2C0353E3035E724B186BBDB27C03905EF40F67F69E3F63A93FBEBCA436 │ │ │ │ -7803AEC143D8163B0686A713DDA163148F362FA5348389E0F834ABD204D14CB7 │ │ │ │ -AB6DFBFF780676E89ED96284B58545408904AD53098EE76659405336A5207814 │ │ │ │ -3FC60F431CFAB56AE03ED36E18D5B577B68431D905734282B590DB1CC6353A26 │ │ │ │ -58BE5C97A55E92ADDCD8D653EB41C38D55CE9E13F294A872DDEC30183118927E │ │ │ │ -5A666B87BFF4B6C1FC47420CF7F5F09CD664C837EB47F8ABB08D781F4FCAB771 │ │ │ │ -E7AE53830444ACC1584CD67F313CC24C00540D736CE272A7016AF0A8EDB799EB │ │ │ │ -77ABDEA80A2CC522B44993241F06F3887EF21BBD5D3E1807DACB8D485529C366 │ │ │ │ -A53FC7B59D3CDA9C921585F929D7526787D6D39F85551DE939943DE368D6A114 │ │ │ │ -BC1ED21FB4AEBB953CACE8A4F4FE64F2DBC1369A665D1602EE6E6720B3DA5408 │ │ │ │ -3726CAA187FFB3C368307E30983A1EF8824D89ED0D01DDA273F000F765D1CB76 │ │ │ │ -8109B93792042866CB133952447D357C59D38C119A6C2FD835945A2832FB599D │ │ │ │ -CF7CB9AD6CA22B3F68C4AF9C0391155341E610A2CDC87600E0E4AEA57F6E9C9F │ │ │ │ -FB73DA4160C34EC15D23F86393175D9392E93A45B7D68B1F9F1B0B946F40C9D5 │ │ │ │ -B57F7B19AF72A0DB797BEA31FE8815ED980D523D83DFE7D1CF1FCC18F2D9E479 │ │ │ │ -5E984D6C0C62981CD54BC145C0891D068E596DC52D6B9FEF47B67F76A10B6C3D │ │ │ │ -68D888EB97B155BF9F75828E76747BECD1AAA873BFF74B51AD7CCB58C1AD88A2 │ │ │ │ -44E2779B754F316773EECA16065769F8AB7695B34C84F9F81835A519871556D5 │ │ │ │ -54F29AF9F9E06C2A78C1CF803AC5660ACC4B8A82EA6D70D18F9949AF4FF1E352 │ │ │ │ -1249BDCA46F5577C82B57B8F720D3D0D80C8951C095B95CA45A012B4C74EFCFB │ │ │ │ -B246E488E7F851EC7ED9AED7D76062C3A9BF63633A5F63C1609BF3061F0B02F0 │ │ │ │ -3C0CD7781B4461A3836EE122721E378E9817F5A5A8E863A323EE7B7D776BC78E │ │ │ │ -58A07432300E8B1C2B3A4974607143655F86D7AF6CC54552FCF562354949D43E │ │ │ │ -2B67D3D4DEA02A7C80A30117812C69731A5C52835AF9EC1673BD4D7F283E77B7 │ │ │ │ -F396F2998EBD6C097D7394F0D25386B788690C6E8EFE2CA3C29013B4C1CB1883 │ │ │ │ -2202B9BDD497302C9DDA5C080F5F0B405108985E93FB662DE82FB0604BC18E40 │ │ │ │ -B53EA86FA49C7BEDD5429A8F3D3D36340BF02F5F04252152C751CC337DB83081 │ │ │ │ -46274BE0C8A28EFE5795906916E8CE5B6F2D95B7466D53F7020E3E8832BAA635 │ │ │ │ -ED3FDFADE2AD942D782FBCE917527E237FA0042A81DDD5102B9E70B8F2B39EE9 │ │ │ │ -860291B6ADE7E64CF0F4B773EC93F703A3C1C07FD46AA329D1CA66C9E94C7645 │ │ │ │ -3243A39B8FC7BAEE8FF4CF8D4FB7824FBF8CA849B4B2128CF57FCFAA2F0616D6 │ │ │ │ -0D60ED37893D3ED71D2FA6E72094EB8C0EFA557BCAE4BF1D8954D0F7971AF4BE │ │ │ │ -50508418EA997FD536EF1B0F54D6C15A8B28BE162717CB62DFA6723463E675E2 │ │ │ │ -E6D1B2C16F0844DD2E9FEBC77806769993EE501BD432C97496E5AED2AFFF3C96 │ │ │ │ -1216F5792022333F1292C40A9A9C5B45900573A75E1D33AF986C6B26A2B405FD │ │ │ │ -2644831040B336E87C91C051E696D3D84516515FC8170865A14A6C069363775D │ │ │ │ -B24AAFC8A3304726F819A11E5A5179BF24360D4D33255302227CE568D2B8953E │ │ │ │ -00E3309342340AFD6BBCD9540A95F65040432EBEF54F414C2AA939CFDF5574EA │ │ │ │ -DCFE9457E7E89F97DE55934CB44AA8759CD64968FBFC7DB81329625FD379C260 │ │ │ │ -EF2A409600C71DBFC10AFFBCEF2AB339877382AE3A6184AFA51277606792C3B6 │ │ │ │ -9A108CE0AC8CC26457C3C1E6F0375AC73BAD2A3BAD1C64EA88117B93A9B08BE3 │ │ │ │ -A943337996E9FB13C1905F475981C2A8727F07A7C58179C3ABB12643A7182A8B │ │ │ │ -49588E5EF3ACC311A98934CDFCE1F3CB0E78632DF9AE2B44C9C502D69C0EA4B4 │ │ │ │ -0C64EEC73909F685A91E671582CBB7AFE41017EA66B309F6B552E4C16EE9D6B1 │ │ │ │ -72B1E826613F42380E0E46E7519F37CBCA0788801B1BD8963228B6A44E33DF35 │ │ │ │ -640BB28F16FBA35294437890484E439DDDD311FD329D100C1C205764826DA41F │ │ │ │ -4C2CD1451D7ADBFC7CA01D7175031D0EF6EBD4C0E294BF7A5873348929429C1B │ │ │ │ -B8B8CE90F6682BCA8DB31E047350ACE63C9F56F35049DFFDDF8E119693E4744B │ │ │ │ -7044929960F6236DF3628110F7C50D005EC22F98D96D4314EB01C95D9D1E0D64 │ │ │ │ -5EC1167969BCDDEB4746B97FEAA949ADA75842B8EF7A4B48BC0780A41CB40D83 │ │ │ │ -933852CEAE18D0E03769A5C00508D1F17477AD7234D2B475DAA8408598436C2F │ │ │ │ -3D5A3E1C3CAEEF9DB9966B46550CE79826E51039759B10F4BAFA03D78F9406B2 │ │ │ │ -F6FF3AEF4816CDF97F0BFBECF6B0AFE2965BFC33DF5B943CC25B4140F662306A │ │ │ │ -CF7809231A7E8E9AA8DE2A63AD65155CD2ED8CBB51C1089A3CB36ABE249FBEBF │ │ │ │ -091401EC1C9F12FB9F010E4C93C08FCDA03BBF9A90E7E820D8324F15AFCB300A │ │ │ │ -EE951E269CF7439E19A91B104527682A773755EAB1FC758E583B3514B32D031C │ │ │ │ -099093FB35EA36BCF7374A030F5F0ECDBD4F2934679FC4DC21F8C5DD9865AC7E │ │ │ │ -542E196919484F70A3CB87D25B11FD3E072850D4E6ABBFC5BAA4A917BD369222 │ │ │ │ -EBEB1CA500DBE8B0C5AB4C11E3D8A733D7B5894F6724470CAFBF829DE9DB4382 │ │ │ │ -BCE8160F5E926FBE65D0E112A48764AEA601873AF6071A67E926BCF992A1B667 │ │ │ │ -AD5341B02E45BEC6C148E5B1F081E90796ADEBC7E08DB055D7869E3B3EC5A0C9 │ │ │ │ -28ADE855C73BD8D0F8D564233B15DEE07B7E602B71EFF8645D47F2AAB6E43253 │ │ │ │ -15632DA38D7C68B0FA70DDC75CD76969E587E5B14E5D4BE90AFB9F680FE45F9A │ │ │ │ -820104653311E769F42B6D277CD562743BC85CFBCF057B2EDADBC271A9C4C9CF │ │ │ │ -F762D4A57F946A51DBE987E222DFB226F224A8394DD6B58C394260A234C2DEE8 │ │ │ │ -86D35BF66CCA33D445E4B2F51A81433452A69A6CEAE10AB596846EEECE0C183A │ │ │ │ -13A033C5A0C26165FD6845BDD038EC5C45EEE23640D7814392B1F88DEC9A98B3 │ │ │ │ -FEB989998FD93C64571D934822ED445F59EDD1384DA97D872FC9B643C3BCF9B3 │ │ │ │ -EAF637D4C2D5D1E459EB27ED048F4D811E73B5544A806CAE2D532217101C1E5F │ │ │ │ -BC252FB73D439777D623CBB4B57ACA980184A9366A7757021DF5561A17141233 │ │ │ │ -90CC1BA29A6EAAB05386F03F7927114EBB042AC8580F1EA54EFFFA333781112A │ │ │ │ -7A1F198A3BF8A1FD0F895372C011246059492457F1B08767CCAF88CBCBD303D6 │ │ │ │ -E4C3851F166BEBD987A14E432166170567B81D255990272EC43B5CEAF7413737 │ │ │ │ -360DD21C6D96ABDE3B272C862C6C534DD0D8A91CC0BE3141083816EE83558B82 │ │ │ │ -0CA6087F8861789A99C64E7CFC43A282A9BB13E4A104BB29D44926DE620C4C92 │ │ │ │ -77D3637B745712E06B1CE099DCC34D90EC75916899ED950395817472F5C6956D │ │ │ │ -9F3A4F73A4D2059DC827CCBDC7B8E4383EF0468E008A59FA8CFD172B828C1778 │ │ │ │ -C8CDCD7ED92464158AAE19293A3CFEB217D5F470FE42CA3FE949C5C96860EAEB │ │ │ │ -E1DA5DF95D9FD0C3EAF78CCDDB7110563B9D85DD1421A335B1090290E38A0A20 │ │ │ │ -A59EB316DB8182D47957AD00A797233249164FFE3B3A960D601F571637BC0E67 │ │ │ │ -355308230A407EEB66561575EF00119D32B10E4DAFE513CCBC0B86A0F6D710CE │ │ │ │ -FA664E8AD50CC5F76F4AE916D734098662322D0294C5BC061981A36B69C0194B │ │ │ │ -B85C3C96C39E20D916BB8B7D81AA965317127C4BDD1853A1E6B08591D9D39EEA │ │ │ │ -1E9CE7D32E0BEED704259B92D7902EBFE53504F2B08A8087E95F81E1A84146E9 │ │ │ │ -D8DF3E73393046DA77176A59BA7084BEEC140081EFC1A449961987B0683B1C05 │ │ │ │ -49AB4FE7A8E058DC4A9BA784E4840F2641851410B9DE2A8F4B7DD0B6988A3B78 │ │ │ │ -5C2B58D1655098446B277101A78930193867AC5D099085BF4741E9718149E0A1 │ │ │ │ -851A3C7817FAEAF94953FD856F52A4EFE3C0FF7BE1C02F8EE5C2B790F5C54BAF │ │ │ │ -DE27F59F27B929AD869CD3FB5DBC1103123F6B825324F6B4BA79F784E67E676C │ │ │ │ -5639E928204B26A9D3974BEE0EDCFC2DCF699ED4A76EB3235C64920333B2341E │ │ │ │ -6B2F3BFA95CF70EA3D41B4525C7182EE80DB501A8EE1FE2269357E6EBAC7B090 │ │ │ │ -869216252C5C6726BC46B140EF2E3B4447B2FC58BD55E15E9D453F8B153667B6 │ │ │ │ -B70E0A457FA45300C8326461EA7F206C39D9982BF0FB127C84172243003A477D │ │ │ │ -436A88BB881AD22722624B22197E33E1584032FE8A899BAF6A3EB9CFE4655E9B │ │ │ │ -928081E3F308A36D271DD0A60B15665728C1165754738A29E6D7B86E85A19880 │ │ │ │ -C1183ACE12084139BA3EB7D66D548F5A9DF3CF26BC03C3C1869729AA4C520773 │ │ │ │ -D771E2807B07049EA6DE942A798E19BA3BED62B5FE308EA8E6541F16343F039A │ │ │ │ -D6DBD13AF8C618A82311B48B8E36169F42B03D86F9BFB8222C5985C77216D512 │ │ │ │ -811A5C0AA92B25E63342F39B386EB7006D106A35277CF6824160DA59B6EC8889 │ │ │ │ -8352091EC5844CD9434ECB4CBE10346136059FD002B173F98EAEB2E10CA396FA │ │ │ │ -EC573AA9BE3E1B6BFDB92086F412EB9CF156EC0DCD19C3F1842AAE07F9DA4F25 │ │ │ │ -FAB10ED65A794449B2398BE1757AEEA9B278BFAA20D6053846E5EE1AD1B4E0E1 │ │ │ │ -E45CEECF6F86D33B2F33652E9A7972F0FDEA43EC10EE03EAD16B25069C45A0D9 │ │ │ │ -DDE9F768690B2723A52F8540344463BA1D9824270BC0FF81AA1D5B1E07407CCC │ │ │ │ -B0C8FAF60F671276061F9357A6D7E1FA79D4641D54CBFC2FD18370CCB08A1831 │ │ │ │ -D7D60196E6F1A55907FDC3891FA399F54702C440F70482D2F0A5C1E3C124865E │ │ │ │ -E3A72AC6347B4643357D0D395E15943D0A90520F19A6518E025F55E63DACE9F6 │ │ │ │ -7B26CE75528015CDDFAA3A3A5B5FE6AD471FC383975D56B7E2EE7B6EE38471DC │ │ │ │ -31FF1CA66FE7D9E96F2E523B3F7D7E50889F76FD51D8C8DE783FA51D0C5CF784 │ │ │ │ -C16AF1A0632F6A7B04E36921298C6D7FEAE7A8BBE17805CFE6D9525654E6F772 │ │ │ │ -70C342505EB47EBA18EAAED6A98B46E1F893E18D6643ACECCB368132B2C1F8F7 │ │ │ │ -380F82B23AB4CD848BBE7593D40E4450CE0507B94A4A9DAA4A3F16B03B8AC93D │ │ │ │ -3B33F2F16AA297C871A0EA8F1E3520955A77C0150E8065C002EE8F693317F171 │ │ │ │ -356A15516848348681AA246047CA296DD073CA0BD19612C3588659E5F15E0A24 │ │ │ │ -E05AD8CAE93446774630225F49246A8469A45F0C2D0142B9522A8839060CEEF0 │ │ │ │ -ED55932C27E050CFF858F758875D6B1C8349011C138C587B8BF5C776E862599F │ │ │ │ -D5AACEDD64161727A9F87E6F4BA0808D944F924CB25F13244C4F3F7A362FB924 │ │ │ │ -39ED73476A91463637939FE857D4A89722012A6EA10D9C8D74BCFDC52E3EA8CC │ │ │ │ -C493CD61F8CA48E1ED7AFA2EAD8D246C8D6CF2102D7C1885D4AA904173744206 │ │ │ │ -ADADDDD3465C4508B6E19AA9EB1109C632B5FFF086A40559875C7893F5148744 │ │ │ │ -15E1C1C1CF886FFFD6B13C3310BD269373B4FA8B80923A4BAEA63D9AC5509E4D │ │ │ │ -AEC9A3D28BD9803FFFE6D20851061F6EB15B4F8893CB8B984AB152075D1E8F07 │ │ │ │ -CA43F6F68DA0E3DD762209886A7FD1EC1CE95747F4C49F9A6049A5819D1EEF7C │ │ │ │ -ADD2D6AFFD6941E25BF9CA6DB07E7030928715720190C6CC0982503128E259A3 │ │ │ │ -9ACCD519F31C9A0914A88087BF3BB4828EE94E97B9C03F97B4688C985EC8D86B │ │ │ │ -DF75A58F3A8AB102B79C927251CAF68C3641B989D6E5E4D09B2413F02DAE0CB3 │ │ │ │ -DA7F2386A0D44DCA17B2E02B65CB5580B0B7730B4165C039933ABA8D96D9BBCF │ │ │ │ -221D60F979D78CE07E7F72134794B941757AB7A167E3AB9FDB522AD75EBABAD7 │ │ │ │ -77995E0934FC8060F5E5CB48C72E8C539CA5C747724A76B9A40C4ADCB4515656 │ │ │ │ -E254D0B8B08CE22175F899A696850422628E913B4A69BB7E45F3EA184D556788 │ │ │ │ -FD3D7A22D3174F50BA9BDD9B335B78219A83760E4044F36A2665785AFFFECAD8 │ │ │ │ -DF0F80312ACC7651D3DA592D26EF2871ACBCAD9141CE949BDCFDCFF878DA9833 │ │ │ │ -8CA7B9A3F5097CA6706DC89BDC92A6031240CA07D06720A8D46F09D7FACF3790 │ │ │ │ -64507D47E045031962B43AD2B7B6A25A478B514ECCD3A9776D0289A68F4399D9 │ │ │ │ -8514597C4F47BC89CD9BC5D39E3EBEAC25633FB74E0482EC939437CF159FEA56 │ │ │ │ -74D26BC0ACF92A4732F6103A92165F932FBA60C3CC1DC717A694F0840E84CD7C │ │ │ │ -4CA6967A44D8B5E0939E2D6518246E02F67592592EBDAD0721E59BC977952E2C │ │ │ │ -B01C48FD9DC39FAA508EB75151339A59C303A8902D2F1BC2084E698ABF579FA7 │ │ │ │ -879CD224BD2B3BD42B3DE0366CCD239CC956A8E264439ADFDA5B3E2F1CEF4878 │ │ │ │ -04EFCABBA6CD7BED0B9DF3659153D6874F9EF1EB69F6C9D871259544B225D4C2 │ │ │ │ -B5C85773E493DD4F08969928D9B783ED62D5621DFDABE4A2D0EC50174BD5FB26 │ │ │ │ -E92884BCA90E569A538779F2D06DD94235BB0CC25029F07683FB9041B4A88B49 │ │ │ │ -E4F98AA1480EF17E83971A64BF8085DA3583BB5109E1668A243ED077CC37E889 │ │ │ │ -65C7A66DE22FC1FC8C4F06F30FBF6B13B101A3A913E8F1EE2E56564E5863DD25 │ │ │ │ -94577C7D2C45D1749FE82EACA6E5FCBCB8136B53161CF0D38FA370C73E93C0E9 │ │ │ │ -1A35AB580980A759DBE00A23EAE49206ADBBDB7FAC81C77F814B1E4739187FD3 │ │ │ │ -0ED5D8A68D739727709235E2D48A3A6FD07BEB66AB07EB57ACD218D092414786 │ │ │ │ -E36CCE92F0D03511062BA014F897804AB9838C0DBF7857DB2048B485D63F2A93 │ │ │ │ -674BBD7117C27B30FFDDABC0B4181008478B5A3AF143D03206181977275F23A5 │ │ │ │ -245DA9EFEA6D23FCDE9ED55BD1D319FBF1022F452D00E6C3F410D29900FBF83E │ │ │ │ -C70E0F19854004267DBBE901E9662AA135B08896A6A0A29DA1A054BB89C1175F │ │ │ │ -3DAA0528ABB653302CF52957B576242593993B3F399085F6A76F73E7A8946439 │ │ │ │ -1E82DC9A883CA0FE1F2862EE4BF5EA1B68C00136DAD18C422A119E8C6BB4D1F2 │ │ │ │ -74EA5A044B67F92DA00003B21BDC6A426523529F42E62013EA062FC74C3EF90E │ │ │ │ -BC158393C3B4ED4B7F5123BAA9B8B3C7AB5A9A7A15FCB3284B6DEBA3DAAF0C0D │ │ │ │ -561DFE190663A5AAB9F83C49483761AF8A43055ADCE0A5B2514AEBD47CA0231A │ │ │ │ -4A13D610407ECA1C498EFAA59712553D1DAA72DA6A04C28C460D3409665005A8 │ │ │ │ -50568D9EBC02EA96BC64436EE3EA2D1E75A50F0425729410402E906F0D666517 │ │ │ │ -FDA123225F752130EFF09A11B12799D73ED722B8E1C44C1F7C8DD8A7CEFC1293 │ │ │ │ -475DFAB576F30C733FC2ED1418657AC9538436BED27E6818A41C60940E672CBD │ │ │ │ -E432FD1DA504648996CDD443E6A5CDCC5F393396E6284A1DA856E4E8CABF6DC7 │ │ │ │ -B67D4DC2566B3D3534460CF6F6D62C1623A0B3FCC75E1AC8CE8CD5591AB2CD08 │ │ │ │ -DAC41CFB2AD4E89CB666799895F44BC41A0D7A64F6A7ADA1619A0887FBFAC897 │ │ │ │ -20BE0C02B7184F2407A8F55961E1E9C09334391446F7EF88C180A9707903863E │ │ │ │ -0B58AC25764BB36C9EF411B3F97CD51ED0FBBC0EBE85F2F7515A784BF352C862 │ │ │ │ -06934EE4D8C8EEEB4FD6EF82405E0FCCC97A4AC6FA4A1CEBCDB9E5E4D63928B7 │ │ │ │ -EEE059A68D27F10E15986AAF2E50F34E3AE194B95FFC33D492C4C33CE39035EF │ │ │ │ -A8C488193C42A9F61EFBC28A1DA9650B5AB97928718C934578E973F410A31392 │ │ │ │ -D0716A117EEEB61231911175E36A05BF3308CDA0F89C7C12FD1E4B83037AA402 │ │ │ │ -0826A62A3D596EB1FBA61133F9139450CED02753FC1A7D4223BD68568D74B014 │ │ │ │ -2F5AE3617E5CF7662FA3604928CBC3C8D3E1144F1E236E234E3FAD6F16D21709 │ │ │ │ -F4BEA7855F2119D44DAFB4DF9755A842F72672A7977A8295C450538258F68729 │ │ │ │ -50B94DB13C15F3A72F7174038B84407E54C5D8BDF3F6C77D8E25BC72C4E66FFB │ │ │ │ -717D06057F9AB95101B2B815CD08C0F13216AE8CA87188E0DD64076D116A51AA │ │ │ │ -1B29FEBFEB5FF854EA1587B89343A4B507924E467A08BD8FEEC2CECDC79E5B37 │ │ │ │ -EF03F84B092D49F733F7CF5198D51C0E11FD587F0B4B72BE01AD52EF3977CAC4 │ │ │ │ -FD775266DC │ │ │ │ +B36258037B5F0DF7D78C26C1D24931A18A2606939F9933100C723ED2FD991F4C │ │ │ │ +98CCB4F15E381B4886FE0E928D4989A0257051C547165291D35FA5BCF359E153 │ │ │ │ +7EF69FEC09DBE6A9E866BAE054F56E86CA2D299F8DCB88685B932117314A73CB │ │ │ │ +5954C6D639CEB6F8A0A1F4D9414F1CA7CF3DEDEE81F75D8B5CEB205425442B32 │ │ │ │ +8703A8A79A51613E3E6A46C9B7B1052C0A5491130E312ED3A0A2F32C5D52B15F │ │ │ │ +9621BA9E1688463FEA43F72D5FDB6E8D0739003C1D8A04E1589A7FD3F405364F │ │ │ │ +CD0677FB7EADC0D62CB762350689F751F19E6389284C97A5163CAD892E9A7043 │ │ │ │ +AFEC5A36E7D86F5EE345576F3AE6927C6F5B2A095817E7796AB8CE8D804ABD10 │ │ │ │ +1E55279D43DB0A8AA34C2C7FB2165C3BBCE87A453BAE55F39C5E29D5D4B2A6EB │ │ │ │ +EB45A7BEB16C72CD52870BA9A94A9884D94956A14048820F57EB1B5A8B90D309 │ │ │ │ +143B0BCEECE106E038E9D4C7C557EF67ABF2794970B8CBF7DE1866DCD4EFC87D │ │ │ │ +CE1135B0B2D86BC9947BF48478CCCB8CB606B00EE99BE47A157FF1AFDDBB6FE3 │ │ │ │ +925FC35D965EE4B0C3853422926D812D873D3E2DE83040B16BFFBB5479411127 │ │ │ │ +963771F38CB46367E6CFFABB63979A663D3BC05776171072B0FD91600A5DBAE9 │ │ │ │ +399D64C1C46C2CED1E365E3847C4F7C1F8827C661D5EA0B0884C447A0E7652F4 │ │ │ │ +2B0E3DFD9915D59A9FF39B8790CABC6762A58717FA6A4AB297FF809B4810671F │ │ │ │ +B50BCC1EB9DA77F3DE919CE7FD7A1B855CC4FBEF6C3F785A43A6977779F3CC9B │ │ │ │ +E592D073A542DE0863E030912121B351179C691509777C3EEE62523A5788C3B5 │ │ │ │ +48E6EAEB79E2F4E9003B31D423D3B298DE0AD603F881067E30A90713DCCE9E48 │ │ │ │ +1B0FEBD02D5EDEECC71B1F68DD74740C644540E6E4E34B249EE2363A9AD3E268 │ │ │ │ +FC1B86D681EB6E9884DD91E94603C2132966F6AD3D1B692ECEE3DC5CF2A34161 │ │ │ │ +C80F4C6F18B30089028C61B9EB4341F403299AEFB1DB859B12DA13AD19935A7D │ │ │ │ +B7BDE6F22501639845C79D88C5F26E8EBC016257E8F47EB130E7611343BB913B │ │ │ │ +324751D575111BA0055889E66FCF2CE87A00CD239388B1F98720DB177005BD4D │ │ │ │ +E5FB7AC1B2606C72B08425F29471B1480301E7325A06C7E3448DF5F277D9576D │ │ │ │ +95D0B280DB334F7726914CEFAFB1F26E47F1B8BE443DB028606EEF5377CFF52A │ │ │ │ +21156BE6208649238154B1D70B78ED9A2558B59B5570D8854D8192B3980F2921 │ │ │ │ +59F8A1A9FC646F2F5009B28FD8CFFD4CFD6DD0E58FF75CCC8291B92DD0FE9690 │ │ │ │ +98306900930B71E10C86E51026ED1FBE4BF72A7DEAE6D6B34D5B50FBF3366BE6 │ │ │ │ +391268C1CEC091B3E1FA008A2ED505F1DD51A7F9D0237E0384072D2937CE444A │ │ │ │ +163B2356D77DBDF092B8622745DEDCA532030699DA92EED1FF1D4003B1801CB1 │ │ │ │ +F44F38EE68361AC39806AC859582408DD5B4E17ADF9554A12C8A3369A000207E │ │ │ │ +F4928AE3F152AE4553EBFD3DD59B10061204DE31A05C4D4E05D8FE11B729E7AD │ │ │ │ +3FA8EB34060B6F134EFFC118938E73B599A19B5FCCDF4C3205DB72BB08EC68B2 │ │ │ │ +5C5A95FABA806E8F747FB4CA9C654CAF924D2D9B1BB220E2715DE1EE266D3F10 │ │ │ │ +9EA5383E8A6A8547A986C2806B489E3481EE54E4F2A371ADE09900EB3807A91C │ │ │ │ +7EE37E3A0D142228B8D6A4733B67EA040E0BA9908D3D41D3961297C1A53FD15D │ │ │ │ +B29462ECC7BC60F3FBA6ABAAED5864DC7FD829CB27162E19B7F6B62214A49F0F │ │ │ │ +190B12F5D272D1C4B0410F9D72AAF970A98A4959170DBB45D17C6166281583D9 │ │ │ │ +2AC6B9DB9D20E97D7E8D7FF38E2A80368B816DD63466451E4EDD506C6034459C │ │ │ │ +36A733152DF721F12E60175DCA243824C4F04B032D0FD251B7C585D8D1967BA9 │ │ │ │ +A1C234CB3D99A86004E37807120C1B11418E2FE12F2510F19C2CF9F84698D00B │ │ │ │ +C71D7CB1B37AC4A34F9FA28F32ABCA5C4CEE22146873B4F6CE3EAD022DD87340 │ │ │ │ +CA472A1E2256F10754CD005A908BEAA9AA68E8A6E4CE287F003BCFB8D6193B38 │ │ │ │ +15E8FE0CACCE2B99F534BAAD8BA08F626225A4601EA51C593C4DC37B72C5E2E2 │ │ │ │ +8BD25D4885BA4FA79804AFCB278FB21D3943F5644FEB7EB2C4124546A269D855 │ │ │ │ +AFA83142714382DD7E8540EB38CA6083401756B76081F268A1AA8D06B5B7C27E │ │ │ │ +D2CF56400C95387AAB1B1CD58E9BCA17CF3E5FC8E0833FD51018969EFECCFD20 │ │ │ │ +E8C2A6F8FA52C2884748D384E3CF489007DB88933403579979002CD64FEC8E3A │ │ │ │ +5577D4A9A6CB8865579F8343EAC8B3FFDAAE45E183A1CC5A99FD884DD681F71B │ │ │ │ +F289E6F9AB717D1316F4B069D4C6AB4B22F0D49FB2566C38159250849C7EE873 │ │ │ │ +E39C32B201ADA9670AD4DCC52A7D484AEE5656F7AFA6424C5C29A79B2D9245B3 │ │ │ │ +5D9C6764F15B4CFF64F3C5A476C885A36F747268FA6D2EC12B57FEFC9A4DE4A5 │ │ │ │ +A32B7F9E5E79823DA4170900873FC1B974AD99987CAD5179843281A617C6CC1B │ │ │ │ +D466F673E8EE878FFA2836A924628C5718BF30EECA613BD34F1AF173A4A1E966 │ │ │ │ +189BB75C2AD3CF5FEE5F36AFD2EAFE611E29A50DA30FBD76D81FCBEE7134120A │ │ │ │ +355DC71DD3CF30AB268A10036C8A5737F03BCE6C468C82B3499FDCFC23D43E75 │ │ │ │ +340E5EBCE8705174734B894979FA54A1C3A61AAED5E8E7F4CBA223233C394860 │ │ │ │ +AC40F218711AEE0E56FD297882465DF52B06850EE46CE8BAE5B51E67F2ADB142 │ │ │ │ +9C4D9350094D75A5BEEB912EE2347B75448C1057ADE029D4A1F54B9839C86932 │ │ │ │ +CBBC00A90D344034D0E20ACEC1DAEE2A367723CB9BD589CE3423D3A9BA57114C │ │ │ │ +03A046EF957E8602DF93D973DDCA8A0C81E1E465958736385E9389EF4E9A4E23 │ │ │ │ +8742E5B835E212D4421B839996594FDD045C2CE14003962465193B49E404709D │ │ │ │ +836E7ABF3F25604C99D1E0C03A75E0B27AF99B9088E41C1324993F53308B5647 │ │ │ │ +173EB0CA7EDBB00B60E26CADA9C470D44D2C58FA1D2CEA2127A5E4C97BE2B11C │ │ │ │ +B751F4F8FC4839C6707329328D10C96138A4C54C7BD572B7197C0C22E6CBA43A │ │ │ │ +14C0FC82B129D858B32E4EC25B04A4183FD4AD21300A6845610F0683ADEF1DB7 │ │ │ │ +B90DC4469F0FD1E762108C56546802BB2A507F10C323C00F47EB7E6CDFC9C7E3 │ │ │ │ +EF938914B44704E80C9E214FFFD6010A5D17F8B41D168356ABB4DA3E17028342 │ │ │ │ +592188181CC672798DE10F90475789CA319DFB8488AE016DA5006B6047694759 │ │ │ │ +857D39C9B8E941151543569F8F604AA75E05890B7A5A092CDC3F3D4EE22C8A72 │ │ │ │ +FCCD0C444043BCAE13D8BC6F2E252C55ED7BEC05D6BE9D21CE260ADD52B05ABD │ │ │ │ +41E0BA12118FFF2F97A1679EB4D6EEDB7F8A0859273306737124FF769330498A │ │ │ │ +5651C62DB4975F7BCA14E061942A144F237CEA3FC1C799A4BC068E54357F8FAB │ │ │ │ +0A5F262CDB04682D37F0CBA59A9AE4CFBFAB0B2EE3B8FB77139FD5D3993889F2 │ │ │ │ +47362597648BBAF81754FD9F35969496220E471AE66233406217053AEBFFD781 │ │ │ │ +DE8ACEDD3FC1227752156162F57D8836440360D66A870F0D76B602EC8F65197C │ │ │ │ +444E00165EED120651522C8392D046C3133264F2CE56CCDEFD77688CD1EAE572 │ │ │ │ +641B2640A5764D5C098D4D2D9FD601D7CCFFF03BF56DBE2F6C6F6C5C930437D1 │ │ │ │ +BB6C788EC92436059A1990A0DB13C2E333FE363F954A31D71DE9445F586DD8A8 │ │ │ │ +542DED4946D519F38F26BF4EF136FE6493E6B754114ED88C5747904C68DED467 │ │ │ │ +EE34985EBA06B476CAD0966A33B7A553299BF54FB578B6A1436765A7BB27B381 │ │ │ │ +A7B93AD56F78AD28BDACDAD841D00581F5692B93D36B6F57033783AAB108BA16 │ │ │ │ +6B1B0E9DD16FB586617C62274E11477CC305F6412E84EC0DA252036607FFECA8 │ │ │ │ +26BD2BAFBEE95AC0FF60CB3B6668B65C8B2AA5B31310BE1B16806303B9D2191E │ │ │ │ +D0931D84BA7875BA9443920F9C9868CC80DE7FB48E7ABA4D8ABDA554A247D61C │ │ │ │ +2C2CE9464DB4929DF2BD7C57FF8499A09693710CE6715784F4372CB6CFE3DFE4 │ │ │ │ +CB96F66B52C3B93DD6D5D63D965507119D3512CD400811D4D27A66EFD21C4BB7 │ │ │ │ +A0FC56E9093124E1D071F5CE4EFE9F7E8BD875E54D1228430A0AFB9227062E57 │ │ │ │ +8E15A61F0E3A3886AF6D5E199D35927640256B3112A94670DA1E234C076920C6 │ │ │ │ +B490BBDC5B86F88A3CB06AB395264B00570983491DBBECDE698E7370847AB287 │ │ │ │ +84C2D4EE0AA2DF5CDDE0C75EA3DCAB0890CEE0C800E2EC759D952DDA4CD54E76 │ │ │ │ +AB40C1A9CF853F1EE3E63DDD20F0183ABCF69D0AC6640D1D7D646D07DDF255E0 │ │ │ │ +DFC7B6ED1653DBB4A16DB61A7B06BBD319026CF4EC42DE2DFF46D341641D7C55 │ │ │ │ +B47BF005C7B58610FB8C1A166AB903DDF2A284431FBA6FBA761D01012499B2A8 │ │ │ │ +2F26AAE1D981256632A7D9D45A96B43C3A9E1CF83CEC8A13DFCB5897C5E8F695 │ │ │ │ +1E6871BDF4472542F4DF34C73B66076EA08B3D0ADAC31AE2CF076E0785F5A3A3 │ │ │ │ +165136F29D12AB9084CF430E2C5501A59FFC54B04282B71777870A124A645068 │ │ │ │ +8904BCD2AB2C58167617019BED0D77A0D1EE4D9CB3D22274CA72463529B2754C │ │ │ │ +A7E47F4E458D311B2F4FF77404B87BE8B31F3D891C22E0348C0D4113838C0E39 │ │ │ │ +50084B19EA17E8F513D0B6984C7482035D0046065B3803145EDED076AA1553CA │ │ │ │ +67CDF563E81233A69D43009400DFCB5325670AAD56B700E29D94DFB203E1DD9A │ │ │ │ +62867264F90484747EB6E2360210D290832A00ACBDC8E79320AB2E8868CAE74A │ │ │ │ +25BFA36E991B073216396BB1C0A9A0285615C492DBEA3E446DF5BE718E3BFEAF │ │ │ │ +740D40074A1E230CA4DA566387B917F4F7102B9B72D335776C2ECE513BFBC419 │ │ │ │ +603A068BCC55E91D2D0C3DB920E91330E1C4ECDFDFE5AFF49304E73E88372E2E │ │ │ │ +33C3B86B0367B0300CCAA8573249FCA15728134255226DF83A7833A1D56580D9 │ │ │ │ +9B36DA769268B89040BC170830A01F8487932A162C619A3049450C0C9B733ECA │ │ │ │ +ED6E2739C2D787908E41DA04696AB8C0BBFC2A8C38E2CEF113EE5CF1BF3C9F95 │ │ │ │ +3D5CB6AB7175B4F24B178454F4B1260B19D62D8D5A3E77826CB5EC5BC1509256 │ │ │ │ +6E447043A53B3C8A5816290B5B85380F6C6FF64F6B424139A1FBEABE66EDFEDA │ │ │ │ +E659828A072BAA0513B8708BBB58714D6A70BF63902452F8B84A3B39FF6DD573 │ │ │ │ +571A12EA6F04F5DFFA97FD9D9373247C8FC4E09180B7CE614663C0D16A0BBD94 │ │ │ │ +51AA21C76ADD393FDC54BBDD9B0EDDA58127121623D491FD9A6D96CD86432413 │ │ │ │ +EB16F9CED198A6ED81EE43DBE4A0134EBE3F1175454E457B60C92901E4AFAA59 │ │ │ │ +C140273ACC7F55D19BA3B69A0DB8A7716C3F33D8D5E0397A87B2BF33558FA539 │ │ │ │ +2F4ECAAE5478E57DE1F7E7F31FD0B91DA903F7159A6D279AFB32385C8DDFAA7F │ │ │ │ +4EBF9C7005C765CE18B055EBF2F7ADB01207AC89BB6163AB572412D4A3B19D24 │ │ │ │ +4441DFF4F5E8232FD2828371310A6A34D77FF090C7159D73F9B4D2F91740CECA │ │ │ │ +272303847F8D307E4C114276B8F5DAF29010D9A6F96FBF421ED59E7AEE64E0F1 │ │ │ │ +414560148239656DE28C5A425982DB43A14E2A21B4F27B82FAF50AF0D7139E6E │ │ │ │ +74A4C7D2C6034A70D2911B9C3B7909EA5779CBAB8F839CACBB3F81519C7777A3 │ │ │ │ +0F6F3FD3914C534A2483AB6C6FE869EBAF8874B07905A92AD016716558D48531 │ │ │ │ +3199D39EF436CBA30F8E1617CE0C95ED7EB5E3548029BAB0E08E6572447E4112 │ │ │ │ +8CB567E6E7CD5DDA0B4F7E077399C01CF72533442BB2E743268E753AA93F283F │ │ │ │ +59AEF54459A619F33F6556B16CAC8B2D1386F09675262B5359C6CCA4F18493B7 │ │ │ │ +0FD393929F8D847A7B30C6692D1A9702D512B04C68DB68D10727343FD2B6DEA1 │ │ │ │ +F698003CE5B33EBDDEA23538C7E96ECB6D4EA5F7F04518B2D97F38FCCC920277 │ │ │ │ +5B0C35459B3EC12DA0D4AF38278C6D6F3DD5428E68E42DD3FFF6F3BB8CB091B0 │ │ │ │ +972158B2CBCC874FA380B13A8C338109721AC547804265EDB4EAA9968B8F3CC4 │ │ │ │ +3C28FC05E2664F621F5038BDA37DC30B8D56D6DE027CD48833EDDD6E0378A1F7 │ │ │ │ +D1A2F444A68513F2ADA67A7592E4562C890F5DD852A366947EE395D012567D21 │ │ │ │ +2F2B6FF857799D0AE5A297BCFF532677586DFFE92319857E456D7BF6A827867C │ │ │ │ +E2BB8C93E57925D61D7BE0C2976EE9FD77F7060F960A158AB1051BDDEEE9C613 │ │ │ │ +13BC85AFD0A8BBCC9F6C53588AF7F8820B82808CDA0842456034DC19CD85C58C │ │ │ │ +961D1051106D130419460947A0C3F5C30CFD24CD2912DF26B70A9960319A2AA1 │ │ │ │ +7C61C60678BF6B10470814C128738621211EB7D34355BF762E947CA849C0BD34 │ │ │ │ +F0B22ABFAEDFD2D0CB1F559096E4644157A0EACF1625BDF902DB665E3ACEE415 │ │ │ │ +581C652A5F06424494B8CF4347281A51CC8D6D6FF3FEE73B2DC8EC766366651A │ │ │ │ +078749D37EB78BBB42D7A6D857EAD112A073327C5FEE0D1C59E7270597B1EC6B │ │ │ │ +98A93CEDF7AA258723AEBB3221ECD005B594F31697CC187A938209AD169126BE │ │ │ │ +4FDA7301B29ABE167EDD41EBA0E0E7C19990534D1808A42F2A94D9355ECCF637 │ │ │ │ +711C9A266C1763FD035E78FB5718394D93F3C9683F2F6715AD4DB2116138C98E │ │ │ │ +D29427F817A6F04CC77A5DCCB1680E8EF75729BB4BF7CD6F06462A6B41E56D68 │ │ │ │ +7A69FB1ED3A03FD17A48FD6FCFC2F9921E48EF65DC602E79937C491BD42BBC56 │ │ │ │ +FB1D9C4DAD140A66F5904D9FFC70457320DE818ABFEF92D9012C14B353BF34A9 │ │ │ │ +8D02322BBCD43F06AC0D9A6E9BE42121926D7F5FCCECC3C6C98C7A6B36940944 │ │ │ │ +6D0DF0368C939E9D5C81F5A85F42657C0F4EB8C4F37BA38A0122D82177830C3B │ │ │ │ +5B440D09A37E12847354DBF57F9343AC860AF6ADD63D2CD7A203550ADD2317BD │ │ │ │ +5A86F09E7149A167BFDB4FEF9C06F1E9707871FE22367EC450487838E5993DEC │ │ │ │ +DF4EE0558111CC77B15AB5A97D54FA628F15EB28C812A9732ED9608CDABBB8B7 │ │ │ │ +A1AEF2F8DF2122C1F6D55AC2C7D088F540CE58543710C029C9F143E208E1CBD2 │ │ │ │ +6A43F25266F9AFA482FDFA2E6CBB302E0F31E58E09B3825526290A16B79C4602 │ │ │ │ +CFA5EAE2D3118AF3712C446A5CB034813C36986073CCEBDCDE09B7A4245A6EA6 │ │ │ │ +44A77AB42E3E0974615EF82E72ED238E12297A405047896A8AAA8CF50F4D733A │ │ │ │ +4D5E33E4087FD0A874F9A39A447A020562B68FB640870CFD3542C5F4894478CA │ │ │ │ +E535259F720D72DDF0F6181BF245C512DE2CA672D2C35AE816C48D2A811EBD2C │ │ │ │ +252804FF20DF0CEC573A262C42AFBB7EFD20609E2288471C5D8B36A6817E0B1F │ │ │ │ +A3BE153A736CFEF20B31FDF0E5F04A353E16784D6351570E9EF9FD8DD562657B │ │ │ │ +5F481FA8E0B5B82D7A5329E2AF90ECD2A3E0234FE8091AD4A2A6AD3FB2171A91 │ │ │ │ +AC51151EF50EBA0DBC242C7B53E06429712488DDBDAD0ABFB84EBB9C0924DCBF │ │ │ │ +139F253CFCD7CA2A15954F72A2A18A06890BC841A03B4BA8F16FF4F50FCABBFE │ │ │ │ +106F754B697F5CF701A918CBC857341B55661189F7EB8082AB74371A64B3200C │ │ │ │ +E24EB05519DEA50F5C98D63EE10DC85E07D19FA99578C25AD584FB0321021E0B │ │ │ │ +B001EEAEEF5E57195EF39B93DBD80E232FEAA8D2893EC61A52A5AA38D3D348D7 │ │ │ │ +BBE3FF98B42668CC7B6BD641B9B9CE7ED55BD57779997FEE3E5B264B0B557916 │ │ │ │ +35C9C73C3898B014D9F0D62FA9D20F55666D0C135726B6CDB93B5EB8E65D54DA │ │ │ │ +EB91652EC0A156567DCD88ED5D3E01D4924883580A8441A3BE160B84ED462753 │ │ │ │ +BB33D1262D981A847D2F81C48879B01D118686C33641F1B9FD8DD7B984E3C60D │ │ │ │ +1CC33B2D29DBD460A19CFCC5177FCCA08361F7D63E5D6F5CE78FBC5B40369D06 │ │ │ │ +441E209442391EE160A2CADE5E8EFFA7604091A750A06A218BEEC21751662419 │ │ │ │ +779F69336F08C4D81CDC6EB47E811AE7DE44423B15EDD4F412253F871FA7EF42 │ │ │ │ +F8ECC7C25CCA2B80D761E84DA274F763BE67938EF154809B60E2E69C60E02F44 │ │ │ │ +E0A9B6BD952818B7E2461590A1640E9E3248B1921740A55FEE70EEBC2B175858 │ │ │ │ +81A13845639CD38B597BFFB82FFEEB8A9EB36FA84A8A359CC935E1A74DE34D61 │ │ │ │ +ADC095772081A7066E70DF96C169EB21B3CC265D04B4F4231CB5E4E083EC1D61 │ │ │ │ +57ACB771E99E444D2913CB2C9F6D90A11BC8F616A75FD3A49434092514487DE1 │ │ │ │ +30F4B1371A98D4362C3C8043E2C7992DED0C685277070A9A0214CC732B8521C3 │ │ │ │ +1337181ECEE82E9F3D21EB88BB05082BBE │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -4254,17 +4247,17 @@ │ │ │ │ 83.022 /CMR10 rf /Fd 138[53 37 38 39 2[48 53 4[27 4[53 │ │ │ │ 42 53 46 13[53 2[65 72 2[57 2[36 3[63 3[72 13[48 1[48 │ │ │ │ 49[{}20 83.022 /CMBX10 rf /Fe 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 /Ff 205[30 30 49[{}2 49.8132 /CMR6 rf /Fg 205[35 │ │ │ │ -35 49[{}2 66.4176 /CMR8 rf /Fh 133[43 51 2[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 8[77 64 2[70 69 73 7[49 4[49 1[49 1[49 3[27 44[{}33 │ │ │ │ +35 49[{}2 66.4176 /CMR8 rf /Fh 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 11[49 49 1[49 1[49 3[27 44[{}32 │ │ │ │ 99.6264 /CMR12 rf /Fi 172[90 2[110 121 2[97 6[106 69[{}5 │ │ │ │ 143.462 /CMBX12 rf /Fj 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 │ │ │ │ @@ -4281,16 +4274,16 @@ │ │ │ │ %%Page: 1 1 │ │ │ │ TeXDict begin 1 0 bop 1103 1879 a Fj(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 Fi(SPOOLES)g Fj(2.2)1052 │ │ │ │ 2635 y Fh(Clev)m(e)35 b(Ashcraft)699 2751 y(Bo)s(eing)e(Shared)g │ │ │ │ (Services)i(Group)1995 2715 y Fg(1)2483 2635 y Fh(P)m(eter)f(Sc)m │ │ │ │ (hartz)2342 2751 y(CSAR)f(Corp)s(oration)3162 2715 y │ │ │ │ -Fg(2)1566 3013 y Fh(F)-8 b(ebruary)33 b(29,)f(2024)104 │ │ │ │ -4919 y Ff(1)138 4951 y Fe(P)-6 b(.)35 b(O.)g(Bo)n(x)f(24346,)39 │ │ │ │ +Fg(2)1610 3013 y Fh(Octob)s(er)g(4,)f(2025)104 4919 y │ │ │ │ +Ff(1)138 4951 y Fe(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 Ff(2)138 5224 │ │ │ │ y Fe(28035)32 b(Doroth)n(y)e(Driv)n(e,)h(Agoura)g(Hills,)h(CA)e(91301.) │ │ │ │ ├── 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 │ │ │ │ │ - February 29, 2024 │ │ │ │ │ + October 4, 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 │ │ ├── ./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 2024.02.29:1858 │ │ │ │ +%DVIPSSource: TeX output 2025.10.04:1734 │ │ │ │ %%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 │ │ │ │ @@ -1515,23 +1515,23 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 50 /two put │ │ │ │ dup 52 /four put │ │ │ │ -dup 57 /nine put │ │ │ │ +dup 53 /five put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 70 /F put │ │ │ │ -dup 97 /a put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ +dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ -dup 117 /u put │ │ │ │ -dup 121 /y put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1705,95 +1705,85 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA647CD0E2539DFAD9604486DCCFA49 │ │ │ │ -AC96130D106A8F8387633622C3809400D6E8FF9D60877C743502E4D211CEBF62 │ │ │ │ -9A6F91045C22D5D20C5FF677D89983D02E5EE26C71A9EAE0E7C52465DA5A149A │ │ │ │ -9B731C27EC8366BC3E841C0CAE49A33DE164A857365B17B09CAD121C47A980CB │ │ │ │ -C75E1030F6C394EDB46C54B46880D2344127B903FB22684C9CAACE6053DC3BFA │ │ │ │ -4E47C565ECAF19C4295A11BD68CA6D45B5738B932BB3690A8C712904C49C1636 │ │ │ │ -A7702075F2FEA8DB3EB3A3C1216BB769DD0BAF4507A18E3052F2C846B0797933 │ │ │ │ -8CE9BB2DB5DFADAF1B0FC3A22BAB82A0D5D290F7AD950013CFA465BE11C1076D │ │ │ │ -5833FF92321FBF90D9229D3BA09DD18EEC44D9FCF8FCF63CC09D2977BFA798B6 │ │ │ │ -47FB047EA6AF69C7DE570176F5B6C0FED74DEDBF7DDF49550DD84BA14AC09423 │ │ │ │ -F70D5B14F0F8588F1E2FFE0DFE0760E77A9E39DEDAC5C5AE3760722C029B916D │ │ │ │ -96A2A7D1DD6A61F90B4B9806314A668EB7A0E107A3527310A240490453CC18D7 │ │ │ │ -3793B4CF3CE13EA332E7F5C2BACF85AC75FE84693B966BB0F6FB9A179A331C4E │ │ │ │ -55E9EF30E2734E44A88E053CD5E650D7E529E94CB7F8B733E68315ACAC5BEFC5 │ │ │ │ -3FE4F585F875310267865679AB381125C31E9AEB7226DC9F18DA80A9DE2F38A4 │ │ │ │ -51B8F9D5B2FBA0F50D53AE6212AFE41466A594F7A303B4E82F1493C0B8D65756 │ │ │ │ -BE6AF2931E5ADA5CE7D51CB5B1EC916C6C6D674808939331CA66F8181DD2B112 │ │ │ │ -1A12198CCCB6BBF1D40C803E794B65241ACE1E0D30CCA1C6F2D3E1415B98726B │ │ │ │ -9BA303BE2C4C276108CC78C093F1CC85CA454CC38535D1DEBFA341D84E8A5DDF │ │ │ │ -D53D8DD0F4A812B5BA63871BEB3BCE93FBC77AD395914E2CD757546C2BE2D641 │ │ │ │ -FDB12258E1E1D10E1B963EABB265F2C8B2547D48963E1AD3B223B666B46915A1 │ │ │ │ -157F5EA0AB8D8411C07AA2EB5D0EF1A1BA6D81C47473A3D3D6287104C7BF61F8 │ │ │ │ -3BDB64995DE96A65BF2B7288C51ADAA3D373A95C40D5240C5FF397551554AA9E │ │ │ │ -C89C7E45AA7738503CB058EF6AD5052CC78E4445C810C250BF25394B8D7DE82E │ │ │ │ -315C9CCD6E1E9150EC79EE0F354C668AE199C1AFF39C67337A86CB932E8D64E9 │ │ │ │ -389FF3CC08B538492DEED017686DBB9BDEA30FE67FB4EBDB3627C16FD15F243A │ │ │ │ -7FDEB310EFC940E57726E94340472F2C452815927ADE21578C959890216BE504 │ │ │ │ -225BE4B4D2E3B19F5E06B5A0B25AF168C3A2B26F599A829F89C16BD2026E8CC9 │ │ │ │ -8FB3CBB830C3E36C099071A70D0B8834FF2C17364EB50D5C71440CC7BFE02321 │ │ │ │ -8C6ECAC2F7EC1BE39077DB0E8B2B251626A71FD038EB2CF1FC254D98C1535CAA │ │ │ │ -A8C987BC266482BD860A333048E1EDB3DD40A6ECD6DA0088AD9B9640202D89AA │ │ │ │ -0BB9A0ADF63491E67F2E97E35942D77E59B9B8AB0ED28B022EE5CD3449FC5B7A │ │ │ │ -19E38845B488F97D155C4312885E29537EAE97719C65845663480CE79DE8F037 │ │ │ │ -68995C0928FE8AFBEE554F01381EE5187578DF5D2542F26F66A599EE8ECC1F68 │ │ │ │ -FBADF3C2BA968C3CEB86675CF9A6CFD736E1422800D270417D497903DE87F2AE │ │ │ │ -938E39E120E9D3079F512E545E0E2616B84E81FE41392184F96818A7C86BF541 │ │ │ │ -F2E67C48CA56DA838C9FA0FAD538073B9F26319140D1F80EEEBCA190DE660A31 │ │ │ │ -457CAC16E92F87449A3734F9EA751588514865B58DC073658C8A857B5398AAC7 │ │ │ │ -3DC11E069996EF74A3189A07630D5DB87C5E028CD193C086B4D0E8BABC4F2393 │ │ │ │ -235EC96091B16C4A6D97DA1BD30A2D2E71F55869223CA66AD12448B668685F6E │ │ │ │ -06E7888D7F20045C662C4F7994CC7E1CE9AAC33A026716AA0551DF12343F0E22 │ │ │ │ -6E9F4B21C90406CC4997601194EF37A973221D1F4D73DD5666BD297F621C92AA │ │ │ │ -E3F698BC1146ADE754C4120EDF5B3E974D75A237E51DB49D52CD6CC7C9E8BD2D │ │ │ │ -E6849DF8F4DBA86C655D0C57CB54836C8A841C1D814F6B493F96ADBFCAD78D3B │ │ │ │ -430C58EF169950851B6A0B46411488B1A6F6974832787A24C0CDDBE27996EFB1 │ │ │ │ -DB341FA34B1DC6238D978D1E1D34AF3FB375ED6DA9C88699F195C88A54622F7C │ │ │ │ -36DAFC663D85660E756733A7E22F20C6A5D91F06087CAD10F7217BD33F343DC6 │ │ │ │ -F5EB9F16FE763672243EE6AE5CB6063A1D64670E1C059DD52134974E27D9D89C │ │ │ │ -BC658FCD814F20703D610C978FDCD6E2AEA31C18D1A310F215B28199F66C87DB │ │ │ │ -3B23980A393E1DD77AFA3045EDB6942505F3CF6204315A14E5B6BF2E96F3BB1F │ │ │ │ -628D24AC1893BC7DAEF3AA63F2116837F31DB90D872CBD9E5C48BCDEE781D20D │ │ │ │ -C6553D2D15F4E8438A9D1C7CEE1B72BD6AA08DC0AFEAF8B4DC1038707EE4A1BF │ │ │ │ -3D84460E60AF90F55002C1D8EBF0700F7EC3EFC944BEA78D0E0536F3AA6D9A84 │ │ │ │ -604A781AC5ACFEB7E681365315EE11E991C03DA431B65B332AD8F83F6F3AE66C │ │ │ │ -1BF434D3793FB5BCC44E44ACFF2855C2770C4AC678C6ACD6EB071974ACF1AE37 │ │ │ │ -D02C1736C62CC205A2F3488448527EFFA379613A8E6A6D134F4BFBAE6127304D │ │ │ │ -576C900A458E32CD42A4674415E03D8EB5742E71B854B3EDFD271AA214436544 │ │ │ │ -D1BCFD52F439298847E1FA258E5D38384FC85BC4EDC6F9E4431621CF763B137B │ │ │ │ -22DB6E3268B3F78881D55EA7C52ABF23FB73C152B06B708084FE1B00CFE72D9D │ │ │ │ -57B62AEE912E63BBD89D4D13CE896735454F1A16C3D9FB6CDF142CCA9F1C0242 │ │ │ │ -46F62109DF30667DA327F7CF6DC19B880C860C69080597FFCB1793313E202D4F │ │ │ │ -120A7C6B052C2EB7597B71B0985D24FDD2D3918393BF720E762C5DBBC2BB1E91 │ │ │ │ -B04560364EFE5B16EB068E0560FB932E0C617CFB95A166388E99AC4CB020F5BC │ │ │ │ -E24BB77352D7C3B21C37D404051A70FFFA0F726C35501A1FBB411F832CE46A2E │ │ │ │ -B424E26BD4 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFD8CDE285A2827F4659E339460ABEF319FE44D7A91E93CA309E9266E03DA │ │ │ │ +735F5DEF3920C01189BB63C2BD7ED0B92EABB481F123641477CDCCAB9751FB7B │ │ │ │ +F67DA7CE6EB134BC10D0228562BA5A6BFE6940907EF030ABF9EC4A8A0DFEF73D │ │ │ │ +3289E8CB4DC37694F5A656A935D92C72B3D82B012F578A27711B161DE9652ADC │ │ │ │ +71C51E743E4E9A7C6CF6FF16C5D65C1F60954C0858B48FAAC4FBB21988E2A934 │ │ │ │ +AC50C097DDF42C416359647D79F830E1430FB9BB803451A6732D1B5CAB817C1B │ │ │ │ +673B3077D9A180F184267E9990C087BCDEBC8EB8B889934DD0EB63C2EBCED4A3 │ │ │ │ +83A0D6A365412CFF610EF7BD5F82B02AA293F1D2F868768CDE9B801C929B4A38 │ │ │ │ +64E20C70BC4041F837AD15423517F7336A067D140A2C7906DC5D45885FFB3B69 │ │ │ │ +724E5B9B138BD15A9359EB25D14BC4193E529D1A49FEB0DC1015BF94CEBBD5E0 │ │ │ │ +EA148B185C53E12BD9FA6DBC097D789A73E832F02F55080D8ED6087F5952EA78 │ │ │ │ +250A4C65CE4C4013554A031446D2092D813C4CB1A605D97A40CF867F656ECD1C │ │ │ │ +C23F80230AD1E449AA8B4007134F71156719206441D92B1A6DD25101ABF69F70 │ │ │ │ +538CCCE216376E1BD6E423986BD4E83B1975B15092D4E19F885672F9E7C02485 │ │ │ │ +E02DA0F4243D324A5983D1D46444E5F6573F699E4F2A3395EF0EB7808B7D4D62 │ │ │ │ +690FD033E93AA553082273636503DA4BBBBFA6D127CE10424DD1DDF4F879305C │ │ │ │ +14F64180E7851D091B3220DFC70CAA44716B8F7F0C6FBEDB167801DED77F9E69 │ │ │ │ +E9B31CD2D8044DB946E511162976C34DE27F2BB974B70509005562A0A21317B7 │ │ │ │ +46D826A31C476C8F9A778F941FF5956BA2D765B1AD0AC4BC7AE1CD8A2A81F039 │ │ │ │ +06EB13EBD099BBDB2EBDB54D459C288EA69FB0018CE9255BBFB08C1F90FF30BD │ │ │ │ +C971DA7FDB193281B8F967F21AB42F13F36085AC9EC0D6B6B448C8F289B0AD70 │ │ │ │ +DB521A4755ECF9CA594741E5C674220C21C265EF3BAE594197B00048C8D4DB73 │ │ │ │ +4AC47B6A86EAC7EECD042C8E23C347F8C9FCB870473C1FBD91C298174BCBF1A9 │ │ │ │ +7B366C570A9A04A433495FBC9FD0FFC22A0E8181424C0F038ED97AD5054B10CC │ │ │ │ +1CD5BA0719DD0B4F4F18932AE87FF8B8C1CF0C7482B7847049761505DCD85146 │ │ │ │ +4EE5CB53993A9449CD05233E961BD49AE92D308E2065D6C6BF038538039AA56A │ │ │ │ +C59D424BE3175427337E16892D3920598D518423E145C6B2DD3881F338845F0D │ │ │ │ +16C47AA0D9C2D6DE99C6A302D567ACD6F98BF38223F1890E099C8F93348FFDAA │ │ │ │ +C2D3440187C8FED87C1A891EF11EFA7168EC47F72AF8BC5BE1B88B1084E704F5 │ │ │ │ +82099F1A79E556D94CC38851C97DC3864945A7470F1389BCF608BADAE45B236D │ │ │ │ +2934A20FFBCF169BF84DF496B07E7F1D9002E62B030337642804403DF7E4B3FF │ │ │ │ +C5A421EE0033BA06C50A041FBFE8F81AFC145664E2976505EB14859CF0377EBA │ │ │ │ +EA604CF8BFB5F9ADB9A7ED56E6F0F919E791D57C7232241C892EAC3E55D2D03B │ │ │ │ +FF43B9DAB7B1D8C6588D6D3503F49E80121E52254431B308752A936E0B51124D │ │ │ │ +C7F23C316BA6FA73E6BC47EB9550003E1393C68360067C094C65C0DD17214FA0 │ │ │ │ +45FF0F9C3E0AE4C81093752D23EA95E163C98EC04873ECE3FB0882567329525C │ │ │ │ +0A3937B16CA72B5EB6D2DC10C1B485C0BA939587AFEBB6D837A40401C666BC1C │ │ │ │ +F3344FBAB3E48BEE18F3AF5CDB33BA63778D373A851333C8C34E2F35AB94E8B4 │ │ │ │ +FF7E62A92ED83B872894E0A17209E14CF61269204A35A4BC8C7EE4B16F19E91F │ │ │ │ +669C4EFCECB187F6C7FAF92B4E14E400C6B3C81679D4A7196D66DB1E897DDA42 │ │ │ │ +47CC2848B46D581A95EEF85AB528E8CDEEB275D1E1FE197A3A08D36406E2DADF │ │ │ │ +A87D817AF18B5525F89B7C2E584F4A1254A1FC71E749999A2152870631A69CB6 │ │ │ │ +666EBD6BB3366A598F6592040D0E82B9D866DF0A76C362E76C2804D108A0C148 │ │ │ │ +51F42E9E0ABD52CC2D02B156B63AFD03313AFC80EACC83DF9B59F05FD798951D │ │ │ │ +FCF5335636DFC6561910ACE0AEC47F74CFD302EB7421D28AAAC8FF82B7CE2B2A │ │ │ │ +340B8BCE09F57BFCBC77F91096D97A85726E68846398C8C9C8D3A65A252AE8FB │ │ │ │ +166750C244963BC61E2236BAAC529FABD6FC774550096374A8DB81B6AF1EA843 │ │ │ │ +27F671C0045D629E3734EF037447C4763514FD1C4AE858A494AFC23A64C82149 │ │ │ │ +F4C0A7023B3865B84FAC2DC88D1553DCEBA3D8FB5DBC1103123F6B8CB5B3A399 │ │ │ │ +B665B26B001BF1E4BFABE42BFF6B02D69FA88D5CBCA5A11D5B48CFB4EAE60558 │ │ │ │ +5FBE254AD3BE01761CD4995E766E172D768621223505FD6AA8F89FC042EB814C │ │ │ │ +34373DAEC4FAAF71C0752F814154C5299F751CE7E0F9C673D2E448D0204C214C │ │ │ │ +C04DC34671FBEF72350FFBA263662E86A0D3795E310153AAF4C8A2623E167E6E │ │ │ │ +1F13A9BA485D5DDFC451D691DBA7C49E20354A7AD79D89F7EDE24F0D5B48B27D │ │ │ │ +568D01EF2555504196C09841F5970D8CF6C5D47FFFCF18AE6B2A485342000AAD │ │ │ │ +1F922FBEF7C98E0965609C89240E7B131A59551F57CD5C92097FCE75F5D2778F │ │ │ │ +F9ACF43A3273551363442C8C539205903A835C744A4AA953545506081D3D231A │ │ │ │ +A140E01F280BC42A3C35EDAD5F6B8CE6E51C68E41CA813710864ED880FCE846C │ │ │ │ +1B66D27CC2DBCDC2B1B96A12490BD76D67A415D4A6595CD9B19D3104A83D2C82 │ │ │ │ +C46DCD2C027F0565EDB83E54FF99498194D3140E55E8EE65EBDEAC5409B5616A │ │ │ │ +73141DA2D581E300A6057F4301A02DD160AB3E55A116313525122D0608816AA8 │ │ │ │ +4712EEF3D6FE8C893DF37D │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3005,16 +2995,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 134[48 3[51 2[36 12[40 2[51 45 26[59 11[25 │ │ │ │ -45 4[45 1[45 1[45 3[25 44[{}13 90.9091 /CMSL10 rf │ │ │ │ +/CMTI10 rf /Fd 139[35 1[36 2[45 9[40 1[40 51 18[71 20[25 │ │ │ │ +4[45 45 1[45 1[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 │ │ │ │ @@ -3122,20 +3112,20 @@ │ │ │ │ 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 1111 4 v │ │ │ │ -1293 w Fg(Lock)29 b Fd(:)41 b Fc(DRAFT)30 b Fd(F)-8 b(ebruary)30 │ │ │ │ -b(29,)i(2024)p 2789 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 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fh(2)p 136 100 1152 4 v │ │ │ │ +1334 w Fg(Lock)29 b Fd(:)41 b Fc(DRAFT)30 b Fd(Octob)s(er)g(4,)h(2025)p │ │ │ │ +2748 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 │ │ │ │ (for)e(the)g Fg(Lock)f Fh(structure)h(and)f(then)h(sets)h(the)f │ │ │ │ (default)g(\014elds)227 1426 y(b)m(y)f(a)f(call)i(to)f │ │ │ │ Fg(Lock)p 905 1426 29 4 v 33 w(setDefaultFields\(\))p │ │ │ │ @@ -3190,17 +3180,17 @@ │ │ │ │ b(metho)s(ds)111 5109 y Fh(1.)46 b Fg(void)h(Lock_lock)e(\()j(Lock)e │ │ │ │ (*lock)h(\))g(;)227 5258 y Fh(This)30 b(metho)s(d)g(lo)s(c)m(ks)h(the)f │ │ │ │ (lo)s(c)m(k.)227 5407 y Fc(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ b Fh(If)30 b Fg(lock)g Fh(is)g Fg(NULL)p Fh(,)f(an)i(error)f(message)h │ │ │ │ (is)g(prin)m(ted)f(and)f(the)i(program)f(exits.)p eop │ │ │ │ end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 91 100 1111 4 v 1292 100 a Fg(Lock)30 │ │ │ │ -b Fd(:)40 b Fc(DRAFT)121 b Fd(F)-8 b(ebruary)31 b(29,)g(2024)p │ │ │ │ -2742 100 V 1111 w Fh(3)111 399 y(2.)46 b Fg(void)h(Lock_unlock)e(\()i │ │ │ │ +TeXDict begin 3 2 bop 91 100 1152 4 v 1334 100 a Fg(Lock)29 │ │ │ │ +b Fd(:)41 b Fc(DRAFT)121 b Fd(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2701 100 V 1152 w Fh(3)111 399 y(2.)46 b Fg(void)h(Lock_unlock)e(\()i │ │ │ │ (Lock)g(*lock)f(\))i(;)227 549 y Fh(This)30 b(metho)s(d)g(unlo)s(c)m │ │ │ │ (ks)g(the)g(lo)s(c)m(k.)227 699 y Fc(Err)-5 b(or)34 b(che)-5 │ │ │ │ b(cking:)40 b Fh(If)30 b Fg(lock)g Fh(is)g Fg(NULL)p │ │ │ │ Fh(,)f(an)i(error)f(message)h(is)g(prin)m(ted)f(and)f(the)i(program)f │ │ │ │ (exits.)p eop end │ │ │ │ %%Page: 4 4 │ │ │ │ TeXDict begin 4 3 bop 0 866 a Fi(Index)0 1289 y Fg(Lock)p │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -19,15 +19,15 @@ │ │ │ │ │ • int nlocks : number of locks made. │ │ │ │ │ • int nunlocks : number of unlocks made. │ │ │ │ │ • the mutual exclusion lock │ │ │ │ │ For Solaris threads we have mutex t *mutex. │ │ │ │ │ For POSIX threads we have pthread mutex t *mutex. │ │ │ │ │ For no threads we have void *mutex. │ │ │ │ │ 1 │ │ │ │ │ - 2 Lock : DRAFT February 29, 2024 │ │ │ │ │ + 2 Lock : DRAFT October 4, 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 February 29, 2024 3 │ │ │ │ │ + Lock : DRAFT October 4, 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 2024.02.29:1858 │ │ │ │ +%DVIPSSource: TeX output 2025.10.04:1734 │ │ │ │ %%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 │ │ │ │ @@ -1206,23 +1206,23 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 50 /two put │ │ │ │ dup 52 /four put │ │ │ │ -dup 57 /nine put │ │ │ │ +dup 53 /five put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 70 /F put │ │ │ │ -dup 97 /a put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ +dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ -dup 117 /u put │ │ │ │ -dup 121 /y put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1396,95 +1396,85 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA647CD0E2539DFAD9604486DCCFA49 │ │ │ │ -AC96130D106A8F8387633622C3809400D6E8FF9D60877C743502E4D211CEBF62 │ │ │ │ -9A6F91045C22D5D20C5FF677D89983D02E5EE26C71A9EAE0E7C52465DA5A149A │ │ │ │ -9B731C27EC8366BC3E841C0CAE49A33DE164A857365B17B09CAD121C47A980CB │ │ │ │ -C75E1030F6C394EDB46C54B46880D2344127B903FB22684C9CAACE6053DC3BFA │ │ │ │ -4E47C565ECAF19C4295A11BD68CA6D45B5738B932BB3690A8C712904C49C1636 │ │ │ │ -A7702075F2FEA8DB3EB3A3C1216BB769DD0BAF4507A18E3052F2C846B0797933 │ │ │ │ -8CE9BB2DB5DFADAF1B0FC3A22BAB82A0D5D290F7AD950013CFA465BE11C1076D │ │ │ │ -5833FF92321FBF90D9229D3BA09DD18EEC44D9FCF8FCF63CC09D2977BFA798B6 │ │ │ │ -47FB047EA6AF69C7DE570176F5B6C0FED74DEDBF7DDF49550DD84BA14AC09423 │ │ │ │ -F70D5B14F0F8588F1E2FFE0DFE0760E77A9E39DEDAC5C5AE3760722C029B916D │ │ │ │ -96A2A7D1DD6A61F90B4B9806314A668EB7A0E107A3527310A240490453CC18D7 │ │ │ │ -3793B4CF3CE13EA332E7F5C2BACF85AC75FE84693B966BB0F6FB9A179A331C4E │ │ │ │ -55E9EF30E2734E44A88E053CD5E650D7E529E94CB7F8B733E68315ACAC5BEFC5 │ │ │ │ -3FE4F585F875310267865679AB381125C31E9AEB7226DC9F18DA80A9DE2F38A4 │ │ │ │ -51B8F9D5B2FBA0F50D53AE6212AFE41466A594F7A303B4E82F1493C0B8D65756 │ │ │ │ -BE6AF2931E5ADA5CE7D51CB5B1EC916C6C6D674808939331CA66F8181DD2B112 │ │ │ │ -1A12198CCCB6BBF1D40C803E794B65241ACE1E0D30CCA1C6F2D3E1415B98726B │ │ │ │ -9BA303BE2C4C276108CC78C093F1CC85CA454CC38535D1DEBFA341D84E8A5DDF │ │ │ │ -D53D8DD0F4A812B5BA63871BEB3BCE93FBC77AD395914E2CD757546C2BE2D641 │ │ │ │ -FDB12258E1E1D10E1B963EABB265F2C8B2547D48963E1AD3B223B666B46915A1 │ │ │ │ -157F5EA0AB8D8411C07AA2EB5D0EF1A1BA6D81C47473A3D3D6287104C7BF61F8 │ │ │ │ -3BDB64995DE96A65BF2B7288C51ADAA3D373A95C40D5240C5FF397551554AA9E │ │ │ │ -C89C7E45AA7738503CB058EF6AD5052CC78E4445C810C250BF25394B8D7DE82E │ │ │ │ -315C9CCD6E1E9150EC79EE0F354C668AE199C1AFF39C67337A86CB932E8D64E9 │ │ │ │ -389FF3CC08B538492DEED017686DBB9BDEA30FE67FB4EBDB3627C16FD15F243A │ │ │ │ -7FDEB310EFC940E57726E94340472F2C452815927ADE21578C959890216BE504 │ │ │ │ -225BE4B4D2E3B19F5E06B5A0B25AF168C3A2B26F599A829F89C16BD2026E8CC9 │ │ │ │ -8FB3CBB830C3E36C099071A70D0B8834FF2C17364EB50D5C71440CC7BFE02321 │ │ │ │ -8C6ECAC2F7EC1BE39077DB0E8B2B251626A71FD038EB2CF1FC254D98C1535CAA │ │ │ │ -A8C987BC266482BD860A333048E1EDB3DD40A6ECD6DA0088AD9B9640202D89AA │ │ │ │ -0BB9A0ADF63491E67F2E97E35942D77E59B9B8AB0ED28B022EE5CD3449FC5B7A │ │ │ │ -19E38845B488F97D155C4312885E29537EAE97719C65845663480CE79DE8F037 │ │ │ │ -68995C0928FE8AFBEE554F01381EE5187578DF5D2542F26F66A599EE8ECC1F68 │ │ │ │ -FBADF3C2BA968C3CEB86675CF9A6CFD736E1422800D270417D497903DE87F2AE │ │ │ │ -938E39E120E9D3079F512E545E0E2616B84E81FE41392184F96818A7C86BF541 │ │ │ │ -F2E67C48CA56DA838C9FA0FAD538073B9F26319140D1F80EEEBCA190DE660A31 │ │ │ │ -457CAC16E92F87449A3734F9EA751588514865B58DC073658C8A857B5398AAC7 │ │ │ │ -3DC11E069996EF74A3189A07630D5DB87C5E028CD193C086B4D0E8BABC4F2393 │ │ │ │ -235EC96091B16C4A6D97DA1BD30A2D2E71F55869223CA66AD12448B668685F6E │ │ │ │ -06E7888D7F20045C662C4F7994CC7E1CE9AAC33A026716AA0551DF12343F0E22 │ │ │ │ -6E9F4B21C90406CC4997601194EF37A973221D1F4D73DD5666BD297F621C92AA │ │ │ │ -E3F698BC1146ADE754C4120EDF5B3E974D75A237E51DB49D52CD6CC7C9E8BD2D │ │ │ │ -E6849DF8F4DBA86C655D0C57CB54836C8A841C1D814F6B493F96ADBFCAD78D3B │ │ │ │ -430C58EF169950851B6A0B46411488B1A6F6974832787A24C0CDDBE27996EFB1 │ │ │ │ -DB341FA34B1DC6238D978D1E1D34AF3FB375ED6DA9C88699F195C88A54622F7C │ │ │ │ -36DAFC663D85660E756733A7E22F20C6A5D91F06087CAD10F7217BD33F343DC6 │ │ │ │ -F5EB9F16FE763672243EE6AE5CB6063A1D64670E1C059DD52134974E27D9D89C │ │ │ │ -BC658FCD814F20703D610C978FDCD6E2AEA31C18D1A310F215B28199F66C87DB │ │ │ │ -3B23980A393E1DD77AFA3045EDB6942505F3CF6204315A14E5B6BF2E96F3BB1F │ │ │ │ -628D24AC1893BC7DAEF3AA63F2116837F31DB90D872CBD9E5C48BCDEE781D20D │ │ │ │ -C6553D2D15F4E8438A9D1C7CEE1B72BD6AA08DC0AFEAF8B4DC1038707EE4A1BF │ │ │ │ -3D84460E60AF90F55002C1D8EBF0700F7EC3EFC944BEA78D0E0536F3AA6D9A84 │ │ │ │ -604A781AC5ACFEB7E681365315EE11E991C03DA431B65B332AD8F83F6F3AE66C │ │ │ │ -1BF434D3793FB5BCC44E44ACFF2855C2770C4AC678C6ACD6EB071974ACF1AE37 │ │ │ │ -D02C1736C62CC205A2F3488448527EFFA379613A8E6A6D134F4BFBAE6127304D │ │ │ │ -576C900A458E32CD42A4674415E03D8EB5742E71B854B3EDFD271AA214436544 │ │ │ │ -D1BCFD52F439298847E1FA258E5D38384FC85BC4EDC6F9E4431621CF763B137B │ │ │ │ -22DB6E3268B3F78881D55EA7C52ABF23FB73C152B06B708084FE1B00CFE72D9D │ │ │ │ -57B62AEE912E63BBD89D4D13CE896735454F1A16C3D9FB6CDF142CCA9F1C0242 │ │ │ │ -46F62109DF30667DA327F7CF6DC19B880C860C69080597FFCB1793313E202D4F │ │ │ │ -120A7C6B052C2EB7597B71B0985D24FDD2D3918393BF720E762C5DBBC2BB1E91 │ │ │ │ -B04560364EFE5B16EB068E0560FB932E0C617CFB95A166388E99AC4CB020F5BC │ │ │ │ -E24BB77352D7C3B21C37D404051A70FFFA0F726C35501A1FBB411F832CE46A2E │ │ │ │ -B424E26BD4 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFD8CDE285A2827F4659E339460ABEF319FE44D7A91E93CA309E9266E03DA │ │ │ │ +735F5DEF3920C01189BB63C2BD7ED0B92EABB481F123641477CDCCAB9751FB7B │ │ │ │ +F67DA7CE6EB134BC10D0228562BA5A6BFE6940907EF030ABF9EC4A8A0DFEF73D │ │ │ │ +3289E8CB4DC37694F5A656A935D92C72B3D82B012F578A27711B161DE9652ADC │ │ │ │ +71C51E743E4E9A7C6CF6FF16C5D65C1F60954C0858B48FAAC4FBB21988E2A934 │ │ │ │ +AC50C097DDF42C416359647D79F830E1430FB9BB803451A6732D1B5CAB817C1B │ │ │ │ +673B3077D9A180F184267E9990C087BCDEBC8EB8B889934DD0EB63C2EBCED4A3 │ │ │ │ +83A0D6A365412CFF610EF7BD5F82B02AA293F1D2F868768CDE9B801C929B4A38 │ │ │ │ +64E20C70BC4041F837AD15423517F7336A067D140A2C7906DC5D45885FFB3B69 │ │ │ │ +724E5B9B138BD15A9359EB25D14BC4193E529D1A49FEB0DC1015BF94CEBBD5E0 │ │ │ │ +EA148B185C53E12BD9FA6DBC097D789A73E832F02F55080D8ED6087F5952EA78 │ │ │ │ +250A4C65CE4C4013554A031446D2092D813C4CB1A605D97A40CF867F656ECD1C │ │ │ │ +C23F80230AD1E449AA8B4007134F71156719206441D92B1A6DD25101ABF69F70 │ │ │ │ +538CCCE216376E1BD6E423986BD4E83B1975B15092D4E19F885672F9E7C02485 │ │ │ │ +E02DA0F4243D324A5983D1D46444E5F6573F699E4F2A3395EF0EB7808B7D4D62 │ │ │ │ +690FD033E93AA553082273636503DA4BBBBFA6D127CE10424DD1DDF4F879305C │ │ │ │ +14F64180E7851D091B3220DFC70CAA44716B8F7F0C6FBEDB167801DED77F9E69 │ │ │ │ +E9B31CD2D8044DB946E511162976C34DE27F2BB974B70509005562A0A21317B7 │ │ │ │ +46D826A31C476C8F9A778F941FF5956BA2D765B1AD0AC4BC7AE1CD8A2A81F039 │ │ │ │ +06EB13EBD099BBDB2EBDB54D459C288EA69FB0018CE9255BBFB08C1F90FF30BD │ │ │ │ +C971DA7FDB193281B8F967F21AB42F13F36085AC9EC0D6B6B448C8F289B0AD70 │ │ │ │ +DB521A4755ECF9CA594741E5C674220C21C265EF3BAE594197B00048C8D4DB73 │ │ │ │ +4AC47B6A86EAC7EECD042C8E23C347F8C9FCB870473C1FBD91C298174BCBF1A9 │ │ │ │ +7B366C570A9A04A433495FBC9FD0FFC22A0E8181424C0F038ED97AD5054B10CC │ │ │ │ +1CD5BA0719DD0B4F4F18932AE87FF8B8C1CF0C7482B7847049761505DCD85146 │ │ │ │ +4EE5CB53993A9449CD05233E961BD49AE92D308E2065D6C6BF038538039AA56A │ │ │ │ +C59D424BE3175427337E16892D3920598D518423E145C6B2DD3881F338845F0D │ │ │ │ +16C47AA0D9C2D6DE99C6A302D567ACD6F98BF38223F1890E099C8F93348FFDAA │ │ │ │ +C2D3440187C8FED87C1A891EF11EFA7168EC47F72AF8BC5BE1B88B1084E704F5 │ │ │ │ +82099F1A79E556D94CC38851C97DC3864945A7470F1389BCF608BADAE45B236D │ │ │ │ +2934A20FFBCF169BF84DF496B07E7F1D9002E62B030337642804403DF7E4B3FF │ │ │ │ +C5A421EE0033BA06C50A041FBFE8F81AFC145664E2976505EB14859CF0377EBA │ │ │ │ +EA604CF8BFB5F9ADB9A7ED56E6F0F919E791D57C7232241C892EAC3E55D2D03B │ │ │ │ +FF43B9DAB7B1D8C6588D6D3503F49E80121E52254431B308752A936E0B51124D │ │ │ │ +C7F23C316BA6FA73E6BC47EB9550003E1393C68360067C094C65C0DD17214FA0 │ │ │ │ +45FF0F9C3E0AE4C81093752D23EA95E163C98EC04873ECE3FB0882567329525C │ │ │ │ +0A3937B16CA72B5EB6D2DC10C1B485C0BA939587AFEBB6D837A40401C666BC1C │ │ │ │ +F3344FBAB3E48BEE18F3AF5CDB33BA63778D373A851333C8C34E2F35AB94E8B4 │ │ │ │ +FF7E62A92ED83B872894E0A17209E14CF61269204A35A4BC8C7EE4B16F19E91F │ │ │ │ +669C4EFCECB187F6C7FAF92B4E14E400C6B3C81679D4A7196D66DB1E897DDA42 │ │ │ │ +47CC2848B46D581A95EEF85AB528E8CDEEB275D1E1FE197A3A08D36406E2DADF │ │ │ │ +A87D817AF18B5525F89B7C2E584F4A1254A1FC71E749999A2152870631A69CB6 │ │ │ │ +666EBD6BB3366A598F6592040D0E82B9D866DF0A76C362E76C2804D108A0C148 │ │ │ │ +51F42E9E0ABD52CC2D02B156B63AFD03313AFC80EACC83DF9B59F05FD798951D │ │ │ │ +FCF5335636DFC6561910ACE0AEC47F74CFD302EB7421D28AAAC8FF82B7CE2B2A │ │ │ │ +340B8BCE09F57BFCBC77F91096D97A85726E68846398C8C9C8D3A65A252AE8FB │ │ │ │ +166750C244963BC61E2236BAAC529FABD6FC774550096374A8DB81B6AF1EA843 │ │ │ │ +27F671C0045D629E3734EF037447C4763514FD1C4AE858A494AFC23A64C82149 │ │ │ │ +F4C0A7023B3865B84FAC2DC88D1553DCEBA3D8FB5DBC1103123F6B8CB5B3A399 │ │ │ │ +B665B26B001BF1E4BFABE42BFF6B02D69FA88D5CBCA5A11D5B48CFB4EAE60558 │ │ │ │ +5FBE254AD3BE01761CD4995E766E172D768621223505FD6AA8F89FC042EB814C │ │ │ │ +34373DAEC4FAAF71C0752F814154C5299F751CE7E0F9C673D2E448D0204C214C │ │ │ │ +C04DC34671FBEF72350FFBA263662E86A0D3795E310153AAF4C8A2623E167E6E │ │ │ │ +1F13A9BA485D5DDFC451D691DBA7C49E20354A7AD79D89F7EDE24F0D5B48B27D │ │ │ │ +568D01EF2555504196C09841F5970D8CF6C5D47FFFCF18AE6B2A485342000AAD │ │ │ │ +1F922FBEF7C98E0965609C89240E7B131A59551F57CD5C92097FCE75F5D2778F │ │ │ │ +F9ACF43A3273551363442C8C539205903A835C744A4AA953545506081D3D231A │ │ │ │ +A140E01F280BC42A3C35EDAD5F6B8CE6E51C68E41CA813710864ED880FCE846C │ │ │ │ +1B66D27CC2DBCDC2B1B96A12490BD76D67A415D4A6595CD9B19D3104A83D2C82 │ │ │ │ +C46DCD2C027F0565EDB83E54FF99498194D3140E55E8EE65EBDEAC5409B5616A │ │ │ │ +73141DA2D581E300A6057F4301A02DD160AB3E55A116313525122D0608816AA8 │ │ │ │ +4712EEF3D6FE8C893DF37D │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -4900,16 +4890,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 134[44 3[46 2[33 │ │ │ │ -12[37 2[46 42 26[54 11[23 42 4[42 1[42 1[42 3[23 44[{}13 │ │ │ │ +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 4[42 42 1[42 1[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 │ │ │ │ @@ -5059,26 +5049,25 @@ │ │ │ │ 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 1210 4 v │ │ │ │ -1375 w Fl(MPI)27 b Fd(:)h Fm(DRAFT)f Fd(F)-7 b(ebruary)26 │ │ │ │ -b(29,)h(2024)p 2690 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 1248 4 v │ │ │ │ +1413 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(Octob)r(er)g(4,)g(2025)p │ │ │ │ +2653 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 │ │ │ │ @@ -5150,17 +5139,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 1210 4 v 1376 100 a Fl(MPI)26 │ │ │ │ -b Fd(:)i Fm(DRAFT)110 b Fd(F)-7 b(ebruary)27 b(29,)g(2024)p │ │ │ │ -2651 100 V 1210 w Fn(3)556 377 y Fl(stats[0])97 b Fn(|)i(#)28 │ │ │ │ +TeXDict begin 3 2 bop 83 100 1248 4 v 1414 100 a Fl(MPI)26 │ │ │ │ +b Fd(:)i Fm(DRAFT)110 b Fd(Octob)r(er)27 b(4,)g(2025)p │ │ │ │ +2613 100 V 1248 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) │ │ │ │ @@ -5258,28 +5247,27 @@ │ │ │ │ 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 1210 4 v │ │ │ │ -1375 w Fl(MPI)27 b Fd(:)h Fm(DRAFT)f Fd(F)-7 b(ebruary)26 │ │ │ │ -b(29,)h(2024)p 2690 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 731 y(error)25 b(message)h(is)i(prin)n │ │ │ │ -(ted)f(and)h(the)g(program)d(exits.)101 916 y(5.)42 b │ │ │ │ -Fl(InpMtx)f(*)i(InpMtx_MPI_split)o(Fr)o(omG)o(lo)o(ba)o(l)38 │ │ │ │ -b(\()43 b(InpMtx)e(*Aglobal,)f(InpMtx)h(*Alocal,)1864 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fn(4)p 125 100 1248 4 v │ │ │ │ +1413 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(Octob)r(er)g(4,)g(2025)p │ │ │ │ +2653 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 │ │ │ │ +731 y(error)25 b(message)h(is)i(prin)n(ted)f(and)h(the)g(program)d │ │ │ │ +(exits.)101 916 y(5.)42 b Fl(InpMtx)f(*)i(InpMtx_MPI_split)o(Fr)o(omG)o │ │ │ │ +(lo)o(ba)o(l)38 b(\()43 b(InpMtx)e(*Aglobal,)f(InpMtx)h(*Alocal,)1864 │ │ │ │ 1015 y(IV)i(*mapIV,)d(int)j(root,)e(int)h(stats[],)f(int)h(msglvl,)1864 │ │ │ │ 1115 y(FILE)g(*msgFile,)e(int)i(firsttag,)e(MPI_Comm)g(comm)i(\))h(;) │ │ │ │ 208 1257 y Fn(This)30 b(metho)r(d)h(is)f(used)g(when)h(the)f │ │ │ │ Fl(Aglobal)e(InpMtx)g Fn(matrix)i(ob)5 b(ject)30 b(is)g(o)n(wned)g(b)n │ │ │ │ (y)g(pro)r(cessor)e Fl(root)h Fn(and)h(redis-)208 1357 │ │ │ │ y(tributed)e(to)f(the)h(other)f(pro)r(cessors.)208 1499 │ │ │ │ y Fl(Aglobal)20 b Fn(is)j(p)r(ertinen)n(t)h(only)f(to)g(pro)r(cessor)e │ │ │ │ @@ -5357,17 +5345,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 1210 4 v 1376 100 a Fl(MPI)26 │ │ │ │ -b Fd(:)i Fm(DRAFT)110 b Fd(F)-7 b(ebruary)27 b(29,)g(2024)p │ │ │ │ -2651 100 V 1210 w Fn(5)0 390 y Fj(1.2.2)112 b(Gather)38 │ │ │ │ +TeXDict begin 5 4 bop 83 100 1248 4 v 1414 100 a Fl(MPI)26 │ │ │ │ +b Fd(:)i Fm(DRAFT)110 b Fd(Octob)r(er)27 b(4,)g(2025)p │ │ │ │ +2613 100 V 1248 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 │ │ │ │ @@ -5449,25 +5437,24 @@ │ │ │ │ 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 1210 4 v │ │ │ │ -1375 w Fl(MPI)27 b Fd(:)h Fm(DRAFT)f Fd(F)-7 b(ebruary)26 │ │ │ │ -b(29,)h(2024)p 2690 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 1248 4 v │ │ │ │ +1413 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(Octob)r(er)g(4,)g(2025)p │ │ │ │ +2653 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 │ │ │ │ @@ -5548,17 +5535,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 1210 4 v 1376 100 a Fl(MPI)26 │ │ │ │ -b Fd(:)i Fm(DRAFT)110 b Fd(F)-7 b(ebruary)27 b(29,)g(2024)p │ │ │ │ -2651 100 V 1210 w Fn(7)208 390 y(On)g(return,)g(the)h │ │ │ │ +TeXDict begin 7 6 bop 83 100 1248 4 v 1414 100 a Fl(MPI)26 │ │ │ │ +b Fd(:)i Fm(DRAFT)110 b Fd(Octob)r(er)27 b(4,)g(2025)p │ │ │ │ +2613 100 V 1248 w Fn(7)208 390 y(On)g(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 │ │ │ │ @@ -5640,45 +5627,45 @@ │ │ │ │ 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 1210 4 v │ │ │ │ -1375 w Fl(MPI)27 b Fd(:)h Fm(DRAFT)f Fd(F)-7 b(ebruary)26 │ │ │ │ -b(29,)h(2024)p 2690 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 840 y(than)h(the)g(largest)f(a)n(v)-5 │ │ │ │ -b(ailable)26 b(tag,)h(or)f(if)h Fl(msglvl)42 b(>)h(0)27 │ │ │ │ -b Fn(and)g Fl(msgFile)d Fn(is)j Fl(NULL)p Fn(,)e(an)i(error)e(message)h │ │ │ │ -(is)h(prin)n(ted)g(and)208 939 y(the)h(program)d(exits.)101 │ │ │ │ -1141 y(4.)42 b Fl(void)f(IVL_MPI_allgather)c(\()43 b(IVL)g(*ivl,)e(IV)i │ │ │ │ -(*ownersIV,)c(int)k(stats[],)d(int)i(msglvl,)1297 1241 │ │ │ │ -y(FILE)g(*msgFile,)e(int)i(firsttag,)e(MPI_Comm)g(comm)i(\))i(;)208 │ │ │ │ -1391 y Fn(When)d(the)g Fl(FrontMtx)d Fn(ob)5 b(ject)41 │ │ │ │ -b(is)g(split)g(in)n(to)g(submatrices,)i(eac)n(h)e(pro)r(cessor)d(accum) │ │ │ │ -n(ulates)i(the)i(structure)e(of)208 1491 y(the)34 b(blo)r(c)n(k)f │ │ │ │ -(matrix)g(for)g(the)h(fron)n(ts)f(its)g(o)n(wns.)55 b(This)33 │ │ │ │ -b(structure)g(m)n(ust)h(b)r(e)g(global)e(to)i(all)f(pro)r(cessors)e(b)r │ │ │ │ -(efore)j(the)208 1591 y(submatrix)28 b(map)h(can)f(b)r(e)h(computed.)41 │ │ │ │ -b(This)29 b(metho)r(d)g(tak)n(es)f(a)h Fm(p)l(artitione)l(d)h │ │ │ │ -Fl(IVL)d Fn(ob)5 b(ject)29 b(and)g(comm)n(unicates)f(the)208 │ │ │ │ -1690 y(en)n(tries)33 b(among)h(the)g(pro)r(cessors)e(un)n(til)j(the)g │ │ │ │ -(global)e Fl(IVL)g Fn(ob)5 b(ject)34 b(is)h(presen)n(t)f(on)g(eac)n(h.) │ │ │ │ -56 b(Whic)n(h)35 b(pro)r(cessor)d(o)n(wns)208 1790 y(what)e(lists)g(of) │ │ │ │ -g(the)g Fl(IVL)f Fn(ob)5 b(ject)30 b(is)g(giv)n(en)f(b)n(y)h(the)h │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fn(8)p 125 100 1248 4 v │ │ │ │ +1413 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(Octob)r(er)g(4,)g(2025)p │ │ │ │ +2653 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 │ │ │ │ +840 y(than)h(the)g(largest)f(a)n(v)-5 b(ailable)26 b(tag,)h(or)f(if)h │ │ │ │ +Fl(msglvl)42 b(>)h(0)27 b Fn(and)g Fl(msgFile)d Fn(is)j │ │ │ │ +Fl(NULL)p Fn(,)e(an)i(error)e(message)h(is)h(prin)n(ted)g(and)208 │ │ │ │ +939 y(the)h(program)d(exits.)101 1141 y(4.)42 b Fl(void)f │ │ │ │ +(IVL_MPI_allgather)c(\()43 b(IVL)g(*ivl,)e(IV)i(*ownersIV,)c(int)k │ │ │ │ +(stats[],)d(int)i(msglvl,)1297 1241 y(FILE)g(*msgFile,)e(int)i │ │ │ │ +(firsttag,)e(MPI_Comm)g(comm)i(\))i(;)208 1391 y Fn(When)d(the)g │ │ │ │ +Fl(FrontMtx)d Fn(ob)5 b(ject)41 b(is)g(split)g(in)n(to)g(submatrices,)i │ │ │ │ +(eac)n(h)e(pro)r(cessor)d(accum)n(ulates)i(the)i(structure)e(of)208 │ │ │ │ +1491 y(the)34 b(blo)r(c)n(k)f(matrix)g(for)g(the)h(fron)n(ts)f(its)g(o) │ │ │ │ +n(wns.)55 b(This)33 b(structure)g(m)n(ust)h(b)r(e)g(global)e(to)i(all)f │ │ │ │ +(pro)r(cessors)e(b)r(efore)j(the)208 1591 y(submatrix)28 │ │ │ │ +b(map)h(can)f(b)r(e)h(computed.)41 b(This)29 b(metho)r(d)g(tak)n(es)f │ │ │ │ +(a)h Fm(p)l(artitione)l(d)h Fl(IVL)d Fn(ob)5 b(ject)29 │ │ │ │ +b(and)g(comm)n(unicates)f(the)208 1690 y(en)n(tries)33 │ │ │ │ +b(among)h(the)g(pro)r(cessors)e(un)n(til)j(the)g(global)e │ │ │ │ +Fl(IVL)g Fn(ob)5 b(ject)34 b(is)h(presen)n(t)f(on)g(eac)n(h.)56 │ │ │ │ +b(Whic)n(h)35 b(pro)r(cessor)d(o)n(wns)208 1790 y(what)e(lists)g(of)g │ │ │ │ +(the)g Fl(IVL)f Fn(ob)5 b(ject)30 b(is)g(giv)n(en)f(b)n(y)h(the)h │ │ │ │ Fl(ownersIV)26 b Fn(ob)5 b(ject.)45 b(The)30 b(messages)e(that)i(will)h │ │ │ │ (b)r(e)f(sen)n(t)g(require)208 1890 y(at)d(most)g Fl(nproc)f │ │ │ │ Fn(consecutiv)n(e)h(tags)f(|)i(the)g(\014rst)f(is)h(the)g(parameter)e │ │ │ │ Fl(firsttag)p Fn(.)208 2040 y Fm(Err)l(or)f(che)l(cking:)37 │ │ │ │ b Fn(If)23 b Fl(ivl)p Fn(,)g Fl(ownersIV)c Fn(or)j Fl(stats)f │ │ │ │ Fn(is)i Fl(NULL)p Fn(,)e(or)h(if)h Fl(firsttag)40 b(<)k(0)22 │ │ │ │ b Fn(or)g Fl(firsttag)40 b(+)j(nproc)p Fn(,)22 b(is)h(larger)208 │ │ │ │ @@ -5726,17 +5713,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 1210 4 v 1376 100 a Fl(MPI)26 │ │ │ │ -b Fd(:)i Fm(DRAFT)110 b Fd(F)-7 b(ebruary)27 b(29,)g(2024)p │ │ │ │ -2651 100 V 1210 w Fn(9)0 390 y Fj(1.2.7)112 b(Matrix-matrix)39 │ │ │ │ +TeXDict begin 9 8 bop 83 100 1248 4 v 1414 100 a Fl(MPI)26 │ │ │ │ +b Fd(:)i Fm(DRAFT)110 b Fd(Octob)r(er)27 b(4,)g(2025)p │ │ │ │ +2613 100 V 1248 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 │ │ │ │ @@ -5811,29 +5798,28 @@ │ │ │ │ (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 1190 4 │ │ │ │ -v 1354 w Fl(MPI)27 b Fd(:)g Fm(DRAFT)h Fd(F)-7 b(ebruary)26 │ │ │ │ -b(29,)h(2024)p 2711 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 1227 4 │ │ │ │ +v 1392 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(Octob)r(er)g(4,)g(2025)p │ │ │ │ +2673 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 │ │ │ │ @@ -5902,17 +5888,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 1190 4 v 1355 100 a Fl(MPI)27 │ │ │ │ -b Fd(:)g Fm(DRAFT)111 b Fd(F)-7 b(ebruary)26 b(29,)h(2024)p │ │ │ │ -2630 100 V 1190 w Fn(11)0 390 y Fj(1.2.9)112 b(Utilit)m(y)38 │ │ │ │ +TeXDict begin 11 10 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(4,)g(2025)p │ │ │ │ +2592 100 V 1227 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 │ │ │ │ @@ -5996,25 +5982,24 @@ │ │ │ │ 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 1190 │ │ │ │ -4 v 1354 w Fl(MPI)27 b Fd(:)g Fm(DRAFT)h Fd(F)-7 b(ebruary)26 │ │ │ │ -b(29,)h(2024)p 2711 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 1227 │ │ │ │ +4 v 1392 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(Octob)r(er)g(4,)g(2025)p │ │ │ │ +2673 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 │ │ │ │ @@ -6076,17 +6061,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 1190 4 v 1355 100 a Fl(MPI)27 │ │ │ │ -b Fd(:)g Fm(DRAFT)111 b Fd(F)-7 b(ebruary)26 b(29,)h(2024)p │ │ │ │ -2630 100 V 1190 w Fn(13)208 390 y(where)j Fl(neqns)g │ │ │ │ +TeXDict begin 13 12 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(4,)g(2025)p │ │ │ │ +2592 100 V 1227 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 │ │ │ │ @@ -6161,27 +6146,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 1190 │ │ │ │ -4 v 1354 w Fl(MPI)27 b Fd(:)g Fm(DRAFT)h Fd(F)-7 b(ebruary)26 │ │ │ │ -b(29,)h(2024)p 2711 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 1227 │ │ │ │ +4 v 1392 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(Octob)r(er)g(4,)g(2025)p │ │ │ │ +2673 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 │ │ │ │ @@ -6253,17 +6238,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 1190 4 v 1355 100 a Fl(MPI)27 │ │ │ │ -b Fd(:)g Fm(DRAFT)111 b Fd(F)-7 b(ebruary)26 b(29,)h(2024)p │ │ │ │ -2630 100 V 1190 w Fn(15)101 390 y(4.)42 b Fl(testGraph_Bcast)37 │ │ │ │ +TeXDict begin 15 14 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(4,)g(2025)p │ │ │ │ +2592 100 V 1227 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 │ │ │ │ @@ -6355,35 +6340,34 @@ │ │ │ │ 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 1190 │ │ │ │ -4 v 1354 w Fl(MPI)27 b Fd(:)g Fm(DRAFT)h Fd(F)-7 b(ebruary)26 │ │ │ │ -b(29,)h(2024)p 2711 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 1227 │ │ │ │ +4 v 1392 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(Octob)r(er)g(4,)g(2025)p │ │ │ │ +2673 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 │ │ │ │ @@ -6464,17 +6448,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 1190 4 v 1355 100 a Fl(MPI)27 │ │ │ │ -b Fd(:)g Fm(DRAFT)111 b Fd(F)-7 b(ebruary)26 b(29,)h(2024)p │ │ │ │ -2630 100 V 1190 w Fn(17)307 390 y Ff(\210)42 b Fn(The)23 │ │ │ │ +TeXDict begin 17 16 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(4,)g(2025)p │ │ │ │ +2592 100 V 1227 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 │ │ │ │ @@ -6573,45 +6557,44 @@ │ │ │ │ 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 1190 │ │ │ │ -4 v 1354 w Fl(MPI)27 b Fd(:)g Fm(DRAFT)h Fd(F)-7 b(ebruary)26 │ │ │ │ -b(29,)h(2024)p 2711 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 1227 │ │ │ │ +4 v 1392 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(Octob)r(er)g(4,)g(2025)p │ │ │ │ +2673 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 │ │ │ │ @@ -6674,17 +6657,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 1190 4 v 1355 100 a Fl(MPI)27 │ │ │ │ -b Fd(:)g Fm(DRAFT)111 b Fd(F)-7 b(ebruary)26 b(29,)h(2024)p │ │ │ │ -2630 100 V 1190 w Fn(19)307 390 y Ff(\210)42 b Fn(The)28 │ │ │ │ +TeXDict begin 19 18 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(4,)g(2025)p │ │ │ │ +2592 100 V 1227 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 │ │ │ │ @@ -6777,45 +6760,44 @@ │ │ │ │ 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 1190 │ │ │ │ -4 v 1354 w Fl(MPI)27 b Fd(:)g Fm(DRAFT)h Fd(F)-7 b(ebruary)26 │ │ │ │ -b(29,)h(2024)p 2711 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(they)f(compare)f(the)i(t)n(w)n(o) │ │ │ │ -208 789 y(sym)n(b)r(olic)27 b(factorizations)f(for)h(error.)35 │ │ │ │ -b(Use)27 b(the)h(script)f(\014le)h Fl(do)p 2190 789 V │ │ │ │ -31 w(symbfac)d Fn(for)i(testing.)307 971 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 1104 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 1204 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 1337 y Ff(\210)42 │ │ │ │ -b Fn(The)28 b Fl(inGraphFile)23 b Fn(parameter)j(is)i(the)g(input)g │ │ │ │ -(\014le)g(for)f(the)h Fl(Graph)d Fn(ob)5 b(ject.)307 │ │ │ │ -1469 y Ff(\210)42 b Fn(The)28 b Fl(inETreeFile)23 b Fn(parameter)j(is)i │ │ │ │ -(the)g(input)g(\014le)g(for)f(the)h Fl(ETree)d Fn(ob)5 │ │ │ │ -b(ject.)307 1602 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 │ │ │ │ +TeXDict begin 20 19 bop 0 100 a Fn(20)p 166 100 1227 │ │ │ │ +4 v 1392 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(Octob)r(er)g(4,)g(2025)p │ │ │ │ +2673 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 │ │ │ │ +(they)f(compare)f(the)i(t)n(w)n(o)208 789 y(sym)n(b)r(olic)27 │ │ │ │ +b(factorizations)f(for)h(error.)35 b(Use)27 b(the)h(script)f(\014le)h │ │ │ │ +Fl(do)p 2190 789 V 31 w(symbfac)d Fn(for)i(testing.)307 │ │ │ │ +971 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 1104 │ │ │ │ +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 1204 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 1337 y Ff(\210)42 b Fn(The)28 b Fl(inGraphFile)23 │ │ │ │ +b Fn(parameter)j(is)i(the)g(input)g(\014le)g(for)f(the)h │ │ │ │ +Fl(Graph)d Fn(ob)5 b(ject.)307 1469 y Ff(\210)42 b Fn(The)28 │ │ │ │ +b Fl(inETreeFile)23 b Fn(parameter)j(is)i(the)g(input)g(\014le)g(for)f │ │ │ │ +(the)h Fl(ETree)d Fn(ob)5 b(ject.)307 1602 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: 21 21 │ │ │ │ TeXDict begin 21 20 bop 0 866 a Fo(Index)0 1281 y Fl(DenseMtx)p │ │ │ │ 357 1281 27 4 v 28 w(MPI)p 517 1281 V 30 w(gatherRows\(\))p │ │ │ │ Fn(,)23 b(5)0 1380 y Fl(DenseMtx)p 357 1380 V 28 w(MPI)p │ │ │ │ 517 1380 V 30 w(scatterAddRows\(\))p Fn(,)e(6)0 1480 │ │ │ │ y Fl(DenseMtx)p 357 1480 V 28 w(MPI)p 517 1480 V 30 w(splitByRows\(\))p │ │ │ │ Fn(,)i(3)0 1580 y Fl(DenseMtx)p 357 1580 V 28 w(MPI)p │ │ │ │ ├── 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 February 29, 2024 │ │ │ │ │ + 2 MPI : DRAFT October 4, 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 February 29, 2024 3 │ │ │ │ │ + MPI : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 4 MPI : DRAFT October 4, 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 February 29, 2024 5 │ │ │ │ │ + MPI : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 6 MPI : DRAFT October 4, 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 February 29, 2024 7 │ │ │ │ │ + MPI : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 8 MPI : DRAFT October 4, 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 February 29, 2024 9 │ │ │ │ │ + MPI : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 10 MPI : DRAFT October 4, 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 February 29, 2024 11 │ │ │ │ │ + MPI : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 12 MPI : DRAFT October 4, 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 February 29, 2024 13 │ │ │ │ │ + MPI : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 14 MPI : DRAFT October 4, 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 February 29, 2024 15 │ │ │ │ │ + MPI : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 16 MPI : DRAFT October 4, 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 February 29, 2024 17 │ │ │ │ │ + MPI : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 18 MPI : DRAFT October 4, 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 February 29, 2024 19 │ │ │ │ │ + MPI : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 20 MPI : DRAFT October 4, 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 2024.02.29:1858 │ │ │ │ +%DVIPSSource: TeX output 2025.10.04:1734 │ │ │ │ %%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 │ │ │ │ @@ -1229,23 +1229,23 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 50 /two put │ │ │ │ dup 52 /four put │ │ │ │ -dup 57 /nine put │ │ │ │ +dup 53 /five put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 70 /F put │ │ │ │ -dup 97 /a put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ +dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ -dup 117 /u put │ │ │ │ -dup 121 /y put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1419,95 +1419,85 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA647CD0E2539DFAD9604486DCCFA49 │ │ │ │ -AC96130D106A8F8387633622C3809400D6E8FF9D60877C743502E4D211CEBF62 │ │ │ │ -9A6F91045C22D5D20C5FF677D89983D02E5EE26C71A9EAE0E7C52465DA5A149A │ │ │ │ -9B731C27EC8366BC3E841C0CAE49A33DE164A857365B17B09CAD121C47A980CB │ │ │ │ -C75E1030F6C394EDB46C54B46880D2344127B903FB22684C9CAACE6053DC3BFA │ │ │ │ -4E47C565ECAF19C4295A11BD68CA6D45B5738B932BB3690A8C712904C49C1636 │ │ │ │ -A7702075F2FEA8DB3EB3A3C1216BB769DD0BAF4507A18E3052F2C846B0797933 │ │ │ │ -8CE9BB2DB5DFADAF1B0FC3A22BAB82A0D5D290F7AD950013CFA465BE11C1076D │ │ │ │ -5833FF92321FBF90D9229D3BA09DD18EEC44D9FCF8FCF63CC09D2977BFA798B6 │ │ │ │ -47FB047EA6AF69C7DE570176F5B6C0FED74DEDBF7DDF49550DD84BA14AC09423 │ │ │ │ -F70D5B14F0F8588F1E2FFE0DFE0760E77A9E39DEDAC5C5AE3760722C029B916D │ │ │ │ -96A2A7D1DD6A61F90B4B9806314A668EB7A0E107A3527310A240490453CC18D7 │ │ │ │ -3793B4CF3CE13EA332E7F5C2BACF85AC75FE84693B966BB0F6FB9A179A331C4E │ │ │ │ -55E9EF30E2734E44A88E053CD5E650D7E529E94CB7F8B733E68315ACAC5BEFC5 │ │ │ │ -3FE4F585F875310267865679AB381125C31E9AEB7226DC9F18DA80A9DE2F38A4 │ │ │ │ -51B8F9D5B2FBA0F50D53AE6212AFE41466A594F7A303B4E82F1493C0B8D65756 │ │ │ │ -BE6AF2931E5ADA5CE7D51CB5B1EC916C6C6D674808939331CA66F8181DD2B112 │ │ │ │ -1A12198CCCB6BBF1D40C803E794B65241ACE1E0D30CCA1C6F2D3E1415B98726B │ │ │ │ -9BA303BE2C4C276108CC78C093F1CC85CA454CC38535D1DEBFA341D84E8A5DDF │ │ │ │ -D53D8DD0F4A812B5BA63871BEB3BCE93FBC77AD395914E2CD757546C2BE2D641 │ │ │ │ -FDB12258E1E1D10E1B963EABB265F2C8B2547D48963E1AD3B223B666B46915A1 │ │ │ │ -157F5EA0AB8D8411C07AA2EB5D0EF1A1BA6D81C47473A3D3D6287104C7BF61F8 │ │ │ │ -3BDB64995DE96A65BF2B7288C51ADAA3D373A95C40D5240C5FF397551554AA9E │ │ │ │ -C89C7E45AA7738503CB058EF6AD5052CC78E4445C810C250BF25394B8D7DE82E │ │ │ │ -315C9CCD6E1E9150EC79EE0F354C668AE199C1AFF39C67337A86CB932E8D64E9 │ │ │ │ -389FF3CC08B538492DEED017686DBB9BDEA30FE67FB4EBDB3627C16FD15F243A │ │ │ │ -7FDEB310EFC940E57726E94340472F2C452815927ADE21578C959890216BE504 │ │ │ │ -225BE4B4D2E3B19F5E06B5A0B25AF168C3A2B26F599A829F89C16BD2026E8CC9 │ │ │ │ -8FB3CBB830C3E36C099071A70D0B8834FF2C17364EB50D5C71440CC7BFE02321 │ │ │ │ -8C6ECAC2F7EC1BE39077DB0E8B2B251626A71FD038EB2CF1FC254D98C1535CAA │ │ │ │ -A8C987BC266482BD860A333048E1EDB3DD40A6ECD6DA0088AD9B9640202D89AA │ │ │ │ -0BB9A0ADF63491E67F2E97E35942D77E59B9B8AB0ED28B022EE5CD3449FC5B7A │ │ │ │ -19E38845B488F97D155C4312885E29537EAE97719C65845663480CE79DE8F037 │ │ │ │ -68995C0928FE8AFBEE554F01381EE5187578DF5D2542F26F66A599EE8ECC1F68 │ │ │ │ -FBADF3C2BA968C3CEB86675CF9A6CFD736E1422800D270417D497903DE87F2AE │ │ │ │ -938E39E120E9D3079F512E545E0E2616B84E81FE41392184F96818A7C86BF541 │ │ │ │ -F2E67C48CA56DA838C9FA0FAD538073B9F26319140D1F80EEEBCA190DE660A31 │ │ │ │ -457CAC16E92F87449A3734F9EA751588514865B58DC073658C8A857B5398AAC7 │ │ │ │ -3DC11E069996EF74A3189A07630D5DB87C5E028CD193C086B4D0E8BABC4F2393 │ │ │ │ -235EC96091B16C4A6D97DA1BD30A2D2E71F55869223CA66AD12448B668685F6E │ │ │ │ -06E7888D7F20045C662C4F7994CC7E1CE9AAC33A026716AA0551DF12343F0E22 │ │ │ │ -6E9F4B21C90406CC4997601194EF37A973221D1F4D73DD5666BD297F621C92AA │ │ │ │ -E3F698BC1146ADE754C4120EDF5B3E974D75A237E51DB49D52CD6CC7C9E8BD2D │ │ │ │ -E6849DF8F4DBA86C655D0C57CB54836C8A841C1D814F6B493F96ADBFCAD78D3B │ │ │ │ -430C58EF169950851B6A0B46411488B1A6F6974832787A24C0CDDBE27996EFB1 │ │ │ │ -DB341FA34B1DC6238D978D1E1D34AF3FB375ED6DA9C88699F195C88A54622F7C │ │ │ │ -36DAFC663D85660E756733A7E22F20C6A5D91F06087CAD10F7217BD33F343DC6 │ │ │ │ -F5EB9F16FE763672243EE6AE5CB6063A1D64670E1C059DD52134974E27D9D89C │ │ │ │ -BC658FCD814F20703D610C978FDCD6E2AEA31C18D1A310F215B28199F66C87DB │ │ │ │ -3B23980A393E1DD77AFA3045EDB6942505F3CF6204315A14E5B6BF2E96F3BB1F │ │ │ │ -628D24AC1893BC7DAEF3AA63F2116837F31DB90D872CBD9E5C48BCDEE781D20D │ │ │ │ -C6553D2D15F4E8438A9D1C7CEE1B72BD6AA08DC0AFEAF8B4DC1038707EE4A1BF │ │ │ │ -3D84460E60AF90F55002C1D8EBF0700F7EC3EFC944BEA78D0E0536F3AA6D9A84 │ │ │ │ -604A781AC5ACFEB7E681365315EE11E991C03DA431B65B332AD8F83F6F3AE66C │ │ │ │ -1BF434D3793FB5BCC44E44ACFF2855C2770C4AC678C6ACD6EB071974ACF1AE37 │ │ │ │ -D02C1736C62CC205A2F3488448527EFFA379613A8E6A6D134F4BFBAE6127304D │ │ │ │ -576C900A458E32CD42A4674415E03D8EB5742E71B854B3EDFD271AA214436544 │ │ │ │ -D1BCFD52F439298847E1FA258E5D38384FC85BC4EDC6F9E4431621CF763B137B │ │ │ │ -22DB6E3268B3F78881D55EA7C52ABF23FB73C152B06B708084FE1B00CFE72D9D │ │ │ │ -57B62AEE912E63BBD89D4D13CE896735454F1A16C3D9FB6CDF142CCA9F1C0242 │ │ │ │ -46F62109DF30667DA327F7CF6DC19B880C860C69080597FFCB1793313E202D4F │ │ │ │ -120A7C6B052C2EB7597B71B0985D24FDD2D3918393BF720E762C5DBBC2BB1E91 │ │ │ │ -B04560364EFE5B16EB068E0560FB932E0C617CFB95A166388E99AC4CB020F5BC │ │ │ │ -E24BB77352D7C3B21C37D404051A70FFFA0F726C35501A1FBB411F832CE46A2E │ │ │ │ -B424E26BD4 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFD8CDE285A2827F4659E339460ABEF319FE44D7A91E93CA309E9266E03DA │ │ │ │ +735F5DEF3920C01189BB63C2BD7ED0B92EABB481F123641477CDCCAB9751FB7B │ │ │ │ +F67DA7CE6EB134BC10D0228562BA5A6BFE6940907EF030ABF9EC4A8A0DFEF73D │ │ │ │ +3289E8CB4DC37694F5A656A935D92C72B3D82B012F578A27711B161DE9652ADC │ │ │ │ +71C51E743E4E9A7C6CF6FF16C5D65C1F60954C0858B48FAAC4FBB21988E2A934 │ │ │ │ +AC50C097DDF42C416359647D79F830E1430FB9BB803451A6732D1B5CAB817C1B │ │ │ │ +673B3077D9A180F184267E9990C087BCDEBC8EB8B889934DD0EB63C2EBCED4A3 │ │ │ │ +83A0D6A365412CFF610EF7BD5F82B02AA293F1D2F868768CDE9B801C929B4A38 │ │ │ │ +64E20C70BC4041F837AD15423517F7336A067D140A2C7906DC5D45885FFB3B69 │ │ │ │ +724E5B9B138BD15A9359EB25D14BC4193E529D1A49FEB0DC1015BF94CEBBD5E0 │ │ │ │ +EA148B185C53E12BD9FA6DBC097D789A73E832F02F55080D8ED6087F5952EA78 │ │ │ │ +250A4C65CE4C4013554A031446D2092D813C4CB1A605D97A40CF867F656ECD1C │ │ │ │ +C23F80230AD1E449AA8B4007134F71156719206441D92B1A6DD25101ABF69F70 │ │ │ │ +538CCCE216376E1BD6E423986BD4E83B1975B15092D4E19F885672F9E7C02485 │ │ │ │ +E02DA0F4243D324A5983D1D46444E5F6573F699E4F2A3395EF0EB7808B7D4D62 │ │ │ │ +690FD033E93AA553082273636503DA4BBBBFA6D127CE10424DD1DDF4F879305C │ │ │ │ +14F64180E7851D091B3220DFC70CAA44716B8F7F0C6FBEDB167801DED77F9E69 │ │ │ │ +E9B31CD2D8044DB946E511162976C34DE27F2BB974B70509005562A0A21317B7 │ │ │ │ +46D826A31C476C8F9A778F941FF5956BA2D765B1AD0AC4BC7AE1CD8A2A81F039 │ │ │ │ +06EB13EBD099BBDB2EBDB54D459C288EA69FB0018CE9255BBFB08C1F90FF30BD │ │ │ │ +C971DA7FDB193281B8F967F21AB42F13F36085AC9EC0D6B6B448C8F289B0AD70 │ │ │ │ +DB521A4755ECF9CA594741E5C674220C21C265EF3BAE594197B00048C8D4DB73 │ │ │ │ +4AC47B6A86EAC7EECD042C8E23C347F8C9FCB870473C1FBD91C298174BCBF1A9 │ │ │ │ +7B366C570A9A04A433495FBC9FD0FFC22A0E8181424C0F038ED97AD5054B10CC │ │ │ │ +1CD5BA0719DD0B4F4F18932AE87FF8B8C1CF0C7482B7847049761505DCD85146 │ │ │ │ +4EE5CB53993A9449CD05233E961BD49AE92D308E2065D6C6BF038538039AA56A │ │ │ │ +C59D424BE3175427337E16892D3920598D518423E145C6B2DD3881F338845F0D │ │ │ │ +16C47AA0D9C2D6DE99C6A302D567ACD6F98BF38223F1890E099C8F93348FFDAA │ │ │ │ +C2D3440187C8FED87C1A891EF11EFA7168EC47F72AF8BC5BE1B88B1084E704F5 │ │ │ │ +82099F1A79E556D94CC38851C97DC3864945A7470F1389BCF608BADAE45B236D │ │ │ │ +2934A20FFBCF169BF84DF496B07E7F1D9002E62B030337642804403DF7E4B3FF │ │ │ │ +C5A421EE0033BA06C50A041FBFE8F81AFC145664E2976505EB14859CF0377EBA │ │ │ │ +EA604CF8BFB5F9ADB9A7ED56E6F0F919E791D57C7232241C892EAC3E55D2D03B │ │ │ │ +FF43B9DAB7B1D8C6588D6D3503F49E80121E52254431B308752A936E0B51124D │ │ │ │ +C7F23C316BA6FA73E6BC47EB9550003E1393C68360067C094C65C0DD17214FA0 │ │ │ │ +45FF0F9C3E0AE4C81093752D23EA95E163C98EC04873ECE3FB0882567329525C │ │ │ │ +0A3937B16CA72B5EB6D2DC10C1B485C0BA939587AFEBB6D837A40401C666BC1C │ │ │ │ +F3344FBAB3E48BEE18F3AF5CDB33BA63778D373A851333C8C34E2F35AB94E8B4 │ │ │ │ +FF7E62A92ED83B872894E0A17209E14CF61269204A35A4BC8C7EE4B16F19E91F │ │ │ │ +669C4EFCECB187F6C7FAF92B4E14E400C6B3C81679D4A7196D66DB1E897DDA42 │ │ │ │ +47CC2848B46D581A95EEF85AB528E8CDEEB275D1E1FE197A3A08D36406E2DADF │ │ │ │ +A87D817AF18B5525F89B7C2E584F4A1254A1FC71E749999A2152870631A69CB6 │ │ │ │ +666EBD6BB3366A598F6592040D0E82B9D866DF0A76C362E76C2804D108A0C148 │ │ │ │ +51F42E9E0ABD52CC2D02B156B63AFD03313AFC80EACC83DF9B59F05FD798951D │ │ │ │ +FCF5335636DFC6561910ACE0AEC47F74CFD302EB7421D28AAAC8FF82B7CE2B2A │ │ │ │ +340B8BCE09F57BFCBC77F91096D97A85726E68846398C8C9C8D3A65A252AE8FB │ │ │ │ +166750C244963BC61E2236BAAC529FABD6FC774550096374A8DB81B6AF1EA843 │ │ │ │ +27F671C0045D629E3734EF037447C4763514FD1C4AE858A494AFC23A64C82149 │ │ │ │ +F4C0A7023B3865B84FAC2DC88D1553DCEBA3D8FB5DBC1103123F6B8CB5B3A399 │ │ │ │ +B665B26B001BF1E4BFABE42BFF6B02D69FA88D5CBCA5A11D5B48CFB4EAE60558 │ │ │ │ +5FBE254AD3BE01761CD4995E766E172D768621223505FD6AA8F89FC042EB814C │ │ │ │ +34373DAEC4FAAF71C0752F814154C5299F751CE7E0F9C673D2E448D0204C214C │ │ │ │ +C04DC34671FBEF72350FFBA263662E86A0D3795E310153AAF4C8A2623E167E6E │ │ │ │ +1F13A9BA485D5DDFC451D691DBA7C49E20354A7AD79D89F7EDE24F0D5B48B27D │ │ │ │ +568D01EF2555504196C09841F5970D8CF6C5D47FFFCF18AE6B2A485342000AAD │ │ │ │ +1F922FBEF7C98E0965609C89240E7B131A59551F57CD5C92097FCE75F5D2778F │ │ │ │ +F9ACF43A3273551363442C8C539205903A835C744A4AA953545506081D3D231A │ │ │ │ +A140E01F280BC42A3C35EDAD5F6B8CE6E51C68E41CA813710864ED880FCE846C │ │ │ │ +1B66D27CC2DBCDC2B1B96A12490BD76D67A415D4A6595CD9B19D3104A83D2C82 │ │ │ │ +C46DCD2C027F0565EDB83E54FF99498194D3140E55E8EE65EBDEAC5409B5616A │ │ │ │ +73141DA2D581E300A6057F4301A02DD160AB3E55A116313525122D0608816AA8 │ │ │ │ +4712EEF3D6FE8C893DF37D │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -5202,16 +5192,16 @@ │ │ │ │ 51 3[51 51 4[51 1[51 51 51 3[51 13[51 5[51 3[51 4[51 │ │ │ │ 68[{}15 99.6264 /CMTT12 rf /Fc 131[112 1[50 59 59 1[59 │ │ │ │ 62 44 44 46 1[62 56 62 93 31 1[34 31 62 56 34 51 62 50 │ │ │ │ 62 54 11[86 5[84 5[42 3[74 2[80 7[31 4[56 56 56 56 56 │ │ │ │ 2[31 33[62 12[{}37 99.6264 /CMBX12 rf /Fd 134[71 2[71 │ │ │ │ 75 52 53 55 1[75 67 75 112 2[41 37 75 67 41 61 75 60 │ │ │ │ 75 65 13[75 2[92 11[103 14[67 67 67 67 67 2[37 46[{}29 │ │ │ │ -119.552 /CMBX12 rf /Fe 134[48 3[51 2[36 12[40 2[51 45 │ │ │ │ -26[59 11[25 45 4[45 1[45 1[45 3[25 44[{}13 90.9091 /CMSL10 │ │ │ │ +119.552 /CMBX12 rf /Fe 139[35 1[36 2[45 9[40 1[40 51 │ │ │ │ +18[71 20[25 4[45 45 1[45 1[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 │ │ │ │ @@ -5325,58 +5315,58 @@ │ │ │ │ 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 1116 4 v │ │ │ │ -1298 w Fn(MSMD)29 b Fe(:)i Fk(DRAFT)f Fe(F)-8 b(ebruary)30 │ │ │ │ -b(29,)i(2024)p 2784 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 2001 896 29 4 v 33 │ │ │ │ -w(order\(\))p Fo(.)65 b(It)40 b(orders)e(the)i(v)m(ertices)h(b)m(y)e │ │ │ │ -Fk(stages)p Fo(,)j(i.e.)0 1009 y(v)m(ertices)32 b(in)f(stage)h │ │ │ │ -Fj(k)i Fo(will)d(b)s(e)g(ordered)f(b)s(efore)g(v)m(ertices)j(in)d │ │ │ │ -(stage)i Fj(k)24 b Fo(+)c(1.)43 b(Inside)30 b(eac)m(h)i │ │ │ │ -Fk(stage)f Fo(the)g(v)m(ertices)i(are)0 1122 y(ordered)28 │ │ │ │ -b(b)m(y)g Fk(steps)p Fo(.)40 b(A)m(t)29 b(eac)m(h)h(step)e(an)g(indep)s │ │ │ │ -(enden)m(t)f(set)h(of)h(v)m(ertices)g(is)f(eliminated,)i(and)e(the)g(c) │ │ │ │ -m(hoice)i(is)e(based)0 1235 y(on)35 b(their)h(priorities.)56 │ │ │ │ -b(When)35 b(the)h(ordering)f(is)g(\014nished)f(one)i(can)f(extract)i(p) │ │ │ │ -s(erm)m(utation)f(v)m(ectors)h(of)e(a)h(fron)m(t)0 1348 │ │ │ │ -y(tree.)141 1484 y(Here)22 b(are)f(three)h(examples)g(of)f(ho)m(w)g │ │ │ │ -(stages)i(de\014ne)d(an)h(ordering)g(metho)s(d.)37 b(\(These)22 │ │ │ │ -b(metho)s(ds)e(are)i(supp)s(orted)0 1596 y(b)m(y)30 b(the)h(presen)m(t) │ │ │ │ -f Fn(MSMD)f Fo(ob)5 b(ject\).)137 1797 y Fm(\210)45 b │ │ │ │ -Fo(Set)d(the)g(stage)h(of)e(eac)m(h)i(v)m(ertex)g(to)f(b)s(e)f(zero)h │ │ │ │ -(and)f(w)m(e)h(ha)m(v)m(e)h(a)e(simple)h(minim)m(um)f(degree)h │ │ │ │ -(\(priorit)m(y\))227 1910 y(ordering.)137 2094 y Fm(\210)j │ │ │ │ -Fo(Giv)m(en)30 b(a)g(domain/Sc)m(h)m(ur)f(complemen)m(t)i(partition)e │ │ │ │ -(or)h(a)f(domain/separator)i(tree,)f(w)m(e)g(can)f(\014nd)f(a)i(m)m │ │ │ │ -(ul-)227 2207 y(tisection)h(ordering)e(b)m(y)g(setting)h(the)f(stage)h │ │ │ │ -(of)f(a)h(v)m(ertex)g(to)g(b)s(e)e(zero)i(if)f(it)g(is)g(a)h(domain)f │ │ │ │ -(or)f(one)i(if)f(it)g(is)g(in)227 2320 y(a)i(separator.)137 │ │ │ │ -2503 y Fm(\210)45 b Fo(Giv)m(en)g(a)f(domain/separator)h(tree,)k(w)m(e) │ │ │ │ -44 b(can)g(\014nd)f(an)h(incomplete)h(nested)f(dissection)g(ordering)g │ │ │ │ -(b)m(y)227 2616 y(sp)s(ecifying)30 b(the)h(stage)h(of)e(a)h(v)m(ertex)h │ │ │ │ -(to)f(b)s(e)f(the)g(lev)m(el)i(of)f(the)f(separator)h(or)g(domain)f │ │ │ │ -(that)h(con)m(tains)g(it.)0 2817 y(Here)g(are)g(three)f(sligh)m(tly)i │ │ │ │ -(more)e(complicated)j(examples.)137 3018 y Fm(\210)45 │ │ │ │ -b Fo(Order)34 b(the)h(v)m(ertices)h(in)f(the)g(domains,)h(then)e(order) │ │ │ │ -h(the)g(Sc)m(h)m(ur)f(complemen)m(t)i(graph)e(b)s(oth)g(b)m(y)h(nested) │ │ │ │ -227 3131 y(dissection)27 b(and)f(minim)m(um)g(degree,)i(and)e(then)g │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fo(2)p 136 100 1157 4 v │ │ │ │ +1339 w Fn(MSMD)29 b Fe(:)i Fk(DRAFT)f Fe(Octob)s(er)g(4,)h(2025)p │ │ │ │ +2743 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 │ │ │ │ +2001 896 29 4 v 33 w(order\(\))p Fo(.)65 b(It)40 b(orders)e(the)i(v)m │ │ │ │ +(ertices)h(b)m(y)e Fk(stages)p Fo(,)j(i.e.)0 1009 y(v)m(ertices)32 │ │ │ │ +b(in)f(stage)h Fj(k)i Fo(will)d(b)s(e)g(ordered)f(b)s(efore)g(v)m │ │ │ │ +(ertices)j(in)d(stage)i Fj(k)24 b Fo(+)c(1.)43 b(Inside)30 │ │ │ │ +b(eac)m(h)i Fk(stage)f Fo(the)g(v)m(ertices)i(are)0 1122 │ │ │ │ +y(ordered)28 b(b)m(y)g Fk(steps)p Fo(.)40 b(A)m(t)29 │ │ │ │ +b(eac)m(h)h(step)e(an)g(indep)s(enden)m(t)f(set)h(of)h(v)m(ertices)g │ │ │ │ +(is)f(eliminated,)i(and)e(the)g(c)m(hoice)i(is)e(based)0 │ │ │ │ +1235 y(on)35 b(their)h(priorities.)56 b(When)35 b(the)h(ordering)f(is)g │ │ │ │ +(\014nished)f(one)i(can)f(extract)i(p)s(erm)m(utation)f(v)m(ectors)h │ │ │ │ +(of)e(a)h(fron)m(t)0 1348 y(tree.)141 1484 y(Here)22 │ │ │ │ +b(are)f(three)h(examples)g(of)f(ho)m(w)g(stages)i(de\014ne)d(an)h │ │ │ │ +(ordering)g(metho)s(d.)37 b(\(These)22 b(metho)s(ds)e(are)i(supp)s │ │ │ │ +(orted)0 1596 y(b)m(y)30 b(the)h(presen)m(t)f Fn(MSMD)f │ │ │ │ +Fo(ob)5 b(ject\).)137 1797 y Fm(\210)45 b Fo(Set)d(the)g(stage)h(of)e │ │ │ │ +(eac)m(h)i(v)m(ertex)g(to)f(b)s(e)f(zero)h(and)f(w)m(e)h(ha)m(v)m(e)h │ │ │ │ +(a)e(simple)h(minim)m(um)f(degree)h(\(priorit)m(y\))227 │ │ │ │ +1910 y(ordering.)137 2094 y Fm(\210)j Fo(Giv)m(en)30 │ │ │ │ +b(a)g(domain/Sc)m(h)m(ur)f(complemen)m(t)i(partition)e(or)h(a)f │ │ │ │ +(domain/separator)i(tree,)f(w)m(e)g(can)f(\014nd)f(a)i(m)m(ul-)227 │ │ │ │ +2207 y(tisection)h(ordering)e(b)m(y)g(setting)h(the)f(stage)h(of)f(a)h │ │ │ │ +(v)m(ertex)g(to)g(b)s(e)e(zero)i(if)f(it)g(is)g(a)h(domain)f(or)f(one)i │ │ │ │ +(if)f(it)g(is)g(in)227 2320 y(a)i(separator.)137 2503 │ │ │ │ +y Fm(\210)45 b Fo(Giv)m(en)g(a)f(domain/separator)h(tree,)k(w)m(e)44 │ │ │ │ +b(can)g(\014nd)f(an)h(incomplete)h(nested)f(dissection)g(ordering)g(b)m │ │ │ │ +(y)227 2616 y(sp)s(ecifying)30 b(the)h(stage)h(of)e(a)h(v)m(ertex)h(to) │ │ │ │ +f(b)s(e)f(the)g(lev)m(el)i(of)f(the)f(separator)h(or)g(domain)f(that)h │ │ │ │ +(con)m(tains)g(it.)0 2817 y(Here)g(are)g(three)f(sligh)m(tly)i(more)e │ │ │ │ +(complicated)j(examples.)137 3018 y Fm(\210)45 b Fo(Order)34 │ │ │ │ +b(the)h(v)m(ertices)h(in)f(the)g(domains,)h(then)e(order)h(the)g(Sc)m │ │ │ │ +(h)m(ur)f(complemen)m(t)i(graph)e(b)s(oth)g(b)m(y)h(nested)227 │ │ │ │ +3131 y(dissection)27 b(and)f(minim)m(um)g(degree,)i(and)e(then)g │ │ │ │ (splice)h(the)f(b)s(etter)h(of)f(the)h(t)m(w)m(o)g(orderings)f │ │ │ │ (together)i(with)227 3244 y(the)j(ordering)f(of)g(the)h(domain)f(v)m │ │ │ │ (ertices.)137 3427 y Fm(\210)45 b Fo(Apply)30 b(the)h(ab)s(o)m(v)m(e)g │ │ │ │ (algorithm)h(to)f(the)f(Sc)m(h)m(ur)g(complemen)m(t)i(graph)d(recursiv) │ │ │ │ m(ely)-8 b(.)137 3611 y Fm(\210)45 b Fo(Since)31 b(m)m(ultisection)h │ │ │ │ (is)e(nothing)g(more)h(than)f(applying)g(minim)m(um)f(degree)i(to)h │ │ │ │ (the)e(Sc)m(h)m(ur)g(complemen)m(t)227 3724 y(graph,)e(randomly)e(p)s │ │ │ │ @@ -5396,17 +5386,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 1116 4 v 1298 100 a Fn(MSMD)29 │ │ │ │ -b Fe(:)h Fk(DRAFT)121 b Fe(F)-8 b(ebruary)31 b(29,)g(2024)p │ │ │ │ -2737 100 V 1116 w Fo(3)137 399 y Fm(\210)45 b Fn(MSMDstageInfo)25 │ │ │ │ +TeXDict begin 3 2 bop 91 100 1157 4 v 1339 100 a Fn(MSMD)29 │ │ │ │ +b Fe(:)h Fk(DRAFT)122 b Fe(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2696 100 V 1157 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 │ │ │ │ @@ -5466,22 +5456,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 1116 4 v │ │ │ │ -1298 w Fn(MSMD)29 b Fe(:)i Fk(DRAFT)f Fe(F)-8 b(ebruary)30 │ │ │ │ -b(29,)i(2024)p 2784 100 V 227 399 a Fo(The)e(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 1157 4 v │ │ │ │ +1339 w Fn(MSMD)29 b Fe(:)i Fk(DRAFT)f Fe(Octob)s(er)g(4,)h(2025)p │ │ │ │ +2743 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 │ │ │ │ @@ -5521,17 +5511,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 1116 4 v 1298 100 a Fn(MSMD)29 │ │ │ │ -b Fe(:)h Fk(DRAFT)121 b Fe(F)-8 b(ebruary)31 b(29,)g(2024)p │ │ │ │ -2737 100 V 1116 w Fo(5)0 399 y Fc(1.1.3)112 b Fb(MSMDstageInfo)41 │ │ │ │ +TeXDict begin 5 4 bop 91 100 1157 4 v 1339 100 a Fn(MSMD)29 │ │ │ │ +b Fe(:)h Fk(DRAFT)122 b Fe(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2696 100 V 1157 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 │ │ │ │ @@ -5573,25 +5563,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 1116 4 v │ │ │ │ -1298 w Fn(MSMD)29 b Fe(:)i Fk(DRAFT)f Fe(F)-8 b(ebruary)30 │ │ │ │ -b(29,)i(2024)p 2784 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 1157 4 v │ │ │ │ +1339 w Fn(MSMD)29 b Fe(:)i Fk(DRAFT)f Fe(Octob)s(er)g(4,)h(2025)p │ │ │ │ +2743 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) │ │ │ │ @@ -5640,17 +5630,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 1116 4 v 1298 100 a Fn(MSMD)29 │ │ │ │ -b Fe(:)h Fk(DRAFT)121 b Fe(F)-8 b(ebruary)31 b(29,)g(2024)p │ │ │ │ -2737 100 V 1116 w Fo(7)0 399 y Fc(1.2.2)112 b(Utilit)m(y)38 │ │ │ │ +TeXDict begin 7 6 bop 91 100 1157 4 v 1339 100 a Fn(MSMD)29 │ │ │ │ +b Fe(:)h Fk(DRAFT)122 b Fe(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2696 100 V 1157 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 │ │ │ │ @@ -5703,25 +5693,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 1116 4 v │ │ │ │ -1298 w Fn(MSMD)29 b Fe(:)i Fk(DRAFT)f Fe(F)-8 b(ebruary)30 │ │ │ │ -b(29,)i(2024)p 2784 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 1157 4 v │ │ │ │ +1339 w Fn(MSMD)29 b Fe(:)i Fk(DRAFT)f Fe(Octob)s(er)g(4,)h(2025)p │ │ │ │ +2743 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 │ │ │ │ @@ -5780,17 +5770,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 1116 4 v 1298 100 a Fn(MSMD)29 │ │ │ │ -b Fe(:)h Fk(DRAFT)121 b Fe(F)-8 b(ebruary)31 b(29,)g(2024)p │ │ │ │ -2737 100 V 1116 w Fo(9)227 399 y(\014lls)j(the)h Fn(IV)f │ │ │ │ +TeXDict begin 9 8 bop 91 100 1157 4 v 1339 100 a Fn(MSMD)29 │ │ │ │ +b Fe(:)h Fk(DRAFT)122 b Fe(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2696 100 V 1157 w Fo(9)227 399 y(\014lls)j(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 │ │ │ │ @@ -5848,39 +5838,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 1093 4 │ │ │ │ -v 1276 w Fn(MSMD)29 b Fe(:)h Fk(DRAFT)h Fe(F)-8 b(ebruary)30 │ │ │ │ -b(29,)h(2024)p 2807 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 1135 4 │ │ │ │ +v 1317 w Fn(MSMD)29 b Fe(:)i Fk(DRAFT)f Fe(Octob)s(er)g(4,)h(2025)p │ │ │ │ +2766 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) │ │ │ │ @@ -5923,17 +5913,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 1093 4 v 1275 100 a Fn(MSMD)29 │ │ │ │ -b Fe(:)i Fk(DRAFT)121 b Fe(F)-8 b(ebruary)30 b(29,)h(2024)p │ │ │ │ -2714 100 V 1093 w Fo(11)0 399 y Fd(1.5)135 b(Driv)l(er)46 │ │ │ │ +TeXDict begin 11 10 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(4,)h(2025)p │ │ │ │ +2673 100 V 1135 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 │ │ │ │ @@ -5995,20 +5985,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 1093 │ │ │ │ -4 v 1276 w Fn(MSMD)29 b Fe(:)h Fk(DRAFT)h Fe(F)-8 b(ebruary)30 │ │ │ │ -b(29,)h(2024)p 2807 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 1135 │ │ │ │ +4 v 1317 w Fn(MSMD)29 b Fe(:)i Fk(DRAFT)f Fe(Octob)s(er)g(4,)h(2025)p │ │ │ │ +2766 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 February 29, 2024 │ │ │ │ │ + 2 MSMD : DRAFT October 4, 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 February 29, 2024 3 │ │ │ │ │ + MSMD : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 4 MSMD : DRAFT October 4, 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 February 29, 2024 5 │ │ │ │ │ + MSMD : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 6 MSMD : DRAFT October 4, 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 February 29, 2024 7 │ │ │ │ │ + MSMD : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 8 MSMD : DRAFT October 4, 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 February 29, 2024 9 │ │ │ │ │ + MSMD : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 10 MSMD : DRAFT October 4, 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 February 29, 2024 11 │ │ │ │ │ + MSMD : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 12 MSMD : DRAFT October 4, 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 2024.02.29:1858 │ │ │ │ +%DVIPSSource: TeX output 2025.10.04:1734 │ │ │ │ %%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 │ │ │ │ @@ -1601,23 +1601,23 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 50 /two put │ │ │ │ dup 52 /four put │ │ │ │ -dup 57 /nine put │ │ │ │ +dup 53 /five put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 70 /F put │ │ │ │ -dup 97 /a put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ +dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ -dup 117 /u put │ │ │ │ -dup 121 /y put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1791,95 +1791,85 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA647CD0E2539DFAD9604486DCCFA49 │ │ │ │ -AC96130D106A8F8387633622C3809400D6E8FF9D60877C743502E4D211CEBF62 │ │ │ │ -9A6F91045C22D5D20C5FF677D89983D02E5EE26C71A9EAE0E7C52465DA5A149A │ │ │ │ -9B731C27EC8366BC3E841C0CAE49A33DE164A857365B17B09CAD121C47A980CB │ │ │ │ -C75E1030F6C394EDB46C54B46880D2344127B903FB22684C9CAACE6053DC3BFA │ │ │ │ -4E47C565ECAF19C4295A11BD68CA6D45B5738B932BB3690A8C712904C49C1636 │ │ │ │ -A7702075F2FEA8DB3EB3A3C1216BB769DD0BAF4507A18E3052F2C846B0797933 │ │ │ │ -8CE9BB2DB5DFADAF1B0FC3A22BAB82A0D5D290F7AD950013CFA465BE11C1076D │ │ │ │ -5833FF92321FBF90D9229D3BA09DD18EEC44D9FCF8FCF63CC09D2977BFA798B6 │ │ │ │ -47FB047EA6AF69C7DE570176F5B6C0FED74DEDBF7DDF49550DD84BA14AC09423 │ │ │ │ -F70D5B14F0F8588F1E2FFE0DFE0760E77A9E39DEDAC5C5AE3760722C029B916D │ │ │ │ -96A2A7D1DD6A61F90B4B9806314A668EB7A0E107A3527310A240490453CC18D7 │ │ │ │ -3793B4CF3CE13EA332E7F5C2BACF85AC75FE84693B966BB0F6FB9A179A331C4E │ │ │ │ -55E9EF30E2734E44A88E053CD5E650D7E529E94CB7F8B733E68315ACAC5BEFC5 │ │ │ │ -3FE4F585F875310267865679AB381125C31E9AEB7226DC9F18DA80A9DE2F38A4 │ │ │ │ -51B8F9D5B2FBA0F50D53AE6212AFE41466A594F7A303B4E82F1493C0B8D65756 │ │ │ │ -BE6AF2931E5ADA5CE7D51CB5B1EC916C6C6D674808939331CA66F8181DD2B112 │ │ │ │ -1A12198CCCB6BBF1D40C803E794B65241ACE1E0D30CCA1C6F2D3E1415B98726B │ │ │ │ -9BA303BE2C4C276108CC78C093F1CC85CA454CC38535D1DEBFA341D84E8A5DDF │ │ │ │ -D53D8DD0F4A812B5BA63871BEB3BCE93FBC77AD395914E2CD757546C2BE2D641 │ │ │ │ -FDB12258E1E1D10E1B963EABB265F2C8B2547D48963E1AD3B223B666B46915A1 │ │ │ │ -157F5EA0AB8D8411C07AA2EB5D0EF1A1BA6D81C47473A3D3D6287104C7BF61F8 │ │ │ │ -3BDB64995DE96A65BF2B7288C51ADAA3D373A95C40D5240C5FF397551554AA9E │ │ │ │ -C89C7E45AA7738503CB058EF6AD5052CC78E4445C810C250BF25394B8D7DE82E │ │ │ │ -315C9CCD6E1E9150EC79EE0F354C668AE199C1AFF39C67337A86CB932E8D64E9 │ │ │ │ -389FF3CC08B538492DEED017686DBB9BDEA30FE67FB4EBDB3627C16FD15F243A │ │ │ │ -7FDEB310EFC940E57726E94340472F2C452815927ADE21578C959890216BE504 │ │ │ │ -225BE4B4D2E3B19F5E06B5A0B25AF168C3A2B26F599A829F89C16BD2026E8CC9 │ │ │ │ -8FB3CBB830C3E36C099071A70D0B8834FF2C17364EB50D5C71440CC7BFE02321 │ │ │ │ -8C6ECAC2F7EC1BE39077DB0E8B2B251626A71FD038EB2CF1FC254D98C1535CAA │ │ │ │ -A8C987BC266482BD860A333048E1EDB3DD40A6ECD6DA0088AD9B9640202D89AA │ │ │ │ -0BB9A0ADF63491E67F2E97E35942D77E59B9B8AB0ED28B022EE5CD3449FC5B7A │ │ │ │ -19E38845B488F97D155C4312885E29537EAE97719C65845663480CE79DE8F037 │ │ │ │ -68995C0928FE8AFBEE554F01381EE5187578DF5D2542F26F66A599EE8ECC1F68 │ │ │ │ -FBADF3C2BA968C3CEB86675CF9A6CFD736E1422800D270417D497903DE87F2AE │ │ │ │ -938E39E120E9D3079F512E545E0E2616B84E81FE41392184F96818A7C86BF541 │ │ │ │ -F2E67C48CA56DA838C9FA0FAD538073B9F26319140D1F80EEEBCA190DE660A31 │ │ │ │ -457CAC16E92F87449A3734F9EA751588514865B58DC073658C8A857B5398AAC7 │ │ │ │ -3DC11E069996EF74A3189A07630D5DB87C5E028CD193C086B4D0E8BABC4F2393 │ │ │ │ -235EC96091B16C4A6D97DA1BD30A2D2E71F55869223CA66AD12448B668685F6E │ │ │ │ -06E7888D7F20045C662C4F7994CC7E1CE9AAC33A026716AA0551DF12343F0E22 │ │ │ │ -6E9F4B21C90406CC4997601194EF37A973221D1F4D73DD5666BD297F621C92AA │ │ │ │ -E3F698BC1146ADE754C4120EDF5B3E974D75A237E51DB49D52CD6CC7C9E8BD2D │ │ │ │ -E6849DF8F4DBA86C655D0C57CB54836C8A841C1D814F6B493F96ADBFCAD78D3B │ │ │ │ -430C58EF169950851B6A0B46411488B1A6F6974832787A24C0CDDBE27996EFB1 │ │ │ │ -DB341FA34B1DC6238D978D1E1D34AF3FB375ED6DA9C88699F195C88A54622F7C │ │ │ │ -36DAFC663D85660E756733A7E22F20C6A5D91F06087CAD10F7217BD33F343DC6 │ │ │ │ -F5EB9F16FE763672243EE6AE5CB6063A1D64670E1C059DD52134974E27D9D89C │ │ │ │ -BC658FCD814F20703D610C978FDCD6E2AEA31C18D1A310F215B28199F66C87DB │ │ │ │ -3B23980A393E1DD77AFA3045EDB6942505F3CF6204315A14E5B6BF2E96F3BB1F │ │ │ │ -628D24AC1893BC7DAEF3AA63F2116837F31DB90D872CBD9E5C48BCDEE781D20D │ │ │ │ -C6553D2D15F4E8438A9D1C7CEE1B72BD6AA08DC0AFEAF8B4DC1038707EE4A1BF │ │ │ │ -3D84460E60AF90F55002C1D8EBF0700F7EC3EFC944BEA78D0E0536F3AA6D9A84 │ │ │ │ -604A781AC5ACFEB7E681365315EE11E991C03DA431B65B332AD8F83F6F3AE66C │ │ │ │ -1BF434D3793FB5BCC44E44ACFF2855C2770C4AC678C6ACD6EB071974ACF1AE37 │ │ │ │ -D02C1736C62CC205A2F3488448527EFFA379613A8E6A6D134F4BFBAE6127304D │ │ │ │ -576C900A458E32CD42A4674415E03D8EB5742E71B854B3EDFD271AA214436544 │ │ │ │ -D1BCFD52F439298847E1FA258E5D38384FC85BC4EDC6F9E4431621CF763B137B │ │ │ │ -22DB6E3268B3F78881D55EA7C52ABF23FB73C152B06B708084FE1B00CFE72D9D │ │ │ │ -57B62AEE912E63BBD89D4D13CE896735454F1A16C3D9FB6CDF142CCA9F1C0242 │ │ │ │ -46F62109DF30667DA327F7CF6DC19B880C860C69080597FFCB1793313E202D4F │ │ │ │ -120A7C6B052C2EB7597B71B0985D24FDD2D3918393BF720E762C5DBBC2BB1E91 │ │ │ │ -B04560364EFE5B16EB068E0560FB932E0C617CFB95A166388E99AC4CB020F5BC │ │ │ │ -E24BB77352D7C3B21C37D404051A70FFFA0F726C35501A1FBB411F832CE46A2E │ │ │ │ -B424E26BD4 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFD8CDE285A2827F4659E339460ABEF319FE44D7A91E93CA309E9266E03DA │ │ │ │ +735F5DEF3920C01189BB63C2BD7ED0B92EABB481F123641477CDCCAB9751FB7B │ │ │ │ +F67DA7CE6EB134BC10D0228562BA5A6BFE6940907EF030ABF9EC4A8A0DFEF73D │ │ │ │ +3289E8CB4DC37694F5A656A935D92C72B3D82B012F578A27711B161DE9652ADC │ │ │ │ +71C51E743E4E9A7C6CF6FF16C5D65C1F60954C0858B48FAAC4FBB21988E2A934 │ │ │ │ +AC50C097DDF42C416359647D79F830E1430FB9BB803451A6732D1B5CAB817C1B │ │ │ │ +673B3077D9A180F184267E9990C087BCDEBC8EB8B889934DD0EB63C2EBCED4A3 │ │ │ │ +83A0D6A365412CFF610EF7BD5F82B02AA293F1D2F868768CDE9B801C929B4A38 │ │ │ │ +64E20C70BC4041F837AD15423517F7336A067D140A2C7906DC5D45885FFB3B69 │ │ │ │ +724E5B9B138BD15A9359EB25D14BC4193E529D1A49FEB0DC1015BF94CEBBD5E0 │ │ │ │ +EA148B185C53E12BD9FA6DBC097D789A73E832F02F55080D8ED6087F5952EA78 │ │ │ │ +250A4C65CE4C4013554A031446D2092D813C4CB1A605D97A40CF867F656ECD1C │ │ │ │ +C23F80230AD1E449AA8B4007134F71156719206441D92B1A6DD25101ABF69F70 │ │ │ │ +538CCCE216376E1BD6E423986BD4E83B1975B15092D4E19F885672F9E7C02485 │ │ │ │ +E02DA0F4243D324A5983D1D46444E5F6573F699E4F2A3395EF0EB7808B7D4D62 │ │ │ │ +690FD033E93AA553082273636503DA4BBBBFA6D127CE10424DD1DDF4F879305C │ │ │ │ +14F64180E7851D091B3220DFC70CAA44716B8F7F0C6FBEDB167801DED77F9E69 │ │ │ │ +E9B31CD2D8044DB946E511162976C34DE27F2BB974B70509005562A0A21317B7 │ │ │ │ +46D826A31C476C8F9A778F941FF5956BA2D765B1AD0AC4BC7AE1CD8A2A81F039 │ │ │ │ +06EB13EBD099BBDB2EBDB54D459C288EA69FB0018CE9255BBFB08C1F90FF30BD │ │ │ │ +C971DA7FDB193281B8F967F21AB42F13F36085AC9EC0D6B6B448C8F289B0AD70 │ │ │ │ +DB521A4755ECF9CA594741E5C674220C21C265EF3BAE594197B00048C8D4DB73 │ │ │ │ +4AC47B6A86EAC7EECD042C8E23C347F8C9FCB870473C1FBD91C298174BCBF1A9 │ │ │ │ +7B366C570A9A04A433495FBC9FD0FFC22A0E8181424C0F038ED97AD5054B10CC │ │ │ │ +1CD5BA0719DD0B4F4F18932AE87FF8B8C1CF0C7482B7847049761505DCD85146 │ │ │ │ +4EE5CB53993A9449CD05233E961BD49AE92D308E2065D6C6BF038538039AA56A │ │ │ │ +C59D424BE3175427337E16892D3920598D518423E145C6B2DD3881F338845F0D │ │ │ │ +16C47AA0D9C2D6DE99C6A302D567ACD6F98BF38223F1890E099C8F93348FFDAA │ │ │ │ +C2D3440187C8FED87C1A891EF11EFA7168EC47F72AF8BC5BE1B88B1084E704F5 │ │ │ │ +82099F1A79E556D94CC38851C97DC3864945A7470F1389BCF608BADAE45B236D │ │ │ │ +2934A20FFBCF169BF84DF496B07E7F1D9002E62B030337642804403DF7E4B3FF │ │ │ │ +C5A421EE0033BA06C50A041FBFE8F81AFC145664E2976505EB14859CF0377EBA │ │ │ │ +EA604CF8BFB5F9ADB9A7ED56E6F0F919E791D57C7232241C892EAC3E55D2D03B │ │ │ │ +FF43B9DAB7B1D8C6588D6D3503F49E80121E52254431B308752A936E0B51124D │ │ │ │ +C7F23C316BA6FA73E6BC47EB9550003E1393C68360067C094C65C0DD17214FA0 │ │ │ │ +45FF0F9C3E0AE4C81093752D23EA95E163C98EC04873ECE3FB0882567329525C │ │ │ │ +0A3937B16CA72B5EB6D2DC10C1B485C0BA939587AFEBB6D837A40401C666BC1C │ │ │ │ +F3344FBAB3E48BEE18F3AF5CDB33BA63778D373A851333C8C34E2F35AB94E8B4 │ │ │ │ +FF7E62A92ED83B872894E0A17209E14CF61269204A35A4BC8C7EE4B16F19E91F │ │ │ │ +669C4EFCECB187F6C7FAF92B4E14E400C6B3C81679D4A7196D66DB1E897DDA42 │ │ │ │ +47CC2848B46D581A95EEF85AB528E8CDEEB275D1E1FE197A3A08D36406E2DADF │ │ │ │ +A87D817AF18B5525F89B7C2E584F4A1254A1FC71E749999A2152870631A69CB6 │ │ │ │ +666EBD6BB3366A598F6592040D0E82B9D866DF0A76C362E76C2804D108A0C148 │ │ │ │ +51F42E9E0ABD52CC2D02B156B63AFD03313AFC80EACC83DF9B59F05FD798951D │ │ │ │ +FCF5335636DFC6561910ACE0AEC47F74CFD302EB7421D28AAAC8FF82B7CE2B2A │ │ │ │ +340B8BCE09F57BFCBC77F91096D97A85726E68846398C8C9C8D3A65A252AE8FB │ │ │ │ +166750C244963BC61E2236BAAC529FABD6FC774550096374A8DB81B6AF1EA843 │ │ │ │ +27F671C0045D629E3734EF037447C4763514FD1C4AE858A494AFC23A64C82149 │ │ │ │ +F4C0A7023B3865B84FAC2DC88D1553DCEBA3D8FB5DBC1103123F6B8CB5B3A399 │ │ │ │ +B665B26B001BF1E4BFABE42BFF6B02D69FA88D5CBCA5A11D5B48CFB4EAE60558 │ │ │ │ +5FBE254AD3BE01761CD4995E766E172D768621223505FD6AA8F89FC042EB814C │ │ │ │ +34373DAEC4FAAF71C0752F814154C5299F751CE7E0F9C673D2E448D0204C214C │ │ │ │ +C04DC34671FBEF72350FFBA263662E86A0D3795E310153AAF4C8A2623E167E6E │ │ │ │ +1F13A9BA485D5DDFC451D691DBA7C49E20354A7AD79D89F7EDE24F0D5B48B27D │ │ │ │ +568D01EF2555504196C09841F5970D8CF6C5D47FFFCF18AE6B2A485342000AAD │ │ │ │ +1F922FBEF7C98E0965609C89240E7B131A59551F57CD5C92097FCE75F5D2778F │ │ │ │ +F9ACF43A3273551363442C8C539205903A835C744A4AA953545506081D3D231A │ │ │ │ +A140E01F280BC42A3C35EDAD5F6B8CE6E51C68E41CA813710864ED880FCE846C │ │ │ │ +1B66D27CC2DBCDC2B1B96A12490BD76D67A415D4A6595CD9B19D3104A83D2C82 │ │ │ │ +C46DCD2C027F0565EDB83E54FF99498194D3140E55E8EE65EBDEAC5409B5616A │ │ │ │ +73141DA2D581E300A6057F4301A02DD160AB3E55A116313525122D0608816AA8 │ │ │ │ +4712EEF3D6FE8C893DF37D │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -5013,16 +5003,16 @@ │ │ │ │ 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 134[44 │ │ │ │ -3[46 2[33 12[37 2[46 42 26[54 11[23 42 4[42 1[42 1[42 │ │ │ │ +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 4[42 42 1[42 1[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 │ │ │ │ @@ -5147,19 +5137,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 988 4 v │ │ │ │ -1153 w Fi(Multithreaded)22 b Fg(:)37 b Fh(DRAFT)27 b │ │ │ │ -Fg(F)-7 b(ebruary)27 b(29,)g(2024)p 2913 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 1025 4 v │ │ │ │ +1190 w Fi(Multithreaded)23 b Fg(:)37 b Fh(DRAFT)27 b │ │ │ │ +Fg(Octob)r(er)g(4,)g(2025)p 2875 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 │ │ │ │ @@ -5265,19 +5255,19 @@ │ │ │ │ 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 988 4 v 1153 100 a Fi(Multithreaded)23 │ │ │ │ -b Fg(:)37 b Fh(DRAFT)110 b Fg(F)-7 b(ebruary)26 b(29,)h(2024)p │ │ │ │ -2873 100 V 988 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 │ │ │ │ +TeXDict begin 3 2 bop 83 100 1025 4 v 1191 100 a Fi(Multithreaded)22 │ │ │ │ +b Fg(:)37 b Fh(DRAFT)110 b Fg(Octob)r(er)27 b(4,)h(2025)p │ │ │ │ +2836 100 V 1025 w Fn(3)208 390 y(arra)n(y)c(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 │ │ │ │ @@ -5375,19 +5365,19 @@ │ │ │ │ (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 988 4 v │ │ │ │ -1153 w Fi(Multithreaded)22 b Fg(:)37 b Fh(DRAFT)27 b │ │ │ │ -Fg(F)-7 b(ebruary)27 b(29,)g(2024)p 2913 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 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fn(4)p 125 100 1025 4 v │ │ │ │ +1190 w Fi(Multithreaded)23 b Fg(:)37 b Fh(DRAFT)27 b │ │ │ │ +Fg(Octob)r(er)g(4,)g(2025)p 2875 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 │ │ │ │ @@ -5456,17 +5446,17 @@ │ │ │ │ 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 988 4 v 1153 100 a Fi(Multithreaded)23 │ │ │ │ -b Fg(:)37 b Fh(DRAFT)110 b Fg(F)-7 b(ebruary)26 b(29,)h(2024)p │ │ │ │ -2873 100 V 988 w Fn(5)208 390 y(from)k Fi(mtxB)g Fn(and)h(en)n(tries)g │ │ │ │ +TeXDict begin 5 4 bop 83 100 1025 4 v 1191 100 a Fi(Multithreaded)22 │ │ │ │ +b Fg(:)37 b Fh(DRAFT)110 b Fg(Octob)r(er)27 b(4,)h(2025)p │ │ │ │ +2836 100 V 1025 w Fn(5)208 390 y(from)j 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 │ │ │ │ @@ -5546,100 +5536,100 @@ │ │ │ │ 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 988 4 v │ │ │ │ -1153 w Fi(Multithreaded)22 b Fg(:)37 b Fh(DRAFT)27 b │ │ │ │ -Fg(F)-7 b(ebruary)27 b(29,)g(2024)p 2913 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 1025 4 v │ │ │ │ +1190 w Fi(Multithreaded)23 b Fg(:)37 b Fh(DRAFT)27 b │ │ │ │ +Fg(Octob)r(er)g(4,)g(2025)p 2875 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 988 4 v 1153 100 a Fi(Multithreaded)23 │ │ │ │ -b Fg(:)37 b Fh(DRAFT)110 b Fg(F)-7 b(ebruary)26 b(29,)h(2024)p │ │ │ │ -2873 100 V 988 w Fn(7)307 390 y Fc(\210)42 b Fn(The)32 │ │ │ │ +TeXDict begin 7 6 bop 83 100 1025 4 v 1191 100 a Fi(Multithreaded)22 │ │ │ │ +b Fg(:)37 b Fh(DRAFT)110 b Fg(Octob)r(er)27 b(4,)h(2025)p │ │ │ │ +2836 100 V 1025 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 │ │ │ │ @@ -5716,22 +5706,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 988 4 v │ │ │ │ -1153 w Fi(Multithreaded)22 b Fg(:)37 b Fh(DRAFT)27 b │ │ │ │ -Fg(F)-7 b(ebruary)27 b(29,)g(2024)p 2913 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 1025 4 v │ │ │ │ +1190 w Fi(Multithreaded)23 b Fg(:)37 b Fh(DRAFT)27 b │ │ │ │ +Fg(Octob)r(er)g(4,)g(2025)p 2875 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 │ │ │ │ @@ -5810,17 +5800,17 @@ │ │ │ │ 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 988 4 v 1153 100 a Fi(Multithreaded)23 │ │ │ │ -b Fg(:)37 b Fh(DRAFT)110 b Fg(F)-7 b(ebruary)26 b(29,)h(2024)p │ │ │ │ -2873 100 V 988 w Fn(9)456 390 y Fa({)41 b Fi(sparsityflag)e(=)k(0)g │ │ │ │ +TeXDict begin 9 8 bop 83 100 1025 4 v 1191 100 a Fi(Multithreaded)22 │ │ │ │ +b Fg(:)37 b Fh(DRAFT)110 b Fg(Octob)r(er)27 b(4,)h(2025)p │ │ │ │ +2836 100 V 1025 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 │ │ │ │ @@ -5905,21 +5895,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 967 4 │ │ │ │ -v 1132 w Fi(Multithreaded)22 b Fg(:)37 b Fh(DRAFT)27 │ │ │ │ -b Fg(F)-7 b(ebruary)27 b(29,)f(2024)p 2933 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 1005 4 │ │ │ │ +v 1169 w Fi(Multithreaded)23 b Fg(:)36 b Fh(DRAFT)28 │ │ │ │ +b Fg(Octob)r(er)f(4,)g(2025)p 2896 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 February 29, 2024 │ │ │ │ │ + 2 Multithreaded : DRAFT October 4, 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 February 29, 2024 3 │ │ │ │ │ + Multithreaded : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 4 Multithreaded : DRAFT October 4, 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 February 29, 2024 5 │ │ │ │ │ + Multithreaded : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 6 Multithreaded : DRAFT October 4, 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 February 29, 2024 7 │ │ │ │ │ + Multithreaded : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 8 Multithreaded : DRAFT October 4, 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 February 29, 2024 9 │ │ │ │ │ + Multithreaded : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 10 Multithreaded : DRAFT October 4, 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 2024.02.29:1858 │ │ │ │ +%DVIPSSource: TeX output 2025.10.04:1734 │ │ │ │ %%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 │ │ │ │ @@ -1543,23 +1543,23 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 50 /two put │ │ │ │ dup 52 /four put │ │ │ │ -dup 57 /nine put │ │ │ │ +dup 53 /five put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 70 /F put │ │ │ │ -dup 97 /a put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ +dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ -dup 117 /u put │ │ │ │ -dup 121 /y put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1733,95 +1733,85 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA647CD0E2539DFAD9604486DCCFA49 │ │ │ │ -AC96130D106A8F8387633622C3809400D6E8FF9D60877C743502E4D211CEBF62 │ │ │ │ -9A6F91045C22D5D20C5FF677D89983D02E5EE26C71A9EAE0E7C52465DA5A149A │ │ │ │ -9B731C27EC8366BC3E841C0CAE49A33DE164A857365B17B09CAD121C47A980CB │ │ │ │ -C75E1030F6C394EDB46C54B46880D2344127B903FB22684C9CAACE6053DC3BFA │ │ │ │ -4E47C565ECAF19C4295A11BD68CA6D45B5738B932BB3690A8C712904C49C1636 │ │ │ │ -A7702075F2FEA8DB3EB3A3C1216BB769DD0BAF4507A18E3052F2C846B0797933 │ │ │ │ -8CE9BB2DB5DFADAF1B0FC3A22BAB82A0D5D290F7AD950013CFA465BE11C1076D │ │ │ │ -5833FF92321FBF90D9229D3BA09DD18EEC44D9FCF8FCF63CC09D2977BFA798B6 │ │ │ │ -47FB047EA6AF69C7DE570176F5B6C0FED74DEDBF7DDF49550DD84BA14AC09423 │ │ │ │ -F70D5B14F0F8588F1E2FFE0DFE0760E77A9E39DEDAC5C5AE3760722C029B916D │ │ │ │ -96A2A7D1DD6A61F90B4B9806314A668EB7A0E107A3527310A240490453CC18D7 │ │ │ │ -3793B4CF3CE13EA332E7F5C2BACF85AC75FE84693B966BB0F6FB9A179A331C4E │ │ │ │ -55E9EF30E2734E44A88E053CD5E650D7E529E94CB7F8B733E68315ACAC5BEFC5 │ │ │ │ -3FE4F585F875310267865679AB381125C31E9AEB7226DC9F18DA80A9DE2F38A4 │ │ │ │ -51B8F9D5B2FBA0F50D53AE6212AFE41466A594F7A303B4E82F1493C0B8D65756 │ │ │ │ -BE6AF2931E5ADA5CE7D51CB5B1EC916C6C6D674808939331CA66F8181DD2B112 │ │ │ │ -1A12198CCCB6BBF1D40C803E794B65241ACE1E0D30CCA1C6F2D3E1415B98726B │ │ │ │ -9BA303BE2C4C276108CC78C093F1CC85CA454CC38535D1DEBFA341D84E8A5DDF │ │ │ │ -D53D8DD0F4A812B5BA63871BEB3BCE93FBC77AD395914E2CD757546C2BE2D641 │ │ │ │ -FDB12258E1E1D10E1B963EABB265F2C8B2547D48963E1AD3B223B666B46915A1 │ │ │ │ -157F5EA0AB8D8411C07AA2EB5D0EF1A1BA6D81C47473A3D3D6287104C7BF61F8 │ │ │ │ -3BDB64995DE96A65BF2B7288C51ADAA3D373A95C40D5240C5FF397551554AA9E │ │ │ │ -C89C7E45AA7738503CB058EF6AD5052CC78E4445C810C250BF25394B8D7DE82E │ │ │ │ -315C9CCD6E1E9150EC79EE0F354C668AE199C1AFF39C67337A86CB932E8D64E9 │ │ │ │ -389FF3CC08B538492DEED017686DBB9BDEA30FE67FB4EBDB3627C16FD15F243A │ │ │ │ -7FDEB310EFC940E57726E94340472F2C452815927ADE21578C959890216BE504 │ │ │ │ -225BE4B4D2E3B19F5E06B5A0B25AF168C3A2B26F599A829F89C16BD2026E8CC9 │ │ │ │ -8FB3CBB830C3E36C099071A70D0B8834FF2C17364EB50D5C71440CC7BFE02321 │ │ │ │ -8C6ECAC2F7EC1BE39077DB0E8B2B251626A71FD038EB2CF1FC254D98C1535CAA │ │ │ │ -A8C987BC266482BD860A333048E1EDB3DD40A6ECD6DA0088AD9B9640202D89AA │ │ │ │ -0BB9A0ADF63491E67F2E97E35942D77E59B9B8AB0ED28B022EE5CD3449FC5B7A │ │ │ │ -19E38845B488F97D155C4312885E29537EAE97719C65845663480CE79DE8F037 │ │ │ │ -68995C0928FE8AFBEE554F01381EE5187578DF5D2542F26F66A599EE8ECC1F68 │ │ │ │ -FBADF3C2BA968C3CEB86675CF9A6CFD736E1422800D270417D497903DE87F2AE │ │ │ │ -938E39E120E9D3079F512E545E0E2616B84E81FE41392184F96818A7C86BF541 │ │ │ │ -F2E67C48CA56DA838C9FA0FAD538073B9F26319140D1F80EEEBCA190DE660A31 │ │ │ │ -457CAC16E92F87449A3734F9EA751588514865B58DC073658C8A857B5398AAC7 │ │ │ │ -3DC11E069996EF74A3189A07630D5DB87C5E028CD193C086B4D0E8BABC4F2393 │ │ │ │ -235EC96091B16C4A6D97DA1BD30A2D2E71F55869223CA66AD12448B668685F6E │ │ │ │ -06E7888D7F20045C662C4F7994CC7E1CE9AAC33A026716AA0551DF12343F0E22 │ │ │ │ -6E9F4B21C90406CC4997601194EF37A973221D1F4D73DD5666BD297F621C92AA │ │ │ │ -E3F698BC1146ADE754C4120EDF5B3E974D75A237E51DB49D52CD6CC7C9E8BD2D │ │ │ │ -E6849DF8F4DBA86C655D0C57CB54836C8A841C1D814F6B493F96ADBFCAD78D3B │ │ │ │ -430C58EF169950851B6A0B46411488B1A6F6974832787A24C0CDDBE27996EFB1 │ │ │ │ -DB341FA34B1DC6238D978D1E1D34AF3FB375ED6DA9C88699F195C88A54622F7C │ │ │ │ -36DAFC663D85660E756733A7E22F20C6A5D91F06087CAD10F7217BD33F343DC6 │ │ │ │ -F5EB9F16FE763672243EE6AE5CB6063A1D64670E1C059DD52134974E27D9D89C │ │ │ │ -BC658FCD814F20703D610C978FDCD6E2AEA31C18D1A310F215B28199F66C87DB │ │ │ │ -3B23980A393E1DD77AFA3045EDB6942505F3CF6204315A14E5B6BF2E96F3BB1F │ │ │ │ -628D24AC1893BC7DAEF3AA63F2116837F31DB90D872CBD9E5C48BCDEE781D20D │ │ │ │ -C6553D2D15F4E8438A9D1C7CEE1B72BD6AA08DC0AFEAF8B4DC1038707EE4A1BF │ │ │ │ -3D84460E60AF90F55002C1D8EBF0700F7EC3EFC944BEA78D0E0536F3AA6D9A84 │ │ │ │ -604A781AC5ACFEB7E681365315EE11E991C03DA431B65B332AD8F83F6F3AE66C │ │ │ │ -1BF434D3793FB5BCC44E44ACFF2855C2770C4AC678C6ACD6EB071974ACF1AE37 │ │ │ │ -D02C1736C62CC205A2F3488448527EFFA379613A8E6A6D134F4BFBAE6127304D │ │ │ │ -576C900A458E32CD42A4674415E03D8EB5742E71B854B3EDFD271AA214436544 │ │ │ │ -D1BCFD52F439298847E1FA258E5D38384FC85BC4EDC6F9E4431621CF763B137B │ │ │ │ -22DB6E3268B3F78881D55EA7C52ABF23FB73C152B06B708084FE1B00CFE72D9D │ │ │ │ -57B62AEE912E63BBD89D4D13CE896735454F1A16C3D9FB6CDF142CCA9F1C0242 │ │ │ │ -46F62109DF30667DA327F7CF6DC19B880C860C69080597FFCB1793313E202D4F │ │ │ │ -120A7C6B052C2EB7597B71B0985D24FDD2D3918393BF720E762C5DBBC2BB1E91 │ │ │ │ -B04560364EFE5B16EB068E0560FB932E0C617CFB95A166388E99AC4CB020F5BC │ │ │ │ -E24BB77352D7C3B21C37D404051A70FFFA0F726C35501A1FBB411F832CE46A2E │ │ │ │ -B424E26BD4 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFD8CDE285A2827F4659E339460ABEF319FE44D7A91E93CA309E9266E03DA │ │ │ │ +735F5DEF3920C01189BB63C2BD7ED0B92EABB481F123641477CDCCAB9751FB7B │ │ │ │ +F67DA7CE6EB134BC10D0228562BA5A6BFE6940907EF030ABF9EC4A8A0DFEF73D │ │ │ │ +3289E8CB4DC37694F5A656A935D92C72B3D82B012F578A27711B161DE9652ADC │ │ │ │ +71C51E743E4E9A7C6CF6FF16C5D65C1F60954C0858B48FAAC4FBB21988E2A934 │ │ │ │ +AC50C097DDF42C416359647D79F830E1430FB9BB803451A6732D1B5CAB817C1B │ │ │ │ +673B3077D9A180F184267E9990C087BCDEBC8EB8B889934DD0EB63C2EBCED4A3 │ │ │ │ +83A0D6A365412CFF610EF7BD5F82B02AA293F1D2F868768CDE9B801C929B4A38 │ │ │ │ +64E20C70BC4041F837AD15423517F7336A067D140A2C7906DC5D45885FFB3B69 │ │ │ │ +724E5B9B138BD15A9359EB25D14BC4193E529D1A49FEB0DC1015BF94CEBBD5E0 │ │ │ │ +EA148B185C53E12BD9FA6DBC097D789A73E832F02F55080D8ED6087F5952EA78 │ │ │ │ +250A4C65CE4C4013554A031446D2092D813C4CB1A605D97A40CF867F656ECD1C │ │ │ │ +C23F80230AD1E449AA8B4007134F71156719206441D92B1A6DD25101ABF69F70 │ │ │ │ +538CCCE216376E1BD6E423986BD4E83B1975B15092D4E19F885672F9E7C02485 │ │ │ │ +E02DA0F4243D324A5983D1D46444E5F6573F699E4F2A3395EF0EB7808B7D4D62 │ │ │ │ +690FD033E93AA553082273636503DA4BBBBFA6D127CE10424DD1DDF4F879305C │ │ │ │ +14F64180E7851D091B3220DFC70CAA44716B8F7F0C6FBEDB167801DED77F9E69 │ │ │ │ +E9B31CD2D8044DB946E511162976C34DE27F2BB974B70509005562A0A21317B7 │ │ │ │ +46D826A31C476C8F9A778F941FF5956BA2D765B1AD0AC4BC7AE1CD8A2A81F039 │ │ │ │ +06EB13EBD099BBDB2EBDB54D459C288EA69FB0018CE9255BBFB08C1F90FF30BD │ │ │ │ +C971DA7FDB193281B8F967F21AB42F13F36085AC9EC0D6B6B448C8F289B0AD70 │ │ │ │ +DB521A4755ECF9CA594741E5C674220C21C265EF3BAE594197B00048C8D4DB73 │ │ │ │ +4AC47B6A86EAC7EECD042C8E23C347F8C9FCB870473C1FBD91C298174BCBF1A9 │ │ │ │ +7B366C570A9A04A433495FBC9FD0FFC22A0E8181424C0F038ED97AD5054B10CC │ │ │ │ +1CD5BA0719DD0B4F4F18932AE87FF8B8C1CF0C7482B7847049761505DCD85146 │ │ │ │ +4EE5CB53993A9449CD05233E961BD49AE92D308E2065D6C6BF038538039AA56A │ │ │ │ +C59D424BE3175427337E16892D3920598D518423E145C6B2DD3881F338845F0D │ │ │ │ +16C47AA0D9C2D6DE99C6A302D567ACD6F98BF38223F1890E099C8F93348FFDAA │ │ │ │ +C2D3440187C8FED87C1A891EF11EFA7168EC47F72AF8BC5BE1B88B1084E704F5 │ │ │ │ +82099F1A79E556D94CC38851C97DC3864945A7470F1389BCF608BADAE45B236D │ │ │ │ +2934A20FFBCF169BF84DF496B07E7F1D9002E62B030337642804403DF7E4B3FF │ │ │ │ +C5A421EE0033BA06C50A041FBFE8F81AFC145664E2976505EB14859CF0377EBA │ │ │ │ +EA604CF8BFB5F9ADB9A7ED56E6F0F919E791D57C7232241C892EAC3E55D2D03B │ │ │ │ +FF43B9DAB7B1D8C6588D6D3503F49E80121E52254431B308752A936E0B51124D │ │ │ │ +C7F23C316BA6FA73E6BC47EB9550003E1393C68360067C094C65C0DD17214FA0 │ │ │ │ +45FF0F9C3E0AE4C81093752D23EA95E163C98EC04873ECE3FB0882567329525C │ │ │ │ +0A3937B16CA72B5EB6D2DC10C1B485C0BA939587AFEBB6D837A40401C666BC1C │ │ │ │ +F3344FBAB3E48BEE18F3AF5CDB33BA63778D373A851333C8C34E2F35AB94E8B4 │ │ │ │ +FF7E62A92ED83B872894E0A17209E14CF61269204A35A4BC8C7EE4B16F19E91F │ │ │ │ +669C4EFCECB187F6C7FAF92B4E14E400C6B3C81679D4A7196D66DB1E897DDA42 │ │ │ │ +47CC2848B46D581A95EEF85AB528E8CDEEB275D1E1FE197A3A08D36406E2DADF │ │ │ │ +A87D817AF18B5525F89B7C2E584F4A1254A1FC71E749999A2152870631A69CB6 │ │ │ │ +666EBD6BB3366A598F6592040D0E82B9D866DF0A76C362E76C2804D108A0C148 │ │ │ │ +51F42E9E0ABD52CC2D02B156B63AFD03313AFC80EACC83DF9B59F05FD798951D │ │ │ │ +FCF5335636DFC6561910ACE0AEC47F74CFD302EB7421D28AAAC8FF82B7CE2B2A │ │ │ │ +340B8BCE09F57BFCBC77F91096D97A85726E68846398C8C9C8D3A65A252AE8FB │ │ │ │ +166750C244963BC61E2236BAAC529FABD6FC774550096374A8DB81B6AF1EA843 │ │ │ │ +27F671C0045D629E3734EF037447C4763514FD1C4AE858A494AFC23A64C82149 │ │ │ │ +F4C0A7023B3865B84FAC2DC88D1553DCEBA3D8FB5DBC1103123F6B8CB5B3A399 │ │ │ │ +B665B26B001BF1E4BFABE42BFF6B02D69FA88D5CBCA5A11D5B48CFB4EAE60558 │ │ │ │ +5FBE254AD3BE01761CD4995E766E172D768621223505FD6AA8F89FC042EB814C │ │ │ │ +34373DAEC4FAAF71C0752F814154C5299F751CE7E0F9C673D2E448D0204C214C │ │ │ │ +C04DC34671FBEF72350FFBA263662E86A0D3795E310153AAF4C8A2623E167E6E │ │ │ │ +1F13A9BA485D5DDFC451D691DBA7C49E20354A7AD79D89F7EDE24F0D5B48B27D │ │ │ │ +568D01EF2555504196C09841F5970D8CF6C5D47FFFCF18AE6B2A485342000AAD │ │ │ │ +1F922FBEF7C98E0965609C89240E7B131A59551F57CD5C92097FCE75F5D2778F │ │ │ │ +F9ACF43A3273551363442C8C539205903A835C744A4AA953545506081D3D231A │ │ │ │ +A140E01F280BC42A3C35EDAD5F6B8CE6E51C68E41CA813710864ED880FCE846C │ │ │ │ +1B66D27CC2DBCDC2B1B96A12490BD76D67A415D4A6595CD9B19D3104A83D2C82 │ │ │ │ +C46DCD2C027F0565EDB83E54FF99498194D3140E55E8EE65EBDEAC5409B5616A │ │ │ │ +73141DA2D581E300A6057F4301A02DD160AB3E55A116313525122D0608816AA8 │ │ │ │ +4712EEF3D6FE8C893DF37D │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -4683,15 +4673,15 @@ │ │ │ │ 2[51 62 50 1[54 11[86 5[84 5[42 6[80 13[56 56 56 56 2[31 │ │ │ │ 46[{}24 99.6264 /CMBX12 rf /Fb 136[62 2[62 1[62 2[62 │ │ │ │ 3[62 5[62 22[62 78[{}7 119.552 /CMTT12 rf /Fc 134[71 │ │ │ │ 3[75 52 53 55 1[75 67 75 112 3[37 75 1[41 61 75 60 1[65 │ │ │ │ 13[75 2[92 11[103 17[67 67 2[37 46[{}22 119.552 /CMBX12 │ │ │ │ rf /Fd 141[38 2[46 51 2[42 1[28 46 42 1[42 1[42 14[65 │ │ │ │ 1[66 11[59 62 69 2[68 6[28 58[{}16 90.9091 /CMTI10 rf │ │ │ │ -/Fe 134[48 3[51 2[36 12[40 2[51 45 26[59 11[25 45 4[45 │ │ │ │ +/Fe 139[35 1[36 2[45 9[40 1[40 51 18[71 20[25 4[45 45 │ │ │ │ 1[45 1[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 │ │ │ │ @@ -4824,62 +4814,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 1040 4 v │ │ │ │ -1221 w Fm(Network)29 b Fe(:)40 b Fd(DRAFT)31 b Fe(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2861 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 1081 4 v │ │ │ │ +1263 w Fm(Network)28 b Fe(:)41 b Fd(DRAFT)30 b Fe(Octob)s(er)g(4,)h │ │ │ │ +(2025)p 2820 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) │ │ │ │ @@ -4909,17 +4899,17 @@ │ │ │ │ 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 1040 4 v 1221 100 a Fm(Network)28 │ │ │ │ -b Fe(:)41 b Fd(DRAFT)121 b Fe(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2814 100 V 1040 w Fn(3)137 399 y Fj(\210)45 b Fm(int)i(narc)29 │ │ │ │ +TeXDict begin 3 2 bop 91 100 1081 4 v 1262 100 a Fm(Network)28 │ │ │ │ +b Fe(:)41 b Fd(DRAFT)121 b Fe(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2772 100 V 1081 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 │ │ │ │ @@ -4964,27 +4954,27 @@ │ │ │ │ (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 1040 4 v │ │ │ │ -1221 w Fm(Network)29 b Fe(:)40 b Fd(DRAFT)31 b Fe(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2861 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 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fn(4)p 136 100 1081 4 v │ │ │ │ +1263 w Fm(Network)28 b Fe(:)41 b Fd(DRAFT)30 b Fe(Octob)s(er)g(4,)h │ │ │ │ +(2025)p 2820 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 │ │ │ │ 1789 y(3.)46 b Fm(void)h(Network_clearData)c(\()k(Network)f(*network)g │ │ │ │ (\))h(;)227 1933 y Fn(This)26 b(metho)s(d)g(releases)h(an)m(y)g │ │ │ │ @@ -5037,17 +5027,17 @@ │ │ │ │ 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 1040 4 v 1221 100 a Fm(Network)28 │ │ │ │ -b Fe(:)41 b Fd(DRAFT)121 b Fe(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2814 100 V 1040 w Fn(5)0 399 y Fa(1.2.3)112 b(Utilit)m(y)38 │ │ │ │ +TeXDict begin 5 4 bop 91 100 1081 4 v 1262 100 a Fm(Network)28 │ │ │ │ +b Fe(:)41 b Fd(DRAFT)121 b Fe(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2772 100 V 1081 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 │ │ │ │ @@ -5121,37 +5111,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 1040 4 v │ │ │ │ -1221 w Fm(Network)29 b Fe(:)40 b Fd(DRAFT)31 b Fe(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2861 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 1081 4 v │ │ │ │ +1263 w Fm(Network)28 b Fe(:)41 b Fd(DRAFT)30 b Fe(Octob)s(er)g(4,)h │ │ │ │ +(2025)p 2820 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 February 29, 2024 │ │ │ │ │ + 2 Network : DRAFT October 4, 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 February 29, 2024 3 │ │ │ │ │ + Network : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 4 Network : DRAFT October 4, 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 February 29, 2024 5 │ │ │ │ │ + Network : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 6 Network : DRAFT October 4, 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 2024.02.29:1858 │ │ │ │ +%DVIPSSource: TeX output 2025.10.04:1734 │ │ │ │ %%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 │ │ │ │ @@ -2041,23 +2041,23 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 50 /two put │ │ │ │ dup 52 /four put │ │ │ │ -dup 57 /nine put │ │ │ │ +dup 53 /five put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 70 /F put │ │ │ │ -dup 97 /a put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ +dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ -dup 117 /u put │ │ │ │ -dup 121 /y put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -2231,95 +2231,85 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA647CD0E2539DFAD9604486DCCFA49 │ │ │ │ -AC96130D106A8F8387633622C3809400D6E8FF9D60877C743502E4D211CEBF62 │ │ │ │ -9A6F91045C22D5D20C5FF677D89983D02E5EE26C71A9EAE0E7C52465DA5A149A │ │ │ │ -9B731C27EC8366BC3E841C0CAE49A33DE164A857365B17B09CAD121C47A980CB │ │ │ │ -C75E1030F6C394EDB46C54B46880D2344127B903FB22684C9CAACE6053DC3BFA │ │ │ │ -4E47C565ECAF19C4295A11BD68CA6D45B5738B932BB3690A8C712904C49C1636 │ │ │ │ -A7702075F2FEA8DB3EB3A3C1216BB769DD0BAF4507A18E3052F2C846B0797933 │ │ │ │ -8CE9BB2DB5DFADAF1B0FC3A22BAB82A0D5D290F7AD950013CFA465BE11C1076D │ │ │ │ -5833FF92321FBF90D9229D3BA09DD18EEC44D9FCF8FCF63CC09D2977BFA798B6 │ │ │ │ -47FB047EA6AF69C7DE570176F5B6C0FED74DEDBF7DDF49550DD84BA14AC09423 │ │ │ │ -F70D5B14F0F8588F1E2FFE0DFE0760E77A9E39DEDAC5C5AE3760722C029B916D │ │ │ │ -96A2A7D1DD6A61F90B4B9806314A668EB7A0E107A3527310A240490453CC18D7 │ │ │ │ -3793B4CF3CE13EA332E7F5C2BACF85AC75FE84693B966BB0F6FB9A179A331C4E │ │ │ │ -55E9EF30E2734E44A88E053CD5E650D7E529E94CB7F8B733E68315ACAC5BEFC5 │ │ │ │ -3FE4F585F875310267865679AB381125C31E9AEB7226DC9F18DA80A9DE2F38A4 │ │ │ │ -51B8F9D5B2FBA0F50D53AE6212AFE41466A594F7A303B4E82F1493C0B8D65756 │ │ │ │ -BE6AF2931E5ADA5CE7D51CB5B1EC916C6C6D674808939331CA66F8181DD2B112 │ │ │ │ -1A12198CCCB6BBF1D40C803E794B65241ACE1E0D30CCA1C6F2D3E1415B98726B │ │ │ │ -9BA303BE2C4C276108CC78C093F1CC85CA454CC38535D1DEBFA341D84E8A5DDF │ │ │ │ -D53D8DD0F4A812B5BA63871BEB3BCE93FBC77AD395914E2CD757546C2BE2D641 │ │ │ │ -FDB12258E1E1D10E1B963EABB265F2C8B2547D48963E1AD3B223B666B46915A1 │ │ │ │ -157F5EA0AB8D8411C07AA2EB5D0EF1A1BA6D81C47473A3D3D6287104C7BF61F8 │ │ │ │ -3BDB64995DE96A65BF2B7288C51ADAA3D373A95C40D5240C5FF397551554AA9E │ │ │ │ -C89C7E45AA7738503CB058EF6AD5052CC78E4445C810C250BF25394B8D7DE82E │ │ │ │ -315C9CCD6E1E9150EC79EE0F354C668AE199C1AFF39C67337A86CB932E8D64E9 │ │ │ │ -389FF3CC08B538492DEED017686DBB9BDEA30FE67FB4EBDB3627C16FD15F243A │ │ │ │ -7FDEB310EFC940E57726E94340472F2C452815927ADE21578C959890216BE504 │ │ │ │ -225BE4B4D2E3B19F5E06B5A0B25AF168C3A2B26F599A829F89C16BD2026E8CC9 │ │ │ │ -8FB3CBB830C3E36C099071A70D0B8834FF2C17364EB50D5C71440CC7BFE02321 │ │ │ │ -8C6ECAC2F7EC1BE39077DB0E8B2B251626A71FD038EB2CF1FC254D98C1535CAA │ │ │ │ -A8C987BC266482BD860A333048E1EDB3DD40A6ECD6DA0088AD9B9640202D89AA │ │ │ │ -0BB9A0ADF63491E67F2E97E35942D77E59B9B8AB0ED28B022EE5CD3449FC5B7A │ │ │ │ -19E38845B488F97D155C4312885E29537EAE97719C65845663480CE79DE8F037 │ │ │ │ -68995C0928FE8AFBEE554F01381EE5187578DF5D2542F26F66A599EE8ECC1F68 │ │ │ │ -FBADF3C2BA968C3CEB86675CF9A6CFD736E1422800D270417D497903DE87F2AE │ │ │ │ -938E39E120E9D3079F512E545E0E2616B84E81FE41392184F96818A7C86BF541 │ │ │ │ -F2E67C48CA56DA838C9FA0FAD538073B9F26319140D1F80EEEBCA190DE660A31 │ │ │ │ -457CAC16E92F87449A3734F9EA751588514865B58DC073658C8A857B5398AAC7 │ │ │ │ -3DC11E069996EF74A3189A07630D5DB87C5E028CD193C086B4D0E8BABC4F2393 │ │ │ │ -235EC96091B16C4A6D97DA1BD30A2D2E71F55869223CA66AD12448B668685F6E │ │ │ │ -06E7888D7F20045C662C4F7994CC7E1CE9AAC33A026716AA0551DF12343F0E22 │ │ │ │ -6E9F4B21C90406CC4997601194EF37A973221D1F4D73DD5666BD297F621C92AA │ │ │ │ -E3F698BC1146ADE754C4120EDF5B3E974D75A237E51DB49D52CD6CC7C9E8BD2D │ │ │ │ -E6849DF8F4DBA86C655D0C57CB54836C8A841C1D814F6B493F96ADBFCAD78D3B │ │ │ │ -430C58EF169950851B6A0B46411488B1A6F6974832787A24C0CDDBE27996EFB1 │ │ │ │ -DB341FA34B1DC6238D978D1E1D34AF3FB375ED6DA9C88699F195C88A54622F7C │ │ │ │ -36DAFC663D85660E756733A7E22F20C6A5D91F06087CAD10F7217BD33F343DC6 │ │ │ │ -F5EB9F16FE763672243EE6AE5CB6063A1D64670E1C059DD52134974E27D9D89C │ │ │ │ -BC658FCD814F20703D610C978FDCD6E2AEA31C18D1A310F215B28199F66C87DB │ │ │ │ -3B23980A393E1DD77AFA3045EDB6942505F3CF6204315A14E5B6BF2E96F3BB1F │ │ │ │ -628D24AC1893BC7DAEF3AA63F2116837F31DB90D872CBD9E5C48BCDEE781D20D │ │ │ │ -C6553D2D15F4E8438A9D1C7CEE1B72BD6AA08DC0AFEAF8B4DC1038707EE4A1BF │ │ │ │ -3D84460E60AF90F55002C1D8EBF0700F7EC3EFC944BEA78D0E0536F3AA6D9A84 │ │ │ │ -604A781AC5ACFEB7E681365315EE11E991C03DA431B65B332AD8F83F6F3AE66C │ │ │ │ -1BF434D3793FB5BCC44E44ACFF2855C2770C4AC678C6ACD6EB071974ACF1AE37 │ │ │ │ -D02C1736C62CC205A2F3488448527EFFA379613A8E6A6D134F4BFBAE6127304D │ │ │ │ -576C900A458E32CD42A4674415E03D8EB5742E71B854B3EDFD271AA214436544 │ │ │ │ -D1BCFD52F439298847E1FA258E5D38384FC85BC4EDC6F9E4431621CF763B137B │ │ │ │ -22DB6E3268B3F78881D55EA7C52ABF23FB73C152B06B708084FE1B00CFE72D9D │ │ │ │ -57B62AEE912E63BBD89D4D13CE896735454F1A16C3D9FB6CDF142CCA9F1C0242 │ │ │ │ -46F62109DF30667DA327F7CF6DC19B880C860C69080597FFCB1793313E202D4F │ │ │ │ -120A7C6B052C2EB7597B71B0985D24FDD2D3918393BF720E762C5DBBC2BB1E91 │ │ │ │ -B04560364EFE5B16EB068E0560FB932E0C617CFB95A166388E99AC4CB020F5BC │ │ │ │ -E24BB77352D7C3B21C37D404051A70FFFA0F726C35501A1FBB411F832CE46A2E │ │ │ │ -B424E26BD4 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFD8CDE285A2827F4659E339460ABEF319FE44D7A91E93CA309E9266E03DA │ │ │ │ +735F5DEF3920C01189BB63C2BD7ED0B92EABB481F123641477CDCCAB9751FB7B │ │ │ │ +F67DA7CE6EB134BC10D0228562BA5A6BFE6940907EF030ABF9EC4A8A0DFEF73D │ │ │ │ +3289E8CB4DC37694F5A656A935D92C72B3D82B012F578A27711B161DE9652ADC │ │ │ │ +71C51E743E4E9A7C6CF6FF16C5D65C1F60954C0858B48FAAC4FBB21988E2A934 │ │ │ │ +AC50C097DDF42C416359647D79F830E1430FB9BB803451A6732D1B5CAB817C1B │ │ │ │ +673B3077D9A180F184267E9990C087BCDEBC8EB8B889934DD0EB63C2EBCED4A3 │ │ │ │ +83A0D6A365412CFF610EF7BD5F82B02AA293F1D2F868768CDE9B801C929B4A38 │ │ │ │ +64E20C70BC4041F837AD15423517F7336A067D140A2C7906DC5D45885FFB3B69 │ │ │ │ +724E5B9B138BD15A9359EB25D14BC4193E529D1A49FEB0DC1015BF94CEBBD5E0 │ │ │ │ +EA148B185C53E12BD9FA6DBC097D789A73E832F02F55080D8ED6087F5952EA78 │ │ │ │ +250A4C65CE4C4013554A031446D2092D813C4CB1A605D97A40CF867F656ECD1C │ │ │ │ +C23F80230AD1E449AA8B4007134F71156719206441D92B1A6DD25101ABF69F70 │ │ │ │ +538CCCE216376E1BD6E423986BD4E83B1975B15092D4E19F885672F9E7C02485 │ │ │ │ +E02DA0F4243D324A5983D1D46444E5F6573F699E4F2A3395EF0EB7808B7D4D62 │ │ │ │ +690FD033E93AA553082273636503DA4BBBBFA6D127CE10424DD1DDF4F879305C │ │ │ │ +14F64180E7851D091B3220DFC70CAA44716B8F7F0C6FBEDB167801DED77F9E69 │ │ │ │ +E9B31CD2D8044DB946E511162976C34DE27F2BB974B70509005562A0A21317B7 │ │ │ │ +46D826A31C476C8F9A778F941FF5956BA2D765B1AD0AC4BC7AE1CD8A2A81F039 │ │ │ │ +06EB13EBD099BBDB2EBDB54D459C288EA69FB0018CE9255BBFB08C1F90FF30BD │ │ │ │ +C971DA7FDB193281B8F967F21AB42F13F36085AC9EC0D6B6B448C8F289B0AD70 │ │ │ │ +DB521A4755ECF9CA594741E5C674220C21C265EF3BAE594197B00048C8D4DB73 │ │ │ │ +4AC47B6A86EAC7EECD042C8E23C347F8C9FCB870473C1FBD91C298174BCBF1A9 │ │ │ │ +7B366C570A9A04A433495FBC9FD0FFC22A0E8181424C0F038ED97AD5054B10CC │ │ │ │ +1CD5BA0719DD0B4F4F18932AE87FF8B8C1CF0C7482B7847049761505DCD85146 │ │ │ │ +4EE5CB53993A9449CD05233E961BD49AE92D308E2065D6C6BF038538039AA56A │ │ │ │ +C59D424BE3175427337E16892D3920598D518423E145C6B2DD3881F338845F0D │ │ │ │ +16C47AA0D9C2D6DE99C6A302D567ACD6F98BF38223F1890E099C8F93348FFDAA │ │ │ │ +C2D3440187C8FED87C1A891EF11EFA7168EC47F72AF8BC5BE1B88B1084E704F5 │ │ │ │ +82099F1A79E556D94CC38851C97DC3864945A7470F1389BCF608BADAE45B236D │ │ │ │ +2934A20FFBCF169BF84DF496B07E7F1D9002E62B030337642804403DF7E4B3FF │ │ │ │ +C5A421EE0033BA06C50A041FBFE8F81AFC145664E2976505EB14859CF0377EBA │ │ │ │ +EA604CF8BFB5F9ADB9A7ED56E6F0F919E791D57C7232241C892EAC3E55D2D03B │ │ │ │ +FF43B9DAB7B1D8C6588D6D3503F49E80121E52254431B308752A936E0B51124D │ │ │ │ +C7F23C316BA6FA73E6BC47EB9550003E1393C68360067C094C65C0DD17214FA0 │ │ │ │ +45FF0F9C3E0AE4C81093752D23EA95E163C98EC04873ECE3FB0882567329525C │ │ │ │ +0A3937B16CA72B5EB6D2DC10C1B485C0BA939587AFEBB6D837A40401C666BC1C │ │ │ │ +F3344FBAB3E48BEE18F3AF5CDB33BA63778D373A851333C8C34E2F35AB94E8B4 │ │ │ │ +FF7E62A92ED83B872894E0A17209E14CF61269204A35A4BC8C7EE4B16F19E91F │ │ │ │ +669C4EFCECB187F6C7FAF92B4E14E400C6B3C81679D4A7196D66DB1E897DDA42 │ │ │ │ +47CC2848B46D581A95EEF85AB528E8CDEEB275D1E1FE197A3A08D36406E2DADF │ │ │ │ +A87D817AF18B5525F89B7C2E584F4A1254A1FC71E749999A2152870631A69CB6 │ │ │ │ +666EBD6BB3366A598F6592040D0E82B9D866DF0A76C362E76C2804D108A0C148 │ │ │ │ +51F42E9E0ABD52CC2D02B156B63AFD03313AFC80EACC83DF9B59F05FD798951D │ │ │ │ +FCF5335636DFC6561910ACE0AEC47F74CFD302EB7421D28AAAC8FF82B7CE2B2A │ │ │ │ +340B8BCE09F57BFCBC77F91096D97A85726E68846398C8C9C8D3A65A252AE8FB │ │ │ │ +166750C244963BC61E2236BAAC529FABD6FC774550096374A8DB81B6AF1EA843 │ │ │ │ +27F671C0045D629E3734EF037447C4763514FD1C4AE858A494AFC23A64C82149 │ │ │ │ +F4C0A7023B3865B84FAC2DC88D1553DCEBA3D8FB5DBC1103123F6B8CB5B3A399 │ │ │ │ +B665B26B001BF1E4BFABE42BFF6B02D69FA88D5CBCA5A11D5B48CFB4EAE60558 │ │ │ │ +5FBE254AD3BE01761CD4995E766E172D768621223505FD6AA8F89FC042EB814C │ │ │ │ +34373DAEC4FAAF71C0752F814154C5299F751CE7E0F9C673D2E448D0204C214C │ │ │ │ +C04DC34671FBEF72350FFBA263662E86A0D3795E310153AAF4C8A2623E167E6E │ │ │ │ +1F13A9BA485D5DDFC451D691DBA7C49E20354A7AD79D89F7EDE24F0D5B48B27D │ │ │ │ +568D01EF2555504196C09841F5970D8CF6C5D47FFFCF18AE6B2A485342000AAD │ │ │ │ +1F922FBEF7C98E0965609C89240E7B131A59551F57CD5C92097FCE75F5D2778F │ │ │ │ +F9ACF43A3273551363442C8C539205903A835C744A4AA953545506081D3D231A │ │ │ │ +A140E01F280BC42A3C35EDAD5F6B8CE6E51C68E41CA813710864ED880FCE846C │ │ │ │ +1B66D27CC2DBCDC2B1B96A12490BD76D67A415D4A6595CD9B19D3104A83D2C82 │ │ │ │ +C46DCD2C027F0565EDB83E54FF99498194D3140E55E8EE65EBDEAC5409B5616A │ │ │ │ +73141DA2D581E300A6057F4301A02DD160AB3E55A116313525122D0608816AA8 │ │ │ │ +4712EEF3D6FE8C893DF37D │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -4775,16 +4765,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 134[48 3[51 2[36 │ │ │ │ -12[40 2[51 45 26[59 11[25 45 4[45 1[45 1[45 3[25 44[{}13 │ │ │ │ +6[28 58[{}16 90.9091 /CMTI10 rf /Fg 139[35 1[36 2[45 │ │ │ │ +9[40 1[40 51 18[71 20[25 4[45 45 1[45 1[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 │ │ │ │ @@ -4914,24 +4904,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 873 4 v │ │ │ │ -1054 w Fn(PatchAndGoInfo)27 b Fg(:)40 b Ff(DRAFT)31 b │ │ │ │ -Fg(F)-8 b(ebruary)30 b(29,)h(2024)p 3028 100 V 227 399 │ │ │ │ -a Fo(m)m(ultiple)c(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 914 4 v │ │ │ │ +1095 w Fn(PatchAndGoInfo)27 b Fg(:)41 b Ff(DRAFT)30 b │ │ │ │ +Fg(Octob)s(er)g(4,)h(2025)p 2987 100 V 227 399 a Fo(m)m(ultiple)c(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 │ │ │ │ @@ -4978,17 +4968,17 @@ │ │ │ │ (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 873 4 v 1054 100 a Fn(PatchAndGoInfo)26 │ │ │ │ -b Fg(:)41 b Ff(DRAFT)121 b Fg(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2981 100 V 873 w Fo(3)111 399 y(3.)46 b Fn(void)h │ │ │ │ +TeXDict begin 3 2 bop 91 100 914 4 v 1095 100 a Fn(PatchAndGoInfo)26 │ │ │ │ +b Fg(:)41 b Ff(DRAFT)121 b Fg(Octob)s(er)31 b(4,)g(2025)p │ │ │ │ +2940 100 V 914 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 │ │ │ │ ├── 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 February 29, 2024 │ │ │ │ │ + 2 PatchAndGoInfo : DRAFT October 4, 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 February 29, 2024 3 │ │ │ │ │ + PatchAndGoInfo : DRAFT October 4, 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 2024.02.29:1858 │ │ │ │ +%DVIPSSource: TeX output 2025.10.04:1734 │ │ │ │ %%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 │ │ │ │ @@ -1882,23 +1882,23 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 50 /two put │ │ │ │ dup 52 /four put │ │ │ │ -dup 57 /nine put │ │ │ │ +dup 53 /five put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 70 /F put │ │ │ │ -dup 97 /a put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ +dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ -dup 117 /u put │ │ │ │ -dup 121 /y put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -2072,95 +2072,85 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA647CD0E2539DFAD9604486DCCFA49 │ │ │ │ -AC96130D106A8F8387633622C3809400D6E8FF9D60877C743502E4D211CEBF62 │ │ │ │ -9A6F91045C22D5D20C5FF677D89983D02E5EE26C71A9EAE0E7C52465DA5A149A │ │ │ │ -9B731C27EC8366BC3E841C0CAE49A33DE164A857365B17B09CAD121C47A980CB │ │ │ │ -C75E1030F6C394EDB46C54B46880D2344127B903FB22684C9CAACE6053DC3BFA │ │ │ │ -4E47C565ECAF19C4295A11BD68CA6D45B5738B932BB3690A8C712904C49C1636 │ │ │ │ -A7702075F2FEA8DB3EB3A3C1216BB769DD0BAF4507A18E3052F2C846B0797933 │ │ │ │ -8CE9BB2DB5DFADAF1B0FC3A22BAB82A0D5D290F7AD950013CFA465BE11C1076D │ │ │ │ -5833FF92321FBF90D9229D3BA09DD18EEC44D9FCF8FCF63CC09D2977BFA798B6 │ │ │ │ -47FB047EA6AF69C7DE570176F5B6C0FED74DEDBF7DDF49550DD84BA14AC09423 │ │ │ │ -F70D5B14F0F8588F1E2FFE0DFE0760E77A9E39DEDAC5C5AE3760722C029B916D │ │ │ │ -96A2A7D1DD6A61F90B4B9806314A668EB7A0E107A3527310A240490453CC18D7 │ │ │ │ -3793B4CF3CE13EA332E7F5C2BACF85AC75FE84693B966BB0F6FB9A179A331C4E │ │ │ │ -55E9EF30E2734E44A88E053CD5E650D7E529E94CB7F8B733E68315ACAC5BEFC5 │ │ │ │ -3FE4F585F875310267865679AB381125C31E9AEB7226DC9F18DA80A9DE2F38A4 │ │ │ │ -51B8F9D5B2FBA0F50D53AE6212AFE41466A594F7A303B4E82F1493C0B8D65756 │ │ │ │ -BE6AF2931E5ADA5CE7D51CB5B1EC916C6C6D674808939331CA66F8181DD2B112 │ │ │ │ -1A12198CCCB6BBF1D40C803E794B65241ACE1E0D30CCA1C6F2D3E1415B98726B │ │ │ │ -9BA303BE2C4C276108CC78C093F1CC85CA454CC38535D1DEBFA341D84E8A5DDF │ │ │ │ -D53D8DD0F4A812B5BA63871BEB3BCE93FBC77AD395914E2CD757546C2BE2D641 │ │ │ │ -FDB12258E1E1D10E1B963EABB265F2C8B2547D48963E1AD3B223B666B46915A1 │ │ │ │ -157F5EA0AB8D8411C07AA2EB5D0EF1A1BA6D81C47473A3D3D6287104C7BF61F8 │ │ │ │ -3BDB64995DE96A65BF2B7288C51ADAA3D373A95C40D5240C5FF397551554AA9E │ │ │ │ -C89C7E45AA7738503CB058EF6AD5052CC78E4445C810C250BF25394B8D7DE82E │ │ │ │ -315C9CCD6E1E9150EC79EE0F354C668AE199C1AFF39C67337A86CB932E8D64E9 │ │ │ │ -389FF3CC08B538492DEED017686DBB9BDEA30FE67FB4EBDB3627C16FD15F243A │ │ │ │ -7FDEB310EFC940E57726E94340472F2C452815927ADE21578C959890216BE504 │ │ │ │ -225BE4B4D2E3B19F5E06B5A0B25AF168C3A2B26F599A829F89C16BD2026E8CC9 │ │ │ │ -8FB3CBB830C3E36C099071A70D0B8834FF2C17364EB50D5C71440CC7BFE02321 │ │ │ │ -8C6ECAC2F7EC1BE39077DB0E8B2B251626A71FD038EB2CF1FC254D98C1535CAA │ │ │ │ -A8C987BC266482BD860A333048E1EDB3DD40A6ECD6DA0088AD9B9640202D89AA │ │ │ │ -0BB9A0ADF63491E67F2E97E35942D77E59B9B8AB0ED28B022EE5CD3449FC5B7A │ │ │ │ -19E38845B488F97D155C4312885E29537EAE97719C65845663480CE79DE8F037 │ │ │ │ -68995C0928FE8AFBEE554F01381EE5187578DF5D2542F26F66A599EE8ECC1F68 │ │ │ │ -FBADF3C2BA968C3CEB86675CF9A6CFD736E1422800D270417D497903DE87F2AE │ │ │ │ -938E39E120E9D3079F512E545E0E2616B84E81FE41392184F96818A7C86BF541 │ │ │ │ -F2E67C48CA56DA838C9FA0FAD538073B9F26319140D1F80EEEBCA190DE660A31 │ │ │ │ -457CAC16E92F87449A3734F9EA751588514865B58DC073658C8A857B5398AAC7 │ │ │ │ -3DC11E069996EF74A3189A07630D5DB87C5E028CD193C086B4D0E8BABC4F2393 │ │ │ │ -235EC96091B16C4A6D97DA1BD30A2D2E71F55869223CA66AD12448B668685F6E │ │ │ │ -06E7888D7F20045C662C4F7994CC7E1CE9AAC33A026716AA0551DF12343F0E22 │ │ │ │ -6E9F4B21C90406CC4997601194EF37A973221D1F4D73DD5666BD297F621C92AA │ │ │ │ -E3F698BC1146ADE754C4120EDF5B3E974D75A237E51DB49D52CD6CC7C9E8BD2D │ │ │ │ -E6849DF8F4DBA86C655D0C57CB54836C8A841C1D814F6B493F96ADBFCAD78D3B │ │ │ │ -430C58EF169950851B6A0B46411488B1A6F6974832787A24C0CDDBE27996EFB1 │ │ │ │ -DB341FA34B1DC6238D978D1E1D34AF3FB375ED6DA9C88699F195C88A54622F7C │ │ │ │ -36DAFC663D85660E756733A7E22F20C6A5D91F06087CAD10F7217BD33F343DC6 │ │ │ │ -F5EB9F16FE763672243EE6AE5CB6063A1D64670E1C059DD52134974E27D9D89C │ │ │ │ -BC658FCD814F20703D610C978FDCD6E2AEA31C18D1A310F215B28199F66C87DB │ │ │ │ -3B23980A393E1DD77AFA3045EDB6942505F3CF6204315A14E5B6BF2E96F3BB1F │ │ │ │ -628D24AC1893BC7DAEF3AA63F2116837F31DB90D872CBD9E5C48BCDEE781D20D │ │ │ │ -C6553D2D15F4E8438A9D1C7CEE1B72BD6AA08DC0AFEAF8B4DC1038707EE4A1BF │ │ │ │ -3D84460E60AF90F55002C1D8EBF0700F7EC3EFC944BEA78D0E0536F3AA6D9A84 │ │ │ │ -604A781AC5ACFEB7E681365315EE11E991C03DA431B65B332AD8F83F6F3AE66C │ │ │ │ -1BF434D3793FB5BCC44E44ACFF2855C2770C4AC678C6ACD6EB071974ACF1AE37 │ │ │ │ -D02C1736C62CC205A2F3488448527EFFA379613A8E6A6D134F4BFBAE6127304D │ │ │ │ -576C900A458E32CD42A4674415E03D8EB5742E71B854B3EDFD271AA214436544 │ │ │ │ -D1BCFD52F439298847E1FA258E5D38384FC85BC4EDC6F9E4431621CF763B137B │ │ │ │ -22DB6E3268B3F78881D55EA7C52ABF23FB73C152B06B708084FE1B00CFE72D9D │ │ │ │ -57B62AEE912E63BBD89D4D13CE896735454F1A16C3D9FB6CDF142CCA9F1C0242 │ │ │ │ -46F62109DF30667DA327F7CF6DC19B880C860C69080597FFCB1793313E202D4F │ │ │ │ -120A7C6B052C2EB7597B71B0985D24FDD2D3918393BF720E762C5DBBC2BB1E91 │ │ │ │ -B04560364EFE5B16EB068E0560FB932E0C617CFB95A166388E99AC4CB020F5BC │ │ │ │ -E24BB77352D7C3B21C37D404051A70FFFA0F726C35501A1FBB411F832CE46A2E │ │ │ │ -B424E26BD4 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFD8CDE285A2827F4659E339460ABEF319FE44D7A91E93CA309E9266E03DA │ │ │ │ +735F5DEF3920C01189BB63C2BD7ED0B92EABB481F123641477CDCCAB9751FB7B │ │ │ │ +F67DA7CE6EB134BC10D0228562BA5A6BFE6940907EF030ABF9EC4A8A0DFEF73D │ │ │ │ +3289E8CB4DC37694F5A656A935D92C72B3D82B012F578A27711B161DE9652ADC │ │ │ │ +71C51E743E4E9A7C6CF6FF16C5D65C1F60954C0858B48FAAC4FBB21988E2A934 │ │ │ │ +AC50C097DDF42C416359647D79F830E1430FB9BB803451A6732D1B5CAB817C1B │ │ │ │ +673B3077D9A180F184267E9990C087BCDEBC8EB8B889934DD0EB63C2EBCED4A3 │ │ │ │ +83A0D6A365412CFF610EF7BD5F82B02AA293F1D2F868768CDE9B801C929B4A38 │ │ │ │ +64E20C70BC4041F837AD15423517F7336A067D140A2C7906DC5D45885FFB3B69 │ │ │ │ +724E5B9B138BD15A9359EB25D14BC4193E529D1A49FEB0DC1015BF94CEBBD5E0 │ │ │ │ +EA148B185C53E12BD9FA6DBC097D789A73E832F02F55080D8ED6087F5952EA78 │ │ │ │ +250A4C65CE4C4013554A031446D2092D813C4CB1A605D97A40CF867F656ECD1C │ │ │ │ +C23F80230AD1E449AA8B4007134F71156719206441D92B1A6DD25101ABF69F70 │ │ │ │ +538CCCE216376E1BD6E423986BD4E83B1975B15092D4E19F885672F9E7C02485 │ │ │ │ +E02DA0F4243D324A5983D1D46444E5F6573F699E4F2A3395EF0EB7808B7D4D62 │ │ │ │ +690FD033E93AA553082273636503DA4BBBBFA6D127CE10424DD1DDF4F879305C │ │ │ │ +14F64180E7851D091B3220DFC70CAA44716B8F7F0C6FBEDB167801DED77F9E69 │ │ │ │ +E9B31CD2D8044DB946E511162976C34DE27F2BB974B70509005562A0A21317B7 │ │ │ │ +46D826A31C476C8F9A778F941FF5956BA2D765B1AD0AC4BC7AE1CD8A2A81F039 │ │ │ │ +06EB13EBD099BBDB2EBDB54D459C288EA69FB0018CE9255BBFB08C1F90FF30BD │ │ │ │ +C971DA7FDB193281B8F967F21AB42F13F36085AC9EC0D6B6B448C8F289B0AD70 │ │ │ │ +DB521A4755ECF9CA594741E5C674220C21C265EF3BAE594197B00048C8D4DB73 │ │ │ │ +4AC47B6A86EAC7EECD042C8E23C347F8C9FCB870473C1FBD91C298174BCBF1A9 │ │ │ │ +7B366C570A9A04A433495FBC9FD0FFC22A0E8181424C0F038ED97AD5054B10CC │ │ │ │ +1CD5BA0719DD0B4F4F18932AE87FF8B8C1CF0C7482B7847049761505DCD85146 │ │ │ │ +4EE5CB53993A9449CD05233E961BD49AE92D308E2065D6C6BF038538039AA56A │ │ │ │ +C59D424BE3175427337E16892D3920598D518423E145C6B2DD3881F338845F0D │ │ │ │ +16C47AA0D9C2D6DE99C6A302D567ACD6F98BF38223F1890E099C8F93348FFDAA │ │ │ │ +C2D3440187C8FED87C1A891EF11EFA7168EC47F72AF8BC5BE1B88B1084E704F5 │ │ │ │ +82099F1A79E556D94CC38851C97DC3864945A7470F1389BCF608BADAE45B236D │ │ │ │ +2934A20FFBCF169BF84DF496B07E7F1D9002E62B030337642804403DF7E4B3FF │ │ │ │ +C5A421EE0033BA06C50A041FBFE8F81AFC145664E2976505EB14859CF0377EBA │ │ │ │ +EA604CF8BFB5F9ADB9A7ED56E6F0F919E791D57C7232241C892EAC3E55D2D03B │ │ │ │ +FF43B9DAB7B1D8C6588D6D3503F49E80121E52254431B308752A936E0B51124D │ │ │ │ +C7F23C316BA6FA73E6BC47EB9550003E1393C68360067C094C65C0DD17214FA0 │ │ │ │ +45FF0F9C3E0AE4C81093752D23EA95E163C98EC04873ECE3FB0882567329525C │ │ │ │ +0A3937B16CA72B5EB6D2DC10C1B485C0BA939587AFEBB6D837A40401C666BC1C │ │ │ │ +F3344FBAB3E48BEE18F3AF5CDB33BA63778D373A851333C8C34E2F35AB94E8B4 │ │ │ │ +FF7E62A92ED83B872894E0A17209E14CF61269204A35A4BC8C7EE4B16F19E91F │ │ │ │ +669C4EFCECB187F6C7FAF92B4E14E400C6B3C81679D4A7196D66DB1E897DDA42 │ │ │ │ +47CC2848B46D581A95EEF85AB528E8CDEEB275D1E1FE197A3A08D36406E2DADF │ │ │ │ +A87D817AF18B5525F89B7C2E584F4A1254A1FC71E749999A2152870631A69CB6 │ │ │ │ +666EBD6BB3366A598F6592040D0E82B9D866DF0A76C362E76C2804D108A0C148 │ │ │ │ +51F42E9E0ABD52CC2D02B156B63AFD03313AFC80EACC83DF9B59F05FD798951D │ │ │ │ +FCF5335636DFC6561910ACE0AEC47F74CFD302EB7421D28AAAC8FF82B7CE2B2A │ │ │ │ +340B8BCE09F57BFCBC77F91096D97A85726E68846398C8C9C8D3A65A252AE8FB │ │ │ │ +166750C244963BC61E2236BAAC529FABD6FC774550096374A8DB81B6AF1EA843 │ │ │ │ +27F671C0045D629E3734EF037447C4763514FD1C4AE858A494AFC23A64C82149 │ │ │ │ +F4C0A7023B3865B84FAC2DC88D1553DCEBA3D8FB5DBC1103123F6B8CB5B3A399 │ │ │ │ +B665B26B001BF1E4BFABE42BFF6B02D69FA88D5CBCA5A11D5B48CFB4EAE60558 │ │ │ │ +5FBE254AD3BE01761CD4995E766E172D768621223505FD6AA8F89FC042EB814C │ │ │ │ +34373DAEC4FAAF71C0752F814154C5299F751CE7E0F9C673D2E448D0204C214C │ │ │ │ +C04DC34671FBEF72350FFBA263662E86A0D3795E310153AAF4C8A2623E167E6E │ │ │ │ +1F13A9BA485D5DDFC451D691DBA7C49E20354A7AD79D89F7EDE24F0D5B48B27D │ │ │ │ +568D01EF2555504196C09841F5970D8CF6C5D47FFFCF18AE6B2A485342000AAD │ │ │ │ +1F922FBEF7C98E0965609C89240E7B131A59551F57CD5C92097FCE75F5D2778F │ │ │ │ +F9ACF43A3273551363442C8C539205903A835C744A4AA953545506081D3D231A │ │ │ │ +A140E01F280BC42A3C35EDAD5F6B8CE6E51C68E41CA813710864ED880FCE846C │ │ │ │ +1B66D27CC2DBCDC2B1B96A12490BD76D67A415D4A6595CD9B19D3104A83D2C82 │ │ │ │ +C46DCD2C027F0565EDB83E54FF99498194D3140E55E8EE65EBDEAC5409B5616A │ │ │ │ +73141DA2D581E300A6057F4301A02DD160AB3E55A116313525122D0608816AA8 │ │ │ │ +4712EEF3D6FE8C893DF37D │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -4110,16 +4100,16 @@ │ │ │ │ %%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 134[48 3[51 │ │ │ │ -2[36 12[40 2[51 45 26[59 11[25 45 4[45 1[45 1[45 3[25 │ │ │ │ +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 4[45 45 1[45 1[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 │ │ │ │ @@ -4219,24 +4209,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 1135 4 v │ │ │ │ -1317 w Fj(Chv)29 b Fe(:)41 b Fd(DRAFT)30 b Fe(F)-8 b(ebruary)30 │ │ │ │ -b(29,)i(2024)p 2765 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 1176 4 v │ │ │ │ +1358 w Fj(Chv)29 b Fe(:)41 b Fd(DRAFT)30 b Fe(Octob)s(er)h(4,)g(2025)p │ │ │ │ +2724 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 │ │ │ │ @@ -4285,17 +4275,17 @@ │ │ │ │ (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 1135 4 v 1316 100 a Fj(Chv)30 │ │ │ │ -b Fe(:)40 b Fd(DRAFT)122 b Fe(F)-8 b(ebruary)30 b(29,)h(2024)p │ │ │ │ -2718 100 V 1135 w Fl(3)111 399 y(3.)46 b Fj(void)h │ │ │ │ +TeXDict begin 3 2 bop 91 100 1176 4 v 1358 100 a Fj(Chv)29 │ │ │ │ +b Fe(:)41 b Fd(DRAFT)121 b Fe(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2677 100 V 1176 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 │ │ │ │ @@ -4356,19 +4346,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 1135 4 v │ │ │ │ -1317 w Fj(Chv)29 b Fe(:)41 b Fd(DRAFT)30 b Fe(F)-8 b(ebruary)30 │ │ │ │ -b(29,)i(2024)p 2765 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 1176 4 v │ │ │ │ +1358 w Fj(Chv)29 b Fe(:)41 b Fd(DRAFT)30 b Fe(Octob)s(er)h(4,)g(2025)p │ │ │ │ +2724 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 February 29, 2024 │ │ │ │ │ + 2 Chv : DRAFT October 4, 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 February 29, 2024 3 │ │ │ │ │ + Chv : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 4 Chv : DRAFT October 4, 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 2024.02.29:1858 │ │ │ │ +%DVIPSSource: TeX output 2025.10.04:1734 │ │ │ │ %%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 │ │ │ │ @@ -1016,23 +1016,23 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 50 /two put │ │ │ │ dup 52 /four put │ │ │ │ -dup 57 /nine put │ │ │ │ +dup 53 /five put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 70 /F put │ │ │ │ -dup 97 /a put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ +dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ -dup 117 /u put │ │ │ │ -dup 121 /y put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1206,95 +1206,85 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA647CD0E2539DFAD9604486DCCFA49 │ │ │ │ -AC96130D106A8F8387633622C3809400D6E8FF9D60877C743502E4D211CEBF62 │ │ │ │ -9A6F91045C22D5D20C5FF677D89983D02E5EE26C71A9EAE0E7C52465DA5A149A │ │ │ │ -9B731C27EC8366BC3E841C0CAE49A33DE164A857365B17B09CAD121C47A980CB │ │ │ │ -C75E1030F6C394EDB46C54B46880D2344127B903FB22684C9CAACE6053DC3BFA │ │ │ │ -4E47C565ECAF19C4295A11BD68CA6D45B5738B932BB3690A8C712904C49C1636 │ │ │ │ -A7702075F2FEA8DB3EB3A3C1216BB769DD0BAF4507A18E3052F2C846B0797933 │ │ │ │ -8CE9BB2DB5DFADAF1B0FC3A22BAB82A0D5D290F7AD950013CFA465BE11C1076D │ │ │ │ -5833FF92321FBF90D9229D3BA09DD18EEC44D9FCF8FCF63CC09D2977BFA798B6 │ │ │ │ -47FB047EA6AF69C7DE570176F5B6C0FED74DEDBF7DDF49550DD84BA14AC09423 │ │ │ │ -F70D5B14F0F8588F1E2FFE0DFE0760E77A9E39DEDAC5C5AE3760722C029B916D │ │ │ │ -96A2A7D1DD6A61F90B4B9806314A668EB7A0E107A3527310A240490453CC18D7 │ │ │ │ -3793B4CF3CE13EA332E7F5C2BACF85AC75FE84693B966BB0F6FB9A179A331C4E │ │ │ │ -55E9EF30E2734E44A88E053CD5E650D7E529E94CB7F8B733E68315ACAC5BEFC5 │ │ │ │ -3FE4F585F875310267865679AB381125C31E9AEB7226DC9F18DA80A9DE2F38A4 │ │ │ │ -51B8F9D5B2FBA0F50D53AE6212AFE41466A594F7A303B4E82F1493C0B8D65756 │ │ │ │ -BE6AF2931E5ADA5CE7D51CB5B1EC916C6C6D674808939331CA66F8181DD2B112 │ │ │ │ -1A12198CCCB6BBF1D40C803E794B65241ACE1E0D30CCA1C6F2D3E1415B98726B │ │ │ │ -9BA303BE2C4C276108CC78C093F1CC85CA454CC38535D1DEBFA341D84E8A5DDF │ │ │ │ -D53D8DD0F4A812B5BA63871BEB3BCE93FBC77AD395914E2CD757546C2BE2D641 │ │ │ │ -FDB12258E1E1D10E1B963EABB265F2C8B2547D48963E1AD3B223B666B46915A1 │ │ │ │ -157F5EA0AB8D8411C07AA2EB5D0EF1A1BA6D81C47473A3D3D6287104C7BF61F8 │ │ │ │ -3BDB64995DE96A65BF2B7288C51ADAA3D373A95C40D5240C5FF397551554AA9E │ │ │ │ -C89C7E45AA7738503CB058EF6AD5052CC78E4445C810C250BF25394B8D7DE82E │ │ │ │ -315C9CCD6E1E9150EC79EE0F354C668AE199C1AFF39C67337A86CB932E8D64E9 │ │ │ │ -389FF3CC08B538492DEED017686DBB9BDEA30FE67FB4EBDB3627C16FD15F243A │ │ │ │ -7FDEB310EFC940E57726E94340472F2C452815927ADE21578C959890216BE504 │ │ │ │ -225BE4B4D2E3B19F5E06B5A0B25AF168C3A2B26F599A829F89C16BD2026E8CC9 │ │ │ │ -8FB3CBB830C3E36C099071A70D0B8834FF2C17364EB50D5C71440CC7BFE02321 │ │ │ │ -8C6ECAC2F7EC1BE39077DB0E8B2B251626A71FD038EB2CF1FC254D98C1535CAA │ │ │ │ -A8C987BC266482BD860A333048E1EDB3DD40A6ECD6DA0088AD9B9640202D89AA │ │ │ │ -0BB9A0ADF63491E67F2E97E35942D77E59B9B8AB0ED28B022EE5CD3449FC5B7A │ │ │ │ -19E38845B488F97D155C4312885E29537EAE97719C65845663480CE79DE8F037 │ │ │ │ -68995C0928FE8AFBEE554F01381EE5187578DF5D2542F26F66A599EE8ECC1F68 │ │ │ │ -FBADF3C2BA968C3CEB86675CF9A6CFD736E1422800D270417D497903DE87F2AE │ │ │ │ -938E39E120E9D3079F512E545E0E2616B84E81FE41392184F96818A7C86BF541 │ │ │ │ -F2E67C48CA56DA838C9FA0FAD538073B9F26319140D1F80EEEBCA190DE660A31 │ │ │ │ -457CAC16E92F87449A3734F9EA751588514865B58DC073658C8A857B5398AAC7 │ │ │ │ -3DC11E069996EF74A3189A07630D5DB87C5E028CD193C086B4D0E8BABC4F2393 │ │ │ │ -235EC96091B16C4A6D97DA1BD30A2D2E71F55869223CA66AD12448B668685F6E │ │ │ │ -06E7888D7F20045C662C4F7994CC7E1CE9AAC33A026716AA0551DF12343F0E22 │ │ │ │ -6E9F4B21C90406CC4997601194EF37A973221D1F4D73DD5666BD297F621C92AA │ │ │ │ -E3F698BC1146ADE754C4120EDF5B3E974D75A237E51DB49D52CD6CC7C9E8BD2D │ │ │ │ -E6849DF8F4DBA86C655D0C57CB54836C8A841C1D814F6B493F96ADBFCAD78D3B │ │ │ │ -430C58EF169950851B6A0B46411488B1A6F6974832787A24C0CDDBE27996EFB1 │ │ │ │ -DB341FA34B1DC6238D978D1E1D34AF3FB375ED6DA9C88699F195C88A54622F7C │ │ │ │ -36DAFC663D85660E756733A7E22F20C6A5D91F06087CAD10F7217BD33F343DC6 │ │ │ │ -F5EB9F16FE763672243EE6AE5CB6063A1D64670E1C059DD52134974E27D9D89C │ │ │ │ -BC658FCD814F20703D610C978FDCD6E2AEA31C18D1A310F215B28199F66C87DB │ │ │ │ -3B23980A393E1DD77AFA3045EDB6942505F3CF6204315A14E5B6BF2E96F3BB1F │ │ │ │ -628D24AC1893BC7DAEF3AA63F2116837F31DB90D872CBD9E5C48BCDEE781D20D │ │ │ │ -C6553D2D15F4E8438A9D1C7CEE1B72BD6AA08DC0AFEAF8B4DC1038707EE4A1BF │ │ │ │ -3D84460E60AF90F55002C1D8EBF0700F7EC3EFC944BEA78D0E0536F3AA6D9A84 │ │ │ │ -604A781AC5ACFEB7E681365315EE11E991C03DA431B65B332AD8F83F6F3AE66C │ │ │ │ -1BF434D3793FB5BCC44E44ACFF2855C2770C4AC678C6ACD6EB071974ACF1AE37 │ │ │ │ -D02C1736C62CC205A2F3488448527EFFA379613A8E6A6D134F4BFBAE6127304D │ │ │ │ -576C900A458E32CD42A4674415E03D8EB5742E71B854B3EDFD271AA214436544 │ │ │ │ -D1BCFD52F439298847E1FA258E5D38384FC85BC4EDC6F9E4431621CF763B137B │ │ │ │ -22DB6E3268B3F78881D55EA7C52ABF23FB73C152B06B708084FE1B00CFE72D9D │ │ │ │ -57B62AEE912E63BBD89D4D13CE896735454F1A16C3D9FB6CDF142CCA9F1C0242 │ │ │ │ -46F62109DF30667DA327F7CF6DC19B880C860C69080597FFCB1793313E202D4F │ │ │ │ -120A7C6B052C2EB7597B71B0985D24FDD2D3918393BF720E762C5DBBC2BB1E91 │ │ │ │ -B04560364EFE5B16EB068E0560FB932E0C617CFB95A166388E99AC4CB020F5BC │ │ │ │ -E24BB77352D7C3B21C37D404051A70FFFA0F726C35501A1FBB411F832CE46A2E │ │ │ │ -B424E26BD4 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFD8CDE285A2827F4659E339460ABEF319FE44D7A91E93CA309E9266E03DA │ │ │ │ +735F5DEF3920C01189BB63C2BD7ED0B92EABB481F123641477CDCCAB9751FB7B │ │ │ │ +F67DA7CE6EB134BC10D0228562BA5A6BFE6940907EF030ABF9EC4A8A0DFEF73D │ │ │ │ +3289E8CB4DC37694F5A656A935D92C72B3D82B012F578A27711B161DE9652ADC │ │ │ │ +71C51E743E4E9A7C6CF6FF16C5D65C1F60954C0858B48FAAC4FBB21988E2A934 │ │ │ │ +AC50C097DDF42C416359647D79F830E1430FB9BB803451A6732D1B5CAB817C1B │ │ │ │ +673B3077D9A180F184267E9990C087BCDEBC8EB8B889934DD0EB63C2EBCED4A3 │ │ │ │ +83A0D6A365412CFF610EF7BD5F82B02AA293F1D2F868768CDE9B801C929B4A38 │ │ │ │ +64E20C70BC4041F837AD15423517F7336A067D140A2C7906DC5D45885FFB3B69 │ │ │ │ +724E5B9B138BD15A9359EB25D14BC4193E529D1A49FEB0DC1015BF94CEBBD5E0 │ │ │ │ +EA148B185C53E12BD9FA6DBC097D789A73E832F02F55080D8ED6087F5952EA78 │ │ │ │ +250A4C65CE4C4013554A031446D2092D813C4CB1A605D97A40CF867F656ECD1C │ │ │ │ +C23F80230AD1E449AA8B4007134F71156719206441D92B1A6DD25101ABF69F70 │ │ │ │ +538CCCE216376E1BD6E423986BD4E83B1975B15092D4E19F885672F9E7C02485 │ │ │ │ +E02DA0F4243D324A5983D1D46444E5F6573F699E4F2A3395EF0EB7808B7D4D62 │ │ │ │ +690FD033E93AA553082273636503DA4BBBBFA6D127CE10424DD1DDF4F879305C │ │ │ │ +14F64180E7851D091B3220DFC70CAA44716B8F7F0C6FBEDB167801DED77F9E69 │ │ │ │ +E9B31CD2D8044DB946E511162976C34DE27F2BB974B70509005562A0A21317B7 │ │ │ │ +46D826A31C476C8F9A778F941FF5956BA2D765B1AD0AC4BC7AE1CD8A2A81F039 │ │ │ │ +06EB13EBD099BBDB2EBDB54D459C288EA69FB0018CE9255BBFB08C1F90FF30BD │ │ │ │ +C971DA7FDB193281B8F967F21AB42F13F36085AC9EC0D6B6B448C8F289B0AD70 │ │ │ │ +DB521A4755ECF9CA594741E5C674220C21C265EF3BAE594197B00048C8D4DB73 │ │ │ │ +4AC47B6A86EAC7EECD042C8E23C347F8C9FCB870473C1FBD91C298174BCBF1A9 │ │ │ │ +7B366C570A9A04A433495FBC9FD0FFC22A0E8181424C0F038ED97AD5054B10CC │ │ │ │ +1CD5BA0719DD0B4F4F18932AE87FF8B8C1CF0C7482B7847049761505DCD85146 │ │ │ │ +4EE5CB53993A9449CD05233E961BD49AE92D308E2065D6C6BF038538039AA56A │ │ │ │ +C59D424BE3175427337E16892D3920598D518423E145C6B2DD3881F338845F0D │ │ │ │ +16C47AA0D9C2D6DE99C6A302D567ACD6F98BF38223F1890E099C8F93348FFDAA │ │ │ │ +C2D3440187C8FED87C1A891EF11EFA7168EC47F72AF8BC5BE1B88B1084E704F5 │ │ │ │ +82099F1A79E556D94CC38851C97DC3864945A7470F1389BCF608BADAE45B236D │ │ │ │ +2934A20FFBCF169BF84DF496B07E7F1D9002E62B030337642804403DF7E4B3FF │ │ │ │ +C5A421EE0033BA06C50A041FBFE8F81AFC145664E2976505EB14859CF0377EBA │ │ │ │ +EA604CF8BFB5F9ADB9A7ED56E6F0F919E791D57C7232241C892EAC3E55D2D03B │ │ │ │ +FF43B9DAB7B1D8C6588D6D3503F49E80121E52254431B308752A936E0B51124D │ │ │ │ +C7F23C316BA6FA73E6BC47EB9550003E1393C68360067C094C65C0DD17214FA0 │ │ │ │ +45FF0F9C3E0AE4C81093752D23EA95E163C98EC04873ECE3FB0882567329525C │ │ │ │ +0A3937B16CA72B5EB6D2DC10C1B485C0BA939587AFEBB6D837A40401C666BC1C │ │ │ │ +F3344FBAB3E48BEE18F3AF5CDB33BA63778D373A851333C8C34E2F35AB94E8B4 │ │ │ │ +FF7E62A92ED83B872894E0A17209E14CF61269204A35A4BC8C7EE4B16F19E91F │ │ │ │ +669C4EFCECB187F6C7FAF92B4E14E400C6B3C81679D4A7196D66DB1E897DDA42 │ │ │ │ +47CC2848B46D581A95EEF85AB528E8CDEEB275D1E1FE197A3A08D36406E2DADF │ │ │ │ +A87D817AF18B5525F89B7C2E584F4A1254A1FC71E749999A2152870631A69CB6 │ │ │ │ +666EBD6BB3366A598F6592040D0E82B9D866DF0A76C362E76C2804D108A0C148 │ │ │ │ +51F42E9E0ABD52CC2D02B156B63AFD03313AFC80EACC83DF9B59F05FD798951D │ │ │ │ +FCF5335636DFC6561910ACE0AEC47F74CFD302EB7421D28AAAC8FF82B7CE2B2A │ │ │ │ +340B8BCE09F57BFCBC77F91096D97A85726E68846398C8C9C8D3A65A252AE8FB │ │ │ │ +166750C244963BC61E2236BAAC529FABD6FC774550096374A8DB81B6AF1EA843 │ │ │ │ +27F671C0045D629E3734EF037447C4763514FD1C4AE858A494AFC23A64C82149 │ │ │ │ +F4C0A7023B3865B84FAC2DC88D1553DCEBA3D8FB5DBC1103123F6B8CB5B3A399 │ │ │ │ +B665B26B001BF1E4BFABE42BFF6B02D69FA88D5CBCA5A11D5B48CFB4EAE60558 │ │ │ │ +5FBE254AD3BE01761CD4995E766E172D768621223505FD6AA8F89FC042EB814C │ │ │ │ +34373DAEC4FAAF71C0752F814154C5299F751CE7E0F9C673D2E448D0204C214C │ │ │ │ +C04DC34671FBEF72350FFBA263662E86A0D3795E310153AAF4C8A2623E167E6E │ │ │ │ +1F13A9BA485D5DDFC451D691DBA7C49E20354A7AD79D89F7EDE24F0D5B48B27D │ │ │ │ +568D01EF2555504196C09841F5970D8CF6C5D47FFFCF18AE6B2A485342000AAD │ │ │ │ +1F922FBEF7C98E0965609C89240E7B131A59551F57CD5C92097FCE75F5D2778F │ │ │ │ +F9ACF43A3273551363442C8C539205903A835C744A4AA953545506081D3D231A │ │ │ │ +A140E01F280BC42A3C35EDAD5F6B8CE6E51C68E41CA813710864ED880FCE846C │ │ │ │ +1B66D27CC2DBCDC2B1B96A12490BD76D67A415D4A6595CD9B19D3104A83D2C82 │ │ │ │ +C46DCD2C027F0565EDB83E54FF99498194D3140E55E8EE65EBDEAC5409B5616A │ │ │ │ +73141DA2D581E300A6057F4301A02DD160AB3E55A116313525122D0608816AA8 │ │ │ │ +4712EEF3D6FE8C893DF37D │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3519,16 +3509,16 @@ │ │ │ │ 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 134[48 3[51 2[36 12[40 │ │ │ │ -2[51 45 26[59 11[25 45 4[45 1[45 1[45 3[25 44[{}13 90.9091 │ │ │ │ +46[{}24 99.6264 /CMBX12 rf /Fb 139[35 1[36 2[45 9[40 │ │ │ │ +1[40 51 18[71 20[25 4[45 45 1[45 1[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 │ │ │ │ @@ -3623,45 +3613,45 @@ │ │ │ │ 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 1116 4 v │ │ │ │ -1298 w Fi(PERM)29 b Fb(:)i Fg(DRAFT)f Fb(F)-8 b(ebruary)30 │ │ │ │ -b(29,)i(2024)p 2784 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)227 1234 y(b)m(y)f(a)f(call)i(to)f Fi(Perm)p │ │ │ │ -905 1234 29 4 v 33 w(setDefaultFields\(\))p Fj(.)111 │ │ │ │ -1433 y(2.)46 b Fi(void)h(Perm_setDefaultFields)42 b(\()47 │ │ │ │ -b(Perm)g(*perm)f(\))i(;)227 1589 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 │ │ │ │ -1745 y Fg(Err)g(or)34 b(che)-5 b(cking:)40 b Fj(If)30 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fj(2)p 136 100 1157 4 v │ │ │ │ +1339 w Fi(PERM)29 b Fb(:)i Fg(DRAFT)f Fb(Octob)s(er)g(4,)h(2025)p │ │ │ │ +2743 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) │ │ │ │ +227 1234 y(b)m(y)f(a)f(call)i(to)f Fi(Perm)p 905 1234 │ │ │ │ +29 4 v 33 w(setDefaultFields\(\))p Fj(.)111 1433 y(2.)46 │ │ │ │ +b Fi(void)h(Perm_setDefaultFields)42 b(\()47 b(Perm)g(*perm)f(\))i(;) │ │ │ │ +227 1589 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 1745 y Fg(Err)g(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.)111 1944 y(3.)46 b Fi(void)h(Perm_clearData)d(\()j(Perm)g │ │ │ │ +(*perm)f(\))i(;)227 2100 y Fj(This)36 b(metho)s(d)g(clears)i(data)f(o)m │ │ │ │ +(wned)g(b)m(y)f(the)h(ob)5 b(ject.)61 b(If)36 b Fi(perm->newToOld)d │ │ │ │ +Fj(is)k(not)g Fi(NULL)p Fj(,)e(its)i(storage)227 2213 │ │ │ │ +y(is)21 b(free'd)g(with)f(a)h(call)h(to)g Fi(IVfree\(\))p │ │ │ │ +Fj(.)35 b(If)20 b Fi(perm->oldToNew)d Fj(is)k(not)g Fi(NULL)p │ │ │ │ +Fj(,)e(its)j(storage)g(is)f(free'd)f(with)h(a)g(call)227 │ │ │ │ +2326 y(to)g Fi(IVfree\(\))p Fj(.)35 b(The)20 b(structure's)g(default)h │ │ │ │ +(\014elds)e(are)i(then)f(set)h(with)f(a)g(call)i(to)f │ │ │ │ +Fi(Perm)p 3097 2326 V 33 w(setDefaultFields\(\))p Fj(.)227 │ │ │ │ +2482 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.)111 1944 y(3.)46 │ │ │ │ -b Fi(void)h(Perm_clearData)d(\()j(Perm)g(*perm)f(\))i(;)227 │ │ │ │ -2100 y Fj(This)36 b(metho)s(d)g(clears)i(data)f(o)m(wned)g(b)m(y)f(the) │ │ │ │ -h(ob)5 b(ject.)61 b(If)36 b Fi(perm->newToOld)d Fj(is)k(not)g │ │ │ │ -Fi(NULL)p Fj(,)e(its)i(storage)227 2213 y(is)21 b(free'd)g(with)f(a)h │ │ │ │ -(call)h(to)g Fi(IVfree\(\))p Fj(.)35 b(If)20 b Fi(perm->oldToNew)d │ │ │ │ -Fj(is)k(not)g Fi(NULL)p Fj(,)e(its)j(storage)g(is)f(free'd)f(with)h(a)g │ │ │ │ -(call)227 2326 y(to)g Fi(IVfree\(\))p Fj(.)35 b(The)20 │ │ │ │ -b(structure's)g(default)h(\014elds)e(are)i(then)f(set)h(with)f(a)g │ │ │ │ -(call)i(to)f Fi(Perm)p 3097 2326 V 33 w(setDefaultFields\(\))p │ │ │ │ -Fj(.)227 2482 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.)111 2681 │ │ │ │ -y(4.)46 b Fi(void)h(Perm_free)e(\()j(Perm)e(*perm)h(\))g(;)227 │ │ │ │ +(ted)f(and)f(the)i(program)f(exits.)111 2681 y(4.)46 │ │ │ │ +b Fi(void)h(Perm_free)e(\()j(Perm)e(*perm)h(\))g(;)227 │ │ │ │ 2837 y Fj(This)32 b(metho)s(d)h(releases)h(an)m(y)f(storage)i(b)m(y)e │ │ │ │ (a)g(call)i(to)e Fi(Perm)p 2282 2837 V 34 w(clearData\(\))c │ │ │ │ Fj(then)k(free's)g(the)h(storage)g(for)227 2950 y(the)d(structure)f │ │ │ │ (with)g(a)h(call)g(to)g Fi(free\(\))p Fj(.)227 3106 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.)0 3391 y Fa(1.2.2)112 b(Initializer)38 │ │ │ │ @@ -3688,17 +3678,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 1116 4 v 1298 100 a Fi(PERM)29 │ │ │ │ -b Fb(:)h Fg(DRAFT)121 b Fb(F)-8 b(ebruary)31 b(29,)g(2024)p │ │ │ │ -2737 100 V 1116 w Fj(3)111 399 y(2.)46 b Fi(int)h(Perm_checkPerm)d(\()k │ │ │ │ +TeXDict begin 3 2 bop 91 100 1157 4 v 1339 100 a Fi(PERM)29 │ │ │ │ +b Fb(:)h Fg(DRAFT)122 b Fb(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2696 100 V 1157 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 │ │ │ │ @@ -3758,39 +3748,38 @@ │ │ │ │ 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 1116 4 v │ │ │ │ -1298 w Fi(PERM)29 b Fb(:)i Fg(DRAFT)f Fb(F)-8 b(ebruary)30 │ │ │ │ -b(29,)i(2024)p 2784 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 1157 4 v │ │ │ │ +1339 w Fi(PERM)29 b Fb(:)i Fg(DRAFT)f Fb(Octob)s(er)g(4,)h(2025)p │ │ │ │ +2743 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 │ │ │ │ @@ -3849,17 +3838,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 1116 4 v 1298 100 a Fi(PERM)29 │ │ │ │ -b Fb(:)h Fg(DRAFT)121 b Fb(F)-8 b(ebruary)31 b(29,)g(2024)p │ │ │ │ -2737 100 V 1116 w Fj(5)111 399 y(8.)46 b Fi(int)h(Perm_writeStats)d(\() │ │ │ │ +TeXDict begin 5 4 bop 91 100 1157 4 v 1339 100 a Fi(PERM)29 │ │ │ │ +b Fb(:)h Fg(DRAFT)122 b Fb(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2696 100 V 1157 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 February 29, 2024 │ │ │ │ │ + 2 PERM : DRAFT October 4, 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 February 29, 2024 3 │ │ │ │ │ + PERM : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 4 PERM : DRAFT October 4, 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 February 29, 2024 5 │ │ │ │ │ + PERM : DRAFT October 4, 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 │ │ │ │ @@ -8,15 +8,15 @@ │ │ │ │ %%DocumentFonts: CMR17 CMBX12 CMR12 CMR8 CMR6 CMR9 CMTT9 CMBX10 CMR10 │ │ │ │ %%+ CMR7 CMBX8 │ │ │ │ %%DocumentPaperSizes: Letter │ │ │ │ %%EndComments │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o ReferenceManual.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2024.02.29:1857 │ │ │ │ +%DVIPSSource: TeX output 2025.10.04:1733 │ │ │ │ %%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 │ │ │ │ @@ -3850,21 +3850,21 @@ │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 46 /period put │ │ │ │ dup 48 /zero put │ │ │ │ dup 50 /two put │ │ │ │ dup 52 /four put │ │ │ │ -dup 57 /nine put │ │ │ │ +dup 53 /five put │ │ │ │ dup 65 /A put │ │ │ │ dup 67 /C put │ │ │ │ dup 68 /D put │ │ │ │ -dup 70 /F put │ │ │ │ dup 74 /J put │ │ │ │ dup 75 /K put │ │ │ │ +dup 79 /O put │ │ │ │ dup 80 /P put │ │ │ │ dup 87 /W put │ │ │ │ dup 97 /a put │ │ │ │ dup 98 /b put │ │ │ │ dup 99 /c put │ │ │ │ dup 100 /d put │ │ │ │ dup 101 /e put │ │ │ │ @@ -3875,15 +3875,14 @@ │ │ │ │ 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 │ │ │ │ -dup 121 /y put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA │ │ │ │ 0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 │ │ │ │ 51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 │ │ │ │ 7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 │ │ │ │ @@ -4058,185 +4057,177 @@ │ │ │ │ E6D6662189CC2D95AB85D7473F65C5D7B4AC63B0FE928F3400035D5A9D443D0D │ │ │ │ F3532B99F3AC26CB25EA3CD64C341159061E02EFBC7C033C05CD919BBD827A6A │ │ │ │ BAD50D9C98DD94332DB4C7155F8A52013F9ECB7CCE3CFB3E667C57B022A0A753 │ │ │ │ A45E41A9D8229D5198031ABA3DAAC142AEA5FAB6694A6433629E15AE45A67FDA │ │ │ │ 34DE10D995ABCAF45FBB3B6B73E80D05F4C51F8C29D4B0F67C8A86432A6C5E86 │ │ │ │ F0126AB25A5CA2875B48C61CB8112A4CF9AA08F8B0157396CF63CBECDB8867CC │ │ │ │ AC10F060630C9BFBAD84B1FF01C814878F0C177F552BDC9BB181B14581C6E968 │ │ │ │ -DAAAB2896FCFB745795C4D2C87CC15BAA041EF80C5BDC12EC1F5786BB41A5A21 │ │ │ │ -073EE0BC436B346E014DB4099EDC67BC432E470A4B779FD556341061CA3F2BE8 │ │ │ │ -EFA332637AEC878C2BB189CA3267B2BE5B8178E6B7889A33771F86276E6F0B8E │ │ │ │ -8E93B816AC7005575762EF4DE45E2794B7322F9B6D8E634FB8FF250D638EB502 │ │ │ │ -818321B3C46DB51B8EC6C2EF1D05C716519A3BD6B12A67239898F8A010CB8279 │ │ │ │ -86D2D942871606D4B8A274C720E46E43BE44C74224A8520232F7F6C96FC7D6D2 │ │ │ │ -EB817F578B294EC22FA123ED64613F3AE96DE23AA1833D2A527F282DC80C38CA │ │ │ │ -B5A9D66708ED2293AC1F832C82B70993055FCF9BDE6F5DEAECBE5345572E7D78 │ │ │ │ -71D938095EE457512DAABB5278FFBB263323B7FBDC84B52650114DC3DF9E57BB │ │ │ │ -C1835D2D17273F234A45642152EA125D909CA252173DAE4D0073D71DC3823955 │ │ │ │ -488FADCF5F3B1E500A3059C4E00DAECB29BCACE5456AE77DB22FB7F97E9B9BF2 │ │ │ │ -6D89F8080F41B03D402E59FFA3ED920D4DA409ECA9AAD57BAC91C3F1B51279EA │ │ │ │ -A3133501892E9E53F3F8A6BDA0FFF9456D027AE49BD31372050313BE55845B85 │ │ │ │ -F15380257D6687D5F609325220D553D0F5C384A88E22325B42E6A336A12560BE │ │ │ │ -70E273FE85B4E68DD94BD530295F6D981DF936B92F136DF95AEF560EB138CB11 │ │ │ │ -EC45F6D29743E46A4DDCB80283409F2C52FF83976BA136A4534307B3E6C8AD1A │ │ │ │ -59AED81A503AA8244A279BCB788DF7D2A1863404626CBEC7F122B3EFAC395A0B │ │ │ │ -1D514218CA020561041E4398BC1F8FBB74D3130DD0FDE7757DDB4BDC74D4CB0F │ │ │ │ -7EE03B5A2D23CD31816C1CD6BF51640ABE4CA02F0BAF2D19CDE2631107BAB24D │ │ │ │ -2A0C90021F19EC9CF2337E0C46D709D88BEC0C6160258D93A61D575348017132 │ │ │ │ -6896E96413DF24F4E4C56C6EC57274DB2C7E439ECFEB9EB9096FC4300D038C32 │ │ │ │ -EA82DBB2B81B2F447F5C237614153CA4528BECE94629A60E263268E6FA7959B3 │ │ │ │ -E9265640272877F5900CFC0AA07C032C7203F2DDF8C5834CFA05043BCE0CA2A3 │ │ │ │ -373C4989AE0B0F1695B39F1E17C6B02DCDCF0FA19B0375159F287AE5F1491C8B │ │ │ │ -0CCEEFD7BCBB7C8D5AE96B88D80E5CAD8C823AB1A8C358D688DAA549C75A6A8C │ │ │ │ -2F80FF04AD11BC47A134F8B66E16D4897269186E9B9BDB2FA1C7CE313C6DB3D3 │ │ │ │ -40B49EE8D262C063759AF190FF2703A7131BA5E50A6B1E792244A370FB69ED4B │ │ │ │ -F41AC267026D0A5834A2BACAC34C22DF970E28C1862F9611977E46F9FDAD8725 │ │ │ │ -F8708AFEFC68E4D2CC8772180E1CD75CDE05BF6B160375EA158D0D28D0193EB6 │ │ │ │ -7E716DE1DCAC7521BA37F08B06506F9873B55C874F861E90329DC52D40205706 │ │ │ │ -B63AB93E75B394E5D276C51761AA8321E90479BCEFB542923FEB02F684AEE4FB │ │ │ │ -12D9EB4B069E9D16E64CCF28682F1A8E5E69BFC95A821371FF508BB9BC091FC3 │ │ │ │ -2B8DADF9F6DBF435E1EFB17842EF1A3A6DA8651BB94A689C9A2D1E52737EFFC9 │ │ │ │ -BFD8F92362EA06A1933AC64549369CE3C145616AE73BE87D5C752A16BEDF5F78 │ │ │ │ -CBE64713E795CB1FEE5C72127EA08014A309003611689264F89FB806234C4297 │ │ │ │ -D8699F37F620ADCD627043FEAC5E11CC0738DFF7E5FC8A7FC9935BB012E8364A │ │ │ │ -D2ECE17E70D319B0890BC0F91121FC3B0A4553FFF18DA449A019721A99669B39 │ │ │ │ -5C2D9FD4C034E34BB38AF768776A6147DFD60A18939EEA968AF7F05E627E42F2 │ │ │ │ -B7CBA695017FDEB56BD82183BF4BA89955E8BA3C5E355F185EB9C0A9DFF0455A │ │ │ │ -2ABCC47F13A2CABA8A178B3F7CEB77E3A81785D4373FE7D09764A6FD70687C6E │ │ │ │ -ED07C346EF928A4947691717E3522D2343A809F5ADF72CEFE7403331B0995B9A │ │ │ │ -199E4259B96089E8F0823B546169D5F531D0603578990C0A84F0074672F96AD7 │ │ │ │ -1DFD740F00DFD3DED18EA68B65E68BC7AA3BDEC8197FA62F43DF4C400A8E496B │ │ │ │ -08BF494B9585513E5DB9E53C242F3D8F78AB120343F0B72A707534A22362056E │ │ │ │ -4FDCA2C6F8D0F74FBC101BB8C6332DF18BB9BB2A1F66132C8F77BC70148235E8 │ │ │ │ -B9DEB3B4C2472CE110664B77F71CF99F46F3E4E243FE347646D91A7515FB96F0 │ │ │ │ -8A54CD0D0C2B57670DB54CEA5926D3FEDA26A24CC3F41FAEF1A7D5F624533E9B │ │ │ │ -03786B232B0FF80087A66B0EA6675DBF0DDD60946319FA659A421726E31EBDA2 │ │ │ │ -33EB1E65EBA852C389E9BA88D979376BD566F767927A94D7D94FF660F27A2E80 │ │ │ │ -1423B5E8CED0728B6B9DCEF67A36135FD6CD168293C258FEB09C7A79CDB1EFB3 │ │ │ │ -0DA97E7B85C8FADFFFBBB2A6C4F7EB7887ACD2363209282179986DB11A1B3091 │ │ │ │ -BF203561FA03F33DF47EECFF327DEE4B681C22C3A6261FA4FC4713C309364EC9 │ │ │ │ -E8C807B5CBEB6214B40C66C96382A18C8911A97172CB0A09168C1F43A39DFE51 │ │ │ │ -7C7642A46747D0874718A593AF0336E58CB3602B57AD5624A8E6CFACFE41DB3E │ │ │ │ -647645C8386A93424561A293865D03DF23555DA29637EAC9A166AD10EF194762 │ │ │ │ -14B92E3A42DB418E8015A17D3520F17458FB5A5528629400AE8DF098B8C63E57 │ │ │ │ -3B43030377851FF2FCA9DD085C73CED40BC94E7465C3DA33C860759426803FBE │ │ │ │ -41701F4BFADB11A42DF5302D830D7695E81CD3599B683105AC08C212A4D97763 │ │ │ │ -5D39E82AA3FE91A526A9AF0D8739F7287AEBDB1E345603E9EF654BEB3E2B0274 │ │ │ │ -824BE075250FE724EE4B0EBA7821A27A890AD6E86179A5E5F054CA8101A4A1B2 │ │ │ │ -1C2FFA5640B0CEF767BF682008E24A95589EC295CA0BEB1F58C65E2FFD89080C │ │ │ │ -A20FF4F7892F8B2D8C313E38498DAA11F2ADD1F3C54CE0783D3902598423186F │ │ │ │ -AB7005ED880D3D9F6F09241C5C2F22473F75D6CEC68279A3ADA429FFBDD68E24 │ │ │ │ -63E89607F2863744251EECCAA81A9BB0C28ABEA89E4FEDF68D575F1F3895D9D4 │ │ │ │ -BFD72251F99DC384B664A3013A47943D31928487E591A9D58B75012D0DC2E8CA │ │ │ │ -733C6ADD934C0553A4B00662C70B41111F44CEDD73E32FB1601A4D66D14C6C12 │ │ │ │ -42114EFFED0EC751E187259FE150FDC6AF3073EC6034A25BB380762A882FD6A3 │ │ │ │ -E2F6D60D4B00114D37FB9D92C2095270945F64863C5F60210F4B474F975A7B1B │ │ │ │ -5A7A24ADBA1EA6E98E85971A28483B043C1D113E6B1F075CD4B655387016DB79 │ │ │ │ -FDA3F64E34434E38AA67E4076116F11CC5A9F65BCF4DF6ACB04EC176EFF25C88 │ │ │ │ -BBD4C886E07644EA0B542FD4267DDD187FAC8B0BA208E05FE29985AB25C6DC0B │ │ │ │ -B0CF06EBA7D00BADE8C1D97A69110A46D1D3B1835CB8064690FFD25988ADABDD │ │ │ │ -63667862F6E7523E6288AD18A990761B29054DB58AC825B9A4DA8DC248662FED │ │ │ │ -0D15FDA899A247F11C48F07DB4488EF999E2AD38F85B80BAD2E364940CD57D82 │ │ │ │ -179C218C0EC315D32218779FFBEE4BCA5C618BBB1E1E5A80CF4BC26198F11B97 │ │ │ │ -EC47BB5B66E74C04EF82D13B2475CF46677174F7446A98D0FA24CC5966C270A8 │ │ │ │ -C0F8FDAD9BC983508684E9380E1684317006E5ED36B5F6BB36F080F6CBBF240E │ │ │ │ -BF226471E566B4A6D9614FEAADAC44AD19FA9B69C46480FC476FFDB22682EE5B │ │ │ │ -9429492C0B745C6BBC6B9A6DB71E0C7DCD462E4ABD049BC4763D1611CFF54757 │ │ │ │ -9C9D57C278D1C41AFE823D57C614C08A697C06C42C828648D1772B1057F91DC7 │ │ │ │ -4F47DF95572DD66A2E5DCF2F46594F0C81D54ADFCA1FC7740B53CE7F35BE424C │ │ │ │ -582A86F72EC3AE35F31F946E2F7928220BEC418FBEB5B2EA1B313405946E1161 │ │ │ │ -7838874E7F84B173B3037474175BD2A8DE4831EEFC492A95144FAA73E19B97D5 │ │ │ │ -7F9EA9E6ED1ACA0D617FDC6DA8365C4DF3A6505867348DE02534C0EB2479DD58 │ │ │ │ -9ED4443EA0379D27DFC35173B9C7C1F18216DA100579E9BD8E70FA82BC300B92 │ │ │ │ -8E998F5533262B18F5D9649078E0CFE32051F3CD2E178099F7794C8BF09CDCBF │ │ │ │ -B1009D2498FC9C51112DBFCF800ECE4CEF17B019144B462610838D74D7A11E56 │ │ │ │ -F01AF1EE706755EA586E5B69255BE6483A3AA13B927BEAFF82741228BF0D7992 │ │ │ │ -4D25530A3D00A7617D4EC5407C098FC95EABEF10CAA63C730BD72D76D100831C │ │ │ │ -F47F12D73FC0C1C61A93AFDEFAC3BBEA50EB8D11D46B64A4FFD4682AC32D3F3A │ │ │ │ -63A3D9DBD06CF3B92A576E699C068B795A55073536AE6EACF988974C7C9CF802 │ │ │ │ -6097D62333A2B53140BEA27AC3B43F863827368A4D9B74BDD0444F878821A8B0 │ │ │ │ -9753BDACAD222C0120DBD4FD0773EDCE0C3752B3DD3B5D6FD517E9AEEC6340FB │ │ │ │ -FAFB200B896A69B2081ACFAD5C33185E16276B91E193151A3EA666EBD5D0A09D │ │ │ │ -1B3BAD2CB886711106421F9A4BBDC28039AC19A4B32505F2C3339AA5C2BFD92B │ │ │ │ -CC8F3DD98374DA3BEC25EDD903F4BB5806B241A3CC70EFD5795BC4580F770378 │ │ │ │ -C8C165D47371FC144008855B97A1906B2A436A9BCB80FC1668FF1E65831D1352 │ │ │ │ -90E959805314AD000649402CC7EC03A721A0BB23F3848F8A0233F4CA115B4B27 │ │ │ │ -9C2AA38057FD9ED972CD4E3C6263A3452659B13A221EAFDE41FD552BE2C1466C │ │ │ │ -771671E59823C5C93E1FD4BABE5A84DD534FC8991FA9E68C9F8B706A04CB9A0E │ │ │ │ -A02DE6F134D7189960D2FD2F82D6D78B34FB7A7F2B943B39849CD02B814A8C33 │ │ │ │ -2C88E321F863358235911F3E57C97240711A9C4D001628C9499AD5C1ED8F9335 │ │ │ │ -C1E92A51AEE1D046BB37249A37FD255394A06732D8BDE02046AE3DAB9C5A4C22 │ │ │ │ -0C7DC5D4802F98163ED8C557D497E0337448293F94311A64EEB4D65497A22D36 │ │ │ │ -DFB4CBFF1F2F5912AFEB38D8B146FC10A3C1BA18DC57365772ACBE3407CEA9C7 │ │ │ │ -A5FDAFBF965F62197391FA796D1E1D79DDE4D8DA1F09C5B386C60F0BC1C9BD9D │ │ │ │ -8F88517195CC6F77912B8C233A1853781B12F20AA7694A5B237A8158C6E4FBEB │ │ │ │ -FF50D3642C121763653049CFBFADB60C248D345F39F683E654EE9A8755825962 │ │ │ │ -1E77CBB53954CD0E0F98BFA4D0B395C6F8B1EF37C81FCCA49F40FF27C0F0A451 │ │ │ │ -A887B1395F7C98F0C5E6A670DB18BB123CB8399B142B22FF69C93A46B6A50E6C │ │ │ │ -5647D2F5BD0ED08681595D4D57A239DCCC5E3C94CB85B8ECED3A3CA2B4179D95 │ │ │ │ -139AD5F369433575F255958B025F6E14032882F4D3E1F7931423B2C4DB83C07E │ │ │ │ -5C9B666860EF51EB9EE8A2FBFB38AB0F1FD1F175570742649BD430877B3A961D │ │ │ │ -2E04949F416DFA15D88A746F17175C69041F5E5A79F3B4F6A71D91324D890730 │ │ │ │ -4DC778E22A8EA02237DD07FAA1DFFC94A55A670FC08F59DD7DFAC2EEBFB81604 │ │ │ │ -4ED1C7A1776848ED8BE0CEE13658CC9650D1D10A2F36C5E6F8C662FE11EB9EE4 │ │ │ │ -9C20EC28E3CB28A11EBD2117C89FFF7F904B0143067478F50B7892822A930F72 │ │ │ │ -46F2DD3777FA40C6FDABDF54E222A8843FFF6FFAA3468EF43F246C9DB699301C │ │ │ │ -E72F7D862957B3EA07AB23134C27481F0D11105ECF8F997FA2F74DFED25A9A2C │ │ │ │ -95056D32D1A064575E66DB4C9303EFCF22A0A03F9AF3E35A4AECC59FDF0461E6 │ │ │ │ -F86C027537EC47E7894EEC27101D368794CCEB0B3BE4210B9974286539E69C39 │ │ │ │ -A196BD35A7D996641A86BAF8AFAA241DBDE5ABB02A0B2D9E4D7549D0C8BE7948 │ │ │ │ -BCDFF9DC34C686FF8F6E394AB7051657510DD5B778EF2426847E11E186CE9E4D │ │ │ │ -1B1F9BFF21D502D0B03EE24F9033C0055288AD25AD5D02C603EC979B44316644 │ │ │ │ -79BAD60D10D88672F805F60BE51DFB11300BBB55E4D64B766F93041FAA0DBBB9 │ │ │ │ -D5CE77DA430BC1498C5ACBA36040264CBAD67ED33C2AE6E9B77D1160168D45D6 │ │ │ │ -4663C011E5E85FE6AA9CE2D87F01D62201876E45D19FCF0015D2F9DCDB26C15C │ │ │ │ -099666A8CBC2357583343786FF197FFCCCD9C7940F3A7638960799073F96DD48 │ │ │ │ -CAA7271BDC0F13C0110906DC005DC1A89A867B552C8273B08679F7FEE7406489 │ │ │ │ -D0D7A062B06F7DF6274C4DB8D935D6C883FBA289E6A5A7E1D795471085B43331 │ │ │ │ -05BE3F528873F9975EBA58A302488D899498EFCC8AA6680DF6FB7208DE46C60A │ │ │ │ -857906B249B0D42CE384C005258880F298CE66E65983EA81FDB4C291EDA77D2F │ │ │ │ -C74DF9C04F308E365BFDAA5CD3CEAE007D988BE72F13CCA09C05AE195AE9D45B │ │ │ │ -C3FA982367EF1B81388A93B2461A8A28DAD41946B9492A4C11ABA4173B48F7FD │ │ │ │ -8752890D247B378915A39D1F3BF1538D8176FA7A2983B753D9F3A91195C7F26D │ │ │ │ -E0EB7CCAADBD78F206613A271235D4F65C2F1FCD3D06A414BB9D4345AE504E62 │ │ │ │ -353E01DB32BDB5E7A4D022ABC52E94D107B5DF5F6A25999122276F7C79B4316C │ │ │ │ -D084479E3C132C875C105BBBC27031B9A43A314171CAAC14FBB3D87CBAACBD71 │ │ │ │ -E3AEDDC02FF9E4CBA972F39BD8531F80A3B19562EB6ED693F518EB0F1D0677CA │ │ │ │ -8E4CC779B5E50460755CC352A20539FAAA45BFD3DED2D8C9CF8267C58BCD09B7 │ │ │ │ -AB1CA1824830BEB18DABCB7FE076644DB4777C014A1590E369A28BB4800C8AD3 │ │ │ │ -075F0717B805B0D0E67173522D19B683FC4474F3565566DA897F7D8A59B7D756 │ │ │ │ -1E1F61AF827AAA2BFAC0DA204D7FE0CEAA8004B331A1DB19CBB8B0270EC86A39 │ │ │ │ -79BD47485CDAA5EA40EC6B43F569DC6932A82D67219A5BED1633D0CD5C6DBBCC │ │ │ │ -BC6951572BFDDC8D35A53C93EFAF453D6832C3C7971F97A138A2D47ED4384A02 │ │ │ │ -E3598F9F94CEC6CC8CA18FD15E4EC58FABA59CCA3E61CDC0031300CA26640F12 │ │ │ │ -65BCD93732E8288A45E53B59E111B87700B0C881B64A76726EBC78E693C19AF2 │ │ │ │ -847FF06256D17DA5BCACC3DA7ECCB5BD4F43EDD2C12EFE35E2A93E8D25A5F562 │ │ │ │ -351FB72DE4BF39E15317559734913707ABD081B6246922067825F2F9C41A8536 │ │ │ │ -C1C8C3A1D2B6B788DE851AC8174824C04F605CAC0705179D63D431CF65879FA7 │ │ │ │ -E91052A3079F499FE07E4F9354DC900685CED36BA2D579E206C2071780261C00 │ │ │ │ -103885CB45FDA52F50751BE5472FF3DAC9F5945EFCBF2DF657ED5B2E470EECF2 │ │ │ │ -135C9FEFFFD9FB4C1EF996533F5AF201277843138DB99FC68E4D8AA0837243D3 │ │ │ │ -42089E6CC0328ED9587C0F0383B8D00DC736C9AB86C9B74A1901A9F3BBE24409 │ │ │ │ -4561992E5E4E2069E65809B7A1A5E9EE84E21F51114753DE373C78300EB938CE │ │ │ │ -61E9F0E40458EE314EC911BBF4AC9B674E635CD45E200F281BA2DF66F2232BD7 │ │ │ │ -0A8840F006768163C8DEEEE3F45DC1A0C456639C735D149602AA7BB6558AA7B2 │ │ │ │ -B1C5F4807420EAA9F9663883AB025897173F156DFD36EE139D0CAE1BC349A267 │ │ │ │ -A0541E39F3275F50358DF42D17FE44B10CE157F0C14B4E0378772976E8AC247E │ │ │ │ -B9D27FD2C91A41165CB95569DFE39B7DB6240DB682D1F1C76B989B8D68DFE918 │ │ │ │ -9B64A6F4CFCA3AAF782A9C26633BFDD1EE64D775198719E3D77EB6D81085502B │ │ │ │ -8891E3115C44A692FAD06ECAFF32B0211B827EFB451E577D35A41A80E805F385 │ │ │ │ -7D67DF6C6ED9B51E1CC9F58EE4DD9089EE256DD3BE559FFF434F09F97ED38E54 │ │ │ │ -40BB587130DCFFDA469328161672CE77F655FCBE04AAE82087FFF0A351B5A490 │ │ │ │ -77049694D93EB36AEB5F42374E12632CA7D91C092C48889C76CEA9CA441F348D │ │ │ │ -6340DB642998B830204A7EDF058EA4049E4C0DF28371A13471CB23E0BAB2A58B │ │ │ │ -FB5EE0F6B870EDBDECBFA34807C8CBE8884D9064200D565A1A931D84F1D19D9E │ │ │ │ -92D001CA38BFBF178559F3239E5C7E5D0EC031113CE9822BA5A02CA1ACE5BDB8 │ │ │ │ -5B72825D04FBFAF68BA7173C1BA19D338BAD423586327A2C076DAA12B7F86D2D │ │ │ │ -D9BBD3A31960F1F2B718C7834644ECFD79E468C407874DAA43DB89EABA76A7B6 │ │ │ │ -23FD1ED0025C475B82E556E46E620EBD8D7905 │ │ │ │ +DAAAB2896FCFB745795C4D2C87CC14FE0D165EF1C2A06A9B89855A1E543F3691 │ │ │ │ +B90E4EE9F324FFCE2D59A8810987DCF0CC270D5E734D22592A1B77DB98075341 │ │ │ │ +C48676342C1C74660E7D79B7329A7F6AB723AEED60BF2E1158F0591CC962E5A6 │ │ │ │ +ACDD131797F623F38B06F9E9EBCBCB1FE26371AC95C993BF2A625BDF1D49FAB3 │ │ │ │ +AFF04E871B6F2BF4F0127C5A92A54E9D2307AFBAEF86AA35B1AAD6E5330470DA │ │ │ │ +6A84A8C260EF31ECBCD67CAB9BA3B37D12C31E41D1E495C18DD72C72032FFAB1 │ │ │ │ +0E6CBFDF861E84FC9E3470531636A15775971B7F6B2502378F8C0C196673A918 │ │ │ │ +D72051DB6CFB24E62314E1CC1912EF539D74D2425C01B601D87E6D6EEEB3E0B0 │ │ │ │ +E9C31BEEA68D7F15DA48F9206A86D84EF2C3FD3E797033539E4F325BB59B1F6E │ │ │ │ +D86689C3E69067AD47A4DCAE8DD8BE288DB06099728A43A3A13540289D0E6807 │ │ │ │ +0E9C9172F088DB69F5B2FAD04C5E5C6CA9BC75D885FC09873863D54570B0A8C7 │ │ │ │ +6AA6C998C944CFB2AE291042CA1311BC3C35195D2D3FB795E6353158D200F406 │ │ │ │ +DF9D9F106D85DEA26E852CAD2A0EEA71EE363FABD9218081560D6E3A215031FE │ │ │ │ +9576310E9C7EE373C91EDF2B00FDF0A21FF10CFEFC0EB77FDF6027010ECA5F6A │ │ │ │ +1A288312A44E906E586FDDF06878F3CACADF8166988E9426CE919DA3663FFC0C │ │ │ │ +C5829DBF5A93493602F34D294AB366D9D378C00F834C724787F850C265735A64 │ │ │ │ +A11CD6B5DD4539FFB5270DF55AC0929213694834CBE883A35B2E09244E4EE2BC │ │ │ │ +89ADF247F051FBC82FB48992BA917D5B26E81AB22437FA704A0715CEE9A96883 │ │ │ │ +30A6763B012B72A3CBF2BFE7EC2785C12A20875CCCDE61D0F1363847401C335A │ │ │ │ +04317A81BC066BF0C0B57D99DF872697D8B6E31E411182BBA60D75E133057D83 │ │ │ │ +2657E32103916F1C3FAFE3594E2A76D1B8B3D9B3736988F65BC9E500C0CBB925 │ │ │ │ +85ADBBEAAC6CDB450BDC3BFADE19938E31D925D75337F028B3161AC6F0371C96 │ │ │ │ +EDEC11B233A796181B60E04C682C2EE5225DC3E330438C269338991E1AE1AA0C │ │ │ │ +65C518D9A54826778E2A9A3E1100D0ABAB4DCE58CFBA9E9388CA7A402C85D216 │ │ │ │ +6D6C4588104A5078895E725E2102E8C417F9785282FCC871D768A0967F6DE923 │ │ │ │ +C5750BBF6F59E039BC2EE57067E53C663A7B604F9D4BE5E5D1A0F547EA2E82C6 │ │ │ │ +13E75A9E65CD63FBB2686B664EBEEDF0760C72C40368E431EB425FA04D64CFF5 │ │ │ │ +CC86B8C3126FC3A8BBD6CD7D0C6B727AADBD084D7022903FC0D9ED6F7CFC2F05 │ │ │ │ +E0851015DB5670F3F46E54C6E194FE9FEEE9CDC7B1C1A71154FAA1A2A6A4D191 │ │ │ │ +A6E00F719D2E23BF7913B0C0B3300F38384B54039A070EDA58AABD70155F78B9 │ │ │ │ +FD9237675B5619FA3C7D79A5445D8AE9589EA1836F536CB99EBEDE9F6A7F596D │ │ │ │ +D7CF430B8322D334CA27F542F37A4080CCA7AC8E5900F9E4BA86A70A961E780C │ │ │ │ +184840710D0B77492CF31F501081D4F818C2F714A5B2A2352552114A9A088D28 │ │ │ │ +9F59E26962DE5C9001F9E7A01490211F29EC91BCED9A49FB4BFA1BF8D4266D6E │ │ │ │ +CA3502D9AA04B56F3EB984C1968A408789B2F3A479A07F4EC397E405A81B53E0 │ │ │ │ +7C6CF07BEC8D4F5D5CD10ABAA35F77AF997BB0B7E355CFA34C5BCD88D91ECF21 │ │ │ │ +37F98911B12017C5FBACC020E684398C342A115212C0EE678BF14F9DDB8DEEA4 │ │ │ │ +3D04C748323B67A568D7A251ABC4B376D21182598FDF9C4A922CA23BDA6DF2F2 │ │ │ │ +8D4D37329424075E6095532D9C63A0B6B8331770640970DC06BA976DA4CA724B │ │ │ │ +5EEC03222DE2BF5A23EEE9187EA7B645285DFEE31E96B65822EBEE7BB8ABDAA6 │ │ │ │ +04EF7B61DABB252EF91E2FAF34730E77EC5E333DFC1E241A482EE821267C8ADE │ │ │ │ +F68297FB8FB793580CB318FB8AE230781FD3413B94E55163B49ECAD6A10C43C5 │ │ │ │ +080B33979D5503EEE037401FBA171692D6CCDB3D2172370C69E556315D8F3C16 │ │ │ │ +0D283CF73DA24655BDB9C87A8F452B572354952C5297515E4B5FB54D1A9D7C3B │ │ │ │ +2B37F8BC3347AFAA71062C7A3F020983634C0380BF34AC17B2E492C57C2BB36F │ │ │ │ +6F31F537A3F46D01F52CDF406F721E397782462A69AE3906C226EAD29588F518 │ │ │ │ +BAE59BB61EB07A2B3742FB29CC3F1D45195CA300C030EE546CC3664DEF509B12 │ │ │ │ +53EFAE924614433B157068552582E625D2797E722D73274EB0E913C9A2766F99 │ │ │ │ +CD2C869801E252F9FB3B67DF52AB1B436DE7C00D3973DE2A317DF81F62E9D7D3 │ │ │ │ +410BC47643A1842118C985A1A73EEEF8E3690BB730228E13DD056EA76F8B7BED │ │ │ │ +06C6EEB90774F10A2E1EC5B072DC6382AB3767499B1195228BEC7A9DC5212B99 │ │ │ │ +89DB2C191C531E0D575E1EC74D5F6486DFF6EC5C7A57776812DF1AFB1A1AB02A │ │ │ │ +B37148B6F8D64D224F60A1823DB11294DE71A7693BCAB69CE973193EDB575E3F │ │ │ │ +A4B28D4D3D1BA89D9297E9A36C118DAE59E0C79F33CF8B4C2593CD5FB819C280 │ │ │ │ +BBE15436F837A94EDBC71C573CDC00B74602232B9E9A18859B4B9CCCB1D60B37 │ │ │ │ +1EB6883E9DB6B64B7F5476344FDD8706B57DFBB98A5511E4C7E6E8B9C2476727 │ │ │ │ +06BE380243539C033F39DB5BC5D5A436968E7BCCFEC62E3185F0C1FBEF08BF61 │ │ │ │ +A0BCCDEBA89BB132684B222A7F12FA36B4A67BD75E8A4568D41186D85EFF7CC2 │ │ │ │ +A088ECEFC5669147C56A53AB9D0E35A1E0343CDDFAF57B7F3E49ACBE35EE4171 │ │ │ │ +278E62852AEB3423C20569ABAC2E0C4D0BCACC476D368B3F9FFA6821D4690DF3 │ │ │ │ +737298747C5584A2FAF9D6D2DFAA834DBA556E1E20051C8060C78219D043828A │ │ │ │ +C1A9CA016FD3E74E28633CB1C203EFC48312FC7030B98218A30511B96A60DE35 │ │ │ │ +FC3560BD35B64B2BCC21B3FFE9C95E8C49B5791C2DA9B1EB410591B3631B86C9 │ │ │ │ +02F529198D41FBD7ED967F97320482846DEE939742C50109C188FD73469C4B2F │ │ │ │ +7EE29B4EF8334956DBBC593541CD644AA4D02AFA6E417E3AB99846BF4DD4D91E │ │ │ │ +65A09EF5966E4A4E52BC1A0DF51CF287F4AC5478782C372F04CD5F289271C576 │ │ │ │ +38E66FAD44A6108AC1864C968DC32A5724387C10091E13349EB10E429F9675F7 │ │ │ │ +D3538C08C887EF9852F3881C20FF0BC45CB8D29B4EA36E556353680C54816067 │ │ │ │ +8622221091ED44815A662AA88D90FD646C13740FCAD70C18C68EC274C286DC96 │ │ │ │ +83E9806847922D38F156153284B94B3ABB799B40386CB0324BC5AD11A30BE9F7 │ │ │ │ +16EC03D13EBA104EDED7F7541053B5D06697634C9995D97C76EFD80BEB94D547 │ │ │ │ +E2FA6836F782299BBBE9F53526F76A08F06BB44BD95340A7D259062C49CC00F3 │ │ │ │ +0215928DE8F29222A0A62FF615DCF66AA80615237D4DB18AEEAF273377A8ED2B │ │ │ │ +B5F1D809F38F5DA3AD2D9BA17C44D428BAF3833ADF19A1C640754D957EDE3C09 │ │ │ │ +D7A5CECEE5199AE4AE3BB7275E69B61009E05D8402972E04297F8A75055339A0 │ │ │ │ +AD920ADD97C710DB818AEA05AC90D73271C1D9EA6E8895242FEF7C1E86C302D5 │ │ │ │ +23551A712AE888959BCC6CCE2FE14E84BED266CC535195F194C33B2642047A24 │ │ │ │ +AE7A5EE65739A85DBD2E9850C272C6CC29298AAE008499845001F8B1EA977A36 │ │ │ │ +1AB152364C8C3A89BD529F0E3D55D6E0B83F726755AC19724EC79965C6323AC6 │ │ │ │ +67203D32F0AA770FCF1FA8B0BDC236922873A6B2D6954E7201A1EA59CFDA5028 │ │ │ │ +403350AC87AF43708A2C93AC8C7625D95BECF641A2A84675361D2B54D78BF0FA │ │ │ │ +CF5ADE9D56988BC96174F0070FE57D16CDAE45429574B96343A6D468ECDBA02A │ │ │ │ +59011F2CE607D1F28DEF9FEC1746FB5B4EB80CA4A60AC27B4090612A20753584 │ │ │ │ +E0CD03A6A2D4A8ED4B20DA5213A879DB7913C30522AA05B27BB261DD22644AD9 │ │ │ │ +0E3E8F605BBCE4096C8326740C079C63A23929792556CBFC9B3E8F929E216D6A │ │ │ │ +309C1B0710AA054B273C59A625FFBEA0FD12A02CF6FA84FA31056A9E8D87F0F0 │ │ │ │ +70B653DEAABC373FDAFF59D72BD408BD068D37A667FCB38FA281C6953833F327 │ │ │ │ +12224286960A29636F4611D73FE9E1FD09889F70349945E0F3CE3C7ABA0BA982 │ │ │ │ +9F9CF398C8A98C73A5543158805BE118775CE55A0B50A37337B84DE9EC37D6A1 │ │ │ │ +3028AFC3C7C10A1F6A48034C6A7034E464E180256D989BC675CE63E69ABBB792 │ │ │ │ +BC17DBA8A61EA63FA84B7D30EE9B7F99CC106F99E69249823A8933816EE96AE9 │ │ │ │ +FD25D721AE3ACB69428510F5067A8FFBA4B184C67852D71088A1AADD4AECE01B │ │ │ │ +E0859F8E9126B5E994EFFD914BA0526142BB64AF94B860CE33D4E81FE301BA35 │ │ │ │ +0600D8124F657A06361A92AF860582C1EF55149077C4B4624433DD2BE5265E3E │ │ │ │ +FF2DBD3F679D60AE0471BA7AAFD7ACFEDFA047DA271C49EE2FFAEB788F8BE6FB │ │ │ │ +D4973D99DD704DB092FA83B1C11A39A5F66D233E0096F12F3B4DC2727ED54720 │ │ │ │ +56716ACFC70DE35BB63218E041DFE6A05C8AF0E466424DDEDFF25DD71569AA4E │ │ │ │ +EA7487502B99BC5EF56F03599733B995840BD2E3AE0E6702AB5E694CBEE17317 │ │ │ │ +A34246B0BDC4292F9965D2ADA41BA884DB3CD532ADECD742497381C719437006 │ │ │ │ +ECFA7ACEA90F06436A5A60F5ECA33A2C2085D004374E09194563696777B4FB82 │ │ │ │ +2A11E64A893928B666F7D0CAE7210EA8FD90397812CDFC6B12F954C59A7EE968 │ │ │ │ +4644DE21D0D011062AB33AD6CF212AE9C79ADA63BB5B640F053D0391734E3181 │ │ │ │ +19DA816BAC17AF59E29ACAF47BEEAD82FCE537D548DE3055A0D1136764147AF6 │ │ │ │ +0976289B5846D747129A311EC034F028A4AAC208FF83551B1B8E48502BA3C554 │ │ │ │ +7868471AC56BD90E5D14B07E8C89C3C63F0DE6C8DDD232FEAB3500AC664874D9 │ │ │ │ +44FF367C61F29D46E126419F43EDDAE425CD12AD31D0AAB420F08B0EE20E2A74 │ │ │ │ +2F422A21F6ABED430D74F044583A5D75531ED95D563EF1C64E263368CDD2F4C7 │ │ │ │ +A56B2CD3917E582BF9244DF422C2938E5F663BE0A77DF459A1F5CB90BD34D394 │ │ │ │ +DD6CE94A48F08F1A2EABDC45C925AA228B45B7EC8C1A6E8D13FB8F681010B9E8 │ │ │ │ +1CDF289603A84F11969BAE8F78AB2CBBB8A87C093997F01A06B6A7BCF2214C67 │ │ │ │ +CCC357FC48EF36704DE90B40B55E2C3247700C80EB2C16D6A08EA08A3A68EF3C │ │ │ │ +16E3B24E97C13A7575D431077B908BA1EB21AB441CD6FB07C109A4E286D892E2 │ │ │ │ +894A0A5B140FDC0649B65AB5F0797140F4585BF9AD16C85A0C97E5C1E1AC3211 │ │ │ │ +E7E7D3AF13F25214C06FD12464EC1586C75D9480043F7680D770C2153DF8EFE9 │ │ │ │ +23785963924CA0DDCE6EC4C1BBE768AF73B45555E6341228F1526A427D22EF87 │ │ │ │ +6A0CE837B219E40C96A4EDEA4D84CA0B082F518F6FB1EF206199018DC9308FB2 │ │ │ │ +448B6147A24CBF48E2A57001DE299223DDBB94C8C7098D820F0F3DAC63B0E4E7 │ │ │ │ +D38C3399D34B7CD916D8FA5F3A018CADAFE98FAFF69EEF6BDBDD396D9187FBD2 │ │ │ │ +8CFEEB59CEA13E3D2C99B894D7CFA56B222377741FC54D73B3988FA0BCF161B0 │ │ │ │ +6286B6991D6825C7362160A21A81B6FC6F04A0868AE5A12F424A22D6D384E910 │ │ │ │ +069C814277FD235FADFA99D227B543ECD760FFA303DA8B574FD56BF40E72B135 │ │ │ │ +CCE684432C230E1DE0B91B5AB53B32B7B5FDB9F280C4DFFAFC2E07B9B9A43CC2 │ │ │ │ +2BF6B5D4ECCD7B4748EB5F955AC118BD7041F5C0A0D0376E2875EDE37D7E4FC0 │ │ │ │ +10E96312BB9D04CCDDD4FE7D20E870906BB85D72842DBB83F734FF6205153D1B │ │ │ │ +E3F92D1C610195FA32E6BF1B5427EBA6F00FE777B92DAE4575F9C8E7A50248E7 │ │ │ │ +F89FF30861E2F85EE0D39C683C146F896ED2F2A364A8968CE9B984EDCC4E5D79 │ │ │ │ +717CC5B1446B1A16BAE45B94193C10406ED06F24D99EA4E9E36B8215F811082C │ │ │ │ +E08C1E8BF73933A5DD3078F3206BCBE1C0F06DA6CF71E1FD11048AAA71AAFDF3 │ │ │ │ +17D25181FCC7621FC135C7E0A09156F34090A44D889BB7AEE5A56CB19E2CBC48 │ │ │ │ +13ADC18E9763ED741024EEB969929E0BB331D9FFCC2EBE9236CCA2D5C60A4771 │ │ │ │ +EA35FBD12D14908CAFE85A784DF7EC73A4F0A75FAF14E4C2E3497C822AE458BB │ │ │ │ +6B15510502A5C433ACB7DFCD518D7D22E05B8ED25ACD8E221CDD25CDB4E0AAAC │ │ │ │ +8A83B67C404407993227EAF84A45BCA7E11D6475480D236C0CA85A19A180AA36 │ │ │ │ +03F6FF7F7E4A5D90768390B7FC07A0DF67C7B9E6F8C5C2A4A09250B7CA4F362B │ │ │ │ +44E72365B8B8865BE7DB018F075589411F7657C4B31078B9F352A48B7822D3DD │ │ │ │ +BB09F25A5B1D96F7B9B4CD253BDE9CAE2C64745862AC385C9AB007E961AAD3C0 │ │ │ │ +7C33647DB4AAA086CD005A53714C3AEAC00C34D3B6F7D677652583AC42C0F432 │ │ │ │ +8F9E95D46B6B804695122FBE390FBBCF4D58EAC421F2718649580DB35E5C1910 │ │ │ │ +9D2735BFF637BF3D08B6DA3FA943B322B88A9D3F479E171223B44F5D2CE0BE4B │ │ │ │ +F28108682A28A94F5E1469955433A09215D6777075C373BC24C951FAF589BDD1 │ │ │ │ +AF16533A8BE1080729D8C81CBA756861AA90D7875D53DFD6114AD196DAECF327 │ │ │ │ +BDDA036C623C1F3C620E3C99C4077BD0B4CEFA0CC859634DEBDDE390F65412BE │ │ │ │ +AFEAAC7F90DEA41FEB47AFB0873D9C6E5194A4064E6691E18554024242A94260 │ │ │ │ +BBC73E350977EAEBDDE3B21F83A28E2D0550294BE76D36467E5C263F7332D999 │ │ │ │ +85E3D332C23650BA96D71A75D20CF6589674F4552273C81D1C70F5386E97A72A │ │ │ │ +6E40F12A05C7959E9DF4AE12E65D72029A452B5C6E870A273AACD490CD20AE9E │ │ │ │ +8745A559B3E90F288DF1C7B09F0F47A88FA5A38A2A7BED7C7F19A9696A215213 │ │ │ │ +6DC1822525209C974179BC464B8C4AD2390A13FE340ED36260ED8F56F6E540BB │ │ │ │ +3D8BAD6DF53ED399446D493060A0B25AF59D66DB936B4F96AAF50C32A02413E9 │ │ │ │ +3DE969B25FC7EE2DD6E27FDB4A3593D50CC1A781AAAD9FBEDC388D8DDE4F9FA1 │ │ │ │ +7826B32C3E556DE260A932EA78C99DD1C9AC9E7E010FF1D24D00DEE7209720F9 │ │ │ │ +21D7824F440461774C905A57A4A3B65F5864DDEC04B568DB14DAD8A944713857 │ │ │ │ +3DDC0FAEEED7ED607FC6A4F48FEA5A4B6C2FB16A557E78835312B4DAA498CD7F │ │ │ │ +6D27460D3C972829FA6F527B8302A1E51C923F255A23E86A879E98E28937614D │ │ │ │ +14A5CF939F449E40C1E11F9EF260AE10EF676AA70964A69FE57618E33A7347C2 │ │ │ │ +2961545720BEC201BC35ADE739FC443DE242C38E071B4C0C31C3DADC25C93BFC │ │ │ │ +99B8F10AD5689684AC3FA85CBC49B14D204FFA5E0537F9952F7558B66BB97A00 │ │ │ │ +5EA497C00485E83C2C05632FC18D5876D916703A7BF4DC0BB22EA81FE650EE08 │ │ │ │ +5C6394AF9044962150EAC9B5A53721795E0A4EB4E79E437EC14D057A3E979899 │ │ │ │ +56387E2541561E71810EF3BEA25BCC7601465334AC1A8F170180D1903BDB0C28 │ │ │ │ +62215FAD8A5CDA23353D0818920642E4FB8917E68F60600DE24464B49C445D29 │ │ │ │ +D2673E308D3C0AACE35BA714B02554AB6FD235E2E06518EBC83017B10F6A6D1D │ │ │ │ +5ACE8123307A64CD3310D3BD94572A │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -4972,17 +4963,17 @@ │ │ │ │ 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 │ │ │ │ /Fg 203[30 30 30 30 49[{}4 49.8132 /CMR6 rf /Fh 133[31 │ │ │ │ 37 1[51 37 39 27 28 28 37 39 35 39 59 20 1[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 45[{}45 │ │ │ │ -66.4176 /CMR8 rf /Fi 134[51 2[51 54 38 38 38 2[49 54 │ │ │ │ -1[27 2[27 54 1[30 43 54 43 54 49 9[100 6[66 4[76 50 3[64 │ │ │ │ -1[75 70 1[73 7[49 4[49 1[49 1[49 1[27 1[27 44[{}31 99.6264 │ │ │ │ +66.4176 /CMR8 rf /Fi 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 11[49 49 1[49 1[49 1[27 1[27 44[{}30 99.6264 │ │ │ │ /CMR12 rf /Fj 172[90 2[110 121 2[97 6[106 69[{}5 143.462 │ │ │ │ /CMBX12 rf /Fk 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 │ │ │ │ @@ -5000,18 +4991,18 @@ │ │ │ │ TeXDict begin 1 0 bop 407 1704 a Fk(The)44 b(Reference)g(Man)l(ual)f │ │ │ │ (for)g Fj(SPOOLES)p Fk(,)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 Fi(Clev)m(e)35 b(Ashcraft)1004 2423 y Fh(1)1297 │ │ │ │ 2459 y Fi(Daniel)d(Pierce)1864 2423 y Fh(2)2158 2459 │ │ │ │ y Fi(Da)m(vid)g(K.)h(W)-8 b(ah)2774 2423 y Fh(3)3066 │ │ │ │ -2459 y Fi(Jason)33 b(W)-8 b(u)3485 2423 y Fh(4)1566 2725 │ │ │ │ -y Fi(F)g(ebruary)33 b(29,)f(2024)104 4280 y Fg(1)138 │ │ │ │ -4312 y Ff(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 Fi(Jason)33 b(W)-8 b(u)3485 2423 y Fh(4)1610 2725 │ │ │ │ +y Fi(Octob)s(er)33 b(4,)f(2025)104 4280 y Fg(1)138 4312 │ │ │ │ +y Ff(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 Fe │ │ │ │ (cleve.ashcraft@boeing.com)p Ff(.)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 Fg(2)138 4585 y Ff(Bo)r(eing)70 b(Shared)d(Services)i │ │ │ │ ├── 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 │ │ │ │ │ - February 29, 2024 │ │ │ │ │ + October 4, 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. │ │ ├── ./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 2024.02.29:1858 │ │ │ │ +%DVIPSSource: TeX output 2025.10.04:1734 │ │ │ │ %%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 │ │ │ │ @@ -1201,23 +1201,23 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 50 /two put │ │ │ │ dup 52 /four put │ │ │ │ -dup 57 /nine put │ │ │ │ +dup 53 /five put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 70 /F put │ │ │ │ -dup 97 /a put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ +dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ -dup 117 /u put │ │ │ │ -dup 121 /y put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1391,95 +1391,85 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA647CD0E2539DFAD9604486DCCFA49 │ │ │ │ -AC96130D106A8F8387633622C3809400D6E8FF9D60877C743502E4D211CEBF62 │ │ │ │ -9A6F91045C22D5D20C5FF677D89983D02E5EE26C71A9EAE0E7C52465DA5A149A │ │ │ │ -9B731C27EC8366BC3E841C0CAE49A33DE164A857365B17B09CAD121C47A980CB │ │ │ │ -C75E1030F6C394EDB46C54B46880D2344127B903FB22684C9CAACE6053DC3BFA │ │ │ │ -4E47C565ECAF19C4295A11BD68CA6D45B5738B932BB3690A8C712904C49C1636 │ │ │ │ -A7702075F2FEA8DB3EB3A3C1216BB769DD0BAF4507A18E3052F2C846B0797933 │ │ │ │ -8CE9BB2DB5DFADAF1B0FC3A22BAB82A0D5D290F7AD950013CFA465BE11C1076D │ │ │ │ -5833FF92321FBF90D9229D3BA09DD18EEC44D9FCF8FCF63CC09D2977BFA798B6 │ │ │ │ -47FB047EA6AF69C7DE570176F5B6C0FED74DEDBF7DDF49550DD84BA14AC09423 │ │ │ │ -F70D5B14F0F8588F1E2FFE0DFE0760E77A9E39DEDAC5C5AE3760722C029B916D │ │ │ │ -96A2A7D1DD6A61F90B4B9806314A668EB7A0E107A3527310A240490453CC18D7 │ │ │ │ -3793B4CF3CE13EA332E7F5C2BACF85AC75FE84693B966BB0F6FB9A179A331C4E │ │ │ │ -55E9EF30E2734E44A88E053CD5E650D7E529E94CB7F8B733E68315ACAC5BEFC5 │ │ │ │ -3FE4F585F875310267865679AB381125C31E9AEB7226DC9F18DA80A9DE2F38A4 │ │ │ │ -51B8F9D5B2FBA0F50D53AE6212AFE41466A594F7A303B4E82F1493C0B8D65756 │ │ │ │ -BE6AF2931E5ADA5CE7D51CB5B1EC916C6C6D674808939331CA66F8181DD2B112 │ │ │ │ -1A12198CCCB6BBF1D40C803E794B65241ACE1E0D30CCA1C6F2D3E1415B98726B │ │ │ │ -9BA303BE2C4C276108CC78C093F1CC85CA454CC38535D1DEBFA341D84E8A5DDF │ │ │ │ -D53D8DD0F4A812B5BA63871BEB3BCE93FBC77AD395914E2CD757546C2BE2D641 │ │ │ │ -FDB12258E1E1D10E1B963EABB265F2C8B2547D48963E1AD3B223B666B46915A1 │ │ │ │ -157F5EA0AB8D8411C07AA2EB5D0EF1A1BA6D81C47473A3D3D6287104C7BF61F8 │ │ │ │ -3BDB64995DE96A65BF2B7288C51ADAA3D373A95C40D5240C5FF397551554AA9E │ │ │ │ -C89C7E45AA7738503CB058EF6AD5052CC78E4445C810C250BF25394B8D7DE82E │ │ │ │ -315C9CCD6E1E9150EC79EE0F354C668AE199C1AFF39C67337A86CB932E8D64E9 │ │ │ │ -389FF3CC08B538492DEED017686DBB9BDEA30FE67FB4EBDB3627C16FD15F243A │ │ │ │ -7FDEB310EFC940E57726E94340472F2C452815927ADE21578C959890216BE504 │ │ │ │ -225BE4B4D2E3B19F5E06B5A0B25AF168C3A2B26F599A829F89C16BD2026E8CC9 │ │ │ │ -8FB3CBB830C3E36C099071A70D0B8834FF2C17364EB50D5C71440CC7BFE02321 │ │ │ │ -8C6ECAC2F7EC1BE39077DB0E8B2B251626A71FD038EB2CF1FC254D98C1535CAA │ │ │ │ -A8C987BC266482BD860A333048E1EDB3DD40A6ECD6DA0088AD9B9640202D89AA │ │ │ │ -0BB9A0ADF63491E67F2E97E35942D77E59B9B8AB0ED28B022EE5CD3449FC5B7A │ │ │ │ -19E38845B488F97D155C4312885E29537EAE97719C65845663480CE79DE8F037 │ │ │ │ -68995C0928FE8AFBEE554F01381EE5187578DF5D2542F26F66A599EE8ECC1F68 │ │ │ │ -FBADF3C2BA968C3CEB86675CF9A6CFD736E1422800D270417D497903DE87F2AE │ │ │ │ -938E39E120E9D3079F512E545E0E2616B84E81FE41392184F96818A7C86BF541 │ │ │ │ -F2E67C48CA56DA838C9FA0FAD538073B9F26319140D1F80EEEBCA190DE660A31 │ │ │ │ -457CAC16E92F87449A3734F9EA751588514865B58DC073658C8A857B5398AAC7 │ │ │ │ -3DC11E069996EF74A3189A07630D5DB87C5E028CD193C086B4D0E8BABC4F2393 │ │ │ │ -235EC96091B16C4A6D97DA1BD30A2D2E71F55869223CA66AD12448B668685F6E │ │ │ │ -06E7888D7F20045C662C4F7994CC7E1CE9AAC33A026716AA0551DF12343F0E22 │ │ │ │ -6E9F4B21C90406CC4997601194EF37A973221D1F4D73DD5666BD297F621C92AA │ │ │ │ -E3F698BC1146ADE754C4120EDF5B3E974D75A237E51DB49D52CD6CC7C9E8BD2D │ │ │ │ -E6849DF8F4DBA86C655D0C57CB54836C8A841C1D814F6B493F96ADBFCAD78D3B │ │ │ │ -430C58EF169950851B6A0B46411488B1A6F6974832787A24C0CDDBE27996EFB1 │ │ │ │ -DB341FA34B1DC6238D978D1E1D34AF3FB375ED6DA9C88699F195C88A54622F7C │ │ │ │ -36DAFC663D85660E756733A7E22F20C6A5D91F06087CAD10F7217BD33F343DC6 │ │ │ │ -F5EB9F16FE763672243EE6AE5CB6063A1D64670E1C059DD52134974E27D9D89C │ │ │ │ -BC658FCD814F20703D610C978FDCD6E2AEA31C18D1A310F215B28199F66C87DB │ │ │ │ -3B23980A393E1DD77AFA3045EDB6942505F3CF6204315A14E5B6BF2E96F3BB1F │ │ │ │ -628D24AC1893BC7DAEF3AA63F2116837F31DB90D872CBD9E5C48BCDEE781D20D │ │ │ │ -C6553D2D15F4E8438A9D1C7CEE1B72BD6AA08DC0AFEAF8B4DC1038707EE4A1BF │ │ │ │ -3D84460E60AF90F55002C1D8EBF0700F7EC3EFC944BEA78D0E0536F3AA6D9A84 │ │ │ │ -604A781AC5ACFEB7E681365315EE11E991C03DA431B65B332AD8F83F6F3AE66C │ │ │ │ -1BF434D3793FB5BCC44E44ACFF2855C2770C4AC678C6ACD6EB071974ACF1AE37 │ │ │ │ -D02C1736C62CC205A2F3488448527EFFA379613A8E6A6D134F4BFBAE6127304D │ │ │ │ -576C900A458E32CD42A4674415E03D8EB5742E71B854B3EDFD271AA214436544 │ │ │ │ -D1BCFD52F439298847E1FA258E5D38384FC85BC4EDC6F9E4431621CF763B137B │ │ │ │ -22DB6E3268B3F78881D55EA7C52ABF23FB73C152B06B708084FE1B00CFE72D9D │ │ │ │ -57B62AEE912E63BBD89D4D13CE896735454F1A16C3D9FB6CDF142CCA9F1C0242 │ │ │ │ -46F62109DF30667DA327F7CF6DC19B880C860C69080597FFCB1793313E202D4F │ │ │ │ -120A7C6B052C2EB7597B71B0985D24FDD2D3918393BF720E762C5DBBC2BB1E91 │ │ │ │ -B04560364EFE5B16EB068E0560FB932E0C617CFB95A166388E99AC4CB020F5BC │ │ │ │ -E24BB77352D7C3B21C37D404051A70FFFA0F726C35501A1FBB411F832CE46A2E │ │ │ │ -B424E26BD4 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFD8CDE285A2827F4659E339460ABEF319FE44D7A91E93CA309E9266E03DA │ │ │ │ +735F5DEF3920C01189BB63C2BD7ED0B92EABB481F123641477CDCCAB9751FB7B │ │ │ │ +F67DA7CE6EB134BC10D0228562BA5A6BFE6940907EF030ABF9EC4A8A0DFEF73D │ │ │ │ +3289E8CB4DC37694F5A656A935D92C72B3D82B012F578A27711B161DE9652ADC │ │ │ │ +71C51E743E4E9A7C6CF6FF16C5D65C1F60954C0858B48FAAC4FBB21988E2A934 │ │ │ │ +AC50C097DDF42C416359647D79F830E1430FB9BB803451A6732D1B5CAB817C1B │ │ │ │ +673B3077D9A180F184267E9990C087BCDEBC8EB8B889934DD0EB63C2EBCED4A3 │ │ │ │ +83A0D6A365412CFF610EF7BD5F82B02AA293F1D2F868768CDE9B801C929B4A38 │ │ │ │ +64E20C70BC4041F837AD15423517F7336A067D140A2C7906DC5D45885FFB3B69 │ │ │ │ +724E5B9B138BD15A9359EB25D14BC4193E529D1A49FEB0DC1015BF94CEBBD5E0 │ │ │ │ +EA148B185C53E12BD9FA6DBC097D789A73E832F02F55080D8ED6087F5952EA78 │ │ │ │ +250A4C65CE4C4013554A031446D2092D813C4CB1A605D97A40CF867F656ECD1C │ │ │ │ +C23F80230AD1E449AA8B4007134F71156719206441D92B1A6DD25101ABF69F70 │ │ │ │ +538CCCE216376E1BD6E423986BD4E83B1975B15092D4E19F885672F9E7C02485 │ │ │ │ +E02DA0F4243D324A5983D1D46444E5F6573F699E4F2A3395EF0EB7808B7D4D62 │ │ │ │ +690FD033E93AA553082273636503DA4BBBBFA6D127CE10424DD1DDF4F879305C │ │ │ │ +14F64180E7851D091B3220DFC70CAA44716B8F7F0C6FBEDB167801DED77F9E69 │ │ │ │ +E9B31CD2D8044DB946E511162976C34DE27F2BB974B70509005562A0A21317B7 │ │ │ │ +46D826A31C476C8F9A778F941FF5956BA2D765B1AD0AC4BC7AE1CD8A2A81F039 │ │ │ │ +06EB13EBD099BBDB2EBDB54D459C288EA69FB0018CE9255BBFB08C1F90FF30BD │ │ │ │ +C971DA7FDB193281B8F967F21AB42F13F36085AC9EC0D6B6B448C8F289B0AD70 │ │ │ │ +DB521A4755ECF9CA594741E5C674220C21C265EF3BAE594197B00048C8D4DB73 │ │ │ │ +4AC47B6A86EAC7EECD042C8E23C347F8C9FCB870473C1FBD91C298174BCBF1A9 │ │ │ │ +7B366C570A9A04A433495FBC9FD0FFC22A0E8181424C0F038ED97AD5054B10CC │ │ │ │ +1CD5BA0719DD0B4F4F18932AE87FF8B8C1CF0C7482B7847049761505DCD85146 │ │ │ │ +4EE5CB53993A9449CD05233E961BD49AE92D308E2065D6C6BF038538039AA56A │ │ │ │ +C59D424BE3175427337E16892D3920598D518423E145C6B2DD3881F338845F0D │ │ │ │ +16C47AA0D9C2D6DE99C6A302D567ACD6F98BF38223F1890E099C8F93348FFDAA │ │ │ │ +C2D3440187C8FED87C1A891EF11EFA7168EC47F72AF8BC5BE1B88B1084E704F5 │ │ │ │ +82099F1A79E556D94CC38851C97DC3864945A7470F1389BCF608BADAE45B236D │ │ │ │ +2934A20FFBCF169BF84DF496B07E7F1D9002E62B030337642804403DF7E4B3FF │ │ │ │ +C5A421EE0033BA06C50A041FBFE8F81AFC145664E2976505EB14859CF0377EBA │ │ │ │ +EA604CF8BFB5F9ADB9A7ED56E6F0F919E791D57C7232241C892EAC3E55D2D03B │ │ │ │ +FF43B9DAB7B1D8C6588D6D3503F49E80121E52254431B308752A936E0B51124D │ │ │ │ +C7F23C316BA6FA73E6BC47EB9550003E1393C68360067C094C65C0DD17214FA0 │ │ │ │ +45FF0F9C3E0AE4C81093752D23EA95E163C98EC04873ECE3FB0882567329525C │ │ │ │ +0A3937B16CA72B5EB6D2DC10C1B485C0BA939587AFEBB6D837A40401C666BC1C │ │ │ │ +F3344FBAB3E48BEE18F3AF5CDB33BA63778D373A851333C8C34E2F35AB94E8B4 │ │ │ │ +FF7E62A92ED83B872894E0A17209E14CF61269204A35A4BC8C7EE4B16F19E91F │ │ │ │ +669C4EFCECB187F6C7FAF92B4E14E400C6B3C81679D4A7196D66DB1E897DDA42 │ │ │ │ +47CC2848B46D581A95EEF85AB528E8CDEEB275D1E1FE197A3A08D36406E2DADF │ │ │ │ +A87D817AF18B5525F89B7C2E584F4A1254A1FC71E749999A2152870631A69CB6 │ │ │ │ +666EBD6BB3366A598F6592040D0E82B9D866DF0A76C362E76C2804D108A0C148 │ │ │ │ +51F42E9E0ABD52CC2D02B156B63AFD03313AFC80EACC83DF9B59F05FD798951D │ │ │ │ +FCF5335636DFC6561910ACE0AEC47F74CFD302EB7421D28AAAC8FF82B7CE2B2A │ │ │ │ +340B8BCE09F57BFCBC77F91096D97A85726E68846398C8C9C8D3A65A252AE8FB │ │ │ │ +166750C244963BC61E2236BAAC529FABD6FC774550096374A8DB81B6AF1EA843 │ │ │ │ +27F671C0045D629E3734EF037447C4763514FD1C4AE858A494AFC23A64C82149 │ │ │ │ +F4C0A7023B3865B84FAC2DC88D1553DCEBA3D8FB5DBC1103123F6B8CB5B3A399 │ │ │ │ +B665B26B001BF1E4BFABE42BFF6B02D69FA88D5CBCA5A11D5B48CFB4EAE60558 │ │ │ │ +5FBE254AD3BE01761CD4995E766E172D768621223505FD6AA8F89FC042EB814C │ │ │ │ +34373DAEC4FAAF71C0752F814154C5299F751CE7E0F9C673D2E448D0204C214C │ │ │ │ +C04DC34671FBEF72350FFBA263662E86A0D3795E310153AAF4C8A2623E167E6E │ │ │ │ +1F13A9BA485D5DDFC451D691DBA7C49E20354A7AD79D89F7EDE24F0D5B48B27D │ │ │ │ +568D01EF2555504196C09841F5970D8CF6C5D47FFFCF18AE6B2A485342000AAD │ │ │ │ +1F922FBEF7C98E0965609C89240E7B131A59551F57CD5C92097FCE75F5D2778F │ │ │ │ +F9ACF43A3273551363442C8C539205903A835C744A4AA953545506081D3D231A │ │ │ │ +A140E01F280BC42A3C35EDAD5F6B8CE6E51C68E41CA813710864ED880FCE846C │ │ │ │ +1B66D27CC2DBCDC2B1B96A12490BD76D67A415D4A6595CD9B19D3104A83D2C82 │ │ │ │ +C46DCD2C027F0565EDB83E54FF99498194D3140E55E8EE65EBDEAC5409B5616A │ │ │ │ +73141DA2D581E300A6057F4301A02DD160AB3E55A116313525122D0608816AA8 │ │ │ │ +4712EEF3D6FE8C893DF37D │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -4849,16 +4839,16 @@ │ │ │ │ TeXDict begin 40258437 52099151 1000 600 600 (main.dvi) │ │ │ │ @start /Fa 133[50 59 2[59 1[44 44 3[56 62 93 31 2[31 │ │ │ │ 62 2[51 62 50 1[54 11[86 1[62 3[84 1[106 3[42 6[80 12[56 │ │ │ │ 56 56 56 56 2[31 46[{}27 99.6264 /CMBX12 rf /Fb 135[62 │ │ │ │ 3[62 3[62 2[62 62 2[62 3[62 17[62 5[62 3[62 73[{}10 119.552 │ │ │ │ /CMTT12 rf /Fc 134[71 2[71 75 52 53 55 1[75 67 75 112 │ │ │ │ 2[41 37 75 67 41 61 75 60 75 65 13[75 2[92 11[103 16[67 │ │ │ │ -67 67 2[37 46[{}27 119.552 /CMBX12 rf /Fd 134[44 3[46 │ │ │ │ -2[33 12[37 2[46 42 26[54 11[23 42 4[42 1[42 1[42 3[23 │ │ │ │ +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 4[42 42 1[42 1[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 │ │ │ │ @@ -5044,25 +5034,25 @@ │ │ │ │ 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 1031 4 v │ │ │ │ -1196 w Fm(SemiImplMtx)24 b Fd(:)37 b Fe(DRAFT)27 b Fd(F)-7 │ │ │ │ -b(ebruary)26 b(29,)h(2024)p 2869 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 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fn(2)p 125 100 1069 4 v │ │ │ │ +1234 w Fm(SemiImplMtx)23 b Fd(:)37 b Fe(DRAFT)27 b Fd(Octob)r(er)g(4,)g │ │ │ │ +(2025)p 2831 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 │ │ │ │ b Fm(int)g(ndomeqns)24 b Fn(:)37 b(n)n(um)n(b)r(er)28 │ │ │ │ b(of)f(equations)g(in)h(the)g(domains,)f(or)f(\(1,1\))i(blo)r(c)n(k.) │ │ │ │ 125 1425 y Fg(\210)42 b Fm(int)g(nschureqns)23 b Fn(:)37 │ │ │ │ b(n)n(um)n(b)r(er)28 b(of)f(equations)g(in)h(the)g(Sc)n(h)n(ur)f │ │ │ │ @@ -5128,17 +5118,17 @@ │ │ │ │ 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 1031 4 v 1197 100 a Fm(SemiImplMtx)23 │ │ │ │ -b Fd(:)37 b Fe(DRAFT)110 b Fd(F)-7 b(ebruary)27 b(29,)g(2024)p │ │ │ │ -2830 100 V 1031 w Fn(3)101 390 y(4.)42 b Fm(int)g(SemiImplMtx_free)37 │ │ │ │ +TeXDict begin 3 2 bop 83 100 1069 4 v 1235 100 a Fm(SemiImplMtx)23 │ │ │ │ +b Fd(:)37 b Fe(DRAFT)110 b Fd(Octob)r(er)27 b(4,)g(2025)p │ │ │ │ +2792 100 V 1069 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 │ │ │ │ @@ -5232,22 +5222,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 1031 4 v │ │ │ │ -1196 w Fm(SemiImplMtx)24 b Fd(:)37 b Fe(DRAFT)27 b Fd(F)-7 │ │ │ │ -b(ebruary)26 b(29,)h(2024)p 2869 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 1069 4 v │ │ │ │ +1234 w Fm(SemiImplMtx)23 b Fd(:)37 b Fe(DRAFT)27 b Fd(Octob)r(er)g(4,)g │ │ │ │ +(2025)p 2831 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 │ │ │ │ @@ -5305,17 +5295,17 @@ │ │ │ │ (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 1031 4 v 1197 100 a Fm(SemiImplMtx)23 │ │ │ │ -b Fd(:)37 b Fe(DRAFT)110 b Fd(F)-7 b(ebruary)27 b(29,)g(2024)p │ │ │ │ -2830 100 V 1031 w Fn(5)307 390 y Fg(\210)42 b Fn(The)28 │ │ │ │ +TeXDict begin 5 4 bop 83 100 1069 4 v 1235 100 a Fm(SemiImplMtx)23 │ │ │ │ +b Fd(:)37 b Fe(DRAFT)110 b Fd(Octob)r(er)27 b(4,)g(2025)p │ │ │ │ +2792 100 V 1069 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 │ │ │ │ ├── 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 February 29, 2024 │ │ │ │ │ + 2 SemiImplMtx : DRAFT October 4, 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 February 29, 2024 3 │ │ │ │ │ + SemiImplMtx : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 4 SemiImplMtx : DRAFT October 4, 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 February 29, 2024 5 │ │ │ │ │ + SemiImplMtx : DRAFT October 4, 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 2024.02.29:1858 │ │ │ │ +%DVIPSSource: TeX output 2025.10.04:1734 │ │ │ │ %%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 │ │ │ │ @@ -1440,23 +1440,23 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 50 /two put │ │ │ │ dup 52 /four put │ │ │ │ -dup 57 /nine put │ │ │ │ +dup 53 /five put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 70 /F put │ │ │ │ -dup 97 /a put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ +dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ -dup 117 /u put │ │ │ │ -dup 121 /y put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1630,95 +1630,85 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA647CD0E2539DFAD9604486DCCFA49 │ │ │ │ -AC96130D106A8F8387633622C3809400D6E8FF9D60877C743502E4D211CEBF62 │ │ │ │ -9A6F91045C22D5D20C5FF677D89983D02E5EE26C71A9EAE0E7C52465DA5A149A │ │ │ │ -9B731C27EC8366BC3E841C0CAE49A33DE164A857365B17B09CAD121C47A980CB │ │ │ │ -C75E1030F6C394EDB46C54B46880D2344127B903FB22684C9CAACE6053DC3BFA │ │ │ │ -4E47C565ECAF19C4295A11BD68CA6D45B5738B932BB3690A8C712904C49C1636 │ │ │ │ -A7702075F2FEA8DB3EB3A3C1216BB769DD0BAF4507A18E3052F2C846B0797933 │ │ │ │ -8CE9BB2DB5DFADAF1B0FC3A22BAB82A0D5D290F7AD950013CFA465BE11C1076D │ │ │ │ -5833FF92321FBF90D9229D3BA09DD18EEC44D9FCF8FCF63CC09D2977BFA798B6 │ │ │ │ -47FB047EA6AF69C7DE570176F5B6C0FED74DEDBF7DDF49550DD84BA14AC09423 │ │ │ │ -F70D5B14F0F8588F1E2FFE0DFE0760E77A9E39DEDAC5C5AE3760722C029B916D │ │ │ │ -96A2A7D1DD6A61F90B4B9806314A668EB7A0E107A3527310A240490453CC18D7 │ │ │ │ -3793B4CF3CE13EA332E7F5C2BACF85AC75FE84693B966BB0F6FB9A179A331C4E │ │ │ │ -55E9EF30E2734E44A88E053CD5E650D7E529E94CB7F8B733E68315ACAC5BEFC5 │ │ │ │ -3FE4F585F875310267865679AB381125C31E9AEB7226DC9F18DA80A9DE2F38A4 │ │ │ │ -51B8F9D5B2FBA0F50D53AE6212AFE41466A594F7A303B4E82F1493C0B8D65756 │ │ │ │ -BE6AF2931E5ADA5CE7D51CB5B1EC916C6C6D674808939331CA66F8181DD2B112 │ │ │ │ -1A12198CCCB6BBF1D40C803E794B65241ACE1E0D30CCA1C6F2D3E1415B98726B │ │ │ │ -9BA303BE2C4C276108CC78C093F1CC85CA454CC38535D1DEBFA341D84E8A5DDF │ │ │ │ -D53D8DD0F4A812B5BA63871BEB3BCE93FBC77AD395914E2CD757546C2BE2D641 │ │ │ │ -FDB12258E1E1D10E1B963EABB265F2C8B2547D48963E1AD3B223B666B46915A1 │ │ │ │ -157F5EA0AB8D8411C07AA2EB5D0EF1A1BA6D81C47473A3D3D6287104C7BF61F8 │ │ │ │ -3BDB64995DE96A65BF2B7288C51ADAA3D373A95C40D5240C5FF397551554AA9E │ │ │ │ -C89C7E45AA7738503CB058EF6AD5052CC78E4445C810C250BF25394B8D7DE82E │ │ │ │ -315C9CCD6E1E9150EC79EE0F354C668AE199C1AFF39C67337A86CB932E8D64E9 │ │ │ │ -389FF3CC08B538492DEED017686DBB9BDEA30FE67FB4EBDB3627C16FD15F243A │ │ │ │ -7FDEB310EFC940E57726E94340472F2C452815927ADE21578C959890216BE504 │ │ │ │ -225BE4B4D2E3B19F5E06B5A0B25AF168C3A2B26F599A829F89C16BD2026E8CC9 │ │ │ │ -8FB3CBB830C3E36C099071A70D0B8834FF2C17364EB50D5C71440CC7BFE02321 │ │ │ │ -8C6ECAC2F7EC1BE39077DB0E8B2B251626A71FD038EB2CF1FC254D98C1535CAA │ │ │ │ -A8C987BC266482BD860A333048E1EDB3DD40A6ECD6DA0088AD9B9640202D89AA │ │ │ │ -0BB9A0ADF63491E67F2E97E35942D77E59B9B8AB0ED28B022EE5CD3449FC5B7A │ │ │ │ -19E38845B488F97D155C4312885E29537EAE97719C65845663480CE79DE8F037 │ │ │ │ -68995C0928FE8AFBEE554F01381EE5187578DF5D2542F26F66A599EE8ECC1F68 │ │ │ │ -FBADF3C2BA968C3CEB86675CF9A6CFD736E1422800D270417D497903DE87F2AE │ │ │ │ -938E39E120E9D3079F512E545E0E2616B84E81FE41392184F96818A7C86BF541 │ │ │ │ -F2E67C48CA56DA838C9FA0FAD538073B9F26319140D1F80EEEBCA190DE660A31 │ │ │ │ -457CAC16E92F87449A3734F9EA751588514865B58DC073658C8A857B5398AAC7 │ │ │ │ -3DC11E069996EF74A3189A07630D5DB87C5E028CD193C086B4D0E8BABC4F2393 │ │ │ │ -235EC96091B16C4A6D97DA1BD30A2D2E71F55869223CA66AD12448B668685F6E │ │ │ │ -06E7888D7F20045C662C4F7994CC7E1CE9AAC33A026716AA0551DF12343F0E22 │ │ │ │ -6E9F4B21C90406CC4997601194EF37A973221D1F4D73DD5666BD297F621C92AA │ │ │ │ -E3F698BC1146ADE754C4120EDF5B3E974D75A237E51DB49D52CD6CC7C9E8BD2D │ │ │ │ -E6849DF8F4DBA86C655D0C57CB54836C8A841C1D814F6B493F96ADBFCAD78D3B │ │ │ │ -430C58EF169950851B6A0B46411488B1A6F6974832787A24C0CDDBE27996EFB1 │ │ │ │ -DB341FA34B1DC6238D978D1E1D34AF3FB375ED6DA9C88699F195C88A54622F7C │ │ │ │ -36DAFC663D85660E756733A7E22F20C6A5D91F06087CAD10F7217BD33F343DC6 │ │ │ │ -F5EB9F16FE763672243EE6AE5CB6063A1D64670E1C059DD52134974E27D9D89C │ │ │ │ -BC658FCD814F20703D610C978FDCD6E2AEA31C18D1A310F215B28199F66C87DB │ │ │ │ -3B23980A393E1DD77AFA3045EDB6942505F3CF6204315A14E5B6BF2E96F3BB1F │ │ │ │ -628D24AC1893BC7DAEF3AA63F2116837F31DB90D872CBD9E5C48BCDEE781D20D │ │ │ │ -C6553D2D15F4E8438A9D1C7CEE1B72BD6AA08DC0AFEAF8B4DC1038707EE4A1BF │ │ │ │ -3D84460E60AF90F55002C1D8EBF0700F7EC3EFC944BEA78D0E0536F3AA6D9A84 │ │ │ │ -604A781AC5ACFEB7E681365315EE11E991C03DA431B65B332AD8F83F6F3AE66C │ │ │ │ -1BF434D3793FB5BCC44E44ACFF2855C2770C4AC678C6ACD6EB071974ACF1AE37 │ │ │ │ -D02C1736C62CC205A2F3488448527EFFA379613A8E6A6D134F4BFBAE6127304D │ │ │ │ -576C900A458E32CD42A4674415E03D8EB5742E71B854B3EDFD271AA214436544 │ │ │ │ -D1BCFD52F439298847E1FA258E5D38384FC85BC4EDC6F9E4431621CF763B137B │ │ │ │ -22DB6E3268B3F78881D55EA7C52ABF23FB73C152B06B708084FE1B00CFE72D9D │ │ │ │ -57B62AEE912E63BBD89D4D13CE896735454F1A16C3D9FB6CDF142CCA9F1C0242 │ │ │ │ -46F62109DF30667DA327F7CF6DC19B880C860C69080597FFCB1793313E202D4F │ │ │ │ -120A7C6B052C2EB7597B71B0985D24FDD2D3918393BF720E762C5DBBC2BB1E91 │ │ │ │ -B04560364EFE5B16EB068E0560FB932E0C617CFB95A166388E99AC4CB020F5BC │ │ │ │ -E24BB77352D7C3B21C37D404051A70FFFA0F726C35501A1FBB411F832CE46A2E │ │ │ │ -B424E26BD4 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFD8CDE285A2827F4659E339460ABEF319FE44D7A91E93CA309E9266E03DA │ │ │ │ +735F5DEF3920C01189BB63C2BD7ED0B92EABB481F123641477CDCCAB9751FB7B │ │ │ │ +F67DA7CE6EB134BC10D0228562BA5A6BFE6940907EF030ABF9EC4A8A0DFEF73D │ │ │ │ +3289E8CB4DC37694F5A656A935D92C72B3D82B012F578A27711B161DE9652ADC │ │ │ │ +71C51E743E4E9A7C6CF6FF16C5D65C1F60954C0858B48FAAC4FBB21988E2A934 │ │ │ │ +AC50C097DDF42C416359647D79F830E1430FB9BB803451A6732D1B5CAB817C1B │ │ │ │ +673B3077D9A180F184267E9990C087BCDEBC8EB8B889934DD0EB63C2EBCED4A3 │ │ │ │ +83A0D6A365412CFF610EF7BD5F82B02AA293F1D2F868768CDE9B801C929B4A38 │ │ │ │ +64E20C70BC4041F837AD15423517F7336A067D140A2C7906DC5D45885FFB3B69 │ │ │ │ +724E5B9B138BD15A9359EB25D14BC4193E529D1A49FEB0DC1015BF94CEBBD5E0 │ │ │ │ +EA148B185C53E12BD9FA6DBC097D789A73E832F02F55080D8ED6087F5952EA78 │ │ │ │ +250A4C65CE4C4013554A031446D2092D813C4CB1A605D97A40CF867F656ECD1C │ │ │ │ +C23F80230AD1E449AA8B4007134F71156719206441D92B1A6DD25101ABF69F70 │ │ │ │ +538CCCE216376E1BD6E423986BD4E83B1975B15092D4E19F885672F9E7C02485 │ │ │ │ +E02DA0F4243D324A5983D1D46444E5F6573F699E4F2A3395EF0EB7808B7D4D62 │ │ │ │ +690FD033E93AA553082273636503DA4BBBBFA6D127CE10424DD1DDF4F879305C │ │ │ │ +14F64180E7851D091B3220DFC70CAA44716B8F7F0C6FBEDB167801DED77F9E69 │ │ │ │ +E9B31CD2D8044DB946E511162976C34DE27F2BB974B70509005562A0A21317B7 │ │ │ │ +46D826A31C476C8F9A778F941FF5956BA2D765B1AD0AC4BC7AE1CD8A2A81F039 │ │ │ │ +06EB13EBD099BBDB2EBDB54D459C288EA69FB0018CE9255BBFB08C1F90FF30BD │ │ │ │ +C971DA7FDB193281B8F967F21AB42F13F36085AC9EC0D6B6B448C8F289B0AD70 │ │ │ │ +DB521A4755ECF9CA594741E5C674220C21C265EF3BAE594197B00048C8D4DB73 │ │ │ │ +4AC47B6A86EAC7EECD042C8E23C347F8C9FCB870473C1FBD91C298174BCBF1A9 │ │ │ │ +7B366C570A9A04A433495FBC9FD0FFC22A0E8181424C0F038ED97AD5054B10CC │ │ │ │ +1CD5BA0719DD0B4F4F18932AE87FF8B8C1CF0C7482B7847049761505DCD85146 │ │ │ │ +4EE5CB53993A9449CD05233E961BD49AE92D308E2065D6C6BF038538039AA56A │ │ │ │ +C59D424BE3175427337E16892D3920598D518423E145C6B2DD3881F338845F0D │ │ │ │ +16C47AA0D9C2D6DE99C6A302D567ACD6F98BF38223F1890E099C8F93348FFDAA │ │ │ │ +C2D3440187C8FED87C1A891EF11EFA7168EC47F72AF8BC5BE1B88B1084E704F5 │ │ │ │ +82099F1A79E556D94CC38851C97DC3864945A7470F1389BCF608BADAE45B236D │ │ │ │ +2934A20FFBCF169BF84DF496B07E7F1D9002E62B030337642804403DF7E4B3FF │ │ │ │ +C5A421EE0033BA06C50A041FBFE8F81AFC145664E2976505EB14859CF0377EBA │ │ │ │ +EA604CF8BFB5F9ADB9A7ED56E6F0F919E791D57C7232241C892EAC3E55D2D03B │ │ │ │ +FF43B9DAB7B1D8C6588D6D3503F49E80121E52254431B308752A936E0B51124D │ │ │ │ +C7F23C316BA6FA73E6BC47EB9550003E1393C68360067C094C65C0DD17214FA0 │ │ │ │ +45FF0F9C3E0AE4C81093752D23EA95E163C98EC04873ECE3FB0882567329525C │ │ │ │ +0A3937B16CA72B5EB6D2DC10C1B485C0BA939587AFEBB6D837A40401C666BC1C │ │ │ │ +F3344FBAB3E48BEE18F3AF5CDB33BA63778D373A851333C8C34E2F35AB94E8B4 │ │ │ │ +FF7E62A92ED83B872894E0A17209E14CF61269204A35A4BC8C7EE4B16F19E91F │ │ │ │ +669C4EFCECB187F6C7FAF92B4E14E400C6B3C81679D4A7196D66DB1E897DDA42 │ │ │ │ +47CC2848B46D581A95EEF85AB528E8CDEEB275D1E1FE197A3A08D36406E2DADF │ │ │ │ +A87D817AF18B5525F89B7C2E584F4A1254A1FC71E749999A2152870631A69CB6 │ │ │ │ +666EBD6BB3366A598F6592040D0E82B9D866DF0A76C362E76C2804D108A0C148 │ │ │ │ +51F42E9E0ABD52CC2D02B156B63AFD03313AFC80EACC83DF9B59F05FD798951D │ │ │ │ +FCF5335636DFC6561910ACE0AEC47F74CFD302EB7421D28AAAC8FF82B7CE2B2A │ │ │ │ +340B8BCE09F57BFCBC77F91096D97A85726E68846398C8C9C8D3A65A252AE8FB │ │ │ │ +166750C244963BC61E2236BAAC529FABD6FC774550096374A8DB81B6AF1EA843 │ │ │ │ +27F671C0045D629E3734EF037447C4763514FD1C4AE858A494AFC23A64C82149 │ │ │ │ +F4C0A7023B3865B84FAC2DC88D1553DCEBA3D8FB5DBC1103123F6B8CB5B3A399 │ │ │ │ +B665B26B001BF1E4BFABE42BFF6B02D69FA88D5CBCA5A11D5B48CFB4EAE60558 │ │ │ │ +5FBE254AD3BE01761CD4995E766E172D768621223505FD6AA8F89FC042EB814C │ │ │ │ +34373DAEC4FAAF71C0752F814154C5299F751CE7E0F9C673D2E448D0204C214C │ │ │ │ +C04DC34671FBEF72350FFBA263662E86A0D3795E310153AAF4C8A2623E167E6E │ │ │ │ +1F13A9BA485D5DDFC451D691DBA7C49E20354A7AD79D89F7EDE24F0D5B48B27D │ │ │ │ +568D01EF2555504196C09841F5970D8CF6C5D47FFFCF18AE6B2A485342000AAD │ │ │ │ +1F922FBEF7C98E0965609C89240E7B131A59551F57CD5C92097FCE75F5D2778F │ │ │ │ +F9ACF43A3273551363442C8C539205903A835C744A4AA953545506081D3D231A │ │ │ │ +A140E01F280BC42A3C35EDAD5F6B8CE6E51C68E41CA813710864ED880FCE846C │ │ │ │ +1B66D27CC2DBCDC2B1B96A12490BD76D67A415D4A6595CD9B19D3104A83D2C82 │ │ │ │ +C46DCD2C027F0565EDB83E54FF99498194D3140E55E8EE65EBDEAC5409B5616A │ │ │ │ +73141DA2D581E300A6057F4301A02DD160AB3E55A116313525122D0608816AA8 │ │ │ │ +4712EEF3D6FE8C893DF37D │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -4348,15 +4338,15 @@ │ │ │ │ %%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 134[48 3[51 2[36 12[40 2[51 45 26[59 11[25 45 4[45 │ │ │ │ +/Fd 139[35 1[36 2[45 9[40 1[40 51 18[71 20[25 4[45 45 │ │ │ │ 1[45 1[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 │ │ │ │ @@ -4472,40 +4462,39 @@ │ │ │ │ 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 1016 4 v │ │ │ │ -1197 w Fl(SolveMap)29 b Fd(:)40 b Fk(DRAFT)30 b Fd(F)-8 │ │ │ │ -b(ebruary)31 b(29,)g(2024)p 2885 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 1057 4 v │ │ │ │ +1239 w Fl(SolveMap)28 b Fd(:)40 b Fk(DRAFT)31 b Fd(Octob)s(er)f(4,)h │ │ │ │ +(2025)p 2844 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 │ │ │ │ @@ -4535,17 +4524,17 @@ │ │ │ │ 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 1016 4 v 1197 100 a Fl(SolveMap)28 │ │ │ │ -b Fd(:)41 b Fk(DRAFT)121 b Fd(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2838 100 V 1016 w Fm(3)111 399 y(2.)46 b Fl(int)h(SolveMap_nfront)d(\() │ │ │ │ +TeXDict begin 3 2 bop 91 100 1057 4 v 1238 100 a Fl(SolveMap)28 │ │ │ │ +b Fd(:)41 b Fk(DRAFT)121 b Fd(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2796 100 V 1057 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 │ │ │ │ @@ -4601,53 +4590,52 @@ │ │ │ │ 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 1016 4 v │ │ │ │ -1197 w Fl(SolveMap)29 b Fd(:)40 b Fk(DRAFT)30 b Fd(F)-8 │ │ │ │ -b(ebruary)31 b(29,)g(2024)p 2885 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 b Fl(int)h(*)h(SolveMap_mapLower)43 b(\()k(SolveMap)f │ │ │ │ -(*solvemap)f(\))i(;)227 1241 y Fm(This)39 b(metho)s(d)g(returns)f │ │ │ │ -Fl(mapLower)p Fm(,)h(a)h(p)s(oin)m(ter)f(to)i(the)e(v)m(ector)i(that)f │ │ │ │ -(maps)f(the)g(submatrices)h(in)f(the)227 1354 y(upp)s(er)29 │ │ │ │ -b(triangle)i(to)g(threads)f(or)h(pro)s(cesses.)227 1522 │ │ │ │ -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.)0 1843 y Fb(1.2.3)112 │ │ │ │ -b(Initialization)39 b(metho)s(d)111 2057 y Fm(1.)46 b │ │ │ │ -Fl(void)h(SolveMap_init)d(\()k(SolveMap)d(*solvemap,)g(int)i │ │ │ │ -(symmetryflag,)d(int)j(nfront,)1230 2170 y(int)f(nproc,)h(int)f │ │ │ │ -(nblockUpper,)f(nblockLower)g(\))i(;)227 2338 y Fm(An)m(y)33 │ │ │ │ -b(previously)f(o)m(wned)g(data)h(is)f(cleared)i(via)f(a)f(call)i(to)f │ │ │ │ -Fl(SolveMap)p 2656 2338 29 4 v 32 w(clearData\(\))p Fm(.)44 │ │ │ │ -b(The)31 b(\014v)m(e)i(scalars)227 2451 y(are)e(then)f(set)h(and)f(the) │ │ │ │ -g(v)m(ectors)i(are)f(allo)s(cated)h(and)e(initialized.)227 │ │ │ │ -2620 y Fk(Err)-5 b(or)38 b(che)-5 b(cking:)48 b Fm(If)34 │ │ │ │ -b Fl(solvemap)f Fm(is)h Fl(NULL)p Fm(,)g(or)g Fl(symmetryflag)d │ │ │ │ -Fm(is)k(in)m(v)-5 b(alid,)36 b(or)f Fl(nfront)p Fm(,)f │ │ │ │ -Fl(nblockUpper)p Fm(,)227 2733 y Fl(nblockLower)28 b │ │ │ │ -Fm(or)i Fl(nproc)f Fm(is)h(negativ)m(e,)j(an)d(error)g(message)i(is)e │ │ │ │ -(prin)m(ted)g(and)g(the)h(program)f(exits.)0 3053 y Fb(1.2.4)112 │ │ │ │ -b(Map)39 b(creation)e(metho)s(ds)111 3267 y Fm(1.)46 │ │ │ │ -b Fl(void)h(SolveMap_randomMap)c(\()k(SolveMap)f(*solvemap,)f(int)i │ │ │ │ -(symmetryflag,)1468 3380 y(IVL)g(*upperBlockIVL,)d(IVL)j │ │ │ │ -(*lowerBlockIVL,)c(int)k(nproc,)1468 3493 y(IV)g(*ownersIV,)e(int)i │ │ │ │ -(seed,)g(int)g(msglvl,)e(FILE)i(*msgFile\))e(;)227 3661 │ │ │ │ -y Fm(This)30 b(metho)s(d)g(maps)g(o\013diagonal)i(submatrices)e(to)h │ │ │ │ -(threads)f(or)g(pro)s(cesses)h(in)f(a)g(random)g(fashion.)227 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fm(4)p 136 100 1057 4 v │ │ │ │ +1239 w Fl(SolveMap)28 b Fd(:)40 b Fk(DRAFT)31 b Fd(Octob)s(er)f(4,)h │ │ │ │ +(2025)p 2844 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 │ │ │ │ +b Fl(int)h(*)h(SolveMap_mapLower)43 b(\()k(SolveMap)f(*solvemap)f(\))i │ │ │ │ +(;)227 1241 y Fm(This)39 b(metho)s(d)g(returns)f Fl(mapLower)p │ │ │ │ +Fm(,)h(a)h(p)s(oin)m(ter)f(to)i(the)e(v)m(ector)i(that)f(maps)f(the)g │ │ │ │ +(submatrices)h(in)f(the)227 1354 y(upp)s(er)29 b(triangle)i(to)g │ │ │ │ +(threads)f(or)h(pro)s(cesses.)227 1522 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.)0 1843 y Fb(1.2.3)112 b(Initialization)39 │ │ │ │ +b(metho)s(d)111 2057 y Fm(1.)46 b Fl(void)h(SolveMap_init)d(\()k │ │ │ │ +(SolveMap)d(*solvemap,)g(int)i(symmetryflag,)d(int)j(nfront,)1230 │ │ │ │ +2170 y(int)f(nproc,)h(int)f(nblockUpper,)f(nblockLower)g(\))i(;)227 │ │ │ │ +2338 y Fm(An)m(y)33 b(previously)f(o)m(wned)g(data)h(is)f(cleared)i │ │ │ │ +(via)f(a)f(call)i(to)f Fl(SolveMap)p 2656 2338 29 4 v │ │ │ │ +32 w(clearData\(\))p Fm(.)44 b(The)31 b(\014v)m(e)i(scalars)227 │ │ │ │ +2451 y(are)e(then)f(set)h(and)f(the)g(v)m(ectors)i(are)f(allo)s(cated)h │ │ │ │ +(and)e(initialized.)227 2620 y Fk(Err)-5 b(or)38 b(che)-5 │ │ │ │ +b(cking:)48 b Fm(If)34 b Fl(solvemap)f Fm(is)h Fl(NULL)p │ │ │ │ +Fm(,)g(or)g Fl(symmetryflag)d Fm(is)k(in)m(v)-5 b(alid,)36 │ │ │ │ +b(or)f Fl(nfront)p Fm(,)f Fl(nblockUpper)p Fm(,)227 2733 │ │ │ │ +y Fl(nblockLower)28 b Fm(or)i Fl(nproc)f Fm(is)h(negativ)m(e,)j(an)d │ │ │ │ +(error)g(message)i(is)e(prin)m(ted)g(and)g(the)h(program)f(exits.)0 │ │ │ │ +3053 y Fb(1.2.4)112 b(Map)39 b(creation)e(metho)s(ds)111 │ │ │ │ +3267 y Fm(1.)46 b Fl(void)h(SolveMap_randomMap)c(\()k(SolveMap)f │ │ │ │ +(*solvemap,)f(int)i(symmetryflag,)1468 3380 y(IVL)g(*upperBlockIVL,)d │ │ │ │ +(IVL)j(*lowerBlockIVL,)c(int)k(nproc,)1468 3493 y(IV)g(*ownersIV,)e │ │ │ │ +(int)i(seed,)g(int)g(msglvl,)e(FILE)i(*msgFile\))e(;)227 │ │ │ │ +3661 y Fm(This)30 b(metho)s(d)g(maps)g(o\013diagonal)i(submatrices)e │ │ │ │ +(to)h(threads)f(or)g(pro)s(cesses)h(in)f(a)g(random)g(fashion.)227 │ │ │ │ 3830 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 3943 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.)111 4167 y(2.)46 │ │ │ │ b Fl(void)h(SolveMap_ddMap)d(\()j(SolveMap)f(*solvemap,)f(int)i │ │ │ │ (symmetryflag,)1277 4280 y(IVL)g(*upperBlockIVL,)d(IVL)j │ │ │ │ @@ -4670,17 +4658,17 @@ │ │ │ │ (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 1016 4 v 1197 100 a Fl(SolveMap)28 │ │ │ │ -b Fd(:)41 b Fk(DRAFT)121 b Fd(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2838 100 V 1016 w Fm(5)0 399 y Fb(1.2.5)112 b(Solv)m(e)38 │ │ │ │ +TeXDict begin 5 4 bop 91 100 1057 4 v 1238 100 a Fl(SolveMap)28 │ │ │ │ +b Fd(:)41 b Fk(DRAFT)121 b Fd(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2796 100 V 1057 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 │ │ │ │ @@ -4748,29 +4736,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 1016 4 v │ │ │ │ -1197 w Fl(SolveMap)29 b Fd(:)40 b Fk(DRAFT)30 b Fd(F)-8 │ │ │ │ -b(ebruary)31 b(29,)g(2024)p 2885 100 V 227 399 a Fm(\(other)d(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 1057 4 v │ │ │ │ +1239 w Fl(SolveMap)28 b Fd(:)40 b Fk(DRAFT)31 b Fd(Octob)s(er)f(4,)h │ │ │ │ +(2025)p 2844 100 V 227 399 a Fm(\(other)d(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 │ │ │ │ @@ -4837,17 +4825,17 @@ │ │ │ │ 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 1016 4 v 1197 100 a Fl(SolveMap)28 │ │ │ │ -b Fd(:)41 b Fk(DRAFT)121 b Fd(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2838 100 V 1016 w Fm(7)111 399 y(6.)46 b Fl(int)h │ │ │ │ +TeXDict begin 7 6 bop 91 100 1057 4 v 1238 100 a Fl(SolveMap)28 │ │ │ │ +b Fd(:)41 b Fk(DRAFT)121 b Fd(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2796 100 V 1057 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 │ │ │ │ ├── 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 February 29, 2024 │ │ │ │ │ + 2 SolveMap : DRAFT October 4, 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 February 29, 2024 3 │ │ │ │ │ + SolveMap : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 4 SolveMap : DRAFT October 4, 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 February 29, 2024 5 │ │ │ │ │ + SolveMap : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 6 SolveMap : DRAFT October 4, 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 February 29, 2024 7 │ │ │ │ │ + SolveMap : DRAFT October 4, 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 2024.02.29:1858 │ │ │ │ +%DVIPSSource: TeX output 2025.10.04:1734 │ │ │ │ %%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 │ │ │ │ @@ -2120,23 +2120,23 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 50 /two put │ │ │ │ dup 52 /four put │ │ │ │ -dup 57 /nine put │ │ │ │ +dup 53 /five put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 70 /F put │ │ │ │ -dup 97 /a put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ +dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ -dup 117 /u put │ │ │ │ -dup 121 /y put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -2310,95 +2310,85 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA647CD0E2539DFAD9604486DCCFA49 │ │ │ │ -AC96130D106A8F8387633622C3809400D6E8FF9D60877C743502E4D211CEBF62 │ │ │ │ -9A6F91045C22D5D20C5FF677D89983D02E5EE26C71A9EAE0E7C52465DA5A149A │ │ │ │ -9B731C27EC8366BC3E841C0CAE49A33DE164A857365B17B09CAD121C47A980CB │ │ │ │ -C75E1030F6C394EDB46C54B46880D2344127B903FB22684C9CAACE6053DC3BFA │ │ │ │ -4E47C565ECAF19C4295A11BD68CA6D45B5738B932BB3690A8C712904C49C1636 │ │ │ │ -A7702075F2FEA8DB3EB3A3C1216BB769DD0BAF4507A18E3052F2C846B0797933 │ │ │ │ -8CE9BB2DB5DFADAF1B0FC3A22BAB82A0D5D290F7AD950013CFA465BE11C1076D │ │ │ │ -5833FF92321FBF90D9229D3BA09DD18EEC44D9FCF8FCF63CC09D2977BFA798B6 │ │ │ │ -47FB047EA6AF69C7DE570176F5B6C0FED74DEDBF7DDF49550DD84BA14AC09423 │ │ │ │ -F70D5B14F0F8588F1E2FFE0DFE0760E77A9E39DEDAC5C5AE3760722C029B916D │ │ │ │ -96A2A7D1DD6A61F90B4B9806314A668EB7A0E107A3527310A240490453CC18D7 │ │ │ │ -3793B4CF3CE13EA332E7F5C2BACF85AC75FE84693B966BB0F6FB9A179A331C4E │ │ │ │ -55E9EF30E2734E44A88E053CD5E650D7E529E94CB7F8B733E68315ACAC5BEFC5 │ │ │ │ -3FE4F585F875310267865679AB381125C31E9AEB7226DC9F18DA80A9DE2F38A4 │ │ │ │ -51B8F9D5B2FBA0F50D53AE6212AFE41466A594F7A303B4E82F1493C0B8D65756 │ │ │ │ -BE6AF2931E5ADA5CE7D51CB5B1EC916C6C6D674808939331CA66F8181DD2B112 │ │ │ │ -1A12198CCCB6BBF1D40C803E794B65241ACE1E0D30CCA1C6F2D3E1415B98726B │ │ │ │ -9BA303BE2C4C276108CC78C093F1CC85CA454CC38535D1DEBFA341D84E8A5DDF │ │ │ │ -D53D8DD0F4A812B5BA63871BEB3BCE93FBC77AD395914E2CD757546C2BE2D641 │ │ │ │ -FDB12258E1E1D10E1B963EABB265F2C8B2547D48963E1AD3B223B666B46915A1 │ │ │ │ -157F5EA0AB8D8411C07AA2EB5D0EF1A1BA6D81C47473A3D3D6287104C7BF61F8 │ │ │ │ -3BDB64995DE96A65BF2B7288C51ADAA3D373A95C40D5240C5FF397551554AA9E │ │ │ │ -C89C7E45AA7738503CB058EF6AD5052CC78E4445C810C250BF25394B8D7DE82E │ │ │ │ -315C9CCD6E1E9150EC79EE0F354C668AE199C1AFF39C67337A86CB932E8D64E9 │ │ │ │ -389FF3CC08B538492DEED017686DBB9BDEA30FE67FB4EBDB3627C16FD15F243A │ │ │ │ -7FDEB310EFC940E57726E94340472F2C452815927ADE21578C959890216BE504 │ │ │ │ -225BE4B4D2E3B19F5E06B5A0B25AF168C3A2B26F599A829F89C16BD2026E8CC9 │ │ │ │ -8FB3CBB830C3E36C099071A70D0B8834FF2C17364EB50D5C71440CC7BFE02321 │ │ │ │ -8C6ECAC2F7EC1BE39077DB0E8B2B251626A71FD038EB2CF1FC254D98C1535CAA │ │ │ │ -A8C987BC266482BD860A333048E1EDB3DD40A6ECD6DA0088AD9B9640202D89AA │ │ │ │ -0BB9A0ADF63491E67F2E97E35942D77E59B9B8AB0ED28B022EE5CD3449FC5B7A │ │ │ │ -19E38845B488F97D155C4312885E29537EAE97719C65845663480CE79DE8F037 │ │ │ │ -68995C0928FE8AFBEE554F01381EE5187578DF5D2542F26F66A599EE8ECC1F68 │ │ │ │ -FBADF3C2BA968C3CEB86675CF9A6CFD736E1422800D270417D497903DE87F2AE │ │ │ │ -938E39E120E9D3079F512E545E0E2616B84E81FE41392184F96818A7C86BF541 │ │ │ │ -F2E67C48CA56DA838C9FA0FAD538073B9F26319140D1F80EEEBCA190DE660A31 │ │ │ │ -457CAC16E92F87449A3734F9EA751588514865B58DC073658C8A857B5398AAC7 │ │ │ │ -3DC11E069996EF74A3189A07630D5DB87C5E028CD193C086B4D0E8BABC4F2393 │ │ │ │ -235EC96091B16C4A6D97DA1BD30A2D2E71F55869223CA66AD12448B668685F6E │ │ │ │ -06E7888D7F20045C662C4F7994CC7E1CE9AAC33A026716AA0551DF12343F0E22 │ │ │ │ -6E9F4B21C90406CC4997601194EF37A973221D1F4D73DD5666BD297F621C92AA │ │ │ │ -E3F698BC1146ADE754C4120EDF5B3E974D75A237E51DB49D52CD6CC7C9E8BD2D │ │ │ │ -E6849DF8F4DBA86C655D0C57CB54836C8A841C1D814F6B493F96ADBFCAD78D3B │ │ │ │ -430C58EF169950851B6A0B46411488B1A6F6974832787A24C0CDDBE27996EFB1 │ │ │ │ -DB341FA34B1DC6238D978D1E1D34AF3FB375ED6DA9C88699F195C88A54622F7C │ │ │ │ -36DAFC663D85660E756733A7E22F20C6A5D91F06087CAD10F7217BD33F343DC6 │ │ │ │ -F5EB9F16FE763672243EE6AE5CB6063A1D64670E1C059DD52134974E27D9D89C │ │ │ │ -BC658FCD814F20703D610C978FDCD6E2AEA31C18D1A310F215B28199F66C87DB │ │ │ │ -3B23980A393E1DD77AFA3045EDB6942505F3CF6204315A14E5B6BF2E96F3BB1F │ │ │ │ -628D24AC1893BC7DAEF3AA63F2116837F31DB90D872CBD9E5C48BCDEE781D20D │ │ │ │ -C6553D2D15F4E8438A9D1C7CEE1B72BD6AA08DC0AFEAF8B4DC1038707EE4A1BF │ │ │ │ -3D84460E60AF90F55002C1D8EBF0700F7EC3EFC944BEA78D0E0536F3AA6D9A84 │ │ │ │ -604A781AC5ACFEB7E681365315EE11E991C03DA431B65B332AD8F83F6F3AE66C │ │ │ │ -1BF434D3793FB5BCC44E44ACFF2855C2770C4AC678C6ACD6EB071974ACF1AE37 │ │ │ │ -D02C1736C62CC205A2F3488448527EFFA379613A8E6A6D134F4BFBAE6127304D │ │ │ │ -576C900A458E32CD42A4674415E03D8EB5742E71B854B3EDFD271AA214436544 │ │ │ │ -D1BCFD52F439298847E1FA258E5D38384FC85BC4EDC6F9E4431621CF763B137B │ │ │ │ -22DB6E3268B3F78881D55EA7C52ABF23FB73C152B06B708084FE1B00CFE72D9D │ │ │ │ -57B62AEE912E63BBD89D4D13CE896735454F1A16C3D9FB6CDF142CCA9F1C0242 │ │ │ │ -46F62109DF30667DA327F7CF6DC19B880C860C69080597FFCB1793313E202D4F │ │ │ │ -120A7C6B052C2EB7597B71B0985D24FDD2D3918393BF720E762C5DBBC2BB1E91 │ │ │ │ -B04560364EFE5B16EB068E0560FB932E0C617CFB95A166388E99AC4CB020F5BC │ │ │ │ -E24BB77352D7C3B21C37D404051A70FFFA0F726C35501A1FBB411F832CE46A2E │ │ │ │ -B424E26BD4 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFD8CDE285A2827F4659E339460ABEF319FE44D7A91E93CA309E9266E03DA │ │ │ │ +735F5DEF3920C01189BB63C2BD7ED0B92EABB481F123641477CDCCAB9751FB7B │ │ │ │ +F67DA7CE6EB134BC10D0228562BA5A6BFE6940907EF030ABF9EC4A8A0DFEF73D │ │ │ │ +3289E8CB4DC37694F5A656A935D92C72B3D82B012F578A27711B161DE9652ADC │ │ │ │ +71C51E743E4E9A7C6CF6FF16C5D65C1F60954C0858B48FAAC4FBB21988E2A934 │ │ │ │ +AC50C097DDF42C416359647D79F830E1430FB9BB803451A6732D1B5CAB817C1B │ │ │ │ +673B3077D9A180F184267E9990C087BCDEBC8EB8B889934DD0EB63C2EBCED4A3 │ │ │ │ +83A0D6A365412CFF610EF7BD5F82B02AA293F1D2F868768CDE9B801C929B4A38 │ │ │ │ +64E20C70BC4041F837AD15423517F7336A067D140A2C7906DC5D45885FFB3B69 │ │ │ │ +724E5B9B138BD15A9359EB25D14BC4193E529D1A49FEB0DC1015BF94CEBBD5E0 │ │ │ │ +EA148B185C53E12BD9FA6DBC097D789A73E832F02F55080D8ED6087F5952EA78 │ │ │ │ +250A4C65CE4C4013554A031446D2092D813C4CB1A605D97A40CF867F656ECD1C │ │ │ │ +C23F80230AD1E449AA8B4007134F71156719206441D92B1A6DD25101ABF69F70 │ │ │ │ +538CCCE216376E1BD6E423986BD4E83B1975B15092D4E19F885672F9E7C02485 │ │ │ │ +E02DA0F4243D324A5983D1D46444E5F6573F699E4F2A3395EF0EB7808B7D4D62 │ │ │ │ +690FD033E93AA553082273636503DA4BBBBFA6D127CE10424DD1DDF4F879305C │ │ │ │ +14F64180E7851D091B3220DFC70CAA44716B8F7F0C6FBEDB167801DED77F9E69 │ │ │ │ +E9B31CD2D8044DB946E511162976C34DE27F2BB974B70509005562A0A21317B7 │ │ │ │ +46D826A31C476C8F9A778F941FF5956BA2D765B1AD0AC4BC7AE1CD8A2A81F039 │ │ │ │ +06EB13EBD099BBDB2EBDB54D459C288EA69FB0018CE9255BBFB08C1F90FF30BD │ │ │ │ +C971DA7FDB193281B8F967F21AB42F13F36085AC9EC0D6B6B448C8F289B0AD70 │ │ │ │ +DB521A4755ECF9CA594741E5C674220C21C265EF3BAE594197B00048C8D4DB73 │ │ │ │ +4AC47B6A86EAC7EECD042C8E23C347F8C9FCB870473C1FBD91C298174BCBF1A9 │ │ │ │ +7B366C570A9A04A433495FBC9FD0FFC22A0E8181424C0F038ED97AD5054B10CC │ │ │ │ +1CD5BA0719DD0B4F4F18932AE87FF8B8C1CF0C7482B7847049761505DCD85146 │ │ │ │ +4EE5CB53993A9449CD05233E961BD49AE92D308E2065D6C6BF038538039AA56A │ │ │ │ +C59D424BE3175427337E16892D3920598D518423E145C6B2DD3881F338845F0D │ │ │ │ +16C47AA0D9C2D6DE99C6A302D567ACD6F98BF38223F1890E099C8F93348FFDAA │ │ │ │ +C2D3440187C8FED87C1A891EF11EFA7168EC47F72AF8BC5BE1B88B1084E704F5 │ │ │ │ +82099F1A79E556D94CC38851C97DC3864945A7470F1389BCF608BADAE45B236D │ │ │ │ +2934A20FFBCF169BF84DF496B07E7F1D9002E62B030337642804403DF7E4B3FF │ │ │ │ +C5A421EE0033BA06C50A041FBFE8F81AFC145664E2976505EB14859CF0377EBA │ │ │ │ +EA604CF8BFB5F9ADB9A7ED56E6F0F919E791D57C7232241C892EAC3E55D2D03B │ │ │ │ +FF43B9DAB7B1D8C6588D6D3503F49E80121E52254431B308752A936E0B51124D │ │ │ │ +C7F23C316BA6FA73E6BC47EB9550003E1393C68360067C094C65C0DD17214FA0 │ │ │ │ +45FF0F9C3E0AE4C81093752D23EA95E163C98EC04873ECE3FB0882567329525C │ │ │ │ +0A3937B16CA72B5EB6D2DC10C1B485C0BA939587AFEBB6D837A40401C666BC1C │ │ │ │ +F3344FBAB3E48BEE18F3AF5CDB33BA63778D373A851333C8C34E2F35AB94E8B4 │ │ │ │ +FF7E62A92ED83B872894E0A17209E14CF61269204A35A4BC8C7EE4B16F19E91F │ │ │ │ +669C4EFCECB187F6C7FAF92B4E14E400C6B3C81679D4A7196D66DB1E897DDA42 │ │ │ │ +47CC2848B46D581A95EEF85AB528E8CDEEB275D1E1FE197A3A08D36406E2DADF │ │ │ │ +A87D817AF18B5525F89B7C2E584F4A1254A1FC71E749999A2152870631A69CB6 │ │ │ │ +666EBD6BB3366A598F6592040D0E82B9D866DF0A76C362E76C2804D108A0C148 │ │ │ │ +51F42E9E0ABD52CC2D02B156B63AFD03313AFC80EACC83DF9B59F05FD798951D │ │ │ │ +FCF5335636DFC6561910ACE0AEC47F74CFD302EB7421D28AAAC8FF82B7CE2B2A │ │ │ │ +340B8BCE09F57BFCBC77F91096D97A85726E68846398C8C9C8D3A65A252AE8FB │ │ │ │ +166750C244963BC61E2236BAAC529FABD6FC774550096374A8DB81B6AF1EA843 │ │ │ │ +27F671C0045D629E3734EF037447C4763514FD1C4AE858A494AFC23A64C82149 │ │ │ │ +F4C0A7023B3865B84FAC2DC88D1553DCEBA3D8FB5DBC1103123F6B8CB5B3A399 │ │ │ │ +B665B26B001BF1E4BFABE42BFF6B02D69FA88D5CBCA5A11D5B48CFB4EAE60558 │ │ │ │ +5FBE254AD3BE01761CD4995E766E172D768621223505FD6AA8F89FC042EB814C │ │ │ │ +34373DAEC4FAAF71C0752F814154C5299F751CE7E0F9C673D2E448D0204C214C │ │ │ │ +C04DC34671FBEF72350FFBA263662E86A0D3795E310153AAF4C8A2623E167E6E │ │ │ │ +1F13A9BA485D5DDFC451D691DBA7C49E20354A7AD79D89F7EDE24F0D5B48B27D │ │ │ │ +568D01EF2555504196C09841F5970D8CF6C5D47FFFCF18AE6B2A485342000AAD │ │ │ │ +1F922FBEF7C98E0965609C89240E7B131A59551F57CD5C92097FCE75F5D2778F │ │ │ │ +F9ACF43A3273551363442C8C539205903A835C744A4AA953545506081D3D231A │ │ │ │ +A140E01F280BC42A3C35EDAD5F6B8CE6E51C68E41CA813710864ED880FCE846C │ │ │ │ +1B66D27CC2DBCDC2B1B96A12490BD76D67A415D4A6595CD9B19D3104A83D2C82 │ │ │ │ +C46DCD2C027F0565EDB83E54FF99498194D3140E55E8EE65EBDEAC5409B5616A │ │ │ │ +73141DA2D581E300A6057F4301A02DD160AB3E55A116313525122D0608816AA8 │ │ │ │ +4712EEF3D6FE8C893DF37D │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -5243,16 +5233,16 @@ │ │ │ │ 86 1[62 3[84 5[42 6[80 10[56 56 56 56 56 56 56 2[31 46[{}31 │ │ │ │ 99.6264 /CMBX12 rf /Fd 135[62 2[62 62 4[62 4[62 4[62 │ │ │ │ 1[62 62 14[62 5[62 77[{}10 119.552 /CMTT12 rf /Fe 134[71 │ │ │ │ 2[71 75 52 53 55 1[75 67 75 112 3[37 75 67 41 61 75 60 │ │ │ │ 1[65 13[75 2[92 11[103 16[67 67 67 2[37 46[{}25 119.552 │ │ │ │ /CMBX12 rf /Ff 138[49 30 37 38 1[46 46 51 1[23 42 1[28 │ │ │ │ 46 42 1[42 46 42 1[46 12[65 1[66 11[59 62 69 2[68 6[28 │ │ │ │ -58[{}23 90.9091 /CMTI10 rf /Fg 134[48 3[51 2[36 12[40 │ │ │ │ -2[51 45 26[59 11[25 45 4[45 1[45 1[45 3[25 44[{}13 90.9091 │ │ │ │ +58[{}23 90.9091 /CMTI10 rf /Fg 139[35 1[36 2[45 9[40 │ │ │ │ +1[40 51 18[71 20[25 4[45 45 1[45 1[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 │ │ │ │ @@ -5377,40 +5367,39 @@ │ │ │ │ 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 1063 4 v │ │ │ │ -1245 w Fn(SubMtx)29 b Fg(:)41 b Ff(DRAFT)30 b Fg(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2837 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 1105 4 v │ │ │ │ +1286 w Fn(SubMtx)29 b Fg(:)41 b Ff(DRAFT)30 b Fg(Octob)s(er)g(4,)h │ │ │ │ +(2025)p 2796 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 │ │ │ │ @@ -5459,17 +5448,17 @@ │ │ │ │ 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 1063 4 v 1245 100 a Fn(SubMtx)28 │ │ │ │ -b Fg(:)41 b Ff(DRAFT)121 b Fg(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2790 100 V 1063 w Fo(3)330 399 y Fh({)45 b Fn(SPOOLES)p │ │ │ │ +TeXDict begin 3 2 bop 91 100 1105 4 v 1286 100 a Fn(SubMtx)29 │ │ │ │ +b Fg(:)40 b Ff(DRAFT)121 b Fg(Octob)s(er)31 b(4,)g(2025)p │ │ │ │ +2749 100 V 1105 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 │ │ │ │ @@ -5531,19 +5520,19 @@ │ │ │ │ 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 1063 4 v │ │ │ │ -1245 w Fn(SubMtx)29 b Fg(:)41 b Ff(DRAFT)30 b Fg(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2837 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 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fo(4)p 136 100 1105 4 v │ │ │ │ +1286 w Fn(SubMtx)29 b Fg(:)41 b Ff(DRAFT)30 b Fg(Octob)s(er)g(4,)h │ │ │ │ +(2025)p 2796 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 │ │ │ │ Fn(0)f Fo(other-)227 804 y(wise.)137 984 y Fi(\210)45 │ │ │ │ b Fn(SUBMTX)p 521 984 V 33 w(IS)p 650 984 V 34 w(DENSE)p │ │ │ │ @@ -5605,17 +5594,17 @@ │ │ │ │ (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 1063 4 v 1245 100 a Fn(SubMtx)28 │ │ │ │ -b Fg(:)41 b Ff(DRAFT)121 b Fg(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2790 100 V 1063 w Fo(5)0 399 y Fc(1.2.2)112 b(Instance)38 │ │ │ │ +TeXDict begin 5 4 bop 91 100 1105 4 v 1286 100 a Fn(SubMtx)29 │ │ │ │ +b Fg(:)40 b Ff(DRAFT)121 b Fg(Octob)s(er)31 b(4,)g(2025)p │ │ │ │ +2749 100 V 1105 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 │ │ │ │ @@ -5683,21 +5672,21 @@ │ │ │ │ (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 1063 4 v │ │ │ │ -1245 w Fn(SubMtx)29 b Fg(:)41 b Ff(DRAFT)30 b Fg(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2837 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 │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fo(6)p 136 100 1105 4 v │ │ │ │ +1286 w Fn(SubMtx)29 b Fg(:)41 b Ff(DRAFT)30 b Fg(Octob)s(er)g(4,)h │ │ │ │ +(2025)p 2796 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 │ │ │ │ v 33 w(SPARSE)p 1300 775 V 32 w(ROWS)p Fo(,)f(an)g(error)g(message)h │ │ │ │ (is)g(prin)m(ted)f(and)g(the)g(program)g(exits.)111 964 │ │ │ │ y(8.)46 b Fn(void)h(SubMtx_sparseColumnsInfo)41 b(\()48 │ │ │ │ @@ -5780,17 +5769,17 @@ │ │ │ │ 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 1063 4 v 1245 100 a Fn(SubMtx)28 │ │ │ │ -b Fg(:)41 b Ff(DRAFT)121 b Fg(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2790 100 V 1063 w Fo(7)227 399 y(column)38 b Fn(jcol)p │ │ │ │ +TeXDict begin 7 6 bop 91 100 1105 4 v 1286 100 a Fn(SubMtx)29 │ │ │ │ +b Fg(:)40 b Ff(DRAFT)121 b Fg(Octob)s(er)31 b(4,)g(2025)p │ │ │ │ +2749 100 V 1105 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 │ │ │ │ @@ -5865,21 +5854,21 @@ │ │ │ │ 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 1063 4 v │ │ │ │ -1245 w Fn(SubMtx)29 b Fg(:)41 b Ff(DRAFT)30 b Fg(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2837 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 │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fo(8)p 136 100 1105 4 v │ │ │ │ +1286 w Fn(SubMtx)29 b Fg(:)41 b Ff(DRAFT)30 b Fg(Octob)s(er)g(4,)h │ │ │ │ +(2025)p 2796 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 │ │ │ │ b Fj(\024)g Fn(jcol)g Fj(\024)f Fn(ncol)o Fo(.)227 786 │ │ │ │ y Ff(Err)-5 b(or)29 b(che)-5 b(cking:)38 b Fo(If)24 b │ │ │ │ Fn(mtx)g Fo(or)h Fn(ppValue)e Fo(is)h Fn(NULL)p Fo(,)g(or)h(if)g │ │ │ │ Fn(irow)f Fo(or)g Fn(jcol)g Fo(is)h(out)g(of)g(range,)i(an)d(error)h │ │ │ │ @@ -5948,17 +5937,17 @@ │ │ │ │ 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 1063 4 v 1245 100 a Fn(SubMtx)28 │ │ │ │ -b Fg(:)41 b Ff(DRAFT)121 b Fg(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2790 100 V 1063 w Fo(9)111 399 y(4.)46 b Fn(void)h │ │ │ │ +TeXDict begin 9 8 bop 91 100 1105 4 v 1286 100 a Fn(SubMtx)29 │ │ │ │ +b Fg(:)40 b Ff(DRAFT)121 b Fg(Octob)s(er)31 b(4,)g(2025)p │ │ │ │ +2749 100 V 1105 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 │ │ │ │ @@ -6040,19 +6029,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 1041 4 │ │ │ │ -v 1223 w Fn(SubMtx)29 b Fg(:)40 b Ff(DRAFT)30 b Fg(F)-8 │ │ │ │ -b(ebruary)31 b(29,)g(2024)p 2860 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 1082 4 │ │ │ │ +v 1264 w Fn(SubMtx)29 b Fg(:)40 b Ff(DRAFT)31 b Fg(Octob)s(er)f(4,)h │ │ │ │ +(2025)p 2819 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 │ │ │ │ @@ -6123,17 +6112,17 @@ │ │ │ │ (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 1041 4 v 1222 100 a Fn(SubMtx)29 │ │ │ │ -b Fg(:)40 b Ff(DRAFT)121 b Fg(F)-8 b(ebruary)31 b(29,)g(2024)p │ │ │ │ -2767 100 V 1041 w Fo(11)227 399 y Ff(Err)-5 b(or)34 b(che)-5 │ │ │ │ +TeXDict begin 11 10 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(4,)h(2025)p │ │ │ │ +2726 100 V 1082 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 │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fo(If)30 b Fn(mtx)g Fo(is)g │ │ │ │ @@ -6191,37 +6180,37 @@ │ │ │ │ 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 1041 │ │ │ │ -4 v 1223 w Fn(SubMtx)29 b Fg(:)40 b Ff(DRAFT)30 b Fg(F)-8 │ │ │ │ -b(ebruary)31 b(29,)g(2024)p 2860 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 y(12.)46 b Fn(void)h(SubMtx_fillColumnZV)42 b(\()48 │ │ │ │ -b(SubMtx)e(*mtx,)g(int)h(jcol,)g(ZV)g(*rowZV)f(\))h(;)227 │ │ │ │ -1273 y Fo(This)26 b(metho)s(d)g(is)g(used)g(for)g(complex)i │ │ │ │ -(submatrices.)39 b(It)26 b(copies)i(the)e(en)m(tries)i(in)e(column)g │ │ │ │ -Fn(jcol)f Fo(of)i(the)g Fn(mtx)227 1386 y Fo(ob)5 b(ject)32 │ │ │ │ -b(in)m(to)f(the)f Fn(colZV)f Fo(v)m(ector)j(ob)5 b(ject.)227 │ │ │ │ -1538 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(colZV)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 1651 y(and)k(the)h(program)f(exits.)66 1843 │ │ │ │ -y(13.)46 b Fn(double)g(SubMtx_maxabs)f(\()i(SubMtx)f(*mtx)h(\))g(;)227 │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fo(12)p 182 100 1082 │ │ │ │ +4 v 1264 w Fn(SubMtx)29 b Fg(:)40 b Ff(DRAFT)31 b Fg(Octob)s(er)f(4,)h │ │ │ │ +(2025)p 2819 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 │ │ │ │ +y(12.)46 b Fn(void)h(SubMtx_fillColumnZV)42 b(\()48 b(SubMtx)e(*mtx,)g │ │ │ │ +(int)h(jcol,)g(ZV)g(*rowZV)f(\))h(;)227 1273 y Fo(This)26 │ │ │ │ +b(metho)s(d)g(is)g(used)g(for)g(complex)i(submatrices.)39 │ │ │ │ +b(It)26 b(copies)i(the)e(en)m(tries)i(in)e(column)g Fn(jcol)f │ │ │ │ +Fo(of)i(the)g Fn(mtx)227 1386 y Fo(ob)5 b(ject)32 b(in)m(to)f(the)f │ │ │ │ +Fn(colZV)f Fo(v)m(ector)j(ob)5 b(ject.)227 1538 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(colZV)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 │ │ │ │ +1651 y(and)k(the)h(program)f(exits.)66 1843 y(13.)46 │ │ │ │ +b Fn(double)g(SubMtx_maxabs)f(\()i(SubMtx)f(*mtx)h(\))g(;)227 │ │ │ │ 1995 y Fo(This)27 b(metho)s(d)g(returns)f(the)h(magnitude)h(of)f(the)h │ │ │ │ (elemen)m(t)h(in)e(the)h(matrix)f(with)g(the)h(largest)h(magnitude.)227 │ │ │ │ 2147 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.)66 2339 y(14.)46 │ │ │ │ b Fn(void)h(SubMtx_zero)e(\()i(SubMtx)f(*mtx)h(\))g(;)227 │ │ │ │ 2491 y Fo(This)30 b(metho)s(d)g(zeros)h(the)f(en)m(tries)h(of)g(the)g │ │ │ │ @@ -6265,17 +6254,17 @@ │ │ │ │ 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 1041 4 v 1222 100 a Fn(SubMtx)29 │ │ │ │ -b Fg(:)40 b Ff(DRAFT)121 b Fg(F)-8 b(ebruary)31 b(29,)g(2024)p │ │ │ │ -2767 100 V 1041 w Fo(13)227 399 y(Note,)40 b(if)c(the)g(m)m(txutation)i │ │ │ │ +TeXDict begin 13 12 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(4,)h(2025)p │ │ │ │ +2726 100 V 1082 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 │ │ │ │ @@ -6344,20 +6333,20 @@ │ │ │ │ (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 1041 │ │ │ │ -4 v 1223 w Fn(SubMtx)29 b Fg(:)40 b Ff(DRAFT)30 b Fg(F)-8 │ │ │ │ -b(ebruary)31 b(29,)g(2024)p 2860 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 │ │ │ │ +TeXDict begin 14 13 bop 0 100 a Fo(14)p 182 100 1082 │ │ │ │ +4 v 1264 w Fn(SubMtx)29 b Fg(:)40 b Ff(DRAFT)31 b Fg(Octob)s(er)f(4,)h │ │ │ │ +(2025)p 2819 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 │ │ │ │ b(>=)h(3)28 b Fo(means)427 1227 y(the)j Fn(SubMtx)e Fo(ob)5 │ │ │ │ b(ject)31 b(is)f(written)h(to)g(the)f(message)i(\014le.)337 │ │ │ │ 1376 y Fi(\210)45 b Fo(The)33 b Fn(msgFile)e Fo(parameter)j(determines) │ │ │ │ @@ -6421,17 +6410,17 @@ │ │ │ │ b(When)40 b(the)g(output)g(\014le)g(is)g(loaded)h(in)m(to)227 │ │ │ │ 5075 y(matlab,)32 b(the)e(last)h(lines)g(to)g(the)g(screen)f(con)m │ │ │ │ (tain)i(the)e(errors.)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 1041 4 v 1222 100 a Fn(SubMtx)29 │ │ │ │ -b Fg(:)40 b Ff(DRAFT)121 b Fg(F)-8 b(ebruary)31 b(29,)g(2024)p │ │ │ │ -2767 100 V 1041 w Fo(15)337 399 y Fi(\210)45 b Fo(The)33 │ │ │ │ +TeXDict begin 15 14 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(4,)h(2025)p │ │ │ │ +2726 100 V 1082 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 │ │ │ │ @@ -6511,20 +6500,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 1041 │ │ │ │ -4 v 1223 w Fn(SubMtx)29 b Fg(:)40 b Ff(DRAFT)30 b Fg(F)-8 │ │ │ │ -b(ebruary)31 b(29,)g(2024)p 2860 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 1082 │ │ │ │ +4 v 1264 w Fn(SubMtx)29 b Fg(:)40 b Ff(DRAFT)31 b Fg(Octob)s(er)f(4,)h │ │ │ │ +(2025)p 2819 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 │ │ │ │ @@ -6603,17 +6592,17 @@ │ │ │ │ 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 1041 4 v 1222 100 a Fn(SubMtx)29 │ │ │ │ -b Fg(:)40 b Ff(DRAFT)121 b Fg(F)-8 b(ebruary)31 b(29,)g(2024)p │ │ │ │ -2767 100 V 1041 w Fo(17)337 399 y Fi(\210)45 b Fo(The)f │ │ │ │ +TeXDict begin 17 16 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(4,)h(2025)p │ │ │ │ +2726 100 V 1082 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 │ │ │ │ @@ -6692,20 +6681,20 @@ │ │ │ │ (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 1041 │ │ │ │ -4 v 1223 w Fn(SubMtx)29 b Fg(:)40 b Ff(DRAFT)30 b Fg(F)-8 │ │ │ │ -b(ebruary)31 b(29,)g(2024)p 2860 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 │ │ │ │ +TeXDict begin 18 17 bop 0 100 a Fo(18)p 182 100 1082 │ │ │ │ +4 v 1264 w Fn(SubMtx)29 b Fg(:)40 b Ff(DRAFT)31 b Fg(Octob)s(er)f(4,)h │ │ │ │ +(2025)p 2819 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 │ │ │ │ 987 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 │ │ │ │ ├── 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 February 29, 2024 │ │ │ │ │ + 2 SubMtx : DRAFT October 4, 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 February 29, 2024 3 │ │ │ │ │ + SubMtx : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 4 SubMtx : DRAFT October 4, 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 February 29, 2024 5 │ │ │ │ │ + SubMtx : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 6 SubMtx : DRAFT October 4, 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 February 29, 2024 7 │ │ │ │ │ + SubMtx : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 8 SubMtx : DRAFT October 4, 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 February 29, 2024 9 │ │ │ │ │ + SubMtx : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 10 SubMtx : DRAFT October 4, 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 February 29, 2024 11 │ │ │ │ │ + SubMtx : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 12 SubMtx : DRAFT October 4, 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 February 29, 2024 13 │ │ │ │ │ + SubMtx : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 14 SubMtx : DRAFT October 4, 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 February 29, 2024 15 │ │ │ │ │ + SubMtx : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 16 SubMtx : DRAFT October 4, 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 February 29, 2024 17 │ │ │ │ │ + SubMtx : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 18 SubMtx : DRAFT October 4, 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 2024.02.29:1858 │ │ │ │ +%DVIPSSource: TeX output 2025.10.04:1734 │ │ │ │ %%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 │ │ │ │ @@ -1778,23 +1778,23 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 50 /two put │ │ │ │ dup 52 /four put │ │ │ │ -dup 57 /nine put │ │ │ │ +dup 53 /five put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 70 /F put │ │ │ │ -dup 97 /a put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ +dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ -dup 117 /u put │ │ │ │ -dup 121 /y put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1968,95 +1968,85 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA647CD0E2539DFAD9604486DCCFA49 │ │ │ │ -AC96130D106A8F8387633622C3809400D6E8FF9D60877C743502E4D211CEBF62 │ │ │ │ -9A6F91045C22D5D20C5FF677D89983D02E5EE26C71A9EAE0E7C52465DA5A149A │ │ │ │ -9B731C27EC8366BC3E841C0CAE49A33DE164A857365B17B09CAD121C47A980CB │ │ │ │ -C75E1030F6C394EDB46C54B46880D2344127B903FB22684C9CAACE6053DC3BFA │ │ │ │ -4E47C565ECAF19C4295A11BD68CA6D45B5738B932BB3690A8C712904C49C1636 │ │ │ │ -A7702075F2FEA8DB3EB3A3C1216BB769DD0BAF4507A18E3052F2C846B0797933 │ │ │ │ -8CE9BB2DB5DFADAF1B0FC3A22BAB82A0D5D290F7AD950013CFA465BE11C1076D │ │ │ │ -5833FF92321FBF90D9229D3BA09DD18EEC44D9FCF8FCF63CC09D2977BFA798B6 │ │ │ │ -47FB047EA6AF69C7DE570176F5B6C0FED74DEDBF7DDF49550DD84BA14AC09423 │ │ │ │ -F70D5B14F0F8588F1E2FFE0DFE0760E77A9E39DEDAC5C5AE3760722C029B916D │ │ │ │ -96A2A7D1DD6A61F90B4B9806314A668EB7A0E107A3527310A240490453CC18D7 │ │ │ │ -3793B4CF3CE13EA332E7F5C2BACF85AC75FE84693B966BB0F6FB9A179A331C4E │ │ │ │ -55E9EF30E2734E44A88E053CD5E650D7E529E94CB7F8B733E68315ACAC5BEFC5 │ │ │ │ -3FE4F585F875310267865679AB381125C31E9AEB7226DC9F18DA80A9DE2F38A4 │ │ │ │ -51B8F9D5B2FBA0F50D53AE6212AFE41466A594F7A303B4E82F1493C0B8D65756 │ │ │ │ -BE6AF2931E5ADA5CE7D51CB5B1EC916C6C6D674808939331CA66F8181DD2B112 │ │ │ │ -1A12198CCCB6BBF1D40C803E794B65241ACE1E0D30CCA1C6F2D3E1415B98726B │ │ │ │ -9BA303BE2C4C276108CC78C093F1CC85CA454CC38535D1DEBFA341D84E8A5DDF │ │ │ │ -D53D8DD0F4A812B5BA63871BEB3BCE93FBC77AD395914E2CD757546C2BE2D641 │ │ │ │ -FDB12258E1E1D10E1B963EABB265F2C8B2547D48963E1AD3B223B666B46915A1 │ │ │ │ -157F5EA0AB8D8411C07AA2EB5D0EF1A1BA6D81C47473A3D3D6287104C7BF61F8 │ │ │ │ -3BDB64995DE96A65BF2B7288C51ADAA3D373A95C40D5240C5FF397551554AA9E │ │ │ │ -C89C7E45AA7738503CB058EF6AD5052CC78E4445C810C250BF25394B8D7DE82E │ │ │ │ -315C9CCD6E1E9150EC79EE0F354C668AE199C1AFF39C67337A86CB932E8D64E9 │ │ │ │ -389FF3CC08B538492DEED017686DBB9BDEA30FE67FB4EBDB3627C16FD15F243A │ │ │ │ -7FDEB310EFC940E57726E94340472F2C452815927ADE21578C959890216BE504 │ │ │ │ -225BE4B4D2E3B19F5E06B5A0B25AF168C3A2B26F599A829F89C16BD2026E8CC9 │ │ │ │ -8FB3CBB830C3E36C099071A70D0B8834FF2C17364EB50D5C71440CC7BFE02321 │ │ │ │ -8C6ECAC2F7EC1BE39077DB0E8B2B251626A71FD038EB2CF1FC254D98C1535CAA │ │ │ │ -A8C987BC266482BD860A333048E1EDB3DD40A6ECD6DA0088AD9B9640202D89AA │ │ │ │ -0BB9A0ADF63491E67F2E97E35942D77E59B9B8AB0ED28B022EE5CD3449FC5B7A │ │ │ │ -19E38845B488F97D155C4312885E29537EAE97719C65845663480CE79DE8F037 │ │ │ │ -68995C0928FE8AFBEE554F01381EE5187578DF5D2542F26F66A599EE8ECC1F68 │ │ │ │ -FBADF3C2BA968C3CEB86675CF9A6CFD736E1422800D270417D497903DE87F2AE │ │ │ │ -938E39E120E9D3079F512E545E0E2616B84E81FE41392184F96818A7C86BF541 │ │ │ │ -F2E67C48CA56DA838C9FA0FAD538073B9F26319140D1F80EEEBCA190DE660A31 │ │ │ │ -457CAC16E92F87449A3734F9EA751588514865B58DC073658C8A857B5398AAC7 │ │ │ │ -3DC11E069996EF74A3189A07630D5DB87C5E028CD193C086B4D0E8BABC4F2393 │ │ │ │ -235EC96091B16C4A6D97DA1BD30A2D2E71F55869223CA66AD12448B668685F6E │ │ │ │ -06E7888D7F20045C662C4F7994CC7E1CE9AAC33A026716AA0551DF12343F0E22 │ │ │ │ -6E9F4B21C90406CC4997601194EF37A973221D1F4D73DD5666BD297F621C92AA │ │ │ │ -E3F698BC1146ADE754C4120EDF5B3E974D75A237E51DB49D52CD6CC7C9E8BD2D │ │ │ │ -E6849DF8F4DBA86C655D0C57CB54836C8A841C1D814F6B493F96ADBFCAD78D3B │ │ │ │ -430C58EF169950851B6A0B46411488B1A6F6974832787A24C0CDDBE27996EFB1 │ │ │ │ -DB341FA34B1DC6238D978D1E1D34AF3FB375ED6DA9C88699F195C88A54622F7C │ │ │ │ -36DAFC663D85660E756733A7E22F20C6A5D91F06087CAD10F7217BD33F343DC6 │ │ │ │ -F5EB9F16FE763672243EE6AE5CB6063A1D64670E1C059DD52134974E27D9D89C │ │ │ │ -BC658FCD814F20703D610C978FDCD6E2AEA31C18D1A310F215B28199F66C87DB │ │ │ │ -3B23980A393E1DD77AFA3045EDB6942505F3CF6204315A14E5B6BF2E96F3BB1F │ │ │ │ -628D24AC1893BC7DAEF3AA63F2116837F31DB90D872CBD9E5C48BCDEE781D20D │ │ │ │ -C6553D2D15F4E8438A9D1C7CEE1B72BD6AA08DC0AFEAF8B4DC1038707EE4A1BF │ │ │ │ -3D84460E60AF90F55002C1D8EBF0700F7EC3EFC944BEA78D0E0536F3AA6D9A84 │ │ │ │ -604A781AC5ACFEB7E681365315EE11E991C03DA431B65B332AD8F83F6F3AE66C │ │ │ │ -1BF434D3793FB5BCC44E44ACFF2855C2770C4AC678C6ACD6EB071974ACF1AE37 │ │ │ │ -D02C1736C62CC205A2F3488448527EFFA379613A8E6A6D134F4BFBAE6127304D │ │ │ │ -576C900A458E32CD42A4674415E03D8EB5742E71B854B3EDFD271AA214436544 │ │ │ │ -D1BCFD52F439298847E1FA258E5D38384FC85BC4EDC6F9E4431621CF763B137B │ │ │ │ -22DB6E3268B3F78881D55EA7C52ABF23FB73C152B06B708084FE1B00CFE72D9D │ │ │ │ -57B62AEE912E63BBD89D4D13CE896735454F1A16C3D9FB6CDF142CCA9F1C0242 │ │ │ │ -46F62109DF30667DA327F7CF6DC19B880C860C69080597FFCB1793313E202D4F │ │ │ │ -120A7C6B052C2EB7597B71B0985D24FDD2D3918393BF720E762C5DBBC2BB1E91 │ │ │ │ -B04560364EFE5B16EB068E0560FB932E0C617CFB95A166388E99AC4CB020F5BC │ │ │ │ -E24BB77352D7C3B21C37D404051A70FFFA0F726C35501A1FBB411F832CE46A2E │ │ │ │ -B424E26BD4 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFD8CDE285A2827F4659E339460ABEF319FE44D7A91E93CA309E9266E03DA │ │ │ │ +735F5DEF3920C01189BB63C2BD7ED0B92EABB481F123641477CDCCAB9751FB7B │ │ │ │ +F67DA7CE6EB134BC10D0228562BA5A6BFE6940907EF030ABF9EC4A8A0DFEF73D │ │ │ │ +3289E8CB4DC37694F5A656A935D92C72B3D82B012F578A27711B161DE9652ADC │ │ │ │ +71C51E743E4E9A7C6CF6FF16C5D65C1F60954C0858B48FAAC4FBB21988E2A934 │ │ │ │ +AC50C097DDF42C416359647D79F830E1430FB9BB803451A6732D1B5CAB817C1B │ │ │ │ +673B3077D9A180F184267E9990C087BCDEBC8EB8B889934DD0EB63C2EBCED4A3 │ │ │ │ +83A0D6A365412CFF610EF7BD5F82B02AA293F1D2F868768CDE9B801C929B4A38 │ │ │ │ +64E20C70BC4041F837AD15423517F7336A067D140A2C7906DC5D45885FFB3B69 │ │ │ │ +724E5B9B138BD15A9359EB25D14BC4193E529D1A49FEB0DC1015BF94CEBBD5E0 │ │ │ │ +EA148B185C53E12BD9FA6DBC097D789A73E832F02F55080D8ED6087F5952EA78 │ │ │ │ +250A4C65CE4C4013554A031446D2092D813C4CB1A605D97A40CF867F656ECD1C │ │ │ │ +C23F80230AD1E449AA8B4007134F71156719206441D92B1A6DD25101ABF69F70 │ │ │ │ +538CCCE216376E1BD6E423986BD4E83B1975B15092D4E19F885672F9E7C02485 │ │ │ │ +E02DA0F4243D324A5983D1D46444E5F6573F699E4F2A3395EF0EB7808B7D4D62 │ │ │ │ +690FD033E93AA553082273636503DA4BBBBFA6D127CE10424DD1DDF4F879305C │ │ │ │ +14F64180E7851D091B3220DFC70CAA44716B8F7F0C6FBEDB167801DED77F9E69 │ │ │ │ +E9B31CD2D8044DB946E511162976C34DE27F2BB974B70509005562A0A21317B7 │ │ │ │ +46D826A31C476C8F9A778F941FF5956BA2D765B1AD0AC4BC7AE1CD8A2A81F039 │ │ │ │ +06EB13EBD099BBDB2EBDB54D459C288EA69FB0018CE9255BBFB08C1F90FF30BD │ │ │ │ +C971DA7FDB193281B8F967F21AB42F13F36085AC9EC0D6B6B448C8F289B0AD70 │ │ │ │ +DB521A4755ECF9CA594741E5C674220C21C265EF3BAE594197B00048C8D4DB73 │ │ │ │ +4AC47B6A86EAC7EECD042C8E23C347F8C9FCB870473C1FBD91C298174BCBF1A9 │ │ │ │ +7B366C570A9A04A433495FBC9FD0FFC22A0E8181424C0F038ED97AD5054B10CC │ │ │ │ +1CD5BA0719DD0B4F4F18932AE87FF8B8C1CF0C7482B7847049761505DCD85146 │ │ │ │ +4EE5CB53993A9449CD05233E961BD49AE92D308E2065D6C6BF038538039AA56A │ │ │ │ +C59D424BE3175427337E16892D3920598D518423E145C6B2DD3881F338845F0D │ │ │ │ +16C47AA0D9C2D6DE99C6A302D567ACD6F98BF38223F1890E099C8F93348FFDAA │ │ │ │ +C2D3440187C8FED87C1A891EF11EFA7168EC47F72AF8BC5BE1B88B1084E704F5 │ │ │ │ +82099F1A79E556D94CC38851C97DC3864945A7470F1389BCF608BADAE45B236D │ │ │ │ +2934A20FFBCF169BF84DF496B07E7F1D9002E62B030337642804403DF7E4B3FF │ │ │ │ +C5A421EE0033BA06C50A041FBFE8F81AFC145664E2976505EB14859CF0377EBA │ │ │ │ +EA604CF8BFB5F9ADB9A7ED56E6F0F919E791D57C7232241C892EAC3E55D2D03B │ │ │ │ +FF43B9DAB7B1D8C6588D6D3503F49E80121E52254431B308752A936E0B51124D │ │ │ │ +C7F23C316BA6FA73E6BC47EB9550003E1393C68360067C094C65C0DD17214FA0 │ │ │ │ +45FF0F9C3E0AE4C81093752D23EA95E163C98EC04873ECE3FB0882567329525C │ │ │ │ +0A3937B16CA72B5EB6D2DC10C1B485C0BA939587AFEBB6D837A40401C666BC1C │ │ │ │ +F3344FBAB3E48BEE18F3AF5CDB33BA63778D373A851333C8C34E2F35AB94E8B4 │ │ │ │ +FF7E62A92ED83B872894E0A17209E14CF61269204A35A4BC8C7EE4B16F19E91F │ │ │ │ +669C4EFCECB187F6C7FAF92B4E14E400C6B3C81679D4A7196D66DB1E897DDA42 │ │ │ │ +47CC2848B46D581A95EEF85AB528E8CDEEB275D1E1FE197A3A08D36406E2DADF │ │ │ │ +A87D817AF18B5525F89B7C2E584F4A1254A1FC71E749999A2152870631A69CB6 │ │ │ │ +666EBD6BB3366A598F6592040D0E82B9D866DF0A76C362E76C2804D108A0C148 │ │ │ │ +51F42E9E0ABD52CC2D02B156B63AFD03313AFC80EACC83DF9B59F05FD798951D │ │ │ │ +FCF5335636DFC6561910ACE0AEC47F74CFD302EB7421D28AAAC8FF82B7CE2B2A │ │ │ │ +340B8BCE09F57BFCBC77F91096D97A85726E68846398C8C9C8D3A65A252AE8FB │ │ │ │ +166750C244963BC61E2236BAAC529FABD6FC774550096374A8DB81B6AF1EA843 │ │ │ │ +27F671C0045D629E3734EF037447C4763514FD1C4AE858A494AFC23A64C82149 │ │ │ │ +F4C0A7023B3865B84FAC2DC88D1553DCEBA3D8FB5DBC1103123F6B8CB5B3A399 │ │ │ │ +B665B26B001BF1E4BFABE42BFF6B02D69FA88D5CBCA5A11D5B48CFB4EAE60558 │ │ │ │ +5FBE254AD3BE01761CD4995E766E172D768621223505FD6AA8F89FC042EB814C │ │ │ │ +34373DAEC4FAAF71C0752F814154C5299F751CE7E0F9C673D2E448D0204C214C │ │ │ │ +C04DC34671FBEF72350FFBA263662E86A0D3795E310153AAF4C8A2623E167E6E │ │ │ │ +1F13A9BA485D5DDFC451D691DBA7C49E20354A7AD79D89F7EDE24F0D5B48B27D │ │ │ │ +568D01EF2555504196C09841F5970D8CF6C5D47FFFCF18AE6B2A485342000AAD │ │ │ │ +1F922FBEF7C98E0965609C89240E7B131A59551F57CD5C92097FCE75F5D2778F │ │ │ │ +F9ACF43A3273551363442C8C539205903A835C744A4AA953545506081D3D231A │ │ │ │ +A140E01F280BC42A3C35EDAD5F6B8CE6E51C68E41CA813710864ED880FCE846C │ │ │ │ +1B66D27CC2DBCDC2B1B96A12490BD76D67A415D4A6595CD9B19D3104A83D2C82 │ │ │ │ +C46DCD2C027F0565EDB83E54FF99498194D3140E55E8EE65EBDEAC5409B5616A │ │ │ │ +73141DA2D581E300A6057F4301A02DD160AB3E55A116313525122D0608816AA8 │ │ │ │ +4712EEF3D6FE8C893DF37D │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3322,16 +3312,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 134[48 3[51 2[36 │ │ │ │ -12[40 2[51 45 26[59 11[25 45 4[45 1[45 1[45 3[25 44[{}13 │ │ │ │ +6[28 58[{}16 90.9091 /CMTI10 rf /Ff 139[35 1[36 2[45 │ │ │ │ +9[40 1[40 51 18[71 20[25 4[45 45 1[45 1[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 │ │ │ │ @@ -3444,57 +3434,56 @@ │ │ │ │ (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 968 4 v │ │ │ │ -1150 w Fh(SubMtxList)27 b Ff(:)41 b Fe(DRAFT)30 b Ff(F)-8 │ │ │ │ -b(ebruary)30 b(29,)i(2024)p 2933 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 1009 4 v │ │ │ │ +1191 w Fh(SubMtxList)27 b Ff(:)41 b Fe(DRAFT)30 b Ff(Octob)s(er)h(4,)g │ │ │ │ +(2025)p 2891 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 │ │ │ │ @@ -3508,65 +3497,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 968 4 v 1149 100 a Fh(SubMtxList)28 │ │ │ │ -b Ff(:)41 b Fe(DRAFT)121 b Ff(F)-8 b(ebruary)30 b(29,)h(2024)p │ │ │ │ -2885 100 V 968 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 1009 4 v 1190 100 a Fh(SubMtxList)28 │ │ │ │ +b Ff(:)41 b Fe(DRAFT)121 b Ff(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2844 100 V 1009 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 │ │ │ │ @@ -3582,27 +3571,27 @@ │ │ │ │ (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 968 4 v │ │ │ │ -1150 w Fh(SubMtxList)27 b Ff(:)41 b Fe(DRAFT)30 b Ff(F)-8 │ │ │ │ -b(ebruary)30 b(29,)i(2024)p 2933 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 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)s(c)m(k)g(unlo)s(c)m(k)m(ed.)47 b(The)32 b(sa)m(v)m(ed)227 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fi(4)p 136 100 1009 4 v │ │ │ │ +1191 w Fh(SubMtxList)27 b Ff(:)41 b Fe(DRAFT)30 b Ff(Octob)s(er)h(4,)g │ │ │ │ +(2025)p 2891 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 │ │ │ │ +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) │ │ │ │ +s(c)m(k)g(unlo)s(c)m(k)m(ed.)47 b(The)32 b(sa)m(v)m(ed)227 │ │ │ │ 888 y(p)s(oin)m(ter)f(is)f(returned.)227 1038 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 1151 │ │ │ │ y(is)h(prin)m(ted)f(and)f(zero)j(is)e(returned.)111 1338 │ │ │ │ y(4.)46 b Fh(void)h(SubMtxList_addObjectToLi)o(st)42 │ │ │ │ b(\()47 b(SubMtxList)e(*list,)1993 1451 y(SubMtx)h(*mtx,)h(int)g(ilist) │ │ │ │ ├── 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 February 29, 2024 │ │ │ │ │ + 2 SubMtxList : DRAFT October 4, 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 February 29, 2024 3 │ │ │ │ │ + SubMtxList : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 4 SubMtxList : DRAFT October 4, 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 2024.02.29:1858 │ │ │ │ +%DVIPSSource: TeX output 2025.10.04:1734 │ │ │ │ %%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 │ │ │ │ @@ -1421,23 +1421,23 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 50 /two put │ │ │ │ dup 52 /four put │ │ │ │ -dup 57 /nine put │ │ │ │ +dup 53 /five put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 70 /F put │ │ │ │ -dup 97 /a put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ +dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ -dup 117 /u put │ │ │ │ -dup 121 /y put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1611,95 +1611,85 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA647CD0E2539DFAD9604486DCCFA49 │ │ │ │ -AC96130D106A8F8387633622C3809400D6E8FF9D60877C743502E4D211CEBF62 │ │ │ │ -9A6F91045C22D5D20C5FF677D89983D02E5EE26C71A9EAE0E7C52465DA5A149A │ │ │ │ -9B731C27EC8366BC3E841C0CAE49A33DE164A857365B17B09CAD121C47A980CB │ │ │ │ -C75E1030F6C394EDB46C54B46880D2344127B903FB22684C9CAACE6053DC3BFA │ │ │ │ -4E47C565ECAF19C4295A11BD68CA6D45B5738B932BB3690A8C712904C49C1636 │ │ │ │ -A7702075F2FEA8DB3EB3A3C1216BB769DD0BAF4507A18E3052F2C846B0797933 │ │ │ │ -8CE9BB2DB5DFADAF1B0FC3A22BAB82A0D5D290F7AD950013CFA465BE11C1076D │ │ │ │ -5833FF92321FBF90D9229D3BA09DD18EEC44D9FCF8FCF63CC09D2977BFA798B6 │ │ │ │ -47FB047EA6AF69C7DE570176F5B6C0FED74DEDBF7DDF49550DD84BA14AC09423 │ │ │ │ -F70D5B14F0F8588F1E2FFE0DFE0760E77A9E39DEDAC5C5AE3760722C029B916D │ │ │ │ -96A2A7D1DD6A61F90B4B9806314A668EB7A0E107A3527310A240490453CC18D7 │ │ │ │ -3793B4CF3CE13EA332E7F5C2BACF85AC75FE84693B966BB0F6FB9A179A331C4E │ │ │ │ -55E9EF30E2734E44A88E053CD5E650D7E529E94CB7F8B733E68315ACAC5BEFC5 │ │ │ │ -3FE4F585F875310267865679AB381125C31E9AEB7226DC9F18DA80A9DE2F38A4 │ │ │ │ -51B8F9D5B2FBA0F50D53AE6212AFE41466A594F7A303B4E82F1493C0B8D65756 │ │ │ │ -BE6AF2931E5ADA5CE7D51CB5B1EC916C6C6D674808939331CA66F8181DD2B112 │ │ │ │ -1A12198CCCB6BBF1D40C803E794B65241ACE1E0D30CCA1C6F2D3E1415B98726B │ │ │ │ -9BA303BE2C4C276108CC78C093F1CC85CA454CC38535D1DEBFA341D84E8A5DDF │ │ │ │ -D53D8DD0F4A812B5BA63871BEB3BCE93FBC77AD395914E2CD757546C2BE2D641 │ │ │ │ -FDB12258E1E1D10E1B963EABB265F2C8B2547D48963E1AD3B223B666B46915A1 │ │ │ │ -157F5EA0AB8D8411C07AA2EB5D0EF1A1BA6D81C47473A3D3D6287104C7BF61F8 │ │ │ │ -3BDB64995DE96A65BF2B7288C51ADAA3D373A95C40D5240C5FF397551554AA9E │ │ │ │ -C89C7E45AA7738503CB058EF6AD5052CC78E4445C810C250BF25394B8D7DE82E │ │ │ │ -315C9CCD6E1E9150EC79EE0F354C668AE199C1AFF39C67337A86CB932E8D64E9 │ │ │ │ -389FF3CC08B538492DEED017686DBB9BDEA30FE67FB4EBDB3627C16FD15F243A │ │ │ │ -7FDEB310EFC940E57726E94340472F2C452815927ADE21578C959890216BE504 │ │ │ │ -225BE4B4D2E3B19F5E06B5A0B25AF168C3A2B26F599A829F89C16BD2026E8CC9 │ │ │ │ -8FB3CBB830C3E36C099071A70D0B8834FF2C17364EB50D5C71440CC7BFE02321 │ │ │ │ -8C6ECAC2F7EC1BE39077DB0E8B2B251626A71FD038EB2CF1FC254D98C1535CAA │ │ │ │ -A8C987BC266482BD860A333048E1EDB3DD40A6ECD6DA0088AD9B9640202D89AA │ │ │ │ -0BB9A0ADF63491E67F2E97E35942D77E59B9B8AB0ED28B022EE5CD3449FC5B7A │ │ │ │ -19E38845B488F97D155C4312885E29537EAE97719C65845663480CE79DE8F037 │ │ │ │ -68995C0928FE8AFBEE554F01381EE5187578DF5D2542F26F66A599EE8ECC1F68 │ │ │ │ -FBADF3C2BA968C3CEB86675CF9A6CFD736E1422800D270417D497903DE87F2AE │ │ │ │ -938E39E120E9D3079F512E545E0E2616B84E81FE41392184F96818A7C86BF541 │ │ │ │ -F2E67C48CA56DA838C9FA0FAD538073B9F26319140D1F80EEEBCA190DE660A31 │ │ │ │ -457CAC16E92F87449A3734F9EA751588514865B58DC073658C8A857B5398AAC7 │ │ │ │ -3DC11E069996EF74A3189A07630D5DB87C5E028CD193C086B4D0E8BABC4F2393 │ │ │ │ -235EC96091B16C4A6D97DA1BD30A2D2E71F55869223CA66AD12448B668685F6E │ │ │ │ -06E7888D7F20045C662C4F7994CC7E1CE9AAC33A026716AA0551DF12343F0E22 │ │ │ │ -6E9F4B21C90406CC4997601194EF37A973221D1F4D73DD5666BD297F621C92AA │ │ │ │ -E3F698BC1146ADE754C4120EDF5B3E974D75A237E51DB49D52CD6CC7C9E8BD2D │ │ │ │ -E6849DF8F4DBA86C655D0C57CB54836C8A841C1D814F6B493F96ADBFCAD78D3B │ │ │ │ -430C58EF169950851B6A0B46411488B1A6F6974832787A24C0CDDBE27996EFB1 │ │ │ │ -DB341FA34B1DC6238D978D1E1D34AF3FB375ED6DA9C88699F195C88A54622F7C │ │ │ │ -36DAFC663D85660E756733A7E22F20C6A5D91F06087CAD10F7217BD33F343DC6 │ │ │ │ -F5EB9F16FE763672243EE6AE5CB6063A1D64670E1C059DD52134974E27D9D89C │ │ │ │ -BC658FCD814F20703D610C978FDCD6E2AEA31C18D1A310F215B28199F66C87DB │ │ │ │ -3B23980A393E1DD77AFA3045EDB6942505F3CF6204315A14E5B6BF2E96F3BB1F │ │ │ │ -628D24AC1893BC7DAEF3AA63F2116837F31DB90D872CBD9E5C48BCDEE781D20D │ │ │ │ -C6553D2D15F4E8438A9D1C7CEE1B72BD6AA08DC0AFEAF8B4DC1038707EE4A1BF │ │ │ │ -3D84460E60AF90F55002C1D8EBF0700F7EC3EFC944BEA78D0E0536F3AA6D9A84 │ │ │ │ -604A781AC5ACFEB7E681365315EE11E991C03DA431B65B332AD8F83F6F3AE66C │ │ │ │ -1BF434D3793FB5BCC44E44ACFF2855C2770C4AC678C6ACD6EB071974ACF1AE37 │ │ │ │ -D02C1736C62CC205A2F3488448527EFFA379613A8E6A6D134F4BFBAE6127304D │ │ │ │ -576C900A458E32CD42A4674415E03D8EB5742E71B854B3EDFD271AA214436544 │ │ │ │ -D1BCFD52F439298847E1FA258E5D38384FC85BC4EDC6F9E4431621CF763B137B │ │ │ │ -22DB6E3268B3F78881D55EA7C52ABF23FB73C152B06B708084FE1B00CFE72D9D │ │ │ │ -57B62AEE912E63BBD89D4D13CE896735454F1A16C3D9FB6CDF142CCA9F1C0242 │ │ │ │ -46F62109DF30667DA327F7CF6DC19B880C860C69080597FFCB1793313E202D4F │ │ │ │ -120A7C6B052C2EB7597B71B0985D24FDD2D3918393BF720E762C5DBBC2BB1E91 │ │ │ │ -B04560364EFE5B16EB068E0560FB932E0C617CFB95A166388E99AC4CB020F5BC │ │ │ │ -E24BB77352D7C3B21C37D404051A70FFFA0F726C35501A1FBB411F832CE46A2E │ │ │ │ -B424E26BD4 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFD8CDE285A2827F4659E339460ABEF319FE44D7A91E93CA309E9266E03DA │ │ │ │ +735F5DEF3920C01189BB63C2BD7ED0B92EABB481F123641477CDCCAB9751FB7B │ │ │ │ +F67DA7CE6EB134BC10D0228562BA5A6BFE6940907EF030ABF9EC4A8A0DFEF73D │ │ │ │ +3289E8CB4DC37694F5A656A935D92C72B3D82B012F578A27711B161DE9652ADC │ │ │ │ +71C51E743E4E9A7C6CF6FF16C5D65C1F60954C0858B48FAAC4FBB21988E2A934 │ │ │ │ +AC50C097DDF42C416359647D79F830E1430FB9BB803451A6732D1B5CAB817C1B │ │ │ │ +673B3077D9A180F184267E9990C087BCDEBC8EB8B889934DD0EB63C2EBCED4A3 │ │ │ │ +83A0D6A365412CFF610EF7BD5F82B02AA293F1D2F868768CDE9B801C929B4A38 │ │ │ │ +64E20C70BC4041F837AD15423517F7336A067D140A2C7906DC5D45885FFB3B69 │ │ │ │ +724E5B9B138BD15A9359EB25D14BC4193E529D1A49FEB0DC1015BF94CEBBD5E0 │ │ │ │ +EA148B185C53E12BD9FA6DBC097D789A73E832F02F55080D8ED6087F5952EA78 │ │ │ │ +250A4C65CE4C4013554A031446D2092D813C4CB1A605D97A40CF867F656ECD1C │ │ │ │ +C23F80230AD1E449AA8B4007134F71156719206441D92B1A6DD25101ABF69F70 │ │ │ │ +538CCCE216376E1BD6E423986BD4E83B1975B15092D4E19F885672F9E7C02485 │ │ │ │ +E02DA0F4243D324A5983D1D46444E5F6573F699E4F2A3395EF0EB7808B7D4D62 │ │ │ │ +690FD033E93AA553082273636503DA4BBBBFA6D127CE10424DD1DDF4F879305C │ │ │ │ +14F64180E7851D091B3220DFC70CAA44716B8F7F0C6FBEDB167801DED77F9E69 │ │ │ │ +E9B31CD2D8044DB946E511162976C34DE27F2BB974B70509005562A0A21317B7 │ │ │ │ +46D826A31C476C8F9A778F941FF5956BA2D765B1AD0AC4BC7AE1CD8A2A81F039 │ │ │ │ +06EB13EBD099BBDB2EBDB54D459C288EA69FB0018CE9255BBFB08C1F90FF30BD │ │ │ │ +C971DA7FDB193281B8F967F21AB42F13F36085AC9EC0D6B6B448C8F289B0AD70 │ │ │ │ +DB521A4755ECF9CA594741E5C674220C21C265EF3BAE594197B00048C8D4DB73 │ │ │ │ +4AC47B6A86EAC7EECD042C8E23C347F8C9FCB870473C1FBD91C298174BCBF1A9 │ │ │ │ +7B366C570A9A04A433495FBC9FD0FFC22A0E8181424C0F038ED97AD5054B10CC │ │ │ │ +1CD5BA0719DD0B4F4F18932AE87FF8B8C1CF0C7482B7847049761505DCD85146 │ │ │ │ +4EE5CB53993A9449CD05233E961BD49AE92D308E2065D6C6BF038538039AA56A │ │ │ │ +C59D424BE3175427337E16892D3920598D518423E145C6B2DD3881F338845F0D │ │ │ │ +16C47AA0D9C2D6DE99C6A302D567ACD6F98BF38223F1890E099C8F93348FFDAA │ │ │ │ +C2D3440187C8FED87C1A891EF11EFA7168EC47F72AF8BC5BE1B88B1084E704F5 │ │ │ │ +82099F1A79E556D94CC38851C97DC3864945A7470F1389BCF608BADAE45B236D │ │ │ │ +2934A20FFBCF169BF84DF496B07E7F1D9002E62B030337642804403DF7E4B3FF │ │ │ │ +C5A421EE0033BA06C50A041FBFE8F81AFC145664E2976505EB14859CF0377EBA │ │ │ │ +EA604CF8BFB5F9ADB9A7ED56E6F0F919E791D57C7232241C892EAC3E55D2D03B │ │ │ │ +FF43B9DAB7B1D8C6588D6D3503F49E80121E52254431B308752A936E0B51124D │ │ │ │ +C7F23C316BA6FA73E6BC47EB9550003E1393C68360067C094C65C0DD17214FA0 │ │ │ │ +45FF0F9C3E0AE4C81093752D23EA95E163C98EC04873ECE3FB0882567329525C │ │ │ │ +0A3937B16CA72B5EB6D2DC10C1B485C0BA939587AFEBB6D837A40401C666BC1C │ │ │ │ +F3344FBAB3E48BEE18F3AF5CDB33BA63778D373A851333C8C34E2F35AB94E8B4 │ │ │ │ +FF7E62A92ED83B872894E0A17209E14CF61269204A35A4BC8C7EE4B16F19E91F │ │ │ │ +669C4EFCECB187F6C7FAF92B4E14E400C6B3C81679D4A7196D66DB1E897DDA42 │ │ │ │ +47CC2848B46D581A95EEF85AB528E8CDEEB275D1E1FE197A3A08D36406E2DADF │ │ │ │ +A87D817AF18B5525F89B7C2E584F4A1254A1FC71E749999A2152870631A69CB6 │ │ │ │ +666EBD6BB3366A598F6592040D0E82B9D866DF0A76C362E76C2804D108A0C148 │ │ │ │ +51F42E9E0ABD52CC2D02B156B63AFD03313AFC80EACC83DF9B59F05FD798951D │ │ │ │ +FCF5335636DFC6561910ACE0AEC47F74CFD302EB7421D28AAAC8FF82B7CE2B2A │ │ │ │ +340B8BCE09F57BFCBC77F91096D97A85726E68846398C8C9C8D3A65A252AE8FB │ │ │ │ +166750C244963BC61E2236BAAC529FABD6FC774550096374A8DB81B6AF1EA843 │ │ │ │ +27F671C0045D629E3734EF037447C4763514FD1C4AE858A494AFC23A64C82149 │ │ │ │ +F4C0A7023B3865B84FAC2DC88D1553DCEBA3D8FB5DBC1103123F6B8CB5B3A399 │ │ │ │ +B665B26B001BF1E4BFABE42BFF6B02D69FA88D5CBCA5A11D5B48CFB4EAE60558 │ │ │ │ +5FBE254AD3BE01761CD4995E766E172D768621223505FD6AA8F89FC042EB814C │ │ │ │ +34373DAEC4FAAF71C0752F814154C5299F751CE7E0F9C673D2E448D0204C214C │ │ │ │ +C04DC34671FBEF72350FFBA263662E86A0D3795E310153AAF4C8A2623E167E6E │ │ │ │ +1F13A9BA485D5DDFC451D691DBA7C49E20354A7AD79D89F7EDE24F0D5B48B27D │ │ │ │ +568D01EF2555504196C09841F5970D8CF6C5D47FFFCF18AE6B2A485342000AAD │ │ │ │ +1F922FBEF7C98E0965609C89240E7B131A59551F57CD5C92097FCE75F5D2778F │ │ │ │ +F9ACF43A3273551363442C8C539205903A835C744A4AA953545506081D3D231A │ │ │ │ +A140E01F280BC42A3C35EDAD5F6B8CE6E51C68E41CA813710864ED880FCE846C │ │ │ │ +1B66D27CC2DBCDC2B1B96A12490BD76D67A415D4A6595CD9B19D3104A83D2C82 │ │ │ │ +C46DCD2C027F0565EDB83E54FF99498194D3140E55E8EE65EBDEAC5409B5616A │ │ │ │ +73141DA2D581E300A6057F4301A02DD160AB3E55A116313525122D0608816AA8 │ │ │ │ +4712EEF3D6FE8C893DF37D │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3867,16 +3857,16 @@ │ │ │ │ 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 134[48 │ │ │ │ -3[51 2[36 12[40 2[51 45 26[59 11[25 45 4[45 1[45 1[45 │ │ │ │ +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 4[45 45 1[45 1[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 │ │ │ │ @@ -4012,26 +4002,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 896 4 v │ │ │ │ -1078 w Fj(SubMtxManager)27 b Fe(:)41 b Fh(DRAFT)30 b │ │ │ │ -Fe(F)-8 b(ebruary)30 b(29,)h(2024)p 3004 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 938 4 v │ │ │ │ +1119 w Fj(SubMtxManager)27 b Fe(:)41 b Fh(DRAFT)30 b │ │ │ │ +Fe(Octob)s(er)g(4,)h(2025)p 2963 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 │ │ │ │ @@ -4071,17 +4061,17 @@ │ │ │ │ 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 896 4 v 1078 100 a Fj(SubMtxManager)26 │ │ │ │ -b Fe(:)41 b Fh(DRAFT)121 b Fe(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2957 100 V 896 w Fk(3)111 399 y(2.)46 b Fj(void)h │ │ │ │ +TeXDict begin 3 2 bop 91 100 938 4 v 1119 100 a Fj(SubMtxManager)27 │ │ │ │ +b Fe(:)40 b Fh(DRAFT)121 b Fe(Octob)s(er)31 b(4,)g(2025)p │ │ │ │ +2916 100 V 938 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 │ │ │ │ @@ -4144,18 +4134,18 @@ │ │ │ │ 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 896 4 v │ │ │ │ -1078 w Fj(SubMtxManager)27 b Fe(:)41 b Fh(DRAFT)30 b │ │ │ │ -Fe(F)-8 b(ebruary)30 b(29,)h(2024)p 3004 100 V 111 399 │ │ │ │ -a Fk(3.)46 b Fj(void)h(SubMtxManager_releaseLis)o(tOfO)o(bje)o(cts)41 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fk(4)p 136 100 938 4 v │ │ │ │ +1119 w Fj(SubMtxManager)27 b Fe(:)41 b Fh(DRAFT)30 b │ │ │ │ +Fe(Octob)s(er)g(4,)h(2025)p 2963 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 │ │ │ │ ├── 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 February 29, 2024 │ │ │ │ │ + 2 SubMtxManager : DRAFT October 4, 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 February 29, 2024 3 │ │ │ │ │ + SubMtxManager : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 4 SubMtxManager : DRAFT October 4, 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 2024.02.29:1858 │ │ │ │ +%DVIPSSource: TeX output 2025.10.04:1734 │ │ │ │ %%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 │ │ │ │ @@ -1008,23 +1008,23 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 50 /two put │ │ │ │ dup 52 /four put │ │ │ │ -dup 57 /nine put │ │ │ │ +dup 53 /five put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 70 /F put │ │ │ │ -dup 97 /a put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ +dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ -dup 117 /u put │ │ │ │ -dup 121 /y put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -1198,95 +1198,85 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA647CD0E2539DFAD9604486DCCFA49 │ │ │ │ -AC96130D106A8F8387633622C3809400D6E8FF9D60877C743502E4D211CEBF62 │ │ │ │ -9A6F91045C22D5D20C5FF677D89983D02E5EE26C71A9EAE0E7C52465DA5A149A │ │ │ │ -9B731C27EC8366BC3E841C0CAE49A33DE164A857365B17B09CAD121C47A980CB │ │ │ │ -C75E1030F6C394EDB46C54B46880D2344127B903FB22684C9CAACE6053DC3BFA │ │ │ │ -4E47C565ECAF19C4295A11BD68CA6D45B5738B932BB3690A8C712904C49C1636 │ │ │ │ -A7702075F2FEA8DB3EB3A3C1216BB769DD0BAF4507A18E3052F2C846B0797933 │ │ │ │ -8CE9BB2DB5DFADAF1B0FC3A22BAB82A0D5D290F7AD950013CFA465BE11C1076D │ │ │ │ -5833FF92321FBF90D9229D3BA09DD18EEC44D9FCF8FCF63CC09D2977BFA798B6 │ │ │ │ -47FB047EA6AF69C7DE570176F5B6C0FED74DEDBF7DDF49550DD84BA14AC09423 │ │ │ │ -F70D5B14F0F8588F1E2FFE0DFE0760E77A9E39DEDAC5C5AE3760722C029B916D │ │ │ │ -96A2A7D1DD6A61F90B4B9806314A668EB7A0E107A3527310A240490453CC18D7 │ │ │ │ -3793B4CF3CE13EA332E7F5C2BACF85AC75FE84693B966BB0F6FB9A179A331C4E │ │ │ │ -55E9EF30E2734E44A88E053CD5E650D7E529E94CB7F8B733E68315ACAC5BEFC5 │ │ │ │ -3FE4F585F875310267865679AB381125C31E9AEB7226DC9F18DA80A9DE2F38A4 │ │ │ │ -51B8F9D5B2FBA0F50D53AE6212AFE41466A594F7A303B4E82F1493C0B8D65756 │ │ │ │ -BE6AF2931E5ADA5CE7D51CB5B1EC916C6C6D674808939331CA66F8181DD2B112 │ │ │ │ -1A12198CCCB6BBF1D40C803E794B65241ACE1E0D30CCA1C6F2D3E1415B98726B │ │ │ │ -9BA303BE2C4C276108CC78C093F1CC85CA454CC38535D1DEBFA341D84E8A5DDF │ │ │ │ -D53D8DD0F4A812B5BA63871BEB3BCE93FBC77AD395914E2CD757546C2BE2D641 │ │ │ │ -FDB12258E1E1D10E1B963EABB265F2C8B2547D48963E1AD3B223B666B46915A1 │ │ │ │ -157F5EA0AB8D8411C07AA2EB5D0EF1A1BA6D81C47473A3D3D6287104C7BF61F8 │ │ │ │ -3BDB64995DE96A65BF2B7288C51ADAA3D373A95C40D5240C5FF397551554AA9E │ │ │ │ -C89C7E45AA7738503CB058EF6AD5052CC78E4445C810C250BF25394B8D7DE82E │ │ │ │ -315C9CCD6E1E9150EC79EE0F354C668AE199C1AFF39C67337A86CB932E8D64E9 │ │ │ │ -389FF3CC08B538492DEED017686DBB9BDEA30FE67FB4EBDB3627C16FD15F243A │ │ │ │ -7FDEB310EFC940E57726E94340472F2C452815927ADE21578C959890216BE504 │ │ │ │ -225BE4B4D2E3B19F5E06B5A0B25AF168C3A2B26F599A829F89C16BD2026E8CC9 │ │ │ │ -8FB3CBB830C3E36C099071A70D0B8834FF2C17364EB50D5C71440CC7BFE02321 │ │ │ │ -8C6ECAC2F7EC1BE39077DB0E8B2B251626A71FD038EB2CF1FC254D98C1535CAA │ │ │ │ -A8C987BC266482BD860A333048E1EDB3DD40A6ECD6DA0088AD9B9640202D89AA │ │ │ │ -0BB9A0ADF63491E67F2E97E35942D77E59B9B8AB0ED28B022EE5CD3449FC5B7A │ │ │ │ -19E38845B488F97D155C4312885E29537EAE97719C65845663480CE79DE8F037 │ │ │ │ -68995C0928FE8AFBEE554F01381EE5187578DF5D2542F26F66A599EE8ECC1F68 │ │ │ │ -FBADF3C2BA968C3CEB86675CF9A6CFD736E1422800D270417D497903DE87F2AE │ │ │ │ -938E39E120E9D3079F512E545E0E2616B84E81FE41392184F96818A7C86BF541 │ │ │ │ -F2E67C48CA56DA838C9FA0FAD538073B9F26319140D1F80EEEBCA190DE660A31 │ │ │ │ -457CAC16E92F87449A3734F9EA751588514865B58DC073658C8A857B5398AAC7 │ │ │ │ -3DC11E069996EF74A3189A07630D5DB87C5E028CD193C086B4D0E8BABC4F2393 │ │ │ │ -235EC96091B16C4A6D97DA1BD30A2D2E71F55869223CA66AD12448B668685F6E │ │ │ │ -06E7888D7F20045C662C4F7994CC7E1CE9AAC33A026716AA0551DF12343F0E22 │ │ │ │ -6E9F4B21C90406CC4997601194EF37A973221D1F4D73DD5666BD297F621C92AA │ │ │ │ -E3F698BC1146ADE754C4120EDF5B3E974D75A237E51DB49D52CD6CC7C9E8BD2D │ │ │ │ -E6849DF8F4DBA86C655D0C57CB54836C8A841C1D814F6B493F96ADBFCAD78D3B │ │ │ │ -430C58EF169950851B6A0B46411488B1A6F6974832787A24C0CDDBE27996EFB1 │ │ │ │ -DB341FA34B1DC6238D978D1E1D34AF3FB375ED6DA9C88699F195C88A54622F7C │ │ │ │ -36DAFC663D85660E756733A7E22F20C6A5D91F06087CAD10F7217BD33F343DC6 │ │ │ │ -F5EB9F16FE763672243EE6AE5CB6063A1D64670E1C059DD52134974E27D9D89C │ │ │ │ -BC658FCD814F20703D610C978FDCD6E2AEA31C18D1A310F215B28199F66C87DB │ │ │ │ -3B23980A393E1DD77AFA3045EDB6942505F3CF6204315A14E5B6BF2E96F3BB1F │ │ │ │ -628D24AC1893BC7DAEF3AA63F2116837F31DB90D872CBD9E5C48BCDEE781D20D │ │ │ │ -C6553D2D15F4E8438A9D1C7CEE1B72BD6AA08DC0AFEAF8B4DC1038707EE4A1BF │ │ │ │ -3D84460E60AF90F55002C1D8EBF0700F7EC3EFC944BEA78D0E0536F3AA6D9A84 │ │ │ │ -604A781AC5ACFEB7E681365315EE11E991C03DA431B65B332AD8F83F6F3AE66C │ │ │ │ -1BF434D3793FB5BCC44E44ACFF2855C2770C4AC678C6ACD6EB071974ACF1AE37 │ │ │ │ -D02C1736C62CC205A2F3488448527EFFA379613A8E6A6D134F4BFBAE6127304D │ │ │ │ -576C900A458E32CD42A4674415E03D8EB5742E71B854B3EDFD271AA214436544 │ │ │ │ -D1BCFD52F439298847E1FA258E5D38384FC85BC4EDC6F9E4431621CF763B137B │ │ │ │ -22DB6E3268B3F78881D55EA7C52ABF23FB73C152B06B708084FE1B00CFE72D9D │ │ │ │ -57B62AEE912E63BBD89D4D13CE896735454F1A16C3D9FB6CDF142CCA9F1C0242 │ │ │ │ -46F62109DF30667DA327F7CF6DC19B880C860C69080597FFCB1793313E202D4F │ │ │ │ -120A7C6B052C2EB7597B71B0985D24FDD2D3918393BF720E762C5DBBC2BB1E91 │ │ │ │ -B04560364EFE5B16EB068E0560FB932E0C617CFB95A166388E99AC4CB020F5BC │ │ │ │ -E24BB77352D7C3B21C37D404051A70FFFA0F726C35501A1FBB411F832CE46A2E │ │ │ │ -B424E26BD4 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFD8CDE285A2827F4659E339460ABEF319FE44D7A91E93CA309E9266E03DA │ │ │ │ +735F5DEF3920C01189BB63C2BD7ED0B92EABB481F123641477CDCCAB9751FB7B │ │ │ │ +F67DA7CE6EB134BC10D0228562BA5A6BFE6940907EF030ABF9EC4A8A0DFEF73D │ │ │ │ +3289E8CB4DC37694F5A656A935D92C72B3D82B012F578A27711B161DE9652ADC │ │ │ │ +71C51E743E4E9A7C6CF6FF16C5D65C1F60954C0858B48FAAC4FBB21988E2A934 │ │ │ │ +AC50C097DDF42C416359647D79F830E1430FB9BB803451A6732D1B5CAB817C1B │ │ │ │ +673B3077D9A180F184267E9990C087BCDEBC8EB8B889934DD0EB63C2EBCED4A3 │ │ │ │ +83A0D6A365412CFF610EF7BD5F82B02AA293F1D2F868768CDE9B801C929B4A38 │ │ │ │ +64E20C70BC4041F837AD15423517F7336A067D140A2C7906DC5D45885FFB3B69 │ │ │ │ +724E5B9B138BD15A9359EB25D14BC4193E529D1A49FEB0DC1015BF94CEBBD5E0 │ │ │ │ +EA148B185C53E12BD9FA6DBC097D789A73E832F02F55080D8ED6087F5952EA78 │ │ │ │ +250A4C65CE4C4013554A031446D2092D813C4CB1A605D97A40CF867F656ECD1C │ │ │ │ +C23F80230AD1E449AA8B4007134F71156719206441D92B1A6DD25101ABF69F70 │ │ │ │ +538CCCE216376E1BD6E423986BD4E83B1975B15092D4E19F885672F9E7C02485 │ │ │ │ +E02DA0F4243D324A5983D1D46444E5F6573F699E4F2A3395EF0EB7808B7D4D62 │ │ │ │ +690FD033E93AA553082273636503DA4BBBBFA6D127CE10424DD1DDF4F879305C │ │ │ │ +14F64180E7851D091B3220DFC70CAA44716B8F7F0C6FBEDB167801DED77F9E69 │ │ │ │ +E9B31CD2D8044DB946E511162976C34DE27F2BB974B70509005562A0A21317B7 │ │ │ │ +46D826A31C476C8F9A778F941FF5956BA2D765B1AD0AC4BC7AE1CD8A2A81F039 │ │ │ │ +06EB13EBD099BBDB2EBDB54D459C288EA69FB0018CE9255BBFB08C1F90FF30BD │ │ │ │ +C971DA7FDB193281B8F967F21AB42F13F36085AC9EC0D6B6B448C8F289B0AD70 │ │ │ │ +DB521A4755ECF9CA594741E5C674220C21C265EF3BAE594197B00048C8D4DB73 │ │ │ │ +4AC47B6A86EAC7EECD042C8E23C347F8C9FCB870473C1FBD91C298174BCBF1A9 │ │ │ │ +7B366C570A9A04A433495FBC9FD0FFC22A0E8181424C0F038ED97AD5054B10CC │ │ │ │ +1CD5BA0719DD0B4F4F18932AE87FF8B8C1CF0C7482B7847049761505DCD85146 │ │ │ │ +4EE5CB53993A9449CD05233E961BD49AE92D308E2065D6C6BF038538039AA56A │ │ │ │ +C59D424BE3175427337E16892D3920598D518423E145C6B2DD3881F338845F0D │ │ │ │ +16C47AA0D9C2D6DE99C6A302D567ACD6F98BF38223F1890E099C8F93348FFDAA │ │ │ │ +C2D3440187C8FED87C1A891EF11EFA7168EC47F72AF8BC5BE1B88B1084E704F5 │ │ │ │ +82099F1A79E556D94CC38851C97DC3864945A7470F1389BCF608BADAE45B236D │ │ │ │ +2934A20FFBCF169BF84DF496B07E7F1D9002E62B030337642804403DF7E4B3FF │ │ │ │ +C5A421EE0033BA06C50A041FBFE8F81AFC145664E2976505EB14859CF0377EBA │ │ │ │ +EA604CF8BFB5F9ADB9A7ED56E6F0F919E791D57C7232241C892EAC3E55D2D03B │ │ │ │ +FF43B9DAB7B1D8C6588D6D3503F49E80121E52254431B308752A936E0B51124D │ │ │ │ +C7F23C316BA6FA73E6BC47EB9550003E1393C68360067C094C65C0DD17214FA0 │ │ │ │ +45FF0F9C3E0AE4C81093752D23EA95E163C98EC04873ECE3FB0882567329525C │ │ │ │ +0A3937B16CA72B5EB6D2DC10C1B485C0BA939587AFEBB6D837A40401C666BC1C │ │ │ │ +F3344FBAB3E48BEE18F3AF5CDB33BA63778D373A851333C8C34E2F35AB94E8B4 │ │ │ │ +FF7E62A92ED83B872894E0A17209E14CF61269204A35A4BC8C7EE4B16F19E91F │ │ │ │ +669C4EFCECB187F6C7FAF92B4E14E400C6B3C81679D4A7196D66DB1E897DDA42 │ │ │ │ +47CC2848B46D581A95EEF85AB528E8CDEEB275D1E1FE197A3A08D36406E2DADF │ │ │ │ +A87D817AF18B5525F89B7C2E584F4A1254A1FC71E749999A2152870631A69CB6 │ │ │ │ +666EBD6BB3366A598F6592040D0E82B9D866DF0A76C362E76C2804D108A0C148 │ │ │ │ +51F42E9E0ABD52CC2D02B156B63AFD03313AFC80EACC83DF9B59F05FD798951D │ │ │ │ +FCF5335636DFC6561910ACE0AEC47F74CFD302EB7421D28AAAC8FF82B7CE2B2A │ │ │ │ +340B8BCE09F57BFCBC77F91096D97A85726E68846398C8C9C8D3A65A252AE8FB │ │ │ │ +166750C244963BC61E2236BAAC529FABD6FC774550096374A8DB81B6AF1EA843 │ │ │ │ +27F671C0045D629E3734EF037447C4763514FD1C4AE858A494AFC23A64C82149 │ │ │ │ +F4C0A7023B3865B84FAC2DC88D1553DCEBA3D8FB5DBC1103123F6B8CB5B3A399 │ │ │ │ +B665B26B001BF1E4BFABE42BFF6B02D69FA88D5CBCA5A11D5B48CFB4EAE60558 │ │ │ │ +5FBE254AD3BE01761CD4995E766E172D768621223505FD6AA8F89FC042EB814C │ │ │ │ +34373DAEC4FAAF71C0752F814154C5299F751CE7E0F9C673D2E448D0204C214C │ │ │ │ +C04DC34671FBEF72350FFBA263662E86A0D3795E310153AAF4C8A2623E167E6E │ │ │ │ +1F13A9BA485D5DDFC451D691DBA7C49E20354A7AD79D89F7EDE24F0D5B48B27D │ │ │ │ +568D01EF2555504196C09841F5970D8CF6C5D47FFFCF18AE6B2A485342000AAD │ │ │ │ +1F922FBEF7C98E0965609C89240E7B131A59551F57CD5C92097FCE75F5D2778F │ │ │ │ +F9ACF43A3273551363442C8C539205903A835C744A4AA953545506081D3D231A │ │ │ │ +A140E01F280BC42A3C35EDAD5F6B8CE6E51C68E41CA813710864ED880FCE846C │ │ │ │ +1B66D27CC2DBCDC2B1B96A12490BD76D67A415D4A6595CD9B19D3104A83D2C82 │ │ │ │ +C46DCD2C027F0565EDB83E54FF99498194D3140E55E8EE65EBDEAC5409B5616A │ │ │ │ +73141DA2D581E300A6057F4301A02DD160AB3E55A116313525122D0608816AA8 │ │ │ │ +4712EEF3D6FE8C893DF37D │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3968,16 +3958,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 134[48 3[51 2[36 12[40 2[51 45 26[59 11[25 45 │ │ │ │ -4[45 1[45 1[45 3[25 44[{}13 90.9091 /CMSL10 rf /Fd 134[62 │ │ │ │ +rf /Fc 139[35 1[36 2[45 9[40 1[40 51 18[71 20[25 4[45 │ │ │ │ +45 1[45 1[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 │ │ │ │ @@ -4065,22 +4055,21 @@ │ │ │ │ (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 1040 4 v │ │ │ │ -1221 w Fj(SymbFac)29 b Fc(:)40 b Fi(DRAFT)31 b Fc(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2861 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 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fk(2)p 136 100 1081 4 v │ │ │ │ +1263 w Fj(SymbFac)28 b Fc(:)41 b Fi(DRAFT)30 b Fc(Octob)s(er)g(4,)h │ │ │ │ +(2025)p 2820 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) │ │ │ │ e(external)227 974 y(v)m(ertices)25 b(for)d(fron)m(t)h │ │ │ │ Fj(ilist)p Fk(.)36 b(If)22 b(the)h(input)f Fj(graph)f │ │ │ │ Fk(is)h(a)h(compressed)g(graph,)g(then)g(the)f(lists)i(of)e(compressed) │ │ │ │ 227 1087 y(v)m(ertices)39 b(mak)m(e)g(little)g(sense;)i(they)d(m)m(ust) │ │ │ │ @@ -4160,17 +4149,17 @@ │ │ │ │ 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 1040 4 v 1221 100 a Fj(SymbFac)28 │ │ │ │ -b Fc(:)41 b Fi(DRAFT)121 b Fc(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2814 100 V 1040 w Fk(3)337 399 y Fa(\210)45 b Fk(The)30 │ │ │ │ +TeXDict begin 3 2 bop 91 100 1081 4 v 1262 100 a Fj(SymbFac)28 │ │ │ │ +b Fc(:)41 b Fi(DRAFT)121 b Fc(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2772 100 V 1081 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 │ │ │ │ @@ -4251,21 +4240,21 @@ │ │ │ │ (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 1040 4 v │ │ │ │ -1221 w Fj(SymbFac)29 b Fc(:)40 b Fi(DRAFT)31 b Fc(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2861 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 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fk(4)p 136 100 1081 4 v │ │ │ │ +1263 w Fj(SymbFac)28 b Fc(:)41 b Fi(DRAFT)30 b Fc(Octob)s(er)g(4,)h │ │ │ │ +(2025)p 2820 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 │ │ │ │ Fk(\),)f(or)h(a)h(binary)f(\014le)g(\(if)h Fj(outETreeFile)c │ │ │ │ Fk(is)j(of)h(the)f(form)g Fj(*.etreeb)p Fk(\).)337 883 │ │ │ │ y Fa(\210)45 b Fk(The)h Fj(outIVfile)f Fk(parameter)i(is)g(the)f │ │ │ │ ├── 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 February 29, 2024 │ │ │ │ │ + 2 SymbFac : DRAFT October 4, 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 February 29, 2024 3 │ │ │ │ │ + SymbFac : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 4 SymbFac : DRAFT October 4, 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 2024.02.29:1858 │ │ │ │ +%DVIPSSource: TeX output 2025.10.04:1734 │ │ │ │ %%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 │ │ │ │ @@ -2229,23 +2229,23 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 50 /two put │ │ │ │ dup 52 /four put │ │ │ │ -dup 57 /nine put │ │ │ │ +dup 53 /five put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 70 /F put │ │ │ │ -dup 97 /a put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ +dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ -dup 117 /u put │ │ │ │ -dup 121 /y put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -2419,95 +2419,85 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA647CD0E2539DFAD9604486DCCFA49 │ │ │ │ -AC96130D106A8F8387633622C3809400D6E8FF9D60877C743502E4D211CEBF62 │ │ │ │ -9A6F91045C22D5D20C5FF677D89983D02E5EE26C71A9EAE0E7C52465DA5A149A │ │ │ │ -9B731C27EC8366BC3E841C0CAE49A33DE164A857365B17B09CAD121C47A980CB │ │ │ │ -C75E1030F6C394EDB46C54B46880D2344127B903FB22684C9CAACE6053DC3BFA │ │ │ │ -4E47C565ECAF19C4295A11BD68CA6D45B5738B932BB3690A8C712904C49C1636 │ │ │ │ -A7702075F2FEA8DB3EB3A3C1216BB769DD0BAF4507A18E3052F2C846B0797933 │ │ │ │ -8CE9BB2DB5DFADAF1B0FC3A22BAB82A0D5D290F7AD950013CFA465BE11C1076D │ │ │ │ -5833FF92321FBF90D9229D3BA09DD18EEC44D9FCF8FCF63CC09D2977BFA798B6 │ │ │ │ -47FB047EA6AF69C7DE570176F5B6C0FED74DEDBF7DDF49550DD84BA14AC09423 │ │ │ │ -F70D5B14F0F8588F1E2FFE0DFE0760E77A9E39DEDAC5C5AE3760722C029B916D │ │ │ │ -96A2A7D1DD6A61F90B4B9806314A668EB7A0E107A3527310A240490453CC18D7 │ │ │ │ -3793B4CF3CE13EA332E7F5C2BACF85AC75FE84693B966BB0F6FB9A179A331C4E │ │ │ │ -55E9EF30E2734E44A88E053CD5E650D7E529E94CB7F8B733E68315ACAC5BEFC5 │ │ │ │ -3FE4F585F875310267865679AB381125C31E9AEB7226DC9F18DA80A9DE2F38A4 │ │ │ │ -51B8F9D5B2FBA0F50D53AE6212AFE41466A594F7A303B4E82F1493C0B8D65756 │ │ │ │ -BE6AF2931E5ADA5CE7D51CB5B1EC916C6C6D674808939331CA66F8181DD2B112 │ │ │ │ -1A12198CCCB6BBF1D40C803E794B65241ACE1E0D30CCA1C6F2D3E1415B98726B │ │ │ │ -9BA303BE2C4C276108CC78C093F1CC85CA454CC38535D1DEBFA341D84E8A5DDF │ │ │ │ -D53D8DD0F4A812B5BA63871BEB3BCE93FBC77AD395914E2CD757546C2BE2D641 │ │ │ │ -FDB12258E1E1D10E1B963EABB265F2C8B2547D48963E1AD3B223B666B46915A1 │ │ │ │ -157F5EA0AB8D8411C07AA2EB5D0EF1A1BA6D81C47473A3D3D6287104C7BF61F8 │ │ │ │ -3BDB64995DE96A65BF2B7288C51ADAA3D373A95C40D5240C5FF397551554AA9E │ │ │ │ -C89C7E45AA7738503CB058EF6AD5052CC78E4445C810C250BF25394B8D7DE82E │ │ │ │ -315C9CCD6E1E9150EC79EE0F354C668AE199C1AFF39C67337A86CB932E8D64E9 │ │ │ │ -389FF3CC08B538492DEED017686DBB9BDEA30FE67FB4EBDB3627C16FD15F243A │ │ │ │ -7FDEB310EFC940E57726E94340472F2C452815927ADE21578C959890216BE504 │ │ │ │ -225BE4B4D2E3B19F5E06B5A0B25AF168C3A2B26F599A829F89C16BD2026E8CC9 │ │ │ │ -8FB3CBB830C3E36C099071A70D0B8834FF2C17364EB50D5C71440CC7BFE02321 │ │ │ │ -8C6ECAC2F7EC1BE39077DB0E8B2B251626A71FD038EB2CF1FC254D98C1535CAA │ │ │ │ -A8C987BC266482BD860A333048E1EDB3DD40A6ECD6DA0088AD9B9640202D89AA │ │ │ │ -0BB9A0ADF63491E67F2E97E35942D77E59B9B8AB0ED28B022EE5CD3449FC5B7A │ │ │ │ -19E38845B488F97D155C4312885E29537EAE97719C65845663480CE79DE8F037 │ │ │ │ -68995C0928FE8AFBEE554F01381EE5187578DF5D2542F26F66A599EE8ECC1F68 │ │ │ │ -FBADF3C2BA968C3CEB86675CF9A6CFD736E1422800D270417D497903DE87F2AE │ │ │ │ -938E39E120E9D3079F512E545E0E2616B84E81FE41392184F96818A7C86BF541 │ │ │ │ -F2E67C48CA56DA838C9FA0FAD538073B9F26319140D1F80EEEBCA190DE660A31 │ │ │ │ -457CAC16E92F87449A3734F9EA751588514865B58DC073658C8A857B5398AAC7 │ │ │ │ -3DC11E069996EF74A3189A07630D5DB87C5E028CD193C086B4D0E8BABC4F2393 │ │ │ │ -235EC96091B16C4A6D97DA1BD30A2D2E71F55869223CA66AD12448B668685F6E │ │ │ │ -06E7888D7F20045C662C4F7994CC7E1CE9AAC33A026716AA0551DF12343F0E22 │ │ │ │ -6E9F4B21C90406CC4997601194EF37A973221D1F4D73DD5666BD297F621C92AA │ │ │ │ -E3F698BC1146ADE754C4120EDF5B3E974D75A237E51DB49D52CD6CC7C9E8BD2D │ │ │ │ -E6849DF8F4DBA86C655D0C57CB54836C8A841C1D814F6B493F96ADBFCAD78D3B │ │ │ │ -430C58EF169950851B6A0B46411488B1A6F6974832787A24C0CDDBE27996EFB1 │ │ │ │ -DB341FA34B1DC6238D978D1E1D34AF3FB375ED6DA9C88699F195C88A54622F7C │ │ │ │ -36DAFC663D85660E756733A7E22F20C6A5D91F06087CAD10F7217BD33F343DC6 │ │ │ │ -F5EB9F16FE763672243EE6AE5CB6063A1D64670E1C059DD52134974E27D9D89C │ │ │ │ -BC658FCD814F20703D610C978FDCD6E2AEA31C18D1A310F215B28199F66C87DB │ │ │ │ -3B23980A393E1DD77AFA3045EDB6942505F3CF6204315A14E5B6BF2E96F3BB1F │ │ │ │ -628D24AC1893BC7DAEF3AA63F2116837F31DB90D872CBD9E5C48BCDEE781D20D │ │ │ │ -C6553D2D15F4E8438A9D1C7CEE1B72BD6AA08DC0AFEAF8B4DC1038707EE4A1BF │ │ │ │ -3D84460E60AF90F55002C1D8EBF0700F7EC3EFC944BEA78D0E0536F3AA6D9A84 │ │ │ │ -604A781AC5ACFEB7E681365315EE11E991C03DA431B65B332AD8F83F6F3AE66C │ │ │ │ -1BF434D3793FB5BCC44E44ACFF2855C2770C4AC678C6ACD6EB071974ACF1AE37 │ │ │ │ -D02C1736C62CC205A2F3488448527EFFA379613A8E6A6D134F4BFBAE6127304D │ │ │ │ -576C900A458E32CD42A4674415E03D8EB5742E71B854B3EDFD271AA214436544 │ │ │ │ -D1BCFD52F439298847E1FA258E5D38384FC85BC4EDC6F9E4431621CF763B137B │ │ │ │ -22DB6E3268B3F78881D55EA7C52ABF23FB73C152B06B708084FE1B00CFE72D9D │ │ │ │ -57B62AEE912E63BBD89D4D13CE896735454F1A16C3D9FB6CDF142CCA9F1C0242 │ │ │ │ -46F62109DF30667DA327F7CF6DC19B880C860C69080597FFCB1793313E202D4F │ │ │ │ -120A7C6B052C2EB7597B71B0985D24FDD2D3918393BF720E762C5DBBC2BB1E91 │ │ │ │ -B04560364EFE5B16EB068E0560FB932E0C617CFB95A166388E99AC4CB020F5BC │ │ │ │ -E24BB77352D7C3B21C37D404051A70FFFA0F726C35501A1FBB411F832CE46A2E │ │ │ │ -B424E26BD4 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFD8CDE285A2827F4659E339460ABEF319FE44D7A91E93CA309E9266E03DA │ │ │ │ +735F5DEF3920C01189BB63C2BD7ED0B92EABB481F123641477CDCCAB9751FB7B │ │ │ │ +F67DA7CE6EB134BC10D0228562BA5A6BFE6940907EF030ABF9EC4A8A0DFEF73D │ │ │ │ +3289E8CB4DC37694F5A656A935D92C72B3D82B012F578A27711B161DE9652ADC │ │ │ │ +71C51E743E4E9A7C6CF6FF16C5D65C1F60954C0858B48FAAC4FBB21988E2A934 │ │ │ │ +AC50C097DDF42C416359647D79F830E1430FB9BB803451A6732D1B5CAB817C1B │ │ │ │ +673B3077D9A180F184267E9990C087BCDEBC8EB8B889934DD0EB63C2EBCED4A3 │ │ │ │ +83A0D6A365412CFF610EF7BD5F82B02AA293F1D2F868768CDE9B801C929B4A38 │ │ │ │ +64E20C70BC4041F837AD15423517F7336A067D140A2C7906DC5D45885FFB3B69 │ │ │ │ +724E5B9B138BD15A9359EB25D14BC4193E529D1A49FEB0DC1015BF94CEBBD5E0 │ │ │ │ +EA148B185C53E12BD9FA6DBC097D789A73E832F02F55080D8ED6087F5952EA78 │ │ │ │ +250A4C65CE4C4013554A031446D2092D813C4CB1A605D97A40CF867F656ECD1C │ │ │ │ +C23F80230AD1E449AA8B4007134F71156719206441D92B1A6DD25101ABF69F70 │ │ │ │ +538CCCE216376E1BD6E423986BD4E83B1975B15092D4E19F885672F9E7C02485 │ │ │ │ +E02DA0F4243D324A5983D1D46444E5F6573F699E4F2A3395EF0EB7808B7D4D62 │ │ │ │ +690FD033E93AA553082273636503DA4BBBBFA6D127CE10424DD1DDF4F879305C │ │ │ │ +14F64180E7851D091B3220DFC70CAA44716B8F7F0C6FBEDB167801DED77F9E69 │ │ │ │ +E9B31CD2D8044DB946E511162976C34DE27F2BB974B70509005562A0A21317B7 │ │ │ │ +46D826A31C476C8F9A778F941FF5956BA2D765B1AD0AC4BC7AE1CD8A2A81F039 │ │ │ │ +06EB13EBD099BBDB2EBDB54D459C288EA69FB0018CE9255BBFB08C1F90FF30BD │ │ │ │ +C971DA7FDB193281B8F967F21AB42F13F36085AC9EC0D6B6B448C8F289B0AD70 │ │ │ │ +DB521A4755ECF9CA594741E5C674220C21C265EF3BAE594197B00048C8D4DB73 │ │ │ │ +4AC47B6A86EAC7EECD042C8E23C347F8C9FCB870473C1FBD91C298174BCBF1A9 │ │ │ │ +7B366C570A9A04A433495FBC9FD0FFC22A0E8181424C0F038ED97AD5054B10CC │ │ │ │ +1CD5BA0719DD0B4F4F18932AE87FF8B8C1CF0C7482B7847049761505DCD85146 │ │ │ │ +4EE5CB53993A9449CD05233E961BD49AE92D308E2065D6C6BF038538039AA56A │ │ │ │ +C59D424BE3175427337E16892D3920598D518423E145C6B2DD3881F338845F0D │ │ │ │ +16C47AA0D9C2D6DE99C6A302D567ACD6F98BF38223F1890E099C8F93348FFDAA │ │ │ │ +C2D3440187C8FED87C1A891EF11EFA7168EC47F72AF8BC5BE1B88B1084E704F5 │ │ │ │ +82099F1A79E556D94CC38851C97DC3864945A7470F1389BCF608BADAE45B236D │ │ │ │ +2934A20FFBCF169BF84DF496B07E7F1D9002E62B030337642804403DF7E4B3FF │ │ │ │ +C5A421EE0033BA06C50A041FBFE8F81AFC145664E2976505EB14859CF0377EBA │ │ │ │ +EA604CF8BFB5F9ADB9A7ED56E6F0F919E791D57C7232241C892EAC3E55D2D03B │ │ │ │ +FF43B9DAB7B1D8C6588D6D3503F49E80121E52254431B308752A936E0B51124D │ │ │ │ +C7F23C316BA6FA73E6BC47EB9550003E1393C68360067C094C65C0DD17214FA0 │ │ │ │ +45FF0F9C3E0AE4C81093752D23EA95E163C98EC04873ECE3FB0882567329525C │ │ │ │ +0A3937B16CA72B5EB6D2DC10C1B485C0BA939587AFEBB6D837A40401C666BC1C │ │ │ │ +F3344FBAB3E48BEE18F3AF5CDB33BA63778D373A851333C8C34E2F35AB94E8B4 │ │ │ │ +FF7E62A92ED83B872894E0A17209E14CF61269204A35A4BC8C7EE4B16F19E91F │ │ │ │ +669C4EFCECB187F6C7FAF92B4E14E400C6B3C81679D4A7196D66DB1E897DDA42 │ │ │ │ +47CC2848B46D581A95EEF85AB528E8CDEEB275D1E1FE197A3A08D36406E2DADF │ │ │ │ +A87D817AF18B5525F89B7C2E584F4A1254A1FC71E749999A2152870631A69CB6 │ │ │ │ +666EBD6BB3366A598F6592040D0E82B9D866DF0A76C362E76C2804D108A0C148 │ │ │ │ +51F42E9E0ABD52CC2D02B156B63AFD03313AFC80EACC83DF9B59F05FD798951D │ │ │ │ +FCF5335636DFC6561910ACE0AEC47F74CFD302EB7421D28AAAC8FF82B7CE2B2A │ │ │ │ +340B8BCE09F57BFCBC77F91096D97A85726E68846398C8C9C8D3A65A252AE8FB │ │ │ │ +166750C244963BC61E2236BAAC529FABD6FC774550096374A8DB81B6AF1EA843 │ │ │ │ +27F671C0045D629E3734EF037447C4763514FD1C4AE858A494AFC23A64C82149 │ │ │ │ +F4C0A7023B3865B84FAC2DC88D1553DCEBA3D8FB5DBC1103123F6B8CB5B3A399 │ │ │ │ +B665B26B001BF1E4BFABE42BFF6B02D69FA88D5CBCA5A11D5B48CFB4EAE60558 │ │ │ │ +5FBE254AD3BE01761CD4995E766E172D768621223505FD6AA8F89FC042EB814C │ │ │ │ +34373DAEC4FAAF71C0752F814154C5299F751CE7E0F9C673D2E448D0204C214C │ │ │ │ +C04DC34671FBEF72350FFBA263662E86A0D3795E310153AAF4C8A2623E167E6E │ │ │ │ +1F13A9BA485D5DDFC451D691DBA7C49E20354A7AD79D89F7EDE24F0D5B48B27D │ │ │ │ +568D01EF2555504196C09841F5970D8CF6C5D47FFFCF18AE6B2A485342000AAD │ │ │ │ +1F922FBEF7C98E0965609C89240E7B131A59551F57CD5C92097FCE75F5D2778F │ │ │ │ +F9ACF43A3273551363442C8C539205903A835C744A4AA953545506081D3D231A │ │ │ │ +A140E01F280BC42A3C35EDAD5F6B8CE6E51C68E41CA813710864ED880FCE846C │ │ │ │ +1B66D27CC2DBCDC2B1B96A12490BD76D67A415D4A6595CD9B19D3104A83D2C82 │ │ │ │ +C46DCD2C027F0565EDB83E54FF99498194D3140E55E8EE65EBDEAC5409B5616A │ │ │ │ +73141DA2D581E300A6057F4301A02DD160AB3E55A116313525122D0608816AA8 │ │ │ │ +4712EEF3D6FE8C893DF37D │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -4952,16 +4942,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 134[48 3[51 2[36 │ │ │ │ -12[40 2[51 45 26[59 11[25 45 4[45 1[45 1[45 3[25 44[{}13 │ │ │ │ +16[62 84[{}3 119.552 /CMTT12 rf /Fg 139[35 1[36 2[45 │ │ │ │ +9[40 1[40 51 18[71 20[25 4[45 45 1[45 1[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 │ │ │ │ @@ -5084,29 +5074,29 @@ │ │ │ │ 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 1111 4 v │ │ │ │ -1293 w Fm(Tree)29 b Fg(:)41 b Fl(DRAFT)30 b Fg(F)-8 b(ebruary)30 │ │ │ │ -b(29,)i(2024)p 2789 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 │ │ │ │ -(clearing)0 1323 y(an)m(y)31 b(allo)s(cated)h(data,)f(and)f(free'ing)h │ │ │ │ -(the)g(ob)5 b(ject.)111 1564 y(1.)46 b Fm(Tree)h(*)g(Tree_new)f(\()h │ │ │ │ -(void)g(\))g(;)227 1716 y Fn(This)32 b(metho)s(d)f(simply)h(allo)s │ │ │ │ -(cates)i(storage)g(for)e(the)g Fm(Tree)f Fn(structure)h(and)f(then)h │ │ │ │ -(sets)h(the)f(default)g(\014elds)227 1828 y(b)m(y)f(a)f(call)i(to)f │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fn(2)p 136 100 1152 4 v │ │ │ │ +1334 w Fm(Tree)29 b Fg(:)41 b Fl(DRAFT)30 b Fg(Octob)s(er)g(4,)h(2025)p │ │ │ │ +2748 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(clearing)0 │ │ │ │ +1323 y(an)m(y)31 b(allo)s(cated)h(data,)f(and)f(free'ing)h(the)g(ob)5 │ │ │ │ +b(ject.)111 1564 y(1.)46 b Fm(Tree)h(*)g(Tree_new)f(\()h(void)g(\))g(;) │ │ │ │ +227 1716 y Fn(This)32 b(metho)s(d)f(simply)h(allo)s(cates)i(storage)g │ │ │ │ +(for)e(the)g Fm(Tree)f Fn(structure)h(and)f(then)h(sets)h(the)f │ │ │ │ +(default)g(\014elds)227 1828 y(b)m(y)f(a)f(call)i(to)f │ │ │ │ Fm(Tree)p 905 1828 29 4 v 33 w(setDefaultFields\(\))p │ │ │ │ Fn(.)111 2019 y(2.)46 b Fm(void)h(Tree_setDefaultFields)42 │ │ │ │ b(\()47 b(Tree)g(*tree)f(\))i(;)227 2170 y Fn(This)31 │ │ │ │ b(metho)s(d)g(sets)h(the)g(structure's)f(\014elds)h(to)g(default)g(v)-5 │ │ │ │ b(alues:)43 b Fm(n)32 b Fn(is)g(zero,)h Fm(root)d Fn(is)i │ │ │ │ Fm(-1)p Fn(,)f(and)g Fm(par)p Fn(,)h Fm(fch)227 2283 │ │ │ │ y Fn(and)e Fm(sib)g Fn(are)g(all)i Fm(NULL)p Fn(.)227 │ │ │ │ @@ -5143,17 +5133,17 @@ │ │ │ │ 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 1111 4 v 1292 100 a Fm(Tree)30 │ │ │ │ -b Fg(:)40 b Fl(DRAFT)121 b Fg(F)-8 b(ebruary)31 b(29,)g(2024)p │ │ │ │ -2742 100 V 1111 w Fn(3)111 399 y(4.)46 b Fm(int)h(*)h(Tree_fch)d(\()j │ │ │ │ +TeXDict begin 3 2 bop 91 100 1152 4 v 1334 100 a Fm(Tree)29 │ │ │ │ +b Fg(:)41 b Fl(DRAFT)121 b Fg(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2701 100 V 1152 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) │ │ │ │ @@ -5211,28 +5201,27 @@ │ │ │ │ 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 1111 4 v │ │ │ │ -1293 w Fm(Tree)29 b Fg(:)41 b Fl(DRAFT)30 b Fg(F)-8 b(ebruary)30 │ │ │ │ -b(29,)i(2024)p 2789 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 1152 4 v │ │ │ │ +1334 w Fm(Tree)29 b Fg(:)41 b Fl(DRAFT)30 b Fg(Octob)s(er)g(4,)h(2025)p │ │ │ │ +2748 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 │ │ │ │ @@ -5277,17 +5266,17 @@ │ │ │ │ (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 1111 4 v 1292 100 a Fm(Tree)30 │ │ │ │ -b Fg(:)40 b Fl(DRAFT)121 b Fg(F)-8 b(ebruary)31 b(29,)g(2024)p │ │ │ │ -2742 100 V 1111 w Fn(5)111 399 y(6.)46 b Fm(int)h(Tree_nleaves)e(\()i │ │ │ │ +TeXDict begin 5 4 bop 91 100 1152 4 v 1334 100 a Fm(Tree)29 │ │ │ │ +b Fg(:)41 b Fl(DRAFT)121 b Fg(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2701 100 V 1152 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 │ │ │ │ @@ -5336,27 +5325,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 1111 4 v │ │ │ │ -1293 w Fm(Tree)29 b Fg(:)41 b Fl(DRAFT)30 b Fg(F)-8 b(ebruary)30 │ │ │ │ -b(29,)i(2024)p 2789 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 1152 4 v │ │ │ │ +1334 w Fm(Tree)29 b Fg(:)41 b Fl(DRAFT)30 b Fg(Octob)s(er)g(4,)h(2025)p │ │ │ │ +2748 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 │ │ │ │ @@ -5405,17 +5394,17 @@ │ │ │ │ 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 1111 4 v 1292 100 a Fm(Tree)30 │ │ │ │ -b Fg(:)40 b Fl(DRAFT)121 b Fg(F)-8 b(ebruary)31 b(29,)g(2024)p │ │ │ │ -2742 100 V 1111 w Fn(7)0 399 y Fe(1.2.6)112 b(Compression)39 │ │ │ │ +TeXDict begin 7 6 bop 91 100 1152 4 v 1334 100 a Fm(Tree)29 │ │ │ │ +b Fg(:)41 b Fl(DRAFT)121 b Fg(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2701 100 V 1152 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 │ │ │ │ @@ -5491,37 +5480,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 1111 4 v │ │ │ │ -1293 w Fm(Tree)29 b Fg(:)41 b Fl(DRAFT)30 b Fg(F)-8 b(ebruary)30 │ │ │ │ -b(29,)i(2024)p 2789 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 1152 4 v │ │ │ │ +1334 w Fm(Tree)29 b Fg(:)41 b Fl(DRAFT)30 b Fg(Octob)s(er)g(4,)h(2025)p │ │ │ │ +2748 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 │ │ │ │ @@ -5562,17 +5551,17 @@ │ │ │ │ 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 1111 4 v 1292 100 a Fm(Tree)30 │ │ │ │ -b Fg(:)40 b Fl(DRAFT)121 b Fg(F)-8 b(ebruary)31 b(29,)g(2024)p │ │ │ │ -2742 100 V 1111 w Fn(9)1230 399 y Fm(double)46 b(frame[],)f(double)h │ │ │ │ +TeXDict begin 9 8 bop 91 100 1152 4 v 1334 100 a Fm(Tree)29 │ │ │ │ +b Fg(:)41 b Fl(DRAFT)121 b Fg(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2701 100 V 1152 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 │ │ │ │ @@ -5645,19 +5634,19 @@ │ │ │ │ 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 1088 4 │ │ │ │ -v 1271 w Fm(Tree)29 b Fg(:)41 b Fl(DRAFT)30 b Fg(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2812 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 │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fn(10)p 182 100 1130 4 │ │ │ │ +v 1312 w Fm(Tree)29 b Fg(:)41 b Fl(DRAFT)30 b Fg(Octob)s(er)g(4,)h │ │ │ │ +(2025)p 2771 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 │ │ │ │ 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 │ │ │ │ @@ -5723,17 +5712,17 @@ │ │ │ │ (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 1088 4 v 1270 100 a Fm(Tree)29 │ │ │ │ -b Fg(:)41 b Fl(DRAFT)121 b Fg(F)-8 b(ebruary)30 b(29,)h(2024)p │ │ │ │ -2719 100 V 1088 w Fn(11)337 399 y Fi(\210)45 b Fn(The)33 │ │ │ │ +TeXDict begin 11 10 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(4,)h(2025)p │ │ │ │ +2678 100 V 1130 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 │ │ │ │ @@ -5781,24 +5770,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 1088 │ │ │ │ -4 v 1271 w Fm(Tree)29 b Fg(:)41 b Fl(DRAFT)30 b Fg(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2812 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 1130 │ │ │ │ +4 v 1312 w Fm(Tree)29 b Fg(:)41 b Fl(DRAFT)30 b Fg(Octob)s(er)g(4,)h │ │ │ │ +(2025)p 2771 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 February 29, 2024 │ │ │ │ │ + 2 Tree : DRAFT October 4, 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 February 29, 2024 3 │ │ │ │ │ + Tree : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 4 Tree : DRAFT October 4, 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 February 29, 2024 5 │ │ │ │ │ + Tree : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 6 Tree : DRAFT October 4, 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 February 29, 2024 7 │ │ │ │ │ + Tree : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 8 Tree : DRAFT October 4, 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 February 29, 2024 9 │ │ │ │ │ + Tree : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 10 Tree : DRAFT October 4, 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 February 29, 2024 11 │ │ │ │ │ + Tree : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 12 Tree : DRAFT October 4, 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 2024.02.29:1858 │ │ │ │ +%DVIPSSource: TeX output 2025.10.04:1734 │ │ │ │ %%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 │ │ │ │ @@ -3359,23 +3359,23 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 50 /two put │ │ │ │ dup 52 /four put │ │ │ │ -dup 57 /nine put │ │ │ │ +dup 53 /five put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 70 /F put │ │ │ │ -dup 97 /a put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ +dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ -dup 117 /u put │ │ │ │ -dup 121 /y put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -3549,95 +3549,85 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA647CD0E2539DFAD9604486DCCFA49 │ │ │ │ -AC96130D106A8F8387633622C3809400D6E8FF9D60877C743502E4D211CEBF62 │ │ │ │ -9A6F91045C22D5D20C5FF677D89983D02E5EE26C71A9EAE0E7C52465DA5A149A │ │ │ │ -9B731C27EC8366BC3E841C0CAE49A33DE164A857365B17B09CAD121C47A980CB │ │ │ │ -C75E1030F6C394EDB46C54B46880D2344127B903FB22684C9CAACE6053DC3BFA │ │ │ │ -4E47C565ECAF19C4295A11BD68CA6D45B5738B932BB3690A8C712904C49C1636 │ │ │ │ -A7702075F2FEA8DB3EB3A3C1216BB769DD0BAF4507A18E3052F2C846B0797933 │ │ │ │ -8CE9BB2DB5DFADAF1B0FC3A22BAB82A0D5D290F7AD950013CFA465BE11C1076D │ │ │ │ -5833FF92321FBF90D9229D3BA09DD18EEC44D9FCF8FCF63CC09D2977BFA798B6 │ │ │ │ -47FB047EA6AF69C7DE570176F5B6C0FED74DEDBF7DDF49550DD84BA14AC09423 │ │ │ │ -F70D5B14F0F8588F1E2FFE0DFE0760E77A9E39DEDAC5C5AE3760722C029B916D │ │ │ │ -96A2A7D1DD6A61F90B4B9806314A668EB7A0E107A3527310A240490453CC18D7 │ │ │ │ -3793B4CF3CE13EA332E7F5C2BACF85AC75FE84693B966BB0F6FB9A179A331C4E │ │ │ │ -55E9EF30E2734E44A88E053CD5E650D7E529E94CB7F8B733E68315ACAC5BEFC5 │ │ │ │ -3FE4F585F875310267865679AB381125C31E9AEB7226DC9F18DA80A9DE2F38A4 │ │ │ │ -51B8F9D5B2FBA0F50D53AE6212AFE41466A594F7A303B4E82F1493C0B8D65756 │ │ │ │ -BE6AF2931E5ADA5CE7D51CB5B1EC916C6C6D674808939331CA66F8181DD2B112 │ │ │ │ -1A12198CCCB6BBF1D40C803E794B65241ACE1E0D30CCA1C6F2D3E1415B98726B │ │ │ │ -9BA303BE2C4C276108CC78C093F1CC85CA454CC38535D1DEBFA341D84E8A5DDF │ │ │ │ -D53D8DD0F4A812B5BA63871BEB3BCE93FBC77AD395914E2CD757546C2BE2D641 │ │ │ │ -FDB12258E1E1D10E1B963EABB265F2C8B2547D48963E1AD3B223B666B46915A1 │ │ │ │ -157F5EA0AB8D8411C07AA2EB5D0EF1A1BA6D81C47473A3D3D6287104C7BF61F8 │ │ │ │ -3BDB64995DE96A65BF2B7288C51ADAA3D373A95C40D5240C5FF397551554AA9E │ │ │ │ -C89C7E45AA7738503CB058EF6AD5052CC78E4445C810C250BF25394B8D7DE82E │ │ │ │ -315C9CCD6E1E9150EC79EE0F354C668AE199C1AFF39C67337A86CB932E8D64E9 │ │ │ │ -389FF3CC08B538492DEED017686DBB9BDEA30FE67FB4EBDB3627C16FD15F243A │ │ │ │ -7FDEB310EFC940E57726E94340472F2C452815927ADE21578C959890216BE504 │ │ │ │ -225BE4B4D2E3B19F5E06B5A0B25AF168C3A2B26F599A829F89C16BD2026E8CC9 │ │ │ │ -8FB3CBB830C3E36C099071A70D0B8834FF2C17364EB50D5C71440CC7BFE02321 │ │ │ │ -8C6ECAC2F7EC1BE39077DB0E8B2B251626A71FD038EB2CF1FC254D98C1535CAA │ │ │ │ -A8C987BC266482BD860A333048E1EDB3DD40A6ECD6DA0088AD9B9640202D89AA │ │ │ │ -0BB9A0ADF63491E67F2E97E35942D77E59B9B8AB0ED28B022EE5CD3449FC5B7A │ │ │ │ -19E38845B488F97D155C4312885E29537EAE97719C65845663480CE79DE8F037 │ │ │ │ -68995C0928FE8AFBEE554F01381EE5187578DF5D2542F26F66A599EE8ECC1F68 │ │ │ │ -FBADF3C2BA968C3CEB86675CF9A6CFD736E1422800D270417D497903DE87F2AE │ │ │ │ -938E39E120E9D3079F512E545E0E2616B84E81FE41392184F96818A7C86BF541 │ │ │ │ -F2E67C48CA56DA838C9FA0FAD538073B9F26319140D1F80EEEBCA190DE660A31 │ │ │ │ -457CAC16E92F87449A3734F9EA751588514865B58DC073658C8A857B5398AAC7 │ │ │ │ -3DC11E069996EF74A3189A07630D5DB87C5E028CD193C086B4D0E8BABC4F2393 │ │ │ │ -235EC96091B16C4A6D97DA1BD30A2D2E71F55869223CA66AD12448B668685F6E │ │ │ │ -06E7888D7F20045C662C4F7994CC7E1CE9AAC33A026716AA0551DF12343F0E22 │ │ │ │ -6E9F4B21C90406CC4997601194EF37A973221D1F4D73DD5666BD297F621C92AA │ │ │ │ -E3F698BC1146ADE754C4120EDF5B3E974D75A237E51DB49D52CD6CC7C9E8BD2D │ │ │ │ -E6849DF8F4DBA86C655D0C57CB54836C8A841C1D814F6B493F96ADBFCAD78D3B │ │ │ │ -430C58EF169950851B6A0B46411488B1A6F6974832787A24C0CDDBE27996EFB1 │ │ │ │ -DB341FA34B1DC6238D978D1E1D34AF3FB375ED6DA9C88699F195C88A54622F7C │ │ │ │ -36DAFC663D85660E756733A7E22F20C6A5D91F06087CAD10F7217BD33F343DC6 │ │ │ │ -F5EB9F16FE763672243EE6AE5CB6063A1D64670E1C059DD52134974E27D9D89C │ │ │ │ -BC658FCD814F20703D610C978FDCD6E2AEA31C18D1A310F215B28199F66C87DB │ │ │ │ -3B23980A393E1DD77AFA3045EDB6942505F3CF6204315A14E5B6BF2E96F3BB1F │ │ │ │ -628D24AC1893BC7DAEF3AA63F2116837F31DB90D872CBD9E5C48BCDEE781D20D │ │ │ │ -C6553D2D15F4E8438A9D1C7CEE1B72BD6AA08DC0AFEAF8B4DC1038707EE4A1BF │ │ │ │ -3D84460E60AF90F55002C1D8EBF0700F7EC3EFC944BEA78D0E0536F3AA6D9A84 │ │ │ │ -604A781AC5ACFEB7E681365315EE11E991C03DA431B65B332AD8F83F6F3AE66C │ │ │ │ -1BF434D3793FB5BCC44E44ACFF2855C2770C4AC678C6ACD6EB071974ACF1AE37 │ │ │ │ -D02C1736C62CC205A2F3488448527EFFA379613A8E6A6D134F4BFBAE6127304D │ │ │ │ -576C900A458E32CD42A4674415E03D8EB5742E71B854B3EDFD271AA214436544 │ │ │ │ -D1BCFD52F439298847E1FA258E5D38384FC85BC4EDC6F9E4431621CF763B137B │ │ │ │ -22DB6E3268B3F78881D55EA7C52ABF23FB73C152B06B708084FE1B00CFE72D9D │ │ │ │ -57B62AEE912E63BBD89D4D13CE896735454F1A16C3D9FB6CDF142CCA9F1C0242 │ │ │ │ -46F62109DF30667DA327F7CF6DC19B880C860C69080597FFCB1793313E202D4F │ │ │ │ -120A7C6B052C2EB7597B71B0985D24FDD2D3918393BF720E762C5DBBC2BB1E91 │ │ │ │ -B04560364EFE5B16EB068E0560FB932E0C617CFB95A166388E99AC4CB020F5BC │ │ │ │ -E24BB77352D7C3B21C37D404051A70FFFA0F726C35501A1FBB411F832CE46A2E │ │ │ │ -B424E26BD4 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFD8CDE285A2827F4659E339460ABEF319FE44D7A91E93CA309E9266E03DA │ │ │ │ +735F5DEF3920C01189BB63C2BD7ED0B92EABB481F123641477CDCCAB9751FB7B │ │ │ │ +F67DA7CE6EB134BC10D0228562BA5A6BFE6940907EF030ABF9EC4A8A0DFEF73D │ │ │ │ +3289E8CB4DC37694F5A656A935D92C72B3D82B012F578A27711B161DE9652ADC │ │ │ │ +71C51E743E4E9A7C6CF6FF16C5D65C1F60954C0858B48FAAC4FBB21988E2A934 │ │ │ │ +AC50C097DDF42C416359647D79F830E1430FB9BB803451A6732D1B5CAB817C1B │ │ │ │ +673B3077D9A180F184267E9990C087BCDEBC8EB8B889934DD0EB63C2EBCED4A3 │ │ │ │ +83A0D6A365412CFF610EF7BD5F82B02AA293F1D2F868768CDE9B801C929B4A38 │ │ │ │ +64E20C70BC4041F837AD15423517F7336A067D140A2C7906DC5D45885FFB3B69 │ │ │ │ +724E5B9B138BD15A9359EB25D14BC4193E529D1A49FEB0DC1015BF94CEBBD5E0 │ │ │ │ +EA148B185C53E12BD9FA6DBC097D789A73E832F02F55080D8ED6087F5952EA78 │ │ │ │ +250A4C65CE4C4013554A031446D2092D813C4CB1A605D97A40CF867F656ECD1C │ │ │ │ +C23F80230AD1E449AA8B4007134F71156719206441D92B1A6DD25101ABF69F70 │ │ │ │ +538CCCE216376E1BD6E423986BD4E83B1975B15092D4E19F885672F9E7C02485 │ │ │ │ +E02DA0F4243D324A5983D1D46444E5F6573F699E4F2A3395EF0EB7808B7D4D62 │ │ │ │ +690FD033E93AA553082273636503DA4BBBBFA6D127CE10424DD1DDF4F879305C │ │ │ │ +14F64180E7851D091B3220DFC70CAA44716B8F7F0C6FBEDB167801DED77F9E69 │ │ │ │ +E9B31CD2D8044DB946E511162976C34DE27F2BB974B70509005562A0A21317B7 │ │ │ │ +46D826A31C476C8F9A778F941FF5956BA2D765B1AD0AC4BC7AE1CD8A2A81F039 │ │ │ │ +06EB13EBD099BBDB2EBDB54D459C288EA69FB0018CE9255BBFB08C1F90FF30BD │ │ │ │ +C971DA7FDB193281B8F967F21AB42F13F36085AC9EC0D6B6B448C8F289B0AD70 │ │ │ │ +DB521A4755ECF9CA594741E5C674220C21C265EF3BAE594197B00048C8D4DB73 │ │ │ │ +4AC47B6A86EAC7EECD042C8E23C347F8C9FCB870473C1FBD91C298174BCBF1A9 │ │ │ │ +7B366C570A9A04A433495FBC9FD0FFC22A0E8181424C0F038ED97AD5054B10CC │ │ │ │ +1CD5BA0719DD0B4F4F18932AE87FF8B8C1CF0C7482B7847049761505DCD85146 │ │ │ │ +4EE5CB53993A9449CD05233E961BD49AE92D308E2065D6C6BF038538039AA56A │ │ │ │ +C59D424BE3175427337E16892D3920598D518423E145C6B2DD3881F338845F0D │ │ │ │ +16C47AA0D9C2D6DE99C6A302D567ACD6F98BF38223F1890E099C8F93348FFDAA │ │ │ │ +C2D3440187C8FED87C1A891EF11EFA7168EC47F72AF8BC5BE1B88B1084E704F5 │ │ │ │ +82099F1A79E556D94CC38851C97DC3864945A7470F1389BCF608BADAE45B236D │ │ │ │ +2934A20FFBCF169BF84DF496B07E7F1D9002E62B030337642804403DF7E4B3FF │ │ │ │ +C5A421EE0033BA06C50A041FBFE8F81AFC145664E2976505EB14859CF0377EBA │ │ │ │ +EA604CF8BFB5F9ADB9A7ED56E6F0F919E791D57C7232241C892EAC3E55D2D03B │ │ │ │ +FF43B9DAB7B1D8C6588D6D3503F49E80121E52254431B308752A936E0B51124D │ │ │ │ +C7F23C316BA6FA73E6BC47EB9550003E1393C68360067C094C65C0DD17214FA0 │ │ │ │ +45FF0F9C3E0AE4C81093752D23EA95E163C98EC04873ECE3FB0882567329525C │ │ │ │ +0A3937B16CA72B5EB6D2DC10C1B485C0BA939587AFEBB6D837A40401C666BC1C │ │ │ │ +F3344FBAB3E48BEE18F3AF5CDB33BA63778D373A851333C8C34E2F35AB94E8B4 │ │ │ │ +FF7E62A92ED83B872894E0A17209E14CF61269204A35A4BC8C7EE4B16F19E91F │ │ │ │ +669C4EFCECB187F6C7FAF92B4E14E400C6B3C81679D4A7196D66DB1E897DDA42 │ │ │ │ +47CC2848B46D581A95EEF85AB528E8CDEEB275D1E1FE197A3A08D36406E2DADF │ │ │ │ +A87D817AF18B5525F89B7C2E584F4A1254A1FC71E749999A2152870631A69CB6 │ │ │ │ +666EBD6BB3366A598F6592040D0E82B9D866DF0A76C362E76C2804D108A0C148 │ │ │ │ +51F42E9E0ABD52CC2D02B156B63AFD03313AFC80EACC83DF9B59F05FD798951D │ │ │ │ +FCF5335636DFC6561910ACE0AEC47F74CFD302EB7421D28AAAC8FF82B7CE2B2A │ │ │ │ +340B8BCE09F57BFCBC77F91096D97A85726E68846398C8C9C8D3A65A252AE8FB │ │ │ │ +166750C244963BC61E2236BAAC529FABD6FC774550096374A8DB81B6AF1EA843 │ │ │ │ +27F671C0045D629E3734EF037447C4763514FD1C4AE858A494AFC23A64C82149 │ │ │ │ +F4C0A7023B3865B84FAC2DC88D1553DCEBA3D8FB5DBC1103123F6B8CB5B3A399 │ │ │ │ +B665B26B001BF1E4BFABE42BFF6B02D69FA88D5CBCA5A11D5B48CFB4EAE60558 │ │ │ │ +5FBE254AD3BE01761CD4995E766E172D768621223505FD6AA8F89FC042EB814C │ │ │ │ +34373DAEC4FAAF71C0752F814154C5299F751CE7E0F9C673D2E448D0204C214C │ │ │ │ +C04DC34671FBEF72350FFBA263662E86A0D3795E310153AAF4C8A2623E167E6E │ │ │ │ +1F13A9BA485D5DDFC451D691DBA7C49E20354A7AD79D89F7EDE24F0D5B48B27D │ │ │ │ +568D01EF2555504196C09841F5970D8CF6C5D47FFFCF18AE6B2A485342000AAD │ │ │ │ +1F922FBEF7C98E0965609C89240E7B131A59551F57CD5C92097FCE75F5D2778F │ │ │ │ +F9ACF43A3273551363442C8C539205903A835C744A4AA953545506081D3D231A │ │ │ │ +A140E01F280BC42A3C35EDAD5F6B8CE6E51C68E41CA813710864ED880FCE846C │ │ │ │ +1B66D27CC2DBCDC2B1B96A12490BD76D67A415D4A6595CD9B19D3104A83D2C82 │ │ │ │ +C46DCD2C027F0565EDB83E54FF99498194D3140E55E8EE65EBDEAC5409B5616A │ │ │ │ +73141DA2D581E300A6057F4301A02DD160AB3E55A116313525122D0608816AA8 │ │ │ │ +4712EEF3D6FE8C893DF37D │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -5503,15 +5493,15 @@ │ │ │ │ 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 134[48 3[51 2[36 12[40 2[51 45 26[59 11[25 45 4[45 │ │ │ │ +/Fl 139[35 1[36 2[45 9[40 1[40 51 18[71 20[25 4[45 45 │ │ │ │ 1[45 1[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 │ │ │ │ @@ -5611,46 +5601,46 @@ │ │ │ │ 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 992 4 v │ │ │ │ -1174 w Fp(Utilities)27 b Fl(:)41 b Fk(DRAFT)30 b Fl(F)-8 │ │ │ │ -b(ebruary)30 b(29,)i(2024)p 2909 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 b(is)h(the)g(allo)s(cator)j(and)c(initializer)j │ │ │ │ -(metho)s(d)d(for)h Fp(char)f Fq(v)m(ectors.)49 b(Storage)35 │ │ │ │ -b(for)d(an)h(arra)m(y)g(with)g(size)227 1498 y Fp(n)d │ │ │ │ -Fq(is)h(found)e(and)h(eac)m(h)h(en)m(try)g(is)f(\014lled)g(with)g(c)m │ │ │ │ -(haracter)i Fp(c)p Fq(.)41 b(A)30 b(p)s(oin)m(ter)h(to)g(the)f(arra)m │ │ │ │ -(y)h(is)g(returned.)111 1697 y(2.)46 b Fp(char)h(*)g(CVinit2)f(\()i │ │ │ │ -(int)f(n)g(\))g(;)227 1852 y Fq(This)34 b(is)h(an)g(allo)s(cator)i │ │ │ │ -(metho)s(d)e(for)g Fp(char)e Fq(v)m(ectors.)56 b(Storage)36 │ │ │ │ -b(for)f(an)g(arra)m(y)h(with)e(size)i Fp(n)f Fq(is)g(found.)53 │ │ │ │ -b(A)227 1965 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 2163 y(3.)46 │ │ │ │ -b Fp(void)h(CVfree)f(\()h(char)g(cvec[])f(\))i(;)227 │ │ │ │ -2319 y Fq(This)30 b(metho)s(d)g(releases)h(the)g(storage)h(tak)m(en)f │ │ │ │ -(b)m(y)f Fp(cvec[])p Fq(.)111 2517 y(4.)46 b Fp(void)h(CVcopy)f(\()h │ │ │ │ -(int)g(n,)h(char)e(y[],)h(char)f(x[])h(\))h(;)227 2673 │ │ │ │ -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 │ │ │ │ -b Fq(for)h Fp(0)48 b(<=)f(i)h(<)f(n)p Fq(.)111 2871 y(5.)f │ │ │ │ -Fp(void)h(CVfill)f(\()h(int)g(n,)h(char)e(y[],)h(char)f(c)i(\))f(;)227 │ │ │ │ -3027 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(the)g(c)m(haracter)i Fp(c)p Fq(,)e(i.e.,)i │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fq(2)p 136 100 1033 4 v │ │ │ │ +1215 w Fp(Utilities)28 b Fl(:)40 b Fk(DRAFT)30 b Fl(Octob)s(er)h(4,)g │ │ │ │ +(2025)p 2867 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 │ │ │ │ +b(is)h(the)g(allo)s(cator)j(and)c(initializer)j(metho)s(d)d(for)h │ │ │ │ +Fp(char)f Fq(v)m(ectors.)49 b(Storage)35 b(for)d(an)h(arra)m(y)g(with)g │ │ │ │ +(size)227 1498 y Fp(n)d Fq(is)h(found)e(and)h(eac)m(h)h(en)m(try)g(is)f │ │ │ │ +(\014lled)g(with)g(c)m(haracter)i Fp(c)p Fq(.)41 b(A)30 │ │ │ │ +b(p)s(oin)m(ter)h(to)g(the)f(arra)m(y)h(is)g(returned.)111 │ │ │ │ +1697 y(2.)46 b Fp(char)h(*)g(CVinit2)f(\()i(int)f(n)g(\))g(;)227 │ │ │ │ +1852 y Fq(This)34 b(is)h(an)g(allo)s(cator)i(metho)s(d)e(for)g │ │ │ │ +Fp(char)e Fq(v)m(ectors.)56 b(Storage)36 b(for)f(an)g(arra)m(y)h(with)e │ │ │ │ +(size)i Fp(n)f Fq(is)g(found.)53 b(A)227 1965 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 2163 y(3.)46 b Fp(void)h(CVfree)f(\()h(char)g │ │ │ │ +(cvec[])f(\))i(;)227 2319 y Fq(This)30 b(metho)s(d)g(releases)h(the)g │ │ │ │ +(storage)h(tak)m(en)f(b)m(y)f Fp(cvec[])p Fq(.)111 2517 │ │ │ │ +y(4.)46 b Fp(void)h(CVcopy)f(\()h(int)g(n,)h(char)e(y[],)h(char)f(x[])h │ │ │ │ +(\))h(;)227 2673 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 b Fq(for)h Fp(0)48 │ │ │ │ +b(<=)f(i)h(<)f(n)p Fq(.)111 2871 y(5.)f Fp(void)h(CVfill)f(\()h(int)g │ │ │ │ +(n,)h(char)e(y[],)h(char)f(c)i(\))f(;)227 3027 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(the)g(c)m(haracter)i Fp(c)p Fq(,)e(i.e.,)i │ │ │ │ Fp(y[i])47 b(=)g(c)30 b Fq(for)g Fp(0)48 b(<=)f(i)h(<)f(n)p │ │ │ │ Fq(.)111 3225 y(6.)f Fp(void)h(CVfprintf)e(\()j(FILE)e(*fp,)h(int)g(n,) │ │ │ │ g(char)g(y[])g(\))g(;)227 3381 y Fq(This)36 b(metho)s(d)f(prin)m(ts)h │ │ │ │ Fp(n)g Fq(en)m(tries)h(in)e Fp(y[])h Fq(to)h(\014le)f │ │ │ │ Fp(fp)p Fq(.)57 b(The)36 b(format)g(is)g(new)g(line)h(follo)m(w)m(ed)g │ │ │ │ (b)m(y)f(lines)h(of)227 3494 y(eigh)m(t)m(y)32 b(columns)f(of)f(single) │ │ │ │ h(c)m(haracters.)111 3692 y(7.)46 b Fp(int)h(CVfp80)f(\()i(FILE)e(*fp,) │ │ │ │ @@ -5677,17 +5667,17 @@ │ │ │ │ (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 992 4 v 1173 100 a Fp(Utilities)28 │ │ │ │ -b Fl(:)41 b Fk(DRAFT)121 b Fl(F)-8 b(ebruary)30 b(29,)h(2024)p │ │ │ │ -2861 100 V 992 w Fq(3)111 399 y(2.)46 b Fp(double)g(*)i(DVinit2)e(\()h │ │ │ │ +TeXDict begin 3 2 bop 91 100 1033 4 v 1214 100 a Fp(Utilities)28 │ │ │ │ +b Fl(:)41 b Fk(DRAFT)121 b Fl(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2820 100 V 1033 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 │ │ │ │ @@ -5739,22 +5729,22 @@ │ │ │ │ (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 992 4 v │ │ │ │ -1174 w Fp(Utilities)27 b Fl(:)41 b Fk(DRAFT)30 b Fl(F)-8 │ │ │ │ -b(ebruary)30 b(29,)i(2024)p 2909 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 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fq(4)p 136 100 1033 4 v │ │ │ │ +1215 w Fp(Utilities)28 b Fl(:)40 b Fk(DRAFT)30 b Fl(Octob)s(er)h(4,)g │ │ │ │ +(2025)p 2867 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 │ │ │ │ (y0[],)g(double)h(y1[],)991 1792 y(double)f(alpha,)g(double)g(x0[],)h │ │ │ │ (double)f(x1[])g(\))i(;)227 1942 y Fq(This)30 b(metho)s(d)g(computes)g │ │ │ │ @@ -5783,17 +5773,17 @@ │ │ │ │ (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 992 4 v 1173 100 a Fp(Utilities)28 │ │ │ │ -b Fl(:)41 b Fk(DRAFT)121 b Fl(F)-8 b(ebruary)30 b(29,)h(2024)p │ │ │ │ -2861 100 V 992 w Fq(5)66 399 y(19.)46 b Fp(void)h(DVcompress)e(\()i │ │ │ │ +TeXDict begin 5 4 bop 91 100 1033 4 v 1214 100 a Fp(Utilities)28 │ │ │ │ +b Fl(:)41 b Fk(DRAFT)121 b Fl(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2820 100 V 1033 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 │ │ │ │ @@ -5883,21 +5873,20 @@ │ │ │ │ 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 992 4 v │ │ │ │ -1174 w Fp(Utilities)27 b Fl(:)41 b Fk(DRAFT)30 b Fl(F)-8 │ │ │ │ -b(ebruary)30 b(29,)i(2024)p 2909 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 │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fq(6)p 136 100 1033 4 v │ │ │ │ +1215 w Fp(Utilities)28 b Fl(:)40 b Fk(DRAFT)30 b Fl(Octob)s(er)h(4,)g │ │ │ │ +(2025)p 2867 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 │ │ │ │ @@ -5974,17 +5963,17 @@ │ │ │ │ (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 992 4 v 1173 100 a Fp(Utilities)28 │ │ │ │ -b Fl(:)41 b Fk(DRAFT)121 b Fl(F)-8 b(ebruary)30 b(29,)h(2024)p │ │ │ │ -2861 100 V 992 w Fq(7)66 399 y(31.)46 b Fp(int)h(DVdoti)f(\()i(int)f │ │ │ │ +TeXDict begin 7 6 bop 91 100 1033 4 v 1214 100 a Fp(Utilities)28 │ │ │ │ +b Fl(:)41 b Fk(DRAFT)121 b Fl(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2820 100 V 1033 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 │ │ │ │ @@ -6038,21 +6027,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 992 4 v │ │ │ │ -1174 w Fp(Utilities)27 b Fl(:)41 b Fk(DRAFT)30 b Fl(F)-8 │ │ │ │ -b(ebruary)30 b(29,)i(2024)p 2909 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 1033 4 v │ │ │ │ +1215 w Fp(Utilities)28 b Fl(:)40 b Fk(DRAFT)30 b Fl(Octob)s(er)h(4,)g │ │ │ │ +(2025)p 2867 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 │ │ │ │ @@ -6114,17 +6103,17 @@ │ │ │ │ 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 992 4 v 1173 100 a Fp(Utilities)28 │ │ │ │ -b Fl(:)41 b Fk(DRAFT)121 b Fl(F)-8 b(ebruary)30 b(29,)h(2024)p │ │ │ │ -2861 100 V 992 w Fq(9)0 399 y Fi(1.2.3)112 b Fh(ZV)38 │ │ │ │ +TeXDict begin 9 8 bop 91 100 1033 4 v 1214 100 a Fp(Utilities)28 │ │ │ │ +b Fl(:)41 b Fk(DRAFT)121 b Fl(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2820 100 V 1033 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 │ │ │ │ @@ -6191,39 +6180,38 @@ │ │ │ │ 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 969 4 │ │ │ │ -v 1151 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(F)-8 │ │ │ │ -b(ebruary)30 b(29,)i(2024)p 2931 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(alpha[16:17])e(*)i(x2[])111 │ │ │ │ -1326 y Fq(9.)f Fp(void)h(ZVaxpy32)e(\()j(int)f(n,)g(double)f(y0[],)g │ │ │ │ -(double)h(y1[],)f(double)g(y2[],)991 1439 y(double)g(alpha[],)g(double) │ │ │ │ -g(x0[],)g(double)g(x1[])h(\))g(;)227 1589 y Fq(This)30 │ │ │ │ -b(metho)s(d)g(computes)g(the)h(follo)m(wing.)227 1809 │ │ │ │ -y Fp(y0[])47 b(=)g(y0[])g(+)g(alpha[0:1])e(*)j(x0[])f(+)g(alpha[2:3])e │ │ │ │ -(*)i(x1[])227 1921 y(y1[])g(=)g(y1[])g(+)g(alpha[4:5])e(*)j(x0[])f(+)g │ │ │ │ -(alpha[6:7])e(*)i(x1[])227 2034 y(y2[])g(=)g(y2[])g(+)g(alpha[8:9])e(*) │ │ │ │ -j(x0[])f(+)g(alpha[10:11])d(*)k(x1[])66 2254 y Fq(10.)e │ │ │ │ -Fp(void)h(ZVaxpy31)e(\()j(int)f(n,)g(double)f(y0[],)g(double)h(y1[],)f │ │ │ │ -(double)g(y2[],)991 2367 y(double)g(alpha[],)g(double)g(x0[])g(\))i(;) │ │ │ │ -227 2517 y Fq(This)30 b(metho)s(d)g(computes)g(the)h(follo)m(wing.)227 │ │ │ │ -2736 y Fp(y0[])47 b(=)g(y0[])g(+)g(alpha[0:1])e(*)j(x0[])227 │ │ │ │ -2849 y(y1[])f(=)g(y1[])g(+)g(alpha[2:3])e(*)j(x0[])227 │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fq(10)p 182 100 1010 4 │ │ │ │ +v 1193 w Fp(Utilities)27 b Fl(:)41 b Fk(DRAFT)30 b Fl(Octob)s(er)g(4,)h │ │ │ │ +(2025)p 2890 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 │ │ │ │ +(alpha[16:17])e(*)i(x2[])111 1326 y Fq(9.)f Fp(void)h(ZVaxpy32)e(\()j │ │ │ │ +(int)f(n,)g(double)f(y0[],)g(double)h(y1[],)f(double)g(y2[],)991 │ │ │ │ +1439 y(double)g(alpha[],)g(double)g(x0[],)g(double)g(x1[])h(\))g(;)227 │ │ │ │ +1589 y Fq(This)30 b(metho)s(d)g(computes)g(the)h(follo)m(wing.)227 │ │ │ │ +1809 y Fp(y0[])47 b(=)g(y0[])g(+)g(alpha[0:1])e(*)j(x0[])f(+)g │ │ │ │ +(alpha[2:3])e(*)i(x1[])227 1921 y(y1[])g(=)g(y1[])g(+)g(alpha[4:5])e(*) │ │ │ │ +j(x0[])f(+)g(alpha[6:7])e(*)i(x1[])227 2034 y(y2[])g(=)g(y2[])g(+)g │ │ │ │ +(alpha[8:9])e(*)j(x0[])f(+)g(alpha[10:11])d(*)k(x1[])66 │ │ │ │ +2254 y Fq(10.)e Fp(void)h(ZVaxpy31)e(\()j(int)f(n,)g(double)f(y0[],)g │ │ │ │ +(double)h(y1[],)f(double)g(y2[],)991 2367 y(double)g(alpha[],)g(double) │ │ │ │ +g(x0[])g(\))i(;)227 2517 y Fq(This)30 b(metho)s(d)g(computes)g(the)h │ │ │ │ +(follo)m(wing.)227 2736 y Fp(y0[])47 b(=)g(y0[])g(+)g(alpha[0:1])e(*)j │ │ │ │ +(x0[])227 2849 y(y1[])f(=)g(y1[])g(+)g(alpha[2:3])e(*)j(x0[])227 │ │ │ │ 2962 y(y2[])f(=)g(y2[])g(+)g(alpha[4:5])e(*)j(x0[])66 │ │ │ │ 3182 y Fq(11.)e Fp(void)h(ZVaxpy23)e(\()j(int)f(n,)g(double)f(y0[],)g │ │ │ │ (double)h(y1[],)991 3295 y(double)f(alpha[],)g(double)g(x0[],)g(double) │ │ │ │ g(x1[],)g(double)h(x2[])f(\))i(;)227 3444 y Fq(This)30 │ │ │ │ b(metho)s(d)g(computes)g(the)h(follo)m(wing.)227 3664 │ │ │ │ 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 3777 y(y1[])g(=)g(y1[])g(+)g │ │ │ │ @@ -6238,24 +6226,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 969 4 v 1150 100 a Fp(Utilities)28 │ │ │ │ -b Fl(:)41 b Fk(DRAFT)121 b Fl(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2839 100 V 969 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 1010 4 v 1192 100 a Fp(Utilities)27 │ │ │ │ +b Fl(:)41 b Fk(DRAFT)121 b Fl(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2797 100 V 1010 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 │ │ │ │ @@ -6295,17 +6283,17 @@ │ │ │ │ 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 969 4 │ │ │ │ -v 1151 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(F)-8 │ │ │ │ -b(ebruary)30 b(29,)i(2024)p 2931 100 V 277 462 a Fp(sums)p │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fq(12)p 182 100 1010 │ │ │ │ +4 v 1193 w Fp(Utilities)27 b Fl(:)41 b Fk(DRAFT)30 b │ │ │ │ +Fl(Octob)s(er)g(4,)h(2025)p 2890 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 │ │ │ │ @@ -6406,18 +6394,18 @@ │ │ │ │ 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 969 4 v 1150 100 a Fp(Utilities)28 │ │ │ │ -b Fl(:)41 b Fk(DRAFT)121 b Fl(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2839 100 V 969 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 │ │ │ │ +TeXDict begin 13 12 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(4,)h(2025)p │ │ │ │ +2797 100 V 1010 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 │ │ │ │ @@ -6479,17 +6467,17 @@ │ │ │ │ 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 969 4 │ │ │ │ -v 1151 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(F)-8 │ │ │ │ -b(ebruary)30 b(29,)i(2024)p 2931 100 V 277 462 a Fp(sums)p │ │ │ │ +TeXDict begin 14 13 bop 0 100 a Fq(14)p 182 100 1010 │ │ │ │ +4 v 1193 w Fp(Utilities)27 b Fl(:)41 b Fk(DRAFT)30 b │ │ │ │ +Fl(Octob)s(er)g(4,)h(2025)p 2890 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 │ │ │ │ @@ -6595,18 +6583,18 @@ │ │ │ │ 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 969 4 v 1150 100 a Fp(Utilities)28 │ │ │ │ -b Fl(:)41 b Fk(DRAFT)121 b Fl(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2839 100 V 969 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 │ │ │ │ +TeXDict begin 15 14 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(4,)h(2025)p │ │ │ │ +2797 100 V 1010 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 │ │ │ │ @@ -6673,17 +6661,17 @@ │ │ │ │ (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 969 4 │ │ │ │ -v 1151 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(F)-8 │ │ │ │ -b(ebruary)30 b(29,)i(2024)p 2931 100 V 66 399 a Fq(42.)46 │ │ │ │ +TeXDict begin 16 15 bop 0 100 a Fq(16)p 182 100 1010 │ │ │ │ +4 v 1193 w Fp(Utilities)27 b Fl(:)41 b Fk(DRAFT)30 b │ │ │ │ +Fl(Octob)s(er)g(4,)h(2025)p 2890 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 │ │ │ │ @@ -6740,17 +6728,17 @@ │ │ │ │ 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 969 4 v 1150 100 a Fp(Utilities)28 │ │ │ │ -b Fl(:)41 b Fk(DRAFT)121 b Fl(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2839 100 V 969 w Fq(17)111 399 y(5.)46 b Fp(int)h(IVfp80)f(\()i(FILE)e │ │ │ │ +TeXDict begin 17 16 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(4,)h(2025)p │ │ │ │ +2797 100 V 1010 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 │ │ │ │ @@ -6814,17 +6802,17 @@ │ │ │ │ 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 969 4 │ │ │ │ -v 1151 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(F)-8 │ │ │ │ -b(ebruary)30 b(29,)i(2024)p 2931 100 V 66 399 a Fq(16.)46 │ │ │ │ +TeXDict begin 18 17 bop 0 100 a Fq(18)p 182 100 1010 │ │ │ │ +4 v 1193 w Fp(Utilities)27 b Fl(:)41 b Fk(DRAFT)30 b │ │ │ │ +Fl(Octob)s(er)g(4,)h(2025)p 2890 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) │ │ │ │ @@ -6880,17 +6868,17 @@ │ │ │ │ 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 969 4 v 1150 100 a Fp(Utilities)28 │ │ │ │ -b Fl(:)41 b Fk(DRAFT)121 b Fl(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2839 100 V 969 w Fq(19)111 399 y(2.)46 b Fp(float)h(*)g(FVinit2)f(\()h │ │ │ │ +TeXDict begin 19 18 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(4,)h(2025)p │ │ │ │ +2797 100 V 1010 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 │ │ │ │ @@ -6950,17 +6938,17 @@ │ │ │ │ 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 969 4 │ │ │ │ -v 1151 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(F)-8 │ │ │ │ -b(ebruary)30 b(29,)i(2024)p 2931 100 V 66 399 a Fq(15.)46 │ │ │ │ +TeXDict begin 20 19 bop 0 100 a Fq(20)p 182 100 1010 │ │ │ │ +4 v 1193 w Fp(Utilities)27 b Fl(:)41 b Fk(DRAFT)30 b │ │ │ │ +Fl(Octob)s(er)g(4,)h(2025)p 2890 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 │ │ │ │ @@ -7015,17 +7003,17 @@ │ │ │ │ (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 969 4 v 1150 100 a Fp(Utilities)28 │ │ │ │ -b Fl(:)41 b Fk(DRAFT)121 b Fl(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2839 100 V 969 w Fq(21)66 399 y(27.)46 b Fp(void)h(FVsub)f(\()i(int)f │ │ │ │ +TeXDict begin 21 20 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(4,)h(2025)p │ │ │ │ +2797 100 V 1010 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 │ │ │ │ @@ -7088,17 +7076,17 @@ │ │ │ │ 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 969 4 │ │ │ │ -v 1151 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(F)-8 │ │ │ │ -b(ebruary)30 b(29,)i(2024)p 2931 100 V 111 399 a Fq(3.)46 │ │ │ │ +TeXDict begin 22 21 bop 0 100 a Fq(22)p 182 100 1010 │ │ │ │ +4 v 1193 w Fp(Utilities)27 b Fl(:)41 b Fk(DRAFT)30 b │ │ │ │ +Fl(Octob)s(er)g(4,)h(2025)p 2890 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 │ │ │ │ @@ -7157,17 +7145,17 @@ │ │ │ │ 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 969 4 v 1150 100 a Fp(Utilities)28 │ │ │ │ -b Fl(:)41 b Fk(DRAFT)121 b Fl(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2839 100 V 969 w Fq(23)0 399 y Fi(1.2.9)112 b(Sorting)38 │ │ │ │ +TeXDict begin 23 22 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(4,)h(2025)p │ │ │ │ +2797 100 V 1010 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 │ │ │ │ @@ -7217,17 +7205,17 @@ │ │ │ │ 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 969 4 │ │ │ │ -v 1151 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(F)-8 │ │ │ │ -b(ebruary)30 b(29,)i(2024)p 2931 100 V 111 399 a Fq(7.)46 │ │ │ │ +TeXDict begin 24 23 bop 0 100 a Fq(24)p 182 100 1010 │ │ │ │ +4 v 1193 w Fp(Utilities)27 b Fl(:)41 b Fk(DRAFT)30 b │ │ │ │ +Fl(Octob)s(er)g(4,)h(2025)p 2890 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 │ │ │ │ @@ -7284,17 +7272,17 @@ │ │ │ │ 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 969 4 v 1150 100 a Fp(Utilities)28 │ │ │ │ -b Fl(:)41 b Fk(DRAFT)121 b Fl(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2839 100 V 969 w Fq(25)111 399 y(7.)46 b Fp(void)h(DVqsortUp)e(\()j │ │ │ │ +TeXDict begin 25 24 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(4,)h(2025)p │ │ │ │ +2797 100 V 1010 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 │ │ │ │ @@ -7360,17 +7348,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 969 4 │ │ │ │ -v 1151 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(F)-8 │ │ │ │ -b(ebruary)30 b(29,)i(2024)p 2931 100 V 111 399 a Fq(5.)46 │ │ │ │ +TeXDict begin 26 25 bop 0 100 a Fq(26)p 182 100 1010 │ │ │ │ +4 v 1193 w Fp(Utilities)27 b Fl(:)41 b Fk(DRAFT)30 b │ │ │ │ +Fl(Octob)s(er)g(4,)h(2025)p 2890 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 │ │ │ │ @@ -7432,17 +7420,17 @@ │ │ │ │ 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 969 4 v 1150 100 a Fp(Utilities)28 │ │ │ │ -b Fl(:)41 b Fk(DRAFT)121 b Fl(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2839 100 V 969 w Fq(27)111 399 y(5.)46 b Fp(IP)h(*)h(IP_mergeUp)d(\()i │ │ │ │ +TeXDict begin 27 26 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(4,)h(2025)p │ │ │ │ +2797 100 V 1010 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 │ │ │ │ @@ -7500,17 +7488,17 @@ │ │ │ │ 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 969 4 │ │ │ │ -v 1151 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(F)-8 │ │ │ │ -b(ebruary)30 b(29,)i(2024)p 2931 100 V 111 399 a Fq(3.)46 │ │ │ │ +TeXDict begin 28 27 bop 0 100 a Fq(28)p 182 100 1010 │ │ │ │ +4 v 1193 w Fp(Utilities)27 b Fl(:)41 b Fk(DRAFT)30 b │ │ │ │ +Fl(Octob)s(er)g(4,)h(2025)p 2890 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) │ │ │ │ @@ -7560,17 +7548,17 @@ │ │ │ │ (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 969 4 v 1150 100 a Fp(Utilities)28 │ │ │ │ -b Fl(:)41 b Fk(DRAFT)121 b Fl(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2839 100 V 969 w Fq(29)337 399 y Fm(\210)45 b Fq(The)33 │ │ │ │ +TeXDict begin 29 28 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(4,)h(2025)p │ │ │ │ +2797 100 V 1010 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 │ │ │ │ @@ -7635,17 +7623,17 @@ │ │ │ │ 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 969 4 v 1150 100 a Fp(Utilities)28 │ │ │ │ -b Fl(:)41 b Fk(DRAFT)121 b Fl(F)-8 b(ebruary)30 b(29,)i(2024)p │ │ │ │ -2839 100 V 969 w Fq(31)0 399 y Fp(FVfprintf\(\))p Fq(,)c(16)0 │ │ │ │ +TeXDict begin 31 30 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(4,)h(2025)p │ │ │ │ +2797 100 V 1010 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 │ │ │ │ @@ -7704,17 +7692,17 @@ │ │ │ │ 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 969 4 │ │ │ │ -v 1151 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(F)-8 │ │ │ │ -b(ebruary)30 b(29,)i(2024)p 2931 100 V 0 399 a Fp(IVZVisortDown\(\))p │ │ │ │ +TeXDict begin 32 31 bop 0 100 a Fq(32)p 182 100 1010 │ │ │ │ +4 v 1193 w Fp(Utilities)27 b Fl(:)41 b Fk(DRAFT)30 b │ │ │ │ +Fl(Octob)s(er)g(4,)h(2025)p 2890 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 │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -22,15 +22,15 @@ │ │ │ │ │ struct _I2OP { │ │ │ │ │ int value0 ; │ │ │ │ │ int value1 ; │ │ │ │ │ void *value2 ; │ │ │ │ │ I2OP *next ; │ │ │ │ │ } ; │ │ │ │ │ 1 │ │ │ │ │ - 2 Utilities : DRAFT February 29, 2024 │ │ │ │ │ + 2 Utilities : DRAFT October 4, 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 February 29, 2024 3 │ │ │ │ │ + Utilities : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 4 Utilities : DRAFT October 4, 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 February 29, 2024 5 │ │ │ │ │ + Utilities : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 6 Utilities : DRAFT October 4, 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 February 29, 2024 7 │ │ │ │ │ + Utilities : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 8 Utilities : DRAFT October 4, 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 February 29, 2024 9 │ │ │ │ │ + Utilities : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 10 Utilities : DRAFT October 4, 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 February 29, 2024 11 │ │ │ │ │ + Utilities : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 12 Utilities : DRAFT October 4, 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 February 29, 2024 13 │ │ │ │ │ + Utilities : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 14 Utilities : DRAFT October 4, 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 February 29, 2024 15 │ │ │ │ │ + Utilities : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 16 Utilities : DRAFT October 4, 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 February 29, 2024 17 │ │ │ │ │ + Utilities : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 18 Utilities : DRAFT October 4, 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 February 29, 2024 19 │ │ │ │ │ + Utilities : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 20 Utilities : DRAFT October 4, 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 February 29, 2024 21 │ │ │ │ │ + Utilities : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 22 Utilities : DRAFT October 4, 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 February 29, 2024 23 │ │ │ │ │ + Utilities : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 24 Utilities : DRAFT October 4, 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 February 29, 2024 25 │ │ │ │ │ + Utilities : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 26 Utilities : DRAFT October 4, 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 February 29, 2024 27 │ │ │ │ │ + Utilities : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 28 Utilities : DRAFT October 4, 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 February 29, 2024 29 │ │ │ │ │ + Utilities : DRAFT October 4, 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 February 29, 2024 31 │ │ │ │ │ + Utilities : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 32 Utilities : DRAFT October 4, 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 2024.02.29:1858 │ │ │ │ +%DVIPSSource: TeX output 2025.10.04:1734 │ │ │ │ %%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 │ │ │ │ @@ -2352,23 +2352,23 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 50 /two put │ │ │ │ dup 52 /four put │ │ │ │ -dup 57 /nine put │ │ │ │ +dup 53 /five put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 70 /F put │ │ │ │ -dup 97 /a put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ +dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ -dup 117 /u put │ │ │ │ -dup 121 /y put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -2542,95 +2542,85 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA647CD0E2539DFAD9604486DCCFA49 │ │ │ │ -AC96130D106A8F8387633622C3809400D6E8FF9D60877C743502E4D211CEBF62 │ │ │ │ -9A6F91045C22D5D20C5FF677D89983D02E5EE26C71A9EAE0E7C52465DA5A149A │ │ │ │ -9B731C27EC8366BC3E841C0CAE49A33DE164A857365B17B09CAD121C47A980CB │ │ │ │ -C75E1030F6C394EDB46C54B46880D2344127B903FB22684C9CAACE6053DC3BFA │ │ │ │ -4E47C565ECAF19C4295A11BD68CA6D45B5738B932BB3690A8C712904C49C1636 │ │ │ │ -A7702075F2FEA8DB3EB3A3C1216BB769DD0BAF4507A18E3052F2C846B0797933 │ │ │ │ -8CE9BB2DB5DFADAF1B0FC3A22BAB82A0D5D290F7AD950013CFA465BE11C1076D │ │ │ │ -5833FF92321FBF90D9229D3BA09DD18EEC44D9FCF8FCF63CC09D2977BFA798B6 │ │ │ │ -47FB047EA6AF69C7DE570176F5B6C0FED74DEDBF7DDF49550DD84BA14AC09423 │ │ │ │ -F70D5B14F0F8588F1E2FFE0DFE0760E77A9E39DEDAC5C5AE3760722C029B916D │ │ │ │ -96A2A7D1DD6A61F90B4B9806314A668EB7A0E107A3527310A240490453CC18D7 │ │ │ │ -3793B4CF3CE13EA332E7F5C2BACF85AC75FE84693B966BB0F6FB9A179A331C4E │ │ │ │ -55E9EF30E2734E44A88E053CD5E650D7E529E94CB7F8B733E68315ACAC5BEFC5 │ │ │ │ -3FE4F585F875310267865679AB381125C31E9AEB7226DC9F18DA80A9DE2F38A4 │ │ │ │ -51B8F9D5B2FBA0F50D53AE6212AFE41466A594F7A303B4E82F1493C0B8D65756 │ │ │ │ -BE6AF2931E5ADA5CE7D51CB5B1EC916C6C6D674808939331CA66F8181DD2B112 │ │ │ │ -1A12198CCCB6BBF1D40C803E794B65241ACE1E0D30CCA1C6F2D3E1415B98726B │ │ │ │ -9BA303BE2C4C276108CC78C093F1CC85CA454CC38535D1DEBFA341D84E8A5DDF │ │ │ │ -D53D8DD0F4A812B5BA63871BEB3BCE93FBC77AD395914E2CD757546C2BE2D641 │ │ │ │ -FDB12258E1E1D10E1B963EABB265F2C8B2547D48963E1AD3B223B666B46915A1 │ │ │ │ -157F5EA0AB8D8411C07AA2EB5D0EF1A1BA6D81C47473A3D3D6287104C7BF61F8 │ │ │ │ -3BDB64995DE96A65BF2B7288C51ADAA3D373A95C40D5240C5FF397551554AA9E │ │ │ │ -C89C7E45AA7738503CB058EF6AD5052CC78E4445C810C250BF25394B8D7DE82E │ │ │ │ -315C9CCD6E1E9150EC79EE0F354C668AE199C1AFF39C67337A86CB932E8D64E9 │ │ │ │ -389FF3CC08B538492DEED017686DBB9BDEA30FE67FB4EBDB3627C16FD15F243A │ │ │ │ -7FDEB310EFC940E57726E94340472F2C452815927ADE21578C959890216BE504 │ │ │ │ -225BE4B4D2E3B19F5E06B5A0B25AF168C3A2B26F599A829F89C16BD2026E8CC9 │ │ │ │ -8FB3CBB830C3E36C099071A70D0B8834FF2C17364EB50D5C71440CC7BFE02321 │ │ │ │ -8C6ECAC2F7EC1BE39077DB0E8B2B251626A71FD038EB2CF1FC254D98C1535CAA │ │ │ │ -A8C987BC266482BD860A333048E1EDB3DD40A6ECD6DA0088AD9B9640202D89AA │ │ │ │ -0BB9A0ADF63491E67F2E97E35942D77E59B9B8AB0ED28B022EE5CD3449FC5B7A │ │ │ │ -19E38845B488F97D155C4312885E29537EAE97719C65845663480CE79DE8F037 │ │ │ │ -68995C0928FE8AFBEE554F01381EE5187578DF5D2542F26F66A599EE8ECC1F68 │ │ │ │ -FBADF3C2BA968C3CEB86675CF9A6CFD736E1422800D270417D497903DE87F2AE │ │ │ │ -938E39E120E9D3079F512E545E0E2616B84E81FE41392184F96818A7C86BF541 │ │ │ │ -F2E67C48CA56DA838C9FA0FAD538073B9F26319140D1F80EEEBCA190DE660A31 │ │ │ │ -457CAC16E92F87449A3734F9EA751588514865B58DC073658C8A857B5398AAC7 │ │ │ │ -3DC11E069996EF74A3189A07630D5DB87C5E028CD193C086B4D0E8BABC4F2393 │ │ │ │ -235EC96091B16C4A6D97DA1BD30A2D2E71F55869223CA66AD12448B668685F6E │ │ │ │ -06E7888D7F20045C662C4F7994CC7E1CE9AAC33A026716AA0551DF12343F0E22 │ │ │ │ -6E9F4B21C90406CC4997601194EF37A973221D1F4D73DD5666BD297F621C92AA │ │ │ │ -E3F698BC1146ADE754C4120EDF5B3E974D75A237E51DB49D52CD6CC7C9E8BD2D │ │ │ │ -E6849DF8F4DBA86C655D0C57CB54836C8A841C1D814F6B493F96ADBFCAD78D3B │ │ │ │ -430C58EF169950851B6A0B46411488B1A6F6974832787A24C0CDDBE27996EFB1 │ │ │ │ -DB341FA34B1DC6238D978D1E1D34AF3FB375ED6DA9C88699F195C88A54622F7C │ │ │ │ -36DAFC663D85660E756733A7E22F20C6A5D91F06087CAD10F7217BD33F343DC6 │ │ │ │ -F5EB9F16FE763672243EE6AE5CB6063A1D64670E1C059DD52134974E27D9D89C │ │ │ │ -BC658FCD814F20703D610C978FDCD6E2AEA31C18D1A310F215B28199F66C87DB │ │ │ │ -3B23980A393E1DD77AFA3045EDB6942505F3CF6204315A14E5B6BF2E96F3BB1F │ │ │ │ -628D24AC1893BC7DAEF3AA63F2116837F31DB90D872CBD9E5C48BCDEE781D20D │ │ │ │ -C6553D2D15F4E8438A9D1C7CEE1B72BD6AA08DC0AFEAF8B4DC1038707EE4A1BF │ │ │ │ -3D84460E60AF90F55002C1D8EBF0700F7EC3EFC944BEA78D0E0536F3AA6D9A84 │ │ │ │ -604A781AC5ACFEB7E681365315EE11E991C03DA431B65B332AD8F83F6F3AE66C │ │ │ │ -1BF434D3793FB5BCC44E44ACFF2855C2770C4AC678C6ACD6EB071974ACF1AE37 │ │ │ │ -D02C1736C62CC205A2F3488448527EFFA379613A8E6A6D134F4BFBAE6127304D │ │ │ │ -576C900A458E32CD42A4674415E03D8EB5742E71B854B3EDFD271AA214436544 │ │ │ │ -D1BCFD52F439298847E1FA258E5D38384FC85BC4EDC6F9E4431621CF763B137B │ │ │ │ -22DB6E3268B3F78881D55EA7C52ABF23FB73C152B06B708084FE1B00CFE72D9D │ │ │ │ -57B62AEE912E63BBD89D4D13CE896735454F1A16C3D9FB6CDF142CCA9F1C0242 │ │ │ │ -46F62109DF30667DA327F7CF6DC19B880C860C69080597FFCB1793313E202D4F │ │ │ │ -120A7C6B052C2EB7597B71B0985D24FDD2D3918393BF720E762C5DBBC2BB1E91 │ │ │ │ -B04560364EFE5B16EB068E0560FB932E0C617CFB95A166388E99AC4CB020F5BC │ │ │ │ -E24BB77352D7C3B21C37D404051A70FFFA0F726C35501A1FBB411F832CE46A2E │ │ │ │ -B424E26BD4 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFD8CDE285A2827F4659E339460ABEF319FE44D7A91E93CA309E9266E03DA │ │ │ │ +735F5DEF3920C01189BB63C2BD7ED0B92EABB481F123641477CDCCAB9751FB7B │ │ │ │ +F67DA7CE6EB134BC10D0228562BA5A6BFE6940907EF030ABF9EC4A8A0DFEF73D │ │ │ │ +3289E8CB4DC37694F5A656A935D92C72B3D82B012F578A27711B161DE9652ADC │ │ │ │ +71C51E743E4E9A7C6CF6FF16C5D65C1F60954C0858B48FAAC4FBB21988E2A934 │ │ │ │ +AC50C097DDF42C416359647D79F830E1430FB9BB803451A6732D1B5CAB817C1B │ │ │ │ +673B3077D9A180F184267E9990C087BCDEBC8EB8B889934DD0EB63C2EBCED4A3 │ │ │ │ +83A0D6A365412CFF610EF7BD5F82B02AA293F1D2F868768CDE9B801C929B4A38 │ │ │ │ +64E20C70BC4041F837AD15423517F7336A067D140A2C7906DC5D45885FFB3B69 │ │ │ │ +724E5B9B138BD15A9359EB25D14BC4193E529D1A49FEB0DC1015BF94CEBBD5E0 │ │ │ │ +EA148B185C53E12BD9FA6DBC097D789A73E832F02F55080D8ED6087F5952EA78 │ │ │ │ +250A4C65CE4C4013554A031446D2092D813C4CB1A605D97A40CF867F656ECD1C │ │ │ │ +C23F80230AD1E449AA8B4007134F71156719206441D92B1A6DD25101ABF69F70 │ │ │ │ +538CCCE216376E1BD6E423986BD4E83B1975B15092D4E19F885672F9E7C02485 │ │ │ │ +E02DA0F4243D324A5983D1D46444E5F6573F699E4F2A3395EF0EB7808B7D4D62 │ │ │ │ +690FD033E93AA553082273636503DA4BBBBFA6D127CE10424DD1DDF4F879305C │ │ │ │ +14F64180E7851D091B3220DFC70CAA44716B8F7F0C6FBEDB167801DED77F9E69 │ │ │ │ +E9B31CD2D8044DB946E511162976C34DE27F2BB974B70509005562A0A21317B7 │ │ │ │ +46D826A31C476C8F9A778F941FF5956BA2D765B1AD0AC4BC7AE1CD8A2A81F039 │ │ │ │ +06EB13EBD099BBDB2EBDB54D459C288EA69FB0018CE9255BBFB08C1F90FF30BD │ │ │ │ +C971DA7FDB193281B8F967F21AB42F13F36085AC9EC0D6B6B448C8F289B0AD70 │ │ │ │ +DB521A4755ECF9CA594741E5C674220C21C265EF3BAE594197B00048C8D4DB73 │ │ │ │ +4AC47B6A86EAC7EECD042C8E23C347F8C9FCB870473C1FBD91C298174BCBF1A9 │ │ │ │ +7B366C570A9A04A433495FBC9FD0FFC22A0E8181424C0F038ED97AD5054B10CC │ │ │ │ +1CD5BA0719DD0B4F4F18932AE87FF8B8C1CF0C7482B7847049761505DCD85146 │ │ │ │ +4EE5CB53993A9449CD05233E961BD49AE92D308E2065D6C6BF038538039AA56A │ │ │ │ +C59D424BE3175427337E16892D3920598D518423E145C6B2DD3881F338845F0D │ │ │ │ +16C47AA0D9C2D6DE99C6A302D567ACD6F98BF38223F1890E099C8F93348FFDAA │ │ │ │ +C2D3440187C8FED87C1A891EF11EFA7168EC47F72AF8BC5BE1B88B1084E704F5 │ │ │ │ +82099F1A79E556D94CC38851C97DC3864945A7470F1389BCF608BADAE45B236D │ │ │ │ +2934A20FFBCF169BF84DF496B07E7F1D9002E62B030337642804403DF7E4B3FF │ │ │ │ +C5A421EE0033BA06C50A041FBFE8F81AFC145664E2976505EB14859CF0377EBA │ │ │ │ +EA604CF8BFB5F9ADB9A7ED56E6F0F919E791D57C7232241C892EAC3E55D2D03B │ │ │ │ +FF43B9DAB7B1D8C6588D6D3503F49E80121E52254431B308752A936E0B51124D │ │ │ │ +C7F23C316BA6FA73E6BC47EB9550003E1393C68360067C094C65C0DD17214FA0 │ │ │ │ +45FF0F9C3E0AE4C81093752D23EA95E163C98EC04873ECE3FB0882567329525C │ │ │ │ +0A3937B16CA72B5EB6D2DC10C1B485C0BA939587AFEBB6D837A40401C666BC1C │ │ │ │ +F3344FBAB3E48BEE18F3AF5CDB33BA63778D373A851333C8C34E2F35AB94E8B4 │ │ │ │ +FF7E62A92ED83B872894E0A17209E14CF61269204A35A4BC8C7EE4B16F19E91F │ │ │ │ +669C4EFCECB187F6C7FAF92B4E14E400C6B3C81679D4A7196D66DB1E897DDA42 │ │ │ │ +47CC2848B46D581A95EEF85AB528E8CDEEB275D1E1FE197A3A08D36406E2DADF │ │ │ │ +A87D817AF18B5525F89B7C2E584F4A1254A1FC71E749999A2152870631A69CB6 │ │ │ │ +666EBD6BB3366A598F6592040D0E82B9D866DF0A76C362E76C2804D108A0C148 │ │ │ │ +51F42E9E0ABD52CC2D02B156B63AFD03313AFC80EACC83DF9B59F05FD798951D │ │ │ │ +FCF5335636DFC6561910ACE0AEC47F74CFD302EB7421D28AAAC8FF82B7CE2B2A │ │ │ │ +340B8BCE09F57BFCBC77F91096D97A85726E68846398C8C9C8D3A65A252AE8FB │ │ │ │ +166750C244963BC61E2236BAAC529FABD6FC774550096374A8DB81B6AF1EA843 │ │ │ │ +27F671C0045D629E3734EF037447C4763514FD1C4AE858A494AFC23A64C82149 │ │ │ │ +F4C0A7023B3865B84FAC2DC88D1553DCEBA3D8FB5DBC1103123F6B8CB5B3A399 │ │ │ │ +B665B26B001BF1E4BFABE42BFF6B02D69FA88D5CBCA5A11D5B48CFB4EAE60558 │ │ │ │ +5FBE254AD3BE01761CD4995E766E172D768621223505FD6AA8F89FC042EB814C │ │ │ │ +34373DAEC4FAAF71C0752F814154C5299F751CE7E0F9C673D2E448D0204C214C │ │ │ │ +C04DC34671FBEF72350FFBA263662E86A0D3795E310153AAF4C8A2623E167E6E │ │ │ │ +1F13A9BA485D5DDFC451D691DBA7C49E20354A7AD79D89F7EDE24F0D5B48B27D │ │ │ │ +568D01EF2555504196C09841F5970D8CF6C5D47FFFCF18AE6B2A485342000AAD │ │ │ │ +1F922FBEF7C98E0965609C89240E7B131A59551F57CD5C92097FCE75F5D2778F │ │ │ │ +F9ACF43A3273551363442C8C539205903A835C744A4AA953545506081D3D231A │ │ │ │ +A140E01F280BC42A3C35EDAD5F6B8CE6E51C68E41CA813710864ED880FCE846C │ │ │ │ +1B66D27CC2DBCDC2B1B96A12490BD76D67A415D4A6595CD9B19D3104A83D2C82 │ │ │ │ +C46DCD2C027F0565EDB83E54FF99498194D3140E55E8EE65EBDEAC5409B5616A │ │ │ │ +73141DA2D581E300A6057F4301A02DD160AB3E55A116313525122D0608816AA8 │ │ │ │ +4712EEF3D6FE8C893DF37D │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -4013,16 +4003,16 @@ │ │ │ │ /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 134[48 3[51 2[36 12[40 2[51 45 │ │ │ │ -26[59 11[25 45 4[45 1[45 1[45 3[25 44[{}13 90.9091 /CMSL10 │ │ │ │ +90.9091 /CMTI10 rf /Fg 139[35 1[36 2[45 9[40 1[40 51 │ │ │ │ +18[71 20[25 4[45 45 1[45 1[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 │ │ │ │ @@ -4141,18 +4131,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 1164 4 v │ │ │ │ -1346 w Fj(ZV)29 b Fg(:)i Ff(DRAFT)f Fg(F)-8 b(ebruary)30 │ │ │ │ -b(29,)i(2024)p 2737 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 1205 4 v │ │ │ │ +1387 w Fj(ZV)30 b Fg(:)g Ff(DRAFT)g Fg(Octob)s(er)h(4,)g(2025)p │ │ │ │ +2695 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 │ │ │ │ @@ -4206,17 +4196,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 1164 4 v 1345 100 a Fj(ZV)30 │ │ │ │ -b Fg(:)h Ff(DRAFT)121 b Fg(F)-8 b(ebruary)30 b(29,)h(2024)p │ │ │ │ -2689 100 V 1164 w Fk(3)0 399 y Fd(1.2.2)112 b(Instance)38 │ │ │ │ +TeXDict begin 3 2 bop 91 100 1205 4 v 1386 100 a Fj(ZV)30 │ │ │ │ +b Fg(:)h Ff(DRAFT)121 b Fg(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2648 100 V 1205 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 │ │ │ │ @@ -4280,19 +4270,19 @@ │ │ │ │ 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 1164 4 v │ │ │ │ -1346 w Fj(ZV)29 b Fg(:)i Ff(DRAFT)f Fg(F)-8 b(ebruary)30 │ │ │ │ -b(29,)i(2024)p 2737 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 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fk(4)p 136 100 1205 4 v │ │ │ │ +1387 w Fj(ZV)30 b Fg(:)g Ff(DRAFT)g Fg(Octob)s(er)h(4,)g(2025)p │ │ │ │ +2695 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 │ │ │ │ (ds.)111 1420 y(1.)46 b Fj(void)h(ZV_init)f(\()h(ZV)g(*zv,)g(int)g │ │ │ │ @@ -4366,17 +4356,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 1164 4 v 1345 100 a Fj(ZV)30 │ │ │ │ -b Fg(:)h Ff(DRAFT)121 b Fg(F)-8 b(ebruary)30 b(29,)h(2024)p │ │ │ │ -2689 100 V 1164 w Fk(5)0 399 y Fd(1.2.4)112 b(Utilit)m(y)38 │ │ │ │ +TeXDict begin 5 4 bop 91 100 1205 4 v 1386 100 a Fj(ZV)30 │ │ │ │ +b Fg(:)h Ff(DRAFT)121 b Fg(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2648 100 V 1205 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 │ │ │ │ @@ -4436,23 +4426,22 @@ │ │ │ │ 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 1164 4 v │ │ │ │ -1346 w Fj(ZV)29 b Fg(:)i Ff(DRAFT)f Fg(F)-8 b(ebruary)30 │ │ │ │ -b(29,)i(2024)p 2737 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 │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fk(6)p 136 100 1205 4 v │ │ │ │ +1387 w Fj(ZV)30 b Fg(:)g Ff(DRAFT)g Fg(Octob)s(er)h(4,)g(2025)p │ │ │ │ +2695 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 │ │ │ │ @@ -4529,17 +4518,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 1164 4 v 1345 100 a Fj(ZV)30 │ │ │ │ -b Fg(:)h Ff(DRAFT)121 b Fg(F)-8 b(ebruary)30 b(29,)h(2024)p │ │ │ │ -2689 100 V 1164 w Fk(7)111 399 y(6.)46 b Fj(int)h(ZV_writeToBinaryFile) │ │ │ │ +TeXDict begin 7 6 bop 91 100 1205 4 v 1386 100 a Fj(ZV)30 │ │ │ │ +b Fg(:)h Ff(DRAFT)121 b Fg(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2648 100 V 1205 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 │ │ │ │ @@ -4595,23 +4584,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 1164 4 v │ │ │ │ -1346 w Fj(ZV)29 b Fg(:)i Ff(DRAFT)f Fg(F)-8 b(ebruary)30 │ │ │ │ -b(29,)i(2024)p 2737 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 1205 4 v │ │ │ │ +1387 w Fj(ZV)30 b Fg(:)g Ff(DRAFT)g Fg(Octob)s(er)h(4,)g(2025)p │ │ │ │ +2695 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 February 29, 2024 │ │ │ │ │ + 2 ZV : DRAFT October 4, 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 February 29, 2024 3 │ │ │ │ │ + ZV : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 4 ZV : DRAFT October 4, 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 February 29, 2024 5 │ │ │ │ │ + ZV : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 6 ZV : DRAFT October 4, 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 February 29, 2024 7 │ │ │ │ │ + ZV : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 8 ZV : DRAFT October 4, 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 2024.02.29:1858 │ │ │ │ +%DVIPSSource: TeX output 2025.10.04:1734 │ │ │ │ %%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 │ │ │ │ @@ -2252,23 +2252,23 @@ │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ dup 50 /two put │ │ │ │ dup 52 /four put │ │ │ │ -dup 57 /nine put │ │ │ │ +dup 53 /five put │ │ │ │ dup 58 /colon put │ │ │ │ -dup 70 /F put │ │ │ │ -dup 97 /a put │ │ │ │ +dup 79 /O put │ │ │ │ dup 98 /b put │ │ │ │ +dup 99 /c put │ │ │ │ dup 101 /e put │ │ │ │ +dup 111 /o put │ │ │ │ dup 114 /r put │ │ │ │ -dup 117 /u put │ │ │ │ -dup 121 /y put │ │ │ │ +dup 116 /t put │ │ │ │ readonly def │ │ │ │ currentdict end │ │ │ │ currentfile eexec │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ @@ -2442,95 +2442,85 @@ │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B143FB218EDE899E4C47E0081BD91A7BAA1D80F1562B │ │ │ │ A19D442C49D1295FE662395CA9143CB136751300AB9F9341255A9BA1323DDE0B │ │ │ │ DB92E2D787DB0F57D7600215E8FC23ED8E1F0D3764780499D425D7824DE64B3F │ │ │ │ 988AB0C9ED06E600942526F12590D8A239B8AC70E319262AF6A41B2D45B2C200 │ │ │ │ 5DDD22E105A1F4AE4D2529C9B9A1CFBA75207C66D0B692FE7C9CEED9A54EE660 │ │ │ │ -7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ -6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ -8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ -55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ -79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ -B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ -7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA647CD0E2539DFAD9604486DCCFA49 │ │ │ │ -AC96130D106A8F8387633622C3809400D6E8FF9D60877C743502E4D211CEBF62 │ │ │ │ -9A6F91045C22D5D20C5FF677D89983D02E5EE26C71A9EAE0E7C52465DA5A149A │ │ │ │ -9B731C27EC8366BC3E841C0CAE49A33DE164A857365B17B09CAD121C47A980CB │ │ │ │ -C75E1030F6C394EDB46C54B46880D2344127B903FB22684C9CAACE6053DC3BFA │ │ │ │ -4E47C565ECAF19C4295A11BD68CA6D45B5738B932BB3690A8C712904C49C1636 │ │ │ │ -A7702075F2FEA8DB3EB3A3C1216BB769DD0BAF4507A18E3052F2C846B0797933 │ │ │ │ -8CE9BB2DB5DFADAF1B0FC3A22BAB82A0D5D290F7AD950013CFA465BE11C1076D │ │ │ │ -5833FF92321FBF90D9229D3BA09DD18EEC44D9FCF8FCF63CC09D2977BFA798B6 │ │ │ │ -47FB047EA6AF69C7DE570176F5B6C0FED74DEDBF7DDF49550DD84BA14AC09423 │ │ │ │ -F70D5B14F0F8588F1E2FFE0DFE0760E77A9E39DEDAC5C5AE3760722C029B916D │ │ │ │ -96A2A7D1DD6A61F90B4B9806314A668EB7A0E107A3527310A240490453CC18D7 │ │ │ │ -3793B4CF3CE13EA332E7F5C2BACF85AC75FE84693B966BB0F6FB9A179A331C4E │ │ │ │ -55E9EF30E2734E44A88E053CD5E650D7E529E94CB7F8B733E68315ACAC5BEFC5 │ │ │ │ -3FE4F585F875310267865679AB381125C31E9AEB7226DC9F18DA80A9DE2F38A4 │ │ │ │ -51B8F9D5B2FBA0F50D53AE6212AFE41466A594F7A303B4E82F1493C0B8D65756 │ │ │ │ -BE6AF2931E5ADA5CE7D51CB5B1EC916C6C6D674808939331CA66F8181DD2B112 │ │ │ │ -1A12198CCCB6BBF1D40C803E794B65241ACE1E0D30CCA1C6F2D3E1415B98726B │ │ │ │ -9BA303BE2C4C276108CC78C093F1CC85CA454CC38535D1DEBFA341D84E8A5DDF │ │ │ │ -D53D8DD0F4A812B5BA63871BEB3BCE93FBC77AD395914E2CD757546C2BE2D641 │ │ │ │ -FDB12258E1E1D10E1B963EABB265F2C8B2547D48963E1AD3B223B666B46915A1 │ │ │ │ -157F5EA0AB8D8411C07AA2EB5D0EF1A1BA6D81C47473A3D3D6287104C7BF61F8 │ │ │ │ -3BDB64995DE96A65BF2B7288C51ADAA3D373A95C40D5240C5FF397551554AA9E │ │ │ │ -C89C7E45AA7738503CB058EF6AD5052CC78E4445C810C250BF25394B8D7DE82E │ │ │ │ -315C9CCD6E1E9150EC79EE0F354C668AE199C1AFF39C67337A86CB932E8D64E9 │ │ │ │ -389FF3CC08B538492DEED017686DBB9BDEA30FE67FB4EBDB3627C16FD15F243A │ │ │ │ -7FDEB310EFC940E57726E94340472F2C452815927ADE21578C959890216BE504 │ │ │ │ -225BE4B4D2E3B19F5E06B5A0B25AF168C3A2B26F599A829F89C16BD2026E8CC9 │ │ │ │ -8FB3CBB830C3E36C099071A70D0B8834FF2C17364EB50D5C71440CC7BFE02321 │ │ │ │ -8C6ECAC2F7EC1BE39077DB0E8B2B251626A71FD038EB2CF1FC254D98C1535CAA │ │ │ │ -A8C987BC266482BD860A333048E1EDB3DD40A6ECD6DA0088AD9B9640202D89AA │ │ │ │ -0BB9A0ADF63491E67F2E97E35942D77E59B9B8AB0ED28B022EE5CD3449FC5B7A │ │ │ │ -19E38845B488F97D155C4312885E29537EAE97719C65845663480CE79DE8F037 │ │ │ │ -68995C0928FE8AFBEE554F01381EE5187578DF5D2542F26F66A599EE8ECC1F68 │ │ │ │ -FBADF3C2BA968C3CEB86675CF9A6CFD736E1422800D270417D497903DE87F2AE │ │ │ │ -938E39E120E9D3079F512E545E0E2616B84E81FE41392184F96818A7C86BF541 │ │ │ │ -F2E67C48CA56DA838C9FA0FAD538073B9F26319140D1F80EEEBCA190DE660A31 │ │ │ │ -457CAC16E92F87449A3734F9EA751588514865B58DC073658C8A857B5398AAC7 │ │ │ │ -3DC11E069996EF74A3189A07630D5DB87C5E028CD193C086B4D0E8BABC4F2393 │ │ │ │ -235EC96091B16C4A6D97DA1BD30A2D2E71F55869223CA66AD12448B668685F6E │ │ │ │ -06E7888D7F20045C662C4F7994CC7E1CE9AAC33A026716AA0551DF12343F0E22 │ │ │ │ -6E9F4B21C90406CC4997601194EF37A973221D1F4D73DD5666BD297F621C92AA │ │ │ │ -E3F698BC1146ADE754C4120EDF5B3E974D75A237E51DB49D52CD6CC7C9E8BD2D │ │ │ │ -E6849DF8F4DBA86C655D0C57CB54836C8A841C1D814F6B493F96ADBFCAD78D3B │ │ │ │ -430C58EF169950851B6A0B46411488B1A6F6974832787A24C0CDDBE27996EFB1 │ │ │ │ -DB341FA34B1DC6238D978D1E1D34AF3FB375ED6DA9C88699F195C88A54622F7C │ │ │ │ -36DAFC663D85660E756733A7E22F20C6A5D91F06087CAD10F7217BD33F343DC6 │ │ │ │ -F5EB9F16FE763672243EE6AE5CB6063A1D64670E1C059DD52134974E27D9D89C │ │ │ │ -BC658FCD814F20703D610C978FDCD6E2AEA31C18D1A310F215B28199F66C87DB │ │ │ │ -3B23980A393E1DD77AFA3045EDB6942505F3CF6204315A14E5B6BF2E96F3BB1F │ │ │ │ -628D24AC1893BC7DAEF3AA63F2116837F31DB90D872CBD9E5C48BCDEE781D20D │ │ │ │ -C6553D2D15F4E8438A9D1C7CEE1B72BD6AA08DC0AFEAF8B4DC1038707EE4A1BF │ │ │ │ -3D84460E60AF90F55002C1D8EBF0700F7EC3EFC944BEA78D0E0536F3AA6D9A84 │ │ │ │ -604A781AC5ACFEB7E681365315EE11E991C03DA431B65B332AD8F83F6F3AE66C │ │ │ │ -1BF434D3793FB5BCC44E44ACFF2855C2770C4AC678C6ACD6EB071974ACF1AE37 │ │ │ │ -D02C1736C62CC205A2F3488448527EFFA379613A8E6A6D134F4BFBAE6127304D │ │ │ │ -576C900A458E32CD42A4674415E03D8EB5742E71B854B3EDFD271AA214436544 │ │ │ │ -D1BCFD52F439298847E1FA258E5D38384FC85BC4EDC6F9E4431621CF763B137B │ │ │ │ -22DB6E3268B3F78881D55EA7C52ABF23FB73C152B06B708084FE1B00CFE72D9D │ │ │ │ -57B62AEE912E63BBD89D4D13CE896735454F1A16C3D9FB6CDF142CCA9F1C0242 │ │ │ │ -46F62109DF30667DA327F7CF6DC19B880C860C69080597FFCB1793313E202D4F │ │ │ │ -120A7C6B052C2EB7597B71B0985D24FDD2D3918393BF720E762C5DBBC2BB1E91 │ │ │ │ -B04560364EFE5B16EB068E0560FB932E0C617CFB95A166388E99AC4CB020F5BC │ │ │ │ -E24BB77352D7C3B21C37D404051A70FFFA0F726C35501A1FBB411F832CE46A2E │ │ │ │ -B424E26BD4 │ │ │ │ +7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E611ADF045E0AF3C │ │ │ │ +46E2F650CC36E969855BFA34B66B0C13481151129AA93F8003F666C963A5086C │ │ │ │ +8F7DA89ED6D2616BEC5F71C3D5C65C821419AF3C96D8B886441B1B129C103CE9 │ │ │ │ +71961454C9E8EEAB50A684882F5AFA6776BEB4765C6ED70B686F135C483E6923 │ │ │ │ +656E924A1A3AE8B1C8F2534E57EF4B62EB5F60AD32CE002FE7F15CBA8F8D641E │ │ │ │ +848C586A3C6CCF19C49E038F56DB0698B5AD852CBD82C7852D6DB691F71A1B3D │ │ │ │ +33AE7ACAA789088D8AA0AC9639BAFD8478636D028610FB45A3F87A84A0258806 │ │ │ │ +35EFCC18C665943291DF8304FAB48700A001189C575427FA5DF1FA6A29CE6187 │ │ │ │ +352649F116473EFF3FDD88DAD052FA85E99298349AF85AAE480898C93005277B │ │ │ │ +C09EFD8CDE285A2827F4659E339460ABEF319FE44D7A91E93CA309E9266E03DA │ │ │ │ +735F5DEF3920C01189BB63C2BD7ED0B92EABB481F123641477CDCCAB9751FB7B │ │ │ │ +F67DA7CE6EB134BC10D0228562BA5A6BFE6940907EF030ABF9EC4A8A0DFEF73D │ │ │ │ +3289E8CB4DC37694F5A656A935D92C72B3D82B012F578A27711B161DE9652ADC │ │ │ │ +71C51E743E4E9A7C6CF6FF16C5D65C1F60954C0858B48FAAC4FBB21988E2A934 │ │ │ │ +AC50C097DDF42C416359647D79F830E1430FB9BB803451A6732D1B5CAB817C1B │ │ │ │ +673B3077D9A180F184267E9990C087BCDEBC8EB8B889934DD0EB63C2EBCED4A3 │ │ │ │ +83A0D6A365412CFF610EF7BD5F82B02AA293F1D2F868768CDE9B801C929B4A38 │ │ │ │ +64E20C70BC4041F837AD15423517F7336A067D140A2C7906DC5D45885FFB3B69 │ │ │ │ +724E5B9B138BD15A9359EB25D14BC4193E529D1A49FEB0DC1015BF94CEBBD5E0 │ │ │ │ +EA148B185C53E12BD9FA6DBC097D789A73E832F02F55080D8ED6087F5952EA78 │ │ │ │ +250A4C65CE4C4013554A031446D2092D813C4CB1A605D97A40CF867F656ECD1C │ │ │ │ +C23F80230AD1E449AA8B4007134F71156719206441D92B1A6DD25101ABF69F70 │ │ │ │ +538CCCE216376E1BD6E423986BD4E83B1975B15092D4E19F885672F9E7C02485 │ │ │ │ +E02DA0F4243D324A5983D1D46444E5F6573F699E4F2A3395EF0EB7808B7D4D62 │ │ │ │ +690FD033E93AA553082273636503DA4BBBBFA6D127CE10424DD1DDF4F879305C │ │ │ │ +14F64180E7851D091B3220DFC70CAA44716B8F7F0C6FBEDB167801DED77F9E69 │ │ │ │ +E9B31CD2D8044DB946E511162976C34DE27F2BB974B70509005562A0A21317B7 │ │ │ │ +46D826A31C476C8F9A778F941FF5956BA2D765B1AD0AC4BC7AE1CD8A2A81F039 │ │ │ │ +06EB13EBD099BBDB2EBDB54D459C288EA69FB0018CE9255BBFB08C1F90FF30BD │ │ │ │ +C971DA7FDB193281B8F967F21AB42F13F36085AC9EC0D6B6B448C8F289B0AD70 │ │ │ │ +DB521A4755ECF9CA594741E5C674220C21C265EF3BAE594197B00048C8D4DB73 │ │ │ │ +4AC47B6A86EAC7EECD042C8E23C347F8C9FCB870473C1FBD91C298174BCBF1A9 │ │ │ │ +7B366C570A9A04A433495FBC9FD0FFC22A0E8181424C0F038ED97AD5054B10CC │ │ │ │ +1CD5BA0719DD0B4F4F18932AE87FF8B8C1CF0C7482B7847049761505DCD85146 │ │ │ │ +4EE5CB53993A9449CD05233E961BD49AE92D308E2065D6C6BF038538039AA56A │ │ │ │ +C59D424BE3175427337E16892D3920598D518423E145C6B2DD3881F338845F0D │ │ │ │ +16C47AA0D9C2D6DE99C6A302D567ACD6F98BF38223F1890E099C8F93348FFDAA │ │ │ │ +C2D3440187C8FED87C1A891EF11EFA7168EC47F72AF8BC5BE1B88B1084E704F5 │ │ │ │ +82099F1A79E556D94CC38851C97DC3864945A7470F1389BCF608BADAE45B236D │ │ │ │ +2934A20FFBCF169BF84DF496B07E7F1D9002E62B030337642804403DF7E4B3FF │ │ │ │ +C5A421EE0033BA06C50A041FBFE8F81AFC145664E2976505EB14859CF0377EBA │ │ │ │ +EA604CF8BFB5F9ADB9A7ED56E6F0F919E791D57C7232241C892EAC3E55D2D03B │ │ │ │ +FF43B9DAB7B1D8C6588D6D3503F49E80121E52254431B308752A936E0B51124D │ │ │ │ +C7F23C316BA6FA73E6BC47EB9550003E1393C68360067C094C65C0DD17214FA0 │ │ │ │ +45FF0F9C3E0AE4C81093752D23EA95E163C98EC04873ECE3FB0882567329525C │ │ │ │ +0A3937B16CA72B5EB6D2DC10C1B485C0BA939587AFEBB6D837A40401C666BC1C │ │ │ │ +F3344FBAB3E48BEE18F3AF5CDB33BA63778D373A851333C8C34E2F35AB94E8B4 │ │ │ │ +FF7E62A92ED83B872894E0A17209E14CF61269204A35A4BC8C7EE4B16F19E91F │ │ │ │ +669C4EFCECB187F6C7FAF92B4E14E400C6B3C81679D4A7196D66DB1E897DDA42 │ │ │ │ +47CC2848B46D581A95EEF85AB528E8CDEEB275D1E1FE197A3A08D36406E2DADF │ │ │ │ +A87D817AF18B5525F89B7C2E584F4A1254A1FC71E749999A2152870631A69CB6 │ │ │ │ +666EBD6BB3366A598F6592040D0E82B9D866DF0A76C362E76C2804D108A0C148 │ │ │ │ +51F42E9E0ABD52CC2D02B156B63AFD03313AFC80EACC83DF9B59F05FD798951D │ │ │ │ +FCF5335636DFC6561910ACE0AEC47F74CFD302EB7421D28AAAC8FF82B7CE2B2A │ │ │ │ +340B8BCE09F57BFCBC77F91096D97A85726E68846398C8C9C8D3A65A252AE8FB │ │ │ │ +166750C244963BC61E2236BAAC529FABD6FC774550096374A8DB81B6AF1EA843 │ │ │ │ +27F671C0045D629E3734EF037447C4763514FD1C4AE858A494AFC23A64C82149 │ │ │ │ +F4C0A7023B3865B84FAC2DC88D1553DCEBA3D8FB5DBC1103123F6B8CB5B3A399 │ │ │ │ +B665B26B001BF1E4BFABE42BFF6B02D69FA88D5CBCA5A11D5B48CFB4EAE60558 │ │ │ │ +5FBE254AD3BE01761CD4995E766E172D768621223505FD6AA8F89FC042EB814C │ │ │ │ +34373DAEC4FAAF71C0752F814154C5299F751CE7E0F9C673D2E448D0204C214C │ │ │ │ +C04DC34671FBEF72350FFBA263662E86A0D3795E310153AAF4C8A2623E167E6E │ │ │ │ +1F13A9BA485D5DDFC451D691DBA7C49E20354A7AD79D89F7EDE24F0D5B48B27D │ │ │ │ +568D01EF2555504196C09841F5970D8CF6C5D47FFFCF18AE6B2A485342000AAD │ │ │ │ +1F922FBEF7C98E0965609C89240E7B131A59551F57CD5C92097FCE75F5D2778F │ │ │ │ +F9ACF43A3273551363442C8C539205903A835C744A4AA953545506081D3D231A │ │ │ │ +A140E01F280BC42A3C35EDAD5F6B8CE6E51C68E41CA813710864ED880FCE846C │ │ │ │ +1B66D27CC2DBCDC2B1B96A12490BD76D67A415D4A6595CD9B19D3104A83D2C82 │ │ │ │ +C46DCD2C027F0565EDB83E54FF99498194D3140E55E8EE65EBDEAC5409B5616A │ │ │ │ +73141DA2D581E300A6057F4301A02DD160AB3E55A116313525122D0608816AA8 │ │ │ │ +4712EEF3D6FE8C893DF37D │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -5637,16 +5627,16 @@ │ │ │ │ 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 134[48 │ │ │ │ -3[51 2[36 12[40 2[51 45 26[59 11[25 45 4[45 1[45 1[45 │ │ │ │ +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 4[45 45 1[45 1[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 │ │ │ │ @@ -5722,47 +5712,46 @@ │ │ │ │ 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 1111 4 v │ │ │ │ -1293 w Fl(Misc)29 b Fh(:)41 b Fj(DRAFT)30 b Fh(F)-8 b(ebruary)30 │ │ │ │ -b(29,)i(2024)p 2789 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 b(this)e(metho)s(d)227 1255 y(\014nds)c │ │ │ │ -Fj(double-wide)i Fp(separators,)h(necessary)f(for)g(an)f(op)s(erator)h │ │ │ │ -(with)g(more)f(than)h(nearest)g(neigh)m(b)s(or)f(grid)227 │ │ │ │ -1368 y(p)s(oin)m(t)k(coupling.)45 b(The)31 b(metho)s(d)g(calls)i │ │ │ │ -(itself)g(recursiv)m(ely)-8 b(.)46 b(T)-8 b(o)32 b(\014nd)e(the)i(p)s │ │ │ │ -(erm)m(utation)g(for)f(an)h Fl(n1)47 b(x)h(n2)227 1480 │ │ │ │ -y(x)g(n3)29 b Fp(grid,)i(call)227 1667 y Fl(mkNDperm\(n1,)45 │ │ │ │ -b(n2,)i(n3,)g(newToOld,)e(0,)i(n1-1,)f(0,)i(n2-1,)e(0,)h(n3-1\))f(;)227 │ │ │ │ -1854 y Fp(from)30 b(a)h(driv)m(er)f(program.)227 1998 │ │ │ │ -y Fj(Err)-5 b(or)39 b(che)-5 b(cking:)49 b Fp(If)34 b │ │ │ │ -Fl(n1)p Fp(,)i Fl(n2)e Fp(or)h Fl(n3)g Fp(are)g(less)g(than)g(or)g │ │ │ │ -(equal)h(to)f(zero,)i(or)e(if)g Fl(newToOld)e Fp(is)i │ │ │ │ -Fl(NULL)p Fp(,)f(or)h(if)227 2111 y Fl(west)p 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 2224 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.)111 2399 y(3.)46 b Fl(void)h(localND2D)e(\()j(int)f(n1,)f(int)h │ │ │ │ -(n2,)g(int)g(p1,)g(int)g(p2,)1039 2511 y(int)g(dsizes1[],)e(int)h │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fp(2)p 136 100 1152 4 v │ │ │ │ +1334 w Fl(Misc)29 b Fh(:)41 b Fj(DRAFT)30 b Fh(Octob)s(er)g(4,)h(2025)p │ │ │ │ +2748 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 │ │ │ │ +b(this)e(metho)s(d)227 1255 y(\014nds)c Fj(double-wide)i │ │ │ │ +Fp(separators,)h(necessary)f(for)g(an)f(op)s(erator)h(with)g(more)f │ │ │ │ +(than)h(nearest)g(neigh)m(b)s(or)f(grid)227 1368 y(p)s(oin)m(t)k │ │ │ │ +(coupling.)45 b(The)31 b(metho)s(d)g(calls)i(itself)g(recursiv)m(ely)-8 │ │ │ │ +b(.)46 b(T)-8 b(o)32 b(\014nd)e(the)i(p)s(erm)m(utation)g(for)f(an)h │ │ │ │ +Fl(n1)47 b(x)h(n2)227 1480 y(x)g(n3)29 b Fp(grid,)i(call)227 │ │ │ │ +1667 y Fl(mkNDperm\(n1,)45 b(n2,)i(n3,)g(newToOld,)e(0,)i(n1-1,)f(0,)i │ │ │ │ +(n2-1,)e(0,)h(n3-1\))f(;)227 1854 y Fp(from)30 b(a)h(driv)m(er)f │ │ │ │ +(program.)227 1998 y Fj(Err)-5 b(or)39 b(che)-5 b(cking:)49 │ │ │ │ +b Fp(If)34 b Fl(n1)p Fp(,)i Fl(n2)e Fp(or)h Fl(n3)g Fp(are)g(less)g │ │ │ │ +(than)g(or)g(equal)h(to)f(zero,)i(or)e(if)g Fl(newToOld)e │ │ │ │ +Fp(is)i Fl(NULL)p Fp(,)f(or)h(if)227 2111 y Fl(west)p │ │ │ │ +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 2224 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.)111 2399 y(3.)46 b Fl(void)h(localND2D)e(\()j(int)f(n1,)f(int) │ │ │ │ +h(n2,)g(int)g(p1,)g(int)g(p2,)1039 2511 y(int)g(dsizes1[],)e(int)h │ │ │ │ (dsizes2[],)f(int)i(oldToNew[])e(\))j(;)227 2655 y Fp(This)31 │ │ │ │ b(metho)s(d)h(\014nds)e(a)i(lo)s(cal)i(nested)d(dissection)i(ordering)f │ │ │ │ ([)p Fo(?)p Fp(])g(for)g(an)g Fl(n1)47 b(x)h(n2)31 b │ │ │ │ Fp(2-D)i(grid.)45 b(There)32 b(are)227 2768 y Fl(p1)47 │ │ │ │ b(x)h(p2)24 b Fp(domains)g(in)h(the)g(grid.)38 b(The)25 │ │ │ │ b Fl(dsizes1[])d Fp(and)i Fl(dsizes2[])e Fp(v)m(ectors)k(are)g │ │ │ │ (optional;)i(they)c(allo)m(w)227 2881 y(the)34 b(user)f(to)i │ │ │ │ @@ -5820,17 +5809,17 @@ │ │ │ │ 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 1111 4 v 1292 100 a Fl(Misc)30 │ │ │ │ -b Fh(:)40 b Fj(DRAFT)121 b Fh(F)-8 b(ebruary)31 b(29,)g(2024)p │ │ │ │ -2742 100 V 1111 w Fp(3)111 399 y(5.)46 b Fl(void)h(fp2DGrid)e(\()j(int) │ │ │ │ +TeXDict begin 3 2 bop 91 100 1152 4 v 1334 100 a Fl(Misc)29 │ │ │ │ +b Fh(:)41 b Fj(DRAFT)121 b Fh(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2701 100 V 1152 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) │ │ │ │ @@ -5902,20 +5891,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 1111 4 v │ │ │ │ -1293 w Fl(Misc)29 b Fh(:)41 b Fj(DRAFT)30 b Fh(F)-8 b(ebruary)30 │ │ │ │ -b(29,)i(2024)p 2789 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 1152 4 v │ │ │ │ +1334 w Fl(Misc)29 b Fh(:)41 b Fj(DRAFT)30 b Fh(Octob)s(er)g(4,)h(2025)p │ │ │ │ +2748 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.) │ │ │ │ @@ -5990,17 +5979,17 @@ │ │ │ │ 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 1111 4 v 1292 100 a Fl(Misc)30 │ │ │ │ -b Fh(:)40 b Fj(DRAFT)121 b Fh(F)-8 b(ebruary)31 b(29,)g(2024)p │ │ │ │ -2742 100 V 1111 w Fp(5)227 399 y(dra)m(wn)h(b)s(et)m(w)m(een)h(t)m(w)m │ │ │ │ +TeXDict begin 5 4 bop 91 100 1152 4 v 1334 100 a Fl(Misc)29 │ │ │ │ +b Fh(:)41 b Fj(DRAFT)121 b Fh(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2701 100 V 1152 w Fp(5)227 399 y(dra)m(wn)h(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 │ │ │ │ @@ -6083,28 +6072,27 @@ │ │ │ │ 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 1111 4 v │ │ │ │ -1293 w Fl(Misc)29 b Fh(:)41 b Fj(DRAFT)30 b Fh(F)-8 b(ebruary)30 │ │ │ │ -b(29,)i(2024)p 2789 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 1152 4 v │ │ │ │ +1334 w Fl(Misc)29 b Fh(:)41 b Fj(DRAFT)30 b Fh(Octob)s(er)g(4,)h(2025)p │ │ │ │ +2748 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 │ │ │ │ @@ -6161,17 +6149,17 @@ │ │ │ │ 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 1111 4 v 1292 100 a Fl(Misc)30 │ │ │ │ -b Fh(:)40 b Fj(DRAFT)121 b Fh(F)-8 b(ebruary)31 b(29,)g(2024)p │ │ │ │ -2742 100 V 1111 w Fp(7)111 399 y(3.)46 b Fl(testOrderViaND)e(msglvl)i │ │ │ │ +TeXDict begin 7 6 bop 91 100 1152 4 v 1334 100 a Fl(Misc)29 │ │ │ │ +b Fh(:)41 b Fj(DRAFT)121 b Fh(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2701 100 V 1152 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 │ │ │ │ @@ -6241,35 +6229,34 @@ │ │ │ │ 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 1111 4 v │ │ │ │ -1293 w Fl(Misc)29 b Fh(:)41 b Fj(DRAFT)30 b Fh(F)-8 b(ebruary)30 │ │ │ │ -b(29,)i(2024)p 2789 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 1152 4 v │ │ │ │ +1334 w Fl(Misc)29 b Fh(:)41 b Fj(DRAFT)30 b Fh(Octob)s(er)g(4,)h(2025)p │ │ │ │ +2748 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) │ │ │ │ @@ -6328,17 +6315,17 @@ │ │ │ │ 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 1111 4 v 1292 100 a Fl(Misc)30 │ │ │ │ -b Fh(:)40 b Fj(DRAFT)121 b Fh(F)-8 b(ebruary)31 b(29,)g(2024)p │ │ │ │ -2742 100 V 1111 w Fp(9)1541 1617 y(Figure)g(1.1:)42 b │ │ │ │ +TeXDict begin 9 8 bop 91 100 1152 4 v 1334 100 a Fl(Misc)29 │ │ │ │ +b Fh(:)41 b Fj(DRAFT)121 b Fh(Octob)s(er)30 b(4,)h(2025)p │ │ │ │ +2701 100 V 1152 w Fp(9)1541 1617 y(Figure)g(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 │ │ │ │ @@ -6743,20 +6730,19 @@ │ │ │ │ 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 1088 4 │ │ │ │ -v 1271 w Fl(Misc)29 b Fh(:)41 b Fj(DRAFT)30 b Fh(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2812 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 │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fp(10)p 182 100 1130 4 │ │ │ │ +v 1312 w Fl(Misc)29 b Fh(:)41 b Fj(DRAFT)30 b Fh(Octob)s(er)g(4,)h │ │ │ │ +(2025)p 2771 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 │ │ │ │ @@ -7163,17 +7149,17 @@ │ │ │ │ 348.123 444.374 (0) radius drawLabel │ │ │ │ grestore │ │ │ │ showpage │ │ │ │ │ │ │ │ %%EndDocument │ │ │ │ @endspecial eop end │ │ │ │ %%Page: 11 11 │ │ │ │ -TeXDict begin 11 10 bop 91 100 1088 4 v 1270 100 a Fl(Misc)29 │ │ │ │ -b Fh(:)41 b Fj(DRAFT)121 b Fh(F)-8 b(ebruary)30 b(29,)h(2024)p │ │ │ │ -2719 100 V 1088 w Fp(11)227 399 y Fg(A)g Fp(is)f(factored)h(as)1106 │ │ │ │ +TeXDict begin 11 10 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(4,)h(2025)p │ │ │ │ +2678 100 V 1130 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 │ │ │ │ @@ -7282,20 +7268,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 1088 │ │ │ │ -4 v 1271 w Fl(Misc)29 b Fh(:)41 b Fj(DRAFT)30 b Fh(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2812 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 1130 │ │ │ │ +4 v 1312 w Fl(Misc)29 b Fh(:)41 b Fj(DRAFT)30 b Fh(Octob)s(er)g(4,)h │ │ │ │ +(2025)p 2771 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 │ │ │ │ @@ -7360,17 +7346,17 @@ │ │ │ │ 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 1088 4 v 1270 100 a Fl(Misc)29 │ │ │ │ -b Fh(:)41 b Fj(DRAFT)121 b Fh(F)-8 b(ebruary)30 b(29,)h(2024)p │ │ │ │ -2719 100 V 1088 w Fp(13)427 399 y Fl(nrow)47 b(ncol)g(nent)427 │ │ │ │ +TeXDict begin 13 12 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(4,)h(2025)p │ │ │ │ +2678 100 V 1130 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) │ │ │ │ @@ -7426,43 +7412,42 @@ │ │ │ │ (\(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 1088 │ │ │ │ -4 v 1271 w Fl(Misc)29 b Fh(:)41 b Fj(DRAFT)30 b Fh(F)-8 │ │ │ │ -b(ebruary)30 b(29,)h(2024)p 2812 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(try)g(is)f(small.)337 │ │ │ │ -1695 y Ff(\210)45 b Fp(If)30 b Fl(storeids)46 b(=)h(1)p │ │ │ │ -Fp(,)30 b(then)h(the)f(lo)s(cations)i(where)e(action)i(w)m(as)e(tak)m │ │ │ │ -(en)i(is)e(stored)h(in)f(an)g Fl(IV)g Fp(ob)5 b(ject.)337 │ │ │ │ -1835 y Ff(\210)45 b Fp(If)30 b Fl(storevalues)45 b(=)i(1)p │ │ │ │ -Fp(,)31 b(then)f(the)g(p)s(erturbations)f(are)i(stored)g(in)f(an)g │ │ │ │ -Fl(DV)g Fp(ob)5 b(ject.)337 1976 y Ff(\210)45 b Fp(The)37 │ │ │ │ -b Fl(matrixFileName)d Fp(parameter)k(is)f(the)h(name)f(of)h(the)g │ │ │ │ -(\014les)f(where)g(the)h(matrix)f(en)m(tries)i(are)427 │ │ │ │ -2089 y(read)31 b(from.)40 b(The)30 b(\014le)g(has)g(the)h(follo)m(wing) │ │ │ │ -h(structure.)427 2250 y Fl(neqns)47 b(neqns)f(nent)427 │ │ │ │ +TeXDict begin 14 13 bop 0 100 a Fp(14)p 182 100 1130 │ │ │ │ +4 v 1312 w Fl(Misc)29 b Fh(:)41 b Fj(DRAFT)30 b Fh(Octob)s(er)g(4,)h │ │ │ │ +(2025)p 2771 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 │ │ │ │ +(try)g(is)f(small.)337 1695 y Ff(\210)45 b Fp(If)30 b │ │ │ │ +Fl(storeids)46 b(=)h(1)p Fp(,)30 b(then)h(the)f(lo)s(cations)i(where)e │ │ │ │ +(action)i(w)m(as)e(tak)m(en)i(is)e(stored)h(in)f(an)g │ │ │ │ +Fl(IV)g Fp(ob)5 b(ject.)337 1835 y Ff(\210)45 b Fp(If)30 │ │ │ │ +b Fl(storevalues)45 b(=)i(1)p Fp(,)31 b(then)f(the)g(p)s(erturbations)f │ │ │ │ +(are)i(stored)g(in)f(an)g Fl(DV)g Fp(ob)5 b(ject.)337 │ │ │ │ +1976 y Ff(\210)45 b Fp(The)37 b Fl(matrixFileName)d Fp(parameter)k(is)f │ │ │ │ +(the)h(name)f(of)h(the)g(\014les)f(where)g(the)h(matrix)f(en)m(tries)i │ │ │ │ +(are)427 2089 y(read)31 b(from.)40 b(The)30 b(\014le)g(has)g(the)h │ │ │ │ +(follo)m(wing)h(structure.)427 2250 y Fl(neqns)47 b(neqns)f(nent)427 │ │ │ │ 2363 y(irow)h(jcol)g(entry)427 2476 y(...)95 b(...)g(...)427 │ │ │ │ 2638 y Fp(where)28 b Fl(neqns)e Fp(is)i(the)g(global)h(n)m(um)m(b)s(er) │ │ │ │ d(of)i(equations)h(and)e Fl(nent)g Fp(is)h(the)g(n)m(um)m(b)s(er)e(of)i │ │ │ │ (en)m(tries)h(in)e(this)427 2751 y(\014le.)49 b(There)32 │ │ │ │ b(follo)m(ws)i Fl(nent)e Fp(lines,)i(eac)m(h)g(con)m(taining)h(a)e(ro)m │ │ │ │ (w)g(index,)h(a)f(column)g(index)f(and)h(one)g(or)427 │ │ │ │ 2864 y(t)m(w)m(o)f(\015oating)f(p)s(oin)m(t)g(n)m(um)m(b)s(ers,)e(one)h │ │ │ │ @@ -7498,17 +7483,17 @@ │ │ │ │ 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 1088 4 v 1270 100 a Fl(Misc)29 │ │ │ │ -b Fh(:)41 b Fj(DRAFT)121 b Fh(F)-8 b(ebruary)30 b(29,)h(2024)p │ │ │ │ -2719 100 V 1088 w Fp(15)337 399 y Ff(\210)45 b Fl(type)29 │ │ │ │ +TeXDict begin 15 14 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(4,)h(2025)p │ │ │ │ +2678 100 V 1130 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 │ │ │ │ ├── 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 February 29, 2024 │ │ │ │ │ + 2 Misc : DRAFT October 4, 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 February 29, 2024 3 │ │ │ │ │ + Misc : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 4 Misc : DRAFT October 4, 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 February 29, 2024 5 │ │ │ │ │ + Misc : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 6 Misc : DRAFT October 4, 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 February 29, 2024 7 │ │ │ │ │ + Misc : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 8 Misc : DRAFT October 4, 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 February 29, 2024 9 │ │ │ │ │ + Misc : DRAFT October 4, 2025 9 │ │ │ │ │ Figure 1.1: R2D100 │ │ │ │ │ - 10 Misc : DRAFT February 29, 2024 │ │ │ │ │ + 10 Misc : DRAFT October 4, 2025 │ │ │ │ │ Figure 1.2: R2D100: fishnet domain decomposition │ │ │ │ │ - 3 3 3 3 3 3 3 0 0 5 │ │ │ │ │ + 3 3 3 3 3 3 3 0 0 5 │ │ │ │ │ 3 │ │ │ │ │ - 3 3 3 0 0 │ │ │ │ │ + 3 3 3 0 0 │ │ │ │ │ 3 3 │ │ │ │ │ 3 1 │ │ │ │ │ - 0 0 1 1 │ │ │ │ │ - 3 0 1 │ │ │ │ │ - 3 1 │ │ │ │ │ + 0 0 1 1 │ │ │ │ │ + 3 0 1 │ │ │ │ │ + 3 1 │ │ │ │ │ 0 1 │ │ │ │ │ - 2 0 1 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 │ │ │ │ │ + 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 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 February 29, 2024 11 │ │ │ │ │ + 2 2 4 4 │ │ │ │ │ + 0 4 4 │ │ │ │ │ + 2 2 0 4 4 4 4 4 4 4 │ │ │ │ │ + Misc : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 12 Misc : DRAFT October 4, 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 February 29, 2024 13 │ │ │ │ │ + Misc : DRAFT October 4, 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 February 29, 2024 │ │ │ │ │ + 14 Misc : DRAFT October 4, 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 February 29, 2024 15 │ │ │ │ │ + Misc : DRAFT October 4, 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 │ │ │ │ │ ...