--- /srv/rebuilderd/tmp/rebuilderdMShCkj/inputs/spooles-doc_2.2-16_all.deb +++ /srv/rebuilderd/tmp/rebuilderdMShCkj/out/spooles-doc_2.2-16_all.deb ├── file list │ @@ -1,3 +1,3 @@ │ -rw-r--r-- 0 0 0 4 2026-01-06 20:05:00.000000 debian-binary │ --rw-r--r-- 0 0 0 1956 2026-01-06 20:05:00.000000 control.tar.xz │ --rw-r--r-- 0 0 0 8071052 2026-01-06 20:05:00.000000 data.tar.xz │ +-rw-r--r-- 0 0 0 1964 2026-01-06 20:05:00.000000 control.tar.xz │ +-rw-r--r-- 0 0 0 8103944 2026-01-06 20:05:00.000000 data.tar.xz ├── control.tar.xz │ ├── control.tar │ │ ├── ./control │ │ │ @@ -1,13 +1,13 @@ │ │ │ Package: spooles-doc │ │ │ Source: spooles │ │ │ Version: 2.2-16 │ │ │ Architecture: all │ │ │ Maintainer: Debian Science Maintainers │ │ │ -Installed-Size: 8167 │ │ │ +Installed-Size: 8176 │ │ │ Suggests: libspooles2.2-dev │ │ │ Section: doc │ │ │ Priority: optional │ │ │ Multi-Arch: foreign │ │ │ Homepage: https://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 │ │ ├── ./md5sums │ │ │ ├── ./md5sums │ │ │ │┄ Files differ ├── data.tar.xz │ ├── data.tar │ │ ├── file list │ │ │ @@ -1,56 +1,56 @@ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2026-01-06 20:05:00.000000 ./ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2026-01-06 20:05:00.000000 ./usr/ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2026-01-06 20:05:00.000000 ./usr/share/ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2026-01-06 20:05:00.000000 ./usr/share/doc/ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/ │ │ │ --rw-r--r-- 0 root (0) root (0) 151661 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/A2.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 151845 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/A2.ps.gz │ │ │ -rw-r--r-- 0 root (0) root (0) 596035 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/ASHCRAFC.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 311494 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/AllInOne.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 127509 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/BKL.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 155729 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/BPG.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 189936 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/Chv.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 100593 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/ChvList.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 94309 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/ChvManager.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 120560 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/Coords.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 115568 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/DSTree.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 133685 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/DV.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 117405 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/DenseMtx.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 107205 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/Drand.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 121222 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/EGraph.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 220611 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/ETree.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 253828 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/Eigen.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 179310 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/FrontMtx.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 275089 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/FrontTrees.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 184159 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/GPart.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 189736 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/Graph.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 131669 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/I2Ohash.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 109554 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/IIheap.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 121336 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/IV.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 124238 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/IVL.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 95288 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/Ideq.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 204636 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/InpMtx.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 282735 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/LinSol.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 89077 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/Lock.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 176126 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/MPI.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 168360 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/MSMD.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 163089 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/MT.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 146144 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/Network.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 143207 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/PatchAndGoInfo.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 124339 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/Pencil.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 106897 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/Perm.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 910454 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/ReferenceManual.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 152692 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/SemiImplMtx.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 134286 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/SolveMap.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 175602 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/SubMtx.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 101250 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/SubMtxList.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 117447 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/SubMtxManager.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 120557 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/SymbFac.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 167630 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/Tree.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 189878 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/Utilities.ps.gz │ │ │ --rw-r--r-- 0 root (0) root (0) 127587 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/ZV.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 311920 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/AllInOne.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 127690 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/BKL.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 155911 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/BPG.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 190128 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/Chv.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 100778 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/ChvList.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 94518 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/ChvManager.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 120767 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/Coords.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 115813 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/DSTree.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 133897 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/DV.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 117623 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/DenseMtx.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 107396 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/Drand.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 121437 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/EGraph.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 220816 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/ETree.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 254192 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/Eigen.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 179502 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/FrontMtx.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 275415 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/FrontTrees.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 184372 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/GPart.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 189955 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/Graph.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 131816 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/I2Ohash.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 109769 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/IIheap.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 121571 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/IV.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 124473 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/IVL.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 95491 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/Ideq.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 204859 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/InpMtx.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 283143 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/LinSol.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 89269 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/Lock.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 176299 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/MPI.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 168507 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/MSMD.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 163255 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/MT.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 146338 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/Network.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 143401 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/PatchAndGoInfo.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 124533 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/Pencil.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 107066 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/Perm.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 910790 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/ReferenceManual.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 152901 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/SemiImplMtx.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 134472 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/SolveMap.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 175595 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/SubMtx.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 101449 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/SubMtxList.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 117641 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/SubMtxManager.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 120766 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/SymbFac.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 167819 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/Tree.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 190057 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/Utilities.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 127775 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/ZV.ps.gz │ │ │ -rw-r--r-- 0 root (0) root (0) 717 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/changelog.Debian.gz │ │ │ -rw-r--r-- 0 root (0) root (0) 378 2026-01-06 18:00:00.000000 ./usr/share/doc/spooles-doc/copyright │ │ │ --rw-r--r-- 0 root (0) root (0) 188706 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/misc.ps.gz │ │ │ +-rw-r--r-- 0 root (0) root (0) 188897 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/misc.ps.gz │ │ │ -rw-r--r-- 0 root (0) root (0) 9600 2026-01-06 20:05:00.000000 ./usr/share/doc/spooles-doc/spooles.2.2.html │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2026-01-06 20:05:00.000000 ./usr/share/doc-base/ │ │ │ -rw-r--r-- 0 root (0) root (0) 430 2026-01-06 18:00:00.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 2026.01.06:2033 │ │ │ │ +%DVIPSSource: TeX output 2026.01.10:0512 │ │ │ │ %%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 │ │ │ │ @@ -2060,14 +2060,15 @@ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ /UnderlineThickness 50 def │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ +dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ dup 54 /six put │ │ │ │ dup 58 /colon put │ │ │ │ dup 74 /J put │ │ │ │ dup 97 /a put │ │ │ │ dup 110 /n put │ │ │ │ dup 114 /r put │ │ │ │ @@ -2257,79 +2258,84 @@ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB88440048702D1F │ │ │ │ -77994EE04EC3B4531D6E1888C86A8F0DA6CF1F056F16AB0DD76C862830F89DA4 │ │ │ │ -28923B3AA543E0D6E41D3BD283E600BC11F889315EE92C675C109C81065ED1BC │ │ │ │ -82A5583D1B723D50051B0557A367887F5B263014C6E77288B4883C50889473D3 │ │ │ │ -3787BAD4BEB88BD1353AFA5B73E61814819537E7FF09F53EF94792BB3DD36ED0 │ │ │ │ -002D0E7A6CDAB85A9C17AF5664BCB5A71663B861880F3ECCABC8E7A2FC81A4CC │ │ │ │ -AE7A87503FDC1CE0077BA51ECC7B43B60793FED8E9AAD5BBD03ADD6183DCD26D │ │ │ │ -24A74163611C05562437644EF9B8889FD4F9D311911204FEFD35237486F2D2D0 │ │ │ │ -B6783A03BF12EA6D19D6D0F87E4D08515F12F9CBF1961CAA71E0D69FE3C4C4D2 │ │ │ │ -7C7FB64ED24F8684C8F00C2BEDEA53EA390CDC0B5BEBD7DD982580B2EA1F1F89 │ │ │ │ -CFED5916630DC2BA32BB9180277E1ABC339B3B7DE086717BD93F7FF3681BA5B3 │ │ │ │ -FCF671C4B293C2DE4A322F0AA3323A4934444C69F23EF90120B8755482757759 │ │ │ │ -C457A435FB8BB4922BD92C5F3D9555D978275C510183E29DFF2FCE4ABBFC18DE │ │ │ │ -76CAD3B486BA12047DD808CD4D521A0FD368E4AE79DE262630983A5D6F0B679D │ │ │ │ -2F005306393C520E1B6987302D029939D94B0178DB06211C7F3B123A41E6E7BA │ │ │ │ -87164737110707A3ED3983895F3FBC815EF370F54C808ED93D910937BCA3D8AF │ │ │ │ -7CBF80DC180CDA54059DB76710B4FCD4139D5B7DA7DB1A0D0AF86AD2453D3691 │ │ │ │ -0BA5BAD40FF28BB4235FCD40FC87C2B888E67928D9B0ACA5692149373DBB93BF │ │ │ │ -6520DDD36A9BFE4D415CA67A5E04F1D48BDB28C69676273ED842CF7980E8E17C │ │ │ │ -B88563F407E340AFAE8F51AABCF8A39521BCEE1EC8396D75E124B24B4675909F │ │ │ │ -E246F87DA08584A3173AEFF153ECDF610543FA7474D125A31ADD6285A49222B5 │ │ │ │ -177066EA395BFA4B1114C7FCF7712DA772A21C99E64F4E1181E69CAF98137FA2 │ │ │ │ -76CF74F682B8CD7BA6EEA79B70FA8A76809634517F8415B6F21A5A7D6099B5E8 │ │ │ │ -EAB356BBC4FB68C72B8C61DDCE8EAB1A53B9D6BAD78584B307EFF57CEAE74884 │ │ │ │ -35987BF89E9E60E962D22FA5612F2DB5EB840499B7CC11A34BA5DEE30D277540 │ │ │ │ -39B8211D69B448ADE95B723F8369A631DE6DD75703AFD7485FB7FFF41A60CBE4 │ │ │ │ -813B8FEA120662355773830EF85015E7FFD609B2CEE52CB5FFE9C35B6BEEE4A4 │ │ │ │ -A66719E31CE1523FDD7771FB1E881A32A7DB7D92C2326DF4B93241C14ABFCCD6 │ │ │ │ -8E5BCAC61E800E6B1B4687ADA4CBF41EC0AFC26D021D1772CBDCD0516DF5EBE1 │ │ │ │ -37FD2AC5ABB8D774B5735940F1F6866D044FD8CE74444FAA5D0202C11E39CC10 │ │ │ │ -213731F41F704450E1D0565013BF22188442CE0FC256190A9F92F0C802AA2660 │ │ │ │ -614AFE9E9C82F8CD2E6035EEF84E5F16CBB690AC819B4B910EA8E81106F0ACE5 │ │ │ │ -CDFE77DAF69E4AFE72C43145A3ABCC40B6C5297487083F738C86422277AC2267 │ │ │ │ -51759F1B7F129E87DE16433B664AD0FB6D30424A11C70B52B591352BF653C8B0 │ │ │ │ -0840C224FBFEAA996A6BE1D69414DD778C2EF56A63B64D59BA412EC3E4000831 │ │ │ │ -73361FB9813F9A7C74BA3A50D331B07B61492E5D75F0861B530587269B3ADC90 │ │ │ │ -EA1DF586AC4BC57C3230893EFE953A6E76950ABA895FAC711D3BD330ABC6846A │ │ │ │ -C91F6ABF3410B913DFE5C8266020CEE5C7A9EDA2E7D9BCA797DC486443C7BA7C │ │ │ │ -7E03439A40927FA3251B6D417E5653E7799E9D6F04149C34096E2CA9B1F9B1EC │ │ │ │ -38958A2521B4A657A8B9F16E1FD66C7E345A10D7AA0241559503D214AC6507A4 │ │ │ │ -CBDE8617AA7ED136577734428594487F3565BF45FA196375759E2FE23C26EC8A │ │ │ │ -3310A36917A5E2F260EAB31030F8E570303D36B833626938F56939849DFA1F3F │ │ │ │ -66D0A317BB6364427F1512AAB380B555611C76345C02C3A6FBF78590331D5ECA │ │ │ │ -029DEFB722F6AB05327C2A31AB7BD6ED0F0386E6F45C1278048D22B90B074CCB │ │ │ │ -2BBEBCC1927C97EC532E651CAF0058AFE8FC08F00F0216D5DD9830C294FF76DA │ │ │ │ -426A073B3A3AEEFBDEE71C5182186311607ECDBD1F1AF4C5E79748CD01445C8D │ │ │ │ -25DD49490C8A6810065908222C8D0AC9F83AFBEE7115023E2D2615A170A5D40A │ │ │ │ -AD49BDF59A59187B6434F83E68EED22EF4EFDBADED6F1559AC779E0377FE7375 │ │ │ │ -D7060584FE74B1859D0FD98772253A712B17FFBB467840C484F5EF82C5677ADB │ │ │ │ -EDF159A456A526B8B9F6E8FC7608DFD47B0F09E26118F79CBE53B6C4E32BACAB │ │ │ │ -D62AFD4AA527CC4B587BB41A17A9BCE106A8C592BC9B73422B712C466C284A17 │ │ │ │ -E8D0C1E01D43C739FB1C083AD2714F78AC785B0C09AA7E67417A73510E00F2FE │ │ │ │ -E3D3EBF626A2F3A20A386E3F98D1285F4A2A332FC609CD191F01F128627B3505 │ │ │ │ -0AC2387DC0AD1B950490EBB5045F22BEC54955402CE2D267B6754E7C32BE84E8 │ │ │ │ -E6B63E3D3EAEE979442D167AEF69C27B22A8E887A2510C3A168D95D285CF7515 │ │ │ │ -011C921679B2F386575826A3F2071D015EEB78F02A4F94D4E5F07873623200F8 │ │ │ │ -7DF95BA0DC6B6D31DECC925BEA1E6A7C52FE685800EC33CBAE830F1AE5454DFA │ │ │ │ -913B8F457D7E2D3DFF019869E3301EEEC64A38295DE6B588E776922B32362382 │ │ │ │ -D1CF3D058613C8A96E6994D3EC23E8B71EC6E718383B20BB6C22DB6F93FA559F │ │ │ │ -3449CA84EB33B25C8BE0DFD1C29DC4FBD7AFBDC96C12162CAAB2C5E354B0FB10 │ │ │ │ -4BF8CC3610875ABD5111D09F2F847822118972214EDEB9EE34BAFE45E7AC15C5 │ │ │ │ -CA63EC4A3CEEA505A5EDD88A59BB67C71C3E026DFFE177F99BC69E6635545D03 │ │ │ │ -77A634F98230EF64381EC67CA519D4B9770EFA844789E21970F89D5FFC5DEAA8 │ │ │ │ -DC008EBA09306967ED090FF91B002FA6120C2B461A87AA32EFB003C5578D8EEF │ │ │ │ - │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ +AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ +E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ +46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ +FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ +389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ +7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ +2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ +C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ +B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ +AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ +E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ +F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ +0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ +2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ +29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ +CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ +6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ +5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ +36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0DD96AB602D004DCFE000A0 │ │ │ │ +ABE41BAB8AB7D50BD32BFD6F1AA3B60B09B9BE4E273EDD2DDCB21A98A760D17D │ │ │ │ +0A5C9303AFE63CF80A93E60C72A0576FAADEECBE2DE91892D210EB0AD1889C04 │ │ │ │ +C7530652584E775B4ED19CFB4B8DBCCC57A9FA9E4DDC8A1E5A1D3BE9E93407A6 │ │ │ │ +2C237ACE27F4EDA330EE952EDCBE91683AA98A29197735006666C96A2CE7C787 │ │ │ │ +BBA5A57C4DBF6FAA5B38AF226B5D9A65FAD84650AC0C3DB29C30602699F81E01 │ │ │ │ +0BAF8F1CE44A03C680121B77A1703C638187675D6C22C49F9902475E6CE9C732 │ │ │ │ +48ED028CC92EA542EF189CC9CA1C384E3387793057615D0A2BF040CC90B275B9 │ │ │ │ +F70A5310874DC2E0A360373E7BCAC88250FBC8989C7D18DA8274C06F02FCF31C │ │ │ │ +2B3868CBAF083DAC2FB159DE368261842DB7C9EA1A86B17617C861A48FBA8FF9 │ │ │ │ +D184CB026F4A418C0955347612F94C039B1536A76CB182A591DD7C02D509CF16 │ │ │ │ +8B9E46502ABF5DE31F5DFBD19C7417A2AF7AF13F0D5FF837C94CE56F07B96337 │ │ │ │ +0ED215252346FAEB54B5F3ABE29709B7ECB9FBD23A4AD397E6ABA6938F1BBF33 │ │ │ │ +1D5460D9414F0B8725DA832744525C13E3FD9C8DB33FBEE12F9C4969988402C8 │ │ │ │ +96AF916364CC2DF17EDBA622FC0A5D0013418E29F912FFA06F8D7E31ECAB0B08 │ │ │ │ +C4D2D8EE537CC768FC9038DD6D86D33642C6E812E941F157FC6917AF19C2B99A │ │ │ │ +5BF10B9A7ECF711BBB6F33C8C3DAD778153122593F36ABDDC0E97A602B045DE6 │ │ │ │ +19BD82D877DDA960AB11EF48C7F75A28D0D731D4A5DBC98283087267CD1A470D │ │ │ │ +537E949DA5EECF097B099547995BE066A941CED683B5748962AD2B02C21636C0 │ │ │ │ +2EAFA33CA0CB3BF8A95703F015A210D918865B9BEA2890DCFB68BC3719C305EC │ │ │ │ +315EC8727BF9A93632AB9E3090B100C022EE1396CD329B37547F26A7DCE52BD7 │ │ │ │ +F91B7388DEC34F4A0C6D46CD7CA6ACC00C5C4C71E47C6AD96496B3CBF531F342 │ │ │ │ +A740EE6B99BD70AD490DFA700772A0697EC6561CE88A0113E4DC3B21F372D810 │ │ │ │ +DFF2C3F6EDF3E917BF2664EEFC9AD292DD6CC36853CF936018D43FDB28D5B001 │ │ │ │ +7D1C805F958F13FD221377ABDD69D102E8CC1DAB2E011EE16CF6DB9D195BA702 │ │ │ │ +5A8738FABF989B0351282D0E5121182DFC52169782A5F3DD5D820411BEF909DE │ │ │ │ +04D963E6FDA76F88508C4E91DDAAA1748F396A1D380D8CA429673AF27C164434 │ │ │ │ +771781B39565D3EE50F3CF03EF12908B13A6C11C9AB7631B32125828B13050BA │ │ │ │ +041A93B97AC32D4A1E28C5FA98CDEE998B5F97823D6291D01E3611A16854F1FE │ │ │ │ +69B9D6D2AE3E56D012B7BC3E582FB4C23188A5E365E65EB1F804A706AF73A2F8 │ │ │ │ +9804808EF71F0982B14133BF9A27D6F2E719BDB751022B1B052722933948904E │ │ │ │ +3582E363478DCDA115205A0FDE39DF71FEAEEB104419C35A6B0678C19616C6D9 │ │ │ │ +A892DC2F4257069AF096C80C099CD13024DF3995F28C694E00D1F08B43D4450C │ │ │ │ +D18F5C925CFD2D124E74FC64BBAA0DE32A79E4A4507B5B5DD834C67160CDA110 │ │ │ │ +EF0061DD27E8864F4250A92BBEFD75C784BB98F4FA789A8236C2A21E4E61ABD0 │ │ │ │ +C6B4D13B3C31AC8E55FA34BEC7C308C61FB0280382EC6AFD63D959678D42D2B3 │ │ │ │ +4134F6236A0808D9302B4E3C6F81FC6973B4833602750CCB5DE36AEA23ED6BD4 │ │ │ │ +5B72DF0DD7B81C871CAA6EC190748CD8C4B998D576E5D340ACAC0617DDBE461C │ │ │ │ +8E82E809D11A01D265D039F4315066832E27E08A6F067E129E45FBF533F761BB │ │ │ │ +EC3C071209BECE7D14D3184B2E6BFD65717A5A7C08F3776B20C513649488C1CF │ │ │ │ +03333805B249D1034FB0AE2D7D2A23324EE27AEDB68F8E329A8052FE58D7C0D9 │ │ │ │ +A40A0CDC79F2085C4F39A7DFDB625C8F071E2A32CF6215DD3E060A9BABF7A3AA │ │ │ │ +C57DA0C0571C5D6EEAA975D1BB9C99F8EA4958360E43E8C60080B03DC4435550 │ │ │ │ +E6048DDD35DF3E5DA69669F266FFD7B44649A68025270DC84258E329F6E6907C │ │ │ │ +BCFF900D715D0C7EC43C5E7180CAD6427BA4FD41AAD6531A5C06B0EC26DDA71F │ │ │ │ +4A9DA50DE919E79226F6DDF7C1BA478936AA86CEAD93072CC2960E98C45A1A0C │ │ │ │ +60CF8A26E4278AB4F9E28FA6532648196CC455607D6BCD00F60675DE8CC02C8C │ │ │ │ +9BE5D5B714731814D5B008EE236563D77AC6895E0158877C95797E07C02AFEBE │ │ │ │ +CC9FE97D5E103F7DB0A834E9A7A75893EC66340B0E4C6F0EEDEF43415BF9FCF4 │ │ │ │ +47340CBEA4DCFBA0D028EB2149FFBBDB3322AE5F6FD20242526EDC55E476D983 │ │ │ │ +DC │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -4618,16 +4624,16 @@ │ │ │ │ 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 3[46 12[42 22[43 15[23 3[42 3[42 1[42 3[23 │ │ │ │ -44[{}11 83.022 /CMSL10 rf /Fg 139[62 4[62 4[62 4[62 1[62 │ │ │ │ +3[46 2[33 3[46 12[42 22[43 15[23 3[42 3[42 42 42 3[23 │ │ │ │ +44[{}12 83.022 /CMSL10 rf /Fg 139[62 4[62 4[62 4[62 1[62 │ │ │ │ 62 32[62 14[62 50[{}8 119.552 /CMTT12 rf /Fh 136[55 1[45 │ │ │ │ 28 34 35 1[42 42 47 68 21 38 1[25 42 38 1[38 42 38 38 │ │ │ │ 42 12[59 1[61 11[54 56 63 2[62 6[25 58[{}26 83.022 /CMTI10 │ │ │ │ rf │ │ │ │ %DVIPSBitmapFont: Fi tcrm1000 10 1 │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ /Dotaccent/cedilla/ogonek/quotesinglbase.ts1 4{/.notdef}repeat │ │ │ │ @@ -4752,17 +4758,17 @@ │ │ │ │ 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 1266 4 v │ │ │ │ -1431 w Fl(A2)27 b Ff(:)37 b Fh(DRAFT)27 b Ff(Jan)n(uary)e(6,)j(2026)p │ │ │ │ -2635 100 V 0 390 a Fe(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fm(2)p 125 100 1245 4 v │ │ │ │ +1410 w Fl(A2)27 b Ff(:)37 b Fh(DRAFT)27 b Ff(Jan)n(uary)f(10,)g(2026)p │ │ │ │ +2656 100 V 0 390 a Fe(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ 573 y Fm(As)21 b(usual,)g(there)f(are)g(four)g(basic)g(metho)r(ds)g(to) │ │ │ │ h(supp)r(ort)f(ob)5 b(ject)20 b(creation,)h(setting)f(default)h │ │ │ │ (\014elds,)h(clearing)d(an)n(y)h(allo)r(cated)0 672 y(data,)27 │ │ │ │ b(and)h(free'ing)f(the)h(ob)5 b(ject.)101 889 y(1.)42 │ │ │ │ b Fl(A2)g(*)h(A2_new)f(\()h(void)f(\))h(;)208 1027 y │ │ │ │ Fm(This)28 b(metho)r(d)g(simply)h(allo)r(cates)e(storage)f(for)h(the)i │ │ │ │ Fl(A2)e Fm(structure)h(and)g(then)h(sets)f(the)g(default)h(\014elds)f │ │ │ │ @@ -4821,17 +4827,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 1266 4 v 1431 100 a Fl(A2)27 │ │ │ │ -b Ff(:)37 b Fh(DRAFT)110 b Ff(Jan)n(uary)26 b(6,)h(2026)p │ │ │ │ -2595 100 V 1266 w Fm(3)101 390 y(6.)42 b Fl(double)f(*)i(A2_row)e(\()i │ │ │ │ +TeXDict begin 3 2 bop 83 100 1245 4 v 1411 100 a Fl(A2)26 │ │ │ │ +b Ff(:)37 b Fh(DRAFT)111 b Ff(Jan)n(uary)25 b(10,)i(2026)p │ │ │ │ +2616 100 V 1245 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 │ │ │ │ @@ -4902,17 +4908,17 @@ │ │ │ │ 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 1266 4 v │ │ │ │ -1431 w Fl(A2)27 b Ff(:)37 b Fh(DRAFT)27 b Ff(Jan)n(uary)e(6,)j(2026)p │ │ │ │ -2635 100 V 0 390 a Fe(1.2.3)112 b(Initialize)38 b(metho)s(ds)101 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fm(4)p 125 100 1245 4 v │ │ │ │ +1410 w Fl(A2)27 b Ff(:)37 b Fh(DRAFT)27 b Ff(Jan)n(uary)f(10,)g(2026)p │ │ │ │ +2656 100 V 0 390 a Fe(1.2.3)112 b(Initialize)38 b(metho)s(ds)101 │ │ │ │ 574 y Fm(1.)k Fl(void)f(A2_init)g(\()i(A2)g(*mtx,)f(int)g(type,)f(int)i │ │ │ │ (n1,)f(int)h(n2,)f(int)g(inc1,)g(int)g(inc2,)861 674 │ │ │ │ y(double)f(*entries)g(\))i(;)208 812 y Fm(This)30 b(is)h(the)g(basic)f │ │ │ │ (initializer)h(metho)r(d.)47 b(W)-7 b(e)31 b(require)e(that)i │ │ │ │ Fl(mtx)f Fm(not)h(b)r(e)g Fl(NULL)p Fm(,)e Fl(type)g │ │ │ │ Fm(b)r(e)j(either)e Fl(SPOOLES)p 3702 812 27 4 v 29 w(REAL)208 │ │ │ │ 912 y Fm(or)d Fl(SPOOLES)p 623 912 V 29 w(COMPLEX)p Fm(,)e │ │ │ │ @@ -4996,17 +5002,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 1266 4 v 1431 100 a Fl(A2)27 │ │ │ │ -b Ff(:)37 b Fh(DRAFT)110 b Ff(Jan)n(uary)26 b(6,)h(2026)p │ │ │ │ -2595 100 V 1266 w Fm(5)101 390 y(4.)42 b Fl(void)f(A2_applyQT)f(\()j │ │ │ │ +TeXDict begin 5 4 bop 83 100 1245 4 v 1411 100 a Fl(A2)26 │ │ │ │ +b Ff(:)37 b Fh(DRAFT)111 b Ff(Jan)n(uary)25 b(10,)i(2026)p │ │ │ │ +2616 100 V 1245 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 │ │ │ │ @@ -5074,17 +5080,17 @@ │ │ │ │ 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 1266 4 v │ │ │ │ -1431 w Fl(A2)27 b Ff(:)37 b Fh(DRAFT)27 b Ff(Jan)n(uary)e(6,)j(2026)p │ │ │ │ -2635 100 V 101 390 a Fm(9.)42 b Fl(double)f(A2_twoNormOfRow)c(\()43 │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fm(6)p 125 100 1245 4 v │ │ │ │ +1410 w Fl(A2)27 b Ff(:)37 b Fh(DRAFT)27 b Ff(Jan)n(uary)f(10,)g(2026)p │ │ │ │ +2656 100 V 101 390 a Fm(9.)42 b Fl(double)f(A2_twoNormOfRow)c(\()43 │ │ │ │ b(A2)g(*mtx,)e(int)i(irow)f(\))h(;)208 521 y Fm(This)27 │ │ │ │ b(metho)r(d)h(returns)f(the)h(t)n(w)n(o-norm)e(of)h(ro)n(w)g │ │ │ │ Fl(irow)f Fm(of)h(the)h(matrix.)208 652 y Fh(Err)l(or)d(che)l(cking:)36 │ │ │ │ b Fm(If)22 b Fl(mtx)f Fm(is)h Fl(NULL)p Fm(,)e(or)i Fl(irow)e │ │ │ │ Fm(is)i(not)g(in)g Fl([0,n1-1])p Fm(,)e(an)i(error)e(message)h(is)h │ │ │ │ (prin)n(ted)g(and)g(the)g(program)208 751 y(exits.)60 │ │ │ │ 914 y(10.)41 b Fl(double)g(A2_infinityNorm)o(OfR)o(ow)c(\()43 │ │ │ │ @@ -5157,17 +5163,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 1266 4 v 1431 100 a Fl(A2)27 │ │ │ │ -b Ff(:)37 b Fh(DRAFT)110 b Ff(Jan)n(uary)26 b(6,)h(2026)p │ │ │ │ -2595 100 V 1266 w Fm(7)208 390 y Fh(Err)l(or)j(che)l(cking:)38 │ │ │ │ +TeXDict begin 7 6 bop 83 100 1245 4 v 1411 100 a Fl(A2)26 │ │ │ │ +b Ff(:)37 b Fh(DRAFT)111 b Ff(Jan)n(uary)25 b(10,)i(2026)p │ │ │ │ +2616 100 V 1245 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 │ │ │ │ @@ -5241,17 +5247,17 @@ │ │ │ │ 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 1266 4 v │ │ │ │ -1431 w Fl(A2)27 b Ff(:)37 b Fh(DRAFT)27 b Ff(Jan)n(uary)e(6,)j(2026)p │ │ │ │ -2635 100 V 60 390 a Fm(13.)41 b Fl(void)g(A2_setRowDV)f(\()j(A2)f │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fm(8)p 125 100 1245 4 v │ │ │ │ +1410 w Fl(A2)27 b Ff(:)37 b Fh(DRAFT)27 b Ff(Jan)n(uary)f(10,)g(2026)p │ │ │ │ +2656 100 V 60 390 a Fm(13.)41 b Fl(void)g(A2_setRowDV)f(\()j(A2)f │ │ │ │ (*mtx,)g(DV)h(rowDV,)e(int)h(irow)g(\))h(;)208 520 y │ │ │ │ Fm(This)27 b(metho)r(d)h(\014lls)g(ro)n(w)e Fl(irow)g │ │ │ │ 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 │ │ │ │ @@ -5326,17 +5332,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 1266 4 v 1431 100 a Fl(A2)27 │ │ │ │ -b Ff(:)37 b Fh(DRAFT)110 b Ff(Jan)n(uary)26 b(6,)h(2026)p │ │ │ │ -2595 100 V 1266 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 1245 4 v 1411 100 a Fl(A2)26 │ │ │ │ +b Ff(:)37 b Fh(DRAFT)111 b Ff(Jan)n(uary)25 b(10,)i(2026)p │ │ │ │ +2616 100 V 1245 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 │ │ │ │ @@ -5423,17 +5429,17 @@ │ │ │ │ (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 1245 4 │ │ │ │ -v 1410 w Fl(A2)26 b Ff(:)37 b Fh(DRAFT)28 b Ff(Jan)n(uary)d(6,)i(2026)p │ │ │ │ -2656 100 V 101 390 a Fm(4.)42 b Fl(int)g(A2_writeToFile)c(\()43 │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fm(10)p 166 100 1224 4 │ │ │ │ +v 1389 w Fl(A2)27 b Ff(:)37 b Fh(DRAFT)27 b Ff(Jan)n(uary)e(10,)i(2026) │ │ │ │ +p 2676 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 │ │ │ │ @@ -5510,17 +5516,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 1245 4 v 1411 100 a Fl(A2)26 │ │ │ │ -b Ff(:)37 b Fh(DRAFT)111 b Ff(Jan)n(uary)25 b(6,)i(2026)p │ │ │ │ -2574 100 V 1245 w Fm(11)307 390 y Fi(\210)42 b Fm(The)28 │ │ │ │ +TeXDict begin 11 10 bop 83 100 1224 4 v 1390 100 a Fl(A2)27 │ │ │ │ +b Ff(:)37 b Fh(DRAFT)110 b Ff(Jan)n(uary)25 b(10,)i(2026)p │ │ │ │ +2595 100 V 1224 w Fm(11)307 390 y Fi(\210)42 b Fm(The)28 │ │ │ │ b Fl(seed)e Fm(parameter)g(is)h(a)h(random)e(n)n(um)n(b)r(er)i(seed.) │ │ │ │ 101 573 y(2.)42 b Fl(test_QR)e(msglvl)h(msgFile)g(type)h(nrow)g(ncol)g │ │ │ │ (inc1)g(inc2)g(seed)208 706 y Fm(This)22 b(driv)n(er)g(program)e(tests) │ │ │ │ j(the)g Fl(A2)p 1376 706 27 4 v 30 w(QRreduce\(\))c Fm(and)k │ │ │ │ Fl(A2)p 2110 706 V 30 w(QRreduce2\(\))18 b Fm(metho)r(ds)23 │ │ │ │ b(whic)n(h)g(reduce)f Fk(A)h Fm(to)g Fk(QR)g Fm(via)208 │ │ │ │ 805 y(rank-1)g(and)i(rank-2)f(up)r(dates.)36 b(Use)25 │ │ │ │ ├── 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 January 6, 2026 │ │ │ │ │ + 2 A2 : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 3 │ │ │ │ │ + A2 : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 4 A2 : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 5 │ │ │ │ │ + A2 : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 6 A2 : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 7 │ │ │ │ │ + A2 : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 8 A2 : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 9 │ │ │ │ │ + A2 : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 10 A2 : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 11 │ │ │ │ │ + A2 : DRAFT January 10, 2026 11 │ │ │ │ │ • The seed parameter is a random number seed. │ │ │ │ │ 2. test_QR msglvl msgFile type nrow ncol inc1 inc2 seed │ │ │ │ │ This driver program tests the A2 QRreduce()and A2 QRreduce2()methods which reduce A to QR via │ │ │ │ │ rank-1 and rank-2 updates. Use the script file do QR for testing. When msglvl > 1, the matrix A and │ │ │ │ │ matrices R1 and R2 (computed from A2 QRreduce()and A2 QRreduce2(),respectively) are printed to │ │ │ │ │ T T T T │ │ │ │ │ the message file. When the output file is loaded into matlab, the errors A A−R R and A A−R R │ │ ├── ./usr/share/doc/spooles-doc/AllInOne.ps.gz │ │ │ ├── AllInOne.ps │ │ │ │ @@ -12,15 +12,15 @@ │ │ │ │ %%EndComments │ │ │ │ %%BeginDefaults │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ %%EndDefaults │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o AllInOne.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2026.01.06:2033 │ │ │ │ +%DVIPSSource: TeX output 2026.01.10:0512 │ │ │ │ %%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 │ │ │ │ @@ -2704,14 +2704,15 @@ │ │ │ │ /UnderlineThickness 50 def │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 46 /period put │ │ │ │ dup 48 /zero put │ │ │ │ +dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ dup 54 /six put │ │ │ │ dup 61 /equal put │ │ │ │ dup 65 /A put │ │ │ │ dup 66 /B put │ │ │ │ dup 67 /C put │ │ │ │ dup 68 /D put │ │ │ │ @@ -2921,199 +2922,204 @@ │ │ │ │ 66D4EBC86C0DF27B789D5597FE88BCDAD2925CFF60F5A8EA618FE867857D585A │ │ │ │ CE25A158AED63B8FE391030C518693AEC75AC0AADD0C11B0065E2ABCF51132F3 │ │ │ │ 82E3718B9A9FAAF727F2D8286177EE27BAD040C66D0D2D7C092B45D9330265B5 │ │ │ │ 6B5C8E29F71C9EF548BFA4BAFAB242B26455E4B7FC1882D68E408D25E6F58EC3 │ │ │ │ 046AAFC52C182BDCD36034FD58E8B379C9F2BD16FA6FBB8C455E36A1BEA8F803 │ │ │ │ 2AC069379392D74A6E8DD64AAC6FB5E7EE151EE99AF33B1D9E55C5C8D601EEB7 │ │ │ │ 2C194E090D261E86199D6576EC00044C87B3E79C39B4CBCBF391B78C1E9D17AE │ │ │ │ -FC99092341499E3160303A8191B181B48F30D726E0280F4117BB36F4A023EC43 │ │ │ │ -6FAE04365D12BC874446765347944E9DD89582C152AD0D3333C7CD5801479CFB │ │ │ │ -43571C36769B6559812ABF86D2254DD489E8236EC4ADA0F4D24203110223900C │ │ │ │ -D7FFD1B7C8F198B9773F90232AE077399CA1A8E3418EDE69CD6DE7A0CBFF945B │ │ │ │ -1894FB73F7E8764DE2CAA63C4567CF4F49FF0A5E5762CE64ECBF0942E41BD839 │ │ │ │ -6E6D081A533083845E02E4DFE5AF52ED5F96F156175D6C84935D48F6503D2B4F │ │ │ │ -0A80354F6DDE4CA1C3F776010D7AF7381234AA0013B1695F689C47CACD151370 │ │ │ │ -64BE75752EC11131649D2F9F7961C0246BD903F285BD6B611A6D21201028B28F │ │ │ │ -76EA92856695D338825D18B6E11FD28CBC15E8BFD93DCB87179DE79DC9B515A4 │ │ │ │ -7A80587F86F7C03A6EFA9F5B43902C5C16B7419964046852EE8049D01D5F7F48 │ │ │ │ -16AFD4CDA864C4200F7D3349510A29C723823753750284F6F637F845C9EE7DD5 │ │ │ │ -AD9C83CC12FF260A0917C7910FE8ADEC53ADE69B38794E043B0CA8D5C889474F │ │ │ │ -395437FF22E7B7D738E984BF37F4E6EBDFBD17A86BDB4599B13E543FA4C1638B │ │ │ │ -07A149C1D718FBD6374E1681968DA0533FC263B611D66CCD6A5F6243A360E944 │ │ │ │ -22D9A3C2463F0B4EC47063FF74E50FE5135BBDD10BF4C207C9EF1EDE24059FAA │ │ │ │ -8927668B242F04422C96ED97F96714412475F4E185803758DB06E0ED6D4E5946 │ │ │ │ -90C07640CA8E6176D5CB36C147502440FD39835EB827EBB9AFF8307C6C7CFF28 │ │ │ │ -171AC8FE8AF8A04144683CE8EE2303AAFAACFEB48F21C26EA14BC824B3DAA09D │ │ │ │ -959A3D2F23552092D597F25B561CE94671CAA1B99933A7343C222C5064442ECE │ │ │ │ -6E0CB6D875DDE378E54E40C828F247332FBB68D4CE7492A0D15AA5A8008F6BBC │ │ │ │ -FBABDDAA56F4C97192301C1FCF9E75E53C1A0CE3543503E52AE94AC934894CEC │ │ │ │ -4A46DF7F93B435FCB5F54E37A10CD62BF33B6BE1FB3675A47B77D953E3AF1613 │ │ │ │ -3AE0875A6ABC05F22961483C3B138D1A516C4C0BDA4E958004DF37AC7E9966C7 │ │ │ │ -382243D50B246A7DC70C99B7DB5BA9CB3B4D8B9159BAC2B2A1DB3E212FC37981 │ │ │ │ -6D0B53A00DB83621ACEFCB287BF85ACE445F586817834F4FF5642C766362D768 │ │ │ │ -0806B2398368AB1E1B9A980F8608C6A689A57EBA4F18F08BEF655D96DE1DF267 │ │ │ │ -2FBB706768551E3180FDF95EAF6E13DCAEF1A0889714A5C911640DA4864364EC │ │ │ │ -D448680732432B86AD5C67AC9064033807EE62B3E0BE57589C68B5FB2D722229 │ │ │ │ -364090592247EE59D457DFC355F7E77CE7C4D65A6ADA504CB5AFEDDC4EE004A7 │ │ │ │ -ECFD5F05F5C1495A2FB5EAA736B505B936F2325816085E0E7C7010C9746E8653 │ │ │ │ -5B19161F50094F3DB626257F62ECE61F6D26D8A434521A7FFC62E2B9040AED6E │ │ │ │ -CDB6E8180F1E6DB2520A1382499F2164B94076C184DAD5532A10E7885173BD27 │ │ │ │ -EC717F3A57A22B902ED8F4D1ECAA739771D8248430145BCE2F5BDDFFE84ADDD0 │ │ │ │ -452B95F26591F2362E769AAC2A3A0B6FB1C142F3EBF5F8B7D12632B1921BD4C6 │ │ │ │ -E34B8CD0EC6F87BE27DAB5F1E81288C98841A3C1839CB81268F3A0B7F152631F │ │ │ │ -A4428AF7E2B511F0E704B42ADFA9FD25454B686808694DED0C94CE7BDDC1F8FF │ │ │ │ -6D4B011CE753E8EB65ABDB449232D65DA6E3D9762F5ED503ABFDFD51E8438ABA │ │ │ │ -6D3231FA09FD28F14E577D6DA9C5E734949196B7D063AB3F952416AD29D66F3E │ │ │ │ -E4BAD358C0B7088104D4686AA9C63CF636093D54E2217E91519903672723D577 │ │ │ │ -F4B84A12BDD644869CB51198CFD8C97F1F91559890428EC6FC8B1B7578FEDB91 │ │ │ │ -972A541C34BED7E13EDF8A2E44580B3B97256DE0792CA7D351C1CD372EADB873 │ │ │ │ -AC98DF15DD260A5E772E477BEECF61555012B37324A2345C3124F17A81130827 │ │ │ │ -64E9DC8E8A2DD312230F38D2A587ABEF28524CFC159AF4E3C564A7813FC91D09 │ │ │ │ -2CEF498A11FC60F71B9F45DAC334501EA44E70FE0F31F5D955B5F551741A7245 │ │ │ │ -3AD9C241ADC406F79D90F6C6F6010A9A0925A0D3F81C564E07A050A654C9FF05 │ │ │ │ -B7A8E779B0802EFB1529601C97457D625E3B202217632587982ADD6D5217F43D │ │ │ │ -AAC9BB35826F7B95F46AB5E8B3D1AC80EB92888D8ECA9B2924E8F0E49916F659 │ │ │ │ -54D6EF809B6AC4DB41F23B225777E1DD50A8D0CC5811BF787646C32D212DA6EF │ │ │ │ -F3EAAE020E53A90D05C052821AB61343C7FFB4CC600405ACAB9ACB4E6BB7C8AD │ │ │ │ -1CA0B9F9F8725D3E6F964DBE8C3D605D8C93C6CD530BBBA29A54F13DA45B16B2 │ │ │ │ -29493B35F6193AC25CD7E1BE512EF8AF6525E45D138EED3891BA498BE9A8ABD7 │ │ │ │ -37658796A3449B6279453CB427F72CBBE1A7F48375A5A20F402512D0338FE20D │ │ │ │ -30F9DD24C127DCF61E373011136FCA4185E88DCD315F6391EBA2900325038823 │ │ │ │ -B9F5CC6B2427BF329048C3ED70E49118F004E043DEF68B10A531BE75343873E6 │ │ │ │ -969ED538BA6D6A58644F10DFF480B72303B457540F347F0F0C127E378C171EEA │ │ │ │ -9786BB52951F1E6DD9BCF92DCD4E770A1DF9A74F6432E422583BF8BF444945D0 │ │ │ │ -A8D34E52DFCCC666D6CDACBDBED3EC0FA120FB65228F683822F7D5E859723133 │ │ │ │ -422CABB9BA472A149CEE64D944A22C3D3E3C556C078349CA6B50F8269663A55C │ │ │ │ -32421F8021B7BAC8457ADCD06377EE4638A0F861944791B281AF5CA4E50439B2 │ │ │ │ -4233263A5ECD73F8BE36935B6EE5AD04176D2BA522B499AE127F8370E4612B83 │ │ │ │ -CB044E30A25EF7DBAA2F42670FFC0A56D91A95ECA055EC9677A5DDD4D9B6C673 │ │ │ │ -8CAA227F86B23C2EE19FD521327622CD97E24E2489F1B9E3985F8911B18F673E │ │ │ │ -205DE33996DC054F4758D41FB838BF3D1ADBB2864093CD89A77CFD8D92B8FB97 │ │ │ │ -F0C922C45E6AF1F7A4DA9A563B669CB0DA4918286016E72A13BB19DB8E6EFE97 │ │ │ │ -E71E9F518CF6237C6CB42E7EF06E6403B05FE32D7215E594B61043DFEB5BF06B │ │ │ │ -96CF6F55B9C7706EA87C1F16CF62DBB6C5C60C3A9E1B7AA655C426CDB6776DCA │ │ │ │ -2FD4CDFFB8C7BF482DCE747F6D92E8D4D80D2742A19271FB5A7B56496ECD8BD3 │ │ │ │ -132AED911D4916A67094F06F41375E186233BDAAAD8BE52E3ED44AA2C6100C93 │ │ │ │ -2FAD032C788A3543BD95ABE143203032CCE18914F648EA407EF0D977493B6B30 │ │ │ │ -72309BCB9FB24C3746AC5052634E88F6C00CD0A12CD0DA17115FD0D6AF833005 │ │ │ │ -58C6219DD5DD030BA74890527700DC510B038A69065763166C7772BCA337112B │ │ │ │ -D7281729564964E62626B9EA57A3195873CDC8816057014C2117E5E2344D89E7 │ │ │ │ -837A20AC5C345BE78607316694BBDCE70B31F2F1994447C81FED7E62F36226E9 │ │ │ │ -7AF0A1953EF110919C6EE2BC00A680CB3ED54877EA85CABC5543E60D169A80ED │ │ │ │ -90DD753103C9434D00B5AA4822E823892E4D9ACC23EB3AA7B4171DEA2071DD96 │ │ │ │ -1E5C75E7C09C767D35DFAB99FD79EB20B2BABF55331EE21660FE0613BFBFC18F │ │ │ │ -72A93F62BE78A8CB9188CA59B4D659150EEA510E2F4C02A47B9648F849871D35 │ │ │ │ -AA8D2F2FACD9E61338A323861CEA9D49FDC7D98C7113310AC3D5F1DF324618E5 │ │ │ │ -3FC299AEDDEAA0DFEEA12DC519E0EF901194F0AD8133DF8C54373F9718877DA7 │ │ │ │ -CEBEFCEDFA40DD4DE70E95B5EF73BF361425BFD890AF7FA112514A54294A087C │ │ │ │ -5914CA295EEAD8DCD3485B5C785039A020D548064B1C8D3B0DF1D9C3FB2B2705 │ │ │ │ -9735703B78FEE198BB9B8F03E539169046644E0ED4BD3BA5C6FAD5408ACE79D5 │ │ │ │ -549F5132EC7E074A85747250AD839A65D5B2CE9228591FF8DBCAE2EF520FB078 │ │ │ │ -4367EB2E1536CCC7560D6962F4DDF7997DFDFCE4553E1CD048C85AAE0AA81F75 │ │ │ │ -A02F3A9EE57A73E1218A2090D55A50046987873BB5AB7C490D7D3E007F68FD90 │ │ │ │ -9EA8408FAA51426959E60DE9BAE88236CCAFA829F540743EF3F4392521A670AF │ │ │ │ -24A22AFAF75A74C99E4160B74790A2804E828BE78D3BA1C223C6A7CE8227A77B │ │ │ │ -66F9A6A26329A58E91E51F6561B0B3A4D54CE9E06D3B48E77C69A296DBE3E9F0 │ │ │ │ -A365F3F682EC7655856F1BB23A14FAE99E5472248E9945997576E5BB9AE0FAD5 │ │ │ │ -02FC43E166B558F58BDCDB38DBA2A5D2CD651A3AF9A7A3D56A75571A37D9B6C7 │ │ │ │ -C62DBA1C9B2630C516DC9666A2AF2FBAD98B35E446F815609A54E36D0BBDCBDC │ │ │ │ -2C44EE4E8E2FFD055B61B1C0A08401F35696C53CB0A226F1078FA5F2AEE9D282 │ │ │ │ -A5A44E5ABF8D080AD32111D66FCFFB948A4BACD8AC53ED452B0237FAB10EA4AA │ │ │ │ -55C47B530EF8AAC3EDF7DE58DAD566E376EA86E11706DD6F907769D58BA3D698 │ │ │ │ -A4C4E5A2A2C775BCF51893418211670FA0CB93662FC5C131D1B6B1FBF80B1D7A │ │ │ │ -B779483E5DF615F3B77D5915ED19E0554D68EEF185905940B2AABB9F81FABF6C │ │ │ │ -0661E76B4BC02BB3F4351773FB8435A965298881109E20DBD45838DE74287621 │ │ │ │ -7BE9B5CCE3617394FEF33FB5820D38C966FA413D19B04760A04CF2A6B7455418 │ │ │ │ -7F5974B1DF0EABF1E6E59820E9395D3FA71A687EF05F1BFEB751102A35A6CCAE │ │ │ │ -B1DBE48032EA91502E7069E91B1FA2B246B9B4E78995A68CCF786315131AC31D │ │ │ │ -88FCBE5C498F3BC9CB9369AC99A52DD2A4B0E2FF4D6FEABF185732C8F3C791E0 │ │ │ │ -9672ECAF520F5BF34C0AB8D0AA432926CDFB083B1CE88F92242E4B044D8050BF │ │ │ │ -7C5516515EBCDA55C6B25A76B571175E8AEDCE91BE56A65359E24092BC9D390E │ │ │ │ -B9757D6CDBEA83843F715478693019C83E66C5B7BB74C693DE11822D85AF7046 │ │ │ │ -2A39B312613BE68DC6E99C02F5D3DFF91F96D0CC37930480F11481377EDB74BD │ │ │ │ -D6D6A34D7FB61177A736B07F99B157BA0140675F2D936489F4A7205B11E2CBB3 │ │ │ │ -037786989DC6DF83E77CBA9B4502E816F37FC2DDACBF6AAEDE576A26092B0632 │ │ │ │ -19C174830983F333D76A43C1ABBD9788BAA511DAAD68DAF6499363A8C0AEA7A2 │ │ │ │ -872EBF2162D06C901A5D3B19F04163524702AE4B4CEF4DFD9BFF2C5EA9EDF2DF │ │ │ │ -EFB59D3CD1E8AD45A86A2F49AED4FD75E414C37B5449F273BA167F2BF4E09666 │ │ │ │ -770E2E3C710B136467331B3CA27E553151007E83B5F9CD93E49FDA8B483B821B │ │ │ │ -9A051F5F4E7B84368667F45BDB8C1DB8D89D46369AA2233FB43C9A57D1131904 │ │ │ │ -B3BFBD4EDAA6CB37A61B3AD909EDF00C834BE6FA7560CAC4546977F9BFF19095 │ │ │ │ -EE91F9DEAD65C1D143D0179AFC6FAB477E36685FDF681B639FFBB297DDACFE03 │ │ │ │ -1045D22018BB0C61921B7A4344A688D90031CE121523943AF6A472D1B34A326C │ │ │ │ -57AEFBD1A8016EAE0715356B35E3D196F86E5C166D9A21F9D45A9756EF23AF9D │ │ │ │ -42E7E92E35537318FBE05B6EF4E711C9DD7379B8D2578605188D5B04DBF4E54E │ │ │ │ -4E49FB6AD4F581A73005F0D16298F61424BFC980EFBC6DF33E216480408F9978 │ │ │ │ -6BE6485834B48A55B289FD086596A4658E5670171C98220BC033AE173D3C9EBB │ │ │ │ -644B03F1AE9DDC1202A1136932FCF82091760D0B0513C5ECC71C04AE94875F5F │ │ │ │ -88D85647E3CD7F97A47325DAA89C4E650F5C14B2419394BBBD0492019EE5382E │ │ │ │ -5173C51796E6F0ECD3A9B9BE0E323616B33A3E4DB94C8350597108152351B9BB │ │ │ │ -74006D29E9B04EC3D1EEF03AA3020B061AB364A29681F13E7F6B6E5E4BA62B93 │ │ │ │ -B21B3ECA9AFFEB5F909CDFF7DE528EA988E575A37A212FBE63E04C98D7D02BAD │ │ │ │ -1EEE09D6DC00EC87A3E42B7756A78ADA9EE0A3D5ADAA4F5FA0D9F33AF0E4B924 │ │ │ │ -88BA7DB6F94B77D53A95C5FD5A5C55A4ABC585FB9E296EFF85280A82898C4C12 │ │ │ │ -CB09ACEF28776F8609DF806D75261E26A66F4E43B5D2FE4BE1625674C648053A │ │ │ │ -87BDB1515CFCE07CD6B38345049CD45F41D239CCE5127B571C4C93D9DD614F30 │ │ │ │ -F4B0A719AB46DA2DA40FF885DC1FC9BC00396E5E56E8E773032F4FD9E05E9768 │ │ │ │ -F39D49EFBF77EA688E9959DB6CE6F8EA65456617131CF68B88B8B5AE69B48526 │ │ │ │ -BB68E7DF6523316761F311D6936E12F3FB54783E295C9CC4CA0A8A9BBA4BF34F │ │ │ │ -35687D7A0539EB0C23F2D21FE6E0488B7166EDDE4B04838F986C2C36CA6F8656 │ │ │ │ -FEBB2836ED51DB82F1F73482D42EB76C4EFA36782604B8FCA2F0A89C8A77B52A │ │ │ │ -3E697ED218EF31523968D14A3E2FA5308AB0DB2C15CA827D62B574D556F8C196 │ │ │ │ -FE45F4543F7CD7482B11CED6A3BD183F93FB51DE24C1032BA52E8619E0718BA0 │ │ │ │ -62FADF2B8F9090A2D44D364305425C9545E86879DC490315780EEB981AECE8D1 │ │ │ │ -3DC65375D21D9A15468006EB7324C00693D5C74F8AC7D8EF08D6D870DE3EE0BF │ │ │ │ -FC1E2025D17E1D316181CE99F5CE7069E4BBAA8B719653511CBA66E38EF390A2 │ │ │ │ -98DF61B528BC9F89D2E0A444AEF5A7E73A30E8D5521181D671F9AF31EEED0A08 │ │ │ │ -4835CB4C3C9B0A2D51B40B7F9985B29EB390475CB3E9EB83F09C33C141596446 │ │ │ │ -3127F74270C0F3CDEBF9C6C607279462A8B40FA6BC40A0076FC032EA35DBC416 │ │ │ │ -AE28AB61F76B388C1573FB4479129464BE1EA910355FEB1E7B961504CB0ECD9B │ │ │ │ -D1ADBF69832499D0639C01DC750EBC5BC3F6CB590D4B6520556F2FE3B7BB7637 │ │ │ │ -4A7BFDA566DF713CEAF05E55D47CBC443CC1E1414DA7F749A193570DECA06280 │ │ │ │ -62539FC64E166EE2338F87436648C67127CDD63F767A192E54035110D3ABF690 │ │ │ │ -B34B5AC86C55CD4AD76987AC8283ABF24129418CAF9FEBB9BE34581FC6DEA76C │ │ │ │ -7A8A0A0106D7389CAF7878E40545B6786AB9731A98EFB60FA293B0EB815CB682 │ │ │ │ -6AEB9E7162CB74166DB0FB0E4AF81AC3ED8A668B026A185985D9C07F3F257711 │ │ │ │ -88345A243D9E78E33426221731D9EE9D548A8C6C320A35ECCB182172581C9889 │ │ │ │ -10F0F9B58E950BD0798C7C379F3DB46CD1E1BE75B89B9EE39F1737E12694AF83 │ │ │ │ -E1D8E251DFFF4BA904B76CCA1CDBC8820855920886416EBB8C8F939DE7B49ABA │ │ │ │ -905E67EC352DCEB772DFC1EEDF4E992B3A2BD38735A6E29EA7613D1C2BBA517A │ │ │ │ -65CE0CF46F8A259D60B1008F585F7254B13E2B3745F3480C4AD62360440857A7 │ │ │ │ -4D83CFD9DCC0885674BD0745C3FDCF5095B01C7771AE43EC4DE192B9C70D20F7 │ │ │ │ -AFF250108BD0FF9BD20968E75644495B581AE678AEAD26F602E6F97522D7DA2F │ │ │ │ -3B5C347C7E27F40838E5C4A98272BD7E0FAE76BDB6B29CA11D0E7359CAEA1469 │ │ │ │ -1546C973B29E8DB07153A220BD41F2F3494B8E51C577E7429334C0CF54E204F6 │ │ │ │ -3570783191FE6F9FC7E37A47CB77D325FDC2598AF7B28E3AEC61C4728F7DA063 │ │ │ │ -F3513563812E50A7673B6A66105BBF4BA539DC60AF292D4B4906C953CF04FC51 │ │ │ │ -139F30B17D006DC9F3AAB4691A4023908D15939F304DECB0615A8943A362E8C5 │ │ │ │ -A59D62A17DD51705F5A06AE3887024BDCEBA9D3412510ABC714183FC6198BB50 │ │ │ │ -2523C55A17E8DDB9875696192E1DB0F246FCF1A109CC7453CE867C9C9A145772 │ │ │ │ -AF81DD43B9AE8CEDEABA63EA5CE4E8FB3DDF6E7A04029F13E331EFD950B060D7 │ │ │ │ -5244B830B3412A169ED98B01BC296C7C9FB2B0372FD40EF4550A23AC44C42FA8 │ │ │ │ -68628E6A5C0326E8FD341B94BFD7129056EF0E5A8C72B5BFE762F5EB6D159144 │ │ │ │ -026DDF4ED8C5BDA28D180DF50B4C8C1604F95029E8B98A093A12DF5E1B12C7DC │ │ │ │ -5E281B4B198485B7651398F00D2622C07CBA304291181AE3410F9DEEE888C6A0 │ │ │ │ -642C6AD5D4A8BADF54EDC52B9E7F01A5BBC0150F3D4D2F4942A06662351ECC15 │ │ │ │ -41F80EAE3D3C4D1EB571A5EDFB0572318D0FFCA121853D6A2420D0772298B548 │ │ │ │ -C27552267AD5662822896AE71DC2B96409DCEC5BDBF07EA32859509AA2375E40 │ │ │ │ -F1B32119512C2F0D1B092EEDAD87D1F7BF7C412EEBDE75D0D7B2B4D100421424 │ │ │ │ -B5944693E0B9D18A144963483EC85414AF634C9D993388F8C6BBA8952CE8E54A │ │ │ │ -79C4B2F195ABA350DF3E56A4F121E20D1DB18B0390A0C70E0DBDE5480DCCFAD0 │ │ │ │ -1250B0D0BF00849F6395BB62021F58573DE39BCC9B7C939183AA1CB6818F7A21 │ │ │ │ -5793E4B6E5E5FA143D52B4139B72529661FC1B55BF40BFC7EA101742481FF312 │ │ │ │ -6BAE530989AE82CD8D95213494DD456CBF74B0F242D6F8745EDA16F8088E8E88 │ │ │ │ -3A6179813196625ADFE007B7424931DCF92CCF571CDEABB0AA4ADABC4F8800FA │ │ │ │ -DC93D76CD61857A921BA0B3B10EC003855BC1D427195B826F31AB00E4751EF29 │ │ │ │ -CF515B7513E9CD601C41D5090785B17F5C69E9D7D3AAC34A4F10EF36D0A6A10B │ │ │ │ -4BC29A7A3A094683A4B96B5309917C575FB6C73771B132C392478A6F06B858CD │ │ │ │ -BAAED55B72B2E6DD360D8FA3E936C002ABD238D712228454E931A2B0D4D24E35 │ │ │ │ -E0C7AD8475403D8D9DA2FC932D63C3960BAC5A712ED38DB1CAF1AF88372D797A │ │ │ │ -96AE73D0B03D9E22DF1A5D10C21A0C6D65F034B4C03667240617CD36C52FD375 │ │ │ │ -490CAD9B7269791AC490D387B06D0D2C080367C5281680D53D0442A5A97A54EB │ │ │ │ -FE139DCCC2A85314F6AA05A87895D3751DB6A3F0B931A1B584C8AE933FB0A3 │ │ │ │ +FC99092341499E3160303A869929280E672C29204632974124DE524092221775 │ │ │ │ +1ECA4A30DF02B58740DCC4BA984CB0AF7F0ED7642F310CA9C8DE9DD1ABA550D5 │ │ │ │ +0CB05C0AAC0D6FD8A162B1819417381F9FE61C6C969A9F1B90540850B1987ACB │ │ │ │ +78AFA3A7CB4777BE09789E016B56B6703DA49888701BB3E62C71C23BC4836E53 │ │ │ │ +36B08C6D7989C5CC88FBAF42D988B7C84C0BFBD1515B88EA7EDCDA0F7A90A3EF │ │ │ │ +3399B19919992B3061D71E2CA9D5EB3DAD40B23A8F46B22D97DCFB1F59C6191E │ │ │ │ +1F10115669CD6CC05A4BE4F7AC5252F4EF69041831C805F18C467E3897BD934E │ │ │ │ +535073A5F07092528A564245005C2D3DE8FB7C0766724A17C870AA8BA5D92B60 │ │ │ │ +B0405DFD157AC0E2EAC29B4C646EF47AC3073866DBAF844C997648F5F8BB467A │ │ │ │ +D743E84DC558A7EA03F24E67261C753FABE4EE9F7BF298980F3DCDB668261517 │ │ │ │ +137A75D73525BDA305A66D6BF225C9B4D364CBBBA5632674384228DE6841A1FB │ │ │ │ +48EE0B15B9A6B45EEE062A92E75FE251C3264464FCB8816800C17A05DB8551A8 │ │ │ │ +DB9364CB0B4AB7BB3318F4D15FFEB6DE1F46442861C50C30949CB7F2166385AD │ │ │ │ +46632ED0AAA2FB3434D6A0D964E28CB20EAEC9E247CE185B2D44ED0A293BC092 │ │ │ │ +82F4C469C80917C66BE00DA188E07436627F58C4E397AF82ECBE69F55594ECB9 │ │ │ │ +CC5BD92164913FD02D98C4499D772355DA6C3A4975722C9F37E4C9B457CBC7C6 │ │ │ │ +8A34D50B9578E6903B81A1EBBF5B958F1B808DCC6C1932ED0205232EAFE4A534 │ │ │ │ +7F9357AC44FB46AC86498BB3232F7E3778ABA8D251CA4E1BDFD9283F61E64E96 │ │ │ │ +BBC373DCC8789452063B4426AB14A3D4F39F53FCA9E2E60E057059A04EFB7EB7 │ │ │ │ +E6A4C0DBB5A974E6123865778F68229ED529309E3E83859F5FE137361BB04538 │ │ │ │ +E2FE4457D9A78CF3C22AF831712233AA9CC42CBD37FD4557B1661C09571316AD │ │ │ │ +869A100DD46CF9350192B026D5F5FDF4B90FF0574F3EB62DD2133922F43865BE │ │ │ │ +56119D315EB5CF43271242CF6259A1784C58E61BCC1EADD340DEF6534C3175E3 │ │ │ │ +3F305E85055815A879200AFC1680C6A95AD08C895C21F7B8AFC32620123EE975 │ │ │ │ +57859B7B6F5429F0B11C5AAFD29917F85E4F0C0613EDC907DC60DC3DBE0997EA │ │ │ │ +D4EE6C7CA373803E4411D3F0A98AC775D36BBC70B5E784B554FBCB62F90A0A80 │ │ │ │ +EC9218F1B0D1DA58821B21FB947AF8EBB938FFC5F833CBECFC7E04788DB7EA50 │ │ │ │ +FF59766BF83A7111444ACD693258A53F987A9863A5DA114F1E98F5292352FCD0 │ │ │ │ +390BD7185BF62F708A2B153448AF38B11EF66D99789E0100AAC703616569636D │ │ │ │ +76254EBCFA2A969986D670CDA795F4A0C753034557BB123725F00B43C15DC718 │ │ │ │ +7A323FDB6F877CEC5071003AFC9AD3555C778C12EBD414ECCA1A100E3E1EAA54 │ │ │ │ +5F7DF3DB4A4C43F6A4429C63071FF70CED825C3C5C9452B0F33CA446E02D2621 │ │ │ │ +971B6EDB1EAFB73D5C6722472994968F3516A6027904B7251A643731BBCDFF16 │ │ │ │ +FB6276734B6E77A7FE3F00BF36993347514C6C7162BC311951574BA262101CCD │ │ │ │ +454E364345257BF43591473F3883E89E238152396EEDE44BDF15246AF334E316 │ │ │ │ +DFDAD429B44250DE8BB97A46E54B0CD1C2A8275625D7A04A845CB2A23AB0A6CF │ │ │ │ +85DB647D98907DF3B86BCB91731C2A8BE801673115F22C43D107EF2428FAD10D │ │ │ │ +133A17550AE96FDF256082E73EB95FBD2E2C6111B2CA9CD1BEA4ED05794FBD52 │ │ │ │ +F9497B072606408C3FFB82D2B8C0EBF6D8BF9F31E8E40EC8D1934301E2E93B7D │ │ │ │ +04290D5AF1805974DF546C0BB719CD65C30A0A0528A57EA60160F30B0236EA03 │ │ │ │ +B326FBD33811E4C45F767EEA9B773829584C3C5B1063E0763D3DB1294C530536 │ │ │ │ +7021962C2C004D79C10686B9C9BC27BF4FC744EA4B99A842E57F2E135731B508 │ │ │ │ +FB15482E0EAF143BF24499DECDCB1206F3AEC09CE845886B42A04B582ECD7BE5 │ │ │ │ +ABAF5B193F6619DFD0E4F01A276C94347B168DB6F7F30357F4437155C1333E70 │ │ │ │ +07E75461EEFB479D31359D55F2D539C2D8DEE667E66C290C4B77ED6F9FDC825A │ │ │ │ +011B81D77F42349B3540C8A26A288E4FBDFE5322763165F3E4206C7F1CA94AFE │ │ │ │ +7C78868FBBA546C7A399D13D6AEC75C263145BB18FB096BFEA8B6996A9C0A84F │ │ │ │ +5FE66C79756E3F44C930D6205387110472F95FD5CEE16D404AC4FCC63312F2F6 │ │ │ │ +60A684D4496F811DED9B1D395F104FFA6BE35D0BE98E29A8671D9CD1E9EB9AF8 │ │ │ │ +E9A534CCF85CE0FF799EC91199A70CE110D94EB9019ED8849B2299874AAACBBB │ │ │ │ +4D7A9155167E1784843039E04FEA258083A3EC2F9EE4752118CB9404ECD8B1A2 │ │ │ │ +6AE6CF59B7792CA735CACA91691B3C79B99E92C08E2B843007DDF6BF978587D6 │ │ │ │ +694BD4BE0BD4EE3E7DB668351C5EF0B48D608F92D27EA79D3DF5432E7291A145 │ │ │ │ +429634314E9960A8B673DB64B8ED9F4E62832343E23526773F6EC1FA94812B9D │ │ │ │ +C51929091C9B89611F1678534D810072EDED62CD12C0BA4FBE907B02367B319C │ │ │ │ +DC8BA22AC25CF4A6AEEB06EB061E4D4B7A2400E8D736653207131CBF3434C747 │ │ │ │ +B3CDDB3AD8FD8DFE28A8633DDC5A65633FE5A8D0B6697184E282748A215BB709 │ │ │ │ +DB3BD48580ACFFBF617B264169AB04FA338B53576CD7BEE7C797EC79D290520E │ │ │ │ +CE24467E4FF44FE10BAED398B50384A02B6833BEA830CBCA60AC14916C11B1FC │ │ │ │ +A17EA3EC9EC7F93B32A1EE9BA465585CADB7D9C9BC10B3E71DF47C2AAB1BB3FA │ │ │ │ +D86FCC1CF54FAFF11AB75A5B53463F5AB9E5C606A896B0955F0E880B0A324A06 │ │ │ │ +F415F609B196934D9C186AA0FBB0A2817CF4A917EF1B38143DF747FC6921E4B4 │ │ │ │ +FDC3DF681ACE3C8E4AEEB6F2887D8A3CE30ADD68EE3EA66D9F7FDF88E1B6E6B0 │ │ │ │ +EDF6119AA8CA22E15B78CF9A3DA8A274D8415207A7ECBB09FCDDDBA635316862 │ │ │ │ +5E0E75876CCA76145D986718933227EC00996AA8EC5D6A84CA7DC964FBB818EC │ │ │ │ +FC8F686140C3B432C99B8123C0CE07B39461C008411D8E09B0BBAA78ABA52AFF │ │ │ │ +9B7ED2DAC401794CB418BCDA2E16302BC84F2746F6649022A9ADA9A87AC22D43 │ │ │ │ +AD2A6799131FC86A3DA94C60514413831A9DB06834396B66A6D123A1014C5E24 │ │ │ │ +86E3721F823E9DD3AB9500739B80BB18D1EABCFBD5E8814D2CF77061D2B9365D │ │ │ │ +2FCD56D71087AE6DA5D7599098210558E3745BF9118467B74F4A7D5C4480D810 │ │ │ │ +B76AB17D4F2B9E56844A25CADC255D24886619FD948DC6B796F5F108DC9CA5C9 │ │ │ │ +A34EE3F09EE64C767D79DD16AF4DEFE391A22DCB77541D3A23C9F7669DA42CD3 │ │ │ │ +3AE562175DEFEED9FE303BBA4DFCC24225126745CB589B52D809D2EB902859B6 │ │ │ │ +75C3705932EEB11D6AF14F2B15ADAB8E9CF382322507BBC0118067705C2FE0D9 │ │ │ │ +1D120242CEF5813A6C1D88EFD2407339FEFF5716F81764C217D79B4617A5C3C7 │ │ │ │ +1DAA244DB902EC255DA98385FCD8F9EFFCD8DBB96B9DEB5F254F26F73255C718 │ │ │ │ +2FC221E9BAD04EC36B37E7BE10A99FEC97694FF3E07BDC85F58EE376DD043D65 │ │ │ │ +66105F8702BF4131AFC3E5830C46EEDC0833CAB5D0153A605B0052733EAA64B4 │ │ │ │ +3151465CD06878884E7E1F6BA78C7C0E77004946B70A848B7E59B0F049E7E2CD │ │ │ │ +E129395187E3E985E1FE5ACCB863C4884B1AA86ED98E10FED54CF7C0221A28BD │ │ │ │ +8D7E0DE9F77E91F5F059B72F1B143E85F3585EA63F4B5D101DE54E904FDB75B0 │ │ │ │ +6CF530516D1B94631B8332BDCD99DFF14574DB629929D5AE33224F913CE96CB5 │ │ │ │ +460ECD6C5CD6D93FCA49773031D153D0B671886F4BD4CBFA2E566C0EBC7D58A9 │ │ │ │ +2835845B56D51286B9404E3E5EACB5CF55286CC4FDEB2B6D2AB3DED55302422D │ │ │ │ +B34DF5A23E6C479EEDE52D15E3384BD936A0F62617105FD97A513272DE831AF8 │ │ │ │ +C13482D9C2D03A827FC519A4D5867B03BCCE107F23F4DE0BB222EC0756787BA8 │ │ │ │ +BBF715145AF3812F5AC0D166EB337C1DF9EFB13FF5C3DB085717B10901FDBE4B │ │ │ │ +C1F42C299EF5B2220F302BF60820A0EEADEAF09D6752FEBC5FF9F29A394AF421 │ │ │ │ +A42BE34ED15D238FF96B122B2C3605A8CC4C42BD4F6FE27CE14F27AF950947E7 │ │ │ │ +43AE50CF7F896D9FE3A64D0BB8B7C93FC5052B9F99C07EBE0DD921C08B38ED9C │ │ │ │ +4DA19499166C0A5B5C2FDB30C2C0A7332C6D5CA7D2C3734B6230C95CD89BE414 │ │ │ │ +4E9A89F416A1F36CBB64D428BA2302BF437C201B17E205921B72E5B15D8F3344 │ │ │ │ +A01B7EAFED4BB7F4F0670F91DBFBD900917F39CA39986E77D53634C137AED6DE │ │ │ │ +3CB170299774A6E975E800CA180B24A5830CE4E4A7C05708B1EF24529B9C8A18 │ │ │ │ +8F68008DAFE1C0021A17BFAA07121935D45CF2EE04989C6B01C090DC166469DB │ │ │ │ +4553D1D81BCFA5F3B5A1E8C5BC0737DB67AD79478A1C1ECDE4CE86A4C1EBAB98 │ │ │ │ +BF30676BB129835391679DEAFBD892FB92C8416C9D718DED74CB85FCE6E210AE │ │ │ │ +C9F0D633406357B599993FC672AF505223F8CAE9A63993AD6791D3A0BC27B3F1 │ │ │ │ +51526D3CC9A08A0BAE8904A54E50E74596FE909DEDB9AB70DF5EE99F5782A63E │ │ │ │ +36CC5EE89133C543AEDAA60B69746413C83AA0E1F13B6E1C34807BA7711355F2 │ │ │ │ +1AD7DD21E139328DC82C065F659290B7452DAB80A2B1F7921D398AD1CE917D5E │ │ │ │ +7926FEFF5AC115BD6AE8A1DC4B2168B79FCEC1520224126F8998242544CF22B0 │ │ │ │ +E009FA491B29D5154B441B9BEC6E2F626A5ECB8F2EB08278FAD4AC906D6929CF │ │ │ │ +B0CFEE2AFBE81C424E95A97B62D7DACDF0995EF598CB5A5ED6487C078FA8F0D8 │ │ │ │ +633CFEE3AD355E9E8397FAE8761A7B64F5AF874CDF1430A91E1585DFBB8D5197 │ │ │ │ +E63852FC250BD1D09F95D61A6151461B057B2BBF7B5C930E035C19AEA0EE9379 │ │ │ │ +4A6B632063242034C90ED854E0616D92911F3CBB1A9C02ED487108814076058D │ │ │ │ +30B6BC2D33002FFC4D69CB9A54209EFDDE05B5BC8BF0D6F935E644E8F73CF6DA │ │ │ │ +F248ECBBAB2256FB94EC099CE35DBF0E746558FFF4AE6B334428DA35918D51E4 │ │ │ │ +165F84A940E9D9BB422A135B1D59DD73FFF578142E8231E623B8218EE8B296D5 │ │ │ │ +738BD3603D34C597D2378F21F01F4568C3806A1694534B734A8D7BFB6050C5D4 │ │ │ │ +62A01252EA66940CA0A1B81718F3A994AAE14D2519B92F18FF73F5AE903825BB │ │ │ │ +F0B00D8DCEDE9F30D41A5473CA9A3A30E3516F993216CFCE928D6A2DBB19013B │ │ │ │ +1FA6D4E9041377BFE991F274EBED12B7968FB9A812747F0485958EB3261BDD04 │ │ │ │ +42AAAA0C07EDC384A924180C28EE28A107F4C5B59E72688AD76DC20E39C15C6B │ │ │ │ +09CADD7EB5A69F58C90529F945FE9CBCC0D76506A8C83CFB366DC609951F6DDF │ │ │ │ +C9848986A7F7198151F7C62B85001C912E3B91FC4D7DD64CDC67F5058935D75C │ │ │ │ +AEE7D6090DE4A042DD609837AE979B465ED9B83E2F5AA3B115C58CBADC27E4E1 │ │ │ │ +1BD72FB614DC5775146955E87D8C2952EF6F88338248DA51A93F1ED86E555856 │ │ │ │ +D0913FF205B932B75453E6782C04731AFB0AF1BA1FEFF33B3899DF4ECF00BD15 │ │ │ │ +C008D3347920F1AA1B30C516E15C5B3F4FDC041C9958E95374E7155A81796BF2 │ │ │ │ +7D98B8100B72A4CCBF8E0D507E8ECAB69E98264147DC400CCCF770D0D58337DE │ │ │ │ +02F9E595EE582E3C2C51E8644F87AF04E7648FE648D2E9D1CA0B6829ECF7C3B7 │ │ │ │ +A23E5B255CE046D12117C7B812F3B1D008F969717D0AEA56082E320343F6C423 │ │ │ │ +A00833CAB2836BF30F5F81DFEE406FFAF7F00E9274643674A85FF3BCDC9993A1 │ │ │ │ +33EA73C6ECEC62E05BA9C27373C149A3ECB469FF8C380D3CF3039BCD819E0134 │ │ │ │ +F1BD93B7C99F704D37E7C8E77068B07E03F65A1090C5DC4E3F5AC11C863D300C │ │ │ │ +BCD9C7E583652D872E113DEF8BDF87626EF8DFFD737DA2176C4D8B22B976C6E3 │ │ │ │ +2A54978A15B1FCBDCE739337662A4E212D77EB7FB8FE8D5C492787CB58BED58C │ │ │ │ +A581E3ED0EF7C1450A2CE759A6666A61DEF4218E6251DC2B7DA2412261B82838 │ │ │ │ +73983DCA5BAD0BDCD9758313A32035931BC07DB01CC480472DEE306B5D01550E │ │ │ │ +22C95AB8EBDAF4AC00017DB6D4137018EE5ACE4BBC590E4086D4BE32E51324FA │ │ │ │ +BC91C998EE7EAD2773EFE2E520BAD9F0723EE25DDC385CD23523A4DBB486BDF0 │ │ │ │ +303BDB3ED7D63B105E59DC8C21E538976C28FC9181B678B8E380AFF904803464 │ │ │ │ +1CAFCF929E0BCD4F416951BB73EE5F096C81058A34FBE994DB3D217B2F97464B │ │ │ │ +99610601D1409782F6EE752DDAD086DB862817A747C9314913B853BD73AB9D5B │ │ │ │ +AD268FFE1F53F65130D97F200D29F61EFD959C33DC959280EBFC444A89DC327A │ │ │ │ +113D3050DA510025F1984A4339BFB2771A9DEE6770B522CF7B39BF062BC46BA4 │ │ │ │ +5606DFC6200E368E5F07C27ED9A93653608429437217461A16C0D45E76FB8D4B │ │ │ │ +4BB55BF51CB37E07AE699728ECA1A0DD00EFC1E080D97F815992D41EC7D479CB │ │ │ │ +B7C1220C5FE367394C9962AAD9497AC7FC21DB3ABD0E909E5F3954D005797467 │ │ │ │ +394F63068F33BEC6685469181EA110858174B61A7AF027AAA5A764843ECAEF75 │ │ │ │ +9579E75FCF2310C5A6ADA1F1D7B5493481DEA940395E8151204C426FCDE67DF8 │ │ │ │ +FAFF38F5759463A4185B6D4D6266BAADD6F532DBA408ED5A2F2B9F044B55DDDC │ │ │ │ +4AB94BDAD1875197852EADB7D854D394EB2DD317F65175B29696E85F353F77B0 │ │ │ │ +0BAD7ADA8D3F5C42B2C40770A81FD1B3AC0A477AC2659C1BB8CD07E8B6FA98FA │ │ │ │ +4D045153136AC00152FFD1CEEFF32CC43D1EB6373E038465E782B529CC51FE8B │ │ │ │ +86B1CD847F7CEA67AB767E1C4A9C392442BB03140E1626F5C4887806ACB85778 │ │ │ │ +40E95E7A037970E54A107FA1FA08ECD3ACC1ACD83EAC64E3F3D0E50080F4B6E3 │ │ │ │ +08B6CD63A3C5DB673F23DE1BC0A52BF881C4B859969032970306CCF1B9EFD7B3 │ │ │ │ +D04CD8CECD4BF76C2151BC56697149C072F5245F1EFC0CAD2C5EE19BE422A351 │ │ │ │ +9DCB8B41DF1F1D9A4D41026474F95057147232DCD6FD44EE2F375CE22A56CE7A │ │ │ │ +64319BAA022FA8A869C3190FDB0E44BAC8B6AACF52E631E646939906CA554FD0 │ │ │ │ +CF188D7FB99BAE8928DEE402893650088AE25F65C269936332824AE64C419470 │ │ │ │ +946181A5818B89705B62EA045360034F05EDBA07D199319F9C5262E127E0ACEE │ │ │ │ +A36A98DF6ED32ED981DE7F58CCCF35D3DB2854F9DD88C7819B28FC3357E26917 │ │ │ │ +E336216495996BAA8A41B6ABD954BFF51D75273D967325EEC32B4BE7B5BE4818 │ │ │ │ +1EEE151F9CC27311D697ED1B25992ED7ACCD16AC9CEB103A115C5DF7D0CB61AA │ │ │ │ +E1FB3612FB7DE2AA422DAA014C52C62D53F918AF4910B38CAD66DDC72D57A5CF │ │ │ │ +E2A910AFD94DB4B451766B887AC3CD0BC1791B378F95AE5742E75B72B3B7057C │ │ │ │ +78070AEFF583427B591A3997C604A1AA2EF193AD1E8F1494E3613AE33A1F0641 │ │ │ │ +3CD9F60BF84FD29B20FCB5A3454E34621F8EC2C20E7D198D669B14819FC66A3A │ │ │ │ +1FA8041A1F22F31EBAC8D215BB7FD20FF718AAAB13EA390B894EFA618A6DCD76 │ │ │ │ +98435C20DA855EEDBCD75DFFD2D3F69311FA3A042042FA8C3F8EA5673A4E228E │ │ │ │ +8E01B93F59684B3F12A33D7ED5A4F87AF662FE4FD81D8FECA680CE0778D4C782 │ │ │ │ +931D2618AC76DDEFE3879ABDAFEE18CA2A222D395273D98D7A00F415B9C69F5F │ │ │ │ +DCA79C902399FFF86FC483D70C3F710847935CA57ABECF34DB32356834F921CE │ │ │ │ +9FB82E43083913B7D2F874641CEE8E4F6E47C0E149C5B2352B17AA153E8D9E29 │ │ │ │ +828133661B203EE319600CD80A5ECA77F2AAC779E428799F6A8C74BCF2C89903 │ │ │ │ +AD713481F82EF6D39A1075027E6C35BF687D2F47E59B28A1D9FC1811C8EF18A9 │ │ │ │ +92D7B8D674EE03512DD82620FE0C05FB458A17ADBDD02C00C0F66D91307F71A8 │ │ │ │ +C7ED01E1634D4C97E94E1B12AA2CDAD0003F64BCB84BC79B213C7D6FB6161203 │ │ │ │ +2F048B4760A6C2E6B8B69E40C7537AE8766F35AF14C209F38FA701AFCDDF6B87 │ │ │ │ +659A83D167E37FB3830092129241D0ECBC351F1C0188007B9C25DE561A41F5E8 │ │ │ │ +C3D6A574224B61B45DEF217331E5B753AF7CF8626DA6B2B01D3E24AB03CE66FA │ │ │ │ +292289D1ADD1BE060CB343627C65FB0988267491687FAABAD51791B21E282CE9 │ │ │ │ +ABE8B173851DA195CD741A3EF5863335841814173809A13E242FB3FA9B9B1CE8 │ │ │ │ +8C4E21E411BCB488F99D3CDC36FE21640889B4EFA64D038C074D07261F9E00C6 │ │ │ │ +62E87B88EA818B6A3BE48ED5825CCDB3142F8B44554B9A49ABF6A9EE4B45685B │ │ │ │ +C8017386EB0C9E439931B118140E2C7F8C6F22113B6AA08DB49C8E61176098C7 │ │ │ │ +A6CE84C8AFDA0A7E8F14A8FD24C08A29AFC17AF3D3BCE9417F4A35A450DF0FFF │ │ │ │ +98D3245EDE7B1E21633EFE544677D0BE7EADE6521DE3EF8C466E6C6487C8A51D │ │ │ │ +8CF4431C7E7F27E728EFF37F0E9BCC929BDC3838A8008C80304128212F8CE96E │ │ │ │ +8E5F5B008BB6E31E2452F9378A43E52289AEAF1819A8D6B4F17B5DCFB99496F6 │ │ │ │ +682C6037A30364F06F0F8B34D6F23F797E14BA03E1AACA254B1889D91F7F222E │ │ │ │ +073E047F5D89329C5FE4CDB0B5C5FC6322EC3F5210EE8F436734F37112492015 │ │ │ │ +90922E14DBB773062C297C901AD8269C6CBB58E7BD89A7AF74B70772580A2E08 │ │ │ │ +CB16C9BC7D2FFF7E2529D279F200F591474B216D26CF47376A2B22D7423144F1 │ │ │ │ +79B71541C11AE0655AB52F4C0883430AC6DEE7B2FE02E384503E73F8CE524CC3 │ │ │ │ +8599CD │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -5887,14 +5893,15 @@ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ /UnderlineThickness 50 def │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ +dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ dup 54 /six put │ │ │ │ dup 74 /J put │ │ │ │ dup 76 /L put │ │ │ │ dup 83 /S put │ │ │ │ dup 97 /a put │ │ │ │ dup 101 /e put │ │ │ │ @@ -6087,147 +6094,152 @@ │ │ │ │ AEA5E1ACCDA7FB2DF05E9480936281484BC329F0B771775E73F7FD72FE3F45F0 │ │ │ │ 50ADBD03932B38F37A8F0A66B2F739EA3AC8811C8F514E68C5643E4AFF485C81 │ │ │ │ 88475A523D7FCCA5C8809BD49846C77795A38DC6406082000236A4D2628B5932 │ │ │ │ AB7916D44EC2210CB941B4C12515E844F0D26CDF0AEAD63BF1491BB50ED4D6D2 │ │ │ │ 739930E80E26E9B425C25033121899AD22102AE6868648BABB7D5985611C95E3 │ │ │ │ 5B8D365C7D034BA22E904A0ADB0132CE38288C127BBEA0825E600D18383A6854 │ │ │ │ EE28FD1B2F57AF704854AEECF985EEFAE0521DB38B0A7511C803CE8AE0D0BC02 │ │ │ │ -50744F806B8D771AEA2192F982AF1314015F8028B1AB87EE2246CC867DFC7133 │ │ │ │ -E569299A834A73B829CDFF321ADFD514B23ACD54308766504362A049DB8F6F39 │ │ │ │ -5B96266B00C684371EBCE56FAF7551D8630BF65E301408C0AE51D3F002F9E129 │ │ │ │ -10A59085B565C859EB1BC0746ED2B34BF09A2F9FBF45C3AC3146A0983092F578 │ │ │ │ -C0F7796C81A5103E714863B3D1E49FDF74A8CE474F2FC23AA2DC24E64F15A410 │ │ │ │ -AC5AC35FCBE6826D45628382F14EF9B28AB46A4030AACEF78D634A0BFE0F3DDD │ │ │ │ -3C8E936ACCAE8014BC773C84B6BFD2C875B7CDB6E087A6AFA67A0ECF1A9D8364 │ │ │ │ -2971EE81D33BA9478472B1575029711EB028D079B8D8FA9608AB1279E09D4041 │ │ │ │ -89F4B9EB5E71B0C14A2751741A61DBDAE3A425A27ACBD17E174C326A7BE841B4 │ │ │ │ -6D46BE347F39E65820A4DB3DF719778F9D25785CA760D41E6A511DC580E83ADB │ │ │ │ -E94AD10EF293D82DDB46DFD5F56E009FB41F15C543BC19BA3EE3C803A3F229D6 │ │ │ │ -84E95E51BAF0A7A798B0F3C6A803DB2D000F473711F7FD31E008E29B2458514A │ │ │ │ -AD4D1C172F638629278D1929534FE557DA72B5FD12684D5DB7FE3618B5C0B7EE │ │ │ │ -5C3CD8D2019065D382DCF9B14E072FC4BFEDF3D6427521C2332CC762D25BB14E │ │ │ │ -AEF7D3ACCFFF2447A3C43ADC1FEB6A6961BC58263E1100424BE4603B2DF4F93A │ │ │ │ -E80EF8A4B1CA31372697460BA5C38FB58A998FFCEF2573C663629C0A9315A7C2 │ │ │ │ -4BBB278156C12C4CCBCBE3ED304E3A04E632C96171AA2810EFE079C2EE9D570A │ │ │ │ -D2B3BE58DEE96B653887C0F6265337DDDD8D4A71045DE4320E64A9A96CC74A43 │ │ │ │ -4D34A08D37F330D5D24E7B4AB5CAC2CE4035FFA6213EBF4634BD5F3B561B7D1D │ │ │ │ -FC702734411C73B4915B98441BE2189F5D269B692DFB81843803ECFB8B0DF7E9 │ │ │ │ -00F39A275C4A0A88652F5A1EC554A1456C1699229826D52D6CA6DDEB8D723117 │ │ │ │ -855599B09E0BC7216D76FB9669E2A32170D36E13987B5B440A3F48DC2EE2856C │ │ │ │ -AE06ECB67796F9E6B723256ADD5D50E5D464C40900A489D2E6F7CBFEE10A0782 │ │ │ │ -89D03C9D0784D2163B25A1A3DD729B05097C64BA7B973E4C9D51921E7771E599 │ │ │ │ -A0DB5C9A2EF9FF7AD61765B11B9135779F1DE9D2938F1AD75DE954EF28C6D432 │ │ │ │ -330F49F9E35E74144E93D6C5645404DA3253BC9FDD3A499FBF27A1A45E757F83 │ │ │ │ -78E69C4B517D990A5A99F37F647F63AFDFB8A971A83DADCF267094B80EB20B43 │ │ │ │ -CD2F1F66F51FBB4BD40F2D5E9C3D552997B3F8AF60A99051EBC4D9D3823C094F │ │ │ │ -40BEAE62AD86DB3F4019C3DFBFEE15C7BF44310584B91E1D9798857EEDE4B0E5 │ │ │ │ -45C5993C485B0645D3FEFC940218DA5946097460A6B366010233FEEBBDF81E8F │ │ │ │ -02AE4EED4F84DE1416B017D455155AC8F44C79E1A56F71E5BAE723FF4FABD47A │ │ │ │ -31B71B6370EB1FB0BDCD8F56B6E6B66B5FB622F7842C22FCE8B2B5B9EB11654D │ │ │ │ -0CB28E2DEB7FBC730184CAA79D9F5B7C8997078FF6CB18509ABF8179A9789509 │ │ │ │ -A70A3D8CAF3F2969503E0CD46DAAED22E7287DD9A5E07A7D603508542B5AF453 │ │ │ │ -2C36078745FAD90F0B24B3A068763D0499DF1F717EC3951925CFC70F47AD6F41 │ │ │ │ -3F19B6894F57FB5F2F059A0D279A6F529B3707A7BEE97070C924385521D2EA99 │ │ │ │ -C669A151AACF8D0CF921C1FBC08302580985ADEC487E96A7CB23E007B51377F2 │ │ │ │ -DB3EA502F12A08A57E7AC04E27182EBC4DAF1F4F2D385E550DAC01BFE0CA2939 │ │ │ │ -99418614ACE54619F0AE169F99EEC5D88C96E90F3F70FE0AEDD6A8598E993B08 │ │ │ │ -31B335E553049F30B0C6CC5F98F8888D49E67C6A0C368160AF7EE6FFC43124E2 │ │ │ │ -B8748C5EFACED9FC2EBE055DBCE23A4D8EE7A2FAC3435E0DBB95C5C5818805C6 │ │ │ │ -DA7EA45C514977B8E283F1196D79BAE942FA523D107376B406807C841DCADB86 │ │ │ │ -D542EDF40D4CBB79795E4E40429E00C5B0A4549AEA23A01E2F91A0C71EBB10F2 │ │ │ │ -1572E309B31854C4BB120C8625222BF8CF2998B483EFBD1B63819159F7D3AA41 │ │ │ │ -238187FA5DB7EF9EB7D4D7F515EE027C0D9A737196E94D5B02C8408774EACA5E │ │ │ │ -53D94D1D57CDC6AD1CAC860F56C14C82313BF4A6E38A68DAEE20D73B1390C852 │ │ │ │ -11D199DD508595AA155B2CB2D78CE5F487DDC3AF6DC82FED4C2EAFF96A718430 │ │ │ │ -4DE9E0AD7C8C89B2E7374F497699D6F4A24351042E0EBA25C4CD0F0A99DF93B3 │ │ │ │ -81FC4B1B9860D900CD7EA6FA89D6C59AAEB4CE92B3E82315DD9A32025604D3F6 │ │ │ │ -D8CCDCFCE548601789708682099D0D2B70CB31A043CFD69DEF98DA894B1280EE │ │ │ │ -E145A88B273BFAC53592C0555F176C448AF4BE4F49D0F9349CD1984E060E7A0D │ │ │ │ -53C80188C12DD67B6E1D8EFE927BB9C301DCF6527C37359824AA124002EF14C4 │ │ │ │ -F22226648EA44322F99383E0183A83303B534917A782BF3915C0C06E272E7EE8 │ │ │ │ -6D0E4606E2418E90CA5F9337AD59D7CA015238413115ED1D13BB261BEDA4E8D4 │ │ │ │ -724FFEB185245D1CF4EDE011DCCA213622A5E228BA0B6B8CAD4F7C76819B0725 │ │ │ │ -9C1325F04DB2F645D60E3A71EE7BBF231CF8C61DFF2D2B6A68630AFFAFBCC122 │ │ │ │ -D140880F46068012F1808322246B838F5BC4FF10C75E4DEC459759D7D3F0421C │ │ │ │ -1067845020AC321F8B63A023ED61BF61303D5C8829847A782548ED30D3F7AA55 │ │ │ │ -7123990D56AE23325D6515B21DCE3D70F72E7745243B6CF3EA7CE4B42587EADA │ │ │ │ -D24A7830B5A756EDC63C50067EA978A3E31AB01A7F39C27F3B0C2F3B2CFC8E0D │ │ │ │ -5335379EE5637B9CA3B2FCCF6EE01457E1B0BEE9CCCAD5DEA3B4325EB45109AF │ │ │ │ -A42F6449B923B4C01FC1F1802ED36112AF25E538DFF89D3FB763315D7FB3E527 │ │ │ │ -4524C1FAB383D33D3F49A37028A00B0FD43160348C65FB78546223C42991B667 │ │ │ │ -15D03BD506EBF9C2A6E8F2099B90D4A0A430702E9895B6C973001269FBBEA42E │ │ │ │ -AEE8406E53A6647E939C4FAFF1B3AD5DD9933FB1CC2F86D86D914B0203361F5A │ │ │ │ -504D5A3E7B5B7325ECAE2D260086AB39EE8D5FE59FCDD25C0CF51C7E323B148D │ │ │ │ -1D1AB3766E49E82279F78728B939A52F7F6C5CB4F26A7043460436FE0F5F8411 │ │ │ │ -CA8F0F7B7B2F771D1F725118565FCF48C3D11C64CAD543664B9EC9BBF8956570 │ │ │ │ -AD362B4B96A10F5AB7DB82206AC8F2CC8F00091DE47E2053B42FEA772FC6889E │ │ │ │ -8862C0B45F16BE0B4E9FF711EBB576BAAC29FDD1E4C9BAE34439B911BB09293D │ │ │ │ -3F60730C68AEB1D7B928D49E979289AF9B0237F8E9D05AD37AA4C92B26AEAEFD │ │ │ │ -77945F9689C2A1EEF418A5673499491FA9D09AE91DEB0F80DCD29B64BAFCD1DA │ │ │ │ -925142748342B6C2EDDB93D3AA2B6BDFDB1F0B95F9E716ACD87001F951807A75 │ │ │ │ -041670D74A23856686518116D75B65CBE2F9C70828E4930CD05E25E942C1719F │ │ │ │ -54B7E87342AEA3821E69CFCF850C82A6B94FB424FE824AFA27E83CECBAFE5B1F │ │ │ │ -2FE83F4CD56DCD9B46325EB7986763F57591F63D49832288225907F1066A94C3 │ │ │ │ -9DF2976C10533AEDCCFBDCCBCDCCE544AC7BF4E6C821DF97C663817EB8B3C49C │ │ │ │ -A104B773367B0C157E802205F880D79737CA632E89537BCA9C6FB128BEBF4E73 │ │ │ │ -1B22D010174DD54DA57E139CBC50AF2037E6772E14AE0D00C102F5A58009C649 │ │ │ │ -AFD644115B8356EDE7486983FC6423A39BC31C31A43FFD3336B2D851C2FE5B3A │ │ │ │ -FCED5709598C09A354FDE7F88F3D640F87E2AA44956E05A72081819D9E70CFA3 │ │ │ │ -263BB47D14C21841183597224E5CDA398BE68333659EF53A65B15C257F9E409A │ │ │ │ -9177E334827B2D1F85C959FA560395833B8DCBA3D3759D0D4D2D447995BE7EE6 │ │ │ │ -5700B6076193A38D62BBB6B454E7034E2ABA5D48D520ECBB522675B8AB8225DC │ │ │ │ -EE8CCE06B35BDAEFC66134C10CC5625430667F8E6328352E40BB0CEDF545510E │ │ │ │ -689E46BB9D704E4E8BE01029F3F207F01BF5AC3432DA1235EE897009B8D62F6A │ │ │ │ -A61EFB604A1BAFB2841A46989C051496C322B78852D3173C5B9DD8E1421DEADF │ │ │ │ -233D74E189B01DB0F7CD221C9846633D99943D762D20ABC4E1A30A1E18D85D13 │ │ │ │ -FA3CA6AFE8BE7575A61E984801EF12948D59DECA210F7CB21D007D54FECDA16B │ │ │ │ -D38D64258B6DF9E679BE5010DECF81874EB7DA0A10222EE38C623BE8747CE16A │ │ │ │ -0E5FB5F4ED28D29B6F55500F9EAD6AEBAB4D44DD32CD4438E8E556C55E04932C │ │ │ │ -A6DDD0C85066B7C4C17354BB834F2AB8F692938A6AFC279AB5C9575536EFA48C │ │ │ │ -EE92ED68F290E1B5E6EF4FEC6B8B30EA2BF0001D716AF4912275741D188C8AA9 │ │ │ │ -AF2ED0EEAEBDB1F7B04423098C00FF6D82C52AB5BBDF154243CA0A15011DB87C │ │ │ │ -093CB65F912BB645B73349C417EFE2435B4F8337A65D4BF7198D46346DF12BBD │ │ │ │ -28CE629410BFD438724C1190C6780A663CC472AEBBA1F7E96B90C3315EDEC868 │ │ │ │ -0BA1E11DB96A844C7B5B61CD169C580301E22521A8F9DC4FEFF77402A487A5D2 │ │ │ │ -23B793F0B3DA1BD5AB1BA6DC5AC833C4B00910239DEE45BD67CDE1D7BF38F5E8 │ │ │ │ -3ED941957F54D49A822FE756D471BF6C4064AFDF89F47228701739C4E86EF69F │ │ │ │ -239318E54302F8D43AE8CBA4F2C3A857F879F927F8DEF355577A77124ED97F16 │ │ │ │ -49CE1E3E747330BF0B20F1B1623CBA81F1CDFE7D39F37D082E8C98487F158D51 │ │ │ │ -4EDBF6897497D798352900618525FDD9FB15DC92130BBCD54A408A1D7FAFB74C │ │ │ │ -51613BF4135ECA3880860E7511F71C962B44A7CC0898140DC42BD0885A8150C8 │ │ │ │ -A682FBA0BCF62C2432976BF81F52B31FC3BE6AC297E191BDEE2130E4EC2C163F │ │ │ │ -F9239BB6385D4E2DFFBBCA1B411C533A5CC6E2DFA3AFCE16CA25F30567AE48A8 │ │ │ │ -6D1C56C26BAEF929056A1DB53F35735F79D05B6A43C8BF9131C7E521A74321E5 │ │ │ │ -BC5BB89047A78BF1540C21FF267EBE0B1B661B25DC2E598BE4E02C421B1FAE67 │ │ │ │ -5F8D3A5365CDB641E452339C29592363B8BDF7B4327D4BF61C8DBC4F88E9A76A │ │ │ │ -A5468432E9B9B9B981F6DD1001A8AFCE1C65F9E73D86727D6BF18D77480BA718 │ │ │ │ -60F38F3CAAA433EC3989E548CF74253E3A1C688D73AE99CBA40A9E7EC94E239C │ │ │ │ -04F6C26C1F0706AA96346AB5E3F3BF4B24D9FB2A4C3C907FEF98502237B9C88F │ │ │ │ -64A4D332E098AA98915C50C720A4201AE767BA9161EB0D19A89855080EBAB3D4 │ │ │ │ -8F2C5E0889782BA438DE5B6F547F310F96161E5A220222449C82CF264ED6C177 │ │ │ │ -70B6FC8917FC4839F708933D5B1436FE7F19789913CF20F0F2B6E6623DF9E954 │ │ │ │ -AAC17211FDD60DC5FCFA050BE8A05CA56FE84205F55E4034DCA9652321C3EF61 │ │ │ │ -2D3F501F6CFF5696FAACE6C82548DE26635C1173C79AB32C120E5B4D6E69E0F4 │ │ │ │ -ADF6C20606355421185334DBDBEA399F331C66526CA0FA8EC4AB7AF764A76728 │ │ │ │ -0E06AA356DCBE7FAEE4AC0151BD3D890F5EB4331EC32FAADF9E4427CA1B441C0 │ │ │ │ -135A0076804A482F1B3EE0BA07600DD71130C4514943D31994FF0FC8F45D4151 │ │ │ │ -0D47189D9A5D97DD7A714791C8D9CFA73659228C3BC2938F632EEC579B007B14 │ │ │ │ -283C730598FD3BAF54579F2C0285BAC7E834DE6473F3760BF4C1934F63983CB5 │ │ │ │ -66D63D97111FCE101286F6CD078F4F13496092CC1851D10E8E1AB3639A293BCB │ │ │ │ -15D56C631C5C445599BE9847BC2D53BA89F1C0BB9A3334860C350DFED9662188 │ │ │ │ -EDC656FEE851F3772504D13ECA969FA98BAAF835850E564DAD626226C5F8F5B5 │ │ │ │ -8921B3B7C12F1E30B69B0EA72882CCE342F123DC98574CD64D7D39BCE9D460F0 │ │ │ │ -BA41AC0CD31686663FA621F403AAE09034358FD5BD32B588CCDAB1AB1806368D │ │ │ │ -221CBDB67F5822A0F658C785EC7EDA059CAAF36EC289ED2BE7BF2739BB0D2E66 │ │ │ │ -003BCF80D07F036FF2547C5B416F7A21D07F66E4BC3EFF2585F71CC3340A6611 │ │ │ │ -405657FCD06B8070ABEDAF7F554691C922356073BA3CACFCEE98888376870BCE │ │ │ │ -E93570EF9F287F15E0026AA9DA9C972FA5F95F5564D6449329C0DFD6EFC52DB6 │ │ │ │ -493E10986966E78563A939096869648B80FD56F05987D6E1A5BECD1B26D0F73A │ │ │ │ -09C15BB9197B474FE8EAAD085EE4CB2BF16AF944052898DD7317D840CF80A083 │ │ │ │ -86940A2636AEABBC65D82A9847BA2F59D8F5091377EE198F5EA022C0A8F9 │ │ │ │ +50744F806B8D771AEA2192F982AF14237CC79ED90C155ABFD082CD9FC67DED21 │ │ │ │ +DB9584A87F8D8B306E67503CD64DB373B7ABFC4ECD49AD636AF40414A47C5A02 │ │ │ │ +3BDEB8FA7D935A4FD76D7A45322654577BEDD2DF0F059DA2FC1B48F0D3CEC68D │ │ │ │ +2C1DA99B022B1B5122032A1BCD94A589903BF6EE1D32343C355554FFA0569198 │ │ │ │ +1B6BF9765C19EAF83D82F6ECCA25A5A3D94DD56B8FB4F5A10BF71AB1AB10D6F9 │ │ │ │ +F78F44E628999F187006E4958533AF73E4179DAB513B1B6E0C87D5285AA383D9 │ │ │ │ +4896522C164A8282CDA375421331AF337C572225850780F4BE914537D7F0A0C9 │ │ │ │ +874FB2298F39B3D02C2BEFAD99FDCDC5AB0B66BC77807CE02EDA15503F66B8E7 │ │ │ │ +A5A3D7BF202300EA1AFA758989F57334105EC8B58C4CDA2F1CCB99482E880710 │ │ │ │ +A665B3ED67247F498E45233CBF49B756D42FA02A24CCD3ACB11419146735CF58 │ │ │ │ +6B319531755B8F9562D0A68D7C1BC0C5D1C132D5C8CB6C17CA622971D3A20EFC │ │ │ │ +52B63E44039E53D3699062883C3FD8039AE3114E64C22EE761A17119D87541CD │ │ │ │ +56F1159431E1FD7BACD0A8FD0BF07D15F8245A71D870806335040ECBCEEB0A5B │ │ │ │ +30E16B910F14DAD7D76311D116BC5EC13BDCF557EAA2A4B32DA6F1D682717AE6 │ │ │ │ +D5CC4C121EE7A8E2D4D224CB387BC8E9C7F623986F85CE3FB23D5EE7709CEAF5 │ │ │ │ +F7F883962005658B5969C482F7082FC480B50A3296C8337F148EFE59433041B4 │ │ │ │ +82F865CAC341E3E0F74A60AA20E70636349A91ABD044DD6D604FCE3E27BD179D │ │ │ │ +5FBDBABBFC2157B0C4199A061FC6761DED9972568DBF79D560EE4DB175014945 │ │ │ │ +C161CF006EE356581A9A124B6E6306A84743018EE8F9F63CA940BFB8CE20A924 │ │ │ │ +EDB65CDB76F768280D83C750A91AE5ABEBC875173CC3198F9469F43BD498D516 │ │ │ │ +AAA8A3FC2324C22E8EF5732FEFDEBDE4BFAFCC12B401625AF2C6299DC4F503C7 │ │ │ │ +E3E2AF436741E775B0AC23C4D7615A96C7154D8CEA437D84375110E860DBF985 │ │ │ │ +1F75C95AFAF2E44C4912EB0559ADD13B4998DA84820F81DD2D63CE904E0C6634 │ │ │ │ +04E72287004078932038313136896B59C4C2629D48DFB9E5DC4138AABC2FB98C │ │ │ │ +77A0162E0CC9C7886FEF02169754A112C8C6E8196717F62925F2420790665EA7 │ │ │ │ +60F6EC412B5A41C8A71E60B4CEB938F07779B58DF11DA7E40545F62A7BB6C53D │ │ │ │ +4DEFF2C3D8D72C55A2B14B76812B26F1978A1B762C73A075A0FF5727790C2ED5 │ │ │ │ +CADE4B2C9225EA30F9D89EE5FBC2C873C6D7107C18ECE1828E3CBD87482AF16A │ │ │ │ +8893512EA8F80DA61C6929C3B4458FEE4CC8C01F1682DA4C3D613CCC79BD105A │ │ │ │ +4A156E8C5417A38F2DFA256C7A2C6548CF3D9ED1EDC914CC9A5EF2DE1C387746 │ │ │ │ +9E1E2878354C0024B10D0732FABF4777C8642F7A45200D0FC8C0548EF3480066 │ │ │ │ +EA01B51A03410274A9A46E74BC3550F1DC4B6EBF8702CA167CB92DCBC542F61C │ │ │ │ +A301EEC46D47D5B3BE5CA119E401580E6B9C3DBCEA80FE4AD7B0F4FD6A5057A1 │ │ │ │ +CF5EA09FD640C14ED39CDCF9A67303E0BAF4AAB5C23B6CFB587BDF68D66AFF02 │ │ │ │ +729E2DE6CF022CADD9EFF49CB1C259E92D226C336056D4270829AFEC8AFDFBA1 │ │ │ │ +B0C7117B6635C3FD02F3F6970F630678789E0153BBE5BCACAD884116185E09D4 │ │ │ │ +CDD7337C7983C8E84130DE12308053924AE76642996A2274D6A415E9FEB87949 │ │ │ │ +710B9EDD1C1F403E2FF64F495E0ABD8F8B406555B2778C75AF2A7067BBEF30B0 │ │ │ │ +1A0824A0C8D83538732950E81F471CC76F018DB5F7D0EA57F0250BDEAD90AEF4 │ │ │ │ +DAE3573870064A1716D70AD93042C3EFAA0EEF8D8F1ED40F49871BCE1DE2D221 │ │ │ │ +D8BF6BC6966CC942DEE5783108D2086CEB3560028DEB76293219DF7D89762333 │ │ │ │ +789401EB03783ACC164442F77BB5AE215CA7646ED3AAE85FB4D4038168661F34 │ │ │ │ +3C9EAC540A70ECFEAC1DF46B69FF8D6977A044A003A9F5A106D22E9116F744EC │ │ │ │ +4E8ABE6A6AA60D027E9BE991C4D8F60976532550ED6D0884183A52FFF5DAA658 │ │ │ │ +2B17058CEEF14E9376FDF34909DCE29B916421853FD8D6638CC6087712360124 │ │ │ │ +F3D863987E82EDEBDFA37DDAA0F71373517383A66E1C1CF1513E80A26F84E4B2 │ │ │ │ +57719EC3E907A0AAB32837BCD454327A2D1BA18EC4D597D4E9622D2B49D61B35 │ │ │ │ +D804441C32A11A57431781C0F7826145A62030BCF34BE0B8E151A5424AEE329E │ │ │ │ +A9003B1197951A4F925A239F030F4D9C1102BF35A9D2D95B149B89E29A8E86BA │ │ │ │ +DF6FAAF5B4A2C6B9985BE875473A8DCCDF835B56F207D465059E517015F5CD14 │ │ │ │ +D5F8954FA2F0CC7732FFF0087AC8FCA32EFD0071ECC76AAB75DCB27ADF31C556 │ │ │ │ +EDE449E472A8913AECBC877496B8DEAE8797B033359D573D43485D249025E1B1 │ │ │ │ +2BBA35F71D93AF8829ACC8DB7389744ACE67C627763A16C19FA22E36C9F881D3 │ │ │ │ +357E5AC510762999EDA34B60FBC4C2709D6B1A8A8ACE1373466E9AB221772191 │ │ │ │ +9CF1607F9AF5329BBC85C15A2DCE1937DE40A3BA6A21AF1AE53F0AA3BF2DA74E │ │ │ │ +8BC2547071D07B976C937A8F265A7517FDAEEB9F92E75AD3238251B8BB63A633 │ │ │ │ +E5A7A5F706ECAFDA9CCD2DADF6559BBFB30961281D234A445BFF87512B6968FF │ │ │ │ +57F2D84829D460494D79C8D6BA7F675DE3EB0DDE7F26332F74423C10CFE42F00 │ │ │ │ +B1B792927C0D7D1885AD8FD2533421780C16541FC8E92D3EC70F9B0CA1BDADA8 │ │ │ │ +477F6E6A2ACF56BE88DE27A6C8F6DD9A2E94C4C4F459DBB7708841C18E442329 │ │ │ │ +F5DEE900E9B01F7C78B75D7B2A8D7CE2DC087DCF2C24F3DF9D9C592884641D06 │ │ │ │ +BB0529D2209443831D0AE7C7F0F82D52EDF16020E72561F6EC1BEAFBCFDD3BEE │ │ │ │ +CBCD6BD43127E6EE609646C40A2513F78FD8F7A5A769045EB67B1355B6DFF62B │ │ │ │ +C216442469B0B4999C8930189AB83E657F7D0888F33B6F298E92D1927A789111 │ │ │ │ +1DC366F22D80A488D82DE7FB786643B280C605A1CC91FBAB33E23932F670174A │ │ │ │ +DB07B5E10621D7B4C1464C05F4690443592A333EA3F56805A60651D7BE941A95 │ │ │ │ +8393842764DACEA5033DD34A70B3F389980B71DBF577478D876FCBF76C14AE6D │ │ │ │ +73FD85427C34D125F12A97B95FCD77EDFF03722F247AE8B2E2217DD7D738ACC5 │ │ │ │ +A72DD8888D30678347EE88E67E81ADC3B83C8D6DBB5209B5BB4466F7AE29A25C │ │ │ │ +73ADD05EEF42D395C3C32C59A84371E067200CCC4A0654B73476E056012A5E91 │ │ │ │ +DDB392AE4567D40913C952F80AEC957859FDEE1E1DD2901217D2008991A72D03 │ │ │ │ +74F5C070907E8CEB7B348B71231EBA166F23FA4799E5B39EC952DF960918F11C │ │ │ │ +E6924D64E3E2F42BDB82518FB6136B36A524680E5BFEA7D89444A49BCAA345FF │ │ │ │ +493201DA8E764133449F700B5A60127D0A296B3B6DA65F0AF027A0DBF55B2FF9 │ │ │ │ +729D763DC1CC0884CC24719E40D709F4A0261E3D7DEF5C4B595E52B46C73EB4D │ │ │ │ +4E74093C4C91494212ECF3F4CDF66564A770563084F3B51968054811066A2A34 │ │ │ │ +79A08A87FDAE6AAAA0110D28700B1916744B45A782F8F80C8BA56120FD498291 │ │ │ │ +E4E2E6123DF17731E2992A421902C2BDAF34BA334B2992275F1858BDEAC2EBA2 │ │ │ │ +13641DF117074B7E17E83C52B55A6B0A7FEE4481BCF95D19C0D0CDF482D05493 │ │ │ │ +2D90C633801E5A0A9EF975835EC29942B31088D5E01CCDF3CC501EC7ACEC85A6 │ │ │ │ +7A6295F904067B84676FE1F143508F264D8DA4A42CAA812AE60CE0DABD5AA6A2 │ │ │ │ +00043187E04714A6F726E3894A910194477B65503E371CAA6B64B4A4D0AAD1CB │ │ │ │ +F377A123E86CFD79FF0A6FF4E9339929FB4ED9025D79AA53AF308C4D08D5483E │ │ │ │ +7772DBBA7747A78BA013A346064DAFB878A42C465DAF4F1B9FF34E4F60274C1A │ │ │ │ +8EE8866E72A30DD561FFF7E3669A99EF517151F6AA6A35B3A6E80C60A8AA551D │ │ │ │ +849DA880CC66EB29619D609A54BE61F657396CA5C79BA388E216BDBF67552D28 │ │ │ │ +BC6DF4F5FBA11F4A4BCD93A91C9529C2A0BB29E663890816C1BAA9987B189555 │ │ │ │ +09873BB18BD0EB641FA377B854FE5AA61EB0812669D041C407A549013B26C2E7 │ │ │ │ +1E4571B231DCC67945408BDEF190763213DFFDFB5534BD44CD3CEAA5A37A68DA │ │ │ │ +B1222AB920DF63A86BBECECFDEA84BEA7B8145B29460C688330388507004F0B3 │ │ │ │ +A2C5462D502FC1842777B4703297151D87436D44D8A86045EE7259A8004B7315 │ │ │ │ +9AF7ADAE217698800462555294E8308755FE03C50E73704CE2AD0BA61BF6C9C3 │ │ │ │ +A64683BAE87BC860E093AB055639307BD855675341889A0130B89A84B3E2697D │ │ │ │ +53B26890A5357ABAE23D2FD68F662588BD9B4A6541A9EC6CCE0979E6C6AA48BA │ │ │ │ +F7A366031A20AE55A171022861019DFE8A0C1FBF283D91DD826CE43CCDB7EF36 │ │ │ │ +8060D688DEDD81ED9E51E4CEE458460B1621BA26E09F66B07533D40F062488A6 │ │ │ │ +08DC3DBD679333366D74C1DAA06C54247BD18BD6B0CFB2B2A7461D5B4EE31DB4 │ │ │ │ +A2E66E9E22DC17DEE2010BD71D650519041CA65D0925661A24B4AA73D9C2E0B1 │ │ │ │ +F63BE17A510B7D8A1A4D126C1FB7B15C9F01D886AA51F50D2463EF01231882E7 │ │ │ │ +36DAAF37A015B579A84B34FF724A5587063A40122EE5920918D119CF2AC89AF6 │ │ │ │ +BC3B02545E1695C04C2D9C4245B32AF9B3FEE29048E211CDC238C7E872DF6A9E │ │ │ │ +4004CE870E44A525E401D5842F1246C61396D4A59B67DFD48D93D1946BE35B86 │ │ │ │ +F1E3A56DE260459B208A8160020265AA13BFC4630743F249F3E684D8F5DD029E │ │ │ │ +973CF409A94484030F10821022DB24B8D572E25C71CC9ECF8E10CB9AC93F5F2D │ │ │ │ +AD7095028BEF12EF87B26C18319B2B50E11DF8BB1BD16AF3EEA22DDFD7203E8A │ │ │ │ +C9EC28DF593893435C50147B3B8A130DE2986ACC16A5179D8A02AB5988FD8067 │ │ │ │ +D725EDDDCB09F61F0C38B89923673F89D05FE60F873806639129A122C448D4FA │ │ │ │ +FD3A97D1C1E6AD1B18A0C439A15B74D92A5F5B275849012D11107EDE4DC086A9 │ │ │ │ +01F5C56BC65933842B7BD0054B0A02C09B3100394125943150901DDF6622022D │ │ │ │ +2B6841CE9C17D921AD8314E5772A73892309E2F1C876C66A472E3F538DFF7154 │ │ │ │ +7E50F5D976C408E8E84FC3DE0E5A68DCAAE68FB583F5A8804FE021A430A4CDE4 │ │ │ │ +33FEE5F3C7E4D54B13E9CFEA6281D2CDA0A64177068236BF16D0D5E05C898D3D │ │ │ │ +842C521B0C99EA8CDDE69C0ABC317B603F5ABAC1E9367A47C0B0B3C6FDC199DE │ │ │ │ +444B66F3D4EAE14C2D29377B6B952A0F5BB813A1200DEB0C0E9DB8C9BB041855 │ │ │ │ +764610F5A354561C22E6D7236C3348150B705500889D204488CC9297582AE3CC │ │ │ │ +E1B2D26826ECC9CAF0A9A5944855DB50E74C7579B667E0134629C7FB8BB31220 │ │ │ │ +718C64C60671497A156E1738D33D14352E130AB673EC4D7E1C480FD2444700F6 │ │ │ │ +EC8275936B5E875AB1D3CB886085B0F762ACE02558C9CD360D2EC19E9D6FDF0F │ │ │ │ +C3C9D27636CCA26B6A8CFA7A07FC46140042A96003E7947C42E655AD5D06D48A │ │ │ │ +D5F1882DCF3812827B0F0591691D35FDF7B2A3B17C8E5AC8462D9A04008CA0CE │ │ │ │ +30566C5FE93F070B3B36792DB784117E6745ECEDCA720AEB453E34DFABAA1FEE │ │ │ │ +E9603B7ED2C8C74ADBEAFED3258E1235D56DC81E46F72A3FF20ADC709C27D250 │ │ │ │ +4A4A4B2D0ADCA2AABB90C82A26A366C90F5E0B7944B644DEC48E0C77A1B1906C │ │ │ │ +E3AA222B56B6E8745EE364954AA94357B0E3078A86B41DD284F0EBF022CA71F4 │ │ │ │ +07764EAA4B8EADD074A951A1B1175C6D8A3579B3C522EB141D1D2228136B5603 │ │ │ │ +2035ACC9A5A29DA93C77C66729C3A1F66CAD5FA61D5456FCCDC0A3E47151C4DC │ │ │ │ +5EC98D6E3653AEABC20B5622A349EEA558C16C76B6EECC6C017549B0ECD1BBBA │ │ │ │ +8AA47814B326973486F5B206DB164DF58D28606074E292BA2BFA0942C98BAB82 │ │ │ │ +0CAFA04D9BAA9E3716A0C021957B36069848DD2CCCB654E50E438FE45772AA5C │ │ │ │ +8EF71BC07BC1BE7FA42B9D1A7F1CB534C510DE77C7BC06558D74011B9B96D8E4 │ │ │ │ +5F00567E463900C32602D9855236DC630C98F11E1D132E539CAF8146366470D1 │ │ │ │ +3E8A594A79AD3D1B184EBC851994472E05DE595DD9DE2D213BB2DE093F82D6C1 │ │ │ │ +6ADD037F1E9BA2370BECC37F773C70D82D61D40256FF9B20B5A690AB99AEF3B7 │ │ │ │ +378FBA6A83002EA02FB21A2F9CF9291DDCCB5847CF57A469D066295BAB54B19A │ │ │ │ +9664C864AE883216D9A034176E36A314F715FA268602D65F1F9E2668E609B361 │ │ │ │ +671866EAEEB52AC8B11DF74A00CA51AAC5CC02EAF52170E4B02DA643404D3F03 │ │ │ │ +18A6157059C214AB67092F4C158FEF1CDD22DEC704CF8290035A957982E0753B │ │ │ │ +B701CAB93399B22369486268BF9B2BE5D5E60AE3C0B421BDFD39E7F629E66B │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -8572,17 +8584,17 @@ │ │ │ │ 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 1[44 44 │ │ │ │ 1[44 44 44 33[{}86 83.022 /CMTT10 rf /Fq 142[37 23[48 │ │ │ │ 69 2[57 2[63 66 53 3[57 1[46 5[69 2[62 65[{}11 83.022 │ │ │ │ /CMMI10 rf /Fr 132[67 60 2[97 71 75 52 53 55 2[67 75 │ │ │ │ 112 37 2[37 75 67 41 61 75 60 1[65 13[75 2[92 101 1[128 │ │ │ │ 3[50 4[103 97 96 102 11[67 67 67 67 67 49[{}34 119.552 │ │ │ │ /CMBX12 rf /Fs 131[83 2[44 2[44 46 32 33 33 2[42 46 69 │ │ │ │ -23 2[23 1[42 1[37 3[42 13[46 6[52 1[43 19[42 3[42 1[42 │ │ │ │ -3[23 44[{}22 83.022 /CMSL10 rf /Ft 132[48 42 2[69 50 │ │ │ │ -53 37 38 39 2[48 53 80 27 2[27 53 48 29 44 53 42 1[46 │ │ │ │ +23 2[23 1[42 1[37 3[42 13[46 6[52 1[43 19[42 3[42 42 │ │ │ │ +42 3[23 44[{}23 83.022 /CMSL10 rf /Ft 132[48 42 2[69 │ │ │ │ +50 53 37 38 39 2[48 53 80 27 2[27 53 48 29 44 53 42 1[46 │ │ │ │ 6[58 6[53 2[65 72 75 91 57 2[36 3[63 73 69 68 72 7[48 │ │ │ │ 2[48 48 48 48 48 48 48 1[27 46[{}42 83.022 /CMBX10 rf │ │ │ │ /Fu 131[83 42 37 44 44 60 44 46 32 33 33 44 46 42 46 │ │ │ │ 69 23 44 25 23 46 42 25 37 46 37 46 42 4[42 3[62 85 1[62 │ │ │ │ 60 46 61 1[57 65 62 76 52 65 1[30 62 1[54 57 63 60 59 │ │ │ │ 62 3[65 2[23 42 42 42 42 42 42 42 42 42 42 42 23 28 23 │ │ │ │ 65 1[32 32 23 4[42 20[46 46 48 11[{}73 83.022 /CMR10 │ │ │ │ @@ -8607,19 +8619,19 @@ │ │ │ │ E00007CCF8003F8C7F007F0C3F80FC0C0FC0781E0780601E0180001E0000001E0000001E │ │ │ │ 0000001E0000001E0000000C00001A1D7C9E23>42 D E │ │ │ │ /Fx load 0 Fx currentfont 66.6667 scalefont put/FMat │ │ │ │ X/FBB X/IEn X │ │ │ │ %EndDVIPSBitmapFont │ │ │ │ /Fy 134[51 3[54 38 38 38 2[49 54 81 1[51 1[27 54 49 30 │ │ │ │ 43 1[43 1[49 9[100 4[72 1[66 4[76 50 2[77 2[75 70 69 │ │ │ │ -73 10[49 3[49 1[49 1[27 1[27 44[{}31 99.6264 /CMR12 rf │ │ │ │ -/Fz 172[90 2[110 121 2[97 6[106 18[81 3[45 46[{}7 143.462 │ │ │ │ -/CMBX12 rf /FA 134[70 2[70 73 51 52 51 2[66 73 111 36 │ │ │ │ -2[36 1[66 1[58 3[66 13[73 6[83 76[{}16 143.462 /CMR17 │ │ │ │ -rf end │ │ │ │ +73 10[49 3[49 49 49 1[27 1[27 44[{}32 99.6264 /CMR12 │ │ │ │ +rf /Fz 172[90 2[110 121 2[97 6[106 18[81 3[45 46[{}7 │ │ │ │ +143.462 /CMBX12 rf /FA 134[70 2[70 73 51 52 51 2[66 73 │ │ │ │ +111 36 2[36 1[66 1[58 3[66 13[73 6[83 76[{}16 143.462 │ │ │ │ +/CMR17 rf end │ │ │ │ %%EndProlog │ │ │ │ %%BeginSetup │ │ │ │ %%Feature: *Resolution 600dpi │ │ │ │ TeXDict begin │ │ │ │ %%BeginPaperSize: Letter │ │ │ │ /setpagedevice where │ │ │ │ { pop << /PageSize [612 792] >> setpagedevice } │ │ │ │ @@ -8629,27 +8641,27 @@ │ │ │ │ end │ │ │ │ %%EndSetup │ │ │ │ %%Page: 1 1 │ │ │ │ TeXDict begin 1 0 bop 590 739 a FA(Solving)43 b(Linear)g(Systems)f │ │ │ │ (using)h Fz(SPOOLES)54 b(2.2)778 1005 y Fy(C.)33 b(C.)g(Ashcraft,)g(R.) │ │ │ │ f(G.)h(Grimes,)g(D.)f(J.)h(Pierce,)h(D.)e(K.)g(W)-8 b(ah)1442 │ │ │ │ 1121 y(Bo)s(eing)32 b(Phan)m(tom)i(W)-8 b(orks)2458 1085 │ │ │ │ -y Fx(*)1611 1340 y Fy(Jan)m(uary)33 b(6,)f(2026)p 0 5173 │ │ │ │ -1560 4 v 92 5226 a Fw(*)127 5249 y Fv(P)-6 b(.)33 b(O.)g(Bo)n(x)h │ │ │ │ -(24346,)j(Mail)32 b(Stop)i(7L-22,)i(Seattle,)h(W)-6 b(ashington)36 │ │ │ │ -b(98124.)62 b(This)32 b(researc)n(h)i(w)n(as)g(supp)r(orted)g(in)f │ │ │ │ -(part)h(b)n(y)g(the)g(D)n(ARP)-6 b(A)0 5328 y(Con)n(tract)33 │ │ │ │ -b(D)n(ABT63-95-C-0122)f(and)g(the)g(DoD)g(High)f(P)n(erformance)h │ │ │ │ -(Computing)g(Mo)r(dernization)g(Program)f(Common)h(HPC)f(Soft)n(w)n │ │ │ │ -(are)0 5407 y(Supp)r(ort)25 b(Initiativ)n(e.)1929 5656 │ │ │ │ -y Fu(1)p eop end │ │ │ │ +y Fx(*)1586 1340 y Fy(Jan)m(uary)34 b(10,)e(2026)p 0 │ │ │ │ +5173 1560 4 v 92 5226 a Fw(*)127 5249 y Fv(P)-6 b(.)33 │ │ │ │ +b(O.)g(Bo)n(x)h(24346,)j(Mail)32 b(Stop)i(7L-22,)i(Seattle,)h(W)-6 │ │ │ │ +b(ashington)36 b(98124.)62 b(This)32 b(researc)n(h)i(w)n(as)g(supp)r │ │ │ │ +(orted)g(in)f(part)h(b)n(y)g(the)g(D)n(ARP)-6 b(A)0 5328 │ │ │ │ +y(Con)n(tract)33 b(D)n(ABT63-95-C-0122)f(and)g(the)g(DoD)g(High)f(P)n │ │ │ │ +(erformance)h(Computing)g(Mo)r(dernization)g(Program)f(Common)h(HPC)f │ │ │ │ +(Soft)n(w)n(are)0 5407 y(Supp)r(ort)25 b(Initiativ)n(e.)1929 │ │ │ │ +5656 y Fu(1)p eop end │ │ │ │ %%Page: 2 2 │ │ │ │ TeXDict begin 2 1 bop 0 100 a Fu(2)327 b Ft(SPOOLES)32 │ │ │ │ b(2.2)27 b Fs(|)g(Solving)g(Linear)g(Systems)p 2053 100 │ │ │ │ -1186 4 v 1379 w(Jan)n(uary)f(6,)h(2026)0 390 y Fr(Con)l(ten)l(ts)0 │ │ │ │ +1145 4 v 1338 w(Jan)n(uary)e(10,)i(2026)0 390 y Fr(Con)l(ten)l(ts)0 │ │ │ │ 601 y Ft(1)77 b(Ov)m(erview)3335 b(4)0 812 y(2)77 b(Serial)31 │ │ │ │ b(Solution)g(of)g Fq(AX)f Fu(=)23 b Fq(Y)50 b Ft(using)31 │ │ │ │ b(an)h Fq(LU)40 b Ft(factorization)1572 b(6)125 938 y │ │ │ │ Fu(2.1)83 b(Reading)28 b(the)f(input)i(parameters)k(.)42 │ │ │ │ b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g │ │ │ │ (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) │ │ │ │ 134 b(6)125 1065 y(2.2)83 b(Comm)n(unicating)27 b(the)h(data)f(for)h │ │ │ │ @@ -8749,24 +8761,24 @@ │ │ │ │ b(.)d(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h │ │ │ │ (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)93 b(23)0 │ │ │ │ 5196 y Ft(A)53 b Fp(allInOne.c)27 b Ft({)32 b(A)g(Serial)f │ │ │ │ Fq(LU)40 b Ft(Driv)m(er)33 b(Program)1941 b(24)0 5407 │ │ │ │ y(B)57 b Fp(allInOne.c)27 b Ft({)32 b(A)g(Serial)f Fq(LU)40 │ │ │ │ b Ft(Driv)m(er)33 b(Program)1941 b(31)p eop end │ │ │ │ %%Page: 3 3 │ │ │ │ -TeXDict begin 3 2 bop 0 100 a Fs(Jan)n(uary)26 b(6,)h(2026)p │ │ │ │ -661 100 1214 4 v 1377 w Ft(SPOOLES)32 b(2.2)27 b Fs(|)g(Solving)g │ │ │ │ +TeXDict begin 3 2 bop 0 100 a Fs(Jan)n(uary)26 b(10,)g(2026)p │ │ │ │ +702 100 1172 4 v 1336 w Ft(SPOOLES)32 b(2.2)27 b Fs(|)g(Solving)g │ │ │ │ (Linear)g(Systems)327 b Fu(3)0 390 y Ft(C)56 b Fp(allInOne.c)27 │ │ │ │ b Ft({)32 b(A)g(Serial)f Fq(LU)40 b Ft(Driv)m(er)33 b(Program)1941 │ │ │ │ b(39)0 598 y(D)52 b Fp(allInOne.c)27 b Ft({)32 b(A)g(Serial)f │ │ │ │ Fq(QR)h Ft(Driv)m(er)h(Program)1934 b(49)p eop end │ │ │ │ %%Page: 4 4 │ │ │ │ TeXDict begin 4 3 bop 0 100 a Fu(4)327 b Ft(SPOOLES)32 │ │ │ │ b(2.2)27 b Fs(|)g(Solving)g(Linear)g(Systems)p 2053 100 │ │ │ │ -1186 4 v 1379 w(Jan)n(uary)f(6,)h(2026)0 390 y Fr(1)135 │ │ │ │ +1145 4 v 1338 w(Jan)n(uary)e(10,)i(2026)0 390 y Fr(1)135 │ │ │ │ b(Ov)l(erview)0 598 y Fu(The)34 b Ft(SPOOLES)h Fu(soft)n(w)n(are)d │ │ │ │ (library)h(is)h(designed)g(to)g(solv)n(e)f(sparse)g(systems)h(of)g │ │ │ │ (linear)f(equations)h Fq(AX)40 b Fu(=)34 b Fq(Y)53 b │ │ │ │ Fu(for)34 b Fq(X)7 b Fu(,)0 698 y(where)20 b Fq(A)h Fu(is)f(full)h │ │ │ │ (rank)f(and)g Fq(X)27 b Fu(and)20 b Fq(Y)40 b Fu(are)19 │ │ │ │ b(dense)h(matrices.)34 b(The)21 b(matrix)f Fq(A)g Fu(can)g(b)r(e)h │ │ │ │ (either)g(real)e(or)h(complex,)h(symmetric,)0 797 y(Hermitian,)28 │ │ │ │ @@ -8888,16 +8900,16 @@ │ │ │ │ 5308 y(F)-7 b(or)35 b(example,)k(consider)c(the)i Fp(DenseMtx)d │ │ │ │ Fu(ob)5 b(ject)36 b(that)h(mo)r(dels)f(a)h(dense)f(matrix.)63 │ │ │ │ b(The)37 b Fp(DenseMtx/DenseMt)o(x.)o(h)0 5407 y Fu(header)j(\014le)i │ │ │ │ (de\014nes)f(the)h(ob)5 b(ject's)41 b(C)g(struct)g(and)h(has)e(protot)n │ │ │ │ (yp)r(es)h(\(with)h(extensiv)n(e)e(commen)n(ts\))i(of)f(the)g(ob)5 │ │ │ │ b(ject's)p eop end │ │ │ │ %%Page: 5 5 │ │ │ │ -TeXDict begin 5 4 bop 0 100 a Fs(Jan)n(uary)26 b(6,)h(2026)p │ │ │ │ -661 100 1214 4 v 1377 w Ft(SPOOLES)32 b(2.2)27 b Fs(|)g(Solving)g │ │ │ │ +TeXDict begin 5 4 bop 0 100 a Fs(Jan)n(uary)26 b(10,)g(2026)p │ │ │ │ +702 100 1172 4 v 1336 w Ft(SPOOLES)32 b(2.2)27 b Fs(|)g(Solving)g │ │ │ │ (Linear)g(Systems)327 b Fu(5)0 390 y(metho)r(ds.)35 b(The)21 │ │ │ │ b(source)f(\014les)h(are)f(found)i(in)f(the)h Fp(DenseMtx/src)16 │ │ │ │ b Fu(directory)-7 b(.)33 b(The)21 b(L)2629 373 y Fm(A)2666 │ │ │ │ 390 y Fu(T)2712 408 y(E)2758 390 y(X)h(do)r(cumen)n(tation)f(\014les)g │ │ │ │ (are)f(found)0 490 y(in)g(the)h Fp(DenseMtx/doc)15 b │ │ │ │ Fu(directory)-7 b(.)34 b(The)20 b(\014les)g(can)g(b)r(e)g(used)g(to)g │ │ │ │ (create)g(the)g Fp(DenseMtx)d Fu(ob)5 b(ject's)20 b(c)n(hapter)f(in)i │ │ │ │ @@ -8914,15 +8926,15 @@ │ │ │ │ Fq(LU)34 b Fu(and)24 b Fq(QR)h Fu(driv)n(er)0 1013 y(programs.)58 │ │ │ │ b(The)36 b Fp(MT/drivers)31 b Fu(and)k Fp(MPI/drivers)c │ │ │ │ Fu(directories)j(con)n(tain)h(the)h(m)n(ultithreaded)f(and)h(MPI)f │ │ │ │ Fq(LU)43 b Fu(driv)n(er)0 1112 y(programs.)p eop end │ │ │ │ %%Page: 6 6 │ │ │ │ TeXDict begin 6 5 bop 0 100 a Fu(6)327 b Ft(SPOOLES)32 │ │ │ │ b(2.2)27 b Fs(|)g(Solving)g(Linear)g(Systems)p 2053 100 │ │ │ │ -1186 4 v 1379 w(Jan)n(uary)f(6,)h(2026)0 390 y Fr(2)135 │ │ │ │ +1145 4 v 1338 w(Jan)n(uary)e(10,)i(2026)0 390 y Fr(2)135 │ │ │ │ b(Serial)46 b(Solution)f(of)g Fj(AX)e Fi(=)33 b Fj(Y)71 │ │ │ │ b Fr(using)45 b(an)g Fj(LU)56 b Fr(factorization)0 599 │ │ │ │ y Fu(The)27 b(user)g(has)g(some)g(represen)n(tation)f(of)h(the)h(data)f │ │ │ │ (whic)n(h)g(represen)n(ts)f(the)i(linear)f(system,)g │ │ │ │ Fq(AX)j Fu(=)22 b Fq(Y)d Fu(.)37 b(The)27 b(user)g(w)n(an)n(ts)0 │ │ │ │ 699 y(the)h(solution)f Fq(X)7 b Fu(.)36 b(The)28 b Ft(SPOOLES)g │ │ │ │ Fu(library)e(will)i(use)f Fq(A)h Fu(and)g Fq(Y)46 b Fu(and)27 │ │ │ │ @@ -9018,16 +9030,16 @@ │ │ │ │ b Fu(or)23 b Fp(InpMtx)p 3048 5253 V 29 w(inputComplexEntr)o(y\()o(\))p │ │ │ │ 0 5330 1560 4 v 92 5384 a Fg(1)127 5407 y Ff(InpMtx)i │ │ │ │ Fv(stands)g(for)d Ff(Inp)p Fv(ut)j Ff(M)p Fv(a)p Ff(t)p │ │ │ │ Fv(ri)p Ff(x)p Fv(,)f(for)f(it)g(is)g(the)i(ob)t(ject)f(in)n(to)h(whic) │ │ │ │ n(h)e(the)i(user)e(inputs)h(the)h(matrix)e(en)n(tries.)p │ │ │ │ eop end │ │ │ │ %%Page: 7 7 │ │ │ │ -TeXDict begin 7 6 bop 0 100 a Fs(Jan)n(uary)26 b(6,)h(2026)p │ │ │ │ -661 100 1214 4 v 1377 w Ft(SPOOLES)32 b(2.2)27 b Fs(|)g(Solving)g │ │ │ │ +TeXDict begin 7 6 bop 0 100 a Fs(Jan)n(uary)26 b(10,)g(2026)p │ │ │ │ +702 100 1172 4 v 1336 w Ft(SPOOLES)32 b(2.2)27 b Fs(|)g(Solving)g │ │ │ │ (Linear)g(Systems)327 b Fu(7)0 390 y(to)30 b(place)g(that)g(en)n(try)g │ │ │ │ (in)n(to)g(the)g Fp(InpMtx)e Fu(ob)5 b(ject.)44 b(Finally)30 │ │ │ │ b(this)g(co)r(de)g(segmen)n(t)g(closes)f(the)i(\014le.)44 │ │ │ │ b(\014nalizes)30 b(the)g(input)h(to)0 490 y Fp(InpMtx)23 │ │ │ │ b Fu(b)n(y)j(con)n(v)n(erting)e(the)i(in)n(ternal)f(storage)e(of)j(the) │ │ │ │ g(matrix)f(en)n(tries)g(to)h(a)f(v)n(ector)f(form.)36 │ │ │ │ b(\(This)26 b(is)g(necessary)e(for)h(later)0 589 y(steps.\))0 │ │ │ │ @@ -9099,15 +9111,15 @@ │ │ │ │ (they)h(apply)f(to,)h(or)e(the)i(library)e(name,)h(e.g.,)g │ │ │ │ Ff(SPOOLES)p 3716 5328 V 27 w(REAL)p Fv(.)0 5407 y(They)e(are)g │ │ │ │ (describ)r(ed)g(in)f(the)i(reference)f(man)n(ual)g(in)f(the)i(section)g │ │ │ │ (for)d(the)j(particular)e(ob)t(ject.)p eop end │ │ │ │ %%Page: 8 8 │ │ │ │ TeXDict begin 8 7 bop 0 100 a Fu(8)327 b Ft(SPOOLES)32 │ │ │ │ b(2.2)27 b Fs(|)g(Solving)g(Linear)g(Systems)p 2053 100 │ │ │ │ -1186 4 v 1379 w(Jan)n(uary)f(6,)h(2026)125 390 y Fu(Ev)n(ery)e(ob)5 │ │ │ │ +1145 4 v 1338 w(Jan)n(uary)e(10,)i(2026)125 390 y Fu(Ev)n(ery)e(ob)5 │ │ │ │ b(ject)27 b(in)g Ft(SPOOLES)g Fu(has)g(prin)n(t)g(metho)r(ds)g(to)g │ │ │ │ (output)h(the)f(con)n(ten)n(ts)f(of)h(that)h(ob)5 b(ject.)36 │ │ │ │ b(This)27 b(is)g(illustrated)0 490 y(in)h(this)g(co)r(de)g(segmen)n(t)f │ │ │ │ (b)n(y)h(prin)n(ting)f(the)h(input)h(matrix)e(as)g(con)n(tained)g(in)i │ │ │ │ (the)f Fp(InpMtx)d Fu(ob)5 b(ject,)28 b Fp(mtxA)p Fu(.)e(T)-7 │ │ │ │ b(o)28 b(shorten)f(this)0 589 y(c)n(hapter)g(w)n(e)g(will)g(from)g(no)n │ │ │ │ (w)g(on)g(omit)h(the)g(part)f(of)g(the)h(co)r(de)f(that)h(prin)n(ts)f │ │ │ │ @@ -9179,16 +9191,16 @@ │ │ │ │ 5308 y(The)j(righ)n(t)f(hand)h(side)g(en)n(tries)f(are)g(then)h(in,)h │ │ │ │ (ro)n(w)e(b)n(y)h(ro)n(w,)f(and)h(placed)g(in)n(to)g(their)g(lo)r │ │ │ │ (cations)f(via)g(one)h(of)g(the)g(t)n(w)n(o)0 5407 y(\\set)c(en)n │ │ │ │ (tries")g(metho)r(ds.)37 b(Note,)27 b(the)h(nonzero)f(ro)n(ws)f(can)h │ │ │ │ (b)r(e)h(read)f(from)g(the)h(\014le)g(in)g(an)n(y)e(order.)p │ │ │ │ eop end │ │ │ │ %%Page: 9 9 │ │ │ │ -TeXDict begin 9 8 bop 0 100 a Fs(Jan)n(uary)26 b(6,)h(2026)p │ │ │ │ -661 100 1214 4 v 1377 w Ft(SPOOLES)32 b(2.2)27 b Fs(|)g(Solving)g │ │ │ │ +TeXDict begin 9 8 bop 0 100 a Fs(Jan)n(uary)26 b(10,)g(2026)p │ │ │ │ +702 100 1172 4 v 1336 w Ft(SPOOLES)32 b(2.2)27 b Fs(|)g(Solving)g │ │ │ │ (Linear)g(Systems)327 b Fu(9)0 390 y Fh(2.3)112 b(Reordering)38 │ │ │ │ b(the)f(linear)h(system)0 564 y Fu(The)30 b(\014rst)g(step)h(is)f(to)g │ │ │ │ (\014nd)h(the)g(p)r(erm)n(utation)f(matrix)f Fq(P)12 │ │ │ │ b Fu(,)31 b(and)g(then)f(p)r(erm)n(ute)h Fq(AX)j Fu(=)27 │ │ │ │ b Fq(Y)49 b Fu(in)n(to)30 b(\()p Fq(P)12 b(AP)3336 534 │ │ │ │ y Fl(T)3389 564 y Fu(\)\()p Fq(P)g(X)7 b Fu(\))27 b(=)g │ │ │ │ Fq(P)12 b(Y)19 b Fu(.)0 664 y(The)32 b(result)g(of)g(the)h │ │ │ │ @@ -9275,16 +9287,16 @@ │ │ │ │ b(ject.)p 0 5330 1560 4 v 92 5384 a Fg(3)127 5407 y Ff(IVL)24 │ │ │ │ b Fv(stands)h(for)e Ff(I)p Fv(n)n(teger)i Ff(V)p Fv(ector)f │ │ │ │ Ff(L)p Fv(ist,)g(i.e.,)e(a)i(list)f(of)g(in)n(teger)h(v)n(ectors.)p │ │ │ │ eop end │ │ │ │ %%Page: 10 10 │ │ │ │ TeXDict begin 10 9 bop 0 100 a Fu(10)327 b Ft(SPOOLES)31 │ │ │ │ b(2.2)c Fs(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1145 4 v 1338 w(Jan)n(uary)g(6,)h(2026)125 390 y Fu(Once)i(w)n(e)h(ha)n │ │ │ │ -(v)n(e)f(the)i(p)r(erm)n(utation)f(v)n(ector,)f(w)n(e)h(apply)g(it)g │ │ │ │ +1103 4 v 1297 w(Jan)n(uary)f(10,)i(2026)125 390 y Fu(Once)i(w)n(e)h(ha) │ │ │ │ +n(v)n(e)f(the)i(p)r(erm)n(utation)f(v)n(ector,)f(w)n(e)h(apply)g(it)g │ │ │ │ (to)g(the)h(fron)n(t)f(tree,)g(b)n(y)g(the)h Fp(ETree)p │ │ │ │ 3135 390 27 4 v 29 w(permuteVertices\()o(\))0 490 y Fu(metho)r(d,)41 │ │ │ │ b(and)c(then)h(to)g(the)g(matrix)f(with)h(the)g Fp(InpMtx)p │ │ │ │ 1874 490 V 29 w(permute\(\))c Fu(metho)r(d.)67 b(If)38 │ │ │ │ b(the)g(matrix)f Fq(A)h Fu(is)g(symmetric)f(or)0 589 │ │ │ │ y(Hermitian,)32 b(w)n(e)e(exp)r(ect)h(all)f(nonzero)g(en)n(tries)g(to)g │ │ │ │ (b)r(e)h(in)g(the)g(upp)r(er)g(triangle.)46 b(P)n(erm)n(uting)29 │ │ │ │ @@ -9371,16 +9383,16 @@ │ │ │ │ Fd(i)p Fv(-th)f(c)n(hevron)i(of)e Fd(A)g Fv(consists)h(of)f(the)i │ │ │ │ (diagonal)f(en)n(try)g Fd(A)1829 5338 y Fc(i;i)1896 5328 │ │ │ │ y Fv(,)g(the)g Fd(i)p Fv(-th)g(ro)n(w)f(of)g(the)h(upp)r(er)g(triangle) │ │ │ │ g(of)f Fd(A)p Fv(,)g(and)h(the)h Fd(i)p Fv(-th)e(column)h(of)0 │ │ │ │ 5407 y(the)f(lo)n(w)n(er)e(triangle)h(of)f Fd(A)p Fv(.)p │ │ │ │ eop end │ │ │ │ %%Page: 11 11 │ │ │ │ -TeXDict begin 11 10 bop 0 100 a Fs(Jan)n(uary)26 b(6,)h(2026)p │ │ │ │ -661 100 1172 4 v 1336 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ +TeXDict begin 11 10 bop 0 100 a Fs(Jan)n(uary)26 b(10,)g(2026)p │ │ │ │ +702 100 1131 4 v 1295 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ (Linear)f(Systems)328 b Fu(11)0 390 y Fp(chvmanager)39 │ │ │ │ b(=)44 b(ChvManager_new\()o(\))38 b(;)0 490 y(ChvManager_init\()o(chv)o │ │ │ │ (ma)o(na)o(ger)o(,)f(NO_LOCK,)k(1\))h(;)0 589 y(DVfill\(10,)d(cpus,)j │ │ │ │ (0.0\))g(;)0 689 y(IVfill\(20,)d(stats,)j(0\))g(;)0 789 │ │ │ │ y(rootchv)f(=)i(FrontMtx_factorI)o(np)o(Mtx)o(\(f)o(ron)o(tm)o(tx)o(,) │ │ │ │ 38 b(mtxA,)j(tau,)h(droptol,)567 888 y(chvmanager,)d(&error,)h(cpus,)i │ │ │ │ (stats,)f(msglvl,)g(msgFile\))f(;)0 988 y(ChvManager_free\()o(chv)o(ma) │ │ │ │ @@ -9465,15 +9477,15 @@ │ │ │ │ b(for)g(w)n(orking)f(storage.)34 b(The)25 b(last)f(step)h(is)f(to)h(p)r │ │ │ │ (erm)n(ute)g(the)g(ro)n(ws)e(of)h(the)h Fp(DenseMtx)d │ │ │ │ Fu(from)i(the)h(new)f(ordering)f(in)n(to)0 5407 y(the)28 │ │ │ │ b(old)f(ordering.)p eop end │ │ │ │ %%Page: 12 12 │ │ │ │ TeXDict begin 12 11 bop 0 100 a Fu(12)327 b Ft(SPOOLES)31 │ │ │ │ b(2.2)c Fs(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1145 4 v 1338 w(Jan)n(uary)g(6,)h(2026)0 390 y Fh(2.7)112 │ │ │ │ +1103 4 v 1297 w(Jan)n(uary)f(10,)i(2026)0 390 y Fh(2.7)112 │ │ │ │ b(Sample)39 b(Matrix)f(and)h(Righ)m(t)d(Hand)i(Side)h(Files)0 │ │ │ │ 568 y Fu(Immediately)34 b(b)r(elo)n(w)g(are)f(t)n(w)n(o)g(sample)h │ │ │ │ (\014les:)50 b Fp(matrix.input)29 b Fu(holds)34 b(the)g(matrix)g(input) │ │ │ │ h(and)f Fp(rhs.input)c Fu(holds)k(the)0 668 y(righ)n(t)20 │ │ │ │ b(hand)h(side.)35 b(This)21 b(example)g(is)g(for)f(a)h(symmetric)g │ │ │ │ (Laplacian)f(op)r(erator)f(on)i(a)f(3)5 b Fb(\002)g Fu(3)21 │ │ │ │ b(grid.)34 b(Only)21 b(en)n(tries)f(in)h(the)h(upp)r(er)0 │ │ │ │ @@ -9502,16 +9514,16 @@ │ │ │ │ (0.0)h(0.0)f(0.0)1533 2351 y(5)h(0.0)g(0.0)f(0.0)g(0.0)h(0.0)f(1.0)g │ │ │ │ (0.0)h(0.0)f(0.0)1533 2451 y(6)h(0.0)g(0.0)f(0.0)g(0.0)h(0.0)f(0.0)g │ │ │ │ (1.0)h(0.0)f(0.0)1533 2550 y(7)h(0.0)g(0.0)f(0.0)g(0.0)h(0.0)f(0.0)g │ │ │ │ (0.0)h(1.0)f(0.0)1533 2650 y(8)h(0.0)g(0.0)f(0.0)g(0.0)h(0.0)f(0.0)g │ │ │ │ (0.0)h(0.0)f(1.0)p 3231 2650 V 1483 2653 1750 4 v eop │ │ │ │ end │ │ │ │ %%Page: 13 13 │ │ │ │ -TeXDict begin 13 12 bop 0 100 a Fs(Jan)n(uary)26 b(6,)h(2026)p │ │ │ │ -661 100 1172 4 v 1336 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ +TeXDict begin 13 12 bop 0 100 a Fs(Jan)n(uary)26 b(10,)g(2026)p │ │ │ │ +702 100 1131 4 v 1295 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ (Linear)f(Systems)328 b Fu(13)0 390 y Fr(3)135 b(Multithreaded)45 │ │ │ │ b(Solution)h(of)f Fj(AX)e Fi(=)33 b Fj(Y)71 b Fr(using)45 │ │ │ │ b(an)f Fj(LU)57 b Fr(factorization)0 599 y Fu(The)26 │ │ │ │ b(only)f(computations)g(that)h(are)f(m)n(ultithreaded)g(are)g(the)h │ │ │ │ (factorization)e(and)i(forw)n(ard)e(and)h(bac)n(ksolv)n(es.)34 │ │ │ │ b(Therefore,)0 699 y(this)c(section)g(will)g(describ)r(e)g(only)g(the)g │ │ │ │ (di\013erences)g(b)r(et)n(w)n(een)g(the)h(serial)e(driv)n(er)g(in)h │ │ │ │ @@ -9590,18 +9602,18 @@ │ │ │ │ 5308 y(DV_init\(cumopsDV)o(,)d(nthread,)i(NULL\))h(;)0 │ │ │ │ 5407 y(ownersIV)f(=)j(ETree_ddMap\(front)o(ETr)o(ee)o(,)38 │ │ │ │ b(type,)j(symmetryflag,)d(cumopsDV,)i(1./\(2.*nthread\)\))d(;)p │ │ │ │ eop end │ │ │ │ %%Page: 14 14 │ │ │ │ TeXDict begin 14 13 bop 0 100 a Fu(14)327 b Ft(SPOOLES)31 │ │ │ │ b(2.2)c Fs(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1145 4 v 1338 w(Jan)n(uary)g(6,)h(2026)0 390 y Fu(The)d(\014rst)f(step) │ │ │ │ -h(is)f(to)h(ensure)f(that)g(eac)n(h)g(thread)g(has)g(a)h(fron)n(t)f(to) │ │ │ │ -g(o)n(wn,)h(decreasing)e(the)i(n)n(um)n(b)r(er)f(of)h(threads)f(if)h │ │ │ │ -(necessary)-7 b(.)0 490 y(W)g(e)31 b(then)f(construct)g(the)h(o)n │ │ │ │ +1103 4 v 1297 w(Jan)n(uary)f(10,)i(2026)0 390 y Fu(The)d(\014rst)f │ │ │ │ +(step)h(is)f(to)h(ensure)f(that)g(eac)n(h)g(thread)g(has)g(a)h(fron)n │ │ │ │ +(t)f(to)g(o)n(wn,)h(decreasing)e(the)i(n)n(um)n(b)r(er)f(of)h(threads)f │ │ │ │ +(if)h(necessary)-7 b(.)0 490 y(W)g(e)31 b(then)f(construct)g(the)h(o)n │ │ │ │ (wners)d(map)i(using)g(the)h(fron)n(t)f(tree)f(ob)5 b(ject.)45 │ │ │ │ b(The)30 b Fp(cumopsDV)d Fu(ob)5 b(ject)30 b(is)g(a)g(double)g │ │ │ │ (precision)0 589 y(v)n(ector)e(ob)5 b(ject)29 b(whose)f(length)h(is)g │ │ │ │ (the)h(n)n(um)n(b)r(er)f(of)g(threads.)41 b(On)29 b(return)f(from)h │ │ │ │ (the)h(map)f(call,)g(it)h(con)n(tains)e(the)h(n)n(um)n(b)r(er)0 │ │ │ │ 689 y(of)f(factor)e(op)r(erations)h(that)g(will)h(b)r(e)g(p)r(erformed) │ │ │ │ f(b)n(y)h(eac)n(h)f(thread)g(when)g(piv)n(oting)g(for)g(stabilit)n(y)h │ │ │ │ @@ -9679,16 +9691,16 @@ │ │ │ │ b(Mo)r(derate)33 b(sp)r(eedups)g(in)g(the)g(factorization)f(ha)n(v)n(e) │ │ │ │ g(b)r(een)h(for)g(v)-5 b(alues)32 b(of)h Fp(lookahead)d │ │ │ │ Fu(up)j(to)g(the)g(n)n(um)n(b)r(er)208 5308 y(of)i(threads.)58 │ │ │ │ b(F)-7 b(or)35 b(nonzero)f Fp(lookahead)d Fu(v)-5 b(alues,)37 │ │ │ │ b(the)f(amoun)n(t)e(of)h(w)n(orking)f(storage)f(can)i(increase,)g │ │ │ │ (sometimes)208 5407 y(appreciably)-7 b(.)p eop end │ │ │ │ %%Page: 15 15 │ │ │ │ -TeXDict begin 15 14 bop 0 100 a Fs(Jan)n(uary)26 b(6,)h(2026)p │ │ │ │ -661 100 1172 4 v 1336 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ +TeXDict begin 15 14 bop 0 100 a Fs(Jan)n(uary)26 b(10,)g(2026)p │ │ │ │ +702 100 1131 4 v 1295 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ (Linear)f(Systems)328 b Fu(15)0 390 y(The)22 b(p)r(ost-pro)r(cessing)f │ │ │ │ (of)h(the)g(factorization)f(is)h(exactly)g(the)g(same)g(as)g(the)g │ │ │ │ (serial)f(co)r(de.)35 b(Note,)24 b(this)e(step)g(can)g(b)r(e)h │ │ │ │ (trivially)0 490 y(parallelized,)j(but)j(is)e(not)h(done)f(at)h(presen) │ │ │ │ n(t.)125 614 y(After)d(the)g(p)r(ost-pro)r(cessing)e(step,)j(the)f │ │ │ │ Fp(FrontMtx)d Fu(ob)5 b(ject)24 b(con)n(tains)g(the)i │ │ │ │ Fq(L)2539 626 y Fl(J)n(;I)2631 614 y Fu(,)g Fq(D)2749 │ │ │ │ @@ -9724,15 +9736,15 @@ │ │ │ │ b(in)h(the)g(latter.)0 3167 y Fh(3.7)112 b(Sample)39 │ │ │ │ b(Matrix)f(and)h(Righ)m(t)d(Hand)i(Side)h(Files)0 3345 │ │ │ │ y Fu(The)28 b(m)n(ultithreaded)f(driv)n(er)g(uses)g(the)h(same)f(input) │ │ │ │ h(\014les)g(as)f(found)g(in)h(Section)g(2.7.)p eop end │ │ │ │ %%Page: 16 16 │ │ │ │ TeXDict begin 16 15 bop 0 100 a Fu(16)327 b Ft(SPOOLES)31 │ │ │ │ b(2.2)c Fs(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1145 4 v 1338 w(Jan)n(uary)g(6,)h(2026)0 390 y Fr(4)135 │ │ │ │ +1103 4 v 1297 w(Jan)n(uary)f(10,)i(2026)0 390 y Fr(4)135 │ │ │ │ b(MPI)44 b(Solution)i(of)f Fj(AX)d Fi(=)34 b Fj(Y)70 │ │ │ │ b Fr(using)45 b(an)g Fj(LU)57 b Fr(factorization)0 597 │ │ │ │ y Fu(Unlik)n(e)30 b(the)h(serial)d(and)i(m)n(ultithreaded)g(en)n │ │ │ │ (vironmen)n(ts)f(where)h(the)g(data)g(structures)f(are)g(global,)h │ │ │ │ (existing)g(under)f(one)0 697 y(address)d(space,)g(in)h(the)h(MPI)e(en) │ │ │ │ n(vironmen)n(t,)g(data)h(is)g(lo)r(cal,)f(eac)n(h)g(pro)r(cess)g(or)g │ │ │ │ (pro)r(cessor)f(has)h(its)h(o)n(wn)g(distinct)g(address)0 │ │ │ │ @@ -9819,16 +9831,16 @@ │ │ │ │ (cessors,)e(w)n(e)h(use)0 5407 y(the)e(distributed)g │ │ │ │ Fp(InpMtx)p 837 5407 27 4 v 29 w(MPI)p 998 5407 V 30 │ │ │ │ w(fullAdjacency\(\))22 b Fu(metho)r(d)28 b(to)f(construct)g(the)h │ │ │ │ Fp(IVL)f Fu(ob)5 b(ject)27 b(of)h(the)f(graph)g(of)g │ │ │ │ Fq(A)19 b Fu(+)f Fq(A)3819 5377 y Fl(T)3872 5407 y Fu(.)p │ │ │ │ eop end │ │ │ │ %%Page: 17 17 │ │ │ │ -TeXDict begin 17 16 bop 0 100 a Fs(Jan)n(uary)26 b(6,)h(2026)p │ │ │ │ -661 100 1172 4 v 1336 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ +TeXDict begin 17 16 bop 0 100 a Fs(Jan)n(uary)26 b(10,)g(2026)p │ │ │ │ +702 100 1131 4 v 1295 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ (Linear)f(Systems)328 b Fu(17)125 390 y(A)n(t)31 b(this)h(p)r(oin)n(t,) │ │ │ │ h(eac)n(h)d(pro)r(cessor)g(has)h(computed)g(its)h(o)n(wn)f(minim)n(um)h │ │ │ │ (degree)e(ordering)g(and)i(created)e(a)h(fron)n(t)g(tree)0 │ │ │ │ 490 y(ob)5 b(ject.)36 b(The)26 b(orderings)e(will)i(lik)n(ely)g(b)r(e)g │ │ │ │ (di\013eren)n(t,)h(b)r(ecause)e(eac)n(h)h(pro)r(cessors)d(input)k(a)e │ │ │ │ (di\013eren)n(t)i(random)e(n)n(um)n(b)r(er)g(seed)0 589 │ │ │ │ y(to)30 b(the)g(ordering)e(metho)r(d.)43 b(Only)29 b(one)h(ordering)e │ │ │ │ @@ -9892,15 +9904,15 @@ │ │ │ │ b(=)j(0)h(;)0 5208 y(newA)e(=)h(InpMtx_MPI_split)o(\(mt)o(xA)o(,)38 │ │ │ │ b(vtxmapIV,)h(stats,)j(msglvl,)e(msgFile,)h(firsttag,)0 │ │ │ │ 5308 y(MPI_COMM_WORLD\))c(;)0 5407 y(InpMtx_free\(mtxA)o(\))h(;)p │ │ │ │ eop end │ │ │ │ %%Page: 18 18 │ │ │ │ TeXDict begin 18 17 bop 0 100 a Fu(18)327 b Ft(SPOOLES)31 │ │ │ │ b(2.2)c Fs(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1145 4 v 1338 w(Jan)n(uary)g(6,)h(2026)0 390 y Fp(mtxA)42 │ │ │ │ +1103 4 v 1297 w(Jan)n(uary)f(10,)i(2026)0 390 y Fp(mtxA)42 │ │ │ │ b(=)h(newA)f(;)0 490 y(InpMtx_changeSto)o(rag)o(eM)o(od)o(e\(m)o(tx)o │ │ │ │ (A,)37 b(INPMTX_BY_VECTORS)o(\))g(;)0 589 y(newY)42 b(=)h │ │ │ │ (DenseMtx_MPI_spl)o(itB)o(yR)o(ows)o(\(m)o(txY)o(,)37 │ │ │ │ b(vtxmapIV,)j(stats,)h(msglvl,)1395 689 y(msgFile,)f(firsttag,)g │ │ │ │ (MPI_COMM_WORLD\))d(;)0 789 y(DenseMtx_free\(mt)o(xY\))g(;)0 │ │ │ │ 888 y(mtxY)42 b(=)h(newY)f(;)0 1073 y Fu(The)27 b Fp(InpMtx)p │ │ │ │ 439 1073 27 4 v 29 w(MPI)p 600 1073 V 30 w(split\(\))e │ │ │ │ @@ -9967,16 +9979,16 @@ │ │ │ │ (addition)f(of)h(the)g Fp(firsttag)c Fu(and)k(MPI)f(comm)n(unicator)f │ │ │ │ (at)i(the)g(end.)125 5308 y(The)h(p)r(ost-pro)r(cessing)e(of)j(the)f │ │ │ │ (factorization)f(is)h(the)h(same)f(in)g(principle)g(as)g(in)g(the)h │ │ │ │ (serial)e(co)r(de)h(but)h(di\013ers)f(in)h(that)0 5407 │ │ │ │ y(is)d(uses)h(the)g(distributed)g(data)f(structures.)p │ │ │ │ eop end │ │ │ │ %%Page: 19 19 │ │ │ │ -TeXDict begin 19 18 bop 0 100 a Fs(Jan)n(uary)26 b(6,)h(2026)p │ │ │ │ -661 100 1172 4 v 1336 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ +TeXDict begin 19 18 bop 0 100 a Fs(Jan)n(uary)26 b(10,)g(2026)p │ │ │ │ +702 100 1131 4 v 1295 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ (Linear)f(Systems)328 b Fu(19)0 390 y Fp(FrontMtx_MPI_pos)o(tPr)o(oc)o │ │ │ │ (es)o(s\(f)o(ro)o(ntm)o(tx)o(,)38 b(ownersIV,)h(stats,)i(msglvl,)1090 │ │ │ │ 490 y(msgFile,)f(firsttag,)g(MPI_COMM_WORLD\))d(;)0 682 │ │ │ │ y Fu(After)f(the)g(p)r(ost-pro)r(cessing)e(step,)j(eac)n(h)e(lo)r(cal)g │ │ │ │ Fp(FrontMtx)d Fu(ob)5 b(ject)36 b(con)n(tains)e(the)i │ │ │ │ Fq(L)2759 694 y Fl(J)n(;I)2851 682 y Fu(,)i Fq(D)2981 │ │ │ │ 694 y Fl(I)5 b(;I)3108 682 y Fu(and)36 b Fq(U)3335 694 │ │ │ │ @@ -10039,15 +10051,15 @@ │ │ │ │ b(=)43 b(FrontMtx_ownedCo)o(lum)o(ns)o(IV)o(\(fr)o(on)o(tmt)o(x,)37 │ │ │ │ b(myid,)k(ownersIV,)1787 5308 y(msglvl,)g(msgFile\))f(;)0 │ │ │ │ 5407 y(nmycol)h(=)i(IV_size\(ownedColu)o(mn)o(sIV)o(\))37 │ │ │ │ b(;)p eop end │ │ │ │ %%Page: 20 20 │ │ │ │ TeXDict begin 20 19 bop 0 100 a Fu(20)327 b Ft(SPOOLES)31 │ │ │ │ b(2.2)c Fs(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1145 4 v 1338 w(Jan)n(uary)g(6,)h(2026)0 390 y Fp(mtxX)42 │ │ │ │ +1103 4 v 1297 w(Jan)n(uary)f(10,)i(2026)0 390 y Fp(mtxX)42 │ │ │ │ b(=)h(DenseMtx_new\(\))38 b(;)0 490 y(if)43 b(\()g(nmycol)e(>)i(0)g(\)) │ │ │ │ h({)131 589 y(DenseMtx_init\(mt)o(xX)o(,)37 b(type,)42 │ │ │ │ b(0,)h(0,)g(nmycol,)d(nrhs,)i(1,)g(nmycol\))f(;)131 689 │ │ │ │ y(DenseMtx_rowIndi)o(ce)o(s\()o(mtx)o(X,)c(&nrow,)k(&rowind\))f(;)131 │ │ │ │ 789 y(IVcopy\(nmycol,)e(rowind,)i(IV_entries\(ownedC)o(ol)o(umn)o(sI)o │ │ │ │ (V\))o(\))e(;)0 888 y(})0 1079 y Fu(If)25 b Fq(A)h Fu(is)f(symmetric,)g │ │ │ │ (or)f(if)i(piv)n(oting)e(for)h(stabilit)n(y)g(w)n(as)f(not)h(used,)g │ │ │ │ @@ -10103,16 +10115,16 @@ │ │ │ │ 1205 4918 V 1222 4918 V 1273 4520 a(2)h(1)1273 4619 y(2)g(0.0)1273 │ │ │ │ 4719 y(3)g(0.0)p 1932 4918 V 1948 4918 V 2000 4520 a(2)f(1)2000 │ │ │ │ 4619 y(4)87 b(1.0)2000 4719 y(5)g(0.0)p 2658 4918 V 2675 │ │ │ │ 4918 V 2726 4520 a(3)43 b(1)2726 4619 y(6)87 b(0.0)2726 │ │ │ │ 4719 y(7)g(0.0)2726 4818 y(8)g(0.0)p 3385 4918 V 3401 │ │ │ │ 4918 V 497 4921 2906 4 v eop end │ │ │ │ %%Page: 21 21 │ │ │ │ -TeXDict begin 21 20 bop 0 100 a Fs(Jan)n(uary)26 b(6,)h(2026)p │ │ │ │ -661 100 1172 4 v 1336 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ +TeXDict begin 21 20 bop 0 100 a Fs(Jan)n(uary)26 b(10,)g(2026)p │ │ │ │ +702 100 1131 4 v 1295 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ (Linear)f(Systems)328 b Fu(21)0 390 y Fr(5)135 b(Serial)46 │ │ │ │ b(Solution)f(of)g Fj(AX)e Fi(=)33 b Fj(Y)71 b Fr(using)45 │ │ │ │ b(an)g Fj(QR)g Fr(factorization)0 595 y Fu(Let)28 b(us)f(review)g(the)h │ │ │ │ (steps)g(is)f(solving)g Fq(AX)i Fu(=)23 b Fq(Y)46 b Fu(using)27 │ │ │ │ b(a)h Fq(QR)g Fu(factorization.)125 777 y Fo(\210)42 │ │ │ │ b Ft(comm)m(unicate)27 b Fu(the)h(data)f(for)g(the)h(problem)f(as)g │ │ │ │ Fq(A)p Fu(,)h Fq(X)34 b Fu(and)28 b Fq(Y)18 b Fu(.)125 │ │ │ │ @@ -10181,15 +10193,15 @@ │ │ │ │ (ETr)o(ee)o(\))38 b(;)0 5208 y(newToOld)127 b(=)44 b(IV_entries\(newT)o │ │ │ │ (oOl)o(dI)o(V\))37 b(;)0 5308 y(InpMtx_permute\(m)o(txA)o(,)g(NULL,)42 │ │ │ │ b(oldToNew\)\))d(;)0 5407 y(InpMtx_changeSto)o(rag)o(eM)o(od)o(e\(m)o │ │ │ │ (tx)o(A,)e(INPMTX_BY_VECTORS)o(\))g(;)p eop end │ │ │ │ %%Page: 22 22 │ │ │ │ TeXDict begin 22 21 bop 0 100 a Fu(22)327 b Ft(SPOOLES)31 │ │ │ │ b(2.2)c Fs(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1145 4 v 1338 w(Jan)n(uary)g(6,)h(2026)0 390 y Fu(The)j │ │ │ │ +1103 4 v 1297 w(Jan)n(uary)f(10,)i(2026)0 390 y Fu(The)j │ │ │ │ Fp(oldToNewIV)25 b Fu(and)k Fp(newToOldIV)d Fu(v)-5 b(ariables)28 │ │ │ │ b(are)g Fp(IV)h Fu(ob)5 b(jects)29 b(that)h(represen)n(t)e(an)h(in)n │ │ │ │ (teger)g(v)n(ector.)41 b(The)29 b Fp(oldToNew)0 490 y │ │ │ │ Fu(and)21 b Fp(newToOld)e Fu(v)-5 b(ariables)20 b(are)g(p)r(oin)n(ters) │ │ │ │ h(to)g Fp(int)p Fu(,)h(whic)n(h)f(p)r(oin)n(t)h(to)f(the)h(base)f │ │ │ │ (address)f(of)h(the)h Fp(int)f Fu(v)n(ector)f(in)h(an)h │ │ │ │ Fp(IV)e Fu(ob)5 b(ject.)0 589 y(Once)38 b(w)n(e)g(ha)n(v)n(e)f(the)h(p) │ │ │ │ @@ -10260,16 +10272,16 @@ │ │ │ │ b(;)0 5009 y(ChvManager_init\()o(chv)o(ma)o(na)o(ger)o(,)f(NO_LOCK,)k │ │ │ │ (1\))h(;)0 5108 y(DVzero\(10,)d(cpus\))j(;)0 5208 y(facops)f(=)i(0.0)g │ │ │ │ (;)0 5308 y(FrontMtx_QR_fact)o(or\()o(fr)o(on)o(tmt)o(x,)37 │ │ │ │ b(mtxA,)42 b(chvmanager,)d(cpus,)i(&facops,)f(msglvl,)h(msgFile\))f(;)0 │ │ │ │ 5407 y(ChvManager_free\()o(chv)o(ma)o(na)o(ger)o(\))d(;)p │ │ │ │ eop end │ │ │ │ %%Page: 23 23 │ │ │ │ -TeXDict begin 23 22 bop 0 100 a Fs(Jan)n(uary)26 b(6,)h(2026)p │ │ │ │ -661 100 1172 4 v 1336 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ +TeXDict begin 23 22 bop 0 100 a Fs(Jan)n(uary)26 b(10,)g(2026)p │ │ │ │ +702 100 1131 4 v 1295 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ (Linear)f(Systems)328 b Fu(23)0 390 y(W)-7 b(orking)38 │ │ │ │ b(storage)g(used)h(during)g(the)g(factorization)f(is)i(found)f(in)h │ │ │ │ (the)f(form)g(of)h(blo)r(c)n(k)e Fk(chevr)l(ons)p Fu(,)44 │ │ │ │ b(in)39 b(a)g Fp(Chv)f Fu(ob)5 b(ject,)0 490 y(whic)n(h)34 │ │ │ │ b(hold)g(the)h(partial)e(fron)n(tal)g(matrix)h(for)g(a)f(fron)n(t.)57 │ │ │ │ b(Muc)n(h)34 b(as)f(with)i(the)f Fp(SubMtx)e Fu(ob)5 │ │ │ │ b(ject,)36 b(the)e Fp(FrontMtx)d Fu(ob)5 b(ject)0 589 │ │ │ │ @@ -10330,15 +10342,15 @@ │ │ │ │ 4053 a(8)g(1)2162 4153 y(0)g(3.0)2162 4253 y(1)g(5.0)2162 │ │ │ │ 4352 y(2)g(3.0)2162 4452 y(3)g(9.0)2162 4551 y(4)g(1.0)2162 │ │ │ │ 4651 y(5)g(6.0)2162 4751 y(6)g(5.0)2162 4850 y(7)g(4.0)p │ │ │ │ 2602 4850 V 2112 4854 492 4 v eop end │ │ │ │ %%Page: 24 24 │ │ │ │ TeXDict begin 24 23 bop 0 100 a Fu(24)327 b Ft(SPOOLES)31 │ │ │ │ b(2.2)c Fs(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1145 4 v 1338 w(Jan)n(uary)g(6,)h(2026)0 390 y Fr(A)134 │ │ │ │ +1103 4 v 1297 w(Jan)n(uary)f(10,)i(2026)0 390 y Fr(A)134 │ │ │ │ b Fa(allInOne.c)40 b Fr({)45 b(A)g(Serial)h Fj(LU)56 │ │ │ │ b Fr(Driv)l(er)46 b(Program)0 625 y Fp(/*)86 b(allInOne.c)d(*/)0 │ │ │ │ 824 y(#include)40 b("../../misc.h")0 924 y(#include)g │ │ │ │ ("../../FrontMtx.h)o(")0 1024 y(#include)g("../../SymbFac.h")0 │ │ │ │ 1223 y(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o │ │ │ │ (--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (--)o(-*/)0 1322 y(int)0 1422 y(main)i(\()h(int)f(argc,)g(char)g │ │ │ │ @@ -10378,16 +10390,16 @@ │ │ │ │ 4909 y(int)565 b(*newToOld,)40 b(*oldToNew)g(;)0 5009 │ │ │ │ y(int)565 b(stats[20])40 b(;)0 5108 y(IV)609 b(*newToOldIV,)39 │ │ │ │ b(*oldToNewIV)g(;)0 5208 y(IVL)565 b(*adjIVL,)41 b(*symbfacIVL)e(;)0 │ │ │ │ 5308 y(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o │ │ │ │ (--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (--)o(-*/)0 5407 y(/*)p eop end │ │ │ │ %%Page: 25 25 │ │ │ │ -TeXDict begin 25 24 bop 0 100 a Fs(Jan)n(uary)26 b(6,)h(2026)p │ │ │ │ -661 100 1172 4 v 1336 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ +TeXDict begin 25 24 bop 0 100 a Fs(Jan)n(uary)26 b(10,)g(2026)p │ │ │ │ +702 100 1131 4 v 1295 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ (Linear)f(Systems)328 b Fu(25)131 390 y Fp(----------------)o(--)o(--) │ │ │ │ 131 490 y(get)42 b(input)g(parameters)131 589 y(----------------)o(--)o │ │ │ │ (--)0 689 y(*/)0 789 y(if)h(\()g(argc)f(!=)h(9)g(\))g({)131 │ │ │ │ 888 y(fprintf\(stdout,)37 b("\\n")262 988 y("\\n)42 b(usage:)f(\045s)i │ │ │ │ (msglvl)e(msgFile)g(type)g(symmetryflag)e(pivotingflag")262 │ │ │ │ 1088 y("\\n)347 b(matrixFileName)38 b(rhsFileName)h(seed")262 │ │ │ │ 1187 y("\\n)173 b(msglvl)41 b(--)h(message)f(level")262 │ │ │ │ @@ -10431,15 +10443,15 @@ │ │ │ │ b(=)43 b(atoi\(argv[8]\))38 b(;)0 5272 y(/*--------------)o(---)o(--)o │ │ │ │ (--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o │ │ │ │ (---)o(--)o(---)o(--)o(---)o(--)o(--)o(-*/)0 5372 y(/*)p │ │ │ │ eop end │ │ │ │ %%Page: 26 26 │ │ │ │ TeXDict begin 26 25 bop 0 100 a Fu(26)327 b Ft(SPOOLES)31 │ │ │ │ b(2.2)c Fs(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1145 4 v 1338 w(Jan)n(uary)g(6,)h(2026)131 390 y Fp(----------------)o │ │ │ │ +1103 4 v 1297 w(Jan)n(uary)f(10,)i(2026)131 390 y Fp(----------------)o │ │ │ │ (--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(--)131 │ │ │ │ 490 y(STEP)42 b(1:)g(read)g(the)h(entries)d(from)i(the)h(input)e(file) │ │ │ │ 479 589 y(and)i(create)e(the)h(InpMtx)f(object)131 689 │ │ │ │ y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o │ │ │ │ (---)o(--)o(--)0 789 y(*/)0 888 y(inputFile)f(=)j(fopen\(matrixFile)o │ │ │ │ (Nam)o(e,)37 b("r"\))42 b(;)0 988 y(fscanf\(inputFile)o(,)c("\045d)k │ │ │ │ (\045d)h(\045d",)f(&nrow,)f(&ncol,)g(&nent\))g(;)0 1088 │ │ │ │ @@ -10480,16 +10492,16 @@ │ │ │ │ 4774 y(fscanf\(inputFil)o(e,)37 b("\045d",)42 b(&jrow\))f(;)262 │ │ │ │ 4873 y(for)h(\()h(jrhs)f(=)h(0)g(;)g(jrhs)f(<)i(nrhs)e(;)h(jrhs++)e(\)) │ │ │ │ i({)392 4973 y(fscanf\(inputFile,)37 b("\045le",)k(&value\))g(;)392 │ │ │ │ 5073 y(DenseMtx_setRealE)o(nt)o(ry\()o(mt)o(xY,)c(jrow,)k(jrhs,)h │ │ │ │ (value\))f(;)262 5172 y(})131 5272 y(})0 5372 y(})i(else)f({)p │ │ │ │ eop end │ │ │ │ %%Page: 27 27 │ │ │ │ -TeXDict begin 27 26 bop 0 100 a Fs(Jan)n(uary)26 b(6,)h(2026)p │ │ │ │ -661 100 1172 4 v 1336 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ +TeXDict begin 27 26 bop 0 100 a Fs(Jan)n(uary)26 b(10,)g(2026)p │ │ │ │ +702 100 1131 4 v 1295 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ (Linear)f(Systems)328 b Fu(27)131 390 y Fp(double)128 │ │ │ │ b(imag,)42 b(real)f(;)131 490 y(for)h(\()h(irow)f(=)h(0)h(;)f(irow)f(<) │ │ │ │ h(nrow)f(;)h(irow++)e(\))i({)262 589 y(fscanf\(inputFil)o(e,)37 │ │ │ │ b("\045d",)42 b(&jrow\))f(;)262 689 y(for)h(\()h(jrhs)f(=)h(0)g(;)g │ │ │ │ (jrhs)f(<)i(nrhs)e(;)h(jrhs++)e(\))i({)392 789 y(fscanf\(inputFile,)37 │ │ │ │ b("\045le)42 b(\045le",)f(&real,)g(&imag\))g(;)392 888 │ │ │ │ y(DenseMtx_setCompl)o(ex)o(Ent)o(ry)o(\(mt)o(xY)o(,)c(jrow,)42 │ │ │ │ @@ -10535,15 +10547,15 @@ │ │ │ │ (oNe)o(wI)o(V\))37 b(;)0 5272 y(newToOldIV)i(=)44 b(ETree_newToOldV)o │ │ │ │ (txP)o(er)o(m\(f)o(ro)o(nt)o(ETr)o(ee)o(\))38 b(;)0 5372 │ │ │ │ y(newToOld)127 b(=)44 b(IV_entries\(newT)o(oOl)o(dI)o(V\))37 │ │ │ │ b(;)p eop end │ │ │ │ %%Page: 28 28 │ │ │ │ TeXDict begin 28 27 bop 0 100 a Fu(28)327 b Ft(SPOOLES)31 │ │ │ │ b(2.2)c Fs(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1145 4 v 1338 w(Jan)n(uary)g(6,)h(2026)0 390 y Fp(ETree_permuteVer)o │ │ │ │ +1103 4 v 1297 w(Jan)n(uary)f(10,)i(2026)0 390 y Fp(ETree_permuteVer)o │ │ │ │ (tic)o(es)o(\(f)o(ron)o(tE)o(Tre)o(e,)37 b(oldToNewIV\))i(;)0 │ │ │ │ 490 y(InpMtx_permute\(m)o(txA)o(,)e(oldToNew,)j(oldToNew\))g(;)0 │ │ │ │ 589 y(if)j(\()87 b(symmetryflag)38 b(==)43 b(SPOOLES_SYMMETRI)o(C)131 │ │ │ │ 689 y(||)g(symmetryflag)38 b(==)43 b(SPOOLES_HERMITIA)o(N)37 │ │ │ │ b(\))44 b({)131 789 y(InpMtx_mapToUppe)o(rT)o(ri)o(ang)o(le)o(\(mt)o │ │ │ │ (xA)o(\))38 b(;)0 888 y(})0 988 y(InpMtx_changeCoo)o(rdT)o(yp)o(e\()o │ │ │ │ (mtx)o(A,)f(INPMTX_BY_CHEVRO)o(NS\))g(;)0 1088 y(InpMtx_changeSto)o │ │ │ │ @@ -10592,16 +10604,16 @@ │ │ │ │ (0.0\))g(;)0 4973 y(IVfill\(20,)d(stats,)j(0\))g(;)0 │ │ │ │ 5073 y(rootchv)f(=)i(FrontMtx_factorI)o(np)o(Mtx)o(\(f)o(ron)o(tm)o(tx) │ │ │ │ o(,)38 b(mtxA,)j(tau,)h(droptol,)567 5172 y(chvmanager,)d(&error,)h │ │ │ │ (cpus,)i(stats,)f(msglvl,)g(msgFile\))f(;)0 5272 y(ChvManager_free\()o │ │ │ │ (chv)o(ma)o(na)o(ger)o(\))d(;)0 5372 y(if)43 b(\()g(msglvl)e(>)i(2)g │ │ │ │ (\))h({)p eop end │ │ │ │ %%Page: 29 29 │ │ │ │ -TeXDict begin 29 28 bop 0 100 a Fs(Jan)n(uary)26 b(6,)h(2026)p │ │ │ │ -661 100 1172 4 v 1336 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ +TeXDict begin 29 28 bop 0 100 a Fs(Jan)n(uary)26 b(10,)g(2026)p │ │ │ │ +702 100 1131 4 v 1295 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ (Linear)f(Systems)328 b Fu(29)131 390 y Fp(fprintf\(msgFile,)37 │ │ │ │ b("\\n\\n)k(factor)g(matrix"\))g(;)131 490 y(FrontMtx_writeFo)o(rH)o │ │ │ │ (um)o(anE)o(ye)o(\(fr)o(on)o(tmt)o(x,)c(msgFile\))j(;)131 │ │ │ │ 589 y(fflush\(msgFile\))d(;)0 689 y(})0 789 y(if)43 b(\()g(rootchv)e │ │ │ │ (!=)h(NULL)g(\))h({)131 888 y(fprintf\(msgFile,)37 b("\\n\\n)k(matrix)g │ │ │ │ (found)h(to)h(be)f(singular\\n"\))d(;)131 988 y(exit\(-1\))h(;)0 │ │ │ │ 1088 y(})0 1187 y(if)j(\()g(error)e(>=)i(0)g(\))h({)131 │ │ │ │ @@ -10645,15 +10657,15 @@ │ │ │ │ 5172 y(fprintf\(msgFile,)37 b("\\n\\n)k(solution)g(matrix)g(in)h │ │ │ │ (original)f(ordering"\))e(;)131 5272 y(DenseMtx_writeFo)o(rH)o(um)o │ │ │ │ (anE)o(ye)o(\(mt)o(xX)o(,)f(msgFile\))i(;)131 5372 y(fflush\(msgFile\)) │ │ │ │ d(;)p eop end │ │ │ │ %%Page: 30 30 │ │ │ │ TeXDict begin 30 29 bop 0 100 a Fu(30)327 b Ft(SPOOLES)31 │ │ │ │ b(2.2)c Fs(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1145 4 v 1338 w(Jan)n(uary)g(6,)h(2026)0 390 y Fp(})0 │ │ │ │ +1103 4 v 1297 w(Jan)n(uary)f(10,)i(2026)0 390 y Fp(})0 │ │ │ │ 490 y(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o │ │ │ │ (--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (--)o(-*/)0 589 y(/*)131 689 y(-----------)131 789 y(free)42 │ │ │ │ b(memory)131 888 y(-----------)0 988 y(*/)0 1088 y(FrontMtx_free\(fr)o │ │ │ │ (ont)o(mt)o(x\))37 b(;)0 1187 y(DenseMtx_free\(mt)o(xX\))g(;)0 │ │ │ │ 1287 y(DenseMtx_free\(mt)o(xY\))g(;)0 1386 y(IV_free\(newToOld)o(IV\))g │ │ │ │ (;)0 1486 y(IV_free\(oldToNew)o(IV\))g(;)0 1586 y(InpMtx_free\(mtxA)o │ │ │ │ @@ -10663,16 +10675,16 @@ │ │ │ │ (;)0 2084 y(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o │ │ │ │ (--)o(--)o(-*/)0 2183 y(return\(1\))i(;)j(})0 2283 y(/*--------------)o │ │ │ │ (---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o │ │ │ │ (--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(-*/)p │ │ │ │ eop end │ │ │ │ %%Page: 31 31 │ │ │ │ -TeXDict begin 31 30 bop 0 100 a Fs(Jan)n(uary)26 b(6,)h(2026)p │ │ │ │ -661 100 1172 4 v 1336 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ +TeXDict begin 31 30 bop 0 100 a Fs(Jan)n(uary)26 b(10,)g(2026)p │ │ │ │ +702 100 1131 4 v 1295 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ (Linear)f(Systems)328 b Fu(31)0 390 y Fr(B)134 b Fa(allInOne.c)40 │ │ │ │ b Fr({)45 b(A)g(Serial)h Fj(LU)56 b Fr(Driv)l(er)46 b(Program)0 │ │ │ │ 625 y Fp(/*)86 b(allInOneMT.c)d(*/)0 824 y(#include)40 │ │ │ │ b("../spoolesMT.h")0 924 y(#include)g("../../misc.h")0 │ │ │ │ 1024 y(#include)g("../../FrontMtx.h)o(")0 1123 y(#include)g │ │ │ │ ("../../SymbFac.h")0 1322 y(/*--------------)o(---)o(--)o(--)o(---)o │ │ │ │ (--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o │ │ │ │ @@ -10715,15 +10727,15 @@ │ │ │ │ 5108 y(ncol,)i(nedges,)f(nent,)g(neqns,)g(nfront,)g(nrhs,)g(nrow,)697 │ │ │ │ 5208 y(nthread,)g(pivotingflag,)d(seed,)j(symmetryflag,)e(type)j(;)0 │ │ │ │ 5308 y(int)565 b(*newToOld,)40 b(*oldToNew)g(;)0 5407 │ │ │ │ y(int)565 b(stats[20])40 b(;)p eop end │ │ │ │ %%Page: 32 32 │ │ │ │ TeXDict begin 32 31 bop 0 100 a Fu(32)327 b Ft(SPOOLES)31 │ │ │ │ b(2.2)c Fs(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1145 4 v 1338 w(Jan)n(uary)g(6,)h(2026)0 390 y Fp(IV)609 │ │ │ │ +1103 4 v 1297 w(Jan)n(uary)f(10,)i(2026)0 390 y Fp(IV)609 │ │ │ │ b(*newToOldIV,)39 b(*oldToNewIV,)g(*ownersIV)g(;)0 490 │ │ │ │ y(IVL)565 b(*adjIVL,)41 b(*symbfacIVL)e(;)0 589 y(SolveMap)345 │ │ │ │ b(*solvemap)40 b(;)0 689 y(SubMtxManager)125 b(*mtxmanager)83 │ │ │ │ b(;)0 789 y(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o │ │ │ │ (--)o(--)o(-*/)0 888 y(/*)131 988 y(----------------)o(--)o(--)131 │ │ │ │ 1088 y(get)42 b(input)g(parameters)131 1187 y(----------------)o(--)o │ │ │ │ @@ -10764,16 +10776,16 @@ │ │ │ │ 4774 y(})i(else)f(if)h(\()g(\(msgFile)d(=)j(fopen\(argv[2],)38 │ │ │ │ b("a"\)\))k(==)h(NULL)e(\))j({)131 4873 y(fprintf\(stderr,)37 │ │ │ │ b("\\n)42 b(fatal)g(error)g(in)g(\045s")479 4973 y("\\n)h(unable)e(to)i │ │ │ │ (open)f(file)g(\045s\\n",)479 5073 y(argv[0],)f(argv[2]\))f(;)131 │ │ │ │ 5172 y(return\(-1\))f(;)0 5272 y(})0 5372 y(type)478 │ │ │ │ b(=)43 b(atoi\(argv[3]\))38 b(;)p eop end │ │ │ │ %%Page: 33 33 │ │ │ │ -TeXDict begin 33 32 bop 0 100 a Fs(Jan)n(uary)26 b(6,)h(2026)p │ │ │ │ -661 100 1172 4 v 1336 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ +TeXDict begin 33 32 bop 0 100 a Fs(Jan)n(uary)26 b(10,)g(2026)p │ │ │ │ +702 100 1131 4 v 1295 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ (Linear)f(Systems)328 b Fu(33)0 390 y Fp(symmetryflag)126 │ │ │ │ b(=)43 b(atoi\(argv[4]\))38 b(;)0 490 y(pivotingflag)126 │ │ │ │ b(=)43 b(atoi\(argv[5]\))38 b(;)0 589 y(matrixFileName)g(=)43 │ │ │ │ b(argv[6])e(;)0 689 y(rhsFileName)170 b(=)43 b(argv[7])e(;)0 │ │ │ │ 789 y(seed)478 b(=)43 b(atoi\(argv[8]\))38 b(;)0 888 │ │ │ │ y(nthread)346 b(=)43 b(atoi\(argv[9]\))38 b(;)0 988 y(/*--------------) │ │ │ │ o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---) │ │ │ │ @@ -10817,15 +10829,15 @@ │ │ │ │ b(;)0 5073 y(DenseMtx_init\(mt)o(xY,)f(type,)k(0,)i(0,)g(neqns,)e │ │ │ │ (nrhs,)g(1,)i(neqns\))e(;)0 5172 y(DenseMtx_zero\(mt)o(xY\))c(;)0 │ │ │ │ 5272 y(if)43 b(\()g(type)f(==)h(SPOOLES_REAL)38 b(\))43 │ │ │ │ b({)131 5372 y(double)128 b(value)42 b(;)p eop end │ │ │ │ %%Page: 34 34 │ │ │ │ TeXDict begin 34 33 bop 0 100 a Fu(34)327 b Ft(SPOOLES)31 │ │ │ │ b(2.2)c Fs(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1145 4 v 1338 w(Jan)n(uary)g(6,)h(2026)131 390 y Fp(for)42 │ │ │ │ +1103 4 v 1297 w(Jan)n(uary)f(10,)i(2026)131 390 y Fp(for)42 │ │ │ │ b(\()h(irow)f(=)h(0)h(;)f(irow)f(<)h(nrow)f(;)h(irow++)e(\))i({)262 │ │ │ │ 490 y(fscanf\(inputFil)o(e,)37 b("\045d",)42 b(&jrow\))f(;)262 │ │ │ │ 589 y(for)h(\()h(jrhs)f(=)h(0)g(;)g(jrhs)f(<)i(nrhs)e(;)h(jrhs++)e(\))i │ │ │ │ ({)392 689 y(fscanf\(inputFile,)37 b("\045le",)k(&value\))g(;)392 │ │ │ │ 789 y(DenseMtx_setRealE)o(nt)o(ry\()o(mt)o(xY,)c(jrow,)k(jrhs,)h │ │ │ │ (value\))f(;)262 888 y(})131 988 y(})0 1088 y(})i(else)f({)131 │ │ │ │ 1187 y(double)128 b(imag,)42 b(real)f(;)131 1287 y(for)h(\()h(irow)f(=) │ │ │ │ @@ -10865,16 +10877,16 @@ │ │ │ │ 4973 y(})0 5073 y(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---)o │ │ │ │ (--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (---)o(--)o(--)o(-*/)0 5172 y(/*)131 5272 y(----------------)o(--)o(--) │ │ │ │ o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---) │ │ │ │ 131 5372 y(STEP)42 b(4:)g(get)h(the)f(permutation,)d(permute)h(the)j │ │ │ │ (front)e(tree,)p eop end │ │ │ │ %%Page: 35 35 │ │ │ │ -TeXDict begin 35 34 bop 0 100 a Fs(Jan)n(uary)26 b(6,)h(2026)p │ │ │ │ -661 100 1172 4 v 1336 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ +TeXDict begin 35 34 bop 0 100 a Fs(Jan)n(uary)26 b(10,)g(2026)p │ │ │ │ +702 100 1131 4 v 1295 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ (Linear)f(Systems)328 b Fu(35)479 390 y Fp(permute)41 │ │ │ │ b(the)h(matrix)g(and)g(right)f(hand)h(side,)g(and)479 │ │ │ │ 490 y(get)h(the)f(symbolic)e(factorization)131 589 y(----------------)o │ │ │ │ (--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (--)o(---)0 689 y(*/)0 789 y(oldToNewIV)f(=)44 b(ETree_oldToNewV)o(txP) │ │ │ │ o(er)o(m\(f)o(ro)o(nt)o(ETr)o(ee)o(\))38 b(;)0 888 y(oldToNew)127 │ │ │ │ b(=)44 b(IV_entries\(oldT)o(oNe)o(wI)o(V\))37 b(;)0 988 │ │ │ │ @@ -10926,15 +10938,15 @@ │ │ │ │ (sIV)o(,)d(msgFile\))k(;)131 5272 y(fprintf\(msgFile,)c("\\n\\n)k │ │ │ │ (factor)g(operations)f(for)i(each)g(front"\))f(;)131 │ │ │ │ 5372 y(DV_writeForHuman)o(Ey)o(e\()o(cum)o(op)o(sDV)o(,)c(msgFile\))k │ │ │ │ (;)p eop end │ │ │ │ %%Page: 36 36 │ │ │ │ TeXDict begin 36 35 bop 0 100 a Fu(36)327 b Ft(SPOOLES)31 │ │ │ │ b(2.2)c Fs(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1145 4 v 1338 w(Jan)n(uary)g(6,)h(2026)131 390 y Fp(fflush\(msgFile\)) │ │ │ │ +1103 4 v 1297 w(Jan)n(uary)f(10,)i(2026)131 390 y Fp(fflush\(msgFile\)) │ │ │ │ 37 b(;)0 490 y(})0 589 y(DV_free\(cumopsDV)o(\))h(;)0 │ │ │ │ 689 y(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o │ │ │ │ (--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (--)o(-*/)0 789 y(/*)131 888 y(----------------)o(--)o(--)o(---)o(--)o │ │ │ │ (---)o(--)o(---)o(--)o(--)o(---)o(--)131 988 y(STEP)k(6:)g(initialize)e │ │ │ │ (the)i(front)g(matrix)f(object)131 1088 y(----------------)o(--)o(--)o │ │ │ │ (---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)0 1187 │ │ │ │ @@ -10977,16 +10989,16 @@ │ │ │ │ (post-process)d(the)j(factorization)131 4973 y(----------------)o(--)o │ │ │ │ (--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(-)0 5073 │ │ │ │ y(*/)0 5172 y(FrontMtx_postPro)o(ces)o(s\()o(fr)o(ont)o(mt)o(x,)37 │ │ │ │ b(msglvl,)k(msgFile\))f(;)0 5272 y(if)j(\()g(msglvl)e(>)i(1)g(\))h({) │ │ │ │ 131 5372 y(fprintf\(msgFile,)37 b("\\n\\n)k(factor)g(matrix)g(after)h │ │ │ │ (post-processing")o(\))c(;)p eop end │ │ │ │ %%Page: 37 37 │ │ │ │ -TeXDict begin 37 36 bop 0 100 a Fs(Jan)n(uary)26 b(6,)h(2026)p │ │ │ │ -661 100 1172 4 v 1336 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ +TeXDict begin 37 36 bop 0 100 a Fs(Jan)n(uary)26 b(10,)g(2026)p │ │ │ │ +702 100 1131 4 v 1295 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ (Linear)f(Systems)328 b Fu(37)131 390 y Fp(FrontMtx_writeFo)o(rH)o(um)o │ │ │ │ (anE)o(ye)o(\(fr)o(on)o(tmt)o(x,)37 b(msgFile\))j(;)131 │ │ │ │ 490 y(fflush\(msgFile\))d(;)0 589 y(})0 689 y(/*--------------)o(---)o │ │ │ │ (--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(-*/)0 789 │ │ │ │ y(/*)131 888 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o │ │ │ │ (--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(-)131 │ │ │ │ @@ -11032,29 +11044,29 @@ │ │ │ │ 4774 y(free)42 b(memory)131 4873 y(-----------)0 4973 │ │ │ │ y(*/)0 5073 y(FrontMtx_free\(fr)o(ont)o(mt)o(x\))37 b(;)0 │ │ │ │ 5172 y(DenseMtx_free\(mt)o(xX\))g(;)0 5272 y(DenseMtx_free\(mt)o(xY\))g │ │ │ │ (;)0 5372 y(IV_free\(newToOld)o(IV\))g(;)p eop end │ │ │ │ %%Page: 38 38 │ │ │ │ TeXDict begin 38 37 bop 0 100 a Fu(38)327 b Ft(SPOOLES)31 │ │ │ │ b(2.2)c Fs(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1145 4 v 1338 w(Jan)n(uary)g(6,)h(2026)0 390 y Fp(IV_free\(oldToNew)o │ │ │ │ +1103 4 v 1297 w(Jan)n(uary)f(10,)i(2026)0 390 y Fp(IV_free\(oldToNew)o │ │ │ │ (IV\))37 b(;)0 490 y(InpMtx_free\(mtxA)o(\))h(;)0 589 │ │ │ │ y(ETree_free\(front)o(ETr)o(ee)o(\))f(;)0 689 y(IVL_free\(symbfac)o │ │ │ │ (IVL)o(\))g(;)0 789 y(SubMtxManager_fr)o(ee\()o(mt)o(xm)o(ana)o(ge)o │ │ │ │ (r\))g(;)0 888 y(Graph_free\(graph)o(\))h(;)0 988 y(SolveMap_free\(so)o │ │ │ │ (lve)o(ma)o(p\))f(;)0 1088 y(IV_free\(ownersIV)o(\))h(;)0 │ │ │ │ 1187 y(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o │ │ │ │ (--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (--)o(-*/)0 1287 y(return\(1\))i(;)j(})0 1386 y(/*--------------)o(---) │ │ │ │ o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(-*/)p eop │ │ │ │ end │ │ │ │ %%Page: 39 39 │ │ │ │ -TeXDict begin 39 38 bop 0 100 a Fs(Jan)n(uary)26 b(6,)h(2026)p │ │ │ │ -661 100 1172 4 v 1336 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ +TeXDict begin 39 38 bop 0 100 a Fs(Jan)n(uary)26 b(10,)g(2026)p │ │ │ │ +702 100 1131 4 v 1295 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ (Linear)f(Systems)328 b Fu(39)0 390 y Fr(C)135 b Fa(allInOne.c)40 │ │ │ │ b Fr({)45 b(A)f(Serial)i Fj(LU)57 b Fr(Driv)l(er)45 b(Program)0 │ │ │ │ 625 y Fp(/*)86 b(allInOneMPI.c)c(*/)0 824 y(#include)40 │ │ │ │ b("../spoolesMPI.h")0 924 y(#include)g("../../timings.h")0 │ │ │ │ 1123 y(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o │ │ │ │ (--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (--)o(-*/)0 1223 y(int)0 1322 y(main)i(\()h(int)f(argc,)g(char)g │ │ │ │ @@ -11093,15 +11105,15 @@ │ │ │ │ b(*inputFile,)39 b(*msgFile)i(;)0 5208 y(Graph)477 b(*graph)41 │ │ │ │ b(;)0 5308 y(int)565 b(error,)41 b(firsttag,)f(ient,)i(irow,)f(jcol,)h │ │ │ │ (lookahead)e(=)j(0,)697 5407 y(msglvl,)e(myid,)h(nedges,)e(nent,)i │ │ │ │ (neqns,)f(nmycol,)g(nproc,)g(nrhs,)p eop end │ │ │ │ %%Page: 40 40 │ │ │ │ TeXDict begin 40 39 bop 0 100 a Fu(40)327 b Ft(SPOOLES)31 │ │ │ │ b(2.2)c Fs(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1145 4 v 1338 w(Jan)n(uary)g(6,)h(2026)697 390 y Fp(nrow,)42 │ │ │ │ +1103 4 v 1297 w(Jan)n(uary)f(10,)i(2026)697 390 y Fp(nrow,)42 │ │ │ │ b(pivotingflag,)c(root,)k(seed,)f(symmetryflag,)d(type)k(;)0 │ │ │ │ 490 y(int)565 b(stats[20])40 b(;)0 589 y(int)565 b(*rowind)41 │ │ │ │ b(;)0 689 y(IV)609 b(*oldToNewIV,)39 b(*ownedColumnsIV,)e(*ownersIV,) │ │ │ │ 697 789 y(*newToOldIV,)i(*vtxmapIV)h(;)0 888 y(IVL)565 │ │ │ │ b(*adjIVL,)41 b(*symbfacIVL)e(;)0 988 y(SolveMap)345 │ │ │ │ b(*solvemap)40 b(;)0 1088 y(/*--------------)o(---)o(--)o(--)o(---)o │ │ │ │ (--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o │ │ │ │ @@ -11146,16 +11158,16 @@ │ │ │ │ (number")262 4674 y("\\n",)g(argv[0]\))f(;)131 4774 y(return\(0\))g(;)0 │ │ │ │ 4873 y(})0 4973 y(msglvl)h(=)i(atoi\(argv[1]\))38 b(;)0 │ │ │ │ 5073 y(if)43 b(\()g(strcmp\(argv[2],)37 b("stdout"\))j(==)j(0)g(\))g({) │ │ │ │ 131 5172 y(msgFile)d(=)k(stdout)d(;)0 5272 y(})i(else)f({)131 │ │ │ │ 5372 y(sprintf\(buffer,)37 b("res.\045d",)j(myid\))i(;)p │ │ │ │ eop end │ │ │ │ %%Page: 41 41 │ │ │ │ -TeXDict begin 41 40 bop 0 100 a Fs(Jan)n(uary)26 b(6,)h(2026)p │ │ │ │ -661 100 1172 4 v 1336 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ +TeXDict begin 41 40 bop 0 100 a Fs(Jan)n(uary)26 b(10,)g(2026)p │ │ │ │ +702 100 1131 4 v 1295 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ (Linear)f(Systems)328 b Fu(41)131 390 y Fp(if)43 b(\()g(\(msgFile)d(=)j │ │ │ │ (fopen\(buffer,)38 b("w"\)\))k(==)h(NULL)f(\))h({)262 │ │ │ │ 490 y(fprintf\(stderr,)37 b("\\n)42 b(fatal)g(error)f(in)i(\045s")610 │ │ │ │ 589 y("\\n)g(unable)e(to)h(open)g(file)g(\045s\\n",)610 │ │ │ │ 689 y(argv[0],)e(buffer\))h(;)262 789 y(return\(-1\))e(;)131 │ │ │ │ 888 y(})0 988 y(})0 1088 y(type)391 b(=)43 b(atoi\(argv[3]\))38 │ │ │ │ b(;)0 1187 y(symmetryflag)h(=)k(atoi\(argv[4]\))38 b(;)0 │ │ │ │ @@ -11199,15 +11211,15 @@ │ │ │ │ o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o │ │ │ │ (---)131 5272 y(STEP)42 b(2:)g(read)g(the)h(rhs)f(entries)f(from)h(the) │ │ │ │ g(rhs)g(input)g(file)131 5372 y(and)g(create)f(the)i(DenseMtx)d(object) │ │ │ │ h(for)h(Y)p eop end │ │ │ │ %%Page: 42 42 │ │ │ │ TeXDict begin 42 41 bop 0 100 a Fu(42)327 b Ft(SPOOLES)31 │ │ │ │ b(2.2)c Fs(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1145 4 v 1338 w(Jan)n(uary)g(6,)h(2026)131 390 y Fp(----------------)o │ │ │ │ +1103 4 v 1297 w(Jan)n(uary)f(10,)i(2026)131 390 y Fp(----------------)o │ │ │ │ (--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (--)o(---)0 490 y(*/)0 589 y(sprintf\(buffer,)37 b("rhs.\045d.input",)h │ │ │ │ (myid\))j(;)0 689 y(inputFile)f(=)j(fopen\(buffer,)38 │ │ │ │ b("r"\))k(;)0 789 y(fscanf\(inputFile)o(,)c("\045d)k(\045d",)g(&nrow,)f │ │ │ │ (&nrhs\))g(;)0 888 y(mtxY)h(=)h(DenseMtx_new\(\))38 b(;)0 │ │ │ │ 988 y(DenseMtx_init\(mt)o(xY,)f(type,)k(0,)i(0,)g(nrow,)e(nrhs,)h(1,)h │ │ │ │ (nrow\))e(;)0 1088 y(DenseMtx_rowIndi)o(ces)o(\(m)o(tx)o(Y,)c(&nrow,)k │ │ │ │ @@ -11250,16 +11262,16 @@ │ │ │ │ 4973 y(nedges)k(=)i(IVL_tsize\(adjIVL\))37 b(;)0 5073 │ │ │ │ y(Graph_init2\(grap)o(h,)g(0,)43 b(neqns,)e(0,)i(nedges,)d(neqns,)i │ │ │ │ (nedges,)e(adjIVL,)523 5172 y(NULL,)i(NULL\))f(;)0 5272 │ │ │ │ y(if)i(\()g(msglvl)e(>)i(2)g(\))h({)131 5372 y(fprintf\(msgFile,)37 │ │ │ │ b("\\n\\n)k(graph)h(of)h(the)f(input)f(matrix"\))g(;)p │ │ │ │ eop end │ │ │ │ %%Page: 43 43 │ │ │ │ -TeXDict begin 43 42 bop 0 100 a Fs(Jan)n(uary)26 b(6,)h(2026)p │ │ │ │ -661 100 1172 4 v 1336 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ +TeXDict begin 43 42 bop 0 100 a Fs(Jan)n(uary)26 b(10,)g(2026)p │ │ │ │ +702 100 1131 4 v 1295 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ (Linear)f(Systems)328 b Fu(43)131 390 y Fp(Graph_writeForHu)o(ma)o(nE)o │ │ │ │ (ye\()o(gr)o(aph)o(,)37 b(msgFile\))k(;)131 490 y(fflush\(msgFile\))c │ │ │ │ (;)0 589 y(})0 689 y(frontETree)i(=)44 b(orderViaMMD\(gra)o(ph,)37 │ │ │ │ b(seed)42 b(+)h(myid,)e(msglvl,)g(msgFile\))f(;)0 789 │ │ │ │ y(Graph_free\(graph)o(\))e(;)0 888 y(if)43 b(\()g(msglvl)e(>)i(2)g(\))h │ │ │ │ ({)131 988 y(fprintf\(msgFile,)37 b("\\n\\n)k(front)h(tree)g(from)g │ │ │ │ (ordering"\))d(;)131 1088 y(ETree_writeForHu)o(ma)o(nE)o(ye\()o(fr)o │ │ │ │ @@ -11309,15 +11321,15 @@ │ │ │ │ o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(-)131 5272 │ │ │ │ y(STEP)42 b(4:)g(generate)f(the)h(owners)f(map)i(IV)f(object)479 │ │ │ │ 5372 y(and)h(the)f(map)g(from)g(vertices)f(to)h(owners)p │ │ │ │ eop end │ │ │ │ %%Page: 44 44 │ │ │ │ TeXDict begin 44 43 bop 0 100 a Fu(44)327 b Ft(SPOOLES)31 │ │ │ │ b(2.2)c Fs(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1145 4 v 1338 w(Jan)n(uary)g(6,)h(2026)131 390 y Fp(----------------)o │ │ │ │ +1103 4 v 1297 w(Jan)n(uary)f(10,)i(2026)131 390 y Fp(----------------)o │ │ │ │ (--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(-)0 │ │ │ │ 490 y(*/)0 589 y(cutoff)128 b(=)43 b(1./\(2*nproc\))c(;)0 │ │ │ │ 689 y(cumopsDV)h(=)j(DV_new\(\))e(;)0 789 y(DV_init\(cumopsDV)o(,)d │ │ │ │ (nproc,)j(NULL\))g(;)0 888 y(ownersIV)f(=)j(ETree_ddMap\(front)o(ETr)o │ │ │ │ (ee)o(,)1002 988 y(type,)f(symmetryflag,)c(cumopsDV,)i(cutoff\))h(;)0 │ │ │ │ 1088 y(DV_free\(cumopsDV)o(\))d(;)0 1187 y(vtxmapIV)i(=)j(IV_new\(\))e │ │ │ │ (;)0 1287 y(IV_init\(vtxmapIV)o(,)d(neqns,)j(NULL\))g(;)0 │ │ │ │ @@ -11357,16 +11369,16 @@ │ │ │ │ 4873 y(fflush\(msgFile\))d(;)0 4973 y(})0 5073 y(/*--------------)o │ │ │ │ (---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o │ │ │ │ (--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(-*/)0 │ │ │ │ 5172 y(/*)131 5272 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (---)o(--)o(--)o(---)o(--)131 5372 y(STEP)42 b(6:)g(compute)f(the)h │ │ │ │ (symbolic)f(factorization)p eop end │ │ │ │ %%Page: 45 45 │ │ │ │ -TeXDict begin 45 44 bop 0 100 a Fs(Jan)n(uary)26 b(6,)h(2026)p │ │ │ │ -661 100 1172 4 v 1336 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ +TeXDict begin 45 44 bop 0 100 a Fs(Jan)n(uary)26 b(10,)g(2026)p │ │ │ │ +702 100 1131 4 v 1295 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ (Linear)f(Systems)328 b Fu(45)131 390 y Fp(----------------)o(--)o(--)o │ │ │ │ (---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)0 490 │ │ │ │ y(*/)0 589 y(symbfacIVL)39 b(=)44 b(SymbFac_MPI_ini)o(tFr)o(om)o(Inp)o │ │ │ │ (Mt)o(x\()o(fro)o(nt)o(ETr)o(ee)o(,)37 b(ownersIV,)j(mtxA,)915 │ │ │ │ 689 y(stats,)h(msglvl,)g(msgFile,)f(firsttag,)g(MPI_COMM_WORLD\))e(;)0 │ │ │ │ 789 y(firsttag)i(+=)j(frontETree->nfro)o(nt)37 b(;)0 │ │ │ │ 888 y(if)43 b(\()g(msglvl)e(>)i(2)g(\))h({)131 988 y(fprintf\(msgFile,) │ │ │ │ @@ -11412,15 +11424,15 @@ │ │ │ │ o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(-)131 │ │ │ │ 5272 y(STEP)i(9:)g(post-process)d(the)j(factorization)d(and)j(split)131 │ │ │ │ 5372 y(the)g(factor)f(matrices)f(into)i(submatrices)p │ │ │ │ eop end │ │ │ │ %%Page: 46 46 │ │ │ │ TeXDict begin 46 45 bop 0 100 a Fu(46)327 b Ft(SPOOLES)31 │ │ │ │ b(2.2)c Fs(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1145 4 v 1338 w(Jan)n(uary)g(6,)h(2026)131 390 y Fp(----------------)o │ │ │ │ +1103 4 v 1297 w(Jan)n(uary)f(10,)i(2026)131 390 y Fp(----------------)o │ │ │ │ (--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (-)0 490 y(*/)0 589 y(FrontMtx_MPI_pos)o(tPr)o(oc)o(es)o(s\(f)o(ro)o │ │ │ │ (ntm)o(tx)o(,)38 b(ownersIV,)h(stats,)i(msglvl,)1090 │ │ │ │ 689 y(msgFile,)f(firsttag,)g(MPI_COMM_WORLD\))d(;)0 789 │ │ │ │ y(firsttag)j(+=)j(5*nproc)e(;)0 888 y(if)i(\()g(msglvl)e(>)i(2)g(\))h │ │ │ │ ({)131 988 y(fprintf\(msgFile,)37 b("\\n\\n)k(numeric)g(factorization)d │ │ │ │ (after)k(post-processing)o("\);)131 1088 y(FrontMtx_writeFo)o(rH)o(um)o │ │ │ │ @@ -11464,16 +11476,16 @@ │ │ │ │ b(\))43 b({)131 4973 y(IV)130 b(*rowmapIV)40 b(;)0 5073 │ │ │ │ y(/*)131 5172 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---) │ │ │ │ o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(-)131 │ │ │ │ 5272 y(pivoting)g(has)i(taken)g(place,)f(redistribute)e(the)j(right)f │ │ │ │ (hand)h(side)131 5372 y(to)h(match)e(the)h(final)g(rows)g(and)g │ │ │ │ (columns)f(in)i(the)f(fronts)p eop end │ │ │ │ %%Page: 47 47 │ │ │ │ -TeXDict begin 47 46 bop 0 100 a Fs(Jan)n(uary)26 b(6,)h(2026)p │ │ │ │ -661 100 1172 4 v 1336 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ +TeXDict begin 47 46 bop 0 100 a Fs(Jan)n(uary)26 b(10,)g(2026)p │ │ │ │ +702 100 1131 4 v 1295 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ (Linear)f(Systems)328 b Fu(47)131 390 y Fp(----------------)o(--)o(--)o │ │ │ │ (---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o │ │ │ │ (--)o(---)o(-)0 490 y(*/)131 589 y(rowmapIV)40 b(=)j(FrontMtx_MPI_rowm) │ │ │ │ o(ap)o(IV\()o(fr)o(on)o(tmt)o(x,)37 b(ownersIV,)j(msglvl,)1569 │ │ │ │ 689 y(msgFile,)g(MPI_COMM_WORLD\))e(;)131 789 y(newY)k(=)h │ │ │ │ (DenseMtx_MPI_spl)o(it)o(ByR)o(ow)o(s\(m)o(tx)o(Y,)37 │ │ │ │ b(rowmapIV,)j(stats,)h(msglvl,)1526 888 y(msgFile,)f(firsttag,)g │ │ │ │ @@ -11523,15 +11535,15 @@ │ │ │ │ (ordering)523 5272 y(and)i(assemble)f(the)h(solution)e(onto)i │ │ │ │ (processor)e(zero)131 5372 y(----------------)o(--)o(--)o(---)o(--)o │ │ │ │ (---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(--)p │ │ │ │ eop end │ │ │ │ %%Page: 48 48 │ │ │ │ TeXDict begin 48 47 bop 0 100 a Fu(48)327 b Ft(SPOOLES)31 │ │ │ │ b(2.2)c Fs(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1145 4 v 1338 w(Jan)n(uary)g(6,)h(2026)0 390 y Fp(*/)0 │ │ │ │ +1103 4 v 1297 w(Jan)n(uary)f(10,)i(2026)0 390 y Fp(*/)0 │ │ │ │ 490 y(DenseMtx_permute)o(Row)o(s\()o(mt)o(xX,)37 b(newToOldIV\))i(;)0 │ │ │ │ 589 y(if)k(\()g(msglvl)e(>)i(2)g(\))h({)131 689 y(fprintf\(msgFile,)37 │ │ │ │ b("\\n\\n)k(solution)g(in)h(old)h(ordering"\))c(;)131 │ │ │ │ 789 y(DenseMtx_writeFo)o(rH)o(um)o(anE)o(ye)o(\(mt)o(xX)o(,)f │ │ │ │ (msgFile\))i(;)131 888 y(fflush\(msgFile\))d(;)0 988 │ │ │ │ y(})0 1088 y(IV_fill\(vtxmapIV)o(,)h(0\))k(;)0 1187 y(firsttag++)d(;)0 │ │ │ │ 1287 y(mtxX)j(=)h(DenseMtx_MPI_spl)o(itB)o(yR)o(ows)o(\(m)o(txX)o(,)37 │ │ │ │ @@ -11544,16 +11556,16 @@ │ │ │ │ y(})0 1984 y(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o │ │ │ │ (--)o(--)o(-*/)0 2084 y(MPI_Finalize\(\))h(;)0 2283 y(return\(1\))i(;)j │ │ │ │ (})0 2383 y(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o │ │ │ │ (--)o(--)o(-*/)p eop end │ │ │ │ %%Page: 49 49 │ │ │ │ -TeXDict begin 49 48 bop 0 100 a Fs(Jan)n(uary)26 b(6,)h(2026)p │ │ │ │ -661 100 1172 4 v 1336 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ +TeXDict begin 49 48 bop 0 100 a Fs(Jan)n(uary)26 b(10,)g(2026)p │ │ │ │ +702 100 1131 4 v 1295 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ (Linear)f(Systems)328 b Fu(49)0 390 y Fr(D)135 b Fa(allInOne.c)40 │ │ │ │ b Fr({)45 b(A)f(Serial)i Fj(QR)g Fr(Driv)l(er)f(Program)0 │ │ │ │ 625 y Fp(/*)86 b(QRallInOne.c)d(*/)0 824 y(#include)40 │ │ │ │ b("../../misc.h")0 924 y(#include)g("../../FrontMtx.h)o(")0 │ │ │ │ 1024 y(#include)g("../../SymbFac.h")0 1223 y(/*--------------)o(---)o │ │ │ │ (--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(-*/)0 1322 │ │ │ │ @@ -11591,15 +11603,15 @@ │ │ │ │ (-*/)0 4809 y(/*)131 4909 y(----------------)o(--)o(--)131 │ │ │ │ 5009 y(get)j(input)g(parameters)131 5108 y(----------------)o(--)o(--)0 │ │ │ │ 5208 y(*/)0 5308 y(if)h(\()g(argc)f(!=)h(7)g(\))g({)131 │ │ │ │ 5407 y(fprintf\(stdout,)p eop end │ │ │ │ %%Page: 50 50 │ │ │ │ TeXDict begin 50 49 bop 0 100 a Fu(50)327 b Ft(SPOOLES)31 │ │ │ │ b(2.2)c Fs(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1145 4 v 1338 w(Jan)n(uary)g(6,)h(2026)262 390 y Fp("\\n)42 │ │ │ │ +1103 4 v 1297 w(Jan)n(uary)f(10,)i(2026)262 390 y Fp("\\n)42 │ │ │ │ b(usage:)f(\045s)i(msglvl)e(msgFile)g(type)g(matrixFileName)d │ │ │ │ (rhsFileName)h(seed")262 490 y("\\n)173 b(msglvl)41 b(--)h(message)f │ │ │ │ (level")262 589 y("\\n)173 b(msgFile)40 b(--)j(message)e(file")262 │ │ │ │ 689 y("\\n)173 b(type)f(--)43 b(type)f(of)h(entries")262 │ │ │ │ 789 y("\\n)260 b(1)43 b(\(SPOOLES_REAL\))169 b(--)42 │ │ │ │ b(real)g(entries")262 888 y("\\n)260 b(2)43 b(\(SPOOLES_COMPLEX)o(\))38 │ │ │ │ b(--)k(complex)f(entries")262 988 y("\\n)173 b(matrixFileName)37 │ │ │ │ @@ -11639,16 +11651,16 @@ │ │ │ │ (ient++)e(\))i({)262 4973 y(fscanf\(inputFil)o(e,)37 │ │ │ │ b("\045d)42 b(\045d)h(\045le",)f(&irow,)f(&jcol,)g(&value\))g(;)262 │ │ │ │ 5073 y(InpMtx_inputRea)o(lE)o(ntr)o(y\()o(mtx)o(A,)c(irow,)k(jcol,)h │ │ │ │ (value\))f(;)131 5172 y(})0 5272 y(})i(else)f({)131 5372 │ │ │ │ y(for)g(\()h(ient)f(=)h(0)h(;)f(ient)f(<)h(nent)f(;)h(ient++)e(\))i({)p │ │ │ │ eop end │ │ │ │ %%Page: 51 51 │ │ │ │ -TeXDict begin 51 50 bop 0 100 a Fs(Jan)n(uary)26 b(6,)h(2026)p │ │ │ │ -661 100 1172 4 v 1336 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ +TeXDict begin 51 50 bop 0 100 a Fs(Jan)n(uary)26 b(10,)g(2026)p │ │ │ │ +702 100 1131 4 v 1295 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ (Linear)f(Systems)328 b Fu(51)262 390 y Fp(fscanf\(inputFil)o(e,)37 │ │ │ │ b("\045d)42 b(\045d)h(\045le)g(\045le",)e(&irow,)g(&jcol,)g(&real,)g │ │ │ │ (&imag\))g(;)262 490 y(InpMtx_inputCom)o(pl)o(exE)o(nt)o(ry\()o(mt)o │ │ │ │ (xA,)c(irow,)k(jcol,)h(real,)f(imag\))h(;)131 589 y(})0 │ │ │ │ 689 y(})0 789 y(fclose\(inputFile)o(\))c(;)0 888 y(if)43 │ │ │ │ b(\()g(msglvl)e(>)i(1)g(\))h({)131 988 y(fprintf\(msgFile,)37 │ │ │ │ b("\\n\\n)k(input)h(matrix"\))e(;)131 1088 y(InpMtx_writeForH)o(um)o │ │ │ │ @@ -11691,15 +11703,15 @@ │ │ │ │ 5172 y(\(1\))i(create)f(the)i(Graph)e(object)g(for)i(A^TA)e(or)i(A^HA) │ │ │ │ 131 5272 y(\(2\))f(order)g(the)g(graph)f(using)h(multiple)e(minimum)h │ │ │ │ (degree)131 5372 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)p eop end │ │ │ │ %%Page: 52 52 │ │ │ │ TeXDict begin 52 51 bop 0 100 a Fu(52)327 b Ft(SPOOLES)31 │ │ │ │ b(2.2)c Fs(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1145 4 v 1338 w(Jan)n(uary)g(6,)h(2026)0 390 y Fp(*/)0 │ │ │ │ +1103 4 v 1297 w(Jan)n(uary)f(10,)i(2026)0 390 y Fp(*/)0 │ │ │ │ 490 y(graph)42 b(=)h(Graph_new\(\))c(;)0 589 y(adjIVL)i(=)i │ │ │ │ (InpMtx_adjForATA\()o(mt)o(xA\))37 b(;)0 689 y(nedges)k(=)i │ │ │ │ (IVL_tsize\(adjIVL\))37 b(;)0 789 y(Graph_init2\(grap)o(h,)g(0,)43 │ │ │ │ b(neqns,)e(0,)i(nedges,)d(neqns,)i(nedges,)e(adjIVL,)523 │ │ │ │ 888 y(NULL,)i(NULL\))f(;)0 988 y(if)i(\()g(msglvl)e(>)i(1)g(\))h({)131 │ │ │ │ 1088 y(fprintf\(msgFile,)37 b("\\n\\n)k(graph)h(of)h(A^T)f(A"\))g(;)131 │ │ │ │ 1187 y(Graph_writeForHu)o(ma)o(nE)o(ye\()o(gr)o(aph)o(,)37 │ │ │ │ @@ -11745,16 +11757,16 @@ │ │ │ │ (--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (---)o(--)o(--)o(-*/)0 4973 y(/*)131 5073 y(----------------)o(--)o(--) │ │ │ │ o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)131 │ │ │ │ 5172 y(STEP)42 b(5:)g(initialize)e(the)i(front)g(matrix)f(object)131 │ │ │ │ 5272 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (--)o(---)o(--)0 5372 y(*/)p eop end │ │ │ │ %%Page: 53 53 │ │ │ │ -TeXDict begin 53 52 bop 0 100 a Fs(Jan)n(uary)26 b(6,)h(2026)p │ │ │ │ -661 100 1172 4 v 1336 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ +TeXDict begin 53 52 bop 0 100 a Fs(Jan)n(uary)26 b(10,)g(2026)p │ │ │ │ +702 100 1131 4 v 1295 w Ft(SPOOLES)32 b(2.2)26 b Fs(|)i(Solving)f │ │ │ │ (Linear)f(Systems)328 b Fu(53)0 390 y Fp(frontmtx)40 │ │ │ │ b(=)j(FrontMtx_new\(\))38 b(;)0 490 y(mtxmanager)h(=)44 │ │ │ │ b(SubMtxManager_n)o(ew\()o(\))37 b(;)0 589 y(SubMtxManager_in)o(it\()o │ │ │ │ (mt)o(xm)o(ana)o(ge)o(r,)g(NO_LOCK,)j(0\))j(;)0 689 y(if)g(\()g(type)f │ │ │ │ (==)h(SPOOLES_REAL)38 b(\))43 b({)131 789 y(FrontMtx_init\(fr)o(on)o │ │ │ │ (tm)o(tx,)37 b(frontETree,)i(symbfacIVL,)g(type,)741 │ │ │ │ 888 y(SPOOLES_SYMMETRI)o(C,)e(FRONTMTX_DENSE_F)o(RON)o(TS)o(,)741 │ │ │ │ @@ -11798,15 +11810,15 @@ │ │ │ │ y(/*)131 5073 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(-) │ │ │ │ 131 5172 y(STEP)42 b(8:)g(solve)g(the)g(linear)f(system)131 │ │ │ │ 5272 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(-)0 │ │ │ │ 5372 y(*/)p eop end │ │ │ │ %%Page: 54 54 │ │ │ │ TeXDict begin 54 53 bop 0 100 a Fu(54)327 b Ft(SPOOLES)31 │ │ │ │ b(2.2)c Fs(|)h(Solving)f(Linear)f(Systems)p 2095 100 │ │ │ │ -1145 4 v 1338 w(Jan)n(uary)g(6,)h(2026)0 390 y Fp(mtxX)42 │ │ │ │ +1103 4 v 1297 w(Jan)n(uary)f(10,)i(2026)0 390 y Fp(mtxX)42 │ │ │ │ b(=)h(DenseMtx_new\(\))38 b(;)0 490 y(DenseMtx_init\(mt)o(xX,)f(type,)k │ │ │ │ (0,)i(0,)g(neqns,)e(nrhs,)g(1,)i(neqns\))e(;)0 589 y(FrontMtx_QR_solv)o │ │ │ │ (e\(f)o(ro)o(nt)o(mtx)o(,)c(mtxA,)42 b(mtxX,)f(mtxB,)h(mtxmanager,)785 │ │ │ │ 689 y(cpus,)f(msglvl,)g(msgFile\))f(;)0 789 y(if)j(\()g(msglvl)e(>)i(1) │ │ │ │ g(\))h({)131 888 y(fprintf\(msgFile,)37 b("\\n\\n)k(solution)g(matrix)g │ │ │ │ (in)h(new)h(ordering"\))c(;)131 988 y(DenseMtx_writeFo)o(rH)o(um)o(anE) │ │ │ │ o(ye)o(\(mt)o(xX)o(,)f(msgFile\))i(;)131 1088 y(fflush\(msgFile\))d(;)0 │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -1,16 +1,16 @@ │ │ │ │ │ Solving Linear Systems using SPOOLES 2.2 │ │ │ │ │ C. C. Ashcraft, R. G. Grimes, D. J. Pierce, D. K. Wah │ │ │ │ │ Boeing Phantom Works∗ │ │ │ │ │ - January 6, 2026 │ │ │ │ │ + January 10, 2026 │ │ │ │ │ ∗P. O. Box 24346, Mail Stop 7L-22, Seattle, Washington 98124. This research was supported in part by the DARPA │ │ │ │ │ Contract DABT63-95-C-0122 and the DoD High Performance Computing Modernization Program Common HPC Software │ │ │ │ │ Support Initiative. │ │ │ │ │ 1 │ │ │ │ │ - 2 SPOOLES 2.2 — Solving Linear Systems January 6, 2026 │ │ │ │ │ + 2 SPOOLES 2.2 — Solving Linear Systems January 10, 2026 │ │ │ │ │ Contents │ │ │ │ │ 1 Overview 4 │ │ │ │ │ 2 Serial Solution of AX = Y using an LU factorization 6 │ │ │ │ │ 2.1 Reading the input parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 │ │ │ │ │ 2.2 Communicating the data for the problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 │ │ │ │ │ 2.3 Reordering the linear system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 │ │ │ │ │ 2.4 Non-numeric work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 │ │ │ │ │ @@ -39,18 +39,18 @@ │ │ │ │ │ 5.3 Reordering the linear system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 │ │ │ │ │ 5.4 Non-numeric work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 │ │ │ │ │ 5.5 The Matrix Factorization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 │ │ │ │ │ 5.6 Solving the linear system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 │ │ │ │ │ 5.7 Sample Matrix and Right Hand Side Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 │ │ │ │ │ A allInOne.c – A Serial LU Driver Program 24 │ │ │ │ │ B allInOne.c – A Serial LU Driver Program 31 │ │ │ │ │ - January 6, 2026 SPOOLES 2.2 — Solving Linear Systems 3 │ │ │ │ │ + January 10, 2026 SPOOLES 2.2 — Solving Linear Systems 3 │ │ │ │ │ C allInOne.c – A Serial LU Driver Program 39 │ │ │ │ │ D allInOne.c – A Serial QR Driver Program 49 │ │ │ │ │ - 4 SPOOLES 2.2 — Solving Linear Systems January 6, 2026 │ │ │ │ │ + 4 SPOOLES 2.2 — Solving Linear Systems January 10, 2026 │ │ │ │ │ 1 Overview │ │ │ │ │ The SPOOLES software library is designed to solve sparse systems of linear equations AX = Y for X, │ │ │ │ │ whereAisfullrankandX andY aredensematrices. ThematrixAcanbeeitherrealorcomplex,symmetric, │ │ │ │ │ Hermitian, square nonsymmetric, or overdetermined. When A is square, there are four steps in the process │ │ │ │ │ of solving AX = Y. │ │ │ │ │ • communicate the data for the problem as A, X and Y. │ │ │ │ │ ee e e T e e │ │ │ │ │ @@ -94,26 +94,26 @@ │ │ │ │ │ The SPOOLES library is based on an object oriented design philosophy. There are several data struc- │ │ │ │ │ tures or objects that the user must interact with. These interactions are performed with a set of methods │ │ │ │ │ for each object. Every object has some standard methods, such as initializing the object, placing data into │ │ │ │ │ the object, extracting data out of the object, writing and reading the object to a input/output file, printing │ │ │ │ │ the contents of the object to a specified file, and freeing the object. │ │ │ │ │ For example, consider the DenseMtx object that models a dense matrix. The DenseMtx/DenseMtx.h │ │ │ │ │ header file defines the object’s C struct and has prototypes (with extensive comments) of the object’s │ │ │ │ │ - January 6, 2026 SPOOLES 2.2 — Solving Linear Systems 5 │ │ │ │ │ + January 10, 2026 SPOOLES 2.2 — Solving Linear Systems 5 │ │ │ │ │ A │ │ │ │ │ methods. Thesourcefiles arefound in the DenseMtx/srcdirectory. The LT X documentation files are found │ │ │ │ │ E │ │ │ │ │ in the DenseMtx/docdirectory. The files can be used to create the DenseMtxobject’s chapter in the Reference │ │ │ │ │ Manual,orinastandalonemannertogeneratetheobject’sdocumentation. TheDenseMtx/driversdirectory │ │ │ │ │ contains driver programs that exercise and validate the object’s functionality. │ │ │ │ │ Almost all the methods in the library are associated with a particular object. There are some exceptions, │ │ │ │ │ mostly found in the misc/src directory. The misc/drivers directory contains the serial LU and QR driver │ │ │ │ │ programs. The MT/drivers and MPI/drivers directories contain the multithreaded and MPI LU driver │ │ │ │ │ programs. │ │ │ │ │ - 6 SPOOLES 2.2 — Solving Linear Systems January 6, 2026 │ │ │ │ │ + 6 SPOOLES 2.2 — Solving Linear Systems January 10, 2026 │ │ │ │ │ 2 Serial Solution of AX = Y using an LU factorization │ │ │ │ │ The user has some representation of the data which represents the linear system, AX = Y . The user wants │ │ │ │ │ the solution X. The SPOOLES library will use A and Y and provide X back to the user. │ │ │ │ │ The SPOOLESlibrary is based on an object oriented design philosophy. The first object that the user │ │ │ │ │ mustinteract with is InpMtx1. The InpMtx object is where the SPOOLES representation of A is assembled. │ │ │ │ │ The user can input the representation of A into the InpMtx object with methods for single matrix entry │ │ │ │ │ (consisting of the row index, the column index, and the value), for an array of entries, for a set of entries in │ │ │ │ │ @@ -145,15 +145,15 @@ │ │ │ │ │ nrhs floating point numbers if the system is real, or 2*nrhs numbers if the system is complex. │ │ │ │ │ • The seed parameter is a random number seed used in the ordering process. │ │ │ │ │ 2.2 Communicating the data for the problem │ │ │ │ │ The following code segment from the full sample program opens the file matrixFileName, reads the first │ │ │ │ │ line of the file, and then initializes the InpMtx object. The program continues by reading each line of the │ │ │ │ │ input matrix data and uses either the method InpMtx inputRealEntry()or InpMtx inputComplexEntry() │ │ │ │ │ 1InpMtx stands for Input Matrix, for it is the object into which the user inputs the matrix entries. │ │ │ │ │ - January 6, 2026 SPOOLES 2.2 — Solving Linear Systems 7 │ │ │ │ │ + January 10, 2026 SPOOLES 2.2 — Solving Linear Systems 7 │ │ │ │ │ to place that entry into the InpMtx object. Finally this code segment closes the file. finalizes the input to │ │ │ │ │ InpMtx by converting the internal storage of the matrix entries to a vector form. (This is necessary for later │ │ │ │ │ steps.) │ │ │ │ │ inputFile = fopen(matrixFileName, "r") ; │ │ │ │ │ fscanf(inputFile, "%d %d %d", &nrow, &ncol, &nent) ; │ │ │ │ │ neqns = nrow ; │ │ │ │ │ mtxA = InpMtx_new() ; │ │ │ │ │ @@ -192,15 +192,15 @@ │ │ │ │ │ • The fifth argument maxnvector is an estimate of the number of number of vectors that will be used, │ │ │ │ │ e.g., number of rows or numbers of columns. │ │ │ │ │ The maxnent and maxnvector arguments only have to be estimates as they are used in the initial sizing of │ │ │ │ │ the object. Either can be 0. The InpMtx object resizes itself as required to handle the linear system. │ │ │ │ │ 2Note that SPOOLES has some pre-defined parameters such as INPMTX BY ROWS for some objects. These parameters are │ │ │ │ │ always uppercase and either begin with the name of the object which they apply to, or the library name, e.g., SPOOLES REAL. │ │ │ │ │ They are described in the reference manual in the section for the particular object. │ │ │ │ │ - 8 SPOOLES 2.2 — Solving Linear Systems January 6, 2026 │ │ │ │ │ + 8 SPOOLES 2.2 — Solving Linear Systems January 10, 2026 │ │ │ │ │ Every object in SPOOLES has print methods to output the contents of that object. This is illustrated │ │ │ │ │ in this code segment by printing the input matrix as contained in the InpMtx object, mtxA. To shorten this │ │ │ │ │ chapter we will from now on omit the part of the code that prints debug output to msgFile for the various │ │ │ │ │ code segments. The complete sample program in Section A contains all of the debug print statements. │ │ │ │ │ After the matrix A has been read in from the file and placed in an InpMtx object, the right hand matrix │ │ │ │ │ Y is read in from a file and placed in a DenseMtx object. The following code fragment does this operation. │ │ │ │ │ inputFile = fopen(rhsFileName, "r") ; │ │ │ │ │ @@ -240,15 +240,15 @@ │ │ │ │ │ number of rows, or neqns. │ │ │ │ │ Theinitialization step allocates storage for the matrix entries, but it does not fill them with any values. This │ │ │ │ │ is done explicitly via the DenseMtx zero() method, which places zeroes in all the entries. This is necessary │ │ │ │ │ since the right hand side matrix Y may be sparse, and so the number of rows in the file may not equal the │ │ │ │ │ number of equations. │ │ │ │ │ The right hand side entries are then in, row by row, and placed into their locations via one of the two │ │ │ │ │ “set entries” methods. Note, the nonzero rows can be read from the file in any order. │ │ │ │ │ - January 6, 2026 SPOOLES 2.2 — Solving Linear Systems 9 │ │ │ │ │ + January 10, 2026 SPOOLES 2.2 — Solving Linear Systems 9 │ │ │ │ │ 2.3 Reordering the linear system │ │ │ │ │ The first step is to find the permutation matrix P, and then permute AX = Y into (PAPT)(PX) = PY. │ │ │ │ │ The result of the SPOOLES ordering step is not just P or its permutation vector, it is a front tree that │ │ │ │ │ defines not just the permutation, but the blocking of the factor matrices, which in turn specifies the data │ │ │ │ │ structures and the computations that are performed during the factor and solves. To determine this ETree │ │ │ │ │ front tree object takes three step, as seen in the code fragment below. │ │ │ │ │ adjIVL = InpMtx_fullAdjacency(mtxA) ; │ │ │ │ │ @@ -287,15 +287,15 @@ │ │ │ │ │ InpMtx_changeCoordType(mtxA, INPMTX_BY_CHEVRONS) ; │ │ │ │ │ InpMtx_changeStorageMode(mtxA, INPMTX_BY_VECTORS) ; │ │ │ │ │ DenseMtx_permuteRows(mtxB, oldToNewIV) ; │ │ │ │ │ The oldToNewIV and newToOldIV variables are IV objects that represent an integer vector. The oldToNew │ │ │ │ │ and newToOld variables are pointers to int, which point to the base address of the int vector in an IV │ │ │ │ │ object. │ │ │ │ │ 3IVL stands for Integer Vector List, i.e., a list of integer vectors. │ │ │ │ │ - 10 SPOOLES2.2—SolvingLinearSystems January 6, 2026 │ │ │ │ │ + 10 SPOOLES2.2—SolvingLinearSystems January 10, 2026 │ │ │ │ │ Once we have the permutation vector, we apply it to the front tree, by the ETree permuteVertices() │ │ │ │ │ method, and then to the matrix with the InpMtx permute() method. If the matrix A is symmetric or │ │ │ │ │ Hermitian, we expect all nonzero entries to be in the upper triangle. Permuting the matrix yields PAPT, │ │ │ │ │ which may not have all of its entries in the upper triangle. If A is symmetric or Hermitian, the call to │ │ │ │ │ InpMtx mapToUpperTriangle() ensures that all entries of PAPT are in its upper triangle. Permuting the │ │ │ │ │ matrix destroys the internal vector structure, which has to be restored. But first we need to change the │ │ │ │ │ 4 │ │ │ │ │ @@ -330,15 +330,15 @@ │ │ │ │ │ little internal code differences, and it is the hook we have left in the library to extend its capabilities │ │ │ │ │ to out-of-core factors and solves. │ │ │ │ │ • The twelveth and thirteenth parameters define the message level and message file for the factorization. │ │ │ │ │ The numeric factorization is performed by the FrontMtx factorInpMtx() method. The code segment │ │ │ │ │ from the sample program for the numerical factorization step is found below. │ │ │ │ │ 4The i-th chevron of A consists of the diagonal entry Ai,i, the i-th row of the upper triangle of A, and the i-th column of │ │ │ │ │ the lower triangle of A. │ │ │ │ │ - January 6, 2026 SPOOLES 2.2—Solving Linear Systems 11 │ │ │ │ │ + January 10, 2026 SPOOLES 2.2—Solving Linear Systems 11 │ │ │ │ │ chvmanager = ChvManager_new() ; │ │ │ │ │ ChvManager_init(chvmanager, NO_LOCK, 1) ; │ │ │ │ │ DVfill(10, cpus, 0.0) ; │ │ │ │ │ IVfill(20, stats, 0) ; │ │ │ │ │ rootchv = FrontMtx_factorInpMtx(frontmtx, mtxA, tau, droptol, │ │ │ │ │ chvmanager, &error, cpus, stats, msglvl, msgFile) ; │ │ │ │ │ ChvManager_free(chvmanager) ; │ │ │ │ │ @@ -373,15 +373,15 @@ │ │ │ │ │ First we initialize a new DenseMtx object to hold X (and also PX). (Note, in all cases but a nonsymmetric │ │ │ │ │ matrix with pivoting enabled in an MPI environment, X may overwrite Y, and so we can use the same │ │ │ │ │ DenseMtx object for X and Y.) We then solve the linear system with a call to FrontMtx solve(). Note │ │ │ │ │ that one of the arguments is the mtxmanager object, first created for the numerical factorization. The solve │ │ │ │ │ requires working submatrices, and so we continue the convention of having the FrontMtx ask the manager │ │ │ │ │ object for working storage. The last step is to permute the rows of the DenseMtx from the new ordering into │ │ │ │ │ the old ordering. │ │ │ │ │ - 12 SPOOLES2.2—SolvingLinearSystems January 6, 2026 │ │ │ │ │ + 12 SPOOLES2.2—SolvingLinearSystems January 10, 2026 │ │ │ │ │ 2.7 Sample Matrix and Right Hand Side Files │ │ │ │ │ Immediately below are two sample files: matrix.input holds the matrix input and rhs.input holds the │ │ │ │ │ right hand side. This example is for a symmetric Laplacian operator on a 3×3 grid. Only entries in the upper │ │ │ │ │ triangle are stored. The right hand side is the 9×9 identity matrix. Note how the indices are zero-based as │ │ │ │ │ for C, instead of one-based as for Fortran. │ │ │ │ │ matrix.input │ │ │ │ │ 9 9 21 │ │ │ │ │ @@ -402,15 +402,15 @@ │ │ │ │ │ 7 8 -1.0 8 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 1.0 │ │ │ │ │ 0 3 -1.0 │ │ │ │ │ 1 4 -1.0 │ │ │ │ │ 2 5 -1.0 │ │ │ │ │ 3 6 -1.0 │ │ │ │ │ 4 7 -1.0 │ │ │ │ │ 5 8 -1.0 │ │ │ │ │ - January 6, 2026 SPOOLES 2.2—Solving Linear Systems 13 │ │ │ │ │ + January 10, 2026 SPOOLES 2.2—Solving Linear Systems 13 │ │ │ │ │ 3 Multithreaded Solution of AX = Y using an LU factorization │ │ │ │ │ The only computations that are multithreaded are the factorization and forward and backsolves. Therefore, │ │ │ │ │ this section will describe only the differences between the serial driver in Section A and the multithreaded │ │ │ │ │ driver whose complete listing is found in Section B. This section will refer the reader to subsections in │ │ │ │ │ Section 2 for the parts of the code where the two drivers are identical. │ │ │ │ │ The shared memory parallel version of SPOOLES is implemented using thread based parallelism. The │ │ │ │ │ multi-threaded code uses much of the serial code — the basic steps are the same and use the serial methods. │ │ │ │ │ @@ -443,15 +443,15 @@ │ │ │ │ │ over a range of orderings, and this is what we recommend, as we see in the code fragment below. │ │ │ │ │ if ( nthread > (nfront = FrontMtx_nfront(frontmtx)) ) { │ │ │ │ │ nthread = nfront ; │ │ │ │ │ } │ │ │ │ │ cumopsDV = DV_new() ; │ │ │ │ │ DV_init(cumopsDV, nthread, NULL) ; │ │ │ │ │ ownersIV = ETree_ddMap(frontETree, type, symmetryflag, cumopsDV, 1./(2.*nthread)) ; │ │ │ │ │ - 14 SPOOLES2.2—SolvingLinearSystems January 6, 2026 │ │ │ │ │ + 14 SPOOLES2.2—SolvingLinearSystems January 10, 2026 │ │ │ │ │ The first step is to ensure that each thread has a front to own, decreasing the number of threads if necessary. │ │ │ │ │ We then construct the owners map using the front tree object. The cumopsDV object is a double precision │ │ │ │ │ vector object whose length is the number of threads. On return from the map call, it contains the number │ │ │ │ │ of factor operations that will be performed by each thread when pivoting for stability is not enabled. │ │ │ │ │ 3.5 The Matrix Factorization │ │ │ │ │ During the factorization and solves, the threads access data and modify the state of the FrontMtx and │ │ │ │ │ SubMtxManagerobjects in a concurrent fashion, so there must be some way to control this access for critical │ │ │ │ │ @@ -487,15 +487,15 @@ │ │ │ │ │ workcooperativelyto compute the factor matrices, there is idle time while one thread waits on another. │ │ │ │ │ The lookahead parameter controls the ability of the thread to look past the present idle point and │ │ │ │ │ performworkthatisnotsoimmediate. Unfortunately, whileathreadisoffdoingthiswork,itmayblock │ │ │ │ │ a thread at a more crucial point. When lookahead = 0, each processor tries to do only “immediate” │ │ │ │ │ work. Moderate speedups in the factorization have been for values of lookahead up to the number │ │ │ │ │ of threads. For nonzero lookahead values, the amount of working storage can increase, sometimes │ │ │ │ │ appreciably. │ │ │ │ │ - January 6, 2026 SPOOLES 2.2—Solving Linear Systems 15 │ │ │ │ │ + January 10, 2026 SPOOLES 2.2—Solving Linear Systems 15 │ │ │ │ │ Thepost-processing of the factorization is exactly the same as the serial code. Note, this step can be trivially │ │ │ │ │ parallelized, but is not done at present. │ │ │ │ │ After the post-processing step, the FrontMtx object contains the L , D and U submatrices. What │ │ │ │ │ J,I I,I I,J │ │ │ │ │ remains to be done is to specify which threads own which submatrices, and thus perform computations with │ │ │ │ │ them. This is done by constructing a “solve–map” object, as we see below. │ │ │ │ │ solvemap = SolveMap_new() ; │ │ │ │ │ @@ -511,15 +511,15 @@ │ │ │ │ │ DenseMtx_zero(mtxX) ; │ │ │ │ │ FrontMtx_MT_solve(frontmtx, mtxX, mtxY, mtxmanager, solvemap, cpus, msglvl, msgFile) ; │ │ │ │ │ DenseMtx_permuteRows(mtxX, newToOldIV) ; │ │ │ │ │ The only difference between the serial and multithreaded solve methods is the presence of the solve–map │ │ │ │ │ object in the latter. │ │ │ │ │ 3.7 Sample Matrix and Right Hand Side Files │ │ │ │ │ The multithreaded driver uses the same input files as found in Section 2.7. │ │ │ │ │ - 16 SPOOLES2.2—SolvingLinearSystems January 6, 2026 │ │ │ │ │ + 16 SPOOLES2.2—SolvingLinearSystems January 10, 2026 │ │ │ │ │ 4 MPISolution of AX =Y using an LU factorization │ │ │ │ │ Unlike the serial and multithreaded environments where the data structures are global, existing under one │ │ │ │ │ address space, in the MPI environment, data is local, each process or processor has its own distinct address │ │ │ │ │ space. The MPI step-by-step process to solve a linear system is exactly the same as the multithreaded case, │ │ │ │ │ with the additional trouble that the data structures are distributed and need to be re-distributed as needed. │ │ │ │ │ The ownership of the factor matrices during the factorization and solves is exactly the same as for the │ │ │ │ │ multithreaded case – the map from fronts to processors and map from submatrices to processors are identical │ │ │ │ │ @@ -552,15 +552,15 @@ │ │ │ │ │ adjIVL = InpMtx_MPI_fullAdjacency(mtxA, stats, msglvl, msgFile, MPI_COMM_WORLD) ; │ │ │ │ │ nedges = IVL_tsize(adjIVL) ; │ │ │ │ │ Graph_init2(graph, 0, neqns, 0, nedges, neqns, nedges, adjIVL, NULL, NULL) ; │ │ │ │ │ frontETree = orderViaMMD(graph, seed + myid, msglvl, msgFile) ; │ │ │ │ │ Whilethedataandcomputationsaredistributedacrosstheprocessors,the orderingprocessis not. Therefore │ │ │ │ │ we need a global graph on each processor. Since the matrix A is distributed across the processors, we use │ │ │ │ │ the distributed InpMtx MPI fullAdjacency() method to construct the IVL object of the graph of A+AT. │ │ │ │ │ - January 6, 2026 SPOOLES 2.2—Solving Linear Systems 17 │ │ │ │ │ + January 10, 2026 SPOOLES 2.2—Solving Linear Systems 17 │ │ │ │ │ At this point, each processor has computed its own minimum degree ordering and created a front tree │ │ │ │ │ object. The orderings will likely be different, because each processors input a different random number seed │ │ │ │ │ to the ordering method. Only one ordering can be used for the factorization, so the processors collectively │ │ │ │ │ determine which of the orderings is best, which is then broadcast to all the processors, as the code fragment │ │ │ │ │ below illustrates. │ │ │ │ │ opcounts = DVinit(nproc, 0.0) ; │ │ │ │ │ opcounts[myid] = ETree_nFactorOps(frontETree, type, symmetryflag) ; │ │ │ │ │ @@ -597,15 +597,15 @@ │ │ │ │ │ IV_init(vtxmapIV, neqns, NULL) ; │ │ │ │ │ IVgather(neqns, IV_entries(vtxmapIV), IV_entries(ownersIV), ETree_vtxToFront(frontETree)) ; │ │ │ │ │ At this point we are ready to assemble and distribute the entries of A and Y . │ │ │ │ │ firsttag = 0 ; │ │ │ │ │ newA = InpMtx_MPI_split(mtxA, vtxmapIV, stats, msglvl, msgFile, firsttag, │ │ │ │ │ MPI_COMM_WORLD) ; │ │ │ │ │ InpMtx_free(mtxA) ; │ │ │ │ │ - 18 SPOOLES2.2—SolvingLinearSystems January 6, 2026 │ │ │ │ │ + 18 SPOOLES2.2—SolvingLinearSystems January 10, 2026 │ │ │ │ │ mtxA = newA ; │ │ │ │ │ InpMtx_changeStorageMode(mtxA, INPMTX_BY_VECTORS) ; │ │ │ │ │ newY = DenseMtx_MPI_splitByRows(mtxY, vtxmapIV, stats, msglvl, │ │ │ │ │ msgFile, firsttag, MPI_COMM_WORLD) ; │ │ │ │ │ DenseMtx_free(mtxY) ; │ │ │ │ │ mtxY = newY ; │ │ │ │ │ The InpMtx MPI split() method assembles and redistributes the matrix entries by the vectors of the local │ │ │ │ │ @@ -640,15 +640,15 @@ │ │ │ │ │ chvmanager, ownersIV, lookahead, &error, cpus, │ │ │ │ │ stats, msglvl, msgFile, firsttag, MPI_COMM_WORLD) ; │ │ │ │ │ ChvManager_free(chvmanager) ; │ │ │ │ │ Note that the ChvManager is not locked. The calling sequence is identical to that of the multithreaded │ │ │ │ │ factorization except for the addition of the firsttag and MPI communicator at the end. │ │ │ │ │ The post-processing of the factorization is the same in principle as in the serial code but differs in that │ │ │ │ │ is uses the distributed data structures. │ │ │ │ │ - January 6, 2026 SPOOLES 2.2—Solving Linear Systems 19 │ │ │ │ │ + January 10, 2026 SPOOLES 2.2—Solving Linear Systems 19 │ │ │ │ │ FrontMtx_MPI_postProcess(frontmtx, ownersIV, stats, msglvl, │ │ │ │ │ msgFile, firsttag, MPI_COMM_WORLD) ; │ │ │ │ │ After the post-processing step, each local FrontMtx object contains the L , D and U submatrices │ │ │ │ │ J,I I,I I,J │ │ │ │ │ for the fronts that were owned by the particular processor. However, the parallel solve is based on the │ │ │ │ │ submatrices being distributed across the processors, not just the fronts. │ │ │ │ │ We must specify which threads own which submatrices, and so perform computations with them. This │ │ │ │ │ @@ -683,15 +683,15 @@ │ │ │ │ │ mtxY = newY ; │ │ │ │ │ IV_free(rowmapIV) ; │ │ │ │ │ } │ │ │ │ │ Each processor now must create a local DenseMtx object to hold the rows of PX that it owns. │ │ │ │ │ ownedColumnsIV = FrontMtx_ownedColumnsIV(frontmtx, myid, ownersIV, │ │ │ │ │ msglvl, msgFile) ; │ │ │ │ │ nmycol = IV_size(ownedColumnsIV) ; │ │ │ │ │ - 20 SPOOLES2.2—SolvingLinearSystems January 6, 2026 │ │ │ │ │ + 20 SPOOLES2.2—SolvingLinearSystems January 10, 2026 │ │ │ │ │ mtxX = DenseMtx_new() ; │ │ │ │ │ if ( nmycol > 0 ) { │ │ │ │ │ DenseMtx_init(mtxX, type, 0, 0, nmycol, nrhs, 1, nmycol) ; │ │ │ │ │ DenseMtx_rowIndices(mtxX, &nrow, &rowind) ; │ │ │ │ │ IVcopy(nmycol, rowind, IV_entries(ownedColumnsIV)) ; │ │ │ │ │ } │ │ │ │ │ If A is symmetric, or if pivoting for stability was not used, then mtxX can just be a pointer to mtxY, i.e., PX │ │ │ │ │ @@ -722,15 +722,15 @@ │ │ │ │ │ 1 4 -1.0 6 6 4.0 │ │ │ │ │ 6 7 -1.0 │ │ │ │ │ rhs.0.input rhs.1.input rhs.2.input rhs.3.input │ │ │ │ │ 2 1 2 1 2 1 3 1 │ │ │ │ │ 0 0.0 2 0.0 4 1.0 6 0.0 │ │ │ │ │ 1 0.0 3 0.0 5 0.0 7 0.0 │ │ │ │ │ 8 0.0 │ │ │ │ │ - January 6, 2026 SPOOLES 2.2—Solving Linear Systems 21 │ │ │ │ │ + January 10, 2026 SPOOLES 2.2—Solving Linear Systems 21 │ │ │ │ │ 5 Serial Solution of AX = Y using an QR factorization │ │ │ │ │ Let us review the steps is solving AX = Y using a QR factorization. │ │ │ │ │ • communicate the data for the problem as A, X and Y. │ │ │ │ │ ee e T e │ │ │ │ │ • reorder as AX = Y, where A = AP and X =PX. and P is a permutation matrix. │ │ │ │ │ e │ │ │ │ │ • factor A = QR, where Q is orthogonal and R is upper triangular. │ │ │ │ │ @@ -762,15 +762,15 @@ │ │ │ │ │ apply it to the matrix A. This is done by the following code fragment. │ │ │ │ │ oldToNewIV = ETree_oldToNewVtxPerm(frontETree) ; │ │ │ │ │ oldToNew = IV_entries(oldToNewIV) ; │ │ │ │ │ newToOldIV = ETree_newToOldVtxPerm(frontETree) ; │ │ │ │ │ newToOld = IV_entries(newToOldIV) ; │ │ │ │ │ InpMtx_permute(mtxA, NULL, oldToNew)) ; │ │ │ │ │ InpMtx_changeStorageMode(mtxA, INPMTX_BY_VECTORS) ; │ │ │ │ │ - 22 SPOOLES2.2—SolvingLinearSystems January 6, 2026 │ │ │ │ │ + 22 SPOOLES2.2—SolvingLinearSystems January 10, 2026 │ │ │ │ │ The oldToNewIV and newToOldIV variables are IV objects that represent an integer vector. The oldToNew │ │ │ │ │ andnewToOldvariablesarepointers to int, which point to the base address of the int vector in an IV object. │ │ │ │ │ Once we have the permutation vector, we apply it to the front tree, by the ETree permuteVertices() │ │ │ │ │ method. We need APT, so we permute the InpMtx object using a NULL pointer for the row permutation │ │ │ │ │ (which means do not permute the rows) and the oldToNew vector for the column permutation. At this point │ │ │ │ │ the InpMtx object holds APT in the form required by the factorization. │ │ │ │ │ The final steps are to compute the symbolic factorization, which is stored in an IVL object, and to │ │ │ │ │ @@ -808,15 +808,15 @@ │ │ │ │ │ the sample program for the numerical factorization step is found below. │ │ │ │ │ chvmanager = ChvManager_new() ; │ │ │ │ │ ChvManager_init(chvmanager, NO_LOCK, 1) ; │ │ │ │ │ DVzero(10, cpus) ; │ │ │ │ │ facops = 0.0 ; │ │ │ │ │ FrontMtx_QR_factor(frontmtx, mtxA, chvmanager, cpus, &facops, msglvl, msgFile) ; │ │ │ │ │ ChvManager_free(chvmanager) ; │ │ │ │ │ - January 6, 2026 SPOOLES 2.2—Solving Linear Systems 23 │ │ │ │ │ + January 10, 2026 SPOOLES 2.2—Solving Linear Systems 23 │ │ │ │ │ Working storage used during the factorization is found in the form of block chevrons, in a Chv object, │ │ │ │ │ which hold the partial frontal matrix for a front. Much as with the SubMtx object, the FrontMtx object │ │ │ │ │ does not concern itself with managing working storage, instead it relies on a ChvManager object to manage │ │ │ │ │ the Chv objects. On return facops contains the number of floating point operations performed during the │ │ │ │ │ factorization. │ │ │ │ │ The factorization is performed using a one-dimensional decomposition of the factor matrices. Keeping │ │ │ │ │ the factor matrices in this form severely limits the amount of parallelism for the forward and backsolves. │ │ │ │ │ @@ -853,15 +853,15 @@ │ │ │ │ │ 5 1 2.0 6 5.0 │ │ │ │ │ 5 4 3.0 7 4.0 │ │ │ │ │ 5 5 1.0 │ │ │ │ │ 6 0 2.0 │ │ │ │ │ 6 3 3.0 │ │ │ │ │ 7 1 1.0 │ │ │ │ │ 7 4 3.0 │ │ │ │ │ - 24 SPOOLES2.2—SolvingLinearSystems January 6, 2026 │ │ │ │ │ + 24 SPOOLES2.2—SolvingLinearSystems January 10, 2026 │ │ │ │ │ A allInOne.c – A Serial LU Driver Program │ │ │ │ │ /* allInOne.c */ │ │ │ │ │ #include "../../misc.h" │ │ │ │ │ #include "../../FrontMtx.h" │ │ │ │ │ #include "../../SymbFac.h" │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ int │ │ │ │ │ @@ -900,15 +900,15 @@ │ │ │ │ │ symmetryflag, type ; │ │ │ │ │ int *newToOld, *oldToNew ; │ │ │ │ │ int stats[20] ; │ │ │ │ │ IV *newToOldIV, *oldToNewIV ; │ │ │ │ │ IVL *adjIVL, *symbfacIVL ; │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ - January 6, 2026 SPOOLES 2.2—Solving Linear Systems 25 │ │ │ │ │ + January 10, 2026 SPOOLES 2.2—Solving Linear Systems 25 │ │ │ │ │ -------------------- │ │ │ │ │ get input parameters │ │ │ │ │ -------------------- │ │ │ │ │ */ │ │ │ │ │ if ( argc != 9 ) { │ │ │ │ │ fprintf(stdout, "\n" │ │ │ │ │ "\n usage: %s msglvl msgFile type symmetryflag pivotingflag" │ │ │ │ │ @@ -952,15 +952,15 @@ │ │ │ │ │ symmetryflag = atoi(argv[4]) ; │ │ │ │ │ pivotingflag = atoi(argv[5]) ; │ │ │ │ │ matrixFileName = argv[6] ; │ │ │ │ │ rhsFileName = argv[7] ; │ │ │ │ │ seed = atoi(argv[8]) ; │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ - 26 SPOOLES2.2—SolvingLinearSystems January 6, 2026 │ │ │ │ │ + 26 SPOOLES2.2—SolvingLinearSystems January 10, 2026 │ │ │ │ │ -------------------------------------------- │ │ │ │ │ STEP 1: read the entries from the input file │ │ │ │ │ and create the InpMtx object │ │ │ │ │ -------------------------------------------- │ │ │ │ │ */ │ │ │ │ │ inputFile = fopen(matrixFileName, "r") ; │ │ │ │ │ fscanf(inputFile, "%d %d %d", &nrow, &ncol, &nent) ; │ │ │ │ │ @@ -1004,15 +1004,15 @@ │ │ │ │ │ fscanf(inputFile, "%d", &jrow) ; │ │ │ │ │ for ( jrhs = 0 ; jrhs < nrhs ; jrhs++ ) { │ │ │ │ │ fscanf(inputFile, "%le", &value) ; │ │ │ │ │ DenseMtx_setRealEntry(mtxY, jrow, jrhs, value) ; │ │ │ │ │ } │ │ │ │ │ } │ │ │ │ │ } else { │ │ │ │ │ - January 6, 2026 SPOOLES 2.2—Solving Linear Systems 27 │ │ │ │ │ + January 10, 2026 SPOOLES 2.2—Solving Linear Systems 27 │ │ │ │ │ double imag, real ; │ │ │ │ │ for ( irow = 0 ; irow < nrow ; irow++ ) { │ │ │ │ │ fscanf(inputFile, "%d", &jrow) ; │ │ │ │ │ for ( jrhs = 0 ; jrhs < nrhs ; jrhs++ ) { │ │ │ │ │ fscanf(inputFile, "%le %le", &real, &imag) ; │ │ │ │ │ DenseMtx_setComplexEntry(mtxY, jrow, jrhs, real, imag) ; │ │ │ │ │ } │ │ │ │ │ @@ -1056,15 +1056,15 @@ │ │ │ │ │ get the symbolic factorization │ │ │ │ │ ---------------------------------------------------- │ │ │ │ │ */ │ │ │ │ │ oldToNewIV = ETree_oldToNewVtxPerm(frontETree) ; │ │ │ │ │ oldToNew = IV_entries(oldToNewIV) ; │ │ │ │ │ newToOldIV = ETree_newToOldVtxPerm(frontETree) ; │ │ │ │ │ newToOld = IV_entries(newToOldIV) ; │ │ │ │ │ - 28 SPOOLES2.2—SolvingLinearSystems January 6, 2026 │ │ │ │ │ + 28 SPOOLES2.2—SolvingLinearSystems January 10, 2026 │ │ │ │ │ ETree_permuteVertices(frontETree, oldToNewIV) ; │ │ │ │ │ InpMtx_permute(mtxA, oldToNew, oldToNew) ; │ │ │ │ │ if ( symmetryflag == SPOOLES_SYMMETRIC │ │ │ │ │ || symmetryflag == SPOOLES_HERMITIAN ) { │ │ │ │ │ InpMtx_mapToUpperTriangle(mtxA) ; │ │ │ │ │ } │ │ │ │ │ InpMtx_changeCoordType(mtxA, INPMTX_BY_CHEVRONS) ; │ │ │ │ │ @@ -1108,15 +1108,15 @@ │ │ │ │ │ ChvManager_init(chvmanager, NO_LOCK, 1) ; │ │ │ │ │ DVfill(10, cpus, 0.0) ; │ │ │ │ │ IVfill(20, stats, 0) ; │ │ │ │ │ rootchv = FrontMtx_factorInpMtx(frontmtx, mtxA, tau, droptol, │ │ │ │ │ chvmanager, &error, cpus, stats, msglvl, msgFile) ; │ │ │ │ │ ChvManager_free(chvmanager) ; │ │ │ │ │ if ( msglvl > 2 ) { │ │ │ │ │ - January 6, 2026 SPOOLES 2.2—Solving Linear Systems 29 │ │ │ │ │ + January 10, 2026 SPOOLES 2.2—Solving Linear Systems 29 │ │ │ │ │ fprintf(msgFile, "\n\n factor matrix") ; │ │ │ │ │ FrontMtx_writeForHumanEye(frontmtx, msgFile) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ } │ │ │ │ │ if ( rootchv != NULL ) { │ │ │ │ │ fprintf(msgFile, "\n\n matrix found to be singular\n") ; │ │ │ │ │ exit(-1) ; │ │ │ │ │ @@ -1160,15 +1160,15 @@ │ │ │ │ │ ------------------------------------------------------- │ │ │ │ │ */ │ │ │ │ │ DenseMtx_permuteRows(mtxX, newToOldIV) ; │ │ │ │ │ if ( msglvl > 0 ) { │ │ │ │ │ fprintf(msgFile, "\n\n solution matrix in original ordering") ; │ │ │ │ │ DenseMtx_writeForHumanEye(mtxX, msgFile) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ - 30 SPOOLES2.2—SolvingLinearSystems January 6, 2026 │ │ │ │ │ + 30 SPOOLES2.2—SolvingLinearSystems January 10, 2026 │ │ │ │ │ } │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ ----------- │ │ │ │ │ free memory │ │ │ │ │ ----------- │ │ │ │ │ */ │ │ │ │ │ @@ -1181,15 +1181,15 @@ │ │ │ │ │ ETree_free(frontETree) ; │ │ │ │ │ IVL_free(symbfacIVL) ; │ │ │ │ │ SubMtxManager_free(mtxmanager) ; │ │ │ │ │ Graph_free(graph) ; │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ return(1) ; } │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ - January 6, 2026 SPOOLES 2.2—Solving Linear Systems 31 │ │ │ │ │ + January 10, 2026 SPOOLES 2.2—Solving Linear Systems 31 │ │ │ │ │ B allInOne.c – A Serial LU Driver Program │ │ │ │ │ /* allInOneMT.c */ │ │ │ │ │ #include "../spoolesMT.h" │ │ │ │ │ #include "../../misc.h" │ │ │ │ │ #include "../../FrontMtx.h" │ │ │ │ │ #include "../../SymbFac.h" │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ @@ -1228,15 +1228,15 @@ │ │ │ │ │ Graph *graph ; │ │ │ │ │ InpMtx *mtxA ; │ │ │ │ │ int error, ient, irow, jcol, jrhs, jrow, lookahead, msglvl, │ │ │ │ │ ncol, nedges, nent, neqns, nfront, nrhs, nrow, │ │ │ │ │ nthread, pivotingflag, seed, symmetryflag, type ; │ │ │ │ │ int *newToOld, *oldToNew ; │ │ │ │ │ int stats[20] ; │ │ │ │ │ - 32 SPOOLES2.2—SolvingLinearSystems January 6, 2026 │ │ │ │ │ + 32 SPOOLES2.2—SolvingLinearSystems January 10, 2026 │ │ │ │ │ IV *newToOldIV, *oldToNewIV, *ownersIV ; │ │ │ │ │ IVL *adjIVL, *symbfacIVL ; │ │ │ │ │ SolveMap *solvemap ; │ │ │ │ │ SubMtxManager *mtxmanager ; │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ -------------------- │ │ │ │ │ @@ -1280,15 +1280,15 @@ │ │ │ │ │ } else if ( (msgFile = fopen(argv[2], "a")) == NULL ) { │ │ │ │ │ fprintf(stderr, "\n fatal error in %s" │ │ │ │ │ "\n unable to open file %s\n", │ │ │ │ │ argv[0], argv[2]) ; │ │ │ │ │ return(-1) ; │ │ │ │ │ } │ │ │ │ │ type = atoi(argv[3]) ; │ │ │ │ │ - January 6, 2026 SPOOLES 2.2—Solving Linear Systems 33 │ │ │ │ │ + January 10, 2026 SPOOLES 2.2—Solving Linear Systems 33 │ │ │ │ │ symmetryflag = atoi(argv[4]) ; │ │ │ │ │ pivotingflag = atoi(argv[5]) ; │ │ │ │ │ matrixFileName = argv[6] ; │ │ │ │ │ rhsFileName = argv[7] ; │ │ │ │ │ seed = atoi(argv[8]) ; │ │ │ │ │ nthread = atoi(argv[9]) ; │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ @@ -1332,15 +1332,15 @@ │ │ │ │ │ inputFile = fopen(rhsFileName, "r") ; │ │ │ │ │ fscanf(inputFile, "%d %d", &nrow, &nrhs) ; │ │ │ │ │ mtxY = DenseMtx_new() ; │ │ │ │ │ DenseMtx_init(mtxY, type, 0, 0, neqns, nrhs, 1, neqns) ; │ │ │ │ │ DenseMtx_zero(mtxY) ; │ │ │ │ │ if ( type == SPOOLES_REAL ) { │ │ │ │ │ double value ; │ │ │ │ │ - 34 SPOOLES2.2—SolvingLinearSystems January 6, 2026 │ │ │ │ │ + 34 SPOOLES2.2—SolvingLinearSystems January 10, 2026 │ │ │ │ │ for ( irow = 0 ; irow < nrow ; irow++ ) { │ │ │ │ │ fscanf(inputFile, "%d", &jrow) ; │ │ │ │ │ for ( jrhs = 0 ; jrhs < nrhs ; jrhs++ ) { │ │ │ │ │ fscanf(inputFile, "%le", &value) ; │ │ │ │ │ DenseMtx_setRealEntry(mtxY, jrow, jrhs, value) ; │ │ │ │ │ } │ │ │ │ │ } │ │ │ │ │ @@ -1384,15 +1384,15 @@ │ │ │ │ │ ETree_writeForHumanEye(frontETree, msgFile) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ } │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ ---------------------------------------------------- │ │ │ │ │ STEP 4: get the permutation, permute the front tree, │ │ │ │ │ - January 6, 2026 SPOOLES 2.2—Solving Linear Systems 35 │ │ │ │ │ + January 10, 2026 SPOOLES 2.2—Solving Linear Systems 35 │ │ │ │ │ permute the matrix and right hand side, and │ │ │ │ │ get the symbolic factorization │ │ │ │ │ ---------------------------------------------------- │ │ │ │ │ */ │ │ │ │ │ oldToNewIV = ETree_oldToNewVtxPerm(frontETree) ; │ │ │ │ │ oldToNew = IV_entries(oldToNewIV) ; │ │ │ │ │ newToOldIV = ETree_newToOldVtxPerm(frontETree) ; │ │ │ │ │ @@ -1436,15 +1436,15 @@ │ │ │ │ │ ownersIV = ETree_ddMap(frontETree, type, symmetryflag, │ │ │ │ │ cumopsDV, 1./(2.*nthread)) ; │ │ │ │ │ if ( msglvl > 1 ) { │ │ │ │ │ fprintf(msgFile, "\n\n map from fronts to threads") ; │ │ │ │ │ IV_writeForHumanEye(ownersIV, msgFile) ; │ │ │ │ │ fprintf(msgFile, "\n\n factor operations for each front") ; │ │ │ │ │ DV_writeForHumanEye(cumopsDV, msgFile) ; │ │ │ │ │ - 36 SPOOLES2.2—SolvingLinearSystems January 6, 2026 │ │ │ │ │ + 36 SPOOLES2.2—SolvingLinearSystems January 10, 2026 │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ } │ │ │ │ │ DV_free(cumopsDV) ; │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ ------------------------------------------ │ │ │ │ │ STEP 6: initialize the front matrix object │ │ │ │ │ @@ -1488,15 +1488,15 @@ │ │ │ │ │ -------------------------------------- │ │ │ │ │ STEP 8: post-process the factorization │ │ │ │ │ -------------------------------------- │ │ │ │ │ */ │ │ │ │ │ FrontMtx_postProcess(frontmtx, msglvl, msgFile) ; │ │ │ │ │ if ( msglvl > 1 ) { │ │ │ │ │ fprintf(msgFile, "\n\n factor matrix after post-processing") ; │ │ │ │ │ - January 6, 2026 SPOOLES 2.2—Solving Linear Systems 37 │ │ │ │ │ + January 10, 2026 SPOOLES 2.2—Solving Linear Systems 37 │ │ │ │ │ FrontMtx_writeForHumanEye(frontmtx, msgFile) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ } │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ ------------------------------------------------------- │ │ │ │ │ STEP 9: get the solve map object for the parallel solve │ │ │ │ │ @@ -1540,27 +1540,27 @@ │ │ │ │ │ free memory │ │ │ │ │ ----------- │ │ │ │ │ */ │ │ │ │ │ FrontMtx_free(frontmtx) ; │ │ │ │ │ DenseMtx_free(mtxX) ; │ │ │ │ │ DenseMtx_free(mtxY) ; │ │ │ │ │ IV_free(newToOldIV) ; │ │ │ │ │ - 38 SPOOLES2.2—SolvingLinearSystems January 6, 2026 │ │ │ │ │ + 38 SPOOLES2.2—SolvingLinearSystems January 10, 2026 │ │ │ │ │ IV_free(oldToNewIV) ; │ │ │ │ │ InpMtx_free(mtxA) ; │ │ │ │ │ ETree_free(frontETree) ; │ │ │ │ │ IVL_free(symbfacIVL) ; │ │ │ │ │ SubMtxManager_free(mtxmanager) ; │ │ │ │ │ Graph_free(graph) ; │ │ │ │ │ SolveMap_free(solvemap) ; │ │ │ │ │ IV_free(ownersIV) ; │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ return(1) ; } │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ - January 6, 2026 SPOOLES 2.2—Solving Linear Systems 39 │ │ │ │ │ + January 10, 2026 SPOOLES 2.2—Solving Linear Systems 39 │ │ │ │ │ C allInOne.c – A Serial LU Driver Program │ │ │ │ │ /* allInOneMPI.c */ │ │ │ │ │ #include "../spoolesMPI.h" │ │ │ │ │ #include "../../timings.h" │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ int │ │ │ │ │ main ( int argc, char *argv[] ) { │ │ │ │ │ @@ -1598,15 +1598,15 @@ │ │ │ │ │ double *opcounts ; │ │ │ │ │ DV *cumopsDV ; │ │ │ │ │ ETree *frontETree ; │ │ │ │ │ FILE *inputFile, *msgFile ; │ │ │ │ │ Graph *graph ; │ │ │ │ │ int error, firsttag, ient, irow, jcol, lookahead = 0, │ │ │ │ │ msglvl, myid, nedges, nent, neqns, nmycol, nproc, nrhs, │ │ │ │ │ - 40 SPOOLES2.2—SolvingLinearSystems January 6, 2026 │ │ │ │ │ + 40 SPOOLES2.2—SolvingLinearSystems January 10, 2026 │ │ │ │ │ nrow, pivotingflag, root, seed, symmetryflag, type ; │ │ │ │ │ int stats[20] ; │ │ │ │ │ int *rowind ; │ │ │ │ │ IV *oldToNewIV, *ownedColumnsIV, *ownersIV, │ │ │ │ │ *newToOldIV, *vtxmapIV ; │ │ │ │ │ IVL *adjIVL, *symbfacIVL ; │ │ │ │ │ SolveMap *solvemap ; │ │ │ │ │ @@ -1650,15 +1650,15 @@ │ │ │ │ │ return(0) ; │ │ │ │ │ } │ │ │ │ │ msglvl = atoi(argv[1]) ; │ │ │ │ │ if ( strcmp(argv[2], "stdout") == 0 ) { │ │ │ │ │ msgFile = stdout ; │ │ │ │ │ } else { │ │ │ │ │ sprintf(buffer, "res.%d", myid) ; │ │ │ │ │ - January 6, 2026 SPOOLES 2.2—Solving Linear Systems 41 │ │ │ │ │ + January 10, 2026 SPOOLES 2.2—Solving Linear Systems 41 │ │ │ │ │ if ( (msgFile = fopen(buffer, "w")) == NULL ) { │ │ │ │ │ fprintf(stderr, "\n fatal error in %s" │ │ │ │ │ "\n unable to open file %s\n", │ │ │ │ │ argv[0], buffer) ; │ │ │ │ │ return(-1) ; │ │ │ │ │ } │ │ │ │ │ } │ │ │ │ │ @@ -1702,15 +1702,15 @@ │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ } │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ ---------------------------------------------------- │ │ │ │ │ STEP 2: read the rhs entries from the rhs input file │ │ │ │ │ and create the DenseMtx object for Y │ │ │ │ │ - 42 SPOOLES2.2—SolvingLinearSystems January 6, 2026 │ │ │ │ │ + 42 SPOOLES2.2—SolvingLinearSystems January 10, 2026 │ │ │ │ │ ---------------------------------------------------- │ │ │ │ │ */ │ │ │ │ │ sprintf(buffer, "rhs.%d.input", myid) ; │ │ │ │ │ inputFile = fopen(buffer, "r") ; │ │ │ │ │ fscanf(inputFile, "%d %d", &nrow, &nrhs) ; │ │ │ │ │ mtxY = DenseMtx_new() ; │ │ │ │ │ DenseMtx_init(mtxY, type, 0, 0, nrow, nrhs, 1, nrow) ; │ │ │ │ │ @@ -1754,15 +1754,15 @@ │ │ │ │ │ adjIVL = InpMtx_MPI_fullAdjacency(mtxA, stats, │ │ │ │ │ msglvl, msgFile, MPI_COMM_WORLD) ; │ │ │ │ │ nedges = IVL_tsize(adjIVL) ; │ │ │ │ │ Graph_init2(graph, 0, neqns, 0, nedges, neqns, nedges, adjIVL, │ │ │ │ │ NULL, NULL) ; │ │ │ │ │ if ( msglvl > 2 ) { │ │ │ │ │ fprintf(msgFile, "\n\n graph of the input matrix") ; │ │ │ │ │ - January 6, 2026 SPOOLES 2.2—Solving Linear Systems 43 │ │ │ │ │ + January 10, 2026 SPOOLES 2.2—Solving Linear Systems 43 │ │ │ │ │ Graph_writeForHumanEye(graph, msgFile) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ } │ │ │ │ │ frontETree = orderViaMMD(graph, seed + myid, msglvl, msgFile) ; │ │ │ │ │ Graph_free(graph) ; │ │ │ │ │ if ( msglvl > 2 ) { │ │ │ │ │ fprintf(msgFile, "\n\n front tree from ordering") ; │ │ │ │ │ @@ -1806,15 +1806,15 @@ │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ } │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ ------------------------------------------- │ │ │ │ │ STEP 4: generate the owners map IV object │ │ │ │ │ and the map from vertices to owners │ │ │ │ │ - 44 SPOOLES2.2—SolvingLinearSystems January 6, 2026 │ │ │ │ │ + 44 SPOOLES2.2—SolvingLinearSystems January 10, 2026 │ │ │ │ │ ------------------------------------------- │ │ │ │ │ */ │ │ │ │ │ cutoff = 1./(2*nproc) ; │ │ │ │ │ cumopsDV = DV_new() ; │ │ │ │ │ DV_init(cumopsDV, nproc, NULL) ; │ │ │ │ │ ownersIV = ETree_ddMap(frontETree, │ │ │ │ │ type, symmetryflag, cumopsDV, cutoff) ; │ │ │ │ │ @@ -1858,15 +1858,15 @@ │ │ │ │ │ DenseMtx_writeForHumanEye(mtxY, msgFile) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ } │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ ------------------------------------------ │ │ │ │ │ STEP 6: compute the symbolic factorization │ │ │ │ │ - January 6, 2026 SPOOLES 2.2—Solving Linear Systems 45 │ │ │ │ │ + January 10, 2026 SPOOLES 2.2—Solving Linear Systems 45 │ │ │ │ │ ------------------------------------------ │ │ │ │ │ */ │ │ │ │ │ symbfacIVL = SymbFac_MPI_initFromInpMtx(frontETree, ownersIV, mtxA, │ │ │ │ │ stats, msglvl, msgFile, firsttag, MPI_COMM_WORLD) ; │ │ │ │ │ firsttag += frontETree->nfront ; │ │ │ │ │ if ( msglvl > 2 ) { │ │ │ │ │ fprintf(msgFile, "\n\n local symbolic factorization") ; │ │ │ │ │ @@ -1910,15 +1910,15 @@ │ │ │ │ │ exit(-1) ; │ │ │ │ │ } │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ ------------------------------------------------ │ │ │ │ │ STEP 9: post-process the factorization and split │ │ │ │ │ the factor matrices into submatrices │ │ │ │ │ - 46 SPOOLES2.2—SolvingLinearSystems January 6, 2026 │ │ │ │ │ + 46 SPOOLES2.2—SolvingLinearSystems January 10, 2026 │ │ │ │ │ ------------------------------------------------ │ │ │ │ │ */ │ │ │ │ │ FrontMtx_MPI_postProcess(frontmtx, ownersIV, stats, msglvl, │ │ │ │ │ msgFile, firsttag, MPI_COMM_WORLD) ; │ │ │ │ │ firsttag += 5*nproc ; │ │ │ │ │ if ( msglvl > 2 ) { │ │ │ │ │ fprintf(msgFile, "\n\n numeric factorization after post-processing"); │ │ │ │ │ @@ -1962,15 +1962,15 @@ │ │ │ │ │ */ │ │ │ │ │ if ( FRONTMTX_IS_PIVOTING(frontmtx) ) { │ │ │ │ │ IV *rowmapIV ; │ │ │ │ │ /* │ │ │ │ │ ---------------------------------------------------------- │ │ │ │ │ pivoting has taken place, redistribute the right hand side │ │ │ │ │ to match the final rows and columns in the fronts │ │ │ │ │ - January 6, 2026 SPOOLES 2.2—Solving Linear Systems 47 │ │ │ │ │ + January 10, 2026 SPOOLES 2.2—Solving Linear Systems 47 │ │ │ │ │ ---------------------------------------------------------- │ │ │ │ │ */ │ │ │ │ │ rowmapIV = FrontMtx_MPI_rowmapIV(frontmtx, ownersIV, msglvl, │ │ │ │ │ msgFile, MPI_COMM_WORLD) ; │ │ │ │ │ newY = DenseMtx_MPI_splitByRows(mtxY, rowmapIV, stats, msglvl, │ │ │ │ │ msgFile, firsttag, MPI_COMM_WORLD) ; │ │ │ │ │ DenseMtx_free(mtxY) ; │ │ │ │ │ @@ -2014,15 +2014,15 @@ │ │ │ │ │ } │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ -------------------------------------------------------- │ │ │ │ │ STEP 15: permute the solution into the original ordering │ │ │ │ │ and assemble the solution onto processor zero │ │ │ │ │ -------------------------------------------------------- │ │ │ │ │ - 48 SPOOLES2.2—SolvingLinearSystems January 6, 2026 │ │ │ │ │ + 48 SPOOLES2.2—SolvingLinearSystems January 10, 2026 │ │ │ │ │ */ │ │ │ │ │ DenseMtx_permuteRows(mtxX, newToOldIV) ; │ │ │ │ │ if ( msglvl > 2 ) { │ │ │ │ │ fprintf(msgFile, "\n\n solution in old ordering") ; │ │ │ │ │ DenseMtx_writeForHumanEye(mtxX, msgFile) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ } │ │ │ │ │ @@ -2035,15 +2035,15 @@ │ │ │ │ │ DenseMtx_writeForHumanEye(mtxX, msgFile) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ } │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ MPI_Finalize() ; │ │ │ │ │ return(1) ; } │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ - January 6, 2026 SPOOLES 2.2—Solving Linear Systems 49 │ │ │ │ │ + January 10, 2026 SPOOLES 2.2—Solving Linear Systems 49 │ │ │ │ │ D allInOne.c – A Serial QR Driver Program │ │ │ │ │ /* QRallInOne.c */ │ │ │ │ │ #include "../../misc.h" │ │ │ │ │ #include "../../FrontMtx.h" │ │ │ │ │ #include "../../SymbFac.h" │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ int │ │ │ │ │ @@ -2083,15 +2083,15 @@ │ │ │ │ │ /* │ │ │ │ │ -------------------- │ │ │ │ │ get input parameters │ │ │ │ │ -------------------- │ │ │ │ │ */ │ │ │ │ │ if ( argc != 7 ) { │ │ │ │ │ fprintf(stdout, │ │ │ │ │ - 50 SPOOLES2.2—SolvingLinearSystems January 6, 2026 │ │ │ │ │ + 50 SPOOLES2.2—SolvingLinearSystems January 10, 2026 │ │ │ │ │ "\n usage: %s msglvl msgFile type matrixFileName rhsFileName seed" │ │ │ │ │ "\n msglvl -- message level" │ │ │ │ │ "\n msgFile -- message file" │ │ │ │ │ "\n type -- type of entries" │ │ │ │ │ "\n 1 (SPOOLES_REAL) -- real entries" │ │ │ │ │ "\n 2 (SPOOLES_COMPLEX) -- complex entries" │ │ │ │ │ "\n matrixFileName -- matrix file name, format" │ │ │ │ │ @@ -2135,15 +2135,15 @@ │ │ │ │ │ if ( type == SPOOLES_REAL ) { │ │ │ │ │ for ( ient = 0 ; ient < nent ; ient++ ) { │ │ │ │ │ fscanf(inputFile, "%d %d %le", &irow, &jcol, &value) ; │ │ │ │ │ InpMtx_inputRealEntry(mtxA, irow, jcol, value) ; │ │ │ │ │ } │ │ │ │ │ } else { │ │ │ │ │ for ( ient = 0 ; ient < nent ; ient++ ) { │ │ │ │ │ - January 6, 2026 SPOOLES 2.2—Solving Linear Systems 51 │ │ │ │ │ + January 10, 2026 SPOOLES 2.2—Solving Linear Systems 51 │ │ │ │ │ fscanf(inputFile, "%d %d %le %le", &irow, &jcol, &real, &imag) ; │ │ │ │ │ InpMtx_inputComplexEntry(mtxA, irow, jcol, real, imag) ; │ │ │ │ │ } │ │ │ │ │ } │ │ │ │ │ fclose(inputFile) ; │ │ │ │ │ if ( msglvl > 1 ) { │ │ │ │ │ fprintf(msgFile, "\n\n input matrix") ; │ │ │ │ │ @@ -2187,15 +2187,15 @@ │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ ------------------------------------------------- │ │ │ │ │ STEP 3 : find a low-fill ordering │ │ │ │ │ (1) create the Graph object for A^TA or A^HA │ │ │ │ │ (2) order the graph using multiple minimum degree │ │ │ │ │ ------------------------------------------------- │ │ │ │ │ - 52 SPOOLES2.2—SolvingLinearSystems January 6, 2026 │ │ │ │ │ + 52 SPOOLES2.2—SolvingLinearSystems January 10, 2026 │ │ │ │ │ */ │ │ │ │ │ graph = Graph_new() ; │ │ │ │ │ adjIVL = InpMtx_adjForATA(mtxA) ; │ │ │ │ │ nedges = IVL_tsize(adjIVL) ; │ │ │ │ │ Graph_init2(graph, 0, neqns, 0, nedges, neqns, nedges, adjIVL, │ │ │ │ │ NULL, NULL) ; │ │ │ │ │ if ( msglvl > 1 ) { │ │ │ │ │ @@ -2239,15 +2239,15 @@ │ │ │ │ │ } │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ ------------------------------------------ │ │ │ │ │ STEP 5: initialize the front matrix object │ │ │ │ │ ------------------------------------------ │ │ │ │ │ */ │ │ │ │ │ - January 6, 2026 SPOOLES 2.2—Solving Linear Systems 53 │ │ │ │ │ + January 10, 2026 SPOOLES 2.2—Solving Linear Systems 53 │ │ │ │ │ frontmtx = FrontMtx_new() ; │ │ │ │ │ mtxmanager = SubMtxManager_new() ; │ │ │ │ │ SubMtxManager_init(mtxmanager, NO_LOCK, 0) ; │ │ │ │ │ if ( type == SPOOLES_REAL ) { │ │ │ │ │ FrontMtx_init(frontmtx, frontETree, symbfacIVL, type, │ │ │ │ │ SPOOLES_SYMMETRIC, FRONTMTX_DENSE_FRONTS, │ │ │ │ │ SPOOLES_NO_PIVOTING, NO_LOCK, 0, NULL, │ │ │ │ │ @@ -2291,15 +2291,15 @@ │ │ │ │ │ } │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ ------------------------------- │ │ │ │ │ STEP 8: solve the linear system │ │ │ │ │ ------------------------------- │ │ │ │ │ */ │ │ │ │ │ - 54 SPOOLES2.2—SolvingLinearSystems January 6, 2026 │ │ │ │ │ + 54 SPOOLES2.2—SolvingLinearSystems January 10, 2026 │ │ │ │ │ mtxX = DenseMtx_new() ; │ │ │ │ │ DenseMtx_init(mtxX, type, 0, 0, neqns, nrhs, 1, neqns) ; │ │ │ │ │ FrontMtx_QR_solve(frontmtx, mtxA, mtxX, mtxB, mtxmanager, │ │ │ │ │ cpus, msglvl, msgFile) ; │ │ │ │ │ if ( msglvl > 1 ) { │ │ │ │ │ fprintf(msgFile, "\n\n solution matrix in new ordering") ; │ │ │ │ │ DenseMtx_writeForHumanEye(mtxX, msgFile) ; │ │ ├── ./usr/share/doc/spooles-doc/BKL.ps.gz │ │ │ ├── BKL.ps │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ %%EndComments │ │ │ │ %%BeginDefaults │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ %%EndDefaults │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o BKL.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2026.01.06:2033 │ │ │ │ +%DVIPSSource: TeX output 2026.01.10:0512 │ │ │ │ %%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 │ │ │ │ @@ -2553,14 +2553,15 @@ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ /UnderlineThickness 50 def │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ +dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ dup 54 /six put │ │ │ │ dup 58 /colon put │ │ │ │ dup 74 /J put │ │ │ │ dup 97 /a put │ │ │ │ dup 110 /n put │ │ │ │ dup 114 /r put │ │ │ │ @@ -2750,79 +2751,84 @@ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB88440048702D1F │ │ │ │ -77994EE04EC3B4531D6E1888C86A8F0DA6CF1F056F16AB0DD76C862830F89DA4 │ │ │ │ -28923B3AA543E0D6E41D3BD283E600BC11F889315EE92C675C109C81065ED1BC │ │ │ │ -82A5583D1B723D50051B0557A367887F5B263014C6E77288B4883C50889473D3 │ │ │ │ -3787BAD4BEB88BD1353AFA5B73E61814819537E7FF09F53EF94792BB3DD36ED0 │ │ │ │ -002D0E7A6CDAB85A9C17AF5664BCB5A71663B861880F3ECCABC8E7A2FC81A4CC │ │ │ │ -AE7A87503FDC1CE0077BA51ECC7B43B60793FED8E9AAD5BBD03ADD6183DCD26D │ │ │ │ -24A74163611C05562437644EF9B8889FD4F9D311911204FEFD35237486F2D2D0 │ │ │ │ -B6783A03BF12EA6D19D6D0F87E4D08515F12F9CBF1961CAA71E0D69FE3C4C4D2 │ │ │ │ -7C7FB64ED24F8684C8F00C2BEDEA53EA390CDC0B5BEBD7DD982580B2EA1F1F89 │ │ │ │ -CFED5916630DC2BA32BB9180277E1ABC339B3B7DE086717BD93F7FF3681BA5B3 │ │ │ │ -FCF671C4B293C2DE4A322F0AA3323A4934444C69F23EF90120B8755482757759 │ │ │ │ -C457A435FB8BB4922BD92C5F3D9555D978275C510183E29DFF2FCE4ABBFC18DE │ │ │ │ -76CAD3B486BA12047DD808CD4D521A0FD368E4AE79DE262630983A5D6F0B679D │ │ │ │ -2F005306393C520E1B6987302D029939D94B0178DB06211C7F3B123A41E6E7BA │ │ │ │ -87164737110707A3ED3983895F3FBC815EF370F54C808ED93D910937BCA3D8AF │ │ │ │ -7CBF80DC180CDA54059DB76710B4FCD4139D5B7DA7DB1A0D0AF86AD2453D3691 │ │ │ │ -0BA5BAD40FF28BB4235FCD40FC87C2B888E67928D9B0ACA5692149373DBB93BF │ │ │ │ -6520DDD36A9BFE4D415CA67A5E04F1D48BDB28C69676273ED842CF7980E8E17C │ │ │ │ -B88563F407E340AFAE8F51AABCF8A39521BCEE1EC8396D75E124B24B4675909F │ │ │ │ -E246F87DA08584A3173AEFF153ECDF610543FA7474D125A31ADD6285A49222B5 │ │ │ │ -177066EA395BFA4B1114C7FCF7712DA772A21C99E64F4E1181E69CAF98137FA2 │ │ │ │ -76CF74F682B8CD7BA6EEA79B70FA8A76809634517F8415B6F21A5A7D6099B5E8 │ │ │ │ -EAB356BBC4FB68C72B8C61DDCE8EAB1A53B9D6BAD78584B307EFF57CEAE74884 │ │ │ │ -35987BF89E9E60E962D22FA5612F2DB5EB840499B7CC11A34BA5DEE30D277540 │ │ │ │ -39B8211D69B448ADE95B723F8369A631DE6DD75703AFD7485FB7FFF41A60CBE4 │ │ │ │ -813B8FEA120662355773830EF85015E7FFD609B2CEE52CB5FFE9C35B6BEEE4A4 │ │ │ │ -A66719E31CE1523FDD7771FB1E881A32A7DB7D92C2326DF4B93241C14ABFCCD6 │ │ │ │ -8E5BCAC61E800E6B1B4687ADA4CBF41EC0AFC26D021D1772CBDCD0516DF5EBE1 │ │ │ │ -37FD2AC5ABB8D774B5735940F1F6866D044FD8CE74444FAA5D0202C11E39CC10 │ │ │ │ -213731F41F704450E1D0565013BF22188442CE0FC256190A9F92F0C802AA2660 │ │ │ │ -614AFE9E9C82F8CD2E6035EEF84E5F16CBB690AC819B4B910EA8E81106F0ACE5 │ │ │ │ -CDFE77DAF69E4AFE72C43145A3ABCC40B6C5297487083F738C86422277AC2267 │ │ │ │ -51759F1B7F129E87DE16433B664AD0FB6D30424A11C70B52B591352BF653C8B0 │ │ │ │ -0840C224FBFEAA996A6BE1D69414DD778C2EF56A63B64D59BA412EC3E4000831 │ │ │ │ -73361FB9813F9A7C74BA3A50D331B07B61492E5D75F0861B530587269B3ADC90 │ │ │ │ -EA1DF586AC4BC57C3230893EFE953A6E76950ABA895FAC711D3BD330ABC6846A │ │ │ │ -C91F6ABF3410B913DFE5C8266020CEE5C7A9EDA2E7D9BCA797DC486443C7BA7C │ │ │ │ -7E03439A40927FA3251B6D417E5653E7799E9D6F04149C34096E2CA9B1F9B1EC │ │ │ │ -38958A2521B4A657A8B9F16E1FD66C7E345A10D7AA0241559503D214AC6507A4 │ │ │ │ -CBDE8617AA7ED136577734428594487F3565BF45FA196375759E2FE23C26EC8A │ │ │ │ -3310A36917A5E2F260EAB31030F8E570303D36B833626938F56939849DFA1F3F │ │ │ │ -66D0A317BB6364427F1512AAB380B555611C76345C02C3A6FBF78590331D5ECA │ │ │ │ -029DEFB722F6AB05327C2A31AB7BD6ED0F0386E6F45C1278048D22B90B074CCB │ │ │ │ -2BBEBCC1927C97EC532E651CAF0058AFE8FC08F00F0216D5DD9830C294FF76DA │ │ │ │ -426A073B3A3AEEFBDEE71C5182186311607ECDBD1F1AF4C5E79748CD01445C8D │ │ │ │ -25DD49490C8A6810065908222C8D0AC9F83AFBEE7115023E2D2615A170A5D40A │ │ │ │ -AD49BDF59A59187B6434F83E68EED22EF4EFDBADED6F1559AC779E0377FE7375 │ │ │ │ -D7060584FE74B1859D0FD98772253A712B17FFBB467840C484F5EF82C5677ADB │ │ │ │ -EDF159A456A526B8B9F6E8FC7608DFD47B0F09E26118F79CBE53B6C4E32BACAB │ │ │ │ -D62AFD4AA527CC4B587BB41A17A9BCE106A8C592BC9B73422B712C466C284A17 │ │ │ │ -E8D0C1E01D43C739FB1C083AD2714F78AC785B0C09AA7E67417A73510E00F2FE │ │ │ │ -E3D3EBF626A2F3A20A386E3F98D1285F4A2A332FC609CD191F01F128627B3505 │ │ │ │ -0AC2387DC0AD1B950490EBB5045F22BEC54955402CE2D267B6754E7C32BE84E8 │ │ │ │ -E6B63E3D3EAEE979442D167AEF69C27B22A8E887A2510C3A168D95D285CF7515 │ │ │ │ -011C921679B2F386575826A3F2071D015EEB78F02A4F94D4E5F07873623200F8 │ │ │ │ -7DF95BA0DC6B6D31DECC925BEA1E6A7C52FE685800EC33CBAE830F1AE5454DFA │ │ │ │ -913B8F457D7E2D3DFF019869E3301EEEC64A38295DE6B588E776922B32362382 │ │ │ │ -D1CF3D058613C8A96E6994D3EC23E8B71EC6E718383B20BB6C22DB6F93FA559F │ │ │ │ -3449CA84EB33B25C8BE0DFD1C29DC4FBD7AFBDC96C12162CAAB2C5E354B0FB10 │ │ │ │ -4BF8CC3610875ABD5111D09F2F847822118972214EDEB9EE34BAFE45E7AC15C5 │ │ │ │ -CA63EC4A3CEEA505A5EDD88A59BB67C71C3E026DFFE177F99BC69E6635545D03 │ │ │ │ -77A634F98230EF64381EC67CA519D4B9770EFA844789E21970F89D5FFC5DEAA8 │ │ │ │ -DC008EBA09306967ED090FF91B002FA6120C2B461A87AA32EFB003C5578D8EEF │ │ │ │ - │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ +AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ +E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ +46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ +FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ +389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ +7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ +2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ +C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ +B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ +AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ +E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ +F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ +0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ +2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ +29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ +CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ +6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ +5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ +36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0DD96AB602D004DCFE000A0 │ │ │ │ +ABE41BAB8AB7D50BD32BFD6F1AA3B60B09B9BE4E273EDD2DDCB21A98A760D17D │ │ │ │ +0A5C9303AFE63CF80A93E60C72A0576FAADEECBE2DE91892D210EB0AD1889C04 │ │ │ │ +C7530652584E775B4ED19CFB4B8DBCCC57A9FA9E4DDC8A1E5A1D3BE9E93407A6 │ │ │ │ +2C237ACE27F4EDA330EE952EDCBE91683AA98A29197735006666C96A2CE7C787 │ │ │ │ +BBA5A57C4DBF6FAA5B38AF226B5D9A65FAD84650AC0C3DB29C30602699F81E01 │ │ │ │ +0BAF8F1CE44A03C680121B77A1703C638187675D6C22C49F9902475E6CE9C732 │ │ │ │ +48ED028CC92EA542EF189CC9CA1C384E3387793057615D0A2BF040CC90B275B9 │ │ │ │ +F70A5310874DC2E0A360373E7BCAC88250FBC8989C7D18DA8274C06F02FCF31C │ │ │ │ +2B3868CBAF083DAC2FB159DE368261842DB7C9EA1A86B17617C861A48FBA8FF9 │ │ │ │ +D184CB026F4A418C0955347612F94C039B1536A76CB182A591DD7C02D509CF16 │ │ │ │ +8B9E46502ABF5DE31F5DFBD19C7417A2AF7AF13F0D5FF837C94CE56F07B96337 │ │ │ │ +0ED215252346FAEB54B5F3ABE29709B7ECB9FBD23A4AD397E6ABA6938F1BBF33 │ │ │ │ +1D5460D9414F0B8725DA832744525C13E3FD9C8DB33FBEE12F9C4969988402C8 │ │ │ │ +96AF916364CC2DF17EDBA622FC0A5D0013418E29F912FFA06F8D7E31ECAB0B08 │ │ │ │ +C4D2D8EE537CC768FC9038DD6D86D33642C6E812E941F157FC6917AF19C2B99A │ │ │ │ +5BF10B9A7ECF711BBB6F33C8C3DAD778153122593F36ABDDC0E97A602B045DE6 │ │ │ │ +19BD82D877DDA960AB11EF48C7F75A28D0D731D4A5DBC98283087267CD1A470D │ │ │ │ +537E949DA5EECF097B099547995BE066A941CED683B5748962AD2B02C21636C0 │ │ │ │ +2EAFA33CA0CB3BF8A95703F015A210D918865B9BEA2890DCFB68BC3719C305EC │ │ │ │ +315EC8727BF9A93632AB9E3090B100C022EE1396CD329B37547F26A7DCE52BD7 │ │ │ │ +F91B7388DEC34F4A0C6D46CD7CA6ACC00C5C4C71E47C6AD96496B3CBF531F342 │ │ │ │ +A740EE6B99BD70AD490DFA700772A0697EC6561CE88A0113E4DC3B21F372D810 │ │ │ │ +DFF2C3F6EDF3E917BF2664EEFC9AD292DD6CC36853CF936018D43FDB28D5B001 │ │ │ │ +7D1C805F958F13FD221377ABDD69D102E8CC1DAB2E011EE16CF6DB9D195BA702 │ │ │ │ +5A8738FABF989B0351282D0E5121182DFC52169782A5F3DD5D820411BEF909DE │ │ │ │ +04D963E6FDA76F88508C4E91DDAAA1748F396A1D380D8CA429673AF27C164434 │ │ │ │ +771781B39565D3EE50F3CF03EF12908B13A6C11C9AB7631B32125828B13050BA │ │ │ │ +041A93B97AC32D4A1E28C5FA98CDEE998B5F97823D6291D01E3611A16854F1FE │ │ │ │ +69B9D6D2AE3E56D012B7BC3E582FB4C23188A5E365E65EB1F804A706AF73A2F8 │ │ │ │ +9804808EF71F0982B14133BF9A27D6F2E719BDB751022B1B052722933948904E │ │ │ │ +3582E363478DCDA115205A0FDE39DF71FEAEEB104419C35A6B0678C19616C6D9 │ │ │ │ +A892DC2F4257069AF096C80C099CD13024DF3995F28C694E00D1F08B43D4450C │ │ │ │ +D18F5C925CFD2D124E74FC64BBAA0DE32A79E4A4507B5B5DD834C67160CDA110 │ │ │ │ +EF0061DD27E8864F4250A92BBEFD75C784BB98F4FA789A8236C2A21E4E61ABD0 │ │ │ │ +C6B4D13B3C31AC8E55FA34BEC7C308C61FB0280382EC6AFD63D959678D42D2B3 │ │ │ │ +4134F6236A0808D9302B4E3C6F81FC6973B4833602750CCB5DE36AEA23ED6BD4 │ │ │ │ +5B72DF0DD7B81C871CAA6EC190748CD8C4B998D576E5D340ACAC0617DDBE461C │ │ │ │ +8E82E809D11A01D265D039F4315066832E27E08A6F067E129E45FBF533F761BB │ │ │ │ +EC3C071209BECE7D14D3184B2E6BFD65717A5A7C08F3776B20C513649488C1CF │ │ │ │ +03333805B249D1034FB0AE2D7D2A23324EE27AEDB68F8E329A8052FE58D7C0D9 │ │ │ │ +A40A0CDC79F2085C4F39A7DFDB625C8F071E2A32CF6215DD3E060A9BABF7A3AA │ │ │ │ +C57DA0C0571C5D6EEAA975D1BB9C99F8EA4958360E43E8C60080B03DC4435550 │ │ │ │ +E6048DDD35DF3E5DA69669F266FFD7B44649A68025270DC84258E329F6E6907C │ │ │ │ +BCFF900D715D0C7EC43C5E7180CAD6427BA4FD41AAD6531A5C06B0EC26DDA71F │ │ │ │ +4A9DA50DE919E79226F6DDF7C1BA478936AA86CEAD93072CC2960E98C45A1A0C │ │ │ │ +60CF8A26E4278AB4F9E28FA6532648196CC455607D6BCD00F60675DE8CC02C8C │ │ │ │ +9BE5D5B714731814D5B008EE236563D77AC6895E0158877C95797E07C02AFEBE │ │ │ │ +CC9FE97D5E103F7DB0A834E9A7A75893EC66340B0E4C6F0EEDEF43415BF9FCF4 │ │ │ │ +47340CBEA4DCFBA0D028EB2149FFBBDB3322AE5F6FD20242526EDC55E476D983 │ │ │ │ +DC │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -4112,16 +4118,16 @@ │ │ │ │ 2[25 47[58 11[{}6 90.9091 /CMMI10 rf /Fd 149[25 72[91 │ │ │ │ 29[45 2[71{}4 90.9091 /CMSY10 rf /Fe 133[50 59 2[59 62 │ │ │ │ 44 44 46 1[62 56 62 93 31 2[31 62 2[51 62 2[54 11[86 │ │ │ │ 4[77 6[42 20[56 56 56 56 2[31 46[{}25 99.6264 /CMBX12 │ │ │ │ rf /Ff 179[62 62 8[62 66[{}3 119.552 /CMTT12 rf /Fg 141[38 │ │ │ │ 2[46 51 1[23 42 1[28 46 42 1[42 1[42 1[46 12[65 1[66 │ │ │ │ 11[59 62 69 2[68 6[28 58[{}18 90.9091 /CMTI10 rf /Fh │ │ │ │ -134[48 3[51 2[36 3[51 12[45 22[47 15[25 3[45 3[45 1[45 │ │ │ │ -3[25 44[{}11 90.9091 /CMSL10 rf │ │ │ │ +134[48 3[51 2[36 3[51 12[45 22[47 15[25 3[45 3[45 45 │ │ │ │ +45 3[25 44[{}12 90.9091 /CMSL10 rf │ │ │ │ %DVIPSBitmapFont: Fi tcrm1095 10.95 1 │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ /Dotaccent/cedilla/ogonek/quotesinglbase.ts1 4{/.notdef}repeat │ │ │ │ /quotedblbase.ts1/.notdef/.notdef/twelveudash/threequartersemdash │ │ │ │ /afii61664.cap/arrowleft/arrowright/tieaccentlowercase/tieaccentcapital │ │ │ │ /tieaccentlowercase.new/tieaccentcapital.new/.notdef/afii61664.asc/uni2422 3 │ │ │ │ {/.notdef}repeat/dollar/.notdef/.notdef/quotesingle/.notdef/.notdef │ │ │ │ @@ -4230,17 +4236,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 1182 4 v │ │ │ │ -1364 w Fk(BKL)29 b Fh(:)i Fg(DRAFT)f Fh(Jan)m(uary)g(6,)h(2026)p │ │ │ │ -2719 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 1159 4 v │ │ │ │ +1341 w Fk(BKL)29 b Fh(:)i Fg(DRAFT)f Fh(Jan)m(uary)g(10,)i(2026)p │ │ │ │ +2741 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 │ │ │ │ @@ -4285,17 +4291,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 1182 4 v 1363 100 a Fk(BKL)30 │ │ │ │ -b Fh(:)g Fg(DRAFT)121 b Fh(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2671 100 V 1182 w Fl(3)0 399 y Fe(1.3.1)112 b(Initializer)38 │ │ │ │ +TeXDict begin 3 2 bop 91 100 1159 4 v 1340 100 a Fk(BKL)30 │ │ │ │ +b Fh(:)g Fg(DRAFT)122 b Fh(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2694 100 V 1159 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 │ │ │ │ @@ -4359,17 +4365,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 1182 4 v │ │ │ │ -1364 w Fk(BKL)29 b Fh(:)i Fg(DRAFT)f Fh(Jan)m(uary)g(6,)h(2026)p │ │ │ │ -2719 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 1159 4 v │ │ │ │ +1341 w Fk(BKL)29 b Fh(:)i Fg(DRAFT)f Fh(Jan)m(uary)g(10,)i(2026)p │ │ │ │ +2741 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 │ │ │ │ @@ -4437,17 +4443,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 1182 4 v 1363 100 a Fk(BKL)30 │ │ │ │ -b Fh(:)g Fg(DRAFT)121 b Fh(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2671 100 V 1182 w Fl(5)111 399 y(3.)46 b Fk(float)h(BKL_eval)e(\()j │ │ │ │ +TeXDict begin 5 4 bop 91 100 1159 4 v 1340 100 a Fk(BKL)30 │ │ │ │ +b Fh(:)g Fg(DRAFT)122 b Fh(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2694 100 V 1159 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 January 6, 2026 │ │ │ │ │ + 2 BKL : DRAFT January 10, 2026 │ │ │ │ │ • 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 January 6, 2026 3 │ │ │ │ │ + BKL : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 4 BKL : DRAFT January 10, 2026 │ │ │ │ │ • 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 January 6, 2026 5 │ │ │ │ │ + BKL : DRAFT January 10, 2026 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 2026.01.06:2033 │ │ │ │ +%DVIPSSource: TeX output 2026.01.10:0513 │ │ │ │ %%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 │ │ │ │ @@ -1425,14 +1425,15 @@ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ /UnderlineThickness 50 def │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ +dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ dup 54 /six put │ │ │ │ dup 58 /colon put │ │ │ │ dup 74 /J put │ │ │ │ dup 97 /a put │ │ │ │ dup 110 /n put │ │ │ │ dup 114 /r put │ │ │ │ @@ -1622,79 +1623,84 @@ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB88440048702D1F │ │ │ │ -77994EE04EC3B4531D6E1888C86A8F0DA6CF1F056F16AB0DD76C862830F89DA4 │ │ │ │ -28923B3AA543E0D6E41D3BD283E600BC11F889315EE92C675C109C81065ED1BC │ │ │ │ -82A5583D1B723D50051B0557A367887F5B263014C6E77288B4883C50889473D3 │ │ │ │ -3787BAD4BEB88BD1353AFA5B73E61814819537E7FF09F53EF94792BB3DD36ED0 │ │ │ │ -002D0E7A6CDAB85A9C17AF5664BCB5A71663B861880F3ECCABC8E7A2FC81A4CC │ │ │ │ -AE7A87503FDC1CE0077BA51ECC7B43B60793FED8E9AAD5BBD03ADD6183DCD26D │ │ │ │ -24A74163611C05562437644EF9B8889FD4F9D311911204FEFD35237486F2D2D0 │ │ │ │ -B6783A03BF12EA6D19D6D0F87E4D08515F12F9CBF1961CAA71E0D69FE3C4C4D2 │ │ │ │ -7C7FB64ED24F8684C8F00C2BEDEA53EA390CDC0B5BEBD7DD982580B2EA1F1F89 │ │ │ │ -CFED5916630DC2BA32BB9180277E1ABC339B3B7DE086717BD93F7FF3681BA5B3 │ │ │ │ -FCF671C4B293C2DE4A322F0AA3323A4934444C69F23EF90120B8755482757759 │ │ │ │ -C457A435FB8BB4922BD92C5F3D9555D978275C510183E29DFF2FCE4ABBFC18DE │ │ │ │ -76CAD3B486BA12047DD808CD4D521A0FD368E4AE79DE262630983A5D6F0B679D │ │ │ │ -2F005306393C520E1B6987302D029939D94B0178DB06211C7F3B123A41E6E7BA │ │ │ │ -87164737110707A3ED3983895F3FBC815EF370F54C808ED93D910937BCA3D8AF │ │ │ │ -7CBF80DC180CDA54059DB76710B4FCD4139D5B7DA7DB1A0D0AF86AD2453D3691 │ │ │ │ -0BA5BAD40FF28BB4235FCD40FC87C2B888E67928D9B0ACA5692149373DBB93BF │ │ │ │ -6520DDD36A9BFE4D415CA67A5E04F1D48BDB28C69676273ED842CF7980E8E17C │ │ │ │ -B88563F407E340AFAE8F51AABCF8A39521BCEE1EC8396D75E124B24B4675909F │ │ │ │ -E246F87DA08584A3173AEFF153ECDF610543FA7474D125A31ADD6285A49222B5 │ │ │ │ -177066EA395BFA4B1114C7FCF7712DA772A21C99E64F4E1181E69CAF98137FA2 │ │ │ │ -76CF74F682B8CD7BA6EEA79B70FA8A76809634517F8415B6F21A5A7D6099B5E8 │ │ │ │ -EAB356BBC4FB68C72B8C61DDCE8EAB1A53B9D6BAD78584B307EFF57CEAE74884 │ │ │ │ -35987BF89E9E60E962D22FA5612F2DB5EB840499B7CC11A34BA5DEE30D277540 │ │ │ │ -39B8211D69B448ADE95B723F8369A631DE6DD75703AFD7485FB7FFF41A60CBE4 │ │ │ │ -813B8FEA120662355773830EF85015E7FFD609B2CEE52CB5FFE9C35B6BEEE4A4 │ │ │ │ -A66719E31CE1523FDD7771FB1E881A32A7DB7D92C2326DF4B93241C14ABFCCD6 │ │ │ │ -8E5BCAC61E800E6B1B4687ADA4CBF41EC0AFC26D021D1772CBDCD0516DF5EBE1 │ │ │ │ -37FD2AC5ABB8D774B5735940F1F6866D044FD8CE74444FAA5D0202C11E39CC10 │ │ │ │ -213731F41F704450E1D0565013BF22188442CE0FC256190A9F92F0C802AA2660 │ │ │ │ -614AFE9E9C82F8CD2E6035EEF84E5F16CBB690AC819B4B910EA8E81106F0ACE5 │ │ │ │ -CDFE77DAF69E4AFE72C43145A3ABCC40B6C5297487083F738C86422277AC2267 │ │ │ │ -51759F1B7F129E87DE16433B664AD0FB6D30424A11C70B52B591352BF653C8B0 │ │ │ │ -0840C224FBFEAA996A6BE1D69414DD778C2EF56A63B64D59BA412EC3E4000831 │ │ │ │ -73361FB9813F9A7C74BA3A50D331B07B61492E5D75F0861B530587269B3ADC90 │ │ │ │ -EA1DF586AC4BC57C3230893EFE953A6E76950ABA895FAC711D3BD330ABC6846A │ │ │ │ -C91F6ABF3410B913DFE5C8266020CEE5C7A9EDA2E7D9BCA797DC486443C7BA7C │ │ │ │ -7E03439A40927FA3251B6D417E5653E7799E9D6F04149C34096E2CA9B1F9B1EC │ │ │ │ -38958A2521B4A657A8B9F16E1FD66C7E345A10D7AA0241559503D214AC6507A4 │ │ │ │ -CBDE8617AA7ED136577734428594487F3565BF45FA196375759E2FE23C26EC8A │ │ │ │ -3310A36917A5E2F260EAB31030F8E570303D36B833626938F56939849DFA1F3F │ │ │ │ -66D0A317BB6364427F1512AAB380B555611C76345C02C3A6FBF78590331D5ECA │ │ │ │ -029DEFB722F6AB05327C2A31AB7BD6ED0F0386E6F45C1278048D22B90B074CCB │ │ │ │ -2BBEBCC1927C97EC532E651CAF0058AFE8FC08F00F0216D5DD9830C294FF76DA │ │ │ │ -426A073B3A3AEEFBDEE71C5182186311607ECDBD1F1AF4C5E79748CD01445C8D │ │ │ │ -25DD49490C8A6810065908222C8D0AC9F83AFBEE7115023E2D2615A170A5D40A │ │ │ │ -AD49BDF59A59187B6434F83E68EED22EF4EFDBADED6F1559AC779E0377FE7375 │ │ │ │ -D7060584FE74B1859D0FD98772253A712B17FFBB467840C484F5EF82C5677ADB │ │ │ │ -EDF159A456A526B8B9F6E8FC7608DFD47B0F09E26118F79CBE53B6C4E32BACAB │ │ │ │ -D62AFD4AA527CC4B587BB41A17A9BCE106A8C592BC9B73422B712C466C284A17 │ │ │ │ -E8D0C1E01D43C739FB1C083AD2714F78AC785B0C09AA7E67417A73510E00F2FE │ │ │ │ -E3D3EBF626A2F3A20A386E3F98D1285F4A2A332FC609CD191F01F128627B3505 │ │ │ │ -0AC2387DC0AD1B950490EBB5045F22BEC54955402CE2D267B6754E7C32BE84E8 │ │ │ │ -E6B63E3D3EAEE979442D167AEF69C27B22A8E887A2510C3A168D95D285CF7515 │ │ │ │ -011C921679B2F386575826A3F2071D015EEB78F02A4F94D4E5F07873623200F8 │ │ │ │ -7DF95BA0DC6B6D31DECC925BEA1E6A7C52FE685800EC33CBAE830F1AE5454DFA │ │ │ │ -913B8F457D7E2D3DFF019869E3301EEEC64A38295DE6B588E776922B32362382 │ │ │ │ -D1CF3D058613C8A96E6994D3EC23E8B71EC6E718383B20BB6C22DB6F93FA559F │ │ │ │ -3449CA84EB33B25C8BE0DFD1C29DC4FBD7AFBDC96C12162CAAB2C5E354B0FB10 │ │ │ │ -4BF8CC3610875ABD5111D09F2F847822118972214EDEB9EE34BAFE45E7AC15C5 │ │ │ │ -CA63EC4A3CEEA505A5EDD88A59BB67C71C3E026DFFE177F99BC69E6635545D03 │ │ │ │ -77A634F98230EF64381EC67CA519D4B9770EFA844789E21970F89D5FFC5DEAA8 │ │ │ │ -DC008EBA09306967ED090FF91B002FA6120C2B461A87AA32EFB003C5578D8EEF │ │ │ │ - │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ +AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ +E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ +46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ +FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ +389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ +7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ +2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ +C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ +B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ +AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ +E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ +F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ +0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ +2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ +29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ +CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ +6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ +5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ +36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0DD96AB602D004DCFE000A0 │ │ │ │ +ABE41BAB8AB7D50BD32BFD6F1AA3B60B09B9BE4E273EDD2DDCB21A98A760D17D │ │ │ │ +0A5C9303AFE63CF80A93E60C72A0576FAADEECBE2DE91892D210EB0AD1889C04 │ │ │ │ +C7530652584E775B4ED19CFB4B8DBCCC57A9FA9E4DDC8A1E5A1D3BE9E93407A6 │ │ │ │ +2C237ACE27F4EDA330EE952EDCBE91683AA98A29197735006666C96A2CE7C787 │ │ │ │ +BBA5A57C4DBF6FAA5B38AF226B5D9A65FAD84650AC0C3DB29C30602699F81E01 │ │ │ │ +0BAF8F1CE44A03C680121B77A1703C638187675D6C22C49F9902475E6CE9C732 │ │ │ │ +48ED028CC92EA542EF189CC9CA1C384E3387793057615D0A2BF040CC90B275B9 │ │ │ │ +F70A5310874DC2E0A360373E7BCAC88250FBC8989C7D18DA8274C06F02FCF31C │ │ │ │ +2B3868CBAF083DAC2FB159DE368261842DB7C9EA1A86B17617C861A48FBA8FF9 │ │ │ │ +D184CB026F4A418C0955347612F94C039B1536A76CB182A591DD7C02D509CF16 │ │ │ │ +8B9E46502ABF5DE31F5DFBD19C7417A2AF7AF13F0D5FF837C94CE56F07B96337 │ │ │ │ +0ED215252346FAEB54B5F3ABE29709B7ECB9FBD23A4AD397E6ABA6938F1BBF33 │ │ │ │ +1D5460D9414F0B8725DA832744525C13E3FD9C8DB33FBEE12F9C4969988402C8 │ │ │ │ +96AF916364CC2DF17EDBA622FC0A5D0013418E29F912FFA06F8D7E31ECAB0B08 │ │ │ │ +C4D2D8EE537CC768FC9038DD6D86D33642C6E812E941F157FC6917AF19C2B99A │ │ │ │ +5BF10B9A7ECF711BBB6F33C8C3DAD778153122593F36ABDDC0E97A602B045DE6 │ │ │ │ +19BD82D877DDA960AB11EF48C7F75A28D0D731D4A5DBC98283087267CD1A470D │ │ │ │ +537E949DA5EECF097B099547995BE066A941CED683B5748962AD2B02C21636C0 │ │ │ │ +2EAFA33CA0CB3BF8A95703F015A210D918865B9BEA2890DCFB68BC3719C305EC │ │ │ │ +315EC8727BF9A93632AB9E3090B100C022EE1396CD329B37547F26A7DCE52BD7 │ │ │ │ +F91B7388DEC34F4A0C6D46CD7CA6ACC00C5C4C71E47C6AD96496B3CBF531F342 │ │ │ │ +A740EE6B99BD70AD490DFA700772A0697EC6561CE88A0113E4DC3B21F372D810 │ │ │ │ +DFF2C3F6EDF3E917BF2664EEFC9AD292DD6CC36853CF936018D43FDB28D5B001 │ │ │ │ +7D1C805F958F13FD221377ABDD69D102E8CC1DAB2E011EE16CF6DB9D195BA702 │ │ │ │ +5A8738FABF989B0351282D0E5121182DFC52169782A5F3DD5D820411BEF909DE │ │ │ │ +04D963E6FDA76F88508C4E91DDAAA1748F396A1D380D8CA429673AF27C164434 │ │ │ │ +771781B39565D3EE50F3CF03EF12908B13A6C11C9AB7631B32125828B13050BA │ │ │ │ +041A93B97AC32D4A1E28C5FA98CDEE998B5F97823D6291D01E3611A16854F1FE │ │ │ │ +69B9D6D2AE3E56D012B7BC3E582FB4C23188A5E365E65EB1F804A706AF73A2F8 │ │ │ │ +9804808EF71F0982B14133BF9A27D6F2E719BDB751022B1B052722933948904E │ │ │ │ +3582E363478DCDA115205A0FDE39DF71FEAEEB104419C35A6B0678C19616C6D9 │ │ │ │ +A892DC2F4257069AF096C80C099CD13024DF3995F28C694E00D1F08B43D4450C │ │ │ │ +D18F5C925CFD2D124E74FC64BBAA0DE32A79E4A4507B5B5DD834C67160CDA110 │ │ │ │ +EF0061DD27E8864F4250A92BBEFD75C784BB98F4FA789A8236C2A21E4E61ABD0 │ │ │ │ +C6B4D13B3C31AC8E55FA34BEC7C308C61FB0280382EC6AFD63D959678D42D2B3 │ │ │ │ +4134F6236A0808D9302B4E3C6F81FC6973B4833602750CCB5DE36AEA23ED6BD4 │ │ │ │ +5B72DF0DD7B81C871CAA6EC190748CD8C4B998D576E5D340ACAC0617DDBE461C │ │ │ │ +8E82E809D11A01D265D039F4315066832E27E08A6F067E129E45FBF533F761BB │ │ │ │ +EC3C071209BECE7D14D3184B2E6BFD65717A5A7C08F3776B20C513649488C1CF │ │ │ │ +03333805B249D1034FB0AE2D7D2A23324EE27AEDB68F8E329A8052FE58D7C0D9 │ │ │ │ +A40A0CDC79F2085C4F39A7DFDB625C8F071E2A32CF6215DD3E060A9BABF7A3AA │ │ │ │ +C57DA0C0571C5D6EEAA975D1BB9C99F8EA4958360E43E8C60080B03DC4435550 │ │ │ │ +E6048DDD35DF3E5DA69669F266FFD7B44649A68025270DC84258E329F6E6907C │ │ │ │ +BCFF900D715D0C7EC43C5E7180CAD6427BA4FD41AAD6531A5C06B0EC26DDA71F │ │ │ │ +4A9DA50DE919E79226F6DDF7C1BA478936AA86CEAD93072CC2960E98C45A1A0C │ │ │ │ +60CF8A26E4278AB4F9E28FA6532648196CC455607D6BCD00F60675DE8CC02C8C │ │ │ │ +9BE5D5B714731814D5B008EE236563D77AC6895E0158877C95797E07C02AFEBE │ │ │ │ +CC9FE97D5E103F7DB0A834E9A7A75893EC66340B0E4C6F0EEDEF43415BF9FCF4 │ │ │ │ +47340CBEA4DCFBA0D028EB2149FFBBDB3322AE5F6FD20242526EDC55E476D983 │ │ │ │ +DC │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -4739,15 +4745,15 @@ │ │ │ │ /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 3[46 │ │ │ │ -12[42 22[43 15[23 3[42 3[42 1[42 3[23 44[{}11 83.022 │ │ │ │ +12[42 22[43 15[23 3[42 3[42 42 42 3[23 44[{}12 83.022 │ │ │ │ /CMSL10 rf /Ff 156[83 46 35[74 1[74 1[74 1[74 56[{}6 │ │ │ │ 83.022 /CMEX10 rf /Fg 192[45 63[{}1 83.022 /CMBX10 rf │ │ │ │ %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 │ │ │ │ @@ -4896,17 +4902,17 @@ │ │ │ │ y(Finding)27 b(the)g(Dulmage-Mendelsohn)g(decomp)r(osition)f(of)h(a)g │ │ │ │ (bipartite)g(graph)f(is)h(a)f(little)i(less)f(clear)f(cut.)37 │ │ │ │ b(When)28 b(the)0 5215 y(v)n(ertices)e(in)i(the)g(bipartite)g(graph)e │ │ │ │ (ha)n(v)n(e)h(unit)h(w)n(eigh)n(t,)f(the)h(pro)r(cess)e(is)i(straigh)n │ │ │ │ (tforw)n(ard.)125 5407 y Fh(\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 1249 4 v │ │ │ │ -1414 w Fl(BPG)26 b Fe(:)i Fk(DRAFT)f Fe(Jan)n(uary)f(6,)h(2026)p │ │ │ │ -2652 100 V 125 390 a Fh(\210)42 b Fm(Drop)27 b(an)g(alternating)g(lev)n │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fm(2)p 125 100 1228 4 v │ │ │ │ +1393 w Fl(BPG)26 b Fe(:)i Fk(DRAFT)f Fe(Jan)n(uary)f(10,)h(2026)p │ │ │ │ +2673 100 V 125 390 a Fh(\210)42 b Fm(Drop)27 b(an)g(alternating)g(lev)n │ │ │ │ (el)g(structure)g(from)g(exp)r(osed)g(no)r(des)h(in)f │ │ │ │ Fj(X)7 b Fm(.)125 564 y Fh(\210)42 b Fm(Drop)27 b(an)g(alternating)g │ │ │ │ (lev)n(el)g(structure)g(from)g(exp)r(osed)g(no)r(des)h(in)f │ │ │ │ Fj(Y)19 b Fm(.)125 738 y Fh(\210)42 b Fm(Based)24 b(on)h(the)g(t)n(w)n │ │ │ │ (o)g(previous)f(steps,)h(partition)g Fj(X)32 b Fm(in)n(to)25 │ │ │ │ b(three)g(pieces)g(and)g Fj(Y)44 b Fm(in)n(to)24 b(three)h(pieces)g │ │ │ │ (and)g(form)g(a)g(new)208 838 y(separator)g(from)i(the)h(pieces.)0 │ │ │ │ @@ -5026,17 +5032,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 1249 4 v 1414 100 a Fl(BPG)27 │ │ │ │ -b Fe(:)g Fk(DRAFT)111 b Fe(Jan)n(uary)25 b(6,)i(2026)p │ │ │ │ -2612 100 V 1249 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 1228 4 v 1393 100 a Fl(BPG)27 │ │ │ │ +b Fe(:)h Fk(DRAFT)110 b Fe(Jan)n(uary)25 b(10,)i(2026)p │ │ │ │ +2633 100 V 1228 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 │ │ │ │ @@ -5097,17 +5103,17 @@ │ │ │ │ 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 1249 4 v │ │ │ │ -1414 w Fl(BPG)26 b Fe(:)i Fk(DRAFT)f Fe(Jan)n(uary)f(6,)h(2026)p │ │ │ │ -2652 100 V 0 390 a Fb(1.2.2)112 b(Initializer)38 b(metho)s(ds)0 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fm(4)p 125 100 1228 4 v │ │ │ │ +1393 w Fl(BPG)26 b Fe(:)i Fk(DRAFT)f Fe(Jan)n(uary)f(10,)h(2026)p │ │ │ │ +2673 100 V 0 390 a Fb(1.2.2)112 b(Initializer)38 b(metho)s(ds)0 │ │ │ │ 562 y Fm(There)27 b(are)g(t)n(w)n(o)f(initializer)i(metho)r(ds.)101 │ │ │ │ 731 y(1.)42 b Fl(void)f(BPG_init)g(\()i(BPG)f(*bpg,)g(int)g(nX,)g(int)h │ │ │ │ (nY,)f(Graph)g(*graph)f(\))i(;)208 858 y Fm(This)23 b(metho)r(d)i │ │ │ │ (initializes)e(the)h Fl(BPG)f Fm(ob)5 b(ject)23 b(when)h(all)g(three)f │ │ │ │ (of)h(its)g(\014elds)g(are)f(giv)n(en)g(in)h(the)g(calling)f(sequence.) │ │ │ │ 35 b(The)208 958 y Fl(Graph)22 b Fm(ob)5 b(ject)25 b(has)f │ │ │ │ Fl(nX)42 b(+)i(nY)23 b Fm(v)n(ertices.)35 b(Note,)26 │ │ │ │ @@ -5191,17 +5197,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 1249 4 v 1414 100 a Fl(BPG)27 │ │ │ │ -b Fe(:)g Fk(DRAFT)111 b Fe(Jan)n(uary)25 b(6,)i(2026)p │ │ │ │ -2612 100 V 1249 w Fm(5)0 390 y Fb(1.2.5)112 b(Dulmage-Mendelsohn)42 │ │ │ │ +TeXDict begin 5 4 bop 83 100 1228 4 v 1393 100 a Fl(BPG)27 │ │ │ │ +b Fe(:)h Fk(DRAFT)110 b Fe(Jan)n(uary)25 b(10,)i(2026)p │ │ │ │ +2633 100 V 1228 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 │ │ │ │ @@ -5296,17 +5302,17 @@ │ │ │ │ 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 1249 4 v │ │ │ │ -1414 w Fl(BPG)26 b Fe(:)i Fk(DRAFT)f Fe(Jan)n(uary)f(6,)h(2026)p │ │ │ │ -2652 100 V 101 390 a Fm(3.)42 b Fl(int)g(BPG_readFromBina)o(ry)o(Fil)o │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fm(6)p 125 100 1228 4 v │ │ │ │ +1393 w Fl(BPG)26 b Fe(:)i Fk(DRAFT)f Fe(Jan)n(uary)f(10,)h(2026)p │ │ │ │ +2673 100 V 101 390 a Fm(3.)42 b Fl(int)g(BPG_readFromBina)o(ry)o(Fil)o │ │ │ │ (e)37 b(\()44 b(BPG)e(*bpg,)f(FILE)h(*fp)h(\))g(;)208 │ │ │ │ 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 │ │ │ │ @@ -5389,17 +5395,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 1249 4 v 1414 100 a Fl(BPG)27 │ │ │ │ -b Fe(:)g Fk(DRAFT)111 b Fe(Jan)n(uary)25 b(6,)i(2026)p │ │ │ │ -2612 100 V 1249 w Fm(7)307 390 y Fh(\210)42 b Fm(The)33 │ │ │ │ +TeXDict begin 7 6 bop 83 100 1228 4 v 1393 100 a Fl(BPG)27 │ │ │ │ +b Fe(:)h Fk(DRAFT)110 b Fe(Jan)n(uary)25 b(10,)i(2026)p │ │ │ │ +2633 100 V 1228 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 January 6, 2026 │ │ │ │ │ + 2 BPG : DRAFT January 10, 2026 │ │ │ │ │ • 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 January 6, 2026 3 │ │ │ │ │ + BPG : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 4 BPG : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 5 │ │ │ │ │ + BPG : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 6 BPG : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 7 │ │ │ │ │ + BPG : DRAFT January 10, 2026 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 2026.01.06:2033 │ │ │ │ +%DVIPSSource: TeX output 2026.01.10:0513 │ │ │ │ %%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 │ │ │ │ @@ -2516,14 +2516,15 @@ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ /UnderlineThickness 50 def │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ +dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ dup 54 /six put │ │ │ │ dup 58 /colon put │ │ │ │ dup 74 /J put │ │ │ │ dup 97 /a put │ │ │ │ dup 110 /n put │ │ │ │ dup 114 /r put │ │ │ │ @@ -2713,79 +2714,84 @@ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB88440048702D1F │ │ │ │ -77994EE04EC3B4531D6E1888C86A8F0DA6CF1F056F16AB0DD76C862830F89DA4 │ │ │ │ -28923B3AA543E0D6E41D3BD283E600BC11F889315EE92C675C109C81065ED1BC │ │ │ │ -82A5583D1B723D50051B0557A367887F5B263014C6E77288B4883C50889473D3 │ │ │ │ -3787BAD4BEB88BD1353AFA5B73E61814819537E7FF09F53EF94792BB3DD36ED0 │ │ │ │ -002D0E7A6CDAB85A9C17AF5664BCB5A71663B861880F3ECCABC8E7A2FC81A4CC │ │ │ │ -AE7A87503FDC1CE0077BA51ECC7B43B60793FED8E9AAD5BBD03ADD6183DCD26D │ │ │ │ -24A74163611C05562437644EF9B8889FD4F9D311911204FEFD35237486F2D2D0 │ │ │ │ -B6783A03BF12EA6D19D6D0F87E4D08515F12F9CBF1961CAA71E0D69FE3C4C4D2 │ │ │ │ -7C7FB64ED24F8684C8F00C2BEDEA53EA390CDC0B5BEBD7DD982580B2EA1F1F89 │ │ │ │ -CFED5916630DC2BA32BB9180277E1ABC339B3B7DE086717BD93F7FF3681BA5B3 │ │ │ │ -FCF671C4B293C2DE4A322F0AA3323A4934444C69F23EF90120B8755482757759 │ │ │ │ -C457A435FB8BB4922BD92C5F3D9555D978275C510183E29DFF2FCE4ABBFC18DE │ │ │ │ -76CAD3B486BA12047DD808CD4D521A0FD368E4AE79DE262630983A5D6F0B679D │ │ │ │ -2F005306393C520E1B6987302D029939D94B0178DB06211C7F3B123A41E6E7BA │ │ │ │ -87164737110707A3ED3983895F3FBC815EF370F54C808ED93D910937BCA3D8AF │ │ │ │ -7CBF80DC180CDA54059DB76710B4FCD4139D5B7DA7DB1A0D0AF86AD2453D3691 │ │ │ │ -0BA5BAD40FF28BB4235FCD40FC87C2B888E67928D9B0ACA5692149373DBB93BF │ │ │ │ -6520DDD36A9BFE4D415CA67A5E04F1D48BDB28C69676273ED842CF7980E8E17C │ │ │ │ -B88563F407E340AFAE8F51AABCF8A39521BCEE1EC8396D75E124B24B4675909F │ │ │ │ -E246F87DA08584A3173AEFF153ECDF610543FA7474D125A31ADD6285A49222B5 │ │ │ │ -177066EA395BFA4B1114C7FCF7712DA772A21C99E64F4E1181E69CAF98137FA2 │ │ │ │ -76CF74F682B8CD7BA6EEA79B70FA8A76809634517F8415B6F21A5A7D6099B5E8 │ │ │ │ -EAB356BBC4FB68C72B8C61DDCE8EAB1A53B9D6BAD78584B307EFF57CEAE74884 │ │ │ │ -35987BF89E9E60E962D22FA5612F2DB5EB840499B7CC11A34BA5DEE30D277540 │ │ │ │ -39B8211D69B448ADE95B723F8369A631DE6DD75703AFD7485FB7FFF41A60CBE4 │ │ │ │ -813B8FEA120662355773830EF85015E7FFD609B2CEE52CB5FFE9C35B6BEEE4A4 │ │ │ │ -A66719E31CE1523FDD7771FB1E881A32A7DB7D92C2326DF4B93241C14ABFCCD6 │ │ │ │ -8E5BCAC61E800E6B1B4687ADA4CBF41EC0AFC26D021D1772CBDCD0516DF5EBE1 │ │ │ │ -37FD2AC5ABB8D774B5735940F1F6866D044FD8CE74444FAA5D0202C11E39CC10 │ │ │ │ -213731F41F704450E1D0565013BF22188442CE0FC256190A9F92F0C802AA2660 │ │ │ │ -614AFE9E9C82F8CD2E6035EEF84E5F16CBB690AC819B4B910EA8E81106F0ACE5 │ │ │ │ -CDFE77DAF69E4AFE72C43145A3ABCC40B6C5297487083F738C86422277AC2267 │ │ │ │ -51759F1B7F129E87DE16433B664AD0FB6D30424A11C70B52B591352BF653C8B0 │ │ │ │ -0840C224FBFEAA996A6BE1D69414DD778C2EF56A63B64D59BA412EC3E4000831 │ │ │ │ -73361FB9813F9A7C74BA3A50D331B07B61492E5D75F0861B530587269B3ADC90 │ │ │ │ -EA1DF586AC4BC57C3230893EFE953A6E76950ABA895FAC711D3BD330ABC6846A │ │ │ │ -C91F6ABF3410B913DFE5C8266020CEE5C7A9EDA2E7D9BCA797DC486443C7BA7C │ │ │ │ -7E03439A40927FA3251B6D417E5653E7799E9D6F04149C34096E2CA9B1F9B1EC │ │ │ │ -38958A2521B4A657A8B9F16E1FD66C7E345A10D7AA0241559503D214AC6507A4 │ │ │ │ -CBDE8617AA7ED136577734428594487F3565BF45FA196375759E2FE23C26EC8A │ │ │ │ -3310A36917A5E2F260EAB31030F8E570303D36B833626938F56939849DFA1F3F │ │ │ │ -66D0A317BB6364427F1512AAB380B555611C76345C02C3A6FBF78590331D5ECA │ │ │ │ -029DEFB722F6AB05327C2A31AB7BD6ED0F0386E6F45C1278048D22B90B074CCB │ │ │ │ -2BBEBCC1927C97EC532E651CAF0058AFE8FC08F00F0216D5DD9830C294FF76DA │ │ │ │ -426A073B3A3AEEFBDEE71C5182186311607ECDBD1F1AF4C5E79748CD01445C8D │ │ │ │ -25DD49490C8A6810065908222C8D0AC9F83AFBEE7115023E2D2615A170A5D40A │ │ │ │ -AD49BDF59A59187B6434F83E68EED22EF4EFDBADED6F1559AC779E0377FE7375 │ │ │ │ -D7060584FE74B1859D0FD98772253A712B17FFBB467840C484F5EF82C5677ADB │ │ │ │ -EDF159A456A526B8B9F6E8FC7608DFD47B0F09E26118F79CBE53B6C4E32BACAB │ │ │ │ -D62AFD4AA527CC4B587BB41A17A9BCE106A8C592BC9B73422B712C466C284A17 │ │ │ │ -E8D0C1E01D43C739FB1C083AD2714F78AC785B0C09AA7E67417A73510E00F2FE │ │ │ │ -E3D3EBF626A2F3A20A386E3F98D1285F4A2A332FC609CD191F01F128627B3505 │ │ │ │ -0AC2387DC0AD1B950490EBB5045F22BEC54955402CE2D267B6754E7C32BE84E8 │ │ │ │ -E6B63E3D3EAEE979442D167AEF69C27B22A8E887A2510C3A168D95D285CF7515 │ │ │ │ -011C921679B2F386575826A3F2071D015EEB78F02A4F94D4E5F07873623200F8 │ │ │ │ -7DF95BA0DC6B6D31DECC925BEA1E6A7C52FE685800EC33CBAE830F1AE5454DFA │ │ │ │ -913B8F457D7E2D3DFF019869E3301EEEC64A38295DE6B588E776922B32362382 │ │ │ │ -D1CF3D058613C8A96E6994D3EC23E8B71EC6E718383B20BB6C22DB6F93FA559F │ │ │ │ -3449CA84EB33B25C8BE0DFD1C29DC4FBD7AFBDC96C12162CAAB2C5E354B0FB10 │ │ │ │ -4BF8CC3610875ABD5111D09F2F847822118972214EDEB9EE34BAFE45E7AC15C5 │ │ │ │ -CA63EC4A3CEEA505A5EDD88A59BB67C71C3E026DFFE177F99BC69E6635545D03 │ │ │ │ -77A634F98230EF64381EC67CA519D4B9770EFA844789E21970F89D5FFC5DEAA8 │ │ │ │ -DC008EBA09306967ED090FF91B002FA6120C2B461A87AA32EFB003C5578D8EEF │ │ │ │ - │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ +AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ +E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ +46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ +FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ +389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ +7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ +2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ +C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ +B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ +AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ +E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ +F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ +0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ +2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ +29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ +CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ +6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ +5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ +36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0DD96AB602D004DCFE000A0 │ │ │ │ +ABE41BAB8AB7D50BD32BFD6F1AA3B60B09B9BE4E273EDD2DDCB21A98A760D17D │ │ │ │ +0A5C9303AFE63CF80A93E60C72A0576FAADEECBE2DE91892D210EB0AD1889C04 │ │ │ │ +C7530652584E775B4ED19CFB4B8DBCCC57A9FA9E4DDC8A1E5A1D3BE9E93407A6 │ │ │ │ +2C237ACE27F4EDA330EE952EDCBE91683AA98A29197735006666C96A2CE7C787 │ │ │ │ +BBA5A57C4DBF6FAA5B38AF226B5D9A65FAD84650AC0C3DB29C30602699F81E01 │ │ │ │ +0BAF8F1CE44A03C680121B77A1703C638187675D6C22C49F9902475E6CE9C732 │ │ │ │ +48ED028CC92EA542EF189CC9CA1C384E3387793057615D0A2BF040CC90B275B9 │ │ │ │ +F70A5310874DC2E0A360373E7BCAC88250FBC8989C7D18DA8274C06F02FCF31C │ │ │ │ +2B3868CBAF083DAC2FB159DE368261842DB7C9EA1A86B17617C861A48FBA8FF9 │ │ │ │ +D184CB026F4A418C0955347612F94C039B1536A76CB182A591DD7C02D509CF16 │ │ │ │ +8B9E46502ABF5DE31F5DFBD19C7417A2AF7AF13F0D5FF837C94CE56F07B96337 │ │ │ │ +0ED215252346FAEB54B5F3ABE29709B7ECB9FBD23A4AD397E6ABA6938F1BBF33 │ │ │ │ +1D5460D9414F0B8725DA832744525C13E3FD9C8DB33FBEE12F9C4969988402C8 │ │ │ │ +96AF916364CC2DF17EDBA622FC0A5D0013418E29F912FFA06F8D7E31ECAB0B08 │ │ │ │ +C4D2D8EE537CC768FC9038DD6D86D33642C6E812E941F157FC6917AF19C2B99A │ │ │ │ +5BF10B9A7ECF711BBB6F33C8C3DAD778153122593F36ABDDC0E97A602B045DE6 │ │ │ │ +19BD82D877DDA960AB11EF48C7F75A28D0D731D4A5DBC98283087267CD1A470D │ │ │ │ +537E949DA5EECF097B099547995BE066A941CED683B5748962AD2B02C21636C0 │ │ │ │ +2EAFA33CA0CB3BF8A95703F015A210D918865B9BEA2890DCFB68BC3719C305EC │ │ │ │ +315EC8727BF9A93632AB9E3090B100C022EE1396CD329B37547F26A7DCE52BD7 │ │ │ │ +F91B7388DEC34F4A0C6D46CD7CA6ACC00C5C4C71E47C6AD96496B3CBF531F342 │ │ │ │ +A740EE6B99BD70AD490DFA700772A0697EC6561CE88A0113E4DC3B21F372D810 │ │ │ │ +DFF2C3F6EDF3E917BF2664EEFC9AD292DD6CC36853CF936018D43FDB28D5B001 │ │ │ │ +7D1C805F958F13FD221377ABDD69D102E8CC1DAB2E011EE16CF6DB9D195BA702 │ │ │ │ +5A8738FABF989B0351282D0E5121182DFC52169782A5F3DD5D820411BEF909DE │ │ │ │ +04D963E6FDA76F88508C4E91DDAAA1748F396A1D380D8CA429673AF27C164434 │ │ │ │ +771781B39565D3EE50F3CF03EF12908B13A6C11C9AB7631B32125828B13050BA │ │ │ │ +041A93B97AC32D4A1E28C5FA98CDEE998B5F97823D6291D01E3611A16854F1FE │ │ │ │ +69B9D6D2AE3E56D012B7BC3E582FB4C23188A5E365E65EB1F804A706AF73A2F8 │ │ │ │ +9804808EF71F0982B14133BF9A27D6F2E719BDB751022B1B052722933948904E │ │ │ │ +3582E363478DCDA115205A0FDE39DF71FEAEEB104419C35A6B0678C19616C6D9 │ │ │ │ +A892DC2F4257069AF096C80C099CD13024DF3995F28C694E00D1F08B43D4450C │ │ │ │ +D18F5C925CFD2D124E74FC64BBAA0DE32A79E4A4507B5B5DD834C67160CDA110 │ │ │ │ +EF0061DD27E8864F4250A92BBEFD75C784BB98F4FA789A8236C2A21E4E61ABD0 │ │ │ │ +C6B4D13B3C31AC8E55FA34BEC7C308C61FB0280382EC6AFD63D959678D42D2B3 │ │ │ │ +4134F6236A0808D9302B4E3C6F81FC6973B4833602750CCB5DE36AEA23ED6BD4 │ │ │ │ +5B72DF0DD7B81C871CAA6EC190748CD8C4B998D576E5D340ACAC0617DDBE461C │ │ │ │ +8E82E809D11A01D265D039F4315066832E27E08A6F067E129E45FBF533F761BB │ │ │ │ +EC3C071209BECE7D14D3184B2E6BFD65717A5A7C08F3776B20C513649488C1CF │ │ │ │ +03333805B249D1034FB0AE2D7D2A23324EE27AEDB68F8E329A8052FE58D7C0D9 │ │ │ │ +A40A0CDC79F2085C4F39A7DFDB625C8F071E2A32CF6215DD3E060A9BABF7A3AA │ │ │ │ +C57DA0C0571C5D6EEAA975D1BB9C99F8EA4958360E43E8C60080B03DC4435550 │ │ │ │ +E6048DDD35DF3E5DA69669F266FFD7B44649A68025270DC84258E329F6E6907C │ │ │ │ +BCFF900D715D0C7EC43C5E7180CAD6427BA4FD41AAD6531A5C06B0EC26DDA71F │ │ │ │ +4A9DA50DE919E79226F6DDF7C1BA478936AA86CEAD93072CC2960E98C45A1A0C │ │ │ │ +60CF8A26E4278AB4F9E28FA6532648196CC455607D6BCD00F60675DE8CC02C8C │ │ │ │ +9BE5D5B714731814D5B008EE236563D77AC6895E0158877C95797E07C02AFEBE │ │ │ │ +CC9FE97D5E103F7DB0A834E9A7A75893EC66340B0E4C6F0EEDEF43415BF9FCF4 │ │ │ │ +47340CBEA4DCFBA0D028EB2149FFBBDB3322AE5F6FD20242526EDC55E476D983 │ │ │ │ +DC │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -5375,15 +5381,15 @@ │ │ │ │ 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 │ │ │ │ -3[51 12[45 22[47 15[25 3[45 3[45 1[45 3[25 44[{}11 90.9091 │ │ │ │ +3[51 12[45 22[47 15[25 3[45 3[45 45 45 3[25 44[{}12 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 1[48 1[48 │ │ │ │ @@ -5511,17 +5517,17 @@ │ │ │ │ (\(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 1177 4 v │ │ │ │ -1359 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(Jan)m(uary)g(6,)h(2026)p │ │ │ │ -2724 100 V 111 399 a Fn(1.)46 b(Assem)m(ble)39 b(en)m(tries)g(from)f │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fn(2)p 136 100 1154 4 v │ │ │ │ +1336 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(Jan)m(uary)g(10,)i(2026)p │ │ │ │ +2746 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 │ │ │ │ @@ -5704,17 +5710,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 1177 4 v 1358 100 a Fm(Chv)30 │ │ │ │ -b Fi(:)40 b Fl(DRAFT)121 b Fi(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2676 100 V 1177 w Fn(3)0 399 y(of)38 b(comm)m(unication.)63 │ │ │ │ +TeXDict begin 3 2 bop 91 100 1154 4 v 1335 100 a Fm(Chv)30 │ │ │ │ +b Fi(:)41 b Fl(DRAFT)121 b Fi(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2699 100 V 1154 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 │ │ │ │ @@ -5783,17 +5789,17 @@ │ │ │ │ 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 1177 4 v │ │ │ │ -1359 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(Jan)m(uary)g(6,)h(2026)p │ │ │ │ -2724 100 V 137 399 a Fe(\210)45 b Fm(DV)i(wrkDV)29 b │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fn(4)p 136 100 1154 4 v │ │ │ │ +1336 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(Jan)m(uary)g(10,)i(2026)p │ │ │ │ +2746 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 │ │ │ │ @@ -5853,17 +5859,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 1177 4 v 1358 100 a Fm(Chv)30 │ │ │ │ -b Fi(:)40 b Fl(DRAFT)121 b Fi(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2676 100 V 1177 w Fn(5)0 399 y Fc(1.2.2)112 b(Instance)38 │ │ │ │ +TeXDict begin 5 4 bop 91 100 1154 4 v 1335 100 a Fm(Chv)30 │ │ │ │ +b Fi(:)41 b Fl(DRAFT)121 b Fi(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2699 100 V 1154 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 │ │ │ │ @@ -5923,17 +5929,17 @@ │ │ │ │ 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 1177 4 v │ │ │ │ -1359 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(Jan)m(uary)g(6,)h(2026)p │ │ │ │ -2724 100 V 111 399 a Fn(8.)46 b Fm(double)g(*)i(Chv_entries)d(\()i(Chv) │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fn(6)p 136 100 1154 4 v │ │ │ │ +1336 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(Jan)m(uary)g(10,)i(2026)p │ │ │ │ +2746 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 │ │ │ │ @@ -6013,17 +6019,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 1177 4 v 1358 100 a Fm(Chv)30 │ │ │ │ -b Fi(:)40 b Fl(DRAFT)121 b Fi(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2676 100 V 1177 w Fn(7)66 399 y(15.)46 b Fm(Chv_locationOfComplexEntr)o │ │ │ │ +TeXDict begin 7 6 bop 91 100 1154 4 v 1335 100 a Fm(Chv)30 │ │ │ │ +b Fi(:)41 b Fl(DRAFT)121 b Fi(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2699 100 V 1154 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 │ │ │ │ @@ -6096,17 +6102,17 @@ │ │ │ │ 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 1177 4 v │ │ │ │ -1359 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(Jan)m(uary)g(6,)h(2026)p │ │ │ │ -2724 100 V 0 399 a Fc(1.2.4)112 b(Searc)m(h)38 b(metho)s(ds)111 │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fn(8)p 136 100 1154 4 v │ │ │ │ +1336 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(Jan)m(uary)g(10,)i(2026)p │ │ │ │ +2746 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 │ │ │ │ @@ -6174,17 +6180,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 1177 4 v 1358 100 a Fm(Chv)30 │ │ │ │ -b Fi(:)40 b Fl(DRAFT)121 b Fi(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2676 100 V 1177 w Fn(9)227 399 y(This)h(metho)s(d)g(returns)g(the)h(lo) │ │ │ │ +TeXDict begin 9 8 bop 91 100 1154 4 v 1335 100 a Fm(Chv)30 │ │ │ │ +b Fi(:)41 b Fl(DRAFT)121 b Fi(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2699 100 V 1154 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 │ │ │ │ @@ -6268,32 +6274,33 @@ │ │ │ │ (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 1154 4 │ │ │ │ -v 1336 w Fm(Chv)30 b Fi(:)40 b Fl(DRAFT)31 b Fi(Jan)m(uary)f(6,)h(2026) │ │ │ │ -p 2746 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 1131 4 │ │ │ │ +v 1314 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(Jan)m(uary)g(10,)h │ │ │ │ +(2026)p 2769 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 │ │ │ │ @@ -6375,17 +6382,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 1154 4 v 1335 100 a Fm(Chv)30 │ │ │ │ -b Fi(:)41 b Fl(DRAFT)121 b Fi(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2654 100 V 1154 w Fn(11)227 399 y(call)e(to)g(assem)m(ble)g(en)m(tries) │ │ │ │ +TeXDict begin 11 10 bop 91 100 1131 4 v 1313 100 a Fm(Chv)29 │ │ │ │ +b Fi(:)41 b Fl(DRAFT)121 b Fi(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2676 100 V 1131 w Fn(11)227 399 y(call)e(to)g(assem)m(ble)g(en)m(tries) │ │ │ │ g(in)e Fb(A)h Fn(\(from)g(the)g(p)s(encil)g Fb(A)15 b │ │ │ │ Fn(+)g Fb(\033)s(B)5 b Fn(\))28 b(w)m(ould)f(ha)m(v)m(e)i │ │ │ │ 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 │ │ │ │ @@ -6473,17 +6480,17 @@ │ │ │ │ (functionalit)m(y)-8 b(,)33 b(where)d(if)h(a)g(small)g(or)g(zero)g(en)m │ │ │ │ (try)g(is)g(found)e(in)i(the)g(diagonal)g(elemen)m(t)227 │ │ │ │ 5294 y(that)45 b(is)f(to)h(b)s(e)f(eliminated,)49 b(some)c(action)h │ │ │ │ (can)e(b)s(e)g(tak)m(en.)83 b(The)44 b(return)f(v)-5 │ │ │ │ b(alue)45 b(is)f(the)h(n)m(um)m(b)s(er)e(of)227 5407 │ │ │ │ y(eliminated)32 b(ro)m(ws)e(and)g(columns.)p eop end │ │ │ │ %%Page: 12 12 │ │ │ │ -TeXDict begin 12 11 bop 0 100 a Fn(12)p 182 100 1154 │ │ │ │ -4 v 1336 w Fm(Chv)30 b Fi(:)40 b Fl(DRAFT)31 b Fi(Jan)m(uary)f(6,)h │ │ │ │ -(2026)p 2746 100 V 227 399 a Fl(Err)-5 b(or)34 b(che)-5 │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fn(12)p 182 100 1131 │ │ │ │ +4 v 1314 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(Jan)m(uary)g(10,)h │ │ │ │ +(2026)p 2769 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 │ │ │ │ @@ -6551,17 +6558,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 1154 4 v 1335 100 a Fm(Chv)30 │ │ │ │ -b Fi(:)41 b Fl(DRAFT)121 b Fi(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2654 100 V 1154 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 1131 4 v 1313 100 a Fm(Chv)29 │ │ │ │ +b Fi(:)41 b Fl(DRAFT)121 b Fi(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2676 100 V 1131 w Fn(13)227 399 y(This)f(metho)s(d)g(is)g(used)g(to)h │ │ │ │ (compute)f(the)h(necessary)g(storage)h(to)f(store)g(a)g(c)m(hevron)f │ │ │ │ (as)h(a)g(dense)f(fron)m(t.)227 551 y Fl(Err)-5 b(or)36 │ │ │ │ b(che)-5 b(cking:)45 b Fn(If)32 b Fm(chv)g Fn(is)h Fm(NULL)e │ │ │ │ Fn(or)i(if)g Fm(countflag)d Fn(is)i(not)h(v)-5 b(alid,)34 │ │ │ │ b(an)f(error)f(message)i(is)e(prin)m(ted)h(and)227 664 │ │ │ │ y(the)e(program)f(exits.)111 855 y(2.)46 b Fm(int)h │ │ │ │ (Chv_countBigEntries)c(\()k(Chv)g(*chv,)f(int)h(npivot,)f(int)h │ │ │ │ @@ -6641,17 +6648,17 @@ │ │ │ │ b(che)-5 b(cking:)45 b Fn(If)32 b Fm(chv)g Fn(or)g Fm(dvec)g │ │ │ │ Fn(is)h Fm(NULL)e Fn(or)i(if)f Fm(length)f Fn(is)i(less)g(than)f(the)h │ │ │ │ (n)m(um)m(b)s(er)e(of)i(en)m(tries)g(to)h(b)s(e)227 5294 │ │ │ │ y(copied,)k(or)d(if)g Fm(copyflag)e Fn(or)j Fm(storeflag)c │ │ │ │ Fn(is)k(v)-5 b(alid,)37 b(an)e(error)g(message)i(is)e(prin)m(ted)g(and) │ │ │ │ g(the)g(program)227 5407 y(exits.)p eop end │ │ │ │ %%Page: 14 14 │ │ │ │ -TeXDict begin 14 13 bop 0 100 a Fn(14)p 182 100 1154 │ │ │ │ -4 v 1336 w Fm(Chv)30 b Fi(:)40 b Fl(DRAFT)31 b Fi(Jan)m(uary)f(6,)h │ │ │ │ -(2026)p 2746 100 V 111 399 a Fn(4.)46 b Fm(int)h │ │ │ │ +TeXDict begin 14 13 bop 0 100 a Fn(14)p 182 100 1131 │ │ │ │ +4 v 1314 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(Jan)m(uary)g(10,)h │ │ │ │ +(2026)p 2769 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 │ │ │ │ @@ -6740,17 +6747,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 1154 4 v 1335 100 a Fm(Chv)30 │ │ │ │ -b Fi(:)41 b Fl(DRAFT)121 b Fi(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2654 100 V 1154 w Fn(15)227 399 y Fl(Err)-5 b(or)35 b(che)-5 │ │ │ │ +TeXDict begin 15 14 bop 91 100 1131 4 v 1313 100 a Fm(Chv)29 │ │ │ │ +b Fi(:)41 b Fl(DRAFT)121 b Fi(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2676 100 V 1131 w Fn(15)227 399 y Fl(Err)-5 b(or)35 b(che)-5 │ │ │ │ b(cking:)43 b Fn(If)31 b Fm(chv)g Fn(is)h Fm(NULL)e Fn(or)i(if)g │ │ │ │ Fm(irow)e Fn(or)i Fm(jrow)e Fn(are)i(less)g(than)f(0)i(or)e(greater)i │ │ │ │ (than)e(or)h(equal)g(to)227 511 y Fm(nD)p Fn(,)e(an)h(error)f(message)h │ │ │ │ (is)f(prin)m(ted)g(and)g(the)h(program)f(exits.)111 699 │ │ │ │ y(2.)46 b Fm(void)h(Chv_swapColumns)d(\()j(Chv)g(*chv,)f(int)h(icol,)g │ │ │ │ (int)f(jcol)h(\))h(;)227 849 y Fn(This)29 b(metho)s(d)g(sw)m(aps)g │ │ │ │ (columns)g Fm(icol)g Fn(and)g Fm(jcol)f Fn(of)h(the)h(c)m(hevron.)41 │ │ │ │ @@ -6820,17 +6827,17 @@ │ │ │ │ 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 1154 │ │ │ │ -4 v 1336 w Fm(Chv)30 b Fi(:)40 b Fl(DRAFT)31 b Fi(Jan)m(uary)f(6,)h │ │ │ │ -(2026)p 2746 100 V 227 399 a Fn(metho)s(d)j(as)h(it)g(c)m(hanges)h(the) │ │ │ │ +TeXDict begin 16 15 bop 0 100 a Fn(16)p 182 100 1131 │ │ │ │ +4 v 1314 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(Jan)m(uary)g(10,)h │ │ │ │ +(2026)p 2769 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 │ │ │ │ @@ -6884,17 +6891,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 1154 4 v 1335 100 a Fm(Chv)30 │ │ │ │ -b Fi(:)41 b Fl(DRAFT)121 b Fi(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2654 100 V 1154 w Fn(17)0 399 y Fc(1.2.12)113 b(IO)37 │ │ │ │ +TeXDict begin 17 16 bop 91 100 1131 4 v 1313 100 a Fm(Chv)29 │ │ │ │ +b Fi(:)41 b Fl(DRAFT)121 b Fi(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2676 100 V 1131 w Fn(17)0 399 y Fc(1.2.12)113 b(IO)37 │ │ │ │ b(metho)s(ds)111 592 y Fn(1.)46 b Fm(void)h(Chv_writeForHumanEye)42 │ │ │ │ b(\()48 b(Chv)f(*chv,)f(FILE)h(*fp)f(\))i(;)227 739 y │ │ │ │ Fn(This)30 b(metho)s(d)g(writes)g(a)h Fm(Chv)e Fn(ob)5 │ │ │ │ b(ject)32 b(to)f(a)f(\014le)h(in)f(an)g(easily)i(readable)f(format.)227 │ │ │ │ 887 y Fl(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fn(If)30 │ │ │ │ b Fm(chv)g Fn(or)g Fm(fp)g Fn(are)h Fm(NULL)p Fn(,)e(an)h(error)g │ │ │ │ (message)i(is)e(prin)m(ted)g(and)g(zero)h(is)g(returned.)111 │ │ │ │ @@ -6954,17 +6961,17 @@ │ │ │ │ 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 1154 │ │ │ │ -4 v 1336 w Fm(Chv)30 b Fi(:)40 b Fl(DRAFT)31 b Fi(Jan)m(uary)f(6,)h │ │ │ │ -(2026)p 2746 100 V 111 399 a Fn(2.)46 b Fm(test_assmbChv)e(msglvl)j │ │ │ │ +TeXDict begin 18 17 bop 0 100 a Fn(18)p 182 100 1131 │ │ │ │ +4 v 1314 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(Jan)m(uary)g(10,)h │ │ │ │ +(2026)p 2769 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 │ │ │ │ @@ -7041,17 +7048,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 1154 4 v 1335 100 a Fm(Chv)30 │ │ │ │ -b Fi(:)41 b Fl(DRAFT)121 b Fi(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2654 100 V 1154 w Fn(19)337 399 y Fe(\210)45 b Fn(The)35 │ │ │ │ +TeXDict begin 19 18 bop 91 100 1131 4 v 1313 100 a Fm(Chv)29 │ │ │ │ +b Fi(:)41 b Fl(DRAFT)121 b Fi(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2676 100 V 1131 w Fn(19)337 399 y Fe(\210)45 b Fn(The)35 │ │ │ │ b Fm(storeflag)e Fn(parameter)j(is)g(the)g(storage)h(\015ag,)g(to)g │ │ │ │ (store)f(b)m(y)f(ro)m(ws,)i(use)f Fm(SPOOLES)p 3528 399 │ │ │ │ 29 4 v 32 w(BY)p 3656 399 V 34 w(ROWS)p Fn(,)427 511 │ │ │ │ y(to)31 b(store)g(b)m(y)g(columns,)f(use)g Fm(SPOOLES)p │ │ │ │ 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 │ │ │ │ @@ -7127,17 +7134,17 @@ │ │ │ │ Fn(parameter)j(determines)f(the)h(message)g(\014le)f(|)h(if)f │ │ │ │ Fm(msgFile)e Fn(is)i Fm(stdout)p Fn(,)g(then)g(the)427 │ │ │ │ 5294 y(message)27 b(\014le)f(is)g 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 1154 │ │ │ │ -4 v 1336 w Fm(Chv)30 b Fi(:)40 b Fl(DRAFT)31 b Fi(Jan)m(uary)f(6,)h │ │ │ │ -(2026)p 2746 100 V 337 399 a Fe(\210)45 b Fn(The)30 b │ │ │ │ +TeXDict begin 20 19 bop 0 100 a Fn(20)p 182 100 1131 │ │ │ │ +4 v 1314 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(Jan)m(uary)g(10,)h │ │ │ │ +(2026)p 2769 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 │ │ │ │ @@ -7209,17 +7216,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 1154 4 v 1335 100 a Fm(Chv)30 │ │ │ │ -b Fi(:)41 b Fl(DRAFT)121 b Fi(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2654 100 V 1154 w Fn(21)337 399 y Fe(\210)45 b Fn(The)33 │ │ │ │ +TeXDict begin 21 20 bop 91 100 1131 4 v 1313 100 a Fm(Chv)29 │ │ │ │ +b Fi(:)41 b Fl(DRAFT)121 b Fi(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2676 100 V 1131 w Fn(21)337 399 y Fe(\210)45 b Fn(The)33 │ │ │ │ b Fm(msgFile)e Fn(parameter)j(determines)f(the)h(message)g(\014le)f(|)h │ │ │ │ (if)f Fm(msgFile)e Fn(is)i Fm(stdout)p Fn(,)g(then)g(the)427 │ │ │ │ 511 y(message)27 b(\014le)f(is)g Fl(stdout)p Fn(,)i(otherwise)e(a)h │ │ │ │ (\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 │ │ │ │ @@ -7289,17 +7296,17 @@ │ │ │ │ (\(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 1154 │ │ │ │ -4 v 1336 w Fm(Chv)30 b Fi(:)40 b Fl(DRAFT)31 b Fi(Jan)m(uary)f(6,)h │ │ │ │ -(2026)p 2746 100 V 337 399 a Fe(\210)45 b Fn(The)20 b │ │ │ │ +TeXDict begin 22 21 bop 0 100 a Fn(22)p 182 100 1131 │ │ │ │ +4 v 1314 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(Jan)m(uary)g(10,)h │ │ │ │ +(2026)p 2769 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 │ │ │ │ @@ -7375,17 +7382,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 1154 4 v 1335 100 a Fm(Chv)30 │ │ │ │ -b Fi(:)41 b Fl(DRAFT)121 b Fi(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2654 100 V 1154 w Fn(23)337 399 y Fe(\210)45 b Fn(The)30 │ │ │ │ +TeXDict begin 23 22 bop 91 100 1131 4 v 1313 100 a Fm(Chv)29 │ │ │ │ +b Fi(:)41 b Fl(DRAFT)121 b Fi(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2676 100 V 1131 w Fn(23)337 399 y Fe(\210)45 b Fn(The)30 │ │ │ │ b Fm(ncolU)f Fn(parameter)i(is)f(the)h(n)m(um)m(b)s(er)e(of)i(columns)f │ │ │ │ (in)g Fb(U)10 b Fn(.)337 545 y Fe(\210)45 b Fn(The)30 │ │ │ │ b Fm(nrowD)f Fn(parameter)i(is)f(the)h(n)m(um)m(b)s(er)e(of)i(ro)m(ws)f │ │ │ │ (and)g(columns)g(in)g Fb(D)s Fn(.)337 691 y Fe(\210)45 │ │ │ │ b Fn(The)30 b Fm(nentU)f Fn(parameter)i(is)f(the)h(n)m(um)m(b)s(er)e │ │ │ │ (en)m(tries)i(in)f Fb(U)10 b Fn(,)31 b(ignored)f(if)h │ │ │ │ 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 January 6, 2026 │ │ │ │ │ + 2 Chv : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 3 │ │ │ │ │ + Chv : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 4 Chv : DRAFT January 10, 2026 │ │ │ │ │ • 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 January 6, 2026 5 │ │ │ │ │ + Chv : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 6 Chv : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 9 │ │ │ │ │ + Chv : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 10 Chv : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 11 │ │ │ │ │ + Chv : DRAFT January 10, 2026 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 │ │ │ │ │ @@ -386,15 +386,15 @@ │ │ │ │ │ data from the children (objects are held in a list where firstchild is the head) into a Chv │ │ │ │ │ object newchv. The return value is the number of delayed rows and columns from the children │ │ │ │ │ fronts which are found in the leading rows and columns of the chevron. │ │ │ │ │ Error checking: If newchv, oldchv or firstchild is NULL, an error message is printed and │ │ │ │ │ the program exits. │ │ │ │ │ 1.2.8 Factorization methods │ │ │ │ │ 1. int Chv_factorWithPivoting ( Chv *chv, int ndelay, int pivotflag, │ │ │ │ │ - IV *pivotsizesIV, DV *workDV, double tau, int *pntest ) ; │ │ │ │ │ + IV *pivotsizesIV, DV *workDV, double tau, int *pntest ) ; │ │ │ │ │ This method factors a front using pivoting for numerical stability. The number of rows and │ │ │ │ │ columns that have been delayed (assembled from the children) is given by ndelay, this allows │ │ │ │ │ the method that finds the pivots to skip over these rows and columns since no pivot can be │ │ │ │ │ found there. When pivoting is enabled (pivotflag is SPOOLES PIVOTING), the workDV object │ │ │ │ │ used during the search process for pivots must be non-NULL, tau is the upper bound on factor │ │ │ │ │ entries, and pivotsizesIV must be non-NULL when the front is symmetric or Hermitian. │ │ │ │ │ The address pntest is incremented with the number of pivot tests by the Chv findPivot() │ │ │ │ │ @@ -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 January 6, 2026 │ │ │ │ │ + 12 Chv : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 13 │ │ │ │ │ + Chv : DRAFT January 10, 2026 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. │ │ │ │ │ @@ -458,15 +458,15 @@ │ │ │ │ │ • 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 │ │ │ │ │ This method is used to compute the necessary storage to store a chevron as a sparse front. │ │ │ │ │ Error checking: If chv is NULL or if countflag is not valid, an error message is printed and │ │ │ │ │ the program exits. │ │ │ │ │ 3. int Chv_copyEntriesToVector ( Chv *chv, int npivot, int pivotsizes[], │ │ │ │ │ - int length, double dvec[], int copyflag, int storeflag) ; │ │ │ │ │ + int length, double dvec[], int copyflag, int storeflag) ; │ │ │ │ │ This method copies some entries the chevron object into a double precision vector. This │ │ │ │ │ method is called after a front has been factored and is used to store the factor entries into │ │ │ │ │ the storage for the factor matrix. If the front is nonsymmetric, the front contains entries of │ │ │ │ │ L, D and U, where D is diagonal. If the front is symmetric or Hermitian, the front contains │ │ │ │ │ entries of D and U, and D is diagonal if pivotsizesIV is NULL or may contain a mixture of │ │ │ │ │ 1×1and2×2pivots otherwise. copyflag has the following meaning. │ │ │ │ │ • CHV STRICT LOWER =⇒ copy strict lower entries │ │ │ │ │ @@ -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 January 6, 2026 │ │ │ │ │ + 14 Chv : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 15 │ │ │ │ │ + Chv : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 16 Chv : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 17 │ │ │ │ │ + Chv : DRAFT January 10, 2026 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 │ │ │ │ │ @@ -605,29 +605,29 @@ │ │ │ │ │ returned. │ │ │ │ │ 1.3 Driver programs for the Chv object │ │ │ │ │ 1. test_addChevron msglvl msgFile nD nU type symflag seed alphareal alphaimag │ │ │ │ │ This driver program tests the Chv addChevron method. Use the script file do addChevron │ │ │ │ │ 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 │ │ │ │ │ - timing output. │ │ │ │ │ + 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. │ │ │ │ │ + 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 │ │ │ │ │ - or SPOOLES NONSYMMETRIC. │ │ │ │ │ + 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 January 6, 2026 │ │ │ │ │ + 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 January 10, 2026 │ │ │ │ │ 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,55 +658,55 @@ │ │ │ │ │ • 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 January 6, 2026 19 │ │ │ │ │ + Chv : DRAFT January 10, 2026 19 │ │ │ │ │ • The storeflag parameter is the storage flag, to store by rows, use SPOOLES BY ROWS, │ │ │ │ │ - to store by columns, use SPOOLES BY COLUMNS. │ │ │ │ │ + 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 │ │ │ │ │ the script file do copyBigEntriesToVector for testing. When the output file is loaded into │ │ │ │ │ matlab, the last line to the screen is a matrix that contains three entries. The first two are │ │ │ │ │ the maximum magnitudes of the entries that were not copied (two different ways), and the │ │ │ │ │ third is the drop tolerance. If the program executes correctly, the third term is larger than │ │ │ │ │ the first two. │ │ │ │ │ • The msglvl parameter determines the amount of output. Use msglvl = 1 for just │ │ │ │ │ - timing output. │ │ │ │ │ + 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. │ │ │ │ │ + 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 │ │ │ │ │ - or SPOOLES NONSYMMETRIC. │ │ │ │ │ + or SPOOLES NONSYMMETRIC. │ │ │ │ │ • The pivotingflag parameter is the pivoting flag — SPOOLES NO PIVOTING for no piv- │ │ │ │ │ - oting, SPOOLES PIVOTING for pivoting. │ │ │ │ │ + oting, SPOOLES PIVOTING for pivoting. │ │ │ │ │ • The storeflag parameter is the storage flag, to store by rows, use SPOOLES BY ROWS, │ │ │ │ │ - to store by columns, use SPOOLES BY COLUMNS. │ │ │ │ │ + to store by columns, use SPOOLES BY COLUMNS. │ │ │ │ │ • The seed parameter is a random number seed. │ │ │ │ │ • The droptol parameter is a drop tolerance parameters, entries whose magnitude is │ │ │ │ │ - smaller than droptol are not copied. │ │ │ │ │ + smaller than droptol are not copied. │ │ │ │ │ 5. test_factor msglvl msgFile nD nU type symflag pivotingflag seed tau │ │ │ │ │ This driver program tests the Chv factor method. Use the script file do factor for testing. │ │ │ │ │ Whentheoutputfileisloadedinto matlab, the last line to the screen is a matrix that contains │ │ │ │ │ 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. │ │ │ │ │ + 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 January 6, 2026 │ │ │ │ │ + message file is stdout, otherwise a file is opened with append status to receive any output │ │ │ │ │ + data. │ │ │ │ │ + 20 Chv : DRAFT January 10, 2026 │ │ │ │ │ • 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,52 +735,52 @@ │ │ │ │ │ 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 January 6, 2026 21 │ │ │ │ │ + Chv : DRAFT January 10, 2026 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. │ │ │ │ │ + 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 │ │ │ │ │ - or SPOOLES NONSYMMETRIC. │ │ │ │ │ + or SPOOLES NONSYMMETRIC. │ │ │ │ │ • The pivotingflag parameter is the pivoting flag — SPOOLES NO PIVOTING for no piv- │ │ │ │ │ - oting, SPOOLES PIVOTING for pivoting. │ │ │ │ │ + oting, SPOOLES PIVOTING for pivoting. │ │ │ │ │ • The seed parameter is a random number seed. │ │ │ │ │ 8. test_r1upd msglvl msgFile nD nU type symflag seed │ │ │ │ │ This driver program tests the Chv r1upd() method. Use the script file do r1upd for testing. │ │ │ │ │ When the output file is loaded into matlab, the last line is the error of the update. │ │ │ │ │ • The msglvl parameter determines the amount of output. Use msglvl = 1 for just │ │ │ │ │ - timing output. │ │ │ │ │ + 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. │ │ │ │ │ + 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 │ │ │ │ │ - or SPOOLES NONSYMMETRIC. │ │ │ │ │ + or SPOOLES NONSYMMETRIC. │ │ │ │ │ • The seed parameter is a random number seed. │ │ │ │ │ 9. test_r2upd msglvl msgFile nD nU type symflag seed │ │ │ │ │ This driver program tests the Chv r2upd() method. Use the script file do r2upd for testing. │ │ │ │ │ When the output file is loaded into matlab, the last line is the error of the update. │ │ │ │ │ • The msglvl parameter determines the amount of output. Use msglvl = 1 for just │ │ │ │ │ - timing output. │ │ │ │ │ + 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. │ │ │ │ │ + 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 January 6, 2026 │ │ │ │ │ + 22 Chv : DRAFT January 10, 2026 │ │ │ │ │ • 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 January 6, 2026 23 │ │ │ │ │ + Chv : DRAFT January 10, 2026 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 2026.01.06:2034 │ │ │ │ +%DVIPSSource: TeX output 2026.01.10:0513 │ │ │ │ %%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,14 +1760,15 @@ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ /UnderlineThickness 50 def │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ +dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ dup 54 /six put │ │ │ │ dup 58 /colon put │ │ │ │ dup 74 /J put │ │ │ │ dup 97 /a put │ │ │ │ dup 110 /n put │ │ │ │ dup 114 /r put │ │ │ │ @@ -1957,79 +1958,84 @@ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB88440048702D1F │ │ │ │ -77994EE04EC3B4531D6E1888C86A8F0DA6CF1F056F16AB0DD76C862830F89DA4 │ │ │ │ -28923B3AA543E0D6E41D3BD283E600BC11F889315EE92C675C109C81065ED1BC │ │ │ │ -82A5583D1B723D50051B0557A367887F5B263014C6E77288B4883C50889473D3 │ │ │ │ -3787BAD4BEB88BD1353AFA5B73E61814819537E7FF09F53EF94792BB3DD36ED0 │ │ │ │ -002D0E7A6CDAB85A9C17AF5664BCB5A71663B861880F3ECCABC8E7A2FC81A4CC │ │ │ │ -AE7A87503FDC1CE0077BA51ECC7B43B60793FED8E9AAD5BBD03ADD6183DCD26D │ │ │ │ -24A74163611C05562437644EF9B8889FD4F9D311911204FEFD35237486F2D2D0 │ │ │ │ -B6783A03BF12EA6D19D6D0F87E4D08515F12F9CBF1961CAA71E0D69FE3C4C4D2 │ │ │ │ -7C7FB64ED24F8684C8F00C2BEDEA53EA390CDC0B5BEBD7DD982580B2EA1F1F89 │ │ │ │ -CFED5916630DC2BA32BB9180277E1ABC339B3B7DE086717BD93F7FF3681BA5B3 │ │ │ │ -FCF671C4B293C2DE4A322F0AA3323A4934444C69F23EF90120B8755482757759 │ │ │ │ -C457A435FB8BB4922BD92C5F3D9555D978275C510183E29DFF2FCE4ABBFC18DE │ │ │ │ -76CAD3B486BA12047DD808CD4D521A0FD368E4AE79DE262630983A5D6F0B679D │ │ │ │ -2F005306393C520E1B6987302D029939D94B0178DB06211C7F3B123A41E6E7BA │ │ │ │ -87164737110707A3ED3983895F3FBC815EF370F54C808ED93D910937BCA3D8AF │ │ │ │ -7CBF80DC180CDA54059DB76710B4FCD4139D5B7DA7DB1A0D0AF86AD2453D3691 │ │ │ │ -0BA5BAD40FF28BB4235FCD40FC87C2B888E67928D9B0ACA5692149373DBB93BF │ │ │ │ -6520DDD36A9BFE4D415CA67A5E04F1D48BDB28C69676273ED842CF7980E8E17C │ │ │ │ -B88563F407E340AFAE8F51AABCF8A39521BCEE1EC8396D75E124B24B4675909F │ │ │ │ -E246F87DA08584A3173AEFF153ECDF610543FA7474D125A31ADD6285A49222B5 │ │ │ │ -177066EA395BFA4B1114C7FCF7712DA772A21C99E64F4E1181E69CAF98137FA2 │ │ │ │ -76CF74F682B8CD7BA6EEA79B70FA8A76809634517F8415B6F21A5A7D6099B5E8 │ │ │ │ -EAB356BBC4FB68C72B8C61DDCE8EAB1A53B9D6BAD78584B307EFF57CEAE74884 │ │ │ │ -35987BF89E9E60E962D22FA5612F2DB5EB840499B7CC11A34BA5DEE30D277540 │ │ │ │ -39B8211D69B448ADE95B723F8369A631DE6DD75703AFD7485FB7FFF41A60CBE4 │ │ │ │ -813B8FEA120662355773830EF85015E7FFD609B2CEE52CB5FFE9C35B6BEEE4A4 │ │ │ │ -A66719E31CE1523FDD7771FB1E881A32A7DB7D92C2326DF4B93241C14ABFCCD6 │ │ │ │ -8E5BCAC61E800E6B1B4687ADA4CBF41EC0AFC26D021D1772CBDCD0516DF5EBE1 │ │ │ │ -37FD2AC5ABB8D774B5735940F1F6866D044FD8CE74444FAA5D0202C11E39CC10 │ │ │ │ -213731F41F704450E1D0565013BF22188442CE0FC256190A9F92F0C802AA2660 │ │ │ │ -614AFE9E9C82F8CD2E6035EEF84E5F16CBB690AC819B4B910EA8E81106F0ACE5 │ │ │ │ -CDFE77DAF69E4AFE72C43145A3ABCC40B6C5297487083F738C86422277AC2267 │ │ │ │ -51759F1B7F129E87DE16433B664AD0FB6D30424A11C70B52B591352BF653C8B0 │ │ │ │ -0840C224FBFEAA996A6BE1D69414DD778C2EF56A63B64D59BA412EC3E4000831 │ │ │ │ -73361FB9813F9A7C74BA3A50D331B07B61492E5D75F0861B530587269B3ADC90 │ │ │ │ -EA1DF586AC4BC57C3230893EFE953A6E76950ABA895FAC711D3BD330ABC6846A │ │ │ │ -C91F6ABF3410B913DFE5C8266020CEE5C7A9EDA2E7D9BCA797DC486443C7BA7C │ │ │ │ -7E03439A40927FA3251B6D417E5653E7799E9D6F04149C34096E2CA9B1F9B1EC │ │ │ │ -38958A2521B4A657A8B9F16E1FD66C7E345A10D7AA0241559503D214AC6507A4 │ │ │ │ -CBDE8617AA7ED136577734428594487F3565BF45FA196375759E2FE23C26EC8A │ │ │ │ -3310A36917A5E2F260EAB31030F8E570303D36B833626938F56939849DFA1F3F │ │ │ │ -66D0A317BB6364427F1512AAB380B555611C76345C02C3A6FBF78590331D5ECA │ │ │ │ -029DEFB722F6AB05327C2A31AB7BD6ED0F0386E6F45C1278048D22B90B074CCB │ │ │ │ -2BBEBCC1927C97EC532E651CAF0058AFE8FC08F00F0216D5DD9830C294FF76DA │ │ │ │ -426A073B3A3AEEFBDEE71C5182186311607ECDBD1F1AF4C5E79748CD01445C8D │ │ │ │ -25DD49490C8A6810065908222C8D0AC9F83AFBEE7115023E2D2615A170A5D40A │ │ │ │ -AD49BDF59A59187B6434F83E68EED22EF4EFDBADED6F1559AC779E0377FE7375 │ │ │ │ -D7060584FE74B1859D0FD98772253A712B17FFBB467840C484F5EF82C5677ADB │ │ │ │ -EDF159A456A526B8B9F6E8FC7608DFD47B0F09E26118F79CBE53B6C4E32BACAB │ │ │ │ -D62AFD4AA527CC4B587BB41A17A9BCE106A8C592BC9B73422B712C466C284A17 │ │ │ │ -E8D0C1E01D43C739FB1C083AD2714F78AC785B0C09AA7E67417A73510E00F2FE │ │ │ │ -E3D3EBF626A2F3A20A386E3F98D1285F4A2A332FC609CD191F01F128627B3505 │ │ │ │ -0AC2387DC0AD1B950490EBB5045F22BEC54955402CE2D267B6754E7C32BE84E8 │ │ │ │ -E6B63E3D3EAEE979442D167AEF69C27B22A8E887A2510C3A168D95D285CF7515 │ │ │ │ -011C921679B2F386575826A3F2071D015EEB78F02A4F94D4E5F07873623200F8 │ │ │ │ -7DF95BA0DC6B6D31DECC925BEA1E6A7C52FE685800EC33CBAE830F1AE5454DFA │ │ │ │ -913B8F457D7E2D3DFF019869E3301EEEC64A38295DE6B588E776922B32362382 │ │ │ │ -D1CF3D058613C8A96E6994D3EC23E8B71EC6E718383B20BB6C22DB6F93FA559F │ │ │ │ -3449CA84EB33B25C8BE0DFD1C29DC4FBD7AFBDC96C12162CAAB2C5E354B0FB10 │ │ │ │ -4BF8CC3610875ABD5111D09F2F847822118972214EDEB9EE34BAFE45E7AC15C5 │ │ │ │ -CA63EC4A3CEEA505A5EDD88A59BB67C71C3E026DFFE177F99BC69E6635545D03 │ │ │ │ -77A634F98230EF64381EC67CA519D4B9770EFA844789E21970F89D5FFC5DEAA8 │ │ │ │ -DC008EBA09306967ED090FF91B002FA6120C2B461A87AA32EFB003C5578D8EEF │ │ │ │ - │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ +AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ +E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ +46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ +FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ +389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ +7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ +2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ +C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ +B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ +AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ +E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ +F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ +0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ +2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ +29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ +CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ +6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ +5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ +36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0DD96AB602D004DCFE000A0 │ │ │ │ +ABE41BAB8AB7D50BD32BFD6F1AA3B60B09B9BE4E273EDD2DDCB21A98A760D17D │ │ │ │ +0A5C9303AFE63CF80A93E60C72A0576FAADEECBE2DE91892D210EB0AD1889C04 │ │ │ │ +C7530652584E775B4ED19CFB4B8DBCCC57A9FA9E4DDC8A1E5A1D3BE9E93407A6 │ │ │ │ +2C237ACE27F4EDA330EE952EDCBE91683AA98A29197735006666C96A2CE7C787 │ │ │ │ +BBA5A57C4DBF6FAA5B38AF226B5D9A65FAD84650AC0C3DB29C30602699F81E01 │ │ │ │ +0BAF8F1CE44A03C680121B77A1703C638187675D6C22C49F9902475E6CE9C732 │ │ │ │ +48ED028CC92EA542EF189CC9CA1C384E3387793057615D0A2BF040CC90B275B9 │ │ │ │ +F70A5310874DC2E0A360373E7BCAC88250FBC8989C7D18DA8274C06F02FCF31C │ │ │ │ +2B3868CBAF083DAC2FB159DE368261842DB7C9EA1A86B17617C861A48FBA8FF9 │ │ │ │ +D184CB026F4A418C0955347612F94C039B1536A76CB182A591DD7C02D509CF16 │ │ │ │ +8B9E46502ABF5DE31F5DFBD19C7417A2AF7AF13F0D5FF837C94CE56F07B96337 │ │ │ │ +0ED215252346FAEB54B5F3ABE29709B7ECB9FBD23A4AD397E6ABA6938F1BBF33 │ │ │ │ +1D5460D9414F0B8725DA832744525C13E3FD9C8DB33FBEE12F9C4969988402C8 │ │ │ │ +96AF916364CC2DF17EDBA622FC0A5D0013418E29F912FFA06F8D7E31ECAB0B08 │ │ │ │ +C4D2D8EE537CC768FC9038DD6D86D33642C6E812E941F157FC6917AF19C2B99A │ │ │ │ +5BF10B9A7ECF711BBB6F33C8C3DAD778153122593F36ABDDC0E97A602B045DE6 │ │ │ │ +19BD82D877DDA960AB11EF48C7F75A28D0D731D4A5DBC98283087267CD1A470D │ │ │ │ +537E949DA5EECF097B099547995BE066A941CED683B5748962AD2B02C21636C0 │ │ │ │ +2EAFA33CA0CB3BF8A95703F015A210D918865B9BEA2890DCFB68BC3719C305EC │ │ │ │ +315EC8727BF9A93632AB9E3090B100C022EE1396CD329B37547F26A7DCE52BD7 │ │ │ │ +F91B7388DEC34F4A0C6D46CD7CA6ACC00C5C4C71E47C6AD96496B3CBF531F342 │ │ │ │ +A740EE6B99BD70AD490DFA700772A0697EC6561CE88A0113E4DC3B21F372D810 │ │ │ │ +DFF2C3F6EDF3E917BF2664EEFC9AD292DD6CC36853CF936018D43FDB28D5B001 │ │ │ │ +7D1C805F958F13FD221377ABDD69D102E8CC1DAB2E011EE16CF6DB9D195BA702 │ │ │ │ +5A8738FABF989B0351282D0E5121182DFC52169782A5F3DD5D820411BEF909DE │ │ │ │ +04D963E6FDA76F88508C4E91DDAAA1748F396A1D380D8CA429673AF27C164434 │ │ │ │ +771781B39565D3EE50F3CF03EF12908B13A6C11C9AB7631B32125828B13050BA │ │ │ │ +041A93B97AC32D4A1E28C5FA98CDEE998B5F97823D6291D01E3611A16854F1FE │ │ │ │ +69B9D6D2AE3E56D012B7BC3E582FB4C23188A5E365E65EB1F804A706AF73A2F8 │ │ │ │ +9804808EF71F0982B14133BF9A27D6F2E719BDB751022B1B052722933948904E │ │ │ │ +3582E363478DCDA115205A0FDE39DF71FEAEEB104419C35A6B0678C19616C6D9 │ │ │ │ +A892DC2F4257069AF096C80C099CD13024DF3995F28C694E00D1F08B43D4450C │ │ │ │ +D18F5C925CFD2D124E74FC64BBAA0DE32A79E4A4507B5B5DD834C67160CDA110 │ │ │ │ +EF0061DD27E8864F4250A92BBEFD75C784BB98F4FA789A8236C2A21E4E61ABD0 │ │ │ │ +C6B4D13B3C31AC8E55FA34BEC7C308C61FB0280382EC6AFD63D959678D42D2B3 │ │ │ │ +4134F6236A0808D9302B4E3C6F81FC6973B4833602750CCB5DE36AEA23ED6BD4 │ │ │ │ +5B72DF0DD7B81C871CAA6EC190748CD8C4B998D576E5D340ACAC0617DDBE461C │ │ │ │ +8E82E809D11A01D265D039F4315066832E27E08A6F067E129E45FBF533F761BB │ │ │ │ +EC3C071209BECE7D14D3184B2E6BFD65717A5A7C08F3776B20C513649488C1CF │ │ │ │ +03333805B249D1034FB0AE2D7D2A23324EE27AEDB68F8E329A8052FE58D7C0D9 │ │ │ │ +A40A0CDC79F2085C4F39A7DFDB625C8F071E2A32CF6215DD3E060A9BABF7A3AA │ │ │ │ +C57DA0C0571C5D6EEAA975D1BB9C99F8EA4958360E43E8C60080B03DC4435550 │ │ │ │ +E6048DDD35DF3E5DA69669F266FFD7B44649A68025270DC84258E329F6E6907C │ │ │ │ +BCFF900D715D0C7EC43C5E7180CAD6427BA4FD41AAD6531A5C06B0EC26DDA71F │ │ │ │ +4A9DA50DE919E79226F6DDF7C1BA478936AA86CEAD93072CC2960E98C45A1A0C │ │ │ │ +60CF8A26E4278AB4F9E28FA6532648196CC455607D6BCD00F60675DE8CC02C8C │ │ │ │ +9BE5D5B714731814D5B008EE236563D77AC6895E0158877C95797E07C02AFEBE │ │ │ │ +CC9FE97D5E103F7DB0A834E9A7A75893EC66340B0E4C6F0EEDEF43415BF9FCF4 │ │ │ │ +47340CBEA4DCFBA0D028EB2149FFBBDB3322AE5F6FD20242526EDC55E476D983 │ │ │ │ +DC │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3296,15 +3302,15 @@ │ │ │ │ 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 3[51 12[45 22[47 │ │ │ │ -15[25 3[45 3[45 1[45 3[25 44[{}11 90.9091 /CMSL10 rf │ │ │ │ +15[25 3[45 3[45 45 45 3[25 44[{}12 90.9091 /CMSL10 rf │ │ │ │ %DVIPSBitmapFont: Fg tcrm1095 10.95 1 │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ /Dotaccent/cedilla/ogonek/quotesinglbase.ts1 4{/.notdef}repeat │ │ │ │ /quotedblbase.ts1/.notdef/.notdef/twelveudash/threequartersemdash │ │ │ │ /afii61664.cap/arrowleft/arrowright/tieaccentlowercase/tieaccentcapital │ │ │ │ /tieaccentlowercase.new/tieaccentcapital.new/.notdef/afii61664.asc/uni2422 3 │ │ │ │ {/.notdef}repeat/dollar/.notdef/.notdef/quotesingle/.notdef/.notdef │ │ │ │ @@ -3415,17 +3421,17 @@ │ │ │ │ (not)h(y)m(et)h(zero.)141 5294 y(Ha)m(ving)27 b(a)g(lo)s(c)m(k)g(asso)s │ │ │ │ (ciated)g(with)f(a)h 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 1081 4 v │ │ │ │ -1263 w Fh(ChvList)29 b Ff(:)40 b Fe(DRAFT)30 b Ff(Jan)m(uary)g(6,)h │ │ │ │ -(2026)p 2819 100 V 0 399 a Fi(F)-8 b(or)35 b(a)g(m)m(ultithreaded)g │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fi(2)p 136 100 1059 4 v │ │ │ │ +1240 w Fh(ChvList)29 b Ff(:)40 b Fe(DRAFT)31 b Ff(Jan)m(uary)f(10,)h │ │ │ │ +(2026)p 2842 100 V 0 399 a Fi(F)-8 b(or)35 b(a)g(m)m(ultithreaded)g │ │ │ │ (factorization)i(there)d(is)h(one)f Fh(ChvList)f Fi(ob)5 │ │ │ │ b(ject)35 b(that)g(is)g(shared)e(b)m(y)i(all)g(threads.)52 │ │ │ │ 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 │ │ │ │ @@ -3478,17 +3484,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 1081 4 v 1263 100 a Fh(ChvList)28 │ │ │ │ -b Ff(:)41 b Fe(DRAFT)121 b Ff(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2772 100 V 1081 w Fi(3)111 399 y(3.)46 b Fh(void)h(ChvList_clearData)c │ │ │ │ +TeXDict begin 3 2 bop 91 100 1059 4 v 1240 100 a Fh(ChvList)28 │ │ │ │ +b Ff(:)41 b Fe(DRAFT)121 b Ff(Jan)m(uary)30 b(10,)i(2026)p │ │ │ │ +2795 100 V 1059 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 │ │ │ │ @@ -3551,17 +3557,17 @@ │ │ │ │ 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 1081 4 v │ │ │ │ -1263 w Fh(ChvList)29 b Ff(:)40 b Fe(DRAFT)30 b Ff(Jan)m(uary)g(6,)h │ │ │ │ -(2026)p 2819 100 V 111 399 a Fi(3.)46 b Fh(Chv)h(*)h(ChvList_getList)43 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fi(4)p 136 100 1059 4 v │ │ │ │ +1240 w Fh(ChvList)29 b Ff(:)40 b Fe(DRAFT)31 b Ff(Jan)m(uary)f(10,)h │ │ │ │ +(2026)p 2842 100 V 111 399 a Fi(3.)46 b Fh(Chv)h(*)h(ChvList_getList)43 │ │ │ │ b(\()48 b(ChvList)e(*list,)g(int)h(ilist)f(\))h(;)227 │ │ │ │ 549 y Fi(If)28 b(list)h Fh(ilist)e Fi(is)h(empt)m(y)-8 │ │ │ │ b(,)30 b(the)f(metho)s(d)f(returns)f Fh(NULL)p Fi(.)g(Otherwise,)i(if)f │ │ │ │ (the)h(list)g(needs)f(to)h(b)s(e)e(lo)s(c)m(k)m(ed,)k(the)227 │ │ │ │ 662 y(lo)s(c)m(k)37 b(is)e(lo)s(c)m(k)m(ed.)57 b(The)34 │ │ │ │ b(head)h(of)h(the)f(list)h(is)f(sa)m(v)m(ed)i(to)f(a)f(p)s(oin)m(ter)h │ │ │ │ (and)e(then)h(the)h(head)f(is)g(set)h(to)g Fh(NULL)p │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -22,15 +22,15 @@ │ │ │ │ │ The first two operations are queries, and can be done without locking the list. The third operation │ │ │ │ │ needs a lock only when two or more threads will be inserting objects into the list. The fourth │ │ │ │ │ operation requires a lock only when one thread will add an object while another thread removes │ │ │ │ │ the object and the incoming count is not yet zero. │ │ │ │ │ Having a lock associated with a 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 January 6, 2026 │ │ │ │ │ + 2 ChvList : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 3 │ │ │ │ │ + ChvList : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 4 ChvList : DRAFT January 10, 2026 │ │ │ │ │ 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 2026.01.06:2034 │ │ │ │ +%DVIPSSource: TeX output 2026.01.10:0513 │ │ │ │ %%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 │ │ │ │ @@ -1157,14 +1157,15 @@ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ /UnderlineThickness 50 def │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ +dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ dup 54 /six put │ │ │ │ dup 58 /colon put │ │ │ │ dup 74 /J put │ │ │ │ dup 97 /a put │ │ │ │ dup 110 /n put │ │ │ │ dup 114 /r put │ │ │ │ @@ -1354,79 +1355,84 @@ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB88440048702D1F │ │ │ │ -77994EE04EC3B4531D6E1888C86A8F0DA6CF1F056F16AB0DD76C862830F89DA4 │ │ │ │ -28923B3AA543E0D6E41D3BD283E600BC11F889315EE92C675C109C81065ED1BC │ │ │ │ -82A5583D1B723D50051B0557A367887F5B263014C6E77288B4883C50889473D3 │ │ │ │ -3787BAD4BEB88BD1353AFA5B73E61814819537E7FF09F53EF94792BB3DD36ED0 │ │ │ │ -002D0E7A6CDAB85A9C17AF5664BCB5A71663B861880F3ECCABC8E7A2FC81A4CC │ │ │ │ -AE7A87503FDC1CE0077BA51ECC7B43B60793FED8E9AAD5BBD03ADD6183DCD26D │ │ │ │ -24A74163611C05562437644EF9B8889FD4F9D311911204FEFD35237486F2D2D0 │ │ │ │ -B6783A03BF12EA6D19D6D0F87E4D08515F12F9CBF1961CAA71E0D69FE3C4C4D2 │ │ │ │ -7C7FB64ED24F8684C8F00C2BEDEA53EA390CDC0B5BEBD7DD982580B2EA1F1F89 │ │ │ │ -CFED5916630DC2BA32BB9180277E1ABC339B3B7DE086717BD93F7FF3681BA5B3 │ │ │ │ -FCF671C4B293C2DE4A322F0AA3323A4934444C69F23EF90120B8755482757759 │ │ │ │ -C457A435FB8BB4922BD92C5F3D9555D978275C510183E29DFF2FCE4ABBFC18DE │ │ │ │ -76CAD3B486BA12047DD808CD4D521A0FD368E4AE79DE262630983A5D6F0B679D │ │ │ │ -2F005306393C520E1B6987302D029939D94B0178DB06211C7F3B123A41E6E7BA │ │ │ │ -87164737110707A3ED3983895F3FBC815EF370F54C808ED93D910937BCA3D8AF │ │ │ │ -7CBF80DC180CDA54059DB76710B4FCD4139D5B7DA7DB1A0D0AF86AD2453D3691 │ │ │ │ -0BA5BAD40FF28BB4235FCD40FC87C2B888E67928D9B0ACA5692149373DBB93BF │ │ │ │ -6520DDD36A9BFE4D415CA67A5E04F1D48BDB28C69676273ED842CF7980E8E17C │ │ │ │ -B88563F407E340AFAE8F51AABCF8A39521BCEE1EC8396D75E124B24B4675909F │ │ │ │ -E246F87DA08584A3173AEFF153ECDF610543FA7474D125A31ADD6285A49222B5 │ │ │ │ -177066EA395BFA4B1114C7FCF7712DA772A21C99E64F4E1181E69CAF98137FA2 │ │ │ │ -76CF74F682B8CD7BA6EEA79B70FA8A76809634517F8415B6F21A5A7D6099B5E8 │ │ │ │ -EAB356BBC4FB68C72B8C61DDCE8EAB1A53B9D6BAD78584B307EFF57CEAE74884 │ │ │ │ -35987BF89E9E60E962D22FA5612F2DB5EB840499B7CC11A34BA5DEE30D277540 │ │ │ │ -39B8211D69B448ADE95B723F8369A631DE6DD75703AFD7485FB7FFF41A60CBE4 │ │ │ │ -813B8FEA120662355773830EF85015E7FFD609B2CEE52CB5FFE9C35B6BEEE4A4 │ │ │ │ -A66719E31CE1523FDD7771FB1E881A32A7DB7D92C2326DF4B93241C14ABFCCD6 │ │ │ │ -8E5BCAC61E800E6B1B4687ADA4CBF41EC0AFC26D021D1772CBDCD0516DF5EBE1 │ │ │ │ -37FD2AC5ABB8D774B5735940F1F6866D044FD8CE74444FAA5D0202C11E39CC10 │ │ │ │ -213731F41F704450E1D0565013BF22188442CE0FC256190A9F92F0C802AA2660 │ │ │ │ -614AFE9E9C82F8CD2E6035EEF84E5F16CBB690AC819B4B910EA8E81106F0ACE5 │ │ │ │ -CDFE77DAF69E4AFE72C43145A3ABCC40B6C5297487083F738C86422277AC2267 │ │ │ │ -51759F1B7F129E87DE16433B664AD0FB6D30424A11C70B52B591352BF653C8B0 │ │ │ │ -0840C224FBFEAA996A6BE1D69414DD778C2EF56A63B64D59BA412EC3E4000831 │ │ │ │ -73361FB9813F9A7C74BA3A50D331B07B61492E5D75F0861B530587269B3ADC90 │ │ │ │ -EA1DF586AC4BC57C3230893EFE953A6E76950ABA895FAC711D3BD330ABC6846A │ │ │ │ -C91F6ABF3410B913DFE5C8266020CEE5C7A9EDA2E7D9BCA797DC486443C7BA7C │ │ │ │ -7E03439A40927FA3251B6D417E5653E7799E9D6F04149C34096E2CA9B1F9B1EC │ │ │ │ -38958A2521B4A657A8B9F16E1FD66C7E345A10D7AA0241559503D214AC6507A4 │ │ │ │ -CBDE8617AA7ED136577734428594487F3565BF45FA196375759E2FE23C26EC8A │ │ │ │ -3310A36917A5E2F260EAB31030F8E570303D36B833626938F56939849DFA1F3F │ │ │ │ -66D0A317BB6364427F1512AAB380B555611C76345C02C3A6FBF78590331D5ECA │ │ │ │ -029DEFB722F6AB05327C2A31AB7BD6ED0F0386E6F45C1278048D22B90B074CCB │ │ │ │ -2BBEBCC1927C97EC532E651CAF0058AFE8FC08F00F0216D5DD9830C294FF76DA │ │ │ │ -426A073B3A3AEEFBDEE71C5182186311607ECDBD1F1AF4C5E79748CD01445C8D │ │ │ │ -25DD49490C8A6810065908222C8D0AC9F83AFBEE7115023E2D2615A170A5D40A │ │ │ │ -AD49BDF59A59187B6434F83E68EED22EF4EFDBADED6F1559AC779E0377FE7375 │ │ │ │ -D7060584FE74B1859D0FD98772253A712B17FFBB467840C484F5EF82C5677ADB │ │ │ │ -EDF159A456A526B8B9F6E8FC7608DFD47B0F09E26118F79CBE53B6C4E32BACAB │ │ │ │ -D62AFD4AA527CC4B587BB41A17A9BCE106A8C592BC9B73422B712C466C284A17 │ │ │ │ -E8D0C1E01D43C739FB1C083AD2714F78AC785B0C09AA7E67417A73510E00F2FE │ │ │ │ -E3D3EBF626A2F3A20A386E3F98D1285F4A2A332FC609CD191F01F128627B3505 │ │ │ │ -0AC2387DC0AD1B950490EBB5045F22BEC54955402CE2D267B6754E7C32BE84E8 │ │ │ │ -E6B63E3D3EAEE979442D167AEF69C27B22A8E887A2510C3A168D95D285CF7515 │ │ │ │ -011C921679B2F386575826A3F2071D015EEB78F02A4F94D4E5F07873623200F8 │ │ │ │ -7DF95BA0DC6B6D31DECC925BEA1E6A7C52FE685800EC33CBAE830F1AE5454DFA │ │ │ │ -913B8F457D7E2D3DFF019869E3301EEEC64A38295DE6B588E776922B32362382 │ │ │ │ -D1CF3D058613C8A96E6994D3EC23E8B71EC6E718383B20BB6C22DB6F93FA559F │ │ │ │ -3449CA84EB33B25C8BE0DFD1C29DC4FBD7AFBDC96C12162CAAB2C5E354B0FB10 │ │ │ │ -4BF8CC3610875ABD5111D09F2F847822118972214EDEB9EE34BAFE45E7AC15C5 │ │ │ │ -CA63EC4A3CEEA505A5EDD88A59BB67C71C3E026DFFE177F99BC69E6635545D03 │ │ │ │ -77A634F98230EF64381EC67CA519D4B9770EFA844789E21970F89D5FFC5DEAA8 │ │ │ │ -DC008EBA09306967ED090FF91B002FA6120C2B461A87AA32EFB003C5578D8EEF │ │ │ │ - │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ +AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ +E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ +46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ +FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ +389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ +7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ +2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ +C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ +B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ +AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ +E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ +F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ +0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ +2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ +29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ +CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ +6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ +5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ +36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0DD96AB602D004DCFE000A0 │ │ │ │ +ABE41BAB8AB7D50BD32BFD6F1AA3B60B09B9BE4E273EDD2DDCB21A98A760D17D │ │ │ │ +0A5C9303AFE63CF80A93E60C72A0576FAADEECBE2DE91892D210EB0AD1889C04 │ │ │ │ +C7530652584E775B4ED19CFB4B8DBCCC57A9FA9E4DDC8A1E5A1D3BE9E93407A6 │ │ │ │ +2C237ACE27F4EDA330EE952EDCBE91683AA98A29197735006666C96A2CE7C787 │ │ │ │ +BBA5A57C4DBF6FAA5B38AF226B5D9A65FAD84650AC0C3DB29C30602699F81E01 │ │ │ │ +0BAF8F1CE44A03C680121B77A1703C638187675D6C22C49F9902475E6CE9C732 │ │ │ │ +48ED028CC92EA542EF189CC9CA1C384E3387793057615D0A2BF040CC90B275B9 │ │ │ │ +F70A5310874DC2E0A360373E7BCAC88250FBC8989C7D18DA8274C06F02FCF31C │ │ │ │ +2B3868CBAF083DAC2FB159DE368261842DB7C9EA1A86B17617C861A48FBA8FF9 │ │ │ │ +D184CB026F4A418C0955347612F94C039B1536A76CB182A591DD7C02D509CF16 │ │ │ │ +8B9E46502ABF5DE31F5DFBD19C7417A2AF7AF13F0D5FF837C94CE56F07B96337 │ │ │ │ +0ED215252346FAEB54B5F3ABE29709B7ECB9FBD23A4AD397E6ABA6938F1BBF33 │ │ │ │ +1D5460D9414F0B8725DA832744525C13E3FD9C8DB33FBEE12F9C4969988402C8 │ │ │ │ +96AF916364CC2DF17EDBA622FC0A5D0013418E29F912FFA06F8D7E31ECAB0B08 │ │ │ │ +C4D2D8EE537CC768FC9038DD6D86D33642C6E812E941F157FC6917AF19C2B99A │ │ │ │ +5BF10B9A7ECF711BBB6F33C8C3DAD778153122593F36ABDDC0E97A602B045DE6 │ │ │ │ +19BD82D877DDA960AB11EF48C7F75A28D0D731D4A5DBC98283087267CD1A470D │ │ │ │ +537E949DA5EECF097B099547995BE066A941CED683B5748962AD2B02C21636C0 │ │ │ │ +2EAFA33CA0CB3BF8A95703F015A210D918865B9BEA2890DCFB68BC3719C305EC │ │ │ │ +315EC8727BF9A93632AB9E3090B100C022EE1396CD329B37547F26A7DCE52BD7 │ │ │ │ +F91B7388DEC34F4A0C6D46CD7CA6ACC00C5C4C71E47C6AD96496B3CBF531F342 │ │ │ │ +A740EE6B99BD70AD490DFA700772A0697EC6561CE88A0113E4DC3B21F372D810 │ │ │ │ +DFF2C3F6EDF3E917BF2664EEFC9AD292DD6CC36853CF936018D43FDB28D5B001 │ │ │ │ +7D1C805F958F13FD221377ABDD69D102E8CC1DAB2E011EE16CF6DB9D195BA702 │ │ │ │ +5A8738FABF989B0351282D0E5121182DFC52169782A5F3DD5D820411BEF909DE │ │ │ │ +04D963E6FDA76F88508C4E91DDAAA1748F396A1D380D8CA429673AF27C164434 │ │ │ │ +771781B39565D3EE50F3CF03EF12908B13A6C11C9AB7631B32125828B13050BA │ │ │ │ +041A93B97AC32D4A1E28C5FA98CDEE998B5F97823D6291D01E3611A16854F1FE │ │ │ │ +69B9D6D2AE3E56D012B7BC3E582FB4C23188A5E365E65EB1F804A706AF73A2F8 │ │ │ │ +9804808EF71F0982B14133BF9A27D6F2E719BDB751022B1B052722933948904E │ │ │ │ +3582E363478DCDA115205A0FDE39DF71FEAEEB104419C35A6B0678C19616C6D9 │ │ │ │ +A892DC2F4257069AF096C80C099CD13024DF3995F28C694E00D1F08B43D4450C │ │ │ │ +D18F5C925CFD2D124E74FC64BBAA0DE32A79E4A4507B5B5DD834C67160CDA110 │ │ │ │ +EF0061DD27E8864F4250A92BBEFD75C784BB98F4FA789A8236C2A21E4E61ABD0 │ │ │ │ +C6B4D13B3C31AC8E55FA34BEC7C308C61FB0280382EC6AFD63D959678D42D2B3 │ │ │ │ +4134F6236A0808D9302B4E3C6F81FC6973B4833602750CCB5DE36AEA23ED6BD4 │ │ │ │ +5B72DF0DD7B81C871CAA6EC190748CD8C4B998D576E5D340ACAC0617DDBE461C │ │ │ │ +8E82E809D11A01D265D039F4315066832E27E08A6F067E129E45FBF533F761BB │ │ │ │ +EC3C071209BECE7D14D3184B2E6BFD65717A5A7C08F3776B20C513649488C1CF │ │ │ │ +03333805B249D1034FB0AE2D7D2A23324EE27AEDB68F8E329A8052FE58D7C0D9 │ │ │ │ +A40A0CDC79F2085C4F39A7DFDB625C8F071E2A32CF6215DD3E060A9BABF7A3AA │ │ │ │ +C57DA0C0571C5D6EEAA975D1BB9C99F8EA4958360E43E8C60080B03DC4435550 │ │ │ │ +E6048DDD35DF3E5DA69669F266FFD7B44649A68025270DC84258E329F6E6907C │ │ │ │ +BCFF900D715D0C7EC43C5E7180CAD6427BA4FD41AAD6531A5C06B0EC26DDA71F │ │ │ │ +4A9DA50DE919E79226F6DDF7C1BA478936AA86CEAD93072CC2960E98C45A1A0C │ │ │ │ +60CF8A26E4278AB4F9E28FA6532648196CC455607D6BCD00F60675DE8CC02C8C │ │ │ │ +9BE5D5B714731814D5B008EE236563D77AC6895E0158877C95797E07C02AFEBE │ │ │ │ +CC9FE97D5E103F7DB0A834E9A7A75893EC66340B0E4C6F0EEDEF43415BF9FCF4 │ │ │ │ +47340CBEA4DCFBA0D028EB2149FFBBDB3322AE5F6FD20242526EDC55E476D983 │ │ │ │ +DC │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3098,15 +3104,15 @@ │ │ │ │ @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 3[51 12[45 22[47 15[25 3[45 3[45 │ │ │ │ -1[45 3[25 44[{}11 90.9091 /CMSL10 rf /Fe 134[44 4[30 │ │ │ │ +45 45 3[25 44[{}12 90.9091 /CMSL10 rf /Fe 134[44 4[30 │ │ │ │ 37 38 2[46 51 74 23 42 1[28 46 42 1[42 46 42 1[46 12[65 │ │ │ │ 1[66 11[59 62 69 2[68 6[28 12[33 45[{}24 90.9091 /CMTI10 │ │ │ │ rf │ │ │ │ %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 │ │ │ │ @@ -3226,17 +3232,17 @@ │ │ │ │ (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 1057 4 v │ │ │ │ -1239 w Fg(DChvList)28 b Fd(:)41 b Fe(DRAFT)30 b Fd(Jan)m(uary)g(6,)h │ │ │ │ -(2026)p 2843 100 V 0 399 a Fh(requires)f(that)i(a)f(lo)s(c)m(k)h(b)s(e) │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fh(2)p 136 100 1035 4 v │ │ │ │ +1217 w Fg(DChvList)28 b Fd(:)40 b Fe(DRAFT)31 b Fd(Jan)m(uary)f(10,)h │ │ │ │ +(2026)p 2866 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 │ │ │ │ @@ -3289,17 +3295,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 1057 4 v 1239 100 a Fg(DChvList)28 │ │ │ │ -b Fd(:)41 b Fe(DRAFT)121 b Fd(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2796 100 V 1057 w Fh(3)111 399 y(2.)46 b Fg(void)h │ │ │ │ +TeXDict begin 3 2 bop 91 100 1035 4 v 1216 100 a Fg(DChvList)28 │ │ │ │ +b Fd(:)41 b Fe(DRAFT)121 b Fd(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2818 100 V 1035 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 │ │ │ │ @@ -3366,17 +3372,17 @@ │ │ │ │ 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 1057 4 v │ │ │ │ -1239 w Fg(DChvList)28 b Fd(:)41 b Fe(DRAFT)30 b Fd(Jan)m(uary)g(6,)h │ │ │ │ -(2026)p 2843 100 V 0 399 a Fa(1.2.4)112 b(IO)38 b(metho)s(ds)111 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fh(4)p 136 100 1035 4 v │ │ │ │ +1217 w Fg(DChvList)28 b Fd(:)40 b Fe(DRAFT)31 b Fd(Jan)m(uary)f(10,)h │ │ │ │ +(2026)p 2866 100 V 0 399 a Fa(1.2.4)112 b(IO)38 b(metho)s(ds)111 │ │ │ │ 595 y Fh(1.)46 b Fg(void)h(ChvManager_writeForHuman)o(Eye)41 │ │ │ │ b(\()48 b(ChvManager)d(*manager,)g(FILE)i(*fp)g(\))g(;)227 │ │ │ │ 745 y Fh(This)30 b(metho)s(d)g(writes)g(the)h(statistics)h(to)f(a)g │ │ │ │ (\014le)f(in)g(user)g(readable)h(form.)227 896 y Fe(Err)-5 │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fh(If)30 b Fg(manager)f │ │ │ │ Fh(or)h Fg(fp)g Fh(are)h Fg(NULL)p Fh(,)e(an)h(error)g(message)i(is)e │ │ │ │ (prin)m(ted)g(and)g(zero)h(is)g(returned.)p eop end │ │ │ │ ├── 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 January 6, 2026 │ │ │ │ │ + 2 DChvList : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 3 │ │ │ │ │ + DChvList : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 4 DChvList : DRAFT January 10, 2026 │ │ │ │ │ 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 2026.01.06:2034 │ │ │ │ +%DVIPSSource: TeX output 2026.01.10:0513 │ │ │ │ %%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 │ │ │ │ @@ -1236,14 +1236,15 @@ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ /UnderlineThickness 50 def │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ +dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ dup 54 /six put │ │ │ │ dup 58 /colon put │ │ │ │ dup 74 /J put │ │ │ │ dup 97 /a put │ │ │ │ dup 110 /n put │ │ │ │ dup 114 /r put │ │ │ │ @@ -1433,79 +1434,84 @@ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB88440048702D1F │ │ │ │ -77994EE04EC3B4531D6E1888C86A8F0DA6CF1F056F16AB0DD76C862830F89DA4 │ │ │ │ -28923B3AA543E0D6E41D3BD283E600BC11F889315EE92C675C109C81065ED1BC │ │ │ │ -82A5583D1B723D50051B0557A367887F5B263014C6E77288B4883C50889473D3 │ │ │ │ -3787BAD4BEB88BD1353AFA5B73E61814819537E7FF09F53EF94792BB3DD36ED0 │ │ │ │ -002D0E7A6CDAB85A9C17AF5664BCB5A71663B861880F3ECCABC8E7A2FC81A4CC │ │ │ │ -AE7A87503FDC1CE0077BA51ECC7B43B60793FED8E9AAD5BBD03ADD6183DCD26D │ │ │ │ -24A74163611C05562437644EF9B8889FD4F9D311911204FEFD35237486F2D2D0 │ │ │ │ -B6783A03BF12EA6D19D6D0F87E4D08515F12F9CBF1961CAA71E0D69FE3C4C4D2 │ │ │ │ -7C7FB64ED24F8684C8F00C2BEDEA53EA390CDC0B5BEBD7DD982580B2EA1F1F89 │ │ │ │ -CFED5916630DC2BA32BB9180277E1ABC339B3B7DE086717BD93F7FF3681BA5B3 │ │ │ │ -FCF671C4B293C2DE4A322F0AA3323A4934444C69F23EF90120B8755482757759 │ │ │ │ -C457A435FB8BB4922BD92C5F3D9555D978275C510183E29DFF2FCE4ABBFC18DE │ │ │ │ -76CAD3B486BA12047DD808CD4D521A0FD368E4AE79DE262630983A5D6F0B679D │ │ │ │ -2F005306393C520E1B6987302D029939D94B0178DB06211C7F3B123A41E6E7BA │ │ │ │ -87164737110707A3ED3983895F3FBC815EF370F54C808ED93D910937BCA3D8AF │ │ │ │ -7CBF80DC180CDA54059DB76710B4FCD4139D5B7DA7DB1A0D0AF86AD2453D3691 │ │ │ │ -0BA5BAD40FF28BB4235FCD40FC87C2B888E67928D9B0ACA5692149373DBB93BF │ │ │ │ -6520DDD36A9BFE4D415CA67A5E04F1D48BDB28C69676273ED842CF7980E8E17C │ │ │ │ -B88563F407E340AFAE8F51AABCF8A39521BCEE1EC8396D75E124B24B4675909F │ │ │ │ -E246F87DA08584A3173AEFF153ECDF610543FA7474D125A31ADD6285A49222B5 │ │ │ │ -177066EA395BFA4B1114C7FCF7712DA772A21C99E64F4E1181E69CAF98137FA2 │ │ │ │ -76CF74F682B8CD7BA6EEA79B70FA8A76809634517F8415B6F21A5A7D6099B5E8 │ │ │ │ -EAB356BBC4FB68C72B8C61DDCE8EAB1A53B9D6BAD78584B307EFF57CEAE74884 │ │ │ │ -35987BF89E9E60E962D22FA5612F2DB5EB840499B7CC11A34BA5DEE30D277540 │ │ │ │ -39B8211D69B448ADE95B723F8369A631DE6DD75703AFD7485FB7FFF41A60CBE4 │ │ │ │ -813B8FEA120662355773830EF85015E7FFD609B2CEE52CB5FFE9C35B6BEEE4A4 │ │ │ │ -A66719E31CE1523FDD7771FB1E881A32A7DB7D92C2326DF4B93241C14ABFCCD6 │ │ │ │ -8E5BCAC61E800E6B1B4687ADA4CBF41EC0AFC26D021D1772CBDCD0516DF5EBE1 │ │ │ │ -37FD2AC5ABB8D774B5735940F1F6866D044FD8CE74444FAA5D0202C11E39CC10 │ │ │ │ -213731F41F704450E1D0565013BF22188442CE0FC256190A9F92F0C802AA2660 │ │ │ │ -614AFE9E9C82F8CD2E6035EEF84E5F16CBB690AC819B4B910EA8E81106F0ACE5 │ │ │ │ -CDFE77DAF69E4AFE72C43145A3ABCC40B6C5297487083F738C86422277AC2267 │ │ │ │ -51759F1B7F129E87DE16433B664AD0FB6D30424A11C70B52B591352BF653C8B0 │ │ │ │ -0840C224FBFEAA996A6BE1D69414DD778C2EF56A63B64D59BA412EC3E4000831 │ │ │ │ -73361FB9813F9A7C74BA3A50D331B07B61492E5D75F0861B530587269B3ADC90 │ │ │ │ -EA1DF586AC4BC57C3230893EFE953A6E76950ABA895FAC711D3BD330ABC6846A │ │ │ │ -C91F6ABF3410B913DFE5C8266020CEE5C7A9EDA2E7D9BCA797DC486443C7BA7C │ │ │ │ -7E03439A40927FA3251B6D417E5653E7799E9D6F04149C34096E2CA9B1F9B1EC │ │ │ │ -38958A2521B4A657A8B9F16E1FD66C7E345A10D7AA0241559503D214AC6507A4 │ │ │ │ -CBDE8617AA7ED136577734428594487F3565BF45FA196375759E2FE23C26EC8A │ │ │ │ -3310A36917A5E2F260EAB31030F8E570303D36B833626938F56939849DFA1F3F │ │ │ │ -66D0A317BB6364427F1512AAB380B555611C76345C02C3A6FBF78590331D5ECA │ │ │ │ -029DEFB722F6AB05327C2A31AB7BD6ED0F0386E6F45C1278048D22B90B074CCB │ │ │ │ -2BBEBCC1927C97EC532E651CAF0058AFE8FC08F00F0216D5DD9830C294FF76DA │ │ │ │ -426A073B3A3AEEFBDEE71C5182186311607ECDBD1F1AF4C5E79748CD01445C8D │ │ │ │ -25DD49490C8A6810065908222C8D0AC9F83AFBEE7115023E2D2615A170A5D40A │ │ │ │ -AD49BDF59A59187B6434F83E68EED22EF4EFDBADED6F1559AC779E0377FE7375 │ │ │ │ -D7060584FE74B1859D0FD98772253A712B17FFBB467840C484F5EF82C5677ADB │ │ │ │ -EDF159A456A526B8B9F6E8FC7608DFD47B0F09E26118F79CBE53B6C4E32BACAB │ │ │ │ -D62AFD4AA527CC4B587BB41A17A9BCE106A8C592BC9B73422B712C466C284A17 │ │ │ │ -E8D0C1E01D43C739FB1C083AD2714F78AC785B0C09AA7E67417A73510E00F2FE │ │ │ │ -E3D3EBF626A2F3A20A386E3F98D1285F4A2A332FC609CD191F01F128627B3505 │ │ │ │ -0AC2387DC0AD1B950490EBB5045F22BEC54955402CE2D267B6754E7C32BE84E8 │ │ │ │ -E6B63E3D3EAEE979442D167AEF69C27B22A8E887A2510C3A168D95D285CF7515 │ │ │ │ -011C921679B2F386575826A3F2071D015EEB78F02A4F94D4E5F07873623200F8 │ │ │ │ -7DF95BA0DC6B6D31DECC925BEA1E6A7C52FE685800EC33CBAE830F1AE5454DFA │ │ │ │ -913B8F457D7E2D3DFF019869E3301EEEC64A38295DE6B588E776922B32362382 │ │ │ │ -D1CF3D058613C8A96E6994D3EC23E8B71EC6E718383B20BB6C22DB6F93FA559F │ │ │ │ -3449CA84EB33B25C8BE0DFD1C29DC4FBD7AFBDC96C12162CAAB2C5E354B0FB10 │ │ │ │ -4BF8CC3610875ABD5111D09F2F847822118972214EDEB9EE34BAFE45E7AC15C5 │ │ │ │ -CA63EC4A3CEEA505A5EDD88A59BB67C71C3E026DFFE177F99BC69E6635545D03 │ │ │ │ -77A634F98230EF64381EC67CA519D4B9770EFA844789E21970F89D5FFC5DEAA8 │ │ │ │ -DC008EBA09306967ED090FF91B002FA6120C2B461A87AA32EFB003C5578D8EEF │ │ │ │ - │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ +AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ +E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ +46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ +FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ +389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ +7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ +2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ +C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ +B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ +AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ +E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ +F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ +0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ +2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ +29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ +CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ +6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ +5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ +36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0DD96AB602D004DCFE000A0 │ │ │ │ +ABE41BAB8AB7D50BD32BFD6F1AA3B60B09B9BE4E273EDD2DDCB21A98A760D17D │ │ │ │ +0A5C9303AFE63CF80A93E60C72A0576FAADEECBE2DE91892D210EB0AD1889C04 │ │ │ │ +C7530652584E775B4ED19CFB4B8DBCCC57A9FA9E4DDC8A1E5A1D3BE9E93407A6 │ │ │ │ +2C237ACE27F4EDA330EE952EDCBE91683AA98A29197735006666C96A2CE7C787 │ │ │ │ +BBA5A57C4DBF6FAA5B38AF226B5D9A65FAD84650AC0C3DB29C30602699F81E01 │ │ │ │ +0BAF8F1CE44A03C680121B77A1703C638187675D6C22C49F9902475E6CE9C732 │ │ │ │ +48ED028CC92EA542EF189CC9CA1C384E3387793057615D0A2BF040CC90B275B9 │ │ │ │ +F70A5310874DC2E0A360373E7BCAC88250FBC8989C7D18DA8274C06F02FCF31C │ │ │ │ +2B3868CBAF083DAC2FB159DE368261842DB7C9EA1A86B17617C861A48FBA8FF9 │ │ │ │ +D184CB026F4A418C0955347612F94C039B1536A76CB182A591DD7C02D509CF16 │ │ │ │ +8B9E46502ABF5DE31F5DFBD19C7417A2AF7AF13F0D5FF837C94CE56F07B96337 │ │ │ │ +0ED215252346FAEB54B5F3ABE29709B7ECB9FBD23A4AD397E6ABA6938F1BBF33 │ │ │ │ +1D5460D9414F0B8725DA832744525C13E3FD9C8DB33FBEE12F9C4969988402C8 │ │ │ │ +96AF916364CC2DF17EDBA622FC0A5D0013418E29F912FFA06F8D7E31ECAB0B08 │ │ │ │ +C4D2D8EE537CC768FC9038DD6D86D33642C6E812E941F157FC6917AF19C2B99A │ │ │ │ +5BF10B9A7ECF711BBB6F33C8C3DAD778153122593F36ABDDC0E97A602B045DE6 │ │ │ │ +19BD82D877DDA960AB11EF48C7F75A28D0D731D4A5DBC98283087267CD1A470D │ │ │ │ +537E949DA5EECF097B099547995BE066A941CED683B5748962AD2B02C21636C0 │ │ │ │ +2EAFA33CA0CB3BF8A95703F015A210D918865B9BEA2890DCFB68BC3719C305EC │ │ │ │ +315EC8727BF9A93632AB9E3090B100C022EE1396CD329B37547F26A7DCE52BD7 │ │ │ │ +F91B7388DEC34F4A0C6D46CD7CA6ACC00C5C4C71E47C6AD96496B3CBF531F342 │ │ │ │ +A740EE6B99BD70AD490DFA700772A0697EC6561CE88A0113E4DC3B21F372D810 │ │ │ │ +DFF2C3F6EDF3E917BF2664EEFC9AD292DD6CC36853CF936018D43FDB28D5B001 │ │ │ │ +7D1C805F958F13FD221377ABDD69D102E8CC1DAB2E011EE16CF6DB9D195BA702 │ │ │ │ +5A8738FABF989B0351282D0E5121182DFC52169782A5F3DD5D820411BEF909DE │ │ │ │ +04D963E6FDA76F88508C4E91DDAAA1748F396A1D380D8CA429673AF27C164434 │ │ │ │ +771781B39565D3EE50F3CF03EF12908B13A6C11C9AB7631B32125828B13050BA │ │ │ │ +041A93B97AC32D4A1E28C5FA98CDEE998B5F97823D6291D01E3611A16854F1FE │ │ │ │ +69B9D6D2AE3E56D012B7BC3E582FB4C23188A5E365E65EB1F804A706AF73A2F8 │ │ │ │ +9804808EF71F0982B14133BF9A27D6F2E719BDB751022B1B052722933948904E │ │ │ │ +3582E363478DCDA115205A0FDE39DF71FEAEEB104419C35A6B0678C19616C6D9 │ │ │ │ +A892DC2F4257069AF096C80C099CD13024DF3995F28C694E00D1F08B43D4450C │ │ │ │ +D18F5C925CFD2D124E74FC64BBAA0DE32A79E4A4507B5B5DD834C67160CDA110 │ │ │ │ +EF0061DD27E8864F4250A92BBEFD75C784BB98F4FA789A8236C2A21E4E61ABD0 │ │ │ │ +C6B4D13B3C31AC8E55FA34BEC7C308C61FB0280382EC6AFD63D959678D42D2B3 │ │ │ │ +4134F6236A0808D9302B4E3C6F81FC6973B4833602750CCB5DE36AEA23ED6BD4 │ │ │ │ +5B72DF0DD7B81C871CAA6EC190748CD8C4B998D576E5D340ACAC0617DDBE461C │ │ │ │ +8E82E809D11A01D265D039F4315066832E27E08A6F067E129E45FBF533F761BB │ │ │ │ +EC3C071209BECE7D14D3184B2E6BFD65717A5A7C08F3776B20C513649488C1CF │ │ │ │ +03333805B249D1034FB0AE2D7D2A23324EE27AEDB68F8E329A8052FE58D7C0D9 │ │ │ │ +A40A0CDC79F2085C4F39A7DFDB625C8F071E2A32CF6215DD3E060A9BABF7A3AA │ │ │ │ +C57DA0C0571C5D6EEAA975D1BB9C99F8EA4958360E43E8C60080B03DC4435550 │ │ │ │ +E6048DDD35DF3E5DA69669F266FFD7B44649A68025270DC84258E329F6E6907C │ │ │ │ +BCFF900D715D0C7EC43C5E7180CAD6427BA4FD41AAD6531A5C06B0EC26DDA71F │ │ │ │ +4A9DA50DE919E79226F6DDF7C1BA478936AA86CEAD93072CC2960E98C45A1A0C │ │ │ │ +60CF8A26E4278AB4F9E28FA6532648196CC455607D6BCD00F60675DE8CC02C8C │ │ │ │ +9BE5D5B714731814D5B008EE236563D77AC6895E0158877C95797E07C02AFEBE │ │ │ │ +CC9FE97D5E103F7DB0A834E9A7A75893EC66340B0E4C6F0EEDEF43415BF9FCF4 │ │ │ │ +47340CBEA4DCFBA0D028EB2149FFBBDB3322AE5F6FD20242526EDC55E476D983 │ │ │ │ +DC │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3886,15 +3892,15 @@ │ │ │ │ {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 3[51 12[45 22[47 15[25 3[45 3[45 │ │ │ │ -1[45 3[25 44[{}11 90.9091 /CMSL10 rf /Fd 133[50 59 4[44 │ │ │ │ +45 45 3[25 44[{}12 90.9091 /CMSL10 rf /Fd 133[50 59 4[44 │ │ │ │ 44 46 2[56 62 93 31 2[31 62 2[51 62 50 1[54 11[86 5[84 │ │ │ │ 5[42 6[80 13[56 56 56 56 2[31 46[{}24 99.6264 /CMBX12 │ │ │ │ rf /Fe 140[62 62 2[62 10[62 32[62 67[{}5 119.552 /CMTT12 │ │ │ │ rf /Ff 199[35 35 35 3[35 35 35 48[{}6 66.4176 /CMR8 rf │ │ │ │ %DVIPSBitmapFont: Fg tcrm1095 10.95 1 │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ /Dotaccent/cedilla/ogonek/quotesinglbase.ts1 4{/.notdef}repeat │ │ │ │ @@ -4000,17 +4006,17 @@ │ │ │ │ (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 1105 4 v │ │ │ │ -1287 w Fj(Coords)29 b Fc(:)40 b Fb(DRAFT)31 b Fc(Jan)m(uary)f(6,)h │ │ │ │ -(2026)p 2795 100 V 111 399 a Fk(1.)46 b Fj(Coords)g(*)i(Coords_new)d │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fk(2)p 136 100 1082 4 v │ │ │ │ +1264 w Fj(Coords)29 b Fc(:)41 b Fb(DRAFT)30 b Fc(Jan)m(uary)g(10,)h │ │ │ │ +(2026)p 2818 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 │ │ │ │ @@ -4079,17 +4085,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 1105 4 v 1287 100 a Fj(Coords)28 │ │ │ │ -b Fc(:)41 b Fb(DRAFT)121 b Fc(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2748 100 V 1105 w Fk(3)227 399 y(This)g(metho)s(d)g(initializes)i(a)f │ │ │ │ +TeXDict begin 3 2 bop 91 100 1082 4 v 1264 100 a Fj(Coords)28 │ │ │ │ +b Fc(:)41 b Fb(DRAFT)121 b Fc(Jan)m(uary)30 b(10,)i(2026)p │ │ │ │ +2771 100 V 1082 w Fk(3)227 399 y(This)f(metho)s(d)g(initializes)i(a)f │ │ │ │ Fj(Coords)e Fk(ob)5 b(ject)32 b(for)f(a)h(27-p)s(oin)m(t)h(op)s(erator) │ │ │ │ e(on)h(a)f Fj(n1)21 b Fa(\002)f Fj(n2)h Fa(\002)f Fj(n3)31 │ │ │ │ b Fk(grid)g(with)227 511 y Fj(ncomp)42 b Fk(degrees)j(of)e(freedom)h │ │ │ │ (at)g(a)g(grid)f(p)s(oin)m(t.)81 b(The)43 b(grid's)g(lo)s(cation)i(is)f │ │ │ │ (giv)m(en)h(b)m(y)e(the)h(b)s(ounding)227 624 y(b)s(o)m(x)34 │ │ │ │ b(v)m(ector,)i Fj(bbox[0])31 b Fk(=)i Fi(x)p Fk(-co)s(ordinate)i(of)f │ │ │ │ (the)f(south)m(w)m(est)i(p)s(oin)m(t,)f Fj(bbox[1])e │ │ │ │ @@ -4170,17 +4176,17 @@ │ │ │ │ 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 1105 4 v │ │ │ │ -1287 w Fj(Coords)29 b Fc(:)40 b Fb(DRAFT)31 b Fc(Jan)m(uary)f(6,)h │ │ │ │ -(2026)p 2795 100 V 227 399 a Fb(Err)-5 b(or)34 b(che)-5 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fk(4)p 136 100 1082 4 v │ │ │ │ +1264 w Fj(Coords)29 b Fc(:)41 b Fb(DRAFT)30 b Fc(Jan)m(uary)g(10,)h │ │ │ │ +(2026)p 2818 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 │ │ │ │ @@ -4257,17 +4263,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 1105 4 v 1287 100 a Fj(Coords)28 │ │ │ │ -b Fc(:)41 b Fb(DRAFT)121 b Fc(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2748 100 V 1105 w Fk(5)111 399 y(7.)46 b Fj(int)h │ │ │ │ +TeXDict begin 5 4 bop 91 100 1082 4 v 1264 100 a Fj(Coords)28 │ │ │ │ +b Fc(:)41 b Fb(DRAFT)121 b Fc(Jan)m(uary)30 b(10,)i(2026)p │ │ │ │ +2771 100 V 1082 w Fk(5)111 399 y(7.)46 b Fj(int)h │ │ │ │ (Coords_writeForHumanEye)42 b(\()47 b(Coords)f(*coords,)g(FILE)g(*fp)h │ │ │ │ (\))h(;)227 554 y Fk(This)43 b(metho)s(d)g(write)h(the)g │ │ │ │ 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 │ │ │ │ @@ -4331,17 +4337,17 @@ │ │ │ │ 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 1105 4 v │ │ │ │ -1287 w Fj(Coords)29 b Fc(:)40 b Fb(DRAFT)31 b Fc(Jan)m(uary)f(6,)h │ │ │ │ -(2026)p 2795 100 V 337 399 a Fg(\210)45 b Fk(The)20 b │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fk(6)p 136 100 1082 4 v │ │ │ │ +1264 w Fj(Coords)29 b Fc(:)41 b Fb(DRAFT)30 b Fc(Jan)m(uary)g(10,)h │ │ │ │ +(2026)p 2818 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 │ │ │ │ ├── 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 January 6, 2026 │ │ │ │ │ + 2 Coords : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 3 │ │ │ │ │ + Coords : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 4 Coords : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 5 │ │ │ │ │ + Coords : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 6 Coords : DRAFT January 10, 2026 │ │ │ │ │ • 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 2026.01.06:2034 │ │ │ │ +%DVIPSSource: TeX output 2026.01.10:0513 │ │ │ │ %%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 │ │ │ │ @@ -1406,14 +1406,15 @@ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ /UnderlineThickness 50 def │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ +dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ dup 54 /six put │ │ │ │ dup 58 /colon put │ │ │ │ dup 74 /J put │ │ │ │ dup 97 /a put │ │ │ │ dup 110 /n put │ │ │ │ dup 114 /r put │ │ │ │ @@ -1603,79 +1604,84 @@ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB88440048702D1F │ │ │ │ -77994EE04EC3B4531D6E1888C86A8F0DA6CF1F056F16AB0DD76C862830F89DA4 │ │ │ │ -28923B3AA543E0D6E41D3BD283E600BC11F889315EE92C675C109C81065ED1BC │ │ │ │ -82A5583D1B723D50051B0557A367887F5B263014C6E77288B4883C50889473D3 │ │ │ │ -3787BAD4BEB88BD1353AFA5B73E61814819537E7FF09F53EF94792BB3DD36ED0 │ │ │ │ -002D0E7A6CDAB85A9C17AF5664BCB5A71663B861880F3ECCABC8E7A2FC81A4CC │ │ │ │ -AE7A87503FDC1CE0077BA51ECC7B43B60793FED8E9AAD5BBD03ADD6183DCD26D │ │ │ │ -24A74163611C05562437644EF9B8889FD4F9D311911204FEFD35237486F2D2D0 │ │ │ │ -B6783A03BF12EA6D19D6D0F87E4D08515F12F9CBF1961CAA71E0D69FE3C4C4D2 │ │ │ │ -7C7FB64ED24F8684C8F00C2BEDEA53EA390CDC0B5BEBD7DD982580B2EA1F1F89 │ │ │ │ -CFED5916630DC2BA32BB9180277E1ABC339B3B7DE086717BD93F7FF3681BA5B3 │ │ │ │ -FCF671C4B293C2DE4A322F0AA3323A4934444C69F23EF90120B8755482757759 │ │ │ │ -C457A435FB8BB4922BD92C5F3D9555D978275C510183E29DFF2FCE4ABBFC18DE │ │ │ │ -76CAD3B486BA12047DD808CD4D521A0FD368E4AE79DE262630983A5D6F0B679D │ │ │ │ -2F005306393C520E1B6987302D029939D94B0178DB06211C7F3B123A41E6E7BA │ │ │ │ -87164737110707A3ED3983895F3FBC815EF370F54C808ED93D910937BCA3D8AF │ │ │ │ -7CBF80DC180CDA54059DB76710B4FCD4139D5B7DA7DB1A0D0AF86AD2453D3691 │ │ │ │ -0BA5BAD40FF28BB4235FCD40FC87C2B888E67928D9B0ACA5692149373DBB93BF │ │ │ │ -6520DDD36A9BFE4D415CA67A5E04F1D48BDB28C69676273ED842CF7980E8E17C │ │ │ │ -B88563F407E340AFAE8F51AABCF8A39521BCEE1EC8396D75E124B24B4675909F │ │ │ │ -E246F87DA08584A3173AEFF153ECDF610543FA7474D125A31ADD6285A49222B5 │ │ │ │ -177066EA395BFA4B1114C7FCF7712DA772A21C99E64F4E1181E69CAF98137FA2 │ │ │ │ -76CF74F682B8CD7BA6EEA79B70FA8A76809634517F8415B6F21A5A7D6099B5E8 │ │ │ │ -EAB356BBC4FB68C72B8C61DDCE8EAB1A53B9D6BAD78584B307EFF57CEAE74884 │ │ │ │ -35987BF89E9E60E962D22FA5612F2DB5EB840499B7CC11A34BA5DEE30D277540 │ │ │ │ -39B8211D69B448ADE95B723F8369A631DE6DD75703AFD7485FB7FFF41A60CBE4 │ │ │ │ -813B8FEA120662355773830EF85015E7FFD609B2CEE52CB5FFE9C35B6BEEE4A4 │ │ │ │ -A66719E31CE1523FDD7771FB1E881A32A7DB7D92C2326DF4B93241C14ABFCCD6 │ │ │ │ -8E5BCAC61E800E6B1B4687ADA4CBF41EC0AFC26D021D1772CBDCD0516DF5EBE1 │ │ │ │ -37FD2AC5ABB8D774B5735940F1F6866D044FD8CE74444FAA5D0202C11E39CC10 │ │ │ │ -213731F41F704450E1D0565013BF22188442CE0FC256190A9F92F0C802AA2660 │ │ │ │ -614AFE9E9C82F8CD2E6035EEF84E5F16CBB690AC819B4B910EA8E81106F0ACE5 │ │ │ │ -CDFE77DAF69E4AFE72C43145A3ABCC40B6C5297487083F738C86422277AC2267 │ │ │ │ -51759F1B7F129E87DE16433B664AD0FB6D30424A11C70B52B591352BF653C8B0 │ │ │ │ -0840C224FBFEAA996A6BE1D69414DD778C2EF56A63B64D59BA412EC3E4000831 │ │ │ │ -73361FB9813F9A7C74BA3A50D331B07B61492E5D75F0861B530587269B3ADC90 │ │ │ │ -EA1DF586AC4BC57C3230893EFE953A6E76950ABA895FAC711D3BD330ABC6846A │ │ │ │ -C91F6ABF3410B913DFE5C8266020CEE5C7A9EDA2E7D9BCA797DC486443C7BA7C │ │ │ │ -7E03439A40927FA3251B6D417E5653E7799E9D6F04149C34096E2CA9B1F9B1EC │ │ │ │ -38958A2521B4A657A8B9F16E1FD66C7E345A10D7AA0241559503D214AC6507A4 │ │ │ │ -CBDE8617AA7ED136577734428594487F3565BF45FA196375759E2FE23C26EC8A │ │ │ │ -3310A36917A5E2F260EAB31030F8E570303D36B833626938F56939849DFA1F3F │ │ │ │ -66D0A317BB6364427F1512AAB380B555611C76345C02C3A6FBF78590331D5ECA │ │ │ │ -029DEFB722F6AB05327C2A31AB7BD6ED0F0386E6F45C1278048D22B90B074CCB │ │ │ │ -2BBEBCC1927C97EC532E651CAF0058AFE8FC08F00F0216D5DD9830C294FF76DA │ │ │ │ -426A073B3A3AEEFBDEE71C5182186311607ECDBD1F1AF4C5E79748CD01445C8D │ │ │ │ -25DD49490C8A6810065908222C8D0AC9F83AFBEE7115023E2D2615A170A5D40A │ │ │ │ -AD49BDF59A59187B6434F83E68EED22EF4EFDBADED6F1559AC779E0377FE7375 │ │ │ │ -D7060584FE74B1859D0FD98772253A712B17FFBB467840C484F5EF82C5677ADB │ │ │ │ -EDF159A456A526B8B9F6E8FC7608DFD47B0F09E26118F79CBE53B6C4E32BACAB │ │ │ │ -D62AFD4AA527CC4B587BB41A17A9BCE106A8C592BC9B73422B712C466C284A17 │ │ │ │ -E8D0C1E01D43C739FB1C083AD2714F78AC785B0C09AA7E67417A73510E00F2FE │ │ │ │ -E3D3EBF626A2F3A20A386E3F98D1285F4A2A332FC609CD191F01F128627B3505 │ │ │ │ -0AC2387DC0AD1B950490EBB5045F22BEC54955402CE2D267B6754E7C32BE84E8 │ │ │ │ -E6B63E3D3EAEE979442D167AEF69C27B22A8E887A2510C3A168D95D285CF7515 │ │ │ │ -011C921679B2F386575826A3F2071D015EEB78F02A4F94D4E5F07873623200F8 │ │ │ │ -7DF95BA0DC6B6D31DECC925BEA1E6A7C52FE685800EC33CBAE830F1AE5454DFA │ │ │ │ -913B8F457D7E2D3DFF019869E3301EEEC64A38295DE6B588E776922B32362382 │ │ │ │ -D1CF3D058613C8A96E6994D3EC23E8B71EC6E718383B20BB6C22DB6F93FA559F │ │ │ │ -3449CA84EB33B25C8BE0DFD1C29DC4FBD7AFBDC96C12162CAAB2C5E354B0FB10 │ │ │ │ -4BF8CC3610875ABD5111D09F2F847822118972214EDEB9EE34BAFE45E7AC15C5 │ │ │ │ -CA63EC4A3CEEA505A5EDD88A59BB67C71C3E026DFFE177F99BC69E6635545D03 │ │ │ │ -77A634F98230EF64381EC67CA519D4B9770EFA844789E21970F89D5FFC5DEAA8 │ │ │ │ -DC008EBA09306967ED090FF91B002FA6120C2B461A87AA32EFB003C5578D8EEF │ │ │ │ - │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ +AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ +E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ +46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ +FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ +389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ +7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ +2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ +C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ +B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ +AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ +E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ +F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ +0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ +2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ +29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ +CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ +6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ +5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ +36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0DD96AB602D004DCFE000A0 │ │ │ │ +ABE41BAB8AB7D50BD32BFD6F1AA3B60B09B9BE4E273EDD2DDCB21A98A760D17D │ │ │ │ +0A5C9303AFE63CF80A93E60C72A0576FAADEECBE2DE91892D210EB0AD1889C04 │ │ │ │ +C7530652584E775B4ED19CFB4B8DBCCC57A9FA9E4DDC8A1E5A1D3BE9E93407A6 │ │ │ │ +2C237ACE27F4EDA330EE952EDCBE91683AA98A29197735006666C96A2CE7C787 │ │ │ │ +BBA5A57C4DBF6FAA5B38AF226B5D9A65FAD84650AC0C3DB29C30602699F81E01 │ │ │ │ +0BAF8F1CE44A03C680121B77A1703C638187675D6C22C49F9902475E6CE9C732 │ │ │ │ +48ED028CC92EA542EF189CC9CA1C384E3387793057615D0A2BF040CC90B275B9 │ │ │ │ +F70A5310874DC2E0A360373E7BCAC88250FBC8989C7D18DA8274C06F02FCF31C │ │ │ │ +2B3868CBAF083DAC2FB159DE368261842DB7C9EA1A86B17617C861A48FBA8FF9 │ │ │ │ +D184CB026F4A418C0955347612F94C039B1536A76CB182A591DD7C02D509CF16 │ │ │ │ +8B9E46502ABF5DE31F5DFBD19C7417A2AF7AF13F0D5FF837C94CE56F07B96337 │ │ │ │ +0ED215252346FAEB54B5F3ABE29709B7ECB9FBD23A4AD397E6ABA6938F1BBF33 │ │ │ │ +1D5460D9414F0B8725DA832744525C13E3FD9C8DB33FBEE12F9C4969988402C8 │ │ │ │ +96AF916364CC2DF17EDBA622FC0A5D0013418E29F912FFA06F8D7E31ECAB0B08 │ │ │ │ +C4D2D8EE537CC768FC9038DD6D86D33642C6E812E941F157FC6917AF19C2B99A │ │ │ │ +5BF10B9A7ECF711BBB6F33C8C3DAD778153122593F36ABDDC0E97A602B045DE6 │ │ │ │ +19BD82D877DDA960AB11EF48C7F75A28D0D731D4A5DBC98283087267CD1A470D │ │ │ │ +537E949DA5EECF097B099547995BE066A941CED683B5748962AD2B02C21636C0 │ │ │ │ +2EAFA33CA0CB3BF8A95703F015A210D918865B9BEA2890DCFB68BC3719C305EC │ │ │ │ +315EC8727BF9A93632AB9E3090B100C022EE1396CD329B37547F26A7DCE52BD7 │ │ │ │ +F91B7388DEC34F4A0C6D46CD7CA6ACC00C5C4C71E47C6AD96496B3CBF531F342 │ │ │ │ +A740EE6B99BD70AD490DFA700772A0697EC6561CE88A0113E4DC3B21F372D810 │ │ │ │ +DFF2C3F6EDF3E917BF2664EEFC9AD292DD6CC36853CF936018D43FDB28D5B001 │ │ │ │ +7D1C805F958F13FD221377ABDD69D102E8CC1DAB2E011EE16CF6DB9D195BA702 │ │ │ │ +5A8738FABF989B0351282D0E5121182DFC52169782A5F3DD5D820411BEF909DE │ │ │ │ +04D963E6FDA76F88508C4E91DDAAA1748F396A1D380D8CA429673AF27C164434 │ │ │ │ +771781B39565D3EE50F3CF03EF12908B13A6C11C9AB7631B32125828B13050BA │ │ │ │ +041A93B97AC32D4A1E28C5FA98CDEE998B5F97823D6291D01E3611A16854F1FE │ │ │ │ +69B9D6D2AE3E56D012B7BC3E582FB4C23188A5E365E65EB1F804A706AF73A2F8 │ │ │ │ +9804808EF71F0982B14133BF9A27D6F2E719BDB751022B1B052722933948904E │ │ │ │ +3582E363478DCDA115205A0FDE39DF71FEAEEB104419C35A6B0678C19616C6D9 │ │ │ │ +A892DC2F4257069AF096C80C099CD13024DF3995F28C694E00D1F08B43D4450C │ │ │ │ +D18F5C925CFD2D124E74FC64BBAA0DE32A79E4A4507B5B5DD834C67160CDA110 │ │ │ │ +EF0061DD27E8864F4250A92BBEFD75C784BB98F4FA789A8236C2A21E4E61ABD0 │ │ │ │ +C6B4D13B3C31AC8E55FA34BEC7C308C61FB0280382EC6AFD63D959678D42D2B3 │ │ │ │ +4134F6236A0808D9302B4E3C6F81FC6973B4833602750CCB5DE36AEA23ED6BD4 │ │ │ │ +5B72DF0DD7B81C871CAA6EC190748CD8C4B998D576E5D340ACAC0617DDBE461C │ │ │ │ +8E82E809D11A01D265D039F4315066832E27E08A6F067E129E45FBF533F761BB │ │ │ │ +EC3C071209BECE7D14D3184B2E6BFD65717A5A7C08F3776B20C513649488C1CF │ │ │ │ +03333805B249D1034FB0AE2D7D2A23324EE27AEDB68F8E329A8052FE58D7C0D9 │ │ │ │ +A40A0CDC79F2085C4F39A7DFDB625C8F071E2A32CF6215DD3E060A9BABF7A3AA │ │ │ │ +C57DA0C0571C5D6EEAA975D1BB9C99F8EA4958360E43E8C60080B03DC4435550 │ │ │ │ +E6048DDD35DF3E5DA69669F266FFD7B44649A68025270DC84258E329F6E6907C │ │ │ │ +BCFF900D715D0C7EC43C5E7180CAD6427BA4FD41AAD6531A5C06B0EC26DDA71F │ │ │ │ +4A9DA50DE919E79226F6DDF7C1BA478936AA86CEAD93072CC2960E98C45A1A0C │ │ │ │ +60CF8A26E4278AB4F9E28FA6532648196CC455607D6BCD00F60675DE8CC02C8C │ │ │ │ +9BE5D5B714731814D5B008EE236563D77AC6895E0158877C95797E07C02AFEBE │ │ │ │ +CC9FE97D5E103F7DB0A834E9A7A75893EC66340B0E4C6F0EEDEF43415BF9FCF4 │ │ │ │ +47340CBEA4DCFBA0D028EB2149FFBBDB3322AE5F6FD20242526EDC55E476D983 │ │ │ │ +DC │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3649,15 +3655,15 @@ │ │ │ │ %%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 3[51 12[45 22[47 │ │ │ │ -15[25 3[45 3[45 1[45 3[25 44[{}11 90.9091 /CMSL10 rf │ │ │ │ +15[25 3[45 3[45 45 45 3[25 44[{}12 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 │ │ │ │ @@ -3774,55 +3780,56 @@ │ │ │ │ 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 1153 4 v │ │ │ │ -1335 w Fi(Tree)29 b Fd(:)41 b Fh(DRAFT)30 b Fd(Jan)m(uary)g(6,)h(2026)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 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fj(2)p 136 100 1130 4 v │ │ │ │ +1312 w Fi(Tree)29 b Fd(:)41 b Fh(DRAFT)30 b Fd(Jan)m(uary)g(10,)i(2026) │ │ │ │ +p 2770 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 │ │ │ │ @@ -3838,17 +3845,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 1153 4 v 1334 100 a Fi(Tree)29 │ │ │ │ -b Fd(:)41 b Fh(DRAFT)121 b Fd(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2700 100 V 1153 w Fj(3)0 399 y Fb(1.2.3)112 b(Initializer)38 │ │ │ │ +TeXDict begin 3 2 bop 91 100 1130 4 v 1312 100 a Fi(Tree)29 │ │ │ │ +b Fd(:)40 b Fh(DRAFT)122 b Fd(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2723 100 V 1130 w Fj(3)0 399 y Fb(1.2.3)112 b(Initializer)38 │ │ │ │ b(metho)s(ds)0 602 y Fj(There)c(are)h(three)f(initializers)j(and)d(t)m │ │ │ │ (w)m(o)h(help)s(er)f(functions)g(to)h(set)g(the)g(dimensions)e(of)i │ │ │ │ (the)g(dstree,)g(allo)s(cate)0 715 y(the)c(three)f(v)m(ectors,)i(and)e │ │ │ │ (\014ll)g(the)h(information.)111 969 y(1.)46 b Fi(void)h(DSTree_init1)d │ │ │ │ (\()k(DSTree)e(*dstree,)f(int)i(ndomsep,)f(int)h(nvtx)f(\))i(;)227 │ │ │ │ 1126 y Fj(This)28 b(metho)s(d)f(initializes)k(an)d(ob)5 │ │ │ │ b(ject)29 b(giv)m(en)g(the)f(n)m(um)m(b)s(er)f(of)h(v)m(ertices,)j │ │ │ │ @@ -3916,17 +3923,17 @@ │ │ │ │ (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 1153 4 v │ │ │ │ -1335 w Fi(Tree)29 b Fd(:)41 b Fh(DRAFT)30 b Fd(Jan)m(uary)g(6,)h(2026)p │ │ │ │ -2748 100 V 111 399 a Fj(3.)46 b Fi(IV)h(*)h(DSTree_MS2stages)43 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fj(4)p 136 100 1130 4 v │ │ │ │ +1312 w Fi(Tree)29 b Fd(:)41 b Fh(DRAFT)30 b Fd(Jan)m(uary)g(10,)i(2026) │ │ │ │ +p 2770 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 │ │ │ │ @@ -3997,17 +4004,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 1153 4 v 1334 100 a Fi(Tree)29 │ │ │ │ -b Fd(:)41 b Fh(DRAFT)121 b Fd(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2700 100 V 1153 w Fj(5)111 399 y(3.)46 b Fi(int)h(DSTree_domainWeight)c │ │ │ │ +TeXDict begin 5 4 bop 91 100 1130 4 v 1312 100 a Fi(Tree)29 │ │ │ │ +b Fd(:)40 b Fh(DRAFT)122 b Fd(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2723 100 V 1130 w Fj(5)111 399 y(3.)46 b Fi(int)h(DSTree_domainWeight)c │ │ │ │ (\()k(DSTree)f(*dstree,)g(int)h(vwghts[])e(\))j(;)227 │ │ │ │ 560 y Fj(This)25 b(metho)s(d)g(returns)g(the)h(w)m(eigh)m(t)h(of)f(the) │ │ │ │ g(v)m(ertices)h(in)f(the)g(domains.)38 b(If)26 b Fi(vwghts)e │ │ │ │ Fj(is)i Fi(NULL)p Fj(,)e(the)i(v)m(ertices)227 673 y(ha)m(v)m(e)32 │ │ │ │ b(unit)e(w)m(eigh)m(t.)227 834 y Fh(Err)-5 b(or)34 b(che)-5 │ │ │ │ b(cking:)40 b Fj(If)30 b Fi(dstree)f Fj(is)h Fi(NULL)p │ │ │ │ Fj(,)g(an)g(error)g(message)i(is)e(prin)m(ted)g(and)g(the)g(program)g │ │ │ │ @@ -4074,17 +4081,17 @@ │ │ │ │ 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 1153 4 v │ │ │ │ -1335 w Fi(Tree)29 b Fd(:)41 b Fh(DRAFT)30 b Fd(Jan)m(uary)g(6,)h(2026)p │ │ │ │ -2748 100 V 111 399 a Fj(5.)46 b Fi(int)h(DSTree_writeToFormattedFi)o │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fj(6)p 136 100 1130 4 v │ │ │ │ +1312 w Fi(Tree)29 b Fd(:)41 b Fh(DRAFT)30 b Fd(Jan)m(uary)g(10,)i(2026) │ │ │ │ +p 2770 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 │ │ │ │ @@ -4158,17 +4165,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 1153 4 v 1334 100 a Fi(Tree)29 │ │ │ │ -b Fd(:)41 b Fh(DRAFT)121 b Fd(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2700 100 V 1153 w Fj(7)111 399 y(2.)46 b Fi(writeStagesIV)e(msglvl)j │ │ │ │ +TeXDict begin 7 6 bop 91 100 1130 4 v 1312 100 a Fi(Tree)29 │ │ │ │ +b Fd(:)40 b Fh(DRAFT)122 b Fd(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2723 100 V 1130 w Fj(7)111 399 y(2.)46 b Fi(writeStagesIV)e(msglvl)j │ │ │ │ (msgFile)e(inFile)h(type)h(outFile)227 543 y Fj(This)28 │ │ │ │ b(driv)m(er)h(program)g(reads)f(in)h(a)g Fi(DSTree)e │ │ │ │ Fj(from)h(a)i(\014le,)f(creates)h(a)g(stages)g Fi(IV)e │ │ │ │ Fj(ob)5 b(ject)30 b(and)e(writes)h(it)g(to)227 656 y(a)i(\014le.)337 │ │ │ │ 853 y Fe(\210)45 b Fj(The)28 b Fi(msglvl)f Fj(parameter)i(determines)g │ │ │ │ (the)g(amoun)m(t)g(of)f(output)h(|)f(taking)i Fi(msglvl)46 │ │ │ │ b(>=)h(3)28 b Fj(means)427 965 y(the)j Fi(DSTree)e Fj(ob)5 │ │ │ │ ├── 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 January 6, 2026 │ │ │ │ │ + 2 Tree : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 3 │ │ │ │ │ + Tree : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 4 Tree : DRAFT January 10, 2026 │ │ │ │ │ 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,49 +125,49 @@ │ │ │ │ │ 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 January 6, 2026 5 │ │ │ │ │ - 3. int DSTree_domainWeight ( DSTree *dstree, int vwghts[] ) ; │ │ │ │ │ + Tree : DRAFT January 10, 2026 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[] ) ; │ │ │ │ │ + 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. │ │ │ │ │ Error checking: If dstree is NULL, an error message is printed and the program exits. │ │ │ │ │ 1.2.6 IO methods │ │ │ │ │ There are the usual eight IO routines. The file structure of a dstree object is simple: the structure │ │ │ │ │ for a Tree object followed by the structure for an IV object. │ │ │ │ │ - 1. int DSTree_readFromFile ( DSTree *dstree, char *fn ) ; │ │ │ │ │ + 1. int DSTree_readFromFile ( DSTree *dstree, char *fn ) ; │ │ │ │ │ This method reads a DSTree object from a file. It tries to open the file and if it is successful, │ │ │ │ │ it then calls DSTree readFromFormattedFile() or DSTree readFromBinaryFile(), 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. │ │ │ │ │ - 2. int DSTree_readFromFormattedFile ( DSTree *dstree, FILE *fp ) ; │ │ │ │ │ + 2. int DSTree_readFromFormattedFile ( DSTree *dstree, FILE *fp ) ; │ │ │ │ │ This method reads in a DSTree 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 dstree or fp is NULL, an error message is printed and zero is returned. │ │ │ │ │ - 3. int DSTree_readFromBinaryFile ( DSTree *dstree, FILE *fp ) ; │ │ │ │ │ + 3. int DSTree_readFromBinaryFile ( DSTree *dstree, FILE *fp ) ; │ │ │ │ │ This method reads in a DSTree 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 dstree or fp is NULL, an error message is printed and zero is returned. │ │ │ │ │ - 4. int DSTree_writeToFile ( DSTree *dstree, char *fn ) ; │ │ │ │ │ + 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 January 6, 2026 │ │ │ │ │ + 6 Tree : DRAFT January 10, 2026 │ │ │ │ │ 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,16 +195,16 @@ │ │ │ │ │ • 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 January 6, 2026 7 │ │ │ │ │ - 2. writeStagesIV msglvl msgFile inFile type outFile │ │ │ │ │ + Tree : DRAFT January 10, 2026 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 │ │ │ │ │ data. │ │ │ │ │ @@ -213,16 +213,16 @@ │ │ │ │ │ method. │ │ │ │ │ • The type parameter specifies which type of stages vector to create. There are presently │ │ │ │ │ four supported types : ND, ND2, MS2 and ND3. See the stage methods in Section 1.2.4. │ │ │ │ │ • The outFile parameter is the output file for the stages IV object. If outFile 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 outFile is of the form *.ivf), or a │ │ │ │ │ binary file (if outFile is of the form *.ivb). │ │ │ │ │ - 3. testDomWeightStages msglvl msgFile │ │ │ │ │ - inDSTreeFile inGraphFile inCutoffDVfile outFile │ │ │ │ │ + 3. testDomWeightStages msglvl msgFile │ │ │ │ │ + inDSTreeFile inGraphFile inCutoffDVfile outFile │ │ │ │ │ This driver program is used to create a stages vector based on subtree weight. It reads in │ │ │ │ │ three objects from files: a DSTree object, a Graph object and a DV object that contains the │ │ │ │ │ cutoff vector, then 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 2026.01.06:2034 │ │ │ │ +%DVIPSSource: TeX output 2026.01.10:0513 │ │ │ │ %%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 │ │ │ │ @@ -2350,14 +2350,15 @@ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ /UnderlineThickness 50 def │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ +dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ dup 54 /six put │ │ │ │ dup 58 /colon put │ │ │ │ dup 74 /J put │ │ │ │ dup 97 /a put │ │ │ │ dup 110 /n put │ │ │ │ dup 114 /r put │ │ │ │ @@ -2547,79 +2548,84 @@ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB88440048702D1F │ │ │ │ -77994EE04EC3B4531D6E1888C86A8F0DA6CF1F056F16AB0DD76C862830F89DA4 │ │ │ │ -28923B3AA543E0D6E41D3BD283E600BC11F889315EE92C675C109C81065ED1BC │ │ │ │ -82A5583D1B723D50051B0557A367887F5B263014C6E77288B4883C50889473D3 │ │ │ │ -3787BAD4BEB88BD1353AFA5B73E61814819537E7FF09F53EF94792BB3DD36ED0 │ │ │ │ -002D0E7A6CDAB85A9C17AF5664BCB5A71663B861880F3ECCABC8E7A2FC81A4CC │ │ │ │ -AE7A87503FDC1CE0077BA51ECC7B43B60793FED8E9AAD5BBD03ADD6183DCD26D │ │ │ │ -24A74163611C05562437644EF9B8889FD4F9D311911204FEFD35237486F2D2D0 │ │ │ │ -B6783A03BF12EA6D19D6D0F87E4D08515F12F9CBF1961CAA71E0D69FE3C4C4D2 │ │ │ │ -7C7FB64ED24F8684C8F00C2BEDEA53EA390CDC0B5BEBD7DD982580B2EA1F1F89 │ │ │ │ -CFED5916630DC2BA32BB9180277E1ABC339B3B7DE086717BD93F7FF3681BA5B3 │ │ │ │ -FCF671C4B293C2DE4A322F0AA3323A4934444C69F23EF90120B8755482757759 │ │ │ │ -C457A435FB8BB4922BD92C5F3D9555D978275C510183E29DFF2FCE4ABBFC18DE │ │ │ │ -76CAD3B486BA12047DD808CD4D521A0FD368E4AE79DE262630983A5D6F0B679D │ │ │ │ -2F005306393C520E1B6987302D029939D94B0178DB06211C7F3B123A41E6E7BA │ │ │ │ -87164737110707A3ED3983895F3FBC815EF370F54C808ED93D910937BCA3D8AF │ │ │ │ -7CBF80DC180CDA54059DB76710B4FCD4139D5B7DA7DB1A0D0AF86AD2453D3691 │ │ │ │ -0BA5BAD40FF28BB4235FCD40FC87C2B888E67928D9B0ACA5692149373DBB93BF │ │ │ │ -6520DDD36A9BFE4D415CA67A5E04F1D48BDB28C69676273ED842CF7980E8E17C │ │ │ │ -B88563F407E340AFAE8F51AABCF8A39521BCEE1EC8396D75E124B24B4675909F │ │ │ │ -E246F87DA08584A3173AEFF153ECDF610543FA7474D125A31ADD6285A49222B5 │ │ │ │ -177066EA395BFA4B1114C7FCF7712DA772A21C99E64F4E1181E69CAF98137FA2 │ │ │ │ -76CF74F682B8CD7BA6EEA79B70FA8A76809634517F8415B6F21A5A7D6099B5E8 │ │ │ │ -EAB356BBC4FB68C72B8C61DDCE8EAB1A53B9D6BAD78584B307EFF57CEAE74884 │ │ │ │ -35987BF89E9E60E962D22FA5612F2DB5EB840499B7CC11A34BA5DEE30D277540 │ │ │ │ -39B8211D69B448ADE95B723F8369A631DE6DD75703AFD7485FB7FFF41A60CBE4 │ │ │ │ -813B8FEA120662355773830EF85015E7FFD609B2CEE52CB5FFE9C35B6BEEE4A4 │ │ │ │ -A66719E31CE1523FDD7771FB1E881A32A7DB7D92C2326DF4B93241C14ABFCCD6 │ │ │ │ -8E5BCAC61E800E6B1B4687ADA4CBF41EC0AFC26D021D1772CBDCD0516DF5EBE1 │ │ │ │ -37FD2AC5ABB8D774B5735940F1F6866D044FD8CE74444FAA5D0202C11E39CC10 │ │ │ │ -213731F41F704450E1D0565013BF22188442CE0FC256190A9F92F0C802AA2660 │ │ │ │ -614AFE9E9C82F8CD2E6035EEF84E5F16CBB690AC819B4B910EA8E81106F0ACE5 │ │ │ │ -CDFE77DAF69E4AFE72C43145A3ABCC40B6C5297487083F738C86422277AC2267 │ │ │ │ -51759F1B7F129E87DE16433B664AD0FB6D30424A11C70B52B591352BF653C8B0 │ │ │ │ -0840C224FBFEAA996A6BE1D69414DD778C2EF56A63B64D59BA412EC3E4000831 │ │ │ │ -73361FB9813F9A7C74BA3A50D331B07B61492E5D75F0861B530587269B3ADC90 │ │ │ │ -EA1DF586AC4BC57C3230893EFE953A6E76950ABA895FAC711D3BD330ABC6846A │ │ │ │ -C91F6ABF3410B913DFE5C8266020CEE5C7A9EDA2E7D9BCA797DC486443C7BA7C │ │ │ │ -7E03439A40927FA3251B6D417E5653E7799E9D6F04149C34096E2CA9B1F9B1EC │ │ │ │ -38958A2521B4A657A8B9F16E1FD66C7E345A10D7AA0241559503D214AC6507A4 │ │ │ │ -CBDE8617AA7ED136577734428594487F3565BF45FA196375759E2FE23C26EC8A │ │ │ │ -3310A36917A5E2F260EAB31030F8E570303D36B833626938F56939849DFA1F3F │ │ │ │ -66D0A317BB6364427F1512AAB380B555611C76345C02C3A6FBF78590331D5ECA │ │ │ │ -029DEFB722F6AB05327C2A31AB7BD6ED0F0386E6F45C1278048D22B90B074CCB │ │ │ │ -2BBEBCC1927C97EC532E651CAF0058AFE8FC08F00F0216D5DD9830C294FF76DA │ │ │ │ -426A073B3A3AEEFBDEE71C5182186311607ECDBD1F1AF4C5E79748CD01445C8D │ │ │ │ -25DD49490C8A6810065908222C8D0AC9F83AFBEE7115023E2D2615A170A5D40A │ │ │ │ -AD49BDF59A59187B6434F83E68EED22EF4EFDBADED6F1559AC779E0377FE7375 │ │ │ │ -D7060584FE74B1859D0FD98772253A712B17FFBB467840C484F5EF82C5677ADB │ │ │ │ -EDF159A456A526B8B9F6E8FC7608DFD47B0F09E26118F79CBE53B6C4E32BACAB │ │ │ │ -D62AFD4AA527CC4B587BB41A17A9BCE106A8C592BC9B73422B712C466C284A17 │ │ │ │ -E8D0C1E01D43C739FB1C083AD2714F78AC785B0C09AA7E67417A73510E00F2FE │ │ │ │ -E3D3EBF626A2F3A20A386E3F98D1285F4A2A332FC609CD191F01F128627B3505 │ │ │ │ -0AC2387DC0AD1B950490EBB5045F22BEC54955402CE2D267B6754E7C32BE84E8 │ │ │ │ -E6B63E3D3EAEE979442D167AEF69C27B22A8E887A2510C3A168D95D285CF7515 │ │ │ │ -011C921679B2F386575826A3F2071D015EEB78F02A4F94D4E5F07873623200F8 │ │ │ │ -7DF95BA0DC6B6D31DECC925BEA1E6A7C52FE685800EC33CBAE830F1AE5454DFA │ │ │ │ -913B8F457D7E2D3DFF019869E3301EEEC64A38295DE6B588E776922B32362382 │ │ │ │ -D1CF3D058613C8A96E6994D3EC23E8B71EC6E718383B20BB6C22DB6F93FA559F │ │ │ │ -3449CA84EB33B25C8BE0DFD1C29DC4FBD7AFBDC96C12162CAAB2C5E354B0FB10 │ │ │ │ -4BF8CC3610875ABD5111D09F2F847822118972214EDEB9EE34BAFE45E7AC15C5 │ │ │ │ -CA63EC4A3CEEA505A5EDD88A59BB67C71C3E026DFFE177F99BC69E6635545D03 │ │ │ │ -77A634F98230EF64381EC67CA519D4B9770EFA844789E21970F89D5FFC5DEAA8 │ │ │ │ -DC008EBA09306967ED090FF91B002FA6120C2B461A87AA32EFB003C5578D8EEF │ │ │ │ - │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ +AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ +E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ +46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ +FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ +389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ +7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ +2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ +C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ +B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ +AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ +E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ +F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ +0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ +2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ +29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ +CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ +6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ +5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ +36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0DD96AB602D004DCFE000A0 │ │ │ │ +ABE41BAB8AB7D50BD32BFD6F1AA3B60B09B9BE4E273EDD2DDCB21A98A760D17D │ │ │ │ +0A5C9303AFE63CF80A93E60C72A0576FAADEECBE2DE91892D210EB0AD1889C04 │ │ │ │ +C7530652584E775B4ED19CFB4B8DBCCC57A9FA9E4DDC8A1E5A1D3BE9E93407A6 │ │ │ │ +2C237ACE27F4EDA330EE952EDCBE91683AA98A29197735006666C96A2CE7C787 │ │ │ │ +BBA5A57C4DBF6FAA5B38AF226B5D9A65FAD84650AC0C3DB29C30602699F81E01 │ │ │ │ +0BAF8F1CE44A03C680121B77A1703C638187675D6C22C49F9902475E6CE9C732 │ │ │ │ +48ED028CC92EA542EF189CC9CA1C384E3387793057615D0A2BF040CC90B275B9 │ │ │ │ +F70A5310874DC2E0A360373E7BCAC88250FBC8989C7D18DA8274C06F02FCF31C │ │ │ │ +2B3868CBAF083DAC2FB159DE368261842DB7C9EA1A86B17617C861A48FBA8FF9 │ │ │ │ +D184CB026F4A418C0955347612F94C039B1536A76CB182A591DD7C02D509CF16 │ │ │ │ +8B9E46502ABF5DE31F5DFBD19C7417A2AF7AF13F0D5FF837C94CE56F07B96337 │ │ │ │ +0ED215252346FAEB54B5F3ABE29709B7ECB9FBD23A4AD397E6ABA6938F1BBF33 │ │ │ │ +1D5460D9414F0B8725DA832744525C13E3FD9C8DB33FBEE12F9C4969988402C8 │ │ │ │ +96AF916364CC2DF17EDBA622FC0A5D0013418E29F912FFA06F8D7E31ECAB0B08 │ │ │ │ +C4D2D8EE537CC768FC9038DD6D86D33642C6E812E941F157FC6917AF19C2B99A │ │ │ │ +5BF10B9A7ECF711BBB6F33C8C3DAD778153122593F36ABDDC0E97A602B045DE6 │ │ │ │ +19BD82D877DDA960AB11EF48C7F75A28D0D731D4A5DBC98283087267CD1A470D │ │ │ │ +537E949DA5EECF097B099547995BE066A941CED683B5748962AD2B02C21636C0 │ │ │ │ +2EAFA33CA0CB3BF8A95703F015A210D918865B9BEA2890DCFB68BC3719C305EC │ │ │ │ +315EC8727BF9A93632AB9E3090B100C022EE1396CD329B37547F26A7DCE52BD7 │ │ │ │ +F91B7388DEC34F4A0C6D46CD7CA6ACC00C5C4C71E47C6AD96496B3CBF531F342 │ │ │ │ +A740EE6B99BD70AD490DFA700772A0697EC6561CE88A0113E4DC3B21F372D810 │ │ │ │ +DFF2C3F6EDF3E917BF2664EEFC9AD292DD6CC36853CF936018D43FDB28D5B001 │ │ │ │ +7D1C805F958F13FD221377ABDD69D102E8CC1DAB2E011EE16CF6DB9D195BA702 │ │ │ │ +5A8738FABF989B0351282D0E5121182DFC52169782A5F3DD5D820411BEF909DE │ │ │ │ +04D963E6FDA76F88508C4E91DDAAA1748F396A1D380D8CA429673AF27C164434 │ │ │ │ +771781B39565D3EE50F3CF03EF12908B13A6C11C9AB7631B32125828B13050BA │ │ │ │ +041A93B97AC32D4A1E28C5FA98CDEE998B5F97823D6291D01E3611A16854F1FE │ │ │ │ +69B9D6D2AE3E56D012B7BC3E582FB4C23188A5E365E65EB1F804A706AF73A2F8 │ │ │ │ +9804808EF71F0982B14133BF9A27D6F2E719BDB751022B1B052722933948904E │ │ │ │ +3582E363478DCDA115205A0FDE39DF71FEAEEB104419C35A6B0678C19616C6D9 │ │ │ │ +A892DC2F4257069AF096C80C099CD13024DF3995F28C694E00D1F08B43D4450C │ │ │ │ +D18F5C925CFD2D124E74FC64BBAA0DE32A79E4A4507B5B5DD834C67160CDA110 │ │ │ │ +EF0061DD27E8864F4250A92BBEFD75C784BB98F4FA789A8236C2A21E4E61ABD0 │ │ │ │ +C6B4D13B3C31AC8E55FA34BEC7C308C61FB0280382EC6AFD63D959678D42D2B3 │ │ │ │ +4134F6236A0808D9302B4E3C6F81FC6973B4833602750CCB5DE36AEA23ED6BD4 │ │ │ │ +5B72DF0DD7B81C871CAA6EC190748CD8C4B998D576E5D340ACAC0617DDBE461C │ │ │ │ +8E82E809D11A01D265D039F4315066832E27E08A6F067E129E45FBF533F761BB │ │ │ │ +EC3C071209BECE7D14D3184B2E6BFD65717A5A7C08F3776B20C513649488C1CF │ │ │ │ +03333805B249D1034FB0AE2D7D2A23324EE27AEDB68F8E329A8052FE58D7C0D9 │ │ │ │ +A40A0CDC79F2085C4F39A7DFDB625C8F071E2A32CF6215DD3E060A9BABF7A3AA │ │ │ │ +C57DA0C0571C5D6EEAA975D1BB9C99F8EA4958360E43E8C60080B03DC4435550 │ │ │ │ +E6048DDD35DF3E5DA69669F266FFD7B44649A68025270DC84258E329F6E6907C │ │ │ │ +BCFF900D715D0C7EC43C5E7180CAD6427BA4FD41AAD6531A5C06B0EC26DDA71F │ │ │ │ +4A9DA50DE919E79226F6DDF7C1BA478936AA86CEAD93072CC2960E98C45A1A0C │ │ │ │ +60CF8A26E4278AB4F9E28FA6532648196CC455607D6BCD00F60675DE8CC02C8C │ │ │ │ +9BE5D5B714731814D5B008EE236563D77AC6895E0158877C95797E07C02AFEBE │ │ │ │ +CC9FE97D5E103F7DB0A834E9A7A75893EC66340B0E4C6F0EEDEF43415BF9FCF4 │ │ │ │ +47340CBEA4DCFBA0D028EB2149FFBBDB3322AE5F6FD20242526EDC55E476D983 │ │ │ │ +DC │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -4194,15 +4200,15 @@ │ │ │ │ 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 3[51 12[45 22[47 │ │ │ │ -15[25 3[45 3[45 1[45 3[25 44[{}11 90.9091 /CMSL10 rf │ │ │ │ +15[25 3[45 3[45 45 45 3[25 44[{}12 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 │ │ │ │ @@ -4320,17 +4326,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 1206 4 v │ │ │ │ -1388 w Fk(DV)29 b Fg(:)i Ff(DRAFT)f Fg(Jan)m(uary)g(6,)h(2026)p │ │ │ │ -2695 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 1183 4 v │ │ │ │ +1365 w Fk(DV)30 b Fg(:)g Ff(DRAFT)g Fg(Jan)m(uary)g(10,)i(2026)p │ │ │ │ +2717 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 │ │ │ │ @@ -4384,17 +4390,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 1206 4 v 1387 100 a Fk(DV)30 │ │ │ │ -b Fg(:)g Ff(DRAFT)121 b Fg(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2647 100 V 1206 w Fl(3)0 399 y Fd(1.2.2)112 b(Instance)38 │ │ │ │ +TeXDict begin 3 2 bop 91 100 1183 4 v 1364 100 a Fk(DV)30 │ │ │ │ +b Fg(:)h Ff(DRAFT)121 b Fg(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2670 100 V 1183 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 │ │ │ │ @@ -4448,17 +4454,17 @@ │ │ │ │ (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 1206 4 v │ │ │ │ -1388 w Fk(DV)29 b Fg(:)i Ff(DRAFT)f Fg(Jan)m(uary)g(6,)h(2026)p │ │ │ │ -2695 100 V 0 399 a Fd(1.2.3)112 b(Initializer)38 b(metho)s(ds)0 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fl(4)p 136 100 1183 4 v │ │ │ │ +1365 w Fk(DV)30 b Fg(:)g Ff(DRAFT)g Fg(Jan)m(uary)g(10,)i(2026)p │ │ │ │ +2717 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 │ │ │ │ @@ -4534,17 +4540,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 1206 4 v 1387 100 a Fk(DV)30 │ │ │ │ -b Fg(:)g Ff(DRAFT)121 b Fg(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2647 100 V 1206 w Fl(5)227 399 y(the)37 b(v)m(ector)h(is)e(lost,)j │ │ │ │ +TeXDict begin 5 4 bop 91 100 1183 4 v 1364 100 a Fk(DV)30 │ │ │ │ +b Fg(:)h Ff(DRAFT)121 b Fg(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2670 100 V 1183 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 │ │ │ │ @@ -4603,17 +4609,17 @@ │ │ │ │ 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 1206 4 v │ │ │ │ -1388 w Fk(DV)29 b Fg(:)i Ff(DRAFT)f Fg(Jan)m(uary)g(6,)h(2026)p │ │ │ │ -2695 100 V 111 399 a Fl(8.)46 b Fk(double)g(*)i(DV_first)d(\()j(DV)f │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fl(6)p 136 100 1183 4 v │ │ │ │ +1365 w Fk(DV)30 b Fg(:)g Ff(DRAFT)g Fg(Jan)m(uary)g(10,)i(2026)p │ │ │ │ +2717 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 │ │ │ │ @@ -4673,17 +4679,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 1206 4 v 1387 100 a Fk(DV)30 │ │ │ │ -b Fg(:)g Ff(DRAFT)121 b Fg(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2647 100 V 1206 w Fl(7)111 399 y(1.)46 b Fk(int)h(DV_readFromFile)d(\() │ │ │ │ +TeXDict begin 7 6 bop 91 100 1183 4 v 1364 100 a Fk(DV)30 │ │ │ │ +b Fg(:)h Ff(DRAFT)121 b Fg(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2670 100 V 1183 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 │ │ │ │ @@ -4764,17 +4770,17 @@ │ │ │ │ (\))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 1206 4 v │ │ │ │ -1388 w Fk(DV)29 b Fg(:)i Ff(DRAFT)f Fg(Jan)m(uary)g(6,)h(2026)p │ │ │ │ -2695 100 V 111 399 a Fl(9.)46 b Fk(int)h(DV_writeForMatlab)c(\()48 │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fl(8)p 136 100 1183 4 v │ │ │ │ +1365 w Fk(DV)30 b Fg(:)g Ff(DRAFT)g Fg(Jan)m(uary)g(10,)i(2026)p │ │ │ │ +2717 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 │ │ │ │ ├── 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 January 6, 2026 │ │ │ │ │ + 2 DV : DRAFT January 10, 2026 │ │ │ │ │ • 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 January 6, 2026 3 │ │ │ │ │ + DV : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 4 DV : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 5 │ │ │ │ │ + DV : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 6 DV : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 7 │ │ │ │ │ + DV : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 8 DV : DRAFT January 10, 2026 │ │ │ │ │ 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 2026.01.06:2034 │ │ │ │ +%DVIPSSource: TeX output 2026.01.10:0513 │ │ │ │ %%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 │ │ │ │ @@ -1621,14 +1621,15 @@ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ /UnderlineThickness 50 def │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ +dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ dup 54 /six put │ │ │ │ dup 58 /colon put │ │ │ │ dup 74 /J put │ │ │ │ dup 97 /a put │ │ │ │ dup 110 /n put │ │ │ │ dup 114 /r put │ │ │ │ @@ -1818,79 +1819,84 @@ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB88440048702D1F │ │ │ │ -77994EE04EC3B4531D6E1888C86A8F0DA6CF1F056F16AB0DD76C862830F89DA4 │ │ │ │ -28923B3AA543E0D6E41D3BD283E600BC11F889315EE92C675C109C81065ED1BC │ │ │ │ -82A5583D1B723D50051B0557A367887F5B263014C6E77288B4883C50889473D3 │ │ │ │ -3787BAD4BEB88BD1353AFA5B73E61814819537E7FF09F53EF94792BB3DD36ED0 │ │ │ │ -002D0E7A6CDAB85A9C17AF5664BCB5A71663B861880F3ECCABC8E7A2FC81A4CC │ │ │ │ -AE7A87503FDC1CE0077BA51ECC7B43B60793FED8E9AAD5BBD03ADD6183DCD26D │ │ │ │ -24A74163611C05562437644EF9B8889FD4F9D311911204FEFD35237486F2D2D0 │ │ │ │ -B6783A03BF12EA6D19D6D0F87E4D08515F12F9CBF1961CAA71E0D69FE3C4C4D2 │ │ │ │ -7C7FB64ED24F8684C8F00C2BEDEA53EA390CDC0B5BEBD7DD982580B2EA1F1F89 │ │ │ │ -CFED5916630DC2BA32BB9180277E1ABC339B3B7DE086717BD93F7FF3681BA5B3 │ │ │ │ -FCF671C4B293C2DE4A322F0AA3323A4934444C69F23EF90120B8755482757759 │ │ │ │ -C457A435FB8BB4922BD92C5F3D9555D978275C510183E29DFF2FCE4ABBFC18DE │ │ │ │ -76CAD3B486BA12047DD808CD4D521A0FD368E4AE79DE262630983A5D6F0B679D │ │ │ │ -2F005306393C520E1B6987302D029939D94B0178DB06211C7F3B123A41E6E7BA │ │ │ │ -87164737110707A3ED3983895F3FBC815EF370F54C808ED93D910937BCA3D8AF │ │ │ │ -7CBF80DC180CDA54059DB76710B4FCD4139D5B7DA7DB1A0D0AF86AD2453D3691 │ │ │ │ -0BA5BAD40FF28BB4235FCD40FC87C2B888E67928D9B0ACA5692149373DBB93BF │ │ │ │ -6520DDD36A9BFE4D415CA67A5E04F1D48BDB28C69676273ED842CF7980E8E17C │ │ │ │ -B88563F407E340AFAE8F51AABCF8A39521BCEE1EC8396D75E124B24B4675909F │ │ │ │ -E246F87DA08584A3173AEFF153ECDF610543FA7474D125A31ADD6285A49222B5 │ │ │ │ -177066EA395BFA4B1114C7FCF7712DA772A21C99E64F4E1181E69CAF98137FA2 │ │ │ │ -76CF74F682B8CD7BA6EEA79B70FA8A76809634517F8415B6F21A5A7D6099B5E8 │ │ │ │ -EAB356BBC4FB68C72B8C61DDCE8EAB1A53B9D6BAD78584B307EFF57CEAE74884 │ │ │ │ -35987BF89E9E60E962D22FA5612F2DB5EB840499B7CC11A34BA5DEE30D277540 │ │ │ │ -39B8211D69B448ADE95B723F8369A631DE6DD75703AFD7485FB7FFF41A60CBE4 │ │ │ │ -813B8FEA120662355773830EF85015E7FFD609B2CEE52CB5FFE9C35B6BEEE4A4 │ │ │ │ -A66719E31CE1523FDD7771FB1E881A32A7DB7D92C2326DF4B93241C14ABFCCD6 │ │ │ │ -8E5BCAC61E800E6B1B4687ADA4CBF41EC0AFC26D021D1772CBDCD0516DF5EBE1 │ │ │ │ -37FD2AC5ABB8D774B5735940F1F6866D044FD8CE74444FAA5D0202C11E39CC10 │ │ │ │ -213731F41F704450E1D0565013BF22188442CE0FC256190A9F92F0C802AA2660 │ │ │ │ -614AFE9E9C82F8CD2E6035EEF84E5F16CBB690AC819B4B910EA8E81106F0ACE5 │ │ │ │ -CDFE77DAF69E4AFE72C43145A3ABCC40B6C5297487083F738C86422277AC2267 │ │ │ │ -51759F1B7F129E87DE16433B664AD0FB6D30424A11C70B52B591352BF653C8B0 │ │ │ │ -0840C224FBFEAA996A6BE1D69414DD778C2EF56A63B64D59BA412EC3E4000831 │ │ │ │ -73361FB9813F9A7C74BA3A50D331B07B61492E5D75F0861B530587269B3ADC90 │ │ │ │ -EA1DF586AC4BC57C3230893EFE953A6E76950ABA895FAC711D3BD330ABC6846A │ │ │ │ -C91F6ABF3410B913DFE5C8266020CEE5C7A9EDA2E7D9BCA797DC486443C7BA7C │ │ │ │ -7E03439A40927FA3251B6D417E5653E7799E9D6F04149C34096E2CA9B1F9B1EC │ │ │ │ -38958A2521B4A657A8B9F16E1FD66C7E345A10D7AA0241559503D214AC6507A4 │ │ │ │ -CBDE8617AA7ED136577734428594487F3565BF45FA196375759E2FE23C26EC8A │ │ │ │ -3310A36917A5E2F260EAB31030F8E570303D36B833626938F56939849DFA1F3F │ │ │ │ -66D0A317BB6364427F1512AAB380B555611C76345C02C3A6FBF78590331D5ECA │ │ │ │ -029DEFB722F6AB05327C2A31AB7BD6ED0F0386E6F45C1278048D22B90B074CCB │ │ │ │ -2BBEBCC1927C97EC532E651CAF0058AFE8FC08F00F0216D5DD9830C294FF76DA │ │ │ │ -426A073B3A3AEEFBDEE71C5182186311607ECDBD1F1AF4C5E79748CD01445C8D │ │ │ │ -25DD49490C8A6810065908222C8D0AC9F83AFBEE7115023E2D2615A170A5D40A │ │ │ │ -AD49BDF59A59187B6434F83E68EED22EF4EFDBADED6F1559AC779E0377FE7375 │ │ │ │ -D7060584FE74B1859D0FD98772253A712B17FFBB467840C484F5EF82C5677ADB │ │ │ │ -EDF159A456A526B8B9F6E8FC7608DFD47B0F09E26118F79CBE53B6C4E32BACAB │ │ │ │ -D62AFD4AA527CC4B587BB41A17A9BCE106A8C592BC9B73422B712C466C284A17 │ │ │ │ -E8D0C1E01D43C739FB1C083AD2714F78AC785B0C09AA7E67417A73510E00F2FE │ │ │ │ -E3D3EBF626A2F3A20A386E3F98D1285F4A2A332FC609CD191F01F128627B3505 │ │ │ │ -0AC2387DC0AD1B950490EBB5045F22BEC54955402CE2D267B6754E7C32BE84E8 │ │ │ │ -E6B63E3D3EAEE979442D167AEF69C27B22A8E887A2510C3A168D95D285CF7515 │ │ │ │ -011C921679B2F386575826A3F2071D015EEB78F02A4F94D4E5F07873623200F8 │ │ │ │ -7DF95BA0DC6B6D31DECC925BEA1E6A7C52FE685800EC33CBAE830F1AE5454DFA │ │ │ │ -913B8F457D7E2D3DFF019869E3301EEEC64A38295DE6B588E776922B32362382 │ │ │ │ -D1CF3D058613C8A96E6994D3EC23E8B71EC6E718383B20BB6C22DB6F93FA559F │ │ │ │ -3449CA84EB33B25C8BE0DFD1C29DC4FBD7AFBDC96C12162CAAB2C5E354B0FB10 │ │ │ │ -4BF8CC3610875ABD5111D09F2F847822118972214EDEB9EE34BAFE45E7AC15C5 │ │ │ │ -CA63EC4A3CEEA505A5EDD88A59BB67C71C3E026DFFE177F99BC69E6635545D03 │ │ │ │ -77A634F98230EF64381EC67CA519D4B9770EFA844789E21970F89D5FFC5DEAA8 │ │ │ │ -DC008EBA09306967ED090FF91B002FA6120C2B461A87AA32EFB003C5578D8EEF │ │ │ │ - │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ +AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ +E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ +46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ +FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ +389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ +7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ +2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ +C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ +B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ +AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ +E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ +F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ +0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ +2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ +29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ +CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ +6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ +5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ +36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0DD96AB602D004DCFE000A0 │ │ │ │ +ABE41BAB8AB7D50BD32BFD6F1AA3B60B09B9BE4E273EDD2DDCB21A98A760D17D │ │ │ │ +0A5C9303AFE63CF80A93E60C72A0576FAADEECBE2DE91892D210EB0AD1889C04 │ │ │ │ +C7530652584E775B4ED19CFB4B8DBCCC57A9FA9E4DDC8A1E5A1D3BE9E93407A6 │ │ │ │ +2C237ACE27F4EDA330EE952EDCBE91683AA98A29197735006666C96A2CE7C787 │ │ │ │ +BBA5A57C4DBF6FAA5B38AF226B5D9A65FAD84650AC0C3DB29C30602699F81E01 │ │ │ │ +0BAF8F1CE44A03C680121B77A1703C638187675D6C22C49F9902475E6CE9C732 │ │ │ │ +48ED028CC92EA542EF189CC9CA1C384E3387793057615D0A2BF040CC90B275B9 │ │ │ │ +F70A5310874DC2E0A360373E7BCAC88250FBC8989C7D18DA8274C06F02FCF31C │ │ │ │ +2B3868CBAF083DAC2FB159DE368261842DB7C9EA1A86B17617C861A48FBA8FF9 │ │ │ │ +D184CB026F4A418C0955347612F94C039B1536A76CB182A591DD7C02D509CF16 │ │ │ │ +8B9E46502ABF5DE31F5DFBD19C7417A2AF7AF13F0D5FF837C94CE56F07B96337 │ │ │ │ +0ED215252346FAEB54B5F3ABE29709B7ECB9FBD23A4AD397E6ABA6938F1BBF33 │ │ │ │ +1D5460D9414F0B8725DA832744525C13E3FD9C8DB33FBEE12F9C4969988402C8 │ │ │ │ +96AF916364CC2DF17EDBA622FC0A5D0013418E29F912FFA06F8D7E31ECAB0B08 │ │ │ │ +C4D2D8EE537CC768FC9038DD6D86D33642C6E812E941F157FC6917AF19C2B99A │ │ │ │ +5BF10B9A7ECF711BBB6F33C8C3DAD778153122593F36ABDDC0E97A602B045DE6 │ │ │ │ +19BD82D877DDA960AB11EF48C7F75A28D0D731D4A5DBC98283087267CD1A470D │ │ │ │ +537E949DA5EECF097B099547995BE066A941CED683B5748962AD2B02C21636C0 │ │ │ │ +2EAFA33CA0CB3BF8A95703F015A210D918865B9BEA2890DCFB68BC3719C305EC │ │ │ │ +315EC8727BF9A93632AB9E3090B100C022EE1396CD329B37547F26A7DCE52BD7 │ │ │ │ +F91B7388DEC34F4A0C6D46CD7CA6ACC00C5C4C71E47C6AD96496B3CBF531F342 │ │ │ │ +A740EE6B99BD70AD490DFA700772A0697EC6561CE88A0113E4DC3B21F372D810 │ │ │ │ +DFF2C3F6EDF3E917BF2664EEFC9AD292DD6CC36853CF936018D43FDB28D5B001 │ │ │ │ +7D1C805F958F13FD221377ABDD69D102E8CC1DAB2E011EE16CF6DB9D195BA702 │ │ │ │ +5A8738FABF989B0351282D0E5121182DFC52169782A5F3DD5D820411BEF909DE │ │ │ │ +04D963E6FDA76F88508C4E91DDAAA1748F396A1D380D8CA429673AF27C164434 │ │ │ │ +771781B39565D3EE50F3CF03EF12908B13A6C11C9AB7631B32125828B13050BA │ │ │ │ +041A93B97AC32D4A1E28C5FA98CDEE998B5F97823D6291D01E3611A16854F1FE │ │ │ │ +69B9D6D2AE3E56D012B7BC3E582FB4C23188A5E365E65EB1F804A706AF73A2F8 │ │ │ │ +9804808EF71F0982B14133BF9A27D6F2E719BDB751022B1B052722933948904E │ │ │ │ +3582E363478DCDA115205A0FDE39DF71FEAEEB104419C35A6B0678C19616C6D9 │ │ │ │ +A892DC2F4257069AF096C80C099CD13024DF3995F28C694E00D1F08B43D4450C │ │ │ │ +D18F5C925CFD2D124E74FC64BBAA0DE32A79E4A4507B5B5DD834C67160CDA110 │ │ │ │ +EF0061DD27E8864F4250A92BBEFD75C784BB98F4FA789A8236C2A21E4E61ABD0 │ │ │ │ +C6B4D13B3C31AC8E55FA34BEC7C308C61FB0280382EC6AFD63D959678D42D2B3 │ │ │ │ +4134F6236A0808D9302B4E3C6F81FC6973B4833602750CCB5DE36AEA23ED6BD4 │ │ │ │ +5B72DF0DD7B81C871CAA6EC190748CD8C4B998D576E5D340ACAC0617DDBE461C │ │ │ │ +8E82E809D11A01D265D039F4315066832E27E08A6F067E129E45FBF533F761BB │ │ │ │ +EC3C071209BECE7D14D3184B2E6BFD65717A5A7C08F3776B20C513649488C1CF │ │ │ │ +03333805B249D1034FB0AE2D7D2A23324EE27AEDB68F8E329A8052FE58D7C0D9 │ │ │ │ +A40A0CDC79F2085C4F39A7DFDB625C8F071E2A32CF6215DD3E060A9BABF7A3AA │ │ │ │ +C57DA0C0571C5D6EEAA975D1BB9C99F8EA4958360E43E8C60080B03DC4435550 │ │ │ │ +E6048DDD35DF3E5DA69669F266FFD7B44649A68025270DC84258E329F6E6907C │ │ │ │ +BCFF900D715D0C7EC43C5E7180CAD6427BA4FD41AAD6531A5C06B0EC26DDA71F │ │ │ │ +4A9DA50DE919E79226F6DDF7C1BA478936AA86CEAD93072CC2960E98C45A1A0C │ │ │ │ +60CF8A26E4278AB4F9E28FA6532648196CC455607D6BCD00F60675DE8CC02C8C │ │ │ │ +9BE5D5B714731814D5B008EE236563D77AC6895E0158877C95797E07C02AFEBE │ │ │ │ +CC9FE97D5E103F7DB0A834E9A7A75893EC66340B0E4C6F0EEDEF43415BF9FCF4 │ │ │ │ +47340CBEA4DCFBA0D028EB2149FFBBDB3322AE5F6FD20242526EDC55E476D983 │ │ │ │ +DC │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3680,15 +3686,15 @@ │ │ │ │ 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 3[46 12[42 22[43 15[23 3[42 3[42 │ │ │ │ -1[42 3[23 44[{}11 83.022 /CMSL10 rf │ │ │ │ +42 42 3[23 44[{}12 83.022 /CMSL10 rf │ │ │ │ %DVIPSBitmapFont: Ff tcrm1000 10 1 │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ /Dotaccent/cedilla/ogonek/quotesinglbase.ts1 4{/.notdef}repeat │ │ │ │ /quotedblbase.ts1/.notdef/.notdef/twelveudash/threequartersemdash │ │ │ │ /afii61664.cap/arrowleft/arrowright/tieaccentlowercase/tieaccentcapital │ │ │ │ /tieaccentlowercase.new/tieaccentcapital.new/.notdef/afii61664.asc/uni2422 3 │ │ │ │ {/.notdef}repeat/dollar/.notdef/.notdef/quotesingle/.notdef/.notdef │ │ │ │ @@ -3811,17 +3817,17 @@ │ │ │ │ b Fj(returns)j Fi(1)g Fj(if)h(the)g(matrix)f(has)g(real)g(en)n(tries,)g │ │ │ │ (and)h Fi(0)f Fj(otherwise.)125 5407 y Ff(\210)42 b Fi(DENSEMTX)p │ │ │ │ 565 5407 V 28 w(IS)p 681 5407 V 30 w(COMPLEX\(mtx\))23 │ │ │ │ b Fj(returns)k Fi(1)g Fj(if)h(the)g(matrix)f(has)g(complex)g(en)n │ │ │ │ (tries,)g(and)h Fi(0)f Fj(otherwise.)1929 5656 y(1)p │ │ │ │ eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fj(2)p 125 100 1135 4 v │ │ │ │ -1300 w Fi(DenseMtx)24 b Fe(:)37 b Fh(DRAFT)28 b Fe(Jan)n(uary)d(6,)i │ │ │ │ -(2026)p 2766 100 V 0 390 a Fg(1.2)135 b(Protot)l(yp)t(es)46 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fj(2)p 125 100 1114 4 v │ │ │ │ +1279 w Fi(DenseMtx)25 b Fe(:)37 b Fh(DRAFT)27 b Fe(Jan)n(uary)e(10,)i │ │ │ │ +(2026)p 2786 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) │ │ │ │ @@ -3885,17 +3891,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 1135 4 v 1301 100 a Fi(DenseMtx)24 │ │ │ │ -b Fe(:)37 b Fh(DRAFT)110 b Fe(Jan)n(uary)26 b(6,)h(2026)p │ │ │ │ -2726 100 V 1135 w Fj(3)101 390 y(5.)42 b Fi(int)g(DenseMtx_rowIncr)o │ │ │ │ +TeXDict begin 3 2 bop 83 100 1114 4 v 1280 100 a Fi(DenseMtx)24 │ │ │ │ +b Fe(:)37 b Fh(DRAFT)110 b Fe(Jan)n(uary)26 b(10,)h(2026)p │ │ │ │ +2747 100 V 1114 w Fj(3)101 390 y(5.)42 b Fi(int)g(DenseMtx_rowIncr)o │ │ │ │ (em)o(ent)37 b(\()43 b(DenseMtx)d(*mtx)i(\))h(;)208 529 │ │ │ │ y Fj(This)24 b(metho)r(d)g(returns)f(the)i(ro)n(w)e(incremen)n(t)g(of)h │ │ │ │ (the)h(ob)5 b(ject,)24 b(the)h(di\013erence)f(in)g(memory)f(lo)r │ │ │ │ (cations)h(of)g(t)n(w)n(o)f(en)n(tries)208 629 y(in)k(consecutiv)n(e)g │ │ │ │ (ro)n(ws)f(in)i(the)g(same)f(column.)208 767 y Fh(Err)l(or)j(che)l │ │ │ │ (cking:)38 b Fj(If)28 b Fi(mtx)f Fj(is)g Fi(NULL)p Fj(,)f(an)i(error)d │ │ │ │ (message)i(is)g(prin)n(ted)h(and)f(the)h(program)e(exits.)101 │ │ │ │ @@ -3966,17 +3972,17 @@ │ │ │ │ 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 1135 4 v │ │ │ │ -1300 w Fi(DenseMtx)24 b Fe(:)37 b Fh(DRAFT)28 b Fe(Jan)n(uary)d(6,)i │ │ │ │ -(2026)p 2766 100 V 60 390 a Fj(14.)41 b Fi(int)h(DenseMtx_row)d(\()k │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fj(4)p 125 100 1114 4 v │ │ │ │ +1279 w Fi(DenseMtx)25 b Fe(:)37 b Fh(DRAFT)27 b Fe(Jan)n(uary)e(10,)i │ │ │ │ +(2026)p 2786 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 │ │ │ │ @@ -4063,17 +4069,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 1135 4 v 1301 100 a Fi(DenseMtx)24 │ │ │ │ -b Fe(:)37 b Fh(DRAFT)110 b Fe(Jan)n(uary)26 b(6,)h(2026)p │ │ │ │ -2726 100 V 1135 w Fj(5)0 390 y Fc(1.2.4)112 b(Utilit)m(y)38 │ │ │ │ +TeXDict begin 5 4 bop 83 100 1114 4 v 1280 100 a Fi(DenseMtx)24 │ │ │ │ +b Fe(:)37 b Fh(DRAFT)110 b Fe(Jan)n(uary)26 b(10,)h(2026)p │ │ │ │ +2747 100 V 1114 w Fj(5)0 390 y Fc(1.2.4)112 b(Utilit)m(y)38 │ │ │ │ b(metho)s(ds)101 570 y Fj(1.)k Fi(int)g(DenseMtx_nbytesN)o(ee)o(ded)37 │ │ │ │ b(\()43 b(int)f(type,)g(int)g(nrow,)g(int)g(ncol)g(\))h(;)208 │ │ │ │ 705 y Fj(This)27 b(metho)r(d)h(returns)f(the)h(n)n(um)n(b)r(er)f(of)h │ │ │ │ (b)n(ytes)f(required)g(to)g(store)g(the)h(ob)5 b(ject's)27 │ │ │ │ b(information)g(in)h(its)g(bu\013er.)208 839 y Fh(Err)l(or)h(che)l │ │ │ │ (cking:)38 b Fj(If)27 b Fi(type)e Fj(is)i(neither)f Fi(SPOOLES)p │ │ │ │ 1758 839 27 4 v 29 w(REAL)f Fj(nor)g Fi(SPOOLES)p 2442 │ │ │ │ @@ -4152,17 +4158,17 @@ │ │ │ │ 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 1135 4 v │ │ │ │ -1300 w Fi(DenseMtx)24 b Fe(:)37 b Fh(DRAFT)28 b Fe(Jan)n(uary)d(6,)i │ │ │ │ -(2026)p 2766 100 V 101 390 a Fj(9.)42 b Fi(void)f(DenseMtx_addRow)d(\() │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fj(6)p 125 100 1114 4 v │ │ │ │ +1279 w Fi(DenseMtx)25 b Fe(:)37 b Fh(DRAFT)27 b Fe(Jan)n(uary)e(10,)i │ │ │ │ +(2026)p 2786 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 │ │ │ │ @@ -4235,17 +4241,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 1135 4 v 1301 100 a Fi(DenseMtx)24 │ │ │ │ -b Fe(:)37 b Fh(DRAFT)110 b Fe(Jan)n(uary)26 b(6,)h(2026)p │ │ │ │ -2726 100 V 1135 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 1114 4 v 1280 100 a Fi(DenseMtx)24 │ │ │ │ +b Fe(:)37 b Fh(DRAFT)110 b Fe(Jan)n(uary)26 b(10,)h(2026)p │ │ │ │ +2747 100 V 1114 w Fj(7)0 390 y Fc(1.2.5)112 b(IO)38 b(metho)s(ds)0 │ │ │ │ 573 y Fj(The)23 b(\014le)g(structure)f(of)h(a)g Fi(DenseMtx)c │ │ │ │ Fj(ob)5 b(ject)23 b(is)g(simple.)35 b(First)23 b(comes)f(sev)n(en)g │ │ │ │ (scalars,)g Fi(type)p Fj(,)h Fi(rowid)p Fj(,)e Fi(colid)p │ │ │ │ Fj(,)h Fi(nrow)p Fj(,)h Fi(ncol)p Fj(,)0 672 y Fi(inc1)g │ │ │ │ Fj(and)h Fi(inc2)p Fj(,)f(follo)n(w)n(ed)g(b)n(y)h(the)h(ro)n(w)e │ │ │ │ (indices,)i(follo)n(w)n(ed)e(b)n(y)h(the)g(column)g(indices,)h(and)f │ │ │ │ (then)h(follo)n(w)n(ed)e(b)n(y)h(the)h(matrix)0 772 y(en)n(tries.)101 │ │ │ │ @@ -4332,17 +4338,17 @@ │ │ │ │ 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 1135 4 v │ │ │ │ -1300 w Fi(DenseMtx)24 b Fe(:)37 b Fh(DRAFT)28 b Fe(Jan)n(uary)d(6,)i │ │ │ │ -(2026)p 2766 100 V 101 390 a Fj(9.)42 b Fi(void)f(DenseMtx_writeFor)o │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fj(8)p 125 100 1114 4 v │ │ │ │ +1279 w Fi(DenseMtx)25 b Fe(:)37 b Fh(DRAFT)27 b Fe(Jan)n(uary)e(10,)i │ │ │ │ +(2026)p 2786 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 │ │ │ │ ├── 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 January 6, 2026 │ │ │ │ │ + 2 DenseMtx : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 3 │ │ │ │ │ + DenseMtx : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 4 DenseMtx : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 5 │ │ │ │ │ + DenseMtx : DRAFT January 10, 2026 5 │ │ │ │ │ 1.2.4 Utility methods │ │ │ │ │ 1. int DenseMtx_nbytesNeeded ( int type, int nrow, int ncol ) ; │ │ │ │ │ This method returns the number of bytes required to store the object’s information in its buffer. │ │ │ │ │ Error checking: If type is neither SPOOLES REAL nor SPOOLES COMPLEX, or if nrow or ncol is less than │ │ │ │ │ zero, an error message is printed and the program exits. │ │ │ │ │ 2. int DenseMtx_nbytesInWorkspace ( DenseMtx *mtx ) ; │ │ │ │ │ This method returns the number of bytes in the workspace owned by this object. │ │ │ │ │ @@ -180,15 +180,15 @@ │ │ │ │ │ 8. void DenseMtx_copyRowAndIndex ( DenseMtx *mtxB, int irowB, │ │ │ │ │ DenseMtx *mtxA, int irowA ) ; │ │ │ │ │ This method copies row irowA from matrix mtxA into row irowB of matrix mtxB, and copies the index │ │ │ │ │ of row irowA of mtxA into location irowB of the row indices for mtxB. │ │ │ │ │ Error checking: If mtxB is NULL, or if irowB is out of range, or if mtxA is NULL, or if irowA is out of │ │ │ │ │ range, or if the number of columns in mtxB and mtxA are not the same, an error message is printed and │ │ │ │ │ the program exits. │ │ │ │ │ - 6 DenseMtx : DRAFT January 6, 2026 │ │ │ │ │ + 6 DenseMtx : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 7 │ │ │ │ │ + DenseMtx : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 8 DenseMtx : DRAFT January 10, 2026 │ │ │ │ │ 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 2026.01.06:2034 │ │ │ │ +%DVIPSSource: TeX output 2026.01.10:0513 │ │ │ │ %%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 │ │ │ │ @@ -1719,14 +1719,15 @@ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ /UnderlineThickness 50 def │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ +dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ dup 54 /six put │ │ │ │ dup 58 /colon put │ │ │ │ dup 74 /J put │ │ │ │ dup 97 /a put │ │ │ │ dup 110 /n put │ │ │ │ dup 114 /r put │ │ │ │ @@ -1916,79 +1917,84 @@ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB88440048702D1F │ │ │ │ -77994EE04EC3B4531D6E1888C86A8F0DA6CF1F056F16AB0DD76C862830F89DA4 │ │ │ │ -28923B3AA543E0D6E41D3BD283E600BC11F889315EE92C675C109C81065ED1BC │ │ │ │ -82A5583D1B723D50051B0557A367887F5B263014C6E77288B4883C50889473D3 │ │ │ │ -3787BAD4BEB88BD1353AFA5B73E61814819537E7FF09F53EF94792BB3DD36ED0 │ │ │ │ -002D0E7A6CDAB85A9C17AF5664BCB5A71663B861880F3ECCABC8E7A2FC81A4CC │ │ │ │ -AE7A87503FDC1CE0077BA51ECC7B43B60793FED8E9AAD5BBD03ADD6183DCD26D │ │ │ │ -24A74163611C05562437644EF9B8889FD4F9D311911204FEFD35237486F2D2D0 │ │ │ │ -B6783A03BF12EA6D19D6D0F87E4D08515F12F9CBF1961CAA71E0D69FE3C4C4D2 │ │ │ │ -7C7FB64ED24F8684C8F00C2BEDEA53EA390CDC0B5BEBD7DD982580B2EA1F1F89 │ │ │ │ -CFED5916630DC2BA32BB9180277E1ABC339B3B7DE086717BD93F7FF3681BA5B3 │ │ │ │ -FCF671C4B293C2DE4A322F0AA3323A4934444C69F23EF90120B8755482757759 │ │ │ │ -C457A435FB8BB4922BD92C5F3D9555D978275C510183E29DFF2FCE4ABBFC18DE │ │ │ │ -76CAD3B486BA12047DD808CD4D521A0FD368E4AE79DE262630983A5D6F0B679D │ │ │ │ -2F005306393C520E1B6987302D029939D94B0178DB06211C7F3B123A41E6E7BA │ │ │ │ -87164737110707A3ED3983895F3FBC815EF370F54C808ED93D910937BCA3D8AF │ │ │ │ -7CBF80DC180CDA54059DB76710B4FCD4139D5B7DA7DB1A0D0AF86AD2453D3691 │ │ │ │ -0BA5BAD40FF28BB4235FCD40FC87C2B888E67928D9B0ACA5692149373DBB93BF │ │ │ │ -6520DDD36A9BFE4D415CA67A5E04F1D48BDB28C69676273ED842CF7980E8E17C │ │ │ │ -B88563F407E340AFAE8F51AABCF8A39521BCEE1EC8396D75E124B24B4675909F │ │ │ │ -E246F87DA08584A3173AEFF153ECDF610543FA7474D125A31ADD6285A49222B5 │ │ │ │ -177066EA395BFA4B1114C7FCF7712DA772A21C99E64F4E1181E69CAF98137FA2 │ │ │ │ -76CF74F682B8CD7BA6EEA79B70FA8A76809634517F8415B6F21A5A7D6099B5E8 │ │ │ │ -EAB356BBC4FB68C72B8C61DDCE8EAB1A53B9D6BAD78584B307EFF57CEAE74884 │ │ │ │ -35987BF89E9E60E962D22FA5612F2DB5EB840499B7CC11A34BA5DEE30D277540 │ │ │ │ -39B8211D69B448ADE95B723F8369A631DE6DD75703AFD7485FB7FFF41A60CBE4 │ │ │ │ -813B8FEA120662355773830EF85015E7FFD609B2CEE52CB5FFE9C35B6BEEE4A4 │ │ │ │ -A66719E31CE1523FDD7771FB1E881A32A7DB7D92C2326DF4B93241C14ABFCCD6 │ │ │ │ -8E5BCAC61E800E6B1B4687ADA4CBF41EC0AFC26D021D1772CBDCD0516DF5EBE1 │ │ │ │ -37FD2AC5ABB8D774B5735940F1F6866D044FD8CE74444FAA5D0202C11E39CC10 │ │ │ │ -213731F41F704450E1D0565013BF22188442CE0FC256190A9F92F0C802AA2660 │ │ │ │ -614AFE9E9C82F8CD2E6035EEF84E5F16CBB690AC819B4B910EA8E81106F0ACE5 │ │ │ │ -CDFE77DAF69E4AFE72C43145A3ABCC40B6C5297487083F738C86422277AC2267 │ │ │ │ -51759F1B7F129E87DE16433B664AD0FB6D30424A11C70B52B591352BF653C8B0 │ │ │ │ -0840C224FBFEAA996A6BE1D69414DD778C2EF56A63B64D59BA412EC3E4000831 │ │ │ │ -73361FB9813F9A7C74BA3A50D331B07B61492E5D75F0861B530587269B3ADC90 │ │ │ │ -EA1DF586AC4BC57C3230893EFE953A6E76950ABA895FAC711D3BD330ABC6846A │ │ │ │ -C91F6ABF3410B913DFE5C8266020CEE5C7A9EDA2E7D9BCA797DC486443C7BA7C │ │ │ │ -7E03439A40927FA3251B6D417E5653E7799E9D6F04149C34096E2CA9B1F9B1EC │ │ │ │ -38958A2521B4A657A8B9F16E1FD66C7E345A10D7AA0241559503D214AC6507A4 │ │ │ │ -CBDE8617AA7ED136577734428594487F3565BF45FA196375759E2FE23C26EC8A │ │ │ │ -3310A36917A5E2F260EAB31030F8E570303D36B833626938F56939849DFA1F3F │ │ │ │ -66D0A317BB6364427F1512AAB380B555611C76345C02C3A6FBF78590331D5ECA │ │ │ │ -029DEFB722F6AB05327C2A31AB7BD6ED0F0386E6F45C1278048D22B90B074CCB │ │ │ │ -2BBEBCC1927C97EC532E651CAF0058AFE8FC08F00F0216D5DD9830C294FF76DA │ │ │ │ -426A073B3A3AEEFBDEE71C5182186311607ECDBD1F1AF4C5E79748CD01445C8D │ │ │ │ -25DD49490C8A6810065908222C8D0AC9F83AFBEE7115023E2D2615A170A5D40A │ │ │ │ -AD49BDF59A59187B6434F83E68EED22EF4EFDBADED6F1559AC779E0377FE7375 │ │ │ │ -D7060584FE74B1859D0FD98772253A712B17FFBB467840C484F5EF82C5677ADB │ │ │ │ -EDF159A456A526B8B9F6E8FC7608DFD47B0F09E26118F79CBE53B6C4E32BACAB │ │ │ │ -D62AFD4AA527CC4B587BB41A17A9BCE106A8C592BC9B73422B712C466C284A17 │ │ │ │ -E8D0C1E01D43C739FB1C083AD2714F78AC785B0C09AA7E67417A73510E00F2FE │ │ │ │ -E3D3EBF626A2F3A20A386E3F98D1285F4A2A332FC609CD191F01F128627B3505 │ │ │ │ -0AC2387DC0AD1B950490EBB5045F22BEC54955402CE2D267B6754E7C32BE84E8 │ │ │ │ -E6B63E3D3EAEE979442D167AEF69C27B22A8E887A2510C3A168D95D285CF7515 │ │ │ │ -011C921679B2F386575826A3F2071D015EEB78F02A4F94D4E5F07873623200F8 │ │ │ │ -7DF95BA0DC6B6D31DECC925BEA1E6A7C52FE685800EC33CBAE830F1AE5454DFA │ │ │ │ -913B8F457D7E2D3DFF019869E3301EEEC64A38295DE6B588E776922B32362382 │ │ │ │ -D1CF3D058613C8A96E6994D3EC23E8B71EC6E718383B20BB6C22DB6F93FA559F │ │ │ │ -3449CA84EB33B25C8BE0DFD1C29DC4FBD7AFBDC96C12162CAAB2C5E354B0FB10 │ │ │ │ -4BF8CC3610875ABD5111D09F2F847822118972214EDEB9EE34BAFE45E7AC15C5 │ │ │ │ -CA63EC4A3CEEA505A5EDD88A59BB67C71C3E026DFFE177F99BC69E6635545D03 │ │ │ │ -77A634F98230EF64381EC67CA519D4B9770EFA844789E21970F89D5FFC5DEAA8 │ │ │ │ -DC008EBA09306967ED090FF91B002FA6120C2B461A87AA32EFB003C5578D8EEF │ │ │ │ - │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ +AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ +E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ +46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ +FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ +389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ +7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ +2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ +C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ +B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ +AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ +E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ +F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ +0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ +2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ +29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ +CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ +6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ +5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ +36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0DD96AB602D004DCFE000A0 │ │ │ │ +ABE41BAB8AB7D50BD32BFD6F1AA3B60B09B9BE4E273EDD2DDCB21A98A760D17D │ │ │ │ +0A5C9303AFE63CF80A93E60C72A0576FAADEECBE2DE91892D210EB0AD1889C04 │ │ │ │ +C7530652584E775B4ED19CFB4B8DBCCC57A9FA9E4DDC8A1E5A1D3BE9E93407A6 │ │ │ │ +2C237ACE27F4EDA330EE952EDCBE91683AA98A29197735006666C96A2CE7C787 │ │ │ │ +BBA5A57C4DBF6FAA5B38AF226B5D9A65FAD84650AC0C3DB29C30602699F81E01 │ │ │ │ +0BAF8F1CE44A03C680121B77A1703C638187675D6C22C49F9902475E6CE9C732 │ │ │ │ +48ED028CC92EA542EF189CC9CA1C384E3387793057615D0A2BF040CC90B275B9 │ │ │ │ +F70A5310874DC2E0A360373E7BCAC88250FBC8989C7D18DA8274C06F02FCF31C │ │ │ │ +2B3868CBAF083DAC2FB159DE368261842DB7C9EA1A86B17617C861A48FBA8FF9 │ │ │ │ +D184CB026F4A418C0955347612F94C039B1536A76CB182A591DD7C02D509CF16 │ │ │ │ +8B9E46502ABF5DE31F5DFBD19C7417A2AF7AF13F0D5FF837C94CE56F07B96337 │ │ │ │ +0ED215252346FAEB54B5F3ABE29709B7ECB9FBD23A4AD397E6ABA6938F1BBF33 │ │ │ │ +1D5460D9414F0B8725DA832744525C13E3FD9C8DB33FBEE12F9C4969988402C8 │ │ │ │ +96AF916364CC2DF17EDBA622FC0A5D0013418E29F912FFA06F8D7E31ECAB0B08 │ │ │ │ +C4D2D8EE537CC768FC9038DD6D86D33642C6E812E941F157FC6917AF19C2B99A │ │ │ │ +5BF10B9A7ECF711BBB6F33C8C3DAD778153122593F36ABDDC0E97A602B045DE6 │ │ │ │ +19BD82D877DDA960AB11EF48C7F75A28D0D731D4A5DBC98283087267CD1A470D │ │ │ │ +537E949DA5EECF097B099547995BE066A941CED683B5748962AD2B02C21636C0 │ │ │ │ +2EAFA33CA0CB3BF8A95703F015A210D918865B9BEA2890DCFB68BC3719C305EC │ │ │ │ +315EC8727BF9A93632AB9E3090B100C022EE1396CD329B37547F26A7DCE52BD7 │ │ │ │ +F91B7388DEC34F4A0C6D46CD7CA6ACC00C5C4C71E47C6AD96496B3CBF531F342 │ │ │ │ +A740EE6B99BD70AD490DFA700772A0697EC6561CE88A0113E4DC3B21F372D810 │ │ │ │ +DFF2C3F6EDF3E917BF2664EEFC9AD292DD6CC36853CF936018D43FDB28D5B001 │ │ │ │ +7D1C805F958F13FD221377ABDD69D102E8CC1DAB2E011EE16CF6DB9D195BA702 │ │ │ │ +5A8738FABF989B0351282D0E5121182DFC52169782A5F3DD5D820411BEF909DE │ │ │ │ +04D963E6FDA76F88508C4E91DDAAA1748F396A1D380D8CA429673AF27C164434 │ │ │ │ +771781B39565D3EE50F3CF03EF12908B13A6C11C9AB7631B32125828B13050BA │ │ │ │ +041A93B97AC32D4A1E28C5FA98CDEE998B5F97823D6291D01E3611A16854F1FE │ │ │ │ +69B9D6D2AE3E56D012B7BC3E582FB4C23188A5E365E65EB1F804A706AF73A2F8 │ │ │ │ +9804808EF71F0982B14133BF9A27D6F2E719BDB751022B1B052722933948904E │ │ │ │ +3582E363478DCDA115205A0FDE39DF71FEAEEB104419C35A6B0678C19616C6D9 │ │ │ │ +A892DC2F4257069AF096C80C099CD13024DF3995F28C694E00D1F08B43D4450C │ │ │ │ +D18F5C925CFD2D124E74FC64BBAA0DE32A79E4A4507B5B5DD834C67160CDA110 │ │ │ │ +EF0061DD27E8864F4250A92BBEFD75C784BB98F4FA789A8236C2A21E4E61ABD0 │ │ │ │ +C6B4D13B3C31AC8E55FA34BEC7C308C61FB0280382EC6AFD63D959678D42D2B3 │ │ │ │ +4134F6236A0808D9302B4E3C6F81FC6973B4833602750CCB5DE36AEA23ED6BD4 │ │ │ │ +5B72DF0DD7B81C871CAA6EC190748CD8C4B998D576E5D340ACAC0617DDBE461C │ │ │ │ +8E82E809D11A01D265D039F4315066832E27E08A6F067E129E45FBF533F761BB │ │ │ │ +EC3C071209BECE7D14D3184B2E6BFD65717A5A7C08F3776B20C513649488C1CF │ │ │ │ +03333805B249D1034FB0AE2D7D2A23324EE27AEDB68F8E329A8052FE58D7C0D9 │ │ │ │ +A40A0CDC79F2085C4F39A7DFDB625C8F071E2A32CF6215DD3E060A9BABF7A3AA │ │ │ │ +C57DA0C0571C5D6EEAA975D1BB9C99F8EA4958360E43E8C60080B03DC4435550 │ │ │ │ +E6048DDD35DF3E5DA69669F266FFD7B44649A68025270DC84258E329F6E6907C │ │ │ │ +BCFF900D715D0C7EC43C5E7180CAD6427BA4FD41AAD6531A5C06B0EC26DDA71F │ │ │ │ +4A9DA50DE919E79226F6DDF7C1BA478936AA86CEAD93072CC2960E98C45A1A0C │ │ │ │ +60CF8A26E4278AB4F9E28FA6532648196CC455607D6BCD00F60675DE8CC02C8C │ │ │ │ +9BE5D5B714731814D5B008EE236563D77AC6895E0158877C95797E07C02AFEBE │ │ │ │ +CC9FE97D5E103F7DB0A834E9A7A75893EC66340B0E4C6F0EEDEF43415BF9FCF4 │ │ │ │ +47340CBEA4DCFBA0D028EB2149FFBBDB3322AE5F6FD20242526EDC55E476D983 │ │ │ │ +DC │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3600,15 +3606,15 @@ │ │ │ │ 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 3[51 12[45 22[47 15[25 │ │ │ │ -3[45 3[45 1[45 3[25 44[{}11 90.9091 /CMSL10 rf /Fe 141[62 │ │ │ │ +3[45 3[45 45 45 3[25 44[{}12 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 │ │ │ │ @@ -3700,17 +3706,17 @@ │ │ │ │ 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 1129 4 v │ │ │ │ -1311 w Fh(Drand)29 b Fd(:)40 b Fc(DRAFT)31 b Fd(Jan)m(uary)f(6,)h(2026) │ │ │ │ -p 2771 100 V 0 399 a Fb(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fj(2)p 136 100 1106 4 v │ │ │ │ +1288 w Fh(Drand)29 b Fd(:)41 b Fc(DRAFT)30 b Fd(Jan)m(uary)g(10,)h │ │ │ │ +(2026)p 2794 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) │ │ │ │ @@ -3758,17 +3764,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 1129 4 v 1310 100 a Fh(Drand)29 │ │ │ │ -b Fd(:)41 b Fc(DRAFT)121 b Fd(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2724 100 V 1129 w Fj(3)111 399 y(3.)46 b Fh(void)h(Drand_setSeeds)d(\() │ │ │ │ +TeXDict begin 3 2 bop 91 100 1106 4 v 1288 100 a Fh(Drand)29 │ │ │ │ +b Fd(:)40 b Fc(DRAFT)121 b Fd(Jan)m(uary)30 b(10,)i(2026)p │ │ │ │ +2747 100 V 1106 w Fj(3)111 399 y(3.)46 b Fh(void)h(Drand_setSeeds)d(\() │ │ │ │ j(Drand)g(*drand,)e(int)i(seed1,)f(int)h(seed2)g(\))g(;)227 │ │ │ │ 553 y Fj(This)30 b(metho)s(d)g(sets)g(the)h(random)f(n)m(um)m(b)s(er)f │ │ │ │ (seeds)h(using)g(t)m(w)m(o)i(input)d(seeds.)227 707 y │ │ │ │ Fc(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fj(If)30 b Fh(drand)f │ │ │ │ Fj(is)i Fh(NULL)p Fj(,)e(an)h(error)g(message)i(is)e(prin)m(ted)g(and)g │ │ │ │ (the)h(program)f(exits.)227 862 y Fc(Err)-5 b(or)33 b(che)-5 │ │ │ │ b(cking:)39 b Fj(If)29 b Fh(drand)e Fj(is)i Fh(NULL)p │ │ │ │ @@ -3823,18 +3829,18 @@ │ │ │ │ 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 1129 4 v │ │ │ │ -1311 w Fh(Drand)29 b Fd(:)40 b Fc(DRAFT)31 b Fd(Jan)m(uary)f(6,)h(2026) │ │ │ │ -p 2771 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 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fj(4)p 136 100 1106 4 v │ │ │ │ +1288 w Fh(Drand)29 b Fd(:)41 b Fc(DRAFT)30 b Fd(Jan)m(uary)g(10,)h │ │ │ │ +(2026)p 2794 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) │ │ │ │ ├── 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 January 6, 2026 │ │ │ │ │ + 2 Drand : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 3 │ │ │ │ │ + Drand : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 4 Drand : DRAFT January 10, 2026 │ │ │ │ │ 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 2026.01.06:2034 │ │ │ │ +%DVIPSSource: TeX output 2026.01.10:0513 │ │ │ │ %%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 │ │ │ │ @@ -1405,14 +1405,15 @@ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ /UnderlineThickness 50 def │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ +dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ dup 54 /six put │ │ │ │ dup 58 /colon put │ │ │ │ dup 74 /J put │ │ │ │ dup 97 /a put │ │ │ │ dup 110 /n put │ │ │ │ dup 114 /r put │ │ │ │ @@ -1602,79 +1603,84 @@ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB88440048702D1F │ │ │ │ -77994EE04EC3B4531D6E1888C86A8F0DA6CF1F056F16AB0DD76C862830F89DA4 │ │ │ │ -28923B3AA543E0D6E41D3BD283E600BC11F889315EE92C675C109C81065ED1BC │ │ │ │ -82A5583D1B723D50051B0557A367887F5B263014C6E77288B4883C50889473D3 │ │ │ │ -3787BAD4BEB88BD1353AFA5B73E61814819537E7FF09F53EF94792BB3DD36ED0 │ │ │ │ -002D0E7A6CDAB85A9C17AF5664BCB5A71663B861880F3ECCABC8E7A2FC81A4CC │ │ │ │ -AE7A87503FDC1CE0077BA51ECC7B43B60793FED8E9AAD5BBD03ADD6183DCD26D │ │ │ │ -24A74163611C05562437644EF9B8889FD4F9D311911204FEFD35237486F2D2D0 │ │ │ │ -B6783A03BF12EA6D19D6D0F87E4D08515F12F9CBF1961CAA71E0D69FE3C4C4D2 │ │ │ │ -7C7FB64ED24F8684C8F00C2BEDEA53EA390CDC0B5BEBD7DD982580B2EA1F1F89 │ │ │ │ -CFED5916630DC2BA32BB9180277E1ABC339B3B7DE086717BD93F7FF3681BA5B3 │ │ │ │ -FCF671C4B293C2DE4A322F0AA3323A4934444C69F23EF90120B8755482757759 │ │ │ │ -C457A435FB8BB4922BD92C5F3D9555D978275C510183E29DFF2FCE4ABBFC18DE │ │ │ │ -76CAD3B486BA12047DD808CD4D521A0FD368E4AE79DE262630983A5D6F0B679D │ │ │ │ -2F005306393C520E1B6987302D029939D94B0178DB06211C7F3B123A41E6E7BA │ │ │ │ -87164737110707A3ED3983895F3FBC815EF370F54C808ED93D910937BCA3D8AF │ │ │ │ -7CBF80DC180CDA54059DB76710B4FCD4139D5B7DA7DB1A0D0AF86AD2453D3691 │ │ │ │ -0BA5BAD40FF28BB4235FCD40FC87C2B888E67928D9B0ACA5692149373DBB93BF │ │ │ │ -6520DDD36A9BFE4D415CA67A5E04F1D48BDB28C69676273ED842CF7980E8E17C │ │ │ │ -B88563F407E340AFAE8F51AABCF8A39521BCEE1EC8396D75E124B24B4675909F │ │ │ │ -E246F87DA08584A3173AEFF153ECDF610543FA7474D125A31ADD6285A49222B5 │ │ │ │ -177066EA395BFA4B1114C7FCF7712DA772A21C99E64F4E1181E69CAF98137FA2 │ │ │ │ -76CF74F682B8CD7BA6EEA79B70FA8A76809634517F8415B6F21A5A7D6099B5E8 │ │ │ │ -EAB356BBC4FB68C72B8C61DDCE8EAB1A53B9D6BAD78584B307EFF57CEAE74884 │ │ │ │ -35987BF89E9E60E962D22FA5612F2DB5EB840499B7CC11A34BA5DEE30D277540 │ │ │ │ -39B8211D69B448ADE95B723F8369A631DE6DD75703AFD7485FB7FFF41A60CBE4 │ │ │ │ -813B8FEA120662355773830EF85015E7FFD609B2CEE52CB5FFE9C35B6BEEE4A4 │ │ │ │ -A66719E31CE1523FDD7771FB1E881A32A7DB7D92C2326DF4B93241C14ABFCCD6 │ │ │ │ -8E5BCAC61E800E6B1B4687ADA4CBF41EC0AFC26D021D1772CBDCD0516DF5EBE1 │ │ │ │ -37FD2AC5ABB8D774B5735940F1F6866D044FD8CE74444FAA5D0202C11E39CC10 │ │ │ │ -213731F41F704450E1D0565013BF22188442CE0FC256190A9F92F0C802AA2660 │ │ │ │ -614AFE9E9C82F8CD2E6035EEF84E5F16CBB690AC819B4B910EA8E81106F0ACE5 │ │ │ │ -CDFE77DAF69E4AFE72C43145A3ABCC40B6C5297487083F738C86422277AC2267 │ │ │ │ -51759F1B7F129E87DE16433B664AD0FB6D30424A11C70B52B591352BF653C8B0 │ │ │ │ -0840C224FBFEAA996A6BE1D69414DD778C2EF56A63B64D59BA412EC3E4000831 │ │ │ │ -73361FB9813F9A7C74BA3A50D331B07B61492E5D75F0861B530587269B3ADC90 │ │ │ │ -EA1DF586AC4BC57C3230893EFE953A6E76950ABA895FAC711D3BD330ABC6846A │ │ │ │ -C91F6ABF3410B913DFE5C8266020CEE5C7A9EDA2E7D9BCA797DC486443C7BA7C │ │ │ │ -7E03439A40927FA3251B6D417E5653E7799E9D6F04149C34096E2CA9B1F9B1EC │ │ │ │ -38958A2521B4A657A8B9F16E1FD66C7E345A10D7AA0241559503D214AC6507A4 │ │ │ │ -CBDE8617AA7ED136577734428594487F3565BF45FA196375759E2FE23C26EC8A │ │ │ │ -3310A36917A5E2F260EAB31030F8E570303D36B833626938F56939849DFA1F3F │ │ │ │ -66D0A317BB6364427F1512AAB380B555611C76345C02C3A6FBF78590331D5ECA │ │ │ │ -029DEFB722F6AB05327C2A31AB7BD6ED0F0386E6F45C1278048D22B90B074CCB │ │ │ │ -2BBEBCC1927C97EC532E651CAF0058AFE8FC08F00F0216D5DD9830C294FF76DA │ │ │ │ -426A073B3A3AEEFBDEE71C5182186311607ECDBD1F1AF4C5E79748CD01445C8D │ │ │ │ -25DD49490C8A6810065908222C8D0AC9F83AFBEE7115023E2D2615A170A5D40A │ │ │ │ -AD49BDF59A59187B6434F83E68EED22EF4EFDBADED6F1559AC779E0377FE7375 │ │ │ │ -D7060584FE74B1859D0FD98772253A712B17FFBB467840C484F5EF82C5677ADB │ │ │ │ -EDF159A456A526B8B9F6E8FC7608DFD47B0F09E26118F79CBE53B6C4E32BACAB │ │ │ │ -D62AFD4AA527CC4B587BB41A17A9BCE106A8C592BC9B73422B712C466C284A17 │ │ │ │ -E8D0C1E01D43C739FB1C083AD2714F78AC785B0C09AA7E67417A73510E00F2FE │ │ │ │ -E3D3EBF626A2F3A20A386E3F98D1285F4A2A332FC609CD191F01F128627B3505 │ │ │ │ -0AC2387DC0AD1B950490EBB5045F22BEC54955402CE2D267B6754E7C32BE84E8 │ │ │ │ -E6B63E3D3EAEE979442D167AEF69C27B22A8E887A2510C3A168D95D285CF7515 │ │ │ │ -011C921679B2F386575826A3F2071D015EEB78F02A4F94D4E5F07873623200F8 │ │ │ │ -7DF95BA0DC6B6D31DECC925BEA1E6A7C52FE685800EC33CBAE830F1AE5454DFA │ │ │ │ -913B8F457D7E2D3DFF019869E3301EEEC64A38295DE6B588E776922B32362382 │ │ │ │ -D1CF3D058613C8A96E6994D3EC23E8B71EC6E718383B20BB6C22DB6F93FA559F │ │ │ │ -3449CA84EB33B25C8BE0DFD1C29DC4FBD7AFBDC96C12162CAAB2C5E354B0FB10 │ │ │ │ -4BF8CC3610875ABD5111D09F2F847822118972214EDEB9EE34BAFE45E7AC15C5 │ │ │ │ -CA63EC4A3CEEA505A5EDD88A59BB67C71C3E026DFFE177F99BC69E6635545D03 │ │ │ │ -77A634F98230EF64381EC67CA519D4B9770EFA844789E21970F89D5FFC5DEAA8 │ │ │ │ -DC008EBA09306967ED090FF91B002FA6120C2B461A87AA32EFB003C5578D8EEF │ │ │ │ - │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ +AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ +E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ +46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ +FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ +389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ +7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ +2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ +C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ +B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ +AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ +E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ +F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ +0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ +2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ +29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ +CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ +6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ +5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ +36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0DD96AB602D004DCFE000A0 │ │ │ │ +ABE41BAB8AB7D50BD32BFD6F1AA3B60B09B9BE4E273EDD2DDCB21A98A760D17D │ │ │ │ +0A5C9303AFE63CF80A93E60C72A0576FAADEECBE2DE91892D210EB0AD1889C04 │ │ │ │ +C7530652584E775B4ED19CFB4B8DBCCC57A9FA9E4DDC8A1E5A1D3BE9E93407A6 │ │ │ │ +2C237ACE27F4EDA330EE952EDCBE91683AA98A29197735006666C96A2CE7C787 │ │ │ │ +BBA5A57C4DBF6FAA5B38AF226B5D9A65FAD84650AC0C3DB29C30602699F81E01 │ │ │ │ +0BAF8F1CE44A03C680121B77A1703C638187675D6C22C49F9902475E6CE9C732 │ │ │ │ +48ED028CC92EA542EF189CC9CA1C384E3387793057615D0A2BF040CC90B275B9 │ │ │ │ +F70A5310874DC2E0A360373E7BCAC88250FBC8989C7D18DA8274C06F02FCF31C │ │ │ │ +2B3868CBAF083DAC2FB159DE368261842DB7C9EA1A86B17617C861A48FBA8FF9 │ │ │ │ +D184CB026F4A418C0955347612F94C039B1536A76CB182A591DD7C02D509CF16 │ │ │ │ +8B9E46502ABF5DE31F5DFBD19C7417A2AF7AF13F0D5FF837C94CE56F07B96337 │ │ │ │ +0ED215252346FAEB54B5F3ABE29709B7ECB9FBD23A4AD397E6ABA6938F1BBF33 │ │ │ │ +1D5460D9414F0B8725DA832744525C13E3FD9C8DB33FBEE12F9C4969988402C8 │ │ │ │ +96AF916364CC2DF17EDBA622FC0A5D0013418E29F912FFA06F8D7E31ECAB0B08 │ │ │ │ +C4D2D8EE537CC768FC9038DD6D86D33642C6E812E941F157FC6917AF19C2B99A │ │ │ │ +5BF10B9A7ECF711BBB6F33C8C3DAD778153122593F36ABDDC0E97A602B045DE6 │ │ │ │ +19BD82D877DDA960AB11EF48C7F75A28D0D731D4A5DBC98283087267CD1A470D │ │ │ │ +537E949DA5EECF097B099547995BE066A941CED683B5748962AD2B02C21636C0 │ │ │ │ +2EAFA33CA0CB3BF8A95703F015A210D918865B9BEA2890DCFB68BC3719C305EC │ │ │ │ +315EC8727BF9A93632AB9E3090B100C022EE1396CD329B37547F26A7DCE52BD7 │ │ │ │ +F91B7388DEC34F4A0C6D46CD7CA6ACC00C5C4C71E47C6AD96496B3CBF531F342 │ │ │ │ +A740EE6B99BD70AD490DFA700772A0697EC6561CE88A0113E4DC3B21F372D810 │ │ │ │ +DFF2C3F6EDF3E917BF2664EEFC9AD292DD6CC36853CF936018D43FDB28D5B001 │ │ │ │ +7D1C805F958F13FD221377ABDD69D102E8CC1DAB2E011EE16CF6DB9D195BA702 │ │ │ │ +5A8738FABF989B0351282D0E5121182DFC52169782A5F3DD5D820411BEF909DE │ │ │ │ +04D963E6FDA76F88508C4E91DDAAA1748F396A1D380D8CA429673AF27C164434 │ │ │ │ +771781B39565D3EE50F3CF03EF12908B13A6C11C9AB7631B32125828B13050BA │ │ │ │ +041A93B97AC32D4A1E28C5FA98CDEE998B5F97823D6291D01E3611A16854F1FE │ │ │ │ +69B9D6D2AE3E56D012B7BC3E582FB4C23188A5E365E65EB1F804A706AF73A2F8 │ │ │ │ +9804808EF71F0982B14133BF9A27D6F2E719BDB751022B1B052722933948904E │ │ │ │ +3582E363478DCDA115205A0FDE39DF71FEAEEB104419C35A6B0678C19616C6D9 │ │ │ │ +A892DC2F4257069AF096C80C099CD13024DF3995F28C694E00D1F08B43D4450C │ │ │ │ +D18F5C925CFD2D124E74FC64BBAA0DE32A79E4A4507B5B5DD834C67160CDA110 │ │ │ │ +EF0061DD27E8864F4250A92BBEFD75C784BB98F4FA789A8236C2A21E4E61ABD0 │ │ │ │ +C6B4D13B3C31AC8E55FA34BEC7C308C61FB0280382EC6AFD63D959678D42D2B3 │ │ │ │ +4134F6236A0808D9302B4E3C6F81FC6973B4833602750CCB5DE36AEA23ED6BD4 │ │ │ │ +5B72DF0DD7B81C871CAA6EC190748CD8C4B998D576E5D340ACAC0617DDBE461C │ │ │ │ +8E82E809D11A01D265D039F4315066832E27E08A6F067E129E45FBF533F761BB │ │ │ │ +EC3C071209BECE7D14D3184B2E6BFD65717A5A7C08F3776B20C513649488C1CF │ │ │ │ +03333805B249D1034FB0AE2D7D2A23324EE27AEDB68F8E329A8052FE58D7C0D9 │ │ │ │ +A40A0CDC79F2085C4F39A7DFDB625C8F071E2A32CF6215DD3E060A9BABF7A3AA │ │ │ │ +C57DA0C0571C5D6EEAA975D1BB9C99F8EA4958360E43E8C60080B03DC4435550 │ │ │ │ +E6048DDD35DF3E5DA69669F266FFD7B44649A68025270DC84258E329F6E6907C │ │ │ │ +BCFF900D715D0C7EC43C5E7180CAD6427BA4FD41AAD6531A5C06B0EC26DDA71F │ │ │ │ +4A9DA50DE919E79226F6DDF7C1BA478936AA86CEAD93072CC2960E98C45A1A0C │ │ │ │ +60CF8A26E4278AB4F9E28FA6532648196CC455607D6BCD00F60675DE8CC02C8C │ │ │ │ +9BE5D5B714731814D5B008EE236563D77AC6895E0158877C95797E07C02AFEBE │ │ │ │ +CC9FE97D5E103F7DB0A834E9A7A75893EC66340B0E4C6F0EEDEF43415BF9FCF4 │ │ │ │ +47340CBEA4DCFBA0D028EB2149FFBBDB3322AE5F6FD20242526EDC55E476D983 │ │ │ │ +DC │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3895,15 +3901,15 @@ │ │ │ │ %%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 3[51 12[45 22[47 15[25 │ │ │ │ -3[45 3[45 1[45 3[25 44[{}11 90.9091 /CMSL10 rf │ │ │ │ +3[45 3[45 45 45 3[25 44[{}12 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 │ │ │ │ @@ -4023,17 +4029,17 @@ │ │ │ │ (ts.)0 5294 y(A)37 b(correctly)i(initialized)g(and)d(non)m(trivial)i │ │ │ │ Fj(EGraph)e Fk(ob)5 b(ject)38 b(will)f(ha)m(v)m(e)i(p)s(ositiv)m(e)f │ │ │ │ Fj(nelem)e Fk(and)g Fj(nvtx)g Fk(v)-5 b(alues,)40 b(a)0 │ │ │ │ 5407 y(v)-5 b(alid)31 b Fj(adjIVL)d Fk(\014eld.)41 b(If)30 │ │ │ │ b Fj(type)46 b(=)i(1)p Fk(,)30 b(the)h Fj(vwghts)d Fk(will)j(b)s(e)f │ │ │ │ (non-)p Fj(NULL)p Fk(.)1927 5656 y(1)p eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fk(2)p 136 100 1105 4 v │ │ │ │ -1287 w Fj(EGraph)29 b Fd(:)40 b Fg(DRAFT)31 b Fd(Jan)m(uary)f(6,)h │ │ │ │ -(2026)p 2795 100 V 0 399 a Ff(1.2)135 b(Protot)l(yp)t(es)46 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fk(2)p 136 100 1082 4 v │ │ │ │ +1264 w Fj(EGraph)29 b Fd(:)41 b Fg(DRAFT)30 b Fd(Jan)m(uary)g(10,)h │ │ │ │ +(2026)p 2818 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 │ │ │ │ @@ -4094,17 +4100,17 @@ │ │ │ │ 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 1105 4 v 1287 100 a Fj(EGraph)28 │ │ │ │ -b Fd(:)41 b Fg(DRAFT)121 b Fd(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2748 100 V 1105 w Fk(3)0 399 y Fb(1.2.3)112 b(Utilit)m(y)38 │ │ │ │ +TeXDict begin 3 2 bop 91 100 1082 4 v 1264 100 a Fj(EGraph)28 │ │ │ │ +b Fd(:)41 b Fg(DRAFT)121 b Fd(Jan)m(uary)30 b(10,)i(2026)p │ │ │ │ +2771 100 V 1082 w Fk(3)0 399 y Fb(1.2.3)112 b(Utilit)m(y)38 │ │ │ │ b(metho)s(ds)111 591 y Fk(1.)46 b Fj(Graph)h(EGraph_mkAdjGraph)c(\()k │ │ │ │ (EGraph)f(*egraph)g(\))i(;)227 736 y Fk(This)26 b(metho)s(d)h(creates)h │ │ │ │ (and)f(returns)f(a)h Fj(Graph)f Fk(ob)5 b(ject)27 b(with)g(v)m(ertex)h │ │ │ │ (adjacency)g(lists)g(from)e(the)h(elemen)m(t)227 849 │ │ │ │ y(graph)j(ob)5 b(ject.)227 995 y Fg(Err)-5 b(or)34 b(che)-5 │ │ │ │ b(cking:)40 b Fk(If)30 b Fj(egraph)f Fk(is)h Fj(NULL)p │ │ │ │ Fk(,)g(an)g(error)g(message)i(is)e(prin)m(ted)g(and)g(the)g(program)g │ │ │ │ @@ -4176,17 +4182,17 @@ │ │ │ │ 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 1105 4 v │ │ │ │ -1287 w Fj(EGraph)29 b Fd(:)40 b Fg(DRAFT)31 b Fd(Jan)m(uary)f(6,)h │ │ │ │ -(2026)p 2795 100 V 111 399 a Fk(4.)46 b Fj(int)h(EGraph_writeToFile)c │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fk(4)p 136 100 1082 4 v │ │ │ │ +1264 w Fj(EGraph)29 b Fd(:)41 b Fg(DRAFT)30 b Fd(Jan)m(uary)g(10,)h │ │ │ │ +(2026)p 2818 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 │ │ │ │ @@ -4258,17 +4264,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 1105 4 v 1287 100 a Fj(EGraph)28 │ │ │ │ -b Fd(:)41 b Fg(DRAFT)121 b Fd(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2748 100 V 1105 w Fk(5)337 399 y Fe(\210)45 b Fk(The)35 │ │ │ │ +TeXDict begin 5 4 bop 91 100 1082 4 v 1264 100 a Fj(EGraph)28 │ │ │ │ +b Fd(:)41 b Fg(DRAFT)121 b Fd(Jan)m(uary)30 b(10,)i(2026)p │ │ │ │ +2771 100 V 1082 w Fk(5)337 399 y Fe(\210)45 b Fk(The)35 │ │ │ │ b Fj(inFile)e Fk(parameter)i(is)g(the)h(input)e(\014le)h(for)f(the)h │ │ │ │ Fj(EGraph)f Fk(ob)5 b(ject.)55 b(It)35 b(m)m(ust)g(b)s(e)f(of)h(the)g │ │ │ │ (form)427 511 y Fj(*.egraphf)18 b Fk(or)i Fj(*.egraphb)p │ │ │ │ Fk(.)35 b(The)20 b Fj(EGraph)e Fk(ob)5 b(ject)22 b(is)e(read)g(from)g │ │ │ │ (the)g(\014le)h(via)g(the)f Fj(EGraph)p 3559 511 29 4 │ │ │ │ v 33 w(readFromFile\(\))427 624 y Fk(metho)s(d.)337 780 │ │ │ │ y Fe(\210)45 b Fk(The)25 b Fj(outFile)e Fk(parameter)j(is)f(the)h │ │ │ │ @@ -4340,17 +4346,17 @@ │ │ │ │ (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 1105 4 v │ │ │ │ -1287 w Fj(EGraph)29 b Fd(:)40 b Fg(DRAFT)31 b Fd(Jan)m(uary)f(6,)h │ │ │ │ -(2026)p 2795 100 V 337 399 a Fe(\210)45 b Fk(The)20 b │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fk(6)p 136 100 1082 4 v │ │ │ │ +1264 w Fj(EGraph)29 b Fd(:)41 b Fg(DRAFT)30 b Fd(Jan)m(uary)g(10,)h │ │ │ │ +(2026)p 2818 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 │ │ │ │ ├── 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 January 6, 2026 │ │ │ │ │ + 2 EGraph : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 3 │ │ │ │ │ + EGraph : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 4 EGraph : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 5 │ │ │ │ │ + EGraph : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 6 EGraph : DRAFT January 10, 2026 │ │ │ │ │ • 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 2026.01.06:2034 │ │ │ │ +%DVIPSSource: TeX output 2026.01.10:0513 │ │ │ │ %%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 │ │ │ │ @@ -3605,14 +3605,15 @@ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ /UnderlineThickness 50 def │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ +dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ dup 54 /six put │ │ │ │ dup 58 /colon put │ │ │ │ dup 74 /J put │ │ │ │ dup 97 /a put │ │ │ │ dup 110 /n put │ │ │ │ dup 114 /r put │ │ │ │ @@ -3802,79 +3803,84 @@ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB88440048702D1F │ │ │ │ -77994EE04EC3B4531D6E1888C86A8F0DA6CF1F056F16AB0DD76C862830F89DA4 │ │ │ │ -28923B3AA543E0D6E41D3BD283E600BC11F889315EE92C675C109C81065ED1BC │ │ │ │ -82A5583D1B723D50051B0557A367887F5B263014C6E77288B4883C50889473D3 │ │ │ │ -3787BAD4BEB88BD1353AFA5B73E61814819537E7FF09F53EF94792BB3DD36ED0 │ │ │ │ -002D0E7A6CDAB85A9C17AF5664BCB5A71663B861880F3ECCABC8E7A2FC81A4CC │ │ │ │ -AE7A87503FDC1CE0077BA51ECC7B43B60793FED8E9AAD5BBD03ADD6183DCD26D │ │ │ │ -24A74163611C05562437644EF9B8889FD4F9D311911204FEFD35237486F2D2D0 │ │ │ │ -B6783A03BF12EA6D19D6D0F87E4D08515F12F9CBF1961CAA71E0D69FE3C4C4D2 │ │ │ │ -7C7FB64ED24F8684C8F00C2BEDEA53EA390CDC0B5BEBD7DD982580B2EA1F1F89 │ │ │ │ -CFED5916630DC2BA32BB9180277E1ABC339B3B7DE086717BD93F7FF3681BA5B3 │ │ │ │ -FCF671C4B293C2DE4A322F0AA3323A4934444C69F23EF90120B8755482757759 │ │ │ │ -C457A435FB8BB4922BD92C5F3D9555D978275C510183E29DFF2FCE4ABBFC18DE │ │ │ │ -76CAD3B486BA12047DD808CD4D521A0FD368E4AE79DE262630983A5D6F0B679D │ │ │ │ -2F005306393C520E1B6987302D029939D94B0178DB06211C7F3B123A41E6E7BA │ │ │ │ -87164737110707A3ED3983895F3FBC815EF370F54C808ED93D910937BCA3D8AF │ │ │ │ -7CBF80DC180CDA54059DB76710B4FCD4139D5B7DA7DB1A0D0AF86AD2453D3691 │ │ │ │ -0BA5BAD40FF28BB4235FCD40FC87C2B888E67928D9B0ACA5692149373DBB93BF │ │ │ │ -6520DDD36A9BFE4D415CA67A5E04F1D48BDB28C69676273ED842CF7980E8E17C │ │ │ │ -B88563F407E340AFAE8F51AABCF8A39521BCEE1EC8396D75E124B24B4675909F │ │ │ │ -E246F87DA08584A3173AEFF153ECDF610543FA7474D125A31ADD6285A49222B5 │ │ │ │ -177066EA395BFA4B1114C7FCF7712DA772A21C99E64F4E1181E69CAF98137FA2 │ │ │ │ -76CF74F682B8CD7BA6EEA79B70FA8A76809634517F8415B6F21A5A7D6099B5E8 │ │ │ │ -EAB356BBC4FB68C72B8C61DDCE8EAB1A53B9D6BAD78584B307EFF57CEAE74884 │ │ │ │ -35987BF89E9E60E962D22FA5612F2DB5EB840499B7CC11A34BA5DEE30D277540 │ │ │ │ -39B8211D69B448ADE95B723F8369A631DE6DD75703AFD7485FB7FFF41A60CBE4 │ │ │ │ -813B8FEA120662355773830EF85015E7FFD609B2CEE52CB5FFE9C35B6BEEE4A4 │ │ │ │ -A66719E31CE1523FDD7771FB1E881A32A7DB7D92C2326DF4B93241C14ABFCCD6 │ │ │ │ -8E5BCAC61E800E6B1B4687ADA4CBF41EC0AFC26D021D1772CBDCD0516DF5EBE1 │ │ │ │ -37FD2AC5ABB8D774B5735940F1F6866D044FD8CE74444FAA5D0202C11E39CC10 │ │ │ │ -213731F41F704450E1D0565013BF22188442CE0FC256190A9F92F0C802AA2660 │ │ │ │ -614AFE9E9C82F8CD2E6035EEF84E5F16CBB690AC819B4B910EA8E81106F0ACE5 │ │ │ │ -CDFE77DAF69E4AFE72C43145A3ABCC40B6C5297487083F738C86422277AC2267 │ │ │ │ -51759F1B7F129E87DE16433B664AD0FB6D30424A11C70B52B591352BF653C8B0 │ │ │ │ -0840C224FBFEAA996A6BE1D69414DD778C2EF56A63B64D59BA412EC3E4000831 │ │ │ │ -73361FB9813F9A7C74BA3A50D331B07B61492E5D75F0861B530587269B3ADC90 │ │ │ │ -EA1DF586AC4BC57C3230893EFE953A6E76950ABA895FAC711D3BD330ABC6846A │ │ │ │ -C91F6ABF3410B913DFE5C8266020CEE5C7A9EDA2E7D9BCA797DC486443C7BA7C │ │ │ │ -7E03439A40927FA3251B6D417E5653E7799E9D6F04149C34096E2CA9B1F9B1EC │ │ │ │ -38958A2521B4A657A8B9F16E1FD66C7E345A10D7AA0241559503D214AC6507A4 │ │ │ │ -CBDE8617AA7ED136577734428594487F3565BF45FA196375759E2FE23C26EC8A │ │ │ │ -3310A36917A5E2F260EAB31030F8E570303D36B833626938F56939849DFA1F3F │ │ │ │ -66D0A317BB6364427F1512AAB380B555611C76345C02C3A6FBF78590331D5ECA │ │ │ │ -029DEFB722F6AB05327C2A31AB7BD6ED0F0386E6F45C1278048D22B90B074CCB │ │ │ │ -2BBEBCC1927C97EC532E651CAF0058AFE8FC08F00F0216D5DD9830C294FF76DA │ │ │ │ -426A073B3A3AEEFBDEE71C5182186311607ECDBD1F1AF4C5E79748CD01445C8D │ │ │ │ -25DD49490C8A6810065908222C8D0AC9F83AFBEE7115023E2D2615A170A5D40A │ │ │ │ -AD49BDF59A59187B6434F83E68EED22EF4EFDBADED6F1559AC779E0377FE7375 │ │ │ │ -D7060584FE74B1859D0FD98772253A712B17FFBB467840C484F5EF82C5677ADB │ │ │ │ -EDF159A456A526B8B9F6E8FC7608DFD47B0F09E26118F79CBE53B6C4E32BACAB │ │ │ │ -D62AFD4AA527CC4B587BB41A17A9BCE106A8C592BC9B73422B712C466C284A17 │ │ │ │ -E8D0C1E01D43C739FB1C083AD2714F78AC785B0C09AA7E67417A73510E00F2FE │ │ │ │ -E3D3EBF626A2F3A20A386E3F98D1285F4A2A332FC609CD191F01F128627B3505 │ │ │ │ -0AC2387DC0AD1B950490EBB5045F22BEC54955402CE2D267B6754E7C32BE84E8 │ │ │ │ -E6B63E3D3EAEE979442D167AEF69C27B22A8E887A2510C3A168D95D285CF7515 │ │ │ │ -011C921679B2F386575826A3F2071D015EEB78F02A4F94D4E5F07873623200F8 │ │ │ │ -7DF95BA0DC6B6D31DECC925BEA1E6A7C52FE685800EC33CBAE830F1AE5454DFA │ │ │ │ -913B8F457D7E2D3DFF019869E3301EEEC64A38295DE6B588E776922B32362382 │ │ │ │ -D1CF3D058613C8A96E6994D3EC23E8B71EC6E718383B20BB6C22DB6F93FA559F │ │ │ │ -3449CA84EB33B25C8BE0DFD1C29DC4FBD7AFBDC96C12162CAAB2C5E354B0FB10 │ │ │ │ -4BF8CC3610875ABD5111D09F2F847822118972214EDEB9EE34BAFE45E7AC15C5 │ │ │ │ -CA63EC4A3CEEA505A5EDD88A59BB67C71C3E026DFFE177F99BC69E6635545D03 │ │ │ │ -77A634F98230EF64381EC67CA519D4B9770EFA844789E21970F89D5FFC5DEAA8 │ │ │ │ -DC008EBA09306967ED090FF91B002FA6120C2B461A87AA32EFB003C5578D8EEF │ │ │ │ - │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ +AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ +E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ +46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ +FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ +389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ +7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ +2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ +C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ +B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ +AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ +E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ +F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ +0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ +2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ +29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ +CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ +6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ +5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ +36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0DD96AB602D004DCFE000A0 │ │ │ │ +ABE41BAB8AB7D50BD32BFD6F1AA3B60B09B9BE4E273EDD2DDCB21A98A760D17D │ │ │ │ +0A5C9303AFE63CF80A93E60C72A0576FAADEECBE2DE91892D210EB0AD1889C04 │ │ │ │ +C7530652584E775B4ED19CFB4B8DBCCC57A9FA9E4DDC8A1E5A1D3BE9E93407A6 │ │ │ │ +2C237ACE27F4EDA330EE952EDCBE91683AA98A29197735006666C96A2CE7C787 │ │ │ │ +BBA5A57C4DBF6FAA5B38AF226B5D9A65FAD84650AC0C3DB29C30602699F81E01 │ │ │ │ +0BAF8F1CE44A03C680121B77A1703C638187675D6C22C49F9902475E6CE9C732 │ │ │ │ +48ED028CC92EA542EF189CC9CA1C384E3387793057615D0A2BF040CC90B275B9 │ │ │ │ +F70A5310874DC2E0A360373E7BCAC88250FBC8989C7D18DA8274C06F02FCF31C │ │ │ │ +2B3868CBAF083DAC2FB159DE368261842DB7C9EA1A86B17617C861A48FBA8FF9 │ │ │ │ +D184CB026F4A418C0955347612F94C039B1536A76CB182A591DD7C02D509CF16 │ │ │ │ +8B9E46502ABF5DE31F5DFBD19C7417A2AF7AF13F0D5FF837C94CE56F07B96337 │ │ │ │ +0ED215252346FAEB54B5F3ABE29709B7ECB9FBD23A4AD397E6ABA6938F1BBF33 │ │ │ │ +1D5460D9414F0B8725DA832744525C13E3FD9C8DB33FBEE12F9C4969988402C8 │ │ │ │ +96AF916364CC2DF17EDBA622FC0A5D0013418E29F912FFA06F8D7E31ECAB0B08 │ │ │ │ +C4D2D8EE537CC768FC9038DD6D86D33642C6E812E941F157FC6917AF19C2B99A │ │ │ │ +5BF10B9A7ECF711BBB6F33C8C3DAD778153122593F36ABDDC0E97A602B045DE6 │ │ │ │ +19BD82D877DDA960AB11EF48C7F75A28D0D731D4A5DBC98283087267CD1A470D │ │ │ │ +537E949DA5EECF097B099547995BE066A941CED683B5748962AD2B02C21636C0 │ │ │ │ +2EAFA33CA0CB3BF8A95703F015A210D918865B9BEA2890DCFB68BC3719C305EC │ │ │ │ +315EC8727BF9A93632AB9E3090B100C022EE1396CD329B37547F26A7DCE52BD7 │ │ │ │ +F91B7388DEC34F4A0C6D46CD7CA6ACC00C5C4C71E47C6AD96496B3CBF531F342 │ │ │ │ +A740EE6B99BD70AD490DFA700772A0697EC6561CE88A0113E4DC3B21F372D810 │ │ │ │ +DFF2C3F6EDF3E917BF2664EEFC9AD292DD6CC36853CF936018D43FDB28D5B001 │ │ │ │ +7D1C805F958F13FD221377ABDD69D102E8CC1DAB2E011EE16CF6DB9D195BA702 │ │ │ │ +5A8738FABF989B0351282D0E5121182DFC52169782A5F3DD5D820411BEF909DE │ │ │ │ +04D963E6FDA76F88508C4E91DDAAA1748F396A1D380D8CA429673AF27C164434 │ │ │ │ +771781B39565D3EE50F3CF03EF12908B13A6C11C9AB7631B32125828B13050BA │ │ │ │ +041A93B97AC32D4A1E28C5FA98CDEE998B5F97823D6291D01E3611A16854F1FE │ │ │ │ +69B9D6D2AE3E56D012B7BC3E582FB4C23188A5E365E65EB1F804A706AF73A2F8 │ │ │ │ +9804808EF71F0982B14133BF9A27D6F2E719BDB751022B1B052722933948904E │ │ │ │ +3582E363478DCDA115205A0FDE39DF71FEAEEB104419C35A6B0678C19616C6D9 │ │ │ │ +A892DC2F4257069AF096C80C099CD13024DF3995F28C694E00D1F08B43D4450C │ │ │ │ +D18F5C925CFD2D124E74FC64BBAA0DE32A79E4A4507B5B5DD834C67160CDA110 │ │ │ │ +EF0061DD27E8864F4250A92BBEFD75C784BB98F4FA789A8236C2A21E4E61ABD0 │ │ │ │ +C6B4D13B3C31AC8E55FA34BEC7C308C61FB0280382EC6AFD63D959678D42D2B3 │ │ │ │ +4134F6236A0808D9302B4E3C6F81FC6973B4833602750CCB5DE36AEA23ED6BD4 │ │ │ │ +5B72DF0DD7B81C871CAA6EC190748CD8C4B998D576E5D340ACAC0617DDBE461C │ │ │ │ +8E82E809D11A01D265D039F4315066832E27E08A6F067E129E45FBF533F761BB │ │ │ │ +EC3C071209BECE7D14D3184B2E6BFD65717A5A7C08F3776B20C513649488C1CF │ │ │ │ +03333805B249D1034FB0AE2D7D2A23324EE27AEDB68F8E329A8052FE58D7C0D9 │ │ │ │ +A40A0CDC79F2085C4F39A7DFDB625C8F071E2A32CF6215DD3E060A9BABF7A3AA │ │ │ │ +C57DA0C0571C5D6EEAA975D1BB9C99F8EA4958360E43E8C60080B03DC4435550 │ │ │ │ +E6048DDD35DF3E5DA69669F266FFD7B44649A68025270DC84258E329F6E6907C │ │ │ │ +BCFF900D715D0C7EC43C5E7180CAD6427BA4FD41AAD6531A5C06B0EC26DDA71F │ │ │ │ +4A9DA50DE919E79226F6DDF7C1BA478936AA86CEAD93072CC2960E98C45A1A0C │ │ │ │ +60CF8A26E4278AB4F9E28FA6532648196CC455607D6BCD00F60675DE8CC02C8C │ │ │ │ +9BE5D5B714731814D5B008EE236563D77AC6895E0158877C95797E07C02AFEBE │ │ │ │ +CC9FE97D5E103F7DB0A834E9A7A75893EC66340B0E4C6F0EEDEF43415BF9FCF4 │ │ │ │ +47340CBEA4DCFBA0D028EB2149FFBBDB3322AE5F6FD20242526EDC55E476D983 │ │ │ │ +DC │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -5417,15 +5423,15 @@ │ │ │ │ 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 3[51 12[45 22[47 15[25 │ │ │ │ -3[45 3[45 1[45 3[25 44[{}11 90.9091 /CMSL10 rf │ │ │ │ +3[45 3[45 45 45 3[25 44[{}12 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 │ │ │ │ @@ -5538,17 +5544,17 @@ │ │ │ │ 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 1129 4 v │ │ │ │ -1311 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)31 b Fk(Jan)m(uary)f(6,)h(2026) │ │ │ │ -p 2771 100 V 137 399 a Fl(\210)45 b Fn(IV)i(*vtxToFrontIV)35 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fo(2)p 136 100 1106 4 v │ │ │ │ +1288 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(Jan)m(uary)g(10,)h │ │ │ │ +(2026)p 2794 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 │ │ │ │ @@ -5601,17 +5607,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 1129 4 v 1310 100 a Fn(ETree)29 │ │ │ │ -b Fk(:)41 b Fj(DRAFT)121 b Fk(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2724 100 V 1129 w Fo(3)111 399 y(2.)46 b Fn(int)h(ETree_nvtx)e(\()j │ │ │ │ +TeXDict begin 3 2 bop 91 100 1106 4 v 1288 100 a Fn(ETree)29 │ │ │ │ +b Fk(:)40 b Fj(DRAFT)121 b Fk(Jan)m(uary)30 b(10,)i(2026)p │ │ │ │ +2747 100 V 1106 w Fo(3)111 399 y(2.)46 b Fn(int)h(ETree_nvtx)e(\()j │ │ │ │ (ETree)e(*etree)g(\))i(;)227 556 y Fo(This)30 b(metho)s(d)g(returns)f │ │ │ │ (the)h(n)m(um)m(b)s(er)f(of)i(v)m(ertices.)227 713 y │ │ │ │ Fj(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fo(If)30 b Fn(etree)f │ │ │ │ Fo(is)i Fn(NULL)p Fo(,)e(an)h(error)g(message)i(is)e(prin)m(ted)g(and)g │ │ │ │ (the)h(program)f(exits.)111 915 y(3.)46 b Fn(Tree)h(*)g(ETree_tree)e │ │ │ │ (\()j(ETree)e(*etree)g(\))i(;)227 1072 y Fo(This)30 b(metho)s(d)g │ │ │ │ (returns)f(a)i(p)s(oin)m(ter)f(to)h(the)g Fn(Tree)e Fo(ob)5 │ │ │ │ @@ -5659,24 +5665,24 @@ │ │ │ │ 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 1129 4 v │ │ │ │ -1311 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)31 b Fk(Jan)m(uary)f(6,)h(2026) │ │ │ │ -p 2771 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 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fo(4)p 136 100 1106 4 v │ │ │ │ +1288 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(Jan)m(uary)g(10,)h │ │ │ │ +(2026)p 2794 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) │ │ │ │ @@ -5727,17 +5733,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 1129 4 v 1310 100 a Fn(ETree)29 │ │ │ │ -b Fk(:)41 b Fj(DRAFT)121 b Fk(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2724 100 V 1129 w Fo(5)227 399 y(with)j(a)g(call)i(to)e │ │ │ │ +TeXDict begin 5 4 bop 91 100 1106 4 v 1288 100 a Fn(ETree)29 │ │ │ │ +b Fk(:)40 b Fj(DRAFT)121 b Fk(Jan)m(uary)30 b(10,)i(2026)p │ │ │ │ +2747 100 V 1106 w Fo(5)227 399 y(with)i(a)g(call)i(to)e │ │ │ │ Fn(Tree)p 1000 399 29 4 v 34 w(init1\(\))p Fo(.)49 b(The)34 │ │ │ │ b Fn(nodwghtsIV)p Fo(,)d Fn(bndwghtsIV)h Fo(and)h Fn(vtxToFrontIV)e │ │ │ │ Fo(ob)5 b(jects)35 b(are)227 511 y(initialized)d(with)e(calls)h(to)g │ │ │ │ Fn(IV)p 1268 511 V 34 w(init\(\))p Fo(.)39 b(The)30 b(en)m(tries)h(in)f │ │ │ │ Fn(nodwghtsIV)d Fo(and)i Fn(bndwghtsIV)f Fo(are)i(set)h(to)g │ │ │ │ Fn(0)p Fo(,)227 624 y(while)g(the)f(en)m(tries)h(in)f │ │ │ │ Fn(vtxToFrontIV)d Fo(are)k(set)g(to)g Fn(-1)p Fo(.)227 │ │ │ │ @@ -5815,21 +5821,21 @@ │ │ │ │ 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 1129 4 v │ │ │ │ -1311 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)31 b Fk(Jan)m(uary)f(6,)h(2026) │ │ │ │ -p 2771 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 │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fo(6)p 136 100 1106 4 v │ │ │ │ +1288 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(Jan)m(uary)g(10,)h │ │ │ │ +(2026)p 2794 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 │ │ │ │ @@ -5900,17 +5906,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 1129 4 v 1310 100 a Fn(ETree)29 │ │ │ │ -b Fk(:)41 b Fj(DRAFT)121 b Fk(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2724 100 V 1129 w Fo(7)111 399 y(6.)46 b Fn(double)g │ │ │ │ +TeXDict begin 7 6 bop 91 100 1106 4 v 1288 100 a Fn(ETree)29 │ │ │ │ +b Fk(:)40 b Fj(DRAFT)121 b Fk(Jan)m(uary)30 b(10,)i(2026)p │ │ │ │ +2747 100 V 1106 w Fo(7)111 399 y(6.)46 b Fn(double)g │ │ │ │ (ETree_nInternalOpsInFront)41 b(\()48 b(ETree)e(*etree,)g(int)h(type,)f │ │ │ │ (int)h(symflag,)f(int)h(J)g(\))g(;)227 554 y Fo(This)20 │ │ │ │ b(metho)s(d)f(returns)h(the)g(n)m(um)m(b)s(er)f(of)h(in)m(ternal)h(op)s │ │ │ │ (erations)g(p)s(erformed)e(b)m(y)h(fron)m(t)g Fn(J)g │ │ │ │ Fo(on)h(its)f(\(1)p Fg(;)15 b Fo(1\),)25 b(\(2)p Fg(;)15 │ │ │ │ b Fo(1\),)227 667 y(and)37 b(\(1)p Fg(;)15 b Fo(2\))38 │ │ │ │ b(blo)s(c)m(ks)g(during)d(a)j(factorization.)63 b(The)36 │ │ │ │ @@ -5996,24 +6002,25 @@ │ │ │ │ 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 1129 4 v │ │ │ │ -1311 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)31 b Fk(Jan)m(uary)f(6,)h(2026) │ │ │ │ -p 2771 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 1106 4 v │ │ │ │ +1288 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(Jan)m(uary)g(10,)h │ │ │ │ +(2026)p 2794 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 │ │ │ │ @@ -6074,17 +6081,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 1129 4 v 1310 100 a Fn(ETree)29 │ │ │ │ -b Fk(:)41 b Fj(DRAFT)121 b Fk(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2724 100 V 1129 w Fo(9)0 399 y Fh(1.2.6)112 b(Compression)39 │ │ │ │ +TeXDict begin 9 8 bop 91 100 1106 4 v 1288 100 a Fn(ETree)29 │ │ │ │ +b Fk(:)40 b Fj(DRAFT)121 b Fk(Jan)m(uary)30 b(10,)i(2026)p │ │ │ │ +2747 100 V 1106 w Fo(9)0 399 y Fh(1.2.6)112 b(Compression)39 │ │ │ │ b(metho)s(ds)0 604 y Fo(F)-8 b(requen)m(tly)30 b(an)f │ │ │ │ Fn(ETree)f Fo(ob)5 b(ject)30 b(will)g(need)e(to)i(b)s(e)f(compressed)g │ │ │ │ (in)f(some)i(manner.)40 b(Elimination)29 b(trees)h(usually)0 │ │ │ │ 717 y(ha)m(v)m(e)42 b(long)g(c)m(hains)g(of)f(v)m(ertices)i(at)f(the)f │ │ │ │ (higher)g(lev)m(els,)46 b(where)41 b(eac)m(h)h(c)m(hain)g(of)f(v)m │ │ │ │ (ertices)i(corresp)s(onds)d(to)i(a)0 830 y(sup)s(erno)s(de.)d(Liu's)30 │ │ │ │ b(generalized)i(ro)m(w)e(en)m(v)m(elop)s(e)i(metho)s(ds)e(partition)h │ │ │ │ @@ -6152,17 +6159,17 @@ │ │ │ │ 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 1106 4 │ │ │ │ -v 1289 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)30 b Fk(Jan)m(uary)g(6,)h │ │ │ │ -(2026)p 2794 100 V 111 399 a Fo(3.)46 b Fn(ETree)h(*)g(ETree_compress)d │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fo(10)p 182 100 1084 4 │ │ │ │ +v 1266 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)31 b Fk(Jan)m(uary)f(10,)h │ │ │ │ +(2026)p 2817 100 V 111 399 a Fo(3.)46 b Fn(ETree)h(*)g(ETree_compress)d │ │ │ │ (\()j(ETree)g(*etree,)f(IV)h(*frontMapIV)e(\))i(;)227 │ │ │ │ 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 │ │ │ │ @@ -6226,17 +6233,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 1106 4 v 1288 100 a Fn(ETree)29 │ │ │ │ -b Fk(:)40 b Fj(DRAFT)121 b Fk(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2701 100 V 1106 w Fo(11)111 399 y(2.)46 b Fn(IV)h(*)h │ │ │ │ +TeXDict begin 11 10 bop 91 100 1084 4 v 1265 100 a Fn(ETree)29 │ │ │ │ +b Fk(:)41 b Fj(DRAFT)121 b Fk(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2724 100 V 1084 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 │ │ │ │ @@ -6308,17 +6315,17 @@ │ │ │ │ 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 1106 │ │ │ │ -4 v 1289 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)30 b Fk(Jan)m(uary)g(6,)h │ │ │ │ -(2026)p 2794 100 V 227 399 a Fo(strictly)36 b(sp)s(eaking,)f(the)f(n)m │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fo(12)p 182 100 1084 │ │ │ │ +4 v 1266 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)31 b Fk(Jan)m(uary)f(10,)h │ │ │ │ +(2026)p 2817 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 │ │ │ │ @@ -6411,17 +6418,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 1106 4 v 1288 100 a Fn(ETree)29 │ │ │ │ -b Fk(:)40 b Fj(DRAFT)121 b Fk(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2701 100 V 1106 w Fo(13)0 399 y Fh(1.2.10)113 b(T)-9 │ │ │ │ +TeXDict begin 13 12 bop 91 100 1084 4 v 1265 100 a Fn(ETree)29 │ │ │ │ +b Fk(:)41 b Fj(DRAFT)121 b Fk(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2724 100 V 1084 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 │ │ │ │ @@ -6510,17 +6517,17 @@ │ │ │ │ (recom-)0 5294 y(mend)32 b(\014rst)g(using)h Fn(ETree)p │ │ │ │ 927 5294 V 33 w(mergeFrontsOne\(\))c Fo(follo)m(w)m(ed)34 │ │ │ │ b(b)m(y)f Fn(ETree)p 2479 5294 V 33 w(mergeFrontsAll\(\))p │ │ │ │ Fo(.)45 b(See)33 b(the)g(driv)m(er)0 5407 y(programs)d │ │ │ │ Fn(testTransform)d Fo(and)j Fn(mkNDETree)d Fo(for)k(examples)f(of)h(ho) │ │ │ │ m(w)f(to)h(call)h(the)f(metho)s(ds.)p eop end │ │ │ │ %%Page: 14 14 │ │ │ │ -TeXDict begin 14 13 bop 0 100 a Fo(14)p 182 100 1106 │ │ │ │ -4 v 1289 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)30 b Fk(Jan)m(uary)g(6,)h │ │ │ │ -(2026)p 2794 100 V 111 399 a Fo(1.)46 b Fn(ETree)h(*)g │ │ │ │ +TeXDict begin 14 13 bop 0 100 a Fo(14)p 182 100 1084 │ │ │ │ +4 v 1266 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)31 b Fk(Jan)m(uary)f(10,)h │ │ │ │ +(2026)p 2817 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 │ │ │ │ @@ -6600,17 +6607,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 1106 4 v 1288 100 a Fn(ETree)29 │ │ │ │ -b Fk(:)40 b Fj(DRAFT)121 b Fk(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2701 100 V 1106 w Fo(15)227 399 y Fn(ETree)47 b(*)g(ETree_transform2)c │ │ │ │ +TeXDict begin 15 14 bop 91 100 1084 4 v 1265 100 a Fn(ETree)29 │ │ │ │ +b Fk(:)41 b Fj(DRAFT)121 b Fk(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2724 100 V 1084 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 │ │ │ │ @@ -6675,17 +6682,17 @@ │ │ │ │ 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 1106 │ │ │ │ -4 v 1289 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)30 b Fk(Jan)m(uary)g(6,)h │ │ │ │ -(2026)p 2794 100 V 337 399 a Fl(\210)45 b Fo(The)28 b │ │ │ │ +TeXDict begin 16 15 bop 0 100 a Fo(16)p 182 100 1084 │ │ │ │ +4 v 1266 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)31 b Fk(Jan)m(uary)f(10,)h │ │ │ │ +(2026)p 2817 100 V 337 399 a Fl(\210)45 b Fo(The)28 b │ │ │ │ Fj(domain)k(de)-5 b(c)g(omp)g(osition)34 b(map)c Fo(is)e(also)h │ │ │ │ (complex,)h(where)e(domains)g(are)g(mapp)s(ed)f(to)i(threads,)427 │ │ │ │ 511 y(then)d(the)h(fron)m(ts)f(in)g(the)g(sc)m(h)m(ur)g(complemen)m(t)i │ │ │ │ (are)e(mapp)s(ed)f(to)i(threads,)g(b)s(oth)e(using)h(indep)s(enden)m(t) │ │ │ │ 427 624 y(balanced)38 b(maps.)61 b(The)36 b(metho)s(d)h │ │ │ │ Fn(ETree)p 1884 624 29 4 v 33 w(ddMapNew\(\))e Fo(is)i(more)g(robust)g │ │ │ │ (than)g Fn(ETree)p 3514 624 V 33 w(ddMap\(\))p Fo(,)427 │ │ │ │ @@ -6754,17 +6761,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 1106 4 v 1288 100 a Fn(ETree)29 │ │ │ │ -b Fk(:)40 b Fj(DRAFT)121 b Fk(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2701 100 V 1106 w Fo(17)111 399 y(5.)46 b Fn(void)h │ │ │ │ +TeXDict begin 17 16 bop 91 100 1084 4 v 1265 100 a Fn(ETree)29 │ │ │ │ +b Fk(:)41 b Fj(DRAFT)121 b Fk(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2724 100 V 1084 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 │ │ │ │ @@ -6838,17 +6845,17 @@ │ │ │ │ e(v)-5 b(alue)34 b Fn(1)e Fo(is)i(returned.)47 b(If)33 │ │ │ │ b(an)g(IO)f(error)h(is)227 5250 y(encoun)m(tered)e(from)f │ │ │ │ Fn(fprintf)p Fo(,)f(zero)i(is)f(returned.)227 5407 y │ │ │ │ Fj(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fo(If)30 b Fn(etree)f │ │ │ │ Fo(or)i Fn(fp)e Fo(are)i Fn(NULL)p Fo(,)f(an)g(error)g(message)h(is)g │ │ │ │ (prin)m(ted)f(and)f(zero)j(is)e(returned.)p eop end │ │ │ │ %%Page: 18 18 │ │ │ │ -TeXDict begin 18 17 bop 0 100 a Fo(18)p 182 100 1106 │ │ │ │ -4 v 1289 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)30 b Fk(Jan)m(uary)g(6,)h │ │ │ │ -(2026)p 2794 100 V 111 399 a Fo(6.)46 b Fn(int)h │ │ │ │ +TeXDict begin 18 17 bop 0 100 a Fo(18)p 182 100 1084 │ │ │ │ +4 v 1266 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)31 b Fk(Jan)m(uary)f(10,)h │ │ │ │ +(2026)p 2817 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 │ │ │ │ @@ -6919,17 +6926,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 1106 4 v 1288 100 a Fn(ETree)29 │ │ │ │ -b Fk(:)40 b Fj(DRAFT)121 b Fk(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2701 100 V 1106 w Fo(19)337 399 y Fl(\210)45 b Fo(The)24 │ │ │ │ +TeXDict begin 19 18 bop 91 100 1084 4 v 1265 100 a Fn(ETree)29 │ │ │ │ +b Fk(:)41 b Fj(DRAFT)121 b Fk(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2724 100 V 1084 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 │ │ │ │ @@ -7001,17 +7008,17 @@ │ │ │ │ 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 1106 │ │ │ │ -4 v 1289 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)30 b Fk(Jan)m(uary)g(6,)h │ │ │ │ -(2026)p 2794 100 V 337 399 a Fl(\210)45 b Fo(The)28 b │ │ │ │ +TeXDict begin 20 19 bop 0 100 a Fo(20)p 182 100 1084 │ │ │ │ +4 v 1266 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)31 b Fk(Jan)m(uary)f(10,)h │ │ │ │ +(2026)p 2817 100 V 337 399 a Fl(\210)45 b Fo(The)28 b │ │ │ │ Fn(msglvl)f Fo(parameter)i(determines)g(the)g(amoun)m(t)g(of)f(output)h │ │ │ │ (|)f(taking)i Fn(msglvl)46 b(>=)h(3)28 b Fo(means)427 │ │ │ │ 511 y(the)j Fn(ETree)e Fo(ob)5 b(ject)31 b(is)f(written)h(to)g(the)g │ │ │ │ (message)g(\014le.)337 660 y Fl(\210)45 b Fo(The)33 b │ │ │ │ Fn(msgFile)e Fo(parameter)j(determines)f(the)h(message)g(\014le)f(|)h │ │ │ │ (if)f Fn(msgFile)e Fo(is)i Fn(stdout)p Fo(,)g(then)g(the)427 │ │ │ │ 773 y(message)27 b(\014le)f(is)g Fj(stdout)p Fo(,)i(otherwise)e(a)h │ │ │ │ @@ -7081,17 +7088,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 1106 4 v 1288 100 a Fn(ETree)29 │ │ │ │ -b Fk(:)40 b Fj(DRAFT)121 b Fk(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2701 100 V 1106 w Fo(21)337 399 y Fl(\210)45 b Fo(The)30 │ │ │ │ +TeXDict begin 21 20 bop 91 100 1084 4 v 1265 100 a Fn(ETree)29 │ │ │ │ +b Fk(:)41 b Fj(DRAFT)121 b Fk(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2724 100 V 1084 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 │ │ │ │ @@ -7174,17 +7181,17 @@ │ │ │ │ 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 1106 │ │ │ │ -4 v 1289 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)30 b Fk(Jan)m(uary)g(6,)h │ │ │ │ -(2026)p 2794 100 V 111 399 a Fo(6.)46 b Fn(testExpand)f(msglvl)h │ │ │ │ +TeXDict begin 22 21 bop 0 100 a Fo(22)p 182 100 1084 │ │ │ │ +4 v 1266 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)31 b Fk(Jan)m(uary)f(10,)h │ │ │ │ +(2026)p 2817 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 │ │ │ │ @@ -7259,17 +7266,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 1106 4 v 1288 100 a Fn(ETree)29 │ │ │ │ -b Fk(:)40 b Fj(DRAFT)121 b Fk(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2701 100 V 1106 w Fo(23)0 453 y(Figure)26 b(1.1:)40 b │ │ │ │ +TeXDict begin 23 22 bop 91 100 1084 4 v 1265 100 a Fn(ETree)29 │ │ │ │ +b Fk(:)41 b Fj(DRAFT)121 b Fk(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2724 100 V 1084 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 │ │ │ │ @@ -7668,17 +7675,17 @@ │ │ │ │ 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 1106 │ │ │ │ -4 v 1289 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)30 b Fk(Jan)m(uary)g(6,)h │ │ │ │ -(2026)p 2794 100 V 337 399 a Fl(\210)45 b Fo(The)33 b │ │ │ │ +TeXDict begin 24 23 bop 0 100 a Fo(24)p 182 100 1084 │ │ │ │ +4 v 1266 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)31 b Fk(Jan)m(uary)f(10,)h │ │ │ │ +(2026)p 2817 100 V 337 399 a Fl(\210)45 b Fo(The)33 b │ │ │ │ Fn(msgFile)e Fo(parameter)j(determines)f(the)h(message)g(\014le)f(|)h │ │ │ │ (if)f Fn(msgFile)e Fo(is)i Fn(stdout)p Fo(,)g(then)g(the)427 │ │ │ │ 511 y(message)27 b(\014le)f(is)g Fj(stdout)p Fo(,)i(otherwise)e(a)h │ │ │ │ (\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 │ │ │ │ @@ -7759,17 +7766,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 1106 4 v 1288 100 a Fn(ETree)29 │ │ │ │ -b Fk(:)40 b Fj(DRAFT)121 b Fk(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2701 100 V 1106 w Fo(25)227 399 y(the)h Fn(flag)e Fo(and)h │ │ │ │ +TeXDict begin 25 24 bop 91 100 1084 4 v 1265 100 a Fn(ETree)29 │ │ │ │ +b Fk(:)41 b Fj(DRAFT)121 b Fk(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2724 100 V 1084 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 │ │ │ │ @@ -7833,17 +7840,17 @@ │ │ │ │ (\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 1106 │ │ │ │ -4 v 1289 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)30 b Fk(Jan)m(uary)g(6,)h │ │ │ │ -(2026)p 2794 100 V 337 399 a Fl(\210)45 b Fo(The)30 b │ │ │ │ +TeXDict begin 26 25 bop 0 100 a Fo(26)p 182 100 1084 │ │ │ │ +4 v 1266 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)31 b Fk(Jan)m(uary)f(10,)h │ │ │ │ +(2026)p 2817 100 V 337 399 a Fl(\210)45 b Fo(The)30 b │ │ │ │ Fn(flag)f Fo(parameter)i(sp)s(eci\014es)f(the)h(t)m(yp)s(e)f(of)h(m)m │ │ │ │ (ultisector.)500 548 y Fe({)45 b Fn(flag)i(==)g(1)30 │ │ │ │ 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) │ │ │ │ @@ -7913,17 +7920,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 1106 4 v 1288 100 a Fn(ETree)29 │ │ │ │ -b Fk(:)40 b Fj(DRAFT)121 b Fk(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2701 100 V 1106 w Fo(27)337 399 y Fl(\210)45 b Fo(The)30 │ │ │ │ +TeXDict begin 27 26 bop 91 100 1084 4 v 1265 100 a Fn(ETree)29 │ │ │ │ +b Fk(:)41 b Fj(DRAFT)121 b Fk(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2724 100 V 1084 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) │ │ │ │ @@ -9726,17 +9733,17 @@ │ │ │ │ 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 1106 │ │ │ │ -4 v 1289 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)30 b Fk(Jan)m(uary)g(6,)h │ │ │ │ -(2026)p 2794 100 V 0 731 a Fo(Figure)c(1.2:)39 b Fa(GRD7x7x7)p │ │ │ │ +TeXDict begin 28 27 bop 0 100 a Fo(28)p 182 100 1084 │ │ │ │ +4 v 1266 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)31 b Fk(Jan)m(uary)f(10,)h │ │ │ │ +(2026)p 2817 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 │ │ │ │ @@ -12007,17 +12014,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 1106 4 v 1288 100 a Fn(ETree)29 │ │ │ │ -b Fk(:)40 b Fj(DRAFT)121 b Fk(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2701 100 V 1106 w Fo(29)227 399 y(of)j(this)g(sup)s(erno)s(de)d │ │ │ │ +TeXDict begin 29 28 bop 91 100 1084 4 v 1265 100 a Fn(ETree)29 │ │ │ │ +b Fk(:)41 b Fj(DRAFT)121 b Fk(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2724 100 V 1084 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 │ │ │ │ @@ -12178,17 +12185,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 1106 4 v 1288 100 a Fn(ETree)29 │ │ │ │ -b Fk(:)40 b Fj(DRAFT)121 b Fk(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2701 100 V 1106 w Fo(31)0 399 y Fn(ETree)p 246 399 29 │ │ │ │ +TeXDict begin 31 30 bop 91 100 1084 4 v 1265 100 a Fn(ETree)29 │ │ │ │ +b Fk(:)41 b Fj(DRAFT)121 b Fk(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2724 100 V 1084 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 January 6, 2026 │ │ │ │ │ + 2 ETree : DRAFT January 10, 2026 │ │ │ │ │ • 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 January 6, 2026 3 │ │ │ │ │ + ETree : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 4 ETree : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 5 │ │ │ │ │ + ETree : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 6 ETree : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 7 │ │ │ │ │ + ETree : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 8 ETree : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 9 │ │ │ │ │ + ETree : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 10 ETree : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 11 │ │ │ │ │ + ETree : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 12 ETree : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 13 │ │ │ │ │ + ETree : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 14 ETree : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 15 │ │ │ │ │ + ETree : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 16 ETree : DRAFT January 10, 2026 │ │ │ │ │ • 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 January 6, 2026 17 │ │ │ │ │ + ETree : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 18 ETree : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 19 │ │ │ │ │ + ETree : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 20 ETree : DRAFT January 10, 2026 │ │ │ │ │ • 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 January 6, 2026 21 │ │ │ │ │ + ETree : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 22 ETree : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 23 │ │ │ │ │ + ETree : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 24 ETree : DRAFT January 10, 2026 │ │ │ │ │ • 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 January 6, 2026 25 │ │ │ │ │ + ETree : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 26 ETree : DRAFT January 10, 2026 │ │ │ │ │ • 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 January 6, 2026 27 │ │ │ │ │ + ETree : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 28 ETree : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 29 │ │ │ │ │ + ETree : DRAFT January 10, 2026 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 January 6, 2026 31 │ │ │ │ │ + ETree : DRAFT January 10, 2026 31 │ │ │ │ │ ETree vtxToFront(), 4 │ │ │ │ │ ETree vtxToFrontIV(), 4 │ │ │ │ │ ETree wrapMap(), 15 │ │ │ │ │ ETree writeForHumanEye(), 18 │ │ │ │ │ ETree writeStats(), 18 │ │ │ │ │ ETree writeToBinaryFile(), 18 │ │ │ │ │ ETree writeToFile(), 17 │ │ ├── ./usr/share/doc/spooles-doc/Eigen.ps.gz │ │ │ ├── Eigen.ps │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ %%EndComments │ │ │ │ %%BeginDefaults │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ %%EndDefaults │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o Eigen.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2026.01.06:2034 │ │ │ │ +%DVIPSSource: TeX output 2026.01.10:0513 │ │ │ │ %%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 │ │ │ │ @@ -1594,14 +1594,15 @@ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ /UnderlineThickness 50 def │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ +dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ dup 54 /six put │ │ │ │ dup 58 /colon put │ │ │ │ dup 74 /J put │ │ │ │ dup 97 /a put │ │ │ │ dup 110 /n put │ │ │ │ dup 114 /r put │ │ │ │ @@ -1791,79 +1792,84 @@ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB88440048702D1F │ │ │ │ -77994EE04EC3B4531D6E1888C86A8F0DA6CF1F056F16AB0DD76C862830F89DA4 │ │ │ │ -28923B3AA543E0D6E41D3BD283E600BC11F889315EE92C675C109C81065ED1BC │ │ │ │ -82A5583D1B723D50051B0557A367887F5B263014C6E77288B4883C50889473D3 │ │ │ │ -3787BAD4BEB88BD1353AFA5B73E61814819537E7FF09F53EF94792BB3DD36ED0 │ │ │ │ -002D0E7A6CDAB85A9C17AF5664BCB5A71663B861880F3ECCABC8E7A2FC81A4CC │ │ │ │ -AE7A87503FDC1CE0077BA51ECC7B43B60793FED8E9AAD5BBD03ADD6183DCD26D │ │ │ │ -24A74163611C05562437644EF9B8889FD4F9D311911204FEFD35237486F2D2D0 │ │ │ │ -B6783A03BF12EA6D19D6D0F87E4D08515F12F9CBF1961CAA71E0D69FE3C4C4D2 │ │ │ │ -7C7FB64ED24F8684C8F00C2BEDEA53EA390CDC0B5BEBD7DD982580B2EA1F1F89 │ │ │ │ -CFED5916630DC2BA32BB9180277E1ABC339B3B7DE086717BD93F7FF3681BA5B3 │ │ │ │ -FCF671C4B293C2DE4A322F0AA3323A4934444C69F23EF90120B8755482757759 │ │ │ │ -C457A435FB8BB4922BD92C5F3D9555D978275C510183E29DFF2FCE4ABBFC18DE │ │ │ │ -76CAD3B486BA12047DD808CD4D521A0FD368E4AE79DE262630983A5D6F0B679D │ │ │ │ -2F005306393C520E1B6987302D029939D94B0178DB06211C7F3B123A41E6E7BA │ │ │ │ -87164737110707A3ED3983895F3FBC815EF370F54C808ED93D910937BCA3D8AF │ │ │ │ -7CBF80DC180CDA54059DB76710B4FCD4139D5B7DA7DB1A0D0AF86AD2453D3691 │ │ │ │ -0BA5BAD40FF28BB4235FCD40FC87C2B888E67928D9B0ACA5692149373DBB93BF │ │ │ │ -6520DDD36A9BFE4D415CA67A5E04F1D48BDB28C69676273ED842CF7980E8E17C │ │ │ │ -B88563F407E340AFAE8F51AABCF8A39521BCEE1EC8396D75E124B24B4675909F │ │ │ │ -E246F87DA08584A3173AEFF153ECDF610543FA7474D125A31ADD6285A49222B5 │ │ │ │ -177066EA395BFA4B1114C7FCF7712DA772A21C99E64F4E1181E69CAF98137FA2 │ │ │ │ -76CF74F682B8CD7BA6EEA79B70FA8A76809634517F8415B6F21A5A7D6099B5E8 │ │ │ │ -EAB356BBC4FB68C72B8C61DDCE8EAB1A53B9D6BAD78584B307EFF57CEAE74884 │ │ │ │ -35987BF89E9E60E962D22FA5612F2DB5EB840499B7CC11A34BA5DEE30D277540 │ │ │ │ -39B8211D69B448ADE95B723F8369A631DE6DD75703AFD7485FB7FFF41A60CBE4 │ │ │ │ -813B8FEA120662355773830EF85015E7FFD609B2CEE52CB5FFE9C35B6BEEE4A4 │ │ │ │ -A66719E31CE1523FDD7771FB1E881A32A7DB7D92C2326DF4B93241C14ABFCCD6 │ │ │ │ -8E5BCAC61E800E6B1B4687ADA4CBF41EC0AFC26D021D1772CBDCD0516DF5EBE1 │ │ │ │ -37FD2AC5ABB8D774B5735940F1F6866D044FD8CE74444FAA5D0202C11E39CC10 │ │ │ │ -213731F41F704450E1D0565013BF22188442CE0FC256190A9F92F0C802AA2660 │ │ │ │ -614AFE9E9C82F8CD2E6035EEF84E5F16CBB690AC819B4B910EA8E81106F0ACE5 │ │ │ │ -CDFE77DAF69E4AFE72C43145A3ABCC40B6C5297487083F738C86422277AC2267 │ │ │ │ -51759F1B7F129E87DE16433B664AD0FB6D30424A11C70B52B591352BF653C8B0 │ │ │ │ -0840C224FBFEAA996A6BE1D69414DD778C2EF56A63B64D59BA412EC3E4000831 │ │ │ │ -73361FB9813F9A7C74BA3A50D331B07B61492E5D75F0861B530587269B3ADC90 │ │ │ │ -EA1DF586AC4BC57C3230893EFE953A6E76950ABA895FAC711D3BD330ABC6846A │ │ │ │ -C91F6ABF3410B913DFE5C8266020CEE5C7A9EDA2E7D9BCA797DC486443C7BA7C │ │ │ │ -7E03439A40927FA3251B6D417E5653E7799E9D6F04149C34096E2CA9B1F9B1EC │ │ │ │ -38958A2521B4A657A8B9F16E1FD66C7E345A10D7AA0241559503D214AC6507A4 │ │ │ │ -CBDE8617AA7ED136577734428594487F3565BF45FA196375759E2FE23C26EC8A │ │ │ │ -3310A36917A5E2F260EAB31030F8E570303D36B833626938F56939849DFA1F3F │ │ │ │ -66D0A317BB6364427F1512AAB380B555611C76345C02C3A6FBF78590331D5ECA │ │ │ │ -029DEFB722F6AB05327C2A31AB7BD6ED0F0386E6F45C1278048D22B90B074CCB │ │ │ │ -2BBEBCC1927C97EC532E651CAF0058AFE8FC08F00F0216D5DD9830C294FF76DA │ │ │ │ -426A073B3A3AEEFBDEE71C5182186311607ECDBD1F1AF4C5E79748CD01445C8D │ │ │ │ -25DD49490C8A6810065908222C8D0AC9F83AFBEE7115023E2D2615A170A5D40A │ │ │ │ -AD49BDF59A59187B6434F83E68EED22EF4EFDBADED6F1559AC779E0377FE7375 │ │ │ │ -D7060584FE74B1859D0FD98772253A712B17FFBB467840C484F5EF82C5677ADB │ │ │ │ -EDF159A456A526B8B9F6E8FC7608DFD47B0F09E26118F79CBE53B6C4E32BACAB │ │ │ │ -D62AFD4AA527CC4B587BB41A17A9BCE106A8C592BC9B73422B712C466C284A17 │ │ │ │ -E8D0C1E01D43C739FB1C083AD2714F78AC785B0C09AA7E67417A73510E00F2FE │ │ │ │ -E3D3EBF626A2F3A20A386E3F98D1285F4A2A332FC609CD191F01F128627B3505 │ │ │ │ -0AC2387DC0AD1B950490EBB5045F22BEC54955402CE2D267B6754E7C32BE84E8 │ │ │ │ -E6B63E3D3EAEE979442D167AEF69C27B22A8E887A2510C3A168D95D285CF7515 │ │ │ │ -011C921679B2F386575826A3F2071D015EEB78F02A4F94D4E5F07873623200F8 │ │ │ │ -7DF95BA0DC6B6D31DECC925BEA1E6A7C52FE685800EC33CBAE830F1AE5454DFA │ │ │ │ -913B8F457D7E2D3DFF019869E3301EEEC64A38295DE6B588E776922B32362382 │ │ │ │ -D1CF3D058613C8A96E6994D3EC23E8B71EC6E718383B20BB6C22DB6F93FA559F │ │ │ │ -3449CA84EB33B25C8BE0DFD1C29DC4FBD7AFBDC96C12162CAAB2C5E354B0FB10 │ │ │ │ -4BF8CC3610875ABD5111D09F2F847822118972214EDEB9EE34BAFE45E7AC15C5 │ │ │ │ -CA63EC4A3CEEA505A5EDD88A59BB67C71C3E026DFFE177F99BC69E6635545D03 │ │ │ │ -77A634F98230EF64381EC67CA519D4B9770EFA844789E21970F89D5FFC5DEAA8 │ │ │ │ -DC008EBA09306967ED090FF91B002FA6120C2B461A87AA32EFB003C5578D8EEF │ │ │ │ - │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ +AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ +E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ +46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ +FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ +389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ +7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ +2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ +C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ +B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ +AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ +E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ +F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ +0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ +2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ +29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ +CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ +6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ +5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ +36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0DD96AB602D004DCFE000A0 │ │ │ │ +ABE41BAB8AB7D50BD32BFD6F1AA3B60B09B9BE4E273EDD2DDCB21A98A760D17D │ │ │ │ +0A5C9303AFE63CF80A93E60C72A0576FAADEECBE2DE91892D210EB0AD1889C04 │ │ │ │ +C7530652584E775B4ED19CFB4B8DBCCC57A9FA9E4DDC8A1E5A1D3BE9E93407A6 │ │ │ │ +2C237ACE27F4EDA330EE952EDCBE91683AA98A29197735006666C96A2CE7C787 │ │ │ │ +BBA5A57C4DBF6FAA5B38AF226B5D9A65FAD84650AC0C3DB29C30602699F81E01 │ │ │ │ +0BAF8F1CE44A03C680121B77A1703C638187675D6C22C49F9902475E6CE9C732 │ │ │ │ +48ED028CC92EA542EF189CC9CA1C384E3387793057615D0A2BF040CC90B275B9 │ │ │ │ +F70A5310874DC2E0A360373E7BCAC88250FBC8989C7D18DA8274C06F02FCF31C │ │ │ │ +2B3868CBAF083DAC2FB159DE368261842DB7C9EA1A86B17617C861A48FBA8FF9 │ │ │ │ +D184CB026F4A418C0955347612F94C039B1536A76CB182A591DD7C02D509CF16 │ │ │ │ +8B9E46502ABF5DE31F5DFBD19C7417A2AF7AF13F0D5FF837C94CE56F07B96337 │ │ │ │ +0ED215252346FAEB54B5F3ABE29709B7ECB9FBD23A4AD397E6ABA6938F1BBF33 │ │ │ │ +1D5460D9414F0B8725DA832744525C13E3FD9C8DB33FBEE12F9C4969988402C8 │ │ │ │ +96AF916364CC2DF17EDBA622FC0A5D0013418E29F912FFA06F8D7E31ECAB0B08 │ │ │ │ +C4D2D8EE537CC768FC9038DD6D86D33642C6E812E941F157FC6917AF19C2B99A │ │ │ │ +5BF10B9A7ECF711BBB6F33C8C3DAD778153122593F36ABDDC0E97A602B045DE6 │ │ │ │ +19BD82D877DDA960AB11EF48C7F75A28D0D731D4A5DBC98283087267CD1A470D │ │ │ │ +537E949DA5EECF097B099547995BE066A941CED683B5748962AD2B02C21636C0 │ │ │ │ +2EAFA33CA0CB3BF8A95703F015A210D918865B9BEA2890DCFB68BC3719C305EC │ │ │ │ +315EC8727BF9A93632AB9E3090B100C022EE1396CD329B37547F26A7DCE52BD7 │ │ │ │ +F91B7388DEC34F4A0C6D46CD7CA6ACC00C5C4C71E47C6AD96496B3CBF531F342 │ │ │ │ +A740EE6B99BD70AD490DFA700772A0697EC6561CE88A0113E4DC3B21F372D810 │ │ │ │ +DFF2C3F6EDF3E917BF2664EEFC9AD292DD6CC36853CF936018D43FDB28D5B001 │ │ │ │ +7D1C805F958F13FD221377ABDD69D102E8CC1DAB2E011EE16CF6DB9D195BA702 │ │ │ │ +5A8738FABF989B0351282D0E5121182DFC52169782A5F3DD5D820411BEF909DE │ │ │ │ +04D963E6FDA76F88508C4E91DDAAA1748F396A1D380D8CA429673AF27C164434 │ │ │ │ +771781B39565D3EE50F3CF03EF12908B13A6C11C9AB7631B32125828B13050BA │ │ │ │ +041A93B97AC32D4A1E28C5FA98CDEE998B5F97823D6291D01E3611A16854F1FE │ │ │ │ +69B9D6D2AE3E56D012B7BC3E582FB4C23188A5E365E65EB1F804A706AF73A2F8 │ │ │ │ +9804808EF71F0982B14133BF9A27D6F2E719BDB751022B1B052722933948904E │ │ │ │ +3582E363478DCDA115205A0FDE39DF71FEAEEB104419C35A6B0678C19616C6D9 │ │ │ │ +A892DC2F4257069AF096C80C099CD13024DF3995F28C694E00D1F08B43D4450C │ │ │ │ +D18F5C925CFD2D124E74FC64BBAA0DE32A79E4A4507B5B5DD834C67160CDA110 │ │ │ │ +EF0061DD27E8864F4250A92BBEFD75C784BB98F4FA789A8236C2A21E4E61ABD0 │ │ │ │ +C6B4D13B3C31AC8E55FA34BEC7C308C61FB0280382EC6AFD63D959678D42D2B3 │ │ │ │ +4134F6236A0808D9302B4E3C6F81FC6973B4833602750CCB5DE36AEA23ED6BD4 │ │ │ │ +5B72DF0DD7B81C871CAA6EC190748CD8C4B998D576E5D340ACAC0617DDBE461C │ │ │ │ +8E82E809D11A01D265D039F4315066832E27E08A6F067E129E45FBF533F761BB │ │ │ │ +EC3C071209BECE7D14D3184B2E6BFD65717A5A7C08F3776B20C513649488C1CF │ │ │ │ +03333805B249D1034FB0AE2D7D2A23324EE27AEDB68F8E329A8052FE58D7C0D9 │ │ │ │ +A40A0CDC79F2085C4F39A7DFDB625C8F071E2A32CF6215DD3E060A9BABF7A3AA │ │ │ │ +C57DA0C0571C5D6EEAA975D1BB9C99F8EA4958360E43E8C60080B03DC4435550 │ │ │ │ +E6048DDD35DF3E5DA69669F266FFD7B44649A68025270DC84258E329F6E6907C │ │ │ │ +BCFF900D715D0C7EC43C5E7180CAD6427BA4FD41AAD6531A5C06B0EC26DDA71F │ │ │ │ +4A9DA50DE919E79226F6DDF7C1BA478936AA86CEAD93072CC2960E98C45A1A0C │ │ │ │ +60CF8A26E4278AB4F9E28FA6532648196CC455607D6BCD00F60675DE8CC02C8C │ │ │ │ +9BE5D5B714731814D5B008EE236563D77AC6895E0158877C95797E07C02AFEBE │ │ │ │ +CC9FE97D5E103F7DB0A834E9A7A75893EC66340B0E4C6F0EEDEF43415BF9FCF4 │ │ │ │ +47340CBEA4DCFBA0D028EB2149FFBBDB3322AE5F6FD20242526EDC55E476D983 │ │ │ │ +DC │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -6524,14 +6530,15 @@ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ /UnderlineThickness 50 def │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ +dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ dup 54 /six put │ │ │ │ dup 65 /A put │ │ │ │ dup 66 /B put │ │ │ │ dup 67 /C put │ │ │ │ dup 74 /J put │ │ │ │ dup 80 /P put │ │ │ │ @@ -6731,177 +6738,181 @@ │ │ │ │ 82032FBD2FCB6E403D34B85ED4053A8CB619BDD4DE001F4C3007B1F317579651 │ │ │ │ E6D6662189CC2D95AB85D7473F65C5D7B4AC63B0FE928F3400035D5A9D443D0D │ │ │ │ F3532B99F3AC26CB25EA3CD64C341159061E02EFBC7C033C05CD919BBD827A6A │ │ │ │ BFCF3BD739E32E7FE909AEE068D50FAC33605FFF98C7D0115FB860178FD03DB9 │ │ │ │ 7985B78E0AC21F2EA065FA841F5928FB85163B2E2D8F850DC7EE313912C45C28 │ │ │ │ 2783F6762C67882EFEDDC7E7567F91C16B16FD8D5A1ABF35B5586307701B91AD │ │ │ │ 54984598F2AD46FEE3D68A2731BEAA754C8E730FE0E84952EF77930E4118F8D7 │ │ │ │ -2F3AD75524D5E58AE6AECB03D4CBFD830FB0F0780328B678652E55328E0BFCF2 │ │ │ │ -278479E7168F2FCE946A848E9AC0602F0FE1C9DF31A012574FB8B2ACC2214FCC │ │ │ │ -5F4B34C81506D94CC2B500B14544D2A74596A85B827C1376921947F8F10FC7A4 │ │ │ │ -61917FDA0AA725845222E69CC2397FAF8655A7B3FF11F1F6467697D4D57AC289 │ │ │ │ -7225E6E7ADBC2C3D433BD9276DAF1033717B95A323950A8822753CD8BD5B3014 │ │ │ │ -31F192BC693DEB1F6CF3704FB316C0BFFA4A058D7E0A250238D419CC48EA8950 │ │ │ │ -066E629626449751568F03E1436DFF3D88D3FC77C3A974843DBCF673317ABAC7 │ │ │ │ -FE23F77A341043CE4CB789A219DB882B9670AB79D70A3C8B6A0E582F66188923 │ │ │ │ -CA072E0E095303BA68DD66330552A146EF07CE7D511092B2997C9899966AC30D │ │ │ │ -044104601D767C0824234B3FBF4803CF3DC06C93373D49F57E07B8E66AA2F216 │ │ │ │ -F50DD9F2893D8D4BD1C3AC4DF7BD9151B7305B67CF807DC64905132F66CC0C47 │ │ │ │ -9F352E2FDDFB1A418D9B05F794358C8CB7B717949775A28411BCA2D2D414F96C │ │ │ │ -0F0FB2F57E2CCA56509F11AD49F3FA99CF5FCC6FE8B1770E7F92CE2FC319178A │ │ │ │ -51D2BB0815C9EB21277FEE4F29473F5BAD1A7096B7D213A6D617348CDF693EC1 │ │ │ │ -AD03233B543535E98147A949351308EAED49C72064745B1E2D40180A087B0AE1 │ │ │ │ -448C53D9187740F0FCCA5CBD7F173F3070548463E29AC7C91DB041E1BAB65273 │ │ │ │ -F271DC5E59F9BED46C41AF86680F59841AB708E15CA18BB62DF5BC1C62D9FB7D │ │ │ │ -5D338B89A9F09F0C0E2178572DEC0DAD62F626C9A901605B3DF06AAD830711E7 │ │ │ │ -B4BD262630D5DFF57477429311881E7469A5E53301CC6FD238139A60BE254F10 │ │ │ │ -DA24508D41FDD322955935ECF5B3845A14A6DC01350DDEACD3C599E364EAB974 │ │ │ │ -685AB8F8E14A7959731A74DCEA5ADC1E6091899BC9268F821CB52BBE1F95C9D5 │ │ │ │ -327774F2737D2DDE4A96F17367AC6EC3DFC72A9BBB3F3451335B5D1B26FE52F4 │ │ │ │ -CDF83F9F0FA2986C792E5770B10B7ABC99B0C5684955745869E9D67754FC237B │ │ │ │ -00A42B1DD2BD47E939D50DAC41578CF8CA9F0B668A74A4F74CB391B0358F921E │ │ │ │ -BAF95873F40723C055701E25EFC3BDA79D6916C9F9A31E2EBF35817897A10607 │ │ │ │ -DBCBD95F57F2728E2EB5EFCA07DD8CD1A7B848114FBC30A56E59D1153A68DB8C │ │ │ │ -97B3597BE8DD715E5F7A5B4061FC3BDB602B431F6D89DA6E8D376C63D2EBC45A │ │ │ │ -3448887948FF0F11A7BD78C2EFBFA2B8E43C7C6F12CF7D790D5A94D42A696C2A │ │ │ │ -859EB5AB34B630AB537F1487228E331CB0C62095AD2EE4F3C37B56C8E91DDD5D │ │ │ │ -90BE21D7C68BDC06C12A96CC1B9D5123C84B2BD087CD18FD91969D10C982B996 │ │ │ │ -423A9FF5480FDEB09B560509388914080FF82319DBC11FADD0B392A226DFF499 │ │ │ │ -3FFFE4FCE13820E3A9B7711A1D9324E78AD9463FF0719F7941EC91235F55D7EC │ │ │ │ -275BC128D1878D3D1AD2A02F580EAC6A9A4BE7E5C8F47F05FD7867744E42E239 │ │ │ │ -6FECA6C030F58CA2072A8CDAEECA72183713102B38D50B9153FC3F124DFCFF13 │ │ │ │ -CD988F7140FBC46A9CBD124F87D358C6FBD4BBA3CE14101AAF4071E94BB739BC │ │ │ │ -4D5848A8F60FEE2628B7BDD9B31A10446E7098A2D309254189334A04131F268D │ │ │ │ -41050BDC396A68E4D42CDD24847AC2CEBC838B8B67AF8D3DBA713F88AB8BC174 │ │ │ │ -C73170AD41991927DD991AD6693F68E5729ACFDC8057295DF5AEE4E0F27B879C │ │ │ │ -9F8ACF05B025F8710A131BFE3732E148958AFF8432D49FCB5139572BFEAC3C2B │ │ │ │ -6423F2DB8A8597300CCA2A1BE05C12230DD72B8276D7DA3C5D1EC420E746164E │ │ │ │ -5C414DA20C661FBB24C49C12AD102F70FDF05EF20AC4785329BE24F5B336209C │ │ │ │ -225484B9FD94EA75B43C3AAF0742946479A78E2C11CEA8DF0BCBA7C02AAC3A66 │ │ │ │ -4C3091066FC82FDE63719ED1EC61CE90B3023AA38B8891DD6C1523F00D694762 │ │ │ │ -D77012EFA15CCB144E3CD415881238F576ED2FF3D19EA953E3084F6A4A256838 │ │ │ │ -2C997A84AA5EF1BA72C20CC7BF3F736B7274C1B509261B328F21819F2D88A11D │ │ │ │ -93701E242D497CDB96B9A3FC5E63A64CDDE42D52D4C1DF8C7CD2B3ACEB9B0BCF │ │ │ │ -D71C68F28077E0118B0B97023B04E90D0BBF56BAD29A891835137EC303C4AB06 │ │ │ │ -839A9EC845259D19431DD279F9ECCB57D7B737953CBB179079FA40BE47DC194F │ │ │ │ -ED68E81CFB251428B4E7A75112D062928A899368CFDEEE695404308A08FF3157 │ │ │ │ -D82BEC5252FE7541FB7A3E9DE938CC10A7D0BD3960839807A99876F052361128 │ │ │ │ -86F5CE87D96CE715E7841F9F415DFC6BCA3C725FA3A190F3DF9FC621289CF9FF │ │ │ │ -E32B8897C3AFE08C483BA45E417745E84E538465397A98E4E782E91CB5C463BF │ │ │ │ -7E7E4D3CF9B5F97756C665B5F2C8559F905757E017B0E65E6274D46F48AB3AAD │ │ │ │ -3AB48B8C63E6D110AF9300A3E8B50B3692C4643F96B83DD1021042325F28B808 │ │ │ │ -A0AF3AA4A0BED2B25D6FD78C1439245AF24F0F64D71B34179CC1040A174F9968 │ │ │ │ -B531F56C1D84D43556BB27676DBAED3BF49469ADE015799D4E8DAB6C0BD3D831 │ │ │ │ -D091C08DC8AF143C50C61384623ED029A165D78A57825E3449DE2D642DD4A355 │ │ │ │ -662E11147BC7107C63260DA35A709BCB4A547739CE6ED34750DDD0F6515665A5 │ │ │ │ -22CE4B3F4D2C1FAC1D1927816375F8333E9F204339C7BE322FBE7521CB903B4E │ │ │ │ -5E3E43DA5F35D7324D3356A87F1E127C539E6F50358651B5C4DA15E3C0C8AA4F │ │ │ │ -C848BB84BE20508072929D8287117BF39C94D35B0288ACACE1B9A1C14759EBD7 │ │ │ │ -5AA955B7D1F73446DE3E9F3D38D11BF9A3E8B0E5AD00E4F693964FD3E53C58A9 │ │ │ │ -474B9707100DDCCFFC058BFB864D9A3F138E74C7B5ED49AACEFE8E6A0122E2FB │ │ │ │ -24014BE2B46CF504959B35B9715B6EE5F0EA54FE5D081C8DD513D6BA38CACE2F │ │ │ │ -173734505A45F9AAE40CA064FD179E5656965FA6691965823D5B0C7BBB53969E │ │ │ │ -6A7F9E8655E90C5F96BAF78DA0213499023385F4832FD8A8F1431F6E18334326 │ │ │ │ -3B76E35A382CCCC2753C2691020227210A368E01E7A806C31411946580180F63 │ │ │ │ -E1988C3A0ACFDBE5EE8F9E5169D3B8EE8D2425EF34E7678DFAFF37D9804C53D5 │ │ │ │ -719619443607F7177DF07B7FEEBAE6C589BFBFFF0C568BAFBC16B4DF1A472C24 │ │ │ │ -9F6D5D2F5B7737651F1241C6E2B89D5A3762E30D3FBE3501DA030ACF43FCBB30 │ │ │ │ -B979A9A265EFFC910FCEFE32A9A23973B3B9908E826E3B81AB0B85DEED59BC6D │ │ │ │ -F56B516B84B70E3C89CE97E77AFEC6DE8D6F5B712A0B222026EF0C231284F464 │ │ │ │ -CF86F0DD021D71A4E30B74ACDC46852ED0E61E5AED73BD80267682D3C984BBD4 │ │ │ │ -F9E4C0656F5765B471B0E810E3030971CC28F9C2EC10C84D54CC8F61542FB8AF │ │ │ │ -06A5826ED225E5C80C17A4AD8981913BDEB55C8651D2647987CC8958309E57AA │ │ │ │ -A8D60687887217FAB9218641EB7E4505C616A8820DD1F460612D19B94CCE2895 │ │ │ │ -5D8C6814C7AD45332BB7DF83BBB58EA2F1E0E4997C2D2E8B42317320EA40F174 │ │ │ │ -D9D63F5650BA55F56A45321FFCBC18C42CC530C9A78825A2E007A9C5D6A3ABC1 │ │ │ │ -A7A4983FA2EF577022EBB68853F50E67012CFD338A94574FC8B1B1E2522E2BDC │ │ │ │ -E2CDDE9E9D5D5473279231440B4AD1219E54D3052C03B164F04CFA716A296F13 │ │ │ │ -F1F3543DCD0CCE92098987FB64D9327804AC38203DB9D4C8D93CD106AC7EDE98 │ │ │ │ -248E5812EBC4060373363279E4ED7A32F69ABFA6DDE3570D1CBFE660CDAFE9DB │ │ │ │ -55AB284B05E7F6081F6903130ED1B9184E8997BE6B1B7944B8153313C434714F │ │ │ │ -811BFB730E90907DC3E2CBADC35CC86859D7E14A5A641EB84C7C0503F742286F │ │ │ │ -DF6A5D84F63B62C932BFEC815A8629F21220C89612CA2ADF1419F0F888029327 │ │ │ │ -D5A1E0ABCCCFBBB9F49D24343A2AC8FE371DFADCCA5E42335831FB326F8F3A4B │ │ │ │ -CAFE830407A919BB245B362AEA4FB2B925DD702A0BBF1E872A8E76939EF8E947 │ │ │ │ -2972AFBBDC91E018AC3F93FFAB8B43555248F00B97337EC87220CB2A227FD74D │ │ │ │ -FA1F59DC5D8F4B068023708D1593B2D82A59606981263B0DF68F31DDD63C4D42 │ │ │ │ -CEC021D1DABBFAC53C9A669C16DD1B24B4165740F2AB968300C96F182C01EA49 │ │ │ │ -3D587B762596AFADEC8E98D78E011F431863A43DC5FD89DAAA7DFA5974687CE2 │ │ │ │ -E2D6C69813312DBD2C62BD9791653C7D62E3D1CCD73B4572A5F4B1627C5126FF │ │ │ │ -155E40EA99FF32BD0CDFDAA6ACD01944FA5F9B47DD3F615CA5D4791BB32A704E │ │ │ │ -0EE993547166CBBAE3C0FA0D43F3B25F204DD2671B874F0597671935FA69F5BF │ │ │ │ -F009057130945D02A83E2D00BD2B44192159ADDAAC725D06E4E8AC019EE5C929 │ │ │ │ -BE3621E5C0EA1972D16F161633ACD37471A8C26BB9675B2479246D3B82A1B9EB │ │ │ │ -253A260F0BE18EF59D517D31D7778A1CBD831D379AF9BC803B87B427656EC452 │ │ │ │ -5D6B1E00CD9F01DDA5EC9CDD9FC9FD2B9EC89A115634C1C2B2C331B0AE2047CE │ │ │ │ -F7022FED8407361BEADCC8EB1F226E74E19D428D68BBF742DD63299089E176D4 │ │ │ │ -B1271D99C6D0FF98A86579CE183A589C6797CCB288E47808D1054AFA1E931E6B │ │ │ │ -5D9B26C7BADDBC7D42764FC96CDF1FA74B95998B3E7376B85E780124845EAA45 │ │ │ │ -79D98A1F684F8250E660942C55A4C2E48BF0E9157E87CA5DD16ACE1B8700CF7B │ │ │ │ -D6DFF785588DBC98B2CC1CEBB18EA7489B3E67BDA43CA5149983C7118327846E │ │ │ │ -9F93C903DAA09D50B6B39335FD0BC4EB4BE85F6CEDAA23F51EF4D37793E9BD4F │ │ │ │ -280EE5F398426BBB6194CD799BB93E83A8059D05011FD40D244737ABC67E03FE │ │ │ │ -E95D71993E787B1EA8062F1909E93BABB8EB1D4DF154C5AA09ACD7C98DFF4A28 │ │ │ │ -545FDD3012244D83E74EBED24AE6A60011BDB9CFA277DB7ABA077B0A039FF21A │ │ │ │ -CFB1D491AA0D6DC783E5AB3E620FDC2A71E7DEBFF52168BDF47129445086A320 │ │ │ │ -CF1180CBF8C830F44AB660ACBF0D415936D4CB0053FAA6C65A450462F3C5D931 │ │ │ │ -34C07C297CC93697403A615AF6DA1747F555FA1DFD479E9D6CDE21345EEE1F13 │ │ │ │ -095BFC46AFCD230CEE9F828CB0C1F37132C0F8CC30598509A574A4CB69192D63 │ │ │ │ -051F3F1D8DB63780231C3AE8CA74F45A399B7AB73495C4AFB062A8F29C2ACC4B │ │ │ │ -F3F885C5C927307390F58B958CF0E7458F238FC709CDA0A9C23969CFD0EACA58 │ │ │ │ -A0440D33FD5EC601CD4C0B91A7BEBD3F148FBE6425EEF8B93A6A6551BA90064B │ │ │ │ -45217121ED908C8834F01BF3A8FBCB26A768AD81D779AC8C33085E7355999098 │ │ │ │ -C345782CE71FA42213B98ED5FA83A21AC391AEC9277BAA18689D44978855132B │ │ │ │ -691A9DE78C9A397E6749927473B30CC4315BCC8386FACA3E9C5D666F2498A0EC │ │ │ │ -34BAAEC5749A93A87F0255BC7481B2C5797A83EF784C468F81FD0CF38D12AEC9 │ │ │ │ -3410F885A62D992163B4C0FC959073BF98FE4ED5186645DD499CC8D60A2768CD │ │ │ │ -6A71DB157C489B95020DDA34682B916FD4FB7207F5427650BD96E254C0C7A304 │ │ │ │ -FD5A3772D5F766BBA4A2D64D4249E6AEDA6FB0ABDF9DCFDEEB25824907FD48B4 │ │ │ │ -CCC1707149A2861BB72F165C50860099AFD99A6AB8927362DBE338D94A7089BE │ │ │ │ -627D0F47772C992EE32C770262BEE20A4E5EDE196289AB289D5CB6987973BA15 │ │ │ │ -F3EEE17497ACFB92F986D85BDFC05AA93E1E408DB6B57F1F6D95A40BB8B353E4 │ │ │ │ -C8DA4C42DB4C25E80C07A466F5D50F9DD919E8AC8571FA9C2D6686070754643B │ │ │ │ -034EDF044F74C62C36082248B84464A2E435709D8CC51E5803210169B006185C │ │ │ │ -6A87A50626151236E2635EFB81F9B71DE714BDD25C30447F563674097393130A │ │ │ │ -430F52B9C6494E5E3B14FA094346F72A0F0086BE298195FC986FA96C387A2AC8 │ │ │ │ -A4FE8AE1364B80C7523E6E241443B0B71143D3A6EF2E475039F01D70DA65457E │ │ │ │ -9F3DD15670347C1D7E6EEBE1A3E11E8A2DDE5D790317DB1B0022EB1FA4D6D128 │ │ │ │ -869AEAE1DFA1373F3E9E572A158442C874D7BF6462C0DD3A1027D6C2335BAF4A │ │ │ │ -AE8F1ACA6F4E48AF24B501F38A7B73D5D7BB0D1DF8899E4316E34C6F2EFD9B7B │ │ │ │ -4CC9BA92CB480C84582586E6E8AEA4982B607172234643DF0E64622A16668135 │ │ │ │ -DC8369C5974B145403DACF3E53DAABAC4F2EF5932DE118757F2D2AA652F8ED59 │ │ │ │ -735938E183361101E605143EC69DB322FDA6DB3C0FB62CA9569DA1D37A969187 │ │ │ │ -4ABABBBBFED133B7A456AD5D95B54BFD9615A9986DCED4C196953FCF03E68792 │ │ │ │ -7ECD976008CD060AA093B768252B6AA5AAFB870ED2DA786EB22C529AED4E172A │ │ │ │ -56C074A022E75462D3AD44B8977272236CC8AE7A2BAB0026D4ECA661C1DEE15C │ │ │ │ -9336A9F1A753D6F299CDAABC29127D44E70B3F66D1664969A9546795D1D1310F │ │ │ │ -D91C7A19CCDCC1E9C8A38EE9E2456B6247CEC6D0D2684048957A142B35C75CF0 │ │ │ │ -AEE66DFCAF2AA39BC84AEF365C732CF636A6FA11135B2877A557A419329EAC0E │ │ │ │ -AABF0E2AE5EA272F4DC362121FC8420E6420A6797C08BE11A6ADF857C2F54BA0 │ │ │ │ -1FAA6202429C69F48C271766C0A16E15A561B6ABBC365F892163A9425001E519 │ │ │ │ -5439BA30D1847A7CABFCD2173C2C691C85FA7399F63E584DF4165DB0DF6FB8A9 │ │ │ │ -97DF14933E7715330377F8937385DF1A63A2A80F7338C4AAA6A09CA2BF6834FF │ │ │ │ -1E06A3E871EB339BB84CA3E88634EE572A6571A5920CE4D8EC13C0B542DBC607 │ │ │ │ -DA90DCB13F786615DECF905786A03DE9FAD68FBFF8E668A25D043C3A42B49C5B │ │ │ │ -C45AA33ACAC4E66D9AEF8742B81560079FF4DDC345F2F18ECE9C343D84A954B0 │ │ │ │ -E626023F1E122F1687D4C0E685018EE5FE71B16B327DAEB7A9890F8FF18085E9 │ │ │ │ -470DCFFA7F21C7D6B94B38F51CB269333E3A903B7B88F5396784E0F8AF0454E3 │ │ │ │ -C2D07DF809CA9E746515E70DEC883252FDEFB1AC5CE6D6F53F7ECA1866D0EB09 │ │ │ │ -E959F026B88423C1BB9018F5A5653669FDE7045AB45ED527FEA0ABFB92E2DECC │ │ │ │ -4ADA28877B6B86761343BD3FAD3BC35FC3E19AFB731ABE406E5AC319CE3D2E47 │ │ │ │ -BBE759A606C1690082851213738CF41597F94249861A7288A7B46F69D4FC03D0 │ │ │ │ -E177039E905F29CEF5D42EEC7A79CC26151C42D9F65A0D3DFD5FE0A541BEC938 │ │ │ │ -720E63543F9147FE6F03748A1C3C309CCB16626BCEF22B189F6D0A805D86A84F │ │ │ │ -B2EC181B4DACDC38870A5FBE9C4FCFB580465746B4DE8FF83A5D971B02A2C22A │ │ │ │ -BC67C3CCDD5B729AB4570BBE8564EFBF42F4AC19B721D8C45F542CA1BE893C32 │ │ │ │ -DC2A7A6D2E657E2CFDF1A6D71897E61841804994063F9E1781A109691440F69E │ │ │ │ -4249AA34E504BC7DDA9132D9E9C787F020FFB1D50B5BC5FEC2174FB6BF253BC3 │ │ │ │ -9DC2ED8D5EC2FFB837404116339242D391F370D6F1B57B77475C74F71C18E1D1 │ │ │ │ -156BF6AE90BE84C1F140BEFA57C0A83CE60162D49C17E35ED997A3F0F6C676C6 │ │ │ │ -70D814 │ │ │ │ +2F3AD7547F9B0793E20128D03B122C74288283D9B583378FBA48950DCBDF887D │ │ │ │ +0A4C231FE009050F8A0C02473587E1D076F0BDC5458931FB26937C4EF7A7AB76 │ │ │ │ +DF14BDA8C5E27BDD9EC959C6F3FCF0C55E52847705744EE3D80EF426B9760775 │ │ │ │ +F4BD72DF213B715BE0AB9CEF5A9038E3EED7AF454E08ACBBD037E6307A04F331 │ │ │ │ +224C39B55908AC9FA0B8E560F8E78D5027B8266331C62EDF750CC08C0E2EB573 │ │ │ │ +082BB774BD853932B7C0C88BBE5F6E5E9D985792FA21B3180EE9911F823439DE │ │ │ │ +C430774263982682D4B1B76C287D1856702887A9A99B2B5A466FE6CC5B0851DF │ │ │ │ +EFBE62D59C80A0B97E81D0EEF577494C78F03924465B9042C7C6C1FD732CA57D │ │ │ │ +099755095F57ED2389501E3BF0969584ECE08D55FD8D7E95F92B4A0D405E5D61 │ │ │ │ +D10A7CF6B540B64594532EF90FA00CF28271462CB7F96D210E554AE285907A38 │ │ │ │ +EF66F57A40E2302CA4D3864994EC113AA35017C6D9890D1F4990AED4E5E395BA │ │ │ │ +51A1FED7F0E799614AEEFBD6FA24180F06F18DAC1D48FCC97C637130FF5C49AB │ │ │ │ +65E3E993F2CF6A2ED14A5A5CB71EDDAC41F58897B17750F761C131E1951F0F61 │ │ │ │ +1F97660E665F72B8E5106D357D7F673A61FA9399DF549ED13478B0335D7E97DA │ │ │ │ +DB74852BFFEBA827ACFD99EAD434BC753CF4E821275943118CF97A260781E068 │ │ │ │ +B184EEDC5879DC8787E93AAF61C0A4D418A86C33B89A2B8AAF6F49094930434D │ │ │ │ +D0C2E3E47E4C849694F27DD241F3BE91C3DB064D79677FE30BB4275A02AB5703 │ │ │ │ +C2264DE0968934F25B5A855A153CFC062AA83B31F1C6E8FB1AFEB58A64A14B09 │ │ │ │ +67E7B6AF2DA17860B7543EEB6ADCDD16D4B7D4F19B123E2B73FDA8886DDF3A2E │ │ │ │ +F39DE4AD2615BA9D70ED2E138C8881BD57204F6AE1110306B1ECB0085610C216 │ │ │ │ +5A84C86F8BE773B11F30E37559798DA26D7961C7A267C8B81499E7E077BBD80D │ │ │ │ +BBB69281C3B7ACF09293B65EC047F1AA3A0779E9109408BF70CB5B4E5B44A722 │ │ │ │ +4B200F0111C630721C761A88D38352287A824D23571D1A80514F380624C89355 │ │ │ │ +3BF73F4C20F6A70E3253DA0E6C1EA492AF87EBB0A27B73C73F6675D8DEA01071 │ │ │ │ +ED8EF6EC38532ADD031C747FA67225341BB3759D1DDD09011E4AA40D73ED78F7 │ │ │ │ +ADEE1534C6BBCA581C3ED7E08755C91100CE7ACD5EECD6EE728A6CA8669879E0 │ │ │ │ +AF877F84CD27EDA43002392D57956F8595E488368D5F49958052704C8ABA2B1A │ │ │ │ +37AD34B210FDCE0CF3D70604C93EEB27A6DEF24628881044512C2A93E00E3475 │ │ │ │ +71A6027B94846CD4B5D27F4E3B356337CFA27707123BFF3128AEE47FE301824B │ │ │ │ +72DFB08A57F51BEA941F51E59F81A00D6283D4B090AF21BFBE8C482502C7F521 │ │ │ │ +7EDC988BC4323C4F6725083D1C4A10532187D821D30FC638BBBEEF04D7E9F5BF │ │ │ │ +CB2B865C607DCBC8D9B818FF877E88F3B626C36DB05C4A946D2AA22FF0F08474 │ │ │ │ +BDB5AA8EA4DADE0DDDE59C6C6AF1EFF5F555704D4613247513AF158AD2BE6880 │ │ │ │ +C4C97181BD16E2BD125F8E9890312F0C842E6A1137C22DCC85EBB49C161FA4A7 │ │ │ │ +A7FACFA7062586D7D6BE3C509407E5F73BA4CC2D200BD335C24EF180BE0EE3DC │ │ │ │ +747B53F1D9987BDD8ED8152006A66F710FB7601B955A5161218B5410C7C68DC4 │ │ │ │ +5349854F9380D2B63330C79CAE8A972ACDB93082EE3424A33BE1FDF576BB446D │ │ │ │ +95394436C7B8872DA6B5106A9A86BA62E2DE6428441E85933821D70C5D4F4F16 │ │ │ │ +0B034C7636F787C9687CB6C725AE5402F40B0B81472FD9656029A188FC5D14AF │ │ │ │ +7FAA27DE0268FCB24C294E74E4C8063D72CAE3AABDE44B1AD4A89700AB374A07 │ │ │ │ +FEDE71E614707283441951730F59833143B6B7F4EAE26D50ECDE4FFBEE2C2DB2 │ │ │ │ +8DB6A27CBA9AAA21E158B1B246DC0F376EDA12D27E4189D7D333D8DCE0930DF8 │ │ │ │ +158C7B74953494533576C9243EAE1A2DD7CD3CF574D53345CD5636D2E2B8B165 │ │ │ │ +2BDAE57ACB9097EC12F020BDFE29FF0DF2A9E555384CBF4A54DC6A3A257A66D2 │ │ │ │ +2947B770B72DB554574BBA643FB76C73D8B1E9F4800A6782CABDB9C201E0C310 │ │ │ │ +AB3BC4F61C2FADC77A7ED0E9D37DF761B800D0C59D6B0C0F96494249A74ABEF3 │ │ │ │ +362C22F3E20E50DD8744A28782CBD363B126481B7184D8DE64C76992AE37A99F │ │ │ │ +7D6E327E7A49816D4BEA8C5742FC8F815EF5CDB3B02DCA350961A05E3415FCC0 │ │ │ │ +3E5EBFAD40F00EC58836E7FB21BE153DEA8D84CF12947CF9399234E2F60124B6 │ │ │ │ +D953F0E0BECD1A84509030CF01F00AB44E33CD0D64427773C60FC11244EF7F79 │ │ │ │ +3CBD80BF045990A7B2F592AAFA87A5D2A288A6924D4EB0840C90A3A110BBD5A1 │ │ │ │ +20D4412012DE3E53146A9AF62E84F5E2AC488388F5CA37A71697827CC0283AE3 │ │ │ │ +391F152D8553F275E15BC8800C0630EBB3D0F3920C5273561A9CF2E6A43EE0E5 │ │ │ │ +34D9A43D8EDCA7F9810F9CC25C1D96C985DD5F2B93447B192BEABCE9F7B7DBF1 │ │ │ │ +1E7F8E86A140283296CD6BE3F991BFA86B278F030819439FD8326BCD43CD1F7B │ │ │ │ +D669737FE4EA165C59FB24702B08B12D37E3363E6BF5EBE1D2C3B6986B1DD87B │ │ │ │ +C8FD8322016823D284C133BD14878D4BAE8BB87F9DC75655D3693EF40D240E8A │ │ │ │ +B874DAA827EB211DD84568E8D96448D733DCE14AA5401050695C1C203CD76074 │ │ │ │ +86A8E8CD7F1CF7EDA9F752B93A3E8AEC845855B3E73E0823069C00010FF136F3 │ │ │ │ +CFAA3DEAA8B628419461153346D86DC0557A810CE0A15F637A99F71F9C111040 │ │ │ │ +EFCCABEADA0440A135999A0033CBA4EB7F32E63AC676B009D3CA9F7F94E6B2E9 │ │ │ │ +1C35D08D21C4A02D6259529C5F316CCC59AA2661367D3FF7C552C7A7D5FE62FD │ │ │ │ +4AD232517E7E3DDE718ED4923151BBCD69D06F31769EB880207A354BE7F13BCE │ │ │ │ +A2012018B931C431E203D3D5B41541A4292FF7862AD1C185B061CBCA0725AD3E │ │ │ │ +58CA7BC162CD24EFDD3E10FA8D880294ABDE533EF0727FDD2CA2BA25703BD831 │ │ │ │ +5F16C5AF4F5CC6C67B259A16264C6D5046D5A01E478B28ED175C9556EDA06BCB │ │ │ │ +C68C81A73EBE075B9F7EA12E248BFE9FC6DE07153E1D388C66E455237CFEDB81 │ │ │ │ +0DA8B2F0DA2BB666901B83E4CC58226340BD7AEDAD52D58506746D3924CC34CF │ │ │ │ +61978EC163FECE99BEE6AA649F8B618900118A2E72F455CD245F253F2A5DB0D8 │ │ │ │ +9C5D82A9DF44F0104630032D032ACE2783D4B1B9284DEA19D4D97A90C9872184 │ │ │ │ +B33CF975C80EBA0538EC73DD4A6558BE8042BB7B63AF98F00A664C4DE25A8803 │ │ │ │ +AB8B6156A6D1021CBEE3C2C3A56BB12F32A6471DC82E95A0B4C703221D180F93 │ │ │ │ +45C74C94880537A5E46F47A8E65B2CED6A8791E607DAE2EE0820BF367F37E759 │ │ │ │ +75FF757118169DF9E137CE09F7284A186924F1D3A30C056FCCA2DA3F1119C023 │ │ │ │ +9F6961D6A8C0C923EAA0314E4489C94E1506F78DB05BDA3F64D04C2DFAE3344A │ │ │ │ +9DC28A1F2A6940CAF882E543BDCE89582E670F093EC63BF419C3FE69B969AA84 │ │ │ │ +7A49C2BEB60EFA3F4E2CF200E19FA8FE1117C98ACDBF6729543E9ED04CDCED70 │ │ │ │ +93FF378A4513242534516D8EBBEBAB1C7DA1F526C968B0400D0D9D91D6D88E47 │ │ │ │ +F34DD689649C8C8B44A475F2301019FD79BB3D8991B4D5B2921DDF3451057850 │ │ │ │ +8C984AD4E608AC1F7AB4A58C849136E41682649E6F948C84F0B1F64739888EA6 │ │ │ │ +AF23347903D6F51257CDBBF7635BB35E3459160B4EA650E486A77C768C2F5325 │ │ │ │ +88B13A301FFB8F997EE96F54E603978191E73B64657A0A1DD216DEC92CC83921 │ │ │ │ +78D85581C5E45F460B3C4A3F663F9A7285E5F1646660F265DDB5F336698C9A06 │ │ │ │ +FAFEA5FEA65C6A45FFBD24694EE84167C0AC4AA6A4BD9A60AED99860447ECD16 │ │ │ │ +64D894E5CCDC80C37BCA13A5DE0F840355D849BC302B45A9AF0F26BBA40923E7 │ │ │ │ +4A744312869809C00B47C184E293A3B9898E9C0CD16B760B811EB88FA60FC1D7 │ │ │ │ +4F0E94F4A00663DB58F4ECC02650B84FD858EE0C858299838AA38C60792E8101 │ │ │ │ +039CB4D137A5BFAE75DF4F29B2D90876614B5124083BAAB33FDB6444CBE62C85 │ │ │ │ +63ECC66F3080DA5D7EDE41DB6B8A0074704A2FA6B9AF26DA1F8AEC4EF63C1E87 │ │ │ │ +84086336975C403A6E61024E3C1FBDB9B16A0488613E89C68C9245FEA123F208 │ │ │ │ +B6B410369F60253A5CDA2CB0D7D5725153F30FE45088AF2394C7779EB909BA72 │ │ │ │ +8A637AB6338D09A6F85FE2336A420F401D0BE2B9E0D82CF6E4763528A943F559 │ │ │ │ +AB6D3D74485FD4A4918FD86601427A5CB94582859222163F9D7B5D07F3C221D5 │ │ │ │ +A9BDF6E326C9CFB09DF250138D24AAE6B06E4680B0D316530499DBE1D93B4B35 │ │ │ │ +035DA710E686CB8E7A8A14A7841260B37F8A6A96F3E1B03A4134E567E6DAE841 │ │ │ │ +A498BE074B81C81E8A498DCCEFDA3EBCEF05A1D021EEA19B5AAAA0B3A6F99FC8 │ │ │ │ +46AEA10EAF0F2FD26CE7606B3BDEB8E688063CEED7CD0981D8977D50219FB176 │ │ │ │ +67832081FC56B489113B93C398A56AAC8B9EE597112CE2399B9BD2D82F936C56 │ │ │ │ +EC25714F58EA03AD299EFF382EB3632D9E01460AE5FA193238B26A7DC61705B4 │ │ │ │ +3E78AA1494C3F8520C8FAD73BB35BE3BB240606D10237D417C77029E5E684495 │ │ │ │ +E7C218B9A99538AFCF787DE9536046D06936B8FD7659200D813CA522435B53AE │ │ │ │ +D2A919E73F6D35362F92B023BFA961B736C00034A71B23B7F7B19306C64FD687 │ │ │ │ +C40834C5DF254EEE0AA4BB797B541E97341099CA3FE21C83423FBCCD80F9E84A │ │ │ │ +07F67B3035411304A187104FAF44866EEF561A80F6F0193B4CC7BB035BFE8441 │ │ │ │ +D6C8D81F653505A812C99C866865CECA8AB1F8F0E8757429980AC65C0003E4C9 │ │ │ │ +A67F368286CBF886C86E98ECE338424A6F3C46EC6D7535F08622808442DD0514 │ │ │ │ +91E50EF1736DCE0F4DC12A76ACA9A46C24132D03A521B9812E184581BC4E3F6F │ │ │ │ +A83DFA72F7D87160D11E105B41F92F125E3B4C6A6786C2CCBAA8E4DC84F6D04C │ │ │ │ +F0BB17D8CF420038A5A4EA5583413107AFD6BC83C21D4838F9BFB8ACFF7ADAF3 │ │ │ │ +75059CADF62F33D518B8F66045FB365AB3FAD470AB3C548D3C562FB4FBDCB6E2 │ │ │ │ +1BEADB9E90C7DCFECCB2B1E3BAAAF0481E4760D8094C924B6B213F348668DDF7 │ │ │ │ +7ABBE6774400917B422A1CABC84CCE837EEFC81FE21140151745141AAC131131 │ │ │ │ +5C65CDDCCB6645D9D3937E2C14648175527B2F069B526907A602CF4C05BAD28B │ │ │ │ +61957DC32E85F6F0BC2AB0787169FC80EDD90026A9E364C3B7DD8E9F4CBE9D14 │ │ │ │ +042073A7B043192238BC47AEB72B4496C825B04DD3BF12C50E8B1744A22E99B7 │ │ │ │ +D3A1438246EC244B407A2B8B22E97E70EF7E91E6CDCBDA7C2A47D2F407AB3075 │ │ │ │ +AA627B55C75399EA8AC104297E31C91AA3A829014465740E04C350E97801BC2F │ │ │ │ +307C896B97FB1BE8FCB4733F767F6C385173867EC484DD5FD12CA3E5B84084D1 │ │ │ │ +75500811A086C4FCC1E7BDD88FADA2891A5AA8AFAF2D566860033A465279251A │ │ │ │ +26B28D31BB497628517678060189FA5726AC310F680DD5017968EF49E8376472 │ │ │ │ +CCDAE902013857AEF5D8902CD1F065FF19A49EB35151B624BB16AE84BB867533 │ │ │ │ +7870C74EB88D024760186E4CF9F7B1252F7F610C66847A94B082696CEA262C05 │ │ │ │ +D81BF78A937F02FBF7A5689B0DB379B6B16DC9E754E9A4CC30EC254A114AF7FA │ │ │ │ +265AC2F99E3A05CC186F0F1C7C71236DF89FBBAA3C1EE45650245FE2C0CA4D70 │ │ │ │ +92BC8E3CCC4D59D06F191B5809D35FE97D1F7BD6E8475A8E9B169D49B2DB241F │ │ │ │ +D2D3F0BB6DDC74AEA8FA8F1B6556944064E441867AD7564673AC2B42782256BF │ │ │ │ +31A254AA7B5E72380E62B3568D4F0BE339BBE27ADA9A0D0117076581AE5FD631 │ │ │ │ +81F4DE0DAF7877F9B2740C742343644C689A167A0B565D12836B88DCE6FBBE2E │ │ │ │ +AAA4F03DDA30D25A032068D471314713D0D8E46815459E4CAFB5BAC9B208BB87 │ │ │ │ +68541265CD893C991BD6A6715F167F457A330404867021C8C0111B9EF15EE7E2 │ │ │ │ +AC6ECFAA6DBA27F450597B610D62A6B458314D2CB8F203E83DC49D019F59FD13 │ │ │ │ +7B101452B3A62DFF1151CE723849A7CC1B925DCCE7C512EB72EA2FBBDC4FCB75 │ │ │ │ +6CE0BE358134967CFEA1329CA848D8B01B3EE26538D1A93CC1E850164A396832 │ │ │ │ +1E1709E4FA8316FBA0E247702CA44141428B6AA6DCF4952AB7D05A22235FD2B3 │ │ │ │ +B441A2C6679CE9028A94069901641A04CAB01FFF0E7F8C7EBC246A36ECDB5607 │ │ │ │ +0AC32011D86E64E40DA5270003FEDC19AE1A34F553B91B2837736A7E07A89523 │ │ │ │ +613DBF06D686265F6E2EDDAF985B2948300337B6832793701D56E3E4ECA49C6B │ │ │ │ +E6CD639BCA971517102D354B194C1E7542F8606F725C033502D85F19B3055A05 │ │ │ │ +D3DABDDE96F88663A660B77BAD11BC628D75F6AF32FE2B85481AA7024863EC20 │ │ │ │ +AA9DC9ED92D1444FD352EC8FEFA7680DA95265D2A7D43CA4D8E429F17DBF2350 │ │ │ │ +A00F91CA2598C3A1C1BB674129123DEEA898B3C201A6E59CA505EF5BBD261068 │ │ │ │ +6D9D3042D0EAB741C6975027FDBF4059C84DEB3580499E32580AF9A9E3FB65C6 │ │ │ │ +6C5F0C35727CFCEC9FDE785D372F40FDA9EA26A8F10D89A77435A06B7C74B799 │ │ │ │ +1E096DAF78BD746E28D6184BE9442B98F1F1AC749591CBBBF24533C0FBA39F94 │ │ │ │ +55BA1886E26A73EF3C11D7C67BAB37530E895FD29FE23A1801985E6D3F432B66 │ │ │ │ +0961B12E0A939217B7887FCF992D5E2AA097709D2D401EF1C2B69D2711F36A3D │ │ │ │ +CA3C092A691232AC591B77696ECFE0B548406571B7B7B227532291E50B7F6B5A │ │ │ │ +85E9CD50601D02A8CF2B652566B93E1A5A2B07604CEF6F2DB866FB850B5DF292 │ │ │ │ +B8E2839C02AF1F56B82F8D7897F5A3E60AF96A5CA73470D567A30AEEDADE8E05 │ │ │ │ +21C3E89B06363A4CFFD4655D946E91D34E3543D1B8C1BFCB20E8FF707C55BB31 │ │ │ │ +48058D201BBBD48E1CD9EC00E95C26E14040FFD32095545BD3D58173B781A2C3 │ │ │ │ +B25EFB2E874A1991113E108836089391D7FC0B0AFA4EEB5D4F2E0F8FBCE30AE2 │ │ │ │ +79E213E21EF6CEF6ABA549466410F10A561B1BB62B2D3AB1CDB74AB55F8BB5A9 │ │ │ │ +5EE8F6A068D592BEEBC636B565383ACA4B712B6BC8B3FCF4B3A00889118C224A │ │ │ │ +FBFD8F05D300B58BA16ECFFF0495DC5F9509523C736D2C2A929129AFF9E7C9CB │ │ │ │ +3F246E2520359F52CD14B14D456D60521DF56537D23181C34BAE92A948B64953 │ │ │ │ +09DD8C8A716C9F052D6C66D3FA782378940FC5FFAA69EBCFC3DA39CB5C62820F │ │ │ │ +37405BF4D8C25A06B9E6A040F3DE939CE8CCB55514E4481B606B4F7211094924 │ │ │ │ +13DF2A5986F6CD72A6EC6845C03EDB605994CBEC62700B2948ED5E50F163B2AE │ │ │ │ +A7C8D95BBD073065E9AFDEAC1762993DD152C39D382845FFD0F6DEF50DDA1A15 │ │ │ │ +DF483D1B11B62D24FBE15E763EE3B9B295EE786CADC9EDC40A1877C678AC481A │ │ │ │ +C889C27468F3EF73671C100E042F7AB47DD65453E12040E66CDED820E17723E7 │ │ │ │ +B16EA73F6B8ADABCC67EC3A14A67D4F1580E275CBE5F31340F4FEC3DA972C13F │ │ │ │ +9819AEEC51EEB43BFD087C41CFC6B13BB432B39BC52C58986148F60A273FE9CC │ │ │ │ +280DDBF59087FF98D118ED064017BB9E1E721B0FD545E4123BEB19E329BDE87A │ │ │ │ +71B970D1C16A5CC7B2E8D868E67F7B13B5F3B02928473DE8D275AE6A4C620DF0 │ │ │ │ +CB9224D23325CA │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -7327,15 +7338,15 @@ │ │ │ │ rf /Fb 137[38 45 28 1[35 2[42 47 1[21 4[38 1[38 1[38 │ │ │ │ 38 42 14[61 23[25 58[{}14 83.022 /CMTI10 rf /Fc 139[62 │ │ │ │ 62 62 5[62 2[62 1[62 1[62 62 2[62 12[62 62 2[62 2[62 │ │ │ │ 3[62 6[62 66[{}15 119.552 /CMTT12 rf /Fd 134[71 2[71 │ │ │ │ 75 52 53 55 1[75 67 75 112 3[37 75 67 41 61 75 60 1[65 │ │ │ │ 12[94 75 2[92 11[103 15[67 67 67 67 2[37 46[{}27 119.552 │ │ │ │ /CMBX12 rf /Fe 134[44 3[46 2[33 3[46 12[42 22[43 15[23 │ │ │ │ -3[42 3[42 1[42 3[23 44[{}11 83.022 /CMSL10 rf /Ff 171[39 │ │ │ │ +3[42 3[42 42 42 3[23 44[{}12 83.022 /CMSL10 rf /Ff 171[39 │ │ │ │ 84[{}1 58.1154 /CMMI7 rf /Fg 157[46 98[{}1 83.022 /CMEX10 │ │ │ │ rf /Fh 222[83 29[42 2[65{}3 83.022 /CMSY10 rf │ │ │ │ %DVIPSBitmapFont: Fi tcrm1000 10 1 │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ /Dotaccent/cedilla/ogonek/quotesinglbase.ts1 4{/.notdef}repeat │ │ │ │ /quotedblbase.ts1/.notdef/.notdef/twelveudash/threequartersemdash │ │ │ │ /afii61664.cap/arrowleft/arrowright/tieaccentlowercase/tieaccentcapital │ │ │ │ @@ -7394,15 +7405,15 @@ │ │ │ │ 74.7198 /CMTT9 rf /Fq 133[34 41 41 55 41 43 30 30 30 │ │ │ │ 1[43 38 43 64 21 2[21 43 38 23 34 43 34 43 38 9[79 2[55 │ │ │ │ 43 57 1[52 60 1[70 48 2[28 58 3[59 55 54 58 7[38 38 38 │ │ │ │ 38 38 38 38 38 38 38 1[21 26 21 44[{}50 74.7198 /CMR9 │ │ │ │ rf /Fr 205[30 30 49[{}2 49.8132 /CMR6 rf /Fs 205[35 35 │ │ │ │ 49[{}2 66.4176 /CMR8 rf /Ft 134[51 2[51 54 38 38 38 2[49 │ │ │ │ 54 81 27 51 1[27 54 49 30 43 1[43 1[49 9[100 6[66 5[50 │ │ │ │ -6[70 69 73 10[49 3[49 1[49 3[27 44[{}28 99.6264 /CMR12 │ │ │ │ +6[70 69 73 10[49 3[49 49 49 3[27 44[{}29 99.6264 /CMR12 │ │ │ │ rf /Fu 165[99 6[90 2[110 121 126 1[97 6[106 1[117 1[122 │ │ │ │ 65[{}9 143.462 /CMBX12 rf /Fv 133[58 70 2[70 1[51 52 │ │ │ │ 51 1[73 66 73 1[36 70 1[36 73 66 40 58 73 58 73 66 13[73 │ │ │ │ 6[83 2[47 3[90 2[94 99 14[66 3[36 43 45[{}29 143.462 │ │ │ │ /CMR17 rf end │ │ │ │ %%EndProlog │ │ │ │ %%BeginSetup │ │ │ │ @@ -7419,16 +7430,16 @@ │ │ │ │ %%Page: 1 1 │ │ │ │ TeXDict begin 1 0 bop 109 1941 a Fv(In)l(tegrating)43 │ │ │ │ b(the)g Fu(SPOOLES)h Fv(2.2)e(Sparse)i(Linear)f(Algebra)g(Library)326 │ │ │ │ 2123 y(in)l(to)g(the)h Fu(LANCZOS)e Fv(Blo)t(c)l(k-shifted)h(Lanczos)g │ │ │ │ (Eigensolv)l(er)950 2513 y Ft(Clev)m(e)35 b(Ashcraft)737 │ │ │ │ 2630 y(Bo)s(eing)d(Phan)m(tom)i(W)-8 b(orks)1753 2593 │ │ │ │ y Fs(1)2334 2513 y Ft(Jim)33 b(P)m(atterson)2107 2630 │ │ │ │ -y(Bo)s(eing)f(Phan)m(tom)i(W)-8 b(orks)3123 2593 y Fs(2)1611 │ │ │ │ -2890 y Ft(Jan)m(uary)33 b(6,)f(2026)104 4919 y Fr(1)138 │ │ │ │ +y(Bo)s(eing)f(Phan)m(tom)i(W)-8 b(orks)3123 2593 y Fs(2)1586 │ │ │ │ +2890 y Ft(Jan)m(uary)34 b(10,)e(2026)104 4919 y Fr(1)138 │ │ │ │ 4951 y Fq(P)-6 b(.)36 b(O.)g(Bo)n(x)g(24346,)41 b(Mail)c(Stop)e(7L-22,) │ │ │ │ 40 b(Seattle,)f(W)-6 b(ashington)36 b(98124,)k Fp │ │ │ │ (cleve.ashcraft@boeing.com)p Fq(.)71 b(This)36 b(researc)n(h)0 │ │ │ │ 5042 y(w)n(as)f(supp)r(orted)e(in)h(part)g(b)n(y)f(the)h(D)n(ARP)-6 │ │ │ │ b(A)32 b(Con)n(tract)i(D)n(ABT63-95-C-0122)i(and)e(the)g(DoD)f(High)h │ │ │ │ (P)n(erformance)i(Computing)0 5133 y(Mo)r(dernization)27 │ │ │ │ b(Program)g(Common)g(HPC)f(Soft)n(w)n(are)g(Supp)r(ort)f(Initiativ)n │ │ │ │ @@ -7559,17 +7570,17 @@ │ │ │ │ b(data)g(structures)g(m)n(ust)h(b)r(e)g(initialized.)38 │ │ │ │ b(In)28 b(a)g(parallel)e(en)n(vironmen)n(t,)h(there)h(is)g(ev)n(en)f │ │ │ │ (more)g(setup)h(w)n(ork)f(to)g(do,)0 5396 y(analyzing)20 │ │ │ │ b(the)h(factorization)f(and)h(solv)n(es)f(and)h(sp)r(ecifying)g(whic)n │ │ │ │ (h)g(threads)g(or)f(pro)r(cessors)f(p)r(erform)h(what)i(computations) │ │ │ │ 1929 5656 y(2)p eop end │ │ │ │ %%Page: 3 4 │ │ │ │ -TeXDict begin 3 3 bop 83 100 802 4 v 968 100 a Fn(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3059 100 V 802 w Fm(3)0 │ │ │ │ +TeXDict begin 3 3 bop 83 100 781 4 v 947 100 a Fn(SPOOLES)32 │ │ │ │ +b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Jan)n(uary)26 b(10,)h(2026)p 3080 100 V 781 w Fm(3)0 │ │ │ │ 390 y(and)h(store)f(what)h(data.)37 b(In)28 b(a)g(distributed)g(en)n │ │ │ │ (vironmen)n(t,)g(the)g(en)n(tries)f(of)h Fj(A)g Fm(and)g │ │ │ │ Fj(B)k Fm(m)n(ust)c(also)f(b)r(e)i(distributed)f(among)0 │ │ │ │ 490 y(the)g(pro)r(cessors)d(in)j(preparation)e(for)h(the)h(factors)e │ │ │ │ (and)i(m)n(ultiplies.)125 614 y(F)-7 b(or)37 b(eac)n(h)h(of)h(the)f │ │ │ │ (three)h(en)n(vironmen)n(ts)e(|)i(serial,)h(m)n(ultithreaded)e(and)h │ │ │ │ (MPI)f(|)g(the)h Fn(SPOOLES)g Fm(solv)n(er)e(has)0 714 │ │ │ │ @@ -7634,17 +7645,17 @@ │ │ │ │ (utation)i(v)n(ector.)125 5243 y Fi(\210)42 b Fl(DenseMtx)e(*X)27 │ │ │ │ b Fm(:)g(dense)h(matrix)f(ob)5 b(ject)27 b(that)h(is)g(used)f(during)g │ │ │ │ (the)h(matrix)f(m)n(ultiples)h(and)g(solv)n(es.)125 5407 │ │ │ │ y Fi(\210)42 b Fl(DenseMtx)e(*Y)27 b Fm(:)g(dense)h(matrix)f(ob)5 │ │ │ │ b(ject)27 b(that)h(is)g(used)f(during)g(the)h(matrix)f(m)n(ultiples)h │ │ │ │ (and)g(solv)n(es.)1929 5656 y(4)p eop end │ │ │ │ %%Page: 5 6 │ │ │ │ -TeXDict begin 5 5 bop 83 100 802 4 v 968 100 a Fn(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3059 100 V 802 w Fm(5)125 │ │ │ │ +TeXDict begin 5 5 bop 83 100 781 4 v 947 100 a Fn(SPOOLES)32 │ │ │ │ +b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Jan)n(uary)26 b(10,)h(2026)p 3080 100 V 781 w Fm(5)125 │ │ │ │ 390 y Fi(\210)42 b Fl(int)g(msglvl)30 b Fm(:)48 b(message)31 │ │ │ │ b(lev)n(el)h(for)h(output.)53 b(When)33 b(0,)h(no)e(output,)j(When)e │ │ │ │ (1,)h(just)g(statistics)e(and)h(cpu)g(times.)208 490 │ │ │ │ y(When)28 b(greater)e(than)h(1,)g(more)g(and)h(more)e(output.)125 │ │ │ │ 654 y Fi(\210)42 b Fl(FILE)f(*msgFile)25 b Fm(:)37 b(message)26 │ │ │ │ b(\014le)i(for)f(output.)37 b(When)28 b Fl(msglvl)e Fj(>)h │ │ │ │ Fm(0,)g Fl(msgFile)e Fm(m)n(ust)j(not)f(b)r(e)h Fl(NULL)p │ │ │ │ @@ -7718,17 +7729,17 @@ │ │ │ │ (in)n(to)f(the)i(upp)r(er)e(triangle,)i(and)e(the)i(storage)c(mo)r(des) │ │ │ │ j(of)g Fl(A)f Fm(and)h Fl(B)f Fm(are)390 5276 y(c)n(hanged)27 │ │ │ │ b(to)g(c)n(hevrons)f(and)i(v)n(ectors,)e(in)i(preparation)d(for)j(the)g │ │ │ │ (\014rst)f(factorization.)307 5407 y Fi(\210)42 b Fm(The)28 │ │ │ │ b(sym)n(b)r(olic)f(factorization)f(is)i(then)g(computed)g(and)f(loaded) │ │ │ │ g(in)h(the)g Fl(Bridge)d Fm(ob)5 b(ject.)p eop end │ │ │ │ %%Page: 6 7 │ │ │ │ -TeXDict begin 6 6 bop 83 100 802 4 v 968 100 a Fn(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3059 100 V 802 w Fm(6)307 │ │ │ │ +TeXDict begin 6 6 bop 83 100 781 4 v 947 100 a Fn(SPOOLES)32 │ │ │ │ +b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Jan)n(uary)26 b(10,)h(2026)p 3080 100 V 781 w Fm(6)307 │ │ │ │ 390 y Fi(\210)42 b Fm(A)28 b Fl(FrontMtx)d Fm(ob)5 b(ject)27 │ │ │ │ b(is)g(created)g(to)h(hold)f(the)h(factorization)e(and)i(loaded)f(in)n │ │ │ │ (to)g(the)h Fl(Bridge)d Fm(ob)5 b(ject.)307 523 y Fi(\210)42 │ │ │ │ b Fm(A)30 b Fl(SubMtxManager)24 b Fm(ob)5 b(ject)29 b(is)g(created)f │ │ │ │ (to)h(hold)g(the)h(factor's)e(submatrices)g(and)h(loaded)g(in)n(to)g │ │ │ │ (the)g Fl(Bridge)390 622 y Fm(ob)5 b(ject.)307 755 y │ │ │ │ Fi(\210)42 b Fm(Tw)n(o)27 b Fl(DenseMtx)d Fm(ob)5 b(jects)27 │ │ │ │ @@ -7811,17 +7822,17 @@ │ │ │ │ Fj(B)i Fm(is)d(required.)456 5159 y Fn({)41 b Fl(2)28 │ │ │ │ b Fm(|)f(buc)n(kling,)h(a)f(m)n(ultiply)h(with)g Fj(A)g │ │ │ │ Fm(is)f(required.)456 5275 y Fn({)41 b Fl(3)28 b Fm(|)f(simple,)h(no)g │ │ │ │ (m)n(ultiply)g(is)f(required.)307 5407 y Fi(\210)42 b │ │ │ │ Fl(void)g(*data)26 b Fm(|)h(a)h(p)r(oin)n(ter)f(to)g(the)h │ │ │ │ Fl(Bridge)d Fm(ob)5 b(ject.)p eop end │ │ │ │ %%Page: 7 8 │ │ │ │ -TeXDict begin 7 7 bop 83 100 802 4 v 968 100 a Fn(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3059 100 V 802 w Fm(7)101 │ │ │ │ +TeXDict begin 7 7 bop 83 100 781 4 v 947 100 a Fn(SPOOLES)32 │ │ │ │ +b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Jan)n(uary)26 b(10,)h(2026)p 3080 100 V 781 w Fm(7)101 │ │ │ │ 390 y(4.)42 b Fl(void)f(Solve)h(\()h(int)g(*pnrows,)d(int)i(*pncols,)e │ │ │ │ (double)i(X[],)f(double)h(Y[],)774 490 y(void)g(*data,)f(int)i(*perror) │ │ │ │ d(\))j(;)208 623 y Fm(This)22 b(metho)r(d)i(solv)n(es)d(\()p │ │ │ │ Fj(A)9 b Fh(\000)g Fj(\033)s(B)t Fm(\))p Fj(X)30 b Fm(=)23 │ │ │ │ b Fj(Y)c Fm(,)24 b(where)e(\()p Fj(A)9 b Fh(\000)g Fj(\033)s(B)t │ │ │ │ Fm(\))24 b(has)e(b)r(een)h(factored)f(b)n(y)h(a)f(previous)g(call)h(to) │ │ │ │ f Fl(Factor\(\))p Fm(.)208 722 y(All)28 b(calling)f(sequence)g │ │ │ │ @@ -7883,17 +7894,17 @@ │ │ │ │ (\014le)i(for)f Fj(A)h Fm(is)f(read.)36 b(This)28 b(yields)f(the)h(n)n │ │ │ │ (um)n(b)r(er)g(of)f(equations.)101 5177 y(3.)42 b(The)27 │ │ │ │ b(parameters)f(that)i(de\014ne)g(the)g(eigensystem)f(to)g(b)r(e)h(solv) │ │ │ │ n(ed)f(are)f(read)h(in)h(from)f(the)h Fl(parmFile)c Fm(\014le.)101 │ │ │ │ 5343 y(4.)42 b(The)27 b(Lanczos)f(eigensolv)n(er)g(w)n(orkspace)f(is)j │ │ │ │ (initialized.)p eop end │ │ │ │ %%Page: 8 9 │ │ │ │ -TeXDict begin 8 8 bop 83 100 802 4 v 968 100 a Fn(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3059 100 V 802 w Fm(8)101 │ │ │ │ +TeXDict begin 8 8 bop 83 100 781 4 v 947 100 a Fn(SPOOLES)32 │ │ │ │ +b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Jan)n(uary)26 b(10,)h(2026)p 3080 100 V 781 w Fm(8)101 │ │ │ │ 390 y(5.)42 b(The)27 b(Lanczos)f(comm)n(unication)h(structure)g(is)h │ │ │ │ (\014lled)g(with)g(some)f(parameters.)101 556 y(6.)42 │ │ │ │ b(The)30 b Fj(A)h Fm(and)g(p)r(ossibly)f Fj(B)k Fm(matrices)c(are)g │ │ │ │ (read)g(in)g(from)h(the)g(Harw)n(ell-Bo)r(eing)d(\014les)j(and)f(con)n │ │ │ │ (v)n(erted)f(in)n(to)h Fl(InpMtx)208 656 y Fm(ob)5 b(jects)27 │ │ │ │ b(from)g(the)h Fn(SPOOLES)g Fm(library)-7 b(.)101 822 │ │ │ │ y(7.)42 b(The)27 b(linear)g(solv)n(er)f(en)n(vironmen)n(t)h(is)g(then)h │ │ │ │ @@ -7954,17 +7965,17 @@ │ │ │ │ y Fi(\210)42 b Fl(FrontMtx)e(*frontmtx)24 b Fm(:)37 b(ob)5 │ │ │ │ b(ject)27 b(that)h(stores)e(the)i Fj(L)p Fm(,)g Fj(D)h │ │ │ │ Fm(and)f Fj(U)36 b Fm(factor)27 b(matrices.)125 5354 │ │ │ │ y Fi(\210)42 b Fl(IV)g(*oldToNewIV)23 b Fm(:)28 b(ob)5 │ │ │ │ b(ject)28 b(that)f(stores)g(old-to-new)f(p)r(erm)n(utation)i(v)n │ │ │ │ (ector.)1929 5656 y(9)p eop end │ │ │ │ %%Page: 10 11 │ │ │ │ -TeXDict begin 10 10 bop 83 100 781 4 v 947 100 a Fn(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fm(10)125 │ │ │ │ +TeXDict begin 10 10 bop 83 100 760 4 v 926 100 a Fn(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fm(10)125 │ │ │ │ 390 y Fi(\210)42 b Fl(IV)g(*newToOldIV)23 b Fm(:)28 b(ob)5 │ │ │ │ b(ject)28 b(that)f(stores)g(new-to-old)f(p)r(erm)n(utation)i(v)n │ │ │ │ (ector.)125 556 y Fi(\210)42 b Fl(DenseMtx)e(*X)27 b │ │ │ │ Fm(:)g(dense)h(matrix)f(ob)5 b(ject)27 b(that)h(is)g(used)f(during)g │ │ │ │ (the)h(matrix)f(m)n(ultiples)h(and)g(solv)n(es.)125 721 │ │ │ │ y Fi(\210)42 b Fl(DenseMtx)e(*Y)27 b Fm(:)g(dense)h(matrix)f(ob)5 │ │ │ │ b(ject)27 b(that)h(is)g(used)f(during)g(the)h(matrix)f(m)n(ultiples)h │ │ │ │ @@ -8029,17 +8040,17 @@ │ │ │ │ (sequence)h(of)f(action.)307 5175 y Fi(\210)42 b Fm(The)e(metho)r(d)h │ │ │ │ (b)r(egins)f(b)n(y)g(c)n(hec)n(king)f(all)h(the)g(input)h(data,)i(and)d │ │ │ │ (setting)g(the)h(appropriate)d(\014elds)j(of)f(the)390 │ │ │ │ 5275 y Fl(BridgeMT)25 b Fm(ob)5 b(ject.)307 5407 y Fi(\210)42 │ │ │ │ b Fm(The)28 b Fl(pencil)d Fm(ob)5 b(ject)27 b(is)h(initialized)g(with)g │ │ │ │ Fl(A)f Fm(and)h Fl(B)p Fm(.)p eop end │ │ │ │ %%Page: 11 12 │ │ │ │ -TeXDict begin 11 11 bop 83 100 781 4 v 947 100 a Fn(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fm(11)307 │ │ │ │ +TeXDict begin 11 11 bop 83 100 760 4 v 926 100 a Fn(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fm(11)307 │ │ │ │ 390 y Fi(\210)42 b Fl(A)27 b Fm(and)h Fl(B)f Fm(are)g(con)n(v)n(erted)f │ │ │ │ (to)h(storage)f(b)n(y)h(ro)n(ws)f(and)i(v)n(ector)e(mo)r(de.)307 │ │ │ │ 516 y Fi(\210)42 b Fm(A)28 b Fl(Graph)e Fm(ob)5 b(ject)27 │ │ │ │ b(is)h(created)e(that)i(con)n(tains)f(the)h(sparsit)n(y)e(pattern)i(of) │ │ │ │ f(the)h(union)g(of)f Fl(A)g Fm(and)h Fl(B)p Fm(.)307 │ │ │ │ 642 y Fi(\210)42 b Fm(The)37 b(graph)e(is)i(ordered)e(b)n(y)h(\014rst)g │ │ │ │ (\014nding)h(a)f(recursiv)n(e)f(dissection)h(partition,)i(and)f(then)g │ │ │ │ @@ -8128,17 +8139,17 @@ │ │ │ │ 1174 5220 y(1)99 b(error)26 b(in)i(the)g(factorization)1174 │ │ │ │ 5319 y(0)99 b(normal)27 b(return)1147 5419 y(-1)98 b │ │ │ │ Fl(psigma)26 b Fm(is)h Fl(NULL)2341 5220 y Fm(-2)98 b │ │ │ │ Fl(ppvttol)25 b Fm(is)j Fl(NULL)2341 5319 y Fm(-3)98 │ │ │ │ b Fl(data)26 b Fm(is)i Fl(NULL)2341 5419 y Fm(-4)98 b │ │ │ │ Fl(pinertia)25 b Fm(is)i Fl(NULL)p eop end │ │ │ │ %%Page: 12 13 │ │ │ │ -TeXDict begin 12 12 bop 83 100 781 4 v 947 100 a Fn(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fm(12)101 │ │ │ │ +TeXDict begin 12 12 bop 83 100 760 4 v 926 100 a Fn(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fm(12)101 │ │ │ │ 390 y(3.)42 b Fl(void)f(MatMulMT)g(\()i(int)f(*pnrows,)f(int)h │ │ │ │ (*pncols,)e(double)h(X[],)h(double)f(Y[],)905 490 y(int)h(*pprbtype,)e │ │ │ │ (void)i(*data)f(\))i(;)208 623 y Fm(This)31 b(metho)r(d)i(computes)e(a) │ │ │ │ h(m)n(ultiply)g(of)g(the)g(form)f Fj(Y)49 b Fm(=)30 b │ │ │ │ Fj(I)7 b(X)g Fm(,)32 b Fj(Y)49 b Fm(=)29 b Fj(AX)39 b │ │ │ │ Fm(or)31 b Fj(Y)49 b Fm(=)29 b Fj(B)t(X)7 b Fm(.)49 b(All)32 │ │ │ │ b(calling)g(sequence)208 722 y(parameters)25 b(are)i(p)r(oin)n(ters)g │ │ │ │ @@ -8206,17 +8217,17 @@ │ │ │ │ 5011 y Fm(where)125 5201 y Fi(\210)i Fl(msglvl)25 b Fm(is)i(the)h │ │ │ │ (message)e(lev)n(el)h(for)h(the)g Fl(BridgeMT)c Fm(metho)r(ds)k(and)f │ │ │ │ (the)h Fn(SPOOLES)g Fm(soft)n(w)n(are.)125 5368 y Fi(\210)42 │ │ │ │ b Fl(msgFile)24 b Fm(is)k(the)g(message)e(\014le)i(for)f(the)h │ │ │ │ Fl(BridgeMT)c Fm(metho)r(ds)k(and)f(the)h Fn(SPOOLES)g │ │ │ │ Fm(soft)n(w)n(are.)p eop end │ │ │ │ %%Page: 13 14 │ │ │ │ -TeXDict begin 13 13 bop 83 100 781 4 v 947 100 a Fn(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fm(13)125 │ │ │ │ +TeXDict begin 13 13 bop 83 100 760 4 v 926 100 a Fn(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fm(13)125 │ │ │ │ 390 y Fi(\210)42 b Fl(parmFile)24 b Fm(is)j(the)h(input)h(\014le)f(for) │ │ │ │ f(the)h(parameters)d(of)j(the)g(eigensystem)f(to)g(b)r(e)h(solv)n(ed.) │ │ │ │ 125 556 y Fi(\210)42 b Fl(seed)26 b Fm(is)h(a)g(random)g(n)n(um)n(b)r │ │ │ │ (er)g(seed)h(used)f(b)n(y)g(the)h Fn(SPOOLES)g Fm(soft)n(w)n(are.)125 │ │ │ │ 722 y Fi(\210)42 b Fl(nthread)24 b Fm(is)k(the)g(n)n(um)n(b)r(er)f(of)h │ │ │ │ (threads)f(to)g(use)g(in)h(the)g(factors,)f(solv)n(es)f(and)h(matrix-m) │ │ │ │ n(ultiplies.)125 888 y Fi(\210)42 b Fl(inFileA)24 b Fm(is)k(the)g(Harw) │ │ │ │ @@ -8302,17 +8313,17 @@ │ │ │ │ b(that)h(con)n(tains)f(the)h(sym)n(b)r(olic)f(factorization)f(of)h(the) │ │ │ │ h(matrix.)125 5304 y Fi(\210)42 b Fl(SubMtxManager)c(*mtxmanager)25 │ │ │ │ b Fm(:)41 b(ob)5 b(ject)30 b(that)g(manages)e(the)i Fl(SubMtx)e │ │ │ │ Fm(ob)5 b(jects)29 b(that)h(store)f(the)h(factor)f(en)n(tries)208 │ │ │ │ 5404 y(and)e(are)g(used)g(in)h(the)g(solv)n(es.)1908 │ │ │ │ 5656 y(14)p eop end │ │ │ │ %%Page: 15 16 │ │ │ │ -TeXDict begin 15 15 bop 83 100 781 4 v 947 100 a Fn(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fm(15)125 │ │ │ │ +TeXDict begin 15 15 bop 83 100 760 4 v 926 100 a Fn(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fm(15)125 │ │ │ │ 390 y Fi(\210)42 b Fl(FrontMtx)e(*frontmtx)24 b Fm(:)37 │ │ │ │ b(ob)5 b(ject)27 b(that)h(stores)e(the)i Fj(L)p Fm(,)g │ │ │ │ Fj(D)h Fm(and)f Fj(U)36 b Fm(factor)27 b(matrices.)125 │ │ │ │ 556 y Fi(\210)42 b Fl(IV)g(*oldToNewIV)23 b Fm(:)28 b(ob)5 │ │ │ │ b(ject)28 b(that)f(stores)g(old-to-new)f(p)r(erm)n(utation)i(v)n │ │ │ │ (ector.)125 722 y Fi(\210)42 b Fl(IV)g(*newToOldIV)23 │ │ │ │ b Fm(:)28 b(ob)5 b(ject)28 b(that)f(stores)g(new-to-old)f(p)r(erm)n │ │ │ │ @@ -8395,17 +8406,17 @@ │ │ │ │ (gathers)f(them)h(on)g(all)g(the)g(pro)r(cessors)e(in)n(to)i(eac)n(h)f │ │ │ │ (of)h(their)h(global)e(output)0 5197 y(blo)r(c)n(ks.)36 │ │ │ │ b(These)27 b(op)r(erations)f(add)i(a)f(considerable)f(cost)h(to)g(the)h │ │ │ │ (solv)n(e)e(and)h(matrix-m)n(ultiplies,)g(but)i(the)e(next)h(release)e │ │ │ │ (of)0 5297 y(the)i Fn(LANCZOS)g Fm(soft)n(w)n(are)e(will)i(remo)n(v)n │ │ │ │ (e)e(these)h(steps.)p eop end │ │ │ │ %%Page: 16 17 │ │ │ │ -TeXDict begin 16 16 bop 83 100 781 4 v 947 100 a Fn(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fm(16)101 │ │ │ │ +TeXDict begin 16 16 bop 83 100 760 4 v 926 100 a Fn(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fm(16)101 │ │ │ │ 390 y(1.)42 b Fl(int)g(SetupMPI)e(\()j(void)f(*data,)f(int)i │ │ │ │ (*pprbtype,)c(int)k(*pneqns,)818 490 y(int)f(*pmxbsz,)e(InpMtx)h(*A,)i │ │ │ │ (InpMtx)e(*B,)h(int)h(*pseed,)818 589 y(int)f(*pmsglvl,)e(FILE)i │ │ │ │ (*msgFile,)e(MPI_Comm)g(comm)i(\))h(;)208 722 y Fm(All)28 │ │ │ │ b(calling)f(sequence)g(parameters)e(are)i(p)r(oin)n(ters)g(to)g(more)g │ │ │ │ (easily)g(allo)n(w)g(an)g(in)n(terface)g(with)h(F)-7 │ │ │ │ b(ortran.)307 888 y Fi(\210)42 b Fl(void)g(*data)26 b │ │ │ │ @@ -8484,17 +8495,17 @@ │ │ │ │ (cessors)d(that)j(o)n(wn)f(them.)307 5272 y Fi(\210)42 │ │ │ │ b Fm(The)28 b(sym)n(b)r(olic)f(factorization)f(is)i(then)g(computed)g │ │ │ │ (and)f(loaded)g(in)h(the)g Fl(BridgeMPI)c Fm(ob)5 b(ject.)307 │ │ │ │ 5405 y Fi(\210)42 b Fm(A)28 b Fl(FrontMtx)d Fm(ob)5 b(ject)27 │ │ │ │ b(is)g(created)g(to)h(hold)f(the)h(factorization)e(and)i(loaded)f(in)n │ │ │ │ (to)g(the)h Fl(BridgeMPI)c Fm(ob)5 b(ject.)p eop end │ │ │ │ %%Page: 17 18 │ │ │ │ -TeXDict begin 17 17 bop 83 100 781 4 v 947 100 a Fn(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fm(17)307 │ │ │ │ +TeXDict begin 17 17 bop 83 100 760 4 v 926 100 a Fn(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fm(17)307 │ │ │ │ 390 y Fi(\210)42 b Fm(A)20 b Fl(SubMtxManager)15 b Fm(ob)5 │ │ │ │ b(ject)20 b(is)f(created)g(to)h(hold)g(the)g(factor's)f(submatrices)g │ │ │ │ (and)h(loaded)f(in)n(to)g(the)i Fl(BridgeMPI)390 490 │ │ │ │ y Fm(ob)5 b(ject.)307 620 y Fi(\210)42 b Fm(The)22 b(map)g(from)g │ │ │ │ (factor)f(submatrices)h(to)g(their)g(o)n(wning)f(threads)g(is)h │ │ │ │ (computed)g(and)g(stored)g(in)g(the)g Fl(solvemap)390 │ │ │ │ 720 y Fm(ob)5 b(ject.)307 850 y Fi(\210)42 b Fm(The)28 │ │ │ │ @@ -8577,17 +8588,17 @@ │ │ │ │ Fl(*pnrows)p Fm(.)307 5162 y Fi(\210)42 b Fl(int)h(*pprbtype)23 │ │ │ │ b Fm(|)28 b Fl(*pprbtype)c Fm(holds)j(the)h(problem)f(t)n(yp)r(e.)456 │ │ │ │ 5292 y Fn({)41 b Fl(1)28 b Fm(|)f(vibration,)g(a)g(m)n(ultiply)h(with)h │ │ │ │ Fj(B)i Fm(is)d(required.)456 5407 y Fn({)41 b Fl(2)28 │ │ │ │ b Fm(|)f(buc)n(kling,)h(a)f(m)n(ultiply)h(with)g Fj(A)g │ │ │ │ Fm(is)f(required.)p eop end │ │ │ │ %%Page: 18 19 │ │ │ │ -TeXDict begin 18 18 bop 83 100 781 4 v 947 100 a Fn(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fm(18)456 │ │ │ │ +TeXDict begin 18 18 bop 83 100 760 4 v 926 100 a Fn(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fm(18)456 │ │ │ │ 390 y Fn({)41 b Fl(3)28 b Fm(|)f(simple,)h(no)g(m)n(ultiply)g(is)f │ │ │ │ (required.)307 518 y Fi(\210)42 b Fl(void)g(*data)26 │ │ │ │ b Fm(|)h(a)h(p)r(oin)n(ter)f(to)g(the)h Fl(BridgeMPI)c │ │ │ │ Fm(ob)5 b(ject.)101 678 y(4.)42 b Fl(void)f(MatMulMPI)f(\()k(int)e │ │ │ │ (*pnrows,)e(int)i(*pncols,)f(double)g(X[],)h(double)f(Y[],)905 │ │ │ │ 778 y(int)h(*pprbtype,)e(void)i(*data)f(\))i(;)208 908 │ │ │ │ y Fm(This)31 b(metho)r(d)i(computes)e(a)h(m)n(ultiply)g(of)g(the)g │ │ │ │ @@ -8675,17 +8686,17 @@ │ │ │ │ y(1)99 b(normal)27 b(return)1409 5319 y(-1)99 b Fl(pnrows)25 │ │ │ │ b Fm(is)j Fl(NULL)1409 5419 y Fm(-2)99 b Fl(pncols)25 │ │ │ │ b Fm(is)j Fl(NULL)2252 5220 y Fm(-3)99 b Fl(X)27 b Fm(is)h │ │ │ │ Fl(NULL)2252 5319 y Fm(-4)99 b Fl(Y)27 b Fm(is)h Fl(NULL)2252 │ │ │ │ 5419 y Fm(-5)99 b Fl(data)26 b Fm(is)i Fl(NULL)p eop │ │ │ │ end │ │ │ │ %%Page: 19 20 │ │ │ │ -TeXDict begin 19 19 bop 83 100 781 4 v 947 100 a Fn(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fm(19)101 │ │ │ │ +TeXDict begin 19 19 bop 83 100 760 4 v 926 100 a Fn(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fm(19)101 │ │ │ │ 390 y(7.)42 b Fl(int)g(CleanupMPI)d(\()44 b(void)d(*data)h(\))h(;)208 │ │ │ │ 520 y Fm(This)27 b(metho)r(d)h(releases)e(all)h(the)h(storage)e(used)i │ │ │ │ (b)n(y)f(the)h Fn(SPOOLES)g Fm(library)e(functions.)208 │ │ │ │ 649 y Fb(R)l(eturn)i(value:)38 b Fm(1)27 b(for)g(a)g(normal)g(return,)g │ │ │ │ (-1)g(if)h(a)f Fl(data)f Fm(is)h Fl(NULL)p Fm(.)0 942 │ │ │ │ y Fd(4.3)135 b(The)45 b Fc(testMPI)c Fd(Driv)l(er)46 │ │ │ │ b(Program)0 1145 y Fm(A)31 b(complete)f(listing)h(of)f(the)h(m)n │ │ │ │ @@ -8780,17 +8791,17 @@ │ │ │ │ b(*evec;)0 5073 y(int)304 b(error,)41 b(fstevl,)g(lfinit,)f(lstevl,)h │ │ │ │ (mxbksz,)g(msglvl,)f(ncol,)i(ndiscd,)436 5172 y(neig,)f(neigvl,)g │ │ │ │ (nfound,)g(nnonzeros,)e(nrhs,)j(nrow,)f(prbtyp,)g(rc,)436 │ │ │ │ 5272 y(retc,)g(rfinit,)g(seed,)h(warnng)f(;)0 5372 y(int)304 │ │ │ │ b(c__5)42 b(=)h(5,)g(output)e(=)i(6)g(;)1908 5656 y Fm(20)p │ │ │ │ eop end │ │ │ │ %%Page: 21 22 │ │ │ │ -TeXDict begin 21 21 bop 83 100 781 4 v 947 100 a Fn(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fm(21)0 │ │ │ │ +TeXDict begin 21 21 bop 83 100 760 4 v 926 100 a Fn(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fm(21)0 │ │ │ │ 390 y Fl(int)304 b(*lanczos_wksp;)0 490 y(InpMtx)172 │ │ │ │ b(*inpmtxA,)40 b(*inpmtxB)g(;)0 589 y(FILE)260 b(*msgFile,)40 │ │ │ │ b(*parmFile;)0 789 y(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---) │ │ │ │ o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (---)o(--)o(--)o(-*/)0 988 y(if)j(\()g(argc)f(!=)h(7)g(\))g({)131 │ │ │ │ 1088 y(fprintf\(stdout,)87 1187 y("\\n\\n)f(usage)f(:)i(\045s)g(msglvl) │ │ │ │ e(msgFile)g(parmFile)f(seed)i(inFileA)f(inFileB")87 1287 │ │ │ │ @@ -8826,17 +8837,17 @@ │ │ │ │ b(in)g(the)h(Harwell-Boeing)38 b(matrix)j(information)131 │ │ │ │ 5073 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (--)o(---)o(--)o(---)0 5172 y(*/)0 5272 y(if)i(\()g(strcmp\(inFileNam)o │ │ │ │ (e_)o(A,)37 b("none"\))k(==)i(0)g(\))g({)131 5372 y(fprintf\(msgFile,) │ │ │ │ 37 b("\\n)42 b(no)h(file)f(to)h(read)e(from"\))h(;)p │ │ │ │ eop end │ │ │ │ %%Page: 22 23 │ │ │ │ -TeXDict begin 22 22 bop 83 100 781 4 v 947 100 a Fn(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fm(22)131 │ │ │ │ +TeXDict begin 22 22 bop 83 100 760 4 v 926 100 a Fn(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fm(22)131 │ │ │ │ 390 y Fl(exit\(0\))40 b(;)0 490 y(})0 589 y(MARKTIME\(t1\))f(;)0 │ │ │ │ 689 y(readHB_info)g(\(inFileName_A,)f(&nrow,)j(&ncol,)g(&nnonzeros,)e │ │ │ │ (&type,)i(&nrhs\))g(;)0 789 y(MARKTIME\(t2\))e(;)0 888 │ │ │ │ y(fprintf\(msgFile,)e("\\n)42 b(CPU)h(\0458.3f)e(:)i(read)f(in)h │ │ │ │ (header)e(information)e(for)k(A",)349 988 y(t2)f(-)i(t1\))e(;)0 │ │ │ │ 1088 y(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o │ │ │ │ (--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ @@ -8880,17 +8891,17 @@ │ │ │ │ 4774 y(fprintf\(msgFile,)e("\\n)42 b(CPU)h(\0458.3f)e(:)i(read)f(in)h │ │ │ │ (eigenvalue)c(problem)i(data",)349 4873 y(t2)h(-)i(t1\))e(;)0 │ │ │ │ 4973 y(/*)131 5073 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (---)o(--)o(--)o(---)131 5172 y(check)f(and)i(set)f(the)g(problem)f │ │ │ │ (type)h(parameter)131 5272 y(----------------)o(--)o(--)o(---)o(--)o │ │ │ │ (---)o(--)o(---)o(--)o(--)o(---)0 5372 y(*/)p eop end │ │ │ │ %%Page: 23 24 │ │ │ │ -TeXDict begin 23 23 bop 83 100 781 4 v 947 100 a Fn(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fm(23)0 │ │ │ │ +TeXDict begin 23 23 bop 83 100 760 4 v 926 100 a Fn(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fm(23)0 │ │ │ │ 390 y Fl(switch)41 b(\()i(pbtype[1])d(\))j({)0 490 y(case)f('v')g(:)h │ │ │ │ (case)f('V')h(:)g(prbtyp)e(=)i(1)g(;)h(break)d(;)0 589 │ │ │ │ y(case)h('b')g(:)h(case)f('B')h(:)g(prbtyp)e(=)i(2)g(;)h(break)d(;)0 │ │ │ │ 689 y(case)h('o')g(:)h(case)f('O')h(:)g(prbtyp)e(=)i(3)g(;)h(break)d(;) │ │ │ │ 0 789 y(default)g(:)131 888 y(fprintf\(stderr,)c("\\n)42 │ │ │ │ b(invalid)f(problem)g(type)h(\045s",)g(pbtype\))e(;)131 │ │ │ │ 988 y(exit\(-1\))g(;)0 1088 y(})0 1187 y(/*)131 1287 │ │ │ │ @@ -8930,17 +8941,17 @@ │ │ │ │ b(CPU)h(\0458.3f)e(:)i(read)f(in)h(A",)f(t2)h(-)g(t1\))g(;)0 │ │ │ │ 5073 y(if)g(\()g(msglvl)e(>)i(2)g(\))h({)131 5172 y(fprintf\(msgFile,) │ │ │ │ 37 b("\\n\\n)k(InpMtx)g(A)j(object)d(after)g(loading"\))f(;)131 │ │ │ │ 5272 y(InpMtx_writeForH)o(um)o(an)o(Eye)o(\(i)o(npm)o(tx)o(A,)d │ │ │ │ (msgFile\))j(;)131 5372 y(fflush\(msgFile\))d(;)p eop │ │ │ │ end │ │ │ │ %%Page: 24 25 │ │ │ │ -TeXDict begin 24 24 bop 83 100 781 4 v 947 100 a Fn(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fm(24)0 │ │ │ │ +TeXDict begin 24 24 bop 83 100 760 4 v 926 100 a Fn(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fm(24)0 │ │ │ │ 390 y Fl(})0 490 y(MARKTIME\(t1\))39 b(;)0 589 y(lanczos_set_parm)o(\() │ │ │ │ f(&lanczos_wksp,)f("matrix-type",)h(&c__1,)j(&retc)h(\);)0 │ │ │ │ 689 y(MARKTIME\(t2\))d(;)0 789 y(fprintf\(msgFile,)e("\\n)42 │ │ │ │ b(CPU)h(\0458.3f)e(:)i(set)g(A's)f(parameters",)d(t2)j(-)i(t1\))e(;)0 │ │ │ │ 888 y(if)h(\()g(prbtyp)e(!=)i(3)g(\))g({)131 988 y(if)g(\()g │ │ │ │ (strcmp\(inFileNa)o(me_)o(B,)37 b("none"\))k(==)h(0)i(\))f({)262 │ │ │ │ 1088 y(fprintf\(msgFile)o(,)37 b("\\n)43 b(no)g(file)f(to)g(read)g │ │ │ │ @@ -8977,17 +8988,17 @@ │ │ │ │ 4873 y(nfound)g(--)i(#)g(of)g(eigenvalues)c(found)i(and)h(kept)131 │ │ │ │ 4973 y(ndisc)85 b(--)43 b(#)g(of)g(additional)c(eigenvalues)g │ │ │ │ (discarded)131 5073 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--) │ │ │ │ o(---)o(--)o(--)o(---)o(--)o(---)o(--)0 5172 y(*/)0 5272 │ │ │ │ y(MARKTIME\(t1\))g(;)0 5372 y(lanczos_run\(&nei)o(gvl)o(,)e(&which[1])j │ │ │ │ (,)j(&pbtype[1],)c(&lfinit,)i(&lftend,)p eop end │ │ │ │ %%Page: 25 26 │ │ │ │ -TeXDict begin 25 25 bop 83 100 781 4 v 947 100 a Fn(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fm(25)218 │ │ │ │ +TeXDict begin 25 25 bop 83 100 760 4 v 926 100 a Fn(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fm(25)218 │ │ │ │ 390 y Fl(&rfinit,)40 b(&rhtend,)g(¢er,)h(&lanczos_wksp,)d(&bridge,) │ │ │ │ i(&nfound,)218 490 y(&ndiscd,)g(&warnng,)g(&error,)h(Factor,)g(MatMul,) │ │ │ │ g(Solve)g(\))i(;)0 589 y(MARKTIME\(t2\))c(;)0 689 y(fprintf\(msgFile,)e │ │ │ │ ("\\n)42 b(CPU)h(\0458.3f)e(:)i(time)f(for)h(lanczos)d(run",)i(t2)h(-)g │ │ │ │ (t1\))f(;)0 789 y(/*)131 888 y(----------------)o(--)o(--)o(---)o(--) │ │ │ │ 131 988 y(get)g(eigenvalues)d(and)j(print)131 1088 y(----------------)o │ │ │ │ (--)o(--)o(---)o(--)0 1187 y(*/)0 1287 y(MARKTIME\(t1\))d(;)0 │ │ │ │ @@ -9019,17 +9030,17 @@ │ │ │ │ 4674 y(*/)0 4774 y(MARKTIME\(t1\))e(;)0 4873 y(lanczos_free\()f │ │ │ │ (&lanczos_wksp)g(\))44 b(;)0 4973 y(MARKTIME\(t2\))39 │ │ │ │ b(;)0 5073 y(fprintf\(msgFile,)e("\\n)42 b(CPU)h(\0458.3f)e(:)i(free)f │ │ │ │ (lanczos)f(workspace)f(",)j(t2)f(-)i(t1\))e(;)0 5172 │ │ │ │ y(MARKTIME\(t1\))d(;)0 5272 y(rc)k(=)g(Cleanup\(&bridge\))37 │ │ │ │ b(;)0 5372 y(MARKTIME\(t2\))i(;)p eop end │ │ │ │ %%Page: 26 27 │ │ │ │ -TeXDict begin 26 26 bop 83 100 781 4 v 947 100 a Fn(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fm(26)0 │ │ │ │ +TeXDict begin 26 26 bop 83 100 760 4 v 926 100 a Fn(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fm(26)0 │ │ │ │ 390 y Fl(fprintf\(msgFile,)37 b("\\n)42 b(CPU)h(\0458.3f)e(:)i(free)f │ │ │ │ (solver)f(workspace)f(",)j(t2)g(-)g(t1\))f(;)0 490 y(if)h(\()g(rc)g(!=) │ │ │ │ f(1)i(\))f({)131 589 y(fprintf\(stderr,)37 b("\\n)42 │ │ │ │ b(error)g(return)f(\045d)i(from)f(Cleanup\(\)",)d(rc\))j(;)131 │ │ │ │ 689 y(exit\(-1\))e(;)0 789 y(})0 888 y(fprintf\(msgFile,)d("\\n"\))k(;) │ │ │ │ 0 988 y(fclose\(msgFile\))c(;)0 1187 y(return)k(;)i(})p │ │ │ │ eop end │ │ │ │ @@ -9062,17 +9073,17 @@ │ │ │ │ 4973 y(int)304 b(error,)41 b(fstevl,)g(lfinit,)f(lstevl,)h(msglvl,)g │ │ │ │ (mxbksz,)f(ncol,)i(ndiscd,)436 5073 y(neig,)f(neigvl,)g(nfound,)g │ │ │ │ (nnonzeros,)e(nrhs,)j(nrow,)f(nthreads,)436 5172 y(prbtyp,)g(rc,)h │ │ │ │ (retc,)f(rfinit,)g(seed,)h(warnng)f(;)0 5272 y(int)304 │ │ │ │ b(c__5)42 b(=)h(5,)g(output)e(=)i(6)g(;)0 5372 y(int)304 │ │ │ │ b(*lanczos_wksp;)1908 5656 y Fm(27)p eop end │ │ │ │ %%Page: 28 29 │ │ │ │ -TeXDict begin 28 28 bop 83 100 781 4 v 947 100 a Fn(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fm(28)0 │ │ │ │ +TeXDict begin 28 28 bop 83 100 760 4 v 926 100 a Fn(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fm(28)0 │ │ │ │ 390 y Fl(InpMtx)172 b(*inpmtxA,)40 b(*inpmtxB)g(;)0 490 │ │ │ │ y(FILE)260 b(*msgFile,)40 b(*parmFile)g(;)0 589 y(/*--------------)o │ │ │ │ (---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o │ │ │ │ (--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(-*/)0 │ │ │ │ 689 y(if)j(\()g(argc)f(!=)h(8)g(\))g({)131 789 y(fprintf\(stdout,)0 │ │ │ │ 888 y("\\n\\n)f(usage)f(:)i(\045s)g(msglvl)e(msgFile)g(parmFile)f(seed) │ │ │ │ i(nthread)f(inFileA)f(inFileB")0 988 y("\\n)173 b(msglvl)128 │ │ │ │ @@ -9112,17 +9123,17 @@ │ │ │ │ (Harwell-Boeing)38 b(matrix)j(information)131 4973 y(----------------)o │ │ │ │ (--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)0 │ │ │ │ 5073 y(*/)0 5172 y(if)i(\()g(strcmp\(inFileNam)o(e_)o(A,)37 │ │ │ │ b("none"\))k(==)i(0)g(\))g({)131 5272 y(fprintf\(msgFile,)37 │ │ │ │ b("\\n)42 b(no)h(file)f(to)h(read)e(from"\))h(;)131 5372 │ │ │ │ y(exit\(0\))e(;)p eop end │ │ │ │ %%Page: 29 30 │ │ │ │ -TeXDict begin 29 29 bop 83 100 781 4 v 947 100 a Fn(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fm(29)0 │ │ │ │ +TeXDict begin 29 29 bop 83 100 760 4 v 926 100 a Fn(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fm(29)0 │ │ │ │ 390 y Fl(})0 490 y(MARKTIME\(t1\))39 b(;)0 589 y(readHB_info)g │ │ │ │ (\(inFileName_A,)f(&nrow,)j(&ncol,)g(&nnonzeros,)e(&type,)i(&nrhs\))g │ │ │ │ (;)0 689 y(MARKTIME\(t2\))e(;)0 789 y(fprintf\(msgFile,)e("\\n)42 │ │ │ │ b(CPU)h(\0458.3f)e(:)i(read)f(in)h(harwell-boeing)38 │ │ │ │ b(header)j(info",)349 888 y(t2)h(-)i(t1\))e(;)0 988 y │ │ │ │ (fflush\(msgFile\))37 b(;)0 1088 y(/*--------------)o(---)o(--)o(--)o │ │ │ │ (---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o │ │ │ │ @@ -9168,17 +9179,17 @@ │ │ │ │ (eigenvalue)c(problem)i(data",)349 4873 y(t2)h(-)i(t1\))e(;)0 │ │ │ │ 4973 y(fflush\(msgFile\))37 b(;)0 5073 y(/*)131 5172 │ │ │ │ y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o │ │ │ │ (---)131 5272 y(check)k(and)i(set)f(the)g(problem)f(type)h(parameter) │ │ │ │ 131 5372 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--) │ │ │ │ o(--)o(---)p eop end │ │ │ │ %%Page: 30 31 │ │ │ │ -TeXDict begin 30 30 bop 83 100 781 4 v 947 100 a Fn(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fm(30)0 │ │ │ │ +TeXDict begin 30 30 bop 83 100 760 4 v 926 100 a Fn(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fm(30)0 │ │ │ │ 390 y Fl(*/)0 490 y(switch)41 b(\()i(pbtype[1])d(\))j({)0 │ │ │ │ 589 y(case)f('v')g(:)0 689 y(case)g('V')g(:)131 789 y(prbtyp)f(=)i(1)g │ │ │ │ (;)131 888 y(break)e(;)0 988 y(case)h('b')g(:)0 1088 │ │ │ │ y(case)g('B')g(:)131 1187 y(prbtyp)f(=)i(2)g(;)131 1287 │ │ │ │ y(break)e(;)0 1386 y(case)h('o')g(:)0 1486 y(case)g('O')g(:)131 │ │ │ │ 1586 y(prbtyp)f(=)i(3)g(;)131 1685 y(break)e(;)0 1785 │ │ │ │ y(default)g(:)131 1885 y(fprintf\(stderr,)c("\\n)42 b(invalid)f │ │ │ │ @@ -9211,17 +9222,17 @@ │ │ │ │ (--)o(-*/)0 4873 y(/*)131 4973 y(----------------)o(--)o(--)o(---)o(--) │ │ │ │ o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)131 5073 │ │ │ │ y(create)f(the)h(InpMtx)f(objects)g(for)h(matrix)f(A)j(and)e(B)131 │ │ │ │ 5172 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (--)o(---)o(--)o(---)0 5272 y(*/)0 5372 y(if)h(\()g(strcmp\(inFileNam)o │ │ │ │ (e_)o(A,)37 b("none"\))k(==)i(0)g(\))g({)p eop end │ │ │ │ %%Page: 31 32 │ │ │ │ -TeXDict begin 31 31 bop 83 100 781 4 v 947 100 a Fn(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fm(31)131 │ │ │ │ +TeXDict begin 31 31 bop 83 100 760 4 v 926 100 a Fn(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fm(31)131 │ │ │ │ 390 y Fl(fprintf\(msgFile,)37 b("\\n)42 b(no)h(file)f(to)h(read)e(A)j │ │ │ │ (from"\))d(;)131 490 y(exit\(-1\))f(;)0 589 y(})0 689 │ │ │ │ y(MARKTIME\(t1\))f(;)0 789 y(inpmtxA)i(=)i(InpMtx_new\(\))38 │ │ │ │ b(;)0 888 y(InpMtx_readFromH)o(Bfi)o(le)f(\()43 b(inpmtxA,)d │ │ │ │ (inFileName_A)f(\))k(;)0 988 y(MARKTIME\(t2\))c(;)0 1088 │ │ │ │ y(fprintf\(msgFile,)e("\\n)42 b(CPU)h(\0458.3f)e(:)i(read)f(in)h(A",)f │ │ │ │ (t2)h(-)g(t1\))g(;)0 1187 y(fflush\(msgFile\))37 b(;)0 │ │ │ │ @@ -9257,17 +9268,17 @@ │ │ │ │ b(CPU)h(\0458.3f)e(:)i(set)g(up)f(the)h(solver)e(environment",)349 │ │ │ │ 4873 y(t2)h(-)i(t1\))e(;)0 4973 y(fflush\(msgFile\))37 │ │ │ │ b(;)0 5073 y(if)43 b(\()g(rc)g(!=)f(1)i(\))f({)131 5172 │ │ │ │ y(fprintf\(stderr,)37 b("\\n)42 b(error)g(return)f(\045d)i(from)f │ │ │ │ (SetupMT\(\)",)d(rc\))j(;)131 5272 y(exit\(-1\))e(;)0 │ │ │ │ 5372 y(})p eop end │ │ │ │ %%Page: 32 33 │ │ │ │ -TeXDict begin 32 32 bop 83 100 781 4 v 947 100 a Fn(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fm(32)0 │ │ │ │ +TeXDict begin 32 32 bop 83 100 760 4 v 926 100 a Fn(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fm(32)0 │ │ │ │ 390 y Fl(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o │ │ │ │ (--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (--)o(-*/)0 490 y(/*)131 589 y(----------------)o(--)o(--)o(---)o(--)o │ │ │ │ (---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)131 689 │ │ │ │ y(invoke)41 b(eigensolver)131 789 y(nfound)g(--)i(#)g(of)g(eigenvalues) │ │ │ │ c(found)i(and)h(kept)131 888 y(ndisc)85 b(--)43 b(#)g(of)g(additional)c │ │ │ │ (eigenvalues)g(discarded)131 988 y(----------------)o(--)o(--)o(---)o │ │ │ │ @@ -9303,17 +9314,17 @@ │ │ │ │ 131 4774 y(hdslp5_)d(\()k("computed)39 b(eigenvector)h(returned)g(by)j │ │ │ │ (hdserc",)567 4873 y(&neig,)e(evec,)g(&output,)g(39L)h(\))h(;)0 │ │ │ │ 4973 y(})0 5073 y(MARKTIME\(t2\))c(;)0 5172 y(fprintf\(msgFile,)e("\\n) │ │ │ │ 42 b(CPU)h(\0458.3f)e(:)i(get)g(and)f(print)g(eigenvectors",)37 │ │ │ │ b(t2)43 b(-)g(t1\))g(;)0 5272 y(fflush\(msgFile\))37 │ │ │ │ b(;)0 5372 y(*/)p eop end │ │ │ │ %%Page: 33 34 │ │ │ │ -TeXDict begin 33 33 bop 83 100 781 4 v 947 100 a Fn(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fm(33)0 │ │ │ │ +TeXDict begin 33 33 bop 83 100 760 4 v 926 100 a Fn(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fm(33)0 │ │ │ │ 390 y Fl(/*)131 490 y(----------------)o(--)o(--)o(---)o(-)131 │ │ │ │ 589 y(free)42 b(the)g(working)f(storage)131 689 y(----------------)o │ │ │ │ (--)o(--)o(---)o(-)0 789 y(*/)0 888 y(MARKTIME\(t1\))e(;)0 │ │ │ │ 988 y(lanczos_free\()f(&lanczos_wksp)g(\))44 b(;)0 1088 │ │ │ │ y(MARKTIME\(t2\))39 b(;)0 1187 y(fprintf\(msgFile,)e("\\n)42 │ │ │ │ b(CPU)h(\0458.3f)e(:)i(free)f(lanczos)f(workspace",)e(t2)k(-)g(t1\))f │ │ │ │ (;)0 1287 y(fflush\(msgFile\))37 b(;)0 1386 y(MARKTIME\(t1\))i(;)0 │ │ │ │ @@ -9353,17 +9364,17 @@ │ │ │ │ b(*inpmtxA,)40 b(*inpmtxB)g(;)0 5009 y(FILE)260 b(*msgFile,)40 │ │ │ │ b(*parmFile)g(;)0 5108 y(double)172 b(lftend,)41 b(rhtend,)f(center,)h │ │ │ │ (shfscl,)g(t1,)h(t2)h(;)0 5208 y(double)172 b(c__1)42 │ │ │ │ b(=)h(1.0,)f(c__4)g(=)h(4.0,)f(tolact)f(=)i(2.309970868130169)o(e-)o │ │ │ │ (11)37 b(;)0 5308 y(double)172 b(eigval[1000],)38 b(sigma[2])i(;)0 │ │ │ │ 5407 y(double)172 b(*evec;)1908 5656 y Fm(34)p eop end │ │ │ │ %%Page: 35 36 │ │ │ │ -TeXDict begin 35 35 bop 83 100 781 4 v 947 100 a Fn(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fm(35)0 │ │ │ │ +TeXDict begin 35 35 bop 83 100 760 4 v 926 100 a Fn(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fm(35)0 │ │ │ │ 390 y Fl(/*)131 490 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--) │ │ │ │ o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---) │ │ │ │ o(-)131 589 y(find)42 b(out)g(the)g(identity)f(of)h(this)g(process)f │ │ │ │ (and)h(the)h(number)e(of)i(process)131 689 y(----------------)o(--)o │ │ │ │ (--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o │ │ │ │ (---)o(--)o(---)o(--)o(---)o(-)0 789 y(*/)0 888 y(MPI_Init\(&argc,)37 │ │ │ │ b(&argv\))k(;)0 988 y(MPI_Comm_dup\(MPI)o(_CO)o(MM)o(_W)o(ORL)o(D,)c │ │ │ │ @@ -9401,17 +9412,17 @@ │ │ │ │ 4375 y(argv[0],)e(buffer\))h(;)262 4475 y(return)g(;)131 │ │ │ │ 4575 y(})131 4674 y(CVfree\(buffer\))d(;)0 4774 y(})0 │ │ │ │ 4873 y(parmFileName)h(=)k(argv[3])d(;)0 4973 y(seed)391 │ │ │ │ b(=)43 b(atoi\(argv[4]\))38 b(;)0 5073 y(inFileName_A)h(=)k(argv[5])d │ │ │ │ (;)0 5172 y(inFileName_B)f(=)k(argv[6])d(;)0 5272 y(fprintf\(msgFile,) │ │ │ │ 349 5372 y("\\n)i(\045s)h(")p eop end │ │ │ │ %%Page: 36 37 │ │ │ │ -TeXDict begin 36 36 bop 83 100 781 4 v 947 100 a Fn(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fm(36)349 │ │ │ │ +TeXDict begin 36 36 bop 83 100 760 4 v 926 100 a Fn(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fm(36)349 │ │ │ │ 390 y Fl("\\n)42 b(msglvl)695 b(--)43 b(\045d")349 490 │ │ │ │ y("\\n)f(message)f(file)434 b(--)43 b(\045s")349 589 │ │ │ │ y("\\n)f(parameter)e(file)347 b(--)43 b(\045s")349 689 │ │ │ │ y("\\n)f(stiffness)e(matrix)h(file)h(--)h(\045s")349 │ │ │ │ 789 y("\\n)f(mass)g(matrix)f(file)260 b(--)43 b(\045s")349 │ │ │ │ 888 y("\\n)f(random)f(number)g(seed)173 b(--)43 b(\045d")349 │ │ │ │ 988 y("\\n",)349 1088 y(argv[0],)d(msglvl,)h(argv[2],)f(parmFileName,)e │ │ │ │ @@ -9454,17 +9465,17 @@ │ │ │ │ 4973 y('o')i(or)h('O')f(ordinary)f(symmetric)f(eigenproblem)131 │ │ │ │ 5073 y(lfinit)h(--)i(if)f(true,)g(lftend)f(is)i(restriction)c(on)k │ │ │ │ (lower)e(bound)h(of)567 5172 y(eigenvalues.)c(if)43 b(false,)e(no)i │ │ │ │ (restriction)c(on)k(lower)e(bound)131 5272 y(lftend)g(--)i(left)f │ │ │ │ (endpoint)e(of)j(interval)131 5372 y(rfinit)e(--)i(if)f(true,)g(rhtend) │ │ │ │ f(is)i(restriction)c(on)k(upper)e(bound)h(of)p eop end │ │ │ │ %%Page: 37 38 │ │ │ │ -TeXDict begin 37 37 bop 83 100 781 4 v 947 100 a Fn(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fm(37)567 │ │ │ │ +TeXDict begin 37 37 bop 83 100 760 4 v 926 100 a Fn(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fm(37)567 │ │ │ │ 390 y Fl(eigenvalues.)82 b(if)43 b(false,)e(no)h(restriction)d(on)k │ │ │ │ (upper)f(bound)131 490 y(rhtend)f(--)i(right)e(endpoint)f(of)j │ │ │ │ (interval)131 589 y(center)e(--)i(center)e(of)h(interval)131 │ │ │ │ 689 y(mxbksz)f(--)i(upper)e(bound)h(on)g(block)g(size)g(for)g(Lanczos)f │ │ │ │ (recurrence)131 789 y(shfscl)g(--)i(shift)e(scaling)g(parameter,)e(an)k │ │ │ │ (estimate)d(on)j(the)f(magnitude)567 888 y(of)g(the)h(smallest)d │ │ │ │ (nonzero)h(eigenvalues)131 988 y(----------------)o(--)o(--)o(---)o(--) │ │ │ │ @@ -9502,17 +9513,17 @@ │ │ │ │ 4973 y(*/)0 5073 y(MARKTIME\(t1\))h(;)0 5172 y(lanczos_set_parm)o(\()f │ │ │ │ (&lanczos_wksp,)f("order-of-problem)o(",)g(&nrow,)k(&retc)h(\);)0 │ │ │ │ 5272 y(lanczos_set_parm)o(\()c(&lanczos_wksp,)f("accuracy-toleran)o(ce) │ │ │ │ o(",)g(&tolact,)k(&retc)g(\);)0 5372 y(lanczos_set_parm)o(\()d │ │ │ │ (&lanczos_wksp,)f("max-block-size",)g(&mxbksz,)j(&retc)i(\);)p │ │ │ │ eop end │ │ │ │ %%Page: 38 39 │ │ │ │ -TeXDict begin 38 38 bop 83 100 781 4 v 947 100 a Fn(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fm(38)0 │ │ │ │ +TeXDict begin 38 38 bop 83 100 760 4 v 926 100 a Fn(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fm(38)0 │ │ │ │ 390 y Fl(lanczos_set_parm)o(\()38 b(&lanczos_wksp,)f("shift-scale",)h │ │ │ │ (&shfscl,)i(&retc)i(\);)0 490 y(lanczos_set_parm)o(\()c(&lanczos_wksp,) │ │ │ │ f("message_level",)g(&msglvl,)k(&retc)g(\);)0 589 y(lanczos_set_parm)o │ │ │ │ (\()d(&lanczos_wksp,)f("mpi-communicator)o(",)g(&comm,)k(&retc)h(\);)0 │ │ │ │ 689 y(lanczos_set_parm)o(\()c(&lanczos_wksp,)f("qfile-pathname",)g │ │ │ │ ("lqfil",)j(&retc)i(\);)0 789 y(lanczos_set_parm)o(\()c(&lanczos_wksp,) │ │ │ │ f("mqfil-pathname",)g("lmqfil",)j(&retc)h(\);)0 888 y(lanczos_set_parm) │ │ │ │ @@ -9553,17 +9564,17 @@ │ │ │ │ y(InpMtx_writeForHu)o(ma)o(nEy)o(e\()o(inp)o(mt)o(xB)o(,)e(msgFile\))i │ │ │ │ (;)392 4774 y(fflush\(msgFile\))e(;)262 4873 y(})131 │ │ │ │ 4973 y(})43 b(else)f({)262 5073 y(inpmtxB)e(=)j(NULL)f(;)262 │ │ │ │ 5172 y(lanczos_set_par)o(m\()37 b(&lanczos_wksp,)h("matrix-type",)g │ │ │ │ (&c__4,)j(&retc)g(\);)131 5272 y(})0 5372 y(})i(else)f({)p │ │ │ │ eop end │ │ │ │ %%Page: 39 40 │ │ │ │ -TeXDict begin 39 39 bop 83 100 781 4 v 947 100 a Fn(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fm(39)0 │ │ │ │ +TeXDict begin 39 39 bop 83 100 760 4 v 926 100 a Fn(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fm(39)0 │ │ │ │ 390 y Fl(/*)131 490 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--) │ │ │ │ o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(-)131 589 y(other)41 │ │ │ │ b(processors)f(initialize)f(their)j(local)f(matrices)131 │ │ │ │ 689 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--) │ │ │ │ o(---)o(--)o(---)o(--)o(-)0 789 y(*/)131 888 y(inpmtxA)f(=)k │ │ │ │ (InpMtx_new\(\))38 b(;)131 988 y(InpMtx_init\(inpm)o(tx)o(A,)f │ │ │ │ (INPMTX_BY_CHEVRO)o(NS,)g(SPOOLES_REAL,)h(0,)43 b(0\))g(;)131 │ │ │ │ @@ -9602,17 +9613,17 @@ │ │ │ │ 4774 y(JimSolveMPI)g(\))k(;)0 4873 y(MARKTIME\(t2\))c(;)0 │ │ │ │ 4973 y(fprintf\(msgFile,)e("\\n)42 b(CPU)h(\0458.3f)e(:)i(time)f(for)h │ │ │ │ (lanczos)d(run",)i(t2)h(-)g(t1\))f(;)0 5073 y(fflush\(msgFile\))37 │ │ │ │ b(;)0 5172 y(if)43 b(\()g(myid)f(==)h(0)g(\))g({)0 5272 │ │ │ │ y(/*)131 5372 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---) │ │ │ │ o(--)o(--)o(---)o(--)o(---)o(-)p eop end │ │ │ │ %%Page: 40 41 │ │ │ │ -TeXDict begin 40 40 bop 83 100 781 4 v 947 100 a Fn(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fm(40)131 │ │ │ │ +TeXDict begin 40 40 bop 83 100 760 4 v 926 100 a Fn(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fm(40)131 │ │ │ │ 390 y Fl(processor)40 b(0)j(deals)e(with)h(eigenvalues)d(and)k(vectors) │ │ │ │ 131 490 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (--)o(---)o(--)o(---)o(-)0 589 y(*/)131 689 y(MARKTIME\(t1\))38 │ │ │ │ b(;)131 789 y(neig)129 b(=)43 b(nfound)e(+)i(ndiscd)e(;)131 │ │ │ │ 888 y(lstevl)g(=)i(nfound)e(;)131 988 y(lanczos_eigenval)o(ue)o(s)c │ │ │ │ (\(&lanczos_wksp,)h(eigval,)j(&neig,)g(&retc\);)131 1088 │ │ │ │ y(fstevl)g(=)i(1)g(;)131 1187 y(if)g(\()g(nfound)e(==)i(0)g(\))g │ │ │ │ @@ -9642,17 +9653,17 @@ │ │ │ │ (ksp)o(\))e(;)0 4774 y(MARKTIME\(t2\))i(;)0 4873 y(fprintf\(msgFile,)e │ │ │ │ ("\\n)42 b(CPU)h(\0458.3f)e(:)i(free)f(lanczos)f(workspace",)e(t2)k(-)g │ │ │ │ (t1\))f(;)0 4973 y(fflush\(msgFile\))37 b(;)0 5073 y(MARKTIME\(t1\))i │ │ │ │ (;)0 5172 y(CleanupMPI\(&brid)o(ge\))e(;)0 5272 y(MARKTIME\(t2\))i(;)0 │ │ │ │ 5372 y(fprintf\(msgFile,)e("\\n)42 b(CPU)h(\0458.3f)e(:)i(free)f │ │ │ │ (solver)f(workspace",)e(t2)k(-)g(t1\))g(;)p eop end │ │ │ │ %%Page: 41 42 │ │ │ │ -TeXDict begin 41 41 bop 83 100 781 4 v 947 100 a Fn(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fm(41)0 │ │ │ │ +TeXDict begin 41 41 bop 83 100 760 4 v 926 100 a Fn(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fe(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fm(41)0 │ │ │ │ 390 y Fl(fflush\(msgFile\))37 b(;)0 589 y(MPI_Finalize\(\))h(;)0 │ │ │ │ 789 y(fprintf\(msgFile,)f("\\n"\))k(;)0 888 y(fclose\(msgFile\))c(;)0 │ │ │ │ 1088 y(return)k(;)i(})p eop end │ │ │ │ %%Page: 42 43 │ │ │ │ TeXDict begin 42 42 bop 0 866 a Fo(Index)0 1281 y Fl(Cleanup\(\))p │ │ │ │ Fm(,)24 b(7)0 1380 y Fl(CleanupMPI\(\))p Fm(,)f(19)0 │ │ │ │ 1480 y Fl(CleanupMT\(\))p Fm(,)g(12)0 1663 y Fl(Factor\(\))p │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -1,12 +1,12 @@ │ │ │ │ │ Integrating the SPOOLES 2.2 Sparse Linear Algebra Library │ │ │ │ │ into the LANCZOS Block-shifted Lanczos Eigensolver │ │ │ │ │ Cleve Ashcraft Jim Patterson │ │ │ │ │ Boeing Phantom Works1 Boeing Phantom Works2 │ │ │ │ │ - January 6, 2026 │ │ │ │ │ + January 10, 2026 │ │ │ │ │ 1P. O. Box 24346, Mail Stop 7L-22, Seattle, Washington 98124, cleve.ashcraft@boeing.com. This research │ │ │ │ │ was supported in part by the DARPA Contract DABT63-95-C-0122 and the DoD High Performance Computing │ │ │ │ │ Modernization Program Common HPC Software Support Initiative. │ │ │ │ │ 2P. O. Box 24346, Mail Stop 7L-22, Seattle, Washington 98124, pattersn@redwood.rt.cs.boeing.com. This re- │ │ │ │ │ search was supportedin part bytheDARPAContractDABT63-95-C-0122 andtheDoDHighPerformanceComputing │ │ │ │ │ Modernization Program Common HPC Software Support Initiative. │ │ │ │ │ Contents │ │ │ │ │ @@ -55,18 +55,18 @@ │ │ │ │ │ b b │ │ │ │ │ izations and solves involving A and B. This permutation matrix P is typically found by ordering the graph │ │ │ │ │ of A +B using a variant of minimum degree or nested dissection. The ordering is performed prior to any │ │ │ │ │ action by the eigensolver. This “setup phase” includes more than just finding the permutation matrix, e.g., │ │ │ │ │ various data structures must be initialized. In a parallel environment, there is even more setup work to do, │ │ │ │ │ analyzing the factorization and solves and specifying which threads or processors perform what computations │ │ │ │ │ 2 │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : January 6, 2026 3 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 3 │ │ │ │ │ and store what data. In a distributed environment, the entries of A and B must also be distributed among │ │ │ │ │ the processors in preparation for the factors and multiplies. │ │ │ │ │ - For each of the three environments — serial, multithreaded and MPI — the SPOOLES solver has │ │ │ │ │ + For each of the three environments — serial, multithreaded and MPI — the SPOOLES solver has │ │ │ │ │ constructed a “bridge” object to span the interface between the linear system solver and the eigensolver. │ │ │ │ │ Each of the Bridge, BridgeMT and BridgeMPI objects have five methods: set-up, factor, solve, matrix- │ │ │ │ │ multiply and cleanup. The factor, solve and matrix-multiply methods follow the calling sequence convention │ │ │ │ │ imposed by the eigensolver, and are passed to the eigensolver at the beginning of the Lanczos run. The │ │ │ │ │ set-up method is called prior to the eigensolver, and the cleanup method is called after the eigenvalues and │ │ │ │ │ eigenvectors have been determined. │ │ │ │ │ Chapter 2 │ │ │ │ │ @@ -91,55 +91,55 @@ │ │ │ │ │ and are used in the solves. │ │ │ │ │ • FrontMtx *frontmtx : object that stores the L, D and U factor matrices. │ │ │ │ │ • IV *oldToNewIV : object that stores old-to-new permutation vector. │ │ │ │ │ • IV *newToOldIV : object that stores new-to-old permutation vector. │ │ │ │ │ • DenseMtx *X : dense matrix object that is used during the matrix multiples and solves. │ │ │ │ │ • DenseMtx *Y : dense matrix object that is used during the matrix multiples and solves. │ │ │ │ │ 4 │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : January 6, 2026 5 │ │ │ │ │ - • int msglvl : message level for output. When 0, no output, When 1, just statistics and cpu times. │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 5 │ │ │ │ │ + • int msglvl : message level for output. When 0, no output, When 1, just statistics and cpu times. │ │ │ │ │ When greater than 1, more and more output. │ │ │ │ │ - • FILE *msgFile : message file for output. When msglvl > 0, msgFile must not be NULL. │ │ │ │ │ - 2.2 Prototypes and descriptions of Bridge methods │ │ │ │ │ + • FILE *msgFile : message file for output. When msglvl > 0, msgFile must not be NULL. │ │ │ │ │ + 2.2 Prototypes and descriptions of Bridge methods │ │ │ │ │ This section contains brief descriptions including prototypes of all methods that belong to the Bridge object. │ │ │ │ │ 1. int Setup ( void *data, int *pprbtype, int *pneqns, int *pmxbsz, │ │ │ │ │ - InpMtx *A, InpMtx *B, int *pseed, int *pmsglvl, FILE *msgFile ) ; │ │ │ │ │ + InpMtx *A, InpMtx *B, int *pseed, int *pmsglvl, FILE *msgFile ) ; │ │ │ │ │ All calling sequence parameters are pointers to more easily allow an interface with Fortran. │ │ │ │ │ - • void *data — a pointer to the Bridge object. │ │ │ │ │ - • int *pprbtype — *pprbtype holds the problem type. │ │ │ │ │ - – 1 — vibration, a multiply with B is required. │ │ │ │ │ - – 2 — buckling, a multiply with A is required. │ │ │ │ │ - – 3 — simple, no multiply is required. │ │ │ │ │ - • int *pneqns — *pneqns is the number of equations. │ │ │ │ │ - • int *pmxbsz — *pmxbsz is an upper bound on the block size. │ │ │ │ │ - • InpMtx *A — A is a SPOOLES object that holds the matrix A. │ │ │ │ │ - • InpMtx *B — B is a SPOOLES object that holds the matrix B. For an ordinary eigenproblem, │ │ │ │ │ - B is the identity and B is NULL. │ │ │ │ │ - • int *pseed — *pseed is a random number seed. │ │ │ │ │ - • int *pmsglvl—*pmsglvlisamessagelevelforthebridgemethodsandtheSPOOLESmethods │ │ │ │ │ - they call. │ │ │ │ │ - • FILE *pmsglvl— msgFileis the message file for the bridge methods and the SPOOLES meth- │ │ │ │ │ - ods they call. │ │ │ │ │ + • void *data — a pointer to the Bridge object. │ │ │ │ │ + • int *pprbtype — *pprbtype holds the problem type. │ │ │ │ │ + – 1 — vibration, a multiply with B is required. │ │ │ │ │ + – 2 — buckling, a multiply with A is required. │ │ │ │ │ + – 3 — simple, no multiply is required. │ │ │ │ │ + • int *pneqns — *pneqns is the number of equations. │ │ │ │ │ + • int *pmxbsz — *pmxbsz is an upper bound on the block size. │ │ │ │ │ + • InpMtx *A — A is a SPOOLES object that holds the matrix A. │ │ │ │ │ + • InpMtx *B — B is a SPOOLES object that holds the matrix B. For an ordinary eigenproblem, │ │ │ │ │ + B is the identity and B is NULL. │ │ │ │ │ + • int *pseed — *pseed is a random number seed. │ │ │ │ │ + • int *pmsglvl—*pmsglvlisamessagelevelforthebridgemethodsandtheSPOOLESmethods │ │ │ │ │ + they call. │ │ │ │ │ + • FILE *pmsglvl— msgFileis the message file for the bridge methods and the SPOOLES meth- │ │ │ │ │ + ods they call. │ │ │ │ │ This method must be called in the driver program prior to invoking the eigensolver via a call to │ │ │ │ │ lanczos run(). It then follows this sequence of action. │ │ │ │ │ - • Themethodbeginsbycheckingalltheinput data, andsetting the appropriatefields of the Bridge │ │ │ │ │ - object. │ │ │ │ │ - • The pencil object is initialized with A and B. │ │ │ │ │ - • A and B are converted to storage by rows and vector mode. │ │ │ │ │ - • A Graph object is created that contains the sparsity pattern of the union of A and B. │ │ │ │ │ - • The graph is ordered by first finding a recursive dissection partition, and then evaluating the │ │ │ │ │ - orderings produced by nested dissection and multisection, and choosing the better of the two. │ │ │ │ │ - The frontETree object is produced and placed into the bridge object. │ │ │ │ │ - • Old-to-new and new-to-old permutations are extracted from the front tree and loaded into the │ │ │ │ │ - Bridge object. │ │ │ │ │ - • The vertices in the front tree are permuted, as well as the entries in A and B. Entries in the lower │ │ │ │ │ - triangle of A and B are mapped into the upper triangle, and the storage modes of A and B are │ │ │ │ │ - changed to chevrons and vectors, in preparation for the first factorization. │ │ │ │ │ - • The symbolic factorization is then computed and loaded in the Bridge object. │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : January 6, 2026 6 │ │ │ │ │ + • Themethodbeginsbycheckingalltheinput data, andsetting the appropriatefields of the Bridge │ │ │ │ │ + object. │ │ │ │ │ + • The pencil object is initialized with A and B. │ │ │ │ │ + • A and B are converted to storage by rows and vector mode. │ │ │ │ │ + • A Graph object is created that contains the sparsity pattern of the union of A and B. │ │ │ │ │ + • The graph is ordered by first finding a recursive dissection partition, and then evaluating the │ │ │ │ │ + orderings produced by nested dissection and multisection, and choosing the better of the two. │ │ │ │ │ + The frontETree object is produced and placed into the bridge object. │ │ │ │ │ + • Old-to-new and new-to-old permutations are extracted from the front tree and loaded into the │ │ │ │ │ + Bridge object. │ │ │ │ │ + • The vertices in the front tree are permuted, as well as the entries in A and B. Entries in the lower │ │ │ │ │ + triangle of A and B are mapped into the upper triangle, and the storage modes of A and B are │ │ │ │ │ + changed to chevrons and vectors, in preparation for the first factorization. │ │ │ │ │ + • The symbolic factorization is then computed and loaded in the Bridge object. │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 6 │ │ │ │ │ • A FrontMtx object is created to hold the factorization and loaded into the Bridge object. │ │ │ │ │ • A SubMtxManager object is created to hold the factor’s submatrices and loaded into the Bridge │ │ │ │ │ object. │ │ │ │ │ • Two DenseMtx objects are created to be used during the matrix multiplies and solves. │ │ │ │ │ The A and B matrices are now in their permuted ordering, i.e., PAPT and PBPT, and all data struc- │ │ │ │ │ tures are with respect to this ordering. After the Lanczos run completes, any generated eigenvectors │ │ │ │ │ must be permuted back into their original ordering using the oldToNewIV and newToOldIV objects. │ │ │ │ │ @@ -173,15 +173,15 @@ │ │ │ │ │ • double X[] — this is the X matrix, stored column major with leading dimension *pnrows. │ │ │ │ │ • double Y[] — this is the Y matrix, stored column major with leading dimension *pnrows. │ │ │ │ │ • int *pprbtype — *pprbtype holds the problem type. │ │ │ │ │ – 1 — vibration, a multiply with B is required. │ │ │ │ │ – 2 — buckling, a multiply with A is required. │ │ │ │ │ – 3 — simple, no multiply is required. │ │ │ │ │ • void *data — a pointer to the Bridge object. │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : January 6, 2026 7 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 7 │ │ │ │ │ 4. void Solve ( int *pnrows, int *pncols, double X[], double Y[], │ │ │ │ │ void *data, int *perror ) ; │ │ │ │ │ This method solves (A−σB)X = Y, where (A−σB) has been factored by a previous call to Factor(). │ │ │ │ │ All calling sequence parameters are pointers to more easily allow an interface with Fortran. │ │ │ │ │ • int *pnrows — *pnrows contains the number of rows in X and Y. │ │ │ │ │ • int *pncols — *pncols contains the number of columns in X and Y. │ │ │ │ │ • double X[] — this is the X matrix, stored column major with leading dimension *pnrows. │ │ │ │ │ @@ -207,15 +207,15 @@ │ │ │ │ │ • inFileB is the Harwell-Boeing file for the matrix B. │ │ │ │ │ This program is executed for some sample matrices by the do ST * shell scripts in the drivers directory. │ │ │ │ │ Here is a short description of the steps in the driver program. See Chapter A for the listing. │ │ │ │ │ 1. The command line inputs are decoded. │ │ │ │ │ 2. The header of the Harwell-Boeing file for A is read. This yields the number of equations. │ │ │ │ │ 3. The parameters that define the eigensystem to be solved are read in from the parmFile file. │ │ │ │ │ 4. The Lanczos eigensolver workspace is initialized. │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : January 6, 2026 8 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 8 │ │ │ │ │ 5. The Lanczos communication structure is filled with some parameters. │ │ │ │ │ 6. The A and possibly B matrices are read in from the Harwell-Boeing files and converted into InpMtx │ │ │ │ │ objects from the SPOOLES library. │ │ │ │ │ 7. The linear solver environment is then initialized via a call to Setup(). │ │ │ │ │ 8. The eigensolver is invoked via a call to lanczos run(). The FactorMT(), SolveMT() and MatMulMT() │ │ │ │ │ methods are passed to this routine. │ │ │ │ │ 9. The eigenvalues are extracted and printed via a call to lanczos eigenvalues(). │ │ │ │ │ @@ -243,15 +243,15 @@ │ │ │ │ │ where it is contained. │ │ │ │ │ • IVL *symbfacIVL : object that contains the symbolic factorization of the matrix. │ │ │ │ │ • SubMtxManager *mtxmanager : object that manages the SubMtx objects that store the factor entries │ │ │ │ │ and are used in the solves. │ │ │ │ │ • FrontMtx *frontmtx : object that stores the L, D and U factor matrices. │ │ │ │ │ • IV *oldToNewIV : object that stores old-to-new permutation vector. │ │ │ │ │ 9 │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 10 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 10 │ │ │ │ │ • IV *newToOldIV : object that stores new-to-old permutation vector. │ │ │ │ │ • DenseMtx *X : dense matrix object that is used during the matrix multiples and solves. │ │ │ │ │ • DenseMtx *Y : dense matrix object that is used during the matrix multiples and solves. │ │ │ │ │ • IV *ownersIV : object that maps fronts to owning threads for the factorization and matrix-multiplies. │ │ │ │ │ • SolveMap *solvemap : object that maps factor submatrices to owning threads for the solve. │ │ │ │ │ • int msglvl : message level for output. When 0, no output, When 1, just statistics and cpu times. │ │ │ │ │ When greater than 1, more and more output. │ │ │ │ │ @@ -281,15 +281,15 @@ │ │ │ │ │ • FILE *pmsglvl— msgFileis the message file for the bridge methods and the SPOOLES meth- │ │ │ │ │ ods they call. │ │ │ │ │ This method must be called in the driver program prior to invoking the eigensolver via a call to │ │ │ │ │ lanczos run(). It then follows this sequence of action. │ │ │ │ │ • The method begins by checking all the input data, and setting the appropriate fields of the │ │ │ │ │ BridgeMT object. │ │ │ │ │ • The pencil object is initialized with A and B. │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 11 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 11 │ │ │ │ │ • A and B are converted to storage by rows and vector mode. │ │ │ │ │ • A Graph object is created that contains the sparsity pattern of the union of A and B. │ │ │ │ │ • The graph is ordered by first finding a recursive dissection partition, and then evaluating the │ │ │ │ │ orderings produced by nested dissection and multisection, and choosing the better of the two. │ │ │ │ │ The frontETree object is produced and placed into the bridge object. │ │ │ │ │ • Old-to-new and new-to-old permutations are extracted from the front tree and loaded into the │ │ │ │ │ BridgeMT object. │ │ │ │ │ @@ -326,15 +326,15 @@ │ │ │ │ │ by 1/(∗ppvttol). │ │ │ │ │ • void *data — a pointer to the BridgeMT object. │ │ │ │ │ • int *pinertia — on return, *pinertia holds the number of negative eigenvalues. │ │ │ │ │ • int *perror — on return, *perror holds an error code. │ │ │ │ │ 1 error in the factorization -2 ppvttol is NULL │ │ │ │ │ 0 normal return -3 data is NULL │ │ │ │ │ -1 psigma is NULL -4 pinertia is NULL │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 12 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 12 │ │ │ │ │ 3. void MatMulMT ( int *pnrows, int *pncols, double X[], double Y[], │ │ │ │ │ int *pprbtype, void *data ) ; │ │ │ │ │ This method computes a multiply of the form Y = IX, Y = AX or Y = BX. All calling sequence │ │ │ │ │ parameters are pointers to more easily allow an interface with Fortran. │ │ │ │ │ • int *pnrows — *pnrows contains the number of rows in X and Y. │ │ │ │ │ • int *pncols — *pncols contains the number of columns in X and Y. │ │ │ │ │ • double X[] — this is the X matrix, stored column major with leading dimension *pnrows. │ │ │ │ │ @@ -363,15 +363,15 @@ │ │ │ │ │ 3.3 The testMT Driver Program │ │ │ │ │ A complete listing of the multithreaded driver program is found in chapter B. The program is invoked by │ │ │ │ │ this command sequence. │ │ │ │ │ testMT msglvl msgFile parmFile seed nthread inFileA inFileB │ │ │ │ │ where │ │ │ │ │ • msglvl is the message level for the BridgeMT methods and the SPOOLES software. │ │ │ │ │ • msgFile is the message file for the BridgeMT methods and the SPOOLES software. │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 13 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 13 │ │ │ │ │ • parmFile is the input file for the parameters of the eigensystem to be solved. │ │ │ │ │ • seed is a random number seed used by the SPOOLES software. │ │ │ │ │ • nthread is the number of threads to use in the factors, solves and matrix-multiplies. │ │ │ │ │ • inFileA is the Harwell-Boeing file for the matrix A. │ │ │ │ │ • inFileB is the Harwell-Boeing file for the matrix B. │ │ │ │ │ This program is executed for some sample matrices by the do ST * shell scripts in the drivers directory. │ │ │ │ │ Here is a short description of the steps in the driver program. See Chapter A for the listing. │ │ │ │ │ @@ -411,15 +411,15 @@ │ │ │ │ │ • ETree *frontETree : object that defines the factorizations, e.g., the number of fronts, the tree they │ │ │ │ │ form, the number of internal and external rows for each front, and the map from vertices to the front │ │ │ │ │ where it is contained. │ │ │ │ │ • IVL *symbfacIVL : object that contains the symbolic factorization of the matrix. │ │ │ │ │ • SubMtxManager *mtxmanager : object that manages the SubMtx objects that store the factor entries │ │ │ │ │ and are used in the solves. │ │ │ │ │ 14 │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 15 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 15 │ │ │ │ │ • FrontMtx *frontmtx : object that stores the L, D and U factor matrices. │ │ │ │ │ • IV *oldToNewIV : object that stores old-to-new permutation vector. │ │ │ │ │ • IV *newToOldIV : object that stores new-to-old permutation vector. │ │ │ │ │ • DenseMtx *Xloc : dense local matrix object that is used during the matrix multiples and solves. │ │ │ │ │ • DenseMtx *Yloc : dense local matrix object that is used during the matrix multiples and solves. │ │ │ │ │ • IV *vtxmapIV : object that maps vertices to owning processors for the factorization and matrix- │ │ │ │ │ multiplies. │ │ │ │ │ @@ -450,15 +450,15 @@ │ │ │ │ │ inside the LANCZOS software a global Krylov block is assembled on each processor prior to calling the │ │ │ │ │ solve or matrix-multiply methods. To “translate” between the global blocks to local blocks, and then back │ │ │ │ │ to global blocks, we have written two wrapper methods, JimMatMulMPI() and JimSolveMPI(). Each takes │ │ │ │ │ the global input block, compresses it into a local block, call the bridge matrix-multiply or solve method, │ │ │ │ │ then takes the local output blocks and gathers them on all the processors into each of their global output │ │ │ │ │ blocks. These operations add a considerable cost to the solve and matrix-multiplies, but the next release of │ │ │ │ │ the LANCZOS software will remove these steps. │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 16 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 16 │ │ │ │ │ 1. int SetupMPI ( void *data, int *pprbtype, int *pneqns, │ │ │ │ │ int *pmxbsz, InpMtx *A, InpMtx *B, int *pseed, │ │ │ │ │ int *pmsglvl, FILE *msgFile, MPI_Comm comm ) ; │ │ │ │ │ All calling sequence parameters are pointers to more easily allow an interface with Fortran. │ │ │ │ │ • void *data — a pointer to the BridgeMPI object. │ │ │ │ │ • int *pprbtype — *pprbtype holds the problem type. │ │ │ │ │ – 1 — vibration, a multiply with B is required. │ │ │ │ │ @@ -493,15 +493,15 @@ │ │ │ │ │ • The ownersIV, vtxmapIV and myownedIV objects are created, that map fronts and vertices to │ │ │ │ │ processors. │ │ │ │ │ • The entries in A and B are permuted. Entries in the permuted lower triangle are mapped into │ │ │ │ │ the upper triangle. The storage modes of A and B are changed to chevrons and vectors, and the │ │ │ │ │ entries of A and B are redistributed to the processors that own them. │ │ │ │ │ • The symbolic factorization is then computed and loaded in the BridgeMPI object. │ │ │ │ │ • A FrontMtx object is created to hold the factorization and loaded into the BridgeMPI object. │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 17 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 17 │ │ │ │ │ • ASubMtxManagerobjectiscreatedtoholdthefactor’ssubmatricesandloadedintotheBridgeMPI │ │ │ │ │ object. │ │ │ │ │ • Themapfromfactorsubmatricestotheir owningthreadsis computed and stored in the solvemap │ │ │ │ │ object. │ │ │ │ │ • The distributed matrix-multiplies are set up. │ │ │ │ │ The A and B matrices are now in their permuted ordering, i.e., PAPT and PBPT, and all data struc- │ │ │ │ │ tures are with respect to this ordering. After the Lanczos run completes, any generated eigenvectors │ │ │ │ │ @@ -536,15 +536,15 @@ │ │ │ │ │ • int *pnrows — *pnrows contains the number of global rows in X and Y. │ │ │ │ │ • int *pncols — *pncols contains the number of global columns in X and Y. │ │ │ │ │ • double X[] — this is the global X matrix, stored column major with leading dimension *pnrows. │ │ │ │ │ • double Y[] — this is the global Y matrix, stored column major with leading dimension *pnrows. │ │ │ │ │ • int *pprbtype — *pprbtype holds the problem type. │ │ │ │ │ – 1 — vibration, a multiply with B is required. │ │ │ │ │ – 2 — buckling, a multiply with A is required. │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 18 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 18 │ │ │ │ │ – 3 — simple, no multiply is required. │ │ │ │ │ • void *data — a pointer to the BridgeMPI object. │ │ │ │ │ 4. void MatMulMPI ( int *pnrows, int *pncols, double X[], double Y[], │ │ │ │ │ int *pprbtype, void *data ) ; │ │ │ │ │ This method computes a multiply of the form Y = IX, Y = AX or Y = BX. All calling sequence │ │ │ │ │ parameters are pointers to more easily allow an interface with Fortran. │ │ │ │ │ • int *pnrows — *pnrows contains the number of local rows in X and Y. │ │ │ │ │ @@ -578,15 +578,15 @@ │ │ │ │ │ • double X[] — this is the local X matrix, stored column major with leading dimension *pnrows. │ │ │ │ │ • double Y[] — this is the local Y matrix, stored column major with leading dimension *pnrows. │ │ │ │ │ • void *data — a pointer to the BridgeMPI object. │ │ │ │ │ • int *perror — on return, *perror holds an error code. │ │ │ │ │ 1 normal return -3 X is NULL │ │ │ │ │ -1 pnrows is NULL -4 Y is NULL │ │ │ │ │ -2 pncols is NULL -5 data is NULL │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 19 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 19 │ │ │ │ │ 7. int CleanupMPI ( void *data ) ; │ │ │ │ │ This method releases all the storage used by the SPOOLES library functions. │ │ │ │ │ Return value: 1 for a normal return, -1 if a data is NULL. │ │ │ │ │ 4.3 The testMPI Driver Program │ │ │ │ │ A complete listing of the multithreaded driver program is found in chapter C. The program is invoked by │ │ │ │ │ this command sequence. │ │ │ │ │ testMPI msglvl msgFile parmFile seed inFileA inFileB │ │ │ │ │ @@ -644,15 +644,15 @@ │ │ │ │ │ double eigval[1000], sigma[2]; │ │ │ │ │ double *evec; │ │ │ │ │ int error, fstevl, lfinit, lstevl, mxbksz, msglvl, ncol, ndiscd, │ │ │ │ │ neig, neigvl, nfound, nnonzeros, nrhs, nrow, prbtyp, rc, │ │ │ │ │ retc, rfinit, seed, warnng ; │ │ │ │ │ int c__5 = 5, output = 6 ; │ │ │ │ │ 20 │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 21 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 21 │ │ │ │ │ int *lanczos_wksp; │ │ │ │ │ InpMtx *inpmtxA, *inpmtxB ; │ │ │ │ │ FILE *msgFile, *parmFile; │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ if ( argc != 7 ) { │ │ │ │ │ fprintf(stdout, │ │ │ │ │ "\n\n usage : %s msglvl msgFile parmFile seed inFileA inFileB" │ │ │ │ │ @@ -694,15 +694,15 @@ │ │ │ │ │ /* │ │ │ │ │ --------------------------------------------- │ │ │ │ │ read in the Harwell-Boeing matrix information │ │ │ │ │ --------------------------------------------- │ │ │ │ │ */ │ │ │ │ │ if ( strcmp(inFileName_A, "none") == 0 ) { │ │ │ │ │ fprintf(msgFile, "\n no file to read from") ; │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 22 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 22 │ │ │ │ │ exit(0) ; │ │ │ │ │ } │ │ │ │ │ MARKTIME(t1) ; │ │ │ │ │ readHB_info (inFileName_A, &nrow, &ncol, &nnonzeros, &type, &nrhs) ; │ │ │ │ │ MARKTIME(t2) ; │ │ │ │ │ fprintf(msgFile, "\n CPU %8.3f : read in header information for A", │ │ │ │ │ t2 - t1) ; │ │ │ │ │ @@ -746,15 +746,15 @@ │ │ │ │ │ fprintf(msgFile, "\n CPU %8.3f : read in eigenvalue problem data", │ │ │ │ │ t2 - t1) ; │ │ │ │ │ /* │ │ │ │ │ ---------------------------------------- │ │ │ │ │ check and set the problem type parameter │ │ │ │ │ ---------------------------------------- │ │ │ │ │ */ │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 23 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 23 │ │ │ │ │ switch ( pbtype[1] ) { │ │ │ │ │ case ’v’ : case ’V’ : prbtyp = 1 ; break ; │ │ │ │ │ case ’b’ : case ’B’ : prbtyp = 2 ; break ; │ │ │ │ │ case ’o’ : case ’O’ : prbtyp = 3 ; break ; │ │ │ │ │ default : │ │ │ │ │ fprintf(stderr, "\n invalid problem type %s", pbtype) ; │ │ │ │ │ exit(-1) ; │ │ │ │ │ @@ -798,15 +798,15 @@ │ │ │ │ │ InpMtx_readFromHBfile ( inpmtxA, inFileName_A ) ; │ │ │ │ │ MARKTIME(t2) ; │ │ │ │ │ fprintf(msgFile, "\n CPU %8.3f : read in A", t2 - t1) ; │ │ │ │ │ if ( msglvl > 2 ) { │ │ │ │ │ fprintf(msgFile, "\n\n InpMtx A object after loading") ; │ │ │ │ │ InpMtx_writeForHumanEye(inpmtxA, msgFile) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 24 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 24 │ │ │ │ │ } │ │ │ │ │ MARKTIME(t1) ; │ │ │ │ │ lanczos_set_parm( &lanczos_wksp, "matrix-type", &c__1, &retc ); │ │ │ │ │ MARKTIME(t2) ; │ │ │ │ │ fprintf(msgFile, "\n CPU %8.3f : set A’s parameters", t2 - t1) ; │ │ │ │ │ if ( prbtyp != 3 ) { │ │ │ │ │ if ( strcmp(inFileName_B, "none") == 0 ) { │ │ │ │ │ @@ -850,15 +850,15 @@ │ │ │ │ │ invoke eigensolver │ │ │ │ │ nfound -- # of eigenvalues found and kept │ │ │ │ │ ndisc -- # of additional eigenvalues discarded │ │ │ │ │ ----------------------------------------------- │ │ │ │ │ */ │ │ │ │ │ MARKTIME(t1) ; │ │ │ │ │ lanczos_run(&neigvl, &which[1] , &pbtype[1], &lfinit, &lftend, │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 25 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 25 │ │ │ │ │ &rfinit, &rhtend, ¢er, &lanczos_wksp, &bridge, &nfound, │ │ │ │ │ &ndiscd, &warnng, &error, Factor, MatMul, Solve ) ; │ │ │ │ │ MARKTIME(t2) ; │ │ │ │ │ fprintf(msgFile, "\n CPU %8.3f : time for lanczos run", t2 - t1) ; │ │ │ │ │ /* │ │ │ │ │ ------------------------- │ │ │ │ │ get eigenvalues and print │ │ │ │ │ @@ -901,15 +901,15 @@ │ │ │ │ │ MARKTIME(t1) ; │ │ │ │ │ lanczos_free( &lanczos_wksp ) ; │ │ │ │ │ MARKTIME(t2) ; │ │ │ │ │ fprintf(msgFile, "\n CPU %8.3f : free lanczos workspace ", t2 - t1) ; │ │ │ │ │ MARKTIME(t1) ; │ │ │ │ │ rc = Cleanup(&bridge) ; │ │ │ │ │ MARKTIME(t2) ; │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 26 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 26 │ │ │ │ │ fprintf(msgFile, "\n CPU %8.3f : free solver workspace ", t2 - t1) ; │ │ │ │ │ if ( rc != 1 ) { │ │ │ │ │ fprintf(stderr, "\n error return %d from Cleanup()", rc) ; │ │ │ │ │ exit(-1) ; │ │ │ │ │ } │ │ │ │ │ fprintf(msgFile, "\n") ; │ │ │ │ │ fclose(msgFile) ; │ │ │ │ │ @@ -942,15 +942,15 @@ │ │ │ │ │ double *evec; │ │ │ │ │ int error, fstevl, lfinit, lstevl, msglvl, mxbksz, ncol, ndiscd, │ │ │ │ │ neig, neigvl, nfound, nnonzeros, nrhs, nrow, nthreads, │ │ │ │ │ prbtyp, rc, retc, rfinit, seed, warnng ; │ │ │ │ │ int c__5 = 5, output = 6 ; │ │ │ │ │ int *lanczos_wksp; │ │ │ │ │ 27 │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 28 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 28 │ │ │ │ │ InpMtx *inpmtxA, *inpmtxB ; │ │ │ │ │ FILE *msgFile, *parmFile ; │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ if ( argc != 8 ) { │ │ │ │ │ fprintf(stdout, │ │ │ │ │ "\n\n usage : %s msglvl msgFile parmFile seed nthread inFileA inFileB" │ │ │ │ │ "\n msglvl -- message level" │ │ │ │ │ @@ -994,15 +994,15 @@ │ │ │ │ │ --------------------------------------------- │ │ │ │ │ read in the Harwell-Boeing matrix information │ │ │ │ │ --------------------------------------------- │ │ │ │ │ */ │ │ │ │ │ if ( strcmp(inFileName_A, "none") == 0 ) { │ │ │ │ │ fprintf(msgFile, "\n no file to read from") ; │ │ │ │ │ exit(0) ; │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 29 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 29 │ │ │ │ │ } │ │ │ │ │ MARKTIME(t1) ; │ │ │ │ │ readHB_info (inFileName_A, &nrow, &ncol, &nnonzeros, &type, &nrhs) ; │ │ │ │ │ MARKTIME(t2) ; │ │ │ │ │ fprintf(msgFile, "\n CPU %8.3f : read in harwell-boeing header info", │ │ │ │ │ t2 - t1) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ @@ -1046,15 +1046,15 @@ │ │ │ │ │ fprintf(msgFile, "\n CPU %8.3f : read in eigenvalue problem data", │ │ │ │ │ t2 - t1) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ /* │ │ │ │ │ ---------------------------------------- │ │ │ │ │ check and set the problem type parameter │ │ │ │ │ ---------------------------------------- │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 30 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 30 │ │ │ │ │ */ │ │ │ │ │ switch ( pbtype[1] ) { │ │ │ │ │ case ’v’ : │ │ │ │ │ case ’V’ : │ │ │ │ │ prbtyp = 1 ; │ │ │ │ │ break ; │ │ │ │ │ case ’b’ : │ │ │ │ │ @@ -1098,15 +1098,15 @@ │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ --------------------------------------------- │ │ │ │ │ create the InpMtx objects for matrix A and B │ │ │ │ │ --------------------------------------------- │ │ │ │ │ */ │ │ │ │ │ if ( strcmp(inFileName_A, "none") == 0 ) { │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 31 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 31 │ │ │ │ │ fprintf(msgFile, "\n no file to read A from") ; │ │ │ │ │ exit(-1) ; │ │ │ │ │ } │ │ │ │ │ MARKTIME(t1) ; │ │ │ │ │ inpmtxA = InpMtx_new() ; │ │ │ │ │ InpMtx_readFromHBfile ( inpmtxA, inFileName_A ) ; │ │ │ │ │ MARKTIME(t2) ; │ │ │ │ │ @@ -1150,15 +1150,15 @@ │ │ │ │ │ fprintf(msgFile, "\n CPU %8.3f : set up the solver environment", │ │ │ │ │ t2 - t1) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ if ( rc != 1 ) { │ │ │ │ │ fprintf(stderr, "\n error return %d from SetupMT()", rc) ; │ │ │ │ │ exit(-1) ; │ │ │ │ │ } │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 32 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 32 │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ ----------------------------------------------- │ │ │ │ │ invoke eigensolver │ │ │ │ │ nfound -- # of eigenvalues found and kept │ │ │ │ │ ndisc -- # of additional eigenvalues discarded │ │ │ │ │ ----------------------------------------------- │ │ │ │ │ @@ -1202,15 +1202,15 @@ │ │ │ │ │ hdslp5_ ( "computed eigenvector returned by hdserc", │ │ │ │ │ &neig, evec, &output, 39L ) ; │ │ │ │ │ } │ │ │ │ │ MARKTIME(t2) ; │ │ │ │ │ fprintf(msgFile, "\n CPU %8.3f : get and print eigenvectors", t2 - t1) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ */ │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 33 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 33 │ │ │ │ │ /* │ │ │ │ │ ------------------------ │ │ │ │ │ free the working storage │ │ │ │ │ ------------------------ │ │ │ │ │ */ │ │ │ │ │ MARKTIME(t1) ; │ │ │ │ │ lanczos_free( &lanczos_wksp ) ; │ │ │ │ │ @@ -1254,15 +1254,15 @@ │ │ │ │ │ InpMtx *inpmtxA, *inpmtxB ; │ │ │ │ │ FILE *msgFile, *parmFile ; │ │ │ │ │ double lftend, rhtend, center, shfscl, t1, t2 ; │ │ │ │ │ double c__1 = 1.0, c__4 = 4.0, tolact = 2.309970868130169e-11 ; │ │ │ │ │ double eigval[1000], sigma[2] ; │ │ │ │ │ double *evec; │ │ │ │ │ 34 │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 35 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 35 │ │ │ │ │ /* │ │ │ │ │ --------------------------------------------------------------- │ │ │ │ │ find out the identity of this process and the number of process │ │ │ │ │ --------------------------------------------------------------- │ │ │ │ │ */ │ │ │ │ │ MPI_Init(&argc, &argv) ; │ │ │ │ │ MPI_Comm_dup(MPI_COMM_WORLD, &comm) ; │ │ │ │ │ @@ -1306,15 +1306,15 @@ │ │ │ │ │ } │ │ │ │ │ parmFileName = argv[3] ; │ │ │ │ │ seed = atoi(argv[4]) ; │ │ │ │ │ inFileName_A = argv[5] ; │ │ │ │ │ inFileName_B = argv[6] ; │ │ │ │ │ fprintf(msgFile, │ │ │ │ │ "\n %s " │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 36 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 36 │ │ │ │ │ "\n msglvl -- %d" │ │ │ │ │ "\n message file -- %s" │ │ │ │ │ "\n parameter file -- %s" │ │ │ │ │ "\n stiffness matrix file -- %s" │ │ │ │ │ "\n mass matrix file -- %s" │ │ │ │ │ "\n random number seed -- %d" │ │ │ │ │ "\n", │ │ │ │ │ @@ -1358,15 +1358,15 @@ │ │ │ │ │ with K positive semidefinite │ │ │ │ │ with K_s posibly indefinite (buckling problem) │ │ │ │ │ ’o’ or ’O’ ordinary symmetric eigenproblem │ │ │ │ │ lfinit -- if true, lftend is restriction on lower bound of │ │ │ │ │ eigenvalues. if false, no restriction on lower bound │ │ │ │ │ lftend -- left endpoint of interval │ │ │ │ │ rfinit -- if true, rhtend is restriction on upper bound of │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 37 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 37 │ │ │ │ │ eigenvalues. if false, no restriction on upper bound │ │ │ │ │ rhtend -- right endpoint of interval │ │ │ │ │ center -- center of interval │ │ │ │ │ mxbksz -- upper bound on block size for Lanczos recurrence │ │ │ │ │ shfscl -- shift scaling parameter, an estimate on the magnitude │ │ │ │ │ of the smallest nonzero eigenvalues │ │ │ │ │ --------------------------------------------------------------- │ │ │ │ │ @@ -1410,15 +1410,15 @@ │ │ │ │ │ initialize communication structure │ │ │ │ │ ---------------------------------- │ │ │ │ │ */ │ │ │ │ │ MARKTIME(t1) ; │ │ │ │ │ lanczos_set_parm( &lanczos_wksp, "order-of-problem", &nrow, &retc ); │ │ │ │ │ lanczos_set_parm( &lanczos_wksp, "accuracy-tolerance", &tolact, &retc ); │ │ │ │ │ lanczos_set_parm( &lanczos_wksp, "max-block-size", &mxbksz, &retc ); │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 38 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 38 │ │ │ │ │ lanczos_set_parm( &lanczos_wksp, "shift-scale", &shfscl, &retc ); │ │ │ │ │ lanczos_set_parm( &lanczos_wksp, "message_level", &msglvl, &retc ); │ │ │ │ │ lanczos_set_parm( &lanczos_wksp, "mpi-communicator", &comm, &retc ); │ │ │ │ │ lanczos_set_parm( &lanczos_wksp, "qfile-pathname", "lqfil", &retc ); │ │ │ │ │ lanczos_set_parm( &lanczos_wksp, "mqfil-pathname", "lmqfil", &retc ); │ │ │ │ │ lanczos_set_parm( &lanczos_wksp, "evfil-pathname", "evcfil", &retc ); │ │ │ │ │ MARKTIME(t2) ; │ │ │ │ │ @@ -1462,15 +1462,15 @@ │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ } │ │ │ │ │ } else { │ │ │ │ │ inpmtxB = NULL ; │ │ │ │ │ lanczos_set_parm( &lanczos_wksp, "matrix-type", &c__4, &retc ); │ │ │ │ │ } │ │ │ │ │ } else { │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 39 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 39 │ │ │ │ │ /* │ │ │ │ │ ------------------------------------------------ │ │ │ │ │ other processors initialize their local matrices │ │ │ │ │ ------------------------------------------------ │ │ │ │ │ */ │ │ │ │ │ inpmtxA = InpMtx_new() ; │ │ │ │ │ InpMtx_init(inpmtxA, INPMTX_BY_CHEVRONS, SPOOLES_REAL, 0, 0) ; │ │ │ │ │ @@ -1514,15 +1514,15 @@ │ │ │ │ │ JimSolveMPI ) ; │ │ │ │ │ MARKTIME(t2) ; │ │ │ │ │ fprintf(msgFile, "\n CPU %8.3f : time for lanczos run", t2 - t1) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ if ( myid == 0 ) { │ │ │ │ │ /* │ │ │ │ │ ---------------------------------------------- │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 40 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 40 │ │ │ │ │ processor 0 deals with eigenvalues and vectors │ │ │ │ │ ---------------------------------------------- │ │ │ │ │ */ │ │ │ │ │ MARKTIME(t1) ; │ │ │ │ │ neig = nfound + ndiscd ; │ │ │ │ │ lstevl = nfound ; │ │ │ │ │ lanczos_eigenvalues (&lanczos_wksp, eigval, &neig, &retc); │ │ │ │ │ @@ -1566,15 +1566,15 @@ │ │ │ │ │ MARKTIME(t2) ; │ │ │ │ │ fprintf(msgFile, "\n CPU %8.3f : free lanczos workspace", t2 - t1) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ MARKTIME(t1) ; │ │ │ │ │ CleanupMPI(&bridge) ; │ │ │ │ │ MARKTIME(t2) ; │ │ │ │ │ fprintf(msgFile, "\n CPU %8.3f : free solver workspace", t2 - t1) ; │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 41 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 41 │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ MPI_Finalize() ; │ │ │ │ │ fprintf(msgFile, "\n") ; │ │ │ │ │ fclose(msgFile) ; │ │ │ │ │ return ; } │ │ │ │ │ Index │ │ │ │ │ Cleanup(), 7 │ │ ├── ./usr/share/doc/spooles-doc/FrontMtx.ps.gz │ │ │ ├── FrontMtx.ps │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ %%EndComments │ │ │ │ %%BeginDefaults │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ %%EndDefaults │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o FrontMtx.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2026.01.06:2034 │ │ │ │ +%DVIPSSource: TeX output 2026.01.10:0513 │ │ │ │ %%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 │ │ │ │ @@ -1758,14 +1758,15 @@ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ /UnderlineThickness 50 def │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ +dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ dup 54 /six put │ │ │ │ dup 58 /colon put │ │ │ │ dup 74 /J put │ │ │ │ dup 97 /a put │ │ │ │ dup 110 /n put │ │ │ │ dup 114 /r put │ │ │ │ @@ -1955,79 +1956,84 @@ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB88440048702D1F │ │ │ │ -77994EE04EC3B4531D6E1888C86A8F0DA6CF1F056F16AB0DD76C862830F89DA4 │ │ │ │ -28923B3AA543E0D6E41D3BD283E600BC11F889315EE92C675C109C81065ED1BC │ │ │ │ -82A5583D1B723D50051B0557A367887F5B263014C6E77288B4883C50889473D3 │ │ │ │ -3787BAD4BEB88BD1353AFA5B73E61814819537E7FF09F53EF94792BB3DD36ED0 │ │ │ │ -002D0E7A6CDAB85A9C17AF5664BCB5A71663B861880F3ECCABC8E7A2FC81A4CC │ │ │ │ -AE7A87503FDC1CE0077BA51ECC7B43B60793FED8E9AAD5BBD03ADD6183DCD26D │ │ │ │ -24A74163611C05562437644EF9B8889FD4F9D311911204FEFD35237486F2D2D0 │ │ │ │ -B6783A03BF12EA6D19D6D0F87E4D08515F12F9CBF1961CAA71E0D69FE3C4C4D2 │ │ │ │ -7C7FB64ED24F8684C8F00C2BEDEA53EA390CDC0B5BEBD7DD982580B2EA1F1F89 │ │ │ │ -CFED5916630DC2BA32BB9180277E1ABC339B3B7DE086717BD93F7FF3681BA5B3 │ │ │ │ -FCF671C4B293C2DE4A322F0AA3323A4934444C69F23EF90120B8755482757759 │ │ │ │ -C457A435FB8BB4922BD92C5F3D9555D978275C510183E29DFF2FCE4ABBFC18DE │ │ │ │ -76CAD3B486BA12047DD808CD4D521A0FD368E4AE79DE262630983A5D6F0B679D │ │ │ │ -2F005306393C520E1B6987302D029939D94B0178DB06211C7F3B123A41E6E7BA │ │ │ │ -87164737110707A3ED3983895F3FBC815EF370F54C808ED93D910937BCA3D8AF │ │ │ │ -7CBF80DC180CDA54059DB76710B4FCD4139D5B7DA7DB1A0D0AF86AD2453D3691 │ │ │ │ -0BA5BAD40FF28BB4235FCD40FC87C2B888E67928D9B0ACA5692149373DBB93BF │ │ │ │ -6520DDD36A9BFE4D415CA67A5E04F1D48BDB28C69676273ED842CF7980E8E17C │ │ │ │ -B88563F407E340AFAE8F51AABCF8A39521BCEE1EC8396D75E124B24B4675909F │ │ │ │ -E246F87DA08584A3173AEFF153ECDF610543FA7474D125A31ADD6285A49222B5 │ │ │ │ -177066EA395BFA4B1114C7FCF7712DA772A21C99E64F4E1181E69CAF98137FA2 │ │ │ │ -76CF74F682B8CD7BA6EEA79B70FA8A76809634517F8415B6F21A5A7D6099B5E8 │ │ │ │ -EAB356BBC4FB68C72B8C61DDCE8EAB1A53B9D6BAD78584B307EFF57CEAE74884 │ │ │ │ -35987BF89E9E60E962D22FA5612F2DB5EB840499B7CC11A34BA5DEE30D277540 │ │ │ │ -39B8211D69B448ADE95B723F8369A631DE6DD75703AFD7485FB7FFF41A60CBE4 │ │ │ │ -813B8FEA120662355773830EF85015E7FFD609B2CEE52CB5FFE9C35B6BEEE4A4 │ │ │ │ -A66719E31CE1523FDD7771FB1E881A32A7DB7D92C2326DF4B93241C14ABFCCD6 │ │ │ │ -8E5BCAC61E800E6B1B4687ADA4CBF41EC0AFC26D021D1772CBDCD0516DF5EBE1 │ │ │ │ -37FD2AC5ABB8D774B5735940F1F6866D044FD8CE74444FAA5D0202C11E39CC10 │ │ │ │ -213731F41F704450E1D0565013BF22188442CE0FC256190A9F92F0C802AA2660 │ │ │ │ -614AFE9E9C82F8CD2E6035EEF84E5F16CBB690AC819B4B910EA8E81106F0ACE5 │ │ │ │ -CDFE77DAF69E4AFE72C43145A3ABCC40B6C5297487083F738C86422277AC2267 │ │ │ │ -51759F1B7F129E87DE16433B664AD0FB6D30424A11C70B52B591352BF653C8B0 │ │ │ │ -0840C224FBFEAA996A6BE1D69414DD778C2EF56A63B64D59BA412EC3E4000831 │ │ │ │ -73361FB9813F9A7C74BA3A50D331B07B61492E5D75F0861B530587269B3ADC90 │ │ │ │ -EA1DF586AC4BC57C3230893EFE953A6E76950ABA895FAC711D3BD330ABC6846A │ │ │ │ -C91F6ABF3410B913DFE5C8266020CEE5C7A9EDA2E7D9BCA797DC486443C7BA7C │ │ │ │ -7E03439A40927FA3251B6D417E5653E7799E9D6F04149C34096E2CA9B1F9B1EC │ │ │ │ -38958A2521B4A657A8B9F16E1FD66C7E345A10D7AA0241559503D214AC6507A4 │ │ │ │ -CBDE8617AA7ED136577734428594487F3565BF45FA196375759E2FE23C26EC8A │ │ │ │ -3310A36917A5E2F260EAB31030F8E570303D36B833626938F56939849DFA1F3F │ │ │ │ -66D0A317BB6364427F1512AAB380B555611C76345C02C3A6FBF78590331D5ECA │ │ │ │ -029DEFB722F6AB05327C2A31AB7BD6ED0F0386E6F45C1278048D22B90B074CCB │ │ │ │ -2BBEBCC1927C97EC532E651CAF0058AFE8FC08F00F0216D5DD9830C294FF76DA │ │ │ │ -426A073B3A3AEEFBDEE71C5182186311607ECDBD1F1AF4C5E79748CD01445C8D │ │ │ │ -25DD49490C8A6810065908222C8D0AC9F83AFBEE7115023E2D2615A170A5D40A │ │ │ │ -AD49BDF59A59187B6434F83E68EED22EF4EFDBADED6F1559AC779E0377FE7375 │ │ │ │ -D7060584FE74B1859D0FD98772253A712B17FFBB467840C484F5EF82C5677ADB │ │ │ │ -EDF159A456A526B8B9F6E8FC7608DFD47B0F09E26118F79CBE53B6C4E32BACAB │ │ │ │ -D62AFD4AA527CC4B587BB41A17A9BCE106A8C592BC9B73422B712C466C284A17 │ │ │ │ -E8D0C1E01D43C739FB1C083AD2714F78AC785B0C09AA7E67417A73510E00F2FE │ │ │ │ -E3D3EBF626A2F3A20A386E3F98D1285F4A2A332FC609CD191F01F128627B3505 │ │ │ │ -0AC2387DC0AD1B950490EBB5045F22BEC54955402CE2D267B6754E7C32BE84E8 │ │ │ │ -E6B63E3D3EAEE979442D167AEF69C27B22A8E887A2510C3A168D95D285CF7515 │ │ │ │ -011C921679B2F386575826A3F2071D015EEB78F02A4F94D4E5F07873623200F8 │ │ │ │ -7DF95BA0DC6B6D31DECC925BEA1E6A7C52FE685800EC33CBAE830F1AE5454DFA │ │ │ │ -913B8F457D7E2D3DFF019869E3301EEEC64A38295DE6B588E776922B32362382 │ │ │ │ -D1CF3D058613C8A96E6994D3EC23E8B71EC6E718383B20BB6C22DB6F93FA559F │ │ │ │ -3449CA84EB33B25C8BE0DFD1C29DC4FBD7AFBDC96C12162CAAB2C5E354B0FB10 │ │ │ │ -4BF8CC3610875ABD5111D09F2F847822118972214EDEB9EE34BAFE45E7AC15C5 │ │ │ │ -CA63EC4A3CEEA505A5EDD88A59BB67C71C3E026DFFE177F99BC69E6635545D03 │ │ │ │ -77A634F98230EF64381EC67CA519D4B9770EFA844789E21970F89D5FFC5DEAA8 │ │ │ │ -DC008EBA09306967ED090FF91B002FA6120C2B461A87AA32EFB003C5578D8EEF │ │ │ │ - │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ +AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ +E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ +46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ +FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ +389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ +7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ +2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ +C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ +B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ +AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ +E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ +F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ +0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ +2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ +29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ +CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ +6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ +5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ +36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0DD96AB602D004DCFE000A0 │ │ │ │ +ABE41BAB8AB7D50BD32BFD6F1AA3B60B09B9BE4E273EDD2DDCB21A98A760D17D │ │ │ │ +0A5C9303AFE63CF80A93E60C72A0576FAADEECBE2DE91892D210EB0AD1889C04 │ │ │ │ +C7530652584E775B4ED19CFB4B8DBCCC57A9FA9E4DDC8A1E5A1D3BE9E93407A6 │ │ │ │ +2C237ACE27F4EDA330EE952EDCBE91683AA98A29197735006666C96A2CE7C787 │ │ │ │ +BBA5A57C4DBF6FAA5B38AF226B5D9A65FAD84650AC0C3DB29C30602699F81E01 │ │ │ │ +0BAF8F1CE44A03C680121B77A1703C638187675D6C22C49F9902475E6CE9C732 │ │ │ │ +48ED028CC92EA542EF189CC9CA1C384E3387793057615D0A2BF040CC90B275B9 │ │ │ │ +F70A5310874DC2E0A360373E7BCAC88250FBC8989C7D18DA8274C06F02FCF31C │ │ │ │ +2B3868CBAF083DAC2FB159DE368261842DB7C9EA1A86B17617C861A48FBA8FF9 │ │ │ │ +D184CB026F4A418C0955347612F94C039B1536A76CB182A591DD7C02D509CF16 │ │ │ │ +8B9E46502ABF5DE31F5DFBD19C7417A2AF7AF13F0D5FF837C94CE56F07B96337 │ │ │ │ +0ED215252346FAEB54B5F3ABE29709B7ECB9FBD23A4AD397E6ABA6938F1BBF33 │ │ │ │ +1D5460D9414F0B8725DA832744525C13E3FD9C8DB33FBEE12F9C4969988402C8 │ │ │ │ +96AF916364CC2DF17EDBA622FC0A5D0013418E29F912FFA06F8D7E31ECAB0B08 │ │ │ │ +C4D2D8EE537CC768FC9038DD6D86D33642C6E812E941F157FC6917AF19C2B99A │ │ │ │ +5BF10B9A7ECF711BBB6F33C8C3DAD778153122593F36ABDDC0E97A602B045DE6 │ │ │ │ +19BD82D877DDA960AB11EF48C7F75A28D0D731D4A5DBC98283087267CD1A470D │ │ │ │ +537E949DA5EECF097B099547995BE066A941CED683B5748962AD2B02C21636C0 │ │ │ │ +2EAFA33CA0CB3BF8A95703F015A210D918865B9BEA2890DCFB68BC3719C305EC │ │ │ │ +315EC8727BF9A93632AB9E3090B100C022EE1396CD329B37547F26A7DCE52BD7 │ │ │ │ +F91B7388DEC34F4A0C6D46CD7CA6ACC00C5C4C71E47C6AD96496B3CBF531F342 │ │ │ │ +A740EE6B99BD70AD490DFA700772A0697EC6561CE88A0113E4DC3B21F372D810 │ │ │ │ +DFF2C3F6EDF3E917BF2664EEFC9AD292DD6CC36853CF936018D43FDB28D5B001 │ │ │ │ +7D1C805F958F13FD221377ABDD69D102E8CC1DAB2E011EE16CF6DB9D195BA702 │ │ │ │ +5A8738FABF989B0351282D0E5121182DFC52169782A5F3DD5D820411BEF909DE │ │ │ │ +04D963E6FDA76F88508C4E91DDAAA1748F396A1D380D8CA429673AF27C164434 │ │ │ │ +771781B39565D3EE50F3CF03EF12908B13A6C11C9AB7631B32125828B13050BA │ │ │ │ +041A93B97AC32D4A1E28C5FA98CDEE998B5F97823D6291D01E3611A16854F1FE │ │ │ │ +69B9D6D2AE3E56D012B7BC3E582FB4C23188A5E365E65EB1F804A706AF73A2F8 │ │ │ │ +9804808EF71F0982B14133BF9A27D6F2E719BDB751022B1B052722933948904E │ │ │ │ +3582E363478DCDA115205A0FDE39DF71FEAEEB104419C35A6B0678C19616C6D9 │ │ │ │ +A892DC2F4257069AF096C80C099CD13024DF3995F28C694E00D1F08B43D4450C │ │ │ │ +D18F5C925CFD2D124E74FC64BBAA0DE32A79E4A4507B5B5DD834C67160CDA110 │ │ │ │ +EF0061DD27E8864F4250A92BBEFD75C784BB98F4FA789A8236C2A21E4E61ABD0 │ │ │ │ +C6B4D13B3C31AC8E55FA34BEC7C308C61FB0280382EC6AFD63D959678D42D2B3 │ │ │ │ +4134F6236A0808D9302B4E3C6F81FC6973B4833602750CCB5DE36AEA23ED6BD4 │ │ │ │ +5B72DF0DD7B81C871CAA6EC190748CD8C4B998D576E5D340ACAC0617DDBE461C │ │ │ │ +8E82E809D11A01D265D039F4315066832E27E08A6F067E129E45FBF533F761BB │ │ │ │ +EC3C071209BECE7D14D3184B2E6BFD65717A5A7C08F3776B20C513649488C1CF │ │ │ │ +03333805B249D1034FB0AE2D7D2A23324EE27AEDB68F8E329A8052FE58D7C0D9 │ │ │ │ +A40A0CDC79F2085C4F39A7DFDB625C8F071E2A32CF6215DD3E060A9BABF7A3AA │ │ │ │ +C57DA0C0571C5D6EEAA975D1BB9C99F8EA4958360E43E8C60080B03DC4435550 │ │ │ │ +E6048DDD35DF3E5DA69669F266FFD7B44649A68025270DC84258E329F6E6907C │ │ │ │ +BCFF900D715D0C7EC43C5E7180CAD6427BA4FD41AAD6531A5C06B0EC26DDA71F │ │ │ │ +4A9DA50DE919E79226F6DDF7C1BA478936AA86CEAD93072CC2960E98C45A1A0C │ │ │ │ +60CF8A26E4278AB4F9E28FA6532648196CC455607D6BCD00F60675DE8CC02C8C │ │ │ │ +9BE5D5B714731814D5B008EE236563D77AC6895E0158877C95797E07C02AFEBE │ │ │ │ +CC9FE97D5E103F7DB0A834E9A7A75893EC66340B0E4C6F0EEDEF43415BF9FCF4 │ │ │ │ +47340CBEA4DCFBA0D028EB2149FFBBDB3322AE5F6FD20242526EDC55E476D983 │ │ │ │ +DC │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -4994,20 +5000,20 @@ │ │ │ │ 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 3[51 12[45 22[47 15[25 3[45 3[45 1[45 │ │ │ │ -3[25 44[{}11 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 │ │ │ │ +134[48 3[51 2[36 3[51 12[45 22[47 15[25 3[45 3[45 45 │ │ │ │ +45 3[25 44[{}12 90.9091 /CMSL10 rf /Fg 148[45 3[45 45 │ │ │ │ +9[61 61 31[45 4[0 51[71 1[71{}9 90.9091 /CMSY10 rf /Fh │ │ │ │ +135[42 1[42 49 30 37 38 1[46 46 51 74 23 42 1[28 46 42 │ │ │ │ +28 42 46 42 1[46 12[65 1[66 11[59 62 69 2[68 6[28 58[{}27 │ │ │ │ +90.9091 /CMTI10 rf │ │ │ │ %DVIPSBitmapFont: Fi tcrm1095 10.95 1 │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ /Dotaccent/cedilla/ogonek/quotesinglbase.ts1 4{/.notdef}repeat │ │ │ │ /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 │ │ │ │ @@ -5139,17 +5145,17 @@ │ │ │ │ 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 1057 4 v │ │ │ │ -1239 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(Jan)m(uary)g(6,)h │ │ │ │ -(2026)p 2843 100 V 141 399 a Fm(The)44 b(factorization)j(is)d(p)s │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fm(2)p 136 100 1035 4 v │ │ │ │ +1217 w Fl(FrontMtx)28 b Ff(:)40 b Fh(DRAFT)31 b Ff(Jan)m(uary)f(10,)h │ │ │ │ +(2026)p 2866 100 V 141 399 a Fm(The)44 b(factorization)j(is)d(p)s │ │ │ │ (erformed)f(using)h(a)g(one)h(dimensional)f(decomp)s(osition)h(of)f │ │ │ │ (the)h(global)g(sparse)0 511 y(matrix.)c(A)31 b(t)m(ypical)h │ │ │ │ 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 │ │ │ │ @@ -5233,17 +5239,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 1057 4 v 1239 100 a Fl(FrontMtx)28 │ │ │ │ -b Ff(:)41 b Fh(DRAFT)121 b Ff(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2796 100 V 1057 w Fm(3)137 399 y Fi(\210)45 b Fm(An)35 │ │ │ │ +TeXDict begin 3 2 bop 91 100 1035 4 v 1216 100 a Fl(FrontMtx)28 │ │ │ │ +b Ff(:)41 b Fh(DRAFT)121 b Ff(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2818 100 V 1035 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 │ │ │ │ @@ -5327,17 +5333,17 @@ │ │ │ │ b(After)26 b(the)f(factorization)227 5181 y(is)45 b(complete,)50 │ │ │ │ b(the)45 b(data)h(structures)e(are)i(p)s(ostpro)s(cessed)e(to)h(yield)g │ │ │ │ (submatrices)g(that)h(con)m(tain)g(the)227 5294 y(coupling)34 │ │ │ │ b(b)s(et)m(w)m(een)g(fron)m(ts.)50 b(The)33 b(w)m(orking)h(storage)h │ │ │ │ (during)d(the)i(solv)m(es)g(is)g(also)g(managed)g(b)m(y)g │ │ │ │ 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 1057 4 v │ │ │ │ -1239 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(Jan)m(uary)g(6,)h │ │ │ │ -(2026)p 2843 100 V 137 399 a Fi(\210)45 b Fm(Eac)m(h)25 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fm(4)p 136 100 1035 4 v │ │ │ │ +1217 w Fl(FrontMtx)28 b Ff(:)40 b Fh(DRAFT)31 b Ff(Jan)m(uary)f(10,)h │ │ │ │ +(2026)p 2866 100 V 137 399 a Fi(\210)45 b Fm(Eac)m(h)25 │ │ │ │ b(submatrix)f(represen)m(ts)h(the)f(coupling)h(b)s(et)m(w)m(een)g(t)m │ │ │ │ (w)m(o)h(fron)m(ts,)g Fk(I)31 b Fm(and)24 b Fk(J)9 b │ │ │ │ Fm(.)39 b(T)-8 b(o)25 b(enable)g(rapid)f(random)227 511 │ │ │ │ y(access)30 b(to)f(these)f(submatrices,)h(w)m(e)f(use)g(a)h │ │ │ │ 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 │ │ │ │ @@ -5399,17 +5405,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 1057 4 v 1239 100 a Fl(FrontMtx)28 │ │ │ │ -b Ff(:)41 b Fh(DRAFT)121 b Ff(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2796 100 V 1057 w Fm(5)137 399 y Fi(\210)45 b Fl(int)i(dataMode)28 │ │ │ │ +TeXDict begin 5 4 bop 91 100 1035 4 v 1216 100 a Fl(FrontMtx)28 │ │ │ │ +b Ff(:)41 b Fh(DRAFT)121 b Ff(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2818 100 V 1035 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 │ │ │ │ @@ -5466,17 +5472,17 @@ │ │ │ │ (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 1057 4 v │ │ │ │ -1239 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(Jan)m(uary)g(6,)h │ │ │ │ -(2026)p 2843 100 V 137 399 a Fi(\210)45 b Fl(SubMtxManager)f(*manager) │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fm(6)p 136 100 1035 4 v │ │ │ │ +1217 w Fl(FrontMtx)28 b Ff(:)40 b Fh(DRAFT)31 b Ff(Jan)m(uary)f(10,)h │ │ │ │ +(2026)p 2866 100 V 137 399 a Fi(\210)45 b Fl(SubMtxManager)f(*manager) │ │ │ │ 30 b Fm(:)43 b(p)s(oin)m(ter)31 b(to)h(an)g(ob)5 b(ject)32 │ │ │ │ b(that)g(manages)h(the)e(instances)h(of)g(submatrices)227 │ │ │ │ 511 y(during)d(the)i(factors)g(and)f(solv)m(es.)137 719 │ │ │ │ y Fi(\210)45 b Fl(Lock)i(*lock)27 b Fm(:)40 b(p)s(oin)m(ter)30 │ │ │ │ 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 │ │ │ │ @@ -5536,17 +5542,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 1057 4 v 1239 100 a Fl(FrontMtx)28 │ │ │ │ -b Ff(:)41 b Fh(DRAFT)121 b Ff(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2796 100 V 1057 w Fm(7)0 399 y Fb(1.2.1)112 b(Basic)38 │ │ │ │ +TeXDict begin 7 6 bop 91 100 1035 4 v 1216 100 a Fl(FrontMtx)28 │ │ │ │ +b Ff(:)41 b Fh(DRAFT)121 b Ff(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2818 100 V 1035 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) │ │ │ │ @@ -5605,17 +5611,17 @@ │ │ │ │ (exits.)111 5111 y(2.)46 b Fl(int)h(FrontMtx_neqns)d(\()k(FrontMtx)d │ │ │ │ (*frontmtx)g(\))j(;)227 5259 y Fm(This)30 b(metho)s(d)g(returns)f(the)h │ │ │ │ (n)m(um)m(b)s(er)f(of)i(equations)g(in)f(the)h(matrix.)227 │ │ │ │ 5407 y Fh(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fm(If)30 │ │ │ │ b Fl(frontmtx)e Fm(is)j Fl(NULL)p Fm(,)e(an)i(error)f(message)h(is)g │ │ │ │ (prin)m(ted)e(and)h(the)h(program)f(exits.)p eop end │ │ │ │ %%Page: 8 8 │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fm(8)p 136 100 1057 4 v │ │ │ │ -1239 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(Jan)m(uary)g(6,)h │ │ │ │ -(2026)p 2843 100 V 111 399 a Fm(3.)46 b Fl(Tree)h(*)g │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fm(8)p 136 100 1035 4 v │ │ │ │ +1217 w Fl(FrontMtx)28 b Ff(:)40 b Fh(DRAFT)31 b Ff(Jan)m(uary)f(10,)h │ │ │ │ +(2026)p 2866 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 │ │ │ │ @@ -5683,17 +5689,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 1057 4 v 1239 100 a Fl(FrontMtx)28 │ │ │ │ -b Ff(:)41 b Fh(DRAFT)121 b Ff(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2796 100 V 1057 w Fm(9)66 399 y(10.)46 b Fl(SubMtx)g(*)i │ │ │ │ +TeXDict begin 9 8 bop 91 100 1035 4 v 1216 100 a Fl(FrontMtx)28 │ │ │ │ +b Ff(:)41 b Fh(DRAFT)121 b Ff(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2818 100 V 1035 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 │ │ │ │ @@ -5765,17 +5771,17 @@ │ │ │ │ b(metho)s(d)g(returns)f(a)i(p)s(oin)m(ter)f(to)h(the)g │ │ │ │ Fl(IVL)e Fm(ob)5 b(ject)31 b(that)g(holds)f(the)h(lo)m(w)m(er)g(blo)s │ │ │ │ (c)m(ks.)227 5407 y Fh(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ b Fm(If)30 b Fl(frontmtx)e Fm(is)j Fl(NULL)p Fm(,)e(an)i(error)f │ │ │ │ (message)h(is)g(prin)m(ted)e(and)h(the)h(program)f(exits.)p │ │ │ │ eop end │ │ │ │ %%Page: 10 10 │ │ │ │ -TeXDict begin 10 9 bop 0 100 a Fm(10)p 182 100 1035 4 │ │ │ │ -v 1217 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(Jan)m(uary)g(6,)h │ │ │ │ -(2026)p 2866 100 V 0 399 a Fb(1.2.3)112 b(Initialization)39 │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fm(10)p 182 100 1012 4 │ │ │ │ +v 1194 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(Jan)m(uary)g(10,)i │ │ │ │ +(2026)p 2888 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 │ │ │ │ @@ -5843,17 +5849,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 1035 4 v 1216 100 a Fl(FrontMtx)28 │ │ │ │ -b Ff(:)41 b Fh(DRAFT)121 b Ff(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2773 100 V 1035 w Fm(11)111 399 y(2.)46 b Fl(char)h │ │ │ │ +TeXDict begin 11 10 bop 91 100 1012 4 v 1193 100 a Fl(FrontMtx)28 │ │ │ │ +b Ff(:)41 b Fh(DRAFT)121 b Ff(Jan)m(uary)30 b(10,)i(2026)p │ │ │ │ +2796 100 V 1012 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 │ │ │ │ @@ -5916,17 +5922,17 @@ │ │ │ │ (ultithreaded)g(and)f(MPI)h(factor)h(and)e(solv)m(e)i(metho)s(ds)f(to)g │ │ │ │ (load)h(the)227 5262 y(dequeue)30 b(with)g(the)h(activ)m(e)i(lea)m(v)m │ │ │ │ (es)f(in)e(the)h(fron)m(t)f(tree)h(with)f(resp)s(ect)h(to)g(the)f │ │ │ │ (thread)h(or)f(pro)s(cessor.)227 5407 y Fh(Err)-5 b(or)34 │ │ │ │ b(che)-5 b(cking:)40 b Fm(None)31 b(presen)m(tly)-8 b(.)p │ │ │ │ eop end │ │ │ │ %%Page: 12 12 │ │ │ │ -TeXDict begin 12 11 bop 0 100 a Fm(12)p 182 100 1035 │ │ │ │ -4 v 1217 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(Jan)m(uary)g(6,) │ │ │ │ -h(2026)p 2866 100 V 111 399 a Fm(8.)46 b Fl(ChvList)g(*)i │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fm(12)p 182 100 1012 │ │ │ │ +4 v 1194 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(Jan)m(uary)g │ │ │ │ +(10,)i(2026)p 2888 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 │ │ │ │ @@ -5994,18 +6000,18 @@ │ │ │ │ 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 1035 4 v 1216 100 a Fl(FrontMtx)28 │ │ │ │ -b Ff(:)41 b Fh(DRAFT)121 b Ff(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2773 100 V 1035 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 │ │ │ │ +TeXDict begin 13 12 bop 91 100 1012 4 v 1193 100 a Fl(FrontMtx)28 │ │ │ │ +b Ff(:)41 b Fh(DRAFT)121 b Ff(Jan)m(uary)30 b(10,)i(2026)p │ │ │ │ +2796 100 V 1012 w Fm(13)227 399 y(This)27 b(metho)s(d)f(is)h(used)g(to) │ │ │ │ +h(store)g(an)m(y)f(p)s(ostp)s(oned)f(ro)m(ws)h(and)f(columns)h(from)g │ │ │ │ (the)g(curren)m(t)g(fron)m(t)h Fl(frontJ)227 511 y Fm(in)m(to)f(a)g │ │ │ │ Fl(Chv)e Fm(ob)5 b(ject)27 b(obtained)f(from)f(the)i │ │ │ │ Fl(chvmanager)c Fm(ob)5 b(ject)27 b(and)e(place)i(it)f(in)m(to)h(the)g │ │ │ │ (list)f(of)g(p)s(ostp)s(oned)227 624 y(ob)5 b(jects)25 │ │ │ │ b(for)e Fl(K)p Fm(,)g(its)h(paren)m(t,)i(found)c(in)h(the)h │ │ │ │ Fl(postponedlist)c Fm(ob)5 b(ject.)39 b(The)23 b Fl(frontJ)f │ │ │ │ Fm(ob)5 b(ject)25 b(is)e(unc)m(hanged)227 737 y(b)m(y)31 │ │ │ │ @@ -6072,17 +6078,17 @@ │ │ │ │ (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 1035 │ │ │ │ -4 v 1217 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(Jan)m(uary)g(6,) │ │ │ │ -h(2026)p 2866 100 V 337 399 a Fi(\210)45 b Fl(cpus[6])29 │ │ │ │ +TeXDict begin 14 13 bop 0 100 a Fm(14)p 182 100 1012 │ │ │ │ +4 v 1194 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(Jan)m(uary)g │ │ │ │ +(10,)i(2026)p 2888 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 │ │ │ │ @@ -6144,17 +6150,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 1035 4 v 1216 100 a Fl(FrontMtx)28 │ │ │ │ -b Ff(:)41 b Fh(DRAFT)121 b Ff(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2773 100 V 1035 w Fm(15)227 399 y(and)c(up)s(date)g(matrices)h(are)g │ │ │ │ +TeXDict begin 15 14 bop 91 100 1012 4 v 1193 100 a Fl(FrontMtx)28 │ │ │ │ +b Ff(:)41 b Fh(DRAFT)121 b Ff(Jan)m(uary)30 b(10,)i(2026)p │ │ │ │ +2796 100 V 1012 w Fm(15)227 399 y(and)27 b(up)s(date)g(matrices)h(are)g │ │ │ │ (assem)m(bled)g(in)m(to)g(staircase)h(form,)f(so)g(no)f(subsequen)m(t)g │ │ │ │ (p)s(erm)m(utations)g(of)h(the)227 511 y(ro)m(ws)j(is)f(necessary)-8 │ │ │ │ b(.)227 660 y Fh(Err)j(or)28 b(che)-5 b(cking:)36 b Fm(If)23 │ │ │ │ b Fl(frontmtx)p Fm(,)f Fl(mtxA)p Fm(,)h Fl(rowsIVL)p │ │ │ │ Fm(,)e Fl(firstnz)p Fm(,)i Fl(colmap)e Fm(or)j Fl(workDV)d │ │ │ │ Fm(is)i Fl(NULL)p Fm(,)f(or)i(if)f Fl(msglvl)227 773 │ │ │ │ y(>)48 b(0)30 b Fm(and)g Fl(msgFile)e Fm(is)i Fl(NULL)p │ │ │ │ @@ -6226,17 +6232,17 @@ │ │ │ │ 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 1035 │ │ │ │ -4 v 1217 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(Jan)m(uary)g(6,) │ │ │ │ -h(2026)p 2866 100 V 0 399 a Fb(1.2.8)112 b(P)m(ostpro)s(cessing)38 │ │ │ │ +TeXDict begin 16 15 bop 0 100 a Fm(16)p 182 100 1012 │ │ │ │ +4 v 1194 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(Jan)m(uary)g │ │ │ │ +(10,)i(2026)p 2888 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 │ │ │ │ @@ -6306,17 +6312,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 1035 4 v 1216 100 a Fl(FrontMtx)28 │ │ │ │ -b Ff(:)41 b Fh(DRAFT)121 b Ff(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2773 100 V 1035 w Fm(17)227 399 y(This)d(metho)s(d)g(creates)h(and)f │ │ │ │ +TeXDict begin 17 16 bop 91 100 1012 4 v 1193 100 a Fl(FrontMtx)28 │ │ │ │ +b Ff(:)41 b Fh(DRAFT)121 b Ff(Jan)m(uary)30 b(10,)i(2026)p │ │ │ │ +2796 100 V 1012 w Fm(17)227 399 y(This)c(metho)s(d)g(creates)h(and)f │ │ │ │ (returns)f(a)i(v)m(ector)h(of)f(p)s(oin)m(ters)f(to)h │ │ │ │ Fl(SubMtx)e Fm(ob)5 b(jects)29 b(that)g(hold)f(p)s(oin)m(ters)g(to)227 │ │ │ │ 511 y(the)j(righ)m(t)g(hand)e(side)h(submatrices)h(o)m(wned)f(b)m(y)g │ │ │ │ (the)h(thread)f(or)g(pro)s(cessor.)227 671 y Fh(Err)-5 │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fm(None)31 b(presen)m(tly)-8 │ │ │ │ b(.)111 878 y(2.)46 b Fl(void)h(FrontMtx_forwardVisit)42 │ │ │ │ b(\()47 b(FrontMtx)f(*frontmtx,)f(int)i(J,)g(int)g(nrhs,)370 │ │ │ │ @@ -6384,17 +6390,17 @@ │ │ │ │ 5261 y Fj(J)578 5247 y Fm(:=)c Fk(Z)762 5261 y Fj(J)831 │ │ │ │ 5247 y Fg(\000)20 b Fk(U)984 5261 y Fj(J)n(;K)1109 5247 │ │ │ │ y Fk(X)1184 5261 y Fj(K)1283 5247 y Fm(that)31 b(will)f(b)s(e)g(p)s │ │ │ │ (erformed)f(b)m(y)h(this)g(thread)h(or)f(pro)s(cessor.)227 │ │ │ │ 5407 y Fh(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fm(None)31 │ │ │ │ b(presen)m(tly)-8 b(.)p eop end │ │ │ │ %%Page: 18 18 │ │ │ │ -TeXDict begin 18 17 bop 0 100 a Fm(18)p 182 100 1035 │ │ │ │ -4 v 1217 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(Jan)m(uary)g(6,) │ │ │ │ -h(2026)p 2866 100 V 111 399 a Fm(8.)46 b Fl(void)h │ │ │ │ +TeXDict begin 18 17 bop 0 100 a Fm(18)p 182 100 1012 │ │ │ │ +4 v 1194 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(Jan)m(uary)g │ │ │ │ +(10,)i(2026)p 2888 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 │ │ │ │ @@ -6467,17 +6473,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 1035 4 v 1216 100 a Fl(FrontMtx)28 │ │ │ │ -b Ff(:)41 b Fh(DRAFT)121 b Ff(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2773 100 V 1035 w Fm(19)337 399 y Fi(\210)45 b Fl(cpus[4])29 │ │ │ │ +TeXDict begin 19 18 bop 91 100 1012 4 v 1193 100 a Fl(FrontMtx)28 │ │ │ │ +b Ff(:)41 b Fh(DRAFT)121 b Ff(Jan)m(uary)30 b(10,)i(2026)p │ │ │ │ +2796 100 V 1012 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 │ │ │ │ @@ -6539,27 +6545,28 @@ │ │ │ │ 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 1035 │ │ │ │ -4 v 1217 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(Jan)m(uary)g(6,) │ │ │ │ -h(2026)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 │ │ │ │ +TeXDict begin 20 19 bop 0 100 a Fm(20)p 182 100 1012 │ │ │ │ +4 v 1194 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(Jan)m(uary)g │ │ │ │ +(10,)i(2026)p 2888 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 │ │ │ │ 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 │ │ │ │ @@ -6625,17 +6632,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 1035 4 v 1216 100 a Fl(FrontMtx)28 │ │ │ │ -b Ff(:)41 b Fh(DRAFT)121 b Ff(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2773 100 V 1035 w Fm(21)111 399 y(7.)46 b Fl(int)h │ │ │ │ +TeXDict begin 21 20 bop 91 100 1012 4 v 1193 100 a Fl(FrontMtx)28 │ │ │ │ +b Ff(:)41 b Fh(DRAFT)121 b Ff(Jan)m(uary)30 b(10,)i(2026)p │ │ │ │ +2796 100 V 1012 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 │ │ │ │ @@ -6698,18 +6705,18 @@ │ │ │ │ 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 1035 │ │ │ │ -4 v 1217 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(Jan)m(uary)g(6,) │ │ │ │ -h(2026)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 │ │ │ │ +TeXDict begin 22 21 bop 0 100 a Fm(22)p 182 100 1012 │ │ │ │ +4 v 1194 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(Jan)m(uary)g │ │ │ │ +(10,)i(2026)p 2888 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 │ │ │ │ @@ -6778,17 +6785,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 1035 4 v 1216 100 a Fl(FrontMtx)28 │ │ │ │ -b Ff(:)41 b Fh(DRAFT)121 b Ff(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2773 100 V 1035 w Fm(23)337 399 y Fi(\210)45 b Fm(The)30 │ │ │ │ +TeXDict begin 23 22 bop 91 100 1012 4 v 1193 100 a Fl(FrontMtx)28 │ │ │ │ +b Ff(:)41 b Fh(DRAFT)121 b Ff(Jan)m(uary)30 b(10,)i(2026)p │ │ │ │ +2796 100 V 1012 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 │ │ │ │ @@ -6878,16 +6885,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 1035 4 v 1216 100 a Fl(FrontMtx)28 │ │ │ │ -b Ff(:)41 b Fh(DRAFT)121 b Ff(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2773 100 V 1035 w Fm(25)0 399 y Fl(FrontMtx)p 390 399 │ │ │ │ +TeXDict begin 25 24 bop 91 100 1012 4 v 1193 100 a Fl(FrontMtx)28 │ │ │ │ +b Ff(:)41 b Fh(DRAFT)121 b Ff(Jan)m(uary)30 b(10,)i(2026)p │ │ │ │ +2796 100 V 1012 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 January 6, 2026 │ │ │ │ │ + 2 FrontMtx : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 3 │ │ │ │ │ + FrontMtx : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 4 FrontMtx : DRAFT January 10, 2026 │ │ │ │ │ • 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 January 6, 2026 5 │ │ │ │ │ + FrontMtx : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 6 FrontMtx : DRAFT January 10, 2026 │ │ │ │ │ • 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 January 6, 2026 7 │ │ │ │ │ + FrontMtx : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 8 FrontMtx : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 9 │ │ │ │ │ + FrontMtx : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 10 FrontMtx : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 11 │ │ │ │ │ + FrontMtx : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 12 FrontMtx : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 13 │ │ │ │ │ + FrontMtx : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 14 FrontMtx : DRAFT January 10, 2026 │ │ │ │ │ • 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 January 6, 2026 15 │ │ │ │ │ + FrontMtx : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 16 FrontMtx : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 17 │ │ │ │ │ + FrontMtx : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 18 FrontMtx : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 19 │ │ │ │ │ + FrontMtx : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 20 FrontMtx : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 21 │ │ │ │ │ + FrontMtx : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 22 FrontMtx : DRAFT January 10, 2026 │ │ │ │ │ – 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 January 6, 2026 23 │ │ │ │ │ + FrontMtx : DRAFT January 10, 2026 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 January 6, 2026 25 │ │ │ │ │ + FrontMtx : DRAFT January 10, 2026 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 2026.01.06:2033 │ │ │ │ +%DVIPSSource: TeX output 2026.01.10:0512 │ │ │ │ %%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 │ │ │ │ @@ -3344,14 +3344,15 @@ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ /UnderlineThickness 50 def │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ +dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ dup 54 /six put │ │ │ │ dup 70 /F put │ │ │ │ dup 74 /J put │ │ │ │ dup 79 /O put │ │ │ │ dup 84 /T put │ │ │ │ dup 97 /a put │ │ │ │ @@ -3546,130 +3547,135 @@ │ │ │ │ 60F5C3F629F7BC5A27C207D70DE63FBE0E023452097D5B7AA5B2CAC668D4D075 │ │ │ │ 1A0F70683E96AE35A6BA0B59619C215A7012568991AFC0C35789DD0ECE45C649 │ │ │ │ F44580845F0FA422868CFCC8029513235C0286B76196E350498845EA934DF289 │ │ │ │ 1D0C954B079BD2977384B96D8460B4F50EE635A4C8F7A3B6866F93CA641F3F2C │ │ │ │ C93ECCD6BBCD792189A12FC9366BA7134EFD67A22B4FD62465250E0BA6B7C627 │ │ │ │ 73E8F50E379328B7FABA341B0D50F9A2CFB055E01DDF6BBCF6FE4114BC36C10B │ │ │ │ E581D76A84EA12995506C33DAE9035683FBD5F54AA1545992B94B8ED946E5866 │ │ │ │ -2F2CF265A67D34469B3FF1541D72B9B0B9AFB330FB72CB4D9444809EE3E5547C │ │ │ │ -80FD855F1733F58FB223DBBE8D1E7E062138E3F3554A7A07EB9C00BB1712A05D │ │ │ │ -624AB5E1D9A596177E566E14EC543AF373D6737BBA050C7478A65B851C2B285C │ │ │ │ -216A86A2C8607B03CEB9DED58C9BB5E9282CBFAA3CC2BA792FB5A4E3054FBFAF │ │ │ │ -8875C1396824B8E12C4B838BB34D41DB2DFC4C96F2237620EFA9C4FDFA969CCA │ │ │ │ -02CBC8203772884CB1652AA46485C52019D47B16F35F548035C0B263BDDB677A │ │ │ │ -A51564759CBE2847EE0835D3BF4D8F63970B594574AE314938F4019D4A350E32 │ │ │ │ -AB25DCCD4D43ECC7ABCFA07DBD7BBDFCEB8908AFBFC28E8F7517222B89C453A6 │ │ │ │ -89FDF47AC918C44F4AEE7607C5237DBB341B32032BD7B842E3147A09F1D236BF │ │ │ │ -B36493E9849967F12ED58C4CFD280FE501E1B70FC0222A6D4CCAD56EF1C0BA7D │ │ │ │ -4021FEA4EBA2806EF25C397AF9DBE171332A8029FE5C5FF2A99FA9AE577CEDC6 │ │ │ │ -6221A4205DF59039F7393F53EA4A871176B5B4C28362293C4D7E83F65055A0B5 │ │ │ │ -F4B68C67E93B8E5D620F528409DC57D72616176C70C2DF1DB79A59171F7C8CF5 │ │ │ │ -56A7E9DF32C224D2A21920F40CC41C6C40D746C87E43ED4F9E185AFB5722A9F4 │ │ │ │ -692B927263E234E780329776C9FBF7C481DF9ADCF90D5642DD5FE22432FA9845 │ │ │ │ -112BA9C2DEE765B1C56E8E9863244FDA8E090988E34ACDC5B65377DC0DEC038B │ │ │ │ -5B2CC277135A9A354E30D017C7D63DCAB165311F2DDBDE9A5F500C3D1B8C5DFE │ │ │ │ -87142954CD19F8C5DA37E1E4B2081728417DA1BE706531E20AA741213F52557E │ │ │ │ -3E8FF11855EC54F4100250FF4F064767D54F495795ED16E2602807E5AA276F8D │ │ │ │ -971088E37F3151B0245D2871CCFBB5AC2E2BD79EA7BA743A70791D30639C8700 │ │ │ │ -58C8994ACD06FBD2ABC3DBD0CDECF6817D981C7301F9B0C9F11C645135050E49 │ │ │ │ -469DBD0A093C2532C5314798F43805574A0CDA7AF6D27C0B3F51271005EE01E5 │ │ │ │ -00CC0BC3E4AC8A1298CB6E6184E23E4B9CF4B8F6AA3782436C4C8228B3D32138 │ │ │ │ -E203E357D1859E5306569D56F27BF697BFB0B500F83AEB3632D85BE26421D505 │ │ │ │ -035051CD58EF5C6F0A56C3675A5DE36DF095EEE75EE9A2882843E5D30C4F6070 │ │ │ │ -60220AE99C7E4EB2CCE6FE387D31FFD5D7E88C58CB8C082C7D2D888ECA501ABA │ │ │ │ -83739F0C78B21AC536C4D456345D3EF4E343AE526FCFEE43326A077EE497944A │ │ │ │ -3647F39964CCEE4244900DB5CC918D7A271D14312B8CDF364CF67D01529EDB33 │ │ │ │ -2B647C761CD9B931A20933EAE67B5113A4321A40A979BC8328FABA42C3AB9E23 │ │ │ │ -82F089365408381480FD1CE600369560C72063815E1B6B0FE38E8769288074C7 │ │ │ │ -AF9CFCF03C6AC0A27944EB8A5CFA98D7B9B5D7E6021F949E03688B2793C06CC8 │ │ │ │ -F3C3863808B2A2F86F25BA0092D161C0B0C719BAB94D349B4D31F34804D5C71C │ │ │ │ -C0EB7062D55941B795F1DCB4FB019F5F8305D632F671D1BA76C97565B681E68A │ │ │ │ -92B2C36A1D9ABE4649F89B7B50DB955BF215D2827AD1950141E470382132172F │ │ │ │ -06F1F9FBA0F6410692AB2D9E8065234231AD68694A09386A6FC7BB9D98BD2BF2 │ │ │ │ -37912157A96769909692592B881366262013903FB7F01B808D8C74EFFC49E3DF │ │ │ │ -5FB6C76163310DAB5CA0FFC4A0C2C4E20F4DED893EA3999EE99C4E35F6829F2E │ │ │ │ -944B0EB643FACF7CCB275A3F3AF3992BEB473B6A0FCE12558EBD79AE6DF88DE8 │ │ │ │ -0C35ADFEFC54D81188B36E3931D53087E8771F0C9F4998043DC8AE6CA2757B0C │ │ │ │ -FBF1A08711F63C5CBADE0220738F4C2766B9808B391749E2001E1A44F529BCC8 │ │ │ │ -93B5318632CD2CB35078F0251A89A20844F6E0163C8D11B5086B56FC70F71EFC │ │ │ │ -5E1E286D2CF9BB95A44A58911E34EDEA2CB08C848073CF50829347EA37BC82B6 │ │ │ │ -781C351451A9121623A7616D6A60BFF6099464CC6A5AF626661244E71152B54C │ │ │ │ -444F0D80C6F7F3B3A3ECA6D4F426AA8BF1D6FC501630E68EA61CC45B526AC443 │ │ │ │ -36CAF6C726A934EB5617A242A5FF5CBA16AB5721B61D988E6D7D8044E44A2074 │ │ │ │ -C994B8BE0B0FDE5CB60EC353C8C86BC7604D8438E65C86CD33D60BFDB4F8F3DC │ │ │ │ -2686CE6E9BB9D39B2F52E929A47E8F688B3A82CBB6451D148242BE0936FB4FE3 │ │ │ │ -28E38BD74B3458AD3C607A0FC55A6EC42ECE2F9CAB1663B4672B8169B32FE4B6 │ │ │ │ -982D46DDFAB0F01383FBDEB0E6FF6C3E0428BD2BF9A7F59519CF799D001E663F │ │ │ │ -A0C5774055828AD74C8D8E8E6D1F6EBCF51C5FFFAF7A68B57AEFAF557E82EB35 │ │ │ │ -D45E3616B2784FC9CF7FAD71919CF14A048093159387A6FC1A2CBA9B8FAD1C7B │ │ │ │ -C6691A41A1C31AD145AA3D8D0A626E6E6184C8214DFDEE7AD5E2958DC7A4F34E │ │ │ │ -24040B758408892FD35ACAA0F9C762852B988D1FCCA5EBDF740CA37C7FD2D87D │ │ │ │ -C07CC20F4E3BD75AF6BEDC5B4BA3D0C9F0F93B5E8B4C6E5A1580A149BC54BDD3 │ │ │ │ -274EE1331BA8ABCD4936F938E39DA55FA2A6DF9D5F4592B295F87C68EEA50B2D │ │ │ │ -1D4124A3E7DEF4837EC7E8FF8FE8441DFFE92392C6166C21BAAC1858BC51E25F │ │ │ │ -DEDE6062ED4169480B01278D434B626A6D8CE8757AD7F4671F1810B89B8BA918 │ │ │ │ -5061B86850481AE74B49912BA68BDA6E524F1C5A79F3155EF1CB247E43F76A37 │ │ │ │ -C39EE431EBB4EA4B7EB5B9A7814322A16B816CD87373A4317BF2453C0EC5D659 │ │ │ │ -636D14349E92539BB02578BD274049F9C0585AC7BF3B7E84A9FA960B9B148708 │ │ │ │ -D5F8A061DB87E4F05E5C6F52CF708941A7E45921B8C2D85982B48C3714656152 │ │ │ │ -CF027D7CAC9F59E9315921F19F8055A4A860BC12F77E5FF3235FD644BE8B10A3 │ │ │ │ -333F3E36CE26E4526F9B7907D70EEC8BAB741BD082B1771036CE3AB45B00D965 │ │ │ │ -6EDADA9E9D09E4B9955D1906BD895D04242EF73E296442DFCB9203DDE166C8C3 │ │ │ │ -AFC0871D1CA9227A5EEAD3076353B26F53C277F20789DD15A70C639EB3D1804F │ │ │ │ -16969E3F8D09B2AFE596887F8A22D3EEDF10E6F47E056CB30B2EFEB369EE5900 │ │ │ │ -C032E81CAA41B593BE10A2A1850500CA42F346C4F0F6C0A921F9A4440D1ED20C │ │ │ │ -6818C13148AADB012C9381579407E50EE7F1DD8C404BF2AA74946EB7F03FCC49 │ │ │ │ -5AFAB784121E9C0EFD06FC5A2010A471CD3F7213106A85AE764F6F488C5946B9 │ │ │ │ -6A17381CFCD1387B312522865DFE27CF1523B9849B68B7EE0B47644B35244CFE │ │ │ │ -4939407410198A97E0AA2A323834B569F20748E825C856AC520BC80F9F19C825 │ │ │ │ -D963FA26DFAE72971D68193D7A3870144EB08BEE6EA9F35AECF82815B341F2A6 │ │ │ │ -E4BF971B2126F9CBD1F89AAEA37E900FD65BC3EF47AFABD7529EA8A736965906 │ │ │ │ -12C40DD6487312D2249D89C67807B0C959901796F0C784910FF27ECDB1C2C034 │ │ │ │ -32B4938D57E3A091E378978B031BDD4586F4CC080AC6D76A523553973BD4C50B │ │ │ │ -7145196EAC5419D3442AE052A632F78CC3BE38B1164A9B0B575D1D4D316B7943 │ │ │ │ -59D86022694307C50FB68916BB634868556094E8299224B5BAA87DA2CAE7C429 │ │ │ │ -A73C1AE01C9BACB9B32DB0F1B3A518E752229CA4D195706134EA7138F2981C62 │ │ │ │ -F5A8A85F9EF6C96CDF05327C1FB1DA66A793D5BC3250B5AD25BE212015E402E6 │ │ │ │ -8DDD71316E941EB4B7793BDF534195DE9C40129B537D192E4E8D4AF04799A444 │ │ │ │ -714616A848EC8C29430ECE5DF32825CDF2D7906063173D97543625AFDFABD401 │ │ │ │ -73FAB7BE9906EB6628F61198815B3310111A1D4257AA4D2152196C4B9AEC2DA6 │ │ │ │ -D2B28226CA8F22C918CDD3A249DA8F07F691A8686BFE4E857A61808D7B9D0EB2 │ │ │ │ -9E9A7D0D26F39A89805AA63848EBB5D3728F920AAF62C54CDC2A527522EA99DB │ │ │ │ -7457D4B920CD61665E93BB7B8847F8678BFA97383EFAA12F13AC7635A071DDDA │ │ │ │ -21218D13AE983BABC39B3A015D4551D720AB112DE017169E84AFD270B12248C5 │ │ │ │ -4D6E7CDAC3E288E56CFE83E9A212D89C767401787E67D8514A802DCA4A27B227 │ │ │ │ -31EA04F5C8FC6A1A11768EB1C4372577BEA02DA5A19DA0B8919CB817DA633529 │ │ │ │ -C87CB39DA0226D0ED5876A1D2A1EA46D93A88B2D580BFC341153686F0DB7EBD3 │ │ │ │ -9058F4006608829E69E9870242DD7FFE7D4B7FD7138D5C9187BF17E5B8F3D4C7 │ │ │ │ -83FE4B761B0C928A22C191B521BA6C6B2695E48A7CA84FA543D67493814DFBC4 │ │ │ │ -1DC573770800B4060A7A35E68DF58D8FE72DC03FF45C297F3A86B2910FEE528A │ │ │ │ -54340EA56216098FFC925EA591C80802E0D0E2E25F246D7D0EC6AE74CE046447 │ │ │ │ -062E11E45F8539E12B651013E6F4D2756A458A8152A1053A2FD711868CEA3F47 │ │ │ │ -7C80F5D677517590114B536B71FE7D12EED198831CC188E276D8F19D963D769A │ │ │ │ -957C8AFB9729C5C9C969750D8757998F2BFF29C693CE9B988C90E4FD9DF23916 │ │ │ │ -C0C8BA5AD294629E8CC5B5E732868A48B0CA9B048E11E299718A8539F3B705C9 │ │ │ │ -351F6E26EF0B5E9B80AF3EBCD7FF016D921C1E4547CE90C3412C8D6261BC75F1 │ │ │ │ -AAE4F3CD40F1A7ADE55276E9B4D4ED077FCC9E8CEC40B57F690877154DC7EC4A │ │ │ │ -EEE034E9C8A356B0FEDF07A51ABC8E9A9B550084EF25D240184E875DCCF00A3D │ │ │ │ -53697C8968E43532A7AA06C50EE2AD05610D75B0CDB937442E3B2BA3E319D31D │ │ │ │ -5397632B7CE89925D6047A5E3A40C0E9F3C12541E62372127F2E5C39B160F080 │ │ │ │ -6C6ED49F38539D3075D1DD49F1E436A1E85E89276926CA719549F8CFE54516D8 │ │ │ │ -AF9D62D1296BA9B10F4CD7566EC9FA2DE66852914642B6BFB1E37BF82B30CC81 │ │ │ │ -AD0009C79CBC7AA1ACDE8BB2EE60FA6661C4C139CC43DCE60915F3FC487F54EB │ │ │ │ -23A1CE0A3B193BE97E124AAA8CCF6171E88C941F8466D502F09E6867A2D51A2E │ │ │ │ -DD9E86EEE07A0860D15304FD25474929224E3C08CB5979FC19ADE612D3EDF34A │ │ │ │ -DE8A00607ACEDC98A05473C7B86A34C2465114BE6EB0581FC7B9CC5CD3C296C1 │ │ │ │ -5EDF156010C2C7D3BA3985A929BC93AF90DF7884C65DA9C014016C044E75C0F2 │ │ │ │ -F08714635D9692104CEF2D50B5265FFE8B7CF76E2F3DD082FA2BDF75C666080E │ │ │ │ -DC5E880B04386DF831EC43C7E7C3F4791AFAB4DCCE9CD680986B73AB6D57523D │ │ │ │ -CC9548AF953BD9C73ED3C7D4B3DCF34D5D2F8B4B32984F45BAF037FBB22671DC │ │ │ │ -EFE41FFC9F2C370B00615F5F81619D03DE518E3028938B21A0B682C772CFB6AD │ │ │ │ -1C136630E2C10FB2F8DFE09270164E9A907EE2181793396CB173040347EBDE05 │ │ │ │ -673D0EE4B49619F52EC5A841AA24247BBE71CBA913E95FB02452374D8FE61895 │ │ │ │ -FA610C5963F5EA6DB2ABB1 │ │ │ │ +2F2CF265A5AE5DF94A417B9C586F6B9C596D5A5CEFE74F770B8779D3CDEACF5E │ │ │ │ +4DEC459759D7D3D77E7B60A16227426FF8C81730EEBF03D84CCD2B72602D2A8F │ │ │ │ +76384DB473890FA5F27B754832C547717B04A1FC5EBFE112917604D7233B3B9F │ │ │ │ +FE133B09AAFC8C60E806F3A2A811EB19B57E9F174F71E74E1BF08845925D5CEE │ │ │ │ +D8B32184B962EEFF0432AE8F4ACD5D181C186B6C87AE283E6F3B6399730155B1 │ │ │ │ +34BC5A74637D22B4AC24A765F4CB1881306E9D114472DB2D8482D3E70456875D │ │ │ │ +74EC2A7E24F94C1B867EA193FADA6F132370A02A7F704404421DBBEEF4D377B0 │ │ │ │ +6FD3B44C4B53DF870E932BA700422DD125FC00D210197A2B78C149C9C3BF04A4 │ │ │ │ +E3EF6A6176E23204BCFB04D985B1196C831374A8CD31383AFB3C87043C72FA82 │ │ │ │ +A1B0ED2BA5E4D5BA203A2AA4BFD55326A66FCCDB12DCBD02B6ED0F28E45EECA8 │ │ │ │ +70BEDF7F2909377917D58E976F8283A3B798F7905E325CBCF79DC80AB64453B8 │ │ │ │ +5A622A384230B4229D6DE94BA7D1CFAAB8227EB9931552D0098567342D498AEA │ │ │ │ +D55F4826ED6ABA190A03260CF4D1B0C4836CE4EAD15879E10551DFD35A8C5E63 │ │ │ │ +97F7C2E5B1106EED3746A1716376B43FA6D812C42A0F4E7DC8228619785077D9 │ │ │ │ +91391138EA6A07CE358D213C09806D499A88D575358723E331CB230DD4CB1274 │ │ │ │ +7BDB660BA3129D27BE899A0764CA6BE06A84B08C9EA649010DAD65570A579F24 │ │ │ │ +1F3EB9F89B2155DDAF488C120BBE1D5076E650B4C5654ACB4DC2C72ED33769F8 │ │ │ │ +ED6B343D0711FB967996E7A9565B70A4C034294C82806EDD634136CE03248079 │ │ │ │ +1DA779C965AD668C8C5FFCBD07A47E02070040A5885DF629FFD3A7E76D4A1D4D │ │ │ │ +01D0DBA6AD4F426E594CB35EE53C257B40AA8CF44225460EB8494C6982CF4D59 │ │ │ │ +3A4F7825FA8D79C0B9EA5E5EF17918B1CE74AD5BD5E7169C9923A4920CE410B9 │ │ │ │ +0E9C0BD24BB85D03D1530A92C67AC9732BB672FFD9416A5A116BAEE3A6193A38 │ │ │ │ +CC10A05E93526AEFBC819FC8B65BB130B0DD8C06E3EE0CE25776103FE7CC881A │ │ │ │ +9E3A1121EEF956B5A770649A06E11DD28ABA0B0D1B68DB21F53E99296F7AE36F │ │ │ │ +691E954C385ADC52EF9690C8D7FA95C2B6FEB44357D10B7F717BC70696618BBF │ │ │ │ +E3A012DD555A280EF0B2C240DCAD70AF0A9703075E1EDEC812D99B1A08D59C87 │ │ │ │ +58521F81D703BC61AE5D4EB284F8DA488428D6869FF4670A1520D59A401A999A │ │ │ │ +22D19E173890B3E9698B9ED55C8C7FF3F789F01EA81A0A2B99552B23759790EB │ │ │ │ +A5F1D788CC598E77F9518D9038B8B79B8313C8AF2A1264D3C86CCD22066B0E54 │ │ │ │ +32A7ABDD1AE6BB87DCEC32FD1400D906F44221BD32241F48A15D4E3A199B0F26 │ │ │ │ +6CEDC053E349725B4561F6A5296E2F47A2400B3FE3B77DE65A7501E5AEF71FCD │ │ │ │ +05F8FFA93EC93A6FB0DB90D34C4348889EABA9DA681669924E87648FD150449E │ │ │ │ +0B6FE365E01E14F7F294F2788DD2385D947C66737BF96FB93518517C392892C7 │ │ │ │ +F2081D9E7E391085FBD7EB667FA3F53DD111F46CCF266651F2D558F3A0C42D79 │ │ │ │ +C2070707527921D721D6498E099C06571F7EBC621B9EA0D60DECF8A2F34499E7 │ │ │ │ +EA49C46460E8C128FE1FA46C9C4940516B4DA00629ED7A9A8F2C364CE680FB0C │ │ │ │ +AD53BA7F20DA1B99715D3AED68046B3AE4C10B5C03286FFA7BCCBF56BCE7B802 │ │ │ │ +AF5344A759211DD35A6077A474AD3E8B10EA45DD44571B5D3A8983BDED82C5C7 │ │ │ │ +660F1506FACBA3ED05EAE398F8095477EEFD7238F73CC022468DDB67D4558876 │ │ │ │ +E85ABBF7541A141E0B052AEF6C62C2A0748084843B09128E9FE409971844019C │ │ │ │ +82B7EAF03319FF846A2E6707D047B3AFFDF87C0DA5917FC47A2554CC1E736F98 │ │ │ │ +E77EE7D74498E097B7FB558D65C756C9B73AFCA15F5FEDBC78EF46EE9D14DF48 │ │ │ │ +2D797E0DF68469BB49E008EE8FDDB5EC872AA4D3BA193E10811EF4177DAA00B6 │ │ │ │ +B64EC65024E9E83CF191FDD637522BB3D6E7F21C6E81B2C68D891B85DA251586 │ │ │ │ +82DC0961E419975B82D1E6A2450AB3E5E916C062926194CB8EE1154D9F0E339E │ │ │ │ +FF582865F5E06A63A41511F49DDC0096F7588B3330FC8EFF1226E5D2FC5AD689 │ │ │ │ +2171ED081FE1C78D6D171A155F7EDCD6BA097633696D8C8C5C20394BA78EFBC9 │ │ │ │ +7FD265FB00A397376DD0B38D36A5000F2B60E9394E56D8896B3275DF1E3A4069 │ │ │ │ +898261B00BAD0CD4EC4A11ACE2A3A093A3C6904032FF830A819E48EBE9BF7B5E │ │ │ │ +ABD9E0CC88495925906B5DFAB5B2CE3CA5759C336295F11DEC06CBB6E126C8D3 │ │ │ │ +E229CA676155EF3D6890D1C79DF4F7070D60E3EF0341B3501F8B7660986891B2 │ │ │ │ +85EBB35A996A6FE3C301E29F22B9811945694DBE185CEEDA68C589706705BDFD │ │ │ │ +0A48450D7F8188AE1FAB14501073EFFCE4F38CE5590615252E61A29EB4151582 │ │ │ │ +7DC07F1B0711424604E9B35110D85C8BB53622254C72F499A3C0D8B4B7C62CB3 │ │ │ │ +D696D8936970F74F1DCE04C119695FBB831227CDEA1F569E0557AE3448577E78 │ │ │ │ +59120BDDEA2D2D1F1594786E6232A5402E4D74C41B31645964670B4817024D69 │ │ │ │ +782C67855720C47FB0C539624733533E20C1C7D0F520E941AFF2EE1285C4E8DD │ │ │ │ +195776DF58061AFBE5121C14993098F90EB4CC8C481992EAEE1E2BAFCB2424B9 │ │ │ │ +FDC31DCB528AFF660F0CEB6EF8EE044A26CB855ECD059FF5BA1AB6B12645B7EB │ │ │ │ +3E5BF78AD99E61E050E4888EEBC8FB0BDD305AE0FB5BD918A953818F9ABC3EE2 │ │ │ │ +08EF8679DBBA25B7B8130AAE31C8A9B265AECBC74E41E667625502D7F0A7DBDB │ │ │ │ +89D0EE3BB6CBE85947517774CC7770E76B290FE0A58E02F2F5579A26F229FF86 │ │ │ │ +74A17E96D9C15BFAB712C0616C12DDF217A2F52A9756E588C2DFA7A57FE4F79E │ │ │ │ +C61B520AF8071BA801FFDF20BBF46D03E6B1E66EDF60364B379F635C558315C7 │ │ │ │ +7E80123918A83823788676903FDB4F1FBE828A998A93065A0758E3A53C2CBAB3 │ │ │ │ +557CC846F1E9A38CB54BF131101C1A3FA879DD903C6BA78AA04B89C9CAC99D59 │ │ │ │ +B55B607F8FEC57E840B3D725B0F6A767C291005A6948D3DE003C93E3A3481626 │ │ │ │ +7CE0A2B3E523C2A2CED2C0B2CEC0AA885A8C55A19D97C1569BAFF8866216A002 │ │ │ │ +210C9A4AF5184BA938AA8C03CC4F4B5D48ABF3DCB97CD6C219822581284D589F │ │ │ │ +AB08D4B0E465F4E3F04B960FD7C1D913EB58F2B6A79C9CA0C2E16E45B83F6BBD │ │ │ │ +60A04A0B684C468FB0481E69240F4247A7635DB006E00C1E31D2424F021108EA │ │ │ │ +A5B8FDFACEAD6435EAAA4FA4BC7FCF4868AE7459BC7B043C98AF7533376108D4 │ │ │ │ +D12E5AD4EB20E89EA56FBDC96F1D9D11163492EFC1AE8D90022F703D77697B6B │ │ │ │ +77376763B624404AC9CF3A4F821AABCD16D549652652796C456874F5B0970743 │ │ │ │ +CBC0F4848E8881E1C424C06F776BD51C0210DAFA3E5844FD7F6BA7615716DAF0 │ │ │ │ +2E9B913C1391D099363FD863E4A3A6D154A97A3AE171F3D3C7DF748771F1E199 │ │ │ │ +76027D7D73C26982313D5458222511780076BD46B1620EF37F2B453F53BE5ECA │ │ │ │ +14087A46D9787C37C62FB2E8D0D606C81BA7FEEBF19017A23C81797A11475A5C │ │ │ │ +1586D56CD0AD9FD6BA74217DBA1FDDCFA9157FF2A3FC803807C2D121E6505F4A │ │ │ │ +C4C7F0409004D5A38FE927EAE7F62940E34B1E303373DE065B966126DD95FC99 │ │ │ │ +601B2C3C2040A86DD752CE3E3A9A0E0F8C00AE9370B21E2964F2218BFECCD540 │ │ │ │ +12FDA937747732439D69364BA8B54C5BD50D5A3842F5F361B09E36874009966C │ │ │ │ +1F39B7C495B5BAEC8FEAE39AD96F75FE80CB5001152595D31ADA0EB14280C493 │ │ │ │ +57DA4D95BF116C42EE1CD9CA4E6DFC18A57E447E1D945781B37B7209CD9F211C │ │ │ │ +78E18D3B3B9B16A74F9C2D98B1DDB7E0662942904029082AF2FD40845C738FE6 │ │ │ │ +928DE49FC1AAA6D19EA7981CE2FAFF3C3679E485B8EB3238AE389041D75E8939 │ │ │ │ +6F64CA9BF222C02ACC7E3680996AA2AFDBC5C8B143EF4DF66DE14BB0584D28F6 │ │ │ │ +E8A019D023CB0B6529D649577C0B6A646EA8D2300C587FB30559FA3363169894 │ │ │ │ +4A2F8450A25992715BB25EB005434BCE5F275F126F0E7BBD3AAEB3CF5D444858 │ │ │ │ +07776B493454F23499E7A9ED4C77BF9DD6CEC6E11C31744BD8172CF8B5F987DE │ │ │ │ +E0FD8D7F7C7CFF2534AF7301450D644EA39A6CBE43A16A260B509EC79A39FABE │ │ │ │ +47C27874E915EC65610AF6A97E9532E8EBC5B38E543771D57D3EDBAE0282EF6D │ │ │ │ +22BCA5FD82690BD5494FDB7B58E21A617E32EA19E4F0C336E8934576F33879D3 │ │ │ │ +10C2E50A7233E63697F106D8D3561AACFA4DA2F1DD05B35A00A0FFDC1F733C06 │ │ │ │ +848AA05B8E4EAEDBA4EBA797FDC538D544B9B7289BAA0923E7896448DF36AD46 │ │ │ │ +3DCE933A5B899D1181736898FE7382DC2995B21B32F3A7FED214F8EE1628C407 │ │ │ │ +C8A3E94462F9F327912436474B88EC8148EA7366853ED0EC15B5E074AE2AFD33 │ │ │ │ +E4F233C86F8EB6FDFCAD18AE78556759F3BBE900AC320EB1305644F8D1C8D1F4 │ │ │ │ +3D2226557D2ED3BDAA45AB186C492CBC871988D35D0BB8463ABA89D5FD231AFB │ │ │ │ +821B2691088144F4C98ABFD99BEEB8CDEBEFBCC57B2798B567E04CA30685C7C2 │ │ │ │ +4E70ACB8BCAAD9F1DE0E29F6E984C517B31E3F7F9881A185F35E679F858884C6 │ │ │ │ +A9E3754CE9F593ADCC4D30FDBC5BDE9AD29997FCD99E5E6490F5C1EBB1F996BB │ │ │ │ +B872B42C9AF9FB5CAE9D3607C28B367AB6B620956FDE5888ED8192C17355A48A │ │ │ │ +782FFD2855E5A856B6DBE826DEAA8ACC743CB27B5933FC189B5C4ABC09E68F60 │ │ │ │ +BF8A14AB6E55B0B8B40C52C4D60B2AAC0831E29573C1940442F8F720A1374AA7 │ │ │ │ +1E0785BC13422E8AD2D6660EF738773CEB893A6668881D9A59B5DDADE0A59962 │ │ │ │ +0121DD42BBB510E463BF0A213F5E04092B924B28E47B53919A62E70F95D4F78C │ │ │ │ +7CE2F9432392114393059068063F309FDD7BDCD193B9EDE6B73822064071B408 │ │ │ │ +DFB36AD3FCBB3F06AE1C8EF533FB56AAB59CB54527366A5776DE60140F5779E2 │ │ │ │ +D56566DB970B1091F3F7D59958224C123BEC5CF07ACBCD89F9CE774D0AFE2409 │ │ │ │ +76397D06E16758ED16F019A56E61C2F0A44CE1ECDD1E8A039D362F170BF32E63 │ │ │ │ +F2DCB58C43EFCE6302D170F33D9BD7AA326F6E891F32502E11F89CA4B8F7B826 │ │ │ │ +5200E5CE728D3805D80F79FBC2CA8A2DF68DD2B47BB27D5160E83E5895AAE442 │ │ │ │ +16F45732D3330C1171238E032BA9D4F6B21EE0A528913E41A3F133A05FFCDC30 │ │ │ │ +2043066FE8ED2D911E1BF79ECAD1123D07877B187416D6B038DD61EC6517BDBF │ │ │ │ +06EA76456EFBA422983CFCC345AE3CF1FA6CFA78CC10DF9AFDC86F6CFE523AE0 │ │ │ │ +0728DCFF7F5591F697D1E36AB0B86D40DD5DACCAB0606AB2A2AA4205A8433F02 │ │ │ │ +D2FD72E2A2852C216FE63BD6377272471C5834B6B4B3F02ED6758C8709C7688E │ │ │ │ +C702A89A6FBAF92E517D0D06ADE98CAEC310D3435F91124DD98FB0ADC43C03C8 │ │ │ │ +6D0FE237FE9914936F75F118672A09DAEEB578DE85EA01477BF1B41FB8B6B2E6 │ │ │ │ +2C3822B9FFACAC0B15B92B38 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -6741,14 +6747,15 @@ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ /UnderlineThickness 50 def │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ +dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ dup 54 /six put │ │ │ │ dup 65 /A put │ │ │ │ dup 66 /B put │ │ │ │ dup 67 /C put │ │ │ │ dup 71 /G put │ │ │ │ dup 74 /J put │ │ │ │ @@ -6948,168 +6955,172 @@ │ │ │ │ 82032FBD2FCB6E403D34B85ED4053A8CB619BDD4DE001F4C3007B1F317579651 │ │ │ │ E6D6662189CC2D95AB85D7473F65C5D7B4AC63B0FE928F3400035D5A9D443D0D │ │ │ │ F3532B99F3AC26CB25EA3CD64C341159061E02EFBC7C033C05CD919BBD827A6A │ │ │ │ BFCF3BD739E32E7FE909AEE068D50FAC33605FFF98C7D0115FB860178FD03DB9 │ │ │ │ 7985B78E0AC21F2EA065FA841F5928FB85163B2E2D8F850DC7EE313912C45C28 │ │ │ │ 2783F6762C67882EFEDDC7E7567F91C16B16FD8D5A1ABF35B5586307701B91AD │ │ │ │ 54984598F2AD46FEE3D68A2731BEAA754C8E730FE0E84952EF77930E4118F8D7 │ │ │ │ -2F3AD75524D5E58AE6AECB03D4CBFD830FB0F0780328B678652E55328E0BFCF2 │ │ │ │ -278479E7168F2FCE946A848E9AC0602F0FE1C9DF31A012574FB8B2ACC2214FCC │ │ │ │ -5F4B34C81506D94CC2B500B14544D2A74596A85B827C1376921947F8F10FC7A4 │ │ │ │ -61917FDA0AA725845222E69CC2397FAF8655A7B3FF11F1F6467697D4D57AC289 │ │ │ │ -7225E6E7ADBC2C3D433BD9276DAF1033717B95A323950A8822753CD8BD5B3014 │ │ │ │ -31F192BC693DEB1F6CF3704FB316C0BFFA4A058D7E0A250238D419CC48EA8950 │ │ │ │ -066E629626449751568F03E1436DFF3D88D3FC77C3A974843DBCF673317ABAC7 │ │ │ │ -FE23F77A341043CE4CB789A219DB882B9670AB79D70A3C8B6A0E582F66188923 │ │ │ │ -CA072E0E095303BA68DD66330552A146EF07CE7D511092B2997C9899966AC30D │ │ │ │ -044104601D767C0824234B3FBF4803CF3DC06C93373D49F57E07B8E66AA2F216 │ │ │ │ -F50DD9F2893D8D4BD1C3AC4DF7BD9151B7305B67CF807DC64905132F66CC0C47 │ │ │ │ -9F352E2FDDFB1A418D9B05F794358C8CB7B717949775A28411BCA2D2D414F96C │ │ │ │ -0F0FB2F57E2CCA56509F11AD49F3FA99CF5FCC6FE8B1770E7F92CE2FC319178A │ │ │ │ -51D2BB0815C9EB21277FEE4F29473F5BAD1A7096B7D213A6D617348CDF693EC1 │ │ │ │ -AD03233B543535E98147A949351308EAED49C72064745B1E2D40180A087B0AE1 │ │ │ │ -448C53D9187740F0FCCA5CBD7F173F3070548463E29AC7C91DB041E1BAB65273 │ │ │ │ -F271DC5E59F9BED46C41AF86680F59841AB708E15CA18BB62DF5BC1C62D9FB7D │ │ │ │ -5D338B89A9F09F0C0E2178572DEC0DAD62F626C9A901605B3DF06AAD830711E7 │ │ │ │ -B4BD262630D5DFF57477429311881E7469A5E53301CC6FD238139A60BE254F10 │ │ │ │ -DA24508D41FDD322955935ECF5B3845A14A6DC01350DDEACD3C599E364EAB974 │ │ │ │ -685AB8F8E14A7959731A74DCEA5ADC1E6091899BC9268F821CB52BBE1F95C9D5 │ │ │ │ -327774F2737D2DDE4A96F17367AC6EC3DFC72A9BBB3F3451335B5D1B26FE52F4 │ │ │ │ -CDF83F9F0FA2986C792E5770B10B7ABC99B0C5684955745869E9D67754FC237B │ │ │ │ -00A42B1DD2BD47E939D50DAC41578CF8CA9F0B668A74A4F74CB391B0358F921E │ │ │ │ -BAF95873F40723C055701E25EFC3BDA79D6916C9F9A31E2EBF35817897A10607 │ │ │ │ -DBCBD95F57F2728E2EB5EFCA07DD8CD1A7B848114FBC30A56E59D1153A68DB8C │ │ │ │ -97B3597BE8DD715E5F7A5B4061FC3BDB602B431F6D89DA6E8D376C63D2EBC45A │ │ │ │ -3448887948FF0F11A7BD78C2EFBFA2B8E43C7C6F12CF7D790D5A94D42A696C2A │ │ │ │ -859EB5AB34B630AB537F1487228E331CB0C62095AD2EE4F3C37B56C8E91DDD5D │ │ │ │ -90BE21D7C68BDC06C12A96CC1B9D5123C84B2BD087CD18FD91969D10C982B996 │ │ │ │ -423A9FF5480FDEB09B560509388914080FF82319DBC11FADD0B392A226DFF499 │ │ │ │ -3FFFE4FCE13820E3A9B7711A1D9324E78AD9463FF0719F7941EC91235F55D7EC │ │ │ │ -275BC128D1878D3D1AD2A02F580EAC6A9A4BE7E5C8F47F05FD7867744E42E239 │ │ │ │ -6FECA6C030F58CA2072A8CDAEECA72183713102B38D50B9153FC3F124DFCFF13 │ │ │ │ -CD988F7140FBC46A9CBD124F87D358C6FBD4BBA3CE14101AAF4071E94BB739BC │ │ │ │ -4D5848A8F60FEE2628B7BDD9B31A10446E7098A2D309254189334A04131F268D │ │ │ │ -4C233C1FF342BB294383F2C1D20CF238FE3CCE3036BB52157D91D38AD5F82090 │ │ │ │ -72E817DF3E5AF698ED859A2FAD0A567446881EF856FCBA98E85C3F8A10475E3D │ │ │ │ -3F649628BA79A0670A75CCDC9240F4FD5A1EA1451C8527EF7C3062DB1E08297D │ │ │ │ -AD828CF1CE2F42BB13583087AA1EEE4A43A4D9D46119E6C8060E205D3885F234 │ │ │ │ -EAC0F8869F104E96B180513AC74D26194C050D21F49D40B6BAD5271BDA8A59CA │ │ │ │ -65E6BA9C70231F227721FC10EE5851BF06C9CF84C00D9078456AE9C10A602C6F │ │ │ │ -A0FAB93A8D97406C6B90FE15B89E1874718B5D877E73FF711C4441595796DF2C │ │ │ │ -C27F202666674E5E3E585B5F635B4BEACB8F24E119DEA87B14889A1BEE68DEF5 │ │ │ │ -15D66D385EA26EFE5A9D1CFEBB2D6D51ECE55120406A50646E1734856E9FEBCF │ │ │ │ -B5838E72DE96B0351A7226817FCAF7A801ED0B653362947D405CCE96290DB9A3 │ │ │ │ -E0515B94BFD882193ECAA8A6D7D58232546A36511C0A07F1B3E6343E57863465 │ │ │ │ -4362B51D7A13518E2F36B16A4772B5FBDAC01BA256DE73FC415CBC1FCCB15F92 │ │ │ │ -3BEB20AF36AC6AF6875F3BAF01CDE8614954BEDC3B645C9FA5DE7E46AF1FACD9 │ │ │ │ -9453A07D2B554C4125A0D15784FA6FBFDB1DD810F68C762DF2FAC3583E84A7C7 │ │ │ │ -24F26A3343C9ED5B36534E94D715A7F03732AE613F056CCB749FFAB7412CCE7F │ │ │ │ -C1610253425E962AED832B2BCD703A34E68CD274B962C10039686257AE40C418 │ │ │ │ -F309F31CFF57E16679C4BB2393B8494B1CB02168718284BEB26F258CF07A9E5F │ │ │ │ -3B7412B92264867713CC64D3375AE135E4123E38DAB2D20CAD52DA7A34DA848A │ │ │ │ -87CB80F5BE18BBAAF970CDCEE36EFAADFF54D9A7443E4FDEBD9D9EA3B3E423B2 │ │ │ │ -5F3D6974566039FF70191CC2E5E4008601FEF3EF3E2D9862C79FC05319CBE806 │ │ │ │ -4D6C77ECE741EA015CC991B2571177D10DC371FBBEDD5FFDC21B70C7587C7A12 │ │ │ │ -1EB91127206C95EB9420DC9CD13CA5217E107B3202E8FBD3866E453A7D772877 │ │ │ │ -249CDB747F48C4D6B90C93026526BE7EE9A4B05FC51669A92F5CA8551B7EA1D7 │ │ │ │ -8CF47A474C9E6C73E5FC79E664583C08545AECCE83DD29AB5E98A4B4085F9718 │ │ │ │ -5893138A7AAFB3DA6BD5B814145AC0FAE72B46D6CB7E02D9872A46326A029C11 │ │ │ │ -B0DC6571301775C5BC58A8CBAE8E81B83C18376520B3114147871981D7F98DA5 │ │ │ │ -E5BA725F5C4D14CE79BB5166C4408985DF3A812DDCEF03DDF50BD5EC4EF54E72 │ │ │ │ -C353A1D9114B1FAE83D710740234185A5F645CB0D09B1B62C862AC02A9FD7353 │ │ │ │ -97A7833DF2F33AAA4839888C98216F27B1E095E50CDDA7E715A4D79BF860BE14 │ │ │ │ -0F91D5DDFFE8EE3448AAFA195CFB741AB127ED17CAA9C852FD1AB37BD42B5E43 │ │ │ │ -B15C8501C7AF602644A7EB3FFEBF505347E2E71286388AE6C64709AFDFDEB3AA │ │ │ │ -CA2E0CEA54AB5F4AF1492FD1EB7823583F279FF4C3D1C4C77BA1B7B4DFCCB5C7 │ │ │ │ -10D5EE1A4746618C6D49C7AEA65B8BBB6FB74CEBCFFD03782CB7400BCE84F592 │ │ │ │ -3C4CE173CC8354355FA3190FEE338D6E6187592CDEDF60725BD725CD96E92C26 │ │ │ │ -A30F800A1527C6BBD16AE03119DB273659D6E65B2E7D1C22134028A299021DFD │ │ │ │ -7288060D401DC9157C3123D1D64B388F7171416A929678A6C3FE3BBCB9490737 │ │ │ │ -37D240CA6CEE90B57347BD6D09DCC68B023AA3650B7A4BC7B09E0C836D8EAC18 │ │ │ │ -B41D91A83BF73D2D5D34D76EAF0EF241DB365083DC1F621636DAC0000A0FFE30 │ │ │ │ -BD3815B10FDE8DF2FB374EB0C075AE8AB8F5DFDE60F3B104A05FE202658069A2 │ │ │ │ -3C68371514646941A5BE6D1C2BB4DC7007A29DF6B2BD3AD5FB39C8D27BD9030F │ │ │ │ -BB20E1088405E8DD1BCFFDE6899E7EDE12F0B335F95E17290341FF076A5299F6 │ │ │ │ -55EA909928D2BBA0FBF4BAB967AB0EFF90F6C00468ECA59153C4D7C426F07EB7 │ │ │ │ -71FD5CC1D50215D5EDFC4DFA7A778D654B2E08B0F0D375589400C117DF95189D │ │ │ │ -8675C77556687120488468F0CC374EA6FB99213107FE1CBFD85CA377A84B6416 │ │ │ │ -5161DB3C5D4F5C6ACB47D403256775D986247661C38BE96CFBE6720C1B9F5A63 │ │ │ │ -76EA84A776041CEBE45BE732CC2BF53E7A74876EA1DF1965F358ABD40AED75CD │ │ │ │ -26287C30146386BBB6AA2CC74282A7C0E3C03A777052FF57E6080A0AA05FA664 │ │ │ │ -CF481781D633EA00F9A195DD3A1F4D204A8CD3D6C46358563A21737D5FA8126A │ │ │ │ -786AEB42FE62AAC2633BB0BA74DC93E3A6A13F5F9EBBA494C3C8208E2795B848 │ │ │ │ -3BA76D4F9966189BA52166BD79D6F940DFE515F5CDD7CD9871BC9CBFB1F0FC1C │ │ │ │ -0B5B150F4FB2826A6AE8E94BAD174EC1B30B318967774FE0D65DFD38D23E36D9 │ │ │ │ -7D2BC2325CDE1FD64653AB2CA4089693F0D1CEBD8069B272EA320D4F55CEEB7C │ │ │ │ -0A0100A53CC4DBC05C2ACF9F534D5164540A35D66D1ACA38FBFED0B3128B2DC5 │ │ │ │ -67E4CF89AE5E032BC857080C0FD229B3B9FBC73F660218ACDC8F3CF5614AF85D │ │ │ │ -9E5D0DECD252CFB337922B14B553C37E368963F685E6C5E34360D88051F417A5 │ │ │ │ -B888623CCDBB30E7A319AD09D4ADD08F55F51DBE73639A59249F7374FA8ED5D0 │ │ │ │ -8FBEBC401FC3DA1F5581BCBB14685A028660549E652F36ADF1FB721B759018DB │ │ │ │ -0E6A94C0317E1AA5C3D4D74E85AFF56B0F963058222B14A00AF36BD7E8113FDC │ │ │ │ -14C81D16A1496B1CFA552C177D3A06A374CF2BC3C24B6F166DB4588E34765613 │ │ │ │ -AB85414FA8D881506C4A08704E8F68CEF32AC93C2A36ED6101B24BFAF2D2EE91 │ │ │ │ -211167883E7B42F241EEE85060F665A03D03A5B4E30DF5DE7B1CD27292C25B4C │ │ │ │ -CDB655B1CF26E17599BECB4BFA2BE45CD8FE7F1CBCA48D28BB363416C0C21F02 │ │ │ │ -2F4D67F6711D1D74977DF7DEEBE4E9A5610F0A00891AF08363F1484C2935B33C │ │ │ │ -AB725CAA701FACDEB8476723C77A783924750580FB4BB9F6B0392A41E17104BC │ │ │ │ -AD0E9FA0A268F3174743476F4F22C1763592AFA34D42B83F5A8C8E6D7527FF1C │ │ │ │ -3E0573FED756E5E18974AF30BD55E7EBE3107BF9D1D3D5928EB74C1852137F00 │ │ │ │ -253BF6A312A8386D3920F0F548E3E4AAA2D13849A57FABB49296A58AA35DEDCA │ │ │ │ -3D5800F94E7DE1FB65A7080EA094F029AB688F6D974ACD29C45698DBE9972542 │ │ │ │ -DC26A6DBE3F9D63F6B5B50EDCB63AB1F301458C79603211E0868612243AF6CB1 │ │ │ │ -391D87052F1C52693257DA2FB018FBECF4670F7BB9C0F8BA500CA9B259502263 │ │ │ │ -3439BF7E6A0BC68F76BA7A9129C5E08D4CD3854B3B4A25F676208FE91C202883 │ │ │ │ -01CDBD9248B3554E003334B9A1CC07BA8B7FDD6BE1C6708F2F0AF98648719410 │ │ │ │ -7C63BFFEECD05A5C7C5BB6C72F14F091EC6A78195C716B16E073110A8E2CE17E │ │ │ │ -3DC54847983304912F0513DEEF0662DFF78F2343B27738757D61C2F4D6FDBB11 │ │ │ │ -688CB4E5529963293B4C3361878E82980E6898BD6D0C6BCEBFA7D3646271FD65 │ │ │ │ -59686C9F5E6155CBFD726BDCFAE166AF704F2D263BEACE05EA4C4A1EDBB8754A │ │ │ │ -798F49CF236D86B9870FCF69CF916D20AA8AEE93FD965D60A17DD670FE948AFE │ │ │ │ -E948E3D2D776F0B47D502A8723E4642BD44ACD4CF05ADAB8CBA83DF6DF7E2830 │ │ │ │ -46121404F3F92E09A297C339A9C18EA0BF2D3BF6AAB1780BE54FA85B1B39A55F │ │ │ │ -AB2B9FD1D6F976D8C81705BBC5773C4140EF1A5475FB030FB028E5E8DA695416 │ │ │ │ -3D2780BA92F1DEC2B6E0FF5B01A7A24A1F963CA5E6D2513511D3066B93BD5AD6 │ │ │ │ -DECADB4BFD879A5A97FBC703D0ED1E3B804F871E44BC30E7226D3FA9A0A42D2F │ │ │ │ -A72E62913104C43DC8C81BE446052E497A6A833E0881A808770B9B39214BA3C1 │ │ │ │ -21BF3C6596B55DE034C7BC6887A59BA0B82EEEF37024EBB5B758FF559BDB65DB │ │ │ │ -A5BD82F00B664DEE765AD1F496B26DA564510B9D030D5D90B8924C621353D041 │ │ │ │ -DD10B0C97E2F7783E727D519CF8E52F3E57B41C73CD2A059CCBD2EB5A37C4FD6 │ │ │ │ -76E20CF2CB0786C63428371C653E8265ABD70B0E3CB434D923B0F665AF090843 │ │ │ │ -10000A73DB151216C9EB562F65C3DBDDAC70F9D92387AC7D9C4C9C49A095BD57 │ │ │ │ -64915A21233CC073404C93302283BC2B3153850C0E8D7E4FBEC75714ADB6FA5F │ │ │ │ -2D8BFE1E120AC0B5097D76B2FFA2FF964E819102E489C2F82691057EC5CFAD7D │ │ │ │ -A06C9E8D8A8D68AE69487278A59088376EB5250E7AF5ACD2334301499C88C29A │ │ │ │ -7A66D256FE9791E567E9943010343AE445D82FB7270CC3E6DB95437F7EAE8B93 │ │ │ │ -B792B94F6B47D3B09E09FBD703825854F93893DC7B45EE2323CA5A5A5CFBF81F │ │ │ │ -BCCC4352404BDD322E9788CE15D4054042DB10E629565E841B4098228F20DB1F │ │ │ │ -F7CF26C3CB9D307655FDAAD96A5F4BA5B402DB87F318859AE627FD5B03035B9D │ │ │ │ -4370485524E78363DA1D0E8C0655A124D0B357DE06A44C9C640D454D9E918B9C │ │ │ │ -76ADD2C85B388FD58A3636DFA55EF7AB12A57DDBE4555FAF880F0A721766F9D9 │ │ │ │ -A6763FF50323EF6F57C09797B21578E891B29A5C637058C28D263D174F55B819 │ │ │ │ -CECEC992EFBD9848DC153FAB5ADCDB510015F8CDC7FC63764BAE19CB9BEA5755 │ │ │ │ -A392ACE63B1A6996C55460FDA11BE530E193758BB136837165D2B1F929145D64 │ │ │ │ -9E468DA5D1700C2CD8BCF6B84590C27AE8C3938C3DEC61BBFC6618040999CFE6 │ │ │ │ -2C1CF99DD3EDFF70DCBFBE35585763931C9D5C36453E5971AD242A170F379AB4 │ │ │ │ -58CA7D4ED517FE8C5A82E24B2A88755E2C2207467B9DBAA8F6E97032CDAFD40B │ │ │ │ -3296987365CB0BFB65B4DE630257BAC0B0AD3521EE1CCC524443A2C6B8C8AF3D │ │ │ │ -F40D06D82D138B2144342C3EB14E8A3EDD6E96422DE9D205C4230698E77D6496 │ │ │ │ -747FA825A52A444044F61C0632017136BDFC0B7890EBC83557D84C7D9C0A6F81 │ │ │ │ -9A722F094441B4C4585FBF59AADF95203731F01AA79D8166ECE9AA836C3CDC8F │ │ │ │ -18E6337C10744B64E6C389D1BA10CCEC8B32D91710B8E2E7CB82155A42875810 │ │ │ │ -606978D08D6D68CCF3F7DA5CC844FC45EFC91D95F494A35AB748AD8A6A43CDE0 │ │ │ │ -F2EEA8F7A701DA946BC79788B7FD891249BFFCAF95F4A7914917A221A143846D │ │ │ │ -EE81C92DE8D55A8A8CD0FBC57416454776912F46CC8980E8F336E73B69E07E74 │ │ │ │ -1AC89F0164B6D9AC502B01296F280563985B74BF0EFAB077D7E67371E32BAC0A │ │ │ │ -3F70DB73C62B71A3FF8B61C5DB4F779F0E89B2A30FC4DD3DDA44348969672215 │ │ │ │ -40D78CA156753C33CFD0BD9F0394300B67E4CB0C21199B8F20D1AAEA336962DC │ │ │ │ -B0BE27B4020560BE9E2A4ABADC4E107B105984EE71FADB32E213DD6013D5803B │ │ │ │ -6D887B39632F02DED21E2C825DED1406137CB1DEFB51557E9F04329C0C392AB0 │ │ │ │ -29FEFAF2C594124C20B0055442742BD78E1BA653FABF194201E77B05F4852572 │ │ │ │ -53449E │ │ │ │ +2F3AD7547F9B0793E20128D03B122C74288283D9B583378FBA48950DCBDF887D │ │ │ │ +0A4C231FE009050F8A0C02473587E1D076F0BDC5458931FB26937C4EF7A7AB76 │ │ │ │ +DF14BDA8C5E27BDD9EC959C6F3FCF0C55E52847705744EE3D80EF426B9760775 │ │ │ │ +F4BD72DF213B715BE0AB9CEF5A9038E3EED7AF454E08ACBBD037E6307A04F331 │ │ │ │ +224C39B55908AC9FA0B8E560F8E78D5027B8266331C62EDF750CC08C0E2EB573 │ │ │ │ +082BB774BD853932B7C0C88BBE5F6E5E9D985792FA21B3180EE9911F823439DE │ │ │ │ +C430774263982682D4B1B76C287D1856702887A9A99B2B5A466FE6CC5B0851DF │ │ │ │ +EFBE62D59C80A0B97E81D0EEF577494C78F03924465B9042C7C6C1FD732CA57D │ │ │ │ +099755095F57ED2389501E3BF0969584ECE08D55FD8D7E95F92B4A0D405E5D61 │ │ │ │ +D10A7CF6B540B64594532EF90FA00CF28271462CB7F96D210E554AE285907A38 │ │ │ │ +EF66F57A40E2302CA4D3864994EC113AA35017C6D9890D1F4990AED4E5E395BA │ │ │ │ +51A1FED7F0E799614AEEFBD6FA24180F06F18DAC1D48FCC97C637130FF5C49AB │ │ │ │ +65E3E993F2CF6A2ED14A5A5CB71EDDAC41F58897B17750F761C131E1951F0F61 │ │ │ │ +1F97660E665F72B8E5106D357D7F673A61FA9399DF549ED13478B0335D7E97DA │ │ │ │ +DB74852BFFEBA827ACFD99EAD434BC753CF4E821275943118CF97A260781E068 │ │ │ │ +B184EEDC5879DC8787E93AAF61C0A4D418A86C33B89A2B8AAF6F49094930434D │ │ │ │ +D0C2E3E47E4C849694F27DD241F3BE91C3DB064D79677FE30BB4275A02AB5703 │ │ │ │ +C2264DE0968934F25B5A855A153CFC062AA83B31F1C6E8FB1AFEB58A64A14B09 │ │ │ │ +67E7B6AF2DA17860B7543EEB6ADCDD16D4B7D4F19B123E2B73FDA8886DDF3A2E │ │ │ │ +F39DE4AD2615BA9D70ED2E138C8881BD57204F6AE1110306B1ECB0085610C216 │ │ │ │ +5A84C86F8BE773B11F30E37559798DA26D7961C7A267C8B81499E7E077BBD80D │ │ │ │ +BBB69281C3B7ACF09293B65EC047F1AA3A0779E9109408BF70CB5B4E5B44A722 │ │ │ │ +4B200F0111C630721C761A88D38352287A824D23571D1A80514F380624C89355 │ │ │ │ +3BF73F4C20F6A70E3253DA0E6C1EA492AF87EBB0A27B73C73F6675D8DEA01071 │ │ │ │ +ED8EF6EC38532ADD031C747FA67225341BB3759D1DDD09011E4AA40D73ED78F7 │ │ │ │ +ADEE1534C6BBCA581C3ED7E08755C91100CE7ACD5EECD6EE728A6CA8669879E0 │ │ │ │ +AF877F84CD27EDA43002392D57956F8595E488368D5F49958052704C8ABA2B1A │ │ │ │ +37AD34B210FDCE0CF3D70604C93EEB27A6DEF24628881044512C2A93E00E3475 │ │ │ │ +71A6027B94846CD4B5D27F4E3B356337CFA27707123BFF3128AEE47FE301824B │ │ │ │ +72DFB08A57F51BEA941F51E59F81A00D6283D4B090AF21BFBE8C482502C7F521 │ │ │ │ +7EDC988BC4323C4F6725083D1C4A10532187D821D30FC638BBBEEF04D7E9F5BF │ │ │ │ +CB2B865C607DCBC8D9B818FF877E88F3B626C36DB05C4A946D2AA22FF0F08474 │ │ │ │ +BDB5AA8EA4DADE0DDDE59C6C6AF1EFF5F555704D4613247513AF158AD2BE6880 │ │ │ │ +C4C97181BD16E2BD125F8E9890312F0C842E6A1137C22DCC85EBB49C161FA4A7 │ │ │ │ +A7FACFA7062586D7D6BE3C509407E5F73BA4CC2D200BD335C24EF180BE0EE3DC │ │ │ │ +747B53F1D9987BDD8ED8152006A66F710FB7601B955A5161218B5410C7C68DC4 │ │ │ │ +5349854F9380D2B63330C79CAE8A972ACDB93082EE3424A33BE1FDF576BB446D │ │ │ │ +95394436C7B8872DA6B5106A9A86BA62E2DE6428441E85933821D70C5D4F4F16 │ │ │ │ +0B034C7636F787C9687CB6C725AE5402F40B0B81472FD9656029A188FC5D14AF │ │ │ │ +7FAA27DE0268FCB24C294E74E4C8063D72CAE3AABDE44B1AD4A89700AB374A07 │ │ │ │ +FEDE71E619788BE5D462092C5D24CE3B80FD72974B8F334F70FCF12D8E60AF62 │ │ │ │ +3A2DE6B899A9FC1DC3C99696C0D7624628797990BF73D18A4E36DA9D413EA530 │ │ │ │ +CEFE6703848206BEC87D953EBAD164783A0DED2C22F257D269AF009B814CE575 │ │ │ │ +D995C1C98DBEC73435994BFF298A9D96EA4884A8E965D1C2B0F9936439499C37 │ │ │ │ +B87BDC92F595F1C378BBD528BEF66F02E264D2FBFFD32FDA1E5CDC2F790AFB43 │ │ │ │ +6EDCCD6C28C214FA87FC575BC96C8C171E101E85F33BFB62E005ED4CD87A5D76 │ │ │ │ +BA69C703B8024DD6779EEFC3CFB5535318866AAC555D18B6FC6C02DC2D6F7975 │ │ │ │ +7E89F4438F549A3902ABC90D2F4826702135AC29D127C67DEEA7F94C2F3E5F94 │ │ │ │ +F0A170B52D9952995D0E64FF9265C966AB29B120967F6CD583A24CB641DCA668 │ │ │ │ +980DD5F7BB4293C2BE3541014BE906D10404A92FC2AA1EC724A8A28F1C1C3E50 │ │ │ │ +3B1D65D7B768CB3D57B0E9949F45F4A8E6448880FC9584F42713683EB9A853D1 │ │ │ │ +1D26F3B12610B12BBFF4043AC8EBAFE1B400E862033E87DFAB3DCAAF30618B65 │ │ │ │ +999253C0B2775AC2203A7F8C246EB3720A8DCC3C551C1F520A181AECB4DC1C5B │ │ │ │ +11B5F3670BB7058AAA7632E513BF6136989738DA181CEC6AE9E1662AFB399BFC │ │ │ │ +7050861016CEBB53AC0D231999BE9E6BAA3C55505CB28A01E35735C0093EBE4C │ │ │ │ +8DF96D4DF2AEBBAC5C294B7F5D3C506E06344C2538E6428D6B55CC3CA06AB316 │ │ │ │ +F67C09B4801069E91438055B4DDCFB3A25778A96E09B534FA5601AE6C27C5C37 │ │ │ │ +554916AA8AA3547AA1C7A3A8BEC12D489CFBD050CABF6B6F28D4A79F37FA3EDC │ │ │ │ +42B5178F8ED8018168C044953C3D3F360ABEFB00C181AE4FBAEA915067CAF716 │ │ │ │ +B15132BB467AE511B3BBC1F1C0E1A5183BE3507DE57B267497B1B044581B0551 │ │ │ │ +3C82B1173094814C85EDB148A8D42AD0EB0EBA3DFA977C2B9D147E98899A3AF8 │ │ │ │ +B14A10C6792BD5B698DA16D4C64821FE242ECD584275FD25EF63B01AFA19F54C │ │ │ │ +5CE392E28D58946191EA16DD08CAA46F5BA11730527AAFB1011FDB6B1330785B │ │ │ │ +C62A72B3DFD1AE7831673D6E896DFC9794A4B1601C3417490238E91FC8103AC6 │ │ │ │ +DFEACAB7800BD3DF33F76F2CE4310C2CE6BA676A44D9DCF9D9C54618CBA50FE8 │ │ │ │ +BDFC6B1F551834D818544A97AC46D0A2B75680DDE3A545F375B3F043EC72ABC7 │ │ │ │ +239C2036C113DF11E0FB7EDECB4D7E888C0F2C63CFB76BBFCBACF633B0AE5BB3 │ │ │ │ +240ED43A52BD6B8B208A03E5921FCB0923E8D3B958E6B546B30857EC5CD2FB4E │ │ │ │ +5F486359B2D3E59A9C1C99D9F6A5F870F31AC642797FAE59929D5ED4690AC8CF │ │ │ │ +D1C456D80871F0E1FA2ACC358194418374D0687D0442B680BF7ED914E935085C │ │ │ │ +0D982904768ADB1E7E4A57745C205704DB806A2161D8FD2C515C807E5CA8EEB5 │ │ │ │ +972BCD72E15C4E98F89506CD6858824C20EF99710DE4C094F348A0D65D28EBA5 │ │ │ │ +D1533DFB228A03F7F921318B1D2B4EF2A47ECD29F06FDFCA1636029E26908D61 │ │ │ │ +56EC422E8FC7101E92D27896DBFFB913C387129F23947D5745FF5FACE0CA00CC │ │ │ │ +FB87C014746BF49073EF654468A0B522731BE2C8B9F6271B7324737116805541 │ │ │ │ +655358F7FEBCA1E9125D27C4AA9E3212598A64234EC84F88787537BF14F23E2D │ │ │ │ +FE8701B598135839109B0E25039E3C887594F90228B1E05A09ACF49EA154913D │ │ │ │ +2AFB81A6C0DFA0AD005D75A5E40A56AAC9474001E28B68CBF2F32E7DA3850604 │ │ │ │ +461ADC7CC4E32DB5BAD12F7F69899C3EDB1772370080B097C875CFDB8586F3C5 │ │ │ │ +E8DC6E89CEC6E1D8F5615895F7D4D820CE26D329242A7A577AEF82729A664121 │ │ │ │ +4681150A9A7DA2CC5530F7A4D8FC0F116B539AE8067188E7DEA735170352B268 │ │ │ │ +6BEB0512E6F0D71C288FD3F68D5F0D26A17011CB1F371A5B715A9DF251D86352 │ │ │ │ +AE75AC3F5AC6761A7E84C32A26E0F02C09C3B26192DEFDE789E3913F9BF33964 │ │ │ │ +4E027DC0241FD609B3E8734E3305418D9418FA4934879123136C04E49ECE2B99 │ │ │ │ +23959B54BED8D58413C867F6416E483D67F092E2A9F663D8ECCDEDE70CBEF63A │ │ │ │ +F55612C99BCF8B9B40EA5A2BA844A401CF5A90D659B229E538BE97C7F1BCD884 │ │ │ │ +BD4AB4155ADE50BA0528C2E6B70687A1833031B8EA660802C81F46ECE0C10A4B │ │ │ │ +171F74D5EE8F947A41FC55EFD2B4B3A740237B48E91D43D28D98A2F88BEC5CCF │ │ │ │ +EEA5DD0C8906C5947489D5FC20A3BEE8963B101B6273760AC8C1BD2C2133C43A │ │ │ │ +C8A9785A227BC15B2E73E42CE80576804A79B80A1FFAA6EDDBFC26389068596F │ │ │ │ +DB35D622BCF7E10BD587AAAF134B02C23F17CB82B46BFC0ADDA32D668BBCBF61 │ │ │ │ +AAD000B15CE4DC1C293513F9876E60805FC3094D5E40CE49932348E4C881D3F1 │ │ │ │ +DCD074063643BEB669D745FF950E75D4BAE14227C48EEC04DE59941A0DD65D5D │ │ │ │ +750069E418FF12030C91ED5D9F79C047E04E426B274D3E5F015F0B58AB349211 │ │ │ │ +0FE4D26FA274088299546C1001891663A67497B1B4E9B204B125A36768D8C501 │ │ │ │ +6F65754B57829773399D4A2B2AE322070DF56F8AEE9D1B1C80D51E9DD671BFB4 │ │ │ │ +324A1572178B4C08FB8408292A50CD2B382D681F24318B7BEB4EA279C9002E04 │ │ │ │ +DF57B5038126C6B26E3D5DB8F7D6B6AA76761346D2464BC0CF206443F7355684 │ │ │ │ +D6DB2DEBA51E732F33CBDC0EB374F5EE0476C727C5DC6197CBD6932516FD83B3 │ │ │ │ +A65D0182618C2D737753A690D1E7A440BEE6FFB1A69406C5FF5B4ADA50B6A037 │ │ │ │ +CAC181EF1295FF444C93B716FAC007CD2CE962F151D0E1614B5F07EFFDC57436 │ │ │ │ +A21A1D4EEF23AAE77E870B594221D726959AFB2ECBA6C07BEFBD78008B0695E3 │ │ │ │ +0D936F55FEC2FD81D18743F9BF59A628DD5C5DBBE1F6D041673DEFC510A7923E │ │ │ │ +AF989167699626F8EC619F89EA76CBC3556F7BF55063300FDBCE87F57C4F61C0 │ │ │ │ +A24571905C2A2059A77B07E8094EFFA1E93FAF3CA1AA7D9B0FFBE123F396C3D5 │ │ │ │ +394546691546E00A0088440F1D6E0E37B63A561CD326A6E1F9F1D669D277ABE0 │ │ │ │ +A96ED9895ADBD1F0221A142B079C8E9A97F3E2D07BE73FC20440581F7CF9BA0A │ │ │ │ +35F023DC1CF81BE5EEBE4475489037745F3A959C0F160FE4D1B5316E6E1E13E1 │ │ │ │ +D277529292D9824ECDE038CD1BCA8617E1D5AF4A2426E2059C37E5157D986209 │ │ │ │ +A3A56D51149584D890A5AB34BE0EB6A91CEA1F43FF6122830B6F04A0A35E0F65 │ │ │ │ +3273E942292C483E3B0C16599BFC8A45AF16038623623C261FC78AA7D9074EEF │ │ │ │ +7BC0B4C6FF04B5A42BF575FB911A7BE8A5BCA737268FDED4C31F91771FD6B0EE │ │ │ │ +AF5C10EC704A685D631DDFDAA0D4A4A6F2A7BA3548861061DB32F8B6497683A3 │ │ │ │ +8E6327DBD6B8225F417728C5DF41CED95EA1904B0B52DCF0CA799F9A24757991 │ │ │ │ +B1466BEE45073B30CD540A73A7C6318E7A18902B11851F21968C531EB6FB3061 │ │ │ │ +E4108B509772C976EEBCAB07B45191DD4236DDFB4E2AF5FB59792610C171906A │ │ │ │ +87C6ED80015B182F1811D0008EB15C984C34379A4BC198BE0F9E52853DBCAB33 │ │ │ │ +04AD8BD5599964AD67405EFBF9283A50282B402769243FD3CE6B98821AD22BDF │ │ │ │ +B22B8E572FC465E5494C651CF9A399809EC287027D759C074E5E4EA8D6A0FD96 │ │ │ │ +823F3D52C31F3526FC4C158AD16D7CF96E17AB11AF27CD0453437E611C18D6AE │ │ │ │ +870E8BB5D079413C5DC3DCAE04DE516F6B4F136B683D9F0B773C931916CCDA09 │ │ │ │ +A4F66CF474C2A6848A90E8D637D67E949F59D36EDB323994C4A1CDDCB328BD12 │ │ │ │ +FCC81CBECB3AADEB4FB71F2025DB83B22C21227AB444EAF1ED3EAE4EA7E7EA21 │ │ │ │ +458B4B83C62586FA61D284ADB231C145209D97D8277A85B4B68149F56EEF3499 │ │ │ │ +5E817F40AB598C421942D62B2E773B13C0B89DFBF983568FE3F79E577A126E5B │ │ │ │ +C7C9C8461B1DB0C80AC70DCE138864E1246FBB0A1E91A4CAB6D1C1C0EF85CBA2 │ │ │ │ +9AFCE33E645816048FFB58D5D0830BEF92D736DF4B3170FC56AFFE1DA9EC766E │ │ │ │ +F0BCA949910B37764D9FEA95A7DC4044F60BD206AA8808E910196F592A9C8842 │ │ │ │ +47FCF5268B7D8E0C10F8893F35EACABA24DD098E4C02C6C905F2675A50128B03 │ │ │ │ +0BE5681285A4F5E4FDE02B467FF7A65ADE532145AD1FB334A9D130DAB291D7C0 │ │ │ │ +60AD0C432F33AE9784065F6278C13DF039817F824113A158C523F0ECC463BE93 │ │ │ │ +87B5E93F36DBFC5B805A27247B0D4BDE7B1039333915D7AB3F0265EBA44347A7 │ │ │ │ +EA3913CAC547C2CAA901AA5F118444271102AB9A832D19DB0D65C6F508750B6B │ │ │ │ +E5B9CD2005D4B35F5F137BC1F6E49C5109A4347C581F1C9F314BB921CAC1B40E │ │ │ │ +5244A2A260B00D0AA2DADDA0144B6031837A8ECF1A772248AD6FAD57E1C32435 │ │ │ │ +3DCAC8FE41E2EAA20659F26B7854ED4810C153C1F9C57995E156153C920B85D4 │ │ │ │ +156799945C3F5EB6FA2BBC2EACA7B4AC8F2A2924C250A2F9CFC8E7819D578357 │ │ │ │ +81D1407E2D2E996B90B103FCE5C9D988A47FD8EF5A1401662CAEF53A97F04099 │ │ │ │ +6345C2B28D4CE0BFAF3A9EF117F11A30C3251CED378F26EED2464D4D1F78A60B │ │ │ │ +7C54234E45C525DDB37CBC53145CDBDC6B8357CA80B6092EF01AB842B8014955 │ │ │ │ +817F498DCE6617DC02323442AB58335BE8E77778D0AAE3C82BD823F8B719CB6F │ │ │ │ +72A6B80253B13B8C0E924C5232C1D3ED27078104F2DDAD30F3A0F3C2CE3412E7 │ │ │ │ +7A6836BC8B1756BE40E231E7D38606E710E03DCDF549C0DC4B587D0AEBBDBB0D │ │ │ │ +F5A2DD787E729E1D8F41F599EBE9984B62D54A99752F276E6742FEA0262EDEC5 │ │ │ │ +5FB64B696B6DA83D820DB8C0C2F2E42491DD26303215678D6505D02F0EE6B1CC │ │ │ │ +6FA455DB4AC5A6736342CFE5E5BAFC75B7B1D03A977C9CB668873F1E372CE3E3 │ │ │ │ +4EAA2603F39CB4B37ED7BF32E030357ED31485A9B194C584634A079AC500C498 │ │ │ │ +2958668E0408DEC3E57CF0E7EE26428D8EADB5AC3742B4EAAF0A78A587C65555 │ │ │ │ +5BE0F004C48BD7563327FB9AB037E5BE4EB3CDC1A9CA0F8EEB5B30B9006B4525 │ │ │ │ +5AF4AC0AB6ADFA5D5395834759FF44577B5EAA5A55B771BD558AEDA6B706EDEF │ │ │ │ +D48DFA9B1A0EB381384E6FCCFAC24A196D777B44F3FD7F10B23F12CB4EA4DFA5 │ │ │ │ +BC2B9CE1EC85CA122B9A9D80835AFCCF0BC5AEF7620650C8D20A8E1F6D699482 │ │ │ │ +11FDB3ED4949B0E6E9B72D1425D9A4F06C649FE4766236390400A16A99958124 │ │ │ │ +5883B11E6B5C7CFBA24A5B58C350FA2D647F96FA8F086BF66E9D9EB802AE3187 │ │ │ │ +4C7F2C3096012867998ED2F38944C960D3BD1049A29AB764122E96F94999D562 │ │ │ │ +488E1EC2B2E12A76B51D7CC74BB6D66CF133F4F4F94C0F66FF83C44BD0C2E9EB │ │ │ │ +06F1812EB2F0E1503571D483770396A3FBDA6C35301B8D34C9F009ACB0E3B5FC │ │ │ │ +2BD4012F84A57B │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -7523,16 +7534,16 @@ │ │ │ │ 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 2[42 12[60 4[65 4[43 │ │ │ │ -3[54 15[42 3[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 │ │ │ │ +3[54 15[42 3[42 42 42 3[23 44[{}21 83.022 /CMSL10 rf │ │ │ │ +/Fk 133[31 37 37 51 37 39 27 28 28 1[39 35 39 59 20 2[20 │ │ │ │ 39 35 22 31 39 31 39 35 9[72 53 1[51 39 52 1[48 55 1[65 │ │ │ │ 44 2[25 53 3[54 51 50 53 3[55 3[35 35 35 35 35 35 35 │ │ │ │ 35 35 35 1[20 24 20 31[39 12[{}53 66.4176 /CMR8 rf │ │ │ │ %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 │ │ │ │ @@ -7564,15 +7575,15 @@ │ │ │ │ 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 1[49 13[54 8[50 2[77 3[70 69 73 10[49 3[49 │ │ │ │ -1[49 3[27 44[{}28 99.6264 /CMR12 rf /Fv 139[51 52 51 │ │ │ │ +49 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 │ │ │ │ @@ -7583,15 +7594,15 @@ │ │ │ │ %%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(*)1611 1261 y Fu(Jan)m(uary)f(6,)f │ │ │ │ +(Services)g(Group)2942 987 y Ft(*)1586 1261 y Fu(Jan)m(uary)g(10,)e │ │ │ │ (2026)0 1923 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 2264 y Fq(A)25 b Fr(=)e Fq(U)241 2234 y Fp(T)294 │ │ │ │ 2264 y Fq(D)r(U)37 b Fr(or)27 b Fq(A)e Fr(=)f Fq(U)803 │ │ │ │ 2234 y Fp(H)865 2264 y Fq(D)r(U)38 b Fr(factorization,)27 │ │ │ │ @@ -7672,16 +7683,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 1797 │ │ │ │ -4 v 1990 w(Jan)n(uary)26 b(6,)h(2026)0 390 y Fs(2)135 │ │ │ │ +b(and)h(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1442 100 1756 │ │ │ │ +4 v 1949 w(Jan)n(uary)25 b(10,)i(2026)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 │ │ │ │ @@ -7784,16 +7795,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(Jan)n(uary)26 b(6,)h(2026)p │ │ │ │ -661 100 1825 4 v 1988 w(Orderings)f(and)i(F)-7 b(ron)n(t)27 │ │ │ │ +TeXDict begin 3 2 bop 0 100 a Fj(Jan)n(uary)26 b(10,)g(2026)p │ │ │ │ +702 100 1783 4 v 1947 w(Orderings)g(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 │ │ │ │ @@ -7846,16 +7857,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 1797 │ │ │ │ -4 v 1990 w(Jan)n(uary)26 b(6,)h(2026)125 390 y Ff(\210)42 │ │ │ │ +b(and)h(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1442 100 1756 │ │ │ │ +4 v 1949 w(Jan)n(uary)25 b(10,)i(2026)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 │ │ │ │ @@ -7926,16 +7937,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(Jan)n(uary)26 b(6,)h(2026)p │ │ │ │ -661 100 1825 4 v 1988 w(Orderings)f(and)i(F)-7 b(ron)n(t)27 │ │ │ │ +TeXDict begin 5 4 bop 0 100 a Fj(Jan)n(uary)26 b(10,)g(2026)p │ │ │ │ +702 100 1783 4 v 1947 w(Orderings)g(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 │ │ │ │ @@ -8006,16 +8017,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 1797 │ │ │ │ -4 v 1990 w(Jan)n(uary)26 b(6,)h(2026)125 390 y Fr(Let)33 │ │ │ │ +b(and)h(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1442 100 1756 │ │ │ │ +4 v 1949 w(Jan)n(uary)25 b(10,)i(2026)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 │ │ │ │ @@ -8083,16 +8094,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(Jan)n(uary)26 b(6,)h(2026)p │ │ │ │ -661 100 1825 4 v 1988 w(Orderings)f(and)i(F)-7 b(ron)n(t)27 │ │ │ │ +TeXDict begin 7 6 bop 0 100 a Fj(Jan)n(uary)26 b(10,)g(2026)p │ │ │ │ +702 100 1783 4 v 1947 w(Orderings)g(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 │ │ │ │ @@ -8968,16 +8979,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 1797 │ │ │ │ -4 v 1990 w(Jan)n(uary)26 b(6,)h(2026)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 1756 │ │ │ │ +4 v 1949 w(Jan)n(uary)25 b(10,)i(2026)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 { │ │ │ │ @@ -9427,16 +9438,16 @@ │ │ │ │ grestore │ │ │ │ │ │ │ │ showpage │ │ │ │ │ │ │ │ %%EndDocument │ │ │ │ @endspecial eop end │ │ │ │ %%Page: 9 9 │ │ │ │ -TeXDict begin 9 8 bop 0 100 a Fj(Jan)n(uary)26 b(6,)h(2026)p │ │ │ │ -661 100 1825 4 v 1988 w(Orderings)f(and)i(F)-7 b(ron)n(t)27 │ │ │ │ +TeXDict begin 9 8 bop 0 100 a Fj(Jan)n(uary)26 b(10,)g(2026)p │ │ │ │ +702 100 1783 4 v 1947 w(Orderings)g(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 │ │ │ │ @@ -9515,16 +9526,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 1756 │ │ │ │ -4 v 1948 w(Jan)n(uary)26 b(6,)h(2026)0 489 y Fr(Figure)22 │ │ │ │ +b(and)j(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1484 100 1714 │ │ │ │ +4 v 1907 w(Jan)n(uary)25 b(10,)i(2026)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 │ │ │ │ @@ -10318,16 +10329,16 @@ │ │ │ │ grestore │ │ │ │ │ │ │ │ showpage │ │ │ │ │ │ │ │ %%EndDocument │ │ │ │ @endspecial eop end │ │ │ │ %%Page: 11 11 │ │ │ │ -TeXDict begin 11 10 bop 0 100 a Fj(Jan)n(uary)26 b(6,)h(2026)p │ │ │ │ -661 100 1783 4 v 1947 w(Orderings)f(and)h(F)-7 b(ron)n(t)27 │ │ │ │ +TeXDict begin 11 10 bop 0 100 a Fj(Jan)n(uary)26 b(10,)g(2026)p │ │ │ │ +702 100 1742 4 v 1906 w(Orderings)g(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 │ │ │ │ @@ -10671,16 +10682,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 1756 │ │ │ │ -4 v 1948 w(Jan)n(uary)26 b(6,)h(2026)0 864 y Fr(Figure)33 │ │ │ │ +b(and)j(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1484 100 1714 │ │ │ │ +4 v 1907 w(Jan)n(uary)25 b(10,)i(2026)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 │ │ │ │ @@ -11287,16 +11298,16 @@ │ │ │ │ grestore │ │ │ │ │ │ │ │ showpage │ │ │ │ │ │ │ │ %%EndDocument │ │ │ │ @endspecial eop end │ │ │ │ %%Page: 13 13 │ │ │ │ -TeXDict begin 13 12 bop 0 100 a Fj(Jan)n(uary)26 b(6,)h(2026)p │ │ │ │ -661 100 1783 4 v 1947 w(Orderings)f(and)h(F)-7 b(ron)n(t)27 │ │ │ │ +TeXDict begin 13 12 bop 0 100 a Fj(Jan)n(uary)26 b(10,)g(2026)p │ │ │ │ +702 100 1742 4 v 1906 w(Orderings)g(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 │ │ │ │ @@ -11594,18 +11605,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 1756 │ │ │ │ -4 v 1948 w(Jan)n(uary)26 b(6,)h(2026)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 1714 │ │ │ │ +4 v 1907 w(Jan)n(uary)25 b(10,)i(2026)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 │ │ │ │ @@ -11693,16 +11704,16 @@ │ │ │ │ (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(Jan)n(uary)26 b(6,)h(2026)p │ │ │ │ -661 100 1783 4 v 1947 w(Orderings)f(and)h(F)-7 b(ron)n(t)27 │ │ │ │ +TeXDict begin 15 14 bop 0 100 a Fj(Jan)n(uary)26 b(10,)g(2026)p │ │ │ │ +702 100 1742 4 v 1906 w(Orderings)g(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 │ │ │ │ @@ -12334,16 +12345,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 1756 │ │ │ │ -4 v 1948 w(Jan)n(uary)26 b(6,)h(2026)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 1714 │ │ │ │ +4 v 1907 w(Jan)n(uary)25 b(10,)i(2026)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 │ │ │ │ @@ -12663,16 +12674,16 @@ │ │ │ │ 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(Jan)n(uary)26 b(6,)h(2026)p │ │ │ │ -661 100 1783 4 v 1947 w(Orderings)f(and)h(F)-7 b(ron)n(t)27 │ │ │ │ +TeXDict begin 17 16 bop 0 100 a Fj(Jan)n(uary)26 b(10,)g(2026)p │ │ │ │ +702 100 1742 4 v 1906 w(Orderings)g(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 │ │ │ │ @@ -12781,16 +12792,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 1756 │ │ │ │ -4 v 1948 w(Jan)n(uary)26 b(6,)h(2026)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 1714 │ │ │ │ +4 v 1907 w(Jan)n(uary)25 b(10,)i(2026)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 │ │ │ │ @@ -12885,16 +12896,16 @@ │ │ │ │ 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(Jan)n(uary)26 b(6,)h(2026)p │ │ │ │ -661 100 1783 4 v 1947 w(Orderings)f(and)h(F)-7 b(ron)n(t)27 │ │ │ │ +TeXDict begin 19 18 bop 0 100 a Fj(Jan)n(uary)26 b(10,)g(2026)p │ │ │ │ +702 100 1742 4 v 1906 w(Orderings)g(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 │ │ │ │ @@ -12974,16 +12985,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 1756 │ │ │ │ -4 v 1948 w(Jan)n(uary)26 b(6,)h(2026)0 390 y Fr([13])41 │ │ │ │ +b(and)j(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1484 100 1714 │ │ │ │ +4 v 1907 w(Jan)n(uary)25 b(10,)i(2026)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 │ │ │ │ │ - January 6, 2026 │ │ │ │ │ + January 10, 2026 │ │ │ │ │ 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 January 6, 2026 │ │ │ │ │ + 2 Orderings and Front Trees January 10, 2026 │ │ │ │ │ 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) ; │ │ │ │ │ - January 6, 2026 Orderings and Front Trees 3 │ │ │ │ │ + January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 4 Orderings and Front Trees January 10, 2026 │ │ │ │ │ • 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. │ │ │ │ │ - January 6, 2026 Orderings and Front Trees 5 │ │ │ │ │ + January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 6 Orderings and Front Trees January 10, 2026 │ │ │ │ │ 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. │ │ │ │ │ - January 6, 2026 Orderings and Front Trees 7 │ │ │ │ │ + January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 8 Orderings and Front Trees January 10, 2026 │ │ │ │ │ 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 │ │ │ │ │ - January 6, 2026 Orderings and Front Trees 9 │ │ │ │ │ + January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 10 Orderings and Front Trees January 10, 2026 │ │ │ │ │ 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 │ │ │ │ │ - January 6, 2026 Orderings and Front Trees 11 │ │ │ │ │ + January 10, 2026 Orderings and Front Trees 11 │ │ │ │ │ Figure 5: Block structure of L with the fundamental supernode partition. │ │ │ │ │ - 12 Orderings and Front Trees January 6, 2026 │ │ │ │ │ + 12 Orderings and Front Trees January 10, 2026 │ │ │ │ │ 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 │ │ │ │ │ - January 6, 2026 Orderings and Front Trees 13 │ │ │ │ │ + January 10, 2026 Orderings and Front Trees 13 │ │ │ │ │ Figure 7: Block structure of L with the amalgamated supernode partition. │ │ │ │ │ - 14 Orderings and Front Trees January 6, 2026 │ │ │ │ │ + 14 Orderings and Front Trees January 10, 2026 │ │ │ │ │ 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. │ │ │ │ │ - January 6, 2026 Orderings and Front Trees 15 │ │ │ │ │ + January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 16 Orderings and Front Trees January 10, 2026 │ │ │ │ │ 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 │ │ │ │ │ - January 6, 2026 Orderings and Front Trees 17 │ │ │ │ │ + January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 18 Orderings and Front Trees January 10, 2026 │ │ │ │ │ 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. │ │ │ │ │ - January 6, 2026 Orderings and Front Trees 19 │ │ │ │ │ + January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 20 Orderings and Front Trees January 10, 2026 │ │ │ │ │ [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 2026.01.06:2034 │ │ │ │ +%DVIPSSource: TeX output 2026.01.10:0513 │ │ │ │ %%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 │ │ │ │ @@ -1788,14 +1788,15 @@ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ /UnderlineThickness 50 def │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ +dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ dup 54 /six put │ │ │ │ dup 58 /colon put │ │ │ │ dup 74 /J put │ │ │ │ dup 97 /a put │ │ │ │ dup 110 /n put │ │ │ │ dup 114 /r put │ │ │ │ @@ -1985,79 +1986,84 @@ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB88440048702D1F │ │ │ │ -77994EE04EC3B4531D6E1888C86A8F0DA6CF1F056F16AB0DD76C862830F89DA4 │ │ │ │ -28923B3AA543E0D6E41D3BD283E600BC11F889315EE92C675C109C81065ED1BC │ │ │ │ -82A5583D1B723D50051B0557A367887F5B263014C6E77288B4883C50889473D3 │ │ │ │ -3787BAD4BEB88BD1353AFA5B73E61814819537E7FF09F53EF94792BB3DD36ED0 │ │ │ │ -002D0E7A6CDAB85A9C17AF5664BCB5A71663B861880F3ECCABC8E7A2FC81A4CC │ │ │ │ -AE7A87503FDC1CE0077BA51ECC7B43B60793FED8E9AAD5BBD03ADD6183DCD26D │ │ │ │ -24A74163611C05562437644EF9B8889FD4F9D311911204FEFD35237486F2D2D0 │ │ │ │ -B6783A03BF12EA6D19D6D0F87E4D08515F12F9CBF1961CAA71E0D69FE3C4C4D2 │ │ │ │ -7C7FB64ED24F8684C8F00C2BEDEA53EA390CDC0B5BEBD7DD982580B2EA1F1F89 │ │ │ │ -CFED5916630DC2BA32BB9180277E1ABC339B3B7DE086717BD93F7FF3681BA5B3 │ │ │ │ -FCF671C4B293C2DE4A322F0AA3323A4934444C69F23EF90120B8755482757759 │ │ │ │ -C457A435FB8BB4922BD92C5F3D9555D978275C510183E29DFF2FCE4ABBFC18DE │ │ │ │ -76CAD3B486BA12047DD808CD4D521A0FD368E4AE79DE262630983A5D6F0B679D │ │ │ │ -2F005306393C520E1B6987302D029939D94B0178DB06211C7F3B123A41E6E7BA │ │ │ │ -87164737110707A3ED3983895F3FBC815EF370F54C808ED93D910937BCA3D8AF │ │ │ │ -7CBF80DC180CDA54059DB76710B4FCD4139D5B7DA7DB1A0D0AF86AD2453D3691 │ │ │ │ -0BA5BAD40FF28BB4235FCD40FC87C2B888E67928D9B0ACA5692149373DBB93BF │ │ │ │ -6520DDD36A9BFE4D415CA67A5E04F1D48BDB28C69676273ED842CF7980E8E17C │ │ │ │ -B88563F407E340AFAE8F51AABCF8A39521BCEE1EC8396D75E124B24B4675909F │ │ │ │ -E246F87DA08584A3173AEFF153ECDF610543FA7474D125A31ADD6285A49222B5 │ │ │ │ -177066EA395BFA4B1114C7FCF7712DA772A21C99E64F4E1181E69CAF98137FA2 │ │ │ │ -76CF74F682B8CD7BA6EEA79B70FA8A76809634517F8415B6F21A5A7D6099B5E8 │ │ │ │ -EAB356BBC4FB68C72B8C61DDCE8EAB1A53B9D6BAD78584B307EFF57CEAE74884 │ │ │ │ -35987BF89E9E60E962D22FA5612F2DB5EB840499B7CC11A34BA5DEE30D277540 │ │ │ │ -39B8211D69B448ADE95B723F8369A631DE6DD75703AFD7485FB7FFF41A60CBE4 │ │ │ │ -813B8FEA120662355773830EF85015E7FFD609B2CEE52CB5FFE9C35B6BEEE4A4 │ │ │ │ -A66719E31CE1523FDD7771FB1E881A32A7DB7D92C2326DF4B93241C14ABFCCD6 │ │ │ │ -8E5BCAC61E800E6B1B4687ADA4CBF41EC0AFC26D021D1772CBDCD0516DF5EBE1 │ │ │ │ -37FD2AC5ABB8D774B5735940F1F6866D044FD8CE74444FAA5D0202C11E39CC10 │ │ │ │ -213731F41F704450E1D0565013BF22188442CE0FC256190A9F92F0C802AA2660 │ │ │ │ -614AFE9E9C82F8CD2E6035EEF84E5F16CBB690AC819B4B910EA8E81106F0ACE5 │ │ │ │ -CDFE77DAF69E4AFE72C43145A3ABCC40B6C5297487083F738C86422277AC2267 │ │ │ │ -51759F1B7F129E87DE16433B664AD0FB6D30424A11C70B52B591352BF653C8B0 │ │ │ │ -0840C224FBFEAA996A6BE1D69414DD778C2EF56A63B64D59BA412EC3E4000831 │ │ │ │ -73361FB9813F9A7C74BA3A50D331B07B61492E5D75F0861B530587269B3ADC90 │ │ │ │ -EA1DF586AC4BC57C3230893EFE953A6E76950ABA895FAC711D3BD330ABC6846A │ │ │ │ -C91F6ABF3410B913DFE5C8266020CEE5C7A9EDA2E7D9BCA797DC486443C7BA7C │ │ │ │ -7E03439A40927FA3251B6D417E5653E7799E9D6F04149C34096E2CA9B1F9B1EC │ │ │ │ -38958A2521B4A657A8B9F16E1FD66C7E345A10D7AA0241559503D214AC6507A4 │ │ │ │ -CBDE8617AA7ED136577734428594487F3565BF45FA196375759E2FE23C26EC8A │ │ │ │ -3310A36917A5E2F260EAB31030F8E570303D36B833626938F56939849DFA1F3F │ │ │ │ -66D0A317BB6364427F1512AAB380B555611C76345C02C3A6FBF78590331D5ECA │ │ │ │ -029DEFB722F6AB05327C2A31AB7BD6ED0F0386E6F45C1278048D22B90B074CCB │ │ │ │ -2BBEBCC1927C97EC532E651CAF0058AFE8FC08F00F0216D5DD9830C294FF76DA │ │ │ │ -426A073B3A3AEEFBDEE71C5182186311607ECDBD1F1AF4C5E79748CD01445C8D │ │ │ │ -25DD49490C8A6810065908222C8D0AC9F83AFBEE7115023E2D2615A170A5D40A │ │ │ │ -AD49BDF59A59187B6434F83E68EED22EF4EFDBADED6F1559AC779E0377FE7375 │ │ │ │ -D7060584FE74B1859D0FD98772253A712B17FFBB467840C484F5EF82C5677ADB │ │ │ │ -EDF159A456A526B8B9F6E8FC7608DFD47B0F09E26118F79CBE53B6C4E32BACAB │ │ │ │ -D62AFD4AA527CC4B587BB41A17A9BCE106A8C592BC9B73422B712C466C284A17 │ │ │ │ -E8D0C1E01D43C739FB1C083AD2714F78AC785B0C09AA7E67417A73510E00F2FE │ │ │ │ -E3D3EBF626A2F3A20A386E3F98D1285F4A2A332FC609CD191F01F128627B3505 │ │ │ │ -0AC2387DC0AD1B950490EBB5045F22BEC54955402CE2D267B6754E7C32BE84E8 │ │ │ │ -E6B63E3D3EAEE979442D167AEF69C27B22A8E887A2510C3A168D95D285CF7515 │ │ │ │ -011C921679B2F386575826A3F2071D015EEB78F02A4F94D4E5F07873623200F8 │ │ │ │ -7DF95BA0DC6B6D31DECC925BEA1E6A7C52FE685800EC33CBAE830F1AE5454DFA │ │ │ │ -913B8F457D7E2D3DFF019869E3301EEEC64A38295DE6B588E776922B32362382 │ │ │ │ -D1CF3D058613C8A96E6994D3EC23E8B71EC6E718383B20BB6C22DB6F93FA559F │ │ │ │ -3449CA84EB33B25C8BE0DFD1C29DC4FBD7AFBDC96C12162CAAB2C5E354B0FB10 │ │ │ │ -4BF8CC3610875ABD5111D09F2F847822118972214EDEB9EE34BAFE45E7AC15C5 │ │ │ │ -CA63EC4A3CEEA505A5EDD88A59BB67C71C3E026DFFE177F99BC69E6635545D03 │ │ │ │ -77A634F98230EF64381EC67CA519D4B9770EFA844789E21970F89D5FFC5DEAA8 │ │ │ │ -DC008EBA09306967ED090FF91B002FA6120C2B461A87AA32EFB003C5578D8EEF │ │ │ │ - │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ +AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ +E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ +46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ +FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ +389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ +7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ +2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ +C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ +B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ +AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ +E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ +F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ +0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ +2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ +29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ +CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ +6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ +5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ +36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0DD96AB602D004DCFE000A0 │ │ │ │ +ABE41BAB8AB7D50BD32BFD6F1AA3B60B09B9BE4E273EDD2DDCB21A98A760D17D │ │ │ │ +0A5C9303AFE63CF80A93E60C72A0576FAADEECBE2DE91892D210EB0AD1889C04 │ │ │ │ +C7530652584E775B4ED19CFB4B8DBCCC57A9FA9E4DDC8A1E5A1D3BE9E93407A6 │ │ │ │ +2C237ACE27F4EDA330EE952EDCBE91683AA98A29197735006666C96A2CE7C787 │ │ │ │ +BBA5A57C4DBF6FAA5B38AF226B5D9A65FAD84650AC0C3DB29C30602699F81E01 │ │ │ │ +0BAF8F1CE44A03C680121B77A1703C638187675D6C22C49F9902475E6CE9C732 │ │ │ │ +48ED028CC92EA542EF189CC9CA1C384E3387793057615D0A2BF040CC90B275B9 │ │ │ │ +F70A5310874DC2E0A360373E7BCAC88250FBC8989C7D18DA8274C06F02FCF31C │ │ │ │ +2B3868CBAF083DAC2FB159DE368261842DB7C9EA1A86B17617C861A48FBA8FF9 │ │ │ │ +D184CB026F4A418C0955347612F94C039B1536A76CB182A591DD7C02D509CF16 │ │ │ │ +8B9E46502ABF5DE31F5DFBD19C7417A2AF7AF13F0D5FF837C94CE56F07B96337 │ │ │ │ +0ED215252346FAEB54B5F3ABE29709B7ECB9FBD23A4AD397E6ABA6938F1BBF33 │ │ │ │ +1D5460D9414F0B8725DA832744525C13E3FD9C8DB33FBEE12F9C4969988402C8 │ │ │ │ +96AF916364CC2DF17EDBA622FC0A5D0013418E29F912FFA06F8D7E31ECAB0B08 │ │ │ │ +C4D2D8EE537CC768FC9038DD6D86D33642C6E812E941F157FC6917AF19C2B99A │ │ │ │ +5BF10B9A7ECF711BBB6F33C8C3DAD778153122593F36ABDDC0E97A602B045DE6 │ │ │ │ +19BD82D877DDA960AB11EF48C7F75A28D0D731D4A5DBC98283087267CD1A470D │ │ │ │ +537E949DA5EECF097B099547995BE066A941CED683B5748962AD2B02C21636C0 │ │ │ │ +2EAFA33CA0CB3BF8A95703F015A210D918865B9BEA2890DCFB68BC3719C305EC │ │ │ │ +315EC8727BF9A93632AB9E3090B100C022EE1396CD329B37547F26A7DCE52BD7 │ │ │ │ +F91B7388DEC34F4A0C6D46CD7CA6ACC00C5C4C71E47C6AD96496B3CBF531F342 │ │ │ │ +A740EE6B99BD70AD490DFA700772A0697EC6561CE88A0113E4DC3B21F372D810 │ │ │ │ +DFF2C3F6EDF3E917BF2664EEFC9AD292DD6CC36853CF936018D43FDB28D5B001 │ │ │ │ +7D1C805F958F13FD221377ABDD69D102E8CC1DAB2E011EE16CF6DB9D195BA702 │ │ │ │ +5A8738FABF989B0351282D0E5121182DFC52169782A5F3DD5D820411BEF909DE │ │ │ │ +04D963E6FDA76F88508C4E91DDAAA1748F396A1D380D8CA429673AF27C164434 │ │ │ │ +771781B39565D3EE50F3CF03EF12908B13A6C11C9AB7631B32125828B13050BA │ │ │ │ +041A93B97AC32D4A1E28C5FA98CDEE998B5F97823D6291D01E3611A16854F1FE │ │ │ │ +69B9D6D2AE3E56D012B7BC3E582FB4C23188A5E365E65EB1F804A706AF73A2F8 │ │ │ │ +9804808EF71F0982B14133BF9A27D6F2E719BDB751022B1B052722933948904E │ │ │ │ +3582E363478DCDA115205A0FDE39DF71FEAEEB104419C35A6B0678C19616C6D9 │ │ │ │ +A892DC2F4257069AF096C80C099CD13024DF3995F28C694E00D1F08B43D4450C │ │ │ │ +D18F5C925CFD2D124E74FC64BBAA0DE32A79E4A4507B5B5DD834C67160CDA110 │ │ │ │ +EF0061DD27E8864F4250A92BBEFD75C784BB98F4FA789A8236C2A21E4E61ABD0 │ │ │ │ +C6B4D13B3C31AC8E55FA34BEC7C308C61FB0280382EC6AFD63D959678D42D2B3 │ │ │ │ +4134F6236A0808D9302B4E3C6F81FC6973B4833602750CCB5DE36AEA23ED6BD4 │ │ │ │ +5B72DF0DD7B81C871CAA6EC190748CD8C4B998D576E5D340ACAC0617DDBE461C │ │ │ │ +8E82E809D11A01D265D039F4315066832E27E08A6F067E129E45FBF533F761BB │ │ │ │ +EC3C071209BECE7D14D3184B2E6BFD65717A5A7C08F3776B20C513649488C1CF │ │ │ │ +03333805B249D1034FB0AE2D7D2A23324EE27AEDB68F8E329A8052FE58D7C0D9 │ │ │ │ +A40A0CDC79F2085C4F39A7DFDB625C8F071E2A32CF6215DD3E060A9BABF7A3AA │ │ │ │ +C57DA0C0571C5D6EEAA975D1BB9C99F8EA4958360E43E8C60080B03DC4435550 │ │ │ │ +E6048DDD35DF3E5DA69669F266FFD7B44649A68025270DC84258E329F6E6907C │ │ │ │ +BCFF900D715D0C7EC43C5E7180CAD6427BA4FD41AAD6531A5C06B0EC26DDA71F │ │ │ │ +4A9DA50DE919E79226F6DDF7C1BA478936AA86CEAD93072CC2960E98C45A1A0C │ │ │ │ +60CF8A26E4278AB4F9E28FA6532648196CC455607D6BCD00F60675DE8CC02C8C │ │ │ │ +9BE5D5B714731814D5B008EE236563D77AC6895E0158877C95797E07C02AFEBE │ │ │ │ +CC9FE97D5E103F7DB0A834E9A7A75893EC66340B0E4C6F0EEDEF43415BF9FCF4 │ │ │ │ +47340CBEA4DCFBA0D028EB2149FFBBDB3322AE5F6FD20242526EDC55E476D983 │ │ │ │ +DC │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -5495,15 +5501,15 @@ │ │ │ │ 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 3[51 12[45 │ │ │ │ -22[47 15[25 3[45 3[45 1[45 3[25 44[{}11 90.9091 /CMSL10 │ │ │ │ +22[47 15[25 3[45 3[45 45 45 3[25 44[{}12 90.9091 /CMSL10 │ │ │ │ rf /Fh 156[83 46 78[61 61 18[{}4 83.022 /CMEX10 rf /Fi │ │ │ │ 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 │ │ │ │ @@ -5654,17 +5660,17 @@ │ │ │ │ b Fl(Y)55 b Fp(that)35 b(has)g(minimal)g(w)m(eigh)m(t.)56 │ │ │ │ b(W)-8 b(e)36 b(examine)g(t)m(w)m(o)227 5294 y(\(p)s(ossibly\))j │ │ │ │ (di\013eren)m(t)h(min-cuts)g(and)e(ev)-5 b(aluate)41 │ │ │ │ b(the)f(partitions)g(induced)e(via)i(their)g(minimal)f(w)m(eigh)m(t)227 │ │ │ │ 5407 y(separators,)31 b(and)f(accept)i(a)f(b)s(etter)f(partition)h(if)g │ │ │ │ (presen)m(t.)1927 5656 y(1)p eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fp(2)p 136 100 1129 4 v │ │ │ │ -1311 w Fo(GPart)29 b Fg(:)40 b Fm(DRAFT)31 b Fg(Jan)m(uary)f(6,)h(2026) │ │ │ │ -p 2771 100 V 0 399 a Fp(This)e(pro)s(cess)h(w)m(e)g(call)i │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fp(2)p 136 100 1106 4 v │ │ │ │ +1288 w Fo(GPart)29 b Fg(:)41 b Fm(DRAFT)30 b Fg(Jan)m(uary)g(10,)h │ │ │ │ +(2026)p 2794 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 │ │ │ │ @@ -5719,17 +5725,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 1129 4 v 1310 100 a Fo(GPart)29 │ │ │ │ -b Fg(:)41 b Fm(DRAFT)121 b Fg(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2724 100 V 1129 w Fp(3)330 399 y Ff({)45 b Fo(int)i(minweight)p │ │ │ │ +TeXDict begin 3 2 bop 91 100 1106 4 v 1288 100 a Fo(GPart)29 │ │ │ │ +b Fg(:)40 b Fm(DRAFT)121 b Fg(Jan)m(uary)30 b(10,)i(2026)p │ │ │ │ +2747 100 V 1106 w Fp(3)330 399 y Ff({)45 b Fo(int)i(minweight)p │ │ │ │ Fp(:)38 b(minim)m(um)30 b(target)i(w)m(eigh)m(t)g(for)e(a)h(domain)330 │ │ │ │ 541 y Ff({)45 b Fo(int)i(maxweight)p Fp(:)38 b(maxim)m(um)31 │ │ │ │ b(target)h(w)m(eigh)m(t)f(for)g(a)f(domain)330 683 y │ │ │ │ Ff({)45 b Fo(double)h(freeze)p Fp(:)51 b(m)m(ultiplier)37 │ │ │ │ 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 │ │ │ │ @@ -5793,17 +5799,17 @@ │ │ │ │ (ter)0 5068 y Fe(1.2)135 b(Protot)l(yp)t(es)46 b(and)f(descriptions)g │ │ │ │ (of)g Fc(GPart)e Fe(metho)t(ds)0 5294 y 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 1129 4 v │ │ │ │ -1311 w Fo(GPart)29 b Fg(:)40 b Fm(DRAFT)31 b Fg(Jan)m(uary)f(6,)h(2026) │ │ │ │ -p 2771 100 V 0 399 a Fb(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fp(4)p 136 100 1106 4 v │ │ │ │ +1288 w Fo(GPart)29 b Fg(:)41 b Fm(DRAFT)30 b Fg(Jan)m(uary)g(10,)h │ │ │ │ +(2026)p 2794 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) │ │ │ │ @@ -5863,17 +5869,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 1129 4 v 1310 100 a Fo(GPart)29 │ │ │ │ -b Fg(:)41 b Fm(DRAFT)121 b Fg(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2724 100 V 1129 w Fp(5)0 399 y Fb(1.2.3)112 b(Utilit)m(y)38 │ │ │ │ +TeXDict begin 5 4 bop 91 100 1106 4 v 1288 100 a Fo(GPart)29 │ │ │ │ +b Fg(:)40 b Fm(DRAFT)121 b Fg(Jan)m(uary)30 b(10,)i(2026)p │ │ │ │ +2747 100 V 1106 w Fp(5)0 399 y Fb(1.2.3)112 b(Utilit)m(y)38 │ │ │ │ b(metho)s(ds)111 599 y Fp(1.)46 b Fo(void)h(GPart_setCweights)c(\()k │ │ │ │ (GPart)g(*gpart)f(\))h(;)227 753 y Fp(This)26 b(metho)s(d)g(sets)g(the) │ │ │ │ h(comp)s(onen)m(t)g(w)m(eigh)m(ts)g(v)m(ector)h Fo(cweightsIV)p │ │ │ │ Fp(.)c(W)-8 b(e)28 b(assume)e(that)h(the)f Fo(compidsIV)227 │ │ │ │ 866 y Fp(v)m(ector)33 b(has)f(b)s(een)e(set)i(prior)f(to)i(en)m(tering) │ │ │ │ f(this)f(metho)s(d.)44 b(The)31 b(w)m(eigh)m(t)i(of)e(a)h(comp)s(onen)m │ │ │ │ (t)g(is)g(not)f(simply)227 979 y(the)g(sum)f(of)g(the)h(w)m(eigh)m(ts)h │ │ │ │ @@ -5953,28 +5959,28 @@ │ │ │ │ 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 1129 4 v │ │ │ │ -1311 w Fo(GPart)29 b Fg(:)40 b Fm(DRAFT)31 b Fg(Jan)m(uary)f(6,)h(2026) │ │ │ │ -p 2771 100 V 111 399 a Fp(6.)46 b Fo(IV)h(*)h(GPart_bndWeightsIV)43 │ │ │ │ -b(\()k(GPart)g(*gpart)f(\))h(;)227 549 y Fp(This)27 b(metho)s(d)g │ │ │ │ -(returns)f(an)h Fo(IV)g Fp(ob)5 b(ject)28 b(that)g(con)m(tains)g(the)g │ │ │ │ -(w)m(eigh)m(ts)h(of)e(the)h(v)m(ertices)h(on)e(the)g(b)s(oundaries)227 │ │ │ │ -661 y(of)k(the)f(comp)s(onen)m(ts.)227 811 y Fm(Err)-5 │ │ │ │ -b(or)34 b(che)-5 b(cking:)40 b Fp(If)30 b Fo(gpart)f │ │ │ │ -Fp(or)i Fo(g)f Fp(is)g Fo(NULL)p Fp(,)g(an)g(error)g(message)h(is)g │ │ │ │ -(prin)m(ted)f(and)f(the)i(program)f(exits.)0 1079 y Fb(1.2.4)112 │ │ │ │ -b(Domain)39 b(decomp)s(osition)g(metho)s(ds)0 1276 y │ │ │ │ -Fp(There)30 b(are)h(presen)m(tly)f(t)m(w)m(o)i(metho)s(ds)e(that)h │ │ │ │ -(create)h(a)e(domain)h(decomp)s(osition)g(of)f(a)h(graph)f(or)g(a)h │ │ │ │ -(subgraph.)111 1512 y(1.)46 b Fo(void)h(GPart_DDviaFishnet)c(\()k │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fp(6)p 136 100 1106 4 v │ │ │ │ +1288 w Fo(GPart)29 b Fg(:)41 b Fm(DRAFT)30 b Fg(Jan)m(uary)g(10,)h │ │ │ │ +(2026)p 2794 100 V 111 399 a Fp(6.)46 b Fo(IV)h(*)h(GPart_bndWeightsIV) │ │ │ │ +43 b(\()k(GPart)g(*gpart)f(\))h(;)227 549 y Fp(This)27 │ │ │ │ +b(metho)s(d)g(returns)f(an)h Fo(IV)g Fp(ob)5 b(ject)28 │ │ │ │ +b(that)g(con)m(tains)g(the)g(w)m(eigh)m(ts)h(of)e(the)h(v)m(ertices)h │ │ │ │ +(on)e(the)g(b)s(oundaries)227 661 y(of)k(the)f(comp)s(onen)m(ts.)227 │ │ │ │ +811 y Fm(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fp(If)30 │ │ │ │ +b Fo(gpart)f Fp(or)i Fo(g)f Fp(is)g Fo(NULL)p Fp(,)g(an)g(error)g │ │ │ │ +(message)h(is)g(prin)m(ted)f(and)f(the)i(program)f(exits.)0 │ │ │ │ +1079 y Fb(1.2.4)112 b(Domain)39 b(decomp)s(osition)g(metho)s(ds)0 │ │ │ │ +1276 y Fp(There)30 b(are)h(presen)m(tly)f(t)m(w)m(o)i(metho)s(ds)e │ │ │ │ +(that)h(create)h(a)e(domain)h(decomp)s(osition)g(of)f(a)h(graph)f(or)g │ │ │ │ +(a)h(subgraph.)111 1512 y(1.)46 b Fo(void)h(GPart_DDviaFishnet)c(\()k │ │ │ │ (GPart)g(*gpart,)e(double)h(frac,)h(int)g(minweight,)1468 │ │ │ │ 1624 y(int)g(maxweight,)e(int)i(seed)g(\))g(;)227 1775 │ │ │ │ y Fp(This)34 b(metho)s(d)f(generates)j(a)f(domain)f(decomp)s(osition)h │ │ │ │ (of)f(a)h(graph)e(using)h(the)h Fm(\014shnet)g Fp(algorithm)g(\(see)227 │ │ │ │ 1887 y([)p Ff(?)q Fp(])40 b(for)g(details\).)71 b(On)39 │ │ │ │ b(return,)j(the)e Fo(compidsIV)e Fp(v)m(ector)j(is)f(\014lled)g(with)g │ │ │ │ (comp)s(onen)m(t)g(ids)g(and)f Fo(ncomp)227 2000 y Fp(is)k(set)h(with)e │ │ │ │ @@ -6034,17 +6040,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 1129 4 v 1310 100 a Fo(GPart)29 │ │ │ │ -b Fg(:)41 b Fm(DRAFT)121 b Fg(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2724 100 V 1129 w Fp(7)227 399 y(Kernighan-Lin)k(algorithm)h(to)g │ │ │ │ +TeXDict begin 7 6 bop 91 100 1106 4 v 1288 100 a Fo(GPart)29 │ │ │ │ +b Fg(:)40 b Fm(DRAFT)121 b Fg(Jan)m(uary)30 b(10,)i(2026)p │ │ │ │ +2747 100 V 1106 w Fp(7)227 399 y(Kernighan-Lin)j(algorithm)h(to)g │ │ │ │ (\014nd)e(an)h(\\edge")i(separator)e(formed)g(of)g(segmen)m(ts,)j(whic) │ │ │ │ m(h)d(is)g(really)i(a)227 511 y(v)m(ertex)30 b(separator,)h(a)e(subset) │ │ │ │ f(of)h(\010.)40 b(The)29 b Fo(alpha)e Fp(parameter)j(is)f(used)f(in)h │ │ │ │ (the)g(cost)h(function)e(ev)-5 b(aluation)227 670 y(for)33 │ │ │ │ b(the)f(partition,)i(cost)q(\([)p Fl(S;)15 b(B)5 b(;)15 │ │ │ │ b(W)e Fp(]\))30 b(=)f Fi(j)p Fl(S)5 b Fi(j)1776 551 y │ │ │ │ Fh(\022)1838 670 y Fp(1)20 b(+)g Fl(\013)2062 608 y Fp(max)q │ │ │ │ @@ -6143,17 +6149,17 @@ │ │ │ │ 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 1129 4 v │ │ │ │ -1311 w Fo(GPart)29 b Fg(:)40 b Fm(DRAFT)31 b Fg(Jan)m(uary)f(6,)h(2026) │ │ │ │ -p 2771 100 V 227 399 a Fp(The)e Fo(YVmapIV)e Fp(ob)5 │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fp(8)p 136 100 1106 4 v │ │ │ │ +1288 w Fo(GPart)29 b Fg(:)41 b Fm(DRAFT)30 b Fg(Jan)m(uary)g(10,)h │ │ │ │ +(2026)p 2794 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 │ │ │ │ @@ -6264,17 +6270,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 1129 4 v 1310 100 a Fo(GPart)29 │ │ │ │ -b Fg(:)41 b Fm(DRAFT)121 b Fg(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2724 100 V 1129 w Fp(9)0 399 y Fb(1.2.7)112 b(Recursiv)m(e)38 │ │ │ │ +TeXDict begin 9 8 bop 91 100 1106 4 v 1288 100 a Fo(GPart)29 │ │ │ │ +b Fg(:)40 b Fm(DRAFT)121 b Fg(Jan)m(uary)30 b(10,)i(2026)p │ │ │ │ +2747 100 V 1106 w Fp(9)0 399 y Fb(1.2.7)112 b(Recursiv)m(e)38 │ │ │ │ b(Bisection)f(metho)s(d)0 589 y Fp(There)30 b(is)g(presen)m(tly)h(one)g │ │ │ │ (metho)s(d)e(to)j(construct)e(the)h(domain/separator)g(tree.)111 │ │ │ │ 787 y(1.)46 b Fo(DSTree)g(*)i(GPart_RBviaDDsep)43 b(\()48 │ │ │ │ b(GPart)e(*gpart,)g(DDsepInfo)f(*info)h(\))i(;)227 932 │ │ │ │ y Fp(This)c(metho)s(d)f(p)s(erforms)f(a)j(recursiv)m(e)f(bisection)h │ │ │ │ (of)f(the)h(graph)e(using)h(the)g Fo(DDSEP)e Fp(algorithm)k(and)227 │ │ │ │ 1045 y(returns)25 b(a)h Fo(DSTree)e Fp(ob)5 b(ject)27 │ │ │ │ @@ -6337,17 +6343,17 @@ │ │ │ │ (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 1106 4 │ │ │ │ -v 1289 w Fo(GPart)29 b Fg(:)40 b Fm(DRAFT)30 b Fg(Jan)m(uary)g(6,)h │ │ │ │ -(2026)p 2794 100 V 111 399 a Fp(4.)46 b Fo(void)h(DDsepInfo_free)d(\()j │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fp(10)p 182 100 1084 4 │ │ │ │ +v 1266 w Fo(GPart)29 b Fg(:)40 b Fm(DRAFT)31 b Fg(Jan)m(uary)f(10,)h │ │ │ │ +(2026)p 2817 100 V 111 399 a Fp(4.)46 b Fo(void)h(DDsepInfo_free)d(\()j │ │ │ │ (DDsepInfo)f(*info)g(\))h(;)227 545 y Fp(This)33 b(metho)s(d)g(c)m(hec) │ │ │ │ m(ks)h(to)g(see)g(whether)f Fo(info)f Fp(is)h Fo(NULL)p │ │ │ │ Fp(.)g(If)g(so,)h(an)f(error)g(message)i(is)e(prin)m(ted)g(and)g(the) │ │ │ │ 227 658 y(program)f(exits.)46 b(Otherwise,)32 b(it)g(releases)h(an)m(y) │ │ │ │ g(storage)g(b)m(y)f(a)g(call)h(to)g Fo(DDsepInfo)p 3141 │ │ │ │ 658 29 4 v 31 w(clearData\(\))c Fp(then)227 771 y(free's)i(the)f │ │ │ │ (storage)i(for)e(the)h(structure)f(with)g(a)h(call)g(to)h │ │ │ │ @@ -6400,17 +6406,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 1106 4 v 1288 100 a Fo(GPart)29 │ │ │ │ -b Fg(:)40 b Fm(DRAFT)121 b Fg(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2701 100 V 1106 w Fp(11)337 399 y Fn(\210)45 b Fp(The)30 │ │ │ │ +TeXDict begin 11 10 bop 91 100 1084 4 v 1265 100 a Fo(GPart)29 │ │ │ │ +b Fg(:)41 b Fm(DRAFT)121 b Fg(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2724 100 V 1084 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 │ │ │ │ @@ -6479,17 +6485,17 @@ │ │ │ │ 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 1106 │ │ │ │ -4 v 1289 w Fo(GPart)29 b Fg(:)40 b Fm(DRAFT)30 b Fg(Jan)m(uary)g(6,)h │ │ │ │ -(2026)p 2794 100 V 337 399 a Fn(\210)45 b Fp(The)23 b │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fp(12)p 182 100 1084 │ │ │ │ +4 v 1266 w Fo(GPart)29 b Fg(:)40 b Fm(DRAFT)31 b Fg(Jan)m(uary)f(10,)h │ │ │ │ +(2026)p 2817 100 V 337 399 a Fn(\210)45 b Fp(The)23 b │ │ │ │ Fo(inGraphFile)d Fp(parameter)k(is)f(the)h(input)e(\014le)i(for)f(the)g │ │ │ │ Fo(Graph)f Fp(ob)5 b(ject.)39 b(It)24 b(m)m(ust)f(b)s(e)f(of)i(the)f │ │ │ │ (form)427 511 y Fo(*.graphf)18 b Fp(or)j Fo(*.graphb)p │ │ │ │ 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 │ │ │ │ @@ -6560,17 +6566,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 1106 4 v 1288 100 a Fo(GPart)29 │ │ │ │ -b Fg(:)40 b Fm(DRAFT)121 b Fg(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2701 100 V 1106 w Fp(13)337 399 y Fn(\210)45 b Fp(The)c │ │ │ │ +TeXDict begin 13 12 bop 91 100 1084 4 v 1265 100 a Fo(GPart)29 │ │ │ │ +b Fg(:)41 b Fm(DRAFT)121 b Fg(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2724 100 V 1084 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 │ │ │ │ @@ -6640,17 +6646,17 @@ │ │ │ │ 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 1106 │ │ │ │ -4 v 1289 w Fo(GPart)29 b Fg(:)40 b Fm(DRAFT)30 b Fg(Jan)m(uary)g(6,)h │ │ │ │ -(2026)p 2794 100 V 337 399 a Fn(\210)45 b Fp(The)34 b │ │ │ │ +TeXDict begin 14 13 bop 0 100 a Fp(14)p 182 100 1084 │ │ │ │ +4 v 1266 w Fo(GPart)29 b Fg(:)40 b Fm(DRAFT)31 b Fg(Jan)m(uary)f(10,)h │ │ │ │ +(2026)p 2817 100 V 337 399 a Fn(\210)45 b Fp(The)34 b │ │ │ │ Fo(outDSTreeFile)d Fp(parameter)k(is)f(the)h(output)f(\014le)g(for)g │ │ │ │ (the)h Fo(DSTree)e Fp(ob)5 b(ject.)53 b(It)35 b(m)m(ust)f(b)s(e)g(of) │ │ │ │ 427 511 y(the)29 b(form)f Fo(*.dstreef)e Fp(or)j Fo(*.dstreeb)p │ │ │ │ Fp(.)37 b(If)29 b Fo(outDSTreeFile)24 b Fp(is)29 b(not)g │ │ │ │ Fo("none")p Fp(,)e(the)i Fo(DSTree)e Fp(ob)5 b(ject)427 │ │ │ │ 624 y(is)31 b(written)f(to)h(the)g(\014le)f(via)h(the)g │ │ │ │ Fo(DSTree)p 1851 624 29 4 v 33 w(writeToFile\(\))26 b │ │ │ │ ├── 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 January 6, 2026 │ │ │ │ │ + 2 GPart : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 3 │ │ │ │ │ + GPart : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 4 GPart : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 5 │ │ │ │ │ + GPart : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 6 GPart : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 7 │ │ │ │ │ + GPart : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 8 GPart : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 9 │ │ │ │ │ + GPart : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 10 GPart : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 11 │ │ │ │ │ + GPart : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 12 GPart : DRAFT January 10, 2026 │ │ │ │ │ • 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 January 6, 2026 13 │ │ │ │ │ + GPart : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 14 GPart : DRAFT January 10, 2026 │ │ │ │ │ • 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 2026.01.06:2034 │ │ │ │ +%DVIPSSource: TeX output 2026.01.10:0513 │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ %! │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ @@ -1202,14 +1202,15 @@ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ /UnderlineThickness 50 def │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ +dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ dup 54 /six put │ │ │ │ dup 58 /colon put │ │ │ │ dup 74 /J put │ │ │ │ dup 97 /a put │ │ │ │ dup 110 /n put │ │ │ │ dup 114 /r put │ │ │ │ @@ -1399,79 +1400,84 @@ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB88440048702D1F │ │ │ │ -77994EE04EC3B4531D6E1888C86A8F0DA6CF1F056F16AB0DD76C862830F89DA4 │ │ │ │ -28923B3AA543E0D6E41D3BD283E600BC11F889315EE92C675C109C81065ED1BC │ │ │ │ -82A5583D1B723D50051B0557A367887F5B263014C6E77288B4883C50889473D3 │ │ │ │ -3787BAD4BEB88BD1353AFA5B73E61814819537E7FF09F53EF94792BB3DD36ED0 │ │ │ │ -002D0E7A6CDAB85A9C17AF5664BCB5A71663B861880F3ECCABC8E7A2FC81A4CC │ │ │ │ -AE7A87503FDC1CE0077BA51ECC7B43B60793FED8E9AAD5BBD03ADD6183DCD26D │ │ │ │ -24A74163611C05562437644EF9B8889FD4F9D311911204FEFD35237486F2D2D0 │ │ │ │ -B6783A03BF12EA6D19D6D0F87E4D08515F12F9CBF1961CAA71E0D69FE3C4C4D2 │ │ │ │ -7C7FB64ED24F8684C8F00C2BEDEA53EA390CDC0B5BEBD7DD982580B2EA1F1F89 │ │ │ │ -CFED5916630DC2BA32BB9180277E1ABC339B3B7DE086717BD93F7FF3681BA5B3 │ │ │ │ -FCF671C4B293C2DE4A322F0AA3323A4934444C69F23EF90120B8755482757759 │ │ │ │ -C457A435FB8BB4922BD92C5F3D9555D978275C510183E29DFF2FCE4ABBFC18DE │ │ │ │ -76CAD3B486BA12047DD808CD4D521A0FD368E4AE79DE262630983A5D6F0B679D │ │ │ │ -2F005306393C520E1B6987302D029939D94B0178DB06211C7F3B123A41E6E7BA │ │ │ │ -87164737110707A3ED3983895F3FBC815EF370F54C808ED93D910937BCA3D8AF │ │ │ │ -7CBF80DC180CDA54059DB76710B4FCD4139D5B7DA7DB1A0D0AF86AD2453D3691 │ │ │ │ -0BA5BAD40FF28BB4235FCD40FC87C2B888E67928D9B0ACA5692149373DBB93BF │ │ │ │ -6520DDD36A9BFE4D415CA67A5E04F1D48BDB28C69676273ED842CF7980E8E17C │ │ │ │ -B88563F407E340AFAE8F51AABCF8A39521BCEE1EC8396D75E124B24B4675909F │ │ │ │ -E246F87DA08584A3173AEFF153ECDF610543FA7474D125A31ADD6285A49222B5 │ │ │ │ -177066EA395BFA4B1114C7FCF7712DA772A21C99E64F4E1181E69CAF98137FA2 │ │ │ │ -76CF74F682B8CD7BA6EEA79B70FA8A76809634517F8415B6F21A5A7D6099B5E8 │ │ │ │ -EAB356BBC4FB68C72B8C61DDCE8EAB1A53B9D6BAD78584B307EFF57CEAE74884 │ │ │ │ -35987BF89E9E60E962D22FA5612F2DB5EB840499B7CC11A34BA5DEE30D277540 │ │ │ │ -39B8211D69B448ADE95B723F8369A631DE6DD75703AFD7485FB7FFF41A60CBE4 │ │ │ │ -813B8FEA120662355773830EF85015E7FFD609B2CEE52CB5FFE9C35B6BEEE4A4 │ │ │ │ -A66719E31CE1523FDD7771FB1E881A32A7DB7D92C2326DF4B93241C14ABFCCD6 │ │ │ │ -8E5BCAC61E800E6B1B4687ADA4CBF41EC0AFC26D021D1772CBDCD0516DF5EBE1 │ │ │ │ -37FD2AC5ABB8D774B5735940F1F6866D044FD8CE74444FAA5D0202C11E39CC10 │ │ │ │ -213731F41F704450E1D0565013BF22188442CE0FC256190A9F92F0C802AA2660 │ │ │ │ -614AFE9E9C82F8CD2E6035EEF84E5F16CBB690AC819B4B910EA8E81106F0ACE5 │ │ │ │ -CDFE77DAF69E4AFE72C43145A3ABCC40B6C5297487083F738C86422277AC2267 │ │ │ │ -51759F1B7F129E87DE16433B664AD0FB6D30424A11C70B52B591352BF653C8B0 │ │ │ │ -0840C224FBFEAA996A6BE1D69414DD778C2EF56A63B64D59BA412EC3E4000831 │ │ │ │ -73361FB9813F9A7C74BA3A50D331B07B61492E5D75F0861B530587269B3ADC90 │ │ │ │ -EA1DF586AC4BC57C3230893EFE953A6E76950ABA895FAC711D3BD330ABC6846A │ │ │ │ -C91F6ABF3410B913DFE5C8266020CEE5C7A9EDA2E7D9BCA797DC486443C7BA7C │ │ │ │ -7E03439A40927FA3251B6D417E5653E7799E9D6F04149C34096E2CA9B1F9B1EC │ │ │ │ -38958A2521B4A657A8B9F16E1FD66C7E345A10D7AA0241559503D214AC6507A4 │ │ │ │ -CBDE8617AA7ED136577734428594487F3565BF45FA196375759E2FE23C26EC8A │ │ │ │ -3310A36917A5E2F260EAB31030F8E570303D36B833626938F56939849DFA1F3F │ │ │ │ -66D0A317BB6364427F1512AAB380B555611C76345C02C3A6FBF78590331D5ECA │ │ │ │ -029DEFB722F6AB05327C2A31AB7BD6ED0F0386E6F45C1278048D22B90B074CCB │ │ │ │ -2BBEBCC1927C97EC532E651CAF0058AFE8FC08F00F0216D5DD9830C294FF76DA │ │ │ │ -426A073B3A3AEEFBDEE71C5182186311607ECDBD1F1AF4C5E79748CD01445C8D │ │ │ │ -25DD49490C8A6810065908222C8D0AC9F83AFBEE7115023E2D2615A170A5D40A │ │ │ │ -AD49BDF59A59187B6434F83E68EED22EF4EFDBADED6F1559AC779E0377FE7375 │ │ │ │ -D7060584FE74B1859D0FD98772253A712B17FFBB467840C484F5EF82C5677ADB │ │ │ │ -EDF159A456A526B8B9F6E8FC7608DFD47B0F09E26118F79CBE53B6C4E32BACAB │ │ │ │ -D62AFD4AA527CC4B587BB41A17A9BCE106A8C592BC9B73422B712C466C284A17 │ │ │ │ -E8D0C1E01D43C739FB1C083AD2714F78AC785B0C09AA7E67417A73510E00F2FE │ │ │ │ -E3D3EBF626A2F3A20A386E3F98D1285F4A2A332FC609CD191F01F128627B3505 │ │ │ │ -0AC2387DC0AD1B950490EBB5045F22BEC54955402CE2D267B6754E7C32BE84E8 │ │ │ │ -E6B63E3D3EAEE979442D167AEF69C27B22A8E887A2510C3A168D95D285CF7515 │ │ │ │ -011C921679B2F386575826A3F2071D015EEB78F02A4F94D4E5F07873623200F8 │ │ │ │ -7DF95BA0DC6B6D31DECC925BEA1E6A7C52FE685800EC33CBAE830F1AE5454DFA │ │ │ │ -913B8F457D7E2D3DFF019869E3301EEEC64A38295DE6B588E776922B32362382 │ │ │ │ -D1CF3D058613C8A96E6994D3EC23E8B71EC6E718383B20BB6C22DB6F93FA559F │ │ │ │ -3449CA84EB33B25C8BE0DFD1C29DC4FBD7AFBDC96C12162CAAB2C5E354B0FB10 │ │ │ │ -4BF8CC3610875ABD5111D09F2F847822118972214EDEB9EE34BAFE45E7AC15C5 │ │ │ │ -CA63EC4A3CEEA505A5EDD88A59BB67C71C3E026DFFE177F99BC69E6635545D03 │ │ │ │ -77A634F98230EF64381EC67CA519D4B9770EFA844789E21970F89D5FFC5DEAA8 │ │ │ │ -DC008EBA09306967ED090FF91B002FA6120C2B461A87AA32EFB003C5578D8EEF │ │ │ │ - │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ +AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ +E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ +46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ +FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ +389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ +7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ +2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ +C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ +B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ +AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ +E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ +F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ +0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ +2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ +29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ +CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ +6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ +5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ +36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0DD96AB602D004DCFE000A0 │ │ │ │ +ABE41BAB8AB7D50BD32BFD6F1AA3B60B09B9BE4E273EDD2DDCB21A98A760D17D │ │ │ │ +0A5C9303AFE63CF80A93E60C72A0576FAADEECBE2DE91892D210EB0AD1889C04 │ │ │ │ +C7530652584E775B4ED19CFB4B8DBCCC57A9FA9E4DDC8A1E5A1D3BE9E93407A6 │ │ │ │ +2C237ACE27F4EDA330EE952EDCBE91683AA98A29197735006666C96A2CE7C787 │ │ │ │ +BBA5A57C4DBF6FAA5B38AF226B5D9A65FAD84650AC0C3DB29C30602699F81E01 │ │ │ │ +0BAF8F1CE44A03C680121B77A1703C638187675D6C22C49F9902475E6CE9C732 │ │ │ │ +48ED028CC92EA542EF189CC9CA1C384E3387793057615D0A2BF040CC90B275B9 │ │ │ │ +F70A5310874DC2E0A360373E7BCAC88250FBC8989C7D18DA8274C06F02FCF31C │ │ │ │ +2B3868CBAF083DAC2FB159DE368261842DB7C9EA1A86B17617C861A48FBA8FF9 │ │ │ │ +D184CB026F4A418C0955347612F94C039B1536A76CB182A591DD7C02D509CF16 │ │ │ │ +8B9E46502ABF5DE31F5DFBD19C7417A2AF7AF13F0D5FF837C94CE56F07B96337 │ │ │ │ +0ED215252346FAEB54B5F3ABE29709B7ECB9FBD23A4AD397E6ABA6938F1BBF33 │ │ │ │ +1D5460D9414F0B8725DA832744525C13E3FD9C8DB33FBEE12F9C4969988402C8 │ │ │ │ +96AF916364CC2DF17EDBA622FC0A5D0013418E29F912FFA06F8D7E31ECAB0B08 │ │ │ │ +C4D2D8EE537CC768FC9038DD6D86D33642C6E812E941F157FC6917AF19C2B99A │ │ │ │ +5BF10B9A7ECF711BBB6F33C8C3DAD778153122593F36ABDDC0E97A602B045DE6 │ │ │ │ +19BD82D877DDA960AB11EF48C7F75A28D0D731D4A5DBC98283087267CD1A470D │ │ │ │ +537E949DA5EECF097B099547995BE066A941CED683B5748962AD2B02C21636C0 │ │ │ │ +2EAFA33CA0CB3BF8A95703F015A210D918865B9BEA2890DCFB68BC3719C305EC │ │ │ │ +315EC8727BF9A93632AB9E3090B100C022EE1396CD329B37547F26A7DCE52BD7 │ │ │ │ +F91B7388DEC34F4A0C6D46CD7CA6ACC00C5C4C71E47C6AD96496B3CBF531F342 │ │ │ │ +A740EE6B99BD70AD490DFA700772A0697EC6561CE88A0113E4DC3B21F372D810 │ │ │ │ +DFF2C3F6EDF3E917BF2664EEFC9AD292DD6CC36853CF936018D43FDB28D5B001 │ │ │ │ +7D1C805F958F13FD221377ABDD69D102E8CC1DAB2E011EE16CF6DB9D195BA702 │ │ │ │ +5A8738FABF989B0351282D0E5121182DFC52169782A5F3DD5D820411BEF909DE │ │ │ │ +04D963E6FDA76F88508C4E91DDAAA1748F396A1D380D8CA429673AF27C164434 │ │ │ │ +771781B39565D3EE50F3CF03EF12908B13A6C11C9AB7631B32125828B13050BA │ │ │ │ +041A93B97AC32D4A1E28C5FA98CDEE998B5F97823D6291D01E3611A16854F1FE │ │ │ │ +69B9D6D2AE3E56D012B7BC3E582FB4C23188A5E365E65EB1F804A706AF73A2F8 │ │ │ │ +9804808EF71F0982B14133BF9A27D6F2E719BDB751022B1B052722933948904E │ │ │ │ +3582E363478DCDA115205A0FDE39DF71FEAEEB104419C35A6B0678C19616C6D9 │ │ │ │ +A892DC2F4257069AF096C80C099CD13024DF3995F28C694E00D1F08B43D4450C │ │ │ │ +D18F5C925CFD2D124E74FC64BBAA0DE32A79E4A4507B5B5DD834C67160CDA110 │ │ │ │ +EF0061DD27E8864F4250A92BBEFD75C784BB98F4FA789A8236C2A21E4E61ABD0 │ │ │ │ +C6B4D13B3C31AC8E55FA34BEC7C308C61FB0280382EC6AFD63D959678D42D2B3 │ │ │ │ +4134F6236A0808D9302B4E3C6F81FC6973B4833602750CCB5DE36AEA23ED6BD4 │ │ │ │ +5B72DF0DD7B81C871CAA6EC190748CD8C4B998D576E5D340ACAC0617DDBE461C │ │ │ │ +8E82E809D11A01D265D039F4315066832E27E08A6F067E129E45FBF533F761BB │ │ │ │ +EC3C071209BECE7D14D3184B2E6BFD65717A5A7C08F3776B20C513649488C1CF │ │ │ │ +03333805B249D1034FB0AE2D7D2A23324EE27AEDB68F8E329A8052FE58D7C0D9 │ │ │ │ +A40A0CDC79F2085C4F39A7DFDB625C8F071E2A32CF6215DD3E060A9BABF7A3AA │ │ │ │ +C57DA0C0571C5D6EEAA975D1BB9C99F8EA4958360E43E8C60080B03DC4435550 │ │ │ │ +E6048DDD35DF3E5DA69669F266FFD7B44649A68025270DC84258E329F6E6907C │ │ │ │ +BCFF900D715D0C7EC43C5E7180CAD6427BA4FD41AAD6531A5C06B0EC26DDA71F │ │ │ │ +4A9DA50DE919E79226F6DDF7C1BA478936AA86CEAD93072CC2960E98C45A1A0C │ │ │ │ +60CF8A26E4278AB4F9E28FA6532648196CC455607D6BCD00F60675DE8CC02C8C │ │ │ │ +9BE5D5B714731814D5B008EE236563D77AC6895E0158877C95797E07C02AFEBE │ │ │ │ +CC9FE97D5E103F7DB0A834E9A7A75893EC66340B0E4C6F0EEDEF43415BF9FCF4 │ │ │ │ +47340CBEA4DCFBA0D028EB2149FFBBDB3322AE5F6FD20242526EDC55E476D983 │ │ │ │ +DC │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -5626,15 +5632,15 @@ │ │ │ │ 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 3[51 │ │ │ │ -12[45 22[47 15[25 3[45 3[45 1[45 3[25 44[{}11 90.9091 │ │ │ │ +12[45 22[47 15[25 3[45 3[45 45 45 3[25 44[{}12 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 │ │ │ │ @@ -5754,23 +5760,23 @@ │ │ │ │ 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 1129 4 v │ │ │ │ -1311 w Fn(Graph)29 b Fe(:)40 b Fl(DRAFT)31 b Fe(Jan)m(uary)f(6,)h(2026) │ │ │ │ -p 2771 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 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fo(2)p 136 100 1106 4 v │ │ │ │ +1288 w Fn(Graph)29 b Fe(:)41 b Fl(DRAFT)30 b Fe(Jan)m(uary)g(10,)h │ │ │ │ +(2026)p 2794 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 │ │ │ │ @@ -5820,17 +5826,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 1129 4 v 1310 100 a Fn(Graph)29 │ │ │ │ -b Fe(:)41 b Fl(DRAFT)121 b Fe(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2724 100 V 1129 w Fo(3)0 399 y Fa(1.2.1)112 b(Basic)38 │ │ │ │ +TeXDict begin 3 2 bop 91 100 1106 4 v 1288 100 a Fn(Graph)29 │ │ │ │ +b Fe(:)40 b Fl(DRAFT)121 b Fe(Jan)m(uary)30 b(10,)i(2026)p │ │ │ │ +2747 100 V 1106 w Fo(3)0 399 y Fa(1.2.1)112 b(Basic)38 │ │ │ │ b(metho)s(ds)0 605 y Fo(As)d(usual,)h(there)f(are)g(four)f(basic)h │ │ │ │ (metho)s(ds)g(to)g(supp)s(ort)e(ob)5 b(ject)36 b(creation,)i(setting)e │ │ │ │ (default)f(\014elds,)h(clearing)0 718 y(an)m(y)31 b(allo)s(cated)h │ │ │ │ (data,)f(and)f(free'ing)h(the)g(ob)5 b(ject.)111 982 │ │ │ │ y(1.)46 b Fn(Graph)h(*)g(Graph_new)e(\()j(void)e(\))i(;)227 │ │ │ │ 1143 y Fo(This)28 b(metho)s(d)g(simply)h(allo)s(cates)i(storage)f(for)e │ │ │ │ (the)h Fn(Graph)f Fo(structure)g(and)g(then)g(sets)i(the)f(default)f │ │ │ │ @@ -5897,31 +5903,32 @@ │ │ │ │ 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 1129 4 v │ │ │ │ -1311 w Fn(Graph)29 b Fe(:)40 b Fl(DRAFT)31 b Fe(Jan)m(uary)f(6,)h(2026) │ │ │ │ -p 2771 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 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fo(4)p 136 100 1106 4 v │ │ │ │ +1288 w Fn(Graph)29 b Fe(:)41 b Fl(DRAFT)30 b Fe(Jan)m(uary)g(10,)h │ │ │ │ +(2026)p 2794 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 │ │ │ │ Fn(type)h Fo(is)h(in)m(v)-5 b(alid)35 b(\()p Fn(type)e │ │ │ │ Fo(m)m(ust)g(b)s(e)h(in)f Fn([0,3])p Fo(\),)h Fn(nvtx)227 │ │ │ │ 1383 y Fo(is)i(non-p)s(ositiv)m(e,)h Fn(nvbnd)d Fo(or)i │ │ │ │ Fn(nedges)d Fo(is)j(negativ)m(e,)j(or)c(if)g Fn(type)47 │ │ │ │ b(\045)g(2)h(=)f(1)35 b Fo(and)g Fn(vwghts)f Fo(is)h │ │ │ │ @@ -5987,17 +5994,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 1129 4 v 1310 100 a Fn(Graph)29 │ │ │ │ -b Fe(:)41 b Fl(DRAFT)121 b Fe(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2724 100 V 1129 w Fo(5)227 399 y Fl(Err)-5 b(or)33 b(che)-5 │ │ │ │ +TeXDict begin 5 4 bop 91 100 1106 4 v 1288 100 a Fn(Graph)29 │ │ │ │ +b Fe(:)40 b Fl(DRAFT)121 b Fe(Jan)m(uary)30 b(10,)i(2026)p │ │ │ │ +2747 100 V 1106 w Fo(5)227 399 y Fl(Err)-5 b(or)33 b(che)-5 │ │ │ │ b(cking:)40 b Fo(If)28 b Fn(graph)g Fo(is)h Fn(NULL)f │ │ │ │ Fo(or)h Fn(nvtx)47 b(<=)g(0)p Fo(,)29 b(an)g(error)g(message)h(is)f │ │ │ │ (prin)m(ted)f(and)h(the)g(program)227 511 y(exits.)111 │ │ │ │ 726 y(2.)46 b Fn(Graph)h(*)g(Graph_compress)92 b(\()47 │ │ │ │ b(Graph)g(*graph,)e(int)i(map[],)f(int)h(coarseType)e(\))j(;)227 │ │ │ │ 839 y(Graph)f(*)g(Graph_compress2)d(\()j(Graph)g(*graph,)e(IV)j │ │ │ │ (*mapIV,)d(int)i(coarseType)e(\))j(;)227 1003 y Fo(This)c │ │ │ │ @@ -6057,18 +6064,18 @@ │ │ │ │ 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 1129 4 v │ │ │ │ -1311 w Fn(Graph)29 b Fe(:)40 b Fl(DRAFT)31 b Fe(Jan)m(uary)f(6,)h(2026) │ │ │ │ -p 2771 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 │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fo(6)p 136 100 1106 4 v │ │ │ │ +1288 w Fn(Graph)29 b Fe(:)41 b Fl(DRAFT)30 b Fe(Jan)m(uary)g(10,)h │ │ │ │ +(2026)p 2794 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 │ │ │ │ @@ -6153,17 +6160,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 1129 4 v 1310 100 a Fn(Graph)29 │ │ │ │ -b Fe(:)41 b Fl(DRAFT)121 b Fe(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2724 100 V 1129 w Fo(7)227 399 y Fl(Err)-5 b(or)32 b(che)-5 │ │ │ │ +TeXDict begin 7 6 bop 91 100 1106 4 v 1288 100 a Fn(Graph)29 │ │ │ │ +b Fe(:)40 b Fl(DRAFT)121 b Fe(Jan)m(uary)30 b(10,)i(2026)p │ │ │ │ +2747 100 V 1106 w Fo(7)227 399 y Fl(Err)-5 b(or)32 b(che)-5 │ │ │ │ b(cking:)39 b Fo(If)28 b Fn(graph)f Fo(is)h Fn(NULL)f │ │ │ │ Fo(or)h Fn(icomp)46 b(<)i(0)27 b Fo(or)i Fn(compids)d │ │ │ │ Fo(or)i Fn(pmap)f Fo(is)h Fn(NULL)p Fo(,)f(an)h(error)g(message)227 │ │ │ │ 511 y(is)j(prin)m(ted)f(and)f(the)i(program)f(exits.)111 │ │ │ │ 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 │ │ │ │ @@ -6245,33 +6252,34 @@ │ │ │ │ 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 1129 4 v │ │ │ │ -1311 w Fn(Graph)29 b Fe(:)40 b Fl(DRAFT)31 b Fe(Jan)m(uary)f(6,)h(2026) │ │ │ │ -p 2771 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 1106 4 v │ │ │ │ +1288 w Fn(Graph)29 b Fe(:)41 b Fl(DRAFT)30 b Fe(Jan)m(uary)g(10,)h │ │ │ │ +(2026)p 2794 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 │ │ │ │ @@ -6318,17 +6326,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 1129 4 v 1310 100 a Fn(Graph)29 │ │ │ │ -b Fe(:)41 b Fl(DRAFT)121 b Fe(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2724 100 V 1129 w Fo(9)337 399 y Fc(\210)45 b Fo(The)28 │ │ │ │ +TeXDict begin 9 8 bop 91 100 1106 4 v 1288 100 a Fn(Graph)29 │ │ │ │ +b Fe(:)40 b Fl(DRAFT)121 b Fe(Jan)m(uary)30 b(10,)i(2026)p │ │ │ │ +2747 100 V 1106 w Fo(9)337 399 y Fc(\210)45 b Fo(The)28 │ │ │ │ b Fn(msglvl)f Fo(parameter)i(determines)g(the)g(amoun)m(t)g(of)f │ │ │ │ (output)h(|)f(taking)i Fn(msglvl)46 b(>=)h(3)28 b Fo(means)427 │ │ │ │ 511 y(that)j(all)h(ob)5 b(jects)31 b(are)f(written)h(to)g(the)f │ │ │ │ (message)i(\014le.)337 660 y Fc(\210)45 b Fo(The)33 b │ │ │ │ Fn(msgFile)e Fo(parameter)j(determines)f(the)h(message)g(\014le)f(|)h │ │ │ │ (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 │ │ │ │ @@ -6411,17 +6419,17 @@ │ │ │ │ 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 1106 4 │ │ │ │ -v 1289 w Fn(Graph)29 b Fe(:)40 b Fl(DRAFT)30 b Fe(Jan)m(uary)g(6,)h │ │ │ │ -(2026)p 2794 100 V 227 399 a Fo(This)d(driv)m(er)h(program)g(creates)h │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fo(10)p 182 100 1084 4 │ │ │ │ +v 1266 w Fn(Graph)29 b Fe(:)40 b Fl(DRAFT)31 b Fe(Jan)m(uary)f(10,)h │ │ │ │ +(2026)p 2817 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 │ │ │ │ @@ -6490,17 +6498,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 1106 4 v 1288 100 a Fn(Graph)29 │ │ │ │ -b Fe(:)40 b Fl(DRAFT)121 b Fe(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2701 100 V 1106 w Fo(11)337 399 y Fc(\210)45 b Fo(The)37 │ │ │ │ +TeXDict begin 11 10 bop 91 100 1084 4 v 1265 100 a Fn(Graph)29 │ │ │ │ +b Fe(:)41 b Fl(DRAFT)121 b Fe(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2724 100 V 1084 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 │ │ │ │ @@ -6557,17 +6565,17 @@ │ │ │ │ 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 1106 │ │ │ │ -4 v 1289 w Fn(Graph)29 b Fe(:)40 b Fl(DRAFT)30 b Fe(Jan)m(uary)g(6,)h │ │ │ │ -(2026)p 2794 100 V 429 1927 a @beginspecial 0 @llx 0 │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fo(12)p 182 100 1084 │ │ │ │ +4 v 1266 w Fn(Graph)29 b Fe(:)40 b Fl(DRAFT)31 b Fe(Jan)m(uary)f(10,)h │ │ │ │ +(2026)p 2817 100 V 429 1927 a @beginspecial 0 @llx 0 │ │ │ │ @lly 600 @urx 600 @ury 1943 @rwi 1943 @rhi @setspecial │ │ │ │ %%BeginDocument: ../../Graph/doc/rad1.eps │ │ │ │ %!PS-Adobe-2.0 EPSF-1.2 │ │ │ │ %%BoundingBox: 0.0 0.0 600.0 600.0 │ │ │ │ /radius 15 def │ │ │ │ /Helvetica findfont 18.75 scalefont setfont │ │ │ │ /M {moveto} def │ │ │ │ ├── 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 January 6, 2026 │ │ │ │ │ + 2 Graph : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 3 │ │ │ │ │ + Graph : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 4 Graph : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 5 │ │ │ │ │ + Graph : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 6 Graph : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 7 │ │ │ │ │ + Graph : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 8 Graph : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 9 │ │ │ │ │ + Graph : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 10 Graph : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 11 │ │ │ │ │ + Graph : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 12 Graph : DRAFT January 10, 2026 │ │ │ │ │ 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 2026.01.06:2034 │ │ │ │ +%DVIPSSource: TeX output 2026.01.10:0513 │ │ │ │ %%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 │ │ │ │ @@ -2423,14 +2423,15 @@ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ /UnderlineThickness 50 def │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ +dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ dup 54 /six put │ │ │ │ dup 58 /colon put │ │ │ │ dup 74 /J put │ │ │ │ dup 97 /a put │ │ │ │ dup 110 /n put │ │ │ │ dup 114 /r put │ │ │ │ @@ -2620,79 +2621,84 @@ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB88440048702D1F │ │ │ │ -77994EE04EC3B4531D6E1888C86A8F0DA6CF1F056F16AB0DD76C862830F89DA4 │ │ │ │ -28923B3AA543E0D6E41D3BD283E600BC11F889315EE92C675C109C81065ED1BC │ │ │ │ -82A5583D1B723D50051B0557A367887F5B263014C6E77288B4883C50889473D3 │ │ │ │ -3787BAD4BEB88BD1353AFA5B73E61814819537E7FF09F53EF94792BB3DD36ED0 │ │ │ │ -002D0E7A6CDAB85A9C17AF5664BCB5A71663B861880F3ECCABC8E7A2FC81A4CC │ │ │ │ -AE7A87503FDC1CE0077BA51ECC7B43B60793FED8E9AAD5BBD03ADD6183DCD26D │ │ │ │ -24A74163611C05562437644EF9B8889FD4F9D311911204FEFD35237486F2D2D0 │ │ │ │ -B6783A03BF12EA6D19D6D0F87E4D08515F12F9CBF1961CAA71E0D69FE3C4C4D2 │ │ │ │ -7C7FB64ED24F8684C8F00C2BEDEA53EA390CDC0B5BEBD7DD982580B2EA1F1F89 │ │ │ │ -CFED5916630DC2BA32BB9180277E1ABC339B3B7DE086717BD93F7FF3681BA5B3 │ │ │ │ -FCF671C4B293C2DE4A322F0AA3323A4934444C69F23EF90120B8755482757759 │ │ │ │ -C457A435FB8BB4922BD92C5F3D9555D978275C510183E29DFF2FCE4ABBFC18DE │ │ │ │ -76CAD3B486BA12047DD808CD4D521A0FD368E4AE79DE262630983A5D6F0B679D │ │ │ │ -2F005306393C520E1B6987302D029939D94B0178DB06211C7F3B123A41E6E7BA │ │ │ │ -87164737110707A3ED3983895F3FBC815EF370F54C808ED93D910937BCA3D8AF │ │ │ │ -7CBF80DC180CDA54059DB76710B4FCD4139D5B7DA7DB1A0D0AF86AD2453D3691 │ │ │ │ -0BA5BAD40FF28BB4235FCD40FC87C2B888E67928D9B0ACA5692149373DBB93BF │ │ │ │ -6520DDD36A9BFE4D415CA67A5E04F1D48BDB28C69676273ED842CF7980E8E17C │ │ │ │ -B88563F407E340AFAE8F51AABCF8A39521BCEE1EC8396D75E124B24B4675909F │ │ │ │ -E246F87DA08584A3173AEFF153ECDF610543FA7474D125A31ADD6285A49222B5 │ │ │ │ -177066EA395BFA4B1114C7FCF7712DA772A21C99E64F4E1181E69CAF98137FA2 │ │ │ │ -76CF74F682B8CD7BA6EEA79B70FA8A76809634517F8415B6F21A5A7D6099B5E8 │ │ │ │ -EAB356BBC4FB68C72B8C61DDCE8EAB1A53B9D6BAD78584B307EFF57CEAE74884 │ │ │ │ -35987BF89E9E60E962D22FA5612F2DB5EB840499B7CC11A34BA5DEE30D277540 │ │ │ │ -39B8211D69B448ADE95B723F8369A631DE6DD75703AFD7485FB7FFF41A60CBE4 │ │ │ │ -813B8FEA120662355773830EF85015E7FFD609B2CEE52CB5FFE9C35B6BEEE4A4 │ │ │ │ -A66719E31CE1523FDD7771FB1E881A32A7DB7D92C2326DF4B93241C14ABFCCD6 │ │ │ │ -8E5BCAC61E800E6B1B4687ADA4CBF41EC0AFC26D021D1772CBDCD0516DF5EBE1 │ │ │ │ -37FD2AC5ABB8D774B5735940F1F6866D044FD8CE74444FAA5D0202C11E39CC10 │ │ │ │ -213731F41F704450E1D0565013BF22188442CE0FC256190A9F92F0C802AA2660 │ │ │ │ -614AFE9E9C82F8CD2E6035EEF84E5F16CBB690AC819B4B910EA8E81106F0ACE5 │ │ │ │ -CDFE77DAF69E4AFE72C43145A3ABCC40B6C5297487083F738C86422277AC2267 │ │ │ │ -51759F1B7F129E87DE16433B664AD0FB6D30424A11C70B52B591352BF653C8B0 │ │ │ │ -0840C224FBFEAA996A6BE1D69414DD778C2EF56A63B64D59BA412EC3E4000831 │ │ │ │ -73361FB9813F9A7C74BA3A50D331B07B61492E5D75F0861B530587269B3ADC90 │ │ │ │ -EA1DF586AC4BC57C3230893EFE953A6E76950ABA895FAC711D3BD330ABC6846A │ │ │ │ -C91F6ABF3410B913DFE5C8266020CEE5C7A9EDA2E7D9BCA797DC486443C7BA7C │ │ │ │ -7E03439A40927FA3251B6D417E5653E7799E9D6F04149C34096E2CA9B1F9B1EC │ │ │ │ -38958A2521B4A657A8B9F16E1FD66C7E345A10D7AA0241559503D214AC6507A4 │ │ │ │ -CBDE8617AA7ED136577734428594487F3565BF45FA196375759E2FE23C26EC8A │ │ │ │ -3310A36917A5E2F260EAB31030F8E570303D36B833626938F56939849DFA1F3F │ │ │ │ -66D0A317BB6364427F1512AAB380B555611C76345C02C3A6FBF78590331D5ECA │ │ │ │ -029DEFB722F6AB05327C2A31AB7BD6ED0F0386E6F45C1278048D22B90B074CCB │ │ │ │ -2BBEBCC1927C97EC532E651CAF0058AFE8FC08F00F0216D5DD9830C294FF76DA │ │ │ │ -426A073B3A3AEEFBDEE71C5182186311607ECDBD1F1AF4C5E79748CD01445C8D │ │ │ │ -25DD49490C8A6810065908222C8D0AC9F83AFBEE7115023E2D2615A170A5D40A │ │ │ │ -AD49BDF59A59187B6434F83E68EED22EF4EFDBADED6F1559AC779E0377FE7375 │ │ │ │ -D7060584FE74B1859D0FD98772253A712B17FFBB467840C484F5EF82C5677ADB │ │ │ │ -EDF159A456A526B8B9F6E8FC7608DFD47B0F09E26118F79CBE53B6C4E32BACAB │ │ │ │ -D62AFD4AA527CC4B587BB41A17A9BCE106A8C592BC9B73422B712C466C284A17 │ │ │ │ -E8D0C1E01D43C739FB1C083AD2714F78AC785B0C09AA7E67417A73510E00F2FE │ │ │ │ -E3D3EBF626A2F3A20A386E3F98D1285F4A2A332FC609CD191F01F128627B3505 │ │ │ │ -0AC2387DC0AD1B950490EBB5045F22BEC54955402CE2D267B6754E7C32BE84E8 │ │ │ │ -E6B63E3D3EAEE979442D167AEF69C27B22A8E887A2510C3A168D95D285CF7515 │ │ │ │ -011C921679B2F386575826A3F2071D015EEB78F02A4F94D4E5F07873623200F8 │ │ │ │ -7DF95BA0DC6B6D31DECC925BEA1E6A7C52FE685800EC33CBAE830F1AE5454DFA │ │ │ │ -913B8F457D7E2D3DFF019869E3301EEEC64A38295DE6B588E776922B32362382 │ │ │ │ -D1CF3D058613C8A96E6994D3EC23E8B71EC6E718383B20BB6C22DB6F93FA559F │ │ │ │ -3449CA84EB33B25C8BE0DFD1C29DC4FBD7AFBDC96C12162CAAB2C5E354B0FB10 │ │ │ │ -4BF8CC3610875ABD5111D09F2F847822118972214EDEB9EE34BAFE45E7AC15C5 │ │ │ │ -CA63EC4A3CEEA505A5EDD88A59BB67C71C3E026DFFE177F99BC69E6635545D03 │ │ │ │ -77A634F98230EF64381EC67CA519D4B9770EFA844789E21970F89D5FFC5DEAA8 │ │ │ │ -DC008EBA09306967ED090FF91B002FA6120C2B461A87AA32EFB003C5578D8EEF │ │ │ │ - │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ +AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ +E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ +46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ +FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ +389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ +7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ +2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ +C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ +B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ +AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ +E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ +F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ +0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ +2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ +29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ +CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ +6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ +5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ +36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0DD96AB602D004DCFE000A0 │ │ │ │ +ABE41BAB8AB7D50BD32BFD6F1AA3B60B09B9BE4E273EDD2DDCB21A98A760D17D │ │ │ │ +0A5C9303AFE63CF80A93E60C72A0576FAADEECBE2DE91892D210EB0AD1889C04 │ │ │ │ +C7530652584E775B4ED19CFB4B8DBCCC57A9FA9E4DDC8A1E5A1D3BE9E93407A6 │ │ │ │ +2C237ACE27F4EDA330EE952EDCBE91683AA98A29197735006666C96A2CE7C787 │ │ │ │ +BBA5A57C4DBF6FAA5B38AF226B5D9A65FAD84650AC0C3DB29C30602699F81E01 │ │ │ │ +0BAF8F1CE44A03C680121B77A1703C638187675D6C22C49F9902475E6CE9C732 │ │ │ │ +48ED028CC92EA542EF189CC9CA1C384E3387793057615D0A2BF040CC90B275B9 │ │ │ │ +F70A5310874DC2E0A360373E7BCAC88250FBC8989C7D18DA8274C06F02FCF31C │ │ │ │ +2B3868CBAF083DAC2FB159DE368261842DB7C9EA1A86B17617C861A48FBA8FF9 │ │ │ │ +D184CB026F4A418C0955347612F94C039B1536A76CB182A591DD7C02D509CF16 │ │ │ │ +8B9E46502ABF5DE31F5DFBD19C7417A2AF7AF13F0D5FF837C94CE56F07B96337 │ │ │ │ +0ED215252346FAEB54B5F3ABE29709B7ECB9FBD23A4AD397E6ABA6938F1BBF33 │ │ │ │ +1D5460D9414F0B8725DA832744525C13E3FD9C8DB33FBEE12F9C4969988402C8 │ │ │ │ +96AF916364CC2DF17EDBA622FC0A5D0013418E29F912FFA06F8D7E31ECAB0B08 │ │ │ │ +C4D2D8EE537CC768FC9038DD6D86D33642C6E812E941F157FC6917AF19C2B99A │ │ │ │ +5BF10B9A7ECF711BBB6F33C8C3DAD778153122593F36ABDDC0E97A602B045DE6 │ │ │ │ +19BD82D877DDA960AB11EF48C7F75A28D0D731D4A5DBC98283087267CD1A470D │ │ │ │ +537E949DA5EECF097B099547995BE066A941CED683B5748962AD2B02C21636C0 │ │ │ │ +2EAFA33CA0CB3BF8A95703F015A210D918865B9BEA2890DCFB68BC3719C305EC │ │ │ │ +315EC8727BF9A93632AB9E3090B100C022EE1396CD329B37547F26A7DCE52BD7 │ │ │ │ +F91B7388DEC34F4A0C6D46CD7CA6ACC00C5C4C71E47C6AD96496B3CBF531F342 │ │ │ │ +A740EE6B99BD70AD490DFA700772A0697EC6561CE88A0113E4DC3B21F372D810 │ │ │ │ +DFF2C3F6EDF3E917BF2664EEFC9AD292DD6CC36853CF936018D43FDB28D5B001 │ │ │ │ +7D1C805F958F13FD221377ABDD69D102E8CC1DAB2E011EE16CF6DB9D195BA702 │ │ │ │ +5A8738FABF989B0351282D0E5121182DFC52169782A5F3DD5D820411BEF909DE │ │ │ │ +04D963E6FDA76F88508C4E91DDAAA1748F396A1D380D8CA429673AF27C164434 │ │ │ │ +771781B39565D3EE50F3CF03EF12908B13A6C11C9AB7631B32125828B13050BA │ │ │ │ +041A93B97AC32D4A1E28C5FA98CDEE998B5F97823D6291D01E3611A16854F1FE │ │ │ │ +69B9D6D2AE3E56D012B7BC3E582FB4C23188A5E365E65EB1F804A706AF73A2F8 │ │ │ │ +9804808EF71F0982B14133BF9A27D6F2E719BDB751022B1B052722933948904E │ │ │ │ +3582E363478DCDA115205A0FDE39DF71FEAEEB104419C35A6B0678C19616C6D9 │ │ │ │ +A892DC2F4257069AF096C80C099CD13024DF3995F28C694E00D1F08B43D4450C │ │ │ │ +D18F5C925CFD2D124E74FC64BBAA0DE32A79E4A4507B5B5DD834C67160CDA110 │ │ │ │ +EF0061DD27E8864F4250A92BBEFD75C784BB98F4FA789A8236C2A21E4E61ABD0 │ │ │ │ +C6B4D13B3C31AC8E55FA34BEC7C308C61FB0280382EC6AFD63D959678D42D2B3 │ │ │ │ +4134F6236A0808D9302B4E3C6F81FC6973B4833602750CCB5DE36AEA23ED6BD4 │ │ │ │ +5B72DF0DD7B81C871CAA6EC190748CD8C4B998D576E5D340ACAC0617DDBE461C │ │ │ │ +8E82E809D11A01D265D039F4315066832E27E08A6F067E129E45FBF533F761BB │ │ │ │ +EC3C071209BECE7D14D3184B2E6BFD65717A5A7C08F3776B20C513649488C1CF │ │ │ │ +03333805B249D1034FB0AE2D7D2A23324EE27AEDB68F8E329A8052FE58D7C0D9 │ │ │ │ +A40A0CDC79F2085C4F39A7DFDB625C8F071E2A32CF6215DD3E060A9BABF7A3AA │ │ │ │ +C57DA0C0571C5D6EEAA975D1BB9C99F8EA4958360E43E8C60080B03DC4435550 │ │ │ │ +E6048DDD35DF3E5DA69669F266FFD7B44649A68025270DC84258E329F6E6907C │ │ │ │ +BCFF900D715D0C7EC43C5E7180CAD6427BA4FD41AAD6531A5C06B0EC26DDA71F │ │ │ │ +4A9DA50DE919E79226F6DDF7C1BA478936AA86CEAD93072CC2960E98C45A1A0C │ │ │ │ +60CF8A26E4278AB4F9E28FA6532648196CC455607D6BCD00F60675DE8CC02C8C │ │ │ │ +9BE5D5B714731814D5B008EE236563D77AC6895E0158877C95797E07C02AFEBE │ │ │ │ +CC9FE97D5E103F7DB0A834E9A7A75893EC66340B0E4C6F0EEDEF43415BF9FCF4 │ │ │ │ +47340CBEA4DCFBA0D028EB2149FFBBDB3322AE5F6FD20242526EDC55E476D983 │ │ │ │ +DC │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -4337,15 +4343,15 @@ │ │ │ │ 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 3[51 12[45 22[47 15[25 3[45 3[45 1[45 3[25 44[{}11 │ │ │ │ +2[36 3[51 12[45 22[47 15[25 3[45 3[45 45 45 3[25 44[{}12 │ │ │ │ 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 │ │ │ │ @@ -4459,17 +4465,17 @@ │ │ │ │ b(n)m(um)m(b)s(er)29 b(of)h(items)h(in)f(the)h(hash)f(table.)137 │ │ │ │ 5294 y Fk(\210)45 b Fl(I2OP)i(*baseI2OP)35 b Fm(:)j(p)s(oin)m(ter)g(to) │ │ │ │ h(an)f Fl(I2OP)f Fm(ob)5 b(ject)39 b(that)f(k)m(eeps)h(trac)m(k)g(of)f │ │ │ │ (all)h(the)f Fl(I2OP)f Fm(ob)5 b(jects)38 b(that)227 │ │ │ │ 5407 y(ha)m(v)m(e)32 b(b)s(een)e(allo)s(cated)i(b)m(y)e(the)h(hash)e │ │ │ │ (table.)1927 5656 y(1)p eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fm(2)p 136 100 1081 4 v │ │ │ │ -1263 w Fl(I2Ohash)29 b Fh(:)40 b Fi(DRAFT)30 b Fh(Jan)m(uary)g(6,)h │ │ │ │ -(2026)p 2819 100 V 137 399 a Fk(\210)45 b Fl(I2OP)i(*freeI2OP)28 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fm(2)p 136 100 1059 4 v │ │ │ │ +1240 w Fl(I2Ohash)29 b Fh(:)40 b Fi(DRAFT)31 b Fh(Jan)m(uary)f(10,)h │ │ │ │ +(2026)p 2842 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 │ │ │ │ @@ -4519,17 +4525,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 1081 4 v 1263 100 a Fl(I2Ohash)28 │ │ │ │ -b Fh(:)41 b Fi(DRAFT)121 b Fh(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2772 100 V 1081 w Fm(3)111 399 y(1.)46 b Fl(void)h(I2Ohash_init)d(\()k │ │ │ │ +TeXDict begin 3 2 bop 91 100 1059 4 v 1240 100 a Fl(I2Ohash)28 │ │ │ │ +b Fh(:)41 b Fi(DRAFT)121 b Fh(Jan)m(uary)30 b(10,)i(2026)p │ │ │ │ +2795 100 V 1059 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 │ │ │ │ @@ -4605,17 +4611,17 @@ │ │ │ │ (*hashtable,)g(FILE)i(*fp)g(\))g(;)227 5151 y Fm(This)30 │ │ │ │ b(metho)s(d)g(prin)m(ts)g(the)g(hash)g(table)h(in)f(a)h(h)m │ │ │ │ (uman-readable)f(format.)227 5294 y Fi(Err)-5 b(or)41 │ │ │ │ b(che)-5 b(cking:)56 b Fm(If)38 b Fl(hashtable)e Fm(or)i │ │ │ │ Fl(fp)f Fm(is)i Fl(NULL)p Fm(,)e(an)h(error)g(message)h(is)f(prin)m │ │ │ │ (ted)g(and)g(the)g(program)227 5407 y(exits.)p eop end │ │ │ │ %%Page: 4 4 │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fm(4)p 136 100 1081 4 v │ │ │ │ -1263 w Fl(I2Ohash)29 b Fh(:)40 b Fi(DRAFT)30 b Fh(Jan)m(uary)g(6,)h │ │ │ │ -(2026)p 2819 100 V 0 399 a Fj(1.3)135 b(Driv)l(er)46 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fm(4)p 136 100 1059 4 v │ │ │ │ +1240 w Fl(I2Ohash)29 b Fh(:)40 b Fi(DRAFT)31 b Fh(Jan)m(uary)f(10,)h │ │ │ │ +(2026)p 2842 100 V 0 399 a Fj(1.3)135 b(Driv)l(er)46 │ │ │ │ b(programs)g(for)f(the)g Fg(I2Ohash)58 b(object)111 626 │ │ │ │ y Fm(1.)46 b Fl(test_hash)g(msglvl)g(msgFile)f(size)i(grow)g(maxkey)f │ │ │ │ (nent)g(seed)227 777 y Fm(This)34 b(driv)m(er)h(program)g(tests)h(the)f │ │ │ │ Fl(I2Ohash)e Fm(insert)i(metho)s(d.)54 b(It)35 b(inserts)f(a)i(n)m(um)m │ │ │ │ (b)s(er)d(of)i(triples)h(in)m(to)g(a)227 890 y(hash)d(table)h(and)e │ │ │ │ (prin)m(ts)h(out)g(the)h(\\measure")g(of)f(ho)m(w)g(w)m(ell)h │ │ │ │ (distributed)f(the)g(en)m(tries)h(are)f(in)g(the)h(hash)227 │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -21,15 +21,15 @@ │ │ │ │ │ • int nlist : number of lists in the hash table │ │ │ │ │ • int grow : when no I2OP objects are available to insert a new triple, │ │ │ │ │ the object can allocate grow more I2OP objects and put them on the free list. │ │ │ │ │ • nitem : number of items in the hash table. │ │ │ │ │ • I2OP *baseI2OP : pointer to an I2OP object that keeps track of all the I2OP objects that │ │ │ │ │ have been allocated by the hash table. │ │ │ │ │ 1 │ │ │ │ │ - 2 I2Ohash : DRAFT January 6, 2026 │ │ │ │ │ + 2 I2Ohash : DRAFT January 10, 2026 │ │ │ │ │ • 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 January 6, 2026 3 │ │ │ │ │ + I2Ohash : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 4 I2Ohash : DRAFT January 10, 2026 │ │ │ │ │ 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 2026.01.06:2034 │ │ │ │ +%DVIPSSource: TeX output 2026.01.10:0513 │ │ │ │ %%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 │ │ │ │ @@ -1276,14 +1276,15 @@ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ /UnderlineThickness 50 def │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ +dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ dup 54 /six put │ │ │ │ dup 58 /colon put │ │ │ │ dup 74 /J put │ │ │ │ dup 97 /a put │ │ │ │ dup 110 /n put │ │ │ │ dup 114 /r put │ │ │ │ @@ -1473,79 +1474,84 @@ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB88440048702D1F │ │ │ │ -77994EE04EC3B4531D6E1888C86A8F0DA6CF1F056F16AB0DD76C862830F89DA4 │ │ │ │ -28923B3AA543E0D6E41D3BD283E600BC11F889315EE92C675C109C81065ED1BC │ │ │ │ -82A5583D1B723D50051B0557A367887F5B263014C6E77288B4883C50889473D3 │ │ │ │ -3787BAD4BEB88BD1353AFA5B73E61814819537E7FF09F53EF94792BB3DD36ED0 │ │ │ │ -002D0E7A6CDAB85A9C17AF5664BCB5A71663B861880F3ECCABC8E7A2FC81A4CC │ │ │ │ -AE7A87503FDC1CE0077BA51ECC7B43B60793FED8E9AAD5BBD03ADD6183DCD26D │ │ │ │ -24A74163611C05562437644EF9B8889FD4F9D311911204FEFD35237486F2D2D0 │ │ │ │ -B6783A03BF12EA6D19D6D0F87E4D08515F12F9CBF1961CAA71E0D69FE3C4C4D2 │ │ │ │ -7C7FB64ED24F8684C8F00C2BEDEA53EA390CDC0B5BEBD7DD982580B2EA1F1F89 │ │ │ │ -CFED5916630DC2BA32BB9180277E1ABC339B3B7DE086717BD93F7FF3681BA5B3 │ │ │ │ -FCF671C4B293C2DE4A322F0AA3323A4934444C69F23EF90120B8755482757759 │ │ │ │ -C457A435FB8BB4922BD92C5F3D9555D978275C510183E29DFF2FCE4ABBFC18DE │ │ │ │ -76CAD3B486BA12047DD808CD4D521A0FD368E4AE79DE262630983A5D6F0B679D │ │ │ │ -2F005306393C520E1B6987302D029939D94B0178DB06211C7F3B123A41E6E7BA │ │ │ │ -87164737110707A3ED3983895F3FBC815EF370F54C808ED93D910937BCA3D8AF │ │ │ │ -7CBF80DC180CDA54059DB76710B4FCD4139D5B7DA7DB1A0D0AF86AD2453D3691 │ │ │ │ -0BA5BAD40FF28BB4235FCD40FC87C2B888E67928D9B0ACA5692149373DBB93BF │ │ │ │ -6520DDD36A9BFE4D415CA67A5E04F1D48BDB28C69676273ED842CF7980E8E17C │ │ │ │ -B88563F407E340AFAE8F51AABCF8A39521BCEE1EC8396D75E124B24B4675909F │ │ │ │ -E246F87DA08584A3173AEFF153ECDF610543FA7474D125A31ADD6285A49222B5 │ │ │ │ -177066EA395BFA4B1114C7FCF7712DA772A21C99E64F4E1181E69CAF98137FA2 │ │ │ │ -76CF74F682B8CD7BA6EEA79B70FA8A76809634517F8415B6F21A5A7D6099B5E8 │ │ │ │ -EAB356BBC4FB68C72B8C61DDCE8EAB1A53B9D6BAD78584B307EFF57CEAE74884 │ │ │ │ -35987BF89E9E60E962D22FA5612F2DB5EB840499B7CC11A34BA5DEE30D277540 │ │ │ │ -39B8211D69B448ADE95B723F8369A631DE6DD75703AFD7485FB7FFF41A60CBE4 │ │ │ │ -813B8FEA120662355773830EF85015E7FFD609B2CEE52CB5FFE9C35B6BEEE4A4 │ │ │ │ -A66719E31CE1523FDD7771FB1E881A32A7DB7D92C2326DF4B93241C14ABFCCD6 │ │ │ │ -8E5BCAC61E800E6B1B4687ADA4CBF41EC0AFC26D021D1772CBDCD0516DF5EBE1 │ │ │ │ -37FD2AC5ABB8D774B5735940F1F6866D044FD8CE74444FAA5D0202C11E39CC10 │ │ │ │ -213731F41F704450E1D0565013BF22188442CE0FC256190A9F92F0C802AA2660 │ │ │ │ -614AFE9E9C82F8CD2E6035EEF84E5F16CBB690AC819B4B910EA8E81106F0ACE5 │ │ │ │ -CDFE77DAF69E4AFE72C43145A3ABCC40B6C5297487083F738C86422277AC2267 │ │ │ │ -51759F1B7F129E87DE16433B664AD0FB6D30424A11C70B52B591352BF653C8B0 │ │ │ │ -0840C224FBFEAA996A6BE1D69414DD778C2EF56A63B64D59BA412EC3E4000831 │ │ │ │ -73361FB9813F9A7C74BA3A50D331B07B61492E5D75F0861B530587269B3ADC90 │ │ │ │ -EA1DF586AC4BC57C3230893EFE953A6E76950ABA895FAC711D3BD330ABC6846A │ │ │ │ -C91F6ABF3410B913DFE5C8266020CEE5C7A9EDA2E7D9BCA797DC486443C7BA7C │ │ │ │ -7E03439A40927FA3251B6D417E5653E7799E9D6F04149C34096E2CA9B1F9B1EC │ │ │ │ -38958A2521B4A657A8B9F16E1FD66C7E345A10D7AA0241559503D214AC6507A4 │ │ │ │ -CBDE8617AA7ED136577734428594487F3565BF45FA196375759E2FE23C26EC8A │ │ │ │ -3310A36917A5E2F260EAB31030F8E570303D36B833626938F56939849DFA1F3F │ │ │ │ -66D0A317BB6364427F1512AAB380B555611C76345C02C3A6FBF78590331D5ECA │ │ │ │ -029DEFB722F6AB05327C2A31AB7BD6ED0F0386E6F45C1278048D22B90B074CCB │ │ │ │ -2BBEBCC1927C97EC532E651CAF0058AFE8FC08F00F0216D5DD9830C294FF76DA │ │ │ │ -426A073B3A3AEEFBDEE71C5182186311607ECDBD1F1AF4C5E79748CD01445C8D │ │ │ │ -25DD49490C8A6810065908222C8D0AC9F83AFBEE7115023E2D2615A170A5D40A │ │ │ │ -AD49BDF59A59187B6434F83E68EED22EF4EFDBADED6F1559AC779E0377FE7375 │ │ │ │ -D7060584FE74B1859D0FD98772253A712B17FFBB467840C484F5EF82C5677ADB │ │ │ │ -EDF159A456A526B8B9F6E8FC7608DFD47B0F09E26118F79CBE53B6C4E32BACAB │ │ │ │ -D62AFD4AA527CC4B587BB41A17A9BCE106A8C592BC9B73422B712C466C284A17 │ │ │ │ -E8D0C1E01D43C739FB1C083AD2714F78AC785B0C09AA7E67417A73510E00F2FE │ │ │ │ -E3D3EBF626A2F3A20A386E3F98D1285F4A2A332FC609CD191F01F128627B3505 │ │ │ │ -0AC2387DC0AD1B950490EBB5045F22BEC54955402CE2D267B6754E7C32BE84E8 │ │ │ │ -E6B63E3D3EAEE979442D167AEF69C27B22A8E887A2510C3A168D95D285CF7515 │ │ │ │ -011C921679B2F386575826A3F2071D015EEB78F02A4F94D4E5F07873623200F8 │ │ │ │ -7DF95BA0DC6B6D31DECC925BEA1E6A7C52FE685800EC33CBAE830F1AE5454DFA │ │ │ │ -913B8F457D7E2D3DFF019869E3301EEEC64A38295DE6B588E776922B32362382 │ │ │ │ -D1CF3D058613C8A96E6994D3EC23E8B71EC6E718383B20BB6C22DB6F93FA559F │ │ │ │ -3449CA84EB33B25C8BE0DFD1C29DC4FBD7AFBDC96C12162CAAB2C5E354B0FB10 │ │ │ │ -4BF8CC3610875ABD5111D09F2F847822118972214EDEB9EE34BAFE45E7AC15C5 │ │ │ │ -CA63EC4A3CEEA505A5EDD88A59BB67C71C3E026DFFE177F99BC69E6635545D03 │ │ │ │ -77A634F98230EF64381EC67CA519D4B9770EFA844789E21970F89D5FFC5DEAA8 │ │ │ │ -DC008EBA09306967ED090FF91B002FA6120C2B461A87AA32EFB003C5578D8EEF │ │ │ │ - │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ +AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ +E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ +46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ +FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ +389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ +7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ +2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ +C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ +B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ +AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ +E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ +F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ +0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ +2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ +29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ +CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ +6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ +5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ +36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0DD96AB602D004DCFE000A0 │ │ │ │ +ABE41BAB8AB7D50BD32BFD6F1AA3B60B09B9BE4E273EDD2DDCB21A98A760D17D │ │ │ │ +0A5C9303AFE63CF80A93E60C72A0576FAADEECBE2DE91892D210EB0AD1889C04 │ │ │ │ +C7530652584E775B4ED19CFB4B8DBCCC57A9FA9E4DDC8A1E5A1D3BE9E93407A6 │ │ │ │ +2C237ACE27F4EDA330EE952EDCBE91683AA98A29197735006666C96A2CE7C787 │ │ │ │ +BBA5A57C4DBF6FAA5B38AF226B5D9A65FAD84650AC0C3DB29C30602699F81E01 │ │ │ │ +0BAF8F1CE44A03C680121B77A1703C638187675D6C22C49F9902475E6CE9C732 │ │ │ │ +48ED028CC92EA542EF189CC9CA1C384E3387793057615D0A2BF040CC90B275B9 │ │ │ │ +F70A5310874DC2E0A360373E7BCAC88250FBC8989C7D18DA8274C06F02FCF31C │ │ │ │ +2B3868CBAF083DAC2FB159DE368261842DB7C9EA1A86B17617C861A48FBA8FF9 │ │ │ │ +D184CB026F4A418C0955347612F94C039B1536A76CB182A591DD7C02D509CF16 │ │ │ │ +8B9E46502ABF5DE31F5DFBD19C7417A2AF7AF13F0D5FF837C94CE56F07B96337 │ │ │ │ +0ED215252346FAEB54B5F3ABE29709B7ECB9FBD23A4AD397E6ABA6938F1BBF33 │ │ │ │ +1D5460D9414F0B8725DA832744525C13E3FD9C8DB33FBEE12F9C4969988402C8 │ │ │ │ +96AF916364CC2DF17EDBA622FC0A5D0013418E29F912FFA06F8D7E31ECAB0B08 │ │ │ │ +C4D2D8EE537CC768FC9038DD6D86D33642C6E812E941F157FC6917AF19C2B99A │ │ │ │ +5BF10B9A7ECF711BBB6F33C8C3DAD778153122593F36ABDDC0E97A602B045DE6 │ │ │ │ +19BD82D877DDA960AB11EF48C7F75A28D0D731D4A5DBC98283087267CD1A470D │ │ │ │ +537E949DA5EECF097B099547995BE066A941CED683B5748962AD2B02C21636C0 │ │ │ │ +2EAFA33CA0CB3BF8A95703F015A210D918865B9BEA2890DCFB68BC3719C305EC │ │ │ │ +315EC8727BF9A93632AB9E3090B100C022EE1396CD329B37547F26A7DCE52BD7 │ │ │ │ +F91B7388DEC34F4A0C6D46CD7CA6ACC00C5C4C71E47C6AD96496B3CBF531F342 │ │ │ │ +A740EE6B99BD70AD490DFA700772A0697EC6561CE88A0113E4DC3B21F372D810 │ │ │ │ +DFF2C3F6EDF3E917BF2664EEFC9AD292DD6CC36853CF936018D43FDB28D5B001 │ │ │ │ +7D1C805F958F13FD221377ABDD69D102E8CC1DAB2E011EE16CF6DB9D195BA702 │ │ │ │ +5A8738FABF989B0351282D0E5121182DFC52169782A5F3DD5D820411BEF909DE │ │ │ │ +04D963E6FDA76F88508C4E91DDAAA1748F396A1D380D8CA429673AF27C164434 │ │ │ │ +771781B39565D3EE50F3CF03EF12908B13A6C11C9AB7631B32125828B13050BA │ │ │ │ +041A93B97AC32D4A1E28C5FA98CDEE998B5F97823D6291D01E3611A16854F1FE │ │ │ │ +69B9D6D2AE3E56D012B7BC3E582FB4C23188A5E365E65EB1F804A706AF73A2F8 │ │ │ │ +9804808EF71F0982B14133BF9A27D6F2E719BDB751022B1B052722933948904E │ │ │ │ +3582E363478DCDA115205A0FDE39DF71FEAEEB104419C35A6B0678C19616C6D9 │ │ │ │ +A892DC2F4257069AF096C80C099CD13024DF3995F28C694E00D1F08B43D4450C │ │ │ │ +D18F5C925CFD2D124E74FC64BBAA0DE32A79E4A4507B5B5DD834C67160CDA110 │ │ │ │ +EF0061DD27E8864F4250A92BBEFD75C784BB98F4FA789A8236C2A21E4E61ABD0 │ │ │ │ +C6B4D13B3C31AC8E55FA34BEC7C308C61FB0280382EC6AFD63D959678D42D2B3 │ │ │ │ +4134F6236A0808D9302B4E3C6F81FC6973B4833602750CCB5DE36AEA23ED6BD4 │ │ │ │ +5B72DF0DD7B81C871CAA6EC190748CD8C4B998D576E5D340ACAC0617DDBE461C │ │ │ │ +8E82E809D11A01D265D039F4315066832E27E08A6F067E129E45FBF533F761BB │ │ │ │ +EC3C071209BECE7D14D3184B2E6BFD65717A5A7C08F3776B20C513649488C1CF │ │ │ │ +03333805B249D1034FB0AE2D7D2A23324EE27AEDB68F8E329A8052FE58D7C0D9 │ │ │ │ +A40A0CDC79F2085C4F39A7DFDB625C8F071E2A32CF6215DD3E060A9BABF7A3AA │ │ │ │ +C57DA0C0571C5D6EEAA975D1BB9C99F8EA4958360E43E8C60080B03DC4435550 │ │ │ │ +E6048DDD35DF3E5DA69669F266FFD7B44649A68025270DC84258E329F6E6907C │ │ │ │ +BCFF900D715D0C7EC43C5E7180CAD6427BA4FD41AAD6531A5C06B0EC26DDA71F │ │ │ │ +4A9DA50DE919E79226F6DDF7C1BA478936AA86CEAD93072CC2960E98C45A1A0C │ │ │ │ +60CF8A26E4278AB4F9E28FA6532648196CC455607D6BCD00F60675DE8CC02C8C │ │ │ │ +9BE5D5B714731814D5B008EE236563D77AC6895E0158877C95797E07C02AFEBE │ │ │ │ +CC9FE97D5E103F7DB0A834E9A7A75893EC66340B0E4C6F0EEDEF43415BF9FCF4 │ │ │ │ +47340CBEA4DCFBA0D028EB2149FFBBDB3322AE5F6FD20242526EDC55E476D983 │ │ │ │ +DC │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3716,15 +3722,15 @@ │ │ │ │ {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 3[51 12[45 22[47 15[25 3[45 3[45 │ │ │ │ -1[45 3[25 44[{}11 90.9091 /CMSL10 rf /Fd 143[62 7[62 │ │ │ │ +45 45 3[25 44[{}12 90.9091 /CMSL10 rf /Fd 143[62 7[62 │ │ │ │ 2[62 3[62 23[62 73[{}5 119.552 /CMTT12 rf │ │ │ │ %DVIPSBitmapFont: Fe tcrm1095 10.95 1 │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ /Dotaccent/cedilla/ogonek/quotesinglbase.ts1 4{/.notdef}repeat │ │ │ │ /quotedblbase.ts1/.notdef/.notdef/twelveudash/threequartersemdash │ │ │ │ /afii61664.cap/arrowleft/arrowright/tieaccentlowercase/tieaccentcapital │ │ │ │ /tieaccentlowercase.new/tieaccentcapital.new/.notdef/afii61664.asc/uni2422 3 │ │ │ │ @@ -3831,17 +3837,17 @@ │ │ │ │ 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 1105 4 v │ │ │ │ -1287 w Fj(IIheap)29 b Fc(:)40 b Fi(DRAFT)31 b Fc(Jan)m(uary)f(6,)h │ │ │ │ -(2026)p 2795 100 V 0 399 a Fb(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fk(2)p 136 100 1082 4 v │ │ │ │ +1264 w Fj(IIheap)29 b Fc(:)41 b Fi(DRAFT)30 b Fc(Jan)m(uary)g(10,)h │ │ │ │ +(2026)p 2818 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 │ │ │ │ @@ -3891,17 +3897,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 1105 4 v 1287 100 a Fj(IIheap)28 │ │ │ │ -b Fc(:)41 b Fi(DRAFT)121 b Fc(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2748 100 V 1105 w Fk(3)111 399 y(2.)46 b Fj(void)h(IIheap_root)e(\()i │ │ │ │ +TeXDict begin 3 2 bop 91 100 1082 4 v 1264 100 a Fj(IIheap)28 │ │ │ │ +b Fc(:)41 b Fi(DRAFT)121 b Fc(Jan)m(uary)30 b(10,)i(2026)p │ │ │ │ +2771 100 V 1082 w Fk(3)111 399 y(2.)46 b Fj(void)h(IIheap_root)e(\()i │ │ │ │ (IIheap)f(*heap,)g(int)h(*pkey,)f(int)h(*pvalue)f(\))h(;)227 │ │ │ │ 549 y Fk(This)32 b(metho)s(d)g(\014lls)h Fj(*pid)e Fk(and)i │ │ │ │ Fj(*pkey)e Fk(with)h(the)h(k)m(ey)h(and)e(v)-5 b(alue,)34 │ │ │ │ b(resp)s(ectiv)m(ely)-8 b(,)35 b(of)e(the)g(ro)s(ot)g(elemen)m(t,)227 │ │ │ │ 662 y(an)e(elemen)m(t)g(with)f(minim)m(um)g(v)-5 b(alue.)41 │ │ │ │ b(If)30 b Fj(size)47 b(==)g(0)30 b Fk(then)g Fj(-1)g │ │ │ │ Fk(is)g(returned.)227 812 y Fi(Err)-5 b(or)30 b(che)-5 │ │ │ │ ├── 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 January 6, 2026 │ │ │ │ │ + 2 IIheap : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 3 │ │ │ │ │ + IIheap : DRAFT January 10, 2026 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 2026.01.06:2034 │ │ │ │ +%DVIPSSource: TeX output 2026.01.10:0513 │ │ │ │ %%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 │ │ │ │ @@ -1608,14 +1608,15 @@ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ /UnderlineThickness 50 def │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ +dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ dup 54 /six put │ │ │ │ dup 58 /colon put │ │ │ │ dup 74 /J put │ │ │ │ dup 97 /a put │ │ │ │ dup 110 /n put │ │ │ │ dup 114 /r put │ │ │ │ @@ -1805,79 +1806,84 @@ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB88440048702D1F │ │ │ │ -77994EE04EC3B4531D6E1888C86A8F0DA6CF1F056F16AB0DD76C862830F89DA4 │ │ │ │ -28923B3AA543E0D6E41D3BD283E600BC11F889315EE92C675C109C81065ED1BC │ │ │ │ -82A5583D1B723D50051B0557A367887F5B263014C6E77288B4883C50889473D3 │ │ │ │ -3787BAD4BEB88BD1353AFA5B73E61814819537E7FF09F53EF94792BB3DD36ED0 │ │ │ │ -002D0E7A6CDAB85A9C17AF5664BCB5A71663B861880F3ECCABC8E7A2FC81A4CC │ │ │ │ -AE7A87503FDC1CE0077BA51ECC7B43B60793FED8E9AAD5BBD03ADD6183DCD26D │ │ │ │ -24A74163611C05562437644EF9B8889FD4F9D311911204FEFD35237486F2D2D0 │ │ │ │ -B6783A03BF12EA6D19D6D0F87E4D08515F12F9CBF1961CAA71E0D69FE3C4C4D2 │ │ │ │ -7C7FB64ED24F8684C8F00C2BEDEA53EA390CDC0B5BEBD7DD982580B2EA1F1F89 │ │ │ │ -CFED5916630DC2BA32BB9180277E1ABC339B3B7DE086717BD93F7FF3681BA5B3 │ │ │ │ -FCF671C4B293C2DE4A322F0AA3323A4934444C69F23EF90120B8755482757759 │ │ │ │ -C457A435FB8BB4922BD92C5F3D9555D978275C510183E29DFF2FCE4ABBFC18DE │ │ │ │ -76CAD3B486BA12047DD808CD4D521A0FD368E4AE79DE262630983A5D6F0B679D │ │ │ │ -2F005306393C520E1B6987302D029939D94B0178DB06211C7F3B123A41E6E7BA │ │ │ │ -87164737110707A3ED3983895F3FBC815EF370F54C808ED93D910937BCA3D8AF │ │ │ │ -7CBF80DC180CDA54059DB76710B4FCD4139D5B7DA7DB1A0D0AF86AD2453D3691 │ │ │ │ -0BA5BAD40FF28BB4235FCD40FC87C2B888E67928D9B0ACA5692149373DBB93BF │ │ │ │ -6520DDD36A9BFE4D415CA67A5E04F1D48BDB28C69676273ED842CF7980E8E17C │ │ │ │ -B88563F407E340AFAE8F51AABCF8A39521BCEE1EC8396D75E124B24B4675909F │ │ │ │ -E246F87DA08584A3173AEFF153ECDF610543FA7474D125A31ADD6285A49222B5 │ │ │ │ -177066EA395BFA4B1114C7FCF7712DA772A21C99E64F4E1181E69CAF98137FA2 │ │ │ │ -76CF74F682B8CD7BA6EEA79B70FA8A76809634517F8415B6F21A5A7D6099B5E8 │ │ │ │ -EAB356BBC4FB68C72B8C61DDCE8EAB1A53B9D6BAD78584B307EFF57CEAE74884 │ │ │ │ -35987BF89E9E60E962D22FA5612F2DB5EB840499B7CC11A34BA5DEE30D277540 │ │ │ │ -39B8211D69B448ADE95B723F8369A631DE6DD75703AFD7485FB7FFF41A60CBE4 │ │ │ │ -813B8FEA120662355773830EF85015E7FFD609B2CEE52CB5FFE9C35B6BEEE4A4 │ │ │ │ -A66719E31CE1523FDD7771FB1E881A32A7DB7D92C2326DF4B93241C14ABFCCD6 │ │ │ │ -8E5BCAC61E800E6B1B4687ADA4CBF41EC0AFC26D021D1772CBDCD0516DF5EBE1 │ │ │ │ -37FD2AC5ABB8D774B5735940F1F6866D044FD8CE74444FAA5D0202C11E39CC10 │ │ │ │ -213731F41F704450E1D0565013BF22188442CE0FC256190A9F92F0C802AA2660 │ │ │ │ -614AFE9E9C82F8CD2E6035EEF84E5F16CBB690AC819B4B910EA8E81106F0ACE5 │ │ │ │ -CDFE77DAF69E4AFE72C43145A3ABCC40B6C5297487083F738C86422277AC2267 │ │ │ │ -51759F1B7F129E87DE16433B664AD0FB6D30424A11C70B52B591352BF653C8B0 │ │ │ │ -0840C224FBFEAA996A6BE1D69414DD778C2EF56A63B64D59BA412EC3E4000831 │ │ │ │ -73361FB9813F9A7C74BA3A50D331B07B61492E5D75F0861B530587269B3ADC90 │ │ │ │ -EA1DF586AC4BC57C3230893EFE953A6E76950ABA895FAC711D3BD330ABC6846A │ │ │ │ -C91F6ABF3410B913DFE5C8266020CEE5C7A9EDA2E7D9BCA797DC486443C7BA7C │ │ │ │ -7E03439A40927FA3251B6D417E5653E7799E9D6F04149C34096E2CA9B1F9B1EC │ │ │ │ -38958A2521B4A657A8B9F16E1FD66C7E345A10D7AA0241559503D214AC6507A4 │ │ │ │ -CBDE8617AA7ED136577734428594487F3565BF45FA196375759E2FE23C26EC8A │ │ │ │ -3310A36917A5E2F260EAB31030F8E570303D36B833626938F56939849DFA1F3F │ │ │ │ -66D0A317BB6364427F1512AAB380B555611C76345C02C3A6FBF78590331D5ECA │ │ │ │ -029DEFB722F6AB05327C2A31AB7BD6ED0F0386E6F45C1278048D22B90B074CCB │ │ │ │ -2BBEBCC1927C97EC532E651CAF0058AFE8FC08F00F0216D5DD9830C294FF76DA │ │ │ │ -426A073B3A3AEEFBDEE71C5182186311607ECDBD1F1AF4C5E79748CD01445C8D │ │ │ │ -25DD49490C8A6810065908222C8D0AC9F83AFBEE7115023E2D2615A170A5D40A │ │ │ │ -AD49BDF59A59187B6434F83E68EED22EF4EFDBADED6F1559AC779E0377FE7375 │ │ │ │ -D7060584FE74B1859D0FD98772253A712B17FFBB467840C484F5EF82C5677ADB │ │ │ │ -EDF159A456A526B8B9F6E8FC7608DFD47B0F09E26118F79CBE53B6C4E32BACAB │ │ │ │ -D62AFD4AA527CC4B587BB41A17A9BCE106A8C592BC9B73422B712C466C284A17 │ │ │ │ -E8D0C1E01D43C739FB1C083AD2714F78AC785B0C09AA7E67417A73510E00F2FE │ │ │ │ -E3D3EBF626A2F3A20A386E3F98D1285F4A2A332FC609CD191F01F128627B3505 │ │ │ │ -0AC2387DC0AD1B950490EBB5045F22BEC54955402CE2D267B6754E7C32BE84E8 │ │ │ │ -E6B63E3D3EAEE979442D167AEF69C27B22A8E887A2510C3A168D95D285CF7515 │ │ │ │ -011C921679B2F386575826A3F2071D015EEB78F02A4F94D4E5F07873623200F8 │ │ │ │ -7DF95BA0DC6B6D31DECC925BEA1E6A7C52FE685800EC33CBAE830F1AE5454DFA │ │ │ │ -913B8F457D7E2D3DFF019869E3301EEEC64A38295DE6B588E776922B32362382 │ │ │ │ -D1CF3D058613C8A96E6994D3EC23E8B71EC6E718383B20BB6C22DB6F93FA559F │ │ │ │ -3449CA84EB33B25C8BE0DFD1C29DC4FBD7AFBDC96C12162CAAB2C5E354B0FB10 │ │ │ │ -4BF8CC3610875ABD5111D09F2F847822118972214EDEB9EE34BAFE45E7AC15C5 │ │ │ │ -CA63EC4A3CEEA505A5EDD88A59BB67C71C3E026DFFE177F99BC69E6635545D03 │ │ │ │ -77A634F98230EF64381EC67CA519D4B9770EFA844789E21970F89D5FFC5DEAA8 │ │ │ │ -DC008EBA09306967ED090FF91B002FA6120C2B461A87AA32EFB003C5578D8EEF │ │ │ │ - │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ +AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ +E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ +46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ +FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ +389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ +7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ +2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ +C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ +B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ +AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ +E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ +F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ +0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ +2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ +29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ +CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ +6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ +5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ +36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0DD96AB602D004DCFE000A0 │ │ │ │ +ABE41BAB8AB7D50BD32BFD6F1AA3B60B09B9BE4E273EDD2DDCB21A98A760D17D │ │ │ │ +0A5C9303AFE63CF80A93E60C72A0576FAADEECBE2DE91892D210EB0AD1889C04 │ │ │ │ +C7530652584E775B4ED19CFB4B8DBCCC57A9FA9E4DDC8A1E5A1D3BE9E93407A6 │ │ │ │ +2C237ACE27F4EDA330EE952EDCBE91683AA98A29197735006666C96A2CE7C787 │ │ │ │ +BBA5A57C4DBF6FAA5B38AF226B5D9A65FAD84650AC0C3DB29C30602699F81E01 │ │ │ │ +0BAF8F1CE44A03C680121B77A1703C638187675D6C22C49F9902475E6CE9C732 │ │ │ │ +48ED028CC92EA542EF189CC9CA1C384E3387793057615D0A2BF040CC90B275B9 │ │ │ │ +F70A5310874DC2E0A360373E7BCAC88250FBC8989C7D18DA8274C06F02FCF31C │ │ │ │ +2B3868CBAF083DAC2FB159DE368261842DB7C9EA1A86B17617C861A48FBA8FF9 │ │ │ │ +D184CB026F4A418C0955347612F94C039B1536A76CB182A591DD7C02D509CF16 │ │ │ │ +8B9E46502ABF5DE31F5DFBD19C7417A2AF7AF13F0D5FF837C94CE56F07B96337 │ │ │ │ +0ED215252346FAEB54B5F3ABE29709B7ECB9FBD23A4AD397E6ABA6938F1BBF33 │ │ │ │ +1D5460D9414F0B8725DA832744525C13E3FD9C8DB33FBEE12F9C4969988402C8 │ │ │ │ +96AF916364CC2DF17EDBA622FC0A5D0013418E29F912FFA06F8D7E31ECAB0B08 │ │ │ │ +C4D2D8EE537CC768FC9038DD6D86D33642C6E812E941F157FC6917AF19C2B99A │ │ │ │ +5BF10B9A7ECF711BBB6F33C8C3DAD778153122593F36ABDDC0E97A602B045DE6 │ │ │ │ +19BD82D877DDA960AB11EF48C7F75A28D0D731D4A5DBC98283087267CD1A470D │ │ │ │ +537E949DA5EECF097B099547995BE066A941CED683B5748962AD2B02C21636C0 │ │ │ │ +2EAFA33CA0CB3BF8A95703F015A210D918865B9BEA2890DCFB68BC3719C305EC │ │ │ │ +315EC8727BF9A93632AB9E3090B100C022EE1396CD329B37547F26A7DCE52BD7 │ │ │ │ +F91B7388DEC34F4A0C6D46CD7CA6ACC00C5C4C71E47C6AD96496B3CBF531F342 │ │ │ │ +A740EE6B99BD70AD490DFA700772A0697EC6561CE88A0113E4DC3B21F372D810 │ │ │ │ +DFF2C3F6EDF3E917BF2664EEFC9AD292DD6CC36853CF936018D43FDB28D5B001 │ │ │ │ +7D1C805F958F13FD221377ABDD69D102E8CC1DAB2E011EE16CF6DB9D195BA702 │ │ │ │ +5A8738FABF989B0351282D0E5121182DFC52169782A5F3DD5D820411BEF909DE │ │ │ │ +04D963E6FDA76F88508C4E91DDAAA1748F396A1D380D8CA429673AF27C164434 │ │ │ │ +771781B39565D3EE50F3CF03EF12908B13A6C11C9AB7631B32125828B13050BA │ │ │ │ +041A93B97AC32D4A1E28C5FA98CDEE998B5F97823D6291D01E3611A16854F1FE │ │ │ │ +69B9D6D2AE3E56D012B7BC3E582FB4C23188A5E365E65EB1F804A706AF73A2F8 │ │ │ │ +9804808EF71F0982B14133BF9A27D6F2E719BDB751022B1B052722933948904E │ │ │ │ +3582E363478DCDA115205A0FDE39DF71FEAEEB104419C35A6B0678C19616C6D9 │ │ │ │ +A892DC2F4257069AF096C80C099CD13024DF3995F28C694E00D1F08B43D4450C │ │ │ │ +D18F5C925CFD2D124E74FC64BBAA0DE32A79E4A4507B5B5DD834C67160CDA110 │ │ │ │ +EF0061DD27E8864F4250A92BBEFD75C784BB98F4FA789A8236C2A21E4E61ABD0 │ │ │ │ +C6B4D13B3C31AC8E55FA34BEC7C308C61FB0280382EC6AFD63D959678D42D2B3 │ │ │ │ +4134F6236A0808D9302B4E3C6F81FC6973B4833602750CCB5DE36AEA23ED6BD4 │ │ │ │ +5B72DF0DD7B81C871CAA6EC190748CD8C4B998D576E5D340ACAC0617DDBE461C │ │ │ │ +8E82E809D11A01D265D039F4315066832E27E08A6F067E129E45FBF533F761BB │ │ │ │ +EC3C071209BECE7D14D3184B2E6BFD65717A5A7C08F3776B20C513649488C1CF │ │ │ │ +03333805B249D1034FB0AE2D7D2A23324EE27AEDB68F8E329A8052FE58D7C0D9 │ │ │ │ +A40A0CDC79F2085C4F39A7DFDB625C8F071E2A32CF6215DD3E060A9BABF7A3AA │ │ │ │ +C57DA0C0571C5D6EEAA975D1BB9C99F8EA4958360E43E8C60080B03DC4435550 │ │ │ │ +E6048DDD35DF3E5DA69669F266FFD7B44649A68025270DC84258E329F6E6907C │ │ │ │ +BCFF900D715D0C7EC43C5E7180CAD6427BA4FD41AAD6531A5C06B0EC26DDA71F │ │ │ │ +4A9DA50DE919E79226F6DDF7C1BA478936AA86CEAD93072CC2960E98C45A1A0C │ │ │ │ +60CF8A26E4278AB4F9E28FA6532648196CC455607D6BCD00F60675DE8CC02C8C │ │ │ │ +9BE5D5B714731814D5B008EE236563D77AC6895E0158877C95797E07C02AFEBE │ │ │ │ +CC9FE97D5E103F7DB0A834E9A7A75893EC66340B0E4C6F0EEDEF43415BF9FCF4 │ │ │ │ +47340CBEA4DCFBA0D028EB2149FFBBDB3322AE5F6FD20242526EDC55E476D983 │ │ │ │ +DC │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3751,15 +3757,15 @@ │ │ │ │ 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 3[51 12[45 22[47 15[25 3[45 3[45 1[45 3[25 44[{}11 │ │ │ │ +2[36 3[51 12[45 22[47 15[25 3[45 3[45 45 45 3[25 44[{}12 │ │ │ │ 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 │ │ │ │ @@ -3887,17 +3893,17 @@ │ │ │ │ (v)m(enience)0 5294 y(mak)m(es)i(it)g(a)g(widely)f(used)g(ob)5 │ │ │ │ b(ject.)44 b(Originally)32 b(its)g(use)f(w)m(as)g(restricted)h(to)h │ │ │ │ (reading)e(and)g(writing)g Fi(*.iv)p Ff(f)p Fi(f,b)p │ │ │ │ Ff(g)0 5407 y Fj(\014les,)g(but)e(no)m(w)i Fi(IV)e Fj(ob)5 │ │ │ │ b(jects)32 b(app)s(ear)d(m)m(uc)m(h)i(more)f(frequen)m(tly)h(in)f(new)g │ │ │ │ (dev)m(elopmen)m(t.)1927 5656 y(1)p eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fj(2)p 136 100 1206 4 v │ │ │ │ -1388 w Fi(IV)29 b Fe(:)i Fd(DRAFT)f Fe(Jan)m(uary)g(6,)h(2026)p │ │ │ │ -2695 100 V 0 399 a Fc(1.1)135 b(Data)46 b(Structure)0 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fj(2)p 136 100 1183 4 v │ │ │ │ +1365 w Fi(IV)30 b Fe(:)g Fd(DRAFT)g Fe(Jan)m(uary)g(10,)i(2026)p │ │ │ │ +2717 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 │ │ │ │ @@ -3955,17 +3961,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 1206 4 v 1387 100 a Fi(IV)30 │ │ │ │ -b Fe(:)g Fd(DRAFT)121 b Fe(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2647 100 V 1206 w Fj(3)0 399 y Fa(1.2.2)112 b(Instance)38 │ │ │ │ +TeXDict begin 3 2 bop 91 100 1183 4 v 1364 100 a Fi(IV)30 │ │ │ │ +b Fe(:)h Fd(DRAFT)121 b Fe(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2670 100 V 1183 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 │ │ │ │ @@ -4021,17 +4027,17 @@ │ │ │ │ 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 1206 4 v │ │ │ │ -1388 w Fi(IV)29 b Fe(:)i Fd(DRAFT)f Fe(Jan)m(uary)g(6,)h(2026)p │ │ │ │ -2695 100 V 0 399 a Fa(1.2.3)112 b(Initializer)38 b(metho)s(ds)111 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fj(4)p 136 100 1183 4 v │ │ │ │ +1365 w Fi(IV)30 b Fe(:)g Fd(DRAFT)g Fe(Jan)m(uary)g(10,)i(2026)p │ │ │ │ +2717 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 │ │ │ │ @@ -4110,17 +4116,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 1206 4 v 1387 100 a Fi(IV)30 │ │ │ │ -b Fe(:)g Fd(DRAFT)121 b Fe(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2647 100 V 1206 w Fj(5)227 399 y(en)m(tries)e(and)e Fi(IV)p │ │ │ │ +TeXDict begin 5 4 bop 91 100 1183 4 v 1364 100 a Fi(IV)30 │ │ │ │ +b Fe(:)h Fd(DRAFT)121 b Fe(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2670 100 V 1183 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 │ │ │ │ @@ -4181,17 +4187,17 @@ │ │ │ │ (;)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 1206 4 v │ │ │ │ -1388 w Fi(IV)29 b Fe(:)i Fd(DRAFT)f Fe(Jan)m(uary)g(6,)h(2026)p │ │ │ │ -2695 100 V 227 399 a Fj(of)f(the)g(v)m(ector.)42 b(The)29 │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fj(6)p 136 100 1183 4 v │ │ │ │ +1365 w Fi(IV)30 b Fe(:)g Fd(DRAFT)g Fe(Jan)m(uary)g(10,)i(2026)p │ │ │ │ +2717 100 V 227 399 a Fj(of)e(the)g(v)m(ector.)42 b(The)29 │ │ │ │ b(size)h(of)g(the)g(v)m(ector)h(is)e(reset)i(to)f(b)s(e)f(the)g(n)m(um) │ │ │ │ m(b)s(er)g(of)g(tagged)i(en)m(tries)g(that)f(are)g(no)m(w)227 │ │ │ │ 511 y(in)g(the)h(leading)g(lo)s(cations.)227 660 y Fd(Err)-5 │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fj(If)30 b Fi(iv)g Fj(of)h │ │ │ │ Fi(tags)e Fj(is)h Fi(NULL)f Fj(an)i(error)f(message)h(is)g(prin)m(ted)f │ │ │ │ (and)f(the)i(program)f(exits.)111 844 y(9.)46 b Fi(void)h │ │ │ │ (IV_filterPurge)d(\()j(IV)g(*iv,)g(int)g(tags[],)f(int)h(purgeTag)e(\)) │ │ │ │ @@ -4250,17 +4256,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 1206 4 v 1387 100 a Fi(IV)30 │ │ │ │ -b Fe(:)g Fd(DRAFT)121 b Fe(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2647 100 V 1206 w Fj(7)66 399 y(15.)46 b Fi(int)h(IV_findValue)e(\()i │ │ │ │ +TeXDict begin 7 6 bop 91 100 1183 4 v 1364 100 a Fi(IV)30 │ │ │ │ +b Fe(:)h Fd(DRAFT)121 b Fe(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2670 100 V 1183 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 │ │ │ │ @@ -4331,17 +4337,17 @@ │ │ │ │ 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 1206 4 v │ │ │ │ -1388 w Fi(IV)29 b Fe(:)i Fd(DRAFT)f Fe(Jan)m(uary)g(6,)h(2026)p │ │ │ │ -2695 100 V 111 399 a Fj(2.)46 b Fi(int)h(IV_readFromFormattedFile)41 │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fj(8)p 136 100 1183 4 v │ │ │ │ +1365 w Fi(IV)30 b Fe(:)g Fd(DRAFT)g Fe(Jan)m(uary)g(10,)i(2026)p │ │ │ │ +2717 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 │ │ │ │ @@ -4419,17 +4425,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 1206 4 v 1387 100 a Fi(IV)30 │ │ │ │ -b Fe(:)g Fd(DRAFT)121 b Fe(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2647 100 V 1206 w Fj(9)66 399 y(10.)46 b Fi(int)h(IV_writeForMatlab)c │ │ │ │ +TeXDict begin 9 8 bop 91 100 1183 4 v 1364 100 a Fi(IV)30 │ │ │ │ +b Fe(:)h Fd(DRAFT)121 b Fe(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2670 100 V 1183 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 January 6, 2026 │ │ │ │ │ + 2 IV : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 3 │ │ │ │ │ + IV : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 4 IV : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 5 │ │ │ │ │ + IV : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 6 IV : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 7 │ │ │ │ │ + IV : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 8 IV : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 9 │ │ │ │ │ + IV : DRAFT January 10, 2026 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 2026.01.06:2034 │ │ │ │ +%DVIPSSource: TeX output 2026.01.10:0513 │ │ │ │ %%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 │ │ │ │ @@ -1855,14 +1855,15 @@ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ /UnderlineThickness 50 def │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ +dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ dup 54 /six put │ │ │ │ dup 58 /colon put │ │ │ │ dup 74 /J put │ │ │ │ dup 97 /a put │ │ │ │ dup 110 /n put │ │ │ │ dup 114 /r put │ │ │ │ @@ -2052,79 +2053,84 @@ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB88440048702D1F │ │ │ │ -77994EE04EC3B4531D6E1888C86A8F0DA6CF1F056F16AB0DD76C862830F89DA4 │ │ │ │ -28923B3AA543E0D6E41D3BD283E600BC11F889315EE92C675C109C81065ED1BC │ │ │ │ -82A5583D1B723D50051B0557A367887F5B263014C6E77288B4883C50889473D3 │ │ │ │ -3787BAD4BEB88BD1353AFA5B73E61814819537E7FF09F53EF94792BB3DD36ED0 │ │ │ │ -002D0E7A6CDAB85A9C17AF5664BCB5A71663B861880F3ECCABC8E7A2FC81A4CC │ │ │ │ -AE7A87503FDC1CE0077BA51ECC7B43B60793FED8E9AAD5BBD03ADD6183DCD26D │ │ │ │ -24A74163611C05562437644EF9B8889FD4F9D311911204FEFD35237486F2D2D0 │ │ │ │ -B6783A03BF12EA6D19D6D0F87E4D08515F12F9CBF1961CAA71E0D69FE3C4C4D2 │ │ │ │ -7C7FB64ED24F8684C8F00C2BEDEA53EA390CDC0B5BEBD7DD982580B2EA1F1F89 │ │ │ │ -CFED5916630DC2BA32BB9180277E1ABC339B3B7DE086717BD93F7FF3681BA5B3 │ │ │ │ -FCF671C4B293C2DE4A322F0AA3323A4934444C69F23EF90120B8755482757759 │ │ │ │ -C457A435FB8BB4922BD92C5F3D9555D978275C510183E29DFF2FCE4ABBFC18DE │ │ │ │ -76CAD3B486BA12047DD808CD4D521A0FD368E4AE79DE262630983A5D6F0B679D │ │ │ │ -2F005306393C520E1B6987302D029939D94B0178DB06211C7F3B123A41E6E7BA │ │ │ │ -87164737110707A3ED3983895F3FBC815EF370F54C808ED93D910937BCA3D8AF │ │ │ │ -7CBF80DC180CDA54059DB76710B4FCD4139D5B7DA7DB1A0D0AF86AD2453D3691 │ │ │ │ -0BA5BAD40FF28BB4235FCD40FC87C2B888E67928D9B0ACA5692149373DBB93BF │ │ │ │ -6520DDD36A9BFE4D415CA67A5E04F1D48BDB28C69676273ED842CF7980E8E17C │ │ │ │ -B88563F407E340AFAE8F51AABCF8A39521BCEE1EC8396D75E124B24B4675909F │ │ │ │ -E246F87DA08584A3173AEFF153ECDF610543FA7474D125A31ADD6285A49222B5 │ │ │ │ -177066EA395BFA4B1114C7FCF7712DA772A21C99E64F4E1181E69CAF98137FA2 │ │ │ │ -76CF74F682B8CD7BA6EEA79B70FA8A76809634517F8415B6F21A5A7D6099B5E8 │ │ │ │ -EAB356BBC4FB68C72B8C61DDCE8EAB1A53B9D6BAD78584B307EFF57CEAE74884 │ │ │ │ -35987BF89E9E60E962D22FA5612F2DB5EB840499B7CC11A34BA5DEE30D277540 │ │ │ │ -39B8211D69B448ADE95B723F8369A631DE6DD75703AFD7485FB7FFF41A60CBE4 │ │ │ │ -813B8FEA120662355773830EF85015E7FFD609B2CEE52CB5FFE9C35B6BEEE4A4 │ │ │ │ -A66719E31CE1523FDD7771FB1E881A32A7DB7D92C2326DF4B93241C14ABFCCD6 │ │ │ │ -8E5BCAC61E800E6B1B4687ADA4CBF41EC0AFC26D021D1772CBDCD0516DF5EBE1 │ │ │ │ -37FD2AC5ABB8D774B5735940F1F6866D044FD8CE74444FAA5D0202C11E39CC10 │ │ │ │ -213731F41F704450E1D0565013BF22188442CE0FC256190A9F92F0C802AA2660 │ │ │ │ -614AFE9E9C82F8CD2E6035EEF84E5F16CBB690AC819B4B910EA8E81106F0ACE5 │ │ │ │ -CDFE77DAF69E4AFE72C43145A3ABCC40B6C5297487083F738C86422277AC2267 │ │ │ │ -51759F1B7F129E87DE16433B664AD0FB6D30424A11C70B52B591352BF653C8B0 │ │ │ │ -0840C224FBFEAA996A6BE1D69414DD778C2EF56A63B64D59BA412EC3E4000831 │ │ │ │ -73361FB9813F9A7C74BA3A50D331B07B61492E5D75F0861B530587269B3ADC90 │ │ │ │ -EA1DF586AC4BC57C3230893EFE953A6E76950ABA895FAC711D3BD330ABC6846A │ │ │ │ -C91F6ABF3410B913DFE5C8266020CEE5C7A9EDA2E7D9BCA797DC486443C7BA7C │ │ │ │ -7E03439A40927FA3251B6D417E5653E7799E9D6F04149C34096E2CA9B1F9B1EC │ │ │ │ -38958A2521B4A657A8B9F16E1FD66C7E345A10D7AA0241559503D214AC6507A4 │ │ │ │ -CBDE8617AA7ED136577734428594487F3565BF45FA196375759E2FE23C26EC8A │ │ │ │ -3310A36917A5E2F260EAB31030F8E570303D36B833626938F56939849DFA1F3F │ │ │ │ -66D0A317BB6364427F1512AAB380B555611C76345C02C3A6FBF78590331D5ECA │ │ │ │ -029DEFB722F6AB05327C2A31AB7BD6ED0F0386E6F45C1278048D22B90B074CCB │ │ │ │ -2BBEBCC1927C97EC532E651CAF0058AFE8FC08F00F0216D5DD9830C294FF76DA │ │ │ │ -426A073B3A3AEEFBDEE71C5182186311607ECDBD1F1AF4C5E79748CD01445C8D │ │ │ │ -25DD49490C8A6810065908222C8D0AC9F83AFBEE7115023E2D2615A170A5D40A │ │ │ │ -AD49BDF59A59187B6434F83E68EED22EF4EFDBADED6F1559AC779E0377FE7375 │ │ │ │ -D7060584FE74B1859D0FD98772253A712B17FFBB467840C484F5EF82C5677ADB │ │ │ │ -EDF159A456A526B8B9F6E8FC7608DFD47B0F09E26118F79CBE53B6C4E32BACAB │ │ │ │ -D62AFD4AA527CC4B587BB41A17A9BCE106A8C592BC9B73422B712C466C284A17 │ │ │ │ -E8D0C1E01D43C739FB1C083AD2714F78AC785B0C09AA7E67417A73510E00F2FE │ │ │ │ -E3D3EBF626A2F3A20A386E3F98D1285F4A2A332FC609CD191F01F128627B3505 │ │ │ │ -0AC2387DC0AD1B950490EBB5045F22BEC54955402CE2D267B6754E7C32BE84E8 │ │ │ │ -E6B63E3D3EAEE979442D167AEF69C27B22A8E887A2510C3A168D95D285CF7515 │ │ │ │ -011C921679B2F386575826A3F2071D015EEB78F02A4F94D4E5F07873623200F8 │ │ │ │ -7DF95BA0DC6B6D31DECC925BEA1E6A7C52FE685800EC33CBAE830F1AE5454DFA │ │ │ │ -913B8F457D7E2D3DFF019869E3301EEEC64A38295DE6B588E776922B32362382 │ │ │ │ -D1CF3D058613C8A96E6994D3EC23E8B71EC6E718383B20BB6C22DB6F93FA559F │ │ │ │ -3449CA84EB33B25C8BE0DFD1C29DC4FBD7AFBDC96C12162CAAB2C5E354B0FB10 │ │ │ │ -4BF8CC3610875ABD5111D09F2F847822118972214EDEB9EE34BAFE45E7AC15C5 │ │ │ │ -CA63EC4A3CEEA505A5EDD88A59BB67C71C3E026DFFE177F99BC69E6635545D03 │ │ │ │ -77A634F98230EF64381EC67CA519D4B9770EFA844789E21970F89D5FFC5DEAA8 │ │ │ │ -DC008EBA09306967ED090FF91B002FA6120C2B461A87AA32EFB003C5578D8EEF │ │ │ │ - │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ +AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ +E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ +46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ +FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ +389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ +7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ +2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ +C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ +B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ +AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ +E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ +F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ +0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ +2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ +29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ +CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ +6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ +5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ +36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0DD96AB602D004DCFE000A0 │ │ │ │ +ABE41BAB8AB7D50BD32BFD6F1AA3B60B09B9BE4E273EDD2DDCB21A98A760D17D │ │ │ │ +0A5C9303AFE63CF80A93E60C72A0576FAADEECBE2DE91892D210EB0AD1889C04 │ │ │ │ +C7530652584E775B4ED19CFB4B8DBCCC57A9FA9E4DDC8A1E5A1D3BE9E93407A6 │ │ │ │ +2C237ACE27F4EDA330EE952EDCBE91683AA98A29197735006666C96A2CE7C787 │ │ │ │ +BBA5A57C4DBF6FAA5B38AF226B5D9A65FAD84650AC0C3DB29C30602699F81E01 │ │ │ │ +0BAF8F1CE44A03C680121B77A1703C638187675D6C22C49F9902475E6CE9C732 │ │ │ │ +48ED028CC92EA542EF189CC9CA1C384E3387793057615D0A2BF040CC90B275B9 │ │ │ │ +F70A5310874DC2E0A360373E7BCAC88250FBC8989C7D18DA8274C06F02FCF31C │ │ │ │ +2B3868CBAF083DAC2FB159DE368261842DB7C9EA1A86B17617C861A48FBA8FF9 │ │ │ │ +D184CB026F4A418C0955347612F94C039B1536A76CB182A591DD7C02D509CF16 │ │ │ │ +8B9E46502ABF5DE31F5DFBD19C7417A2AF7AF13F0D5FF837C94CE56F07B96337 │ │ │ │ +0ED215252346FAEB54B5F3ABE29709B7ECB9FBD23A4AD397E6ABA6938F1BBF33 │ │ │ │ +1D5460D9414F0B8725DA832744525C13E3FD9C8DB33FBEE12F9C4969988402C8 │ │ │ │ +96AF916364CC2DF17EDBA622FC0A5D0013418E29F912FFA06F8D7E31ECAB0B08 │ │ │ │ +C4D2D8EE537CC768FC9038DD6D86D33642C6E812E941F157FC6917AF19C2B99A │ │ │ │ +5BF10B9A7ECF711BBB6F33C8C3DAD778153122593F36ABDDC0E97A602B045DE6 │ │ │ │ +19BD82D877DDA960AB11EF48C7F75A28D0D731D4A5DBC98283087267CD1A470D │ │ │ │ +537E949DA5EECF097B099547995BE066A941CED683B5748962AD2B02C21636C0 │ │ │ │ +2EAFA33CA0CB3BF8A95703F015A210D918865B9BEA2890DCFB68BC3719C305EC │ │ │ │ +315EC8727BF9A93632AB9E3090B100C022EE1396CD329B37547F26A7DCE52BD7 │ │ │ │ +F91B7388DEC34F4A0C6D46CD7CA6ACC00C5C4C71E47C6AD96496B3CBF531F342 │ │ │ │ +A740EE6B99BD70AD490DFA700772A0697EC6561CE88A0113E4DC3B21F372D810 │ │ │ │ +DFF2C3F6EDF3E917BF2664EEFC9AD292DD6CC36853CF936018D43FDB28D5B001 │ │ │ │ +7D1C805F958F13FD221377ABDD69D102E8CC1DAB2E011EE16CF6DB9D195BA702 │ │ │ │ +5A8738FABF989B0351282D0E5121182DFC52169782A5F3DD5D820411BEF909DE │ │ │ │ +04D963E6FDA76F88508C4E91DDAAA1748F396A1D380D8CA429673AF27C164434 │ │ │ │ +771781B39565D3EE50F3CF03EF12908B13A6C11C9AB7631B32125828B13050BA │ │ │ │ +041A93B97AC32D4A1E28C5FA98CDEE998B5F97823D6291D01E3611A16854F1FE │ │ │ │ +69B9D6D2AE3E56D012B7BC3E582FB4C23188A5E365E65EB1F804A706AF73A2F8 │ │ │ │ +9804808EF71F0982B14133BF9A27D6F2E719BDB751022B1B052722933948904E │ │ │ │ +3582E363478DCDA115205A0FDE39DF71FEAEEB104419C35A6B0678C19616C6D9 │ │ │ │ +A892DC2F4257069AF096C80C099CD13024DF3995F28C694E00D1F08B43D4450C │ │ │ │ +D18F5C925CFD2D124E74FC64BBAA0DE32A79E4A4507B5B5DD834C67160CDA110 │ │ │ │ +EF0061DD27E8864F4250A92BBEFD75C784BB98F4FA789A8236C2A21E4E61ABD0 │ │ │ │ +C6B4D13B3C31AC8E55FA34BEC7C308C61FB0280382EC6AFD63D959678D42D2B3 │ │ │ │ +4134F6236A0808D9302B4E3C6F81FC6973B4833602750CCB5DE36AEA23ED6BD4 │ │ │ │ +5B72DF0DD7B81C871CAA6EC190748CD8C4B998D576E5D340ACAC0617DDBE461C │ │ │ │ +8E82E809D11A01D265D039F4315066832E27E08A6F067E129E45FBF533F761BB │ │ │ │ +EC3C071209BECE7D14D3184B2E6BFD65717A5A7C08F3776B20C513649488C1CF │ │ │ │ +03333805B249D1034FB0AE2D7D2A23324EE27AEDB68F8E329A8052FE58D7C0D9 │ │ │ │ +A40A0CDC79F2085C4F39A7DFDB625C8F071E2A32CF6215DD3E060A9BABF7A3AA │ │ │ │ +C57DA0C0571C5D6EEAA975D1BB9C99F8EA4958360E43E8C60080B03DC4435550 │ │ │ │ +E6048DDD35DF3E5DA69669F266FFD7B44649A68025270DC84258E329F6E6907C │ │ │ │ +BCFF900D715D0C7EC43C5E7180CAD6427BA4FD41AAD6531A5C06B0EC26DDA71F │ │ │ │ +4A9DA50DE919E79226F6DDF7C1BA478936AA86CEAD93072CC2960E98C45A1A0C │ │ │ │ +60CF8A26E4278AB4F9E28FA6532648196CC455607D6BCD00F60675DE8CC02C8C │ │ │ │ +9BE5D5B714731814D5B008EE236563D77AC6895E0158877C95797E07C02AFEBE │ │ │ │ +CC9FE97D5E103F7DB0A834E9A7A75893EC66340B0E4C6F0EEDEF43415BF9FCF4 │ │ │ │ +47340CBEA4DCFBA0D028EB2149FFBBDB3322AE5F6FD20242526EDC55E476D983 │ │ │ │ +DC │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3813,15 +3819,15 @@ │ │ │ │ 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 3[51 12[45 22[47 15[25 3[45 3[45 │ │ │ │ -1[45 3[25 44[{}11 90.9091 /CMSL10 rf │ │ │ │ +45 45 3[25 44[{}12 90.9091 /CMSL10 rf │ │ │ │ %DVIPSBitmapFont: Ff tcrm1095 10.95 1 │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ /Dotaccent/cedilla/ogonek/quotesinglbase.ts1 4{/.notdef}repeat │ │ │ │ /quotedblbase.ts1/.notdef/.notdef/twelveudash/threequartersemdash │ │ │ │ /afii61664.cap/arrowleft/arrowright/tieaccentlowercase/tieaccentcapital │ │ │ │ /tieaccentlowercase.new/tieaccentcapital.new/.notdef/afii61664.asc/uni2422 3 │ │ │ │ {/.notdef}repeat/dollar/.notdef/.notdef/quotesingle/.notdef/.notdef │ │ │ │ @@ -3937,17 +3943,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 1182 4 v │ │ │ │ -1364 w Fi(IVL)29 b Fe(:)i Fd(DRAFT)f Fe(Jan)m(uary)g(6,)h(2026)p │ │ │ │ -2719 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 1159 4 v │ │ │ │ +1341 w Fi(IVL)29 b Fe(:)i Fd(DRAFT)f Fe(Jan)m(uary)g(10,)i(2026)p │ │ │ │ +2741 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 │ │ │ │ @@ -4014,17 +4020,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 1182 4 v 1363 100 a Fi(IVL)30 │ │ │ │ -b Fe(:)g Fd(DRAFT)121 b Fe(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2671 100 V 1182 w Fj(3)111 399 y(3.)46 b Fi(void)h(IVL_clearData)d(\()k │ │ │ │ +TeXDict begin 3 2 bop 91 100 1159 4 v 1340 100 a Fi(IVL)30 │ │ │ │ +b Fe(:)g Fd(DRAFT)122 b Fe(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2694 100 V 1159 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 │ │ │ │ @@ -4072,17 +4078,17 @@ │ │ │ │ (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 1182 4 v │ │ │ │ -1364 w Fi(IVL)29 b Fe(:)i Fd(DRAFT)f Fe(Jan)m(uary)g(6,)h(2026)p │ │ │ │ -2719 100 V 0 399 a Fa(1.2.3)112 b(Initialization)39 b(and)f(resizing)g │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fj(4)p 136 100 1159 4 v │ │ │ │ +1341 w Fi(IVL)29 b Fe(:)i Fd(DRAFT)f Fe(Jan)m(uary)g(10,)i(2026)p │ │ │ │ +2741 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 │ │ │ │ @@ -4161,17 +4167,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 1182 4 v 1363 100 a Fi(IVL)30 │ │ │ │ -b Fe(:)g Fd(DRAFT)121 b Fe(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2671 100 V 1182 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 1159 4 v 1340 100 a Fi(IVL)30 │ │ │ │ +b Fe(:)g Fd(DRAFT)122 b Fe(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2694 100 V 1159 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 │ │ │ │ @@ -4214,18 +4220,18 @@ │ │ │ │ 5294 y Fj(This)39 b(metho)s(d)f(sets)i(the)g(size)g(and)e(\(p)s │ │ │ │ (ossibly\))i(p)s(oin)m(ter)f(to)h(a)g(list)f(of)h(en)m(tries.)68 │ │ │ │ b(The)39 b(b)s(eha)m(vior)g(of)h(the)227 5407 y(metho)s(d)30 │ │ │ │ b(dep)s(ends)f(on)h(the)g(t)m(yp)s(e)h(of)g(the)f Fi(ivl)g │ │ │ │ Fj(ob)5 b(ject.)41 b(Here)31 b(is)f(the)h(\015o)m(w)f(c)m(hart:)p │ │ │ │ eop end │ │ │ │ %%Page: 6 6 │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fj(6)p 136 100 1182 4 v │ │ │ │ -1364 w Fi(IVL)29 b Fe(:)i Fd(DRAFT)f Fe(Jan)m(uary)g(6,)h(2026)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 │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fj(6)p 136 100 1159 4 v │ │ │ │ +1341 w Fi(IVL)29 b Fe(:)i Fd(DRAFT)f Fe(Jan)m(uary)g(10,)i(2026)p │ │ │ │ +2741 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 │ │ │ │ @@ -4267,17 +4273,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 1182 4 v 1363 100 a Fi(IVL)30 │ │ │ │ -b Fe(:)g Fd(DRAFT)121 b Fe(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2671 100 V 1182 w Fj(7)111 399 y(3.)46 b Fi(int)h(IVL_sortUp)e(\()j │ │ │ │ +TeXDict begin 7 6 bop 91 100 1159 4 v 1340 100 a Fi(IVL)30 │ │ │ │ +b Fe(:)g Fd(DRAFT)122 b Fe(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2694 100 V 1159 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 │ │ │ │ @@ -4345,17 +4351,17 @@ │ │ │ │ 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 1182 4 v │ │ │ │ -1364 w Fi(IVL)29 b Fe(:)i Fd(DRAFT)f Fe(Jan)m(uary)g(6,)h(2026)p │ │ │ │ -2719 100 V 0 399 a Fa(1.2.6)112 b(Miscellaneous)40 b(metho)s(ds)111 │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fj(8)p 136 100 1159 4 v │ │ │ │ +1341 w Fi(IVL)29 b Fe(:)i Fd(DRAFT)f Fe(Jan)m(uary)g(10,)i(2026)p │ │ │ │ +2741 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 │ │ │ │ @@ -4419,17 +4425,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 1182 4 v 1363 100 a Fi(IVL)30 │ │ │ │ -b Fe(:)g Fd(DRAFT)121 b Fe(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2671 100 V 1182 w Fj(9)111 399 y(3.)46 b Fi(int)h │ │ │ │ +TeXDict begin 9 8 bop 91 100 1159 4 v 1340 100 a Fi(IVL)30 │ │ │ │ +b Fe(:)g Fd(DRAFT)122 b Fe(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2694 100 V 1159 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 │ │ │ │ @@ -4496,17 +4502,17 @@ │ │ │ │ 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 1159 4 │ │ │ │ -v 1341 w Fi(IVL)30 b Fe(:)g Fd(DRAFT)h Fe(Jan)m(uary)f(6,)h(2026)p │ │ │ │ -2741 100 V 337 399 a Ff(\210)45 b Fj(The)33 b Fi(msgFile)e │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fj(10)p 182 100 1136 4 │ │ │ │ +v 1319 w Fi(IVL)29 b Fe(:)i Fd(DRAFT)f Fe(Jan)m(uary)g(10,)h(2026)p │ │ │ │ +2764 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 │ │ │ │ ├── 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 January 6, 2026 │ │ │ │ │ + 2 IVL : DRAFT January 10, 2026 │ │ │ │ │ • 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 January 6, 2026 3 │ │ │ │ │ + IVL : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 4 IVL : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 5 │ │ │ │ │ + IVL : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 6 IVL : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 7 │ │ │ │ │ + IVL : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 8 IVL : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 9 │ │ │ │ │ + IVL : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 10 IVL : DRAFT January 10, 2026 │ │ │ │ │ • 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 2026.01.06:2034 │ │ │ │ +%DVIPSSource: TeX output 2026.01.10:0513 │ │ │ │ %%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 │ │ │ │ @@ -1255,14 +1255,15 @@ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ /UnderlineThickness 50 def │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ +dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ dup 54 /six put │ │ │ │ dup 58 /colon put │ │ │ │ dup 74 /J put │ │ │ │ dup 97 /a put │ │ │ │ dup 110 /n put │ │ │ │ dup 114 /r put │ │ │ │ @@ -1452,79 +1453,84 @@ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB88440048702D1F │ │ │ │ -77994EE04EC3B4531D6E1888C86A8F0DA6CF1F056F16AB0DD76C862830F89DA4 │ │ │ │ -28923B3AA543E0D6E41D3BD283E600BC11F889315EE92C675C109C81065ED1BC │ │ │ │ -82A5583D1B723D50051B0557A367887F5B263014C6E77288B4883C50889473D3 │ │ │ │ -3787BAD4BEB88BD1353AFA5B73E61814819537E7FF09F53EF94792BB3DD36ED0 │ │ │ │ -002D0E7A6CDAB85A9C17AF5664BCB5A71663B861880F3ECCABC8E7A2FC81A4CC │ │ │ │ -AE7A87503FDC1CE0077BA51ECC7B43B60793FED8E9AAD5BBD03ADD6183DCD26D │ │ │ │ -24A74163611C05562437644EF9B8889FD4F9D311911204FEFD35237486F2D2D0 │ │ │ │ -B6783A03BF12EA6D19D6D0F87E4D08515F12F9CBF1961CAA71E0D69FE3C4C4D2 │ │ │ │ -7C7FB64ED24F8684C8F00C2BEDEA53EA390CDC0B5BEBD7DD982580B2EA1F1F89 │ │ │ │ -CFED5916630DC2BA32BB9180277E1ABC339B3B7DE086717BD93F7FF3681BA5B3 │ │ │ │ -FCF671C4B293C2DE4A322F0AA3323A4934444C69F23EF90120B8755482757759 │ │ │ │ -C457A435FB8BB4922BD92C5F3D9555D978275C510183E29DFF2FCE4ABBFC18DE │ │ │ │ -76CAD3B486BA12047DD808CD4D521A0FD368E4AE79DE262630983A5D6F0B679D │ │ │ │ -2F005306393C520E1B6987302D029939D94B0178DB06211C7F3B123A41E6E7BA │ │ │ │ -87164737110707A3ED3983895F3FBC815EF370F54C808ED93D910937BCA3D8AF │ │ │ │ -7CBF80DC180CDA54059DB76710B4FCD4139D5B7DA7DB1A0D0AF86AD2453D3691 │ │ │ │ -0BA5BAD40FF28BB4235FCD40FC87C2B888E67928D9B0ACA5692149373DBB93BF │ │ │ │ -6520DDD36A9BFE4D415CA67A5E04F1D48BDB28C69676273ED842CF7980E8E17C │ │ │ │ -B88563F407E340AFAE8F51AABCF8A39521BCEE1EC8396D75E124B24B4675909F │ │ │ │ -E246F87DA08584A3173AEFF153ECDF610543FA7474D125A31ADD6285A49222B5 │ │ │ │ -177066EA395BFA4B1114C7FCF7712DA772A21C99E64F4E1181E69CAF98137FA2 │ │ │ │ -76CF74F682B8CD7BA6EEA79B70FA8A76809634517F8415B6F21A5A7D6099B5E8 │ │ │ │ -EAB356BBC4FB68C72B8C61DDCE8EAB1A53B9D6BAD78584B307EFF57CEAE74884 │ │ │ │ -35987BF89E9E60E962D22FA5612F2DB5EB840499B7CC11A34BA5DEE30D277540 │ │ │ │ -39B8211D69B448ADE95B723F8369A631DE6DD75703AFD7485FB7FFF41A60CBE4 │ │ │ │ -813B8FEA120662355773830EF85015E7FFD609B2CEE52CB5FFE9C35B6BEEE4A4 │ │ │ │ -A66719E31CE1523FDD7771FB1E881A32A7DB7D92C2326DF4B93241C14ABFCCD6 │ │ │ │ -8E5BCAC61E800E6B1B4687ADA4CBF41EC0AFC26D021D1772CBDCD0516DF5EBE1 │ │ │ │ -37FD2AC5ABB8D774B5735940F1F6866D044FD8CE74444FAA5D0202C11E39CC10 │ │ │ │ -213731F41F704450E1D0565013BF22188442CE0FC256190A9F92F0C802AA2660 │ │ │ │ -614AFE9E9C82F8CD2E6035EEF84E5F16CBB690AC819B4B910EA8E81106F0ACE5 │ │ │ │ -CDFE77DAF69E4AFE72C43145A3ABCC40B6C5297487083F738C86422277AC2267 │ │ │ │ -51759F1B7F129E87DE16433B664AD0FB6D30424A11C70B52B591352BF653C8B0 │ │ │ │ -0840C224FBFEAA996A6BE1D69414DD778C2EF56A63B64D59BA412EC3E4000831 │ │ │ │ -73361FB9813F9A7C74BA3A50D331B07B61492E5D75F0861B530587269B3ADC90 │ │ │ │ -EA1DF586AC4BC57C3230893EFE953A6E76950ABA895FAC711D3BD330ABC6846A │ │ │ │ -C91F6ABF3410B913DFE5C8266020CEE5C7A9EDA2E7D9BCA797DC486443C7BA7C │ │ │ │ -7E03439A40927FA3251B6D417E5653E7799E9D6F04149C34096E2CA9B1F9B1EC │ │ │ │ -38958A2521B4A657A8B9F16E1FD66C7E345A10D7AA0241559503D214AC6507A4 │ │ │ │ -CBDE8617AA7ED136577734428594487F3565BF45FA196375759E2FE23C26EC8A │ │ │ │ -3310A36917A5E2F260EAB31030F8E570303D36B833626938F56939849DFA1F3F │ │ │ │ -66D0A317BB6364427F1512AAB380B555611C76345C02C3A6FBF78590331D5ECA │ │ │ │ -029DEFB722F6AB05327C2A31AB7BD6ED0F0386E6F45C1278048D22B90B074CCB │ │ │ │ -2BBEBCC1927C97EC532E651CAF0058AFE8FC08F00F0216D5DD9830C294FF76DA │ │ │ │ -426A073B3A3AEEFBDEE71C5182186311607ECDBD1F1AF4C5E79748CD01445C8D │ │ │ │ -25DD49490C8A6810065908222C8D0AC9F83AFBEE7115023E2D2615A170A5D40A │ │ │ │ -AD49BDF59A59187B6434F83E68EED22EF4EFDBADED6F1559AC779E0377FE7375 │ │ │ │ -D7060584FE74B1859D0FD98772253A712B17FFBB467840C484F5EF82C5677ADB │ │ │ │ -EDF159A456A526B8B9F6E8FC7608DFD47B0F09E26118F79CBE53B6C4E32BACAB │ │ │ │ -D62AFD4AA527CC4B587BB41A17A9BCE106A8C592BC9B73422B712C466C284A17 │ │ │ │ -E8D0C1E01D43C739FB1C083AD2714F78AC785B0C09AA7E67417A73510E00F2FE │ │ │ │ -E3D3EBF626A2F3A20A386E3F98D1285F4A2A332FC609CD191F01F128627B3505 │ │ │ │ -0AC2387DC0AD1B950490EBB5045F22BEC54955402CE2D267B6754E7C32BE84E8 │ │ │ │ -E6B63E3D3EAEE979442D167AEF69C27B22A8E887A2510C3A168D95D285CF7515 │ │ │ │ -011C921679B2F386575826A3F2071D015EEB78F02A4F94D4E5F07873623200F8 │ │ │ │ -7DF95BA0DC6B6D31DECC925BEA1E6A7C52FE685800EC33CBAE830F1AE5454DFA │ │ │ │ -913B8F457D7E2D3DFF019869E3301EEEC64A38295DE6B588E776922B32362382 │ │ │ │ -D1CF3D058613C8A96E6994D3EC23E8B71EC6E718383B20BB6C22DB6F93FA559F │ │ │ │ -3449CA84EB33B25C8BE0DFD1C29DC4FBD7AFBDC96C12162CAAB2C5E354B0FB10 │ │ │ │ -4BF8CC3610875ABD5111D09F2F847822118972214EDEB9EE34BAFE45E7AC15C5 │ │ │ │ -CA63EC4A3CEEA505A5EDD88A59BB67C71C3E026DFFE177F99BC69E6635545D03 │ │ │ │ -77A634F98230EF64381EC67CA519D4B9770EFA844789E21970F89D5FFC5DEAA8 │ │ │ │ -DC008EBA09306967ED090FF91B002FA6120C2B461A87AA32EFB003C5578D8EEF │ │ │ │ - │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ +AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ +E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ +46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ +FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ +389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ +7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ +2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ +C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ +B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ +AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ +E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ +F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ +0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ +2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ +29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ +CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ +6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ +5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ +36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0DD96AB602D004DCFE000A0 │ │ │ │ +ABE41BAB8AB7D50BD32BFD6F1AA3B60B09B9BE4E273EDD2DDCB21A98A760D17D │ │ │ │ +0A5C9303AFE63CF80A93E60C72A0576FAADEECBE2DE91892D210EB0AD1889C04 │ │ │ │ +C7530652584E775B4ED19CFB4B8DBCCC57A9FA9E4DDC8A1E5A1D3BE9E93407A6 │ │ │ │ +2C237ACE27F4EDA330EE952EDCBE91683AA98A29197735006666C96A2CE7C787 │ │ │ │ +BBA5A57C4DBF6FAA5B38AF226B5D9A65FAD84650AC0C3DB29C30602699F81E01 │ │ │ │ +0BAF8F1CE44A03C680121B77A1703C638187675D6C22C49F9902475E6CE9C732 │ │ │ │ +48ED028CC92EA542EF189CC9CA1C384E3387793057615D0A2BF040CC90B275B9 │ │ │ │ +F70A5310874DC2E0A360373E7BCAC88250FBC8989C7D18DA8274C06F02FCF31C │ │ │ │ +2B3868CBAF083DAC2FB159DE368261842DB7C9EA1A86B17617C861A48FBA8FF9 │ │ │ │ +D184CB026F4A418C0955347612F94C039B1536A76CB182A591DD7C02D509CF16 │ │ │ │ +8B9E46502ABF5DE31F5DFBD19C7417A2AF7AF13F0D5FF837C94CE56F07B96337 │ │ │ │ +0ED215252346FAEB54B5F3ABE29709B7ECB9FBD23A4AD397E6ABA6938F1BBF33 │ │ │ │ +1D5460D9414F0B8725DA832744525C13E3FD9C8DB33FBEE12F9C4969988402C8 │ │ │ │ +96AF916364CC2DF17EDBA622FC0A5D0013418E29F912FFA06F8D7E31ECAB0B08 │ │ │ │ +C4D2D8EE537CC768FC9038DD6D86D33642C6E812E941F157FC6917AF19C2B99A │ │ │ │ +5BF10B9A7ECF711BBB6F33C8C3DAD778153122593F36ABDDC0E97A602B045DE6 │ │ │ │ +19BD82D877DDA960AB11EF48C7F75A28D0D731D4A5DBC98283087267CD1A470D │ │ │ │ +537E949DA5EECF097B099547995BE066A941CED683B5748962AD2B02C21636C0 │ │ │ │ +2EAFA33CA0CB3BF8A95703F015A210D918865B9BEA2890DCFB68BC3719C305EC │ │ │ │ +315EC8727BF9A93632AB9E3090B100C022EE1396CD329B37547F26A7DCE52BD7 │ │ │ │ +F91B7388DEC34F4A0C6D46CD7CA6ACC00C5C4C71E47C6AD96496B3CBF531F342 │ │ │ │ +A740EE6B99BD70AD490DFA700772A0697EC6561CE88A0113E4DC3B21F372D810 │ │ │ │ +DFF2C3F6EDF3E917BF2664EEFC9AD292DD6CC36853CF936018D43FDB28D5B001 │ │ │ │ +7D1C805F958F13FD221377ABDD69D102E8CC1DAB2E011EE16CF6DB9D195BA702 │ │ │ │ +5A8738FABF989B0351282D0E5121182DFC52169782A5F3DD5D820411BEF909DE │ │ │ │ +04D963E6FDA76F88508C4E91DDAAA1748F396A1D380D8CA429673AF27C164434 │ │ │ │ +771781B39565D3EE50F3CF03EF12908B13A6C11C9AB7631B32125828B13050BA │ │ │ │ +041A93B97AC32D4A1E28C5FA98CDEE998B5F97823D6291D01E3611A16854F1FE │ │ │ │ +69B9D6D2AE3E56D012B7BC3E582FB4C23188A5E365E65EB1F804A706AF73A2F8 │ │ │ │ +9804808EF71F0982B14133BF9A27D6F2E719BDB751022B1B052722933948904E │ │ │ │ +3582E363478DCDA115205A0FDE39DF71FEAEEB104419C35A6B0678C19616C6D9 │ │ │ │ +A892DC2F4257069AF096C80C099CD13024DF3995F28C694E00D1F08B43D4450C │ │ │ │ +D18F5C925CFD2D124E74FC64BBAA0DE32A79E4A4507B5B5DD834C67160CDA110 │ │ │ │ +EF0061DD27E8864F4250A92BBEFD75C784BB98F4FA789A8236C2A21E4E61ABD0 │ │ │ │ +C6B4D13B3C31AC8E55FA34BEC7C308C61FB0280382EC6AFD63D959678D42D2B3 │ │ │ │ +4134F6236A0808D9302B4E3C6F81FC6973B4833602750CCB5DE36AEA23ED6BD4 │ │ │ │ +5B72DF0DD7B81C871CAA6EC190748CD8C4B998D576E5D340ACAC0617DDBE461C │ │ │ │ +8E82E809D11A01D265D039F4315066832E27E08A6F067E129E45FBF533F761BB │ │ │ │ +EC3C071209BECE7D14D3184B2E6BFD65717A5A7C08F3776B20C513649488C1CF │ │ │ │ +03333805B249D1034FB0AE2D7D2A23324EE27AEDB68F8E329A8052FE58D7C0D9 │ │ │ │ +A40A0CDC79F2085C4F39A7DFDB625C8F071E2A32CF6215DD3E060A9BABF7A3AA │ │ │ │ +C57DA0C0571C5D6EEAA975D1BB9C99F8EA4958360E43E8C60080B03DC4435550 │ │ │ │ +E6048DDD35DF3E5DA69669F266FFD7B44649A68025270DC84258E329F6E6907C │ │ │ │ +BCFF900D715D0C7EC43C5E7180CAD6427BA4FD41AAD6531A5C06B0EC26DDA71F │ │ │ │ +4A9DA50DE919E79226F6DDF7C1BA478936AA86CEAD93072CC2960E98C45A1A0C │ │ │ │ +60CF8A26E4278AB4F9E28FA6532648196CC455607D6BCD00F60675DE8CC02C8C │ │ │ │ +9BE5D5B714731814D5B008EE236563D77AC6895E0158877C95797E07C02AFEBE │ │ │ │ +CC9FE97D5E103F7DB0A834E9A7A75893EC66340B0E4C6F0EEDEF43415BF9FCF4 │ │ │ │ +47340CBEA4DCFBA0D028EB2149FFBBDB3322AE5F6FD20242526EDC55E476D983 │ │ │ │ +DC │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3205,15 +3211,15 @@ │ │ │ │ {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 3[51 12[45 22[47 15[25 3[45 3[45 │ │ │ │ -1[45 3[25 44[{}11 90.9091 /CMSL10 rf /Fd 142[62 11[62 │ │ │ │ +45 45 3[25 44[{}12 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 │ │ │ │ @@ -3313,17 +3319,17 @@ │ │ │ │ b(,)31 b Fh(head)47 b(=)h(tail)e(=)i(-1)p Fi(.)0 5049 │ │ │ │ y Ff(1.2)135 b(Protot)l(yp)t(es)46 b(and)f(descriptions)g(of)g │ │ │ │ Fd(Ideq)e Ff(metho)t(ds)0 5294 y Fi(This)25 b(section)h(con)m(tains)h │ │ │ │ (brief)e(descriptions)h(including)f(protot)m(yp)s(es)h(of)f(all)i │ │ │ │ (metho)s(ds)d(that)j(b)s(elong)e(to)h(the)g Fh(Ideq)0 │ │ │ │ 5407 y Fi(ob)5 b(ject.)1927 5656 y(1)p eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fi(2)p 136 100 1153 4 v │ │ │ │ -1335 w Fh(Ideq)29 b Fc(:)41 b Fg(DRAFT)30 b Fc(Jan)m(uary)g(6,)h(2026)p │ │ │ │ -2748 100 V 0 399 a Fb(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fi(2)p 136 100 1130 4 v │ │ │ │ +1312 w Fh(Ideq)29 b Fc(:)41 b Fg(DRAFT)30 b Fc(Jan)m(uary)g(10,)i(2026) │ │ │ │ +p 2770 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) │ │ │ │ @@ -3378,17 +3384,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 1153 4 v 1334 100 a Fh(Ideq)29 │ │ │ │ -b Fc(:)41 b Fg(DRAFT)121 b Fc(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2700 100 V 1153 w Fi(3)0 399 y Fb(1.2.3)112 b(Utilit)m(y)38 │ │ │ │ +TeXDict begin 3 2 bop 91 100 1130 4 v 1312 100 a Fh(Ideq)29 │ │ │ │ +b Fc(:)40 b Fg(DRAFT)122 b Fc(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2723 100 V 1130 w Fi(3)0 399 y Fb(1.2.3)112 b(Utilit)m(y)38 │ │ │ │ b(metho)s(ds)111 603 y Fi(1.)46 b Fh(void)h(Ideq_clear)e(\()i(Ideq)g │ │ │ │ (*deq)g(\))g(;)227 762 y Fi(This)30 b(metho)s(d)g(clears)h(the)g │ │ │ │ (dequeue.)40 b(The)30 b Fh(head)f Fi(and)h Fh(tail)f │ │ │ │ Fi(\014elds)h(are)h(set)f(to)i Fh(-1)p Fi(.)227 921 y │ │ │ │ Fg(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fi(If)30 b Fh(deq)g │ │ │ │ Fi(is)g Fh(NULL)p Fi(,)g(an)g(error)g(message)h(is)g(prin)m(ted)f(and)g │ │ │ │ (the)g(program)g(exits.)111 1125 y(2.)46 b Fh(int)h(Ideq_head)e(\()j │ │ │ │ @@ -3457,17 +3463,17 @@ │ │ │ │ 3130 5136 V 34 w(resize\(\))d Fi(metho)s(d.)227 5248 │ │ │ │ y(Otherwise,)f(the)f(item)h(is)g(placed)f(in)m(to)i(the)e(list)h(and)f │ │ │ │ Fh(1)g Fi(is)h(returned.)227 5407 y Fg(Err)-5 b(or)34 │ │ │ │ b(che)-5 b(cking:)40 b Fi(If)30 b Fh(deq)g Fi(is)g Fh(NULL)p │ │ │ │ Fi(,)g(an)g(error)g(message)h(is)g(prin)m(ted)f(and)g(the)g(program)g │ │ │ │ (exits.)p eop end │ │ │ │ %%Page: 4 4 │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fi(4)p 136 100 1153 4 v │ │ │ │ -1335 w Fh(Ideq)29 b Fc(:)41 b Fg(DRAFT)30 b Fc(Jan)m(uary)g(6,)h(2026)p │ │ │ │ -2748 100 V 0 399 a Fb(1.2.4)112 b(IO)38 b(metho)s(ds)111 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fi(4)p 136 100 1130 4 v │ │ │ │ +1312 w Fh(Ideq)29 b Fc(:)41 b Fg(DRAFT)30 b Fc(Jan)m(uary)g(10,)i(2026) │ │ │ │ +p 2770 100 V 0 399 a Fb(1.2.4)112 b(IO)38 b(metho)s(ds)111 │ │ │ │ 595 y Fi(1.)46 b Fh(void)h(Ideq_writeForHumanEye)42 b(\()47 │ │ │ │ b(Ideq)g(*deq)g(\))g(;)227 745 y Fi(This)31 b(metho)s(d)g(write)h(the)f │ │ │ │ (state)i(of)f(the)f(ob)5 b(ject,)33 b(\(the)f(size,)h(head)f(and)e │ │ │ │ (tail\))k(and)c(the)i(list)g(of)g(en)m(tries)g(to)227 │ │ │ │ 858 y(a)f(\014le.)227 1008 y Fg(Err)-5 b(or)34 b(che)-5 │ │ │ │ b(cking:)40 b Fi(If)30 b Fh(deq)g Fi(or)g Fh(fp)g Fi(is)g │ │ │ │ Fh(NULL)p Fi(,)g(an)g(error)g(message)i(is)e(prin)m(ted)g(and)g(the)g │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -16,15 +16,15 @@ │ │ │ │ │ • IV iv : an IV object to hold the list vector. │ │ │ │ │ A correctly initialized and nontrivial Ideq object will have maxsize > 0. When the dequeue is │ │ │ │ │ empty, head = tail = -1. │ │ │ │ │ 1.2 Prototypes and descriptions of Ideq methods │ │ │ │ │ This section contains brief descriptions including prototypes of all methods that belong to the Ideq │ │ │ │ │ object. │ │ │ │ │ 1 │ │ │ │ │ - 2 Ideq : DRAFT January 6, 2026 │ │ │ │ │ + 2 Ideq : DRAFT January 10, 2026 │ │ │ │ │ 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,50 +47,50 @@ │ │ │ │ │ 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 January 6, 2026 3 │ │ │ │ │ + Ideq : DRAFT January 10, 2026 3 │ │ │ │ │ 1.2.3 Utility methods │ │ │ │ │ - 1. void Ideq_clear ( Ideq *deq ) ; │ │ │ │ │ + 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 ) ; │ │ │ │ │ + 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 │ │ │ │ │ -1 may signal an empty list or a terminating element. │ │ │ │ │ Error checking: If deq is NULL, an error message is printed and the program exits. │ │ │ │ │ - 3. int Ideq_removeFromHead ( Ideq *deq ) ; │ │ │ │ │ + 3. int Ideq_removeFromHead ( Ideq *deq ) ; │ │ │ │ │ This method returns the value at the head of the list and removes that value. If head == -1 │ │ │ │ │ then -1 is returned. Note, the list may be nonempty and the first value may be -1, so -1 │ │ │ │ │ may signal an empty list or a terminating element. │ │ │ │ │ Error checking: If deq is NULL, an error message is printed and the program exits. │ │ │ │ │ - 4. int Ideq_insertAtHead ( Ideq *deq, int val ) ; │ │ │ │ │ + 4. int Ideq_insertAtHead ( Ideq *deq, int val ) ; │ │ │ │ │ This method inserts a value val into the list at the head 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. │ │ │ │ │ - 5. int Ideq_tail ( Ideq *deq ) ; │ │ │ │ │ + 5. int Ideq_tail ( Ideq *deq ) ; │ │ │ │ │ This method returns the value at the tail of the list without removing that value. If tail == │ │ │ │ │ -1 then -1 is returned. Note, the list may be nonempty and the first value may be -1, so -1 │ │ │ │ │ may signal an empty list or a terminating element. │ │ │ │ │ Error checking: If deq is NULL, an error message is printed and the program exits. │ │ │ │ │ - 6. int Ideq_removeFromTail ( Ideq *deq ) ; │ │ │ │ │ + 6. int Ideq_removeFromTail ( Ideq *deq ) ; │ │ │ │ │ This method returns the value at the tail of the list and removes that value. If tail == -1 │ │ │ │ │ then -1 is returned. Note, the list may be nonempty and the first value may be -1, so -1 │ │ │ │ │ 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 ) ; │ │ │ │ │ + 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 January 6, 2026 │ │ │ │ │ + 4 Ideq : DRAFT January 10, 2026 │ │ │ │ │ 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 2026.01.06:2034 │ │ │ │ +%DVIPSSource: TeX output 2026.01.10:0513 │ │ │ │ %%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 │ │ │ │ @@ -2762,14 +2762,15 @@ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ /UnderlineThickness 50 def │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ +dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ dup 54 /six put │ │ │ │ dup 58 /colon put │ │ │ │ dup 74 /J put │ │ │ │ dup 97 /a put │ │ │ │ dup 110 /n put │ │ │ │ dup 114 /r put │ │ │ │ @@ -2959,79 +2960,84 @@ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB88440048702D1F │ │ │ │ -77994EE04EC3B4531D6E1888C86A8F0DA6CF1F056F16AB0DD76C862830F89DA4 │ │ │ │ -28923B3AA543E0D6E41D3BD283E600BC11F889315EE92C675C109C81065ED1BC │ │ │ │ -82A5583D1B723D50051B0557A367887F5B263014C6E77288B4883C50889473D3 │ │ │ │ -3787BAD4BEB88BD1353AFA5B73E61814819537E7FF09F53EF94792BB3DD36ED0 │ │ │ │ -002D0E7A6CDAB85A9C17AF5664BCB5A71663B861880F3ECCABC8E7A2FC81A4CC │ │ │ │ -AE7A87503FDC1CE0077BA51ECC7B43B60793FED8E9AAD5BBD03ADD6183DCD26D │ │ │ │ -24A74163611C05562437644EF9B8889FD4F9D311911204FEFD35237486F2D2D0 │ │ │ │ -B6783A03BF12EA6D19D6D0F87E4D08515F12F9CBF1961CAA71E0D69FE3C4C4D2 │ │ │ │ -7C7FB64ED24F8684C8F00C2BEDEA53EA390CDC0B5BEBD7DD982580B2EA1F1F89 │ │ │ │ -CFED5916630DC2BA32BB9180277E1ABC339B3B7DE086717BD93F7FF3681BA5B3 │ │ │ │ -FCF671C4B293C2DE4A322F0AA3323A4934444C69F23EF90120B8755482757759 │ │ │ │ -C457A435FB8BB4922BD92C5F3D9555D978275C510183E29DFF2FCE4ABBFC18DE │ │ │ │ -76CAD3B486BA12047DD808CD4D521A0FD368E4AE79DE262630983A5D6F0B679D │ │ │ │ -2F005306393C520E1B6987302D029939D94B0178DB06211C7F3B123A41E6E7BA │ │ │ │ -87164737110707A3ED3983895F3FBC815EF370F54C808ED93D910937BCA3D8AF │ │ │ │ -7CBF80DC180CDA54059DB76710B4FCD4139D5B7DA7DB1A0D0AF86AD2453D3691 │ │ │ │ -0BA5BAD40FF28BB4235FCD40FC87C2B888E67928D9B0ACA5692149373DBB93BF │ │ │ │ -6520DDD36A9BFE4D415CA67A5E04F1D48BDB28C69676273ED842CF7980E8E17C │ │ │ │ -B88563F407E340AFAE8F51AABCF8A39521BCEE1EC8396D75E124B24B4675909F │ │ │ │ -E246F87DA08584A3173AEFF153ECDF610543FA7474D125A31ADD6285A49222B5 │ │ │ │ -177066EA395BFA4B1114C7FCF7712DA772A21C99E64F4E1181E69CAF98137FA2 │ │ │ │ -76CF74F682B8CD7BA6EEA79B70FA8A76809634517F8415B6F21A5A7D6099B5E8 │ │ │ │ -EAB356BBC4FB68C72B8C61DDCE8EAB1A53B9D6BAD78584B307EFF57CEAE74884 │ │ │ │ -35987BF89E9E60E962D22FA5612F2DB5EB840499B7CC11A34BA5DEE30D277540 │ │ │ │ -39B8211D69B448ADE95B723F8369A631DE6DD75703AFD7485FB7FFF41A60CBE4 │ │ │ │ -813B8FEA120662355773830EF85015E7FFD609B2CEE52CB5FFE9C35B6BEEE4A4 │ │ │ │ -A66719E31CE1523FDD7771FB1E881A32A7DB7D92C2326DF4B93241C14ABFCCD6 │ │ │ │ -8E5BCAC61E800E6B1B4687ADA4CBF41EC0AFC26D021D1772CBDCD0516DF5EBE1 │ │ │ │ -37FD2AC5ABB8D774B5735940F1F6866D044FD8CE74444FAA5D0202C11E39CC10 │ │ │ │ -213731F41F704450E1D0565013BF22188442CE0FC256190A9F92F0C802AA2660 │ │ │ │ -614AFE9E9C82F8CD2E6035EEF84E5F16CBB690AC819B4B910EA8E81106F0ACE5 │ │ │ │ -CDFE77DAF69E4AFE72C43145A3ABCC40B6C5297487083F738C86422277AC2267 │ │ │ │ -51759F1B7F129E87DE16433B664AD0FB6D30424A11C70B52B591352BF653C8B0 │ │ │ │ -0840C224FBFEAA996A6BE1D69414DD778C2EF56A63B64D59BA412EC3E4000831 │ │ │ │ -73361FB9813F9A7C74BA3A50D331B07B61492E5D75F0861B530587269B3ADC90 │ │ │ │ -EA1DF586AC4BC57C3230893EFE953A6E76950ABA895FAC711D3BD330ABC6846A │ │ │ │ -C91F6ABF3410B913DFE5C8266020CEE5C7A9EDA2E7D9BCA797DC486443C7BA7C │ │ │ │ -7E03439A40927FA3251B6D417E5653E7799E9D6F04149C34096E2CA9B1F9B1EC │ │ │ │ -38958A2521B4A657A8B9F16E1FD66C7E345A10D7AA0241559503D214AC6507A4 │ │ │ │ -CBDE8617AA7ED136577734428594487F3565BF45FA196375759E2FE23C26EC8A │ │ │ │ -3310A36917A5E2F260EAB31030F8E570303D36B833626938F56939849DFA1F3F │ │ │ │ -66D0A317BB6364427F1512AAB380B555611C76345C02C3A6FBF78590331D5ECA │ │ │ │ -029DEFB722F6AB05327C2A31AB7BD6ED0F0386E6F45C1278048D22B90B074CCB │ │ │ │ -2BBEBCC1927C97EC532E651CAF0058AFE8FC08F00F0216D5DD9830C294FF76DA │ │ │ │ -426A073B3A3AEEFBDEE71C5182186311607ECDBD1F1AF4C5E79748CD01445C8D │ │ │ │ -25DD49490C8A6810065908222C8D0AC9F83AFBEE7115023E2D2615A170A5D40A │ │ │ │ -AD49BDF59A59187B6434F83E68EED22EF4EFDBADED6F1559AC779E0377FE7375 │ │ │ │ -D7060584FE74B1859D0FD98772253A712B17FFBB467840C484F5EF82C5677ADB │ │ │ │ -EDF159A456A526B8B9F6E8FC7608DFD47B0F09E26118F79CBE53B6C4E32BACAB │ │ │ │ -D62AFD4AA527CC4B587BB41A17A9BCE106A8C592BC9B73422B712C466C284A17 │ │ │ │ -E8D0C1E01D43C739FB1C083AD2714F78AC785B0C09AA7E67417A73510E00F2FE │ │ │ │ -E3D3EBF626A2F3A20A386E3F98D1285F4A2A332FC609CD191F01F128627B3505 │ │ │ │ -0AC2387DC0AD1B950490EBB5045F22BEC54955402CE2D267B6754E7C32BE84E8 │ │ │ │ -E6B63E3D3EAEE979442D167AEF69C27B22A8E887A2510C3A168D95D285CF7515 │ │ │ │ -011C921679B2F386575826A3F2071D015EEB78F02A4F94D4E5F07873623200F8 │ │ │ │ -7DF95BA0DC6B6D31DECC925BEA1E6A7C52FE685800EC33CBAE830F1AE5454DFA │ │ │ │ -913B8F457D7E2D3DFF019869E3301EEEC64A38295DE6B588E776922B32362382 │ │ │ │ -D1CF3D058613C8A96E6994D3EC23E8B71EC6E718383B20BB6C22DB6F93FA559F │ │ │ │ -3449CA84EB33B25C8BE0DFD1C29DC4FBD7AFBDC96C12162CAAB2C5E354B0FB10 │ │ │ │ -4BF8CC3610875ABD5111D09F2F847822118972214EDEB9EE34BAFE45E7AC15C5 │ │ │ │ -CA63EC4A3CEEA505A5EDD88A59BB67C71C3E026DFFE177F99BC69E6635545D03 │ │ │ │ -77A634F98230EF64381EC67CA519D4B9770EFA844789E21970F89D5FFC5DEAA8 │ │ │ │ -DC008EBA09306967ED090FF91B002FA6120C2B461A87AA32EFB003C5578D8EEF │ │ │ │ - │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ +AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ +E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ +46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ +FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ +389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ +7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ +2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ +C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ +B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ +AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ +E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ +F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ +0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ +2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ +29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ +CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ +6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ +5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ +36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0DD96AB602D004DCFE000A0 │ │ │ │ +ABE41BAB8AB7D50BD32BFD6F1AA3B60B09B9BE4E273EDD2DDCB21A98A760D17D │ │ │ │ +0A5C9303AFE63CF80A93E60C72A0576FAADEECBE2DE91892D210EB0AD1889C04 │ │ │ │ +C7530652584E775B4ED19CFB4B8DBCCC57A9FA9E4DDC8A1E5A1D3BE9E93407A6 │ │ │ │ +2C237ACE27F4EDA330EE952EDCBE91683AA98A29197735006666C96A2CE7C787 │ │ │ │ +BBA5A57C4DBF6FAA5B38AF226B5D9A65FAD84650AC0C3DB29C30602699F81E01 │ │ │ │ +0BAF8F1CE44A03C680121B77A1703C638187675D6C22C49F9902475E6CE9C732 │ │ │ │ +48ED028CC92EA542EF189CC9CA1C384E3387793057615D0A2BF040CC90B275B9 │ │ │ │ +F70A5310874DC2E0A360373E7BCAC88250FBC8989C7D18DA8274C06F02FCF31C │ │ │ │ +2B3868CBAF083DAC2FB159DE368261842DB7C9EA1A86B17617C861A48FBA8FF9 │ │ │ │ +D184CB026F4A418C0955347612F94C039B1536A76CB182A591DD7C02D509CF16 │ │ │ │ +8B9E46502ABF5DE31F5DFBD19C7417A2AF7AF13F0D5FF837C94CE56F07B96337 │ │ │ │ +0ED215252346FAEB54B5F3ABE29709B7ECB9FBD23A4AD397E6ABA6938F1BBF33 │ │ │ │ +1D5460D9414F0B8725DA832744525C13E3FD9C8DB33FBEE12F9C4969988402C8 │ │ │ │ +96AF916364CC2DF17EDBA622FC0A5D0013418E29F912FFA06F8D7E31ECAB0B08 │ │ │ │ +C4D2D8EE537CC768FC9038DD6D86D33642C6E812E941F157FC6917AF19C2B99A │ │ │ │ +5BF10B9A7ECF711BBB6F33C8C3DAD778153122593F36ABDDC0E97A602B045DE6 │ │ │ │ +19BD82D877DDA960AB11EF48C7F75A28D0D731D4A5DBC98283087267CD1A470D │ │ │ │ +537E949DA5EECF097B099547995BE066A941CED683B5748962AD2B02C21636C0 │ │ │ │ +2EAFA33CA0CB3BF8A95703F015A210D918865B9BEA2890DCFB68BC3719C305EC │ │ │ │ +315EC8727BF9A93632AB9E3090B100C022EE1396CD329B37547F26A7DCE52BD7 │ │ │ │ +F91B7388DEC34F4A0C6D46CD7CA6ACC00C5C4C71E47C6AD96496B3CBF531F342 │ │ │ │ +A740EE6B99BD70AD490DFA700772A0697EC6561CE88A0113E4DC3B21F372D810 │ │ │ │ +DFF2C3F6EDF3E917BF2664EEFC9AD292DD6CC36853CF936018D43FDB28D5B001 │ │ │ │ +7D1C805F958F13FD221377ABDD69D102E8CC1DAB2E011EE16CF6DB9D195BA702 │ │ │ │ +5A8738FABF989B0351282D0E5121182DFC52169782A5F3DD5D820411BEF909DE │ │ │ │ +04D963E6FDA76F88508C4E91DDAAA1748F396A1D380D8CA429673AF27C164434 │ │ │ │ +771781B39565D3EE50F3CF03EF12908B13A6C11C9AB7631B32125828B13050BA │ │ │ │ +041A93B97AC32D4A1E28C5FA98CDEE998B5F97823D6291D01E3611A16854F1FE │ │ │ │ +69B9D6D2AE3E56D012B7BC3E582FB4C23188A5E365E65EB1F804A706AF73A2F8 │ │ │ │ +9804808EF71F0982B14133BF9A27D6F2E719BDB751022B1B052722933948904E │ │ │ │ +3582E363478DCDA115205A0FDE39DF71FEAEEB104419C35A6B0678C19616C6D9 │ │ │ │ +A892DC2F4257069AF096C80C099CD13024DF3995F28C694E00D1F08B43D4450C │ │ │ │ +D18F5C925CFD2D124E74FC64BBAA0DE32A79E4A4507B5B5DD834C67160CDA110 │ │ │ │ +EF0061DD27E8864F4250A92BBEFD75C784BB98F4FA789A8236C2A21E4E61ABD0 │ │ │ │ +C6B4D13B3C31AC8E55FA34BEC7C308C61FB0280382EC6AFD63D959678D42D2B3 │ │ │ │ +4134F6236A0808D9302B4E3C6F81FC6973B4833602750CCB5DE36AEA23ED6BD4 │ │ │ │ +5B72DF0DD7B81C871CAA6EC190748CD8C4B998D576E5D340ACAC0617DDBE461C │ │ │ │ +8E82E809D11A01D265D039F4315066832E27E08A6F067E129E45FBF533F761BB │ │ │ │ +EC3C071209BECE7D14D3184B2E6BFD65717A5A7C08F3776B20C513649488C1CF │ │ │ │ +03333805B249D1034FB0AE2D7D2A23324EE27AEDB68F8E329A8052FE58D7C0D9 │ │ │ │ +A40A0CDC79F2085C4F39A7DFDB625C8F071E2A32CF6215DD3E060A9BABF7A3AA │ │ │ │ +C57DA0C0571C5D6EEAA975D1BB9C99F8EA4958360E43E8C60080B03DC4435550 │ │ │ │ +E6048DDD35DF3E5DA69669F266FFD7B44649A68025270DC84258E329F6E6907C │ │ │ │ +BCFF900D715D0C7EC43C5E7180CAD6427BA4FD41AAD6531A5C06B0EC26DDA71F │ │ │ │ +4A9DA50DE919E79226F6DDF7C1BA478936AA86CEAD93072CC2960E98C45A1A0C │ │ │ │ +60CF8A26E4278AB4F9E28FA6532648196CC455607D6BCD00F60675DE8CC02C8C │ │ │ │ +9BE5D5B714731814D5B008EE236563D77AC6895E0158877C95797E07C02AFEBE │ │ │ │ +CC9FE97D5E103F7DB0A834E9A7A75893EC66340B0E4C6F0EEDEF43415BF9FCF4 │ │ │ │ +47340CBEA4DCFBA0D028EB2149FFBBDB3322AE5F6FD20242526EDC55E476D983 │ │ │ │ +DC │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -5600,16 +5606,16 @@ │ │ │ │ 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 3[46 12[42 22[43 15[23 3[42 3[42 1[42 3[23 │ │ │ │ -44[{}11 83.022 /CMSL10 rf /Fk 148[35 27 23 20[39 11[54 │ │ │ │ +3[46 2[33 3[46 12[42 22[43 15[23 3[42 3[42 42 42 3[23 │ │ │ │ +44[{}12 83.022 /CMSL10 rf /Fk 148[35 27 23 20[39 11[54 │ │ │ │ 12[20 59[{}6 58.1154 /CMMI7 rf /Fl 134[41 47 1[40 10[43 │ │ │ │ 34 29 7[44 7[48 69 21[63 62 2[65 1[65 23 46[47 53 11[{}16 │ │ │ │ 83.022 /CMMI10 rf /Fm 137[38 45 28 34 35 1[42 42 47 1[21 │ │ │ │ 38 1[25 42 38 1[38 42 38 1[42 12[59 1[61 11[54 56 63 │ │ │ │ 2[62 6[25 12[30 45[{}25 83.022 /CMTI10 rf │ │ │ │ %DVIPSBitmapFont: Fn tcrm1000 10 1 │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ @@ -5747,17 +5753,17 @@ │ │ │ │ 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 1179 4 v │ │ │ │ -1344 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(Jan)n(uary)f(6,)h │ │ │ │ -(2026)p 2722 100 V 101 390 a Fp(6.)42 b(Create)26 b(a)h │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fp(2)p 125 100 1158 4 v │ │ │ │ +1323 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(Jan)n(uary)f(10,)h │ │ │ │ +(2026)p 2743 100 V 101 390 a Fp(6.)42 b(Create)26 b(a)h │ │ │ │ Fo(Graph)f Fp(ob)5 b(ject)27 b(using)h(the)g Fo(Graph)p │ │ │ │ 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 │ │ │ │ @@ -5847,17 +5853,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 1179 4 v 1344 100 a Fo(InpMtx)25 │ │ │ │ -b Fj(:)37 b Fm(DRAFT)111 b Fj(Jan)n(uary)25 b(6,)i(2026)p │ │ │ │ -2682 100 V 1179 w Fp(3)301 390 y Fi({)41 b Fo(INPMTX)p │ │ │ │ +TeXDict begin 3 2 bop 83 100 1158 4 v 1323 100 a Fo(InpMtx)26 │ │ │ │ +b Fj(:)36 b Fm(DRAFT)111 b Fj(Jan)n(uary)25 b(10,)i(2026)p │ │ │ │ +2703 100 V 1158 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 │ │ │ │ @@ -5953,17 +5959,17 @@ │ │ │ │ (stored)g(as)g(unsorted)g(pairs)g(or)h(triples,)g(and)f │ │ │ │ Fo(0)h Fp(other-)208 5242 y(wise.)125 5407 y Fn(\210)42 │ │ │ │ b Fo(INPMTX)p 477 5407 V 28 w(IS)p 593 5407 V 31 w(SORTED\(mtx\))23 │ │ │ │ b Fp(returns)k Fo(1)g Fp(if)h(the)g(en)n(tries)f(are)g(stored)g(as)g │ │ │ │ (sorted)f(pairs)h(or)g(triples,)g(and)h Fo(0)f Fp(otherwise.)p │ │ │ │ eop end │ │ │ │ %%Page: 4 4 │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fp(4)p 125 100 1179 4 v │ │ │ │ -1344 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(Jan)n(uary)f(6,)h │ │ │ │ -(2026)p 2722 100 V 125 390 a Fn(\210)42 b Fo(INPMTX)p │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fp(4)p 125 100 1158 4 v │ │ │ │ +1323 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(Jan)n(uary)f(10,)h │ │ │ │ +(2026)p 2743 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 │ │ │ │ @@ -6029,17 +6035,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 1179 4 v 1344 100 a Fo(InpMtx)25 │ │ │ │ -b Fj(:)37 b Fm(DRAFT)111 b Fj(Jan)n(uary)25 b(6,)i(2026)p │ │ │ │ -2682 100 V 1179 w Fp(5)208 390 y Fm(Err)l(or)j(che)l(cking:)38 │ │ │ │ +TeXDict begin 5 4 bop 83 100 1158 4 v 1323 100 a Fo(InpMtx)26 │ │ │ │ +b Fj(:)36 b Fm(DRAFT)111 b Fj(Jan)n(uary)25 b(10,)i(2026)p │ │ │ │ +2703 100 V 1158 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 │ │ │ │ @@ -6097,17 +6103,17 @@ │ │ │ │ (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 1179 4 v │ │ │ │ -1344 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(Jan)n(uary)f(6,)h │ │ │ │ -(2026)p 2722 100 V 60 390 a Fp(11.)41 b Fo(double)g(*)i(InpMtx_dvec)c │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fp(6)p 125 100 1158 4 v │ │ │ │ +1323 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(Jan)n(uary)f(10,)h │ │ │ │ +(2026)p 2743 100 V 60 390 a Fp(11.)41 b Fo(double)g(*)i(InpMtx_dvec)c │ │ │ │ (\()k(InpMtx)e(*inpmtx)g(\))i(;)208 524 y Fp(This)27 │ │ │ │ b(metho)r(d)h(returns)f(the)h(base)f(address)f(of)i(the)g │ │ │ │ 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 │ │ │ │ @@ -6177,17 +6183,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 1179 4 v 1344 100 a Fo(InpMtx)25 │ │ │ │ -b Fj(:)37 b Fm(DRAFT)111 b Fj(Jan)n(uary)25 b(6,)i(2026)p │ │ │ │ -2682 100 V 1179 w Fp(7)60 390 y(19.)41 b Fo(void)g(InpMtx_setMaxnvec)o │ │ │ │ +TeXDict begin 7 6 bop 83 100 1158 4 v 1323 100 a Fo(InpMtx)26 │ │ │ │ +b Fj(:)36 b Fm(DRAFT)111 b Fj(Jan)n(uary)25 b(10,)i(2026)p │ │ │ │ +2703 100 V 1158 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 │ │ │ │ @@ -6272,17 +6278,17 @@ │ │ │ │ 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 1179 4 v │ │ │ │ -1344 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(Jan)n(uary)f(6,)h │ │ │ │ -(2026)p 2722 100 V 0 390 a Fe(1.2.4)112 b(Input)38 b(metho)s(ds)101 │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fp(8)p 125 100 1158 4 v │ │ │ │ +1323 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(Jan)n(uary)f(10,)h │ │ │ │ +(2026)p 2743 100 V 0 390 a Fe(1.2.4)112 b(Input)38 b(metho)s(ds)101 │ │ │ │ 570 y Fp(1.)k Fo(void)f(InpMtx_inputEntry)c(\()43 b(InpMtx)e(*inpmtx,)g │ │ │ │ (int)h(row,)g(int)g(col)h(\))g(;)208 669 y(void)e(InpMtx_inputRealE)o │ │ │ │ (ntr)o(y)c(\()44 b(InpMtx)d(*inpmtx,)f(int)i(row,)g(int)h(col,)e │ │ │ │ (double)h(value)f(\))i(;)208 769 y(void)e(InpMtx_inputCompl)o(exE)o(nt) │ │ │ │ o(ry)c(\()43 b(InpMtx)e(*inpmtx,)g(int)h(row,)g(int)g(col,)1602 │ │ │ │ 869 y(double)f(real,)h(double)f(imag)h(\))h(;)208 1003 │ │ │ │ y Fp(This)29 b(metho)r(d)g(places)g(a)f(single)h(en)n(try)f(in)n(to)h │ │ │ │ @@ -6371,17 +6377,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 1179 4 v 1344 100 a Fo(InpMtx)25 │ │ │ │ -b Fj(:)37 b Fm(DRAFT)111 b Fj(Jan)n(uary)25 b(6,)i(2026)p │ │ │ │ -2682 100 V 1179 w Fp(9)338 390 y Fo(int)43 b(rowstride,)c(int)j │ │ │ │ +TeXDict begin 9 8 bop 83 100 1158 4 v 1323 100 a Fo(InpMtx)26 │ │ │ │ +b Fj(:)36 b Fm(DRAFT)111 b Fj(Jan)n(uary)25 b(10,)i(2026)p │ │ │ │ +2703 100 V 1158 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 │ │ │ │ @@ -6479,17 +6485,17 @@ │ │ │ │ (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 1158 4 │ │ │ │ -v 1322 w Fo(InpMtx)26 b Fj(:)37 b Fm(DRAFT)27 b Fj(Jan)n(uary)e(6,)j │ │ │ │ -(2026)p 2743 100 V 101 390 a Fp(4.)42 b Fo(void)f(InpMtx_permute)d(\() │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fp(10)p 166 100 1137 4 │ │ │ │ +v 1302 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(Jan)n(uary)f(10,)g │ │ │ │ +(2026)p 2763 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 │ │ │ │ @@ -6591,17 +6597,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 1158 4 v 1323 100 a Fo(InpMtx)26 │ │ │ │ -b Fj(:)36 b Fm(DRAFT)111 b Fj(Jan)n(uary)25 b(6,)j(2026)p │ │ │ │ -2662 100 V 1158 w Fp(11)101 390 y(2.)42 b Fo(void)f(InpMtx_nonsym_mmm)o │ │ │ │ +TeXDict begin 11 10 bop 83 100 1137 4 v 1303 100 a Fo(InpMtx)25 │ │ │ │ +b Fj(:)37 b Fm(DRAFT)110 b Fj(Jan)n(uary)26 b(10,)g(2026)p │ │ │ │ +2682 100 V 1137 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) │ │ │ │ @@ -6703,17 +6709,17 @@ │ │ │ │ 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 1158 │ │ │ │ -4 v 1322 w Fo(InpMtx)26 b Fj(:)37 b Fm(DRAFT)27 b Fj(Jan)n(uary)e(6,)j │ │ │ │ -(2026)p 2743 100 V 101 390 a Fp(4.)42 b Fo(int)g(InpMtx_nonsym_gm)o(vm) │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fp(12)p 166 100 1137 │ │ │ │ +4 v 1302 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(Jan)n(uary)f(10,)g │ │ │ │ +(2026)p 2763 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 │ │ │ │ @@ -6805,17 +6811,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 1158 4 v 1323 100 a Fo(InpMtx)26 │ │ │ │ -b Fj(:)36 b Fm(DRAFT)111 b Fj(Jan)n(uary)25 b(6,)j(2026)p │ │ │ │ -2662 100 V 1158 w Fp(13)0 390 y Fe(1.2.8)112 b(Submatrix)39 │ │ │ │ +TeXDict begin 13 12 bop 83 100 1137 4 v 1303 100 a Fo(InpMtx)25 │ │ │ │ +b Fj(:)37 b Fm(DRAFT)110 b Fj(Jan)n(uary)26 b(10,)g(2026)p │ │ │ │ +2682 100 V 1137 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 │ │ │ │ @@ -6903,17 +6909,17 @@ │ │ │ │ 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 1158 │ │ │ │ -4 v 1322 w Fo(InpMtx)26 b Fj(:)37 b Fm(DRAFT)27 b Fj(Jan)n(uary)e(6,)j │ │ │ │ -(2026)p 2743 100 V 208 390 a Fp(in)f(the)g(correct)f(fashion.\))36 │ │ │ │ +TeXDict begin 14 13 bop 0 100 a Fp(14)p 166 100 1137 │ │ │ │ +4 v 1302 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(Jan)n(uary)f(10,)g │ │ │ │ +(2026)p 2763 100 V 208 390 a Fp(in)h(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 │ │ │ │ @@ -7006,17 +7012,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 1158 4 v 1323 100 a Fo(InpMtx)26 │ │ │ │ -b Fj(:)36 b Fm(DRAFT)111 b Fj(Jan)n(uary)25 b(6,)j(2026)p │ │ │ │ -2662 100 V 1158 w Fp(15)0 390 y Fe(1.2.10)113 b(IO)37 │ │ │ │ +TeXDict begin 15 14 bop 83 100 1137 4 v 1303 100 a Fo(InpMtx)25 │ │ │ │ +b Fj(:)37 b Fm(DRAFT)110 b Fj(Jan)n(uary)26 b(10,)g(2026)p │ │ │ │ +2682 100 V 1137 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 │ │ │ │ @@ -7113,17 +7119,17 @@ │ │ │ │ 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 1158 │ │ │ │ -4 v 1322 w Fo(InpMtx)26 b Fj(:)37 b Fm(DRAFT)27 b Fj(Jan)n(uary)e(6,)j │ │ │ │ -(2026)p 2743 100 V 101 390 a Fp(8.)42 b Fo(int)g(InpMtx_writeStat)o(s) │ │ │ │ +TeXDict begin 16 15 bop 0 100 a Fp(16)p 166 100 1137 │ │ │ │ +4 v 1302 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(Jan)n(uary)f(10,)g │ │ │ │ +(2026)p 2763 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 │ │ │ │ @@ -7203,17 +7209,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 1158 4 v 1323 100 a Fo(InpMtx)26 │ │ │ │ -b Fj(:)36 b Fm(DRAFT)111 b Fj(Jan)n(uary)25 b(6,)j(2026)p │ │ │ │ -2662 100 V 1158 w Fp(17)307 390 y Fn(\210)42 b Fp(The)19 │ │ │ │ +TeXDict begin 17 16 bop 83 100 1137 4 v 1303 100 a Fo(InpMtx)25 │ │ │ │ +b Fj(:)37 b Fm(DRAFT)110 b Fj(Jan)n(uary)26 b(10,)g(2026)p │ │ │ │ +2682 100 V 1137 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 │ │ │ │ @@ -7309,17 +7315,17 @@ │ │ │ │ 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 1158 │ │ │ │ -4 v 1322 w Fo(InpMtx)26 b Fj(:)37 b Fm(DRAFT)27 b Fj(Jan)n(uary)e(6,)j │ │ │ │ -(2026)p 2743 100 V 307 390 a Fn(\210)42 b Fp(The)19 b │ │ │ │ +TeXDict begin 18 17 bop 0 100 a Fp(18)p 166 100 1137 │ │ │ │ +4 v 1302 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(Jan)n(uary)f(10,)g │ │ │ │ +(2026)p 2763 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 │ │ │ │ @@ -7412,17 +7418,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 1158 4 v 1323 100 a Fo(InpMtx)26 │ │ │ │ -b Fj(:)36 b Fm(DRAFT)111 b Fj(Jan)n(uary)25 b(6,)j(2026)p │ │ │ │ -2662 100 V 1158 w Fp(19)469 390 y Fo(nvtx)42 b(nadj)469 │ │ │ │ +TeXDict begin 19 18 bop 83 100 1137 4 v 1303 100 a Fo(InpMtx)25 │ │ │ │ +b Fj(:)37 b Fm(DRAFT)110 b Fj(Jan)n(uary)26 b(10,)g(2026)p │ │ │ │ +2682 100 V 1137 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 │ │ │ │ @@ -7512,17 +7518,17 @@ │ │ │ │ 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 1158 │ │ │ │ -4 v 1322 w Fo(InpMtx)26 b Fj(:)37 b Fm(DRAFT)27 b Fj(Jan)n(uary)e(6,)j │ │ │ │ -(2026)p 2743 100 V 456 390 a Fi({)41 b Fo(1)28 b Fp(|)f(storage)f(of)i │ │ │ │ +TeXDict begin 20 19 bop 0 100 a Fp(20)p 166 100 1137 │ │ │ │ +4 v 1302 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(Jan)n(uary)f(10,)g │ │ │ │ +(2026)p 2763 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 │ │ │ │ @@ -7589,17 +7595,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 1158 4 v 1323 100 a Fo(InpMtx)26 │ │ │ │ -b Fj(:)36 b Fm(DRAFT)111 b Fj(Jan)n(uary)25 b(6,)j(2026)p │ │ │ │ -2662 100 V 1158 w Fp(21)1154 1747 y @beginspecial 47 │ │ │ │ +TeXDict begin 21 20 bop 83 100 1137 4 v 1303 100 a Fo(InpMtx)25 │ │ │ │ +b Fj(:)37 b Fm(DRAFT)110 b Fj(Jan)n(uary)26 b(10,)g(2026)p │ │ │ │ +2682 100 V 1137 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 │ │ │ │ @@ -8004,17 +8010,17 @@ │ │ │ │ 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 1158 │ │ │ │ -4 v 1322 w Fo(InpMtx)26 b Fj(:)37 b Fm(DRAFT)27 b Fj(Jan)n(uary)e(6,)j │ │ │ │ -(2026)p 2743 100 V 60 390 a Fp(12.)41 b Fo(testMMM)f(msglvl)h(msgFile)g │ │ │ │ +TeXDict begin 22 21 bop 0 100 a Fp(22)p 166 100 1137 │ │ │ │ +4 v 1302 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(Jan)n(uary)f(10,)g │ │ │ │ +(2026)p 2763 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 │ │ │ │ @@ -8114,17 +8120,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 1158 4 v 1323 100 a Fo(InpMtx)26 │ │ │ │ -b Fj(:)36 b Fm(DRAFT)111 b Fj(Jan)n(uary)25 b(6,)j(2026)p │ │ │ │ -2662 100 V 1158 w Fp(23)307 390 y Fn(\210)42 b Fo(alphaReal)24 │ │ │ │ +TeXDict begin 23 22 bop 83 100 1137 4 v 1303 100 a Fo(InpMtx)25 │ │ │ │ +b Fj(:)37 b Fm(DRAFT)110 b Fj(Jan)n(uary)26 b(10,)g(2026)p │ │ │ │ +2682 100 V 1137 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 │ │ │ │ @@ -8305,18 +8311,18 @@ │ │ │ │ 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 1158 4 v 1323 100 a Fo(InpMtx)26 │ │ │ │ -b Fj(:)36 b Fm(DRAFT)111 b Fj(Jan)n(uary)25 b(6,)j(2026)p │ │ │ │ -2662 100 V 1158 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 │ │ │ │ +TeXDict begin 25 24 bop 83 100 1137 4 v 1303 100 a Fo(InpMtx)25 │ │ │ │ +b Fj(:)37 b Fm(DRAFT)110 b Fj(Jan)n(uary)26 b(10,)g(2026)p │ │ │ │ +2682 100 V 1137 w Fp(25)0 390 y Fo(InpMtx)p 269 390 27 │ │ │ │ +4 v 29 w(supportSymH\(\))p Fp(,)c(9)0 490 y Fo(InpMtx)p │ │ │ │ 269 490 V 29 w(sym)p 430 490 V 30 w(gmmm\(\))p Fp(,)j(11)0 │ │ │ │ 589 y Fo(InpMtx)p 269 589 V 29 w(sym)p 430 589 V 30 w(gmvm\(\))p │ │ │ │ Fp(,)g(11)0 689 y Fo(InpMtx)p 269 689 V 29 w(sym)p 430 │ │ │ │ 689 V 30 w(mmm\(\))p Fp(,)h(10)0 789 y Fo(InpMtx)p 269 │ │ │ │ 789 V 29 w(vecids\(\))p Fp(,)e(6)0 888 y Fo(InpMtx)p │ │ │ │ 269 888 V 29 w(vector\(\))p Fp(,)g(6)0 988 y Fo(InpMtx)p │ │ │ │ 269 988 V 29 w(writeForHumanEye)o(\(\))o Fp(,)e(15)0 │ │ │ │ ├── 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 January 6, 2026 │ │ │ │ │ + 2 InpMtx : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 3 │ │ │ │ │ + InpMtx : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 4 InpMtx : DRAFT January 10, 2026 │ │ │ │ │ • 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 January 6, 2026 5 │ │ │ │ │ + InpMtx : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 6 InpMtx : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 7 │ │ │ │ │ + InpMtx : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 8 InpMtx : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 9 │ │ │ │ │ + InpMtx : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 10 InpMtx : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 11 │ │ │ │ │ + InpMtx : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 12 InpMtx : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 13 │ │ │ │ │ + InpMtx : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 14 InpMtx : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 15 │ │ │ │ │ + InpMtx : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 16 InpMtx : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 17 │ │ │ │ │ + InpMtx : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 18 InpMtx : DRAFT January 10, 2026 │ │ │ │ │ • 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 January 6, 2026 19 │ │ │ │ │ + InpMtx : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 20 InpMtx : DRAFT January 10, 2026 │ │ │ │ │ – 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 January 6, 2026 21 │ │ │ │ │ + InpMtx : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 22 InpMtx : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 23 │ │ │ │ │ + InpMtx : DRAFT January 10, 2026 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 January 6, 2026 25 │ │ │ │ │ + InpMtx : DRAFT January 10, 2026 25 │ │ │ │ │ InpMtx supportSymH(), 9 │ │ │ │ │ InpMtx sym gmmm(), 11 │ │ │ │ │ InpMtx sym gmvm(), 11 │ │ │ │ │ InpMtx sym mmm(), 10 │ │ │ │ │ InpMtx vecids(), 6 │ │ │ │ │ InpMtx vector(), 6 │ │ │ │ │ InpMtx writeForHumanEye(), 15 │ │ ├── ./usr/share/doc/spooles-doc/LinSol.ps.gz │ │ │ ├── LinSol.ps │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ %%EndComments │ │ │ │ %%BeginDefaults │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ %%EndDefaults │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o LinSol.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2026.01.06:2034 │ │ │ │ +%DVIPSSource: TeX output 2026.01.10:0513 │ │ │ │ %%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 │ │ │ │ @@ -2990,14 +2990,15 @@ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ /UnderlineThickness 50 def │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ +dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ dup 54 /six put │ │ │ │ dup 58 /colon put │ │ │ │ dup 74 /J put │ │ │ │ dup 97 /a put │ │ │ │ dup 110 /n put │ │ │ │ dup 114 /r put │ │ │ │ @@ -3187,79 +3188,84 @@ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB88440048702D1F │ │ │ │ -77994EE04EC3B4531D6E1888C86A8F0DA6CF1F056F16AB0DD76C862830F89DA4 │ │ │ │ -28923B3AA543E0D6E41D3BD283E600BC11F889315EE92C675C109C81065ED1BC │ │ │ │ -82A5583D1B723D50051B0557A367887F5B263014C6E77288B4883C50889473D3 │ │ │ │ -3787BAD4BEB88BD1353AFA5B73E61814819537E7FF09F53EF94792BB3DD36ED0 │ │ │ │ -002D0E7A6CDAB85A9C17AF5664BCB5A71663B861880F3ECCABC8E7A2FC81A4CC │ │ │ │ -AE7A87503FDC1CE0077BA51ECC7B43B60793FED8E9AAD5BBD03ADD6183DCD26D │ │ │ │ -24A74163611C05562437644EF9B8889FD4F9D311911204FEFD35237486F2D2D0 │ │ │ │ -B6783A03BF12EA6D19D6D0F87E4D08515F12F9CBF1961CAA71E0D69FE3C4C4D2 │ │ │ │ -7C7FB64ED24F8684C8F00C2BEDEA53EA390CDC0B5BEBD7DD982580B2EA1F1F89 │ │ │ │ -CFED5916630DC2BA32BB9180277E1ABC339B3B7DE086717BD93F7FF3681BA5B3 │ │ │ │ -FCF671C4B293C2DE4A322F0AA3323A4934444C69F23EF90120B8755482757759 │ │ │ │ -C457A435FB8BB4922BD92C5F3D9555D978275C510183E29DFF2FCE4ABBFC18DE │ │ │ │ -76CAD3B486BA12047DD808CD4D521A0FD368E4AE79DE262630983A5D6F0B679D │ │ │ │ -2F005306393C520E1B6987302D029939D94B0178DB06211C7F3B123A41E6E7BA │ │ │ │ -87164737110707A3ED3983895F3FBC815EF370F54C808ED93D910937BCA3D8AF │ │ │ │ -7CBF80DC180CDA54059DB76710B4FCD4139D5B7DA7DB1A0D0AF86AD2453D3691 │ │ │ │ -0BA5BAD40FF28BB4235FCD40FC87C2B888E67928D9B0ACA5692149373DBB93BF │ │ │ │ -6520DDD36A9BFE4D415CA67A5E04F1D48BDB28C69676273ED842CF7980E8E17C │ │ │ │ -B88563F407E340AFAE8F51AABCF8A39521BCEE1EC8396D75E124B24B4675909F │ │ │ │ -E246F87DA08584A3173AEFF153ECDF610543FA7474D125A31ADD6285A49222B5 │ │ │ │ -177066EA395BFA4B1114C7FCF7712DA772A21C99E64F4E1181E69CAF98137FA2 │ │ │ │ -76CF74F682B8CD7BA6EEA79B70FA8A76809634517F8415B6F21A5A7D6099B5E8 │ │ │ │ -EAB356BBC4FB68C72B8C61DDCE8EAB1A53B9D6BAD78584B307EFF57CEAE74884 │ │ │ │ -35987BF89E9E60E962D22FA5612F2DB5EB840499B7CC11A34BA5DEE30D277540 │ │ │ │ -39B8211D69B448ADE95B723F8369A631DE6DD75703AFD7485FB7FFF41A60CBE4 │ │ │ │ -813B8FEA120662355773830EF85015E7FFD609B2CEE52CB5FFE9C35B6BEEE4A4 │ │ │ │ -A66719E31CE1523FDD7771FB1E881A32A7DB7D92C2326DF4B93241C14ABFCCD6 │ │ │ │ -8E5BCAC61E800E6B1B4687ADA4CBF41EC0AFC26D021D1772CBDCD0516DF5EBE1 │ │ │ │ -37FD2AC5ABB8D774B5735940F1F6866D044FD8CE74444FAA5D0202C11E39CC10 │ │ │ │ -213731F41F704450E1D0565013BF22188442CE0FC256190A9F92F0C802AA2660 │ │ │ │ -614AFE9E9C82F8CD2E6035EEF84E5F16CBB690AC819B4B910EA8E81106F0ACE5 │ │ │ │ -CDFE77DAF69E4AFE72C43145A3ABCC40B6C5297487083F738C86422277AC2267 │ │ │ │ -51759F1B7F129E87DE16433B664AD0FB6D30424A11C70B52B591352BF653C8B0 │ │ │ │ -0840C224FBFEAA996A6BE1D69414DD778C2EF56A63B64D59BA412EC3E4000831 │ │ │ │ -73361FB9813F9A7C74BA3A50D331B07B61492E5D75F0861B530587269B3ADC90 │ │ │ │ -EA1DF586AC4BC57C3230893EFE953A6E76950ABA895FAC711D3BD330ABC6846A │ │ │ │ -C91F6ABF3410B913DFE5C8266020CEE5C7A9EDA2E7D9BCA797DC486443C7BA7C │ │ │ │ -7E03439A40927FA3251B6D417E5653E7799E9D6F04149C34096E2CA9B1F9B1EC │ │ │ │ -38958A2521B4A657A8B9F16E1FD66C7E345A10D7AA0241559503D214AC6507A4 │ │ │ │ -CBDE8617AA7ED136577734428594487F3565BF45FA196375759E2FE23C26EC8A │ │ │ │ -3310A36917A5E2F260EAB31030F8E570303D36B833626938F56939849DFA1F3F │ │ │ │ -66D0A317BB6364427F1512AAB380B555611C76345C02C3A6FBF78590331D5ECA │ │ │ │ -029DEFB722F6AB05327C2A31AB7BD6ED0F0386E6F45C1278048D22B90B074CCB │ │ │ │ -2BBEBCC1927C97EC532E651CAF0058AFE8FC08F00F0216D5DD9830C294FF76DA │ │ │ │ -426A073B3A3AEEFBDEE71C5182186311607ECDBD1F1AF4C5E79748CD01445C8D │ │ │ │ -25DD49490C8A6810065908222C8D0AC9F83AFBEE7115023E2D2615A170A5D40A │ │ │ │ -AD49BDF59A59187B6434F83E68EED22EF4EFDBADED6F1559AC779E0377FE7375 │ │ │ │ -D7060584FE74B1859D0FD98772253A712B17FFBB467840C484F5EF82C5677ADB │ │ │ │ -EDF159A456A526B8B9F6E8FC7608DFD47B0F09E26118F79CBE53B6C4E32BACAB │ │ │ │ -D62AFD4AA527CC4B587BB41A17A9BCE106A8C592BC9B73422B712C466C284A17 │ │ │ │ -E8D0C1E01D43C739FB1C083AD2714F78AC785B0C09AA7E67417A73510E00F2FE │ │ │ │ -E3D3EBF626A2F3A20A386E3F98D1285F4A2A332FC609CD191F01F128627B3505 │ │ │ │ -0AC2387DC0AD1B950490EBB5045F22BEC54955402CE2D267B6754E7C32BE84E8 │ │ │ │ -E6B63E3D3EAEE979442D167AEF69C27B22A8E887A2510C3A168D95D285CF7515 │ │ │ │ -011C921679B2F386575826A3F2071D015EEB78F02A4F94D4E5F07873623200F8 │ │ │ │ -7DF95BA0DC6B6D31DECC925BEA1E6A7C52FE685800EC33CBAE830F1AE5454DFA │ │ │ │ -913B8F457D7E2D3DFF019869E3301EEEC64A38295DE6B588E776922B32362382 │ │ │ │ -D1CF3D058613C8A96E6994D3EC23E8B71EC6E718383B20BB6C22DB6F93FA559F │ │ │ │ -3449CA84EB33B25C8BE0DFD1C29DC4FBD7AFBDC96C12162CAAB2C5E354B0FB10 │ │ │ │ -4BF8CC3610875ABD5111D09F2F847822118972214EDEB9EE34BAFE45E7AC15C5 │ │ │ │ -CA63EC4A3CEEA505A5EDD88A59BB67C71C3E026DFFE177F99BC69E6635545D03 │ │ │ │ -77A634F98230EF64381EC67CA519D4B9770EFA844789E21970F89D5FFC5DEAA8 │ │ │ │ -DC008EBA09306967ED090FF91B002FA6120C2B461A87AA32EFB003C5578D8EEF │ │ │ │ - │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ +AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ +E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ +46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ +FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ +389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ +7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ +2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ +C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ +B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ +AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ +E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ +F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ +0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ +2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ +29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ +CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ +6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ +5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ +36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0DD96AB602D004DCFE000A0 │ │ │ │ +ABE41BAB8AB7D50BD32BFD6F1AA3B60B09B9BE4E273EDD2DDCB21A98A760D17D │ │ │ │ +0A5C9303AFE63CF80A93E60C72A0576FAADEECBE2DE91892D210EB0AD1889C04 │ │ │ │ +C7530652584E775B4ED19CFB4B8DBCCC57A9FA9E4DDC8A1E5A1D3BE9E93407A6 │ │ │ │ +2C237ACE27F4EDA330EE952EDCBE91683AA98A29197735006666C96A2CE7C787 │ │ │ │ +BBA5A57C4DBF6FAA5B38AF226B5D9A65FAD84650AC0C3DB29C30602699F81E01 │ │ │ │ +0BAF8F1CE44A03C680121B77A1703C638187675D6C22C49F9902475E6CE9C732 │ │ │ │ +48ED028CC92EA542EF189CC9CA1C384E3387793057615D0A2BF040CC90B275B9 │ │ │ │ +F70A5310874DC2E0A360373E7BCAC88250FBC8989C7D18DA8274C06F02FCF31C │ │ │ │ +2B3868CBAF083DAC2FB159DE368261842DB7C9EA1A86B17617C861A48FBA8FF9 │ │ │ │ +D184CB026F4A418C0955347612F94C039B1536A76CB182A591DD7C02D509CF16 │ │ │ │ +8B9E46502ABF5DE31F5DFBD19C7417A2AF7AF13F0D5FF837C94CE56F07B96337 │ │ │ │ +0ED215252346FAEB54B5F3ABE29709B7ECB9FBD23A4AD397E6ABA6938F1BBF33 │ │ │ │ +1D5460D9414F0B8725DA832744525C13E3FD9C8DB33FBEE12F9C4969988402C8 │ │ │ │ +96AF916364CC2DF17EDBA622FC0A5D0013418E29F912FFA06F8D7E31ECAB0B08 │ │ │ │ +C4D2D8EE537CC768FC9038DD6D86D33642C6E812E941F157FC6917AF19C2B99A │ │ │ │ +5BF10B9A7ECF711BBB6F33C8C3DAD778153122593F36ABDDC0E97A602B045DE6 │ │ │ │ +19BD82D877DDA960AB11EF48C7F75A28D0D731D4A5DBC98283087267CD1A470D │ │ │ │ +537E949DA5EECF097B099547995BE066A941CED683B5748962AD2B02C21636C0 │ │ │ │ +2EAFA33CA0CB3BF8A95703F015A210D918865B9BEA2890DCFB68BC3719C305EC │ │ │ │ +315EC8727BF9A93632AB9E3090B100C022EE1396CD329B37547F26A7DCE52BD7 │ │ │ │ +F91B7388DEC34F4A0C6D46CD7CA6ACC00C5C4C71E47C6AD96496B3CBF531F342 │ │ │ │ +A740EE6B99BD70AD490DFA700772A0697EC6561CE88A0113E4DC3B21F372D810 │ │ │ │ +DFF2C3F6EDF3E917BF2664EEFC9AD292DD6CC36853CF936018D43FDB28D5B001 │ │ │ │ +7D1C805F958F13FD221377ABDD69D102E8CC1DAB2E011EE16CF6DB9D195BA702 │ │ │ │ +5A8738FABF989B0351282D0E5121182DFC52169782A5F3DD5D820411BEF909DE │ │ │ │ +04D963E6FDA76F88508C4E91DDAAA1748F396A1D380D8CA429673AF27C164434 │ │ │ │ +771781B39565D3EE50F3CF03EF12908B13A6C11C9AB7631B32125828B13050BA │ │ │ │ +041A93B97AC32D4A1E28C5FA98CDEE998B5F97823D6291D01E3611A16854F1FE │ │ │ │ +69B9D6D2AE3E56D012B7BC3E582FB4C23188A5E365E65EB1F804A706AF73A2F8 │ │ │ │ +9804808EF71F0982B14133BF9A27D6F2E719BDB751022B1B052722933948904E │ │ │ │ +3582E363478DCDA115205A0FDE39DF71FEAEEB104419C35A6B0678C19616C6D9 │ │ │ │ +A892DC2F4257069AF096C80C099CD13024DF3995F28C694E00D1F08B43D4450C │ │ │ │ +D18F5C925CFD2D124E74FC64BBAA0DE32A79E4A4507B5B5DD834C67160CDA110 │ │ │ │ +EF0061DD27E8864F4250A92BBEFD75C784BB98F4FA789A8236C2A21E4E61ABD0 │ │ │ │ +C6B4D13B3C31AC8E55FA34BEC7C308C61FB0280382EC6AFD63D959678D42D2B3 │ │ │ │ +4134F6236A0808D9302B4E3C6F81FC6973B4833602750CCB5DE36AEA23ED6BD4 │ │ │ │ +5B72DF0DD7B81C871CAA6EC190748CD8C4B998D576E5D340ACAC0617DDBE461C │ │ │ │ +8E82E809D11A01D265D039F4315066832E27E08A6F067E129E45FBF533F761BB │ │ │ │ +EC3C071209BECE7D14D3184B2E6BFD65717A5A7C08F3776B20C513649488C1CF │ │ │ │ +03333805B249D1034FB0AE2D7D2A23324EE27AEDB68F8E329A8052FE58D7C0D9 │ │ │ │ +A40A0CDC79F2085C4F39A7DFDB625C8F071E2A32CF6215DD3E060A9BABF7A3AA │ │ │ │ +C57DA0C0571C5D6EEAA975D1BB9C99F8EA4958360E43E8C60080B03DC4435550 │ │ │ │ +E6048DDD35DF3E5DA69669F266FFD7B44649A68025270DC84258E329F6E6907C │ │ │ │ +BCFF900D715D0C7EC43C5E7180CAD6427BA4FD41AAD6531A5C06B0EC26DDA71F │ │ │ │ +4A9DA50DE919E79226F6DDF7C1BA478936AA86CEAD93072CC2960E98C45A1A0C │ │ │ │ +60CF8A26E4278AB4F9E28FA6532648196CC455607D6BCD00F60675DE8CC02C8C │ │ │ │ +9BE5D5B714731814D5B008EE236563D77AC6895E0158877C95797E07C02AFEBE │ │ │ │ +CC9FE97D5E103F7DB0A834E9A7A75893EC66340B0E4C6F0EEDEF43415BF9FCF4 │ │ │ │ +47340CBEA4DCFBA0D028EB2149FFBBDB3322AE5F6FD20242526EDC55E476D983 │ │ │ │ +DC │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -6535,14 +6541,15 @@ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ /UnderlineThickness 50 def │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ +dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ dup 54 /six put │ │ │ │ dup 65 /A put │ │ │ │ dup 66 /B put │ │ │ │ dup 67 /C put │ │ │ │ dup 71 /G put │ │ │ │ dup 74 /J put │ │ │ │ @@ -6745,184 +6752,189 @@ │ │ │ │ 82032FBD2FCB6E403D34B85ED4053A8CB619BDD4DE001F4C3007B1F317579651 │ │ │ │ E6D6662189CC2D95AB85D7473F65C5D7B4AC63B0FE928F3400035D5A9D443D0D │ │ │ │ F3532B99F3AC26CB25EA3CD64C341159061E02EFBC7C033C05CD919BBD827A6A │ │ │ │ BFCF3BD739E32E7FE909AEE068D50FAC33605FFF98C7D0115FB860178FD03DB9 │ │ │ │ 7985B78E0AC21F2EA065FA841F5928FB85163B2E2D8F850DC7EE313912C45C28 │ │ │ │ 2783F6762C67882EFEDDC7E7567F91C16B16FD8D5A1ABF35B5586307701B91AD │ │ │ │ 54984598F2AD46FEE3D68A2731BEAA754C8E730FE0E84952EF77930E4118F8D7 │ │ │ │ -2F3AD7547D3E54167FB0B315756753DC0DF935CC3D1CBB93A9A575EBF5BBB34F │ │ │ │ -2CBD38692849D484C11BB5CF75F095251A87F37EC4727933F21C3932EEE24157 │ │ │ │ -6C7AFD8361708C885FA63C37FCEC2057BBC47FBA727F94569921D2F4B8F0DB6A │ │ │ │ -2E398A672F4122E3B1E3B4EE28D0AB51662DAA00AC11C2A9FED18429ACED7465 │ │ │ │ -4F427E7965A7CAE7FDBE67EAAE97D91A082303BCADE1B1361D66DCB0CB8BFC7E │ │ │ │ -107366EB90AE246B2C8528DDBA2E621C4382FD8516E071B813A5BDE514EE30D4 │ │ │ │ -C647C8877BAD1BFDF9D6068AC5537C48EDC2B9D1BA2E90D4FC2D8B2B28547E0F │ │ │ │ -0CA3F834903BD3E34D8D041778BA8D03914A0FAD861C76BE8DADC6F2409E58ED │ │ │ │ -F00A13ED0D7A32B44DDD2E55068F610132BD988276F1B9FC6D87C0895E6F3F11 │ │ │ │ -470BCB2863BB76B4A2DEF9A4B0E84D2141C43C205C777F8AB1AD08D738B0B5DB │ │ │ │ -677A0E889A98A0FA33D9C380D1B5D3DEEF9B3697B1D207633BE95C3ED360929A │ │ │ │ -233CD0AB73CC2A8674AA86DE3E9E75781252B59E4C8A69D91A88CBCDAD3BA46E │ │ │ │ -F66CBE9CADB844A7A817BD4878D6B0259A579E7362101052F796A3E4572764C9 │ │ │ │ -EA7FFD253DAAF4365F588B5E15836E9A78C1D3F69B29F53BC5E34A57318E3627 │ │ │ │ -4644E0294B6CE43312A3E1C75B675B1E22F10D2C5E89DB651D44FE76DBF369CF │ │ │ │ -3544BAC683FF16549634424B8F551B112D6FB792E65627E27C56AE122B8FE839 │ │ │ │ -375840CA2EFC914866D9CD07EE19E2FC651C474462711C43E0F8AAA7503119F6 │ │ │ │ -1BFF361FF976E2145F3A14CBC4D390F8BACBA56CBB9EB07EFAB262AEF4AB9621 │ │ │ │ -510D6DA7CE40290E19938EE32C88536F949847F5A398EC3A662A92F1935D034C │ │ │ │ -9C89010B2FA2A776B0ECBBD6F77E6F952B7920217E449FE64524A2D649D99A40 │ │ │ │ -31F94C678124D666B3BBFC546AEB68FDE22E4875E0F88D4AFD0C8A6D4D1E4CFE │ │ │ │ -1CABE5CA8DED75C125AB7E7E3B4A57904D23066C5A4F82B440D0E71F402FB268 │ │ │ │ -14A2AF4EA07E8EB2936DFF232DCA1EEFB0B3D4D5F68523345F46209D31345C4E │ │ │ │ -536ED608BE3B166D98ED633565646A86524638FF69D28DDD1F61C3342434E8B9 │ │ │ │ -EF5AF5F40824DF44B7A47A7DEAA145125B467948AB5C740E2BA91DAE9C434E87 │ │ │ │ -2D1169249AAF8276948E5D0A856598645C762FA310463152AAC70572078151D0 │ │ │ │ -3B2B7BB620B225ADEF48C1AC0B7192DEEFEB95425A8F5A0CDA76A54981086032 │ │ │ │ -F9FCF7E09892C1A42CC6312CECCF252BF39D8711F6AB550BB04D4EE1098BEB44 │ │ │ │ -BFCFBDD0A84FF2366F12DC161368E7D60E41A574E9BA09EF37CEC355AEC78A7D │ │ │ │ -BBC4C92A022BB3ED4F3F87FC5BFEFCF8A95A8F3B344B5A480AC71C23F5977864 │ │ │ │ -8F260F1BF460D5C8A68C1C595A1354D61A1A5CE8497B8005FDBED26FF77942D3 │ │ │ │ -10C5261E5EB478FBDE70F7834406EE27270C69A1B5B0442BDB988DEEADF6A2DD │ │ │ │ -24D2EDBE759E552DA83525C554979F8D55F627C4C04DBD8C583404D6A0D3F314 │ │ │ │ -54EEDC0479BF8D607723CA4D5C8AD9F339CFA855956A48CEBFDEC0606FCFD7FE │ │ │ │ -EDC3CFFC1D4AEE0547422DFBEA839486DBA3E35773B0F34E3D95DFA728D13608 │ │ │ │ -0331C572C106B48D602944235D4C4711BE0A7EF298B1A182069BED9152CF7C52 │ │ │ │ -B98E7D6829F2DC4906B1A90BE36015E2DE4B60F449FAD800D2E191E12E40F065 │ │ │ │ -737C33C6E6EA4DC74D7199D6416DDA7C6D96CFCA244BDBA515AC2B4DB2CC1C21 │ │ │ │ -2E6670275E8EE73C8165B2EA3376D304F309B26B742ECDD241C586BD4F0703FC │ │ │ │ -179748DC08F29900EB18F0150833A328C41E7FD1AF288990EBEC9FC8A21A056D │ │ │ │ -8CCE9560D099C65A3244E04B933026B68877CB200002E7734DEEF5DE58FDEF18 │ │ │ │ -84D23E1FA011021D3DB7197AD0559EE28A516BF949CA6F79A700344FA066B1A4 │ │ │ │ -A2B8830CB006F51EC6E2D985AF205C7ECDC5171E5B87B896040C3798E2D544C5 │ │ │ │ -E1B1593D6FF106EB07D7D3F5DEC387F014B8CB72297E7A5399128AB7FBB66947 │ │ │ │ -1B448F82910F53A1C70E3BAA72227DB1EEE6CE86378ACC4B3583CE08526A71B2 │ │ │ │ -9DDB4C55984F9A3628152511DF4BA1107CB4471A61CDC47740299E2B2539FE20 │ │ │ │ -B03EE7B7C6D5CC3BD7A119891EEF632A07C2BAE2E23B7406D798D1E5D908B387 │ │ │ │ -663A07AD7715056E59430B2E5E96D606E48B967253105BB2180F619DA86650D8 │ │ │ │ -DAB426C2C9C4BB96AA8AA2D506CAB826F8197259F14CB3E1290C72EEDA6056FD │ │ │ │ -7123443C59CCB6C6D2EA7C39713A135DEE8C7197A0AFBDA6251379A9F5B5880A │ │ │ │ -7A1689336FD0669710E4FD56C5914CC7C6D910958F11ECCB3A0826CCF3BB196E │ │ │ │ -A353773FB1FBA5E6616378CE76958F20FD8009E090DC222B771076E5134EB959 │ │ │ │ -2A8C54800AEC43D8E8C70ABF8078C28635828D6AB6B0B54DB4A51C150212AB6E │ │ │ │ -3851F6665E976315F877E98A333C447D784F71D66702FA52AAA542765ACA8B14 │ │ │ │ -3C6AEA980873F0626A13EE1863F6A5D683B1652727BEA4EF3994E85B0BC47190 │ │ │ │ -3F224307EF4B0E350B47085B95385AC00745B0DA4E2C57F9E10E0C8525927A7C │ │ │ │ -4577B0F1E4557AEC6814249B660F30BB806AA04AB5F70457904CBF90CE81ADFC │ │ │ │ -D61FCB59E7AA1C109983F37136C44ABE00B09462D41074AA01FF6865182DCC21 │ │ │ │ -01EDC2956A0477CC726A663674E527529F4CC0B5267C21E2BB5760EDD52FC7AF │ │ │ │ -62FF7367C1FA05D3897664AE6CA39280D998779DDF87DAB08145067F7D7EC1BD │ │ │ │ -F96F9E771D05452397508396A1D275C054A851A7E5A99D6C6A76B7E4D55B89C9 │ │ │ │ -89D0E6E5F9E47E745F1478DF48655413E9083CB2AD8FE58B198E34C1B70CD579 │ │ │ │ -F9BF74CB625D79E8F056ED193C9831812544CD41124F098591AF95E304E447C4 │ │ │ │ -52390DBEDF8EBB76B89BB9822866FD05AD176B14410412333373DE66131D6005 │ │ │ │ -426FA0486680201ECEA52F5EB079D88EC7392A300956DFC2555179FE9D66B254 │ │ │ │ -C2C13D25210CB607786917BF04F0A27315B652F276EC96A846448E0AB2A80DAE │ │ │ │ -A6996EE8CC629632C0F212313A658F09C3C3E4DA7C2797F471F40CC7C4D135AF │ │ │ │ -C291552CCDC5EEFD3EEB6B41297C9F2862CA211ADACC403C153B9F4C7423F58D │ │ │ │ -771229C2A3A42D78943A1E75489CBE2FD7A94B719E34ED221F9F71B1D53C7B1D │ │ │ │ -B2AB75287BCE2C67CFC91337BEA5C04A41823E54197869C547D537926B554AE8 │ │ │ │ -DED4A87518B14004F8D639DB7DD7EE82D5781A78A77976ED5B20F249F7A2BAFA │ │ │ │ -71B1DCE0F71CB8FD05499883F92B0BC24B3D2A778F34CB291696553326998BF4 │ │ │ │ -0CB40B58028B501EBC3B8F5A1DE8F526EF89DE23A7EB50C1D381324A75ADDA44 │ │ │ │ -515FD11FFB467D2FD9AD9D69CD96CEB82DB4F1504590C435635685D47EE9EB52 │ │ │ │ -72A547B7B86491F1B511124D5E695176F97D8C2B92F9B7EC048CED2C7FCF9255 │ │ │ │ -BA3104F77ABBE7B28F4306C50FA263657031F84198D66C9A849DE2F49D7A5566 │ │ │ │ -D49C0F5D47865C66361724894CB2C8DFCD5F818100DD13BB18D9F80CD06135BE │ │ │ │ -C371D6339F3DA8BBE26286CB6BC7604D8438860DD2B10269B4BD359EB1B37C79 │ │ │ │ -5891D6FB7DB959F94E2634D19FA8274E0A3A3447A1048C0929CD872925980196 │ │ │ │ -229E9CF24E845B5814744B0709FB3B87DF0EDB0A11654534DA7415E41498E77D │ │ │ │ -A2D296938536395D69CB1841D9001B17F789290510AD8B8289D059C3FE4613A2 │ │ │ │ -5C7C64612F79738F2836B110324AD147CF6B83540F1C9E9C36FF0F666E96B0F3 │ │ │ │ -52C1EF7BECDC70B433B74131B56B4EA76A50FC94AB06CC05F6BEFFCE7C866AD7 │ │ │ │ -466589E9741F1BF4934F07BFF5E026A0AC9B6A7B37D3949E7136DAF6F1B5DE1B │ │ │ │ -FF31C31A5BC9C1C454D109D57EDDFDF08D45AE6875F13449C2093A0242450C6E │ │ │ │ -BDF8F5CB6741CA7C1ACE0133E4D27A17646EC0A4374A84F6848A3E88161FA282 │ │ │ │ -6A3AD33A050C1CE3578090DD8410EF57BB08B69D71B373461B8ECE9CA45529AB │ │ │ │ -5B9B5B5403EA64DD37507620E7CA6469AC88A6AFE51F0D197CFA0DEFFC8A7C93 │ │ │ │ -E24AA8E7808B24DF34F7CB2A43A3DE6EDCE0AF720714A3E44490A82E01D74D5C │ │ │ │ -46D6F4615104DD79BE7DDDC0D1830DC2D8F49614C3998A9AADE3497A6E860396 │ │ │ │ -951CB6683A585306B4E6EAF5A5BC7837814C5820CEC121E1FE6A5F61E6FF8A12 │ │ │ │ -FF49B7AAB3F80F153F327FB65540E870497A2362A2F28AA2AD35E20007BA6ABB │ │ │ │ -1064489711FFE2D9B9316A767CAA4356DDC32898271135F6002981C0A12606F3 │ │ │ │ -0CEFCF91DB57622EB8F424B0828BCADAA35A0E3F1491BD6FA84CC36B14621493 │ │ │ │ -D49B37FF5B61195F4A82131FD337806BFA7C162FC88AE4815BD386FADF13E4B9 │ │ │ │ -13A58937AB9B71869C42573BA04619F6F4087509A03FF28D58D24532BA959CD0 │ │ │ │ -EE5F4E4CBCF62D40EB4E0689CE5221A57C89ED6AE84C913E727490716882466D │ │ │ │ -FA7D07C0766227CB3AA162EB2F299AD083258EDCABD27923D680876F15DC8F1F │ │ │ │ -E2220DE327DF2504283B3C1A87E608E706BECD03223DE50BC22B5984729C6AA2 │ │ │ │ -C24BFAD4DDF14D9B50EC862C3FED3A98B931BB9A436C63933C37647E87482E79 │ │ │ │ -FA8ACE3AFA558BBEF71C2FE0A3E1CC1261D05CFCD7D840451C8ECCEAF04F44CD │ │ │ │ -C59F73643774282451FA9E0E1B5A406A4188AF16243A984C1E75292DBA7816B4 │ │ │ │ -635D087E0B684B4922D58B3CFD4688A489A19869155FBB8A22D8C77131C04223 │ │ │ │ -005EA8F7D2EA35507390004FF40C712DE7AC819E7012803351BA7BD5EBB218A1 │ │ │ │ -CF7CBF8082E4C6B566C61B2C8EE7EF23633FE519E8E56871CF1394B897A19695 │ │ │ │ -25825A6E7F57726C43BCFDE026F7DFFEA95FA20A22271CA9A7E10B03D585F6F0 │ │ │ │ -657480B4BC25BF3BEBFDD6A4405A8BDF41114FB6F1A879DCEDEB2EA64412BAA3 │ │ │ │ -D14DE9BB73AF0AE804B7105A40D1A5E509440765BE0230EFB00F354C1AA7DF46 │ │ │ │ -1206A8CFFC89101E72E450FC5ABA53DF96F0C79A5CD52FAED5A1791EA12F4F9E │ │ │ │ -342E55FA18ECA3E3E36089266CDEE360ED15A2D6494C3D87505B4AEDE163A3B7 │ │ │ │ -774554A3BD9D4DD435A210BD4D0020A5AEE1D38151D51CE06C6101057377E946 │ │ │ │ -3F7C3206BF85B9025704732D2B7E4FA697803CB85E08DBFD337628361AAF7E9C │ │ │ │ -9B33789B39B4C21205DB6983D1B684CF1D2138AD79D4198E5504CA086E9FB80C │ │ │ │ -2D5E967F6D03A3A24B1E1EC320C136F97A3E9A7370EAE6BDAF4CACCC7887C4A6 │ │ │ │ -983E15B9783844BA36C3AF89A0CE32849DC7EFA06BADAFF878498371BAEDB7B8 │ │ │ │ -87087852853B2793280F303DC435F4F966687A4D93DD6D835C9134711B161D3D │ │ │ │ -F23A260DCD2EB9DB51A1B47F75B3840A98C031275FB28C5632B2DF7546169E15 │ │ │ │ -66084B0AD77EFCDE650765358A12D24F09879B78DBA73012E8B3FBE79DDDEA1F │ │ │ │ -E01FE3DD160437D119DD2DDF874F9FA260595B5A1D1B1866AAA561DFE5B398F2 │ │ │ │ -7D23475D8291A4DBE9474B32BED0B8A6A1831EC2E85E3B17C832556C5E6B1267 │ │ │ │ -D15065A5510165F2623DA18F1081A87E2085057F79DFBEBB328CEB8026CA55BA │ │ │ │ -9DD8766B79F49A691B392A250489C738F9C3BA6E6CD5AA138BB41464057B38BD │ │ │ │ -97A8430D84F332FBD533DF4ABD09354DAA2C68C89806DFA1B99C9F13C04D1AFB │ │ │ │ -2F5399007AB59A9E648294C996F8C0D7367488839939A9B34A4E2BF4FAB84A77 │ │ │ │ -C0FE7757D7173B043AA52B0418B85036EE29BB192898C61A61E27A8E07D326F7 │ │ │ │ -796A9BC5DBE0CEB2D6CD76F663E606C8969F998A45AD9885472587284CAEEACA │ │ │ │ -DCC2BD2D9AC507EEC78FA43C9B59212EE8F6D237A75DDB967193386288B7DED7 │ │ │ │ -18056EEA302FC3D92E53079289A400704DFEAA9FC931E35AA1C530165881C4D7 │ │ │ │ -A51216A9F13662EFF6767F37DE7480EB79C5DA66ED302AE8AD27C05832D48C2B │ │ │ │ -9B43E948A275CFB0A76BEF7ADE84904EF7AA87D9E855EFB476078CBC9DD0DE1A │ │ │ │ -F72A8B71A21ADC098A4AA0F9F52789CDF25A9552EFB2DE33DAEF23855C47CE7E │ │ │ │ -7E029E2794B434FBE367D6B5D176BEA6BBD133F387FC583F6E448F11D9AEF8DB │ │ │ │ -AB3442843A45CC44CFDA9EBE760AAD0582BB894DAA29DBE805E1BB9644757D59 │ │ │ │ -F31E9F6AFE7C462A35C66E1C0B0EC14925A96221F0971292B63BC4ED4BDE71A3 │ │ │ │ -3416C3009C27DB13AD8DD3C5F7325E8BC2977E1AF096206B78BB8F64DC84473E │ │ │ │ -5B85A435F8179905DD54214CEA2A8AB883C22DACEA6839AB4904128AF6770972 │ │ │ │ -7839350F9EA58AEF44869A65042892EB3EC4C3F1A989BB433DC5C1EBD65C1230 │ │ │ │ -1556F56D2218C3077F9B0EC30AA5021DB0B0F80AC5F9A07C750B0A5D397E17DF │ │ │ │ -4544472F3C8549F532315DB78A474E1A25C918C810E99DF899F070D7332BEAA1 │ │ │ │ -34EB5EF611CAF77032A738C3CF9E54014C6777C548379698EA10FE95C841EDCA │ │ │ │ -30E7F213DE70ED500804DC7D471DC95DD0F096D5C2C06C1D620AFE5D1DC3A39B │ │ │ │ -2607CD2D28307D3F5DE54093590C1228AB53B30174B762254F059704E3D129BC │ │ │ │ -143880BE66DA08DD83F4A5CC4F98888E50BE2963E231BFB39370F8786286623C │ │ │ │ -58FA38D478E2021FF59A27DCD2B64E23463A331552464CACA88A6F262B41E6D0 │ │ │ │ -96F8E1E52E86CFEDA363492D15CE790C6167319838A0C8AB89E4045FC3169B9D │ │ │ │ -0B36CF019A288AD8445DE9DA1D8FC5D4362FEBC2C47FE0EC2BB2E91E12A96143 │ │ │ │ -E99E553012A25A31BE3915DCF25ECFF20C2E005213489EA2B0C3A230466266EA │ │ │ │ -7A65C0A79FC5ABCBE470F18556BD787AC97DCFAB27D94B922017565C1B72B22A │ │ │ │ -046E23C0FCA9D09A1AF12E19C833A86694240233D2578A392B75DA092FF8EBA2 │ │ │ │ -0337FBA2AF3B52CF9D362C90B03CC6BC1B96C45D8041B9FB0062D1E8EF52CA1F │ │ │ │ -D06BAC1CC6AE2A0DD63FBAB5CBCCADFF6803B31E6F9A91CC6B24EAA5D76A60DA │ │ │ │ -766649C85FA0B4A9E99C805556496DD3A7A8D74C9C8715B2A6E0F763D9720D19 │ │ │ │ -96FDA5AC04E38ABA234F0E448022F8658C218867BCB39D3ED037DCC50B9AE465 │ │ │ │ -8F0870FE0B8580A1BBF7C8140E69EDE9E18CFBD103EB62E11A824C058F80156E │ │ │ │ -713AEEE9E5FD8A1B0472505862F16016BA0E1A00F3AED21650943CA010933BAB │ │ │ │ -33AE161DD0098AA9224788D9DE7108D8A1D3B163AB7BCAC6884C654FA97D548C │ │ │ │ -4E0074C5262DAEEFDCA80F7D8F3EB5599C6D0FA0F97A298CD26E5B9EF345BF35 │ │ │ │ -C17F07C4A85012175662D5362F2351D0EC6C4BFEF2CDE1A4E87308D5C0FCCB4E │ │ │ │ -5C627B95F29C1538EA8D8E1AC02560A3DD6F2570E2EFCBAF5F2A82BD582CC5A9 │ │ │ │ -826EDA11DB45337753B36B2F58ED288ED27C87C10933B9B4580C16BA9F83C61E │ │ │ │ -7E16D2DB401FE402C61645E2BF333900F02F070C6018D9DAEE172545805664E1 │ │ │ │ -1AD499F0AA05F4DDC9CC393068F0D9774E8ABDEA62B864707E45BFBB361FEE03 │ │ │ │ -83BFDDE566ECE40EE8B610DF0C00F82D0A7EDBB7027B4506B74F9D47878C0B64 │ │ │ │ -9B87AE6EFC5D93293F277348D6EE81E293118884FA682F5928FBDB3E993DCB3F │ │ │ │ -F257691B212338D8F6DE92B0951F5A6F1AF5D9B610D2B28B7BC5FF209C819005 │ │ │ │ -846960C21819EE2EA3655930244DBC590DEDAB0E5A4FB95EB2D4925CEE041ED5 │ │ │ │ -8912E6A5B7FFF00DBE96311DD71C620E58954785D1C57CC79537745C6BFA8992 │ │ │ │ -35A815711DFA21E7FEB7191F6C81F49E00438B42D0C1BF89E7A7336C235E3855 │ │ │ │ -D38CCF2C56EBD2EB57B14D4BC6447697F5B2AB2F77F23D802F6164EAA00D5D54 │ │ │ │ -431997DD66693C9D258FC089F6197919BA1EAAAEC9B75CB6E9150443A70092 │ │ │ │ +2F3AD7547C7083385FD3871F7D9D6AB0715C16A94E4064BAD18DE77DC47979ED │ │ │ │ +9ACBD9A9F110703EE62CB30935404C97B62408A2F6B8250BFC3E5BEF8D7B9424 │ │ │ │ +447E2145DFB3AA7C4D6665A67B4B1D771BE08109076CE86E7C4FF00B11C3750D │ │ │ │ +FDAD6EC03035CAE67CFE15E076F3005E035FDD653336D840574B6B04525D3FA1 │ │ │ │ +94630463A7A0A8200642283D1F10FA639022F74C4DDE6148069D909F3DA0A9D5 │ │ │ │ +93462CF91CA2CAB590EAF2310184A7866D593E5CEEE3E18CD95BADEFC0132F8A │ │ │ │ +A65AD5D3DE74250539F5CE66ECDD43CC7BB7CA82394752376DEBC71F860BE388 │ │ │ │ +EFA679BCE3CCACE2753F2D6E0E664F2EC078DCADC02A0358EB040A84E62C7334 │ │ │ │ +4205A796FE3B45DA1473F334D7B1F23B9C9FEA91AD3805BF4499CDB6790D84ED │ │ │ │ +9BC544829DC4B1ABD23F75A3823CA2B822E174659432CA5E4CBA59E6C2B1B312 │ │ │ │ +F675D5D68DAD6C1C9A9D92D41C28C8DB9532C89B689F6E1800FE946E4881A8A1 │ │ │ │ +F3923680FC9E9F1B2E0B69A5D608CB47181110FFE733E55494200F328DE47AAC │ │ │ │ +09E16DB5B2136E07E7F80C4235848AE8C2AADA5E78120A759C28583A386032ED │ │ │ │ +AC2B00BC90D22FFDAFF70DD031C649C52F0BC1444DFDC712742F52F7E59EBC9B │ │ │ │ +BE5E7CB184EA233D08DDBCB12F26FB0CEFBCDAD03FE844DE2E81B2994A0E082F │ │ │ │ +B66F9485940B6610E19624F236A567E5E4E7B6151592560305F5476DB1E8B9D9 │ │ │ │ +0C73675FED457770AB0AF092D834764757403C4AD653AAAFBB9075C7C7A3A8D6 │ │ │ │ +2D993EB4295772265D5388692E2280DD50595BDC1F2FC0D687D78B0E0DC83B0E │ │ │ │ +F0D98A3D077906829248F04E0CA4369D5CE37222D9C9821A94BAB66CCA175201 │ │ │ │ +5D12C850684EEF7301BA74ECB9C6EDAE6F420B9B0E75ABBEA339A2C923BF13F1 │ │ │ │ +76979F99C9C00473109E81480DDCA1C737C1AD55F63D4A64D71351E9BCC0F3DF │ │ │ │ +D4EDE5FCC3DEFF54384848A6C13F63F1D4E5E08BB4D8028C42398073E73613E7 │ │ │ │ +1B426B858578D94871BBC7AB60BCD42DD7562415CFCFE5AD23EDFE5D3836AF27 │ │ │ │ +6746F5F9254C56942298ADC37977FF7BC0D1ACAC5AFDC7FC475E6CB729EB7F9A │ │ │ │ +0D38C7FDB700B91C4F0E5A02E35F5FFE0065010D4CA8BD9390F0A8D54AFBDC80 │ │ │ │ +A82C92252C6EAB07FA94EAF222F975FB3E2ED16C5C0457E9390BA0C0C2700C46 │ │ │ │ +F4D1103236FC08F2458C1811EF3775C7ADCCB3760BD2A88C6F64773B7910692D │ │ │ │ +54706FD6AF31DCB5169A40E37306FD16838F71DE6B4323E334749B182E1058C6 │ │ │ │ +5751F047208A0E64FBE410A0DB6EDE6EBC1B13D3176C685C76188D0F12F9DF75 │ │ │ │ +619ABF555F97B58D8E11561B4382717D483A2906253638C6DF65D9EC7044C034 │ │ │ │ +1A10E22620EEEFB4231F0469CEB87B5FCA6BB1FFCDAF30C67CEFBD318D1E5009 │ │ │ │ +C088A9CC410555B525925D26FCA9AAA7B616F762AF5859A1473D8BFEB8B9536E │ │ │ │ +8847055B1CA09F7CD1776213486F0AC4B2E47B5BC314E38F718D0DD4E8B9B775 │ │ │ │ +664CA0EDCC2CA1E0760278A7DE4380A0745586C0E2248ACF477A806F88A1494C │ │ │ │ +BFE46C76989BAC43EC5570962FCC2F2FE333B6F9AF81E7152ADB85F7313148EB │ │ │ │ +FF0A587C1F579D408AC7D7D61E2057F130106AE79AC8F9D733AF703415587074 │ │ │ │ +7F00083BDAD1423555D8530913AC17009E5FB1EF09F776AE421EB06616C809A4 │ │ │ │ +72F029A81EB6FEAA138688229173F9C064261E921CAED54CDF3E38D4EF440E02 │ │ │ │ +50AFB3A2B673F09AF9AD2324BFF251B5ED85EFE357AC4166BB5BDA3291722854 │ │ │ │ +0400259F735798D2482F8482C0AD611C99F4D398F0C5D6FDCB8F29F00AF3678C │ │ │ │ +84F30AC5EEAE749AE5C4588AA1B9BECEB147A0E76460862B180E9A3675D079EA │ │ │ │ +FCDD7A2CB90F066C20E4F042EA4C07416D8F5C843F385E9318115F38547C7124 │ │ │ │ +7F341850D306DCC9B41441C229B1CE40C1B704A3F72038E5ACA394B72E26DC08 │ │ │ │ +B30EBB80CDDF0D04EA36DFBD7942D75CB8D15633760D0A44143FD72A5F0718E1 │ │ │ │ +1F7363596631269774581F6E95B1CA2A05BCE93D72641A4282F63DDCAB56F621 │ │ │ │ +CDFD3DDDE9C2A0401BC7F01B8E5103E4ED75368469F0A253F67707092B8000C0 │ │ │ │ +EF11DF447C3F194124FB418CD9F365EB5159B35D1A6AF96D9502DFA39EFDB504 │ │ │ │ +12131A26C60ADFCCB81E99C8AC7CE087D2286AC9853790FC9704FD632CA98331 │ │ │ │ +D1B1DDFB50176CCD909F00F6EFB2BB6137DC5B351B53087CFBDBF21BD637006A │ │ │ │ +C7AD0BCAD362846C4F8FFFF7FCA11F21BEF4157C3A983D3B0F886625E21F5153 │ │ │ │ +D1B303D132BD9039874ABE2B5456BD290B146438CFFB08DA8948E8365B101923 │ │ │ │ +199D11257E63579422F2B8253E41BBE9EA62C97EBCD9E9B6AAF63DB31114CD2A │ │ │ │ +D1E7BCE58E502EE015B065CE6651798F28EB9437E7D51A505DD91F3AE27B5BEB │ │ │ │ +707E7AB31EEEB502CCEFA5E122421B0B5FE903A711990AFF5231C2E131C3E77C │ │ │ │ +6252F82B7ADF986A2573C0868EFF27A0C572ADE6AC0BE49BACCB3D2CD3AE0A3F │ │ │ │ +A0CBB2A5E24CBD4CC6409F9F84DD110C021F81BCB2B23AF97EBA853A5A899CF6 │ │ │ │ +588B94F2E2D51455CEC7758E4120998D08881B5658CC2DA5A5148631D5CF834E │ │ │ │ +45B944B22A64242DD693260CE7B001900B4006BCD00783E576556C77DB045F6C │ │ │ │ +892B01424125919F50CE182E40D92F99225EFEA47AA7906A0309C877F6C351AF │ │ │ │ +078954EFC2BFE7A3AA2F435919650C869C182B8B459401EA1B58ECCBDD7C6B6C │ │ │ │ +E2882C26923C6D4E0C921E0538277FFF98659EF9A51DA11871B0871360FE4C24 │ │ │ │ +971FEB8F28142C80A484A1D3DC8A2EE5DD1368992BD48E14C7A4E858A4ABBE33 │ │ │ │ +3B92492A20A893E974305637D5CDB9619E9EF4240D39535A7F4CF59F828F7846 │ │ │ │ +559DA36135089DC0264236BB28D69740A8F12F19AF02D430141A31E2450EE970 │ │ │ │ +38857F185206F1B8BE86ACEC28601DEB9CD93964EB980681C675BD674B8558A3 │ │ │ │ +19597109047B6B993D4DE151FA3B1FD7795DDC231FFC84C8FFEB741676FAADA6 │ │ │ │ +F88A5EB1A69A0EEBB8750C35144B09AFC2C94505F055E74D8E84206BCC22F8C7 │ │ │ │ +DA0A23831492E4BF7457C73AF66F7B5FC4BC88A691D27601D5B269D78C9099B6 │ │ │ │ +B029B17AEBD552F551C9E3231BDA42CB1FBE86E761075E83A183AA0E344BC890 │ │ │ │ +5F41AC24705FCCFC066BA62086E58B2735278CAC6F02B77336FD1EDBE32686F5 │ │ │ │ +786A80D69177D58948B270833AC6A2540B47388328AA44CB86741D1DC5A8900F │ │ │ │ +7C83295D2D36CEC5DC6A22559F4E5C70E96CD314CCD2BB02488D61444097C3C7 │ │ │ │ +F0542AC3C8B9B48DD4728466FC4021B8E12AE3E9B131DFD16D2B8C398D5FD369 │ │ │ │ +26420698D3F2C0AF1B3EB04F8990D5D6AD54C7026C5FDF28E3B0FB151404E49A │ │ │ │ +EB382E5A3E506C682E27FF17990F3DC16EB8C64847BCC41FA15F198166CB5C65 │ │ │ │ +B79232E05273D88FCB4F3990B7CC5090A1B06EDD4DB647726E88221C4F62E587 │ │ │ │ +C2E62EF392713FAE36922B5C24E1B559415CE2F66CD731473A316A7E199AE245 │ │ │ │ +60512883326102C4BD7CD2EC76A596087C91F092B209AE356C0899B6C479E41A │ │ │ │ +C8E2D9816FDA4D97A91484AFF7CF082994E03A0ECF88FDB5CAA37E797A60C1A0 │ │ │ │ +8896F50CC9BF9C54ADA2FC07769DCD672825ED91B2BA1CC6B2C485237FDF393B │ │ │ │ +3EA07696C3B9E084C0A4880C2B9D1902C993F54964872D8DE927BCF405D4A478 │ │ │ │ +BBE5CFD38945483EC5DC57648E7852E02D7BA9CF505438D1537A184C7E2AB367 │ │ │ │ +4D45D80428923DA38C27C819D66445A33672BC870B1FDC91043217F93E80FAF4 │ │ │ │ +935C39FE681F1985F4D3267363EDD330581C59A9BE955A13D32AA202CDA11321 │ │ │ │ +307DD168E2296FA7E6564A80E335526CCF5F3D1FC2C470953EED53FC861E69BD │ │ │ │ +1FDB2C4DAEDDFF7F4DF201F3C1B2C342D6AF09A8E0D7CDF2651E8F8D9606B664 │ │ │ │ +CF78EAB29C13A6C7CEC000F6505A7C5AE9FF5817CB3CDC5054326E793926B3D3 │ │ │ │ +6EDA5983D090F342E132CF790DC3DE75635F1F2828F64B0487840B6438B272BD │ │ │ │ +94866F845AEDBDCDDF90C580706407D1B5912EB47FB6C70CA994D7E7AFD3D7D7 │ │ │ │ +8A82953284B7E4742BB9D4B42500DD06E714ECDF6E82EEB394C395715A8C7EA4 │ │ │ │ +75C17E1FB0B8916E268A701EE5404C52D8D9066167C57BC1BD3B9ECFDF4AD86D │ │ │ │ +E16DC145B69641A6DDF5543123CB9BD6F1ECFF9C140A7870DA891358CB613090 │ │ │ │ +80CC4B5EF8B358EF26456E8CF4ED00D35C23626CE4FC6BF74EB169D7E12F8032 │ │ │ │ +E1B7CF5395040DAB876E2C72A6A4465FF8B170714537185AC2550EF13A0EF8F1 │ │ │ │ +17AF66E181C37CE1E667F075CBB407F5C5C59FCCC2774F715CC7E3081E2D6395 │ │ │ │ +69A00C243BD500902ED27E35CD2AB29B23C9E436907D9D7E61CD9C1EAC26AD82 │ │ │ │ +80F0BF334BEECE439DA15461A548F4E11A33C3AFE6D14E7997C045715ED2489B │ │ │ │ +EF5DDE439389AAB11748A6F9276AE6CFCE75A2C60AD838826DC27C864089F5A6 │ │ │ │ +B7AFF0A4500644CE1E3414AE7FBCDA5D8AAE5368B8D8CE21380121B810D4CF92 │ │ │ │ +727DFE77A0DB7D77382087CEDB77A1D7823D878ED86ABC0F6DB03CBB947ACABB │ │ │ │ +A6B4C0B9BC6668144AC395EF4C080F207D3B650FE76832793A102A3127AD0DE1 │ │ │ │ +8C8847F9FAFD6180411AC2CBEDA626305638E47B6BEB2289EF616BFAD5EA901F │ │ │ │ +F2C1BEE7B58BC5371A4AE6F7E219639AEAAAF0FD66BBD8A30DCA45CC94BEC64F │ │ │ │ +E059E753EF3EEA8E9A7401496D442FE5FA22457AC0178FB331BBC48659FA6682 │ │ │ │ +A6EEB80CC984D870E4B12630C265143113EB877C43E40BE0F3271B8D398DCE6C │ │ │ │ +C8AB1D2C1C8E58F6FCDA73D0B767F07FD49981A66E313EE3F88E68907827A2DD │ │ │ │ +6E10AA810B2453C5A0A64446FC0DEE553E6BF100EB734DAA518F4559A1AE2C4C │ │ │ │ +87DAAA4CA967C61B021AC7E1CEC3775047923C04B8F10BAC4F802AA2FA193F18 │ │ │ │ +CD2CC90A562AD5AC14C911040DA6AC2BED95BDDD80E913A9464671D3E1D6B66C │ │ │ │ +78D21DE9DF850690C05115711C72EC14E04E0213FCFF2C4F8A02146CB89E54EA │ │ │ │ +2C86BD082B099614787A6633BE7D33CC00C16D83F52E4A9A9A9C7A2EBB6AF8CF │ │ │ │ +18A38D4702AE9BB54CED17DE5C4FC396E0BB253702554B50D43CEF3F18A970E2 │ │ │ │ +83D3FC03CD269BD44A198514666033BC4E01E5F9619AB2BE5AC6B549A124B434 │ │ │ │ +DAD1C3371E4896107E91DCD1A61925B09443BB7EF357BB7910EF45B57EFF6469 │ │ │ │ +1EF1A136179D01F3EFA7128FAB031C7FDC274DB4CC8F184641CFB29A98F85B9B │ │ │ │ +F8733F5D2A712CE5D848B2772806C82CA4B5EDA26186572598DA585E8B36BC78 │ │ │ │ +059C18BF13DCDB0F1CA469954D748FE8A4F1D3EB5119FD62E0E3CE2F6B7E1608 │ │ │ │ +832EC57E29B27F80B23871E224B4DB9E0406902D134841B80D2F18F751E1B0F9 │ │ │ │ +00A78BEF5B5BD58DCC9155F4C462CC2163CCA2279BAB66DB4E1DCABD14E47C20 │ │ │ │ +1A652E04394424B721777573AEA4D5FBFB839B5F2CF46B3002D4FF731E10D0AB │ │ │ │ +82C7C2520BDEF143CD6B2EDE71C0F4E9DDF5BBC8B1D65B60A99701B6ED0169F5 │ │ │ │ +CD18CAFE2BBCB2361E84E1C7D3BD0B4AFF3D3AB2C606E06B9104B19196D01C62 │ │ │ │ +711A9C32E5C022406BE4B2423AC63AF525843C7011195F27A6ED9F6116C593ED │ │ │ │ +98842980840039338A86221AA83242607680EB751D3204AE4B99E3F70D85FD20 │ │ │ │ +C59C6E9F54E484E9564717DEC448E663290A5AB176647148FE9D3D5D7E27F5E6 │ │ │ │ +50A6C24C12598F80F5BE9FD70D8EFDCC58453B74F5BEBA4A9630ED0ABEDB265C │ │ │ │ +272A1B889F0867DADF55D988CC5040764C64F2A57706A78625CEF5A11167AF19 │ │ │ │ +FF86C8758D9A5265F13BA64A1597DB119856A47359CFA3B6F6A01A8D88D7AE05 │ │ │ │ +72AAA7624677DC17D272131AB8852D836D169BA43D35CC94B2BCB01941910719 │ │ │ │ +FC606DE0FE10F21576DA868DC10F97636CF29DA2B1C988C12EE65878D53394C0 │ │ │ │ +C7D5DB0F656C737269C74B6C419C953EFACEC2D272C6466AFC34A0864C975223 │ │ │ │ +E9DACFE745FEAC86B0C56BB9E2F4368645FAB9E5361FBBEA7675E4E5170AE84A │ │ │ │ +798B6B35667DB4F5117ED4B5A40478A4D74EA6B130CD012D3BEFF45BC9B5D863 │ │ │ │ +F9D0DB773358049277943E92819354949CAD77B5109A4AF118738B447987B08E │ │ │ │ +B66EAF3196C4B1BF87D25105707522205469A9D2D7B25FDC427ECE418661F5BD │ │ │ │ +3C16D6F84B4C4B1E1A5B192DF41CEC233A4527045E76559807926FCEEC403A85 │ │ │ │ +6187457294048F0E58C71A7C100894589825E771A41E6CB2C7F8A3559A7A98B6 │ │ │ │ +620E02248EDA54001FB833E21AE145753E909AF17D70B49105CE3E19F7153734 │ │ │ │ +B8D4A3D10D4133202B8FC930DB8DC1A995D2C5593F3FDC98E71A46A273A23B7E │ │ │ │ +8E1EF1D9DAD57D6E5EA210FD8ED047BB390D907C9D7CF0D4DE3224D66241E6F1 │ │ │ │ +18AF3106503CC9B1F996F3643D9D790E711090476F8E4E63874166639CA07543 │ │ │ │ +92FCEC5A6398F275C895F6623131382C4DE5AED164DBA9068C6297C5D781BF78 │ │ │ │ +49D1EF0A6D365D7D62CBB07FDA11211C68BD9F02DCE100F8FD4823585465E92C │ │ │ │ +6F37D2137246768A5054CBD3687C36B221021DB4AC73AAA2B37A0D33D3AEBBB1 │ │ │ │ +8A9416522FE6EC69AB9222F414A9E6555A63C94F6A917AC555791A0BA918B465 │ │ │ │ +EE8E3553121E19DB75C304259A8C810A2207A39CFD77614D20B26D8AF849374B │ │ │ │ +88DDEF830B84209C37CFF38C4723B4B3FCC7409EEA8D7B266015BF7F08427695 │ │ │ │ +220178092D4A33B64E1D5B0B7ACDFEC3C7A7D26021EC578F3CC8428C956F08A3 │ │ │ │ +BA5AC5BB24BDE55A8C35F7A5B473D24DA79BC386A7DCAE5368755114F4357684 │ │ │ │ +7DD7AAA720B195B5EDEDB9F2C0D4B7214961CD07559D90FAED8D7343D3BB48E6 │ │ │ │ +F9FC42E31F4EACC267AC6AA1CEF0CC9DE81F55C63E3C5580FE4159D06AD3BA3D │ │ │ │ +47E6FFB079FE465B62FECCD7CAC179B29A3B7F5EA3242353EE1BEA386D1B2A70 │ │ │ │ +99A3F081EDEDF31A5F9493EE3FD581FADD1D2D17B0D52A9E98D720A622152684 │ │ │ │ +6B4CAA989A56087A4E2A13D97DAB69AA5D045C662A11628232878FA7F07519F3 │ │ │ │ +7CCD2D901ACE979C3704E5665A5A4765805580F4EBFF87B9BC309619BD9226FE │ │ │ │ +2C10264689AB9C30459B31EE206C8706A0CB4F7D3C9F0E481ED946099CAFD717 │ │ │ │ +F840E44064232474F7DD083212F411FA999D40B46924F83B98132F04D101F772 │ │ │ │ +3319EC2D8DAD810D0EDA5565B8F380D2E1D7C9BD076B63AEDD7D02D6A1BFF688 │ │ │ │ +4E798C6F2D418F6A6B2CF620F1B5CCA0C5B656BA34B11A9EE97A75DCAA3609F9 │ │ │ │ +E07634D8922C77CF31B73BEBEE661D3D001612AEDD97E460ED72A606D820BC98 │ │ │ │ +87DCF0B65CADEEBC6C00CF0AD598AAD186D339D12FC525F3F01F2E407E03DD4B │ │ │ │ +3C95AC82FB5A1C29AD173D13BB8EDE1BB558DECB258FA754EC8560BF8ADE4420 │ │ │ │ +54B2740D432A720C909141183F8C1C876B0F43AB322385175755EAB12C671FB5 │ │ │ │ +5432ED1A9C4D0A554CCF61A2F08A01731E1BC7C653C583A9B03366294ECCB912 │ │ │ │ +499871F024768728ABA685D7AF88CBE6F56F4DEEB691F50963F90C3C50B0552F │ │ │ │ +222F219333D0937FFAD0439C0A738D36D7FF1243D3E4F66AEC5FD02A7F268F35 │ │ │ │ +0472A2AD5EB95C5D764861FD4AF6C770FCFE7D0E0F029E0DC29197946631FDE1 │ │ │ │ +0B9287B4C74D9480176FFC5FA7D68E98C53A424E4DD33428D9672A72C60F95C6 │ │ │ │ +1EFF48B55E45BBFD2670848E0AB53C41A3CC66E46A2C3909B0CA20E1553D9480 │ │ │ │ +69B43F62B19B8AE3B6E51B739ADEE0E737ACEB914011EDB1D2E69523026237E5 │ │ │ │ +4F2C6BA256EE15D2F69692CF29D4D17BA470A4093CC549A8D592C54BC6C97656 │ │ │ │ +2C7EE37BC1B094E44E0AD54803318E999374FD5763A43254E0494DA20B0AE1C2 │ │ │ │ +16C7EFC4DA00E4F7A079925FBD1D254831E90CE7F0934013F125B2B5847DC620 │ │ │ │ +E32882644FF8B0309FA7A479E592F6F1DCDEE37A2342FD36E269A2B406B7A8CC │ │ │ │ +8454B5 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -7388,15 +7400,15 @@ │ │ │ │ rf /Fh 149[27 23 20[39 11[54 12[20 59[{}5 58.1154 /CMMI7 │ │ │ │ rf /Fi 157[46 44[55 55 55 55 50[{}5 83.022 /CMEX10 rf │ │ │ │ /Fj 137[40 48 2[37 3[50 1[25 1[34 29 1[40 1[39 1[36 1[44 │ │ │ │ 7[48 69 2[57 4[53 3[57 2[36 4[69 2[62 2[65 1[65 23 23 │ │ │ │ 58[{}23 83.022 /CMMI10 rf /Fk 135[102 3[75 1[79 1[108 │ │ │ │ 1[108 4[54 108 2[88 108 2[94 29[140 138 146 11[97 97 │ │ │ │ 97 97 97 49[{}18 172.188 /CMBX12 rf /Fl 134[44 3[46 2[33 │ │ │ │ -3[46 12[42 22[43 15[23 3[42 3[42 1[42 3[23 44[{}11 83.022 │ │ │ │ +3[46 12[42 22[43 15[23 3[42 3[42 42 42 3[23 44[{}12 83.022 │ │ │ │ /CMSL10 rf /Fm 130[44 1[44 44 44 44 44 44 44 44 44 44 │ │ │ │ 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 1[44 │ │ │ │ 1[44 44 44 44 44 44 44 44 44 44 44 44 1[44 44 44 44 44 │ │ │ │ 2[44 44 44 44 44 44 44 44 44 2[44 44 44 44 44 44 44 44 │ │ │ │ 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 │ │ │ │ 1[44 44 44 33[{}84 83.022 /CMTT10 rf /Fn 131[232 2[123 │ │ │ │ 123 1[123 129 90 92 95 1[129 116 129 194 65 1[71 65 129 │ │ │ │ @@ -7414,15 +7426,15 @@ │ │ │ │ 41 41 55 41 43 30 30 30 1[43 38 43 64 21 2[21 43 38 23 │ │ │ │ 34 43 34 43 38 9[79 2[55 43 57 1[52 60 1[70 48 2[28 58 │ │ │ │ 3[59 55 54 58 7[38 38 38 38 38 38 38 38 38 38 1[21 26 │ │ │ │ 21 44[{}50 74.7198 /CMR9 rf /Fr 205[30 30 49[{}2 49.8132 │ │ │ │ /CMR6 rf /Fs 205[35 35 49[{}2 66.4176 /CMR8 rf /Ft 133[43 │ │ │ │ 51 2[51 54 38 38 38 1[54 49 54 1[27 2[27 54 49 30 43 │ │ │ │ 54 43 1[49 13[54 72 1[66 5[50 2[77 3[70 69 73 10[49 3[49 │ │ │ │ -1[49 3[27 44[{}31 99.6264 /CMR12 rf /Fu 172[90 2[110 │ │ │ │ +49 49 3[27 44[{}32 99.6264 /CMR12 rf /Fu 172[90 2[110 │ │ │ │ 121 2[97 6[106 69[{}5 143.462 /CMBX12 rf /Fv 134[70 2[70 │ │ │ │ 73 51 52 51 70 73 66 73 111 36 1[40 36 1[66 40 58 1[58 │ │ │ │ 73 66 9[137 3[73 3[103 2[83 6[90 18[66 3[36 46[{}27 143.462 │ │ │ │ /CMR17 rf end │ │ │ │ %%EndProlog │ │ │ │ %%BeginSetup │ │ │ │ %%Feature: *Resolution 600dpi │ │ │ │ @@ -7438,16 +7450,16 @@ │ │ │ │ %%Page: 1 1 │ │ │ │ TeXDict begin 1 0 bop 1103 1880 a Fv(W)-11 b(rapp)t(er)44 │ │ │ │ b(Ob)7 b(jects)43 b(for)g(Solving)1099 2062 y(a)g(Linear)g(System)g(of) │ │ │ │ g(Equations)1306 2245 y(using)g Fu(SPOOLES)g Fv(2.2)1052 │ │ │ │ 2635 y Ft(Clev)m(e)35 b(Ashcraft)699 2751 y(Bo)s(eing)e(Shared)g │ │ │ │ (Services)i(Group)1995 2715 y Fs(1)2483 2635 y Ft(P)m(eter)f(Sc)m │ │ │ │ (hartz)2342 2751 y(CSAR)f(Corp)s(oration)3162 2715 y │ │ │ │ -Fs(2)1611 3012 y Ft(Jan)m(uary)g(6,)f(2026)104 4919 y │ │ │ │ -Fr(1)138 4951 y Fq(P)-6 b(.)35 b(O.)g(Bo)n(x)f(24346,)39 │ │ │ │ +Fs(2)1586 3012 y Ft(Jan)m(uary)h(10,)e(2026)104 4919 │ │ │ │ +y Fr(1)138 4951 y Fq(P)-6 b(.)35 b(O.)g(Bo)n(x)f(24346,)39 │ │ │ │ b(Mail)d(Stop)e(7L-21,)k(Seattle,)g(W)-6 b(ashington)34 │ │ │ │ b(98124.)64 b(This)35 b(researc)n(h)g(w)n(as)h(supp)r(orted)e(in)g │ │ │ │ (part)h(b)n(y)e(the)0 5042 y(D)n(ARP)-6 b(A)20 b(Con)n(tract)j(D)n │ │ │ │ (ABT63-95-C-0122)i(and)d(the)f(DoD)h(High)g(P)n(erformance)i(Computing) │ │ │ │ f(Mo)r(dernization)g(Program)h(Common)0 5133 y(HPC)i(Soft)n(w)n(are)h │ │ │ │ (Supp)r(ort)d(Initiativ)n(e.)104 5193 y Fr(2)138 5224 │ │ │ │ y Fq(28035)32 b(Doroth)n(y)e(Driv)n(e,)h(Agoura)g(Hills,)h(CA)e(91301.) │ │ │ │ @@ -7574,17 +7586,17 @@ │ │ │ │ g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f │ │ │ │ (.)93 b(30)125 5407 y(5.3)83 b(Protot)n(yp)r(es)26 b(and)i │ │ │ │ (descriptions)f(of)34 b Fm(BridgeMPI)24 b Fo(metho)r(ds)29 │ │ │ │ b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) │ │ │ │ h(.)f(.)h(.)g(.)f(.)h(.)f(.)93 b(32)1929 5656 y(1)p eop │ │ │ │ end │ │ │ │ %%Page: 2 4 │ │ │ │ -TeXDict begin 2 3 bop 83 100 802 4 v 968 100 a Fp(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3059 100 V 802 w Fo(2)315 │ │ │ │ +TeXDict begin 2 3 bop 83 100 781 4 v 947 100 a Fp(SPOOLES)32 │ │ │ │ +b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(Jan)n(uary)26 b(10,)h(2026)p 3080 100 V 781 w Fo(2)315 │ │ │ │ 390 y(5.3.1)94 b(Basic)27 b(metho)r(ds)74 b(.)42 b(.)f(.)h(.)f(.)h(.)f │ │ │ │ (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) │ │ │ │ h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)93 │ │ │ │ b(32)315 515 y(5.3.2)h(Instance)27 b(metho)r(ds)j(.)41 │ │ │ │ b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h │ │ │ │ (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) │ │ │ │ f(.)h(.)f(.)93 b(33)315 639 y(5.3.3)h(P)n(arameter)25 │ │ │ │ @@ -7706,17 +7718,17 @@ │ │ │ │ h(structures)f(using)h(serial)g(metho)r(ds.)48 b(In)32 │ │ │ │ b(the)f(MPI)g(en)n(vironmen)n(t,)h(the)0 5382 y(data)26 │ │ │ │ b(structures)h(for)f Fj(A)p Fo(,)h Fj(X)34 b Fo(and)26 │ │ │ │ b Fj(Y)46 b Fo(ma)n(y)26 b(b)r(e)i(distributed,)f(and)g(all)f(w)n │ │ │ │ (orking)g(data)g(structures)g(that)h(con)n(tain)g(the)g(factor)1929 │ │ │ │ 5656 y(3)p eop end │ │ │ │ %%Page: 4 6 │ │ │ │ -TeXDict begin 4 5 bop 83 100 802 4 v 968 100 a Fp(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3059 100 V 802 w Fo(4)0 │ │ │ │ +TeXDict begin 4 5 bop 83 100 781 4 v 947 100 a Fp(SPOOLES)32 │ │ │ │ +b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(Jan)n(uary)26 b(10,)h(2026)p 3080 100 V 781 w Fo(4)0 │ │ │ │ 390 y(matrices)i(and)h(their)h(supp)r(orting)e(information)h(are)f │ │ │ │ (distributed.)45 b(The)30 b(MPI)g(co)r(de)g(is)g(m)n(uc)n(h)g(more)g │ │ │ │ (complex)f(than)i(the)0 490 y(serial)19 b(or)g(m)n(ultithreaded)h(co)r │ │ │ │ (des,)h(for)e(not)h(only)g(are)f(the)h(factor)f(and)h(solv)n(es)e │ │ │ │ (parallel)h(and)h(distributed)g(\(as)f(is)h(the)h(sym)n(b)r(olic)0 │ │ │ │ 589 y(factorization\),)j(but)h(there)g(is)f(a)h(great)e(deal)h(of)h │ │ │ │ (supp)r(ort)f(co)r(de)h(necessary)e(b)r(ecause)h(of)h(the)g │ │ │ │ @@ -7818,17 +7830,17 @@ │ │ │ │ (and)0 5308 y(en)n(tries)f(in)i(the)f Fj(j)5 b Fo(-th)35 │ │ │ │ b(column)g(of)g(the)g(lo)n(w)n(er)f(triangle.)58 b(It)35 │ │ │ │ b(is)g(the)h(natural)e(data)g(structure)h(for)f(the)i(assem)n(bly)e(of) │ │ │ │ h(the)0 5407 y(matrix)27 b(en)n(tries)g(in)n(to)g(the)h(\\fron)n(ts")e │ │ │ │ (used)i(to)f(factor)g(the)h(matrix.)1929 5656 y(5)p eop │ │ │ │ end │ │ │ │ %%Page: 6 8 │ │ │ │ -TeXDict begin 6 7 bop 83 100 802 4 v 968 100 a Fp(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3059 100 V 802 w Fo(6)125 │ │ │ │ +TeXDict begin 6 7 bop 83 100 781 4 v 947 100 a Fp(SPOOLES)32 │ │ │ │ +b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(Jan)n(uary)26 b(10,)h(2026)p 3080 100 V 781 w Fo(6)125 │ │ │ │ 390 y(The)h Fm(InpMtx)e Fo(ob)5 b(ject)29 b(can)f(hold)g(one)h(of)f │ │ │ │ (three)h(t)n(yp)r(es)f(of)h(en)n(tries)f(as)g(\\indices)g(only")f(\(no) │ │ │ │ i(en)n(tries)f(are)f(presen)n(t\),)i(real)0 490 y(en)n(tries,)22 │ │ │ │ b(or)e(complex)h(en)n(tries.)34 b(The)22 b(t)n(yp)r(e)f(is)g(sp)r │ │ │ │ (eci\014ed)h(b)n(y)f(the)g Fm(inputMode)d Fo(parameter)i(to)h(the)h │ │ │ │ Fm(InpMtx)p 3296 490 27 4 v 29 w(init\(\))d Fo(metho)r(d.)125 │ │ │ │ 678 y Ff(\210)42 b Fm(INPMTX)p 477 678 V 28 w(INDICES)p │ │ │ │ @@ -7916,17 +7928,17 @@ │ │ │ │ (submatrices,)f(and)h(eac)n(h)e(input)j(metho)r(d)f(has)f(three)g(t)n │ │ │ │ (yp)r(es)g(of)h(input,)h(e.g,)0 5219 y(indices)28 b(only)-7 │ │ │ │ b(,)27 b(real)g(en)n(tries,)g(or)f(complex)h(en)n(tries.)37 │ │ │ │ b(Here)27 b(are)f(the)i(protot)n(yp)r(es)f(b)r(elo)n(w.)125 │ │ │ │ 5407 y Ff(\210)42 b Fo(Input)28 b(metho)r(ds)g(for)f(\\indices)g(only") │ │ │ │ g(mo)r(de.)p eop end │ │ │ │ %%Page: 7 9 │ │ │ │ -TeXDict begin 7 8 bop 83 100 802 4 v 968 100 a Fp(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3059 100 V 802 w Fo(7)208 │ │ │ │ +TeXDict begin 7 8 bop 83 100 781 4 v 947 100 a Fp(SPOOLES)32 │ │ │ │ +b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(Jan)n(uary)26 b(10,)h(2026)p 3080 100 V 781 w Fo(7)208 │ │ │ │ 390 y Fm(void)41 b(InpMtx_inputEntry)c(\()43 b(InpMtx)e(*mtxA,)g(int)i │ │ │ │ (row,)f(int)g(col)g(\))i(;)208 490 y(void)d(InpMtx_inputRow)d(\()43 │ │ │ │ b(InpMtx)e(*mtxA,)g(int)i(row,)f(int)g(rowsize,)e(int)i(rowind[])f(\))i │ │ │ │ (;)208 589 y(void)e(InpMtx_inputColum)o(n)d(\()43 b(InpMtx)e(*mtxA,)g │ │ │ │ (int)h(col,)g(int)h(colsize,)d(int)i(colind[])f(\))i(;)208 │ │ │ │ 689 y(void)e(InpMtx_inputMatri)o(x)d(\()43 b(InpMtx)e(*mtxA,)g(int)h │ │ │ │ (nrow,)g(int)g(ncol,)g(int)g(rowstride,)1341 789 y(int)g(colstride,)e │ │ │ │ @@ -7979,17 +7991,17 @@ │ │ │ │ 262 4582 y(entries[0])c(=)k(4.0)f(;)262 4682 y(count)f(=)i(1)g(;)262 │ │ │ │ 4781 y(if)f(\()h(ii)g(<)g(n1)g(\))g({)392 4881 y(indices[count])38 │ │ │ │ b(=)43 b(ij)g(+)g(1)g(;)392 4980 y(entries[count])38 │ │ │ │ b(=)43 b(-1.0)f(;)392 5080 y(count++)f(;)262 5180 y(})262 │ │ │ │ 5279 y(if)h(\()h(jj)g(<)g(n2)g(\))g({)392 5379 y(indices[count])38 │ │ │ │ b(=)43 b(ij)g(+)g(n1)g(;)p eop end │ │ │ │ %%Page: 8 10 │ │ │ │ -TeXDict begin 8 9 bop 83 100 802 4 v 968 100 a Fp(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3059 100 V 802 w Fo(8)392 │ │ │ │ +TeXDict begin 8 9 bop 83 100 781 4 v 947 100 a Fp(SPOOLES)32 │ │ │ │ +b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(Jan)n(uary)26 b(10,)h(2026)p 3080 100 V 781 w Fo(8)392 │ │ │ │ 390 y Fm(entries[count])38 b(=)43 b(-1.0)f(;)392 490 │ │ │ │ y(count++)f(;)262 589 y(})262 689 y(InpMtx_inputRea)o(lR)o(ow\()o(mt)o │ │ │ │ (xA,)c(ij,)42 b(count,)f(indices,)f(entries\))h(;)131 │ │ │ │ 789 y(})0 888 y(})0 988 y(InpMtx_changeSto)o(rag)o(eM)o(od)o(e\(m)o(tx) │ │ │ │ o(A,)c(INPMTX_BY_VECTORS)o(\))g(;)0 1169 y Fo(The)24 │ │ │ │ b(pro)r(cess)f(b)r(egins)i(b)n(y)f(allo)r(cating)f(an)h │ │ │ │ Fm(InpMtx)e Fo(ob)5 b(ject)24 b Fm(mtxA)e Fo(using)i(the)h │ │ │ │ @@ -8068,17 +8080,17 @@ │ │ │ │ 5208 y Fm(void)42 b(DenseMtx_rowIndi)o(ce)o(s)c(\()43 │ │ │ │ b(DenseMtx)d(*mtx,)i(int)g(*pnrow,)f(int)h(*prowind)e(\))j(;)0 │ │ │ │ 5308 y(void)f(DenseMtx_columnI)o(nd)o(ice)o(s)37 b(\()44 │ │ │ │ b(DenseMtx)c(*mtx,)h(int)i(*pncol,)d(int)j(*pcolind)d(\))j(;)0 │ │ │ │ 5407 y(double)e(*)i(DenseMtx_entries)37 b(\()43 b(DenseMtx)e(*mtx)h(\)) │ │ │ │ h(;)p eop end │ │ │ │ %%Page: 9 11 │ │ │ │ -TeXDict begin 9 10 bop 83 100 802 4 v 968 100 a Fp(SPOOLES)31 │ │ │ │ -b(2.2)g(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3059 100 V 802 w Fo(9)0 │ │ │ │ +TeXDict begin 9 10 bop 83 100 781 4 v 947 100 a Fp(SPOOLES)32 │ │ │ │ +b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(Jan)n(uary)26 b(10,)h(2026)p 3080 100 V 781 w Fo(9)0 │ │ │ │ 390 y(W)-7 b(e)28 b(w)n(ould)f(use)h(them)g(as)f(follo)n(ws.)0 │ │ │ │ 578 y Fm(double)128 b(*entries)41 b(;)0 678 y(int)260 │ │ │ │ b(ncol,)42 b(nrow,)f(*colind,)g(*rowind)f(;)0 877 y(DenseMtx_rowIndi)o │ │ │ │ (ces)o(\(m)o(tx)o(,)e(&nrow,)j(&rowind\))f(;)0 977 y(DenseMtx_columnI)o │ │ │ │ (ndi)o(ce)o(s\()o(mtx)o(,)d(&ncol,)42 b(&colind\))e(;)0 │ │ │ │ 1076 y(entries)h(=)i(DenseMtx_entries)o(\(m)o(tx\))37 │ │ │ │ b(;)0 1264 y Fo(W)-7 b(e)35 b(can)f(no)n(w)g(\014ll)h(the)g(indices)f │ │ │ │ @@ -8133,17 +8145,17 @@ │ │ │ │ b(InpMtx)d(*obj,)g(char)h(*filename)e(\))j(;)125 5242 │ │ │ │ y Ff(\210)f Fm(int)g(InpMtx)p 651 5242 V 29 w(readFromFormatte)o(dF)o │ │ │ │ (ile)37 b(\()43 b(InpMtx)e(*obj,)g(FILE)h(*fp)h(\))g(;)125 │ │ │ │ 5407 y Ff(\210)f Fm(int)g(InpMtx)p 651 5407 V 29 w(readFromBinaryFi)o │ │ │ │ (le)37 b(\()43 b(InpMtx)e(*obj,)h(FILE)g(*fp)g(\))h(;)p │ │ │ │ eop end │ │ │ │ %%Page: 10 12 │ │ │ │ -TeXDict begin 10 11 bop 83 100 781 4 v 947 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fo(10)125 │ │ │ │ +TeXDict begin 10 11 bop 83 100 760 4 v 926 100 a Fp(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fo(10)125 │ │ │ │ 390 y Ff(\210)42 b Fm(int)g(InpMtx)p 651 390 27 4 v 29 │ │ │ │ w(writeToFile)d(\()k(InpMtx)e(*obj,)h(char)g(*filename)d(\))44 │ │ │ │ b(;)125 556 y Ff(\210)e Fm(int)g(InpMtx)p 651 556 V 29 │ │ │ │ w(writeToFormatted)o(Fi)o(le)37 b(\()43 b(InpMtx)e(*obj,)h(FILE)g(*fp)g │ │ │ │ (\))h(;)125 722 y Ff(\210)f Fm(int)g(InpMtx)p 651 722 │ │ │ │ V 29 w(writeToBinaryFil)o(e)37 b(\()44 b(InpMtx)d(*obj,)g(FILE)h(*fp)g │ │ │ │ (\))i(;)125 888 y Ff(\210)e Fm(int)g(InpMtx)p 651 888 │ │ │ │ @@ -8268,17 +8280,17 @@ │ │ │ │ Fm(Bridge)d Fo(metho)r(ds.)0 5115 y Fe(3.1)135 b(A)45 │ │ │ │ b(quic)l(k)g(lo)t(ok)g(at)h(serial)g(driv)l(er)f(program)0 │ │ │ │ 5321 y Fo(The)28 b(en)n(tire)f(listing)g(of)h(this)g(serial)e(driv)n │ │ │ │ (er)h(is)g(found)h(in)g(App)r(endix)g(A.)38 b(W)-7 b(e)28 │ │ │ │ b(no)n(w)f(extract)f(parts)h(of)h(the)g(co)r(de.)1908 │ │ │ │ 5656 y(11)p eop end │ │ │ │ %%Page: 12 14 │ │ │ │ -TeXDict begin 12 13 bop 83 100 781 4 v 947 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fo(12)125 │ │ │ │ +TeXDict begin 12 13 bop 83 100 760 4 v 926 100 a Fp(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fo(12)125 │ │ │ │ 390 y Ff(\210)42 b Fo(Deco)r(de)27 b(the)h(input.)208 │ │ │ │ 606 y Fm(msglvl)302 b(=)43 b(atoi\(argv[1]\))c(;)208 │ │ │ │ 706 y(msgFileName)82 b(=)43 b(argv[6])e(;)208 805 y(neqns)346 │ │ │ │ b(=)43 b(atoi\(argv[3]\))c(;)208 905 y(type)390 b(=)43 │ │ │ │ b(atoi\(argv[4]\))c(;)208 1005 y(symmetryflag)f(=)43 │ │ │ │ b(atoi\(argv[5]\))c(;)208 1104 y(mtxFileName)82 b(=)43 │ │ │ │ b(argv[6])e(;)208 1204 y(rhsFileName)82 b(=)43 b(argv[7])e(;)208 │ │ │ │ @@ -8333,17 +8345,17 @@ │ │ │ │ 5006 y Fo(The)28 b Fm(nrhs)f Fo(parameter)g(con)n(tains)g(the)i(n)n(um) │ │ │ │ n(b)r(er)f(of)g(righ)n(t)g(hand)g(sides,)g(or)g(equiv)-5 │ │ │ │ b(alen)n(tly)e(,)28 b(the)h(n)n(um)n(b)r(er)f(of)g(columns)208 │ │ │ │ 5106 y(in)f Fj(Y)19 b Fo(.)125 5272 y Ff(\210)42 b Fo(Create)26 │ │ │ │ b(and)i(setup)g(the)g Fm(Bridge)d Fo(ob)5 b(ject.)p eop │ │ │ │ end │ │ │ │ %%Page: 13 15 │ │ │ │ -TeXDict begin 13 14 bop 83 100 781 4 v 947 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fo(13)208 │ │ │ │ +TeXDict begin 13 14 bop 83 100 760 4 v 926 100 a Fp(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fo(13)208 │ │ │ │ 390 y Fm(bridge)41 b(=)i(Bridge_new\(\))38 b(;)208 490 │ │ │ │ y(Bridge_setMatri)o(xPa)o(ra)o(ms)o(\(br)o(id)o(ge,)f(neqns,)k(type,)g │ │ │ │ (symmetryflag\))e(;)208 589 y(Bridge_setMessa)o(geI)o(nf)o(o\()o(bri)o │ │ │ │ (dg)o(e,)e(msglvl,)k(msgFile\))f(;)208 689 y(rc)i(=)h │ │ │ │ (Bridge_setup\(brid)o(ge,)37 b(mtxA\))k(;)208 888 y Fo(The)19 │ │ │ │ b Fm(Bridge)d Fo(ob)5 b(ject)19 b(is)g(allo)r(cated)f(b)n(y)g │ │ │ │ Fm(Bridge)p 1687 888 27 4 v 29 w(new\(\))p Fo(,)h(and)g(v)-5 │ │ │ │ @@ -8399,17 +8411,17 @@ │ │ │ │ (of)h(zeros)f(to)h(allo)n(w)f(in)h(a)f(fron)n(t)h(during)f(the)i(sup)r │ │ │ │ (erno)r(de)e(amalgama-)390 5039 y(tion)j(pro)r(cess.)301 │ │ │ │ 5172 y Fp({)41 b Fm(int)i(maxsize)24 b Fo(:)37 b(maxim)n(um)28 │ │ │ │ b(size)f(of)h(a)f(fron)n(t)g(when)h(the)g(fron)n(ts)f(are)f(split.)301 │ │ │ │ 5305 y Fp({)41 b Fm(int)i(seed)26 b Fo(:)37 b(random)26 │ │ │ │ b(n)n(um)n(b)r(er)i(seed.)p eop end │ │ │ │ %%Page: 14 16 │ │ │ │ -TeXDict begin 14 15 bop 83 100 781 4 v 947 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fo(14)301 │ │ │ │ +TeXDict begin 14 15 bop 83 100 760 4 v 926 100 a Fp(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fo(14)301 │ │ │ │ 390 y Fp({)41 b Fm(double)g(compressCutoff)22 b Fo(:)36 │ │ │ │ b(if)28 b(the)g Fm(Neqns)d Fj(<)i Fm(compressCutoff)21 │ │ │ │ b Fc(\003)27 b Fm(neqns)p Fo(,)e(then)j(the)f(compressed)f(graph)390 │ │ │ │ 490 y(is)i(formed,)f(ordered)f(and)i(used)f(to)h(create)e(the)i(sym)n │ │ │ │ (b)r(olic)g(factorization.)125 642 y Ff(\210)42 b Fo(Matrix)27 │ │ │ │ b(parameters:)301 795 y Fp({)41 b Fm(int)i(type)26 b │ │ │ │ Fo(:)37 b(t)n(yp)r(e)27 b(of)h(en)n(tries,)f Fm(SPOOLES)p │ │ │ │ @@ -8506,17 +8518,17 @@ │ │ │ │ b(factor)g(time)2242 5120 y Fm(cpus[10])d Fo(:)100 b(time)28 │ │ │ │ b(to)f(p)r(erm)n(ute)h(rhs)2242 5220 y Fm(cpus[11])c │ │ │ │ Fo(:)100 b(time)28 b(to)f(solv)n(e)2242 5319 y Fm(cpus[12])d │ │ │ │ Fo(:)100 b(time)28 b(to)f(p)r(erm)n(ute)h(solution)2242 │ │ │ │ 5419 y Fm(cpus[13])c Fo(:)100 b(total)27 b(solv)n(e)g(time)p │ │ │ │ eop end │ │ │ │ %%Page: 15 17 │ │ │ │ -TeXDict begin 15 16 bop 83 100 781 4 v 947 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fo(15)0 │ │ │ │ +TeXDict begin 15 16 bop 83 100 760 4 v 926 100 a Fp(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fo(15)0 │ │ │ │ 390 y Fe(3.3)135 b(Protot)l(yp)t(es)46 b(and)f(descriptions)g(of)58 │ │ │ │ b Fd(Bridge)42 b Fe(metho)t(ds)0 597 y Fo(This)22 b(section)f(con)n │ │ │ │ (tains)g(brief)h(descriptions)f(including)h(protot)n(yp)r(es)f(of)h │ │ │ │ (all)g(metho)r(ds)g(that)g(b)r(elong)g(to)f(the)i Fm(Bridge)c │ │ │ │ Fo(ob)5 b(ject.)0 854 y Fb(3.3.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ 1032 y Fo(As)21 b(usual,)g(there)f(are)g(four)g(basic)g(metho)r(ds)g │ │ │ │ (to)h(supp)r(ort)f(ob)5 b(ject)20 b(creation,)h(setting)f(default)h │ │ │ │ @@ -8574,17 +8586,17 @@ │ │ │ │ b Fm(int)g(Bridge_newToOldI)o(V)37 b(\()44 b(Bridge)d(*bridge,)f(IV)j │ │ │ │ (**pobj)e(\))i(;)208 5229 y Fo(This)27 b(metho)r(d)h(\014lls)g │ │ │ │ Fm(*pobj)e Fo(with)i(its)f Fm(newToOldIV)d Fo(p)r(oin)n(ter.)208 │ │ │ │ 5362 y Fg(R)l(eturn)k(value:)38 b Fo(1)27 b(for)g(a)g(normal)g(return,) │ │ │ │ g(-1)g(if)34 b Fm(bridge)25 b Fo(is)j Fm(NULL)p Fo(.)e(-2)h(if)34 │ │ │ │ b Fm(pobj)26 b Fo(is)i Fm(NULL)p Fo(.)p eop end │ │ │ │ %%Page: 16 18 │ │ │ │ -TeXDict begin 16 17 bop 83 100 781 4 v 947 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fo(16)101 │ │ │ │ +TeXDict begin 16 17 bop 83 100 760 4 v 926 100 a Fp(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fo(16)101 │ │ │ │ 390 y(3.)42 b Fm(int)g(Bridge_frontETre)o(e)37 b(\()44 │ │ │ │ b(Bridge)d(*bridge,)f(ETree)i(**pobj)f(\))i(;)208 523 │ │ │ │ y Fo(This)27 b(metho)r(d)h(\014lls)g Fm(*pobj)e Fo(with)i(its)f │ │ │ │ Fm(frontETree)d Fo(p)r(oin)n(ter.)208 656 y Fg(R)l(eturn)k(value:)38 │ │ │ │ b Fo(1)27 b(for)g(a)g(normal)g(return,)g(-1)g(if)34 b │ │ │ │ Fm(bridge)25 b Fo(is)j Fm(NULL)p Fo(.)e(-2)h(if)34 b │ │ │ │ Fm(pobj)26 b Fo(is)i Fm(NULL)p Fo(.)101 822 y(4.)42 b │ │ │ │ @@ -8645,17 +8657,17 @@ │ │ │ │ 208 5233 y Fo(This)27 b(metho)r(d)h(sets)g(the)g(message)e(lev)n(el)h │ │ │ │ (and)g(\014le.)208 5366 y Fg(R)l(eturn)h(value:)38 b │ │ │ │ Fo(1)27 b(for)g(a)g(normal)g(return,)g(-1)g(if)34 b Fm(bridge)25 │ │ │ │ b Fo(is)j Fm(NULL)p Fo(,)e(-2)h(if)34 b Fm(msglvl)26 │ │ │ │ b Fj(>)h Fo(0)g(and)g Fm(msgFile)e Fo(is)j Fm(NULL)p │ │ │ │ Fo(.)p eop end │ │ │ │ %%Page: 17 19 │ │ │ │ -TeXDict begin 17 18 bop 83 100 781 4 v 947 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fo(17)0 │ │ │ │ +TeXDict begin 17 18 bop 83 100 760 4 v 926 100 a Fp(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fo(17)0 │ │ │ │ 390 y Fb(3.3.4)112 b(Setup)38 b(metho)s(ds)101 568 y │ │ │ │ Fo(1.)k Fm(int)g(Bridge_setup)d(\()k(Bridge)e(*bridge,)f(InpMtx)h │ │ │ │ (*mtxA)h(\))h(;)208 701 y Fo(This)38 b(metho)r(d)i(orders)d(the)i │ │ │ │ (graph,)h(generates)d(the)j(fron)n(t)e(tree,)j(computes)e(the)g(sym)n │ │ │ │ (b)r(olic)f(factorization,)i(and)208 801 y(creates)26 │ │ │ │ b(the)i(t)n(w)n(o)f(p)r(erm)n(utation)g(v)n(ectors.)208 │ │ │ │ 934 y Fg(R)l(eturn)h(value:)38 b Fo(1)27 b(for)g(a)g(normal)g(return,)g │ │ │ │ @@ -8770,17 +8782,17 @@ │ │ │ │ g Fm(BridgeMT)d Fo(driv)n(er)h(program)g(\(whose)i(complete)g(listing)g │ │ │ │ (is)g(found)g(in)0 5308 y(App)r(endix)27 b(B\).)36 b(Section)26 │ │ │ │ b(4.2)f(describ)r(es)h(the)g(in)n(ternal)f(data)h(\014elds)g(of)g(the)g │ │ │ │ Fm(BridgeMT)d Fo(ob)5 b(ject.)36 b(Section)26 b(3.3)f(con)n(tains)g │ │ │ │ (the)0 5407 y(protot)n(yp)r(es)h(and)i(descriptions)f(of)g(all)h │ │ │ │ Fm(Bridge)d Fo(metho)r(ds.)1908 5656 y(18)p eop end │ │ │ │ %%Page: 19 21 │ │ │ │ -TeXDict begin 19 20 bop 83 100 781 4 v 947 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fo(19)0 │ │ │ │ +TeXDict begin 19 20 bop 83 100 760 4 v 926 100 a Fp(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fo(19)0 │ │ │ │ 390 y Fe(4.1)135 b(A)45 b(quic)l(k)g(lo)t(ok)g(at)h(the)f(m)l │ │ │ │ (ultithreaded)h(driv)l(er)g(program)0 596 y Fo(The)28 │ │ │ │ b(en)n(tire)f(listing)g(of)h(this)g(m)n(ultithreaded)f(driv)n(er)g(is)g │ │ │ │ (found)h(in)g(App)r(endix)g(B.)37 b(W)-7 b(e)28 b(no)n(w)f(extract)g │ │ │ │ (parts)g(of)g(the)h(co)r(de.)125 785 y Ff(\210)42 b Fo(Deco)r(de)27 │ │ │ │ b(the)h(input.)208 998 y Fm(msglvl)302 b(=)43 b(atoi\(argv[1]\))c(;)208 │ │ │ │ 1097 y(msgFileName)82 b(=)43 b(argv[6])e(;)208 1197 y(neqns)346 │ │ │ │ @@ -8837,17 +8849,17 @@ │ │ │ │ 125 5011 y Ff(\210)42 b Fo(Read)27 b(in)h(the)g Fm(DenseMtx)c │ │ │ │ Fo(ob)5 b(ject)27 b(for)h Fj(Y)18 b Fo(.)208 5208 y Fm(mtxY)41 │ │ │ │ b(=)j(DenseMtx_new\(\))37 b(;)208 5308 y(rc)42 b(=)h(DenseMtx_readFrom) │ │ │ │ o(Fil)o(e\()o(mtx)o(Y,)37 b(mtxFileName\))i(;)208 5407 │ │ │ │ y(DenseMtx_dimens)o(ion)o(s\()o(mt)o(xY,)e(&nrow,)k(&nrhs\))g(;)p │ │ │ │ eop end │ │ │ │ %%Page: 20 22 │ │ │ │ -TeXDict begin 20 21 bop 83 100 781 4 v 947 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fo(20)208 │ │ │ │ +TeXDict begin 20 21 bop 83 100 760 4 v 926 100 a Fp(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fo(20)208 │ │ │ │ 390 y(The)h Fm(nrhs)f Fo(parameter)g(con)n(tains)g(the)i(n)n(um)n(b)r │ │ │ │ (er)f(of)g(righ)n(t)g(hand)g(sides,)g(or)g(equiv)-5 b(alen)n(tly)e(,)28 │ │ │ │ b(the)h(n)n(um)n(b)r(er)f(of)g(columns)208 490 y(in)f │ │ │ │ Fj(Y)19 b Fo(.)125 656 y Ff(\210)42 b Fo(Create)26 b(and)i(setup)g(the) │ │ │ │ g Fm(BridgeMT)c Fo(ob)5 b(ject.)208 855 y Fm(bridge)41 │ │ │ │ b(=)i(BridgeMT_new\(\))38 b(;)208 955 y(BridgeMT_setMat)o(rix)o(Pa)o │ │ │ │ (ra)o(ms\()o(br)o(idg)o(e,)f(neqns,)k(type,)h(symmetryflag\))c(;)208 │ │ │ │ @@ -8902,17 +8914,17 @@ │ │ │ │ b(The)28 b(solution)g(is)g(then)g(solv)n(ed.)208 5006 │ │ │ │ y(Again,)d(note)h(the)g(presence)g(of)f Fm(permuteflag)p │ │ │ │ Fo(.)32 b(When)27 b Fm(1)p Fo(,)f Fm(mtxY)e Fo(needs)i(to)f(b)r(e)i(p)r │ │ │ │ (erm)n(uted)f(in)n(to)f(the)i(new)f(ordering,)208 5106 │ │ │ │ y(and)h Fm(mtxX)f Fo(is)h(returned)h(in)g(the)f(original)g(ordering.)p │ │ │ │ eop end │ │ │ │ %%Page: 21 23 │ │ │ │ -TeXDict begin 21 22 bop 83 100 781 4 v 947 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fo(21)0 │ │ │ │ +TeXDict begin 21 22 bop 83 100 760 4 v 926 100 a Fp(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fo(21)0 │ │ │ │ 390 y Fe(4.2)135 b(The)45 b Fd(BridgeMT)c Fe(Data)46 │ │ │ │ b(Structure)0 596 y Fo(The)28 b Fm(BridgeMT)c Fo(structure)j(has)g(the) │ │ │ │ h(follo)n(wing)f(\014elds.)125 784 y Ff(\210)42 b Fo(Graph)27 │ │ │ │ b(parameters:)301 949 y Fp({)41 b Fm(int)i(neqns)25 b │ │ │ │ Fo(:)37 b(n)n(um)n(b)r(er)27 b(of)h(equations,)f(i.e.,)h(n)n(um)n(b)r │ │ │ │ (er)f(of)h(v)n(ertices)e(in)i(the)g(graph.)301 1081 y │ │ │ │ Fp({)41 b Fm(int)i(nedges)25 b Fo(:)37 b(n)n(um)n(b)r(er)27 │ │ │ │ @@ -8990,17 +9002,17 @@ │ │ │ │ b Fo(:)k(ob)5 b(ject)28 b(that)g(con)n(tains)e(the)i(sym)n(b)r(olic)f │ │ │ │ (factorization)g(of)g(the)h(matrix.)301 5308 y Fp({)41 │ │ │ │ b Fm(SubMtxManager)d(*mtxmanager)33 b Fo(:)55 b(ob)5 │ │ │ │ b(ject)37 b(that)g(manages)f(the)h Fm(SubMtx)d Fo(ob)5 │ │ │ │ b(jects)37 b(that)g(store)f(the)h(factor)390 5407 y(en)n(tries)27 │ │ │ │ b(and)h(are)e(used)i(in)g(the)g(solv)n(es.)p eop end │ │ │ │ %%Page: 22 24 │ │ │ │ -TeXDict begin 22 23 bop 83 100 781 4 v 947 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fo(22)301 │ │ │ │ +TeXDict begin 22 23 bop 83 100 760 4 v 926 100 a Fp(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fo(22)301 │ │ │ │ 390 y Fp({)41 b Fm(FrontMtx)f(*frontmtx)24 b Fo(:)37 │ │ │ │ b(ob)5 b(ject)28 b(that)g(stores)e(the)i Fj(L)p Fo(,)f │ │ │ │ Fj(D)j Fo(and)d Fj(U)37 b Fo(factor)27 b(matrices.)301 │ │ │ │ 523 y Fp({)41 b Fm(IV)i(*oldToNewIV)23 b Fo(:)28 b(ob)5 │ │ │ │ b(ject)27 b(that)h(stores)e(old-to-new)h(p)r(erm)n(utation)g(v)n │ │ │ │ (ector.)301 656 y Fp({)41 b Fm(IV)i(*newToOldIV)23 b │ │ │ │ Fo(:)28 b(ob)5 b(ject)27 b(that)h(stores)e(new-to-old)h(p)r(erm)n │ │ │ │ @@ -9074,17 +9086,17 @@ │ │ │ │ 4973 y Fb(4.3.1)112 b(Basic)38 b(metho)s(ds)0 5151 y │ │ │ │ Fo(As)21 b(usual,)g(there)f(are)g(four)g(basic)g(metho)r(ds)g(to)h │ │ │ │ (supp)r(ort)f(ob)5 b(ject)20 b(creation,)h(setting)f(default)h │ │ │ │ (\014elds,)h(clearing)d(an)n(y)h(allo)r(cated)0 5251 │ │ │ │ y(data,)27 b(and)h(free'ing)f(the)h(ob)5 b(ject.)p eop │ │ │ │ end │ │ │ │ %%Page: 23 25 │ │ │ │ -TeXDict begin 23 24 bop 83 100 781 4 v 947 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fo(23)101 │ │ │ │ +TeXDict begin 23 24 bop 83 100 760 4 v 926 100 a Fp(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fo(23)101 │ │ │ │ 390 y(1.)42 b Fm(BridgeMT)e(*)j(BridgeMT_new)c(\()k(void)f(\))h(;)208 │ │ │ │ 521 y Fo(This)27 b(metho)r(d)h(simply)g(allo)r(cates)f(storage)f(for)h │ │ │ │ (the)h Fm(BridgeMT)d Fo(structure)i(and)g(then)i(sets)e(the)h(default)g │ │ │ │ (\014elds)g(b)n(y)f(a)208 621 y(call)g(to)g Fm(BridgeMT)p │ │ │ │ 818 621 27 4 v 28 w(setDefaultFields\()o(\))p Fo(.)101 │ │ │ │ 783 y(2.)42 b Fm(int)g(BridgeMT_setDefa)o(ul)o(tFi)o(el)o(ds)37 │ │ │ │ b(\()43 b(BridgeMT)e(*bridge)f(\))j(;)208 913 y Fo(The)27 │ │ │ │ @@ -9148,17 +9160,17 @@ │ │ │ │ b Fm(int)g(BridgeMT_symbfac)o(IV)o(L)c(\()43 b(BridgeMT)d(*bridge,)g │ │ │ │ (IVL)j(**pobj)e(\))i(;)208 5276 y Fo(This)27 b(metho)r(d)h(\014lls)g │ │ │ │ Fm(*pobj)e Fo(with)i(its)f Fm(symbfacIVL)d Fo(p)r(oin)n(ter.)208 │ │ │ │ 5407 y Fg(R)l(eturn)k(value:)38 b Fo(1)27 b(for)g(a)g(normal)g(return,) │ │ │ │ g(-1)g(if)34 b Fm(bridge)25 b Fo(is)j Fm(NULL)p Fo(.)e(-2)h(if)34 │ │ │ │ b Fm(pobj)26 b Fo(is)i Fm(NULL)p Fo(.)p eop end │ │ │ │ %%Page: 24 26 │ │ │ │ -TeXDict begin 24 25 bop 83 100 781 4 v 947 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fo(24)101 │ │ │ │ +TeXDict begin 24 25 bop 83 100 760 4 v 926 100 a Fp(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fo(24)101 │ │ │ │ 390 y(5.)42 b Fm(int)g(BridgeMT_mtxmana)o(ge)o(r)c(\()43 │ │ │ │ b(BridgeMT)d(*bridge,)g(SubMtxManager)f(**pobj)i(\))i(;)208 │ │ │ │ 523 y Fo(This)27 b(metho)r(d)h(\014lls)g Fm(*pobj)e Fo(with)i(its)f │ │ │ │ Fm(mtxmanager)d Fo(p)r(oin)n(ter.)208 656 y Fg(R)l(eturn)k(value:)38 │ │ │ │ b Fo(1)27 b(for)g(a)g(normal)g(return,)g(-1)g(if)34 b │ │ │ │ Fm(bridge)25 b Fo(is)j Fm(NULL)p Fo(.)e(-2)h(if)34 b │ │ │ │ Fm(pobj)26 b Fo(is)i Fm(NULL)p Fo(.)101 822 y(6.)42 b │ │ │ │ @@ -9219,17 +9231,17 @@ │ │ │ │ (Par)o(am)o(s)c(\()43 b(BridgeMT)d(*bridge,)g(int)j(sparsityflag,)38 │ │ │ │ b(int)k(pivotingflag,)818 5125 y(double)f(tau,)h(double)f(droptol,)f │ │ │ │ (int)j(lookahead,)c(PatchAndGoInfo)f(*patchinfo)h(\))k(;)208 │ │ │ │ 5258 y Fo(This)27 b(metho)r(d)h(sets)g(parameters)d(needed)j(for)f(the) │ │ │ │ h(factorization.)208 5391 y Fg(R)l(eturn)g(value:)p eop │ │ │ │ end │ │ │ │ %%Page: 25 27 │ │ │ │ -TeXDict begin 25 26 bop 83 100 781 4 v 947 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fo(25)1135 │ │ │ │ +TeXDict begin 25 26 bop 83 100 760 4 v 926 100 a Fp(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fo(25)1135 │ │ │ │ 377 y(1)99 b(normal)27 b(return)1107 477 y(-1)99 b Fm(bridge)25 │ │ │ │ b Fo(is)j Fm(NULL)1107 576 y Fo(-2)99 b Fm(sparsityflag)23 │ │ │ │ b Fo(is)k(in)n(v)-5 b(alid)1107 676 y(-3)99 b Fm(pivotingflag)23 │ │ │ │ b Fo(is)k(in)n(v)-5 b(alid)2278 427 y(-4)98 b Fm(tau)27 │ │ │ │ b Fj(<)g Fo(2.0)2278 526 y(-5)98 b Fm(droptol)25 b Fj(<)i │ │ │ │ Fo(0.0)2278 626 y(-6)98 b Fm(lookahead)24 b Fj(<)k Fo(0)101 │ │ │ │ 871 y(4.)42 b Fm(int)g(BridgeMT_setMess)o(ag)o(esI)o(nf)o(o)c(\()43 │ │ │ │ @@ -9292,17 +9304,17 @@ │ │ │ │ b(whic)n(h)h(sp)r(eci\014es)g(the)g(relativ)n(e)f(size)g(of)h(a)g │ │ │ │ (subtree)f(that)h(forms)f(a)208 5132 y(domain.)49 b(If)39 │ │ │ │ b Fm(maptype)30 b Fo(is)i(not)g(one)f(of)h(1,)h(2,)g(3)f(or)f(4,)i(the) │ │ │ │ f(default)h(map)f(is)g(used:)45 b(domain)32 b(decomp)r(osition)g(with) │ │ │ │ 208 5232 y Fm(cutoff)25 b Fo(=)i(1/\(2*)p Fm(nthread)p │ │ │ │ Fo(\).)208 5365 y Fg(R)l(eturn)h(value:)p eop end │ │ │ │ %%Page: 26 28 │ │ │ │ -TeXDict begin 26 27 bop 83 100 781 4 v 947 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fo(26)618 │ │ │ │ +TeXDict begin 26 27 bop 83 100 760 4 v 926 100 a Fp(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fo(26)618 │ │ │ │ 377 y(1)99 b(normal)26 b(return,)i(factorization)e(did)i(complete)590 │ │ │ │ 477 y(-1)99 b Fm(bridge)25 b Fo(is)i Fm(NULL)2393 377 │ │ │ │ y Fo(-2)99 b Fm(nthread)24 b Fj(<)k Fo(1)2393 477 y(-5)99 │ │ │ │ b Fm(frontETree)23 b Fo(is)28 b(not)f(presen)n(t)101 │ │ │ │ 672 y(2.)42 b Fm(int)g(BridgeMT_factor)37 b(\()43 b(BridgeMT)e │ │ │ │ (*bridge,)f(InpMtx)h(*mtxA,)g(int)i(permuteflag,)38 b(int)43 │ │ │ │ b(*perror)d(\))j(;)208 805 y Fo(This)24 b(metho)r(d)g(p)r(erm)n(utes)g │ │ │ │ @@ -9399,17 +9411,17 @@ │ │ │ │ Fm(BridgeMPI)d Fo(driv)n(er)i(program)f(\(whose)i(complete)g(listing)g │ │ │ │ (is)g(found)h(in)0 5164 y(App)r(endix)32 b(C\).)49 b(Section)32 │ │ │ │ b(5.2)e(describ)r(es)h(the)h(in)n(ternal)f(data)g(\014elds)g(of)h(the)g │ │ │ │ Fm(BridgeMPI)c Fo(ob)5 b(ject.)48 b(Section)31 b(3.3)g(con)n(tains)0 │ │ │ │ 5264 y(the)d(protot)n(yp)r(es)e(and)i(descriptions)f(of)g(all)h │ │ │ │ Fm(Bridge)d Fo(metho)r(ds.)1908 5656 y(27)p eop end │ │ │ │ %%Page: 28 30 │ │ │ │ -TeXDict begin 28 29 bop 83 100 781 4 v 947 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fo(28)0 │ │ │ │ +TeXDict begin 28 29 bop 83 100 760 4 v 926 100 a Fp(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fo(28)0 │ │ │ │ 390 y Fe(5.1)135 b(A)45 b(quic)l(k)g(lo)t(ok)g(at)h(the)f(MPI)f(driv)l │ │ │ │ (er)i(program)0 594 y Fo(The)28 b(en)n(tire)f(listing)g(of)h(this)g │ │ │ │ (MPI)f(driv)n(er)f(is)i(found)g(in)g(App)r(endix)g(C.)37 │ │ │ │ b(W)-7 b(e)28 b(no)n(w)f(extract)g(parts)g(of)g(the)h(co)r(de.)125 │ │ │ │ 769 y Ff(\210)42 b Fo(Deco)r(de)27 b(the)h(input.)208 │ │ │ │ 966 y Fm(msglvl)302 b(=)43 b(atoi\(argv[1]\))c(;)208 │ │ │ │ 1065 y(msgFileName)82 b(=)43 b(argv[6])e(;)208 1165 y(neqns)346 │ │ │ │ @@ -9473,17 +9485,17 @@ │ │ │ │ (er)f(of)g(columns)208 5308 y(in)d Fj(Y)18 b Fo(.)36 │ │ │ │ b(Pro)r(cessor)23 b(0)h(then)h(broadcasts)e(the)j(error)d(return)h(to)h │ │ │ │ (the)g(other)g(pro)r(cessors.)33 b(If)25 b(an)g(error)e(o)r(ccured)h │ │ │ │ (reading)208 5407 y(in)j(the)h(matrix,)g(all)f(pro)r(cessors)e(call)i │ │ │ │ Fm(MPI)p 1541 5407 V 30 w(Finalize\(\))d Fo(and)j(exit.)p │ │ │ │ eop end │ │ │ │ %%Page: 29 31 │ │ │ │ -TeXDict begin 29 30 bop 83 100 781 4 v 947 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fo(29)125 │ │ │ │ +TeXDict begin 29 30 bop 83 100 760 4 v 926 100 a Fp(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fo(29)125 │ │ │ │ 390 y Ff(\210)42 b Fo(Create)26 b(and)i(setup)g(the)g │ │ │ │ Fm(BridgeMPI)c Fo(ob)5 b(ject.)208 589 y Fm(bridge)41 │ │ │ │ b(=)i(BridgeMPI_new\(\))37 b(;)208 689 y(BridgeMPI_setMP)o(Ipa)o(ra)o │ │ │ │ (ms)o(\(br)o(id)o(ge,)g(nproc,)k(myid,)g(MPI_COMM_WORLD\))d(;)208 │ │ │ │ 789 y(BridgeMPI_setMa)o(tri)o(xP)o(ar)o(ams)o(\(b)o(rid)o(ge)o(,)f │ │ │ │ (neqns,)42 b(type,)f(symmetryflag\))d(;)208 888 y(BridgeMPI_setMe)o │ │ │ │ (ssa)o(ge)o(In)o(fo\()o(br)o(idg)o(e,)f(msglvl,)k(msgFile\))f(;)208 │ │ │ │ @@ -9539,17 +9551,17 @@ │ │ │ │ o(rid)o(ge)o(,)38 b(permuteflag,)g(mtxX,)k(mtxY\))f(;)208 │ │ │ │ 5139 y Fo(Again,)25 b(note)h(the)g(presence)g(of)f Fm(permuteflag)p │ │ │ │ Fo(.)32 b(When)27 b Fm(1)p Fo(,)f Fm(mtxY)e Fo(needs)i(to)f(b)r(e)i(p)r │ │ │ │ (erm)n(uted)f(in)n(to)f(the)i(new)f(ordering,)208 5239 │ │ │ │ y(and)h Fm(mtxX)f Fo(is)h(returned)h(in)g(the)f(original)g(ordering.)p │ │ │ │ eop end │ │ │ │ %%Page: 30 32 │ │ │ │ -TeXDict begin 30 31 bop 83 100 781 4 v 947 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fo(30)0 │ │ │ │ +TeXDict begin 30 31 bop 83 100 760 4 v 926 100 a Fp(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fo(30)0 │ │ │ │ 390 y Fe(5.2)135 b(The)45 b Fd(BridgeMPI)40 b Fe(Data)46 │ │ │ │ b(Structure)0 595 y Fo(The)28 b Fm(BridgeMPI)c Fo(structure)j(has)g │ │ │ │ (the)h(follo)n(wing)e(\014elds.)125 776 y Ff(\210)42 │ │ │ │ b Fo(Graph)27 b(parameters:)301 939 y Fp({)41 b Fm(int)i(neqns)25 │ │ │ │ b Fo(:)37 b(n)n(um)n(b)r(er)27 b(of)h(equations,)f(i.e.,)h(n)n(um)n(b)r │ │ │ │ (er)f(of)h(v)n(ertices)e(in)i(the)g(graph.)301 1068 y │ │ │ │ Fp({)41 b Fm(int)i(nedges)25 b Fo(:)37 b(n)n(um)n(b)r(er)27 │ │ │ │ @@ -9632,17 +9644,17 @@ │ │ │ │ b(ject)30 b(that)h(de\014nes)f(the)h(factorizations,)e(e.g.,)i(the)g(n) │ │ │ │ n(um)n(b)r(er)f(of)g(fron)n(ts,)h(the)f(tree)390 5308 │ │ │ │ y(they)d(form,)f(the)h(n)n(um)n(b)r(er)g(of)f(in)n(ternal)g(and)h │ │ │ │ (external)e(ro)n(ws)g(for)h(eac)n(h)g(fron)n(t,)h(and)f(the)h(map)g │ │ │ │ (from)f(v)n(ertices)f(to)390 5407 y(the)j(fron)n(t)f(where)g(it)h(is)g │ │ │ │ (con)n(tained.)p eop end │ │ │ │ %%Page: 31 33 │ │ │ │ -TeXDict begin 31 32 bop 83 100 781 4 v 947 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fo(31)301 │ │ │ │ +TeXDict begin 31 32 bop 83 100 760 4 v 926 100 a Fp(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fo(31)301 │ │ │ │ 390 y Fp({)41 b Fm(IVL)i(*symbfacIVL)23 b Fo(:)k(ob)5 │ │ │ │ b(ject)28 b(that)g(con)n(tains)e(the)i(sym)n(b)r(olic)f(factorization)g │ │ │ │ (of)g(the)h(matrix.)301 510 y Fp({)41 b Fm(SubMtxManager)d(*mtxmanager) │ │ │ │ 33 b Fo(:)55 b(ob)5 b(ject)37 b(that)g(manages)f(the)h │ │ │ │ Fm(SubMtx)d Fo(ob)5 b(jects)37 b(that)g(store)f(the)h(factor)390 │ │ │ │ 610 y(en)n(tries)27 b(and)h(are)e(used)i(in)g(the)g(solv)n(es.)301 │ │ │ │ 729 y Fp({)41 b Fm(FrontMtx)f(*frontmtx)24 b Fo(:)37 │ │ │ │ @@ -9728,17 +9740,17 @@ │ │ │ │ Fo(:)99 b(distribute)28 b(rhs)2257 5020 y Fm(cpus[17])d │ │ │ │ Fo(:)99 b(create)27 b(solution)g(matrix)2257 5120 y Fm(cpus[18])e │ │ │ │ Fo(:)99 b(solv)n(e)2257 5220 y Fm(cpus[19])25 b Fo(:)99 │ │ │ │ b(gather)27 b(solution)2257 5319 y Fm(cpus[20])e Fo(:)99 │ │ │ │ b(p)r(erm)n(ute)28 b(solution)2257 5419 y Fm(cpus[21])d │ │ │ │ Fo(:)99 b(total)28 b(solv)n(e)e(time)p eop end │ │ │ │ %%Page: 32 34 │ │ │ │ -TeXDict begin 32 33 bop 83 100 781 4 v 947 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fo(32)0 │ │ │ │ +TeXDict begin 32 33 bop 83 100 760 4 v 926 100 a Fp(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fo(32)0 │ │ │ │ 390 y Fe(5.3)135 b(Protot)l(yp)t(es)46 b(and)f(descriptions)g(of)58 │ │ │ │ b Fd(BridgeMPI)40 b Fe(metho)t(ds)0 597 y Fo(This)32 │ │ │ │ b(section)f(con)n(tains)g(brief)h(descriptions)f(including)h(protot)n │ │ │ │ (yp)r(es)e(of)i(all)f(metho)r(ds)h(that)h(b)r(elong)e(to)h(the)g │ │ │ │ Fm(BridgeMPI)0 697 y Fo(ob)5 b(ject.)0 954 y Fb(5.3.1)112 │ │ │ │ b(Basic)38 b(metho)s(ds)0 1132 y Fo(As)21 b(usual,)g(there)f(are)g │ │ │ │ (four)g(basic)g(metho)r(ds)g(to)h(supp)r(ort)f(ob)5 b(ject)20 │ │ │ │ @@ -9791,17 +9803,17 @@ │ │ │ │ (\))k(;)208 4561 y Fo(This)35 b(metho)r(d)g(releases)f(an)n(y)g │ │ │ │ (storage)f(b)n(y)i(a)g(call)g(to)g Fm(BridgeMPI)p 2351 │ │ │ │ 4561 V 27 w(clearData\(\))c Fo(and)k(then)h(free)f(the)g(space)g(for) │ │ │ │ 208 4660 y Fm(bridge)p Fo(.)208 4793 y Fg(R)l(eturn)28 │ │ │ │ b(value:)38 b Fo(1)27 b(for)g(a)g(normal)g(return,)g(-1)g(if)34 │ │ │ │ b Fm(bridge)25 b Fo(is)j Fm(NULL)p Fo(.)p eop end │ │ │ │ %%Page: 33 35 │ │ │ │ -TeXDict begin 33 34 bop 83 100 781 4 v 947 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fo(33)0 │ │ │ │ +TeXDict begin 33 34 bop 83 100 760 4 v 926 100 a Fp(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fo(33)0 │ │ │ │ 390 y Fb(5.3.2)112 b(Instance)38 b(metho)s(ds)101 568 │ │ │ │ y Fo(1.)k Fm(int)g(BridgeMPI_oldToN)o(ew)o(IV)37 b(\()43 │ │ │ │ b(BridgeMPI)d(*bridge,)h(IV)h(**pobj)f(\))j(;)208 701 │ │ │ │ y Fo(This)27 b(metho)r(d)h(\014lls)g Fm(*pobj)e Fo(with)i(its)f │ │ │ │ Fm(oldToNewIV)d Fo(p)r(oin)n(ter.)208 834 y Fg(R)l(eturn)k(value:)38 │ │ │ │ b Fo(1)27 b(for)g(a)g(normal)g(return,)g(-1)g(if)34 b │ │ │ │ Fm(bridge)25 b Fo(is)j Fm(NULL)p Fo(.)e(-2)h(if)34 b │ │ │ │ @@ -9871,17 +9883,17 @@ │ │ │ │ 5018 y Fo(This)27 b(metho)r(d)h(\014lls)g Fm(*pobj)e │ │ │ │ Fo(with)i(its)f Fm(ownedColumnsIV)22 b Fo(p)r(oin)n(ter.)208 │ │ │ │ 5151 y Fg(R)l(eturn)28 b(value:)38 b Fo(1)27 b(for)g(a)g(normal)g │ │ │ │ (return,)g(-1)g(if)34 b Fm(bridge)25 b Fo(is)j Fm(NULL)p │ │ │ │ Fo(.)e(-2)h(if)34 b Fm(pobj)26 b Fo(is)i Fm(NULL)p Fo(.)p │ │ │ │ eop end │ │ │ │ %%Page: 34 36 │ │ │ │ -TeXDict begin 34 35 bop 83 100 781 4 v 947 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fo(34)60 │ │ │ │ +TeXDict begin 34 35 bop 83 100 760 4 v 926 100 a Fp(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fo(34)60 │ │ │ │ 390 y(12.)41 b Fm(int)h(BridgeMPI_Xloc)c(\()43 b(BridgeMPI)d(*bridge,)g │ │ │ │ (DenseMtx)g(**pobj)h(\))j(;)208 523 y Fo(This)27 b(metho)r(d)h(\014lls) │ │ │ │ g Fm(*pobj)e Fo(with)i(its)f Fm(Xloc)f Fo(p)r(oin)n(ter.)208 │ │ │ │ 656 y Fg(R)l(eturn)i(value:)38 b Fo(1)27 b(for)g(a)g(normal)g(return,)g │ │ │ │ (-1)g(if)34 b Fm(bridge)25 b Fo(is)j Fm(NULL)p Fo(.)e(-2)h(if)34 │ │ │ │ b Fm(pobj)26 b Fo(is)i Fm(NULL)p Fo(.)60 822 y(13.)41 │ │ │ │ b Fm(int)h(BridgeMPI_Yloc)c(\()43 b(BridgeMPI)d(*bridge,)g(DenseMtx)g │ │ │ │ @@ -9936,17 +9948,17 @@ │ │ │ │ y Fg(R)l(eturn)g(value:)1099 4938 y Fo(1)99 b(normal)27 │ │ │ │ b(return)1071 5037 y(-1)99 b Fm(bridge)25 b Fo(is)j Fm(NULL)1071 │ │ │ │ 5137 y Fo(-2)99 b Fm(maxdomainsize)23 b Fc(\024)k Fo(0)2096 │ │ │ │ 4987 y(-3)98 b Fm(maxsize)25 b Fc(\024)i Fo(0)2096 5087 │ │ │ │ y(-4)98 b Fm(compressCutoff)22 b Fj(>)28 b Fo(1)p eop │ │ │ │ end │ │ │ │ %%Page: 35 37 │ │ │ │ -TeXDict begin 35 36 bop 83 100 781 4 v 947 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fo(35)101 │ │ │ │ +TeXDict begin 35 36 bop 83 100 760 4 v 926 100 a Fp(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fo(35)101 │ │ │ │ 390 y(4.)42 b Fm(int)g(BridgeMPI_setFac)o(to)o(rPa)o(ra)o(ms)37 │ │ │ │ b(\()43 b(BridgeMPI)d(*bridge,)g(int)j(sparsityflag,)38 │ │ │ │ b(int)k(pivotingflag,)818 490 y(double)f(tau,)h(double)f(droptol,)f │ │ │ │ (int)j(lookahead,)c(PatchAndGoInfo)f(*patchinfo)h(\))k(;)208 │ │ │ │ 623 y Fo(This)27 b(metho)r(d)h(sets)g(parameters)d(needed)j(for)f(the)h │ │ │ │ (factorization.)208 756 y Fg(R)l(eturn)g(value:)1135 │ │ │ │ 933 y Fo(1)99 b(normal)27 b(return)1107 1033 y(-1)99 │ │ │ │ @@ -10003,17 +10015,17 @@ │ │ │ │ Fo(parameter)h(can)h(b)r(e)h(one)f(of)h(four)f(v)-5 b(alues:)307 │ │ │ │ 4725 y Ff(\210)42 b Fo(1)27 b(|)h(wrap)f(map)307 4858 │ │ │ │ y Ff(\210)42 b Fo(2)27 b(|)h(balanced)f(map)307 4991 │ │ │ │ y Ff(\210)42 b Fo(3)27 b(|)h(subtree-subset)f(map)307 │ │ │ │ 5124 y Ff(\210)42 b Fo(4)27 b(|)h(domain)f(decomp)r(osition)g(map)p │ │ │ │ eop end │ │ │ │ %%Page: 36 38 │ │ │ │ -TeXDict begin 36 37 bop 83 100 781 4 v 947 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fo(36)208 │ │ │ │ +TeXDict begin 36 37 bop 83 100 760 4 v 926 100 a Fp(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fo(36)208 │ │ │ │ 390 y(The)22 b(wrap)g(map)h(and)g(balanced)f(map)g(are)g(not)h │ │ │ │ (recommended.)35 b(The)23 b(subtree-subset)f(map)g(is)h(a)f(go)r(o)r(d) │ │ │ │ h(map)f(with)h(a)208 490 y(v)n(ery)j(w)n(ell)i(balanced)f(nested)g │ │ │ │ (dissection)h(ordering.)35 b(The)28 b(domain)f(decomp)r(osition)h(map)f │ │ │ │ (is)h(recommended)f(when)208 589 y(the)j(nested)h(dissection)e(tree)h │ │ │ │ (is)h(im)n(balanced)e(or)g(for)h(the)h(m)n(ultisection)f(ordering.)43 │ │ │ │ b(The)31 b(domain)f(decomp)r(osition)208 689 y(map)i(requires)g(a)g │ │ │ │ @@ -10093,17 +10105,17 @@ │ │ │ │ (--)o(---)o(--)o(---)o(--)o(--)o(-*/)0 4674 y(/*)174 │ │ │ │ 4774 y(-----------------)o(--)o(-)174 4873 y(get)i(input)e(parameters) │ │ │ │ 174 4973 y(-----------------)o(--)o(-)0 5073 y(*/)0 5172 │ │ │ │ y(if)i(\()g(argc)f(!=)h(10)f(\))i({)131 5272 y(fprintf\(stdout,)479 │ │ │ │ 5372 y("\\n\\n)e(usage)f(:)j(\045s)e(msglvl)g(msgFile)e(neqns)i(type)g │ │ │ │ (symmetryflag")1908 5656 y Fo(37)p eop end │ │ │ │ %%Page: 38 40 │ │ │ │ -TeXDict begin 38 39 bop 83 100 781 4 v 947 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fo(38)479 │ │ │ │ +TeXDict begin 38 39 bop 83 100 760 4 v 926 100 a Fp(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fo(38)479 │ │ │ │ 390 y Fm("\\n)391 b(mtxFile)41 b(rhsFile)g(seed")479 │ │ │ │ 490 y("\\n)130 b(msglvl)85 b(--)42 b(message)f(level")479 │ │ │ │ 589 y("\\n)261 b(0)43 b(--)g(no)f(output")479 689 y("\\n)261 │ │ │ │ b(1)43 b(--)g(timings)d(and)j(statistics")479 789 y("\\n)261 │ │ │ │ b(2)43 b(and)f(greater)f(--)i(lots)f(of)g(output")479 │ │ │ │ 888 y("\\n)130 b(msgFile)41 b(--)h(message)f(file")479 │ │ │ │ 988 y("\\n)130 b(neqns)f(--)42 b(#)i(of)e(equations")479 │ │ │ │ @@ -10139,17 +10151,17 @@ │ │ │ │ 4674 y("\\n\\n)j(\045s)i(input)e(:")349 4774 y("\\n)h(msglvl)303 │ │ │ │ b(=)43 b(\045d")349 4873 y("\\n)f(msgFile)259 b(=)43 │ │ │ │ b(\045s")349 4973 y("\\n)f(neqns)347 b(=)43 b(\045d")349 │ │ │ │ 5073 y("\\n)f(type)391 b(=)43 b(\045d")349 5172 y("\\n)f(symmetryflag)d │ │ │ │ (=)k(\045d")349 5272 y("\\n)f(mtxFile)259 b(=)43 b(\045s")349 │ │ │ │ 5372 y("\\n)f(rhsFile)259 b(=)43 b(\045s")p eop end │ │ │ │ %%Page: 39 41 │ │ │ │ -TeXDict begin 39 40 bop 83 100 781 4 v 947 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fo(39)349 │ │ │ │ +TeXDict begin 39 40 bop 83 100 760 4 v 926 100 a Fp(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fo(39)349 │ │ │ │ 390 y Fm("\\n)42 b(solFile)259 b(=)43 b(\045s")349 490 │ │ │ │ y("\\n)f(seed)391 b(=)43 b(\045d")349 589 y("\\n",)349 │ │ │ │ 689 y(argv[0],)d(msglvl,)h(argv[2],)f(neqns,)h(type,)h(symmetryflag,) │ │ │ │ 349 789 y(mtxFileName,)c(rhsFileName,)h(solFileName,)g(seed\))i(;)0 │ │ │ │ 988 y(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o │ │ │ │ (--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (--)o(-*/)0 1088 y(/*)131 1187 y(----------------)o(--)131 │ │ │ │ @@ -10184,17 +10196,17 @@ │ │ │ │ (--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o │ │ │ │ (---)o(--)o(---)o(--)o(--)o(-*/)0 4973 y(/*)131 5073 │ │ │ │ y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(--)131 │ │ │ │ 5172 y(create)g(and)h(setup)g(a)h(Bridge)e(object)131 │ │ │ │ 5272 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(--)0 │ │ │ │ 5372 y(*/)p eop end │ │ │ │ %%Page: 40 42 │ │ │ │ -TeXDict begin 40 41 bop 83 100 781 4 v 947 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fo(40)0 │ │ │ │ +TeXDict begin 40 41 bop 83 100 760 4 v 926 100 a Fp(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fo(40)0 │ │ │ │ 390 y Fm(bridge)41 b(=)i(Bridge_new\(\))c(;)0 490 y(Bridge_setMatrix)o │ │ │ │ (Par)o(am)o(s\()o(bri)o(dg)o(e,)e(neqns,)k(type,)h(symmetryflag\))c(;)0 │ │ │ │ 589 y(Bridge_setMessag)o(eIn)o(fo)o(\(b)o(rid)o(ge)o(,)g(msglvl,)i │ │ │ │ (msgFile\))h(;)0 689 y(rc)i(=)g(Bridge_setup\(bri)o(dg)o(e,)37 │ │ │ │ b(mtxA\))42 b(;)0 789 y(if)h(\()g(rc)g(!=)f(1)i(\))f({)131 │ │ │ │ 888 y(fprintf\(stderr,)37 b("\\n)42 b(error)g(return)f(\045d)i(from)f │ │ │ │ (Bridge_setup\(\)",)37 b(rc\))42 b(;)131 988 y(exit\(-1\))e(;)0 │ │ │ │ @@ -10234,17 +10246,17 @@ │ │ │ │ (-----\\n"\))i(;)0 5073 y(fprintf\(msgFile,)349 5172 │ │ │ │ y("\\n)173 b(CPU)42 b(\0458.3f)g(:)h(time)f(to)h(permute)d(original)g │ │ │ │ (matrix")349 5272 y("\\n)173 b(CPU)42 b(\0458.3f)g(:)h(time)f(to)h │ │ │ │ (initialize)c(factor)i(matrix")349 5372 y("\\n)173 b(CPU)42 │ │ │ │ b(\0458.3f)g(:)h(time)f(to)h(compute)d(factorization")p │ │ │ │ eop end │ │ │ │ %%Page: 41 43 │ │ │ │ -TeXDict begin 41 42 bop 83 100 781 4 v 947 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fo(41)349 │ │ │ │ +TeXDict begin 41 42 bop 83 100 760 4 v 926 100 a Fp(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fo(41)349 │ │ │ │ 390 y Fm("\\n)173 b(CPU)42 b(\0458.3f)g(:)h(time)f(to)h(post-process)38 │ │ │ │ b(factorization")349 490 y("\\n)k(CPU)g(\0458.3f)g(:)h(total)f │ │ │ │ (factorization)c(time\\n",)349 589 y(bridge->cpus[5])o(,)g │ │ │ │ (bridge->cpus[6])o(,)g(bridge->cpus[7])o(,)349 689 y(bridge->cpus[8])o │ │ │ │ (,)g(bridge->cpus[9])o(\))g(;)0 789 y(fprintf\(msgFile,)f("\\n\\n)k │ │ │ │ (factorization)e(statistics")349 888 y("\\n)j(\045d)h(pivots,)d(\045d)j │ │ │ │ (pivot)f(tests,)f(\045d)i(delayed)d(vertices")349 988 │ │ │ │ @@ -10289,17 +10301,17 @@ │ │ │ │ 4973 y(})0 5073 y(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---)o │ │ │ │ (--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (---)o(--)o(--)o(-*/)0 5172 y(if)43 b(\()g(strcmp\(solFileNa)o(me)o(,) │ │ │ │ 38 b("none"\))i(!=)j(0)g(\))g({)0 5272 y(/*)131 5372 │ │ │ │ y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)p │ │ │ │ eop end │ │ │ │ %%Page: 42 44 │ │ │ │ -TeXDict begin 42 43 bop 83 100 781 4 v 947 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fo(42)131 │ │ │ │ +TeXDict begin 42 43 bop 83 100 760 4 v 926 100 a Fp(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fo(42)131 │ │ │ │ 390 y Fm(write)41 b(the)i(solution)d(matrix)h(to)i(a)g(file)131 │ │ │ │ 490 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)0 │ │ │ │ 589 y(*/)131 689 y(rc)g(=)g(DenseMtx_writeT)o(oFi)o(le)o(\(mt)o(xX)o(,) │ │ │ │ 38 b(solFileName\))g(;)131 789 y(if)43 b(\()g(rc)f(!=)h(1)g(\))h({)262 │ │ │ │ 888 y(fprintf\(msgFile)o(,)610 988 y("\\n)f(fatal)e(error)h(writing)e │ │ │ │ (mtxX)i(to)h(file)f(\045s,)g(rc)h(=)g(\045d",)610 1088 │ │ │ │ y(solFileName,)c(rc\))j(;)262 1187 y(fflush\(msgFile\))37 │ │ │ │ @@ -10344,17 +10356,17 @@ │ │ │ │ (---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o │ │ │ │ (--)o(---)o(--)o(---)o(--)o(--)o(-*/)0 4873 y(/*)174 │ │ │ │ 4973 y(-----------------)o(--)o(-)174 5073 y(get)i(input)e(parameters) │ │ │ │ 174 5172 y(-----------------)o(--)o(-)0 5272 y(*/)0 5372 │ │ │ │ y(if)i(\()g(argc)f(!=)h(11)f(\))i({)1908 5656 y Fo(43)p │ │ │ │ eop end │ │ │ │ %%Page: 44 46 │ │ │ │ -TeXDict begin 44 45 bop 83 100 781 4 v 947 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fo(44)131 │ │ │ │ +TeXDict begin 44 45 bop 83 100 760 4 v 926 100 a Fp(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fo(44)131 │ │ │ │ 390 y Fm(fprintf\(stdout,)392 490 y("\\n\\n)42 b(usage)f(:)i(\045s)g │ │ │ │ (msglvl)e(msgFile)g(neqns)h(type)f(symmetryflag)e(")392 │ │ │ │ 589 y("\\n)391 b(mtxFile)41 b(rhsFile)g(solFile)f(seed)i(nthread\\n") │ │ │ │ 392 689 y("\\n)130 b(msglvl)84 b(--)43 b(message)e(level")392 │ │ │ │ 789 y("\\n)261 b(0)43 b(--)f(no)h(output")392 888 y("\\n)261 │ │ │ │ b(1)43 b(--)f(timings)f(and)i(statistics")392 988 y("\\n)261 │ │ │ │ b(2)43 b(and)f(greater)f(--)i(lots)e(of)i(output")392 │ │ │ │ @@ -10392,17 +10404,17 @@ │ │ │ │ 4774 y(seed)391 b(=)43 b(atoi\(argv[9]\))38 b(;)0 4873 │ │ │ │ y(nthread)259 b(=)43 b(atoi\(argv[10]\))38 b(;)0 4973 │ │ │ │ y(fprintf\(msgFile,)349 5073 y("\\n\\n)j(\045s)i(input)e(:")349 │ │ │ │ 5172 y("\\n)h(msglvl)303 b(=)43 b(\045d")349 5272 y("\\n)f(msgFile)259 │ │ │ │ b(=)43 b(\045s")349 5372 y("\\n)f(neqns)347 b(=)43 b(\045d")p │ │ │ │ eop end │ │ │ │ %%Page: 45 47 │ │ │ │ -TeXDict begin 45 46 bop 83 100 781 4 v 947 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fo(45)349 │ │ │ │ +TeXDict begin 45 46 bop 83 100 760 4 v 926 100 a Fp(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fo(45)349 │ │ │ │ 390 y Fm("\\n)42 b(type)391 b(=)43 b(\045d")349 490 y("\\n)f │ │ │ │ (symmetryflag)d(=)k(\045d")349 589 y("\\n)f(mtxFile)259 │ │ │ │ b(=)43 b(\045s")349 689 y("\\n)f(rhsFile)259 b(=)43 b(\045s")349 │ │ │ │ 789 y("\\n)f(solFile)259 b(=)43 b(\045s")349 888 y("\\n)f(nthread)259 │ │ │ │ b(=)43 b(\045d")349 988 y("\\n",)349 1088 y(argv[0],)d(msglvl,)h │ │ │ │ (argv[2],)f(neqns,)h(type,)h(symmetryflag,)349 1187 y(mtxFileName,)c │ │ │ │ (rhsFileName,)h(solFileName,)g(nthread\))h(;)0 1287 y(/*--------------) │ │ │ │ @@ -10438,17 +10450,17 @@ │ │ │ │ d(;)0 4973 y(})0 5073 y(DenseMtx_dimensi)o(ons)o(\(m)o(tx)o(Y,)g │ │ │ │ (&nrow,)k(&nrhs\))g(;)0 5172 y(/*--------------)o(---)o(--)o(--)o(---)o │ │ │ │ (--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o │ │ │ │ (---)o(--)o(---)o(--)o(--)o(-*/)0 5272 y(/*)131 5372 │ │ │ │ y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(-)p │ │ │ │ eop end │ │ │ │ %%Page: 46 48 │ │ │ │ -TeXDict begin 46 47 bop 83 100 781 4 v 947 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fo(46)131 │ │ │ │ +TeXDict begin 46 47 bop 83 100 760 4 v 926 100 a Fp(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fo(46)131 │ │ │ │ 390 y Fm(create)41 b(and)h(setup)g(a)h(BridgeMT)d(object)131 │ │ │ │ 490 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(-)0 │ │ │ │ 589 y(*/)0 689 y(bridge)h(=)i(BridgeMT_new\(\))38 b(;)0 │ │ │ │ 789 y(BridgeMT_setMatr)o(ixP)o(ar)o(am)o(s\(b)o(ri)o(dge)o(,)f(neqns,)k │ │ │ │ (type,)h(symmetryflag\))c(;)0 888 y(BridgeMT_setMess)o(age)o(In)o(fo)o │ │ │ │ (\(br)o(id)o(ge,)f(msglvl,)j(msgFile\))h(;)0 988 y(rc)i(=)g │ │ │ │ (BridgeMT_setup\(b)o(ri)o(dge)o(,)37 b(mtxA\))42 b(;)0 │ │ │ │ @@ -10487,17 +10499,17 @@ │ │ │ │ 4774 y(fprintf\(msgFile,)349 4873 y("\\n)173 b(CPU)42 │ │ │ │ b(\0458.3f)g(:)h(time)f(to)h(setup)e(parallel)f(factorization",)349 │ │ │ │ 4973 y(bridge->cpus[5])o(\))e(;)0 5073 y(if)43 b(\()g(msglvl)e(>)i(0)g │ │ │ │ (\))h({)131 5172 y(fprintf\(msgFile,)37 b("\\n)42 b(total)g(factor)f │ │ │ │ (operations)e(=)k(\045.0f",)479 5272 y(DV_sum\(bridge->cu)o(mop)o(sD)o │ │ │ │ (V\)\))37 b(;)131 5372 y(fprintf\(msgFile,)p eop end │ │ │ │ %%Page: 47 49 │ │ │ │ -TeXDict begin 47 48 bop 83 100 781 4 v 947 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fo(47)479 │ │ │ │ +TeXDict begin 47 48 bop 83 100 760 4 v 926 100 a Fp(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fo(47)479 │ │ │ │ 390 y Fm("\\n)43 b(upper)e(bound)h(on)h(speedup)d(due)j(to)f(load)g │ │ │ │ (balance)f(=)i(\045.2f",)479 490 y(DV_sum\(bridge->cu)o(mop)o(sD)o │ │ │ │ (V\)/)o(DV)o(_m)o(ax\()o(br)o(idg)o(e-)o(>c)o(umo)o(ps)o(DV\))o(\))37 │ │ │ │ b(;)131 589 y(fprintf\(msgFile,)g("\\n)42 b(operations)e(distributions) │ │ │ │ e(over)k(threads"\))e(;)131 689 y(DV_writeForHuman)o(Ey)o(e\()o(bri)o │ │ │ │ (dg)o(e->)o(cu)o(mop)o(sD)o(V,)d(msgFile\))j(;)131 789 │ │ │ │ y(fflush\(msgFile\))d(;)0 888 y(})0 988 y(/*--------------)o(---)o(--)o │ │ │ │ @@ -10536,17 +10548,17 @@ │ │ │ │ (cpu)o(s[)o(10)o(]\))c(;)0 4774 y(fflush\(msgFile\))g(;)0 │ │ │ │ 4873 y(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o │ │ │ │ (--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (--)o(-*/)0 4973 y(/*)131 5073 y(----------------)o(--)o(--)o(---)o(-) │ │ │ │ 131 5172 y(setup)k(the)i(parallel)d(solve)131 5272 y(----------------)o │ │ │ │ (--)o(--)o(---)o(-)0 5372 y(*/)p eop end │ │ │ │ %%Page: 48 50 │ │ │ │ -TeXDict begin 48 49 bop 83 100 781 4 v 947 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fo(48)0 │ │ │ │ +TeXDict begin 48 49 bop 83 100 760 4 v 926 100 a Fp(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fo(48)0 │ │ │ │ 390 y Fm(rc)43 b(=)g(BridgeMT_solveSe)o(tu)o(p\(b)o(ri)o(dge)o(\))37 │ │ │ │ b(;)0 490 y(fprintf\(msgFile,)g("\\n\\n)k(-----)h(PARALLEL)e(SOLVE)i │ │ │ │ (SETUP)f(-----\\n"\))f(;)0 589 y(fprintf\(msgFile,)349 │ │ │ │ 689 y("\\n)173 b(CPU)42 b(\0458.3f)g(:)h(time)f(to)h(setup)e(parallel)f │ │ │ │ (solve",)349 789 y(bridge->cpus[11)o(]\))d(;)0 888 y(/*--------------)o │ │ │ │ (---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o │ │ │ │ (--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(-*/)0 │ │ │ │ @@ -10587,17 +10599,17 @@ │ │ │ │ 4774 y(*/)131 4873 y(rc)g(=)g(DenseMtx_writeT)o(oFi)o(le)o(\(mt)o(xX)o │ │ │ │ (,)38 b(solFileName\))g(;)131 4973 y(if)43 b(\()g(rc)f(!=)h(1)g(\))h({) │ │ │ │ 262 5073 y(fprintf\(msgFile)o(,)610 5172 y("\\n)f(fatal)e(error)h │ │ │ │ (writing)e(mtxX)i(to)h(file)f(\045s,)g(rc)h(=)g(\045d",)610 │ │ │ │ 5272 y(solFileName,)c(rc\))j(;)262 5372 y(fflush\(msgFile\))37 │ │ │ │ b(;)p eop end │ │ │ │ %%Page: 49 51 │ │ │ │ -TeXDict begin 49 50 bop 83 100 781 4 v 947 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fo(49)262 │ │ │ │ +TeXDict begin 49 50 bop 83 100 760 4 v 926 100 a Fp(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fo(49)262 │ │ │ │ 390 y Fm(exit\(-1\))40 b(;)131 490 y(})0 589 y(})0 689 │ │ │ │ y(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o │ │ │ │ (-*/)0 789 y(/*)131 888 y(----------------)o(--)o(--)o(-)131 │ │ │ │ 988 y(free)i(the)g(working)f(data)131 1088 y(----------------)o(--)o │ │ │ │ (--)o(-)0 1187 y(*/)0 1287 y(InpMtx_free\(mtxA)o(\))d(;)0 │ │ │ │ 1386 y(DenseMtx_free\(mt)o(xX\))f(;)0 1486 y(DenseMtx_free\(mt)o(xY\))g │ │ │ │ @@ -10639,17 +10651,17 @@ │ │ │ │ o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(-) │ │ │ │ 131 5172 y(find)g(out)g(the)g(identity)f(of)h(this)g(process)f(and)h │ │ │ │ (the)h(number)e(of)i(process)131 5272 y(----------------)o(--)o(--)o │ │ │ │ (---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o │ │ │ │ (--)o(---)o(--)o(---)o(-)0 5372 y(*/)1908 5656 y Fo(50)p │ │ │ │ eop end │ │ │ │ %%Page: 51 53 │ │ │ │ -TeXDict begin 51 52 bop 83 100 781 4 v 947 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fo(51)0 │ │ │ │ +TeXDict begin 51 52 bop 83 100 760 4 v 926 100 a Fp(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fo(51)0 │ │ │ │ 390 y Fm(MPI_Init\(&argc,)37 b(&argv\))k(;)0 490 y(MPI_Comm_rank\(MP)o │ │ │ │ (I_C)o(OM)o(M_)o(WOR)o(LD)o(,)d(&myid\))j(;)0 589 y(MPI_Comm_size\(MP)o │ │ │ │ (I_C)o(OM)o(M_)o(WOR)o(LD)o(,)d(&nproc\))i(;)0 689 y(/*--------------)o │ │ │ │ (---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o │ │ │ │ (--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(-*/)0 │ │ │ │ 789 y(/*)174 888 y(-----------------)o(--)o(-)174 988 │ │ │ │ y(get)j(input)e(parameters)174 1088 y(-----------------)o(--)o(-)0 │ │ │ │ @@ -10687,17 +10699,17 @@ │ │ │ │ ("\045s.\045d",)j(argv[2],)h(myid\))g(;)131 4774 y(if)i(\()g(\(msgFile) │ │ │ │ d(=)j(fopen\(buffer,)38 b("w"\)\))k(==)h(NULL)f(\))h({)262 │ │ │ │ 4873 y(fprintf\(stderr,)37 b("\\n)42 b(fatal)g(error)f(in)i(\045s")610 │ │ │ │ 4973 y("\\n)g(unable)e(to)h(open)g(file)g(\045s\\n",)610 │ │ │ │ 5073 y(argv[0],)e(argv[2]\))h(;)262 5172 y(MPI_Finalize\(\))c(;)262 │ │ │ │ 5272 y(return\(0\))i(;)131 5372 y(})p eop end │ │ │ │ %%Page: 52 54 │ │ │ │ -TeXDict begin 52 53 bop 83 100 781 4 v 947 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fo(52)131 │ │ │ │ +TeXDict begin 52 53 bop 83 100 760 4 v 926 100 a Fp(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fo(52)131 │ │ │ │ 390 y Fm(CVfree\(buffer\))38 b(;)0 490 y(})0 589 y(neqns)347 │ │ │ │ b(=)43 b(atoi\(argv[3]\))38 b(;)0 689 y(type)391 b(=)43 │ │ │ │ b(atoi\(argv[4]\))38 b(;)0 789 y(symmetryflag)h(=)k(atoi\(argv[5]\))38 │ │ │ │ b(;)0 888 y(mtxFileName)83 b(=)43 b(argv[6])d(;)0 988 │ │ │ │ y(rhsFileName)83 b(=)43 b(argv[7])d(;)0 1088 y(solFileName)83 │ │ │ │ b(=)43 b(argv[8])d(;)0 1187 y(seed)391 b(=)43 b(atoi\(argv[9]\))38 │ │ │ │ b(;)0 1287 y(fprintf\(msgFile,)349 1386 y("\\n\\n)j(\045s)i(input)e(:") │ │ │ │ @@ -10733,17 +10745,17 @@ │ │ │ │ (--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (--)o(---)o(--)o(---)o(--)o(---)o(-)131 5272 y(processor)j(0)j │ │ │ │ (broadcasts)c(the)k(error)e(return)g(to)i(the)f(other)g(processors)131 │ │ │ │ 5372 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(-)p │ │ │ │ eop end │ │ │ │ %%Page: 53 55 │ │ │ │ -TeXDict begin 53 54 bop 83 100 781 4 v 947 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fo(53)0 │ │ │ │ +TeXDict begin 53 54 bop 83 100 760 4 v 926 100 a Fp(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fo(53)0 │ │ │ │ 390 y Fm(*/)0 490 y(MPI_Bcast\(\(void)37 b(*\))43 b(&rc,)f(1,)h │ │ │ │ (MPI_INT,)d(0,)j(MPI_COMM_WORLD\))37 b(;)0 589 y(if)43 │ │ │ │ b(\()g(rc)g(!=)f(1)i(\))f({)131 689 y(MPI_Finalize\(\))38 │ │ │ │ b(;)131 789 y(return\(-1\))h(;)0 888 y(})0 988 y(/*--------------)o │ │ │ │ (---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o │ │ │ │ (--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o(--)o(-*/)0 │ │ │ │ 1088 y(/*)131 1187 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ @@ -10781,17 +10793,17 @@ │ │ │ │ 4873 y(create)i(and)h(setup)g(a)h(BridgeMPI)d(object)131 │ │ │ │ 4973 y(set)i(the)g(MPI,)g(matrix)f(and)i(message)e(parameters)131 │ │ │ │ 5073 y(----------------)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (--)o(---)o(--)0 5172 y(*/)0 5272 y(bridge)g(=)i(BridgeMPI_new\(\))38 │ │ │ │ b(;)0 5372 y(BridgeMPI_setMPI)o(par)o(am)o(s\()o(bri)o(dg)o(e,)f │ │ │ │ (nproc,)k(myid,)h(MPI_COMM_WORLD\))37 b(;)p eop end │ │ │ │ %%Page: 54 56 │ │ │ │ -TeXDict begin 54 55 bop 83 100 781 4 v 947 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fo(54)0 │ │ │ │ +TeXDict begin 54 55 bop 83 100 760 4 v 926 100 a Fp(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fo(54)0 │ │ │ │ 390 y Fm(BridgeMPI_setMat)o(rix)o(Pa)o(ra)o(ms\()o(br)o(idg)o(e,)37 │ │ │ │ b(neqns,)k(type,)h(symmetryflag\))c(;)0 490 y(BridgeMPI_setMes)o(sag)o │ │ │ │ (eI)o(nf)o(o\(b)o(ri)o(dge)o(,)f(msglvl,)k(msgFile\))f(;)0 │ │ │ │ 589 y(/*)131 689 y(----------------)o(-)131 789 y(setup)h(the)i │ │ │ │ (problem)131 888 y(----------------)o(-)0 988 y(*/)0 │ │ │ │ 1088 y(rc)g(=)g(BridgeMPI_setup\()o(br)o(idg)o(e,)37 │ │ │ │ b(mtxA\))42 b(;)0 1187 y(fprintf\(msgFile,)349 1287 y("\\n\\n)f(-----)h │ │ │ │ @@ -10831,17 +10843,17 @@ │ │ │ │ b(;)131 4774 y(MPI_Finalize\(\))38 b(;)131 4873 y(exit\(-1\))i(;)0 │ │ │ │ 4973 y(})0 5073 y(fprintf\(msgFile,)d("\\n\\n)k(-----)h(PARALLEL)e │ │ │ │ (FACTOR)h(SETUP)h(-----\\n"\))e(;)0 5172 y(fprintf\(msgFile,)349 │ │ │ │ 5272 y("\\n)173 b(CPU)42 b(\0458.3f)g(:)h(time)f(to)h(setup)e(parallel) │ │ │ │ f(factorization",)349 5372 y(bridge->cpus[7])o(\))e(;)p │ │ │ │ eop end │ │ │ │ %%Page: 55 57 │ │ │ │ -TeXDict begin 55 56 bop 83 100 781 4 v 947 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fo(55)0 │ │ │ │ +TeXDict begin 55 56 bop 83 100 760 4 v 926 100 a Fp(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fo(55)0 │ │ │ │ 390 y Fm(if)43 b(\()g(msglvl)e(>)i(0)g(\))h({)131 490 │ │ │ │ y(fprintf\(msgFile,)37 b("\\n)42 b(total)g(factor)f(operations)e(=)k │ │ │ │ (\045.0f")479 589 y("\\n)g(upper)e(bound)h(on)h(speedup)d(due)j(to)f │ │ │ │ (load)g(balance)f(=)i(\045.2f",)479 689 y(DV_sum\(bridge->cu)o(mop)o │ │ │ │ (sD)o(V\),)479 789 y(DV_sum\(bridge->cu)o(mop)o(sD)o(V\)/)o(DV)o(_m)o │ │ │ │ (ax\()o(br)o(idg)o(e-)o(>c)o(umo)o(ps)o(DV\))o(\))37 │ │ │ │ b(;)131 888 y(fprintf\(msgFile,)g("\\n)42 b(operations)e(distributions) │ │ │ │ @@ -10888,17 +10900,17 @@ │ │ │ │ y(tstats[3],)f(tstats[4],)h(tstats[5]\))f(;)0 4973 y(fprintf\(msgFile,) │ │ │ │ 349 5073 y("\\n\\n)128 b(factorization:)38 b(raw)43 b(mflops)e │ │ │ │ (\0458.3f,)g(overall)f(mflops)i(\0458.3f",)349 5172 y(1.e-6*nfactorop)o │ │ │ │ (s/b)o(ri)o(dge)o(->)o(cpu)o(s[)o(11)o(],)349 5272 y(1.e-6*nfactorop)o │ │ │ │ (s/b)o(ri)o(dge)o(->)o(cpu)o(s[)o(13)o(]\))37 b(;)0 5372 │ │ │ │ y(fflush\(msgFile\))g(;)p eop end │ │ │ │ %%Page: 56 58 │ │ │ │ -TeXDict begin 56 57 bop 83 100 781 4 v 947 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fo(56)0 │ │ │ │ +TeXDict begin 56 57 bop 83 100 760 4 v 926 100 a Fp(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fo(56)0 │ │ │ │ 390 y Fm(/*--------------)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o │ │ │ │ (--)o(--)o(---)o(--)o(---)o(--)o(--)o(---)o(--)o(---)o(--)o(---)o(--)o │ │ │ │ (--)o(-*/)0 490 y(/*)131 589 y(----------------)o(--)o(--)o(---)o(-)131 │ │ │ │ 689 y(setup)41 b(the)i(parallel)d(solve)131 789 y(----------------)o │ │ │ │ (--)o(--)o(---)o(-)0 888 y(*/)0 988 y(rc)j(=)g(BridgeMPI_solveS)o(et)o │ │ │ │ (up\()o(br)o(idg)o(e\))37 b(;)0 1088 y(fprintf\(msgFile,)g("\\n\\n)k │ │ │ │ (-----)h(PARALLEL)e(SOLVE)i(SETUP)f(-----\\n")349 1187 │ │ │ │ @@ -10939,17 +10951,17 @@ │ │ │ │ (time)f(to)h(solve)e(linear)g(system")349 5073 y("\\n)173 │ │ │ │ b(CPU)42 b(\0458.3f)g(:)h(time)f(to)h(gather)e(solution)f(")349 │ │ │ │ 5172 y("\\n)173 b(CPU)42 b(\0458.3f)g(:)h(time)f(to)h(permute)d │ │ │ │ (solution)g(into)i(old)h(ordering")349 5272 y("\\n)f(CPU)g(\0458.3f)g │ │ │ │ (:)h(total)f(solve)f(time")349 5372 y("\\n\\n)g(solve:)g(raw)i(mflops)e │ │ │ │ (\0458.3f,)g(overall)g(mflops)g(\0458.3f",)p eop end │ │ │ │ %%Page: 57 59 │ │ │ │ -TeXDict begin 57 58 bop 83 100 781 4 v 947 100 a Fp(SPOOLES)32 │ │ │ │ -b(2.2)e(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ -b(Jan)n(uary)26 b(6,)h(2026)p 3038 100 V 781 w Fo(57)349 │ │ │ │ +TeXDict begin 57 58 bop 83 100 760 4 v 926 100 a Fp(SPOOLES)32 │ │ │ │ +b(2.2)f(W)-8 b(rapp)s(er)32 b(Ob)5 b(jects)28 b Fl(:)120 │ │ │ │ +b(Jan)n(uary)25 b(10,)i(2026)p 3059 100 V 760 w Fo(57)349 │ │ │ │ 390 y Fm(bridge->cpus[15)o(],)37 b(bridge->cpus[16],)g │ │ │ │ (bridge->cpus[17])o(,)349 490 y(bridge->cpus[18)o(],)g │ │ │ │ (bridge->cpus[19],)g(bridge->cpus[20])o(,)349 589 y(bridge->cpus[21)o │ │ │ │ (],)349 689 y(1.e-6*nsolveops)o(/br)o(id)o(ge-)o(>c)o(pus)o([1)o(8])o │ │ │ │ (,)349 789 y(1.e-6*nsolveops)o(/br)o(id)o(ge-)o(>c)o(pus)o([2)o(1])o │ │ │ │ (\))h(;)0 888 y(fflush\(msgFile\))f(;)0 988 y(if)43 b(\()g(myid)f(==)h │ │ │ │ (0)g(\))g({)131 1088 y(if)g(\()g(msglvl)e(>)i(0)g(\))g({)262 │ │ │ │ ├── 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 │ │ │ │ │ - January 6, 2026 │ │ │ │ │ + January 10, 2026 │ │ │ │ │ 1P. O. Box 24346, Mail Stop 7L-21, Seattle, Washington 98124. This research was supported in part by the │ │ │ │ │ DARPAContract DABT63-95-C-0122 and the DoD High Performance Computing Modernization Program Common │ │ │ │ │ HPCSoftware Support Initiative. │ │ │ │ │ 228035 Dorothy Drive, Agoura Hills, CA 91301. This research was supported in part by the DARPA Contract │ │ │ │ │ DABT63-95-C-0122 and the DoD High Performance Computing Modernization Program Common HPC Software │ │ │ │ │ Support Initiative. │ │ │ │ │ Abstract │ │ │ │ │ @@ -51,15 +51,15 @@ │ │ │ │ │ 4.3.5 Factor methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 │ │ │ │ │ 4.3.6 Solve methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 │ │ │ │ │ 5 The MPI Wrapper Object and Driver 27 │ │ │ │ │ 5.1 Aquick look at the MPI driver program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 │ │ │ │ │ 5.2 The BridgeMPI Data Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 │ │ │ │ │ 5.3 Prototypes and descriptions of BridgeMPI methods . . . . . . . . . . . . . . . . . . . . . . . . 32 │ │ │ │ │ 1 │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : January 6, 2026 2 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 2 │ │ │ │ │ 5.3.1 Basic methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 │ │ │ │ │ 5.3.2 Instance methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 │ │ │ │ │ 5.3.3 Parameter methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 │ │ │ │ │ 5.3.4 Setup methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 │ │ │ │ │ 5.3.5 Factor methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 │ │ │ │ │ 5.3.6 Solve methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 │ │ │ │ │ A testWrapper.c — A Serial Driver Program 37 │ │ │ │ │ @@ -104,25 +104,25 @@ │ │ │ │ │ the user must generate two SPOOLES objects — a InpMtx object for A and DenseMtx objects for Y and │ │ │ │ │ X. This process is described in section 2. │ │ │ │ │ Serial code has one process and one address space. Multithreaded code can have multiple threads sharing │ │ │ │ │ one address space. The SPOOLES library utilizes multiple threads only in the factorization and solve steps. │ │ │ │ │ All other operations act on the global data structures using serial methods. In the MPI environment, the │ │ │ │ │ data structures for A, X and Y may be distributed, and all working data structures that contain the factor │ │ │ │ │ 3 │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : January 6, 2026 4 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 4 │ │ │ │ │ matrices and their supporting information are distributed. The MPI code is much more complex than the │ │ │ │ │ serial or multithreaded codes, for not only are the factor and solves parallel and distributed (as is the symbolic │ │ │ │ │ factorization), but there is a great deal of support code necessary because of the distributed data structures. │ │ │ │ │ - ThewrappermethodsdescribedinthispaperdonotexerciseallthefunctionalityoftheMPIenvironment. │ │ │ │ │ + ThewrappermethodsdescribedinthispaperdonotexerciseallthefunctionalityoftheMPIenvironment. │ │ │ │ │ This is due to the present state of the CSAR-Nastran code from CSAR, where the matrix A and right hand │ │ │ │ │ side Y are generated on one processor. We chose to do all the serial preprocessing │ │ │ │ │ - • generate a graph of the matrix, │ │ │ │ │ - • order the graph, │ │ │ │ │ - • compute the symbolic factorization, │ │ │ │ │ - • and construct the permutations │ │ │ │ │ + • generate a graph of the matrix, │ │ │ │ │ + • order the graph, │ │ │ │ │ + • compute the symbolic factorization, │ │ │ │ │ + • and construct the permutations │ │ │ │ │ on processor 0 that reads in A and Y from the CSAR-Nastran files. Since the bulk of the overall time for a │ │ │ │ │ CSAR-Nastran run is dominated by the factor and solves, this approach was considered acceptable. For the │ │ │ │ │ user who is interested in using the MPI environment for the entire process, e.g., when A and Y cannot fit │ │ │ │ │ on one processor, see the SPOOLES User Manual for driver programs. │ │ │ │ │ Chapter 2 │ │ │ │ │ Setting up the linear system │ │ │ │ │ Ourtypical user is interested in solving AX = Y , where A is square, large and sparse, and X and Y are dense │ │ │ │ │ @@ -150,15 +150,15 @@ │ │ │ │ │ • INPMTX BY COLUMNS, where r(i,j) = j, c(i,j) = i. │ │ │ │ │ • INPMTX BY CHEVRONS, where r(i,j) = min(i,j), c(i,j) = j −i. │ │ │ │ │ Rows and columns are self-explanatory, the first coordinate r(i,j) is either the row or column of ai,j. The │ │ │ │ │ j-th “chevron” is composed of the diagonal entry aj,j, entries in the j-th row of the upper triangle, and │ │ │ │ │ entries in the j-th column of the lower triangle. It is the natural data structure for the assembly of the │ │ │ │ │ matrix entries into the “fronts” used to factor the matrix. │ │ │ │ │ 5 │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : January 6, 2026 6 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 6 │ │ │ │ │ The InpMtx object can hold one of three types of entries as “indices only” (no entries are present), real │ │ │ │ │ entries, or complex entries. The type is specified by the inputModeparameter to the InpMtx init() method. │ │ │ │ │ • INPMTX INDICES ONLY where the triples langler(i,j),c(i,j),−i are really only pairs, i.e., no numerical │ │ │ │ │ values are present. This mode is useful for assembling graphs. │ │ │ │ │ • SPOOLES REAL where ai,j is a real number, a double value. │ │ │ │ │ • SPOOLES COMPLEX where a is a complex number, really two consecutive double values. │ │ │ │ │ i,j │ │ │ │ │ @@ -192,15 +192,15 @@ │ │ │ │ │ to assemble finite element matrices.) The knowledgeable user can change the storage mode as necessary, │ │ │ │ │ and thus avoiding expensive sorts when possible. For example, after reading in the matrix data from the │ │ │ │ │ CSAR-Nastran file, the entries are already in sorted form, and the explicit sort can be avoided. │ │ │ │ │ Now let us see how we “input” information into the InpMtx object. There are several input methods, │ │ │ │ │ e.g., single entries, rows, columns, and submatrices, and each input method has three types of input, e.g, │ │ │ │ │ indices only, real entries, or complex entries. Here are the prototypes below. │ │ │ │ │ • Input methods for “indices only” mode. │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : January 6, 2026 7 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 7 │ │ │ │ │ void InpMtx_inputEntry ( InpMtx *mtxA, int row, int col ) ; │ │ │ │ │ void InpMtx_inputRow ( InpMtx *mtxA, int row, int rowsize, int rowind[] ) ; │ │ │ │ │ void InpMtx_inputColumn ( InpMtx *mtxA, int col, int colsize, int colind[] ) ; │ │ │ │ │ void InpMtx_inputMatrix ( InpMtx *mtxA, int nrow, int ncol, int rowstride, │ │ │ │ │ int colstride, int rowind[], colind[] ) ; │ │ │ │ │ • Input methods for real entries. │ │ │ │ │ void InpMtx_inputRealEntry ( InpMtx *mtxA, int row, int col, double value ) ; │ │ │ │ │ @@ -238,94 +238,94 @@ │ │ │ │ │ if ( ii < n1 ) { │ │ │ │ │ indices[count] = ij + 1 ; │ │ │ │ │ entries[count] = -1.0 ; │ │ │ │ │ count++ ; │ │ │ │ │ } │ │ │ │ │ if ( jj < n2 ) { │ │ │ │ │ indices[count] = ij + n1 ; │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : January 6, 2026 8 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 8 │ │ │ │ │ entries[count] = -1.0 ; │ │ │ │ │ count++ ; │ │ │ │ │ - } │ │ │ │ │ - InpMtx_inputRealRow(mtxA, ij, count, indices, entries) ; │ │ │ │ │ - } │ │ │ │ │ + } │ │ │ │ │ + InpMtx_inputRealRow(mtxA, ij, count, indices, entries) ; │ │ │ │ │ + } │ │ │ │ │ } │ │ │ │ │ InpMtx_changeStorageMode(mtxA, INPMTX_BY_VECTORS) ; │ │ │ │ │ The process begins by allocating an InpMtx object mtxA using the InpMtx new() method, initializing it with │ │ │ │ │ the InpMtx init() method, and filling it with matrix entries with the InpMtx inputRealRow() method. │ │ │ │ │ The last method, InpMtx changeStorageMode(), “assembles” the data (not really necessary because the │ │ │ │ │ entries are disjoint, “sorts” the data (again not necessary since the entries were input in ascending order, │ │ │ │ │ and creates a vector structure inside the InpMtx object that allows easy access to each individual row. │ │ │ │ │ - We could have input all the entries and treated it as a nonsymmetric matrix, but that would not be │ │ │ │ │ + We could have input all the entries and treated it as a nonsymmetric matrix, but that would not be │ │ │ │ │ efficient with respect to storage or factorization cost. Alternatively, we could have input all the entries and │ │ │ │ │ called the InpMtx dropLowerTriangle() method to drop the lower triangular entries. │ │ │ │ │ - 2.2 Constructing an DenseMtx object │ │ │ │ │ + 2.2 Constructing an DenseMtx object │ │ │ │ │ The DenseMtx stores a real or complex dense matrix. It is not just an array of numbers, it also has row │ │ │ │ │ indices and column indices. This allows it to exist in a distributed MPI environment where each processors │ │ │ │ │ has only a submatrix of the matrix. Here is how to initialize a DenseMtx object. │ │ │ │ │ - int type, rowid, colid, nrow, ncol, inc1, inc2 ; │ │ │ │ │ - DenseMtx *mtx = DenseMtx_new() ; │ │ │ │ │ + int type, rowid, colid, nrow, ncol, inc1, inc2 ; │ │ │ │ │ + DenseMtx *mtx = DenseMtx_new() ; │ │ │ │ │ DenseMtx_init(mtx, type, rowid, colid, nrow, ncol, inc1, inc2) ; │ │ │ │ │ - • The type is either SPOOLES REAL or SPOOLES COMPLEX. │ │ │ │ │ - • The rowid and colid values are used to identify a DenseMtx as a submatrix of a larger matrix. Any │ │ │ │ │ + • The type is either SPOOLES REAL or SPOOLES COMPLEX. │ │ │ │ │ + • The rowid and colid values are used to identify a DenseMtx as a submatrix of a larger matrix. Any │ │ │ │ │ values are suitable. │ │ │ │ │ - • nrow and ncol are the number of rows and columns in the matrix, respectively. │ │ │ │ │ - • The entries of the matrix can be stored in either row major or column major form. For row major, use │ │ │ │ │ + • nrow and ncol are the number of rows and columns in the matrix, respectively. │ │ │ │ │ + • The entries of the matrix can be stored in either row major or column major form. For row major, use │ │ │ │ │ inc1 = ncol and inc2 = 1. For column major, use inc1 = 1 and inc2 = nrow. Note, all solve and │ │ │ │ │ matrix-matrix multiply methods require that the DenseMtx object be column major. │ │ │ │ │ For example, here is the call to initialize a DenseMtx object to have real entries, 100 rows and 5 columns, │ │ │ │ │ entries column major. │ │ │ │ │ DenseMtx_init(mtx, SPOOLES_REAL, 0, 0, 100, 5, 1, 100) ; │ │ │ │ │ During the initialization, the row indices are set to 0,1,...,nrow−1 and the column indices are set to │ │ │ │ │ 0,1,...,ncol−1. The entries are not initialized. Zero the entries with a call to DenseMtx zero(). (This is │ │ │ │ │ crucial when loading a sparse right hand side into the DenseMtx object.) │ │ │ │ │ - Once we have the DenseMtx object initialized, we want to be able to access the row indices, the column │ │ │ │ │ + Once we have the DenseMtx object initialized, we want to be able to access the row indices, the column │ │ │ │ │ indices and the entries. We do this through instance methods. │ │ │ │ │ void DenseMtx_rowIndices ( DenseMtx *mtx, int *pnrow, int *prowind ) ; │ │ │ │ │ void DenseMtx_columnIndices ( DenseMtx *mtx, int *pncol, int *pcolind ) ; │ │ │ │ │ double * DenseMtx_entries ( DenseMtx *mtx ) ; │ │ │ │ │ - SPOOLES2.2 Wrapper Objects : January 6, 2026 9 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 9 │ │ │ │ │ Wewould use them as follows. │ │ │ │ │ double *entries ; │ │ │ │ │ int ncol, nrow, *colind, *rowind ; │ │ │ │ │ DenseMtx_rowIndices(mtx, &nrow, &rowind) ; │ │ │ │ │ DenseMtx_columnIndices(mtx, &ncol, &colind) ; │ │ │ │ │ entries = DenseMtx_entries(mtx) ; │ │ │ │ │ We can now fill the indices or the entries. The location of the (irow,jcol) entry is found at offset = │ │ │ │ │ irow*inc1 + jcol*inc2. The row and column increments can be found as follows. │ │ │ │ │ int inc1 = DenseMtx_rowIncrement(mtx) ; │ │ │ │ │ int inc2 = DenseMtx_columnIncrement(mtx) ; │ │ │ │ │ - To avoid dealing with row and column increments, we can retrieve and set values of a particular entry. │ │ │ │ │ + To avoid dealing with row and column increments, we can retrieve and set values of a particular entry. │ │ │ │ │ double value, real, imag ; │ │ │ │ │ int irow, jcol ; │ │ │ │ │ DenseMtx_realEntry(mtx, irow, jcol, &value) ; │ │ │ │ │ DenseMtx_complexEntry(mtx, irow, jcol, &real, &imag) ; │ │ │ │ │ DenseMtx_setRealEntry(mtx, irow, jcol, value + 10.) ; │ │ │ │ │ DenseMtx_setComplexEntry(mtx, irow, jcol, real + 1., imag + 2.) ; │ │ │ │ │ As a real example, consider the n1 × n2 grid from the previous subsection, where we assembled a finite │ │ │ │ │ difference matrix. Assume that the right hand side is zero except for points where (n1-1,0:n2-1), where a │ │ │ │ │ unit load is applied. Here is the code to generate the DenseMtx object. │ │ │ │ │ mtxY = DenseMtx_new(); │ │ │ │ │ DenseMtx_init(mtxY, SPOOLES_REAL, 0, 0, n1*n2, 1, 1, n1*n2) ; │ │ │ │ │ DenseMtx_zero(mtxY) ; │ │ │ │ │ ii = n1 - 1 ; │ │ │ │ │ for ( jj = 0 ; jj < n2 ; jj++ ) { │ │ │ │ │ - ij = ii + jj*n1 ; │ │ │ │ │ - DenseMtx_setRealEntry(mtxY, ij, 1, 1.0) ; │ │ │ │ │ + ij = ii + jj*n1 ; │ │ │ │ │ + DenseMtx_setRealEntry(mtxY, ij, 1, 1.0) ; │ │ │ │ │ } │ │ │ │ │ Do not forget to zero the entries in mtxY before setting any entries. │ │ │ │ │ - 2.3 IO for the InpMtx and DenseMtx objects │ │ │ │ │ + 2.3 IO for the InpMtx and DenseMtx objects │ │ │ │ │ The three driver programs that we describe in the next sections read A and Y from files and write X to a │ │ │ │ │ file. So the first thing we know is that the InpMtx and DenseMtx objects can read and write themselves from │ │ │ │ │ and to files. This convention is supported by most of the objects in the SPOOLES library. In fact, there │ │ │ │ │ is a common protocol that is followed. Let us take a look at the common IO methods for the InpMtx. │ │ │ │ │ - • int InpMtx readFromFile ( InpMtx *obj, char *filename ) ; │ │ │ │ │ - • int InpMtx readFromFormattedFile ( InpMtx *obj, FILE *fp ) ; │ │ │ │ │ - • int InpMtx readFromBinaryFile ( InpMtx *obj, FILE *fp ) ; │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 10 │ │ │ │ │ + • int InpMtx readFromFile ( InpMtx *obj, char *filename ) ; │ │ │ │ │ + • int InpMtx readFromFormattedFile ( InpMtx *obj, FILE *fp ) ; │ │ │ │ │ + • int InpMtx readFromBinaryFile ( InpMtx *obj, FILE *fp ) ; │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 10 │ │ │ │ │ • int InpMtx writeToFile ( InpMtx *obj, char *filename ) ; │ │ │ │ │ • int InpMtx writeToFormattedFile ( InpMtx *obj, FILE *fp ) ; │ │ │ │ │ • int InpMtx writeToBinaryFile ( InpMtx *obj, FILE *fp ) ; │ │ │ │ │ • int InpMtx writeForHumanEye ( InpMtx *obj, FILE *fp ) ; │ │ │ │ │ There are corresponding methods for the DenseMtx object, just replace “Inp” by “Dense” in the above │ │ │ │ │ prototypes. │ │ │ │ │ Two methods take as input char * file names. Each object can be archived in its own file with a │ │ │ │ │ @@ -375,15 +375,15 @@ │ │ │ │ │ ordering, factor and solve processes. │ │ │ │ │ Section 3.1 takes a quick look at the Bridge driver program (whose complete listing is found in Ap- │ │ │ │ │ pendix A). Section 3.2 describes the internal data fields of the Bridge object. Section 3.3 contains the │ │ │ │ │ prototypes and descriptions of all Bridge methods. │ │ │ │ │ 3.1 Aquick look at serial driver program │ │ │ │ │ The entire listing of this serial driver is found in Appendix A. We now extract parts of the code. │ │ │ │ │ 11 │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 12 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 12 │ │ │ │ │ • Decode the input. │ │ │ │ │ msglvl = atoi(argv[1]) ; │ │ │ │ │ msgFileName = argv[6] ; │ │ │ │ │ neqns = atoi(argv[3]) ; │ │ │ │ │ type = atoi(argv[4]) ; │ │ │ │ │ symmetryflag = atoi(argv[5]) ; │ │ │ │ │ mtxFileName = argv[6] ; │ │ │ │ │ @@ -414,15 +414,15 @@ │ │ │ │ │ • Read in the DenseMtx object for Y. │ │ │ │ │ mtxY = DenseMtx_new() ; │ │ │ │ │ rc = DenseMtx_readFromFile(mtxY, mtxFileName) ; │ │ │ │ │ DenseMtx_dimensions(mtxY, &nrow, &nrhs) ; │ │ │ │ │ The nrhs parameter contains the number of right hand sides, or equivalently, the number of columns │ │ │ │ │ in Y . │ │ │ │ │ • Create and setup the Bridge object. │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 13 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 13 │ │ │ │ │ bridge = Bridge_new() ; │ │ │ │ │ Bridge_setMatrixParams(bridge, neqns, type, symmetryflag) ; │ │ │ │ │ Bridge_setMessageInfo(bridge, msglvl, msgFile) ; │ │ │ │ │ rc = Bridge_setup(bridge, mtxA) ; │ │ │ │ │ TheBridgeobjectisallocatedbyBridge new(),andvariousparametersareset. Theactualorderingof │ │ │ │ │ the matrix, symbolic factorization, and permutation creation are performed inside the Bridge setup() │ │ │ │ │ method. │ │ │ │ │ @@ -451,15 +451,15 @@ │ │ │ │ │ • Ordering parameters: │ │ │ │ │ – int maxdomainsize : maximum size of a subgraph to not split any further during the nested │ │ │ │ │ dissection process. │ │ │ │ │ – int maxnzeros : maximum number of zeros to allow in a front during the supernode amalgama- │ │ │ │ │ tion process. │ │ │ │ │ – int maxsize : maximum size of a front when the fronts are split. │ │ │ │ │ – int seed : random number seed. │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 14 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 14 │ │ │ │ │ – double compressCutoff : if the Neqns < compressCutoff ∗ neqns, then the compressed graph │ │ │ │ │ is formed, ordered and used to create the symbolic factorization. │ │ │ │ │ • Matrix parameters: │ │ │ │ │ – int type : type of entries, SPOOLES REAL or SPOOLES COMPLEX, default value is SPOOLES REAL. │ │ │ │ │ – int symmetryflag: type of symmetry for the matrix, SPOOLES SYMMETRIC, SPOOLES HERMITIAN │ │ │ │ │ or SPOOLES NONSYMMETRIC, default value is SPOOLES SYMMETRIC. │ │ │ │ │ • Factorization parameters: │ │ │ │ │ @@ -496,15 +496,15 @@ │ │ │ │ │ cpus[0] : time to construct Graph cpus[7] : time to factor matrix │ │ │ │ │ cpus[1] : time to compress Graph cpus[8] : time to post-process matrix │ │ │ │ │ cpus[2] : time to order Graph cpus[9] : total factor time │ │ │ │ │ cpus[3] : time for symbolic factorization cpus[10] : time to permute rhs │ │ │ │ │ cpus[4] : total setup time cpus[11] : time to solve │ │ │ │ │ cpus[5] : time to permute matrix cpus[12] : time to permute solution │ │ │ │ │ cpus[6] : time to initialize front matrix cpus[13] : total solve time │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 15 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 15 │ │ │ │ │ 3.3 Prototypes and descriptions of Bridge methods │ │ │ │ │ This section contains brief descriptions including prototypes of all methods that belong to the Bridge object. │ │ │ │ │ 3.3.1 Basic methods │ │ │ │ │ Asusual, there are four basic methods to support object creation, setting default fields, clearing any allocated │ │ │ │ │ data, and free’ing the object. │ │ │ │ │ 1. Bridge * Bridge_new ( void ) ; │ │ │ │ │ This method simply allocates storage for the Bridge structure and then sets the default fields by a call │ │ │ │ │ @@ -531,15 +531,15 @@ │ │ │ │ │ 3.3.2 Instance methods │ │ │ │ │ 1. int Bridge_oldToNewIV ( Bridge *bridge, IV **pobj ) ; │ │ │ │ │ This method fills *pobj with its oldToNewIV pointer. │ │ │ │ │ Return value: 1 for a normal return, -1 if bridge is NULL. -2 if pobj is NULL. │ │ │ │ │ 2. int Bridge_newToOldIV ( Bridge *bridge, IV **pobj ) ; │ │ │ │ │ This method fills *pobj with its newToOldIV pointer. │ │ │ │ │ Return value: 1 for a normal return, -1 if bridge is NULL. -2 if pobj is NULL. │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 16 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 16 │ │ │ │ │ 3. int Bridge_frontETree ( Bridge *bridge, ETree **pobj ) ; │ │ │ │ │ This method fills *pobj with its frontETree pointer. │ │ │ │ │ Return value: 1 for a normal return, -1 if bridge is NULL. -2 if pobj is NULL. │ │ │ │ │ 4. int Bridge_symbfacIVL ( Bridge *bridge, IVL **pobj ) ; │ │ │ │ │ This method fills *pobj with its symbfacIVL pointer. │ │ │ │ │ Return value: 1 for a normal return, -1 if bridge is NULL. -2 if pobj is NULL. │ │ │ │ │ 5. int Bridge_mtxmanager ( Bridge *bridge, SubMtxManager **pobj ) ; │ │ │ │ │ @@ -568,15 +568,15 @@ │ │ │ │ │ Return value: │ │ │ │ │ 1 normal return -3 pivotingflag is invalid │ │ │ │ │ -1 bridge is NULL -4 tau < 2.0 │ │ │ │ │ -2 sparsityflag is invalid -5 droptol < 0.0 │ │ │ │ │ 4. int Bridge_setMessagesInfo ( Bridge *bridge, int msglvl, FILE *msgFile ) ; │ │ │ │ │ This method sets the message level and file. │ │ │ │ │ Return value: 1 for a normal return, -1 if bridge is NULL, -2 if msglvl > 0 and msgFile is NULL. │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 17 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 17 │ │ │ │ │ 3.3.4 Setup methods │ │ │ │ │ 1. int Bridge_setup ( Bridge *bridge, InpMtx *mtxA ) ; │ │ │ │ │ This method orders the graph, generates the front tree, computes the symbolic factorization, and │ │ │ │ │ creates the two permutation vectors. │ │ │ │ │ Return value: 1 for a normal return, -1 if bridge is NULL, -2 if mtxA is NULL. │ │ │ │ │ 2. int Bridge_factorStats ( Bridge *bridge, int type, int symmetryflag, int *pnfront, │ │ │ │ │ int *pnfactorind, int *pnfactorent, int *pnsolveops, double *pnfactorops ) ; │ │ │ │ │ @@ -635,15 +635,15 @@ │ │ │ │ │ (if pivoting is requested), the drop tolerance (for an approximate factorization), and so on. Rather than │ │ │ │ │ burden the user with the knowledge of and setting these parameters, there are decent default values built │ │ │ │ │ into the object. │ │ │ │ │ Section 4.1 takes a quick look at the BridgeMT driver program (whose complete listing is found in │ │ │ │ │ Appendix B). Section 4.2 describes the internal data fields of the BridgeMT object. Section 3.3 contains the │ │ │ │ │ prototypes and descriptions of all Bridge methods. │ │ │ │ │ 18 │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 19 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 19 │ │ │ │ │ 4.1 Aquick look at the multithreaded driver program │ │ │ │ │ The entire listing of this multithreaded driver is found in Appendix B. We now extract parts of the code. │ │ │ │ │ • Decode the input. │ │ │ │ │ msglvl = atoi(argv[1]) ; │ │ │ │ │ msgFileName = argv[6] ; │ │ │ │ │ neqns = atoi(argv[3]) ; │ │ │ │ │ type = atoi(argv[4]) ; │ │ │ │ │ @@ -675,15 +675,15 @@ │ │ │ │ │ rc = InpMtx_readFromFile(mtxA, mtxFileName) ; │ │ │ │ │ The rc parameter is the error return. In the driver it is tested for an error, but we omit this from the │ │ │ │ │ present discussion. │ │ │ │ │ • Read in the DenseMtx object for Y. │ │ │ │ │ mtxY = DenseMtx_new() ; │ │ │ │ │ rc = DenseMtx_readFromFile(mtxY, mtxFileName) ; │ │ │ │ │ DenseMtx_dimensions(mtxY, &nrow, &nrhs) ; │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 20 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 20 │ │ │ │ │ The nrhs parameter contains the number of right hand sides, or equivalently, the number of columns │ │ │ │ │ in Y . │ │ │ │ │ • Create and setup the BridgeMT object. │ │ │ │ │ bridge = BridgeMT_new() ; │ │ │ │ │ BridgeMT_setMatrixParams(bridge, neqns, type, symmetryflag) ; │ │ │ │ │ BridgeMT_setMessageInfo(bridge, msglvl, msgFile) ; │ │ │ │ │ rc = BridgeMT_setup(bridge, mtxA) ; │ │ │ │ │ @@ -711,15 +711,15 @@ │ │ │ │ │ DenseMtx_init(mtxX, type, 0, 0, neqns, nrhs, 1, neqns) ; │ │ │ │ │ DenseMtx_zero(mtxX) ; │ │ │ │ │ rc = BridgeMT_solve(bridge, permuteflag, mtxX, mtxY) ; │ │ │ │ │ The DenseMtx object mtxX is created and initialized to be the same type and size as mtxY. Its entries │ │ │ │ │ are explicitly zeroed (this is not necessary but is a good idea in general). The solution is then solved. │ │ │ │ │ Again, note the presence of permuteflag. When 1, mtxY needs to be permuted into the new ordering, │ │ │ │ │ and mtxX is returned in the original ordering. │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 21 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 21 │ │ │ │ │ 4.2 The BridgeMT Data Structure │ │ │ │ │ The BridgeMT structure has the following fields. │ │ │ │ │ • Graph parameters: │ │ │ │ │ – int neqns : number of equations, i.e., number of vertices in the graph. │ │ │ │ │ – int nedges : number of edges (includes (u,v), (v,u) and (u,u)). │ │ │ │ │ – int Neqns : number of equations in the compressed graph. │ │ │ │ │ – int Nedges : number of edges in the compressed graph. │ │ │ │ │ @@ -751,15 +751,15 @@ │ │ │ │ │ • Pointers to objects: │ │ │ │ │ – ETree *frontETree : object that defines the factorizations, e.g., the number of fronts, the tree │ │ │ │ │ they form, the number of internal and external rows for each front, and the map from vertices to │ │ │ │ │ the front where it is contained. │ │ │ │ │ – IVL *symbfacIVL : object that contains the symbolic factorization of the matrix. │ │ │ │ │ – SubMtxManager *mtxmanager : object that manages the SubMtx objects that store the factor │ │ │ │ │ entries and are used in the solves. │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 22 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 22 │ │ │ │ │ – FrontMtx *frontmtx : object that stores the L, D and U factor matrices. │ │ │ │ │ – IV *oldToNewIV : object that stores old-to-new permutation vector. │ │ │ │ │ – IV *newToOldIV : object that stores new-to-old permutation vector. │ │ │ │ │ • Multithreaded information: │ │ │ │ │ – int nthread : number of threads to be used during the factor and solve. │ │ │ │ │ – int lookahead : this parameter is used to possibly reduce the idle time of threads during the │ │ │ │ │ factorization. When lookahead is 0, the factorization uses the least amount of working storage │ │ │ │ │ @@ -790,15 +790,15 @@ │ │ │ │ │ cpus[7] : time to initialize front matrix cpus[15] : total solve time │ │ │ │ │ 4.3 Prototypes and descriptions of BridgeMT methods │ │ │ │ │ This section contains brief descriptions including prototypes of all methods that belong to the BridgeMT │ │ │ │ │ object. │ │ │ │ │ 4.3.1 Basic methods │ │ │ │ │ Asusual, there are four basic methods to support object creation, setting default fields, clearing any allocated │ │ │ │ │ data, and free’ing the object. │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 23 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 23 │ │ │ │ │ 1. BridgeMT * BridgeMT_new ( void ) ; │ │ │ │ │ This method simply allocates storage for the BridgeMT structure and then sets the default fields by a │ │ │ │ │ call to BridgeMT setDefaultFields(). │ │ │ │ │ 2. int BridgeMT_setDefaultFields ( BridgeMT *bridge ) ; │ │ │ │ │ The structure’s fields are set to default values: │ │ │ │ │ • neqns = nedges = Neqns = Nedges = 0. │ │ │ │ │ • maxdomainsize = maxnzeros = maxsize = seed = -1. compressCutoff = 0. │ │ │ │ │ @@ -828,15 +828,15 @@ │ │ │ │ │ Return value: 1 for a normal return, -1 if bridge is NULL. -2 if pobj is NULL. │ │ │ │ │ 3. int BridgeMT_frontETree ( BridgeMT *bridge, ETree **pobj ) ; │ │ │ │ │ This method fills *pobj with its frontETree pointer. │ │ │ │ │ Return value: 1 for a normal return, -1 if bridge is NULL. -2 if pobj is NULL. │ │ │ │ │ 4. int BridgeMT_symbfacIVL ( BridgeMT *bridge, IVL **pobj ) ; │ │ │ │ │ This method fills *pobj with its symbfacIVL pointer. │ │ │ │ │ Return value: 1 for a normal return, -1 if bridge is NULL. -2 if pobj is NULL. │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 24 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 24 │ │ │ │ │ 5. int BridgeMT_mtxmanager ( BridgeMT *bridge, SubMtxManager **pobj ) ; │ │ │ │ │ This method fills *pobj with its mtxmanager pointer. │ │ │ │ │ Return value: 1 for a normal return, -1 if bridge is NULL. -2 if pobj is NULL. │ │ │ │ │ 6. int BridgeMT_frontmtx ( BridgeMT *bridge, FrontMtx **pobj ) ; │ │ │ │ │ This method fills *pobj with its frontmtx pointer. │ │ │ │ │ Return value: 1 for a normal return, -1 if bridge is NULL. -2 if pobj is NULL. │ │ │ │ │ 7. int BridgeMT_ownersIV ( BridgeMT *bridge, IV **pobj ) ; │ │ │ │ │ @@ -865,15 +865,15 @@ │ │ │ │ │ 1 normal return -3 maxsize ≤ 0 │ │ │ │ │ -1 bridge is NULL -4 compressCutoff> 1 │ │ │ │ │ -2 maxdomainsize ≤ 0 │ │ │ │ │ 3. int BridgeMT_setFactorParams ( BridgeMT *bridge, int sparsityflag, int pivotingflag, │ │ │ │ │ double tau, double droptol, int lookahead, PatchAndGoInfo *patchinfo ) ; │ │ │ │ │ This method sets parameters needed for the factorization. │ │ │ │ │ Return value: │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 25 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 25 │ │ │ │ │ 1 normal return -4 tau < 2.0 │ │ │ │ │ -1 bridge is NULL -5 droptol < 0.0 │ │ │ │ │ -2 sparsityflag is invalid -6 lookahead < 0 │ │ │ │ │ -3 pivotingflag is invalid │ │ │ │ │ 4. int BridgeMT_setMessagesInfo ( BridgeMT *bridge, int msglvl, FILE *msgFile ) ; │ │ │ │ │ This method sets the message level and file. │ │ │ │ │ Return value: 1 for a normal return, -1 if bridge is NULL, -2 if msglvl > 0 and msgFile is NULL. │ │ │ │ │ @@ -905,15 +905,15 @@ │ │ │ │ │ Thewrapmapandbalancedmaparenotrecommended. Thesubtree-subsetmapisagoodmapwitha │ │ │ │ │ very well balanced nested dissection ordering. The domain decomposition map is recommended when │ │ │ │ │ the nested dissection tree is imbalanced or for the multisection ordering. The domain decomposition │ │ │ │ │ map requires a cutoff parameter in [0,1] which specifies the relative size of a subtree that forms a │ │ │ │ │ domain. If maptype is not one of 1, 2, 3 or 4, the default map is used: domain decomposition with │ │ │ │ │ cutoff = 1/(2*nthread). │ │ │ │ │ Return value: │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 26 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 26 │ │ │ │ │ 1 normal return, factorization did complete -2 nthread < 1 │ │ │ │ │ -1 bridge is NULL -5 frontETree is not present │ │ │ │ │ 2. int BridgeMT_factor ( BridgeMT *bridge, InpMtx *mtxA, int permuteflag, int *perror ) ; │ │ │ │ │ This method permutes the matrix into the new ordering (if permuteflagis 1), factors the matrix, and │ │ │ │ │ then post-processes the factors. │ │ │ │ │ Return value: │ │ │ │ │ 1 normal return, factorization did complete -1 bridge is NULL │ │ │ │ │ @@ -960,15 +960,15 @@ │ │ │ │ │ burden the user with the knowledge of and setting these parameters, there are decent default values built │ │ │ │ │ into the object. Using the BridgeMPI object to solve a linear system of equations can be broken down into │ │ │ │ │ three steps. │ │ │ │ │ Section 5.1 takes a quick look at the BridgeMPI driver program (whose complete listing is found in │ │ │ │ │ Appendix C). Section 5.2 describes the internal data fields of the BridgeMPI object. Section 3.3 contains │ │ │ │ │ the prototypes and descriptions of all Bridge methods. │ │ │ │ │ 27 │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 28 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 28 │ │ │ │ │ 5.1 Aquick look at the MPI driver program │ │ │ │ │ The entire listing of this MPI driver is found in Appendix C. We now extract parts of the code. │ │ │ │ │ • Decode the input. │ │ │ │ │ msglvl = atoi(argv[1]) ; │ │ │ │ │ msgFileName = argv[6] ; │ │ │ │ │ neqns = atoi(argv[3]) ; │ │ │ │ │ type = atoi(argv[4]) ; │ │ │ │ │ @@ -1001,15 +1001,15 @@ │ │ │ │ │ • Processor 0 reads in the DenseMtx object for Y. │ │ │ │ │ mtxY = DenseMtx_new() ; │ │ │ │ │ rc = DenseMtx_readFromFile(mtxY, mtxFileName) ; │ │ │ │ │ DenseMtx_dimensions(mtxY, &nrow, &nrhs) ; │ │ │ │ │ The nrhs parameter contains the number of right hand sides, or equivalently, the number of columns │ │ │ │ │ in Y . Processor 0 then broadcasts the error return to the other processors. If an error occured reading │ │ │ │ │ in the matrix, all processors call MPI Finalize() and exit. │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 29 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 29 │ │ │ │ │ • Create and setup the BridgeMPI object. │ │ │ │ │ bridge = BridgeMPI_new() ; │ │ │ │ │ BridgeMPI_setMPIparams(bridge, nproc, myid, MPI_COMM_WORLD) ; │ │ │ │ │ BridgeMPI_setMatrixParams(bridge, neqns, type, symmetryflag) ; │ │ │ │ │ BridgeMPI_setMessageInfo(bridge, msglvl, msgFile) ; │ │ │ │ │ rc = BridgeMPI_setup(bridge, mtxA) ; │ │ │ │ │ The BridgeMPI object is allocated by BridgeMPI new(), and various parameters are set. The actual │ │ │ │ │ @@ -1037,15 +1037,15 @@ │ │ │ │ │ mtxX = DenseMtx_new() ; │ │ │ │ │ DenseMtx_init(mtxX, type, 0, 0, neqns, nrhs, 1, neqns) ; │ │ │ │ │ DenseMtx_zero(mtxX) ; │ │ │ │ │ All processors then cooperate to compute the solution X. │ │ │ │ │ rc = BridgeMPI_solve(bridge, permuteflag, mtxX, mtxY) ; │ │ │ │ │ Again, note the presence of permuteflag. When 1, mtxY needs to be permuted into the new ordering, │ │ │ │ │ and mtxX is returned in the original ordering. │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 30 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 30 │ │ │ │ │ 5.2 The BridgeMPI Data Structure │ │ │ │ │ The BridgeMPI structure has the following fields. │ │ │ │ │ • Graph parameters: │ │ │ │ │ – int neqns : number of equations, i.e., number of vertices in the graph. │ │ │ │ │ – int nedges : number of edges (includes (u,v), (v,u) and (u,u)). │ │ │ │ │ – int Neqns : number of equations in the compressed graph. │ │ │ │ │ – int Nedges : number of edges in the compressed graph. │ │ │ │ │ @@ -1078,15 +1078,15 @@ │ │ │ │ │ factorization. When lookahead is 0, the factorization uses the least amount of working storage │ │ │ │ │ but threads can be idle. Larger values of lookahead tend to increase the working storage but │ │ │ │ │ may decrease the execution time. Values of lookahead greater than nthread are not useful. │ │ │ │ │ • Pointers to objects: │ │ │ │ │ – ETree *frontETree : object that defines the factorizations, e.g., the number of fronts, the tree │ │ │ │ │ they form, the number of internal and external rows for each front, and the map from vertices to │ │ │ │ │ the front where it is contained. │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 31 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 31 │ │ │ │ │ – IVL *symbfacIVL : object that contains the symbolic factorization of the matrix. │ │ │ │ │ – SubMtxManager *mtxmanager : object that manages the SubMtx objects that store the factor │ │ │ │ │ entries and are used in the solves. │ │ │ │ │ – FrontMtx *frontmtx : object that stores the L, D and U factor matrices. │ │ │ │ │ – IV *oldToNewIV : object that stores old-to-new permutation vector. │ │ │ │ │ – IV *newToOldIV : object that stores new-to-old permutation vector. │ │ │ │ │ • MPI information: │ │ │ │ │ @@ -1124,15 +1124,15 @@ │ │ │ │ │ cpus[4] : broadcast the front tree cpus[15] : permute rhs │ │ │ │ │ cpus[5] : broadcast symbolic factor cpus[16] : distribute rhs │ │ │ │ │ cpus[6] : total setup time cpus[17] : create solution matrix │ │ │ │ │ cpus[7] : setup the factorization cpus[18] : solve │ │ │ │ │ cpus[8] : permute matrix cpus[19] : gather solution │ │ │ │ │ cpus[9] : distribute matrix cpus[20] : permute solution │ │ │ │ │ cpus[10] : initialize front matrix cpus[21] : total solve time │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 32 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 32 │ │ │ │ │ 5.3 Prototypes and descriptions of BridgeMPI methods │ │ │ │ │ This section contains brief descriptions including prototypes of all methods that belong to the BridgeMPI │ │ │ │ │ object. │ │ │ │ │ 5.3.1 Basic methods │ │ │ │ │ Asusual, there are four basic methods to support object creation, setting default fields, clearing any allocated │ │ │ │ │ data, and free’ing the object. │ │ │ │ │ 1. BridgeMPI * BridgeMPI_new ( void ) ; │ │ │ │ │ @@ -1157,15 +1157,15 @@ │ │ │ │ │ 3. int BridgeMPI_clearData ( BridgeMPI *bridge ) ; │ │ │ │ │ Thismethodclearstheobjectandfree’sanyowneddata. ItthencallsBridgeMPI setDefaultFields(). │ │ │ │ │ Return value: 1 for a normal return, -1 if bridge is NULL. │ │ │ │ │ 4. int BridgeMPI_free ( BridgeMPI *bridge ) ; │ │ │ │ │ This method releases any storage by a call to BridgeMPI clearData() and then free the space for │ │ │ │ │ bridge. │ │ │ │ │ Return value: 1 for a normal return, -1 if bridge is NULL. │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 33 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 33 │ │ │ │ │ 5.3.2 Instance methods │ │ │ │ │ 1. int BridgeMPI_oldToNewIV ( BridgeMPI *bridge, IV **pobj ) ; │ │ │ │ │ This method fills *pobj with its oldToNewIV pointer. │ │ │ │ │ Return value: 1 for a normal return, -1 if bridge is NULL. -2 if pobj is NULL. │ │ │ │ │ 2. int BridgeMPI_newToOldIV ( BridgeMPI *bridge, IV **pobj ) ; │ │ │ │ │ This method fills *pobj with its newToOldIV pointer. │ │ │ │ │ Return value: 1 for a normal return, -1 if bridge is NULL. -2 if pobj is NULL. │ │ │ │ │ @@ -1192,15 +1192,15 @@ │ │ │ │ │ Return value: 1 for a normal return, -1 if bridge is NULL. -2 if pobj is NULL. │ │ │ │ │ 10. int BridgeMPI_rowmapIV ( BridgeMPI *bridge, IV **pobj ) ; │ │ │ │ │ This method fills *pobj with its rowmapIV pointer. │ │ │ │ │ Return value: 1 for a normal return, -1 if bridge is NULL. -2 if pobj is NULL. │ │ │ │ │ 11. int BridgeMPI_ownedColumns ( BridgeMPI *bridge, IV **pobj ) ; │ │ │ │ │ This method fills *pobj with its ownedColumnsIV pointer. │ │ │ │ │ Return value: 1 for a normal return, -1 if bridge is NULL. -2 if pobj is NULL. │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 34 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 34 │ │ │ │ │ 12. int BridgeMPI_Xloc ( BridgeMPI *bridge, DenseMtx **pobj ) ; │ │ │ │ │ This method fills *pobj with its Xloc pointer. │ │ │ │ │ Return value: 1 for a normal return, -1 if bridge is NULL. -2 if pobj is NULL. │ │ │ │ │ 13. int BridgeMPI_Yloc ( BridgeMPI *bridge, DenseMtx **pobj ) ; │ │ │ │ │ This method fills *pobj with its Yloc pointer. │ │ │ │ │ Return value: 1 for a normal return, -1 if bridge is NULL. -2 if pobj is NULL. │ │ │ │ │ 14. int BridgeMPI_nproc ( BridgeMPI *bridge, int *pnproc ) ; │ │ │ │ │ @@ -1227,15 +1227,15 @@ │ │ │ │ │ 3. int BridgeMPI_setOrderingParams ( BridgeMPI *bridge, int maxdomainsize, int maxnzeros, │ │ │ │ │ int maxsize, int seed, double compressCutoff ) ; │ │ │ │ │ This method sets parameters needed for the ordering. │ │ │ │ │ Return value: │ │ │ │ │ 1 normal return -3 maxsize ≤ 0 │ │ │ │ │ -1 bridge is NULL -4 compressCutoff> 1 │ │ │ │ │ -2 maxdomainsize ≤ 0 │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 35 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 35 │ │ │ │ │ 4. int BridgeMPI_setFactorParams ( BridgeMPI *bridge, int sparsityflag, int pivotingflag, │ │ │ │ │ double tau, double droptol, int lookahead, PatchAndGoInfo *patchinfo ) ; │ │ │ │ │ This method sets parameters needed for the factorization. │ │ │ │ │ Return value: │ │ │ │ │ 1 normal return -4 tau < 2.0 │ │ │ │ │ -1 bridge is NULL -5 droptol < 0.0 │ │ │ │ │ -2 sparsityflag is invalid -6 lookahead < 0 │ │ │ │ │ @@ -1264,15 +1264,15 @@ │ │ │ │ │ 1. int BridgeMPI_factorSetup ( BridgeMPI *bridge, int maptype, double cutoff ) ; │ │ │ │ │ This method constructs the map from fronts to owning processors, and computes the number of factor │ │ │ │ │ operations that each thread will execute. The maptype parameter can be one of four values: │ │ │ │ │ • 1 — wrap map │ │ │ │ │ • 2 — balanced map │ │ │ │ │ • 3 — subtree-subset map │ │ │ │ │ • 4 — domain decomposition map │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 36 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 36 │ │ │ │ │ Thewrapmapandbalancedmaparenotrecommended. Thesubtree-subsetmapisagoodmapwitha │ │ │ │ │ very well balanced nested dissection ordering. The domain decomposition map is recommended when │ │ │ │ │ the nested dissection tree is imbalanced or for the multisection ordering. The domain decomposition │ │ │ │ │ map requires a cutoff parameter in [0,1] which specifies the relative size of a subtree that forms a │ │ │ │ │ domain. If maptype is not one of 1, 2, 3 or 4, the default map is used: domain decomposition with │ │ │ │ │ cutoff = 1/(2*nthread). │ │ │ │ │ Return value: 1 normal return, factorization did complete, -1 bridge is NULL, -2 frontETree is not │ │ │ │ │ @@ -1328,15 +1328,15 @@ │ │ │ │ │ get input parameters │ │ │ │ │ -------------------- │ │ │ │ │ */ │ │ │ │ │ if ( argc != 10 ) { │ │ │ │ │ fprintf(stdout, │ │ │ │ │ "\n\n usage : %s msglvl msgFile neqns type symmetryflag" │ │ │ │ │ 37 │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 38 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 38 │ │ │ │ │ "\n mtxFile rhsFile seed" │ │ │ │ │ "\n msglvl -- message level" │ │ │ │ │ "\n 0 -- no output" │ │ │ │ │ "\n 1 -- timings and statistics" │ │ │ │ │ "\n 2 and greater -- lots of output" │ │ │ │ │ "\n msgFile -- message file" │ │ │ │ │ "\n neqns -- # of equations" │ │ │ │ │ @@ -1380,15 +1380,15 @@ │ │ │ │ │ "\n msglvl = %d" │ │ │ │ │ "\n msgFile = %s" │ │ │ │ │ "\n neqns = %d" │ │ │ │ │ "\n type = %d" │ │ │ │ │ "\n symmetryflag = %d" │ │ │ │ │ "\n mtxFile = %s" │ │ │ │ │ "\n rhsFile = %s" │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 39 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 39 │ │ │ │ │ "\n solFile = %s" │ │ │ │ │ "\n seed = %d" │ │ │ │ │ "\n", │ │ │ │ │ argv[0], msglvl, argv[2], neqns, type, symmetryflag, │ │ │ │ │ mtxFileName, rhsFileName, solFileName, seed) ; │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ @@ -1431,15 +1431,15 @@ │ │ │ │ │ DenseMtx_dimensions(mtxY, &nrow, &nrhs) ; │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ -------------------------------- │ │ │ │ │ create and setup a Bridge object │ │ │ │ │ -------------------------------- │ │ │ │ │ */ │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 40 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 40 │ │ │ │ │ bridge = Bridge_new() ; │ │ │ │ │ Bridge_setMatrixParams(bridge, neqns, type, symmetryflag) ; │ │ │ │ │ Bridge_setMessageInfo(bridge, msglvl, msgFile) ; │ │ │ │ │ rc = Bridge_setup(bridge, mtxA) ; │ │ │ │ │ if ( rc != 1 ) { │ │ │ │ │ fprintf(stderr, "\n error return %d from Bridge_setup()", rc) ; │ │ │ │ │ exit(-1) ; │ │ │ │ │ @@ -1483,15 +1483,15 @@ │ │ │ │ │ exit(-1) ; │ │ │ │ │ } │ │ │ │ │ fprintf(msgFile, "\n\n ----- FACTORIZATION -----\n") ; │ │ │ │ │ fprintf(msgFile, │ │ │ │ │ "\n CPU %8.3f : time to permute original matrix" │ │ │ │ │ "\n CPU %8.3f : time to initialize factor matrix" │ │ │ │ │ "\n CPU %8.3f : time to compute factorization" │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 41 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 41 │ │ │ │ │ "\n CPU %8.3f : time to post-process factorization" │ │ │ │ │ "\n CPU %8.3f : total factorization time\n", │ │ │ │ │ bridge->cpus[5], bridge->cpus[6], bridge->cpus[7], │ │ │ │ │ bridge->cpus[8], bridge->cpus[9]) ; │ │ │ │ │ fprintf(msgFile, "\n\n factorization statistics" │ │ │ │ │ "\n %d pivots, %d pivot tests, %d delayed vertices" │ │ │ │ │ "\n %d entries in D, %d entries in L, %d entries in U", │ │ │ │ │ @@ -1535,15 +1535,15 @@ │ │ │ │ │ DenseMtx_writeForHumanEye(mtxX, msgFile) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ } │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ if ( strcmp(solFileName, "none") != 0 ) { │ │ │ │ │ /* │ │ │ │ │ ----------------------------------- │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 42 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 42 │ │ │ │ │ write the solution matrix to a file │ │ │ │ │ ----------------------------------- │ │ │ │ │ */ │ │ │ │ │ rc = DenseMtx_writeToFile(mtxX, solFileName) ; │ │ │ │ │ if ( rc != 1 ) { │ │ │ │ │ fprintf(msgFile, │ │ │ │ │ "\n fatal error writing mtxX to file %s, rc = %d", │ │ │ │ │ @@ -1595,15 +1595,15 @@ │ │ │ │ │ /* │ │ │ │ │ -------------------- │ │ │ │ │ get input parameters │ │ │ │ │ -------------------- │ │ │ │ │ */ │ │ │ │ │ if ( argc != 11 ) { │ │ │ │ │ 43 │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 44 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 44 │ │ │ │ │ fprintf(stdout, │ │ │ │ │ "\n\n usage : %s msglvl msgFile neqns type symmetryflag " │ │ │ │ │ "\n mtxFile rhsFile solFile seed nthread\n" │ │ │ │ │ "\n msglvl -- message level" │ │ │ │ │ "\n 0 -- no output" │ │ │ │ │ "\n 1 -- timings and statistics" │ │ │ │ │ "\n 2 and greater -- lots of output" │ │ │ │ │ @@ -1647,15 +1647,15 @@ │ │ │ │ │ seed = atoi(argv[9]) ; │ │ │ │ │ nthread = atoi(argv[10]) ; │ │ │ │ │ fprintf(msgFile, │ │ │ │ │ "\n\n %s input :" │ │ │ │ │ "\n msglvl = %d" │ │ │ │ │ "\n msgFile = %s" │ │ │ │ │ "\n neqns = %d" │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 45 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 45 │ │ │ │ │ "\n type = %d" │ │ │ │ │ "\n symmetryflag = %d" │ │ │ │ │ "\n mtxFile = %s" │ │ │ │ │ "\n rhsFile = %s" │ │ │ │ │ "\n solFile = %s" │ │ │ │ │ "\n nthread = %d" │ │ │ │ │ "\n", │ │ │ │ │ @@ -1699,15 +1699,15 @@ │ │ │ │ │ DenseMtx_writeForHumanEye(mtxY, msgFile) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ } │ │ │ │ │ DenseMtx_dimensions(mtxY, &nrow, &nrhs) ; │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ ---------------------------------- │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 46 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 46 │ │ │ │ │ create and setup a BridgeMT object │ │ │ │ │ ---------------------------------- │ │ │ │ │ */ │ │ │ │ │ bridge = BridgeMT_new() ; │ │ │ │ │ BridgeMT_setMatrixParams(bridge, neqns, type, symmetryflag) ; │ │ │ │ │ BridgeMT_setMessageInfo(bridge, msglvl, msgFile) ; │ │ │ │ │ rc = BridgeMT_setup(bridge, mtxA) ; │ │ │ │ │ @@ -1751,15 +1751,15 @@ │ │ │ │ │ fprintf(msgFile, │ │ │ │ │ "\n CPU %8.3f : time to setup parallel factorization", │ │ │ │ │ bridge->cpus[5]) ; │ │ │ │ │ if ( msglvl > 0 ) { │ │ │ │ │ fprintf(msgFile, "\n total factor operations = %.0f", │ │ │ │ │ DV_sum(bridge->cumopsDV)) ; │ │ │ │ │ fprintf(msgFile, │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 47 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 47 │ │ │ │ │ "\n upper bound on speedup due to load balance = %.2f", │ │ │ │ │ DV_sum(bridge->cumopsDV)/DV_max(bridge->cumopsDV)) ; │ │ │ │ │ fprintf(msgFile, "\n operations distributions over threads") ; │ │ │ │ │ DV_writeForHumanEye(bridge->cumopsDV, msgFile) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ } │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ @@ -1803,15 +1803,15 @@ │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ ------------------------ │ │ │ │ │ setup the parallel solve │ │ │ │ │ ------------------------ │ │ │ │ │ */ │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 48 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 48 │ │ │ │ │ rc = BridgeMT_solveSetup(bridge) ; │ │ │ │ │ fprintf(msgFile, "\n\n ----- PARALLEL SOLVE SETUP -----\n") ; │ │ │ │ │ fprintf(msgFile, │ │ │ │ │ "\n CPU %8.3f : time to setup parallel solve", │ │ │ │ │ bridge->cpus[11]) ; │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ @@ -1855,15 +1855,15 @@ │ │ │ │ │ */ │ │ │ │ │ rc = DenseMtx_writeToFile(mtxX, solFileName) ; │ │ │ │ │ if ( rc != 1 ) { │ │ │ │ │ fprintf(msgFile, │ │ │ │ │ "\n fatal error writing mtxX to file %s, rc = %d", │ │ │ │ │ solFileName, rc) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 49 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 49 │ │ │ │ │ exit(-1) ; │ │ │ │ │ } │ │ │ │ │ } │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ --------------------- │ │ │ │ │ free the working data │ │ │ │ │ @@ -1906,15 +1906,15 @@ │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ --------------------------------------------------------------- │ │ │ │ │ find out the identity of this process and the number of process │ │ │ │ │ --------------------------------------------------------------- │ │ │ │ │ */ │ │ │ │ │ 50 │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 51 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 51 │ │ │ │ │ MPI_Init(&argc, &argv) ; │ │ │ │ │ MPI_Comm_rank(MPI_COMM_WORLD, &myid) ; │ │ │ │ │ MPI_Comm_size(MPI_COMM_WORLD, &nproc) ; │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ -------------------- │ │ │ │ │ get input parameters │ │ │ │ │ @@ -1958,15 +1958,15 @@ │ │ │ │ │ if ( (msgFile = fopen(buffer, "w")) == NULL ) { │ │ │ │ │ fprintf(stderr, "\n fatal error in %s" │ │ │ │ │ "\n unable to open file %s\n", │ │ │ │ │ argv[0], argv[2]) ; │ │ │ │ │ MPI_Finalize() ; │ │ │ │ │ return(0) ; │ │ │ │ │ } │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 52 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 52 │ │ │ │ │ CVfree(buffer) ; │ │ │ │ │ } │ │ │ │ │ neqns = atoi(argv[3]) ; │ │ │ │ │ type = atoi(argv[4]) ; │ │ │ │ │ symmetryflag = atoi(argv[5]) ; │ │ │ │ │ mtxFileName = argv[6] ; │ │ │ │ │ rhsFileName = argv[7] ; │ │ │ │ │ @@ -2010,15 +2010,15 @@ │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ } │ │ │ │ │ } │ │ │ │ │ /* │ │ │ │ │ --------------------------------------------------------------- │ │ │ │ │ processor 0 broadcasts the error return to the other processors │ │ │ │ │ --------------------------------------------------------------- │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 53 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 53 │ │ │ │ │ */ │ │ │ │ │ MPI_Bcast((void *) &rc, 1, MPI_INT, 0, MPI_COMM_WORLD) ; │ │ │ │ │ if ( rc != 1 ) { │ │ │ │ │ MPI_Finalize() ; │ │ │ │ │ return(-1) ; │ │ │ │ │ } │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ @@ -2062,15 +2062,15 @@ │ │ │ │ │ ------------------------------------------ │ │ │ │ │ create and setup a BridgeMPI object │ │ │ │ │ set the MPI, matrix and message parameters │ │ │ │ │ ------------------------------------------ │ │ │ │ │ */ │ │ │ │ │ bridge = BridgeMPI_new() ; │ │ │ │ │ BridgeMPI_setMPIparams(bridge, nproc, myid, MPI_COMM_WORLD) ; │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 54 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 54 │ │ │ │ │ BridgeMPI_setMatrixParams(bridge, neqns, type, symmetryflag) ; │ │ │ │ │ BridgeMPI_setMessageInfo(bridge, msglvl, msgFile) ; │ │ │ │ │ /* │ │ │ │ │ ----------------- │ │ │ │ │ setup the problem │ │ │ │ │ ----------------- │ │ │ │ │ */ │ │ │ │ │ @@ -2114,15 +2114,15 @@ │ │ │ │ │ MPI_Finalize() ; │ │ │ │ │ exit(-1) ; │ │ │ │ │ } │ │ │ │ │ fprintf(msgFile, "\n\n ----- PARALLEL FACTOR SETUP -----\n") ; │ │ │ │ │ fprintf(msgFile, │ │ │ │ │ "\n CPU %8.3f : time to setup parallel factorization", │ │ │ │ │ bridge->cpus[7]) ; │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 55 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 55 │ │ │ │ │ if ( msglvl > 0 ) { │ │ │ │ │ fprintf(msgFile, "\n total factor operations = %.0f" │ │ │ │ │ "\n upper bound on speedup due to load balance = %.2f", │ │ │ │ │ DV_sum(bridge->cumopsDV), │ │ │ │ │ DV_sum(bridge->cumopsDV)/DV_max(bridge->cumopsDV)) ; │ │ │ │ │ fprintf(msgFile, "\n operations distributions over processors") ; │ │ │ │ │ DV_writeForHumanEye(bridge->cumopsDV, msgFile) ; │ │ │ │ │ @@ -2166,15 +2166,15 @@ │ │ │ │ │ tstats[0], tstats[1], tstats[2], │ │ │ │ │ tstats[3], tstats[4], tstats[5]) ; │ │ │ │ │ fprintf(msgFile, │ │ │ │ │ "\n\n factorization: raw mflops %8.3f, overall mflops %8.3f", │ │ │ │ │ 1.e-6*nfactorops/bridge->cpus[11], │ │ │ │ │ 1.e-6*nfactorops/bridge->cpus[13]) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 56 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 56 │ │ │ │ │ /*--------------------------------------------------------------------*/ │ │ │ │ │ /* │ │ │ │ │ ------------------------ │ │ │ │ │ setup the parallel solve │ │ │ │ │ ------------------------ │ │ │ │ │ */ │ │ │ │ │ rc = BridgeMPI_solveSetup(bridge) ; │ │ │ │ │ @@ -2218,15 +2218,15 @@ │ │ │ │ │ "\n CPU %8.3f : time to distribute rhs " │ │ │ │ │ "\n CPU %8.3f : time to initialize solution matrix " │ │ │ │ │ "\n CPU %8.3f : time to solve linear system" │ │ │ │ │ "\n CPU %8.3f : time to gather solution " │ │ │ │ │ "\n CPU %8.3f : time to permute solution into old ordering" │ │ │ │ │ "\n CPU %8.3f : total solve time" │ │ │ │ │ "\n\n solve: raw mflops %8.3f, overall mflops %8.3f", │ │ │ │ │ - SPOOLES 2.2 Wrapper Objects : January 6, 2026 57 │ │ │ │ │ + SPOOLES 2.2 Wrapper Objects : January 10, 2026 57 │ │ │ │ │ bridge->cpus[15], bridge->cpus[16], bridge->cpus[17], │ │ │ │ │ bridge->cpus[18], bridge->cpus[19], bridge->cpus[20], │ │ │ │ │ bridge->cpus[21], │ │ │ │ │ 1.e-6*nsolveops/bridge->cpus[18], │ │ │ │ │ 1.e-6*nsolveops/bridge->cpus[21]) ; │ │ │ │ │ fflush(msgFile) ; │ │ │ │ │ if ( myid == 0 ) { │ │ ├── ./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 2026.01.06:2034 │ │ │ │ +%DVIPSSource: TeX output 2026.01.10:0513 │ │ │ │ %%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 │ │ │ │ @@ -1513,14 +1513,15 @@ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ /UnderlineThickness 50 def │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ +dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ dup 54 /six put │ │ │ │ dup 58 /colon put │ │ │ │ dup 74 /J put │ │ │ │ dup 97 /a put │ │ │ │ dup 110 /n put │ │ │ │ dup 114 /r put │ │ │ │ @@ -1710,79 +1711,84 @@ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB88440048702D1F │ │ │ │ -77994EE04EC3B4531D6E1888C86A8F0DA6CF1F056F16AB0DD76C862830F89DA4 │ │ │ │ -28923B3AA543E0D6E41D3BD283E600BC11F889315EE92C675C109C81065ED1BC │ │ │ │ -82A5583D1B723D50051B0557A367887F5B263014C6E77288B4883C50889473D3 │ │ │ │ -3787BAD4BEB88BD1353AFA5B73E61814819537E7FF09F53EF94792BB3DD36ED0 │ │ │ │ -002D0E7A6CDAB85A9C17AF5664BCB5A71663B861880F3ECCABC8E7A2FC81A4CC │ │ │ │ -AE7A87503FDC1CE0077BA51ECC7B43B60793FED8E9AAD5BBD03ADD6183DCD26D │ │ │ │ -24A74163611C05562437644EF9B8889FD4F9D311911204FEFD35237486F2D2D0 │ │ │ │ -B6783A03BF12EA6D19D6D0F87E4D08515F12F9CBF1961CAA71E0D69FE3C4C4D2 │ │ │ │ -7C7FB64ED24F8684C8F00C2BEDEA53EA390CDC0B5BEBD7DD982580B2EA1F1F89 │ │ │ │ -CFED5916630DC2BA32BB9180277E1ABC339B3B7DE086717BD93F7FF3681BA5B3 │ │ │ │ -FCF671C4B293C2DE4A322F0AA3323A4934444C69F23EF90120B8755482757759 │ │ │ │ -C457A435FB8BB4922BD92C5F3D9555D978275C510183E29DFF2FCE4ABBFC18DE │ │ │ │ -76CAD3B486BA12047DD808CD4D521A0FD368E4AE79DE262630983A5D6F0B679D │ │ │ │ -2F005306393C520E1B6987302D029939D94B0178DB06211C7F3B123A41E6E7BA │ │ │ │ -87164737110707A3ED3983895F3FBC815EF370F54C808ED93D910937BCA3D8AF │ │ │ │ -7CBF80DC180CDA54059DB76710B4FCD4139D5B7DA7DB1A0D0AF86AD2453D3691 │ │ │ │ -0BA5BAD40FF28BB4235FCD40FC87C2B888E67928D9B0ACA5692149373DBB93BF │ │ │ │ -6520DDD36A9BFE4D415CA67A5E04F1D48BDB28C69676273ED842CF7980E8E17C │ │ │ │ -B88563F407E340AFAE8F51AABCF8A39521BCEE1EC8396D75E124B24B4675909F │ │ │ │ -E246F87DA08584A3173AEFF153ECDF610543FA7474D125A31ADD6285A49222B5 │ │ │ │ -177066EA395BFA4B1114C7FCF7712DA772A21C99E64F4E1181E69CAF98137FA2 │ │ │ │ -76CF74F682B8CD7BA6EEA79B70FA8A76809634517F8415B6F21A5A7D6099B5E8 │ │ │ │ -EAB356BBC4FB68C72B8C61DDCE8EAB1A53B9D6BAD78584B307EFF57CEAE74884 │ │ │ │ -35987BF89E9E60E962D22FA5612F2DB5EB840499B7CC11A34BA5DEE30D277540 │ │ │ │ -39B8211D69B448ADE95B723F8369A631DE6DD75703AFD7485FB7FFF41A60CBE4 │ │ │ │ -813B8FEA120662355773830EF85015E7FFD609B2CEE52CB5FFE9C35B6BEEE4A4 │ │ │ │ -A66719E31CE1523FDD7771FB1E881A32A7DB7D92C2326DF4B93241C14ABFCCD6 │ │ │ │ -8E5BCAC61E800E6B1B4687ADA4CBF41EC0AFC26D021D1772CBDCD0516DF5EBE1 │ │ │ │ -37FD2AC5ABB8D774B5735940F1F6866D044FD8CE74444FAA5D0202C11E39CC10 │ │ │ │ -213731F41F704450E1D0565013BF22188442CE0FC256190A9F92F0C802AA2660 │ │ │ │ -614AFE9E9C82F8CD2E6035EEF84E5F16CBB690AC819B4B910EA8E81106F0ACE5 │ │ │ │ -CDFE77DAF69E4AFE72C43145A3ABCC40B6C5297487083F738C86422277AC2267 │ │ │ │ -51759F1B7F129E87DE16433B664AD0FB6D30424A11C70B52B591352BF653C8B0 │ │ │ │ -0840C224FBFEAA996A6BE1D69414DD778C2EF56A63B64D59BA412EC3E4000831 │ │ │ │ -73361FB9813F9A7C74BA3A50D331B07B61492E5D75F0861B530587269B3ADC90 │ │ │ │ -EA1DF586AC4BC57C3230893EFE953A6E76950ABA895FAC711D3BD330ABC6846A │ │ │ │ -C91F6ABF3410B913DFE5C8266020CEE5C7A9EDA2E7D9BCA797DC486443C7BA7C │ │ │ │ -7E03439A40927FA3251B6D417E5653E7799E9D6F04149C34096E2CA9B1F9B1EC │ │ │ │ -38958A2521B4A657A8B9F16E1FD66C7E345A10D7AA0241559503D214AC6507A4 │ │ │ │ -CBDE8617AA7ED136577734428594487F3565BF45FA196375759E2FE23C26EC8A │ │ │ │ -3310A36917A5E2F260EAB31030F8E570303D36B833626938F56939849DFA1F3F │ │ │ │ -66D0A317BB6364427F1512AAB380B555611C76345C02C3A6FBF78590331D5ECA │ │ │ │ -029DEFB722F6AB05327C2A31AB7BD6ED0F0386E6F45C1278048D22B90B074CCB │ │ │ │ -2BBEBCC1927C97EC532E651CAF0058AFE8FC08F00F0216D5DD9830C294FF76DA │ │ │ │ -426A073B3A3AEEFBDEE71C5182186311607ECDBD1F1AF4C5E79748CD01445C8D │ │ │ │ -25DD49490C8A6810065908222C8D0AC9F83AFBEE7115023E2D2615A170A5D40A │ │ │ │ -AD49BDF59A59187B6434F83E68EED22EF4EFDBADED6F1559AC779E0377FE7375 │ │ │ │ -D7060584FE74B1859D0FD98772253A712B17FFBB467840C484F5EF82C5677ADB │ │ │ │ -EDF159A456A526B8B9F6E8FC7608DFD47B0F09E26118F79CBE53B6C4E32BACAB │ │ │ │ -D62AFD4AA527CC4B587BB41A17A9BCE106A8C592BC9B73422B712C466C284A17 │ │ │ │ -E8D0C1E01D43C739FB1C083AD2714F78AC785B0C09AA7E67417A73510E00F2FE │ │ │ │ -E3D3EBF626A2F3A20A386E3F98D1285F4A2A332FC609CD191F01F128627B3505 │ │ │ │ -0AC2387DC0AD1B950490EBB5045F22BEC54955402CE2D267B6754E7C32BE84E8 │ │ │ │ -E6B63E3D3EAEE979442D167AEF69C27B22A8E887A2510C3A168D95D285CF7515 │ │ │ │ -011C921679B2F386575826A3F2071D015EEB78F02A4F94D4E5F07873623200F8 │ │ │ │ -7DF95BA0DC6B6D31DECC925BEA1E6A7C52FE685800EC33CBAE830F1AE5454DFA │ │ │ │ -913B8F457D7E2D3DFF019869E3301EEEC64A38295DE6B588E776922B32362382 │ │ │ │ -D1CF3D058613C8A96E6994D3EC23E8B71EC6E718383B20BB6C22DB6F93FA559F │ │ │ │ -3449CA84EB33B25C8BE0DFD1C29DC4FBD7AFBDC96C12162CAAB2C5E354B0FB10 │ │ │ │ -4BF8CC3610875ABD5111D09F2F847822118972214EDEB9EE34BAFE45E7AC15C5 │ │ │ │ -CA63EC4A3CEEA505A5EDD88A59BB67C71C3E026DFFE177F99BC69E6635545D03 │ │ │ │ -77A634F98230EF64381EC67CA519D4B9770EFA844789E21970F89D5FFC5DEAA8 │ │ │ │ -DC008EBA09306967ED090FF91B002FA6120C2B461A87AA32EFB003C5578D8EEF │ │ │ │ - │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ +AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ +E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ +46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ +FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ +389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ +7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ +2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ +C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ +B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ +AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ +E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ +F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ +0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ +2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ +29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ +CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ +6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ +5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ +36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0DD96AB602D004DCFE000A0 │ │ │ │ +ABE41BAB8AB7D50BD32BFD6F1AA3B60B09B9BE4E273EDD2DDCB21A98A760D17D │ │ │ │ +0A5C9303AFE63CF80A93E60C72A0576FAADEECBE2DE91892D210EB0AD1889C04 │ │ │ │ +C7530652584E775B4ED19CFB4B8DBCCC57A9FA9E4DDC8A1E5A1D3BE9E93407A6 │ │ │ │ +2C237ACE27F4EDA330EE952EDCBE91683AA98A29197735006666C96A2CE7C787 │ │ │ │ +BBA5A57C4DBF6FAA5B38AF226B5D9A65FAD84650AC0C3DB29C30602699F81E01 │ │ │ │ +0BAF8F1CE44A03C680121B77A1703C638187675D6C22C49F9902475E6CE9C732 │ │ │ │ +48ED028CC92EA542EF189CC9CA1C384E3387793057615D0A2BF040CC90B275B9 │ │ │ │ +F70A5310874DC2E0A360373E7BCAC88250FBC8989C7D18DA8274C06F02FCF31C │ │ │ │ +2B3868CBAF083DAC2FB159DE368261842DB7C9EA1A86B17617C861A48FBA8FF9 │ │ │ │ +D184CB026F4A418C0955347612F94C039B1536A76CB182A591DD7C02D509CF16 │ │ │ │ +8B9E46502ABF5DE31F5DFBD19C7417A2AF7AF13F0D5FF837C94CE56F07B96337 │ │ │ │ +0ED215252346FAEB54B5F3ABE29709B7ECB9FBD23A4AD397E6ABA6938F1BBF33 │ │ │ │ +1D5460D9414F0B8725DA832744525C13E3FD9C8DB33FBEE12F9C4969988402C8 │ │ │ │ +96AF916364CC2DF17EDBA622FC0A5D0013418E29F912FFA06F8D7E31ECAB0B08 │ │ │ │ +C4D2D8EE537CC768FC9038DD6D86D33642C6E812E941F157FC6917AF19C2B99A │ │ │ │ +5BF10B9A7ECF711BBB6F33C8C3DAD778153122593F36ABDDC0E97A602B045DE6 │ │ │ │ +19BD82D877DDA960AB11EF48C7F75A28D0D731D4A5DBC98283087267CD1A470D │ │ │ │ +537E949DA5EECF097B099547995BE066A941CED683B5748962AD2B02C21636C0 │ │ │ │ +2EAFA33CA0CB3BF8A95703F015A210D918865B9BEA2890DCFB68BC3719C305EC │ │ │ │ +315EC8727BF9A93632AB9E3090B100C022EE1396CD329B37547F26A7DCE52BD7 │ │ │ │ +F91B7388DEC34F4A0C6D46CD7CA6ACC00C5C4C71E47C6AD96496B3CBF531F342 │ │ │ │ +A740EE6B99BD70AD490DFA700772A0697EC6561CE88A0113E4DC3B21F372D810 │ │ │ │ +DFF2C3F6EDF3E917BF2664EEFC9AD292DD6CC36853CF936018D43FDB28D5B001 │ │ │ │ +7D1C805F958F13FD221377ABDD69D102E8CC1DAB2E011EE16CF6DB9D195BA702 │ │ │ │ +5A8738FABF989B0351282D0E5121182DFC52169782A5F3DD5D820411BEF909DE │ │ │ │ +04D963E6FDA76F88508C4E91DDAAA1748F396A1D380D8CA429673AF27C164434 │ │ │ │ +771781B39565D3EE50F3CF03EF12908B13A6C11C9AB7631B32125828B13050BA │ │ │ │ +041A93B97AC32D4A1E28C5FA98CDEE998B5F97823D6291D01E3611A16854F1FE │ │ │ │ +69B9D6D2AE3E56D012B7BC3E582FB4C23188A5E365E65EB1F804A706AF73A2F8 │ │ │ │ +9804808EF71F0982B14133BF9A27D6F2E719BDB751022B1B052722933948904E │ │ │ │ +3582E363478DCDA115205A0FDE39DF71FEAEEB104419C35A6B0678C19616C6D9 │ │ │ │ +A892DC2F4257069AF096C80C099CD13024DF3995F28C694E00D1F08B43D4450C │ │ │ │ +D18F5C925CFD2D124E74FC64BBAA0DE32A79E4A4507B5B5DD834C67160CDA110 │ │ │ │ +EF0061DD27E8864F4250A92BBEFD75C784BB98F4FA789A8236C2A21E4E61ABD0 │ │ │ │ +C6B4D13B3C31AC8E55FA34BEC7C308C61FB0280382EC6AFD63D959678D42D2B3 │ │ │ │ +4134F6236A0808D9302B4E3C6F81FC6973B4833602750CCB5DE36AEA23ED6BD4 │ │ │ │ +5B72DF0DD7B81C871CAA6EC190748CD8C4B998D576E5D340ACAC0617DDBE461C │ │ │ │ +8E82E809D11A01D265D039F4315066832E27E08A6F067E129E45FBF533F761BB │ │ │ │ +EC3C071209BECE7D14D3184B2E6BFD65717A5A7C08F3776B20C513649488C1CF │ │ │ │ +03333805B249D1034FB0AE2D7D2A23324EE27AEDB68F8E329A8052FE58D7C0D9 │ │ │ │ +A40A0CDC79F2085C4F39A7DFDB625C8F071E2A32CF6215DD3E060A9BABF7A3AA │ │ │ │ +C57DA0C0571C5D6EEAA975D1BB9C99F8EA4958360E43E8C60080B03DC4435550 │ │ │ │ +E6048DDD35DF3E5DA69669F266FFD7B44649A68025270DC84258E329F6E6907C │ │ │ │ +BCFF900D715D0C7EC43C5E7180CAD6427BA4FD41AAD6531A5C06B0EC26DDA71F │ │ │ │ +4A9DA50DE919E79226F6DDF7C1BA478936AA86CEAD93072CC2960E98C45A1A0C │ │ │ │ +60CF8A26E4278AB4F9E28FA6532648196CC455607D6BCD00F60675DE8CC02C8C │ │ │ │ +9BE5D5B714731814D5B008EE236563D77AC6895E0158877C95797E07C02AFEBE │ │ │ │ +CC9FE97D5E103F7DB0A834E9A7A75893EC66340B0E4C6F0EEDEF43415BF9FCF4 │ │ │ │ +47340CBEA4DCFBA0D028EB2149FFBBDB3322AE5F6FD20242526EDC55E476D983 │ │ │ │ +DC │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -2995,15 +3001,15 @@ │ │ │ │ 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 3[51 12[45 22[47 15[25 │ │ │ │ -3[45 3[45 1[45 3[25 44[{}11 90.9091 /CMSL10 rf │ │ │ │ +3[45 3[45 45 45 3[25 44[{}12 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 │ │ │ │ @@ -3111,20 +3117,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 1153 4 v │ │ │ │ -1335 w Fg(Lock)29 b Fd(:)41 b Fc(DRAFT)30 b Fd(Jan)m(uary)g(6,)h(2026)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 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fh(2)p 136 100 1130 4 v │ │ │ │ +1312 w Fg(Lock)29 b Fd(:)41 b Fc(DRAFT)30 b Fd(Jan)m(uary)g(10,)i(2026) │ │ │ │ +p 2770 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 │ │ │ │ @@ -3179,17 +3185,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 1153 4 v 1334 100 a Fg(Lock)29 │ │ │ │ -b Fd(:)41 b Fc(DRAFT)121 b Fd(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2700 100 V 1153 w Fh(3)111 399 y(2.)46 b Fg(void)h(Lock_unlock)e(\()i │ │ │ │ +TeXDict begin 3 2 bop 91 100 1130 4 v 1312 100 a Fg(Lock)29 │ │ │ │ +b Fd(:)40 b Fc(DRAFT)122 b Fd(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2723 100 V 1130 w Fh(3)111 399 y(2.)46 b Fg(void)h(Lock_unlock)e(\()i │ │ │ │ (Lock)g(*lock)f(\))i(;)227 549 y Fh(This)30 b(metho)s(d)g(unlo)s(c)m │ │ │ │ (ks)g(the)g(lo)s(c)m(k.)227 699 y Fc(Err)-5 b(or)34 b(che)-5 │ │ │ │ b(cking:)40 b Fh(If)30 b Fg(lock)g Fh(is)g Fg(NULL)p │ │ │ │ Fh(,)f(an)i(error)f(message)h(is)g(prin)m(ted)f(and)f(the)i(program)f │ │ │ │ (exits.)p eop end │ │ │ │ %%Page: 4 4 │ │ │ │ TeXDict begin 4 3 bop 0 866 a Fi(Index)0 1289 y Fg(Lock)p │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -19,15 +19,15 @@ │ │ │ │ │ • int nlocks : number of locks made. │ │ │ │ │ • int nunlocks : number of unlocks made. │ │ │ │ │ • the mutual exclusion lock │ │ │ │ │ For Solaris threads we have mutex t *mutex. │ │ │ │ │ For POSIX threads we have pthread mutex t *mutex. │ │ │ │ │ For no threads we have void *mutex. │ │ │ │ │ 1 │ │ │ │ │ - 2 Lock : DRAFT January 6, 2026 │ │ │ │ │ + 2 Lock : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 3 │ │ │ │ │ + Lock : DRAFT January 10, 2026 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 2026.01.06:2034 │ │ │ │ +%DVIPSSource: TeX output 2026.01.10:0513 │ │ │ │ %%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,14 +1204,15 @@ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ /UnderlineThickness 50 def │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ +dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ dup 54 /six put │ │ │ │ dup 58 /colon put │ │ │ │ dup 74 /J put │ │ │ │ dup 97 /a put │ │ │ │ dup 110 /n put │ │ │ │ dup 114 /r put │ │ │ │ @@ -1401,79 +1402,84 @@ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB88440048702D1F │ │ │ │ -77994EE04EC3B4531D6E1888C86A8F0DA6CF1F056F16AB0DD76C862830F89DA4 │ │ │ │ -28923B3AA543E0D6E41D3BD283E600BC11F889315EE92C675C109C81065ED1BC │ │ │ │ -82A5583D1B723D50051B0557A367887F5B263014C6E77288B4883C50889473D3 │ │ │ │ -3787BAD4BEB88BD1353AFA5B73E61814819537E7FF09F53EF94792BB3DD36ED0 │ │ │ │ -002D0E7A6CDAB85A9C17AF5664BCB5A71663B861880F3ECCABC8E7A2FC81A4CC │ │ │ │ -AE7A87503FDC1CE0077BA51ECC7B43B60793FED8E9AAD5BBD03ADD6183DCD26D │ │ │ │ -24A74163611C05562437644EF9B8889FD4F9D311911204FEFD35237486F2D2D0 │ │ │ │ -B6783A03BF12EA6D19D6D0F87E4D08515F12F9CBF1961CAA71E0D69FE3C4C4D2 │ │ │ │ -7C7FB64ED24F8684C8F00C2BEDEA53EA390CDC0B5BEBD7DD982580B2EA1F1F89 │ │ │ │ -CFED5916630DC2BA32BB9180277E1ABC339B3B7DE086717BD93F7FF3681BA5B3 │ │ │ │ -FCF671C4B293C2DE4A322F0AA3323A4934444C69F23EF90120B8755482757759 │ │ │ │ -C457A435FB8BB4922BD92C5F3D9555D978275C510183E29DFF2FCE4ABBFC18DE │ │ │ │ -76CAD3B486BA12047DD808CD4D521A0FD368E4AE79DE262630983A5D6F0B679D │ │ │ │ -2F005306393C520E1B6987302D029939D94B0178DB06211C7F3B123A41E6E7BA │ │ │ │ -87164737110707A3ED3983895F3FBC815EF370F54C808ED93D910937BCA3D8AF │ │ │ │ -7CBF80DC180CDA54059DB76710B4FCD4139D5B7DA7DB1A0D0AF86AD2453D3691 │ │ │ │ -0BA5BAD40FF28BB4235FCD40FC87C2B888E67928D9B0ACA5692149373DBB93BF │ │ │ │ -6520DDD36A9BFE4D415CA67A5E04F1D48BDB28C69676273ED842CF7980E8E17C │ │ │ │ -B88563F407E340AFAE8F51AABCF8A39521BCEE1EC8396D75E124B24B4675909F │ │ │ │ -E246F87DA08584A3173AEFF153ECDF610543FA7474D125A31ADD6285A49222B5 │ │ │ │ -177066EA395BFA4B1114C7FCF7712DA772A21C99E64F4E1181E69CAF98137FA2 │ │ │ │ -76CF74F682B8CD7BA6EEA79B70FA8A76809634517F8415B6F21A5A7D6099B5E8 │ │ │ │ -EAB356BBC4FB68C72B8C61DDCE8EAB1A53B9D6BAD78584B307EFF57CEAE74884 │ │ │ │ -35987BF89E9E60E962D22FA5612F2DB5EB840499B7CC11A34BA5DEE30D277540 │ │ │ │ -39B8211D69B448ADE95B723F8369A631DE6DD75703AFD7485FB7FFF41A60CBE4 │ │ │ │ -813B8FEA120662355773830EF85015E7FFD609B2CEE52CB5FFE9C35B6BEEE4A4 │ │ │ │ -A66719E31CE1523FDD7771FB1E881A32A7DB7D92C2326DF4B93241C14ABFCCD6 │ │ │ │ -8E5BCAC61E800E6B1B4687ADA4CBF41EC0AFC26D021D1772CBDCD0516DF5EBE1 │ │ │ │ -37FD2AC5ABB8D774B5735940F1F6866D044FD8CE74444FAA5D0202C11E39CC10 │ │ │ │ -213731F41F704450E1D0565013BF22188442CE0FC256190A9F92F0C802AA2660 │ │ │ │ -614AFE9E9C82F8CD2E6035EEF84E5F16CBB690AC819B4B910EA8E81106F0ACE5 │ │ │ │ -CDFE77DAF69E4AFE72C43145A3ABCC40B6C5297487083F738C86422277AC2267 │ │ │ │ -51759F1B7F129E87DE16433B664AD0FB6D30424A11C70B52B591352BF653C8B0 │ │ │ │ -0840C224FBFEAA996A6BE1D69414DD778C2EF56A63B64D59BA412EC3E4000831 │ │ │ │ -73361FB9813F9A7C74BA3A50D331B07B61492E5D75F0861B530587269B3ADC90 │ │ │ │ -EA1DF586AC4BC57C3230893EFE953A6E76950ABA895FAC711D3BD330ABC6846A │ │ │ │ -C91F6ABF3410B913DFE5C8266020CEE5C7A9EDA2E7D9BCA797DC486443C7BA7C │ │ │ │ -7E03439A40927FA3251B6D417E5653E7799E9D6F04149C34096E2CA9B1F9B1EC │ │ │ │ -38958A2521B4A657A8B9F16E1FD66C7E345A10D7AA0241559503D214AC6507A4 │ │ │ │ -CBDE8617AA7ED136577734428594487F3565BF45FA196375759E2FE23C26EC8A │ │ │ │ -3310A36917A5E2F260EAB31030F8E570303D36B833626938F56939849DFA1F3F │ │ │ │ -66D0A317BB6364427F1512AAB380B555611C76345C02C3A6FBF78590331D5ECA │ │ │ │ -029DEFB722F6AB05327C2A31AB7BD6ED0F0386E6F45C1278048D22B90B074CCB │ │ │ │ -2BBEBCC1927C97EC532E651CAF0058AFE8FC08F00F0216D5DD9830C294FF76DA │ │ │ │ -426A073B3A3AEEFBDEE71C5182186311607ECDBD1F1AF4C5E79748CD01445C8D │ │ │ │ -25DD49490C8A6810065908222C8D0AC9F83AFBEE7115023E2D2615A170A5D40A │ │ │ │ -AD49BDF59A59187B6434F83E68EED22EF4EFDBADED6F1559AC779E0377FE7375 │ │ │ │ -D7060584FE74B1859D0FD98772253A712B17FFBB467840C484F5EF82C5677ADB │ │ │ │ -EDF159A456A526B8B9F6E8FC7608DFD47B0F09E26118F79CBE53B6C4E32BACAB │ │ │ │ -D62AFD4AA527CC4B587BB41A17A9BCE106A8C592BC9B73422B712C466C284A17 │ │ │ │ -E8D0C1E01D43C739FB1C083AD2714F78AC785B0C09AA7E67417A73510E00F2FE │ │ │ │ -E3D3EBF626A2F3A20A386E3F98D1285F4A2A332FC609CD191F01F128627B3505 │ │ │ │ -0AC2387DC0AD1B950490EBB5045F22BEC54955402CE2D267B6754E7C32BE84E8 │ │ │ │ -E6B63E3D3EAEE979442D167AEF69C27B22A8E887A2510C3A168D95D285CF7515 │ │ │ │ -011C921679B2F386575826A3F2071D015EEB78F02A4F94D4E5F07873623200F8 │ │ │ │ -7DF95BA0DC6B6D31DECC925BEA1E6A7C52FE685800EC33CBAE830F1AE5454DFA │ │ │ │ -913B8F457D7E2D3DFF019869E3301EEEC64A38295DE6B588E776922B32362382 │ │ │ │ -D1CF3D058613C8A96E6994D3EC23E8B71EC6E718383B20BB6C22DB6F93FA559F │ │ │ │ -3449CA84EB33B25C8BE0DFD1C29DC4FBD7AFBDC96C12162CAAB2C5E354B0FB10 │ │ │ │ -4BF8CC3610875ABD5111D09F2F847822118972214EDEB9EE34BAFE45E7AC15C5 │ │ │ │ -CA63EC4A3CEEA505A5EDD88A59BB67C71C3E026DFFE177F99BC69E6635545D03 │ │ │ │ -77A634F98230EF64381EC67CA519D4B9770EFA844789E21970F89D5FFC5DEAA8 │ │ │ │ -DC008EBA09306967ED090FF91B002FA6120C2B461A87AA32EFB003C5578D8EEF │ │ │ │ - │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ +AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ +E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ +46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ +FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ +389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ +7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ +2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ +C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ +B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ +AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ +E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ +F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ +0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ +2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ +29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ +CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ +6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ +5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ +36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0DD96AB602D004DCFE000A0 │ │ │ │ +ABE41BAB8AB7D50BD32BFD6F1AA3B60B09B9BE4E273EDD2DDCB21A98A760D17D │ │ │ │ +0A5C9303AFE63CF80A93E60C72A0576FAADEECBE2DE91892D210EB0AD1889C04 │ │ │ │ +C7530652584E775B4ED19CFB4B8DBCCC57A9FA9E4DDC8A1E5A1D3BE9E93407A6 │ │ │ │ +2C237ACE27F4EDA330EE952EDCBE91683AA98A29197735006666C96A2CE7C787 │ │ │ │ +BBA5A57C4DBF6FAA5B38AF226B5D9A65FAD84650AC0C3DB29C30602699F81E01 │ │ │ │ +0BAF8F1CE44A03C680121B77A1703C638187675D6C22C49F9902475E6CE9C732 │ │ │ │ +48ED028CC92EA542EF189CC9CA1C384E3387793057615D0A2BF040CC90B275B9 │ │ │ │ +F70A5310874DC2E0A360373E7BCAC88250FBC8989C7D18DA8274C06F02FCF31C │ │ │ │ +2B3868CBAF083DAC2FB159DE368261842DB7C9EA1A86B17617C861A48FBA8FF9 │ │ │ │ +D184CB026F4A418C0955347612F94C039B1536A76CB182A591DD7C02D509CF16 │ │ │ │ +8B9E46502ABF5DE31F5DFBD19C7417A2AF7AF13F0D5FF837C94CE56F07B96337 │ │ │ │ +0ED215252346FAEB54B5F3ABE29709B7ECB9FBD23A4AD397E6ABA6938F1BBF33 │ │ │ │ +1D5460D9414F0B8725DA832744525C13E3FD9C8DB33FBEE12F9C4969988402C8 │ │ │ │ +96AF916364CC2DF17EDBA622FC0A5D0013418E29F912FFA06F8D7E31ECAB0B08 │ │ │ │ +C4D2D8EE537CC768FC9038DD6D86D33642C6E812E941F157FC6917AF19C2B99A │ │ │ │ +5BF10B9A7ECF711BBB6F33C8C3DAD778153122593F36ABDDC0E97A602B045DE6 │ │ │ │ +19BD82D877DDA960AB11EF48C7F75A28D0D731D4A5DBC98283087267CD1A470D │ │ │ │ +537E949DA5EECF097B099547995BE066A941CED683B5748962AD2B02C21636C0 │ │ │ │ +2EAFA33CA0CB3BF8A95703F015A210D918865B9BEA2890DCFB68BC3719C305EC │ │ │ │ +315EC8727BF9A93632AB9E3090B100C022EE1396CD329B37547F26A7DCE52BD7 │ │ │ │ +F91B7388DEC34F4A0C6D46CD7CA6ACC00C5C4C71E47C6AD96496B3CBF531F342 │ │ │ │ +A740EE6B99BD70AD490DFA700772A0697EC6561CE88A0113E4DC3B21F372D810 │ │ │ │ +DFF2C3F6EDF3E917BF2664EEFC9AD292DD6CC36853CF936018D43FDB28D5B001 │ │ │ │ +7D1C805F958F13FD221377ABDD69D102E8CC1DAB2E011EE16CF6DB9D195BA702 │ │ │ │ +5A8738FABF989B0351282D0E5121182DFC52169782A5F3DD5D820411BEF909DE │ │ │ │ +04D963E6FDA76F88508C4E91DDAAA1748F396A1D380D8CA429673AF27C164434 │ │ │ │ +771781B39565D3EE50F3CF03EF12908B13A6C11C9AB7631B32125828B13050BA │ │ │ │ +041A93B97AC32D4A1E28C5FA98CDEE998B5F97823D6291D01E3611A16854F1FE │ │ │ │ +69B9D6D2AE3E56D012B7BC3E582FB4C23188A5E365E65EB1F804A706AF73A2F8 │ │ │ │ +9804808EF71F0982B14133BF9A27D6F2E719BDB751022B1B052722933948904E │ │ │ │ +3582E363478DCDA115205A0FDE39DF71FEAEEB104419C35A6B0678C19616C6D9 │ │ │ │ +A892DC2F4257069AF096C80C099CD13024DF3995F28C694E00D1F08B43D4450C │ │ │ │ +D18F5C925CFD2D124E74FC64BBAA0DE32A79E4A4507B5B5DD834C67160CDA110 │ │ │ │ +EF0061DD27E8864F4250A92BBEFD75C784BB98F4FA789A8236C2A21E4E61ABD0 │ │ │ │ +C6B4D13B3C31AC8E55FA34BEC7C308C61FB0280382EC6AFD63D959678D42D2B3 │ │ │ │ +4134F6236A0808D9302B4E3C6F81FC6973B4833602750CCB5DE36AEA23ED6BD4 │ │ │ │ +5B72DF0DD7B81C871CAA6EC190748CD8C4B998D576E5D340ACAC0617DDBE461C │ │ │ │ +8E82E809D11A01D265D039F4315066832E27E08A6F067E129E45FBF533F761BB │ │ │ │ +EC3C071209BECE7D14D3184B2E6BFD65717A5A7C08F3776B20C513649488C1CF │ │ │ │ +03333805B249D1034FB0AE2D7D2A23324EE27AEDB68F8E329A8052FE58D7C0D9 │ │ │ │ +A40A0CDC79F2085C4F39A7DFDB625C8F071E2A32CF6215DD3E060A9BABF7A3AA │ │ │ │ +C57DA0C0571C5D6EEAA975D1BB9C99F8EA4958360E43E8C60080B03DC4435550 │ │ │ │ +E6048DDD35DF3E5DA69669F266FFD7B44649A68025270DC84258E329F6E6907C │ │ │ │ +BCFF900D715D0C7EC43C5E7180CAD6427BA4FD41AAD6531A5C06B0EC26DDA71F │ │ │ │ +4A9DA50DE919E79226F6DDF7C1BA478936AA86CEAD93072CC2960E98C45A1A0C │ │ │ │ +60CF8A26E4278AB4F9E28FA6532648196CC455607D6BCD00F60675DE8CC02C8C │ │ │ │ +9BE5D5B714731814D5B008EE236563D77AC6895E0158877C95797E07C02AFEBE │ │ │ │ +CC9FE97D5E103F7DB0A834E9A7A75893EC66340B0E4C6F0EEDEF43415BF9FCF4 │ │ │ │ +47340CBEA4DCFBA0D028EB2149FFBBDB3322AE5F6FD20242526EDC55E476D983 │ │ │ │ +DC │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -4890,15 +4896,15 @@ │ │ │ │ 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 │ │ │ │ -3[46 12[42 22[43 15[23 3[42 3[42 1[42 3[23 44[{}11 83.022 │ │ │ │ +3[46 12[42 22[43 15[23 3[42 3[42 42 42 3[23 44[{}12 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 │ │ │ │ /tieaccentlowercase.new/tieaccentcapital.new/.notdef/afii61664.asc/uni2422 3 │ │ │ │ @@ -5047,17 +5053,17 @@ │ │ │ │ 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 1249 4 v │ │ │ │ -1414 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(Jan)n(uary)f(6,)h(2026)p │ │ │ │ -2652 100 V 301 390 a Fe({)41 b Fn(2)27 b(\()p Fl(SPOOLES)p │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fn(2)p 125 100 1228 4 v │ │ │ │ +1393 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(Jan)n(uary)f(10,)h(2026)p │ │ │ │ +2673 100 V 301 390 a Fe({)41 b Fn(2)27 b(\()p Fl(SPOOLES)p │ │ │ │ 804 390 27 4 v 29 w(NONSYMMETRIC)p Fn(\))c({)k(nonsymmetric)g(matrix) │ │ │ │ 125 559 y Ff(\210)42 b Fl(opflag)25 b Fn(|)i(op)r(eration)g(\015ag)g │ │ │ │ (for)g(the)h(m)n(ultiply)301 728 y Fe({)41 b Fn(0)27 │ │ │ │ b(\()p Fl(MMM)p 628 728 V 31 w(WITH)p 835 728 V 30 w(A)p │ │ │ │ Fn(\))g(|)h(p)r(erform)f Fh(Y)42 b Fn(:=)22 b Fh(Y)37 │ │ │ │ b Fn(+)18 b Fh(\013AX)301 862 y Fe({)41 b Fn(1)27 b(\()p │ │ │ │ Fl(MMM)p 628 862 V 31 w(WITH)p 835 862 V 30 w(AT)p Fn(\))g(|)g(p)r │ │ │ │ @@ -5137,17 +5143,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 1249 4 v 1414 100 a Fl(MPI)27 │ │ │ │ -b Fd(:)g Fm(DRAFT)111 b Fd(Jan)n(uary)25 b(6,)i(2026)p │ │ │ │ -2612 100 V 1249 w Fn(3)556 377 y Fl(stats[0])97 b Fn(|)i(#)28 │ │ │ │ +TeXDict begin 3 2 bop 83 100 1228 4 v 1393 100 a Fl(MPI)27 │ │ │ │ +b Fd(:)h Fm(DRAFT)110 b Fd(Jan)n(uary)25 b(10,)i(2026)p │ │ │ │ +2633 100 V 1228 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) │ │ │ │ @@ -5245,17 +5251,17 @@ │ │ │ │ Fn(v)n(ector)j(con)n(tains)f(the)i(follo)n(wing)f(information.)556 │ │ │ │ 5319 y Fl(stats[0])97 b Fn(|)i(#)28 b(of)g(messages)e(sen)n(t)344 │ │ │ │ b Fl(stats[1])96 b Fn(|)k(#)28 b(of)f(b)n(ytes)g(sen)n(t)556 │ │ │ │ 5419 y Fl(stats[2])97 b Fn(|)i(#)28 b(of)g(messages)e(receiv)n(ed)198 │ │ │ │ b Fl(stats[3])96 b Fn(|)k(#)28 b(of)f(b)n(ytes)g(receiv)n(ed)p │ │ │ │ eop end │ │ │ │ %%Page: 4 4 │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fn(4)p 125 100 1249 4 v │ │ │ │ -1414 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(Jan)n(uary)f(6,)h(2026)p │ │ │ │ -2652 100 V 208 390 a Fn(Note,)g(the)h(v)-5 b(alues)27 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fn(4)p 125 100 1228 4 v │ │ │ │ +1393 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(Jan)n(uary)f(10,)h(2026)p │ │ │ │ +2673 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 │ │ │ │ @@ -5343,17 +5349,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 1249 4 v 1414 100 a Fl(MPI)27 │ │ │ │ -b Fd(:)g Fm(DRAFT)111 b Fd(Jan)n(uary)25 b(6,)i(2026)p │ │ │ │ -2612 100 V 1249 w Fn(5)0 390 y Fj(1.2.2)112 b(Gather)38 │ │ │ │ +TeXDict begin 5 4 bop 83 100 1228 4 v 1393 100 a Fl(MPI)27 │ │ │ │ +b Fd(:)h Fm(DRAFT)110 b Fd(Jan)n(uary)25 b(10,)i(2026)p │ │ │ │ +2633 100 V 1228 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 │ │ │ │ @@ -5435,17 +5441,17 @@ │ │ │ │ 5108 y(FILE)g(*msgFile,)e(int)i(firsttag,)e(MPI_Comm)g(comm)i(\))h(;) │ │ │ │ 208 5208 y(IVL)f(*)h(SymbFac_MPI_init)o(Fro)o(mP)o(enc)o(il)37 │ │ │ │ b(\()43 b(ETree)f(*etree,)e(IV)j(*frontOwnersIV,)1733 │ │ │ │ 5308 y(Pencil)e(*pencil,)f(int)j(stats[],)d(int)i(msglvl,)1733 │ │ │ │ 5407 y(FILE)g(*msgFile,)e(int)i(firsttag,)e(MPI_Comm)g(comm)i(\))h(;)p │ │ │ │ eop end │ │ │ │ %%Page: 6 6 │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fn(6)p 125 100 1249 4 v │ │ │ │ -1414 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(Jan)n(uary)f(6,)h(2026)p │ │ │ │ -2652 100 V 208 390 a Fn(These)19 b(metho)r(ds)h(are)e(used)i(in)g │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fn(6)p 125 100 1228 4 v │ │ │ │ +1393 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(Jan)n(uary)f(10,)h(2026)p │ │ │ │ +2673 100 V 208 390 a Fn(These)19 b(metho)r(ds)h(are)e(used)i(in)g │ │ │ │ (place)f(of)h(the)g Fl(Symbfac)p 1907 390 27 4 v 28 w(initFrom)p │ │ │ │ Fb(f)p Fl(InpMtx,P)o(en)o(cil)o Fb(g)p Fl(\()o(\))14 │ │ │ │ b Fn(metho)r(ds)19 b(to)h(compute)g(the)208 490 y(sym)n(b)r(olic)27 │ │ │ │ b(factorization.)37 b(The)28 b Fl(ETree)e Fn(ob)5 b(ject)28 │ │ │ │ b(is)g(assumed)f(to)h(b)r(e)h(replicated)e(o)n(v)n(er)f(the)j(pro)r │ │ │ │ (cesses.)36 b(The)28 b Fl(InpMtx)208 589 y Fn(and)i Fl(Pencil)e │ │ │ │ Fn(ob)5 b(jects)30 b(are)f(partitioned)h(among)f(the)i(pro)r(cesses.)44 │ │ │ │ @@ -5533,17 +5539,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 1249 4 v 1414 100 a Fl(MPI)27 │ │ │ │ -b Fd(:)g Fm(DRAFT)111 b Fd(Jan)n(uary)25 b(6,)i(2026)p │ │ │ │ -2612 100 V 1249 w Fn(7)208 390 y(On)g(return,)g(the)h │ │ │ │ +TeXDict begin 7 6 bop 83 100 1228 4 v 1393 100 a Fl(MPI)27 │ │ │ │ +b Fd(:)h Fm(DRAFT)110 b Fd(Jan)n(uary)25 b(10,)i(2026)p │ │ │ │ +2633 100 V 1228 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 │ │ │ │ @@ -5625,17 +5631,17 @@ │ │ │ │ 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 1249 4 v │ │ │ │ -1414 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(Jan)n(uary)f(6,)h(2026)p │ │ │ │ -2652 100 V 208 390 a Fn(ob)5 b(ject,)33 b(and)g(comm)n(unicates)f(the)h │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fn(8)p 125 100 1228 4 v │ │ │ │ +1393 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(Jan)n(uary)f(10,)h(2026)p │ │ │ │ +2673 100 V 208 390 a Fn(ob)5 b(ject,)33 b(and)g(comm)n(unicates)f(the)h │ │ │ │ (en)n(tries)f(around)g(the)h(pro)r(cessors)e(un)n(til)i(the)g(global)f │ │ │ │ Fl(IV)g Fn(ob)5 b(ject)33 b(is)f(presen)n(t)g(on)208 │ │ │ │ 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 │ │ │ │ @@ -5711,17 +5717,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 1249 4 v 1414 100 a Fl(MPI)27 │ │ │ │ -b Fd(:)g Fm(DRAFT)111 b Fd(Jan)n(uary)25 b(6,)i(2026)p │ │ │ │ -2612 100 V 1249 w Fn(9)0 390 y Fj(1.2.7)112 b(Matrix-matrix)39 │ │ │ │ +TeXDict begin 9 8 bop 83 100 1228 4 v 1393 100 a Fl(MPI)27 │ │ │ │ +b Fd(:)h Fm(DRAFT)110 b Fd(Jan)n(uary)25 b(10,)i(2026)p │ │ │ │ +2633 100 V 1228 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 │ │ │ │ @@ -5796,17 +5802,17 @@ │ │ │ │ (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 1228 4 │ │ │ │ -v 1392 w Fl(MPI)27 b Fd(:)h Fm(DRAFT)f Fd(Jan)n(uary)e(6,)j(2026)p │ │ │ │ -2673 100 V 101 390 a Fn(3.)42 b Fl(void)f(MatMul_MPI_mmm)d(\()43 │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fn(10)p 166 100 1207 4 │ │ │ │ +v 1372 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(Jan)n(uary)f(10,)g(2026)p │ │ │ │ +2693 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 │ │ │ │ @@ -5886,17 +5892,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 1228 4 v 1393 100 a Fl(MPI)27 │ │ │ │ -b Fd(:)h Fm(DRAFT)110 b Fd(Jan)n(uary)25 b(6,)j(2026)p │ │ │ │ -2592 100 V 1228 w Fn(11)0 390 y Fj(1.2.9)112 b(Utilit)m(y)38 │ │ │ │ +TeXDict begin 11 10 bop 83 100 1207 4 v 1373 100 a Fl(MPI)26 │ │ │ │ +b Fd(:)i Fm(DRAFT)110 b Fd(Jan)n(uary)26 b(10,)g(2026)p │ │ │ │ +2612 100 V 1207 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 │ │ │ │ @@ -5980,17 +5986,17 @@ │ │ │ │ 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 1228 │ │ │ │ -4 v 1392 w Fl(MPI)27 b Fd(:)h Fm(DRAFT)f Fd(Jan)n(uary)e(6,)j(2026)p │ │ │ │ -2673 100 V 556 377 a Fl(stats[0])97 b Fn(|)i(#)28 b(of)g(messages)e │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fn(12)p 166 100 1207 │ │ │ │ +4 v 1372 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(Jan)n(uary)f(10,)g(2026)p │ │ │ │ +2693 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 │ │ │ │ @@ -6059,17 +6065,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 1228 4 v 1393 100 a Fl(MPI)27 │ │ │ │ -b Fd(:)h Fm(DRAFT)110 b Fd(Jan)n(uary)25 b(6,)j(2026)p │ │ │ │ -2592 100 V 1228 w Fn(13)208 390 y(where)i Fl(neqns)g │ │ │ │ +TeXDict begin 13 12 bop 83 100 1207 4 v 1373 100 a Fl(MPI)26 │ │ │ │ +b Fd(:)i Fm(DRAFT)110 b Fd(Jan)n(uary)26 b(10,)g(2026)p │ │ │ │ +2612 100 V 1207 w Fn(13)208 390 y(where)k 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 │ │ │ │ @@ -6144,17 +6150,17 @@ │ │ │ │ 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 1228 │ │ │ │ -4 v 1392 w Fl(MPI)27 b Fd(:)h Fm(DRAFT)f Fd(Jan)n(uary)e(6,)j(2026)p │ │ │ │ -2673 100 V 307 390 a Ff(\210)42 b Fn(The)23 b Fl(msglvl)e │ │ │ │ +TeXDict begin 14 13 bop 0 100 a Fn(14)p 166 100 1207 │ │ │ │ +4 v 1372 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(Jan)n(uary)f(10,)g(2026)p │ │ │ │ +2693 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 │ │ │ │ @@ -6236,17 +6242,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 1228 4 v 1393 100 a Fl(MPI)27 │ │ │ │ -b Fd(:)h Fm(DRAFT)110 b Fd(Jan)n(uary)25 b(6,)j(2026)p │ │ │ │ -2592 100 V 1228 w Fn(15)101 390 y(4.)42 b Fl(testGraph_Bcast)37 │ │ │ │ +TeXDict begin 15 14 bop 83 100 1207 4 v 1373 100 a Fl(MPI)26 │ │ │ │ +b Fd(:)i Fm(DRAFT)110 b Fd(Jan)n(uary)26 b(10,)g(2026)p │ │ │ │ +2612 100 V 1207 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 │ │ │ │ @@ -6338,17 +6344,17 @@ │ │ │ │ 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 1228 │ │ │ │ -4 v 1392 w Fl(MPI)27 b Fd(:)h Fm(DRAFT)f Fd(Jan)n(uary)e(6,)j(2026)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 │ │ │ │ +TeXDict begin 16 15 bop 0 100 a Fn(16)p 166 100 1207 │ │ │ │ +4 v 1372 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(Jan)n(uary)f(10,)g(2026)p │ │ │ │ +2693 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 │ │ │ │ @@ -6446,17 +6452,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 1228 4 v 1393 100 a Fl(MPI)27 │ │ │ │ -b Fd(:)h Fm(DRAFT)110 b Fd(Jan)n(uary)25 b(6,)j(2026)p │ │ │ │ -2592 100 V 1228 w Fn(17)307 390 y Ff(\210)42 b Fn(The)23 │ │ │ │ +TeXDict begin 17 16 bop 83 100 1207 4 v 1373 100 a Fl(MPI)26 │ │ │ │ +b Fd(:)i Fm(DRAFT)110 b Fd(Jan)n(uary)26 b(10,)g(2026)p │ │ │ │ +2612 100 V 1207 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 │ │ │ │ @@ -6555,17 +6561,17 @@ │ │ │ │ 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 1228 │ │ │ │ -4 v 1392 w Fl(MPI)27 b Fd(:)h Fm(DRAFT)f Fd(Jan)n(uary)e(6,)j(2026)p │ │ │ │ -2673 100 V 307 390 a Ff(\210)42 b Fn(The)28 b Fl(nrowA)d │ │ │ │ +TeXDict begin 18 17 bop 0 100 a Fn(18)p 166 100 1207 │ │ │ │ +4 v 1372 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(Jan)n(uary)f(10,)g(2026)p │ │ │ │ +2693 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 │ │ │ │ @@ -6655,17 +6661,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 1228 4 v 1393 100 a Fl(MPI)27 │ │ │ │ -b Fd(:)h Fm(DRAFT)110 b Fd(Jan)n(uary)25 b(6,)j(2026)p │ │ │ │ -2592 100 V 1228 w Fn(19)307 390 y Ff(\210)42 b Fn(The)28 │ │ │ │ +TeXDict begin 19 18 bop 83 100 1207 4 v 1373 100 a Fl(MPI)26 │ │ │ │ +b Fd(:)i Fm(DRAFT)110 b Fd(Jan)n(uary)26 b(10,)g(2026)p │ │ │ │ +2612 100 V 1207 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 │ │ │ │ @@ -6758,17 +6764,17 @@ │ │ │ │ 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 1228 │ │ │ │ -4 v 1392 w Fl(MPI)27 b Fd(:)h Fm(DRAFT)f Fd(Jan)n(uary)e(6,)j(2026)p │ │ │ │ -2673 100 V 208 390 a Fn(from)i(the)i(structure)e(of)h(the)h(graph)e │ │ │ │ +TeXDict begin 20 19 bop 0 100 a Fn(20)p 166 100 1207 │ │ │ │ +4 v 1372 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(Jan)n(uary)f(10,)g(2026)p │ │ │ │ +2693 100 V 208 390 a Fn(from)k(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 │ │ │ │ ├── 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 January 6, 2026 │ │ │ │ │ + 2 MPI : DRAFT January 10, 2026 │ │ │ │ │ – 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 January 6, 2026 3 │ │ │ │ │ + MPI : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 4 MPI : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 5 │ │ │ │ │ + MPI : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 6 MPI : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 7 │ │ │ │ │ + MPI : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 8 MPI : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 9 │ │ │ │ │ + MPI : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 10 MPI : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 11 │ │ │ │ │ + MPI : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 12 MPI : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 13 │ │ │ │ │ + MPI : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 14 MPI : DRAFT January 10, 2026 │ │ │ │ │ • 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 January 6, 2026 15 │ │ │ │ │ + MPI : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 16 MPI : DRAFT January 10, 2026 │ │ │ │ │ – 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 January 6, 2026 17 │ │ │ │ │ + MPI : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 18 MPI : DRAFT January 10, 2026 │ │ │ │ │ • 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 January 6, 2026 19 │ │ │ │ │ + MPI : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 20 MPI : DRAFT January 10, 2026 │ │ │ │ │ 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 2026.01.06:2034 │ │ │ │ +%DVIPSSource: TeX output 2026.01.10:0513 │ │ │ │ %%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 │ │ │ │ @@ -1227,14 +1227,15 @@ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ /UnderlineThickness 50 def │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ +dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ dup 54 /six put │ │ │ │ dup 58 /colon put │ │ │ │ dup 74 /J put │ │ │ │ dup 97 /a put │ │ │ │ dup 110 /n put │ │ │ │ dup 114 /r put │ │ │ │ @@ -1424,79 +1425,84 @@ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB88440048702D1F │ │ │ │ -77994EE04EC3B4531D6E1888C86A8F0DA6CF1F056F16AB0DD76C862830F89DA4 │ │ │ │ -28923B3AA543E0D6E41D3BD283E600BC11F889315EE92C675C109C81065ED1BC │ │ │ │ -82A5583D1B723D50051B0557A367887F5B263014C6E77288B4883C50889473D3 │ │ │ │ -3787BAD4BEB88BD1353AFA5B73E61814819537E7FF09F53EF94792BB3DD36ED0 │ │ │ │ -002D0E7A6CDAB85A9C17AF5664BCB5A71663B861880F3ECCABC8E7A2FC81A4CC │ │ │ │ -AE7A87503FDC1CE0077BA51ECC7B43B60793FED8E9AAD5BBD03ADD6183DCD26D │ │ │ │ -24A74163611C05562437644EF9B8889FD4F9D311911204FEFD35237486F2D2D0 │ │ │ │ -B6783A03BF12EA6D19D6D0F87E4D08515F12F9CBF1961CAA71E0D69FE3C4C4D2 │ │ │ │ -7C7FB64ED24F8684C8F00C2BEDEA53EA390CDC0B5BEBD7DD982580B2EA1F1F89 │ │ │ │ -CFED5916630DC2BA32BB9180277E1ABC339B3B7DE086717BD93F7FF3681BA5B3 │ │ │ │ -FCF671C4B293C2DE4A322F0AA3323A4934444C69F23EF90120B8755482757759 │ │ │ │ -C457A435FB8BB4922BD92C5F3D9555D978275C510183E29DFF2FCE4ABBFC18DE │ │ │ │ -76CAD3B486BA12047DD808CD4D521A0FD368E4AE79DE262630983A5D6F0B679D │ │ │ │ -2F005306393C520E1B6987302D029939D94B0178DB06211C7F3B123A41E6E7BA │ │ │ │ -87164737110707A3ED3983895F3FBC815EF370F54C808ED93D910937BCA3D8AF │ │ │ │ -7CBF80DC180CDA54059DB76710B4FCD4139D5B7DA7DB1A0D0AF86AD2453D3691 │ │ │ │ -0BA5BAD40FF28BB4235FCD40FC87C2B888E67928D9B0ACA5692149373DBB93BF │ │ │ │ -6520DDD36A9BFE4D415CA67A5E04F1D48BDB28C69676273ED842CF7980E8E17C │ │ │ │ -B88563F407E340AFAE8F51AABCF8A39521BCEE1EC8396D75E124B24B4675909F │ │ │ │ -E246F87DA08584A3173AEFF153ECDF610543FA7474D125A31ADD6285A49222B5 │ │ │ │ -177066EA395BFA4B1114C7FCF7712DA772A21C99E64F4E1181E69CAF98137FA2 │ │ │ │ -76CF74F682B8CD7BA6EEA79B70FA8A76809634517F8415B6F21A5A7D6099B5E8 │ │ │ │ -EAB356BBC4FB68C72B8C61DDCE8EAB1A53B9D6BAD78584B307EFF57CEAE74884 │ │ │ │ -35987BF89E9E60E962D22FA5612F2DB5EB840499B7CC11A34BA5DEE30D277540 │ │ │ │ -39B8211D69B448ADE95B723F8369A631DE6DD75703AFD7485FB7FFF41A60CBE4 │ │ │ │ -813B8FEA120662355773830EF85015E7FFD609B2CEE52CB5FFE9C35B6BEEE4A4 │ │ │ │ -A66719E31CE1523FDD7771FB1E881A32A7DB7D92C2326DF4B93241C14ABFCCD6 │ │ │ │ -8E5BCAC61E800E6B1B4687ADA4CBF41EC0AFC26D021D1772CBDCD0516DF5EBE1 │ │ │ │ -37FD2AC5ABB8D774B5735940F1F6866D044FD8CE74444FAA5D0202C11E39CC10 │ │ │ │ -213731F41F704450E1D0565013BF22188442CE0FC256190A9F92F0C802AA2660 │ │ │ │ -614AFE9E9C82F8CD2E6035EEF84E5F16CBB690AC819B4B910EA8E81106F0ACE5 │ │ │ │ -CDFE77DAF69E4AFE72C43145A3ABCC40B6C5297487083F738C86422277AC2267 │ │ │ │ -51759F1B7F129E87DE16433B664AD0FB6D30424A11C70B52B591352BF653C8B0 │ │ │ │ -0840C224FBFEAA996A6BE1D69414DD778C2EF56A63B64D59BA412EC3E4000831 │ │ │ │ -73361FB9813F9A7C74BA3A50D331B07B61492E5D75F0861B530587269B3ADC90 │ │ │ │ -EA1DF586AC4BC57C3230893EFE953A6E76950ABA895FAC711D3BD330ABC6846A │ │ │ │ -C91F6ABF3410B913DFE5C8266020CEE5C7A9EDA2E7D9BCA797DC486443C7BA7C │ │ │ │ -7E03439A40927FA3251B6D417E5653E7799E9D6F04149C34096E2CA9B1F9B1EC │ │ │ │ -38958A2521B4A657A8B9F16E1FD66C7E345A10D7AA0241559503D214AC6507A4 │ │ │ │ -CBDE8617AA7ED136577734428594487F3565BF45FA196375759E2FE23C26EC8A │ │ │ │ -3310A36917A5E2F260EAB31030F8E570303D36B833626938F56939849DFA1F3F │ │ │ │ -66D0A317BB6364427F1512AAB380B555611C76345C02C3A6FBF78590331D5ECA │ │ │ │ -029DEFB722F6AB05327C2A31AB7BD6ED0F0386E6F45C1278048D22B90B074CCB │ │ │ │ -2BBEBCC1927C97EC532E651CAF0058AFE8FC08F00F0216D5DD9830C294FF76DA │ │ │ │ -426A073B3A3AEEFBDEE71C5182186311607ECDBD1F1AF4C5E79748CD01445C8D │ │ │ │ -25DD49490C8A6810065908222C8D0AC9F83AFBEE7115023E2D2615A170A5D40A │ │ │ │ -AD49BDF59A59187B6434F83E68EED22EF4EFDBADED6F1559AC779E0377FE7375 │ │ │ │ -D7060584FE74B1859D0FD98772253A712B17FFBB467840C484F5EF82C5677ADB │ │ │ │ -EDF159A456A526B8B9F6E8FC7608DFD47B0F09E26118F79CBE53B6C4E32BACAB │ │ │ │ -D62AFD4AA527CC4B587BB41A17A9BCE106A8C592BC9B73422B712C466C284A17 │ │ │ │ -E8D0C1E01D43C739FB1C083AD2714F78AC785B0C09AA7E67417A73510E00F2FE │ │ │ │ -E3D3EBF626A2F3A20A386E3F98D1285F4A2A332FC609CD191F01F128627B3505 │ │ │ │ -0AC2387DC0AD1B950490EBB5045F22BEC54955402CE2D267B6754E7C32BE84E8 │ │ │ │ -E6B63E3D3EAEE979442D167AEF69C27B22A8E887A2510C3A168D95D285CF7515 │ │ │ │ -011C921679B2F386575826A3F2071D015EEB78F02A4F94D4E5F07873623200F8 │ │ │ │ -7DF95BA0DC6B6D31DECC925BEA1E6A7C52FE685800EC33CBAE830F1AE5454DFA │ │ │ │ -913B8F457D7E2D3DFF019869E3301EEEC64A38295DE6B588E776922B32362382 │ │ │ │ -D1CF3D058613C8A96E6994D3EC23E8B71EC6E718383B20BB6C22DB6F93FA559F │ │ │ │ -3449CA84EB33B25C8BE0DFD1C29DC4FBD7AFBDC96C12162CAAB2C5E354B0FB10 │ │ │ │ -4BF8CC3610875ABD5111D09F2F847822118972214EDEB9EE34BAFE45E7AC15C5 │ │ │ │ -CA63EC4A3CEEA505A5EDD88A59BB67C71C3E026DFFE177F99BC69E6635545D03 │ │ │ │ -77A634F98230EF64381EC67CA519D4B9770EFA844789E21970F89D5FFC5DEAA8 │ │ │ │ -DC008EBA09306967ED090FF91B002FA6120C2B461A87AA32EFB003C5578D8EEF │ │ │ │ - │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ +AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ +E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ +46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ +FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ +389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ +7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ +2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ +C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ +B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ +AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ +E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ +F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ +0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ +2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ +29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ +CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ +6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ +5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ +36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0DD96AB602D004DCFE000A0 │ │ │ │ +ABE41BAB8AB7D50BD32BFD6F1AA3B60B09B9BE4E273EDD2DDCB21A98A760D17D │ │ │ │ +0A5C9303AFE63CF80A93E60C72A0576FAADEECBE2DE91892D210EB0AD1889C04 │ │ │ │ +C7530652584E775B4ED19CFB4B8DBCCC57A9FA9E4DDC8A1E5A1D3BE9E93407A6 │ │ │ │ +2C237ACE27F4EDA330EE952EDCBE91683AA98A29197735006666C96A2CE7C787 │ │ │ │ +BBA5A57C4DBF6FAA5B38AF226B5D9A65FAD84650AC0C3DB29C30602699F81E01 │ │ │ │ +0BAF8F1CE44A03C680121B77A1703C638187675D6C22C49F9902475E6CE9C732 │ │ │ │ +48ED028CC92EA542EF189CC9CA1C384E3387793057615D0A2BF040CC90B275B9 │ │ │ │ +F70A5310874DC2E0A360373E7BCAC88250FBC8989C7D18DA8274C06F02FCF31C │ │ │ │ +2B3868CBAF083DAC2FB159DE368261842DB7C9EA1A86B17617C861A48FBA8FF9 │ │ │ │ +D184CB026F4A418C0955347612F94C039B1536A76CB182A591DD7C02D509CF16 │ │ │ │ +8B9E46502ABF5DE31F5DFBD19C7417A2AF7AF13F0D5FF837C94CE56F07B96337 │ │ │ │ +0ED215252346FAEB54B5F3ABE29709B7ECB9FBD23A4AD397E6ABA6938F1BBF33 │ │ │ │ +1D5460D9414F0B8725DA832744525C13E3FD9C8DB33FBEE12F9C4969988402C8 │ │ │ │ +96AF916364CC2DF17EDBA622FC0A5D0013418E29F912FFA06F8D7E31ECAB0B08 │ │ │ │ +C4D2D8EE537CC768FC9038DD6D86D33642C6E812E941F157FC6917AF19C2B99A │ │ │ │ +5BF10B9A7ECF711BBB6F33C8C3DAD778153122593F36ABDDC0E97A602B045DE6 │ │ │ │ +19BD82D877DDA960AB11EF48C7F75A28D0D731D4A5DBC98283087267CD1A470D │ │ │ │ +537E949DA5EECF097B099547995BE066A941CED683B5748962AD2B02C21636C0 │ │ │ │ +2EAFA33CA0CB3BF8A95703F015A210D918865B9BEA2890DCFB68BC3719C305EC │ │ │ │ +315EC8727BF9A93632AB9E3090B100C022EE1396CD329B37547F26A7DCE52BD7 │ │ │ │ +F91B7388DEC34F4A0C6D46CD7CA6ACC00C5C4C71E47C6AD96496B3CBF531F342 │ │ │ │ +A740EE6B99BD70AD490DFA700772A0697EC6561CE88A0113E4DC3B21F372D810 │ │ │ │ +DFF2C3F6EDF3E917BF2664EEFC9AD292DD6CC36853CF936018D43FDB28D5B001 │ │ │ │ +7D1C805F958F13FD221377ABDD69D102E8CC1DAB2E011EE16CF6DB9D195BA702 │ │ │ │ +5A8738FABF989B0351282D0E5121182DFC52169782A5F3DD5D820411BEF909DE │ │ │ │ +04D963E6FDA76F88508C4E91DDAAA1748F396A1D380D8CA429673AF27C164434 │ │ │ │ +771781B39565D3EE50F3CF03EF12908B13A6C11C9AB7631B32125828B13050BA │ │ │ │ +041A93B97AC32D4A1E28C5FA98CDEE998B5F97823D6291D01E3611A16854F1FE │ │ │ │ +69B9D6D2AE3E56D012B7BC3E582FB4C23188A5E365E65EB1F804A706AF73A2F8 │ │ │ │ +9804808EF71F0982B14133BF9A27D6F2E719BDB751022B1B052722933948904E │ │ │ │ +3582E363478DCDA115205A0FDE39DF71FEAEEB104419C35A6B0678C19616C6D9 │ │ │ │ +A892DC2F4257069AF096C80C099CD13024DF3995F28C694E00D1F08B43D4450C │ │ │ │ +D18F5C925CFD2D124E74FC64BBAA0DE32A79E4A4507B5B5DD834C67160CDA110 │ │ │ │ +EF0061DD27E8864F4250A92BBEFD75C784BB98F4FA789A8236C2A21E4E61ABD0 │ │ │ │ +C6B4D13B3C31AC8E55FA34BEC7C308C61FB0280382EC6AFD63D959678D42D2B3 │ │ │ │ +4134F6236A0808D9302B4E3C6F81FC6973B4833602750CCB5DE36AEA23ED6BD4 │ │ │ │ +5B72DF0DD7B81C871CAA6EC190748CD8C4B998D576E5D340ACAC0617DDBE461C │ │ │ │ +8E82E809D11A01D265D039F4315066832E27E08A6F067E129E45FBF533F761BB │ │ │ │ +EC3C071209BECE7D14D3184B2E6BFD65717A5A7C08F3776B20C513649488C1CF │ │ │ │ +03333805B249D1034FB0AE2D7D2A23324EE27AEDB68F8E329A8052FE58D7C0D9 │ │ │ │ +A40A0CDC79F2085C4F39A7DFDB625C8F071E2A32CF6215DD3E060A9BABF7A3AA │ │ │ │ +C57DA0C0571C5D6EEAA975D1BB9C99F8EA4958360E43E8C60080B03DC4435550 │ │ │ │ +E6048DDD35DF3E5DA69669F266FFD7B44649A68025270DC84258E329F6E6907C │ │ │ │ +BCFF900D715D0C7EC43C5E7180CAD6427BA4FD41AAD6531A5C06B0EC26DDA71F │ │ │ │ +4A9DA50DE919E79226F6DDF7C1BA478936AA86CEAD93072CC2960E98C45A1A0C │ │ │ │ +60CF8A26E4278AB4F9E28FA6532648196CC455607D6BCD00F60675DE8CC02C8C │ │ │ │ +9BE5D5B714731814D5B008EE236563D77AC6895E0158877C95797E07C02AFEBE │ │ │ │ +CC9FE97D5E103F7DB0A834E9A7A75893EC66340B0E4C6F0EEDEF43415BF9FCF4 │ │ │ │ +47340CBEA4DCFBA0D028EB2149FFBBDB3322AE5F6FD20242526EDC55E476D983 │ │ │ │ +DC │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -5192,15 +5198,15 @@ │ │ │ │ 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 3[51 12[45 22[47 │ │ │ │ -15[25 3[45 3[45 1[45 3[25 44[{}11 90.9091 /CMSL10 rf │ │ │ │ +15[25 3[45 3[45 45 45 3[25 44[{}12 90.9091 /CMSL10 rf │ │ │ │ /Ff 141[39 12[39 16[39 14[39 69[{}4 74.7198 /CMTT9 rf │ │ │ │ /Fg 133[34 41 41 55 41 1[30 30 30 1[43 38 43 64 21 41 │ │ │ │ 23 21 43 1[23 34 43 34 43 38 12[55 37[21 1[21 31[43 12[{}27 │ │ │ │ 74.7198 /CMR9 rf /Fh 206[30 49[{}1 49.8132 /CMR6 rf /Fi │ │ │ │ 132[52 6[41 4[52 58 46[49 63[{}5 90.9091 /CMBX10 rf /Fj │ │ │ │ 148[47 6[47 100[{}2 90.9091 /CMMI10 rf /Fk 134[44 2[42 │ │ │ │ 49 30 37 38 1[46 46 51 1[23 42 28 28 46 42 1[42 46 42 │ │ │ │ @@ -5313,17 +5319,17 @@ │ │ │ │ 0 5230 1560 4 v 104 5284 a Fh(1)138 5316 y Fg(The)24 │ │ │ │ b Ff(ETree)g Fg(ob)t(ject)g(has)f(the)g Ff(Tree)h Fg(ob)t(ject)g(that)f │ │ │ │ (de\014nes)f(the)h(connectivit)n(y)g(of)h(the)e(fron)n(ts,)j(kno)n(ws)e │ │ │ │ (the)g(in)n(ternal)g(and)g(external)0 5407 y(size)k(of)f(eac)n(h)g │ │ │ │ (fron)n(t,)g(and)f(has)h(a)g(map)g(from)g(the)g(v)n(ertices)g(to)g(the) │ │ │ │ f(fron)n(ts.)1927 5656 y Fo(1)p eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fo(2)p 136 100 1158 4 v │ │ │ │ -1340 w Fn(MSMD)29 b Fe(:)i Fk(DRAFT)f Fe(Jan)m(uary)g(6,)h(2026)p │ │ │ │ -2742 100 V 0 399 a Fo(W)-8 b(e)32 b(in)m(tend)e(to)h(add)f(more)g │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fo(2)p 136 100 1135 4 v │ │ │ │ +1317 w Fn(MSMD)29 b Fe(:)i Fk(DRAFT)f Fe(Jan)m(uary)g(10,)h(2026)p │ │ │ │ +2765 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 │ │ │ │ @@ -5384,17 +5390,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 1158 4 v 1339 100 a Fn(MSMD)30 │ │ │ │ -b Fe(:)g Fk(DRAFT)121 b Fe(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2695 100 V 1158 w Fo(3)137 399 y Fm(\210)45 b Fn(MSMDstageInfo)25 │ │ │ │ +TeXDict begin 3 2 bop 91 100 1135 4 v 1317 100 a Fn(MSMD)29 │ │ │ │ +b Fe(:)h Fk(DRAFT)121 b Fe(Jan)m(uary)30 b(10,)i(2026)p │ │ │ │ +2718 100 V 1135 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 │ │ │ │ @@ -5454,17 +5460,17 @@ │ │ │ │ (ultiple)f(minim)m(um)e(degree.)330 5294 y Fi({)45 b │ │ │ │ Fn(stepType)h(>)h(1)22 b Fo(|)g(an)g(indep)s(enden)m(t)f(set)i(of)f(v)m │ │ │ │ (ertices)i(is)e(eliminated)i(whose)e(priorities)g(lie)h(b)s(et)m(w)m │ │ │ │ (een)427 5407 y(the)31 b(minim)m(um)e(priorit)m(y)i(and)f(the)h(minim)m │ │ │ │ (um)e(priorit)m(y)i(m)m(ultiplied)g(b)m(y)f Fn(stepType)p │ │ │ │ Fo(.)p eop end │ │ │ │ %%Page: 4 4 │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fo(4)p 136 100 1158 4 v │ │ │ │ -1340 w Fn(MSMD)29 b Fe(:)i Fk(DRAFT)f Fe(Jan)m(uary)g(6,)h(2026)p │ │ │ │ -2742 100 V 227 399 a Fo(The)f(default)h(v)-5 b(alue)31 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fo(4)p 136 100 1135 4 v │ │ │ │ +1317 w Fn(MSMD)29 b Fe(:)i Fk(DRAFT)f Fe(Jan)m(uary)g(10,)h(2026)p │ │ │ │ +2765 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 │ │ │ │ @@ -5509,17 +5515,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 1158 4 v 1339 100 a Fn(MSMD)30 │ │ │ │ -b Fe(:)g Fk(DRAFT)121 b Fe(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2695 100 V 1158 w Fo(5)0 399 y Fc(1.1.3)112 b Fb(MSMDstageInfo)41 │ │ │ │ +TeXDict begin 5 4 bop 91 100 1135 4 v 1317 100 a Fn(MSMD)29 │ │ │ │ +b Fe(:)h Fk(DRAFT)121 b Fe(Jan)m(uary)30 b(10,)i(2026)p │ │ │ │ +2718 100 V 1135 w Fo(5)0 399 y Fc(1.1.3)112 b Fb(MSMDstageInfo)41 │ │ │ │ b Fc(:)50 b(statistics)38 b(ob)6 b(ject)37 b(for)h(a)f(stage)h(of)g │ │ │ │ (the)f(elimination)0 596 y Fo(This)30 b(ob)5 b(ject)31 │ │ │ │ b(stores)g(information)f(ab)s(out)g(the)h(elimination)h(pro)s(cess)e │ │ │ │ (at)h(a)g(stage)g(of)g(the)f(elimination.)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 │ │ │ │ @@ -5561,17 +5567,17 @@ │ │ │ │ h(\(priorit)m(y\))h(heap)330 5112 y Fi({)45 b Fn('R')30 │ │ │ │ b Fo({)h(v)m(ertex)g(on)f(reac)m(h)h(set)330 5260 y Fi({)45 │ │ │ │ b Fn('I')30 b Fo({)h(v)m(ertex)g(found)e(to)i(b)s(e)f │ │ │ │ (indistinguishable)g(to)h(another)330 5407 y Fi({)45 │ │ │ │ b Fn('B')30 b Fo({)h(b)s(oundary)d(v)m(ertex,)k(to)f(b)s(e)e │ │ │ │ (eliminated)j(in)e(another)h(stage)p eop end │ │ │ │ %%Page: 6 6 │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fo(6)p 136 100 1158 4 v │ │ │ │ -1340 w Fn(MSMD)29 b Fe(:)i Fk(DRAFT)f Fe(Jan)m(uary)g(6,)h(2026)p │ │ │ │ -2742 100 V 137 399 a Fm(\210)45 b Fn(int)i(stage)29 b │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fo(6)p 136 100 1135 4 v │ │ │ │ +1317 w Fn(MSMD)29 b Fe(:)i Fk(DRAFT)f Fe(Jan)m(uary)g(10,)h(2026)p │ │ │ │ +2765 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 │ │ │ │ @@ -5628,17 +5634,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 1158 4 v 1339 100 a Fn(MSMD)30 │ │ │ │ -b Fe(:)g Fk(DRAFT)121 b Fe(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2695 100 V 1158 w Fo(7)0 399 y Fc(1.2.2)112 b(Utilit)m(y)38 │ │ │ │ +TeXDict begin 7 6 bop 91 100 1135 4 v 1317 100 a Fn(MSMD)29 │ │ │ │ +b Fe(:)h Fk(DRAFT)121 b Fe(Jan)m(uary)30 b(10,)i(2026)p │ │ │ │ +2718 100 V 1135 w Fo(7)0 399 y Fc(1.2.2)112 b(Utilit)m(y)38 │ │ │ │ b(metho)s(ds)0 596 y Fo(There)30 b(are)h(t)m(w)m(o)g(utilit)m(y)h │ │ │ │ (metho)s(ds,)e(one)h(to)g(prin)m(t)f(the)g(ob)5 b(ject,)32 │ │ │ │ b(one)f(to)g(c)m(hec)m(k)h(to)f(see)g(if)f(it)h(is)f(v)-5 │ │ │ │ b(alid.)111 835 y(1.)46 b Fn(void)h(MSMDinfo_print)d(\()j(MSMDinfo)f │ │ │ │ (*info,)g(FILE)h(*fp)f(\))i(;)227 986 y Fo(This)30 b(metho)s(d)g(prin)m │ │ │ │ (ts)g(out)g(the)h(information)f(to)h(a)g(\014le.)227 │ │ │ │ 1137 y Fk(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fo(If)30 │ │ │ │ @@ -5691,17 +5697,17 @@ │ │ │ │ (a)g(call)i(to)e Fn(MSMD)p 2282 5143 V 34 w(clearData\(\))c │ │ │ │ Fo(then)k(free's)g(the)h(storage)g(for)227 5256 y(the)d(structure)f │ │ │ │ (with)g(a)h(call)g(to)g Fn(free\(\))p Fo(.)227 5407 y │ │ │ │ Fk(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fo(If)30 b Fn(msmd)g │ │ │ │ Fo(is)g Fn(NULL)p Fo(,)f(an)i(error)f(message)h(is)g(prin)m(ted)f(and)f │ │ │ │ (the)i(program)f(exits.)p eop end │ │ │ │ %%Page: 8 8 │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fo(8)p 136 100 1158 4 v │ │ │ │ -1340 w Fn(MSMD)29 b Fe(:)i Fk(DRAFT)f Fe(Jan)m(uary)g(6,)h(2026)p │ │ │ │ -2742 100 V 0 399 a Fc(1.3.2)112 b(Initialization)39 b(metho)s(ds)f(|)g │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fo(8)p 136 100 1135 4 v │ │ │ │ +1317 w Fn(MSMD)29 b Fe(:)i Fk(DRAFT)f Fe(Jan)m(uary)g(10,)h(2026)p │ │ │ │ +2765 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 │ │ │ │ @@ -5768,17 +5774,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 1158 4 v 1339 100 a Fn(MSMD)30 │ │ │ │ -b Fe(:)g Fk(DRAFT)121 b Fe(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2695 100 V 1158 w Fo(9)227 399 y(\014lls)j(the)h Fn(IV)f │ │ │ │ +TeXDict begin 9 8 bop 91 100 1135 4 v 1317 100 a Fn(MSMD)29 │ │ │ │ +b Fe(:)h Fk(DRAFT)121 b Fe(Jan)m(uary)30 b(10,)i(2026)p │ │ │ │ +2718 100 V 1135 w Fo(9)227 399 y(\014lls)i(the)h Fn(IV)f │ │ │ │ Fo(ob)5 b(ject)35 b(with)f(the)g(old-to-new)i(p)s(erm)m(utation)e(of)h │ │ │ │ (the)f(v)m(ertices,)k(resizing)d(the)f Fn(IV)g Fo(ob)5 │ │ │ │ b(ject)35 b(if)227 511 y(necessary)-8 b(.)227 661 y Fk(Err)j(or)33 │ │ │ │ b(che)-5 b(cking:)40 b Fo(If)28 b Fn(msmd)g Fo(is)h Fn(NULL)p │ │ │ │ Fo(,)f(or)h(if)g Fn(newToOldIV)d Fo(and)j Fn(oldToNewIV)d │ │ │ │ Fo(is)j Fn(NULL)p Fo(,)f(an)h(error)g(message)227 774 │ │ │ │ y(is)i(prin)m(ted)f(and)f(the)i(program)f(exits.)111 │ │ │ │ @@ -5836,17 +5842,17 @@ │ │ │ │ 29 4 v 33 w(cleanSubtreeList\(\))37 b Fo(and)227 5258 │ │ │ │ y Fn(MSMD)p 425 5258 V 34 w(clearEdgeList\(\))p Fo(.)227 │ │ │ │ 5407 y Fk(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fo(If)30 │ │ │ │ b Fn(msmd)g Fo(or)g Fn(info)f Fo(is)i Fn(NULL)p Fo(,)e(an)h(error)g │ │ │ │ (message)i(is)e(prin)m(ted)g(and)g(the)g(program)h(exits.)p │ │ │ │ eop end │ │ │ │ %%Page: 10 10 │ │ │ │ -TeXDict begin 10 9 bop 0 100 a Fo(10)p 182 100 1135 4 │ │ │ │ -v 1318 w Fn(MSMD)29 b Fe(:)h Fk(DRAFT)g Fe(Jan)m(uary)g(6,)h(2026)p │ │ │ │ -2765 100 V 111 399 a Fo(6.)46 b Fn(void)h(MSMD_cleanSubtreeList)42 │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fo(10)p 182 100 1113 4 │ │ │ │ +v 1295 w Fn(MSMD)29 b Fe(:)i Fk(DRAFT)f Fe(Jan)m(uary)g(10,)h(2026)p │ │ │ │ +2788 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 │ │ │ │ @@ -5911,17 +5917,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 1135 4 v 1317 100 a Fn(MSMD)29 │ │ │ │ -b Fe(:)h Fk(DRAFT)121 b Fe(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2672 100 V 1135 w Fo(11)0 399 y Fd(1.5)135 b(Driv)l(er)46 │ │ │ │ +TeXDict begin 11 10 bop 91 100 1113 4 v 1294 100 a Fn(MSMD)29 │ │ │ │ +b Fe(:)i Fk(DRAFT)121 b Fe(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2695 100 V 1113 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 │ │ │ │ @@ -5983,17 +5989,17 @@ │ │ │ │ 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 1135 │ │ │ │ -4 v 1318 w Fn(MSMD)29 b Fe(:)h Fk(DRAFT)g Fe(Jan)m(uary)g(6,)h(2026)p │ │ │ │ -2765 100 V 337 399 a Fm(\210)45 b Fo(The)38 b Fn(outNewToOldIVfile)c │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fo(12)p 182 100 1113 │ │ │ │ +4 v 1295 w Fn(MSMD)29 b Fe(:)i Fk(DRAFT)f Fe(Jan)m(uary)g(10,)h(2026)p │ │ │ │ +2788 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 │ │ │ │ ├── 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 January 6, 2026 │ │ │ │ │ + 2 MSMD : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 3 │ │ │ │ │ + MSMD : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 4 MSMD : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 5 │ │ │ │ │ + MSMD : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 6 MSMD : DRAFT January 10, 2026 │ │ │ │ │ • 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 January 6, 2026 7 │ │ │ │ │ + MSMD : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 8 MSMD : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 9 │ │ │ │ │ + MSMD : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 10 MSMD : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 11 │ │ │ │ │ + MSMD : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 12 MSMD : DRAFT January 10, 2026 │ │ │ │ │ • 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 2026.01.06:2034 │ │ │ │ +%DVIPSSource: TeX output 2026.01.10:0513 │ │ │ │ %%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 │ │ │ │ @@ -1599,14 +1599,15 @@ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ /UnderlineThickness 50 def │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ +dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ dup 54 /six put │ │ │ │ dup 58 /colon put │ │ │ │ dup 74 /J put │ │ │ │ dup 97 /a put │ │ │ │ dup 110 /n put │ │ │ │ dup 114 /r put │ │ │ │ @@ -1796,79 +1797,84 @@ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB88440048702D1F │ │ │ │ -77994EE04EC3B4531D6E1888C86A8F0DA6CF1F056F16AB0DD76C862830F89DA4 │ │ │ │ -28923B3AA543E0D6E41D3BD283E600BC11F889315EE92C675C109C81065ED1BC │ │ │ │ -82A5583D1B723D50051B0557A367887F5B263014C6E77288B4883C50889473D3 │ │ │ │ -3787BAD4BEB88BD1353AFA5B73E61814819537E7FF09F53EF94792BB3DD36ED0 │ │ │ │ -002D0E7A6CDAB85A9C17AF5664BCB5A71663B861880F3ECCABC8E7A2FC81A4CC │ │ │ │ -AE7A87503FDC1CE0077BA51ECC7B43B60793FED8E9AAD5BBD03ADD6183DCD26D │ │ │ │ -24A74163611C05562437644EF9B8889FD4F9D311911204FEFD35237486F2D2D0 │ │ │ │ -B6783A03BF12EA6D19D6D0F87E4D08515F12F9CBF1961CAA71E0D69FE3C4C4D2 │ │ │ │ -7C7FB64ED24F8684C8F00C2BEDEA53EA390CDC0B5BEBD7DD982580B2EA1F1F89 │ │ │ │ -CFED5916630DC2BA32BB9180277E1ABC339B3B7DE086717BD93F7FF3681BA5B3 │ │ │ │ -FCF671C4B293C2DE4A322F0AA3323A4934444C69F23EF90120B8755482757759 │ │ │ │ -C457A435FB8BB4922BD92C5F3D9555D978275C510183E29DFF2FCE4ABBFC18DE │ │ │ │ -76CAD3B486BA12047DD808CD4D521A0FD368E4AE79DE262630983A5D6F0B679D │ │ │ │ -2F005306393C520E1B6987302D029939D94B0178DB06211C7F3B123A41E6E7BA │ │ │ │ -87164737110707A3ED3983895F3FBC815EF370F54C808ED93D910937BCA3D8AF │ │ │ │ -7CBF80DC180CDA54059DB76710B4FCD4139D5B7DA7DB1A0D0AF86AD2453D3691 │ │ │ │ -0BA5BAD40FF28BB4235FCD40FC87C2B888E67928D9B0ACA5692149373DBB93BF │ │ │ │ -6520DDD36A9BFE4D415CA67A5E04F1D48BDB28C69676273ED842CF7980E8E17C │ │ │ │ -B88563F407E340AFAE8F51AABCF8A39521BCEE1EC8396D75E124B24B4675909F │ │ │ │ -E246F87DA08584A3173AEFF153ECDF610543FA7474D125A31ADD6285A49222B5 │ │ │ │ -177066EA395BFA4B1114C7FCF7712DA772A21C99E64F4E1181E69CAF98137FA2 │ │ │ │ -76CF74F682B8CD7BA6EEA79B70FA8A76809634517F8415B6F21A5A7D6099B5E8 │ │ │ │ -EAB356BBC4FB68C72B8C61DDCE8EAB1A53B9D6BAD78584B307EFF57CEAE74884 │ │ │ │ -35987BF89E9E60E962D22FA5612F2DB5EB840499B7CC11A34BA5DEE30D277540 │ │ │ │ -39B8211D69B448ADE95B723F8369A631DE6DD75703AFD7485FB7FFF41A60CBE4 │ │ │ │ -813B8FEA120662355773830EF85015E7FFD609B2CEE52CB5FFE9C35B6BEEE4A4 │ │ │ │ -A66719E31CE1523FDD7771FB1E881A32A7DB7D92C2326DF4B93241C14ABFCCD6 │ │ │ │ -8E5BCAC61E800E6B1B4687ADA4CBF41EC0AFC26D021D1772CBDCD0516DF5EBE1 │ │ │ │ -37FD2AC5ABB8D774B5735940F1F6866D044FD8CE74444FAA5D0202C11E39CC10 │ │ │ │ -213731F41F704450E1D0565013BF22188442CE0FC256190A9F92F0C802AA2660 │ │ │ │ -614AFE9E9C82F8CD2E6035EEF84E5F16CBB690AC819B4B910EA8E81106F0ACE5 │ │ │ │ -CDFE77DAF69E4AFE72C43145A3ABCC40B6C5297487083F738C86422277AC2267 │ │ │ │ -51759F1B7F129E87DE16433B664AD0FB6D30424A11C70B52B591352BF653C8B0 │ │ │ │ -0840C224FBFEAA996A6BE1D69414DD778C2EF56A63B64D59BA412EC3E4000831 │ │ │ │ -73361FB9813F9A7C74BA3A50D331B07B61492E5D75F0861B530587269B3ADC90 │ │ │ │ -EA1DF586AC4BC57C3230893EFE953A6E76950ABA895FAC711D3BD330ABC6846A │ │ │ │ -C91F6ABF3410B913DFE5C8266020CEE5C7A9EDA2E7D9BCA797DC486443C7BA7C │ │ │ │ -7E03439A40927FA3251B6D417E5653E7799E9D6F04149C34096E2CA9B1F9B1EC │ │ │ │ -38958A2521B4A657A8B9F16E1FD66C7E345A10D7AA0241559503D214AC6507A4 │ │ │ │ -CBDE8617AA7ED136577734428594487F3565BF45FA196375759E2FE23C26EC8A │ │ │ │ -3310A36917A5E2F260EAB31030F8E570303D36B833626938F56939849DFA1F3F │ │ │ │ -66D0A317BB6364427F1512AAB380B555611C76345C02C3A6FBF78590331D5ECA │ │ │ │ -029DEFB722F6AB05327C2A31AB7BD6ED0F0386E6F45C1278048D22B90B074CCB │ │ │ │ -2BBEBCC1927C97EC532E651CAF0058AFE8FC08F00F0216D5DD9830C294FF76DA │ │ │ │ -426A073B3A3AEEFBDEE71C5182186311607ECDBD1F1AF4C5E79748CD01445C8D │ │ │ │ -25DD49490C8A6810065908222C8D0AC9F83AFBEE7115023E2D2615A170A5D40A │ │ │ │ -AD49BDF59A59187B6434F83E68EED22EF4EFDBADED6F1559AC779E0377FE7375 │ │ │ │ -D7060584FE74B1859D0FD98772253A712B17FFBB467840C484F5EF82C5677ADB │ │ │ │ -EDF159A456A526B8B9F6E8FC7608DFD47B0F09E26118F79CBE53B6C4E32BACAB │ │ │ │ -D62AFD4AA527CC4B587BB41A17A9BCE106A8C592BC9B73422B712C466C284A17 │ │ │ │ -E8D0C1E01D43C739FB1C083AD2714F78AC785B0C09AA7E67417A73510E00F2FE │ │ │ │ -E3D3EBF626A2F3A20A386E3F98D1285F4A2A332FC609CD191F01F128627B3505 │ │ │ │ -0AC2387DC0AD1B950490EBB5045F22BEC54955402CE2D267B6754E7C32BE84E8 │ │ │ │ -E6B63E3D3EAEE979442D167AEF69C27B22A8E887A2510C3A168D95D285CF7515 │ │ │ │ -011C921679B2F386575826A3F2071D015EEB78F02A4F94D4E5F07873623200F8 │ │ │ │ -7DF95BA0DC6B6D31DECC925BEA1E6A7C52FE685800EC33CBAE830F1AE5454DFA │ │ │ │ -913B8F457D7E2D3DFF019869E3301EEEC64A38295DE6B588E776922B32362382 │ │ │ │ -D1CF3D058613C8A96E6994D3EC23E8B71EC6E718383B20BB6C22DB6F93FA559F │ │ │ │ -3449CA84EB33B25C8BE0DFD1C29DC4FBD7AFBDC96C12162CAAB2C5E354B0FB10 │ │ │ │ -4BF8CC3610875ABD5111D09F2F847822118972214EDEB9EE34BAFE45E7AC15C5 │ │ │ │ -CA63EC4A3CEEA505A5EDD88A59BB67C71C3E026DFFE177F99BC69E6635545D03 │ │ │ │ -77A634F98230EF64381EC67CA519D4B9770EFA844789E21970F89D5FFC5DEAA8 │ │ │ │ -DC008EBA09306967ED090FF91B002FA6120C2B461A87AA32EFB003C5578D8EEF │ │ │ │ - │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ +AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ +E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ +46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ +FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ +389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ +7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ +2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ +C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ +B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ +AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ +E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ +F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ +0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ +2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ +29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ +CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ +6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ +5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ +36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0DD96AB602D004DCFE000A0 │ │ │ │ +ABE41BAB8AB7D50BD32BFD6F1AA3B60B09B9BE4E273EDD2DDCB21A98A760D17D │ │ │ │ +0A5C9303AFE63CF80A93E60C72A0576FAADEECBE2DE91892D210EB0AD1889C04 │ │ │ │ +C7530652584E775B4ED19CFB4B8DBCCC57A9FA9E4DDC8A1E5A1D3BE9E93407A6 │ │ │ │ +2C237ACE27F4EDA330EE952EDCBE91683AA98A29197735006666C96A2CE7C787 │ │ │ │ +BBA5A57C4DBF6FAA5B38AF226B5D9A65FAD84650AC0C3DB29C30602699F81E01 │ │ │ │ +0BAF8F1CE44A03C680121B77A1703C638187675D6C22C49F9902475E6CE9C732 │ │ │ │ +48ED028CC92EA542EF189CC9CA1C384E3387793057615D0A2BF040CC90B275B9 │ │ │ │ +F70A5310874DC2E0A360373E7BCAC88250FBC8989C7D18DA8274C06F02FCF31C │ │ │ │ +2B3868CBAF083DAC2FB159DE368261842DB7C9EA1A86B17617C861A48FBA8FF9 │ │ │ │ +D184CB026F4A418C0955347612F94C039B1536A76CB182A591DD7C02D509CF16 │ │ │ │ +8B9E46502ABF5DE31F5DFBD19C7417A2AF7AF13F0D5FF837C94CE56F07B96337 │ │ │ │ +0ED215252346FAEB54B5F3ABE29709B7ECB9FBD23A4AD397E6ABA6938F1BBF33 │ │ │ │ +1D5460D9414F0B8725DA832744525C13E3FD9C8DB33FBEE12F9C4969988402C8 │ │ │ │ +96AF916364CC2DF17EDBA622FC0A5D0013418E29F912FFA06F8D7E31ECAB0B08 │ │ │ │ +C4D2D8EE537CC768FC9038DD6D86D33642C6E812E941F157FC6917AF19C2B99A │ │ │ │ +5BF10B9A7ECF711BBB6F33C8C3DAD778153122593F36ABDDC0E97A602B045DE6 │ │ │ │ +19BD82D877DDA960AB11EF48C7F75A28D0D731D4A5DBC98283087267CD1A470D │ │ │ │ +537E949DA5EECF097B099547995BE066A941CED683B5748962AD2B02C21636C0 │ │ │ │ +2EAFA33CA0CB3BF8A95703F015A210D918865B9BEA2890DCFB68BC3719C305EC │ │ │ │ +315EC8727BF9A93632AB9E3090B100C022EE1396CD329B37547F26A7DCE52BD7 │ │ │ │ +F91B7388DEC34F4A0C6D46CD7CA6ACC00C5C4C71E47C6AD96496B3CBF531F342 │ │ │ │ +A740EE6B99BD70AD490DFA700772A0697EC6561CE88A0113E4DC3B21F372D810 │ │ │ │ +DFF2C3F6EDF3E917BF2664EEFC9AD292DD6CC36853CF936018D43FDB28D5B001 │ │ │ │ +7D1C805F958F13FD221377ABDD69D102E8CC1DAB2E011EE16CF6DB9D195BA702 │ │ │ │ +5A8738FABF989B0351282D0E5121182DFC52169782A5F3DD5D820411BEF909DE │ │ │ │ +04D963E6FDA76F88508C4E91DDAAA1748F396A1D380D8CA429673AF27C164434 │ │ │ │ +771781B39565D3EE50F3CF03EF12908B13A6C11C9AB7631B32125828B13050BA │ │ │ │ +041A93B97AC32D4A1E28C5FA98CDEE998B5F97823D6291D01E3611A16854F1FE │ │ │ │ +69B9D6D2AE3E56D012B7BC3E582FB4C23188A5E365E65EB1F804A706AF73A2F8 │ │ │ │ +9804808EF71F0982B14133BF9A27D6F2E719BDB751022B1B052722933948904E │ │ │ │ +3582E363478DCDA115205A0FDE39DF71FEAEEB104419C35A6B0678C19616C6D9 │ │ │ │ +A892DC2F4257069AF096C80C099CD13024DF3995F28C694E00D1F08B43D4450C │ │ │ │ +D18F5C925CFD2D124E74FC64BBAA0DE32A79E4A4507B5B5DD834C67160CDA110 │ │ │ │ +EF0061DD27E8864F4250A92BBEFD75C784BB98F4FA789A8236C2A21E4E61ABD0 │ │ │ │ +C6B4D13B3C31AC8E55FA34BEC7C308C61FB0280382EC6AFD63D959678D42D2B3 │ │ │ │ +4134F6236A0808D9302B4E3C6F81FC6973B4833602750CCB5DE36AEA23ED6BD4 │ │ │ │ +5B72DF0DD7B81C871CAA6EC190748CD8C4B998D576E5D340ACAC0617DDBE461C │ │ │ │ +8E82E809D11A01D265D039F4315066832E27E08A6F067E129E45FBF533F761BB │ │ │ │ +EC3C071209BECE7D14D3184B2E6BFD65717A5A7C08F3776B20C513649488C1CF │ │ │ │ +03333805B249D1034FB0AE2D7D2A23324EE27AEDB68F8E329A8052FE58D7C0D9 │ │ │ │ +A40A0CDC79F2085C4F39A7DFDB625C8F071E2A32CF6215DD3E060A9BABF7A3AA │ │ │ │ +C57DA0C0571C5D6EEAA975D1BB9C99F8EA4958360E43E8C60080B03DC4435550 │ │ │ │ +E6048DDD35DF3E5DA69669F266FFD7B44649A68025270DC84258E329F6E6907C │ │ │ │ +BCFF900D715D0C7EC43C5E7180CAD6427BA4FD41AAD6531A5C06B0EC26DDA71F │ │ │ │ +4A9DA50DE919E79226F6DDF7C1BA478936AA86CEAD93072CC2960E98C45A1A0C │ │ │ │ +60CF8A26E4278AB4F9E28FA6532648196CC455607D6BCD00F60675DE8CC02C8C │ │ │ │ +9BE5D5B714731814D5B008EE236563D77AC6895E0158877C95797E07C02AFEBE │ │ │ │ +CC9FE97D5E103F7DB0A834E9A7A75893EC66340B0E4C6F0EEDEF43415BF9FCF4 │ │ │ │ +47340CBEA4DCFBA0D028EB2149FFBBDB3322AE5F6FD20242526EDC55E476D983 │ │ │ │ +DC │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -5003,16 +5009,16 @@ │ │ │ │ %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 3[46 12[42 22[43 15[23 3[42 3[42 1[42 3[23 │ │ │ │ -44[{}11 83.022 /CMSL10 rf /Fh 136[55 1[45 28 34 35 1[42 │ │ │ │ +3[46 2[33 3[46 12[42 22[43 15[23 3[42 3[42 42 42 3[23 │ │ │ │ +44[{}12 83.022 /CMSL10 rf /Fh 136[55 1[45 28 34 35 1[42 │ │ │ │ 42 47 1[21 38 1[25 42 38 1[38 42 38 1[42 9[83 2[59 1[61 │ │ │ │ 11[54 56 63 2[62 6[25 58[{}25 83.022 /CMTI10 rf /Fi 133[44 │ │ │ │ 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 │ │ │ │ 44 44 44 44 44 44 44 1[44 1[44 1[44 1[44 44 44 44 44 │ │ │ │ 44 44 44 44 44 44 44 44 44 1[44 44 44 44 44 44 44 44 │ │ │ │ 44 44 2[44 44 1[44 1[44 44 44 44 44 44 44 44 44 44 44 │ │ │ │ 44 1[44 1[44 44 44 40[{}72 83.022 /CMTT10 rf /Fj 148[42 │ │ │ │ @@ -5136,17 +5142,17 @@ │ │ │ │ (ultithreaded)g(solv)n(e)f(metho)r(ds.)36 b(The)26 b(calling)f │ │ │ │ (sequences)g(b)r(et)n(w)n(een)0 5308 y(the)j(serial)f(and)g(m)n │ │ │ │ (ultithreaded)h(solv)n(es)e(di\013ers)i(b)n(y)f(one)h(parameter,)e(a)h │ │ │ │ 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 1026 4 v │ │ │ │ -1191 w Fi(Multithreaded)22 b Fg(:)37 b Fh(DRAFT)28 b │ │ │ │ -Fg(Jan)n(uary)d(6,)i(2026)p 2874 100 V 0 390 a Ff(1.1)135 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fn(2)p 125 100 1005 4 v │ │ │ │ +1170 w Fi(Multithreaded)23 b Fg(:)37 b Fh(DRAFT)27 b │ │ │ │ +Fg(Jan)n(uary)e(10,)i(2026)p 2895 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 │ │ │ │ @@ -5254,17 +5260,17 @@ │ │ │ │ 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 1026 4 v 1192 100 a Fi(Multithreaded)22 │ │ │ │ -b Fg(:)37 b Fh(DRAFT)110 b Fg(Jan)n(uary)26 b(6,)h(2026)p │ │ │ │ -2835 100 V 1026 w Fn(3)208 390 y(arra)n(y)d(of)i(length)h(1)f(or)f(2.) │ │ │ │ +TeXDict begin 3 2 bop 83 100 1005 4 v 1171 100 a Fi(Multithreaded)22 │ │ │ │ +b Fg(:)37 b Fh(DRAFT)110 b Fg(Jan)n(uary)26 b(10,)h(2026)p │ │ │ │ +2856 100 V 1005 w Fn(3)208 390 y(arra)n(y)d(of)i(length)h(1)f(or)f(2.) │ │ │ │ 36 b(The)27 b(n)n(um)n(b)r(er)f(of)g(threads)g(is)g(sp)r(eci\014ed)h(b) │ │ │ │ n(y)f(the)h Fi(nthread)d Fn(parameter;)h(if,)i Fi(nthread)d │ │ │ │ Fn(is)i Fi(1)p Fn(,)208 490 y(the)k(serial)e(metho)r(d)i(is)g(called.) │ │ │ │ 43 b(The)30 b Fi(msglvl)d Fn(and)j Fi(msgFile)c Fn(parameters)i(are)h │ │ │ │ (used)h(for)f(diagnostics)f(during)i(the)208 589 y(creation)c(of)i(the) │ │ │ │ g(threads')f(individual)g(data)g(structures.)208 722 │ │ │ │ y Fh(Err)l(or)k(che)l(cking:)43 b Fn(If)30 b Fi(A)p Fn(,)f │ │ │ │ @@ -5364,17 +5370,17 @@ │ │ │ │ (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 1026 4 v │ │ │ │ -1191 w Fi(Multithreaded)22 b Fg(:)37 b Fh(DRAFT)28 b │ │ │ │ -Fg(Jan)n(uary)d(6,)i(2026)p 2874 100 V 307 390 a Fc(\210)42 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fn(4)p 125 100 1005 4 v │ │ │ │ +1170 w Fi(Multithreaded)23 b Fg(:)37 b Fh(DRAFT)27 b │ │ │ │ +Fg(Jan)n(uary)e(10,)i(2026)p 2895 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 │ │ │ │ @@ -5445,17 +5451,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 1026 4 v 1192 100 a Fi(Multithreaded)22 │ │ │ │ -b Fg(:)37 b Fh(DRAFT)110 b Fg(Jan)n(uary)26 b(6,)h(2026)p │ │ │ │ -2835 100 V 1026 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 1005 4 v 1171 100 a Fi(Multithreaded)22 │ │ │ │ +b Fg(:)37 b Fh(DRAFT)110 b Fg(Jan)n(uary)26 b(10,)h(2026)p │ │ │ │ +2856 100 V 1005 w Fn(5)208 390 y(from)k Fi(mtxB)g Fn(and)h(en)n(tries)g │ │ │ │ (of)g Fm(X)39 b Fn(are)31 b(written)i(to)f Fi(mtxX)p │ │ │ │ Fn(.)e(Therefore,)j Fi(mtxX)d Fn(and)j Fi(mtxB)d Fn(can)i(b)r(e)h(the)g │ │ │ │ (same)e(ob)5 b(ject.)208 490 y(\(Note,)25 b(this)h(do)r(es)e(not)h │ │ │ │ (hold)g(true)g(for)f(an)h(MPI)f(factorization)g(with)h(piv)n(oting.\)) │ │ │ │ 36 b(The)25 b(submatrix)f(manager)f(ob)5 b(ject)208 589 │ │ │ │ y(manages)31 b(the)j(w)n(orking)d(storage.)51 b(The)33 │ │ │ │ b Fi(solvemap)d Fn(ob)5 b(ject)33 b(con)n(tains)f(the)h(map)g(from)g │ │ │ │ @@ -5535,17 +5541,17 @@ │ │ │ │ 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 1026 4 v │ │ │ │ -1191 w Fi(Multithreaded)22 b Fg(:)37 b Fh(DRAFT)28 b │ │ │ │ -Fg(Jan)n(uary)d(6,)i(2026)p 2874 100 V 307 390 a Fc(\210)42 │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fn(6)p 125 100 1005 4 v │ │ │ │ +1170 w Fi(Multithreaded)23 b Fg(:)37 b Fh(DRAFT)27 b │ │ │ │ +Fg(Jan)n(uary)e(10,)i(2026)p 2895 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 │ │ │ │ @@ -5618,17 +5624,17 @@ │ │ │ │ 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 1026 4 v 1192 100 a Fi(Multithreaded)22 │ │ │ │ -b Fg(:)37 b Fh(DRAFT)110 b Fg(Jan)n(uary)26 b(6,)h(2026)p │ │ │ │ -2835 100 V 1026 w Fn(7)307 390 y Fc(\210)42 b Fn(The)32 │ │ │ │ +TeXDict begin 7 6 bop 83 100 1005 4 v 1171 100 a Fi(Multithreaded)22 │ │ │ │ +b Fg(:)37 b Fh(DRAFT)110 b Fg(Jan)n(uary)26 b(10,)h(2026)p │ │ │ │ +2856 100 V 1005 w Fn(7)307 390 y Fc(\210)42 b Fn(The)32 │ │ │ │ b Fi(msgFile)c Fn(parameter)i(determines)h(the)h(message)e(\014le)i(|)f │ │ │ │ (if)h Fi(msgFile)d Fn(is)i Fi(stdout)p Fn(,)f(then)i(the)g(message)390 │ │ │ │ 490 y(\014le)c(is)f Fh(stdout)p Fn(,)h(otherwise)e(a)i(\014le)f(is)h │ │ │ │ (op)r(ened)f(with)i Fh(app)l(end)g Fn(status)e(to)g(receiv)n(e)g(an)n │ │ │ │ (y)g(output)h(data.)307 620 y Fc(\210)42 b Fn(The)28 │ │ │ │ b Fi(type)e Fn(parameter)g(sp)r(eci\014es)h(a)h(real)e(or)h(complex)g │ │ │ │ (linear)g(system.)456 750 y Fa({)41 b Fi(type)h(=)i(1)f(\(SPOOLES)p │ │ │ │ @@ -5705,17 +5711,17 @@ │ │ │ │ 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 1026 4 v │ │ │ │ -1191 w Fi(Multithreaded)22 b Fg(:)37 b Fh(DRAFT)28 b │ │ │ │ -Fg(Jan)n(uary)d(6,)i(2026)p 2874 100 V 307 390 a Fc(\210)42 │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fn(8)p 125 100 1005 4 v │ │ │ │ +1170 w Fi(Multithreaded)23 b Fg(:)37 b Fh(DRAFT)27 b │ │ │ │ +Fg(Jan)n(uary)e(10,)i(2026)p 2895 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 │ │ │ │ @@ -5799,17 +5805,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 1026 4 v 1192 100 a Fi(Multithreaded)22 │ │ │ │ -b Fg(:)37 b Fh(DRAFT)110 b Fg(Jan)n(uary)26 b(6,)h(2026)p │ │ │ │ -2835 100 V 1026 w Fn(9)456 390 y Fa({)41 b Fi(sparsityflag)e(=)k(0)g │ │ │ │ +TeXDict begin 9 8 bop 83 100 1005 4 v 1171 100 a Fi(Multithreaded)22 │ │ │ │ +b Fg(:)37 b Fh(DRAFT)110 b Fg(Jan)n(uary)26 b(10,)h(2026)p │ │ │ │ +2856 100 V 1005 w Fn(9)456 390 y Fa({)41 b Fi(sparsityflag)e(=)k(0)g │ │ │ │ (\(FRONTMTX)p 1687 390 27 4 v 28 w(DENSE)p 1935 390 V │ │ │ │ 29 w(FRONTS\))26 b Fn(implies)j(a)f(direct)h(factorization,)f(the)h │ │ │ │ (fron)n(ts)f(will)545 490 y(b)r(e)g(stored)f(as)g(dense)h(submatrices.) │ │ │ │ 456 607 y Fa({)41 b Fi(sparsityflag)e(=)k(1)g(\(FRONTMTX)p │ │ │ │ 1687 607 V 28 w(SPARSE)p 1979 607 V 29 w(FRONTS\))29 │ │ │ │ b Fn(implies)j(an)g(appro)n(ximate)e(factorization.)48 │ │ │ │ b(The)545 706 y(fron)n(ts)26 b(will)g(b)r(e)g(stored)g(as)f(sparse)g │ │ │ │ @@ -5894,17 +5900,17 @@ │ │ │ │ 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 1005 4 │ │ │ │ -v 1170 w Fi(Multithreaded)22 b Fg(:)37 b Fh(DRAFT)27 │ │ │ │ -b Fg(Jan)n(uary)f(6,)h(2026)p 2895 100 V 307 390 a Fc(\210)42 │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fn(10)p 166 100 984 4 │ │ │ │ +v 1149 w Fi(Multithreaded)22 b Fg(:)37 b Fh(DRAFT)28 │ │ │ │ +b Fg(Jan)n(uary)d(10,)i(2026)p 2916 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 │ │ │ │ ├── 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 January 6, 2026 │ │ │ │ │ + 2 Multithreaded : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 3 │ │ │ │ │ + Multithreaded : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 4 Multithreaded : DRAFT January 10, 2026 │ │ │ │ │ • 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 January 6, 2026 5 │ │ │ │ │ + Multithreaded : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 6 Multithreaded : DRAFT January 10, 2026 │ │ │ │ │ • 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 January 6, 2026 7 │ │ │ │ │ + Multithreaded : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 8 Multithreaded : DRAFT January 10, 2026 │ │ │ │ │ • 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 January 6, 2026 9 │ │ │ │ │ + Multithreaded : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 10 Multithreaded : DRAFT January 10, 2026 │ │ │ │ │ • 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 2026.01.06:2034 │ │ │ │ +%DVIPSSource: TeX output 2026.01.10:0513 │ │ │ │ %%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 │ │ │ │ @@ -1541,14 +1541,15 @@ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ /UnderlineThickness 50 def │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ +dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ dup 54 /six put │ │ │ │ dup 58 /colon put │ │ │ │ dup 74 /J put │ │ │ │ dup 97 /a put │ │ │ │ dup 110 /n put │ │ │ │ dup 114 /r put │ │ │ │ @@ -1738,79 +1739,84 @@ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB88440048702D1F │ │ │ │ -77994EE04EC3B4531D6E1888C86A8F0DA6CF1F056F16AB0DD76C862830F89DA4 │ │ │ │ -28923B3AA543E0D6E41D3BD283E600BC11F889315EE92C675C109C81065ED1BC │ │ │ │ -82A5583D1B723D50051B0557A367887F5B263014C6E77288B4883C50889473D3 │ │ │ │ -3787BAD4BEB88BD1353AFA5B73E61814819537E7FF09F53EF94792BB3DD36ED0 │ │ │ │ -002D0E7A6CDAB85A9C17AF5664BCB5A71663B861880F3ECCABC8E7A2FC81A4CC │ │ │ │ -AE7A87503FDC1CE0077BA51ECC7B43B60793FED8E9AAD5BBD03ADD6183DCD26D │ │ │ │ -24A74163611C05562437644EF9B8889FD4F9D311911204FEFD35237486F2D2D0 │ │ │ │ -B6783A03BF12EA6D19D6D0F87E4D08515F12F9CBF1961CAA71E0D69FE3C4C4D2 │ │ │ │ -7C7FB64ED24F8684C8F00C2BEDEA53EA390CDC0B5BEBD7DD982580B2EA1F1F89 │ │ │ │ -CFED5916630DC2BA32BB9180277E1ABC339B3B7DE086717BD93F7FF3681BA5B3 │ │ │ │ -FCF671C4B293C2DE4A322F0AA3323A4934444C69F23EF90120B8755482757759 │ │ │ │ -C457A435FB8BB4922BD92C5F3D9555D978275C510183E29DFF2FCE4ABBFC18DE │ │ │ │ -76CAD3B486BA12047DD808CD4D521A0FD368E4AE79DE262630983A5D6F0B679D │ │ │ │ -2F005306393C520E1B6987302D029939D94B0178DB06211C7F3B123A41E6E7BA │ │ │ │ -87164737110707A3ED3983895F3FBC815EF370F54C808ED93D910937BCA3D8AF │ │ │ │ -7CBF80DC180CDA54059DB76710B4FCD4139D5B7DA7DB1A0D0AF86AD2453D3691 │ │ │ │ -0BA5BAD40FF28BB4235FCD40FC87C2B888E67928D9B0ACA5692149373DBB93BF │ │ │ │ -6520DDD36A9BFE4D415CA67A5E04F1D48BDB28C69676273ED842CF7980E8E17C │ │ │ │ -B88563F407E340AFAE8F51AABCF8A39521BCEE1EC8396D75E124B24B4675909F │ │ │ │ -E246F87DA08584A3173AEFF153ECDF610543FA7474D125A31ADD6285A49222B5 │ │ │ │ -177066EA395BFA4B1114C7FCF7712DA772A21C99E64F4E1181E69CAF98137FA2 │ │ │ │ -76CF74F682B8CD7BA6EEA79B70FA8A76809634517F8415B6F21A5A7D6099B5E8 │ │ │ │ -EAB356BBC4FB68C72B8C61DDCE8EAB1A53B9D6BAD78584B307EFF57CEAE74884 │ │ │ │ -35987BF89E9E60E962D22FA5612F2DB5EB840499B7CC11A34BA5DEE30D277540 │ │ │ │ -39B8211D69B448ADE95B723F8369A631DE6DD75703AFD7485FB7FFF41A60CBE4 │ │ │ │ -813B8FEA120662355773830EF85015E7FFD609B2CEE52CB5FFE9C35B6BEEE4A4 │ │ │ │ -A66719E31CE1523FDD7771FB1E881A32A7DB7D92C2326DF4B93241C14ABFCCD6 │ │ │ │ -8E5BCAC61E800E6B1B4687ADA4CBF41EC0AFC26D021D1772CBDCD0516DF5EBE1 │ │ │ │ -37FD2AC5ABB8D774B5735940F1F6866D044FD8CE74444FAA5D0202C11E39CC10 │ │ │ │ -213731F41F704450E1D0565013BF22188442CE0FC256190A9F92F0C802AA2660 │ │ │ │ -614AFE9E9C82F8CD2E6035EEF84E5F16CBB690AC819B4B910EA8E81106F0ACE5 │ │ │ │ -CDFE77DAF69E4AFE72C43145A3ABCC40B6C5297487083F738C86422277AC2267 │ │ │ │ -51759F1B7F129E87DE16433B664AD0FB6D30424A11C70B52B591352BF653C8B0 │ │ │ │ -0840C224FBFEAA996A6BE1D69414DD778C2EF56A63B64D59BA412EC3E4000831 │ │ │ │ -73361FB9813F9A7C74BA3A50D331B07B61492E5D75F0861B530587269B3ADC90 │ │ │ │ -EA1DF586AC4BC57C3230893EFE953A6E76950ABA895FAC711D3BD330ABC6846A │ │ │ │ -C91F6ABF3410B913DFE5C8266020CEE5C7A9EDA2E7D9BCA797DC486443C7BA7C │ │ │ │ -7E03439A40927FA3251B6D417E5653E7799E9D6F04149C34096E2CA9B1F9B1EC │ │ │ │ -38958A2521B4A657A8B9F16E1FD66C7E345A10D7AA0241559503D214AC6507A4 │ │ │ │ -CBDE8617AA7ED136577734428594487F3565BF45FA196375759E2FE23C26EC8A │ │ │ │ -3310A36917A5E2F260EAB31030F8E570303D36B833626938F56939849DFA1F3F │ │ │ │ -66D0A317BB6364427F1512AAB380B555611C76345C02C3A6FBF78590331D5ECA │ │ │ │ -029DEFB722F6AB05327C2A31AB7BD6ED0F0386E6F45C1278048D22B90B074CCB │ │ │ │ -2BBEBCC1927C97EC532E651CAF0058AFE8FC08F00F0216D5DD9830C294FF76DA │ │ │ │ -426A073B3A3AEEFBDEE71C5182186311607ECDBD1F1AF4C5E79748CD01445C8D │ │ │ │ -25DD49490C8A6810065908222C8D0AC9F83AFBEE7115023E2D2615A170A5D40A │ │ │ │ -AD49BDF59A59187B6434F83E68EED22EF4EFDBADED6F1559AC779E0377FE7375 │ │ │ │ -D7060584FE74B1859D0FD98772253A712B17FFBB467840C484F5EF82C5677ADB │ │ │ │ -EDF159A456A526B8B9F6E8FC7608DFD47B0F09E26118F79CBE53B6C4E32BACAB │ │ │ │ -D62AFD4AA527CC4B587BB41A17A9BCE106A8C592BC9B73422B712C466C284A17 │ │ │ │ -E8D0C1E01D43C739FB1C083AD2714F78AC785B0C09AA7E67417A73510E00F2FE │ │ │ │ -E3D3EBF626A2F3A20A386E3F98D1285F4A2A332FC609CD191F01F128627B3505 │ │ │ │ -0AC2387DC0AD1B950490EBB5045F22BEC54955402CE2D267B6754E7C32BE84E8 │ │ │ │ -E6B63E3D3EAEE979442D167AEF69C27B22A8E887A2510C3A168D95D285CF7515 │ │ │ │ -011C921679B2F386575826A3F2071D015EEB78F02A4F94D4E5F07873623200F8 │ │ │ │ -7DF95BA0DC6B6D31DECC925BEA1E6A7C52FE685800EC33CBAE830F1AE5454DFA │ │ │ │ -913B8F457D7E2D3DFF019869E3301EEEC64A38295DE6B588E776922B32362382 │ │ │ │ -D1CF3D058613C8A96E6994D3EC23E8B71EC6E718383B20BB6C22DB6F93FA559F │ │ │ │ -3449CA84EB33B25C8BE0DFD1C29DC4FBD7AFBDC96C12162CAAB2C5E354B0FB10 │ │ │ │ -4BF8CC3610875ABD5111D09F2F847822118972214EDEB9EE34BAFE45E7AC15C5 │ │ │ │ -CA63EC4A3CEEA505A5EDD88A59BB67C71C3E026DFFE177F99BC69E6635545D03 │ │ │ │ -77A634F98230EF64381EC67CA519D4B9770EFA844789E21970F89D5FFC5DEAA8 │ │ │ │ -DC008EBA09306967ED090FF91B002FA6120C2B461A87AA32EFB003C5578D8EEF │ │ │ │ - │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ +AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ +E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ +46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ +FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ +389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ +7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ +2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ +C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ +B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ +AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ +E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ +F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ +0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ +2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ +29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ +CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ +6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ +5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ +36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0DD96AB602D004DCFE000A0 │ │ │ │ +ABE41BAB8AB7D50BD32BFD6F1AA3B60B09B9BE4E273EDD2DDCB21A98A760D17D │ │ │ │ +0A5C9303AFE63CF80A93E60C72A0576FAADEECBE2DE91892D210EB0AD1889C04 │ │ │ │ +C7530652584E775B4ED19CFB4B8DBCCC57A9FA9E4DDC8A1E5A1D3BE9E93407A6 │ │ │ │ +2C237ACE27F4EDA330EE952EDCBE91683AA98A29197735006666C96A2CE7C787 │ │ │ │ +BBA5A57C4DBF6FAA5B38AF226B5D9A65FAD84650AC0C3DB29C30602699F81E01 │ │ │ │ +0BAF8F1CE44A03C680121B77A1703C638187675D6C22C49F9902475E6CE9C732 │ │ │ │ +48ED028CC92EA542EF189CC9CA1C384E3387793057615D0A2BF040CC90B275B9 │ │ │ │ +F70A5310874DC2E0A360373E7BCAC88250FBC8989C7D18DA8274C06F02FCF31C │ │ │ │ +2B3868CBAF083DAC2FB159DE368261842DB7C9EA1A86B17617C861A48FBA8FF9 │ │ │ │ +D184CB026F4A418C0955347612F94C039B1536A76CB182A591DD7C02D509CF16 │ │ │ │ +8B9E46502ABF5DE31F5DFBD19C7417A2AF7AF13F0D5FF837C94CE56F07B96337 │ │ │ │ +0ED215252346FAEB54B5F3ABE29709B7ECB9FBD23A4AD397E6ABA6938F1BBF33 │ │ │ │ +1D5460D9414F0B8725DA832744525C13E3FD9C8DB33FBEE12F9C4969988402C8 │ │ │ │ +96AF916364CC2DF17EDBA622FC0A5D0013418E29F912FFA06F8D7E31ECAB0B08 │ │ │ │ +C4D2D8EE537CC768FC9038DD6D86D33642C6E812E941F157FC6917AF19C2B99A │ │ │ │ +5BF10B9A7ECF711BBB6F33C8C3DAD778153122593F36ABDDC0E97A602B045DE6 │ │ │ │ +19BD82D877DDA960AB11EF48C7F75A28D0D731D4A5DBC98283087267CD1A470D │ │ │ │ +537E949DA5EECF097B099547995BE066A941CED683B5748962AD2B02C21636C0 │ │ │ │ +2EAFA33CA0CB3BF8A95703F015A210D918865B9BEA2890DCFB68BC3719C305EC │ │ │ │ +315EC8727BF9A93632AB9E3090B100C022EE1396CD329B37547F26A7DCE52BD7 │ │ │ │ +F91B7388DEC34F4A0C6D46CD7CA6ACC00C5C4C71E47C6AD96496B3CBF531F342 │ │ │ │ +A740EE6B99BD70AD490DFA700772A0697EC6561CE88A0113E4DC3B21F372D810 │ │ │ │ +DFF2C3F6EDF3E917BF2664EEFC9AD292DD6CC36853CF936018D43FDB28D5B001 │ │ │ │ +7D1C805F958F13FD221377ABDD69D102E8CC1DAB2E011EE16CF6DB9D195BA702 │ │ │ │ +5A8738FABF989B0351282D0E5121182DFC52169782A5F3DD5D820411BEF909DE │ │ │ │ +04D963E6FDA76F88508C4E91DDAAA1748F396A1D380D8CA429673AF27C164434 │ │ │ │ +771781B39565D3EE50F3CF03EF12908B13A6C11C9AB7631B32125828B13050BA │ │ │ │ +041A93B97AC32D4A1E28C5FA98CDEE998B5F97823D6291D01E3611A16854F1FE │ │ │ │ +69B9D6D2AE3E56D012B7BC3E582FB4C23188A5E365E65EB1F804A706AF73A2F8 │ │ │ │ +9804808EF71F0982B14133BF9A27D6F2E719BDB751022B1B052722933948904E │ │ │ │ +3582E363478DCDA115205A0FDE39DF71FEAEEB104419C35A6B0678C19616C6D9 │ │ │ │ +A892DC2F4257069AF096C80C099CD13024DF3995F28C694E00D1F08B43D4450C │ │ │ │ +D18F5C925CFD2D124E74FC64BBAA0DE32A79E4A4507B5B5DD834C67160CDA110 │ │ │ │ +EF0061DD27E8864F4250A92BBEFD75C784BB98F4FA789A8236C2A21E4E61ABD0 │ │ │ │ +C6B4D13B3C31AC8E55FA34BEC7C308C61FB0280382EC6AFD63D959678D42D2B3 │ │ │ │ +4134F6236A0808D9302B4E3C6F81FC6973B4833602750CCB5DE36AEA23ED6BD4 │ │ │ │ +5B72DF0DD7B81C871CAA6EC190748CD8C4B998D576E5D340ACAC0617DDBE461C │ │ │ │ +8E82E809D11A01D265D039F4315066832E27E08A6F067E129E45FBF533F761BB │ │ │ │ +EC3C071209BECE7D14D3184B2E6BFD65717A5A7C08F3776B20C513649488C1CF │ │ │ │ +03333805B249D1034FB0AE2D7D2A23324EE27AEDB68F8E329A8052FE58D7C0D9 │ │ │ │ +A40A0CDC79F2085C4F39A7DFDB625C8F071E2A32CF6215DD3E060A9BABF7A3AA │ │ │ │ +C57DA0C0571C5D6EEAA975D1BB9C99F8EA4958360E43E8C60080B03DC4435550 │ │ │ │ +E6048DDD35DF3E5DA69669F266FFD7B44649A68025270DC84258E329F6E6907C │ │ │ │ +BCFF900D715D0C7EC43C5E7180CAD6427BA4FD41AAD6531A5C06B0EC26DDA71F │ │ │ │ +4A9DA50DE919E79226F6DDF7C1BA478936AA86CEAD93072CC2960E98C45A1A0C │ │ │ │ +60CF8A26E4278AB4F9E28FA6532648196CC455607D6BCD00F60675DE8CC02C8C │ │ │ │ +9BE5D5B714731814D5B008EE236563D77AC6895E0158877C95797E07C02AFEBE │ │ │ │ +CC9FE97D5E103F7DB0A834E9A7A75893EC66340B0E4C6F0EEDEF43415BF9FCF4 │ │ │ │ +47340CBEA4DCFBA0D028EB2149FFBBDB3322AE5F6FD20242526EDC55E476D983 │ │ │ │ +DC │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -4673,15 +4679,15 @@ │ │ │ │ 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 3[51 12[45 22[47 15[25 3[45 3[45 │ │ │ │ -1[45 3[25 44[{}11 90.9091 /CMSL10 rf /Ff 212[55 43[{}1 │ │ │ │ +45 45 3[25 44[{}12 90.9091 /CMSL10 rf /Ff 212[55 43[{}1 │ │ │ │ 66.4176 /CMR8 rf /Fg 255[55{}1 66.4176 /CMSY8 rf /Fh │ │ │ │ 168[67 13[31 6[53 6[20 59[{}4 66.4176 /CMMI8 rf /Fi 132[52 │ │ │ │ 123[{}1 90.9091 /CMBX10 rf │ │ │ │ %DVIPSBitmapFont: Fj tcrm1095 10.95 1 │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ /Dotaccent/cedilla/ogonek/quotesinglbase.ts1 4{/.notdef}repeat │ │ │ │ /quotedblbase.ts1/.notdef/.notdef/twelveudash/threequartersemdash │ │ │ │ @@ -4813,17 +4819,17 @@ │ │ │ │ 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 1081 4 v │ │ │ │ -1263 w Fm(Network)29 b Fe(:)40 b Fd(DRAFT)30 b Fe(Jan)m(uary)g(6,)h │ │ │ │ -(2026)p 2819 100 V 137 399 a Fj(\210)45 b Fn(An)33 b(edge)g(\()p │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fn(2)p 136 100 1059 4 v │ │ │ │ +1240 w Fm(Network)29 b Fe(:)40 b Fd(DRAFT)31 b Fe(Jan)m(uary)f(10,)h │ │ │ │ +(2026)p 2842 100 V 137 399 a Fj(\210)45 b Fn(An)33 b(edge)g(\()p │ │ │ │ Fl(y)s(;)15 b(z)t Fn(\))35 b(where)d Fl(y)g Fk(2)e Fl(Y)1313 │ │ │ │ 413 y Fh(I)1385 399 y Fn(and)i Fl(z)i Fk(2)29 b Fl(Y)1783 │ │ │ │ 413 y Fh(W)1897 399 y Fn(b)s(ecomes)k(t)m(w)m(o)h(edges,)h(\()p │ │ │ │ Fl(y)2790 366 y Ff(+)2849 399 y Fl(;)15 b(z)t Fn(\))34 │ │ │ │ b(and)e(\()p Fl(z)t(;)15 b(y)3352 366 y Fg(\000)3412 │ │ │ │ 399 y Fn(\),)34 b(b)s(oth)e(with)227 511 y(in\014nite)e(capacit)m(y)-8 │ │ │ │ b(.)137 695 y Fj(\210)45 b Fn(An)27 b(edge)h(\()p Fl(x;)15 │ │ │ │ @@ -4898,17 +4904,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 1081 4 v 1263 100 a Fm(Network)28 │ │ │ │ -b Fe(:)41 b Fd(DRAFT)121 b Fe(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2772 100 V 1081 w Fn(3)137 399 y Fj(\210)45 b Fm(int)i(narc)29 │ │ │ │ +TeXDict begin 3 2 bop 91 100 1059 4 v 1240 100 a Fm(Network)28 │ │ │ │ +b Fe(:)41 b Fd(DRAFT)121 b Fe(Jan)m(uary)30 b(10,)i(2026)p │ │ │ │ +2795 100 V 1059 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 │ │ │ │ @@ -4953,17 +4959,17 @@ │ │ │ │ (h)m(unks.)0 5059 y Fc(1.2)135 b(Protot)l(yp)t(es)46 │ │ │ │ b(and)f(descriptions)g(of)g Fb(Network)d Fc(metho)t(ds)0 │ │ │ │ 5294 y 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 1081 4 v │ │ │ │ -1263 w Fm(Network)29 b Fe(:)40 b Fd(DRAFT)30 b Fe(Jan)m(uary)g(6,)h │ │ │ │ -(2026)p 2819 100 V 0 399 a Fa(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fn(4)p 136 100 1059 4 v │ │ │ │ +1240 w Fm(Network)29 b Fe(:)40 b Fd(DRAFT)31 b Fe(Jan)m(uary)f(10,)h │ │ │ │ +(2026)p 2842 100 V 0 399 a Fa(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ 589 y Fn(As)d(usual,)h(there)f(are)g(four)f(basic)h(metho)s(ds)g(to)g │ │ │ │ (supp)s(ort)e(ob)5 b(ject)36 b(creation,)i(setting)e(default)f │ │ │ │ (\014elds,)h(clearing)0 702 y(an)m(y)31 b(allo)s(cated)h(data,)f(and)f │ │ │ │ (free'ing)h(the)g(ob)5 b(ject.)111 894 y(1.)46 b Fm(Network)g(*)i │ │ │ │ (Network_new)c(\()k(void)e(\))i(;)227 1038 y Fn(This)39 │ │ │ │ b(metho)s(d)f(simply)h(allo)s(cates)i(storage)g(for)e(the)g │ │ │ │ Fm(Network)f Fn(structure)g(and)h(then)g(sets)g(the)h(default)227 │ │ │ │ @@ -5026,17 +5032,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 1081 4 v 1263 100 a Fm(Network)28 │ │ │ │ -b Fe(:)41 b Fd(DRAFT)121 b Fe(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2772 100 V 1081 w Fn(5)0 399 y Fa(1.2.3)112 b(Utilit)m(y)38 │ │ │ │ +TeXDict begin 5 4 bop 91 100 1059 4 v 1240 100 a Fm(Network)28 │ │ │ │ +b Fe(:)41 b Fd(DRAFT)121 b Fe(Jan)m(uary)30 b(10,)i(2026)p │ │ │ │ +2795 100 V 1059 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 │ │ │ │ @@ -5110,17 +5116,17 @@ │ │ │ │ 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 1081 4 v │ │ │ │ -1263 w Fm(Network)29 b Fe(:)40 b Fd(DRAFT)30 b Fe(Jan)m(uary)g(6,)h │ │ │ │ -(2026)p 2819 100 V 0 399 a Fa(1.2.4)112 b(IO)38 b(metho)s(ds)0 │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fn(6)p 136 100 1059 4 v │ │ │ │ +1240 w Fm(Network)29 b Fe(:)40 b Fd(DRAFT)31 b Fe(Jan)m(uary)f(10,)h │ │ │ │ +(2026)p 2842 100 V 0 399 a Fa(1.2.4)112 b(IO)38 b(metho)s(ds)0 │ │ │ │ 595 y Fn(There)30 b(are)h(t)m(w)m(o)g(IO)f(routines)g(for)h(debugging)f │ │ │ │ (purp)s(oses.)111 832 y(1.)46 b Fm(void)h(Network_writeForHumanEye)41 │ │ │ │ b(\()48 b(Network)d(*network,)h(FILE)g(*fp)h(\))h(;)227 │ │ │ │ 983 y Fn(This)20 b(metho)s(d)f(writes)i(the)f(net)m(w)m(ork)h(to)g(a)g │ │ │ │ (\014le)f(in)g(a)h(h)m(uman)e(readable)i(format.)38 b(The)20 │ │ │ │ b(metho)s(d)f Fm(Network)p 3762 983 29 4 v 33 w(writeStats\(\))227 │ │ │ │ 1096 y Fn(is)29 b(called)h(to)f(write)g(out)g(the)f(header)h(and)f │ │ │ │ ├── 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 January 6, 2026 │ │ │ │ │ + 2 Network : DRAFT January 10, 2026 │ │ │ │ │ • 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 January 6, 2026 3 │ │ │ │ │ + Network : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 4 Network : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 5 │ │ │ │ │ + Network : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 6 Network : DRAFT January 10, 2026 │ │ │ │ │ 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 2026.01.06:2034 │ │ │ │ +%DVIPSSource: TeX output 2026.01.10:0513 │ │ │ │ %%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 │ │ │ │ @@ -2039,14 +2039,15 @@ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ /UnderlineThickness 50 def │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ +dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ dup 54 /six put │ │ │ │ dup 58 /colon put │ │ │ │ dup 74 /J put │ │ │ │ dup 97 /a put │ │ │ │ dup 110 /n put │ │ │ │ dup 114 /r put │ │ │ │ @@ -2236,79 +2237,84 @@ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB88440048702D1F │ │ │ │ -77994EE04EC3B4531D6E1888C86A8F0DA6CF1F056F16AB0DD76C862830F89DA4 │ │ │ │ -28923B3AA543E0D6E41D3BD283E600BC11F889315EE92C675C109C81065ED1BC │ │ │ │ -82A5583D1B723D50051B0557A367887F5B263014C6E77288B4883C50889473D3 │ │ │ │ -3787BAD4BEB88BD1353AFA5B73E61814819537E7FF09F53EF94792BB3DD36ED0 │ │ │ │ -002D0E7A6CDAB85A9C17AF5664BCB5A71663B861880F3ECCABC8E7A2FC81A4CC │ │ │ │ -AE7A87503FDC1CE0077BA51ECC7B43B60793FED8E9AAD5BBD03ADD6183DCD26D │ │ │ │ -24A74163611C05562437644EF9B8889FD4F9D311911204FEFD35237486F2D2D0 │ │ │ │ -B6783A03BF12EA6D19D6D0F87E4D08515F12F9CBF1961CAA71E0D69FE3C4C4D2 │ │ │ │ -7C7FB64ED24F8684C8F00C2BEDEA53EA390CDC0B5BEBD7DD982580B2EA1F1F89 │ │ │ │ -CFED5916630DC2BA32BB9180277E1ABC339B3B7DE086717BD93F7FF3681BA5B3 │ │ │ │ -FCF671C4B293C2DE4A322F0AA3323A4934444C69F23EF90120B8755482757759 │ │ │ │ -C457A435FB8BB4922BD92C5F3D9555D978275C510183E29DFF2FCE4ABBFC18DE │ │ │ │ -76CAD3B486BA12047DD808CD4D521A0FD368E4AE79DE262630983A5D6F0B679D │ │ │ │ -2F005306393C520E1B6987302D029939D94B0178DB06211C7F3B123A41E6E7BA │ │ │ │ -87164737110707A3ED3983895F3FBC815EF370F54C808ED93D910937BCA3D8AF │ │ │ │ -7CBF80DC180CDA54059DB76710B4FCD4139D5B7DA7DB1A0D0AF86AD2453D3691 │ │ │ │ -0BA5BAD40FF28BB4235FCD40FC87C2B888E67928D9B0ACA5692149373DBB93BF │ │ │ │ -6520DDD36A9BFE4D415CA67A5E04F1D48BDB28C69676273ED842CF7980E8E17C │ │ │ │ -B88563F407E340AFAE8F51AABCF8A39521BCEE1EC8396D75E124B24B4675909F │ │ │ │ -E246F87DA08584A3173AEFF153ECDF610543FA7474D125A31ADD6285A49222B5 │ │ │ │ -177066EA395BFA4B1114C7FCF7712DA772A21C99E64F4E1181E69CAF98137FA2 │ │ │ │ -76CF74F682B8CD7BA6EEA79B70FA8A76809634517F8415B6F21A5A7D6099B5E8 │ │ │ │ -EAB356BBC4FB68C72B8C61DDCE8EAB1A53B9D6BAD78584B307EFF57CEAE74884 │ │ │ │ -35987BF89E9E60E962D22FA5612F2DB5EB840499B7CC11A34BA5DEE30D277540 │ │ │ │ -39B8211D69B448ADE95B723F8369A631DE6DD75703AFD7485FB7FFF41A60CBE4 │ │ │ │ -813B8FEA120662355773830EF85015E7FFD609B2CEE52CB5FFE9C35B6BEEE4A4 │ │ │ │ -A66719E31CE1523FDD7771FB1E881A32A7DB7D92C2326DF4B93241C14ABFCCD6 │ │ │ │ -8E5BCAC61E800E6B1B4687ADA4CBF41EC0AFC26D021D1772CBDCD0516DF5EBE1 │ │ │ │ -37FD2AC5ABB8D774B5735940F1F6866D044FD8CE74444FAA5D0202C11E39CC10 │ │ │ │ -213731F41F704450E1D0565013BF22188442CE0FC256190A9F92F0C802AA2660 │ │ │ │ -614AFE9E9C82F8CD2E6035EEF84E5F16CBB690AC819B4B910EA8E81106F0ACE5 │ │ │ │ -CDFE77DAF69E4AFE72C43145A3ABCC40B6C5297487083F738C86422277AC2267 │ │ │ │ -51759F1B7F129E87DE16433B664AD0FB6D30424A11C70B52B591352BF653C8B0 │ │ │ │ -0840C224FBFEAA996A6BE1D69414DD778C2EF56A63B64D59BA412EC3E4000831 │ │ │ │ -73361FB9813F9A7C74BA3A50D331B07B61492E5D75F0861B530587269B3ADC90 │ │ │ │ -EA1DF586AC4BC57C3230893EFE953A6E76950ABA895FAC711D3BD330ABC6846A │ │ │ │ -C91F6ABF3410B913DFE5C8266020CEE5C7A9EDA2E7D9BCA797DC486443C7BA7C │ │ │ │ -7E03439A40927FA3251B6D417E5653E7799E9D6F04149C34096E2CA9B1F9B1EC │ │ │ │ -38958A2521B4A657A8B9F16E1FD66C7E345A10D7AA0241559503D214AC6507A4 │ │ │ │ -CBDE8617AA7ED136577734428594487F3565BF45FA196375759E2FE23C26EC8A │ │ │ │ -3310A36917A5E2F260EAB31030F8E570303D36B833626938F56939849DFA1F3F │ │ │ │ -66D0A317BB6364427F1512AAB380B555611C76345C02C3A6FBF78590331D5ECA │ │ │ │ -029DEFB722F6AB05327C2A31AB7BD6ED0F0386E6F45C1278048D22B90B074CCB │ │ │ │ -2BBEBCC1927C97EC532E651CAF0058AFE8FC08F00F0216D5DD9830C294FF76DA │ │ │ │ -426A073B3A3AEEFBDEE71C5182186311607ECDBD1F1AF4C5E79748CD01445C8D │ │ │ │ -25DD49490C8A6810065908222C8D0AC9F83AFBEE7115023E2D2615A170A5D40A │ │ │ │ -AD49BDF59A59187B6434F83E68EED22EF4EFDBADED6F1559AC779E0377FE7375 │ │ │ │ -D7060584FE74B1859D0FD98772253A712B17FFBB467840C484F5EF82C5677ADB │ │ │ │ -EDF159A456A526B8B9F6E8FC7608DFD47B0F09E26118F79CBE53B6C4E32BACAB │ │ │ │ -D62AFD4AA527CC4B587BB41A17A9BCE106A8C592BC9B73422B712C466C284A17 │ │ │ │ -E8D0C1E01D43C739FB1C083AD2714F78AC785B0C09AA7E67417A73510E00F2FE │ │ │ │ -E3D3EBF626A2F3A20A386E3F98D1285F4A2A332FC609CD191F01F128627B3505 │ │ │ │ -0AC2387DC0AD1B950490EBB5045F22BEC54955402CE2D267B6754E7C32BE84E8 │ │ │ │ -E6B63E3D3EAEE979442D167AEF69C27B22A8E887A2510C3A168D95D285CF7515 │ │ │ │ -011C921679B2F386575826A3F2071D015EEB78F02A4F94D4E5F07873623200F8 │ │ │ │ -7DF95BA0DC6B6D31DECC925BEA1E6A7C52FE685800EC33CBAE830F1AE5454DFA │ │ │ │ -913B8F457D7E2D3DFF019869E3301EEEC64A38295DE6B588E776922B32362382 │ │ │ │ -D1CF3D058613C8A96E6994D3EC23E8B71EC6E718383B20BB6C22DB6F93FA559F │ │ │ │ -3449CA84EB33B25C8BE0DFD1C29DC4FBD7AFBDC96C12162CAAB2C5E354B0FB10 │ │ │ │ -4BF8CC3610875ABD5111D09F2F847822118972214EDEB9EE34BAFE45E7AC15C5 │ │ │ │ -CA63EC4A3CEEA505A5EDD88A59BB67C71C3E026DFFE177F99BC69E6635545D03 │ │ │ │ -77A634F98230EF64381EC67CA519D4B9770EFA844789E21970F89D5FFC5DEAA8 │ │ │ │ -DC008EBA09306967ED090FF91B002FA6120C2B461A87AA32EFB003C5578D8EEF │ │ │ │ - │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ +AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ +E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ +46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ +FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ +389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ +7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ +2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ +C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ +B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ +AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ +E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ +F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ +0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ +2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ +29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ +CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ +6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ +5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ +36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0DD96AB602D004DCFE000A0 │ │ │ │ +ABE41BAB8AB7D50BD32BFD6F1AA3B60B09B9BE4E273EDD2DDCB21A98A760D17D │ │ │ │ +0A5C9303AFE63CF80A93E60C72A0576FAADEECBE2DE91892D210EB0AD1889C04 │ │ │ │ +C7530652584E775B4ED19CFB4B8DBCCC57A9FA9E4DDC8A1E5A1D3BE9E93407A6 │ │ │ │ +2C237ACE27F4EDA330EE952EDCBE91683AA98A29197735006666C96A2CE7C787 │ │ │ │ +BBA5A57C4DBF6FAA5B38AF226B5D9A65FAD84650AC0C3DB29C30602699F81E01 │ │ │ │ +0BAF8F1CE44A03C680121B77A1703C638187675D6C22C49F9902475E6CE9C732 │ │ │ │ +48ED028CC92EA542EF189CC9CA1C384E3387793057615D0A2BF040CC90B275B9 │ │ │ │ +F70A5310874DC2E0A360373E7BCAC88250FBC8989C7D18DA8274C06F02FCF31C │ │ │ │ +2B3868CBAF083DAC2FB159DE368261842DB7C9EA1A86B17617C861A48FBA8FF9 │ │ │ │ +D184CB026F4A418C0955347612F94C039B1536A76CB182A591DD7C02D509CF16 │ │ │ │ +8B9E46502ABF5DE31F5DFBD19C7417A2AF7AF13F0D5FF837C94CE56F07B96337 │ │ │ │ +0ED215252346FAEB54B5F3ABE29709B7ECB9FBD23A4AD397E6ABA6938F1BBF33 │ │ │ │ +1D5460D9414F0B8725DA832744525C13E3FD9C8DB33FBEE12F9C4969988402C8 │ │ │ │ +96AF916364CC2DF17EDBA622FC0A5D0013418E29F912FFA06F8D7E31ECAB0B08 │ │ │ │ +C4D2D8EE537CC768FC9038DD6D86D33642C6E812E941F157FC6917AF19C2B99A │ │ │ │ +5BF10B9A7ECF711BBB6F33C8C3DAD778153122593F36ABDDC0E97A602B045DE6 │ │ │ │ +19BD82D877DDA960AB11EF48C7F75A28D0D731D4A5DBC98283087267CD1A470D │ │ │ │ +537E949DA5EECF097B099547995BE066A941CED683B5748962AD2B02C21636C0 │ │ │ │ +2EAFA33CA0CB3BF8A95703F015A210D918865B9BEA2890DCFB68BC3719C305EC │ │ │ │ +315EC8727BF9A93632AB9E3090B100C022EE1396CD329B37547F26A7DCE52BD7 │ │ │ │ +F91B7388DEC34F4A0C6D46CD7CA6ACC00C5C4C71E47C6AD96496B3CBF531F342 │ │ │ │ +A740EE6B99BD70AD490DFA700772A0697EC6561CE88A0113E4DC3B21F372D810 │ │ │ │ +DFF2C3F6EDF3E917BF2664EEFC9AD292DD6CC36853CF936018D43FDB28D5B001 │ │ │ │ +7D1C805F958F13FD221377ABDD69D102E8CC1DAB2E011EE16CF6DB9D195BA702 │ │ │ │ +5A8738FABF989B0351282D0E5121182DFC52169782A5F3DD5D820411BEF909DE │ │ │ │ +04D963E6FDA76F88508C4E91DDAAA1748F396A1D380D8CA429673AF27C164434 │ │ │ │ +771781B39565D3EE50F3CF03EF12908B13A6C11C9AB7631B32125828B13050BA │ │ │ │ +041A93B97AC32D4A1E28C5FA98CDEE998B5F97823D6291D01E3611A16854F1FE │ │ │ │ +69B9D6D2AE3E56D012B7BC3E582FB4C23188A5E365E65EB1F804A706AF73A2F8 │ │ │ │ +9804808EF71F0982B14133BF9A27D6F2E719BDB751022B1B052722933948904E │ │ │ │ +3582E363478DCDA115205A0FDE39DF71FEAEEB104419C35A6B0678C19616C6D9 │ │ │ │ +A892DC2F4257069AF096C80C099CD13024DF3995F28C694E00D1F08B43D4450C │ │ │ │ +D18F5C925CFD2D124E74FC64BBAA0DE32A79E4A4507B5B5DD834C67160CDA110 │ │ │ │ +EF0061DD27E8864F4250A92BBEFD75C784BB98F4FA789A8236C2A21E4E61ABD0 │ │ │ │ +C6B4D13B3C31AC8E55FA34BEC7C308C61FB0280382EC6AFD63D959678D42D2B3 │ │ │ │ +4134F6236A0808D9302B4E3C6F81FC6973B4833602750CCB5DE36AEA23ED6BD4 │ │ │ │ +5B72DF0DD7B81C871CAA6EC190748CD8C4B998D576E5D340ACAC0617DDBE461C │ │ │ │ +8E82E809D11A01D265D039F4315066832E27E08A6F067E129E45FBF533F761BB │ │ │ │ +EC3C071209BECE7D14D3184B2E6BFD65717A5A7C08F3776B20C513649488C1CF │ │ │ │ +03333805B249D1034FB0AE2D7D2A23324EE27AEDB68F8E329A8052FE58D7C0D9 │ │ │ │ +A40A0CDC79F2085C4F39A7DFDB625C8F071E2A32CF6215DD3E060A9BABF7A3AA │ │ │ │ +C57DA0C0571C5D6EEAA975D1BB9C99F8EA4958360E43E8C60080B03DC4435550 │ │ │ │ +E6048DDD35DF3E5DA69669F266FFD7B44649A68025270DC84258E329F6E6907C │ │ │ │ +BCFF900D715D0C7EC43C5E7180CAD6427BA4FD41AAD6531A5C06B0EC26DDA71F │ │ │ │ +4A9DA50DE919E79226F6DDF7C1BA478936AA86CEAD93072CC2960E98C45A1A0C │ │ │ │ +60CF8A26E4278AB4F9E28FA6532648196CC455607D6BCD00F60675DE8CC02C8C │ │ │ │ +9BE5D5B714731814D5B008EE236563D77AC6895E0158877C95797E07C02AFEBE │ │ │ │ +CC9FE97D5E103F7DB0A834E9A7A75893EC66340B0E4C6F0EEDEF43415BF9FCF4 │ │ │ │ +47340CBEA4DCFBA0D028EB2149FFBBDB3322AE5F6FD20242526EDC55E476D983 │ │ │ │ +DC │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -4765,15 +4771,15 @@ │ │ │ │ 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 │ │ │ │ -3[51 12[45 22[47 15[25 3[45 3[45 1[45 3[25 44[{}11 90.9091 │ │ │ │ +3[51 12[45 22[47 15[25 3[45 3[45 45 45 3[25 44[{}12 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 │ │ │ │ @@ -4903,17 +4909,17 @@ │ │ │ │ (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 914 4 v │ │ │ │ -1096 w Fn(PatchAndGoInfo)27 b Fg(:)40 b Ff(DRAFT)30 b │ │ │ │ -Fg(Jan)m(uary)g(6,)h(2026)p 2986 100 V 227 399 a Fo(m)m(ultiple)c(of)f │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fo(2)p 136 100 892 4 v │ │ │ │ +1073 w Fn(PatchAndGoInfo)27 b Fg(:)40 b Ff(DRAFT)31 b │ │ │ │ +Fg(Jan)m(uary)f(10,)h(2026)p 3009 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 │ │ │ │ @@ -4967,17 +4973,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 914 4 v 1096 100 a Fn(PatchAndGoInfo)26 │ │ │ │ -b Fg(:)41 b Ff(DRAFT)121 b Fg(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2939 100 V 914 w Fo(3)111 399 y(3.)46 b Fn(void)h │ │ │ │ +TeXDict begin 3 2 bop 91 100 892 4 v 1073 100 a Fn(PatchAndGoInfo)26 │ │ │ │ +b Fg(:)41 b Ff(DRAFT)121 b Fg(Jan)m(uary)30 b(10,)i(2026)p │ │ │ │ +2962 100 V 892 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 January 6, 2026 │ │ │ │ │ + 2 PatchAndGoInfo : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 3 │ │ │ │ │ + PatchAndGoInfo : DRAFT January 10, 2026 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 2026.01.06:2034 │ │ │ │ +%DVIPSSource: TeX output 2026.01.10:0513 │ │ │ │ %%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 │ │ │ │ @@ -1880,14 +1880,15 @@ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ /UnderlineThickness 50 def │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ +dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ dup 54 /six put │ │ │ │ dup 58 /colon put │ │ │ │ dup 74 /J put │ │ │ │ dup 97 /a put │ │ │ │ dup 110 /n put │ │ │ │ dup 114 /r put │ │ │ │ @@ -2077,79 +2078,84 @@ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB88440048702D1F │ │ │ │ -77994EE04EC3B4531D6E1888C86A8F0DA6CF1F056F16AB0DD76C862830F89DA4 │ │ │ │ -28923B3AA543E0D6E41D3BD283E600BC11F889315EE92C675C109C81065ED1BC │ │ │ │ -82A5583D1B723D50051B0557A367887F5B263014C6E77288B4883C50889473D3 │ │ │ │ -3787BAD4BEB88BD1353AFA5B73E61814819537E7FF09F53EF94792BB3DD36ED0 │ │ │ │ -002D0E7A6CDAB85A9C17AF5664BCB5A71663B861880F3ECCABC8E7A2FC81A4CC │ │ │ │ -AE7A87503FDC1CE0077BA51ECC7B43B60793FED8E9AAD5BBD03ADD6183DCD26D │ │ │ │ -24A74163611C05562437644EF9B8889FD4F9D311911204FEFD35237486F2D2D0 │ │ │ │ -B6783A03BF12EA6D19D6D0F87E4D08515F12F9CBF1961CAA71E0D69FE3C4C4D2 │ │ │ │ -7C7FB64ED24F8684C8F00C2BEDEA53EA390CDC0B5BEBD7DD982580B2EA1F1F89 │ │ │ │ -CFED5916630DC2BA32BB9180277E1ABC339B3B7DE086717BD93F7FF3681BA5B3 │ │ │ │ -FCF671C4B293C2DE4A322F0AA3323A4934444C69F23EF90120B8755482757759 │ │ │ │ -C457A435FB8BB4922BD92C5F3D9555D978275C510183E29DFF2FCE4ABBFC18DE │ │ │ │ -76CAD3B486BA12047DD808CD4D521A0FD368E4AE79DE262630983A5D6F0B679D │ │ │ │ -2F005306393C520E1B6987302D029939D94B0178DB06211C7F3B123A41E6E7BA │ │ │ │ -87164737110707A3ED3983895F3FBC815EF370F54C808ED93D910937BCA3D8AF │ │ │ │ -7CBF80DC180CDA54059DB76710B4FCD4139D5B7DA7DB1A0D0AF86AD2453D3691 │ │ │ │ -0BA5BAD40FF28BB4235FCD40FC87C2B888E67928D9B0ACA5692149373DBB93BF │ │ │ │ -6520DDD36A9BFE4D415CA67A5E04F1D48BDB28C69676273ED842CF7980E8E17C │ │ │ │ -B88563F407E340AFAE8F51AABCF8A39521BCEE1EC8396D75E124B24B4675909F │ │ │ │ -E246F87DA08584A3173AEFF153ECDF610543FA7474D125A31ADD6285A49222B5 │ │ │ │ -177066EA395BFA4B1114C7FCF7712DA772A21C99E64F4E1181E69CAF98137FA2 │ │ │ │ -76CF74F682B8CD7BA6EEA79B70FA8A76809634517F8415B6F21A5A7D6099B5E8 │ │ │ │ -EAB356BBC4FB68C72B8C61DDCE8EAB1A53B9D6BAD78584B307EFF57CEAE74884 │ │ │ │ -35987BF89E9E60E962D22FA5612F2DB5EB840499B7CC11A34BA5DEE30D277540 │ │ │ │ -39B8211D69B448ADE95B723F8369A631DE6DD75703AFD7485FB7FFF41A60CBE4 │ │ │ │ -813B8FEA120662355773830EF85015E7FFD609B2CEE52CB5FFE9C35B6BEEE4A4 │ │ │ │ -A66719E31CE1523FDD7771FB1E881A32A7DB7D92C2326DF4B93241C14ABFCCD6 │ │ │ │ -8E5BCAC61E800E6B1B4687ADA4CBF41EC0AFC26D021D1772CBDCD0516DF5EBE1 │ │ │ │ -37FD2AC5ABB8D774B5735940F1F6866D044FD8CE74444FAA5D0202C11E39CC10 │ │ │ │ -213731F41F704450E1D0565013BF22188442CE0FC256190A9F92F0C802AA2660 │ │ │ │ -614AFE9E9C82F8CD2E6035EEF84E5F16CBB690AC819B4B910EA8E81106F0ACE5 │ │ │ │ -CDFE77DAF69E4AFE72C43145A3ABCC40B6C5297487083F738C86422277AC2267 │ │ │ │ -51759F1B7F129E87DE16433B664AD0FB6D30424A11C70B52B591352BF653C8B0 │ │ │ │ -0840C224FBFEAA996A6BE1D69414DD778C2EF56A63B64D59BA412EC3E4000831 │ │ │ │ -73361FB9813F9A7C74BA3A50D331B07B61492E5D75F0861B530587269B3ADC90 │ │ │ │ -EA1DF586AC4BC57C3230893EFE953A6E76950ABA895FAC711D3BD330ABC6846A │ │ │ │ -C91F6ABF3410B913DFE5C8266020CEE5C7A9EDA2E7D9BCA797DC486443C7BA7C │ │ │ │ -7E03439A40927FA3251B6D417E5653E7799E9D6F04149C34096E2CA9B1F9B1EC │ │ │ │ -38958A2521B4A657A8B9F16E1FD66C7E345A10D7AA0241559503D214AC6507A4 │ │ │ │ -CBDE8617AA7ED136577734428594487F3565BF45FA196375759E2FE23C26EC8A │ │ │ │ -3310A36917A5E2F260EAB31030F8E570303D36B833626938F56939849DFA1F3F │ │ │ │ -66D0A317BB6364427F1512AAB380B555611C76345C02C3A6FBF78590331D5ECA │ │ │ │ -029DEFB722F6AB05327C2A31AB7BD6ED0F0386E6F45C1278048D22B90B074CCB │ │ │ │ -2BBEBCC1927C97EC532E651CAF0058AFE8FC08F00F0216D5DD9830C294FF76DA │ │ │ │ -426A073B3A3AEEFBDEE71C5182186311607ECDBD1F1AF4C5E79748CD01445C8D │ │ │ │ -25DD49490C8A6810065908222C8D0AC9F83AFBEE7115023E2D2615A170A5D40A │ │ │ │ -AD49BDF59A59187B6434F83E68EED22EF4EFDBADED6F1559AC779E0377FE7375 │ │ │ │ -D7060584FE74B1859D0FD98772253A712B17FFBB467840C484F5EF82C5677ADB │ │ │ │ -EDF159A456A526B8B9F6E8FC7608DFD47B0F09E26118F79CBE53B6C4E32BACAB │ │ │ │ -D62AFD4AA527CC4B587BB41A17A9BCE106A8C592BC9B73422B712C466C284A17 │ │ │ │ -E8D0C1E01D43C739FB1C083AD2714F78AC785B0C09AA7E67417A73510E00F2FE │ │ │ │ -E3D3EBF626A2F3A20A386E3F98D1285F4A2A332FC609CD191F01F128627B3505 │ │ │ │ -0AC2387DC0AD1B950490EBB5045F22BEC54955402CE2D267B6754E7C32BE84E8 │ │ │ │ -E6B63E3D3EAEE979442D167AEF69C27B22A8E887A2510C3A168D95D285CF7515 │ │ │ │ -011C921679B2F386575826A3F2071D015EEB78F02A4F94D4E5F07873623200F8 │ │ │ │ -7DF95BA0DC6B6D31DECC925BEA1E6A7C52FE685800EC33CBAE830F1AE5454DFA │ │ │ │ -913B8F457D7E2D3DFF019869E3301EEEC64A38295DE6B588E776922B32362382 │ │ │ │ -D1CF3D058613C8A96E6994D3EC23E8B71EC6E718383B20BB6C22DB6F93FA559F │ │ │ │ -3449CA84EB33B25C8BE0DFD1C29DC4FBD7AFBDC96C12162CAAB2C5E354B0FB10 │ │ │ │ -4BF8CC3610875ABD5111D09F2F847822118972214EDEB9EE34BAFE45E7AC15C5 │ │ │ │ -CA63EC4A3CEEA505A5EDD88A59BB67C71C3E026DFFE177F99BC69E6635545D03 │ │ │ │ -77A634F98230EF64381EC67CA519D4B9770EFA844789E21970F89D5FFC5DEAA8 │ │ │ │ -DC008EBA09306967ED090FF91B002FA6120C2B461A87AA32EFB003C5578D8EEF │ │ │ │ - │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ +AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ +E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ +46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ +FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ +389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ +7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ +2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ +C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ +B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ +AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ +E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ +F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ +0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ +2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ +29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ +CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ +6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ +5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ +36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0DD96AB602D004DCFE000A0 │ │ │ │ +ABE41BAB8AB7D50BD32BFD6F1AA3B60B09B9BE4E273EDD2DDCB21A98A760D17D │ │ │ │ +0A5C9303AFE63CF80A93E60C72A0576FAADEECBE2DE91892D210EB0AD1889C04 │ │ │ │ +C7530652584E775B4ED19CFB4B8DBCCC57A9FA9E4DDC8A1E5A1D3BE9E93407A6 │ │ │ │ +2C237ACE27F4EDA330EE952EDCBE91683AA98A29197735006666C96A2CE7C787 │ │ │ │ +BBA5A57C4DBF6FAA5B38AF226B5D9A65FAD84650AC0C3DB29C30602699F81E01 │ │ │ │ +0BAF8F1CE44A03C680121B77A1703C638187675D6C22C49F9902475E6CE9C732 │ │ │ │ +48ED028CC92EA542EF189CC9CA1C384E3387793057615D0A2BF040CC90B275B9 │ │ │ │ +F70A5310874DC2E0A360373E7BCAC88250FBC8989C7D18DA8274C06F02FCF31C │ │ │ │ +2B3868CBAF083DAC2FB159DE368261842DB7C9EA1A86B17617C861A48FBA8FF9 │ │ │ │ +D184CB026F4A418C0955347612F94C039B1536A76CB182A591DD7C02D509CF16 │ │ │ │ +8B9E46502ABF5DE31F5DFBD19C7417A2AF7AF13F0D5FF837C94CE56F07B96337 │ │ │ │ +0ED215252346FAEB54B5F3ABE29709B7ECB9FBD23A4AD397E6ABA6938F1BBF33 │ │ │ │ +1D5460D9414F0B8725DA832744525C13E3FD9C8DB33FBEE12F9C4969988402C8 │ │ │ │ +96AF916364CC2DF17EDBA622FC0A5D0013418E29F912FFA06F8D7E31ECAB0B08 │ │ │ │ +C4D2D8EE537CC768FC9038DD6D86D33642C6E812E941F157FC6917AF19C2B99A │ │ │ │ +5BF10B9A7ECF711BBB6F33C8C3DAD778153122593F36ABDDC0E97A602B045DE6 │ │ │ │ +19BD82D877DDA960AB11EF48C7F75A28D0D731D4A5DBC98283087267CD1A470D │ │ │ │ +537E949DA5EECF097B099547995BE066A941CED683B5748962AD2B02C21636C0 │ │ │ │ +2EAFA33CA0CB3BF8A95703F015A210D918865B9BEA2890DCFB68BC3719C305EC │ │ │ │ +315EC8727BF9A93632AB9E3090B100C022EE1396CD329B37547F26A7DCE52BD7 │ │ │ │ +F91B7388DEC34F4A0C6D46CD7CA6ACC00C5C4C71E47C6AD96496B3CBF531F342 │ │ │ │ +A740EE6B99BD70AD490DFA700772A0697EC6561CE88A0113E4DC3B21F372D810 │ │ │ │ +DFF2C3F6EDF3E917BF2664EEFC9AD292DD6CC36853CF936018D43FDB28D5B001 │ │ │ │ +7D1C805F958F13FD221377ABDD69D102E8CC1DAB2E011EE16CF6DB9D195BA702 │ │ │ │ +5A8738FABF989B0351282D0E5121182DFC52169782A5F3DD5D820411BEF909DE │ │ │ │ +04D963E6FDA76F88508C4E91DDAAA1748F396A1D380D8CA429673AF27C164434 │ │ │ │ +771781B39565D3EE50F3CF03EF12908B13A6C11C9AB7631B32125828B13050BA │ │ │ │ +041A93B97AC32D4A1E28C5FA98CDEE998B5F97823D6291D01E3611A16854F1FE │ │ │ │ +69B9D6D2AE3E56D012B7BC3E582FB4C23188A5E365E65EB1F804A706AF73A2F8 │ │ │ │ +9804808EF71F0982B14133BF9A27D6F2E719BDB751022B1B052722933948904E │ │ │ │ +3582E363478DCDA115205A0FDE39DF71FEAEEB104419C35A6B0678C19616C6D9 │ │ │ │ +A892DC2F4257069AF096C80C099CD13024DF3995F28C694E00D1F08B43D4450C │ │ │ │ +D18F5C925CFD2D124E74FC64BBAA0DE32A79E4A4507B5B5DD834C67160CDA110 │ │ │ │ +EF0061DD27E8864F4250A92BBEFD75C784BB98F4FA789A8236C2A21E4E61ABD0 │ │ │ │ +C6B4D13B3C31AC8E55FA34BEC7C308C61FB0280382EC6AFD63D959678D42D2B3 │ │ │ │ +4134F6236A0808D9302B4E3C6F81FC6973B4833602750CCB5DE36AEA23ED6BD4 │ │ │ │ +5B72DF0DD7B81C871CAA6EC190748CD8C4B998D576E5D340ACAC0617DDBE461C │ │ │ │ +8E82E809D11A01D265D039F4315066832E27E08A6F067E129E45FBF533F761BB │ │ │ │ +EC3C071209BECE7D14D3184B2E6BFD65717A5A7C08F3776B20C513649488C1CF │ │ │ │ +03333805B249D1034FB0AE2D7D2A23324EE27AEDB68F8E329A8052FE58D7C0D9 │ │ │ │ +A40A0CDC79F2085C4F39A7DFDB625C8F071E2A32CF6215DD3E060A9BABF7A3AA │ │ │ │ +C57DA0C0571C5D6EEAA975D1BB9C99F8EA4958360E43E8C60080B03DC4435550 │ │ │ │ +E6048DDD35DF3E5DA69669F266FFD7B44649A68025270DC84258E329F6E6907C │ │ │ │ +BCFF900D715D0C7EC43C5E7180CAD6427BA4FD41AAD6531A5C06B0EC26DDA71F │ │ │ │ +4A9DA50DE919E79226F6DDF7C1BA478936AA86CEAD93072CC2960E98C45A1A0C │ │ │ │ +60CF8A26E4278AB4F9E28FA6532648196CC455607D6BCD00F60675DE8CC02C8C │ │ │ │ +9BE5D5B714731814D5B008EE236563D77AC6895E0158877C95797E07C02AFEBE │ │ │ │ +CC9FE97D5E103F7DB0A834E9A7A75893EC66340B0E4C6F0EEDEF43415BF9FCF4 │ │ │ │ +47340CBEA4DCFBA0D028EB2149FFBBDB3322AE5F6FD20242526EDC55E476D983 │ │ │ │ +DC │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -4100,15 +4106,15 @@ │ │ │ │ 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 3[51 12[45 22[47 15[25 3[45 3[45 1[45 3[25 44[{}11 │ │ │ │ +2[36 3[51 12[45 22[47 15[25 3[45 3[45 45 45 3[25 44[{}12 │ │ │ │ 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 │ │ │ │ @@ -4208,17 +4214,17 @@ │ │ │ │ (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 1177 4 v │ │ │ │ -1359 w Fj(Chv)29 b Fe(:)41 b Fd(DRAFT)30 b Fe(Jan)m(uary)g(6,)h(2026)p │ │ │ │ -2724 100 V 0 399 a Fc(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fl(2)p 136 100 1154 4 v │ │ │ │ +1336 w Fj(Chv)29 b Fe(:)41 b Fd(DRAFT)30 b Fe(Jan)m(uary)g(10,)i(2026)p │ │ │ │ +2746 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 │ │ │ │ @@ -4274,17 +4280,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 1177 4 v 1358 100 a Fj(Chv)30 │ │ │ │ -b Fe(:)40 b Fd(DRAFT)121 b Fe(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2676 100 V 1177 w Fl(3)111 399 y(3.)46 b Fj(void)h │ │ │ │ +TeXDict begin 3 2 bop 91 100 1154 4 v 1335 100 a Fj(Chv)30 │ │ │ │ +b Fe(:)41 b Fd(DRAFT)121 b Fe(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2699 100 V 1154 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 │ │ │ │ @@ -4345,17 +4351,17 @@ │ │ │ │ 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 1177 4 v │ │ │ │ -1359 w Fj(Chv)29 b Fe(:)41 b Fd(DRAFT)30 b Fe(Jan)m(uary)g(6,)h(2026)p │ │ │ │ -2724 100 V 227 399 a Fg(Note:)52 b Fl(this)36 b(metho)s(d)g(w)m(as)g │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fl(4)p 136 100 1154 4 v │ │ │ │ +1336 w Fj(Chv)29 b Fe(:)41 b Fd(DRAFT)30 b Fe(Jan)m(uary)g(10,)i(2026)p │ │ │ │ +2746 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 │ │ │ │ ├── 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 January 6, 2026 │ │ │ │ │ + 2 Chv : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 3 │ │ │ │ │ + Chv : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 4 Chv : DRAFT January 10, 2026 │ │ │ │ │ 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 2026.01.06:2034 │ │ │ │ +%DVIPSSource: TeX output 2026.01.10:0513 │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ %! │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ @@ -1014,14 +1014,15 @@ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ /UnderlineThickness 50 def │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ +dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ dup 54 /six put │ │ │ │ dup 58 /colon put │ │ │ │ dup 74 /J put │ │ │ │ dup 97 /a put │ │ │ │ dup 110 /n put │ │ │ │ dup 114 /r put │ │ │ │ @@ -1211,79 +1212,84 @@ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB88440048702D1F │ │ │ │ -77994EE04EC3B4531D6E1888C86A8F0DA6CF1F056F16AB0DD76C862830F89DA4 │ │ │ │ -28923B3AA543E0D6E41D3BD283E600BC11F889315EE92C675C109C81065ED1BC │ │ │ │ -82A5583D1B723D50051B0557A367887F5B263014C6E77288B4883C50889473D3 │ │ │ │ -3787BAD4BEB88BD1353AFA5B73E61814819537E7FF09F53EF94792BB3DD36ED0 │ │ │ │ -002D0E7A6CDAB85A9C17AF5664BCB5A71663B861880F3ECCABC8E7A2FC81A4CC │ │ │ │ -AE7A87503FDC1CE0077BA51ECC7B43B60793FED8E9AAD5BBD03ADD6183DCD26D │ │ │ │ -24A74163611C05562437644EF9B8889FD4F9D311911204FEFD35237486F2D2D0 │ │ │ │ -B6783A03BF12EA6D19D6D0F87E4D08515F12F9CBF1961CAA71E0D69FE3C4C4D2 │ │ │ │ -7C7FB64ED24F8684C8F00C2BEDEA53EA390CDC0B5BEBD7DD982580B2EA1F1F89 │ │ │ │ -CFED5916630DC2BA32BB9180277E1ABC339B3B7DE086717BD93F7FF3681BA5B3 │ │ │ │ -FCF671C4B293C2DE4A322F0AA3323A4934444C69F23EF90120B8755482757759 │ │ │ │ -C457A435FB8BB4922BD92C5F3D9555D978275C510183E29DFF2FCE4ABBFC18DE │ │ │ │ -76CAD3B486BA12047DD808CD4D521A0FD368E4AE79DE262630983A5D6F0B679D │ │ │ │ -2F005306393C520E1B6987302D029939D94B0178DB06211C7F3B123A41E6E7BA │ │ │ │ -87164737110707A3ED3983895F3FBC815EF370F54C808ED93D910937BCA3D8AF │ │ │ │ -7CBF80DC180CDA54059DB76710B4FCD4139D5B7DA7DB1A0D0AF86AD2453D3691 │ │ │ │ -0BA5BAD40FF28BB4235FCD40FC87C2B888E67928D9B0ACA5692149373DBB93BF │ │ │ │ -6520DDD36A9BFE4D415CA67A5E04F1D48BDB28C69676273ED842CF7980E8E17C │ │ │ │ -B88563F407E340AFAE8F51AABCF8A39521BCEE1EC8396D75E124B24B4675909F │ │ │ │ -E246F87DA08584A3173AEFF153ECDF610543FA7474D125A31ADD6285A49222B5 │ │ │ │ -177066EA395BFA4B1114C7FCF7712DA772A21C99E64F4E1181E69CAF98137FA2 │ │ │ │ -76CF74F682B8CD7BA6EEA79B70FA8A76809634517F8415B6F21A5A7D6099B5E8 │ │ │ │ -EAB356BBC4FB68C72B8C61DDCE8EAB1A53B9D6BAD78584B307EFF57CEAE74884 │ │ │ │ -35987BF89E9E60E962D22FA5612F2DB5EB840499B7CC11A34BA5DEE30D277540 │ │ │ │ -39B8211D69B448ADE95B723F8369A631DE6DD75703AFD7485FB7FFF41A60CBE4 │ │ │ │ -813B8FEA120662355773830EF85015E7FFD609B2CEE52CB5FFE9C35B6BEEE4A4 │ │ │ │ -A66719E31CE1523FDD7771FB1E881A32A7DB7D92C2326DF4B93241C14ABFCCD6 │ │ │ │ -8E5BCAC61E800E6B1B4687ADA4CBF41EC0AFC26D021D1772CBDCD0516DF5EBE1 │ │ │ │ -37FD2AC5ABB8D774B5735940F1F6866D044FD8CE74444FAA5D0202C11E39CC10 │ │ │ │ -213731F41F704450E1D0565013BF22188442CE0FC256190A9F92F0C802AA2660 │ │ │ │ -614AFE9E9C82F8CD2E6035EEF84E5F16CBB690AC819B4B910EA8E81106F0ACE5 │ │ │ │ -CDFE77DAF69E4AFE72C43145A3ABCC40B6C5297487083F738C86422277AC2267 │ │ │ │ -51759F1B7F129E87DE16433B664AD0FB6D30424A11C70B52B591352BF653C8B0 │ │ │ │ -0840C224FBFEAA996A6BE1D69414DD778C2EF56A63B64D59BA412EC3E4000831 │ │ │ │ -73361FB9813F9A7C74BA3A50D331B07B61492E5D75F0861B530587269B3ADC90 │ │ │ │ -EA1DF586AC4BC57C3230893EFE953A6E76950ABA895FAC711D3BD330ABC6846A │ │ │ │ -C91F6ABF3410B913DFE5C8266020CEE5C7A9EDA2E7D9BCA797DC486443C7BA7C │ │ │ │ -7E03439A40927FA3251B6D417E5653E7799E9D6F04149C34096E2CA9B1F9B1EC │ │ │ │ -38958A2521B4A657A8B9F16E1FD66C7E345A10D7AA0241559503D214AC6507A4 │ │ │ │ -CBDE8617AA7ED136577734428594487F3565BF45FA196375759E2FE23C26EC8A │ │ │ │ -3310A36917A5E2F260EAB31030F8E570303D36B833626938F56939849DFA1F3F │ │ │ │ -66D0A317BB6364427F1512AAB380B555611C76345C02C3A6FBF78590331D5ECA │ │ │ │ -029DEFB722F6AB05327C2A31AB7BD6ED0F0386E6F45C1278048D22B90B074CCB │ │ │ │ -2BBEBCC1927C97EC532E651CAF0058AFE8FC08F00F0216D5DD9830C294FF76DA │ │ │ │ -426A073B3A3AEEFBDEE71C5182186311607ECDBD1F1AF4C5E79748CD01445C8D │ │ │ │ -25DD49490C8A6810065908222C8D0AC9F83AFBEE7115023E2D2615A170A5D40A │ │ │ │ -AD49BDF59A59187B6434F83E68EED22EF4EFDBADED6F1559AC779E0377FE7375 │ │ │ │ -D7060584FE74B1859D0FD98772253A712B17FFBB467840C484F5EF82C5677ADB │ │ │ │ -EDF159A456A526B8B9F6E8FC7608DFD47B0F09E26118F79CBE53B6C4E32BACAB │ │ │ │ -D62AFD4AA527CC4B587BB41A17A9BCE106A8C592BC9B73422B712C466C284A17 │ │ │ │ -E8D0C1E01D43C739FB1C083AD2714F78AC785B0C09AA7E67417A73510E00F2FE │ │ │ │ -E3D3EBF626A2F3A20A386E3F98D1285F4A2A332FC609CD191F01F128627B3505 │ │ │ │ -0AC2387DC0AD1B950490EBB5045F22BEC54955402CE2D267B6754E7C32BE84E8 │ │ │ │ -E6B63E3D3EAEE979442D167AEF69C27B22A8E887A2510C3A168D95D285CF7515 │ │ │ │ -011C921679B2F386575826A3F2071D015EEB78F02A4F94D4E5F07873623200F8 │ │ │ │ -7DF95BA0DC6B6D31DECC925BEA1E6A7C52FE685800EC33CBAE830F1AE5454DFA │ │ │ │ -913B8F457D7E2D3DFF019869E3301EEEC64A38295DE6B588E776922B32362382 │ │ │ │ -D1CF3D058613C8A96E6994D3EC23E8B71EC6E718383B20BB6C22DB6F93FA559F │ │ │ │ -3449CA84EB33B25C8BE0DFD1C29DC4FBD7AFBDC96C12162CAAB2C5E354B0FB10 │ │ │ │ -4BF8CC3610875ABD5111D09F2F847822118972214EDEB9EE34BAFE45E7AC15C5 │ │ │ │ -CA63EC4A3CEEA505A5EDD88A59BB67C71C3E026DFFE177F99BC69E6635545D03 │ │ │ │ -77A634F98230EF64381EC67CA519D4B9770EFA844789E21970F89D5FFC5DEAA8 │ │ │ │ -DC008EBA09306967ED090FF91B002FA6120C2B461A87AA32EFB003C5578D8EEF │ │ │ │ - │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ +AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ +E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ +46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ +FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ +389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ +7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ +2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ +C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ +B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ +AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ +E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ +F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ +0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ +2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ +29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ +CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ +6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ +5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ +36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0DD96AB602D004DCFE000A0 │ │ │ │ +ABE41BAB8AB7D50BD32BFD6F1AA3B60B09B9BE4E273EDD2DDCB21A98A760D17D │ │ │ │ +0A5C9303AFE63CF80A93E60C72A0576FAADEECBE2DE91892D210EB0AD1889C04 │ │ │ │ +C7530652584E775B4ED19CFB4B8DBCCC57A9FA9E4DDC8A1E5A1D3BE9E93407A6 │ │ │ │ +2C237ACE27F4EDA330EE952EDCBE91683AA98A29197735006666C96A2CE7C787 │ │ │ │ +BBA5A57C4DBF6FAA5B38AF226B5D9A65FAD84650AC0C3DB29C30602699F81E01 │ │ │ │ +0BAF8F1CE44A03C680121B77A1703C638187675D6C22C49F9902475E6CE9C732 │ │ │ │ +48ED028CC92EA542EF189CC9CA1C384E3387793057615D0A2BF040CC90B275B9 │ │ │ │ +F70A5310874DC2E0A360373E7BCAC88250FBC8989C7D18DA8274C06F02FCF31C │ │ │ │ +2B3868CBAF083DAC2FB159DE368261842DB7C9EA1A86B17617C861A48FBA8FF9 │ │ │ │ +D184CB026F4A418C0955347612F94C039B1536A76CB182A591DD7C02D509CF16 │ │ │ │ +8B9E46502ABF5DE31F5DFBD19C7417A2AF7AF13F0D5FF837C94CE56F07B96337 │ │ │ │ +0ED215252346FAEB54B5F3ABE29709B7ECB9FBD23A4AD397E6ABA6938F1BBF33 │ │ │ │ +1D5460D9414F0B8725DA832744525C13E3FD9C8DB33FBEE12F9C4969988402C8 │ │ │ │ +96AF916364CC2DF17EDBA622FC0A5D0013418E29F912FFA06F8D7E31ECAB0B08 │ │ │ │ +C4D2D8EE537CC768FC9038DD6D86D33642C6E812E941F157FC6917AF19C2B99A │ │ │ │ +5BF10B9A7ECF711BBB6F33C8C3DAD778153122593F36ABDDC0E97A602B045DE6 │ │ │ │ +19BD82D877DDA960AB11EF48C7F75A28D0D731D4A5DBC98283087267CD1A470D │ │ │ │ +537E949DA5EECF097B099547995BE066A941CED683B5748962AD2B02C21636C0 │ │ │ │ +2EAFA33CA0CB3BF8A95703F015A210D918865B9BEA2890DCFB68BC3719C305EC │ │ │ │ +315EC8727BF9A93632AB9E3090B100C022EE1396CD329B37547F26A7DCE52BD7 │ │ │ │ +F91B7388DEC34F4A0C6D46CD7CA6ACC00C5C4C71E47C6AD96496B3CBF531F342 │ │ │ │ +A740EE6B99BD70AD490DFA700772A0697EC6561CE88A0113E4DC3B21F372D810 │ │ │ │ +DFF2C3F6EDF3E917BF2664EEFC9AD292DD6CC36853CF936018D43FDB28D5B001 │ │ │ │ +7D1C805F958F13FD221377ABDD69D102E8CC1DAB2E011EE16CF6DB9D195BA702 │ │ │ │ +5A8738FABF989B0351282D0E5121182DFC52169782A5F3DD5D820411BEF909DE │ │ │ │ +04D963E6FDA76F88508C4E91DDAAA1748F396A1D380D8CA429673AF27C164434 │ │ │ │ +771781B39565D3EE50F3CF03EF12908B13A6C11C9AB7631B32125828B13050BA │ │ │ │ +041A93B97AC32D4A1E28C5FA98CDEE998B5F97823D6291D01E3611A16854F1FE │ │ │ │ +69B9D6D2AE3E56D012B7BC3E582FB4C23188A5E365E65EB1F804A706AF73A2F8 │ │ │ │ +9804808EF71F0982B14133BF9A27D6F2E719BDB751022B1B052722933948904E │ │ │ │ +3582E363478DCDA115205A0FDE39DF71FEAEEB104419C35A6B0678C19616C6D9 │ │ │ │ +A892DC2F4257069AF096C80C099CD13024DF3995F28C694E00D1F08B43D4450C │ │ │ │ +D18F5C925CFD2D124E74FC64BBAA0DE32A79E4A4507B5B5DD834C67160CDA110 │ │ │ │ +EF0061DD27E8864F4250A92BBEFD75C784BB98F4FA789A8236C2A21E4E61ABD0 │ │ │ │ +C6B4D13B3C31AC8E55FA34BEC7C308C61FB0280382EC6AFD63D959678D42D2B3 │ │ │ │ +4134F6236A0808D9302B4E3C6F81FC6973B4833602750CCB5DE36AEA23ED6BD4 │ │ │ │ +5B72DF0DD7B81C871CAA6EC190748CD8C4B998D576E5D340ACAC0617DDBE461C │ │ │ │ +8E82E809D11A01D265D039F4315066832E27E08A6F067E129E45FBF533F761BB │ │ │ │ +EC3C071209BECE7D14D3184B2E6BFD65717A5A7C08F3776B20C513649488C1CF │ │ │ │ +03333805B249D1034FB0AE2D7D2A23324EE27AEDB68F8E329A8052FE58D7C0D9 │ │ │ │ +A40A0CDC79F2085C4F39A7DFDB625C8F071E2A32CF6215DD3E060A9BABF7A3AA │ │ │ │ +C57DA0C0571C5D6EEAA975D1BB9C99F8EA4958360E43E8C60080B03DC4435550 │ │ │ │ +E6048DDD35DF3E5DA69669F266FFD7B44649A68025270DC84258E329F6E6907C │ │ │ │ +BCFF900D715D0C7EC43C5E7180CAD6427BA4FD41AAD6531A5C06B0EC26DDA71F │ │ │ │ +4A9DA50DE919E79226F6DDF7C1BA478936AA86CEAD93072CC2960E98C45A1A0C │ │ │ │ +60CF8A26E4278AB4F9E28FA6532648196CC455607D6BCD00F60675DE8CC02C8C │ │ │ │ +9BE5D5B714731814D5B008EE236563D77AC6895E0158877C95797E07C02AFEBE │ │ │ │ +CC9FE97D5E103F7DB0A834E9A7A75893EC66340B0E4C6F0EEDEF43415BF9FCF4 │ │ │ │ +47340CBEA4DCFBA0D028EB2149FFBBDB3322AE5F6FD20242526EDC55E476D983 │ │ │ │ +DC │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3509,15 +3515,15 @@ │ │ │ │ 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 3[51 │ │ │ │ -12[45 22[47 15[25 3[45 3[45 1[45 3[25 44[{}11 90.9091 │ │ │ │ +12[45 22[47 15[25 3[45 3[45 45 45 3[25 44[{}12 90.9091 │ │ │ │ /CMSL10 rf /Fc 141[62 4[62 7[62 20[62 80[{}4 119.552 │ │ │ │ /CMTT12 rf /Fd 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 │ │ │ │ @@ -3612,17 +3618,17 @@ │ │ │ │ b(to)h(the)g(old-to-new)g(v)m(ector)0 5045 y Fh(1.2)135 │ │ │ │ b(Protot)l(yp)t(es)46 b(and)f(descriptions)g(of)g Fc(Perm)e │ │ │ │ Fh(metho)t(ds)0 5294 y Fj(This)25 b(section)h(con)m(tains)h(brief)e │ │ │ │ (descriptions)h(including)f(protot)m(yp)s(es)h(of)f(all)i(metho)s(ds)d │ │ │ │ (that)j(b)s(elong)e(to)h(the)g Fi(Perm)0 5407 y Fj(ob)5 │ │ │ │ b(ject.)1927 5656 y(1)p eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fj(2)p 136 100 1158 4 v │ │ │ │ -1340 w Fi(PERM)29 b Fb(:)i Fg(DRAFT)f Fb(Jan)m(uary)g(6,)h(2026)p │ │ │ │ -2742 100 V 0 399 a Fa(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fj(2)p 136 100 1135 4 v │ │ │ │ +1317 w Fi(PERM)29 b Fb(:)i Fg(DRAFT)f Fb(Jan)m(uary)g(10,)h(2026)p │ │ │ │ +2765 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) │ │ │ │ @@ -3677,17 +3683,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 1158 4 v 1339 100 a Fi(PERM)30 │ │ │ │ -b Fb(:)g Fg(DRAFT)121 b Fb(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2695 100 V 1158 w Fj(3)111 399 y(2.)46 b Fi(int)h(Perm_checkPerm)d(\()k │ │ │ │ +TeXDict begin 3 2 bop 91 100 1135 4 v 1317 100 a Fi(PERM)29 │ │ │ │ +b Fb(:)h Fg(DRAFT)121 b Fb(Jan)m(uary)30 b(10,)i(2026)p │ │ │ │ +2718 100 V 1135 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 │ │ │ │ @@ -3747,17 +3753,17 @@ │ │ │ │ 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 1158 4 v │ │ │ │ -1340 w Fi(PERM)29 b Fb(:)i Fg(DRAFT)f Fb(Jan)m(uary)g(6,)h(2026)p │ │ │ │ -2742 100 V 111 399 a Fj(1.)46 b Fi(int)h(Perm_readFromFile)c(\()48 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fj(4)p 136 100 1135 4 v │ │ │ │ +1317 w Fi(PERM)29 b Fb(:)i Fg(DRAFT)f Fb(Jan)m(uary)g(10,)h(2026)p │ │ │ │ +2765 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 │ │ │ │ @@ -3837,17 +3843,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 1158 4 v 1339 100 a Fi(PERM)30 │ │ │ │ -b Fb(:)g Fg(DRAFT)121 b Fb(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2695 100 V 1158 w Fj(5)111 399 y(8.)46 b Fi(int)h(Perm_writeStats)d(\() │ │ │ │ +TeXDict begin 5 4 bop 91 100 1135 4 v 1317 100 a Fi(PERM)29 │ │ │ │ +b Fb(:)h Fg(DRAFT)121 b Fb(Jan)m(uary)30 b(10,)i(2026)p │ │ │ │ +2718 100 V 1135 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 January 6, 2026 │ │ │ │ │ + 2 PERM : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 3 │ │ │ │ │ + PERM : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 4 PERM : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 5 │ │ │ │ │ + PERM : DRAFT January 10, 2026 5 │ │ │ │ │ 8. int Perm_writeStats ( Perm *perm, FILE *fp ) ; │ │ │ │ │ This method writes out a header and statistics to a file. The value 1 is returned. │ │ │ │ │ Error checking: If perm or fp are NULL, an error message is printed and zero is returned. │ │ │ │ │ Index │ │ │ │ │ Perm checkPerm(), 4 │ │ │ │ │ Perm clearData(), 3 │ │ │ │ │ Perm compress(), 4 │ │ ├── ./usr/share/doc/spooles-doc/ReferenceManual.ps.gz │ │ │ ├── ReferenceManual.ps │ │ │ │ @@ -12,15 +12,15 @@ │ │ │ │ %%EndComments │ │ │ │ %%BeginDefaults │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ %%EndDefaults │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o ReferenceManual.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2026.01.06:2033 │ │ │ │ +%DVIPSSource: TeX output 2026.01.10:0512 │ │ │ │ %%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 │ │ │ │ @@ -4806,14 +4806,15 @@ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ /UnderlineThickness 50 def │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ +dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ dup 54 /six put │ │ │ │ dup 58 /colon put │ │ │ │ dup 74 /J put │ │ │ │ dup 97 /a put │ │ │ │ dup 110 /n put │ │ │ │ dup 114 /r put │ │ │ │ @@ -5003,79 +5004,84 @@ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB88440048702D1F │ │ │ │ -77994EE04EC3B4531D6E1888C86A8F0DA6CF1F056F16AB0DD76C862830F89DA4 │ │ │ │ -28923B3AA543E0D6E41D3BD283E600BC11F889315EE92C675C109C81065ED1BC │ │ │ │ -82A5583D1B723D50051B0557A367887F5B263014C6E77288B4883C50889473D3 │ │ │ │ -3787BAD4BEB88BD1353AFA5B73E61814819537E7FF09F53EF94792BB3DD36ED0 │ │ │ │ -002D0E7A6CDAB85A9C17AF5664BCB5A71663B861880F3ECCABC8E7A2FC81A4CC │ │ │ │ -AE7A87503FDC1CE0077BA51ECC7B43B60793FED8E9AAD5BBD03ADD6183DCD26D │ │ │ │ -24A74163611C05562437644EF9B8889FD4F9D311911204FEFD35237486F2D2D0 │ │ │ │ -B6783A03BF12EA6D19D6D0F87E4D08515F12F9CBF1961CAA71E0D69FE3C4C4D2 │ │ │ │ -7C7FB64ED24F8684C8F00C2BEDEA53EA390CDC0B5BEBD7DD982580B2EA1F1F89 │ │ │ │ -CFED5916630DC2BA32BB9180277E1ABC339B3B7DE086717BD93F7FF3681BA5B3 │ │ │ │ -FCF671C4B293C2DE4A322F0AA3323A4934444C69F23EF90120B8755482757759 │ │ │ │ -C457A435FB8BB4922BD92C5F3D9555D978275C510183E29DFF2FCE4ABBFC18DE │ │ │ │ -76CAD3B486BA12047DD808CD4D521A0FD368E4AE79DE262630983A5D6F0B679D │ │ │ │ -2F005306393C520E1B6987302D029939D94B0178DB06211C7F3B123A41E6E7BA │ │ │ │ -87164737110707A3ED3983895F3FBC815EF370F54C808ED93D910937BCA3D8AF │ │ │ │ -7CBF80DC180CDA54059DB76710B4FCD4139D5B7DA7DB1A0D0AF86AD2453D3691 │ │ │ │ -0BA5BAD40FF28BB4235FCD40FC87C2B888E67928D9B0ACA5692149373DBB93BF │ │ │ │ -6520DDD36A9BFE4D415CA67A5E04F1D48BDB28C69676273ED842CF7980E8E17C │ │ │ │ -B88563F407E340AFAE8F51AABCF8A39521BCEE1EC8396D75E124B24B4675909F │ │ │ │ -E246F87DA08584A3173AEFF153ECDF610543FA7474D125A31ADD6285A49222B5 │ │ │ │ -177066EA395BFA4B1114C7FCF7712DA772A21C99E64F4E1181E69CAF98137FA2 │ │ │ │ -76CF74F682B8CD7BA6EEA79B70FA8A76809634517F8415B6F21A5A7D6099B5E8 │ │ │ │ -EAB356BBC4FB68C72B8C61DDCE8EAB1A53B9D6BAD78584B307EFF57CEAE74884 │ │ │ │ -35987BF89E9E60E962D22FA5612F2DB5EB840499B7CC11A34BA5DEE30D277540 │ │ │ │ -39B8211D69B448ADE95B723F8369A631DE6DD75703AFD7485FB7FFF41A60CBE4 │ │ │ │ -813B8FEA120662355773830EF85015E7FFD609B2CEE52CB5FFE9C35B6BEEE4A4 │ │ │ │ -A66719E31CE1523FDD7771FB1E881A32A7DB7D92C2326DF4B93241C14ABFCCD6 │ │ │ │ -8E5BCAC61E800E6B1B4687ADA4CBF41EC0AFC26D021D1772CBDCD0516DF5EBE1 │ │ │ │ -37FD2AC5ABB8D774B5735940F1F6866D044FD8CE74444FAA5D0202C11E39CC10 │ │ │ │ -213731F41F704450E1D0565013BF22188442CE0FC256190A9F92F0C802AA2660 │ │ │ │ -614AFE9E9C82F8CD2E6035EEF84E5F16CBB690AC819B4B910EA8E81106F0ACE5 │ │ │ │ -CDFE77DAF69E4AFE72C43145A3ABCC40B6C5297487083F738C86422277AC2267 │ │ │ │ -51759F1B7F129E87DE16433B664AD0FB6D30424A11C70B52B591352BF653C8B0 │ │ │ │ -0840C224FBFEAA996A6BE1D69414DD778C2EF56A63B64D59BA412EC3E4000831 │ │ │ │ -73361FB9813F9A7C74BA3A50D331B07B61492E5D75F0861B530587269B3ADC90 │ │ │ │ -EA1DF586AC4BC57C3230893EFE953A6E76950ABA895FAC711D3BD330ABC6846A │ │ │ │ -C91F6ABF3410B913DFE5C8266020CEE5C7A9EDA2E7D9BCA797DC486443C7BA7C │ │ │ │ -7E03439A40927FA3251B6D417E5653E7799E9D6F04149C34096E2CA9B1F9B1EC │ │ │ │ -38958A2521B4A657A8B9F16E1FD66C7E345A10D7AA0241559503D214AC6507A4 │ │ │ │ -CBDE8617AA7ED136577734428594487F3565BF45FA196375759E2FE23C26EC8A │ │ │ │ -3310A36917A5E2F260EAB31030F8E570303D36B833626938F56939849DFA1F3F │ │ │ │ -66D0A317BB6364427F1512AAB380B555611C76345C02C3A6FBF78590331D5ECA │ │ │ │ -029DEFB722F6AB05327C2A31AB7BD6ED0F0386E6F45C1278048D22B90B074CCB │ │ │ │ -2BBEBCC1927C97EC532E651CAF0058AFE8FC08F00F0216D5DD9830C294FF76DA │ │ │ │ -426A073B3A3AEEFBDEE71C5182186311607ECDBD1F1AF4C5E79748CD01445C8D │ │ │ │ -25DD49490C8A6810065908222C8D0AC9F83AFBEE7115023E2D2615A170A5D40A │ │ │ │ -AD49BDF59A59187B6434F83E68EED22EF4EFDBADED6F1559AC779E0377FE7375 │ │ │ │ -D7060584FE74B1859D0FD98772253A712B17FFBB467840C484F5EF82C5677ADB │ │ │ │ -EDF159A456A526B8B9F6E8FC7608DFD47B0F09E26118F79CBE53B6C4E32BACAB │ │ │ │ -D62AFD4AA527CC4B587BB41A17A9BCE106A8C592BC9B73422B712C466C284A17 │ │ │ │ -E8D0C1E01D43C739FB1C083AD2714F78AC785B0C09AA7E67417A73510E00F2FE │ │ │ │ -E3D3EBF626A2F3A20A386E3F98D1285F4A2A332FC609CD191F01F128627B3505 │ │ │ │ -0AC2387DC0AD1B950490EBB5045F22BEC54955402CE2D267B6754E7C32BE84E8 │ │ │ │ -E6B63E3D3EAEE979442D167AEF69C27B22A8E887A2510C3A168D95D285CF7515 │ │ │ │ -011C921679B2F386575826A3F2071D015EEB78F02A4F94D4E5F07873623200F8 │ │ │ │ -7DF95BA0DC6B6D31DECC925BEA1E6A7C52FE685800EC33CBAE830F1AE5454DFA │ │ │ │ -913B8F457D7E2D3DFF019869E3301EEEC64A38295DE6B588E776922B32362382 │ │ │ │ -D1CF3D058613C8A96E6994D3EC23E8B71EC6E718383B20BB6C22DB6F93FA559F │ │ │ │ -3449CA84EB33B25C8BE0DFD1C29DC4FBD7AFBDC96C12162CAAB2C5E354B0FB10 │ │ │ │ -4BF8CC3610875ABD5111D09F2F847822118972214EDEB9EE34BAFE45E7AC15C5 │ │ │ │ -CA63EC4A3CEEA505A5EDD88A59BB67C71C3E026DFFE177F99BC69E6635545D03 │ │ │ │ -77A634F98230EF64381EC67CA519D4B9770EFA844789E21970F89D5FFC5DEAA8 │ │ │ │ -DC008EBA09306967ED090FF91B002FA6120C2B461A87AA32EFB003C5578D8EEF │ │ │ │ - │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ +AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ +E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ +46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ +FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ +389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ +7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ +2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ +C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ +B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ +AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ +E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ +F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ +0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ +2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ +29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ +CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ +6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ +5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ +36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0DD96AB602D004DCFE000A0 │ │ │ │ +ABE41BAB8AB7D50BD32BFD6F1AA3B60B09B9BE4E273EDD2DDCB21A98A760D17D │ │ │ │ +0A5C9303AFE63CF80A93E60C72A0576FAADEECBE2DE91892D210EB0AD1889C04 │ │ │ │ +C7530652584E775B4ED19CFB4B8DBCCC57A9FA9E4DDC8A1E5A1D3BE9E93407A6 │ │ │ │ +2C237ACE27F4EDA330EE952EDCBE91683AA98A29197735006666C96A2CE7C787 │ │ │ │ +BBA5A57C4DBF6FAA5B38AF226B5D9A65FAD84650AC0C3DB29C30602699F81E01 │ │ │ │ +0BAF8F1CE44A03C680121B77A1703C638187675D6C22C49F9902475E6CE9C732 │ │ │ │ +48ED028CC92EA542EF189CC9CA1C384E3387793057615D0A2BF040CC90B275B9 │ │ │ │ +F70A5310874DC2E0A360373E7BCAC88250FBC8989C7D18DA8274C06F02FCF31C │ │ │ │ +2B3868CBAF083DAC2FB159DE368261842DB7C9EA1A86B17617C861A48FBA8FF9 │ │ │ │ +D184CB026F4A418C0955347612F94C039B1536A76CB182A591DD7C02D509CF16 │ │ │ │ +8B9E46502ABF5DE31F5DFBD19C7417A2AF7AF13F0D5FF837C94CE56F07B96337 │ │ │ │ +0ED215252346FAEB54B5F3ABE29709B7ECB9FBD23A4AD397E6ABA6938F1BBF33 │ │ │ │ +1D5460D9414F0B8725DA832744525C13E3FD9C8DB33FBEE12F9C4969988402C8 │ │ │ │ +96AF916364CC2DF17EDBA622FC0A5D0013418E29F912FFA06F8D7E31ECAB0B08 │ │ │ │ +C4D2D8EE537CC768FC9038DD6D86D33642C6E812E941F157FC6917AF19C2B99A │ │ │ │ +5BF10B9A7ECF711BBB6F33C8C3DAD778153122593F36ABDDC0E97A602B045DE6 │ │ │ │ +19BD82D877DDA960AB11EF48C7F75A28D0D731D4A5DBC98283087267CD1A470D │ │ │ │ +537E949DA5EECF097B099547995BE066A941CED683B5748962AD2B02C21636C0 │ │ │ │ +2EAFA33CA0CB3BF8A95703F015A210D918865B9BEA2890DCFB68BC3719C305EC │ │ │ │ +315EC8727BF9A93632AB9E3090B100C022EE1396CD329B37547F26A7DCE52BD7 │ │ │ │ +F91B7388DEC34F4A0C6D46CD7CA6ACC00C5C4C71E47C6AD96496B3CBF531F342 │ │ │ │ +A740EE6B99BD70AD490DFA700772A0697EC6561CE88A0113E4DC3B21F372D810 │ │ │ │ +DFF2C3F6EDF3E917BF2664EEFC9AD292DD6CC36853CF936018D43FDB28D5B001 │ │ │ │ +7D1C805F958F13FD221377ABDD69D102E8CC1DAB2E011EE16CF6DB9D195BA702 │ │ │ │ +5A8738FABF989B0351282D0E5121182DFC52169782A5F3DD5D820411BEF909DE │ │ │ │ +04D963E6FDA76F88508C4E91DDAAA1748F396A1D380D8CA429673AF27C164434 │ │ │ │ +771781B39565D3EE50F3CF03EF12908B13A6C11C9AB7631B32125828B13050BA │ │ │ │ +041A93B97AC32D4A1E28C5FA98CDEE998B5F97823D6291D01E3611A16854F1FE │ │ │ │ +69B9D6D2AE3E56D012B7BC3E582FB4C23188A5E365E65EB1F804A706AF73A2F8 │ │ │ │ +9804808EF71F0982B14133BF9A27D6F2E719BDB751022B1B052722933948904E │ │ │ │ +3582E363478DCDA115205A0FDE39DF71FEAEEB104419C35A6B0678C19616C6D9 │ │ │ │ +A892DC2F4257069AF096C80C099CD13024DF3995F28C694E00D1F08B43D4450C │ │ │ │ +D18F5C925CFD2D124E74FC64BBAA0DE32A79E4A4507B5B5DD834C67160CDA110 │ │ │ │ +EF0061DD27E8864F4250A92BBEFD75C784BB98F4FA789A8236C2A21E4E61ABD0 │ │ │ │ +C6B4D13B3C31AC8E55FA34BEC7C308C61FB0280382EC6AFD63D959678D42D2B3 │ │ │ │ +4134F6236A0808D9302B4E3C6F81FC6973B4833602750CCB5DE36AEA23ED6BD4 │ │ │ │ +5B72DF0DD7B81C871CAA6EC190748CD8C4B998D576E5D340ACAC0617DDBE461C │ │ │ │ +8E82E809D11A01D265D039F4315066832E27E08A6F067E129E45FBF533F761BB │ │ │ │ +EC3C071209BECE7D14D3184B2E6BFD65717A5A7C08F3776B20C513649488C1CF │ │ │ │ +03333805B249D1034FB0AE2D7D2A23324EE27AEDB68F8E329A8052FE58D7C0D9 │ │ │ │ +A40A0CDC79F2085C4F39A7DFDB625C8F071E2A32CF6215DD3E060A9BABF7A3AA │ │ │ │ +C57DA0C0571C5D6EEAA975D1BB9C99F8EA4958360E43E8C60080B03DC4435550 │ │ │ │ +E6048DDD35DF3E5DA69669F266FFD7B44649A68025270DC84258E329F6E6907C │ │ │ │ +BCFF900D715D0C7EC43C5E7180CAD6427BA4FD41AAD6531A5C06B0EC26DDA71F │ │ │ │ +4A9DA50DE919E79226F6DDF7C1BA478936AA86CEAD93072CC2960E98C45A1A0C │ │ │ │ +60CF8A26E4278AB4F9E28FA6532648196CC455607D6BCD00F60675DE8CC02C8C │ │ │ │ +9BE5D5B714731814D5B008EE236563D77AC6895E0158877C95797E07C02AFEBE │ │ │ │ +CC9FE97D5E103F7DB0A834E9A7A75893EC66340B0E4C6F0EEDEF43415BF9FCF4 │ │ │ │ +47340CBEA4DCFBA0D028EB2149FFBBDB3322AE5F6FD20242526EDC55E476D983 │ │ │ │ +DC │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -10596,14 +10602,15 @@ │ │ │ │ /UnderlineThickness 50 def │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 46 /period put │ │ │ │ dup 48 /zero put │ │ │ │ +dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ dup 54 /six put │ │ │ │ dup 65 /A put │ │ │ │ dup 67 /C put │ │ │ │ dup 68 /D put │ │ │ │ dup 74 /J put │ │ │ │ dup 75 /K put │ │ │ │ @@ -10807,166 +10814,170 @@ │ │ │ │ 34DE10D995ABCAF45FBB3B6B73E80D05F4C51F8C29D4B0F67C8A86432A6C5E86 │ │ │ │ F0126AB25A5CA2875B48C61CB8112A4CF9AA08F8B0157396CF63CBECDB8867CC │ │ │ │ AC10F060630C9BFBAD84B1FF01C814878F0C177F552BDC9BB181B14581C6E968 │ │ │ │ DAAAB2896FCFB745795C4D2C87CC15BAA041EF80C5BDC12EC1F5786BB41A5A21 │ │ │ │ 073EE0BC436B346E014DB4099EDC67BC432E470A4B779FD556341061CA3F2BE8 │ │ │ │ EFA332637AEC878C2BB189CA3267B2BE5B8178E6B7889A33771F86276E6F0B8E │ │ │ │ 8E93B816AC7005575762EF4DE45E2794B7322F9B6D8E634FB8FF250D638EB502 │ │ │ │ -818321B3C46DB51B8EC6C2EF1D05C716519A3BD6B12A67239898F8A011FE7C22 │ │ │ │ -A82DB7DB29D985A16C358F220F5F7427452F7B2EBC4D8214A6A0E8B94AF8DA3D │ │ │ │ -0BEA370810C63973A02358F72CD377813F35E8612F98D9EE77EFF4711A436795 │ │ │ │ -C785965B2AB1DFF9D2FA4E70CA7926FA65B7C55DC5E80393A240F20001E0C966 │ │ │ │ -EB4F25DAA321638FFF04D6FCD9BA6B4A9181AE3CE4ACFECCB964E88A2AEC43D7 │ │ │ │ -CF7B717FFB727CF2309CFC8D501F42951C592005D5D9889B618529F7CD8EA0D1 │ │ │ │ -91CC7AB1F2ADE8D9BAC2F8803FB779468D62BDC73E5A5B4CC4434CC6089D9CC6 │ │ │ │ -8152679D26CA6C147B843EE6D9F7BE69AD5A79F066F1A248E043980B106771F7 │ │ │ │ -026D7F1BA5857E63C71525DD006E80A0AE9F8FB983DEB77196C088D2077D8BF5 │ │ │ │ -E17C5D0C6F795D9048E90B0E47B8E42A03F783364FB82F5C859BDA314E226C34 │ │ │ │ -2A8900BE27424281CBD27FDC56AEEB419E4DF0613720B138AC34483EA86D6D5B │ │ │ │ -26C480B682BA660D04AFBBFC08A66967D8C57FF315B89247F84FF0A7278EE678 │ │ │ │ -2E326BA823EACA579847BC0461B8601D92E3C9F1A69F90C8D835539D08A18ADF │ │ │ │ -5246B9499ADEC580D9AFF5A0D6F89F3AD749FA33F35E2B7DDC8B6DD9F6A49FC9 │ │ │ │ -A5B066D20F1533CA328FBB38D75EE6CE32B83D37D5F7745AE675F24DEEBE14A4 │ │ │ │ -BC90277D706B677E2AE9C3C1669AD4352BC6279DF38D0A9E4D6674FEC17F7FB5 │ │ │ │ -8CA39F7A83172BCC514DD7787A4767839D80E8B8BF369F37039CC146ADDD02C8 │ │ │ │ -A9B91C63DD710782F81BF147ECA2C94B702A1A2B1107FE9C421B1780EE6E5F14 │ │ │ │ -7A0F24DB23F634CE5963395753D83FB03E48FB1908D8979C58BBED5D622FA773 │ │ │ │ -1B61A19798CBF4CB53DDBF064B0F17F3DF07D9CD53816A4297C8E287FF32A121 │ │ │ │ -715D1978E7427A15733171EE6D66AB89F12DC6ECF1C2688D1B3E4098A6C1A20F │ │ │ │ -484C3553274E2E4B52122D63190B4CBD5733EB76E35EB3725E97091D94A0AB14 │ │ │ │ -6589900F4409C61D9E52E3EEF0CEA78CB70B0ECE762FB9ADF141E90D2C60E94F │ │ │ │ -5D1961DA8624E8F6469E99EEA8FF8365EF930C0246720717823FB9D38A414ED8 │ │ │ │ -538EDDA6BD5771AC55C40ECF4D13BDF09B66F7046862D43A79D4F7278054B0E2 │ │ │ │ -F6D36175E32665DFE7F89ED4484303A41BA776D7DD317969E60A6BBDA3D4EBF4 │ │ │ │ -A0498ED705E7C90F03F4484A3242AE382F3A1571DAD2E41F9DBB26719CDF9270 │ │ │ │ -B23ABCBAB6F8CD34F308DEE58294DFD2720D61B9A3C4BBF5A01FF4C2C3937F7F │ │ │ │ -7447F89CB330BFB6D004F0E324B81CC5DA7ED8698B55BE1972D80C2658F2DAB6 │ │ │ │ -811B1027FDA8A6DC1BCE3C82FEB361D2EF78064ECA9B91C49771CA7364EF2F00 │ │ │ │ -2AD6222CEBDA567AD24C91795FF20A131D85089742D2A73697BABBB86C4562E0 │ │ │ │ -206C39DB28DAA9DA7E0208D9A9D6C9C01225D290FC1B2A939B3A79BEA2520CCF │ │ │ │ -AED297A9BF8E41F6DD97DE3AD69E53A61B3D6F0511BF28FD4F6D237DA6921A4E │ │ │ │ -92753791C9BC26665DBC7299B668135C17CCEB28619A829F8EBC84012A4DCCA0 │ │ │ │ -73639CA93BE1270F8CCF3C65ABC402BCBA63B0BCCCD985BA91CCCC5BED1F187A │ │ │ │ -388F5854D58AD7821560D3A4D7AC433D5A53A2FA539D1569B18189B360057DCC │ │ │ │ -07E073B6DE010371F3EF1E9ABD20CD84DA74D61F6348EF213DF782277E1D7B3F │ │ │ │ -AF46CFADAF24268FD47F524222D354CF8C8E11F5F08B830BC94973EC91BA82DE │ │ │ │ -B687B255953E7DEC98E09E6E5995DA5BB90D8F454E0C40AFB173DD296BE318D1 │ │ │ │ -3E90653B01CD575592B1DDA4B0EA983D4684FA07FE3AEF04800FC7C4711C0277 │ │ │ │ -D28D90577E08D41C263792F75316C71151819B7C416451D1093C8E5573002AC8 │ │ │ │ -4D1CD8DDDC1734A6A13236CD09E115A667F645C2212C89C5443BBBE9800B8819 │ │ │ │ -A8AE0DEDB7148F00D2B5757B57A7F549387013E0C25B7F975C9E3915D221775B │ │ │ │ -06665A56F8EBC7C53B004F75B2F423387617222C52796D7934D31B465A3EC7A1 │ │ │ │ -9BE8863CEAC86E8F10153DF35EB8C7122BC17A44A0F716863CC1E5C7AD84DA94 │ │ │ │ -422162850663BAC3D40B5AC402CD7EB484DB67CF38D2461EDC4160118723A7C3 │ │ │ │ -EFA8CA3C9D673D1AD9BAB67F70BA99AF3C684D4433264FF5C4E113DFDD464930 │ │ │ │ -9F3E85693F124A801869816626EE17B9E7C5866CCBF1393721C269A6F14B7E95 │ │ │ │ -FFA939AA5350E59D83D6052283EB04758FE1037522BB88A94D52AA21C15F21BB │ │ │ │ -0A6FB9C41185CFA025C4870E07C4C0BE91777C5BFE8E440157CF762504E21906 │ │ │ │ -FDAF7439CE5201D5C15ADA9CE409AE96CBCCFF1E62830D92D6C9B7170549C985 │ │ │ │ -E9364CEEE4035601EB0166437C40567840BFB7C2DE48BF63CB9552D8B637EC95 │ │ │ │ -0770D7179226E8F8990007BC50396B682DE9F89EC56E6D63DC99F2728F27DB37 │ │ │ │ -2544BE7CFBA53F9AA292793D1EEDBDFDA4EEDA36D4C162C2EE8085E0AB4AB8A8 │ │ │ │ -76049A40CC1CEEC4AB897976AD7E9B8B1E0A7C75BAC495CB71C9FB9A29E71B4E │ │ │ │ -DF821FF576D04FD7999AA66623A93F1E9A64328CEE7A4B655D7692318D03D134 │ │ │ │ -1D72CBDD688C0D9DFEFCDB3E3FC74C14E999EA2C253437A91A719FAF711B18B8 │ │ │ │ -F9AA3C2B0D0EC51E4A8891FD25090A95ECB49249DAF13C812BF06BB673BC0388 │ │ │ │ -374D2E7BBDBAE5C6AACEB6D0DCF35E7854F36BA7833BE712D524C96FE9F8955D │ │ │ │ -06D7154D32F8767C949A6E8BEAD8C2A79547678A95F22EB6AFDBD73F6F1C1248 │ │ │ │ -0BB5923E9F3422918AD837C5DA246B42DE5FD07A19A32C3C4FC98AADA67F7C11 │ │ │ │ -B7B26E0E5B29216F804B70EF3A169C1E14EC74CA6DB90A0E1591377B629175F0 │ │ │ │ -B99F4BC0BBBC3146CF0CF3BCF88A7DC0F918344F64519C8C63622C293DA52601 │ │ │ │ -856D525EAAF8C3B9535EA7DF6B5F69662F9CE564696D3EE47927AA8A007F76D8 │ │ │ │ -1CA7154BBC63BC6837A491B5C10FC34ADB47C0B60FE2D62E8F8D7F1AC12E2473 │ │ │ │ -7477ED675BC449E5C38015ED25CD310FEDA2BCD2C08AFA7BFDD7EC005DB97E2A │ │ │ │ -1876588327754DFBBE0B4EC6E81732EB6B66EA8D52BE12799B098782EFD7094C │ │ │ │ -C2EC3D4FDDB44A7A676FCD8CB68C84EF78EE244CEB09C0D65D09615E22540705 │ │ │ │ -32AF1CE4C5205527350651EEE2BB9667E77407682F549C84A5E9746094FABA8A │ │ │ │ -B528F8AFB4F610DD705CFB6CB77A6817C6973551EEDF51F2655BF10063C880EB │ │ │ │ -F79EBF171404B22D99E99A7FC201620720D9BBD9A303FFB3BCEF4F8FC6A78067 │ │ │ │ -6FE8F9017DA0CCA073362EC1368358DC2410CBF9D1F9CD619A8AEC0BAA6FB72E │ │ │ │ -0803FAF937DC144F716B29EFF083E75788455F016A3A6071B80124AAE24AF77F │ │ │ │ -D0B9D4CA6AB67143538D29199F4F3B770F449BCF2AC5C32D1AE03781F4978435 │ │ │ │ -589E03FD326E6C5E45E6B52FC74AFFDD702D472BA0867A007C057CB1FB95035C │ │ │ │ -C0CA59DD55F11715786B04D5990D37A787F64E6A0F7922E1C60DEDE4AD5AFFAB │ │ │ │ -F23C085D4D7A0E5D95FF113B3155E550619A0CE0421BFF81AE46A742C2DAE93D │ │ │ │ -B20830D87ED250F98A9D54B957A59DBA7050E48EB70A10121BDAC6EC62E38CEE │ │ │ │ -81D9CC44528FF67DC1535CF99D47826892F012D9AA57647194D1AAA6A976D5AF │ │ │ │ -C5F072142E8C4740A487FB00B2409419A0273B5ACAE0F40C0930200FEE0AF872 │ │ │ │ -758DB05982985D7E784B9CA2242C97832A914E891AEBDA9ADEE3C1D505D8247A │ │ │ │ -C481688039014341E7D4C15420B3315222E5262805C8988831443001D5189B2E │ │ │ │ -E4F3D571285E3138543CE4E37A420E32AE584E4CBBCEE2C084D0425C84022BF6 │ │ │ │ -E389239540C73D56AB026AF5207D68FD6F5B086E897B35AEFE4737C81744DE98 │ │ │ │ -27D9DEFF9C3477155AA623AF8975361A2E66A9981EB5545C8B8F156E3B25468A │ │ │ │ -B18816C2857BADBB07B6D0DCD5C785BA9F88070043C0416F063AFE867CDE2766 │ │ │ │ -785B6939FBBE65373F155F59D10187F3A84B7E9BD5D7A0201F9AED64AF7ACBC0 │ │ │ │ -F4B2D688FAAF391ACB8A1DB974455351E97FF3548C807356F3787279795F5FB8 │ │ │ │ -14CAE054A1F8BD21385635F272014DAFF1B6275EAFC98B90C1A361C1EFF25E6C │ │ │ │ -A53F1BC0AF68822B20520C2B246A02BB815175F9ECFEF50915AD6D435B9FA974 │ │ │ │ -D172A2FF4483AF67AA7004764A43168DAD46FA48CF0704D89A3973BC48BDE02B │ │ │ │ -A59312495B79682220859C957D0B2D1DDE6018EA31BAFCAAD320FB300D0900AE │ │ │ │ -4081776998F1E4771B326E99A8B86AC8A42513D2D4E697CDC94488F310E622B6 │ │ │ │ -6EDFD46006D3ECB9A8D71A47DAA45D19B913653ADE8DC541E33BFE0B91936A6E │ │ │ │ -3F1D3D46EF84B299C93935F675BB708B47E4AA7C3D63B653D7C5CD8699840A72 │ │ │ │ -555A829590C34BD4830A8FDF576974B06B316380ED16F9FDFD142C2CCE7BCE57 │ │ │ │ -E7D1E1B407FF2807FE60EC89CFFF67A89209266C8A4C3F56DAACC5D6D55FB1E2 │ │ │ │ -E869EE9B2034BD3819A2C8B0C158FF7EA83314429DFB7D4EB2D7AD73726DD6ED │ │ │ │ -DEEC0F2EBBB1972248F0E41CE9702BE0924C40365AA1148C670C081B2F25E391 │ │ │ │ -EC55D6F32C4794AD061080BF094F8A22A8DD923A64F305A6A049FD13099C9F5F │ │ │ │ -5BF60B9F0F28FB4CEAB83A6E2A48C7DCB44C0C4395592EE3B1CEB37E7A66CC0E │ │ │ │ -70DFBC04C75ECAF24EE652AA14AB3B5BBD7FF123C6C3CE0AABE45DD5A1516DB4 │ │ │ │ -D9C37668FF0E1F2D04E2790D48F085FBF50AF7CF2DB22CC535B2707AF53A01AA │ │ │ │ -052B6136CAD3095FDDB90CB176AF9D5443E00D8DB23E2EFAFA6DCB259F9B22A6 │ │ │ │ -5D64BD393907A75B1D736BB75DC74FE0260079B60B85D1773A3B0FBC1E04E923 │ │ │ │ -CFEC323077A6C88F01CCDE42398A8BC949E61DEC79CD8F34872BFBFD6FE84479 │ │ │ │ -32BEB1F05DAF64257E44CF3A25655DA5DFA9D8CBBC7E53F4604624C9291A758B │ │ │ │ -F6F1FC0514D21A877A0D7DAD85F1B7E8557F0ECD01C9A568FFAECAB30ED63690 │ │ │ │ -D404ED81D3721F1EBCEF1609D87D8554673250CEDA302EFA766CBA22D42D851C │ │ │ │ -1847B5E4DAF30A3B82F8978CDB930A9E10E7B8ED5A5E55FB0A777FE06D9AB3AA │ │ │ │ -EBC617C3E45869CEFE1FDFC27CDAEDACC40A00C10F03A5C88BE0595858B8B1E0 │ │ │ │ -C6884FC6561AB60A56B673FB7CAE439E1C67D0673316951EF0EC6A1A3AE9E890 │ │ │ │ -EC3463188980F9C638BE571625217FE059D4FAC54C1ABE7AD98C4B5D1F3CBC05 │ │ │ │ -E8DEB2E9C042D816A9B16DA9BBE8CD59E06015C5C4B3B04A334FDD8939FDDA77 │ │ │ │ -5C85CE4838CA2110B8ABE4703AB89424DD50B27FB0235353C0441B779F642785 │ │ │ │ -9EE003545832A26F9418DFAF46F5AA8D272F32048F966EE7E88E3C87C1EF64CB │ │ │ │ -9287C991143DA39B02A42AB6A407063BE390B493C60F09B6A5AA9EA029F95B82 │ │ │ │ -235AB1B160C979B912CF4C73A3F736DC5F3644054E1D435BDDD2A0AF83AC7BA2 │ │ │ │ -4C72444DE86F665E9DAE93E2CA29BFFF1E0190AB10030BCE0682978387E988E9 │ │ │ │ -80873C095B5117521F185F511F3CCF44BCBAFED64C26A3FB01955AAD99906026 │ │ │ │ -65B8766E7C20D39A4B6E669277150AA48A116B0BEC0AA5C757070625377D02B5 │ │ │ │ -B92E29B23DD6A9E4FFCAC291F47E0662233C2472EF57C5F55C13F19FC85E6756 │ │ │ │ -1B3C731E64A174AC11A08DA19746FA9F32FF8E736E8201265AB1537B87DCBBFE │ │ │ │ -83564631ED67187D8D4161C85047CE110B86310F2763D1779E9ABE9F2EB00290 │ │ │ │ -DC133B85B428C04EB5CC2A25E06EB7E6367D9DC8428D89A304D0B19C25DA569C │ │ │ │ -65187B5E3D58338594BC0E882C8B4695AAA8600EDD01676A7A850DF662050EA3 │ │ │ │ -B0CBC9DA74EA2424AAE30BE4E11F00D2F452053E16E02AD7808682EADBBB4540 │ │ │ │ -338671B06B2783F07C033FB57CF2B117D6A574662141D84876292F2E54142413 │ │ │ │ -1363FF5AD8975A326C5D846F2E9EC0646B9BA83A4A45A2B4658103272511C99F │ │ │ │ -3DD10FE8B7756E89653DCAE45CEF6D62C6A640170419E62D6B8B22BE47A75355 │ │ │ │ -3A4929CAFA07696E9C8B3476B53458030CE7F67790DB57A9BCE929AD26AE0F1E │ │ │ │ -2E0FFEC2A9EA51A2753A9A760A13DB22097AF5BD0BF85186CDB14E9122046164 │ │ │ │ -D814CF3647225713B34F9B858B8660E4EA50E8E248F3FF76420F0D5D2901BEF9 │ │ │ │ -36A3BDC6A8DE84C47BDB551EF29D5A0541C3A45221CD343061FF5C9DCCFF1750 │ │ │ │ -2454C28546040E8AD491A3B3E4B5AAB952DBDA16B59539447020577DAF6820FF │ │ │ │ -6473F3760BFBA625112F42E63BE84EAA60FFD41D2B598B2EFCF4F91D17705ADA │ │ │ │ -75B65F91B49B95C458C1C091199BFE4D54860DA606F808DCE921D1E51FBF460B │ │ │ │ -0B8239531B6A7F92D1C5EE4B3F3547FAF04CA166E1BB1F93BBA415A218CE5281 │ │ │ │ -E84086358530775B93CFE221562F0A235FBC7D1C4D82EC1B832E0FED7E1DE865 │ │ │ │ -F0275CCEC787A6BC5BF30F0950E16920903F4FAE593209AECEF741103958DCC8 │ │ │ │ -2220548C9578334B25E8C2F483B5EB233AF0E5CE54686DC9D219D967CF00969C │ │ │ │ -51A4EDCC6CFBF89EE11085A4C13B1FDD6BA126C8406DA85CA0B7C26E686FA693 │ │ │ │ -8D7DE3EBD02219174ABA42CC557A33445DBE669729C51FC620D44856C55C549F │ │ │ │ -850E1B10797EF1C1BF060361D6C341D440168B99D93FABC486C571800E6BD6AB │ │ │ │ -0F2433C78450CFCF7BAF455D2B1FE45F980FCC696BBB0E6E376C0FF12D53B385 │ │ │ │ -1621DBEA8F479F78AF6AB2181190D0A242BE90EF88E0D67D46326D5C38A0980D │ │ │ │ -EC4E5F635C6B1F70989010FB4B121CC6C73259365C7241DD85049394639202CF │ │ │ │ -7F37883E98A9C94A9CF56E50D27A34C4539BB511CD89F229822CBBA9002FD899 │ │ │ │ -90FBC2648DBBB48A3DFFCCFB7A39C7BDFFA721DB7D7485060D633356F66F749C │ │ │ │ -9C7DA5F0B8E0759D57C6C215CAAADDAF74151810BEC5C154CC3740BD38DF8E0C │ │ │ │ -01A93CE53E04A7095301DCD960037D8CD2F287E3D38BDE6533572539C228E09D │ │ │ │ -0110114C3A2E5F782B984180696A482EAC644B383B846E │ │ │ │ +818321B3C46DB51B8EC6C2EF1D05C716519A3BD6B12A67239898F8A010C9258E │ │ │ │ +257B321D3A56C6FE2FAF27428C1A145DEC92EA10BCEBA709F5B7695B2F355214 │ │ │ │ +37AA600A1F9A41EBF82A27040A4D8D3F13CAA15E5A7A95BCA716841538940438 │ │ │ │ +7F6D11A550DD9BF4022018C02A1D461219E0AC394ECCB098085246EA35555D8A │ │ │ │ +1F3B4E349CD2D5A79A91D9736CE08EDEE4AE45A6A69E11DFCF84E55DC5CE9FD0 │ │ │ │ +F6B1A6A7CE4922214BC54626C9F7EBCDFC11A1E803E8EC68A11E61AF16CE3CBF │ │ │ │ +94872F120BEF7BA4D3748ACA6B3F7610EAE5D51CA82F4BCCF00D9A858CFC7D34 │ │ │ │ +3A7FDA08B917FC612A24DB981FAA5D04A850FACC15AFD3C2B26568F9F24FB220 │ │ │ │ +35A72D4B4EA59EDB47D5E9F367B8736F6D44C22FD8BA12E0CE444E054A90E7A5 │ │ │ │ +B3800ED2151A7323E8DC7E0AC665CCF4FB2E493ED419DFCD6512295863BF6420 │ │ │ │ +603AFDBB1549DCBB90E415A7F8833E0E15EF74AFD24962AE4630C8113D8CC51C │ │ │ │ +5498E9B93E1F00B8B4B0038D5934B0B62A2835FF7C6825B4EF955F65A05B5DE0 │ │ │ │ +0FD231967AEF5E1D41A836820FD0554C5C298CC63DFC776D34571C1DDA0E323F │ │ │ │ +EAE4AAB657F37138E6D65FFEA8CA8DA750FAB32B890A7D9CB9A10B3BC4218438 │ │ │ │ +B929D3AF76AD098EF3CD6C33E0FFE5F4AF4B4ED5280514C122FEAFB0975DCE4F │ │ │ │ +86DB1D89B4F076676C82A83FD2347A6BBBA2831A04BAC09FFB09F4BE4827886B │ │ │ │ +4B19B4475D107259F34C2EADE01FAAEF9A6CEBF916B858BB25B5AD26AAB48F88 │ │ │ │ +86F8A9535215F5ED7F9A0E5B3DB599D028F16257EA6C2C9A8FB35C060A3D3427 │ │ │ │ +60DDEEA769D7B70B8A3AEE2C1FC49F5F762A55D0F9A25BA978025E27A84C3A9F │ │ │ │ +855761F506B5D4FB70E391C6B407F0CBD964BD43FCECD57EFC80A65359420829 │ │ │ │ +9E10376EF43CE66641B9C290205017754BECDABA671AE537CC81531F526EE267 │ │ │ │ +EFEDC837BD62599FEBB66316E6FF7BD13DB16D70706974501EA4A63E7A567B59 │ │ │ │ +9495C669D72A9EC64BF855996E7B373EB6054D0569D818D5808E45DE4C411CF6 │ │ │ │ +EFE28B06EF5ABA56A122741F7253647BBDEDD9FE815B1E157108A4CBDC585135 │ │ │ │ +DD2C1292AC46980563F759F29817F64D979E9D4DC392392EC3619D7F87A51F06 │ │ │ │ +AE28AB62DEEB45853CC45752A7B58F08C9596E59D7057B24584FEA1EF821FDD8 │ │ │ │ +E55D5DDCEF33A643AA617DC3B38D8B9783CFEEE7985D1CBFDADA93CE2B97502D │ │ │ │ +246DDB29B441DB5C441D4183CD1FD772E214D3A14DE01F93D33BC0F0F2BAA6AB │ │ │ │ +683645E7C65C86284005C32EA76A45BEEFCB02B3652AA4657E4BFB2CA813DFA7 │ │ │ │ +08D8D9159B1A8D6949CF853E0C1A620D8AA602EE083DD47E03C10BC5D301FB25 │ │ │ │ +F4331E09376593AF4CE289ED7643B853D3F7AF3774A9CDD6CDBB42484E6F8151 │ │ │ │ +1F29707EC2FCE8FEF521B5CBEAB0B9A9A39F4711E751D769FAABF83DE2CC3DE8 │ │ │ │ +DE9B42C2AC1C8A01DC3CD325CCDC5069AC2805C3874A6782A7D5672C6013CA48 │ │ │ │ +DBC7305190E68E3A3DF04DB79D66AC19C78380EF9C57325B058B28AB0E8DB443 │ │ │ │ +DDEAB7173A1D7F51AFF95F4828F63A7B4C7359C02DE495E3529EBF5C52B00D9C │ │ │ │ +841D7914C562DC006228C63DB75896BCE94A150777C1A6DA01BD8949E741B0B4 │ │ │ │ +CBDB02D6A693FC33E4B18044FDD55F31E41DFBB2DBA4F60C7F48261BD84FB72C │ │ │ │ +DF4FFF567AE78304AE76281AEEBB2277E64979627D1A70288C3C046BED143A9B │ │ │ │ +9680CCC7654501344DEA180460DC8854A90FE906B3549D1FD5C5C23A946D8A85 │ │ │ │ +C64CE77C64CA503ABAFD2CCC1949E2E63F6FB83A57910A1E3EC96065069CF9BC │ │ │ │ +552BBECCCB5690E8EC0660AFA29855A7062BBFA861420E35322B1B8D668D59A3 │ │ │ │ +D06EEB84DAB8605C14AB12E0B954C0FF52922F010574D8864D6728D3C22D0D1D │ │ │ │ +1CCF7D3568596E09D7E817EA611467A6FD5DAF4F393B53CF9359A80DC3965C14 │ │ │ │ +29DA0329332E12AA6A9DEB08C146DC5AB5B8FFE92EE625A01A2415A734B72802 │ │ │ │ +06998E5007C865DE1101F98D9FBFA65AE229135FC2CE50214CA72C5CF5024E58 │ │ │ │ +09D147758B9D48B00454CDF6D1C063EEB1EDD38EE8DAC9D708EBBF30944E8720 │ │ │ │ +DA74AED9CD62486B3D8676B256DE145488C0306CD1702BD35BF12CA755B6237B │ │ │ │ +6E77833187545B790B1B71CD9EDDA153509F4E85D4AE195D4F156CD083B87297 │ │ │ │ +11D453D3415B7794549B6359A009EECB12803E274B70962154029355DE5313A3 │ │ │ │ +60FDB13122FB57600D6A054A74E19570C93CCADCE430F9E09CEA5B938A562049 │ │ │ │ +0CC0CD40057FEF37E62641A94BF222079DC2C407E2CD634A60A527F148073340 │ │ │ │ +137C30490C9052B7700E9EB81126BEE46DD5C6A7F08560427D57BC3E0D37FC06 │ │ │ │ +358DA36850215BA5DD62FBA8640C8F1A83397686DF9358E50B646F6201B0DDFC │ │ │ │ +99F2DA80A9F5255589239FA4152797105B4B5F71AE8546D7ACC76AF6E2F599D5 │ │ │ │ +F21DFE934F6B639DE88289B7DE104BC9D1FD53778AC164498E7EEB80857E424B │ │ │ │ +0CA3807C413ACB1181E07752E58D18EB2EB05ED7800CB70BE08165B1569EC7F0 │ │ │ │ +C776E4709D4C551F94747E9AF35EB79B61C87DB732D27B021E0DE7C86D12C9F0 │ │ │ │ +1E29A153431F116EA92C216EDBAC57306B305BA483BEF67A9932B0476F9B1FCC │ │ │ │ +560FD8CF728297079E360A1F7471BD682AD92753D8630051192687FA4FC17D47 │ │ │ │ +804015BB8F43E4FD7CF372E9F5974BF4F82FD6C99A7B9F12F030836220EE5C23 │ │ │ │ +89F1954D58D6A77FF6CE5E7FAA1C169934E3ADDEC1C63FF5AE5C5096B49F99CC │ │ │ │ +2B515F0B30D0155DB654F71706197FBB70822A821B2D3C76C5006A6D173A0E0F │ │ │ │ +40DA43E91706ADA1B5B75008548A8CE298D5276CBFAB6F9174BA90EF33617156 │ │ │ │ +2CA54D1432C2668C5BB2A4C7733B886EBA14193B412ACC9E2A4FEFB614826F8D │ │ │ │ +FDC024D24D06E9D0154C6252E1901FC465BA76878AD7B159A46628B350815313 │ │ │ │ +7BB08D1168AB5E61FA68E9BC1B49D71E3098D2487A14D235B944954A8FCEB074 │ │ │ │ +3013B2AEA854E77105F2D642EA64B8365F5DCD5CD6E55ECAD5FAA264D2CEADF2 │ │ │ │ +44F10F2AE2EB064E504FD5992AA0919614894F7AC592CA1D3B5D368E3E0F9411 │ │ │ │ +D233B46368592F3D6D7C0989D47E689C56A389D0DB94C1895F9FEF35B2140047 │ │ │ │ +40A0D32786A507AAA76232BC171C379B0C7D74C37634B41331CE10DAE9ECC69D │ │ │ │ +768D1A09C727FEB1598283A9B3FAE55EB67526AC52622FCE94FA54D8C1147751 │ │ │ │ +120B6F4E6D414DE33A437AC7D87C93D26EDEE28363381CF911C1DCE970E89A7B │ │ │ │ +240328540F8BFADF015F08ABE4CFE815B793A001F3E3BC0B4FBF608CBD5A48DA │ │ │ │ +D37E65D13E1EA24BF2979389588A82E1D0EEA4F43CF1A1BC7DCBC9042273F9DB │ │ │ │ +98FDB24D2FF1B3B2095DB5A9AA491A0B3533BDFAD7F1E8A095CFAFFEE1A7F4B6 │ │ │ │ +CC52E3F56BD7087CD9E059D6B73C10BF34473C456ED5826CD7B8509A39AE9CD5 │ │ │ │ +FA084E07EFC061511ECBA5A51122109022C2E57FF3D1A25E346C00B2D1B9C1AD │ │ │ │ +78E92E127CDFA289887471F1EA9B963122A1FE806EB077BBAEDC0F93772A5972 │ │ │ │ +21C3666F877B1F41FFAD11BFF3F8BDE33ADB3DD888E99D29425EBCF12042BB0F │ │ │ │ +6B4058BED0D9FA2ADC162E378B63574213D97AC1B21DE70990C0C993DF04A28D │ │ │ │ +69C2AC59700E3312F9853D0873223DEE543896F7183125A682F4FAA28BA67487 │ │ │ │ +1B48CE61634EA9A4AE68F883D9F85B8106DE77141189F5E91051BAA43DC269AC │ │ │ │ +6A861DA495E244F758868BD6A407CD416BAAEEAB44353AF5B8887045947BAD38 │ │ │ │ +5F54F9E7136AD3449B5F244B6A82EC325BC2A7F23C564CE492F01445224D7668 │ │ │ │ +E8D7E17E442855CF145D1A445B210E08FE2D3D352A5C8A23B17B4C5F1073A77B │ │ │ │ +E3DBD9C1943D88AF90EDF62C109C63F42556614492B88027FBECD9B322EA35EE │ │ │ │ +0E82E90B3AF17AA50A1DA4128009DA42DF9CF998FBB9A863F823DEDAD4B16360 │ │ │ │ +83B3033BC2A0845FC4C6DF3AB1CD78A973FEB96FC4888E9AAAAACAFB65D432AE │ │ │ │ +8C5594FB4B4DD427C5DE0C54A6826377951DE0F5A31FB8FF6570DD3E95B213AB │ │ │ │ +89E4242DA880ED060FA57DCF704DB9A14AA6E782E5A48D442F6F9964B34632AC │ │ │ │ +6381260345756E793AC97FED10306AC70C0C8998BAEE14A8E363107CA5C2CF20 │ │ │ │ +5B747285DA20B008AD683BD1FEE29E8806C05E65D90F8903BF49E98E1C1DA6DB │ │ │ │ +6ECDBC333CB38D33743135C06BE3F37E12D1C2DFA5B6ED6DC3514D9BC83DB8B6 │ │ │ │ +6861DD102ADF3379EFCC524B73658FAD30A2D838939E3A8E1ADDAB8677DCC1D4 │ │ │ │ +7BDE0C7D5C552A2B3514A99D229804C3387D1A798DB71A6CB272D2C34D941613 │ │ │ │ +00A4872C0332004AC8990F91E4E7E8FCB04CEA232908EB1F43E93E2B572793B6 │ │ │ │ +DFD026EB905CF61E88F4F330B65EDE016128F1FC1E2E17FC5A0E8041D1351AA4 │ │ │ │ +AF7604955E553A328F7E270FB412CDFD131B1FA7ABA91591176CE06855188A92 │ │ │ │ +3D1A7B42E6A7AFED12AA03734862C495BD245FD6C43EC48749EEEE9D6C45C913 │ │ │ │ +E77EEA173197DBE3F49127DDD30003C1ACEB3566D0C56394476EC1CD13836374 │ │ │ │ +C068AEA263A301B296AE04530AEB1B4815257C66FABA2A620BF9170B6B26732E │ │ │ │ +5B0980776A87CE69A53B92D4F137A2AFBFD1679A4000A8A085E16941888F7194 │ │ │ │ +302FF18E1C9601BCD1AC9DD88DA85E8C9A6966A373FD6AC8F49D07AA4C8DAE9D │ │ │ │ +53121B8EE7987E41ECF4C944072AB2AFE35FDF96C977DDAD8E1F19B7381492D8 │ │ │ │ +124A8FD3289321991D05E43C9DFBFAB02440D240A52092194FC81BABCB20FF89 │ │ │ │ +36E9BE85D77DD99B892C01989BB96A202BDA827182904AEFCD7557B6FBBA6472 │ │ │ │ +1916E24C11F79803F503E7E4983F49F53225C43E7F0DD10669E99BE30409ECBB │ │ │ │ +D5B341D780166190A06FF7998E9EDA022793AD161EC3FF04E86C9C8AD2B3A63C │ │ │ │ +33C4669CA2542028ED8489003D1C16224377521CB9AF8A8C79E1622EEEFB94DF │ │ │ │ +264F7AB8F26193D4B20FFA982E738ED42F581C60E4CB0EFD2FB18CADDAB1A51E │ │ │ │ +12FD05D033B7BBA19B7E885C8986029BCDDA17AA7090D049816643D763943942 │ │ │ │ +92AB5F710759D6DAC9550B6FDDCCD7917E86A0F9E3CC8A3A19804CBFFFE2351C │ │ │ │ +EE08B5934EF22A08BDD235B0255BB0A7B6C13570B98BC87FA0C187EA6A5C94E6 │ │ │ │ +6327B685B19749967B89E8DCF140A917A154766A20713656702667A7A39EF5AF │ │ │ │ +563FABD8722CAC545052D1D3C01DB11E90E134CD8CF709E3B8194B5D7ED498E1 │ │ │ │ +65F5D8A39626DDED44AA56D115069110858035E27C8E5AE9DD4808B4883CE20A │ │ │ │ +C2667A42278591295444A5951CFCB3EA7658080E71C984DB03CE499BED38F096 │ │ │ │ +0A8757A4E42F93EA12BD1508B497A8E0E18669F82783D5EB08A758F15E52B7E3 │ │ │ │ +EE41904B3D6DDE3138A9E273A40708DEFB0EF4F3549B173EB4F31F8027F2CDE9 │ │ │ │ +34480169649C0366EC616A2D6B042DF9CE19A8E2BB2BCEEF688F6B26C0C8885A │ │ │ │ +96ABF29F9DC82B78C1642C57B92A4CFBD07C966FFD641DFA65EA19752699F15A │ │ │ │ +E7E181FE961AC38349C75DB919DD22F56C681B72B2B510FC400EC73E0E33B4E1 │ │ │ │ +E4F71352799A63E138FB258E76A0C4FFBF97DD7BFD9E5726EFD71CA923649AC6 │ │ │ │ +B32BCD13B58964D4A3AA6ACE42CBF85835F879703134671F6F2D7E55120FE18C │ │ │ │ +F08F39DCEE9DF18392A5D2399C1C7BF7B03BE4B18B307C32AAFDB68B0E7057B8 │ │ │ │ +38415C40456D4BD41B6101603087124B62FF8C8C96C5D8A7351F0A25202A5AE7 │ │ │ │ +BEA436FDAF8EDF6E3847F5E5F5D32B56ED5349041A7B1A82898AF0DB9052F81C │ │ │ │ +850D38981FCC67CBE0EE309FB9BC7B4C85D4977A3AF29AC93438F24388C318F2 │ │ │ │ +E409EC20087ACF91C300AFA229329D1D5D1992A12F0A9BCEF76906A1D3A6E46E │ │ │ │ +2CC4AF9B60B8523FEB25441593C6DC5DC5A9BF9651C2397EB9FCA7A3C5A1DCCA │ │ │ │ +05C26B5E5CA2D9EC0D79FA30272794273F5F5A741B7B66773A03BD90FBCE8CC1 │ │ │ │ +106ACE891C830590CB0D49859BEE7E7C6262A446DAF71DDD1B6CE1E15195BBB6 │ │ │ │ +7FDD10072B269A9EF9F849B2A7F11E5AE7C363134D31F664B98A18BEAAD544DC │ │ │ │ +3C3F3DB4E2F149F096579D04CD4FFE7ACE05B5D98E4056C11D48082D7E6176AF │ │ │ │ +CF0DCBB3420484C612CF73079D9041BA7C4AE1809CB00441F7A7E68E3780C2A6 │ │ │ │ +9745F61ED009F5A5592A263C8330F35AC5536EE90D0ADD3455197DBB3F3963C9 │ │ │ │ +313F7D91758A17822C7FEA07C2EE9096848456A54E57F360D221561319A726E7 │ │ │ │ +FEAD7E6E156ACB756DA225A84C53299F494017154FC9E37839CA81378AD16D53 │ │ │ │ +CD030C33A20E48C499E3287EE06099996BDE9560EBBED4A4DDC1D2D89136203A │ │ │ │ +47BB85B3F2540751594531EA54214A78712F4606601A5BA92A7AA4DE20DBE1A5 │ │ │ │ +87A1E7884C205EE9B3FAEF1F5A8F4CFBC74C634D0FF79859EC0841DDFE446AD1 │ │ │ │ +D9BD35DCA16780FE367B67807F992F961918E855FFEF50DF67DBDFB7A3BE0C27 │ │ │ │ +C082D82BEAD87FB27012872D8CA70633F0DE670643EB3F761081F831F4AB9E84 │ │ │ │ +A824A17F0E63BF022BEF9A30F5F6F16B9C059BC3F071BCE8A7F330EE0C99EED7 │ │ │ │ +34FB534D1B0E0B44AAD46FF114D553644A578B47DB0DEF14EB8B51236FB0C5EB │ │ │ │ +F4E00733AD9A55C7FAF3987B395D48A8C6894A4C0D912821B2C5FCB31171EC43 │ │ │ │ +36842E0B6D6656F0965378075C203F7D230B504FEF5ADE03D478573F9CE12854 │ │ │ │ +1DE66AF8A27853FBD6024A25E895B2BBECAE4EF76C64101C3B17C02EC81C3BFB │ │ │ │ +D6527BAF6219B16A235F1D348B72457646C04CBEBF310B0FBA18B76C76167F2C │ │ │ │ +5EC9FF382C5442D5623C7DCB1E62B80796ED9EF3463B591D0F12241934444767 │ │ │ │ +844ED9B01762608D9DE90A9163BD42DA9F4BC7C5DF9589488414677D998077CE │ │ │ │ +D7C29BB7FF93A830F7422BD32A1CCBF4049FDA7471CF54FE5795948FD2446A8A │ │ │ │ +D69E934E4D059089FB3E8D5AB0535094A828221BA012F712571371B127F6D4A1 │ │ │ │ +56EB30F585BCD9ABD1F4724BFF10B6D909F82172B229F92A9BB55E0678897098 │ │ │ │ +25BDA85C3F7BDD87B26F8A6C018A582B45D0DAB7F07437ACEBE24798CD703EE0 │ │ │ │ +E8458D67A817527A7867F81EEC3CE96ADDFF175965F25FB345238A │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -11499,15 +11510,15 @@ │ │ │ │ 7[55 55 31[42 3[0 0 3[55 8[83 7[83 83 5[65 4[65 65 1[65 │ │ │ │ 14[42 65 23 65{}27 83.022 /CMSY10 rf /Fp 143[83 12[83 │ │ │ │ 46 9[120 7[88 17[74 1[74 1[74 1[74 20[48 48 12[44 44 │ │ │ │ 61 61 14[35 35 2[{}17 83.022 /CMEX10 rf /Fq 135[51 2[51 │ │ │ │ 49 38 50 1[46 53 51 62 43 53 1[25 51 1[44 46 52 49 48 │ │ │ │ 51 14[66 10[71 2[69 9[27 2[46 3[46 46 46 46 48[{}28 83.022 │ │ │ │ /CMCSC10 rf /Fr 134[44 3[46 2[33 3[46 12[42 22[43 15[23 │ │ │ │ -3[42 3[42 1[42 3[23 44[{}11 83.022 /CMSL10 rf /Fs 133[39 │ │ │ │ +3[42 3[42 42 42 3[23 44[{}12 83.022 /CMSL10 rf /Fs 133[39 │ │ │ │ 41 47 59 40 48 30 39 37 37 1[40 50 73 25 43 34 29 48 │ │ │ │ 40 41 39 43 36 36 44 6[57 48 69 78 48 57 49 51 63 66 │ │ │ │ 53 63 2[57 71 46 36 69 65 53 61 69 59 63 62 44 1[65 42 │ │ │ │ 65 23 23 27[49 2[47 14[47 53 11[{}59 83.022 /CMMI10 rf │ │ │ │ /Ft 130[44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 │ │ │ │ 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 1[44 │ │ │ │ 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 │ │ │ │ @@ -11544,19 +11555,19 @@ │ │ │ │ 26 21 44[{}51 74.7198 /CMR9 rf /FC 203[30 30 30 30 49[{}4 │ │ │ │ 49.8132 /CMR6 rf /FD 133[31 37 37 51 37 39 27 28 28 37 │ │ │ │ 39 35 39 59 20 37 22 20 39 35 22 31 39 31 39 35 12[51 │ │ │ │ 39 52 1[48 2[65 3[25 53 3[54 51 50 53 7[35 2[35 35 35 │ │ │ │ 35 35 35 35 1[20 24 20 31[39 12[{}49 66.4176 /CMR8 rf │ │ │ │ /FE 134[51 2[51 54 38 38 38 2[49 54 1[27 2[27 54 1[30 │ │ │ │ 43 54 43 1[49 9[100 6[66 4[76 50 5[75 70 1[73 10[49 3[49 │ │ │ │ -1[49 1[27 1[27 44[{}28 99.6264 /CMR12 rf /FF 172[90 2[110 │ │ │ │ -121 2[97 6[106 69[{}5 143.462 /CMBX12 rf /FG 134[70 1[96 │ │ │ │ -70 73 51 52 51 70 73 66 73 111 36 1[40 36 73 66 40 58 │ │ │ │ -73 58 73 66 12[96 73 98 2[103 1[122 83 6[90 3[99 6[36 │ │ │ │ -7[66 3[36 1[36 44[{}35 143.462 /CMR17 rf end │ │ │ │ +49 49 1[27 1[27 44[{}29 99.6264 /CMR12 rf /FF 172[90 │ │ │ │ +2[110 121 2[97 6[106 69[{}5 143.462 /CMBX12 rf /FG 134[70 │ │ │ │ +1[96 70 73 51 52 51 70 73 66 73 111 36 1[40 36 73 66 │ │ │ │ +40 58 73 58 73 66 12[96 73 98 2[103 1[122 83 6[90 3[99 │ │ │ │ +6[36 7[66 3[36 1[36 44[{}35 143.462 /CMR17 rf end │ │ │ │ %%EndProlog │ │ │ │ %%BeginSetup │ │ │ │ %%Feature: *Resolution 600dpi │ │ │ │ TeXDict begin │ │ │ │ %%BeginPaperSize: Letter │ │ │ │ /setpagedevice where │ │ │ │ { pop << /PageSize [612 792] >> setpagedevice } │ │ │ │ @@ -11569,16 +11580,16 @@ │ │ │ │ TeXDict begin 1 0 bop 407 1704 a FG(The)44 b(Reference)g(Man)l(ual)f │ │ │ │ (for)g FF(SPOOLES)p FG(,)g(Release)g(2.2:)518 1886 y(An)h(Ob)7 │ │ │ │ b(ject)44 b(Orien)l(ted)h(Soft)l(w)l(are)e(Library)f(for)g(Solving)920 │ │ │ │ 2069 y(Sparse)h(Linear)g(Systems)f(of)h(Equations)375 │ │ │ │ 2459 y FE(Clev)m(e)35 b(Ashcraft)1004 2423 y FD(1)1297 │ │ │ │ 2459 y FE(Daniel)d(Pierce)1864 2423 y FD(2)2158 2459 │ │ │ │ y FE(Da)m(vid)g(K.)h(W)-8 b(ah)2774 2423 y FD(3)3066 │ │ │ │ -2459 y FE(Jason)33 b(W)-8 b(u)3485 2423 y FD(4)1611 2725 │ │ │ │ -y FE(Jan)m(uary)33 b(6,)f(2026)104 4280 y FC(1)138 4312 │ │ │ │ +2459 y FE(Jason)33 b(W)-8 b(u)3485 2423 y FD(4)1586 2725 │ │ │ │ +y FE(Jan)m(uary)34 b(10,)e(2026)104 4280 y FC(1)138 4312 │ │ │ │ y FB(Bo)r(eing)70 b(Shared)d(Services)i(Group,)79 b(P)-6 │ │ │ │ b(.)68 b(O.)g(Bo)n(x)g(24346,)81 b(Mail)70 b(Stop)d(7L-22,)80 │ │ │ │ b(Seattle,)f(W)-6 b(ashington)69 b(98124,)0 4403 y FA │ │ │ │ (cleve.ashcraft@boeing.com)p FB(.)64 b(This)34 b(researc)n(h)g(w)n(as)h │ │ │ │ (supp)r(orted)d(in)i(part)f(b)n(y)g(the)g(D)n(ARP)-6 │ │ │ │ b(A)31 b(Con)n(tract)k(D)n(ABT63-95-C-0122)0 4494 y(and)25 │ │ │ │ b(the)h(DoD)f(High)g(P)n(erformance)j(Computing)e(Mo)r(dernization)h │ │ │ │ @@ -11748,17 +11759,17 @@ │ │ │ │ (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) │ │ │ │ f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)93 │ │ │ │ b(36)125 5407 y(3.3)83 b(Driv)n(er)27 b(programs)e(for)i(the)h │ │ │ │ Ft(Coords)e Fy(ob)5 b(ject)42 b(.)g(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h │ │ │ │ (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) │ │ │ │ f(.)h(.)f(.)93 b(37)1929 5656 y(2)p eop end │ │ │ │ %%Page: 3 4 │ │ │ │ -TeXDict begin 3 3 bop 83 100 1178 4 v 1344 100 a Fz(SPOOLES)31 │ │ │ │ -b(2.2)c Fr(:)120 b(Jan)n(uary)26 b(6,)h(2026)p 2683 100 │ │ │ │ -V 1178 w Fy(3)0 390 y Fz(4)77 b Ft(DV)p Fz(:)30 b(Double)h(V)-8 │ │ │ │ +TeXDict begin 3 3 bop 83 100 1157 4 v 1323 100 a Fz(SPOOLES)32 │ │ │ │ +b(2.2)26 b Fr(:)120 b(Jan)n(uary)26 b(10,)h(2026)p 2704 │ │ │ │ +100 V 1157 w Fy(3)0 390 y Fz(4)77 b Ft(DV)p Fz(:)30 b(Double)h(V)-8 │ │ │ │ b(ector)33 b(Ob)5 b(ject)2617 b(39)125 511 y Fy(4.1)83 │ │ │ │ b(Data)28 b(Structure)61 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f │ │ │ │ (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) │ │ │ │ h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)93 │ │ │ │ b(39)125 632 y(4.2)83 b(Protot)n(yp)r(es)26 b(and)i(descriptions)f(of)g │ │ │ │ Ft(DV)g Fy(metho)r(ds)83 b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g │ │ │ │ (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) │ │ │ │ @@ -11871,25 +11882,25 @@ │ │ │ │ (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) │ │ │ │ f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)93 │ │ │ │ b(61)125 5407 y(8.3)83 b(Driv)n(er)27 b(programs)e(for)i(the)h │ │ │ │ Ft(IV)43 b(object)32 b Fy(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) │ │ │ │ f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h │ │ │ │ (.)g(.)f(.)h(.)f(.)93 b(63)p eop end │ │ │ │ %%Page: 4 5 │ │ │ │ -TeXDict begin 4 4 bop 0 100 a Fy(4)p 125 100 1178 4 v │ │ │ │ -1343 w Fz(SPOOLES)32 b(2.2)27 b Fr(:)37 b(Jan)n(uary)25 │ │ │ │ -b(6,)i(2026)p 2722 100 V 0 390 a Fz(9)77 b Ft(IVL)p Fz(:)30 │ │ │ │ -b(In)m(teger)i(V)-8 b(ector)32 b(List)g(Ob)5 b(ject)2382 │ │ │ │ -b(64)125 513 y Fy(9.1)83 b(Data)28 b(Structure)61 b(.)41 │ │ │ │ -b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h │ │ │ │ -(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) │ │ │ │ -f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)93 b(64)125 637 y(9.2)83 │ │ │ │ -b(Protot)n(yp)r(es)26 b(and)i(descriptions)f(of)g Ft(IVL)g │ │ │ │ -Fy(metho)r(ds)39 b(.)i(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f │ │ │ │ -(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)93 │ │ │ │ +TeXDict begin 4 4 bop 0 100 a Fy(4)p 125 100 1157 4 v │ │ │ │ +1322 w Fz(SPOOLES)32 b(2.2)27 b Fr(:)37 b(Jan)n(uary)25 │ │ │ │ +b(10,)i(2026)p 2743 100 V 0 390 a Fz(9)77 b Ft(IVL)p │ │ │ │ +Fz(:)30 b(In)m(teger)i(V)-8 b(ector)32 b(List)g(Ob)5 │ │ │ │ +b(ject)2382 b(64)125 513 y Fy(9.1)83 b(Data)28 b(Structure)61 │ │ │ │ +b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) │ │ │ │ +f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f │ │ │ │ +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)93 b(64)125 637 │ │ │ │ +y(9.2)83 b(Protot)n(yp)r(es)26 b(and)i(descriptions)f(of)g │ │ │ │ +Ft(IVL)g Fy(metho)r(ds)39 b(.)i(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f │ │ │ │ +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)93 │ │ │ │ b(65)315 760 y(9.2.1)h(Basic)27 b(metho)r(ds)74 b(.)42 │ │ │ │ b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f │ │ │ │ (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) │ │ │ │ g(.)f(.)h(.)f(.)93 b(65)315 883 y(9.2.2)h(Instance)27 │ │ │ │ b(metho)r(ds)j(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h │ │ │ │ (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) │ │ │ │ f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)93 b(66)315 1007 y(9.2.3)h │ │ │ │ @@ -11997,17 +12008,17 @@ │ │ │ │ b(.)c(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g │ │ │ │ (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) │ │ │ │ 93 b(94)315 5407 y(13.2.5)52 b Ft(FV)27 b Fy(:)h Ft(float)d │ │ │ │ Fy(v)n(ector)i(metho)r(ds)21 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g │ │ │ │ (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) │ │ │ │ h(.)f(.)h(.)g(.)f(.)h(.)f(.)93 b(96)p eop end │ │ │ │ %%Page: 5 6 │ │ │ │ -TeXDict begin 5 5 bop 83 100 1178 4 v 1344 100 a Fz(SPOOLES)31 │ │ │ │ -b(2.2)c Fr(:)120 b(Jan)n(uary)26 b(6,)h(2026)p 2683 100 │ │ │ │ -V 1178 w Fy(5)315 390 y(13.2.6)52 b Ft(PCV)27 b Fy(:)g │ │ │ │ +TeXDict begin 5 5 bop 83 100 1157 4 v 1323 100 a Fz(SPOOLES)32 │ │ │ │ +b(2.2)26 b Fr(:)120 b(Jan)n(uary)26 b(10,)h(2026)p 2704 │ │ │ │ +100 V 1157 w Fy(5)315 390 y(13.2.6)52 b Ft(PCV)27 b Fy(:)g │ │ │ │ Ft(char)42 b(*)28 b Fy(v)n(ector)e(metho)r(ds)64 b(.)41 │ │ │ │ b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h │ │ │ │ (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)93 │ │ │ │ b(99)315 521 y(13.2.7)52 b Ft(PDV)27 b Fy(:)g Ft(double)41 │ │ │ │ b(*)28 b Fy(v)n(ector)e(metho)r(ds)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h │ │ │ │ (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) │ │ │ │ h(.)g(.)f(.)h(.)f(.)93 b(99)315 651 y(13.2.8)52 b Ft(PFV)27 │ │ │ │ @@ -12112,17 +12123,17 @@ │ │ │ │ (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) │ │ │ │ g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 b(123)125 │ │ │ │ 5407 y(16.3)41 b(Driv)n(er)27 b(programs)e(for)i(the)h │ │ │ │ Ft(BPG)f Fy(ob)5 b(ject)44 b(.)e(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) │ │ │ │ f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h │ │ │ │ (.)g(.)f(.)h(.)f(.)51 b(124)p eop end │ │ │ │ %%Page: 6 7 │ │ │ │ -TeXDict begin 6 6 bop 0 100 a Fy(6)p 125 100 1178 4 v │ │ │ │ -1343 w Fz(SPOOLES)32 b(2.2)27 b Fr(:)37 b(Jan)n(uary)25 │ │ │ │ -b(6,)i(2026)p 2722 100 V 0 390 a Fz(17)i Ft(DSTree)p │ │ │ │ +TeXDict begin 6 6 bop 0 100 a Fy(6)p 125 100 1157 4 v │ │ │ │ +1322 w Fz(SPOOLES)32 b(2.2)27 b Fr(:)37 b(Jan)n(uary)25 │ │ │ │ +b(10,)i(2026)p 2743 100 V 0 390 a Fz(17)i Ft(DSTree)p │ │ │ │ Fz(:)125 490 y(A)j(Domain/Separator)g(T)-8 b(ree)32 b(Ob)5 │ │ │ │ b(ject)2217 b(126)125 616 y Fy(17.1)41 b(Data)28 b(Structure)61 │ │ │ │ b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) │ │ │ │ f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f │ │ │ │ (.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 b(126)125 742 │ │ │ │ y(17.2)41 b(Protot)n(yp)r(es)26 b(and)i(descriptions)f(of)g │ │ │ │ Ft(DSTree)e Fy(metho)r(ds)38 b(.)k(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h │ │ │ │ @@ -12234,17 +12245,17 @@ │ │ │ │ (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) │ │ │ │ g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f │ │ │ │ (.)51 b(163)125 5407 y(20.2)41 b(Protot)n(yp)r(es)26 │ │ │ │ b(and)i(descriptions)f(of)g Ft(GPart)f Fy(metho)r(ds)81 │ │ │ │ b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) │ │ │ │ h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 b(164)p eop end │ │ │ │ %%Page: 7 8 │ │ │ │ -TeXDict begin 7 7 bop 83 100 1178 4 v 1344 100 a Fz(SPOOLES)31 │ │ │ │ -b(2.2)c Fr(:)120 b(Jan)n(uary)26 b(6,)h(2026)p 2683 100 │ │ │ │ -V 1178 w Fy(7)315 390 y(20.2.1)52 b(Basic)27 b(metho)r(ds)74 │ │ │ │ +TeXDict begin 7 7 bop 83 100 1157 4 v 1323 100 a Fz(SPOOLES)32 │ │ │ │ +b(2.2)26 b Fr(:)120 b(Jan)n(uary)26 b(10,)h(2026)p 2704 │ │ │ │ +100 V 1157 w Fy(7)315 390 y(20.2.1)52 b(Basic)27 b(metho)r(ds)74 │ │ │ │ b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) │ │ │ │ h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f │ │ │ │ (.)h(.)g(.)f(.)h(.)f(.)51 b(164)315 526 y(20.2.2)h(Initializer)27 │ │ │ │ b(metho)r(ds)48 b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) │ │ │ │ g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f │ │ │ │ (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 b(165)315 661 y(20.2.3)h(Utilit)n(y) │ │ │ │ 28 b(metho)r(ds)i(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) │ │ │ │ @@ -12350,17 +12361,17 @@ │ │ │ │ f(of)g Ft(MSMDvtx)e Fy(metho)r(ds)59 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g │ │ │ │ (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) │ │ │ │ 51 b(192)125 5407 y(22.5)41 b(Driv)n(er)27 b(programs)e(for)i(the)h │ │ │ │ Ft(MSMD)e Fy(ob)5 b(ject)66 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) │ │ │ │ f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h │ │ │ │ (.)g(.)f(.)h(.)f(.)51 b(192)p eop end │ │ │ │ %%Page: 8 9 │ │ │ │ -TeXDict begin 8 8 bop 0 100 a Fy(8)p 125 100 1178 4 v │ │ │ │ -1343 w Fz(SPOOLES)32 b(2.2)27 b Fr(:)37 b(Jan)n(uary)25 │ │ │ │ -b(6,)i(2026)p 2722 100 V 0 390 a Fz(23)i Ft(Network)p │ │ │ │ +TeXDict begin 8 8 bop 0 100 a Fy(8)p 125 100 1157 4 v │ │ │ │ +1322 w Fz(SPOOLES)32 b(2.2)27 b Fr(:)37 b(Jan)n(uary)25 │ │ │ │ +b(10,)i(2026)p 2743 100 V 0 390 a Fz(23)i Ft(Network)p │ │ │ │ Fz(:)39 b(Simple)30 b(Max-\015o)m(w)i(solv)m(er)2283 │ │ │ │ b(195)125 514 y Fy(23.1)41 b(Data)28 b(Structure)61 b(.)41 │ │ │ │ b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h │ │ │ │ (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) │ │ │ │ f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 b(196)125 638 y(23.2)41 │ │ │ │ b(Protot)n(yp)r(es)26 b(and)i(descriptions)f(of)g Ft(Network)e │ │ │ │ Fy(metho)r(ds)59 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f │ │ │ │ @@ -12470,79 +12481,79 @@ │ │ │ │ (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) │ │ │ │ f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 b(220)315 5407 y(26.2.3)h │ │ │ │ (Initialization)27 b(metho)r(ds)62 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h │ │ │ │ (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) │ │ │ │ f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 b(222)p eop │ │ │ │ end │ │ │ │ %%Page: 9 10 │ │ │ │ -TeXDict begin 9 9 bop 83 100 1178 4 v 1344 100 a Fz(SPOOLES)31 │ │ │ │ -b(2.2)c Fr(:)120 b(Jan)n(uary)26 b(6,)h(2026)p 2683 100 │ │ │ │ -V 1178 w Fy(9)315 390 y(26.2.4)52 b(Searc)n(h)27 b(metho)r(ds)i(.)42 │ │ │ │ -b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f │ │ │ │ -(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) │ │ │ │ -g(.)f(.)h(.)f(.)51 b(223)315 513 y(26.2.5)h(Piv)n(ot)27 │ │ │ │ -b(metho)r(ds)72 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) │ │ │ │ -f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f │ │ │ │ -(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 b(224)315 637 │ │ │ │ -y(26.2.6)h(Up)r(date)28 b(metho)r(ds)65 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.) │ │ │ │ +TeXDict begin 9 9 bop 83 100 1157 4 v 1323 100 a Fz(SPOOLES)32 │ │ │ │ +b(2.2)26 b Fr(:)120 b(Jan)n(uary)26 b(10,)h(2026)p 2704 │ │ │ │ +100 V 1157 w Fy(9)315 390 y(26.2.4)52 b(Searc)n(h)27 │ │ │ │ +b(metho)r(ds)i(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f │ │ │ │ +(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) │ │ │ │ +h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 b(223)315 513 │ │ │ │ +y(26.2.5)h(Piv)n(ot)27 b(metho)r(ds)72 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h │ │ │ │ +(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) │ │ │ │ +f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 │ │ │ │ +b(224)315 637 y(26.2.6)h(Up)r(date)28 b(metho)r(ds)65 │ │ │ │ +b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) │ │ │ │ +f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h │ │ │ │ +(.)g(.)f(.)h(.)f(.)51 b(224)315 760 y(26.2.7)h(Assem)n(bly)27 │ │ │ │ +b(metho)r(ds)52 b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) │ │ │ │ g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f │ │ │ │ -(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 │ │ │ │ -b(224)315 760 y(26.2.7)h(Assem)n(bly)27 b(metho)r(ds)52 │ │ │ │ -b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) │ │ │ │ -h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g │ │ │ │ -(.)f(.)h(.)f(.)51 b(225)315 883 y(26.2.8)h(F)-7 b(actorization)26 │ │ │ │ -b(metho)r(ds)49 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) │ │ │ │ -h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f │ │ │ │ -(.)h(.)g(.)f(.)h(.)f(.)51 b(225)315 1007 y(26.2.9)h(Cop)n(y)27 │ │ │ │ -b(metho)r(ds)78 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) │ │ │ │ -f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f │ │ │ │ -(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 b(226)315 1130 │ │ │ │ -y(26.2.10)10 b(Sw)n(ap)27 b(metho)r(ds)76 b(.)42 b(.)f(.)h(.)f(.)h(.)f │ │ │ │ +(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 b(225)315 883 y(26.2.8)h(F)-7 │ │ │ │ +b(actorization)26 b(metho)r(ds)49 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h │ │ │ │ +(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) │ │ │ │ +f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 b(225)315 │ │ │ │ +1007 y(26.2.9)h(Cop)n(y)27 b(metho)r(ds)78 b(.)42 b(.)f(.)h(.)f(.)h(.)f │ │ │ │ (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) │ │ │ │ h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 │ │ │ │ -b(228)315 1253 y(26.2.11)10 b(Utilit)n(y)28 b(metho)r(ds)i(.)42 │ │ │ │ -b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f │ │ │ │ -(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) │ │ │ │ -g(.)f(.)h(.)f(.)51 b(229)315 1376 y(26.2.12)10 b(IO)27 │ │ │ │ -b(metho)r(ds)44 b(.)d(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f │ │ │ │ -(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) │ │ │ │ -g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 b(230)125 │ │ │ │ -1500 y(26.3)41 b(Driv)n(er)27 b(programs)e(for)i(the)h │ │ │ │ -Ft(Chv)43 b(object)53 b Fy(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f │ │ │ │ -(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) │ │ │ │ -g(.)f(.)h(.)f(.)51 b(231)0 1706 y Fz(27)29 b Ft(ChvList)p │ │ │ │ -Fz(:)39 b Ft(Chv)30 b Fz(list)h(ob)5 b(ject)2678 b(236)125 │ │ │ │ -1829 y Fy(27.1)41 b(Data)28 b(Structure)61 b(.)41 b(.)h(.)f(.)h(.)g(.)f │ │ │ │ -(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) │ │ │ │ -f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f │ │ │ │ -(.)h(.)f(.)51 b(237)125 1953 y(27.2)41 b(Protot)n(yp)r(es)26 │ │ │ │ -b(and)i(descriptions)f(of)g Ft(ChvList)e Fy(metho)r(ds)59 │ │ │ │ -b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) │ │ │ │ -f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 b(237)315 2076 y(27.2.1)h(Basic)27 │ │ │ │ -b(metho)r(ds)74 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) │ │ │ │ -f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f │ │ │ │ -(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 b(237)315 2199 │ │ │ │ -y(27.2.2)h(Initialization)27 b(metho)r(ds)62 b(.)42 b(.)f(.)h(.)g(.)f │ │ │ │ +b(226)315 1130 y(26.2.10)10 b(Sw)n(ap)27 b(metho)r(ds)76 │ │ │ │ +b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) │ │ │ │ +h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f │ │ │ │ +(.)h(.)g(.)f(.)h(.)f(.)51 b(228)315 1253 y(26.2.11)10 │ │ │ │ +b(Utilit)n(y)28 b(metho)r(ds)i(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f │ │ │ │ (.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) │ │ │ │ f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 │ │ │ │ -b(238)315 2323 y(27.2.3)h(Utilit)n(y)28 b(metho)r(ds)i(.)42 │ │ │ │ +b(229)315 1376 y(26.2.12)10 b(IO)27 b(metho)r(ds)44 b(.)d(.)h(.)g(.)f │ │ │ │ +(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) │ │ │ │ +f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f │ │ │ │ +(.)h(.)f(.)51 b(230)125 1500 y(26.3)41 b(Driv)n(er)27 │ │ │ │ +b(programs)e(for)i(the)h Ft(Chv)43 b(object)53 b Fy(.)41 │ │ │ │ +b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h │ │ │ │ +(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 │ │ │ │ +b(231)0 1706 y Fz(27)29 b Ft(ChvList)p Fz(:)39 b Ft(Chv)30 │ │ │ │ +b Fz(list)h(ob)5 b(ject)2678 b(236)125 1829 y Fy(27.1)41 │ │ │ │ +b(Data)28 b(Structure)61 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f │ │ │ │ +(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) │ │ │ │ +h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 │ │ │ │ +b(237)125 1953 y(27.2)41 b(Protot)n(yp)r(es)26 b(and)i(descriptions)f │ │ │ │ +(of)g Ft(ChvList)e Fy(metho)r(ds)59 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.) │ │ │ │ +f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 │ │ │ │ +b(237)315 2076 y(27.2.1)h(Basic)27 b(metho)r(ds)74 b(.)42 │ │ │ │ b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f │ │ │ │ (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) │ │ │ │ -g(.)f(.)h(.)f(.)51 b(238)315 2446 y(27.2.4)h(IO)27 b(metho)r(ds)44 │ │ │ │ -b(.)d(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g │ │ │ │ -(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) │ │ │ │ -h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 b(238)0 2652 y Fz(28)29 │ │ │ │ -b Ft(ChvManager)p Fz(:)37 b Ft(Chv)31 b Fz(manager)h(ob)5 │ │ │ │ -b(ject)2319 b(239)125 2775 y Fy(28.1)41 b(Data)28 b(Structure)61 │ │ │ │ -b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) │ │ │ │ -f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f │ │ │ │ -(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 b(240)125 2899 │ │ │ │ -y(28.2)41 b(Protot)n(yp)r(es)26 b(and)i(descriptions)f(of)g │ │ │ │ -Ft(ChvManager)d Fy(metho)r(ds)57 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f │ │ │ │ -(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 │ │ │ │ +g(.)f(.)h(.)f(.)51 b(237)315 2199 y(27.2.2)h(Initialization)27 │ │ │ │ +b(metho)r(ds)62 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) │ │ │ │ +h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f │ │ │ │ +(.)h(.)g(.)f(.)h(.)f(.)51 b(238)315 2323 y(27.2.3)h(Utilit)n(y)28 │ │ │ │ +b(metho)r(ds)i(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f │ │ │ │ +(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) │ │ │ │ +h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 b(238)315 2446 │ │ │ │ +y(27.2.4)h(IO)27 b(metho)r(ds)44 b(.)d(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h │ │ │ │ +(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) │ │ │ │ +f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 │ │ │ │ +b(238)0 2652 y Fz(28)29 b Ft(ChvManager)p Fz(:)37 b Ft(Chv)31 │ │ │ │ +b Fz(manager)h(ob)5 b(ject)2319 b(239)125 2775 y Fy(28.1)41 │ │ │ │ +b(Data)28 b(Structure)61 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f │ │ │ │ +(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) │ │ │ │ +h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 │ │ │ │ +b(240)125 2899 y(28.2)41 b(Protot)n(yp)r(es)26 b(and)i(descriptions)f │ │ │ │ +(of)g Ft(ChvManager)d Fy(metho)r(ds)57 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h │ │ │ │ +(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 │ │ │ │ b(240)315 3022 y(28.2.1)h(Basic)27 b(metho)r(ds)74 b(.)42 │ │ │ │ b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f │ │ │ │ (.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.) │ │ │ │ g(.)f(.)h(.)f(.)51 b(240)315 3145 y(28.2.2)h(Initialization)27 │ │ │ │ b(metho)r(ds)62 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) │ │ │ │ h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f │ │ │ │ (.)h(.)g(.)f(.)h(.)f(.)51 b(241)315 3269 y(28.2.3)h(Utilit)n(y)28 │ │ │ │ @@ -12595,17 +12606,17 @@ │ │ │ │ (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) │ │ │ │ f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 b(257)315 │ │ │ │ 5407 y(30.2.4)h(Utilit)n(y)28 b(F)-7 b(actorization)26 │ │ │ │ b(metho)r(ds)43 b(.)e(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h │ │ │ │ (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) │ │ │ │ f(.)51 b(258)p eop end │ │ │ │ %%Page: 10 11 │ │ │ │ -TeXDict begin 10 10 bop 0 100 a Fy(10)p 166 100 1157 │ │ │ │ -4 v 1322 w Fz(SPOOLES)32 b(2.2)26 b Fr(:)37 b(Jan)n(uary)26 │ │ │ │ -b(6,)h(2026)p 2743 100 V 315 390 a Fy(30.2.5)52 b(Serial)27 │ │ │ │ +TeXDict begin 10 10 bop 0 100 a Fy(10)p 166 100 1137 │ │ │ │ +4 v 1301 w Fz(SPOOLES)32 b(2.2)27 b Fr(:)37 b(Jan)n(uary)25 │ │ │ │ +b(10,)i(2026)p 2764 100 V 315 390 a Fy(30.2.5)52 b(Serial)27 │ │ │ │ b(F)-7 b(actorization)26 b(metho)r(d)45 b(.)d(.)f(.)h(.)f(.)h(.)f(.)h │ │ │ │ (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) │ │ │ │ f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 b(260)315 512 y(30.2.6)h(QR)28 │ │ │ │ b(factorization)e(utilit)n(y)i(metho)r(ds)56 b(.)41 b(.)h(.)f(.)h(.)g │ │ │ │ (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.) │ │ │ │ h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 b(261)315 635 y(30.2.7)h(Serial)27 │ │ │ │ b Fs(QR)h Fy(F)-7 b(actorization)26 b(metho)r(d)82 b(.)41 │ │ │ │ @@ -12726,17 +12737,17 @@ │ │ │ │ (.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.) │ │ │ │ f(.)h(.)f(.)51 b(299)125 5407 y(33.3)41 b(Driv)n(er)27 │ │ │ │ b(programs)76 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h │ │ │ │ (.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.) │ │ │ │ h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 b(302)p │ │ │ │ eop end │ │ │ │ %%Page: 11 12 │ │ │ │ -TeXDict begin 11 11 bop 83 100 1157 4 v 1323 100 a Fz(SPOOLES)32 │ │ │ │ -b(2.2)26 b Fr(:)120 b(Jan)n(uary)26 b(6,)h(2026)p 2662 │ │ │ │ -100 V 1157 w Fy(11)0 390 y Fz(34)i Ft(PatchAndGoInfo)p │ │ │ │ +TeXDict begin 11 11 bop 83 100 1137 4 v 1302 100 a Fz(SPOOLES)32 │ │ │ │ +b(2.2)27 b Fr(:)120 b(Jan)n(uary)25 b(10,)i(2026)p 2683 │ │ │ │ +100 V 1137 w Fy(11)0 390 y Fz(34)i Ft(PatchAndGoInfo)p │ │ │ │ Fz(:)36 b(Piv)m(ot)c(Mo)s(di\014cation)f(Ob)5 b(ject)1856 │ │ │ │ b(307)125 513 y Fy(34.1)41 b(Data)28 b(Structure)61 b(.)41 │ │ │ │ b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h │ │ │ │ (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) │ │ │ │ f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 b(308)125 637 y(34.2)41 │ │ │ │ b(Protot)n(yp)r(es)26 b(and)i(descriptions)f(of)g Ft(PatchAndGoInfo)22 │ │ │ │ b Fy(metho)r(ds)76 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f │ │ │ │ @@ -12849,17 +12860,17 @@ │ │ │ │ (.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.) │ │ │ │ h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 b(335)315 5407 │ │ │ │ y(38.2.4)h(IO)27 b(metho)r(ds)44 b(.)d(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h │ │ │ │ (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) │ │ │ │ f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 │ │ │ │ b(335)p eop end │ │ │ │ %%Page: 12 13 │ │ │ │ -TeXDict begin 12 12 bop 0 100 a Fy(12)p 166 100 1157 │ │ │ │ -4 v 1322 w Fz(SPOOLES)32 b(2.2)26 b Fr(:)37 b(Jan)n(uary)26 │ │ │ │ -b(6,)h(2026)p 2743 100 V 0 390 a Fz(39)i Ft(SubMtxManager)p │ │ │ │ +TeXDict begin 12 12 bop 0 100 a Fy(12)p 166 100 1137 │ │ │ │ +4 v 1301 w Fz(SPOOLES)32 b(2.2)27 b Fr(:)37 b(Jan)n(uary)25 │ │ │ │ +b(10,)i(2026)p 2764 100 V 0 390 a Fz(39)i Ft(SubMtxManager)p │ │ │ │ Fz(:)36 b Ft(SubMtx)29 b Fz(ob)5 b(ject)33 b(manager)2057 │ │ │ │ b(336)125 515 y Fy(39.1)41 b(Data)28 b(Structure)61 b(.)41 │ │ │ │ b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h │ │ │ │ (.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.) │ │ │ │ f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 b(337)125 640 y(39.2)41 │ │ │ │ b(Protot)n(yp)r(es)26 b(and)i(descriptions)f(of)g Ft(SubMtxManager)22 │ │ │ │ b Fy(metho)r(ds)56 b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h │ │ │ │ @@ -12945,17 +12956,17 @@ │ │ │ │ f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f │ │ │ │ (.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 b(368)315 5407 │ │ │ │ y(43.1.1)h Ft(MatMulInfo)24 b Fy(:)37 b(Matrix-matrix)26 │ │ │ │ b(m)n(ultiply)i(information)f(ob)5 b(ject)75 b(.)41 b(.)h(.)f(.)h(.)g │ │ │ │ (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 b(368)p │ │ │ │ eop end │ │ │ │ %%Page: 13 14 │ │ │ │ -TeXDict begin 13 13 bop 83 100 1157 4 v 1323 100 a Fz(SPOOLES)32 │ │ │ │ -b(2.2)26 b Fr(:)120 b(Jan)n(uary)26 b(6,)h(2026)p 2662 │ │ │ │ -100 V 1157 w Fy(13)125 390 y(43.2)41 b(Protot)n(yp)r(es)26 │ │ │ │ +TeXDict begin 13 13 bop 83 100 1137 4 v 1302 100 a Fz(SPOOLES)32 │ │ │ │ +b(2.2)27 b Fr(:)120 b(Jan)n(uary)25 b(10,)i(2026)p 2683 │ │ │ │ +100 V 1137 w Fy(13)125 390 y(43.2)41 b(Protot)n(yp)r(es)26 │ │ │ │ b(and)i(descriptions)f(of)g Ft(MPI)g Fy(metho)r(ds)39 │ │ │ │ b(.)i(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g │ │ │ │ (.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 b(369)315 │ │ │ │ 515 y(43.2.1)h(Split)28 b(and)g(redistribution)f(metho)r(ds)59 │ │ │ │ b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.) │ │ │ │ f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)51 │ │ │ │ b(369)315 639 y(43.2.2)h(Gather)27 b(and)h(scatter)f(metho)r(ds)j(.)42 │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -1,13 +1,13 @@ │ │ │ │ │ The Reference Manual for SPOOLES, Release 2.2: │ │ │ │ │ An Object Oriented Software Library for Solving │ │ │ │ │ Sparse Linear Systems of Equations │ │ │ │ │ 1 2 3 4 │ │ │ │ │ Cleve Ashcraft Daniel Pierce David K. Wah Jason Wu │ │ │ │ │ - January 6, 2026 │ │ │ │ │ + January 10, 2026 │ │ │ │ │ 1Boeing Shared Services Group, P. O. Box 24346, Mail Stop 7L-22, Seattle, Washington 98124, │ │ │ │ │ cleve.ashcraft@boeing.com. This research was supported in part by the DARPA Contract DABT63-95-C-0122 │ │ │ │ │ and the DoD High Performance Computing Modernization Program Common HPC Software Support Initiative. │ │ │ │ │ 2Boeing Shared Services Group, P. O. Box 24346, Mail Stop 7L-22, Seattle, Washington 98124, │ │ │ │ │ dpierce@redwood.rt.cs.boeing.com. This research was supported in part by the DARPA Contract DABT63- │ │ │ │ │ 95-C-0122 and the DoD High Performance Computing Modernization Program Common HPC Software Support │ │ │ │ │ Initiative. │ │ │ │ │ @@ -68,15 +68,15 @@ │ │ │ │ │ 3.2 Prototypes and descriptions of Coords methods . . . . . . . . . . . . . . . . . . . . . . . . . . 34 │ │ │ │ │ 3.2.1 Basic methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 │ │ │ │ │ 3.2.2 Initializer methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 │ │ │ │ │ 3.2.3 Utility methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 │ │ │ │ │ 3.2.4 IO methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 │ │ │ │ │ 3.3 Driver programs for the Coords object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 │ │ │ │ │ 2 │ │ │ │ │ - SPOOLES2.2: January 6, 2026 3 │ │ │ │ │ + SPOOLES 2.2: January 10, 2026 3 │ │ │ │ │ 4 DV: Double Vector Object 39 │ │ │ │ │ 4.1 Data Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 │ │ │ │ │ 4.2 Prototypes and descriptions of DV methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 │ │ │ │ │ 4.2.1 Basic methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 │ │ │ │ │ 4.2.2 Instance methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 │ │ │ │ │ 4.2.3 Initializer methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 │ │ │ │ │ 4.2.4 Utility methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 │ │ │ │ │ @@ -109,15 +109,15 @@ │ │ │ │ │ 8.2 Prototypes and descriptions of IV methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 │ │ │ │ │ 8.2.1 Basic methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 │ │ │ │ │ 8.2.2 Instance methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 │ │ │ │ │ 8.2.3 Initializer methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 │ │ │ │ │ 8.2.4 Utility methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 │ │ │ │ │ 8.2.5 IO methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 │ │ │ │ │ 8.3 Driver programs for the IV object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 │ │ │ │ │ - 4 SPOOLES 2.2 : January 6, 2026 │ │ │ │ │ + 4 SPOOLES 2.2 : January 10, 2026 │ │ │ │ │ 9 IVL: Integer Vector List Object 64 │ │ │ │ │ 9.1 Data Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 │ │ │ │ │ 9.2 Prototypes and descriptions of IVL methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 │ │ │ │ │ 9.2.1 Basic methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 │ │ │ │ │ 9.2.2 Instance methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 │ │ │ │ │ 9.2.3 Initialization and resizing methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 │ │ │ │ │ 9.2.4 List manipulation methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 │ │ │ │ │ @@ -149,15 +149,15 @@ │ │ │ │ │ 13.1 Data Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 │ │ │ │ │ 13.2 Prototypes and descriptions of Utilities methods . . . . . . . . . . . . . . . . . . . . . . . . 81 │ │ │ │ │ 13.2.1 CV : char vector methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 │ │ │ │ │ 13.2.2 DV : double vector methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 │ │ │ │ │ 13.2.3 ZV : double complex vector methods . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 │ │ │ │ │ 13.2.4 IV : int vector methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 │ │ │ │ │ 13.2.5 FV : float vector methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 │ │ │ │ │ - SPOOLES2.2: January 6, 2026 5 │ │ │ │ │ + SPOOLES 2.2: January 10, 2026 5 │ │ │ │ │ 13.2.6 PCV : char * vector methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 │ │ │ │ │ 13.2.7 PDV : double * vector methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 │ │ │ │ │ 13.2.8 PFV : float * vector methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 │ │ │ │ │ 13.2.9 Sorting routines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 │ │ │ │ │ 13.2.10Sort and compress routines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 │ │ │ │ │ 13.2.11IP : (int, pointer) singly linked-list methods . . . . . . . . . . . . . . . . . . . . . . 103 │ │ │ │ │ 13.2.12I2OP : (int, int, void*, pointer) singly linked-list methods . . . . . . . . . . . . 104 │ │ │ │ │ @@ -186,15 +186,15 @@ │ │ │ │ │ 16.2.1 Basic methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 │ │ │ │ │ 16.2.2 Initializer methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 │ │ │ │ │ 16.2.3 Generate induced graphs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 │ │ │ │ │ 16.2.4 Utility methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 │ │ │ │ │ 16.2.5 Dulmage-Mendelsohn decomposition method . . . . . . . . . . . . . . . . . . . . . . . 123 │ │ │ │ │ 16.2.6 IO methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 │ │ │ │ │ 16.3 Driver programs for the BPG object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 │ │ │ │ │ - 6 SPOOLES 2.2 : January 6, 2026 │ │ │ │ │ + 6 SPOOLES 2.2 : January 10, 2026 │ │ │ │ │ 17 DSTree: │ │ │ │ │ ADomain/Separator Tree Object 126 │ │ │ │ │ 17.1 Data Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 │ │ │ │ │ 17.2 Prototypes and descriptions of DSTree methods . . . . . . . . . . . . . . . . . . . . . . . . . . 126 │ │ │ │ │ 17.2.1 Basic methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 │ │ │ │ │ 17.2.2 Instance methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 │ │ │ │ │ 17.2.3 Initializer methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 │ │ │ │ │ @@ -226,15 +226,15 @@ │ │ │ │ │ 19.2.11Parallel factorization map methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 │ │ │ │ │ 19.2.12Storage profile methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 │ │ │ │ │ 19.2.13IO methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 │ │ │ │ │ 19.3 Driver programs for the ETree object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 │ │ │ │ │ 20 GPart: Graph Partitioning Object 162 │ │ │ │ │ 20.1 Data Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 │ │ │ │ │ 20.2 Prototypes and descriptions of GPart methods . . . . . . . . . . . . . . . . . . . . . . . . . . 164 │ │ │ │ │ - SPOOLES2.2: January 6, 2026 7 │ │ │ │ │ + SPOOLES 2.2: January 10, 2026 7 │ │ │ │ │ 20.2.1 Basic methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 │ │ │ │ │ 20.2.2 Initializer methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 │ │ │ │ │ 20.2.3 Utility methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 │ │ │ │ │ 20.2.4 Domain decomposition methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 │ │ │ │ │ 20.2.5 Methods to generate a 2-set partition . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 │ │ │ │ │ 20.2.6 Methods to improve a 2-set partition . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 │ │ │ │ │ 20.2.7 Recursive Bisection method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 │ │ │ │ │ @@ -264,15 +264,15 @@ │ │ │ │ │ 22.3.1 Basic methods — public . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 │ │ │ │ │ 22.3.2 Initialization methods — public . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 │ │ │ │ │ 22.3.3 Ordering methods — public . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 │ │ │ │ │ 22.3.4 Extraction methods — public . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 │ │ │ │ │ 22.3.5 Internal methods — private . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 │ │ │ │ │ 22.4 Prototypes and descriptions of MSMDvtx methods . . . . . . . . . . . . . . . . . . . . . . . . . 192 │ │ │ │ │ 22.5 Driver programs for the MSMD object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 │ │ │ │ │ - 8 SPOOLES 2.2 : January 6, 2026 │ │ │ │ │ + 8 SPOOLES 2.2 : January 10, 2026 │ │ │ │ │ 23 Network: Simple Max-flow solver 195 │ │ │ │ │ 23.1 Data Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 │ │ │ │ │ 23.2 Prototypes and descriptions of Network methods . . . . . . . . . . . . . . . . . . . . . . . . . 197 │ │ │ │ │ 23.2.1 Basic methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 │ │ │ │ │ 23.2.2 Initializer methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 │ │ │ │ │ 23.2.3 Utility methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 │ │ │ │ │ 23.2.4 IO methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 │ │ │ │ │ @@ -303,15 +303,15 @@ │ │ │ │ │ IV Numeric Objects and Methods 216 │ │ │ │ │ 26 Chv: Block chevron 217 │ │ │ │ │ 26.1 Data Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 │ │ │ │ │ 26.2 Prototypes and descriptions of Chv methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 │ │ │ │ │ 26.2.1 Basic methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 │ │ │ │ │ 26.2.2 Instance methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 │ │ │ │ │ 26.2.3 Initialization methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222 │ │ │ │ │ - SPOOLES2.2: January 6, 2026 9 │ │ │ │ │ + SPOOLES 2.2: January 10, 2026 9 │ │ │ │ │ 26.2.4 Search methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223 │ │ │ │ │ 26.2.5 Pivot methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224 │ │ │ │ │ 26.2.6 Update methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224 │ │ │ │ │ 26.2.7 Assembly methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 │ │ │ │ │ 26.2.8 Factorization methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 │ │ │ │ │ 26.2.9 Copy methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 │ │ │ │ │ 26.2.10Swap methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228 │ │ │ │ │ @@ -343,15 +343,15 @@ │ │ │ │ │ 30 FrontMtx: Front matrix 250 │ │ │ │ │ 30.1 Data Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 │ │ │ │ │ 30.2 Prototypes and descriptions of FrontMtx methods . . . . . . . . . . . . . . . . . . . . . . . . 255 │ │ │ │ │ 30.2.1 Basic methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 │ │ │ │ │ 30.2.2 Instance methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 │ │ │ │ │ 30.2.3 Initialization methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 │ │ │ │ │ 30.2.4 Utility Factorization methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258 │ │ │ │ │ - 10 SPOOLES 2.2: January 6, 2026 │ │ │ │ │ + 10 SPOOLES 2.2 : January 10, 2026 │ │ │ │ │ 30.2.5 Serial Factorization method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260 │ │ │ │ │ 30.2.6 QR factorization utility methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261 │ │ │ │ │ 30.2.7 Serial QR Factorization method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262 │ │ │ │ │ 30.2.8 Postprocessing methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262 │ │ │ │ │ 30.2.9 Utility Solve methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 │ │ │ │ │ 30.2.10Serial Solve method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 │ │ │ │ │ 30.2.11Serial QR Solve method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265 │ │ │ │ │ @@ -384,15 +384,15 @@ │ │ │ │ │ 32.3 Driver programs for the InpMtx object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289 │ │ │ │ │ 33 Iter: Iterative Methods 297 │ │ │ │ │ 33.1 Data Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297 │ │ │ │ │ 33.2 Prototypes and descriptions of Iter methods . . . . . . . . . . . . . . . . . . . . . . . . . . . 297 │ │ │ │ │ 33.2.1 Utility methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297 │ │ │ │ │ 33.2.2 Iterative methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299 │ │ │ │ │ 33.3 Driver programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302 │ │ │ │ │ - SPOOLES 2.2: January 6, 2026 11 │ │ │ │ │ + SPOOLES 2.2 : January 10, 2026 11 │ │ │ │ │ 34 PatchAndGoInfo: Pivot Modification Object 307 │ │ │ │ │ 34.1 Data Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 │ │ │ │ │ 34.2 Prototypes and descriptions of PatchAndGoInfo methods . . . . . . . . . . . . . . . . . . . . 308 │ │ │ │ │ 34.2.1 Basic methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308 │ │ │ │ │ 34.2.2 Initializer methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309 │ │ │ │ │ 35 Pencil: Matrix pencil 310 │ │ │ │ │ 35.1 Data Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310 │ │ │ │ │ @@ -424,15 +424,15 @@ │ │ │ │ │ 38 SubMtxList: SubMtx list object 333 │ │ │ │ │ 38.1 Data Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334 │ │ │ │ │ 38.2 Prototypes and descriptions of SubMtxList methods . . . . . . . . . . . . . . . . . . . . . . . 334 │ │ │ │ │ 38.2.1 Basic methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334 │ │ │ │ │ 38.2.2 Initialization methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335 │ │ │ │ │ 38.2.3 Utility methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335 │ │ │ │ │ 38.2.4 IO methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335 │ │ │ │ │ - 12 SPOOLES 2.2: January 6, 2026 │ │ │ │ │ + 12 SPOOLES 2.2 : January 10, 2026 │ │ │ │ │ 39 SubMtxManager: SubMtx object manager 336 │ │ │ │ │ 39.1 Data Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337 │ │ │ │ │ 39.2 Prototypes and descriptions of SubMtxManager methods . . . . . . . . . . . . . . . . . . . . . 337 │ │ │ │ │ 39.2.1 Basic methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337 │ │ │ │ │ 39.2.2 Initialization methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338 │ │ │ │ │ 39.2.3 Utility methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338 │ │ │ │ │ 39.2.4 IO methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338 │ │ │ │ │ @@ -459,15 +459,15 @@ │ │ │ │ │ 42.2.4 Multithreaded Solve method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360 │ │ │ │ │ 42.2.5 Multithreaded QR Solve method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361 │ │ │ │ │ 42.3 Driver programs for the multithreaded functions . . . . . . . . . . . . . . . . . . . . . . . . . 361 │ │ │ │ │ VII MPI Methods 367 │ │ │ │ │ 43 MPI directory 368 │ │ │ │ │ 43.1 Data Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368 │ │ │ │ │ 43.1.1 MatMulInfo : Matrix-matrix multiply information object . . . . . . . . . . . . . . . . 368 │ │ │ │ │ - SPOOLES 2.2: January 6, 2026 13 │ │ │ │ │ + SPOOLES 2.2 : January 10, 2026 13 │ │ │ │ │ 43.2 Prototypes and descriptions of MPI methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369 │ │ │ │ │ 43.2.1 Split and redistribution methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369 │ │ │ │ │ 43.2.2 Gather and scatter methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372 │ │ │ │ │ 43.2.3 Symbolic Factorization methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372 │ │ │ │ │ 43.2.4 Numeric Factorization methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373 │ │ │ │ │ 43.2.5 Post-processing methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374 │ │ │ │ │ 43.2.6 Numeric Solve methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375 │ │ ├── ./usr/share/doc/spooles-doc/SemiImplMtx.ps.gz │ │ │ ├── SemiImplMtx.ps │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ %%EndComments │ │ │ │ %%BeginDefaults │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ %%EndDefaults │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ %DVIPSCommandLine: dvips main -o SemiImplMtx.ps │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ -%DVIPSSource: TeX output 2026.01.06:2034 │ │ │ │ +%DVIPSSource: TeX output 2026.01.10:0513 │ │ │ │ %%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 │ │ │ │ @@ -1199,14 +1199,15 @@ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ /UnderlineThickness 50 def │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ +dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ dup 54 /six put │ │ │ │ dup 58 /colon put │ │ │ │ dup 74 /J put │ │ │ │ dup 97 /a put │ │ │ │ dup 110 /n put │ │ │ │ dup 114 /r put │ │ │ │ @@ -1396,79 +1397,84 @@ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB88440048702D1F │ │ │ │ -77994EE04EC3B4531D6E1888C86A8F0DA6CF1F056F16AB0DD76C862830F89DA4 │ │ │ │ -28923B3AA543E0D6E41D3BD283E600BC11F889315EE92C675C109C81065ED1BC │ │ │ │ -82A5583D1B723D50051B0557A367887F5B263014C6E77288B4883C50889473D3 │ │ │ │ -3787BAD4BEB88BD1353AFA5B73E61814819537E7FF09F53EF94792BB3DD36ED0 │ │ │ │ -002D0E7A6CDAB85A9C17AF5664BCB5A71663B861880F3ECCABC8E7A2FC81A4CC │ │ │ │ -AE7A87503FDC1CE0077BA51ECC7B43B60793FED8E9AAD5BBD03ADD6183DCD26D │ │ │ │ -24A74163611C05562437644EF9B8889FD4F9D311911204FEFD35237486F2D2D0 │ │ │ │ -B6783A03BF12EA6D19D6D0F87E4D08515F12F9CBF1961CAA71E0D69FE3C4C4D2 │ │ │ │ -7C7FB64ED24F8684C8F00C2BEDEA53EA390CDC0B5BEBD7DD982580B2EA1F1F89 │ │ │ │ -CFED5916630DC2BA32BB9180277E1ABC339B3B7DE086717BD93F7FF3681BA5B3 │ │ │ │ -FCF671C4B293C2DE4A322F0AA3323A4934444C69F23EF90120B8755482757759 │ │ │ │ -C457A435FB8BB4922BD92C5F3D9555D978275C510183E29DFF2FCE4ABBFC18DE │ │ │ │ -76CAD3B486BA12047DD808CD4D521A0FD368E4AE79DE262630983A5D6F0B679D │ │ │ │ -2F005306393C520E1B6987302D029939D94B0178DB06211C7F3B123A41E6E7BA │ │ │ │ -87164737110707A3ED3983895F3FBC815EF370F54C808ED93D910937BCA3D8AF │ │ │ │ -7CBF80DC180CDA54059DB76710B4FCD4139D5B7DA7DB1A0D0AF86AD2453D3691 │ │ │ │ -0BA5BAD40FF28BB4235FCD40FC87C2B888E67928D9B0ACA5692149373DBB93BF │ │ │ │ -6520DDD36A9BFE4D415CA67A5E04F1D48BDB28C69676273ED842CF7980E8E17C │ │ │ │ -B88563F407E340AFAE8F51AABCF8A39521BCEE1EC8396D75E124B24B4675909F │ │ │ │ -E246F87DA08584A3173AEFF153ECDF610543FA7474D125A31ADD6285A49222B5 │ │ │ │ -177066EA395BFA4B1114C7FCF7712DA772A21C99E64F4E1181E69CAF98137FA2 │ │ │ │ -76CF74F682B8CD7BA6EEA79B70FA8A76809634517F8415B6F21A5A7D6099B5E8 │ │ │ │ -EAB356BBC4FB68C72B8C61DDCE8EAB1A53B9D6BAD78584B307EFF57CEAE74884 │ │ │ │ -35987BF89E9E60E962D22FA5612F2DB5EB840499B7CC11A34BA5DEE30D277540 │ │ │ │ -39B8211D69B448ADE95B723F8369A631DE6DD75703AFD7485FB7FFF41A60CBE4 │ │ │ │ -813B8FEA120662355773830EF85015E7FFD609B2CEE52CB5FFE9C35B6BEEE4A4 │ │ │ │ -A66719E31CE1523FDD7771FB1E881A32A7DB7D92C2326DF4B93241C14ABFCCD6 │ │ │ │ -8E5BCAC61E800E6B1B4687ADA4CBF41EC0AFC26D021D1772CBDCD0516DF5EBE1 │ │ │ │ -37FD2AC5ABB8D774B5735940F1F6866D044FD8CE74444FAA5D0202C11E39CC10 │ │ │ │ -213731F41F704450E1D0565013BF22188442CE0FC256190A9F92F0C802AA2660 │ │ │ │ -614AFE9E9C82F8CD2E6035EEF84E5F16CBB690AC819B4B910EA8E81106F0ACE5 │ │ │ │ -CDFE77DAF69E4AFE72C43145A3ABCC40B6C5297487083F738C86422277AC2267 │ │ │ │ -51759F1B7F129E87DE16433B664AD0FB6D30424A11C70B52B591352BF653C8B0 │ │ │ │ -0840C224FBFEAA996A6BE1D69414DD778C2EF56A63B64D59BA412EC3E4000831 │ │ │ │ -73361FB9813F9A7C74BA3A50D331B07B61492E5D75F0861B530587269B3ADC90 │ │ │ │ -EA1DF586AC4BC57C3230893EFE953A6E76950ABA895FAC711D3BD330ABC6846A │ │ │ │ -C91F6ABF3410B913DFE5C8266020CEE5C7A9EDA2E7D9BCA797DC486443C7BA7C │ │ │ │ -7E03439A40927FA3251B6D417E5653E7799E9D6F04149C34096E2CA9B1F9B1EC │ │ │ │ -38958A2521B4A657A8B9F16E1FD66C7E345A10D7AA0241559503D214AC6507A4 │ │ │ │ -CBDE8617AA7ED136577734428594487F3565BF45FA196375759E2FE23C26EC8A │ │ │ │ -3310A36917A5E2F260EAB31030F8E570303D36B833626938F56939849DFA1F3F │ │ │ │ -66D0A317BB6364427F1512AAB380B555611C76345C02C3A6FBF78590331D5ECA │ │ │ │ -029DEFB722F6AB05327C2A31AB7BD6ED0F0386E6F45C1278048D22B90B074CCB │ │ │ │ -2BBEBCC1927C97EC532E651CAF0058AFE8FC08F00F0216D5DD9830C294FF76DA │ │ │ │ -426A073B3A3AEEFBDEE71C5182186311607ECDBD1F1AF4C5E79748CD01445C8D │ │ │ │ -25DD49490C8A6810065908222C8D0AC9F83AFBEE7115023E2D2615A170A5D40A │ │ │ │ -AD49BDF59A59187B6434F83E68EED22EF4EFDBADED6F1559AC779E0377FE7375 │ │ │ │ -D7060584FE74B1859D0FD98772253A712B17FFBB467840C484F5EF82C5677ADB │ │ │ │ -EDF159A456A526B8B9F6E8FC7608DFD47B0F09E26118F79CBE53B6C4E32BACAB │ │ │ │ -D62AFD4AA527CC4B587BB41A17A9BCE106A8C592BC9B73422B712C466C284A17 │ │ │ │ -E8D0C1E01D43C739FB1C083AD2714F78AC785B0C09AA7E67417A73510E00F2FE │ │ │ │ -E3D3EBF626A2F3A20A386E3F98D1285F4A2A332FC609CD191F01F128627B3505 │ │ │ │ -0AC2387DC0AD1B950490EBB5045F22BEC54955402CE2D267B6754E7C32BE84E8 │ │ │ │ -E6B63E3D3EAEE979442D167AEF69C27B22A8E887A2510C3A168D95D285CF7515 │ │ │ │ -011C921679B2F386575826A3F2071D015EEB78F02A4F94D4E5F07873623200F8 │ │ │ │ -7DF95BA0DC6B6D31DECC925BEA1E6A7C52FE685800EC33CBAE830F1AE5454DFA │ │ │ │ -913B8F457D7E2D3DFF019869E3301EEEC64A38295DE6B588E776922B32362382 │ │ │ │ -D1CF3D058613C8A96E6994D3EC23E8B71EC6E718383B20BB6C22DB6F93FA559F │ │ │ │ -3449CA84EB33B25C8BE0DFD1C29DC4FBD7AFBDC96C12162CAAB2C5E354B0FB10 │ │ │ │ -4BF8CC3610875ABD5111D09F2F847822118972214EDEB9EE34BAFE45E7AC15C5 │ │ │ │ -CA63EC4A3CEEA505A5EDD88A59BB67C71C3E026DFFE177F99BC69E6635545D03 │ │ │ │ -77A634F98230EF64381EC67CA519D4B9770EFA844789E21970F89D5FFC5DEAA8 │ │ │ │ -DC008EBA09306967ED090FF91B002FA6120C2B461A87AA32EFB003C5578D8EEF │ │ │ │ - │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ +AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ +E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ +46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ +FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ +389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ +7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ +2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ +C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ +B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ +AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ +E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ +F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ +0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ +2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ +29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ +CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ +6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ +5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ +36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0DD96AB602D004DCFE000A0 │ │ │ │ +ABE41BAB8AB7D50BD32BFD6F1AA3B60B09B9BE4E273EDD2DDCB21A98A760D17D │ │ │ │ +0A5C9303AFE63CF80A93E60C72A0576FAADEECBE2DE91892D210EB0AD1889C04 │ │ │ │ +C7530652584E775B4ED19CFB4B8DBCCC57A9FA9E4DDC8A1E5A1D3BE9E93407A6 │ │ │ │ +2C237ACE27F4EDA330EE952EDCBE91683AA98A29197735006666C96A2CE7C787 │ │ │ │ +BBA5A57C4DBF6FAA5B38AF226B5D9A65FAD84650AC0C3DB29C30602699F81E01 │ │ │ │ +0BAF8F1CE44A03C680121B77A1703C638187675D6C22C49F9902475E6CE9C732 │ │ │ │ +48ED028CC92EA542EF189CC9CA1C384E3387793057615D0A2BF040CC90B275B9 │ │ │ │ +F70A5310874DC2E0A360373E7BCAC88250FBC8989C7D18DA8274C06F02FCF31C │ │ │ │ +2B3868CBAF083DAC2FB159DE368261842DB7C9EA1A86B17617C861A48FBA8FF9 │ │ │ │ +D184CB026F4A418C0955347612F94C039B1536A76CB182A591DD7C02D509CF16 │ │ │ │ +8B9E46502ABF5DE31F5DFBD19C7417A2AF7AF13F0D5FF837C94CE56F07B96337 │ │ │ │ +0ED215252346FAEB54B5F3ABE29709B7ECB9FBD23A4AD397E6ABA6938F1BBF33 │ │ │ │ +1D5460D9414F0B8725DA832744525C13E3FD9C8DB33FBEE12F9C4969988402C8 │ │ │ │ +96AF916364CC2DF17EDBA622FC0A5D0013418E29F912FFA06F8D7E31ECAB0B08 │ │ │ │ +C4D2D8EE537CC768FC9038DD6D86D33642C6E812E941F157FC6917AF19C2B99A │ │ │ │ +5BF10B9A7ECF711BBB6F33C8C3DAD778153122593F36ABDDC0E97A602B045DE6 │ │ │ │ +19BD82D877DDA960AB11EF48C7F75A28D0D731D4A5DBC98283087267CD1A470D │ │ │ │ +537E949DA5EECF097B099547995BE066A941CED683B5748962AD2B02C21636C0 │ │ │ │ +2EAFA33CA0CB3BF8A95703F015A210D918865B9BEA2890DCFB68BC3719C305EC │ │ │ │ +315EC8727BF9A93632AB9E3090B100C022EE1396CD329B37547F26A7DCE52BD7 │ │ │ │ +F91B7388DEC34F4A0C6D46CD7CA6ACC00C5C4C71E47C6AD96496B3CBF531F342 │ │ │ │ +A740EE6B99BD70AD490DFA700772A0697EC6561CE88A0113E4DC3B21F372D810 │ │ │ │ +DFF2C3F6EDF3E917BF2664EEFC9AD292DD6CC36853CF936018D43FDB28D5B001 │ │ │ │ +7D1C805F958F13FD221377ABDD69D102E8CC1DAB2E011EE16CF6DB9D195BA702 │ │ │ │ +5A8738FABF989B0351282D0E5121182DFC52169782A5F3DD5D820411BEF909DE │ │ │ │ +04D963E6FDA76F88508C4E91DDAAA1748F396A1D380D8CA429673AF27C164434 │ │ │ │ +771781B39565D3EE50F3CF03EF12908B13A6C11C9AB7631B32125828B13050BA │ │ │ │ +041A93B97AC32D4A1E28C5FA98CDEE998B5F97823D6291D01E3611A16854F1FE │ │ │ │ +69B9D6D2AE3E56D012B7BC3E582FB4C23188A5E365E65EB1F804A706AF73A2F8 │ │ │ │ +9804808EF71F0982B14133BF9A27D6F2E719BDB751022B1B052722933948904E │ │ │ │ +3582E363478DCDA115205A0FDE39DF71FEAEEB104419C35A6B0678C19616C6D9 │ │ │ │ +A892DC2F4257069AF096C80C099CD13024DF3995F28C694E00D1F08B43D4450C │ │ │ │ +D18F5C925CFD2D124E74FC64BBAA0DE32A79E4A4507B5B5DD834C67160CDA110 │ │ │ │ +EF0061DD27E8864F4250A92BBEFD75C784BB98F4FA789A8236C2A21E4E61ABD0 │ │ │ │ +C6B4D13B3C31AC8E55FA34BEC7C308C61FB0280382EC6AFD63D959678D42D2B3 │ │ │ │ +4134F6236A0808D9302B4E3C6F81FC6973B4833602750CCB5DE36AEA23ED6BD4 │ │ │ │ +5B72DF0DD7B81C871CAA6EC190748CD8C4B998D576E5D340ACAC0617DDBE461C │ │ │ │ +8E82E809D11A01D265D039F4315066832E27E08A6F067E129E45FBF533F761BB │ │ │ │ +EC3C071209BECE7D14D3184B2E6BFD65717A5A7C08F3776B20C513649488C1CF │ │ │ │ +03333805B249D1034FB0AE2D7D2A23324EE27AEDB68F8E329A8052FE58D7C0D9 │ │ │ │ +A40A0CDC79F2085C4F39A7DFDB625C8F071E2A32CF6215DD3E060A9BABF7A3AA │ │ │ │ +C57DA0C0571C5D6EEAA975D1BB9C99F8EA4958360E43E8C60080B03DC4435550 │ │ │ │ +E6048DDD35DF3E5DA69669F266FFD7B44649A68025270DC84258E329F6E6907C │ │ │ │ +BCFF900D715D0C7EC43C5E7180CAD6427BA4FD41AAD6531A5C06B0EC26DDA71F │ │ │ │ +4A9DA50DE919E79226F6DDF7C1BA478936AA86CEAD93072CC2960E98C45A1A0C │ │ │ │ +60CF8A26E4278AB4F9E28FA6532648196CC455607D6BCD00F60675DE8CC02C8C │ │ │ │ +9BE5D5B714731814D5B008EE236563D77AC6895E0158877C95797E07C02AFEBE │ │ │ │ +CC9FE97D5E103F7DB0A834E9A7A75893EC66340B0E4C6F0EEDEF43415BF9FCF4 │ │ │ │ +47340CBEA4DCFBA0D028EB2149FFBBDB3322AE5F6FD20242526EDC55E476D983 │ │ │ │ +DC │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -4839,15 +4845,15 @@ │ │ │ │ @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 3[46 12[42 22[43 15[23 3[42 3[42 1[42 3[23 44[{}11 │ │ │ │ +2[33 3[46 12[42 22[43 15[23 3[42 3[42 42 42 3[23 44[{}12 │ │ │ │ 83.022 /CMSL10 rf /Fe 137[38 45 28 34 35 1[42 42 47 68 │ │ │ │ 21 2[25 3[38 42 38 1[42 12[59 1[61 11[54 1[63 2[62 6[25 │ │ │ │ 12[30 45[{}22 83.022 /CMTI10 rf /Ff 149[23 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 │ │ │ │ @@ -5033,17 +5039,17 @@ │ │ │ │ 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 1070 4 v │ │ │ │ -1235 w Fm(SemiImplMtx)23 b Fd(:)37 b Fe(DRAFT)27 b Fd(Jan)n(uary)f(6,)h │ │ │ │ -(2026)p 2831 100 V 0 390 a Fc(1.1)135 b(Data)46 b(Structure)0 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fn(2)p 125 100 1049 4 v │ │ │ │ +1214 w Fm(SemiImplMtx)23 b Fd(:)37 b Fe(DRAFT)27 b Fd(Jan)n(uary)f(10,) │ │ │ │ +h(2026)p 2852 100 V 0 390 a Fc(1.1)135 b(Data)46 b(Structure)0 │ │ │ │ 595 y Fn(The)28 b Fm(SemiImplMtx)23 b Fn(structure)k(has)g(the)h(follo) │ │ │ │ n(wing)e(\014elds.)125 776 y Fg(\210)42 b Fm(int)g(neqns)26 │ │ │ │ b Fn(:)36 b(n)n(um)n(b)r(er)28 b(of)f(equations.)125 │ │ │ │ 939 y Fg(\210)42 b Fm(int)g(type)26 b Fn(:)37 b(t)n(yp)r(e)28 │ │ │ │ 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 │ │ │ │ @@ -5117,17 +5123,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 1070 4 v 1235 100 a Fm(SemiImplMtx)23 │ │ │ │ -b Fd(:)37 b Fe(DRAFT)110 b Fd(Jan)n(uary)26 b(6,)h(2026)p │ │ │ │ -2791 100 V 1070 w Fn(3)101 390 y(4.)42 b Fm(int)g(SemiImplMtx_free)37 │ │ │ │ +TeXDict begin 3 2 bop 83 100 1049 4 v 1214 100 a Fm(SemiImplMtx)24 │ │ │ │ +b Fd(:)36 b Fe(DRAFT)111 b Fd(Jan)n(uary)25 b(10,)i(2026)p │ │ │ │ +2812 100 V 1049 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 │ │ │ │ @@ -5221,17 +5227,17 @@ │ │ │ │ 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 1070 4 v │ │ │ │ -1235 w Fm(SemiImplMtx)23 b Fd(:)37 b Fe(DRAFT)27 b Fd(Jan)n(uary)f(6,)h │ │ │ │ -(2026)p 2831 100 V 369 377 a Fm(cpus[0])97 b Fn(initialize)27 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fn(4)p 125 100 1049 4 v │ │ │ │ +1214 w Fm(SemiImplMtx)23 b Fd(:)37 b Fe(DRAFT)27 b Fd(Jan)n(uary)f(10,) │ │ │ │ +h(2026)p 2852 100 V 369 377 a Fm(cpus[0])97 b Fn(initialize)27 │ │ │ │ b(w)n(orking)f(matrices)369 477 y Fm(cpus[1])97 b Fn(load)27 │ │ │ │ b(righ)n(t)f(hand)i(side)369 576 y Fm(cpus[2])97 b Fn(\014rst)27 │ │ │ │ b(solv)n(e)f(with)j(domains)369 676 y Fm(cpus[3])97 b │ │ │ │ Fn(compute)27 b(Sc)n(h)n(ur)g(righ)n(t)g(hand)h(side)369 │ │ │ │ 775 y Fm(cpus[4])97 b Fn(Sc)n(h)n(ur)27 b(solv)n(e)2099 │ │ │ │ 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 │ │ │ │ @@ -5294,17 +5300,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 1070 4 v 1235 100 a Fm(SemiImplMtx)23 │ │ │ │ -b Fd(:)37 b Fe(DRAFT)110 b Fd(Jan)n(uary)26 b(6,)h(2026)p │ │ │ │ -2791 100 V 1070 w Fn(5)307 390 y Fg(\210)42 b Fn(The)28 │ │ │ │ +TeXDict begin 5 4 bop 83 100 1049 4 v 1214 100 a Fm(SemiImplMtx)24 │ │ │ │ +b Fd(:)36 b Fe(DRAFT)111 b Fd(Jan)n(uary)25 b(10,)i(2026)p │ │ │ │ +2812 100 V 1049 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 January 6, 2026 │ │ │ │ │ + 2 SemiImplMtx : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 3 │ │ │ │ │ + SemiImplMtx : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 4 SemiImplMtx : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 5 │ │ │ │ │ + SemiImplMtx : DRAFT January 10, 2026 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 2026.01.06:2034 │ │ │ │ +%DVIPSSource: TeX output 2026.01.10:0513 │ │ │ │ %%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 │ │ │ │ @@ -1438,14 +1438,15 @@ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ /UnderlineThickness 50 def │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ +dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ dup 54 /six put │ │ │ │ dup 58 /colon put │ │ │ │ dup 74 /J put │ │ │ │ dup 97 /a put │ │ │ │ dup 110 /n put │ │ │ │ dup 114 /r put │ │ │ │ @@ -1635,79 +1636,84 @@ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB88440048702D1F │ │ │ │ -77994EE04EC3B4531D6E1888C86A8F0DA6CF1F056F16AB0DD76C862830F89DA4 │ │ │ │ -28923B3AA543E0D6E41D3BD283E600BC11F889315EE92C675C109C81065ED1BC │ │ │ │ -82A5583D1B723D50051B0557A367887F5B263014C6E77288B4883C50889473D3 │ │ │ │ -3787BAD4BEB88BD1353AFA5B73E61814819537E7FF09F53EF94792BB3DD36ED0 │ │ │ │ -002D0E7A6CDAB85A9C17AF5664BCB5A71663B861880F3ECCABC8E7A2FC81A4CC │ │ │ │ -AE7A87503FDC1CE0077BA51ECC7B43B60793FED8E9AAD5BBD03ADD6183DCD26D │ │ │ │ -24A74163611C05562437644EF9B8889FD4F9D311911204FEFD35237486F2D2D0 │ │ │ │ -B6783A03BF12EA6D19D6D0F87E4D08515F12F9CBF1961CAA71E0D69FE3C4C4D2 │ │ │ │ -7C7FB64ED24F8684C8F00C2BEDEA53EA390CDC0B5BEBD7DD982580B2EA1F1F89 │ │ │ │ -CFED5916630DC2BA32BB9180277E1ABC339B3B7DE086717BD93F7FF3681BA5B3 │ │ │ │ -FCF671C4B293C2DE4A322F0AA3323A4934444C69F23EF90120B8755482757759 │ │ │ │ -C457A435FB8BB4922BD92C5F3D9555D978275C510183E29DFF2FCE4ABBFC18DE │ │ │ │ -76CAD3B486BA12047DD808CD4D521A0FD368E4AE79DE262630983A5D6F0B679D │ │ │ │ -2F005306393C520E1B6987302D029939D94B0178DB06211C7F3B123A41E6E7BA │ │ │ │ -87164737110707A3ED3983895F3FBC815EF370F54C808ED93D910937BCA3D8AF │ │ │ │ -7CBF80DC180CDA54059DB76710B4FCD4139D5B7DA7DB1A0D0AF86AD2453D3691 │ │ │ │ -0BA5BAD40FF28BB4235FCD40FC87C2B888E67928D9B0ACA5692149373DBB93BF │ │ │ │ -6520DDD36A9BFE4D415CA67A5E04F1D48BDB28C69676273ED842CF7980E8E17C │ │ │ │ -B88563F407E340AFAE8F51AABCF8A39521BCEE1EC8396D75E124B24B4675909F │ │ │ │ -E246F87DA08584A3173AEFF153ECDF610543FA7474D125A31ADD6285A49222B5 │ │ │ │ -177066EA395BFA4B1114C7FCF7712DA772A21C99E64F4E1181E69CAF98137FA2 │ │ │ │ -76CF74F682B8CD7BA6EEA79B70FA8A76809634517F8415B6F21A5A7D6099B5E8 │ │ │ │ -EAB356BBC4FB68C72B8C61DDCE8EAB1A53B9D6BAD78584B307EFF57CEAE74884 │ │ │ │ -35987BF89E9E60E962D22FA5612F2DB5EB840499B7CC11A34BA5DEE30D277540 │ │ │ │ -39B8211D69B448ADE95B723F8369A631DE6DD75703AFD7485FB7FFF41A60CBE4 │ │ │ │ -813B8FEA120662355773830EF85015E7FFD609B2CEE52CB5FFE9C35B6BEEE4A4 │ │ │ │ -A66719E31CE1523FDD7771FB1E881A32A7DB7D92C2326DF4B93241C14ABFCCD6 │ │ │ │ -8E5BCAC61E800E6B1B4687ADA4CBF41EC0AFC26D021D1772CBDCD0516DF5EBE1 │ │ │ │ -37FD2AC5ABB8D774B5735940F1F6866D044FD8CE74444FAA5D0202C11E39CC10 │ │ │ │ -213731F41F704450E1D0565013BF22188442CE0FC256190A9F92F0C802AA2660 │ │ │ │ -614AFE9E9C82F8CD2E6035EEF84E5F16CBB690AC819B4B910EA8E81106F0ACE5 │ │ │ │ -CDFE77DAF69E4AFE72C43145A3ABCC40B6C5297487083F738C86422277AC2267 │ │ │ │ -51759F1B7F129E87DE16433B664AD0FB6D30424A11C70B52B591352BF653C8B0 │ │ │ │ -0840C224FBFEAA996A6BE1D69414DD778C2EF56A63B64D59BA412EC3E4000831 │ │ │ │ -73361FB9813F9A7C74BA3A50D331B07B61492E5D75F0861B530587269B3ADC90 │ │ │ │ -EA1DF586AC4BC57C3230893EFE953A6E76950ABA895FAC711D3BD330ABC6846A │ │ │ │ -C91F6ABF3410B913DFE5C8266020CEE5C7A9EDA2E7D9BCA797DC486443C7BA7C │ │ │ │ -7E03439A40927FA3251B6D417E5653E7799E9D6F04149C34096E2CA9B1F9B1EC │ │ │ │ -38958A2521B4A657A8B9F16E1FD66C7E345A10D7AA0241559503D214AC6507A4 │ │ │ │ -CBDE8617AA7ED136577734428594487F3565BF45FA196375759E2FE23C26EC8A │ │ │ │ -3310A36917A5E2F260EAB31030F8E570303D36B833626938F56939849DFA1F3F │ │ │ │ -66D0A317BB6364427F1512AAB380B555611C76345C02C3A6FBF78590331D5ECA │ │ │ │ -029DEFB722F6AB05327C2A31AB7BD6ED0F0386E6F45C1278048D22B90B074CCB │ │ │ │ -2BBEBCC1927C97EC532E651CAF0058AFE8FC08F00F0216D5DD9830C294FF76DA │ │ │ │ -426A073B3A3AEEFBDEE71C5182186311607ECDBD1F1AF4C5E79748CD01445C8D │ │ │ │ -25DD49490C8A6810065908222C8D0AC9F83AFBEE7115023E2D2615A170A5D40A │ │ │ │ -AD49BDF59A59187B6434F83E68EED22EF4EFDBADED6F1559AC779E0377FE7375 │ │ │ │ -D7060584FE74B1859D0FD98772253A712B17FFBB467840C484F5EF82C5677ADB │ │ │ │ -EDF159A456A526B8B9F6E8FC7608DFD47B0F09E26118F79CBE53B6C4E32BACAB │ │ │ │ -D62AFD4AA527CC4B587BB41A17A9BCE106A8C592BC9B73422B712C466C284A17 │ │ │ │ -E8D0C1E01D43C739FB1C083AD2714F78AC785B0C09AA7E67417A73510E00F2FE │ │ │ │ -E3D3EBF626A2F3A20A386E3F98D1285F4A2A332FC609CD191F01F128627B3505 │ │ │ │ -0AC2387DC0AD1B950490EBB5045F22BEC54955402CE2D267B6754E7C32BE84E8 │ │ │ │ -E6B63E3D3EAEE979442D167AEF69C27B22A8E887A2510C3A168D95D285CF7515 │ │ │ │ -011C921679B2F386575826A3F2071D015EEB78F02A4F94D4E5F07873623200F8 │ │ │ │ -7DF95BA0DC6B6D31DECC925BEA1E6A7C52FE685800EC33CBAE830F1AE5454DFA │ │ │ │ -913B8F457D7E2D3DFF019869E3301EEEC64A38295DE6B588E776922B32362382 │ │ │ │ -D1CF3D058613C8A96E6994D3EC23E8B71EC6E718383B20BB6C22DB6F93FA559F │ │ │ │ -3449CA84EB33B25C8BE0DFD1C29DC4FBD7AFBDC96C12162CAAB2C5E354B0FB10 │ │ │ │ -4BF8CC3610875ABD5111D09F2F847822118972214EDEB9EE34BAFE45E7AC15C5 │ │ │ │ -CA63EC4A3CEEA505A5EDD88A59BB67C71C3E026DFFE177F99BC69E6635545D03 │ │ │ │ -77A634F98230EF64381EC67CA519D4B9770EFA844789E21970F89D5FFC5DEAA8 │ │ │ │ -DC008EBA09306967ED090FF91B002FA6120C2B461A87AA32EFB003C5578D8EEF │ │ │ │ - │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ +AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ +E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ +46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ +FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ +389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ +7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ +2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ +C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ +B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ +AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ +E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ +F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ +0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ +2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ +29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ +CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ +6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ +5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ +36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0DD96AB602D004DCFE000A0 │ │ │ │ +ABE41BAB8AB7D50BD32BFD6F1AA3B60B09B9BE4E273EDD2DDCB21A98A760D17D │ │ │ │ +0A5C9303AFE63CF80A93E60C72A0576FAADEECBE2DE91892D210EB0AD1889C04 │ │ │ │ +C7530652584E775B4ED19CFB4B8DBCCC57A9FA9E4DDC8A1E5A1D3BE9E93407A6 │ │ │ │ +2C237ACE27F4EDA330EE952EDCBE91683AA98A29197735006666C96A2CE7C787 │ │ │ │ +BBA5A57C4DBF6FAA5B38AF226B5D9A65FAD84650AC0C3DB29C30602699F81E01 │ │ │ │ +0BAF8F1CE44A03C680121B77A1703C638187675D6C22C49F9902475E6CE9C732 │ │ │ │ +48ED028CC92EA542EF189CC9CA1C384E3387793057615D0A2BF040CC90B275B9 │ │ │ │ +F70A5310874DC2E0A360373E7BCAC88250FBC8989C7D18DA8274C06F02FCF31C │ │ │ │ +2B3868CBAF083DAC2FB159DE368261842DB7C9EA1A86B17617C861A48FBA8FF9 │ │ │ │ +D184CB026F4A418C0955347612F94C039B1536A76CB182A591DD7C02D509CF16 │ │ │ │ +8B9E46502ABF5DE31F5DFBD19C7417A2AF7AF13F0D5FF837C94CE56F07B96337 │ │ │ │ +0ED215252346FAEB54B5F3ABE29709B7ECB9FBD23A4AD397E6ABA6938F1BBF33 │ │ │ │ +1D5460D9414F0B8725DA832744525C13E3FD9C8DB33FBEE12F9C4969988402C8 │ │ │ │ +96AF916364CC2DF17EDBA622FC0A5D0013418E29F912FFA06F8D7E31ECAB0B08 │ │ │ │ +C4D2D8EE537CC768FC9038DD6D86D33642C6E812E941F157FC6917AF19C2B99A │ │ │ │ +5BF10B9A7ECF711BBB6F33C8C3DAD778153122593F36ABDDC0E97A602B045DE6 │ │ │ │ +19BD82D877DDA960AB11EF48C7F75A28D0D731D4A5DBC98283087267CD1A470D │ │ │ │ +537E949DA5EECF097B099547995BE066A941CED683B5748962AD2B02C21636C0 │ │ │ │ +2EAFA33CA0CB3BF8A95703F015A210D918865B9BEA2890DCFB68BC3719C305EC │ │ │ │ +315EC8727BF9A93632AB9E3090B100C022EE1396CD329B37547F26A7DCE52BD7 │ │ │ │ +F91B7388DEC34F4A0C6D46CD7CA6ACC00C5C4C71E47C6AD96496B3CBF531F342 │ │ │ │ +A740EE6B99BD70AD490DFA700772A0697EC6561CE88A0113E4DC3B21F372D810 │ │ │ │ +DFF2C3F6EDF3E917BF2664EEFC9AD292DD6CC36853CF936018D43FDB28D5B001 │ │ │ │ +7D1C805F958F13FD221377ABDD69D102E8CC1DAB2E011EE16CF6DB9D195BA702 │ │ │ │ +5A8738FABF989B0351282D0E5121182DFC52169782A5F3DD5D820411BEF909DE │ │ │ │ +04D963E6FDA76F88508C4E91DDAAA1748F396A1D380D8CA429673AF27C164434 │ │ │ │ +771781B39565D3EE50F3CF03EF12908B13A6C11C9AB7631B32125828B13050BA │ │ │ │ +041A93B97AC32D4A1E28C5FA98CDEE998B5F97823D6291D01E3611A16854F1FE │ │ │ │ +69B9D6D2AE3E56D012B7BC3E582FB4C23188A5E365E65EB1F804A706AF73A2F8 │ │ │ │ +9804808EF71F0982B14133BF9A27D6F2E719BDB751022B1B052722933948904E │ │ │ │ +3582E363478DCDA115205A0FDE39DF71FEAEEB104419C35A6B0678C19616C6D9 │ │ │ │ +A892DC2F4257069AF096C80C099CD13024DF3995F28C694E00D1F08B43D4450C │ │ │ │ +D18F5C925CFD2D124E74FC64BBAA0DE32A79E4A4507B5B5DD834C67160CDA110 │ │ │ │ +EF0061DD27E8864F4250A92BBEFD75C784BB98F4FA789A8236C2A21E4E61ABD0 │ │ │ │ +C6B4D13B3C31AC8E55FA34BEC7C308C61FB0280382EC6AFD63D959678D42D2B3 │ │ │ │ +4134F6236A0808D9302B4E3C6F81FC6973B4833602750CCB5DE36AEA23ED6BD4 │ │ │ │ +5B72DF0DD7B81C871CAA6EC190748CD8C4B998D576E5D340ACAC0617DDBE461C │ │ │ │ +8E82E809D11A01D265D039F4315066832E27E08A6F067E129E45FBF533F761BB │ │ │ │ +EC3C071209BECE7D14D3184B2E6BFD65717A5A7C08F3776B20C513649488C1CF │ │ │ │ +03333805B249D1034FB0AE2D7D2A23324EE27AEDB68F8E329A8052FE58D7C0D9 │ │ │ │ +A40A0CDC79F2085C4F39A7DFDB625C8F071E2A32CF6215DD3E060A9BABF7A3AA │ │ │ │ +C57DA0C0571C5D6EEAA975D1BB9C99F8EA4958360E43E8C60080B03DC4435550 │ │ │ │ +E6048DDD35DF3E5DA69669F266FFD7B44649A68025270DC84258E329F6E6907C │ │ │ │ +BCFF900D715D0C7EC43C5E7180CAD6427BA4FD41AAD6531A5C06B0EC26DDA71F │ │ │ │ +4A9DA50DE919E79226F6DDF7C1BA478936AA86CEAD93072CC2960E98C45A1A0C │ │ │ │ +60CF8A26E4278AB4F9E28FA6532648196CC455607D6BCD00F60675DE8CC02C8C │ │ │ │ +9BE5D5B714731814D5B008EE236563D77AC6895E0158877C95797E07C02AFEBE │ │ │ │ +CC9FE97D5E103F7DB0A834E9A7A75893EC66340B0E4C6F0EEDEF43415BF9FCF4 │ │ │ │ +47340CBEA4DCFBA0D028EB2149FFBBDB3322AE5F6FD20242526EDC55E476D983 │ │ │ │ +DC │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -4338,15 +4344,15 @@ │ │ │ │ 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 3[51 12[45 22[47 15[25 3[45 3[45 │ │ │ │ -1[45 3[25 44[{}11 90.9091 /CMSL10 rf /Fe 132[52 123[{}1 │ │ │ │ +45 45 3[25 44[{}12 90.9091 /CMSL10 rf /Fe 132[52 123[{}1 │ │ │ │ 90.9091 /CMBX10 rf │ │ │ │ %DVIPSBitmapFont: Ff tcrm1095 10.95 1 │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ /Dotaccent/cedilla/ogonek/quotesinglbase.ts1 4{/.notdef}repeat │ │ │ │ /quotedblbase.ts1/.notdef/.notdef/twelveudash/threequartersemdash │ │ │ │ /afii61664.cap/arrowleft/arrowright/tieaccentlowercase/tieaccentcapital │ │ │ │ /tieaccentlowercase.new/tieaccentcapital.new/.notdef/afii61664.asc/uni2422 3 │ │ │ │ @@ -4461,17 +4467,17 @@ │ │ │ │ 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 1057 4 v │ │ │ │ -1239 w Fl(SolveMap)28 b Fd(:)41 b Fk(DRAFT)30 b Fd(Jan)m(uary)g(6,)h │ │ │ │ -(2026)p 2843 100 V 137 399 a Ff(\210)45 b Fl(int)i(nblockLower)27 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fm(2)p 136 100 1035 4 v │ │ │ │ +1217 w Fl(SolveMap)28 b Fd(:)40 b Fk(DRAFT)31 b Fd(Jan)m(uary)f(10,)h │ │ │ │ +(2026)p 2866 100 V 137 399 a Ff(\210)45 b Fl(int)i(nblockLower)27 │ │ │ │ b Fm({)k(n)m(um)m(b)s(er)e(of)i(submatrices)f(in)g(the)h(lo)m(w)m(er)g │ │ │ │ (triangle)137 588 y Ff(\210)45 b Fl(int)i(*rowidsLower)27 │ │ │ │ b Fm({)k(v)m(ector)h(of)e(ro)m(w)h(ids)f(for)g(the)h(lo)m(w)m(er)g │ │ │ │ (triangle)137 778 y Ff(\210)45 b Fl(int)i(*colidsLower)27 │ │ │ │ b Fm({)k(v)m(ector)h(of)e(column)h(ids)f(for)g(the)g(lo)m(w)m(er)i │ │ │ │ (triangle)137 967 y Ff(\210)45 b Fl(int)i(*mapLower)28 │ │ │ │ b Fm({)j(map)f(from)g(submatrices)g(to)h(threads)f(or)g(pro)s(cesses)h │ │ │ │ @@ -4523,17 +4529,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 1057 4 v 1239 100 a Fl(SolveMap)28 │ │ │ │ -b Fd(:)41 b Fk(DRAFT)121 b Fd(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2796 100 V 1057 w Fm(3)111 399 y(2.)46 b Fl(int)h(SolveMap_nfront)d(\() │ │ │ │ +TeXDict begin 3 2 bop 91 100 1035 4 v 1216 100 a Fl(SolveMap)28 │ │ │ │ +b Fd(:)41 b Fk(DRAFT)121 b Fd(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2818 100 V 1035 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 │ │ │ │ @@ -4589,17 +4595,17 @@ │ │ │ │ Fl(rowidsLower)p Fm(,)g(a)i(p)s(oin)m(ter)g(to)h(the)f(v)m(ector)h(of)f │ │ │ │ (ro)m(w)g(ids)f(of)h(the)h(submatrices)e(in)227 5253 │ │ │ │ y(the)e(lo)m(w)m(er)g(triangle.)227 5407 y Fk(Err)-5 │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fm(If)30 b Fl(solvemap)e │ │ │ │ Fm(is)j Fl(NULL)p Fm(,)e(an)i(error)f(message)h(is)g(prin)m(ted)e(and)h │ │ │ │ (the)h(program)f(exits.)p eop end │ │ │ │ %%Page: 4 4 │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fm(4)p 136 100 1057 4 v │ │ │ │ -1239 w Fl(SolveMap)28 b Fd(:)41 b Fk(DRAFT)30 b Fd(Jan)m(uary)g(6,)h │ │ │ │ -(2026)p 2843 100 V 66 399 a Fm(11.)46 b Fl(int)h(*)h │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fm(4)p 136 100 1035 4 v │ │ │ │ +1217 w Fl(SolveMap)28 b Fd(:)40 b Fk(DRAFT)31 b Fd(Jan)m(uary)f(10,)h │ │ │ │ +(2026)p 2866 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 │ │ │ │ @@ -4657,17 +4663,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 1057 4 v 1239 100 a Fl(SolveMap)28 │ │ │ │ -b Fd(:)41 b Fk(DRAFT)121 b Fd(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2796 100 V 1057 w Fm(5)0 399 y Fb(1.2.5)112 b(Solv)m(e)38 │ │ │ │ +TeXDict begin 5 4 bop 91 100 1035 4 v 1216 100 a Fl(SolveMap)28 │ │ │ │ +b Fd(:)41 b Fk(DRAFT)121 b Fd(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2818 100 V 1035 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 │ │ │ │ @@ -4735,17 +4741,17 @@ │ │ │ │ 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 1057 4 v │ │ │ │ -1239 w Fl(SolveMap)28 b Fd(:)41 b Fk(DRAFT)30 b Fd(Jan)m(uary)g(6,)h │ │ │ │ -(2026)p 2843 100 V 227 399 a Fm(\(other)d(than)e Fl(myid)p │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fm(6)p 136 100 1035 4 v │ │ │ │ +1217 w Fl(SolveMap)28 b Fd(:)40 b Fk(DRAFT)31 b Fd(Jan)m(uary)f(10,)h │ │ │ │ +(2026)p 2866 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 │ │ │ │ @@ -4824,17 +4830,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 1057 4 v 1239 100 a Fl(SolveMap)28 │ │ │ │ -b Fd(:)41 b Fk(DRAFT)121 b Fd(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2796 100 V 1057 w Fm(7)111 399 y(6.)46 b Fl(int)h │ │ │ │ +TeXDict begin 7 6 bop 91 100 1035 4 v 1216 100 a Fl(SolveMap)28 │ │ │ │ +b Fd(:)41 b Fk(DRAFT)121 b Fd(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2818 100 V 1035 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 January 6, 2026 │ │ │ │ │ + 2 SolveMap : DRAFT January 10, 2026 │ │ │ │ │ • 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 January 6, 2026 3 │ │ │ │ │ + SolveMap : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 4 SolveMap : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 5 │ │ │ │ │ + SolveMap : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 6 SolveMap : DRAFT January 10, 2026 │ │ │ │ │ (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 January 6, 2026 7 │ │ │ │ │ + SolveMap : DRAFT January 10, 2026 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 2026.01.06:2034 │ │ │ │ +%DVIPSSource: TeX output 2026.01.10:0513 │ │ │ │ %%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 │ │ │ │ @@ -2118,14 +2118,15 @@ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ /UnderlineThickness 50 def │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ +dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ dup 54 /six put │ │ │ │ dup 58 /colon put │ │ │ │ dup 74 /J put │ │ │ │ dup 97 /a put │ │ │ │ dup 110 /n put │ │ │ │ dup 114 /r put │ │ │ │ @@ -2315,79 +2316,84 @@ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB88440048702D1F │ │ │ │ -77994EE04EC3B4531D6E1888C86A8F0DA6CF1F056F16AB0DD76C862830F89DA4 │ │ │ │ -28923B3AA543E0D6E41D3BD283E600BC11F889315EE92C675C109C81065ED1BC │ │ │ │ -82A5583D1B723D50051B0557A367887F5B263014C6E77288B4883C50889473D3 │ │ │ │ -3787BAD4BEB88BD1353AFA5B73E61814819537E7FF09F53EF94792BB3DD36ED0 │ │ │ │ -002D0E7A6CDAB85A9C17AF5664BCB5A71663B861880F3ECCABC8E7A2FC81A4CC │ │ │ │ -AE7A87503FDC1CE0077BA51ECC7B43B60793FED8E9AAD5BBD03ADD6183DCD26D │ │ │ │ -24A74163611C05562437644EF9B8889FD4F9D311911204FEFD35237486F2D2D0 │ │ │ │ -B6783A03BF12EA6D19D6D0F87E4D08515F12F9CBF1961CAA71E0D69FE3C4C4D2 │ │ │ │ -7C7FB64ED24F8684C8F00C2BEDEA53EA390CDC0B5BEBD7DD982580B2EA1F1F89 │ │ │ │ -CFED5916630DC2BA32BB9180277E1ABC339B3B7DE086717BD93F7FF3681BA5B3 │ │ │ │ -FCF671C4B293C2DE4A322F0AA3323A4934444C69F23EF90120B8755482757759 │ │ │ │ -C457A435FB8BB4922BD92C5F3D9555D978275C510183E29DFF2FCE4ABBFC18DE │ │ │ │ -76CAD3B486BA12047DD808CD4D521A0FD368E4AE79DE262630983A5D6F0B679D │ │ │ │ -2F005306393C520E1B6987302D029939D94B0178DB06211C7F3B123A41E6E7BA │ │ │ │ -87164737110707A3ED3983895F3FBC815EF370F54C808ED93D910937BCA3D8AF │ │ │ │ -7CBF80DC180CDA54059DB76710B4FCD4139D5B7DA7DB1A0D0AF86AD2453D3691 │ │ │ │ -0BA5BAD40FF28BB4235FCD40FC87C2B888E67928D9B0ACA5692149373DBB93BF │ │ │ │ -6520DDD36A9BFE4D415CA67A5E04F1D48BDB28C69676273ED842CF7980E8E17C │ │ │ │ -B88563F407E340AFAE8F51AABCF8A39521BCEE1EC8396D75E124B24B4675909F │ │ │ │ -E246F87DA08584A3173AEFF153ECDF610543FA7474D125A31ADD6285A49222B5 │ │ │ │ -177066EA395BFA4B1114C7FCF7712DA772A21C99E64F4E1181E69CAF98137FA2 │ │ │ │ -76CF74F682B8CD7BA6EEA79B70FA8A76809634517F8415B6F21A5A7D6099B5E8 │ │ │ │ -EAB356BBC4FB68C72B8C61DDCE8EAB1A53B9D6BAD78584B307EFF57CEAE74884 │ │ │ │ -35987BF89E9E60E962D22FA5612F2DB5EB840499B7CC11A34BA5DEE30D277540 │ │ │ │ -39B8211D69B448ADE95B723F8369A631DE6DD75703AFD7485FB7FFF41A60CBE4 │ │ │ │ -813B8FEA120662355773830EF85015E7FFD609B2CEE52CB5FFE9C35B6BEEE4A4 │ │ │ │ -A66719E31CE1523FDD7771FB1E881A32A7DB7D92C2326DF4B93241C14ABFCCD6 │ │ │ │ -8E5BCAC61E800E6B1B4687ADA4CBF41EC0AFC26D021D1772CBDCD0516DF5EBE1 │ │ │ │ -37FD2AC5ABB8D774B5735940F1F6866D044FD8CE74444FAA5D0202C11E39CC10 │ │ │ │ -213731F41F704450E1D0565013BF22188442CE0FC256190A9F92F0C802AA2660 │ │ │ │ -614AFE9E9C82F8CD2E6035EEF84E5F16CBB690AC819B4B910EA8E81106F0ACE5 │ │ │ │ -CDFE77DAF69E4AFE72C43145A3ABCC40B6C5297487083F738C86422277AC2267 │ │ │ │ -51759F1B7F129E87DE16433B664AD0FB6D30424A11C70B52B591352BF653C8B0 │ │ │ │ -0840C224FBFEAA996A6BE1D69414DD778C2EF56A63B64D59BA412EC3E4000831 │ │ │ │ -73361FB9813F9A7C74BA3A50D331B07B61492E5D75F0861B530587269B3ADC90 │ │ │ │ -EA1DF586AC4BC57C3230893EFE953A6E76950ABA895FAC711D3BD330ABC6846A │ │ │ │ -C91F6ABF3410B913DFE5C8266020CEE5C7A9EDA2E7D9BCA797DC486443C7BA7C │ │ │ │ -7E03439A40927FA3251B6D417E5653E7799E9D6F04149C34096E2CA9B1F9B1EC │ │ │ │ -38958A2521B4A657A8B9F16E1FD66C7E345A10D7AA0241559503D214AC6507A4 │ │ │ │ -CBDE8617AA7ED136577734428594487F3565BF45FA196375759E2FE23C26EC8A │ │ │ │ -3310A36917A5E2F260EAB31030F8E570303D36B833626938F56939849DFA1F3F │ │ │ │ -66D0A317BB6364427F1512AAB380B555611C76345C02C3A6FBF78590331D5ECA │ │ │ │ -029DEFB722F6AB05327C2A31AB7BD6ED0F0386E6F45C1278048D22B90B074CCB │ │ │ │ -2BBEBCC1927C97EC532E651CAF0058AFE8FC08F00F0216D5DD9830C294FF76DA │ │ │ │ -426A073B3A3AEEFBDEE71C5182186311607ECDBD1F1AF4C5E79748CD01445C8D │ │ │ │ -25DD49490C8A6810065908222C8D0AC9F83AFBEE7115023E2D2615A170A5D40A │ │ │ │ -AD49BDF59A59187B6434F83E68EED22EF4EFDBADED6F1559AC779E0377FE7375 │ │ │ │ -D7060584FE74B1859D0FD98772253A712B17FFBB467840C484F5EF82C5677ADB │ │ │ │ -EDF159A456A526B8B9F6E8FC7608DFD47B0F09E26118F79CBE53B6C4E32BACAB │ │ │ │ -D62AFD4AA527CC4B587BB41A17A9BCE106A8C592BC9B73422B712C466C284A17 │ │ │ │ -E8D0C1E01D43C739FB1C083AD2714F78AC785B0C09AA7E67417A73510E00F2FE │ │ │ │ -E3D3EBF626A2F3A20A386E3F98D1285F4A2A332FC609CD191F01F128627B3505 │ │ │ │ -0AC2387DC0AD1B950490EBB5045F22BEC54955402CE2D267B6754E7C32BE84E8 │ │ │ │ -E6B63E3D3EAEE979442D167AEF69C27B22A8E887A2510C3A168D95D285CF7515 │ │ │ │ -011C921679B2F386575826A3F2071D015EEB78F02A4F94D4E5F07873623200F8 │ │ │ │ -7DF95BA0DC6B6D31DECC925BEA1E6A7C52FE685800EC33CBAE830F1AE5454DFA │ │ │ │ -913B8F457D7E2D3DFF019869E3301EEEC64A38295DE6B588E776922B32362382 │ │ │ │ -D1CF3D058613C8A96E6994D3EC23E8B71EC6E718383B20BB6C22DB6F93FA559F │ │ │ │ -3449CA84EB33B25C8BE0DFD1C29DC4FBD7AFBDC96C12162CAAB2C5E354B0FB10 │ │ │ │ -4BF8CC3610875ABD5111D09F2F847822118972214EDEB9EE34BAFE45E7AC15C5 │ │ │ │ -CA63EC4A3CEEA505A5EDD88A59BB67C71C3E026DFFE177F99BC69E6635545D03 │ │ │ │ -77A634F98230EF64381EC67CA519D4B9770EFA844789E21970F89D5FFC5DEAA8 │ │ │ │ -DC008EBA09306967ED090FF91B002FA6120C2B461A87AA32EFB003C5578D8EEF │ │ │ │ - │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ +AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ +E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ +46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ +FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ +389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ +7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ +2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ +C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ +B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ +AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ +E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ +F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ +0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ +2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ +29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ +CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ +6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ +5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ +36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0DD96AB602D004DCFE000A0 │ │ │ │ +ABE41BAB8AB7D50BD32BFD6F1AA3B60B09B9BE4E273EDD2DDCB21A98A760D17D │ │ │ │ +0A5C9303AFE63CF80A93E60C72A0576FAADEECBE2DE91892D210EB0AD1889C04 │ │ │ │ +C7530652584E775B4ED19CFB4B8DBCCC57A9FA9E4DDC8A1E5A1D3BE9E93407A6 │ │ │ │ +2C237ACE27F4EDA330EE952EDCBE91683AA98A29197735006666C96A2CE7C787 │ │ │ │ +BBA5A57C4DBF6FAA5B38AF226B5D9A65FAD84650AC0C3DB29C30602699F81E01 │ │ │ │ +0BAF8F1CE44A03C680121B77A1703C638187675D6C22C49F9902475E6CE9C732 │ │ │ │ +48ED028CC92EA542EF189CC9CA1C384E3387793057615D0A2BF040CC90B275B9 │ │ │ │ +F70A5310874DC2E0A360373E7BCAC88250FBC8989C7D18DA8274C06F02FCF31C │ │ │ │ +2B3868CBAF083DAC2FB159DE368261842DB7C9EA1A86B17617C861A48FBA8FF9 │ │ │ │ +D184CB026F4A418C0955347612F94C039B1536A76CB182A591DD7C02D509CF16 │ │ │ │ +8B9E46502ABF5DE31F5DFBD19C7417A2AF7AF13F0D5FF837C94CE56F07B96337 │ │ │ │ +0ED215252346FAEB54B5F3ABE29709B7ECB9FBD23A4AD397E6ABA6938F1BBF33 │ │ │ │ +1D5460D9414F0B8725DA832744525C13E3FD9C8DB33FBEE12F9C4969988402C8 │ │ │ │ +96AF916364CC2DF17EDBA622FC0A5D0013418E29F912FFA06F8D7E31ECAB0B08 │ │ │ │ +C4D2D8EE537CC768FC9038DD6D86D33642C6E812E941F157FC6917AF19C2B99A │ │ │ │ +5BF10B9A7ECF711BBB6F33C8C3DAD778153122593F36ABDDC0E97A602B045DE6 │ │ │ │ +19BD82D877DDA960AB11EF48C7F75A28D0D731D4A5DBC98283087267CD1A470D │ │ │ │ +537E949DA5EECF097B099547995BE066A941CED683B5748962AD2B02C21636C0 │ │ │ │ +2EAFA33CA0CB3BF8A95703F015A210D918865B9BEA2890DCFB68BC3719C305EC │ │ │ │ +315EC8727BF9A93632AB9E3090B100C022EE1396CD329B37547F26A7DCE52BD7 │ │ │ │ +F91B7388DEC34F4A0C6D46CD7CA6ACC00C5C4C71E47C6AD96496B3CBF531F342 │ │ │ │ +A740EE6B99BD70AD490DFA700772A0697EC6561CE88A0113E4DC3B21F372D810 │ │ │ │ +DFF2C3F6EDF3E917BF2664EEFC9AD292DD6CC36853CF936018D43FDB28D5B001 │ │ │ │ +7D1C805F958F13FD221377ABDD69D102E8CC1DAB2E011EE16CF6DB9D195BA702 │ │ │ │ +5A8738FABF989B0351282D0E5121182DFC52169782A5F3DD5D820411BEF909DE │ │ │ │ +04D963E6FDA76F88508C4E91DDAAA1748F396A1D380D8CA429673AF27C164434 │ │ │ │ +771781B39565D3EE50F3CF03EF12908B13A6C11C9AB7631B32125828B13050BA │ │ │ │ +041A93B97AC32D4A1E28C5FA98CDEE998B5F97823D6291D01E3611A16854F1FE │ │ │ │ +69B9D6D2AE3E56D012B7BC3E582FB4C23188A5E365E65EB1F804A706AF73A2F8 │ │ │ │ +9804808EF71F0982B14133BF9A27D6F2E719BDB751022B1B052722933948904E │ │ │ │ +3582E363478DCDA115205A0FDE39DF71FEAEEB104419C35A6B0678C19616C6D9 │ │ │ │ +A892DC2F4257069AF096C80C099CD13024DF3995F28C694E00D1F08B43D4450C │ │ │ │ +D18F5C925CFD2D124E74FC64BBAA0DE32A79E4A4507B5B5DD834C67160CDA110 │ │ │ │ +EF0061DD27E8864F4250A92BBEFD75C784BB98F4FA789A8236C2A21E4E61ABD0 │ │ │ │ +C6B4D13B3C31AC8E55FA34BEC7C308C61FB0280382EC6AFD63D959678D42D2B3 │ │ │ │ +4134F6236A0808D9302B4E3C6F81FC6973B4833602750CCB5DE36AEA23ED6BD4 │ │ │ │ +5B72DF0DD7B81C871CAA6EC190748CD8C4B998D576E5D340ACAC0617DDBE461C │ │ │ │ +8E82E809D11A01D265D039F4315066832E27E08A6F067E129E45FBF533F761BB │ │ │ │ +EC3C071209BECE7D14D3184B2E6BFD65717A5A7C08F3776B20C513649488C1CF │ │ │ │ +03333805B249D1034FB0AE2D7D2A23324EE27AEDB68F8E329A8052FE58D7C0D9 │ │ │ │ +A40A0CDC79F2085C4F39A7DFDB625C8F071E2A32CF6215DD3E060A9BABF7A3AA │ │ │ │ +C57DA0C0571C5D6EEAA975D1BB9C99F8EA4958360E43E8C60080B03DC4435550 │ │ │ │ +E6048DDD35DF3E5DA69669F266FFD7B44649A68025270DC84258E329F6E6907C │ │ │ │ +BCFF900D715D0C7EC43C5E7180CAD6427BA4FD41AAD6531A5C06B0EC26DDA71F │ │ │ │ +4A9DA50DE919E79226F6DDF7C1BA478936AA86CEAD93072CC2960E98C45A1A0C │ │ │ │ +60CF8A26E4278AB4F9E28FA6532648196CC455607D6BCD00F60675DE8CC02C8C │ │ │ │ +9BE5D5B714731814D5B008EE236563D77AC6895E0158877C95797E07C02AFEBE │ │ │ │ +CC9FE97D5E103F7DB0A834E9A7A75893EC66340B0E4C6F0EEDEF43415BF9FCF4 │ │ │ │ +47340CBEA4DCFBA0D028EB2149FFBBDB3322AE5F6FD20242526EDC55E476D983 │ │ │ │ +DC │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -5233,15 +5239,15 @@ │ │ │ │ 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 3[51 │ │ │ │ -12[45 22[47 15[25 3[45 3[45 1[45 3[25 44[{}11 90.9091 │ │ │ │ +12[45 22[47 15[25 3[45 3[45 45 45 3[25 44[{}12 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 │ │ │ │ @@ -5366,17 +5372,17 @@ │ │ │ │ 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 1105 4 v │ │ │ │ -1287 w Fn(SubMtx)29 b Fg(:)40 b Ff(DRAFT)31 b Fg(Jan)m(uary)f(6,)h │ │ │ │ -(2026)p 2795 100 V 330 399 a Fh({)45 b Fo(a)31 b(diagonal)h(matrix)330 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fo(2)p 136 100 1082 4 v │ │ │ │ +1264 w Fn(SubMtx)29 b Fg(:)41 b Ff(DRAFT)30 b Fg(Jan)m(uary)g(10,)h │ │ │ │ +(2026)p 2818 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 │ │ │ │ @@ -5447,17 +5453,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 1105 4 v 1287 100 a Fn(SubMtx)28 │ │ │ │ -b Fg(:)41 b Ff(DRAFT)121 b Fg(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2748 100 V 1105 w Fo(3)330 399 y Fh({)45 b Fn(SPOOLES)p │ │ │ │ +TeXDict begin 3 2 bop 91 100 1082 4 v 1264 100 a Fn(SubMtx)28 │ │ │ │ +b Fg(:)41 b Ff(DRAFT)121 b Fg(Jan)m(uary)30 b(10,)i(2026)p │ │ │ │ +2771 100 V 1082 w Fo(3)330 399 y Fh({)45 b Fn(SPOOLES)p │ │ │ │ 769 399 29 4 v 33 w(COMPLEX)28 b Fo(:)j(double)f(precision)g(complex)h │ │ │ │ (en)m(tries.)137 590 y Fi(\210)45 b Fn(int)i(mode)29 │ │ │ │ b Fo(:)41 b(storage)32 b(mo)s(de.)330 781 y Fh({)45 b │ │ │ │ Fn(SUBMTX)p 721 781 V 33 w(DENSE)p 994 781 V 33 w(ROWS)29 │ │ │ │ b Fo(:)i(dense,)f(storage)i(b)m(y)e(ro)m(ws.)330 929 │ │ │ │ y Fh({)45 b Fn(SUBMTX)p 721 929 V 33 w(DENSE)p 994 929 │ │ │ │ V 33 w(COLUMNS)28 b Fo(:)j(dense,)f(storage)i(b)m(y)e(columns.)330 │ │ │ │ @@ -5519,17 +5525,17 @@ │ │ │ │ g(storage)h(format,)f(and)f Fn(0)g Fo(other-)227 5103 │ │ │ │ y(wise.)137 5294 y Fi(\210)45 b Fn(SUBMTX)p 521 5294 │ │ │ │ V 33 w(IS)p 650 5294 V 34 w(SPARSE)p 972 5294 V 33 w(COLUMNS\(mtx\))25 │ │ │ │ b Fo(is)30 b Fn(1)e Fo(if)h Fn(mtx)g Fo(has)g(sparse)f(columns)h(as)h │ │ │ │ (its)f(storage)i(format,)f(and)e Fn(0)227 5407 y Fo(otherwise.)p │ │ │ │ eop end │ │ │ │ %%Page: 4 4 │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fo(4)p 136 100 1105 4 v │ │ │ │ -1287 w Fn(SubMtx)29 b Fg(:)40 b Ff(DRAFT)31 b Fg(Jan)m(uary)f(6,)h │ │ │ │ -(2026)p 2795 100 V 137 399 a Fi(\210)45 b Fn(SUBMTX)p │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fo(4)p 136 100 1082 4 v │ │ │ │ +1264 w Fn(SubMtx)29 b Fg(:)41 b Ff(DRAFT)30 b Fg(Jan)m(uary)g(10,)h │ │ │ │ +(2026)p 2818 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 │ │ │ │ @@ -5593,17 +5599,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 1105 4 v 1287 100 a Fn(SubMtx)28 │ │ │ │ -b Fg(:)41 b Ff(DRAFT)121 b Fg(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2748 100 V 1105 w Fo(5)0 399 y Fc(1.2.2)112 b(Instance)38 │ │ │ │ +TeXDict begin 5 4 bop 91 100 1082 4 v 1264 100 a Fn(SubMtx)28 │ │ │ │ +b Fg(:)41 b Ff(DRAFT)121 b Fg(Jan)m(uary)30 b(10,)i(2026)p │ │ │ │ +2771 100 V 1082 w Fo(5)0 399 y Fc(1.2.2)112 b(Instance)38 │ │ │ │ b(metho)s(ds)111 597 y Fo(1.)46 b Fn(void)h(SubMtx_ids)e(\()i(SubMtx)f │ │ │ │ (*mtx,)h(int)g(*prowid,)e(int)i(*pcolid)f(\))h(;)227 │ │ │ │ 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 │ │ │ │ @@ -5671,17 +5677,17 @@ │ │ │ │ (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 1105 4 v │ │ │ │ -1287 w Fn(SubMtx)29 b Fg(:)40 b Ff(DRAFT)31 b Fg(Jan)m(uary)f(6,)h │ │ │ │ -(2026)p 2795 100 V 227 399 a Fn(*pentries)g Fo(with)i(the)g(base)g │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fo(6)p 136 100 1082 4 v │ │ │ │ +1264 w Fn(SubMtx)29 b Fg(:)41 b Ff(DRAFT)30 b Fg(Jan)m(uary)g(10,)h │ │ │ │ +(2026)p 2818 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 │ │ │ │ @@ -5768,17 +5774,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 1105 4 v 1287 100 a Fn(SubMtx)28 │ │ │ │ -b Fg(:)41 b Ff(DRAFT)121 b Fg(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2748 100 V 1105 w Fo(7)227 399 y(column)38 b Fn(jcol)p │ │ │ │ +TeXDict begin 7 6 bop 91 100 1082 4 v 1264 100 a Fn(SubMtx)28 │ │ │ │ +b Fg(:)41 b Ff(DRAFT)121 b Fg(Jan)m(uary)30 b(10,)i(2026)p │ │ │ │ +2771 100 V 1082 w Fo(7)227 399 y(column)38 b Fn(jcol)p │ │ │ │ Fo(,)h(the)g(nonzero)f(en)m(tries)h(are)f(found)f(in)h(ro)m(ws)g │ │ │ │ Fn([firstlocs[jcol],lastlo)o(cs[j)o(col])o(])227 511 │ │ │ │ y Fo(when)32 b Fn(firstlocs[jcol])24 b Fj(\025)k Fo(0)33 │ │ │ │ b(and)f Fn(firstlocs[jcol])24 b Fj(\024)29 b Fn(lastlocs[jcol])l │ │ │ │ Fo(.)47 b(The)31 b(en)m(tries)j(for)e(the)227 624 y(columns)e(are)h │ │ │ │ (stored)g(con)m(tiguously)-8 b(.)227 787 y Ff(Err)j(or)32 │ │ │ │ b(che)-5 b(cking:)39 b Fo(If)28 b Fn(mtx)p Fo(,)g Fn(pnrow)p │ │ │ │ @@ -5853,17 +5859,17 @@ │ │ │ │ Fn(pReal)e Fo(or)i Fn(pImag)e Fo(is)i Fn(NULL)p Fo(,)f(or)h(if)g │ │ │ │ Fn(irow)e Fo(or)i Fn(jcol)f Fo(is)h(out)g(of)g(range,)h(an)e(error)227 │ │ │ │ 5082 y(message)g(is)e(prin)m(ted)g(and)g(the)g(program)h(exits.)66 │ │ │ │ 5294 y(16.)46 b Fn(void)95 b(SubMtx_locationOfRealEn)o(try)41 │ │ │ │ b(\()48 b(SubMtx)e(*mtx,)g(int)h(irow,)f(int)h(jcol,)1898 │ │ │ │ 5407 y(double)f(**ppValue)f(\))j(;)p eop end │ │ │ │ %%Page: 8 8 │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fo(8)p 136 100 1105 4 v │ │ │ │ -1287 w Fn(SubMtx)29 b Fg(:)40 b Ff(DRAFT)31 b Fg(Jan)m(uary)f(6,)h │ │ │ │ -(2026)p 2795 100 V 227 399 a Fo(If)i(the)g Fn(\(irow,jcol\))d │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fo(8)p 136 100 1082 4 v │ │ │ │ +1264 w Fn(SubMtx)29 b Fg(:)41 b Ff(DRAFT)30 b Fg(Jan)m(uary)g(10,)h │ │ │ │ +(2026)p 2818 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 │ │ │ │ @@ -5936,17 +5942,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 1105 4 v 1287 100 a Fn(SubMtx)28 │ │ │ │ -b Fg(:)41 b Ff(DRAFT)121 b Fg(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2748 100 V 1105 w Fo(9)111 399 y(4.)46 b Fn(void)h │ │ │ │ +TeXDict begin 9 8 bop 91 100 1082 4 v 1264 100 a Fn(SubMtx)28 │ │ │ │ +b Fg(:)41 b Ff(DRAFT)121 b Fg(Jan)m(uary)30 b(10,)i(2026)p │ │ │ │ +2771 100 V 1082 w Fo(9)111 399 y(4.)46 b Fn(void)h │ │ │ │ (SubMtx_initRandomLowerTr)o(iang)o(le)41 b(\()48 b(SubMtx)e(*mtx,)g │ │ │ │ (int)h(type,)g(int)g(mode,)370 511 y(int)g(rowid,)f(int)h(colid,)f(int) │ │ │ │ h(nrow,)g(int)g(ncol,)f(int)h(nent,)f(int)h(seed,)g(int)f(strict)h(\))g │ │ │ │ (;)227 624 y(void)g(SubMtx_initRandomUpperTr)o(iang)o(le)41 │ │ │ │ b(\()48 b(SubMtx)e(*mtx,)g(int)h(type,)g(int)g(mode,)370 │ │ │ │ 737 y(int)g(rowid,)f(int)h(colid,)f(int)h(nrow,)g(int)g(ncol,)f(int)h │ │ │ │ (nent,)f(int)h(seed,)g(int)f(strict)h(\))g(;)227 885 │ │ │ │ @@ -6028,17 +6034,17 @@ │ │ │ │ (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 1082 4 │ │ │ │ -v 1265 w Fn(SubMtx)28 b Fg(:)41 b Ff(DRAFT)30 b Fg(Jan)m(uary)g(6,)h │ │ │ │ -(2026)p 2818 100 V 111 399 a Fo(2.)46 b Fn(void)h(SubMtx_solveH)d(\()k │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fo(10)p 182 100 1060 4 │ │ │ │ +v 1242 w Fn(SubMtx)29 b Fg(:)40 b Ff(DRAFT)31 b Fg(Jan)m(uary)f(10,)h │ │ │ │ +(2026)p 2841 100 V 111 399 a Fo(2.)46 b Fn(void)h(SubMtx_solveH)d(\()k │ │ │ │ (SubMtx)e(*mtxA,)g(SubMtx)g(*mtxB)g(\))i(;)227 547 y │ │ │ │ Fo(This)24 b(metho)s(d)f(is)h(used)g(to)h(solv)m(e)g(\()p │ │ │ │ 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 │ │ │ │ @@ -6111,17 +6117,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 1082 4 v 1264 100 a Fn(SubMtx)28 │ │ │ │ -b Fg(:)41 b Ff(DRAFT)121 b Fg(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2725 100 V 1082 w Fo(11)227 399 y Ff(Err)-5 b(or)34 b(che)-5 │ │ │ │ +TeXDict begin 11 10 bop 91 100 1060 4 v 1241 100 a Fn(SubMtx)29 │ │ │ │ +b Fg(:)40 b Ff(DRAFT)122 b Fg(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2748 100 V 1060 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 │ │ │ │ @@ -6179,17 +6185,17 @@ │ │ │ │ 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 1082 │ │ │ │ -4 v 1265 w Fn(SubMtx)28 b Fg(:)41 b Ff(DRAFT)30 b Fg(Jan)m(uary)g(6,)h │ │ │ │ -(2026)p 2818 100 V 66 399 a Fo(11.)46 b Fn(void)h(SubMtx_fillRowZV)c │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fo(12)p 182 100 1060 │ │ │ │ +4 v 1242 w Fn(SubMtx)29 b Fg(:)40 b Ff(DRAFT)31 b Fg(Jan)m(uary)f(10,)h │ │ │ │ +(2026)p 2841 100 V 66 399 a Fo(11.)46 b Fn(void)h(SubMtx_fillRowZV)c │ │ │ │ (\()48 b(SubMtx)e(*mtx,)g(int)h(irow,)f(ZV)i(*rowZV)e(\))h(;)227 │ │ │ │ 551 y Fo(This)35 b(metho)s(d)f(is)h(used)f(for)h(complex)h │ │ │ │ (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 │ │ │ │ @@ -6253,17 +6259,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 1082 4 v 1264 100 a Fn(SubMtx)28 │ │ │ │ -b Fg(:)41 b Ff(DRAFT)121 b Fg(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2725 100 V 1082 w Fo(13)227 399 y(Note,)40 b(if)c(the)g(m)m(txutation)i │ │ │ │ +TeXDict begin 13 12 bop 91 100 1060 4 v 1241 100 a Fn(SubMtx)29 │ │ │ │ +b Fg(:)40 b Ff(DRAFT)122 b Fg(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2748 100 V 1060 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 │ │ │ │ @@ -6332,17 +6338,17 @@ │ │ │ │ (follo)m(w)h(the)f(Matlab)h(and)e(F)m(OR)-8 b(TRAN)227 │ │ │ │ 5146 y(con)m(v)m(en)m(tion.)227 5294 y Ff(Err)j(or)45 │ │ │ │ b(che)-5 b(cking:)63 b Fo(If)42 b Fn(mtx)p Fo(,)i Fn(mtxname)c │ │ │ │ Fo(or)i Fn(fp)f Fo(are)h Fn(NULL)p Fo(,)f(an)h(error)f(message)i(is)f │ │ │ │ (prin)m(ted)g(and)f(zero)i(is)227 5407 y(returned.)p │ │ │ │ eop end │ │ │ │ %%Page: 14 14 │ │ │ │ -TeXDict begin 14 13 bop 0 100 a Fo(14)p 182 100 1082 │ │ │ │ -4 v 1265 w Fn(SubMtx)28 b Fg(:)41 b Ff(DRAFT)30 b Fg(Jan)m(uary)g(6,)h │ │ │ │ -(2026)p 2818 100 V 0 399 a Fe(1.3)135 b(Driv)l(er)46 │ │ │ │ +TeXDict begin 14 13 bop 0 100 a Fo(14)p 182 100 1060 │ │ │ │ +4 v 1242 w Fn(SubMtx)29 b Fg(:)40 b Ff(DRAFT)31 b Fg(Jan)m(uary)f(10,)h │ │ │ │ +(2026)p 2841 100 V 0 399 a Fe(1.3)135 b(Driv)l(er)46 │ │ │ │ b(programs)g(for)f(the)g Fd(SubMtx)58 b(object)111 629 │ │ │ │ y 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 │ │ │ │ @@ -6409,17 +6415,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 1082 4 v 1264 100 a Fn(SubMtx)28 │ │ │ │ -b Fg(:)41 b Ff(DRAFT)121 b Fg(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2725 100 V 1082 w Fo(15)337 399 y Fi(\210)45 b Fo(The)33 │ │ │ │ +TeXDict begin 15 14 bop 91 100 1060 4 v 1241 100 a Fn(SubMtx)29 │ │ │ │ +b Fg(:)40 b Ff(DRAFT)122 b Fg(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2748 100 V 1060 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 │ │ │ │ @@ -6499,17 +6505,17 @@ │ │ │ │ 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 1082 │ │ │ │ -4 v 1265 w Fn(SubMtx)28 b Fg(:)41 b Ff(DRAFT)30 b Fg(Jan)m(uary)g(6,)h │ │ │ │ -(2026)p 2818 100 V 337 399 a Fi(\210)45 b Fo(The)33 b │ │ │ │ +TeXDict begin 16 15 bop 0 100 a Fo(16)p 182 100 1060 │ │ │ │ +4 v 1242 w Fn(SubMtx)29 b Fg(:)40 b Ff(DRAFT)31 b Fg(Jan)m(uary)f(10,)h │ │ │ │ +(2026)p 2841 100 V 337 399 a Fi(\210)45 b Fo(The)33 b │ │ │ │ Fn(msgFile)e Fo(parameter)j(determines)f(the)h(message)g(\014le)f(|)h │ │ │ │ (if)f Fn(msgFile)e Fo(is)i Fn(stdout)p Fo(,)g(then)g(the)427 │ │ │ │ 511 y(message)27 b(\014le)f(is)g Ff(stdout)p Fo(,)i(otherwise)e(a)h │ │ │ │ (\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 │ │ │ │ @@ -6591,17 +6597,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 1082 4 v 1264 100 a Fn(SubMtx)28 │ │ │ │ -b Fg(:)41 b Ff(DRAFT)121 b Fg(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2725 100 V 1082 w Fo(17)337 399 y Fi(\210)45 b Fo(The)f │ │ │ │ +TeXDict begin 17 16 bop 91 100 1060 4 v 1241 100 a Fn(SubMtx)29 │ │ │ │ +b Fg(:)40 b Ff(DRAFT)122 b Fg(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2748 100 V 1060 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 │ │ │ │ @@ -6680,17 +6686,17 @@ │ │ │ │ (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 1082 │ │ │ │ -4 v 1265 w Fn(SubMtx)28 b Fg(:)41 b Ff(DRAFT)30 b Fg(Jan)m(uary)g(6,)h │ │ │ │ -(2026)p 2818 100 V 111 399 a Fo(9.)46 b Fn(test_sort)g(msglvl)g │ │ │ │ +TeXDict begin 18 17 bop 0 100 a Fo(18)p 182 100 1060 │ │ │ │ +4 v 1242 w Fn(SubMtx)29 b Fg(:)40 b Ff(DRAFT)31 b Fg(Jan)m(uary)f(10,)h │ │ │ │ +(2026)p 2841 100 V 111 399 a Fo(9.)46 b Fn(test_sort)g(msglvl)g │ │ │ │ (msgFile)f(type)i(mode)g(nrowA)f(ncolA)g(nentA)h(seed)227 │ │ │ │ 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 │ │ │ │ ├── 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 January 6, 2026 │ │ │ │ │ + 2 SubMtx : DRAFT January 10, 2026 │ │ │ │ │ – 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 January 6, 2026 3 │ │ │ │ │ + SubMtx : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 4 SubMtx : DRAFT January 10, 2026 │ │ │ │ │ • 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 January 6, 2026 5 │ │ │ │ │ + SubMtx : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 6 SubMtx : DRAFT January 10, 2026 │ │ │ │ │ *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 January 6, 2026 7 │ │ │ │ │ + SubMtx : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 8 SubMtx : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 9 │ │ │ │ │ + SubMtx : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 10 SubMtx : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 11 │ │ │ │ │ + SubMtx : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 12 SubMtx : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 13 │ │ │ │ │ + SubMtx : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 14 SubMtx : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 15 │ │ │ │ │ + SubMtx : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 16 SubMtx : DRAFT January 10, 2026 │ │ │ │ │ • 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 January 6, 2026 17 │ │ │ │ │ + SubMtx : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 18 SubMtx : DRAFT January 10, 2026 │ │ │ │ │ 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 2026.01.06:2034 │ │ │ │ +%DVIPSSource: TeX output 2026.01.10:0513 │ │ │ │ %%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 │ │ │ │ @@ -1776,14 +1776,15 @@ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ /UnderlineThickness 50 def │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ +dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ dup 54 /six put │ │ │ │ dup 58 /colon put │ │ │ │ dup 74 /J put │ │ │ │ dup 97 /a put │ │ │ │ dup 110 /n put │ │ │ │ dup 114 /r put │ │ │ │ @@ -1973,79 +1974,84 @@ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB88440048702D1F │ │ │ │ -77994EE04EC3B4531D6E1888C86A8F0DA6CF1F056F16AB0DD76C862830F89DA4 │ │ │ │ -28923B3AA543E0D6E41D3BD283E600BC11F889315EE92C675C109C81065ED1BC │ │ │ │ -82A5583D1B723D50051B0557A367887F5B263014C6E77288B4883C50889473D3 │ │ │ │ -3787BAD4BEB88BD1353AFA5B73E61814819537E7FF09F53EF94792BB3DD36ED0 │ │ │ │ -002D0E7A6CDAB85A9C17AF5664BCB5A71663B861880F3ECCABC8E7A2FC81A4CC │ │ │ │ -AE7A87503FDC1CE0077BA51ECC7B43B60793FED8E9AAD5BBD03ADD6183DCD26D │ │ │ │ -24A74163611C05562437644EF9B8889FD4F9D311911204FEFD35237486F2D2D0 │ │ │ │ -B6783A03BF12EA6D19D6D0F87E4D08515F12F9CBF1961CAA71E0D69FE3C4C4D2 │ │ │ │ -7C7FB64ED24F8684C8F00C2BEDEA53EA390CDC0B5BEBD7DD982580B2EA1F1F89 │ │ │ │ -CFED5916630DC2BA32BB9180277E1ABC339B3B7DE086717BD93F7FF3681BA5B3 │ │ │ │ -FCF671C4B293C2DE4A322F0AA3323A4934444C69F23EF90120B8755482757759 │ │ │ │ -C457A435FB8BB4922BD92C5F3D9555D978275C510183E29DFF2FCE4ABBFC18DE │ │ │ │ -76CAD3B486BA12047DD808CD4D521A0FD368E4AE79DE262630983A5D6F0B679D │ │ │ │ -2F005306393C520E1B6987302D029939D94B0178DB06211C7F3B123A41E6E7BA │ │ │ │ -87164737110707A3ED3983895F3FBC815EF370F54C808ED93D910937BCA3D8AF │ │ │ │ -7CBF80DC180CDA54059DB76710B4FCD4139D5B7DA7DB1A0D0AF86AD2453D3691 │ │ │ │ -0BA5BAD40FF28BB4235FCD40FC87C2B888E67928D9B0ACA5692149373DBB93BF │ │ │ │ -6520DDD36A9BFE4D415CA67A5E04F1D48BDB28C69676273ED842CF7980E8E17C │ │ │ │ -B88563F407E340AFAE8F51AABCF8A39521BCEE1EC8396D75E124B24B4675909F │ │ │ │ -E246F87DA08584A3173AEFF153ECDF610543FA7474D125A31ADD6285A49222B5 │ │ │ │ -177066EA395BFA4B1114C7FCF7712DA772A21C99E64F4E1181E69CAF98137FA2 │ │ │ │ -76CF74F682B8CD7BA6EEA79B70FA8A76809634517F8415B6F21A5A7D6099B5E8 │ │ │ │ -EAB356BBC4FB68C72B8C61DDCE8EAB1A53B9D6BAD78584B307EFF57CEAE74884 │ │ │ │ -35987BF89E9E60E962D22FA5612F2DB5EB840499B7CC11A34BA5DEE30D277540 │ │ │ │ -39B8211D69B448ADE95B723F8369A631DE6DD75703AFD7485FB7FFF41A60CBE4 │ │ │ │ -813B8FEA120662355773830EF85015E7FFD609B2CEE52CB5FFE9C35B6BEEE4A4 │ │ │ │ -A66719E31CE1523FDD7771FB1E881A32A7DB7D92C2326DF4B93241C14ABFCCD6 │ │ │ │ -8E5BCAC61E800E6B1B4687ADA4CBF41EC0AFC26D021D1772CBDCD0516DF5EBE1 │ │ │ │ -37FD2AC5ABB8D774B5735940F1F6866D044FD8CE74444FAA5D0202C11E39CC10 │ │ │ │ -213731F41F704450E1D0565013BF22188442CE0FC256190A9F92F0C802AA2660 │ │ │ │ -614AFE9E9C82F8CD2E6035EEF84E5F16CBB690AC819B4B910EA8E81106F0ACE5 │ │ │ │ -CDFE77DAF69E4AFE72C43145A3ABCC40B6C5297487083F738C86422277AC2267 │ │ │ │ -51759F1B7F129E87DE16433B664AD0FB6D30424A11C70B52B591352BF653C8B0 │ │ │ │ -0840C224FBFEAA996A6BE1D69414DD778C2EF56A63B64D59BA412EC3E4000831 │ │ │ │ -73361FB9813F9A7C74BA3A50D331B07B61492E5D75F0861B530587269B3ADC90 │ │ │ │ -EA1DF586AC4BC57C3230893EFE953A6E76950ABA895FAC711D3BD330ABC6846A │ │ │ │ -C91F6ABF3410B913DFE5C8266020CEE5C7A9EDA2E7D9BCA797DC486443C7BA7C │ │ │ │ -7E03439A40927FA3251B6D417E5653E7799E9D6F04149C34096E2CA9B1F9B1EC │ │ │ │ -38958A2521B4A657A8B9F16E1FD66C7E345A10D7AA0241559503D214AC6507A4 │ │ │ │ -CBDE8617AA7ED136577734428594487F3565BF45FA196375759E2FE23C26EC8A │ │ │ │ -3310A36917A5E2F260EAB31030F8E570303D36B833626938F56939849DFA1F3F │ │ │ │ -66D0A317BB6364427F1512AAB380B555611C76345C02C3A6FBF78590331D5ECA │ │ │ │ -029DEFB722F6AB05327C2A31AB7BD6ED0F0386E6F45C1278048D22B90B074CCB │ │ │ │ -2BBEBCC1927C97EC532E651CAF0058AFE8FC08F00F0216D5DD9830C294FF76DA │ │ │ │ -426A073B3A3AEEFBDEE71C5182186311607ECDBD1F1AF4C5E79748CD01445C8D │ │ │ │ -25DD49490C8A6810065908222C8D0AC9F83AFBEE7115023E2D2615A170A5D40A │ │ │ │ -AD49BDF59A59187B6434F83E68EED22EF4EFDBADED6F1559AC779E0377FE7375 │ │ │ │ -D7060584FE74B1859D0FD98772253A712B17FFBB467840C484F5EF82C5677ADB │ │ │ │ -EDF159A456A526B8B9F6E8FC7608DFD47B0F09E26118F79CBE53B6C4E32BACAB │ │ │ │ -D62AFD4AA527CC4B587BB41A17A9BCE106A8C592BC9B73422B712C466C284A17 │ │ │ │ -E8D0C1E01D43C739FB1C083AD2714F78AC785B0C09AA7E67417A73510E00F2FE │ │ │ │ -E3D3EBF626A2F3A20A386E3F98D1285F4A2A332FC609CD191F01F128627B3505 │ │ │ │ -0AC2387DC0AD1B950490EBB5045F22BEC54955402CE2D267B6754E7C32BE84E8 │ │ │ │ -E6B63E3D3EAEE979442D167AEF69C27B22A8E887A2510C3A168D95D285CF7515 │ │ │ │ -011C921679B2F386575826A3F2071D015EEB78F02A4F94D4E5F07873623200F8 │ │ │ │ -7DF95BA0DC6B6D31DECC925BEA1E6A7C52FE685800EC33CBAE830F1AE5454DFA │ │ │ │ -913B8F457D7E2D3DFF019869E3301EEEC64A38295DE6B588E776922B32362382 │ │ │ │ -D1CF3D058613C8A96E6994D3EC23E8B71EC6E718383B20BB6C22DB6F93FA559F │ │ │ │ -3449CA84EB33B25C8BE0DFD1C29DC4FBD7AFBDC96C12162CAAB2C5E354B0FB10 │ │ │ │ -4BF8CC3610875ABD5111D09F2F847822118972214EDEB9EE34BAFE45E7AC15C5 │ │ │ │ -CA63EC4A3CEEA505A5EDD88A59BB67C71C3E026DFFE177F99BC69E6635545D03 │ │ │ │ -77A634F98230EF64381EC67CA519D4B9770EFA844789E21970F89D5FFC5DEAA8 │ │ │ │ -DC008EBA09306967ED090FF91B002FA6120C2B461A87AA32EFB003C5578D8EEF │ │ │ │ - │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ +AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ +E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ +46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ +FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ +389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ +7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ +2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ +C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ +B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ +AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ +E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ +F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ +0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ +2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ +29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ +CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ +6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ +5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ +36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0DD96AB602D004DCFE000A0 │ │ │ │ +ABE41BAB8AB7D50BD32BFD6F1AA3B60B09B9BE4E273EDD2DDCB21A98A760D17D │ │ │ │ +0A5C9303AFE63CF80A93E60C72A0576FAADEECBE2DE91892D210EB0AD1889C04 │ │ │ │ +C7530652584E775B4ED19CFB4B8DBCCC57A9FA9E4DDC8A1E5A1D3BE9E93407A6 │ │ │ │ +2C237ACE27F4EDA330EE952EDCBE91683AA98A29197735006666C96A2CE7C787 │ │ │ │ +BBA5A57C4DBF6FAA5B38AF226B5D9A65FAD84650AC0C3DB29C30602699F81E01 │ │ │ │ +0BAF8F1CE44A03C680121B77A1703C638187675D6C22C49F9902475E6CE9C732 │ │ │ │ +48ED028CC92EA542EF189CC9CA1C384E3387793057615D0A2BF040CC90B275B9 │ │ │ │ +F70A5310874DC2E0A360373E7BCAC88250FBC8989C7D18DA8274C06F02FCF31C │ │ │ │ +2B3868CBAF083DAC2FB159DE368261842DB7C9EA1A86B17617C861A48FBA8FF9 │ │ │ │ +D184CB026F4A418C0955347612F94C039B1536A76CB182A591DD7C02D509CF16 │ │ │ │ +8B9E46502ABF5DE31F5DFBD19C7417A2AF7AF13F0D5FF837C94CE56F07B96337 │ │ │ │ +0ED215252346FAEB54B5F3ABE29709B7ECB9FBD23A4AD397E6ABA6938F1BBF33 │ │ │ │ +1D5460D9414F0B8725DA832744525C13E3FD9C8DB33FBEE12F9C4969988402C8 │ │ │ │ +96AF916364CC2DF17EDBA622FC0A5D0013418E29F912FFA06F8D7E31ECAB0B08 │ │ │ │ +C4D2D8EE537CC768FC9038DD6D86D33642C6E812E941F157FC6917AF19C2B99A │ │ │ │ +5BF10B9A7ECF711BBB6F33C8C3DAD778153122593F36ABDDC0E97A602B045DE6 │ │ │ │ +19BD82D877DDA960AB11EF48C7F75A28D0D731D4A5DBC98283087267CD1A470D │ │ │ │ +537E949DA5EECF097B099547995BE066A941CED683B5748962AD2B02C21636C0 │ │ │ │ +2EAFA33CA0CB3BF8A95703F015A210D918865B9BEA2890DCFB68BC3719C305EC │ │ │ │ +315EC8727BF9A93632AB9E3090B100C022EE1396CD329B37547F26A7DCE52BD7 │ │ │ │ +F91B7388DEC34F4A0C6D46CD7CA6ACC00C5C4C71E47C6AD96496B3CBF531F342 │ │ │ │ +A740EE6B99BD70AD490DFA700772A0697EC6561CE88A0113E4DC3B21F372D810 │ │ │ │ +DFF2C3F6EDF3E917BF2664EEFC9AD292DD6CC36853CF936018D43FDB28D5B001 │ │ │ │ +7D1C805F958F13FD221377ABDD69D102E8CC1DAB2E011EE16CF6DB9D195BA702 │ │ │ │ +5A8738FABF989B0351282D0E5121182DFC52169782A5F3DD5D820411BEF909DE │ │ │ │ +04D963E6FDA76F88508C4E91DDAAA1748F396A1D380D8CA429673AF27C164434 │ │ │ │ +771781B39565D3EE50F3CF03EF12908B13A6C11C9AB7631B32125828B13050BA │ │ │ │ +041A93B97AC32D4A1E28C5FA98CDEE998B5F97823D6291D01E3611A16854F1FE │ │ │ │ +69B9D6D2AE3E56D012B7BC3E582FB4C23188A5E365E65EB1F804A706AF73A2F8 │ │ │ │ +9804808EF71F0982B14133BF9A27D6F2E719BDB751022B1B052722933948904E │ │ │ │ +3582E363478DCDA115205A0FDE39DF71FEAEEB104419C35A6B0678C19616C6D9 │ │ │ │ +A892DC2F4257069AF096C80C099CD13024DF3995F28C694E00D1F08B43D4450C │ │ │ │ +D18F5C925CFD2D124E74FC64BBAA0DE32A79E4A4507B5B5DD834C67160CDA110 │ │ │ │ +EF0061DD27E8864F4250A92BBEFD75C784BB98F4FA789A8236C2A21E4E61ABD0 │ │ │ │ +C6B4D13B3C31AC8E55FA34BEC7C308C61FB0280382EC6AFD63D959678D42D2B3 │ │ │ │ +4134F6236A0808D9302B4E3C6F81FC6973B4833602750CCB5DE36AEA23ED6BD4 │ │ │ │ +5B72DF0DD7B81C871CAA6EC190748CD8C4B998D576E5D340ACAC0617DDBE461C │ │ │ │ +8E82E809D11A01D265D039F4315066832E27E08A6F067E129E45FBF533F761BB │ │ │ │ +EC3C071209BECE7D14D3184B2E6BFD65717A5A7C08F3776B20C513649488C1CF │ │ │ │ +03333805B249D1034FB0AE2D7D2A23324EE27AEDB68F8E329A8052FE58D7C0D9 │ │ │ │ +A40A0CDC79F2085C4F39A7DFDB625C8F071E2A32CF6215DD3E060A9BABF7A3AA │ │ │ │ +C57DA0C0571C5D6EEAA975D1BB9C99F8EA4958360E43E8C60080B03DC4435550 │ │ │ │ +E6048DDD35DF3E5DA69669F266FFD7B44649A68025270DC84258E329F6E6907C │ │ │ │ +BCFF900D715D0C7EC43C5E7180CAD6427BA4FD41AAD6531A5C06B0EC26DDA71F │ │ │ │ +4A9DA50DE919E79226F6DDF7C1BA478936AA86CEAD93072CC2960E98C45A1A0C │ │ │ │ +60CF8A26E4278AB4F9E28FA6532648196CC455607D6BCD00F60675DE8CC02C8C │ │ │ │ +9BE5D5B714731814D5B008EE236563D77AC6895E0158877C95797E07C02AFEBE │ │ │ │ +CC9FE97D5E103F7DB0A834E9A7A75893EC66340B0E4C6F0EEDEF43415BF9FCF4 │ │ │ │ +47340CBEA4DCFBA0D028EB2149FFBBDB3322AE5F6FD20242526EDC55E476D983 │ │ │ │ +DC │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3312,15 +3318,15 @@ │ │ │ │ 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 │ │ │ │ -3[51 12[45 22[47 15[25 3[45 3[45 1[45 3[25 44[{}11 90.9091 │ │ │ │ +3[51 12[45 22[47 15[25 3[45 3[45 45 45 3[25 44[{}12 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 │ │ │ │ @@ -3433,17 +3439,17 @@ │ │ │ │ (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 1010 4 v │ │ │ │ -1192 w Fh(SubMtxList)27 b Ff(:)41 b Fe(DRAFT)30 b Ff(Jan)m(uary)g(6,)h │ │ │ │ -(2026)p 2891 100 V 0 399 a Fi(F)-8 b(or)26 b(a)f(m)m(ultithreaded)h │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fi(2)p 136 100 987 4 v │ │ │ │ +1169 w Fh(SubMtxList)27 b Ff(:)41 b Fe(DRAFT)30 b Ff(Jan)m(uary)g(10,)i │ │ │ │ +(2026)p 2913 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 │ │ │ │ @@ -3496,65 +3502,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 1010 4 v 1191 100 a Fh(SubMtxList)28 │ │ │ │ -b Ff(:)40 b Fe(DRAFT)121 b Ff(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2843 100 V 1010 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 │ │ │ │ +TeXDict begin 3 2 bop 91 100 987 4 v 1168 100 a Fh(SubMtxList)28 │ │ │ │ +b Ff(:)41 b Fe(DRAFT)121 b Ff(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2866 100 V 987 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.)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.)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 │ │ │ │ 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 │ │ │ │ @@ -3570,17 +3576,17 @@ │ │ │ │ (1.)44 b(Otherwise,)32 b(the)227 5138 y(metho)s(d)e(returns)f(0.)227 │ │ │ │ 5294 y Fe(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fi(If)29 │ │ │ │ b Fh(list)g Fi(is)h Fh(NULL)p Fi(,)f(or)h(if)g Fh(ilist)e │ │ │ │ Fi(is)i(not)h(in)e(the)h(range)h Fh([0,nlist\))p Fi(,)c(an)j(error)g │ │ │ │ (message)227 5407 y(is)h(prin)m(ted)f(and)f(zero)j(is)e(returned.)p │ │ │ │ eop end │ │ │ │ %%Page: 4 4 │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fi(4)p 136 100 1010 4 v │ │ │ │ -1192 w Fh(SubMtxList)27 b Ff(:)41 b Fe(DRAFT)30 b Ff(Jan)m(uary)g(6,)h │ │ │ │ -(2026)p 2891 100 V 111 399 a Fi(3.)46 b Fh(SubMtx)g(*)i │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fi(4)p 136 100 987 4 v │ │ │ │ +1169 w Fh(SubMtxList)27 b Ff(:)41 b Fe(DRAFT)30 b Ff(Jan)m(uary)g(10,)i │ │ │ │ +(2026)p 2913 100 V 111 399 a Fi(3.)46 b Fh(SubMtx)g(*)i │ │ │ │ (SubMtxList_getList)43 b(\()k(SubMtxList)e(*list,)h(int)h(ilist)f(\))i │ │ │ │ (;)227 549 y Fi(If)28 b(list)h Fh(ilist)e Fi(is)h(empt)m(y)-8 │ │ │ │ b(,)30 b(the)f(metho)s(d)f(returns)f Fh(NULL)p Fi(.)g(Otherwise,)i(if)f │ │ │ │ (the)h(list)g(needs)f(to)h(b)s(e)e(lo)s(c)m(k)m(ed,)k(the)227 │ │ │ │ 662 y(lo)s(c)m(k)37 b(is)e(lo)s(c)m(k)m(ed.)57 b(The)34 │ │ │ │ b(head)h(of)h(the)f(list)h(is)f(sa)m(v)m(ed)i(to)f(a)f(p)s(oin)m(ter)h │ │ │ │ (and)e(then)h(the)h(head)f(is)g(set)h(to)g Fh(NULL)p │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -22,15 +22,15 @@ │ │ │ │ │ The first two operations are queries, and can be done without locking the list. The third operation │ │ │ │ │ needs a lock only when two or more threads will be inserting objects into the list. The fourth │ │ │ │ │ operation requires a lock only when one thread will add an object while another thread removes │ │ │ │ │ the object and the incoming count is not yet zero. │ │ │ │ │ Having a lock associated with a SubMtxList object is optional, for example, it is not needed │ │ │ │ │ during a serial factorization nor a MPI solve. In the latter case there is one SubMtxList per process. │ │ │ │ │ 1 │ │ │ │ │ - 2 SubMtxList : DRAFT January 6, 2026 │ │ │ │ │ + 2 SubMtxList : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 3 │ │ │ │ │ + SubMtxList : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 4 SubMtxList : DRAFT January 10, 2026 │ │ │ │ │ 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 2026.01.06:2034 │ │ │ │ +%DVIPSSource: TeX output 2026.01.10:0513 │ │ │ │ %%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 │ │ │ │ @@ -1419,14 +1419,15 @@ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ /UnderlineThickness 50 def │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ +dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ dup 54 /six put │ │ │ │ dup 58 /colon put │ │ │ │ dup 74 /J put │ │ │ │ dup 97 /a put │ │ │ │ dup 110 /n put │ │ │ │ dup 114 /r put │ │ │ │ @@ -1616,79 +1617,84 @@ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB88440048702D1F │ │ │ │ -77994EE04EC3B4531D6E1888C86A8F0DA6CF1F056F16AB0DD76C862830F89DA4 │ │ │ │ -28923B3AA543E0D6E41D3BD283E600BC11F889315EE92C675C109C81065ED1BC │ │ │ │ -82A5583D1B723D50051B0557A367887F5B263014C6E77288B4883C50889473D3 │ │ │ │ -3787BAD4BEB88BD1353AFA5B73E61814819537E7FF09F53EF94792BB3DD36ED0 │ │ │ │ -002D0E7A6CDAB85A9C17AF5664BCB5A71663B861880F3ECCABC8E7A2FC81A4CC │ │ │ │ -AE7A87503FDC1CE0077BA51ECC7B43B60793FED8E9AAD5BBD03ADD6183DCD26D │ │ │ │ -24A74163611C05562437644EF9B8889FD4F9D311911204FEFD35237486F2D2D0 │ │ │ │ -B6783A03BF12EA6D19D6D0F87E4D08515F12F9CBF1961CAA71E0D69FE3C4C4D2 │ │ │ │ -7C7FB64ED24F8684C8F00C2BEDEA53EA390CDC0B5BEBD7DD982580B2EA1F1F89 │ │ │ │ -CFED5916630DC2BA32BB9180277E1ABC339B3B7DE086717BD93F7FF3681BA5B3 │ │ │ │ -FCF671C4B293C2DE4A322F0AA3323A4934444C69F23EF90120B8755482757759 │ │ │ │ -C457A435FB8BB4922BD92C5F3D9555D978275C510183E29DFF2FCE4ABBFC18DE │ │ │ │ -76CAD3B486BA12047DD808CD4D521A0FD368E4AE79DE262630983A5D6F0B679D │ │ │ │ -2F005306393C520E1B6987302D029939D94B0178DB06211C7F3B123A41E6E7BA │ │ │ │ -87164737110707A3ED3983895F3FBC815EF370F54C808ED93D910937BCA3D8AF │ │ │ │ -7CBF80DC180CDA54059DB76710B4FCD4139D5B7DA7DB1A0D0AF86AD2453D3691 │ │ │ │ -0BA5BAD40FF28BB4235FCD40FC87C2B888E67928D9B0ACA5692149373DBB93BF │ │ │ │ -6520DDD36A9BFE4D415CA67A5E04F1D48BDB28C69676273ED842CF7980E8E17C │ │ │ │ -B88563F407E340AFAE8F51AABCF8A39521BCEE1EC8396D75E124B24B4675909F │ │ │ │ -E246F87DA08584A3173AEFF153ECDF610543FA7474D125A31ADD6285A49222B5 │ │ │ │ -177066EA395BFA4B1114C7FCF7712DA772A21C99E64F4E1181E69CAF98137FA2 │ │ │ │ -76CF74F682B8CD7BA6EEA79B70FA8A76809634517F8415B6F21A5A7D6099B5E8 │ │ │ │ -EAB356BBC4FB68C72B8C61DDCE8EAB1A53B9D6BAD78584B307EFF57CEAE74884 │ │ │ │ -35987BF89E9E60E962D22FA5612F2DB5EB840499B7CC11A34BA5DEE30D277540 │ │ │ │ -39B8211D69B448ADE95B723F8369A631DE6DD75703AFD7485FB7FFF41A60CBE4 │ │ │ │ -813B8FEA120662355773830EF85015E7FFD609B2CEE52CB5FFE9C35B6BEEE4A4 │ │ │ │ -A66719E31CE1523FDD7771FB1E881A32A7DB7D92C2326DF4B93241C14ABFCCD6 │ │ │ │ -8E5BCAC61E800E6B1B4687ADA4CBF41EC0AFC26D021D1772CBDCD0516DF5EBE1 │ │ │ │ -37FD2AC5ABB8D774B5735940F1F6866D044FD8CE74444FAA5D0202C11E39CC10 │ │ │ │ -213731F41F704450E1D0565013BF22188442CE0FC256190A9F92F0C802AA2660 │ │ │ │ -614AFE9E9C82F8CD2E6035EEF84E5F16CBB690AC819B4B910EA8E81106F0ACE5 │ │ │ │ -CDFE77DAF69E4AFE72C43145A3ABCC40B6C5297487083F738C86422277AC2267 │ │ │ │ -51759F1B7F129E87DE16433B664AD0FB6D30424A11C70B52B591352BF653C8B0 │ │ │ │ -0840C224FBFEAA996A6BE1D69414DD778C2EF56A63B64D59BA412EC3E4000831 │ │ │ │ -73361FB9813F9A7C74BA3A50D331B07B61492E5D75F0861B530587269B3ADC90 │ │ │ │ -EA1DF586AC4BC57C3230893EFE953A6E76950ABA895FAC711D3BD330ABC6846A │ │ │ │ -C91F6ABF3410B913DFE5C8266020CEE5C7A9EDA2E7D9BCA797DC486443C7BA7C │ │ │ │ -7E03439A40927FA3251B6D417E5653E7799E9D6F04149C34096E2CA9B1F9B1EC │ │ │ │ -38958A2521B4A657A8B9F16E1FD66C7E345A10D7AA0241559503D214AC6507A4 │ │ │ │ -CBDE8617AA7ED136577734428594487F3565BF45FA196375759E2FE23C26EC8A │ │ │ │ -3310A36917A5E2F260EAB31030F8E570303D36B833626938F56939849DFA1F3F │ │ │ │ -66D0A317BB6364427F1512AAB380B555611C76345C02C3A6FBF78590331D5ECA │ │ │ │ -029DEFB722F6AB05327C2A31AB7BD6ED0F0386E6F45C1278048D22B90B074CCB │ │ │ │ -2BBEBCC1927C97EC532E651CAF0058AFE8FC08F00F0216D5DD9830C294FF76DA │ │ │ │ -426A073B3A3AEEFBDEE71C5182186311607ECDBD1F1AF4C5E79748CD01445C8D │ │ │ │ -25DD49490C8A6810065908222C8D0AC9F83AFBEE7115023E2D2615A170A5D40A │ │ │ │ -AD49BDF59A59187B6434F83E68EED22EF4EFDBADED6F1559AC779E0377FE7375 │ │ │ │ -D7060584FE74B1859D0FD98772253A712B17FFBB467840C484F5EF82C5677ADB │ │ │ │ -EDF159A456A526B8B9F6E8FC7608DFD47B0F09E26118F79CBE53B6C4E32BACAB │ │ │ │ -D62AFD4AA527CC4B587BB41A17A9BCE106A8C592BC9B73422B712C466C284A17 │ │ │ │ -E8D0C1E01D43C739FB1C083AD2714F78AC785B0C09AA7E67417A73510E00F2FE │ │ │ │ -E3D3EBF626A2F3A20A386E3F98D1285F4A2A332FC609CD191F01F128627B3505 │ │ │ │ -0AC2387DC0AD1B950490EBB5045F22BEC54955402CE2D267B6754E7C32BE84E8 │ │ │ │ -E6B63E3D3EAEE979442D167AEF69C27B22A8E887A2510C3A168D95D285CF7515 │ │ │ │ -011C921679B2F386575826A3F2071D015EEB78F02A4F94D4E5F07873623200F8 │ │ │ │ -7DF95BA0DC6B6D31DECC925BEA1E6A7C52FE685800EC33CBAE830F1AE5454DFA │ │ │ │ -913B8F457D7E2D3DFF019869E3301EEEC64A38295DE6B588E776922B32362382 │ │ │ │ -D1CF3D058613C8A96E6994D3EC23E8B71EC6E718383B20BB6C22DB6F93FA559F │ │ │ │ -3449CA84EB33B25C8BE0DFD1C29DC4FBD7AFBDC96C12162CAAB2C5E354B0FB10 │ │ │ │ -4BF8CC3610875ABD5111D09F2F847822118972214EDEB9EE34BAFE45E7AC15C5 │ │ │ │ -CA63EC4A3CEEA505A5EDD88A59BB67C71C3E026DFFE177F99BC69E6635545D03 │ │ │ │ -77A634F98230EF64381EC67CA519D4B9770EFA844789E21970F89D5FFC5DEAA8 │ │ │ │ -DC008EBA09306967ED090FF91B002FA6120C2B461A87AA32EFB003C5578D8EEF │ │ │ │ - │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ +AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ +E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ +46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ +FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ +389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ +7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ +2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ +C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ +B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ +AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ +E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ +F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ +0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ +2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ +29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ +CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ +6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ +5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ +36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0DD96AB602D004DCFE000A0 │ │ │ │ +ABE41BAB8AB7D50BD32BFD6F1AA3B60B09B9BE4E273EDD2DDCB21A98A760D17D │ │ │ │ +0A5C9303AFE63CF80A93E60C72A0576FAADEECBE2DE91892D210EB0AD1889C04 │ │ │ │ +C7530652584E775B4ED19CFB4B8DBCCC57A9FA9E4DDC8A1E5A1D3BE9E93407A6 │ │ │ │ +2C237ACE27F4EDA330EE952EDCBE91683AA98A29197735006666C96A2CE7C787 │ │ │ │ +BBA5A57C4DBF6FAA5B38AF226B5D9A65FAD84650AC0C3DB29C30602699F81E01 │ │ │ │ +0BAF8F1CE44A03C680121B77A1703C638187675D6C22C49F9902475E6CE9C732 │ │ │ │ +48ED028CC92EA542EF189CC9CA1C384E3387793057615D0A2BF040CC90B275B9 │ │ │ │ +F70A5310874DC2E0A360373E7BCAC88250FBC8989C7D18DA8274C06F02FCF31C │ │ │ │ +2B3868CBAF083DAC2FB159DE368261842DB7C9EA1A86B17617C861A48FBA8FF9 │ │ │ │ +D184CB026F4A418C0955347612F94C039B1536A76CB182A591DD7C02D509CF16 │ │ │ │ +8B9E46502ABF5DE31F5DFBD19C7417A2AF7AF13F0D5FF837C94CE56F07B96337 │ │ │ │ +0ED215252346FAEB54B5F3ABE29709B7ECB9FBD23A4AD397E6ABA6938F1BBF33 │ │ │ │ +1D5460D9414F0B8725DA832744525C13E3FD9C8DB33FBEE12F9C4969988402C8 │ │ │ │ +96AF916364CC2DF17EDBA622FC0A5D0013418E29F912FFA06F8D7E31ECAB0B08 │ │ │ │ +C4D2D8EE537CC768FC9038DD6D86D33642C6E812E941F157FC6917AF19C2B99A │ │ │ │ +5BF10B9A7ECF711BBB6F33C8C3DAD778153122593F36ABDDC0E97A602B045DE6 │ │ │ │ +19BD82D877DDA960AB11EF48C7F75A28D0D731D4A5DBC98283087267CD1A470D │ │ │ │ +537E949DA5EECF097B099547995BE066A941CED683B5748962AD2B02C21636C0 │ │ │ │ +2EAFA33CA0CB3BF8A95703F015A210D918865B9BEA2890DCFB68BC3719C305EC │ │ │ │ +315EC8727BF9A93632AB9E3090B100C022EE1396CD329B37547F26A7DCE52BD7 │ │ │ │ +F91B7388DEC34F4A0C6D46CD7CA6ACC00C5C4C71E47C6AD96496B3CBF531F342 │ │ │ │ +A740EE6B99BD70AD490DFA700772A0697EC6561CE88A0113E4DC3B21F372D810 │ │ │ │ +DFF2C3F6EDF3E917BF2664EEFC9AD292DD6CC36853CF936018D43FDB28D5B001 │ │ │ │ +7D1C805F958F13FD221377ABDD69D102E8CC1DAB2E011EE16CF6DB9D195BA702 │ │ │ │ +5A8738FABF989B0351282D0E5121182DFC52169782A5F3DD5D820411BEF909DE │ │ │ │ +04D963E6FDA76F88508C4E91DDAAA1748F396A1D380D8CA429673AF27C164434 │ │ │ │ +771781B39565D3EE50F3CF03EF12908B13A6C11C9AB7631B32125828B13050BA │ │ │ │ +041A93B97AC32D4A1E28C5FA98CDEE998B5F97823D6291D01E3611A16854F1FE │ │ │ │ +69B9D6D2AE3E56D012B7BC3E582FB4C23188A5E365E65EB1F804A706AF73A2F8 │ │ │ │ +9804808EF71F0982B14133BF9A27D6F2E719BDB751022B1B052722933948904E │ │ │ │ +3582E363478DCDA115205A0FDE39DF71FEAEEB104419C35A6B0678C19616C6D9 │ │ │ │ +A892DC2F4257069AF096C80C099CD13024DF3995F28C694E00D1F08B43D4450C │ │ │ │ +D18F5C925CFD2D124E74FC64BBAA0DE32A79E4A4507B5B5DD834C67160CDA110 │ │ │ │ +EF0061DD27E8864F4250A92BBEFD75C784BB98F4FA789A8236C2A21E4E61ABD0 │ │ │ │ +C6B4D13B3C31AC8E55FA34BEC7C308C61FB0280382EC6AFD63D959678D42D2B3 │ │ │ │ +4134F6236A0808D9302B4E3C6F81FC6973B4833602750CCB5DE36AEA23ED6BD4 │ │ │ │ +5B72DF0DD7B81C871CAA6EC190748CD8C4B998D576E5D340ACAC0617DDBE461C │ │ │ │ +8E82E809D11A01D265D039F4315066832E27E08A6F067E129E45FBF533F761BB │ │ │ │ +EC3C071209BECE7D14D3184B2E6BFD65717A5A7C08F3776B20C513649488C1CF │ │ │ │ +03333805B249D1034FB0AE2D7D2A23324EE27AEDB68F8E329A8052FE58D7C0D9 │ │ │ │ +A40A0CDC79F2085C4F39A7DFDB625C8F071E2A32CF6215DD3E060A9BABF7A3AA │ │ │ │ +C57DA0C0571C5D6EEAA975D1BB9C99F8EA4958360E43E8C60080B03DC4435550 │ │ │ │ +E6048DDD35DF3E5DA69669F266FFD7B44649A68025270DC84258E329F6E6907C │ │ │ │ +BCFF900D715D0C7EC43C5E7180CAD6427BA4FD41AAD6531A5C06B0EC26DDA71F │ │ │ │ +4A9DA50DE919E79226F6DDF7C1BA478936AA86CEAD93072CC2960E98C45A1A0C │ │ │ │ +60CF8A26E4278AB4F9E28FA6532648196CC455607D6BCD00F60675DE8CC02C8C │ │ │ │ +9BE5D5B714731814D5B008EE236563D77AC6895E0158877C95797E07C02AFEBE │ │ │ │ +CC9FE97D5E103F7DB0A834E9A7A75893EC66340B0E4C6F0EEDEF43415BF9FCF4 │ │ │ │ +47340CBEA4DCFBA0D028EB2149FFBBDB3322AE5F6FD20242526EDC55E476D983 │ │ │ │ +DC │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3857,16 +3863,16 @@ │ │ │ │ @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 3[51 12[45 22[47 15[25 3[45 3[45 1[45 3[25 │ │ │ │ -44[{}11 90.9091 /CMSL10 rf /Ff 180[60 39 9[37 4[20 59[{}4 │ │ │ │ +3[51 2[36 3[51 12[45 22[47 15[25 3[45 3[45 45 45 3[25 │ │ │ │ +44[{}12 90.9091 /CMSL10 rf /Ff 180[60 39 9[37 4[20 59[{}4 │ │ │ │ 66.4176 /CMMI8 rf /Fg 170[62 8[62 76[{}2 90.9091 /CMMI10 │ │ │ │ rf /Fh 134[44 4[30 37 38 2[46 51 74 23 42 1[28 46 42 │ │ │ │ 1[42 46 42 1[46 12[65 1[66 11[59 62 69 2[68 6[28 58[{}23 │ │ │ │ 90.9091 /CMTI10 rf │ │ │ │ %DVIPSBitmapFont: Fi tcrm1095 10.95 1 │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ /Dotaccent/cedilla/ogonek/quotesinglbase.ts1 4{/.notdef}repeat │ │ │ │ @@ -4001,17 +4007,17 @@ │ │ │ │ (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 938 4 v │ │ │ │ -1120 w Fj(SubMtxManager)27 b Fe(:)40 b Fh(DRAFT)31 b │ │ │ │ -Fe(Jan)m(uary)f(6,)h(2026)p 2962 100 V 141 399 a Fk(Eac)m(h)21 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fk(2)p 136 100 915 4 v │ │ │ │ +1097 w Fj(SubMtxManager)27 b Fe(:)41 b Fh(DRAFT)30 b │ │ │ │ +Fe(Jan)m(uary)g(10,)h(2026)p 2985 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 │ │ │ │ @@ -4060,17 +4066,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 938 4 v 1119 100 a Fj(SubMtxManager)27 │ │ │ │ -b Fe(:)41 b Fh(DRAFT)121 b Fe(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2915 100 V 938 w Fk(3)111 399 y(2.)46 b Fj(void)h │ │ │ │ +TeXDict begin 3 2 bop 91 100 915 4 v 1097 100 a Fj(SubMtxManager)27 │ │ │ │ +b Fe(:)40 b Fh(DRAFT)121 b Fe(Jan)m(uary)30 b(10,)i(2026)p │ │ │ │ +2938 100 V 915 w Fk(3)111 399 y(2.)46 b Fj(void)h │ │ │ │ (SubMtxManager_setDefault)o(Fiel)o(ds)41 b(\()48 b(SubMtxManager)c │ │ │ │ (*manager)i(\))h(;)227 558 y Fk(The)20 b(structure's)g(\014elds)g(are)g │ │ │ │ (set)h(to)g(default)g(v)-5 b(alues:)36 b Fj(mode)p Fk(,)21 │ │ │ │ b Fj(nactive)p Fk(,)g Fj(nbytesactive)p Fk(,)e Fj(nbytesrequested)p │ │ │ │ Fk(,)227 671 y Fj(nbytesalloc)p Fk(,)33 b Fj(nrequests)p │ │ │ │ Fk(,)f Fj(nreleases)p Fk(,)h Fj(nlocks)g Fk(and)g Fj(nunlocks)f │ │ │ │ Fk(are)j(set)g(to)g(zero,)h(and)d Fj(head)h Fk(and)227 │ │ │ │ @@ -4133,17 +4139,17 @@ │ │ │ │ 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 938 4 v │ │ │ │ -1120 w Fj(SubMtxManager)27 b Fe(:)40 b Fh(DRAFT)31 b │ │ │ │ -Fe(Jan)m(uary)f(6,)h(2026)p 2962 100 V 111 399 a Fk(3.)46 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fk(4)p 136 100 915 4 v │ │ │ │ +1097 w Fj(SubMtxManager)27 b Fe(:)41 b Fh(DRAFT)30 b │ │ │ │ +Fe(Jan)m(uary)g(10,)h(2026)p 2985 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 │ │ │ │ ├── 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 January 6, 2026 │ │ │ │ │ + 2 SubMtxManager : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 3 │ │ │ │ │ + SubMtxManager : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 4 SubMtxManager : DRAFT January 10, 2026 │ │ │ │ │ 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 2026.01.06:2034 │ │ │ │ +%DVIPSSource: TeX output 2026.01.10:0513 │ │ │ │ %%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 │ │ │ │ @@ -1006,14 +1006,15 @@ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ /UnderlineThickness 50 def │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ +dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ dup 54 /six put │ │ │ │ dup 58 /colon put │ │ │ │ dup 74 /J put │ │ │ │ dup 97 /a put │ │ │ │ dup 110 /n put │ │ │ │ dup 114 /r put │ │ │ │ @@ -1203,79 +1204,84 @@ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB88440048702D1F │ │ │ │ -77994EE04EC3B4531D6E1888C86A8F0DA6CF1F056F16AB0DD76C862830F89DA4 │ │ │ │ -28923B3AA543E0D6E41D3BD283E600BC11F889315EE92C675C109C81065ED1BC │ │ │ │ -82A5583D1B723D50051B0557A367887F5B263014C6E77288B4883C50889473D3 │ │ │ │ -3787BAD4BEB88BD1353AFA5B73E61814819537E7FF09F53EF94792BB3DD36ED0 │ │ │ │ -002D0E7A6CDAB85A9C17AF5664BCB5A71663B861880F3ECCABC8E7A2FC81A4CC │ │ │ │ -AE7A87503FDC1CE0077BA51ECC7B43B60793FED8E9AAD5BBD03ADD6183DCD26D │ │ │ │ -24A74163611C05562437644EF9B8889FD4F9D311911204FEFD35237486F2D2D0 │ │ │ │ -B6783A03BF12EA6D19D6D0F87E4D08515F12F9CBF1961CAA71E0D69FE3C4C4D2 │ │ │ │ -7C7FB64ED24F8684C8F00C2BEDEA53EA390CDC0B5BEBD7DD982580B2EA1F1F89 │ │ │ │ -CFED5916630DC2BA32BB9180277E1ABC339B3B7DE086717BD93F7FF3681BA5B3 │ │ │ │ -FCF671C4B293C2DE4A322F0AA3323A4934444C69F23EF90120B8755482757759 │ │ │ │ -C457A435FB8BB4922BD92C5F3D9555D978275C510183E29DFF2FCE4ABBFC18DE │ │ │ │ -76CAD3B486BA12047DD808CD4D521A0FD368E4AE79DE262630983A5D6F0B679D │ │ │ │ -2F005306393C520E1B6987302D029939D94B0178DB06211C7F3B123A41E6E7BA │ │ │ │ -87164737110707A3ED3983895F3FBC815EF370F54C808ED93D910937BCA3D8AF │ │ │ │ -7CBF80DC180CDA54059DB76710B4FCD4139D5B7DA7DB1A0D0AF86AD2453D3691 │ │ │ │ -0BA5BAD40FF28BB4235FCD40FC87C2B888E67928D9B0ACA5692149373DBB93BF │ │ │ │ -6520DDD36A9BFE4D415CA67A5E04F1D48BDB28C69676273ED842CF7980E8E17C │ │ │ │ -B88563F407E340AFAE8F51AABCF8A39521BCEE1EC8396D75E124B24B4675909F │ │ │ │ -E246F87DA08584A3173AEFF153ECDF610543FA7474D125A31ADD6285A49222B5 │ │ │ │ -177066EA395BFA4B1114C7FCF7712DA772A21C99E64F4E1181E69CAF98137FA2 │ │ │ │ -76CF74F682B8CD7BA6EEA79B70FA8A76809634517F8415B6F21A5A7D6099B5E8 │ │ │ │ -EAB356BBC4FB68C72B8C61DDCE8EAB1A53B9D6BAD78584B307EFF57CEAE74884 │ │ │ │ -35987BF89E9E60E962D22FA5612F2DB5EB840499B7CC11A34BA5DEE30D277540 │ │ │ │ -39B8211D69B448ADE95B723F8369A631DE6DD75703AFD7485FB7FFF41A60CBE4 │ │ │ │ -813B8FEA120662355773830EF85015E7FFD609B2CEE52CB5FFE9C35B6BEEE4A4 │ │ │ │ -A66719E31CE1523FDD7771FB1E881A32A7DB7D92C2326DF4B93241C14ABFCCD6 │ │ │ │ -8E5BCAC61E800E6B1B4687ADA4CBF41EC0AFC26D021D1772CBDCD0516DF5EBE1 │ │ │ │ -37FD2AC5ABB8D774B5735940F1F6866D044FD8CE74444FAA5D0202C11E39CC10 │ │ │ │ -213731F41F704450E1D0565013BF22188442CE0FC256190A9F92F0C802AA2660 │ │ │ │ -614AFE9E9C82F8CD2E6035EEF84E5F16CBB690AC819B4B910EA8E81106F0ACE5 │ │ │ │ -CDFE77DAF69E4AFE72C43145A3ABCC40B6C5297487083F738C86422277AC2267 │ │ │ │ -51759F1B7F129E87DE16433B664AD0FB6D30424A11C70B52B591352BF653C8B0 │ │ │ │ -0840C224FBFEAA996A6BE1D69414DD778C2EF56A63B64D59BA412EC3E4000831 │ │ │ │ -73361FB9813F9A7C74BA3A50D331B07B61492E5D75F0861B530587269B3ADC90 │ │ │ │ -EA1DF586AC4BC57C3230893EFE953A6E76950ABA895FAC711D3BD330ABC6846A │ │ │ │ -C91F6ABF3410B913DFE5C8266020CEE5C7A9EDA2E7D9BCA797DC486443C7BA7C │ │ │ │ -7E03439A40927FA3251B6D417E5653E7799E9D6F04149C34096E2CA9B1F9B1EC │ │ │ │ -38958A2521B4A657A8B9F16E1FD66C7E345A10D7AA0241559503D214AC6507A4 │ │ │ │ -CBDE8617AA7ED136577734428594487F3565BF45FA196375759E2FE23C26EC8A │ │ │ │ -3310A36917A5E2F260EAB31030F8E570303D36B833626938F56939849DFA1F3F │ │ │ │ -66D0A317BB6364427F1512AAB380B555611C76345C02C3A6FBF78590331D5ECA │ │ │ │ -029DEFB722F6AB05327C2A31AB7BD6ED0F0386E6F45C1278048D22B90B074CCB │ │ │ │ -2BBEBCC1927C97EC532E651CAF0058AFE8FC08F00F0216D5DD9830C294FF76DA │ │ │ │ -426A073B3A3AEEFBDEE71C5182186311607ECDBD1F1AF4C5E79748CD01445C8D │ │ │ │ -25DD49490C8A6810065908222C8D0AC9F83AFBEE7115023E2D2615A170A5D40A │ │ │ │ -AD49BDF59A59187B6434F83E68EED22EF4EFDBADED6F1559AC779E0377FE7375 │ │ │ │ -D7060584FE74B1859D0FD98772253A712B17FFBB467840C484F5EF82C5677ADB │ │ │ │ -EDF159A456A526B8B9F6E8FC7608DFD47B0F09E26118F79CBE53B6C4E32BACAB │ │ │ │ -D62AFD4AA527CC4B587BB41A17A9BCE106A8C592BC9B73422B712C466C284A17 │ │ │ │ -E8D0C1E01D43C739FB1C083AD2714F78AC785B0C09AA7E67417A73510E00F2FE │ │ │ │ -E3D3EBF626A2F3A20A386E3F98D1285F4A2A332FC609CD191F01F128627B3505 │ │ │ │ -0AC2387DC0AD1B950490EBB5045F22BEC54955402CE2D267B6754E7C32BE84E8 │ │ │ │ -E6B63E3D3EAEE979442D167AEF69C27B22A8E887A2510C3A168D95D285CF7515 │ │ │ │ -011C921679B2F386575826A3F2071D015EEB78F02A4F94D4E5F07873623200F8 │ │ │ │ -7DF95BA0DC6B6D31DECC925BEA1E6A7C52FE685800EC33CBAE830F1AE5454DFA │ │ │ │ -913B8F457D7E2D3DFF019869E3301EEEC64A38295DE6B588E776922B32362382 │ │ │ │ -D1CF3D058613C8A96E6994D3EC23E8B71EC6E718383B20BB6C22DB6F93FA559F │ │ │ │ -3449CA84EB33B25C8BE0DFD1C29DC4FBD7AFBDC96C12162CAAB2C5E354B0FB10 │ │ │ │ -4BF8CC3610875ABD5111D09F2F847822118972214EDEB9EE34BAFE45E7AC15C5 │ │ │ │ -CA63EC4A3CEEA505A5EDD88A59BB67C71C3E026DFFE177F99BC69E6635545D03 │ │ │ │ -77A634F98230EF64381EC67CA519D4B9770EFA844789E21970F89D5FFC5DEAA8 │ │ │ │ -DC008EBA09306967ED090FF91B002FA6120C2B461A87AA32EFB003C5578D8EEF │ │ │ │ - │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ +AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ +E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ +46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ +FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ +389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ +7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ +2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ +C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ +B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ +AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ +E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ +F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ +0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ +2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ +29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ +CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ +6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ +5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ +36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0DD96AB602D004DCFE000A0 │ │ │ │ +ABE41BAB8AB7D50BD32BFD6F1AA3B60B09B9BE4E273EDD2DDCB21A98A760D17D │ │ │ │ +0A5C9303AFE63CF80A93E60C72A0576FAADEECBE2DE91892D210EB0AD1889C04 │ │ │ │ +C7530652584E775B4ED19CFB4B8DBCCC57A9FA9E4DDC8A1E5A1D3BE9E93407A6 │ │ │ │ +2C237ACE27F4EDA330EE952EDCBE91683AA98A29197735006666C96A2CE7C787 │ │ │ │ +BBA5A57C4DBF6FAA5B38AF226B5D9A65FAD84650AC0C3DB29C30602699F81E01 │ │ │ │ +0BAF8F1CE44A03C680121B77A1703C638187675D6C22C49F9902475E6CE9C732 │ │ │ │ +48ED028CC92EA542EF189CC9CA1C384E3387793057615D0A2BF040CC90B275B9 │ │ │ │ +F70A5310874DC2E0A360373E7BCAC88250FBC8989C7D18DA8274C06F02FCF31C │ │ │ │ +2B3868CBAF083DAC2FB159DE368261842DB7C9EA1A86B17617C861A48FBA8FF9 │ │ │ │ +D184CB026F4A418C0955347612F94C039B1536A76CB182A591DD7C02D509CF16 │ │ │ │ +8B9E46502ABF5DE31F5DFBD19C7417A2AF7AF13F0D5FF837C94CE56F07B96337 │ │ │ │ +0ED215252346FAEB54B5F3ABE29709B7ECB9FBD23A4AD397E6ABA6938F1BBF33 │ │ │ │ +1D5460D9414F0B8725DA832744525C13E3FD9C8DB33FBEE12F9C4969988402C8 │ │ │ │ +96AF916364CC2DF17EDBA622FC0A5D0013418E29F912FFA06F8D7E31ECAB0B08 │ │ │ │ +C4D2D8EE537CC768FC9038DD6D86D33642C6E812E941F157FC6917AF19C2B99A │ │ │ │ +5BF10B9A7ECF711BBB6F33C8C3DAD778153122593F36ABDDC0E97A602B045DE6 │ │ │ │ +19BD82D877DDA960AB11EF48C7F75A28D0D731D4A5DBC98283087267CD1A470D │ │ │ │ +537E949DA5EECF097B099547995BE066A941CED683B5748962AD2B02C21636C0 │ │ │ │ +2EAFA33CA0CB3BF8A95703F015A210D918865B9BEA2890DCFB68BC3719C305EC │ │ │ │ +315EC8727BF9A93632AB9E3090B100C022EE1396CD329B37547F26A7DCE52BD7 │ │ │ │ +F91B7388DEC34F4A0C6D46CD7CA6ACC00C5C4C71E47C6AD96496B3CBF531F342 │ │ │ │ +A740EE6B99BD70AD490DFA700772A0697EC6561CE88A0113E4DC3B21F372D810 │ │ │ │ +DFF2C3F6EDF3E917BF2664EEFC9AD292DD6CC36853CF936018D43FDB28D5B001 │ │ │ │ +7D1C805F958F13FD221377ABDD69D102E8CC1DAB2E011EE16CF6DB9D195BA702 │ │ │ │ +5A8738FABF989B0351282D0E5121182DFC52169782A5F3DD5D820411BEF909DE │ │ │ │ +04D963E6FDA76F88508C4E91DDAAA1748F396A1D380D8CA429673AF27C164434 │ │ │ │ +771781B39565D3EE50F3CF03EF12908B13A6C11C9AB7631B32125828B13050BA │ │ │ │ +041A93B97AC32D4A1E28C5FA98CDEE998B5F97823D6291D01E3611A16854F1FE │ │ │ │ +69B9D6D2AE3E56D012B7BC3E582FB4C23188A5E365E65EB1F804A706AF73A2F8 │ │ │ │ +9804808EF71F0982B14133BF9A27D6F2E719BDB751022B1B052722933948904E │ │ │ │ +3582E363478DCDA115205A0FDE39DF71FEAEEB104419C35A6B0678C19616C6D9 │ │ │ │ +A892DC2F4257069AF096C80C099CD13024DF3995F28C694E00D1F08B43D4450C │ │ │ │ +D18F5C925CFD2D124E74FC64BBAA0DE32A79E4A4507B5B5DD834C67160CDA110 │ │ │ │ +EF0061DD27E8864F4250A92BBEFD75C784BB98F4FA789A8236C2A21E4E61ABD0 │ │ │ │ +C6B4D13B3C31AC8E55FA34BEC7C308C61FB0280382EC6AFD63D959678D42D2B3 │ │ │ │ +4134F6236A0808D9302B4E3C6F81FC6973B4833602750CCB5DE36AEA23ED6BD4 │ │ │ │ +5B72DF0DD7B81C871CAA6EC190748CD8C4B998D576E5D340ACAC0617DDBE461C │ │ │ │ +8E82E809D11A01D265D039F4315066832E27E08A6F067E129E45FBF533F761BB │ │ │ │ +EC3C071209BECE7D14D3184B2E6BFD65717A5A7C08F3776B20C513649488C1CF │ │ │ │ +03333805B249D1034FB0AE2D7D2A23324EE27AEDB68F8E329A8052FE58D7C0D9 │ │ │ │ +A40A0CDC79F2085C4F39A7DFDB625C8F071E2A32CF6215DD3E060A9BABF7A3AA │ │ │ │ +C57DA0C0571C5D6EEAA975D1BB9C99F8EA4958360E43E8C60080B03DC4435550 │ │ │ │ +E6048DDD35DF3E5DA69669F266FFD7B44649A68025270DC84258E329F6E6907C │ │ │ │ +BCFF900D715D0C7EC43C5E7180CAD6427BA4FD41AAD6531A5C06B0EC26DDA71F │ │ │ │ +4A9DA50DE919E79226F6DDF7C1BA478936AA86CEAD93072CC2960E98C45A1A0C │ │ │ │ +60CF8A26E4278AB4F9E28FA6532648196CC455607D6BCD00F60675DE8CC02C8C │ │ │ │ +9BE5D5B714731814D5B008EE236563D77AC6895E0158877C95797E07C02AFEBE │ │ │ │ +CC9FE97D5E103F7DB0A834E9A7A75893EC66340B0E4C6F0EEDEF43415BF9FCF4 │ │ │ │ +47340CBEA4DCFBA0D028EB2149FFBBDB3322AE5F6FD20242526EDC55E476D983 │ │ │ │ +DC │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -3958,15 +3964,15 @@ │ │ │ │ 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 3[51 12[45 22[47 15[25 3[45 3[45 │ │ │ │ -1[45 3[25 44[{}11 90.9091 /CMSL10 rf /Fd 134[62 11[62 │ │ │ │ +45 45 3[25 44[{}12 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 │ │ │ │ @@ -4054,17 +4060,17 @@ │ │ │ │ (ciated)g(with)g(the)f Fj(SymbFac)f Fk(ob)5 b(ject.)0 │ │ │ │ 5073 y Fe(1.2)135 b(Protot)l(yp)t(es)46 b(and)f(descriptions)g(of)g │ │ │ │ Fd(SymbFac)d Fe(metho)t(ds)0 5294 y Fk(This)f(section)j(con)m(tains)f │ │ │ │ (brief)f(descriptions)g(including)f(protot)m(yp)s(es)i(of)f(all)h │ │ │ │ (metho)s(ds)f(that)h(b)s(elong)f(to)h(the)0 5407 y Fj(SymbFac)28 │ │ │ │ b Fk(ob)5 b(ject.)1927 5656 y(1)p eop end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fk(2)p 136 100 1081 4 v │ │ │ │ -1263 w Fj(SymbFac)29 b Fc(:)40 b Fi(DRAFT)30 b Fc(Jan)m(uary)g(6,)h │ │ │ │ -(2026)p 2819 100 V 0 399 a Fb(1.2.1)112 b(Sym)m(b)s(olic)39 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fk(2)p 136 100 1059 4 v │ │ │ │ +1240 w Fj(SymbFac)29 b Fc(:)40 b Fi(DRAFT)31 b Fc(Jan)m(uary)f(10,)h │ │ │ │ +(2026)p 2842 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) │ │ │ │ @@ -4148,17 +4154,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 1081 4 v 1263 100 a Fj(SymbFac)28 │ │ │ │ -b Fc(:)41 b Fi(DRAFT)121 b Fc(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2772 100 V 1081 w Fk(3)337 399 y Fa(\210)45 b Fk(The)30 │ │ │ │ +TeXDict begin 3 2 bop 91 100 1059 4 v 1240 100 a Fj(SymbFac)28 │ │ │ │ +b Fc(:)41 b Fi(DRAFT)121 b Fc(Jan)m(uary)30 b(10,)i(2026)p │ │ │ │ +2795 100 V 1059 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 │ │ │ │ @@ -4239,17 +4245,17 @@ │ │ │ │ (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 1081 4 v │ │ │ │ -1263 w Fj(SymbFac)29 b Fc(:)40 b Fi(DRAFT)30 b Fc(Jan)m(uary)g(6,)h │ │ │ │ -(2026)p 2819 100 V 337 399 a Fa(\210)45 b Fk(The)24 b │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fk(4)p 136 100 1059 4 v │ │ │ │ +1240 w Fj(SymbFac)29 b Fc(:)40 b Fi(DRAFT)31 b Fc(Jan)m(uary)f(10,)h │ │ │ │ +(2026)p 2842 100 V 337 399 a Fa(\210)45 b Fk(The)24 b │ │ │ │ Fj(outETreeFile)d Fk(parameter)k(is)f(the)h(output)f(\014le)g(for)g │ │ │ │ (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 │ │ │ │ ├── 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 January 6, 2026 │ │ │ │ │ + 2 SymbFac : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 3 │ │ │ │ │ + SymbFac : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 4 SymbFac : DRAFT January 10, 2026 │ │ │ │ │ • 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 2026.01.06:2034 │ │ │ │ +%DVIPSSource: TeX output 2026.01.10:0513 │ │ │ │ %%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 │ │ │ │ @@ -2227,14 +2227,15 @@ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ /UnderlineThickness 50 def │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ +dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ dup 54 /six put │ │ │ │ dup 58 /colon put │ │ │ │ dup 74 /J put │ │ │ │ dup 97 /a put │ │ │ │ dup 110 /n put │ │ │ │ dup 114 /r put │ │ │ │ @@ -2424,79 +2425,84 @@ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB88440048702D1F │ │ │ │ -77994EE04EC3B4531D6E1888C86A8F0DA6CF1F056F16AB0DD76C862830F89DA4 │ │ │ │ -28923B3AA543E0D6E41D3BD283E600BC11F889315EE92C675C109C81065ED1BC │ │ │ │ -82A5583D1B723D50051B0557A367887F5B263014C6E77288B4883C50889473D3 │ │ │ │ -3787BAD4BEB88BD1353AFA5B73E61814819537E7FF09F53EF94792BB3DD36ED0 │ │ │ │ -002D0E7A6CDAB85A9C17AF5664BCB5A71663B861880F3ECCABC8E7A2FC81A4CC │ │ │ │ -AE7A87503FDC1CE0077BA51ECC7B43B60793FED8E9AAD5BBD03ADD6183DCD26D │ │ │ │ -24A74163611C05562437644EF9B8889FD4F9D311911204FEFD35237486F2D2D0 │ │ │ │ -B6783A03BF12EA6D19D6D0F87E4D08515F12F9CBF1961CAA71E0D69FE3C4C4D2 │ │ │ │ -7C7FB64ED24F8684C8F00C2BEDEA53EA390CDC0B5BEBD7DD982580B2EA1F1F89 │ │ │ │ -CFED5916630DC2BA32BB9180277E1ABC339B3B7DE086717BD93F7FF3681BA5B3 │ │ │ │ -FCF671C4B293C2DE4A322F0AA3323A4934444C69F23EF90120B8755482757759 │ │ │ │ -C457A435FB8BB4922BD92C5F3D9555D978275C510183E29DFF2FCE4ABBFC18DE │ │ │ │ -76CAD3B486BA12047DD808CD4D521A0FD368E4AE79DE262630983A5D6F0B679D │ │ │ │ -2F005306393C520E1B6987302D029939D94B0178DB06211C7F3B123A41E6E7BA │ │ │ │ -87164737110707A3ED3983895F3FBC815EF370F54C808ED93D910937BCA3D8AF │ │ │ │ -7CBF80DC180CDA54059DB76710B4FCD4139D5B7DA7DB1A0D0AF86AD2453D3691 │ │ │ │ -0BA5BAD40FF28BB4235FCD40FC87C2B888E67928D9B0ACA5692149373DBB93BF │ │ │ │ -6520DDD36A9BFE4D415CA67A5E04F1D48BDB28C69676273ED842CF7980E8E17C │ │ │ │ -B88563F407E340AFAE8F51AABCF8A39521BCEE1EC8396D75E124B24B4675909F │ │ │ │ -E246F87DA08584A3173AEFF153ECDF610543FA7474D125A31ADD6285A49222B5 │ │ │ │ -177066EA395BFA4B1114C7FCF7712DA772A21C99E64F4E1181E69CAF98137FA2 │ │ │ │ -76CF74F682B8CD7BA6EEA79B70FA8A76809634517F8415B6F21A5A7D6099B5E8 │ │ │ │ -EAB356BBC4FB68C72B8C61DDCE8EAB1A53B9D6BAD78584B307EFF57CEAE74884 │ │ │ │ -35987BF89E9E60E962D22FA5612F2DB5EB840499B7CC11A34BA5DEE30D277540 │ │ │ │ -39B8211D69B448ADE95B723F8369A631DE6DD75703AFD7485FB7FFF41A60CBE4 │ │ │ │ -813B8FEA120662355773830EF85015E7FFD609B2CEE52CB5FFE9C35B6BEEE4A4 │ │ │ │ -A66719E31CE1523FDD7771FB1E881A32A7DB7D92C2326DF4B93241C14ABFCCD6 │ │ │ │ -8E5BCAC61E800E6B1B4687ADA4CBF41EC0AFC26D021D1772CBDCD0516DF5EBE1 │ │ │ │ -37FD2AC5ABB8D774B5735940F1F6866D044FD8CE74444FAA5D0202C11E39CC10 │ │ │ │ -213731F41F704450E1D0565013BF22188442CE0FC256190A9F92F0C802AA2660 │ │ │ │ -614AFE9E9C82F8CD2E6035EEF84E5F16CBB690AC819B4B910EA8E81106F0ACE5 │ │ │ │ -CDFE77DAF69E4AFE72C43145A3ABCC40B6C5297487083F738C86422277AC2267 │ │ │ │ -51759F1B7F129E87DE16433B664AD0FB6D30424A11C70B52B591352BF653C8B0 │ │ │ │ -0840C224FBFEAA996A6BE1D69414DD778C2EF56A63B64D59BA412EC3E4000831 │ │ │ │ -73361FB9813F9A7C74BA3A50D331B07B61492E5D75F0861B530587269B3ADC90 │ │ │ │ -EA1DF586AC4BC57C3230893EFE953A6E76950ABA895FAC711D3BD330ABC6846A │ │ │ │ -C91F6ABF3410B913DFE5C8266020CEE5C7A9EDA2E7D9BCA797DC486443C7BA7C │ │ │ │ -7E03439A40927FA3251B6D417E5653E7799E9D6F04149C34096E2CA9B1F9B1EC │ │ │ │ -38958A2521B4A657A8B9F16E1FD66C7E345A10D7AA0241559503D214AC6507A4 │ │ │ │ -CBDE8617AA7ED136577734428594487F3565BF45FA196375759E2FE23C26EC8A │ │ │ │ -3310A36917A5E2F260EAB31030F8E570303D36B833626938F56939849DFA1F3F │ │ │ │ -66D0A317BB6364427F1512AAB380B555611C76345C02C3A6FBF78590331D5ECA │ │ │ │ -029DEFB722F6AB05327C2A31AB7BD6ED0F0386E6F45C1278048D22B90B074CCB │ │ │ │ -2BBEBCC1927C97EC532E651CAF0058AFE8FC08F00F0216D5DD9830C294FF76DA │ │ │ │ -426A073B3A3AEEFBDEE71C5182186311607ECDBD1F1AF4C5E79748CD01445C8D │ │ │ │ -25DD49490C8A6810065908222C8D0AC9F83AFBEE7115023E2D2615A170A5D40A │ │ │ │ -AD49BDF59A59187B6434F83E68EED22EF4EFDBADED6F1559AC779E0377FE7375 │ │ │ │ -D7060584FE74B1859D0FD98772253A712B17FFBB467840C484F5EF82C5677ADB │ │ │ │ -EDF159A456A526B8B9F6E8FC7608DFD47B0F09E26118F79CBE53B6C4E32BACAB │ │ │ │ -D62AFD4AA527CC4B587BB41A17A9BCE106A8C592BC9B73422B712C466C284A17 │ │ │ │ -E8D0C1E01D43C739FB1C083AD2714F78AC785B0C09AA7E67417A73510E00F2FE │ │ │ │ -E3D3EBF626A2F3A20A386E3F98D1285F4A2A332FC609CD191F01F128627B3505 │ │ │ │ -0AC2387DC0AD1B950490EBB5045F22BEC54955402CE2D267B6754E7C32BE84E8 │ │ │ │ -E6B63E3D3EAEE979442D167AEF69C27B22A8E887A2510C3A168D95D285CF7515 │ │ │ │ -011C921679B2F386575826A3F2071D015EEB78F02A4F94D4E5F07873623200F8 │ │ │ │ -7DF95BA0DC6B6D31DECC925BEA1E6A7C52FE685800EC33CBAE830F1AE5454DFA │ │ │ │ -913B8F457D7E2D3DFF019869E3301EEEC64A38295DE6B588E776922B32362382 │ │ │ │ -D1CF3D058613C8A96E6994D3EC23E8B71EC6E718383B20BB6C22DB6F93FA559F │ │ │ │ -3449CA84EB33B25C8BE0DFD1C29DC4FBD7AFBDC96C12162CAAB2C5E354B0FB10 │ │ │ │ -4BF8CC3610875ABD5111D09F2F847822118972214EDEB9EE34BAFE45E7AC15C5 │ │ │ │ -CA63EC4A3CEEA505A5EDD88A59BB67C71C3E026DFFE177F99BC69E6635545D03 │ │ │ │ -77A634F98230EF64381EC67CA519D4B9770EFA844789E21970F89D5FFC5DEAA8 │ │ │ │ -DC008EBA09306967ED090FF91B002FA6120C2B461A87AA32EFB003C5578D8EEF │ │ │ │ - │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ +AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ +E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ +46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ +FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ +389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ +7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ +2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ +C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ +B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ +AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ +E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ +F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ +0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ +2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ +29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ +CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ +6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ +5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ +36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0DD96AB602D004DCFE000A0 │ │ │ │ +ABE41BAB8AB7D50BD32BFD6F1AA3B60B09B9BE4E273EDD2DDCB21A98A760D17D │ │ │ │ +0A5C9303AFE63CF80A93E60C72A0576FAADEECBE2DE91892D210EB0AD1889C04 │ │ │ │ +C7530652584E775B4ED19CFB4B8DBCCC57A9FA9E4DDC8A1E5A1D3BE9E93407A6 │ │ │ │ +2C237ACE27F4EDA330EE952EDCBE91683AA98A29197735006666C96A2CE7C787 │ │ │ │ +BBA5A57C4DBF6FAA5B38AF226B5D9A65FAD84650AC0C3DB29C30602699F81E01 │ │ │ │ +0BAF8F1CE44A03C680121B77A1703C638187675D6C22C49F9902475E6CE9C732 │ │ │ │ +48ED028CC92EA542EF189CC9CA1C384E3387793057615D0A2BF040CC90B275B9 │ │ │ │ +F70A5310874DC2E0A360373E7BCAC88250FBC8989C7D18DA8274C06F02FCF31C │ │ │ │ +2B3868CBAF083DAC2FB159DE368261842DB7C9EA1A86B17617C861A48FBA8FF9 │ │ │ │ +D184CB026F4A418C0955347612F94C039B1536A76CB182A591DD7C02D509CF16 │ │ │ │ +8B9E46502ABF5DE31F5DFBD19C7417A2AF7AF13F0D5FF837C94CE56F07B96337 │ │ │ │ +0ED215252346FAEB54B5F3ABE29709B7ECB9FBD23A4AD397E6ABA6938F1BBF33 │ │ │ │ +1D5460D9414F0B8725DA832744525C13E3FD9C8DB33FBEE12F9C4969988402C8 │ │ │ │ +96AF916364CC2DF17EDBA622FC0A5D0013418E29F912FFA06F8D7E31ECAB0B08 │ │ │ │ +C4D2D8EE537CC768FC9038DD6D86D33642C6E812E941F157FC6917AF19C2B99A │ │ │ │ +5BF10B9A7ECF711BBB6F33C8C3DAD778153122593F36ABDDC0E97A602B045DE6 │ │ │ │ +19BD82D877DDA960AB11EF48C7F75A28D0D731D4A5DBC98283087267CD1A470D │ │ │ │ +537E949DA5EECF097B099547995BE066A941CED683B5748962AD2B02C21636C0 │ │ │ │ +2EAFA33CA0CB3BF8A95703F015A210D918865B9BEA2890DCFB68BC3719C305EC │ │ │ │ +315EC8727BF9A93632AB9E3090B100C022EE1396CD329B37547F26A7DCE52BD7 │ │ │ │ +F91B7388DEC34F4A0C6D46CD7CA6ACC00C5C4C71E47C6AD96496B3CBF531F342 │ │ │ │ +A740EE6B99BD70AD490DFA700772A0697EC6561CE88A0113E4DC3B21F372D810 │ │ │ │ +DFF2C3F6EDF3E917BF2664EEFC9AD292DD6CC36853CF936018D43FDB28D5B001 │ │ │ │ +7D1C805F958F13FD221377ABDD69D102E8CC1DAB2E011EE16CF6DB9D195BA702 │ │ │ │ +5A8738FABF989B0351282D0E5121182DFC52169782A5F3DD5D820411BEF909DE │ │ │ │ +04D963E6FDA76F88508C4E91DDAAA1748F396A1D380D8CA429673AF27C164434 │ │ │ │ +771781B39565D3EE50F3CF03EF12908B13A6C11C9AB7631B32125828B13050BA │ │ │ │ +041A93B97AC32D4A1E28C5FA98CDEE998B5F97823D6291D01E3611A16854F1FE │ │ │ │ +69B9D6D2AE3E56D012B7BC3E582FB4C23188A5E365E65EB1F804A706AF73A2F8 │ │ │ │ +9804808EF71F0982B14133BF9A27D6F2E719BDB751022B1B052722933948904E │ │ │ │ +3582E363478DCDA115205A0FDE39DF71FEAEEB104419C35A6B0678C19616C6D9 │ │ │ │ +A892DC2F4257069AF096C80C099CD13024DF3995F28C694E00D1F08B43D4450C │ │ │ │ +D18F5C925CFD2D124E74FC64BBAA0DE32A79E4A4507B5B5DD834C67160CDA110 │ │ │ │ +EF0061DD27E8864F4250A92BBEFD75C784BB98F4FA789A8236C2A21E4E61ABD0 │ │ │ │ +C6B4D13B3C31AC8E55FA34BEC7C308C61FB0280382EC6AFD63D959678D42D2B3 │ │ │ │ +4134F6236A0808D9302B4E3C6F81FC6973B4833602750CCB5DE36AEA23ED6BD4 │ │ │ │ +5B72DF0DD7B81C871CAA6EC190748CD8C4B998D576E5D340ACAC0617DDBE461C │ │ │ │ +8E82E809D11A01D265D039F4315066832E27E08A6F067E129E45FBF533F761BB │ │ │ │ +EC3C071209BECE7D14D3184B2E6BFD65717A5A7C08F3776B20C513649488C1CF │ │ │ │ +03333805B249D1034FB0AE2D7D2A23324EE27AEDB68F8E329A8052FE58D7C0D9 │ │ │ │ +A40A0CDC79F2085C4F39A7DFDB625C8F071E2A32CF6215DD3E060A9BABF7A3AA │ │ │ │ +C57DA0C0571C5D6EEAA975D1BB9C99F8EA4958360E43E8C60080B03DC4435550 │ │ │ │ +E6048DDD35DF3E5DA69669F266FFD7B44649A68025270DC84258E329F6E6907C │ │ │ │ +BCFF900D715D0C7EC43C5E7180CAD6427BA4FD41AAD6531A5C06B0EC26DDA71F │ │ │ │ +4A9DA50DE919E79226F6DDF7C1BA478936AA86CEAD93072CC2960E98C45A1A0C │ │ │ │ +60CF8A26E4278AB4F9E28FA6532648196CC455607D6BCD00F60675DE8CC02C8C │ │ │ │ +9BE5D5B714731814D5B008EE236563D77AC6895E0158877C95797E07C02AFEBE │ │ │ │ +CC9FE97D5E103F7DB0A834E9A7A75893EC66340B0E4C6F0EEDEF43415BF9FCF4 │ │ │ │ +47340CBEA4DCFBA0D028EB2149FFBBDB3322AE5F6FD20242526EDC55E476D983 │ │ │ │ +DC │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -4942,15 +4948,15 @@ │ │ │ │ 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 │ │ │ │ -3[51 12[45 22[47 15[25 3[45 3[45 1[45 3[25 44[{}11 90.9091 │ │ │ │ +3[51 12[45 22[47 15[25 3[45 3[45 45 45 3[25 44[{}12 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 │ │ │ │ @@ -5073,29 +5079,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 1153 4 v │ │ │ │ -1335 w Fm(Tree)29 b Fg(:)41 b Fl(DRAFT)30 b Fg(Jan)m(uary)g(6,)h(2026)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 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fn(2)p 136 100 1130 4 v │ │ │ │ +1312 w Fm(Tree)29 b Fg(:)41 b Fl(DRAFT)30 b Fg(Jan)m(uary)g(10,)i(2026) │ │ │ │ +p 2770 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 │ │ │ │ @@ -5132,17 +5138,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 1153 4 v 1334 100 a Fm(Tree)29 │ │ │ │ -b Fg(:)41 b Fl(DRAFT)121 b Fg(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2700 100 V 1153 w Fn(3)111 399 y(4.)46 b Fm(int)h(*)h(Tree_fch)d(\()j │ │ │ │ +TeXDict begin 3 2 bop 91 100 1130 4 v 1312 100 a Fm(Tree)29 │ │ │ │ +b Fg(:)40 b Fl(DRAFT)122 b Fg(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2723 100 V 1130 w Fn(3)111 399 y(4.)46 b Fm(int)h(*)h(Tree_fch)d(\()j │ │ │ │ (Tree)e(*tree)h(\))g(;)227 548 y Fn(This)30 b(metho)s(d)g(returns)f(a)i │ │ │ │ (p)s(oin)m(ter)f(to)h(the)g(\014rst)e(c)m(hild)i(v)m(ector.)227 │ │ │ │ 698 y Fl(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fn(If)30 │ │ │ │ b Fm(tree)g Fn(is)g Fm(NULL)p Fn(,)f(an)i(error)f(message)h(is)g(prin)m │ │ │ │ (ted)f(and)f(the)i(program)f(exits.)111 885 y(5.)46 b │ │ │ │ Fm(int)h(*)h(Tree_sib)d(\()j(Tree)e(*tree)h(\))g(;)227 │ │ │ │ 1035 y Fn(This)30 b(metho)s(d)g(returns)f(a)i(p)s(oin)m(ter)f(to)h(the) │ │ │ │ @@ -5200,17 +5206,17 @@ │ │ │ │ 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 1153 4 v │ │ │ │ -1335 w Fm(Tree)29 b Fg(:)41 b Fl(DRAFT)30 b Fg(Jan)m(uary)g(6,)h(2026)p │ │ │ │ -2748 100 V 111 399 a Fn(5.)46 b Fm(void)h(Tree_setFchSibRoot)c(\()k │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fn(4)p 136 100 1130 4 v │ │ │ │ +1312 w Fm(Tree)29 b Fg(:)41 b Fl(DRAFT)30 b Fg(Jan)m(uary)g(10,)i(2026) │ │ │ │ +p 2770 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 │ │ │ │ @@ -5265,17 +5271,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 1153 4 v 1334 100 a Fm(Tree)29 │ │ │ │ -b Fg(:)41 b Fl(DRAFT)121 b Fg(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2700 100 V 1153 w Fn(5)111 399 y(6.)46 b Fm(int)h(Tree_nleaves)e(\()i │ │ │ │ +TeXDict begin 5 4 bop 91 100 1130 4 v 1312 100 a Fm(Tree)29 │ │ │ │ +b Fg(:)40 b Fl(DRAFT)122 b Fg(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2723 100 V 1130 w Fn(5)111 399 y(6.)46 b Fm(int)h(Tree_nleaves)e(\()i │ │ │ │ (Tree)g(*tree)f(\))i(;)227 569 y Fn(This)30 b(metho)s(d)g(returns)f │ │ │ │ (the)h(n)m(um)m(b)s(er)f(of)i(lea)m(v)m(es)i(of)d(the)h(tree.)227 │ │ │ │ 740 y Fl(Err)-5 b(or)45 b(che)-5 b(cking:)64 b Fn(If)41 │ │ │ │ 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 │ │ │ │ @@ -5324,17 +5330,17 @@ │ │ │ │ 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 1153 4 v │ │ │ │ -1335 w Fm(Tree)29 b Fg(:)41 b Fl(DRAFT)30 b Fg(Jan)m(uary)g(6,)h(2026)p │ │ │ │ -2748 100 V 0 399 a Fe(1.2.5)112 b(Metrics)38 b(metho)s(ds)0 │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fn(6)p 136 100 1130 4 v │ │ │ │ +1312 w Fm(Tree)29 b Fg(:)41 b Fl(DRAFT)30 b Fg(Jan)m(uary)g(10,)i(2026) │ │ │ │ +p 2770 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 │ │ │ │ @@ -5393,17 +5399,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 1153 4 v 1334 100 a Fm(Tree)29 │ │ │ │ -b Fg(:)41 b Fl(DRAFT)121 b Fg(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2700 100 V 1153 w Fn(7)0 399 y Fe(1.2.6)112 b(Compression)39 │ │ │ │ +TeXDict begin 7 6 bop 91 100 1130 4 v 1312 100 a Fm(Tree)29 │ │ │ │ +b Fg(:)40 b Fl(DRAFT)122 b Fg(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2723 100 V 1130 w Fn(7)0 399 y Fe(1.2.6)112 b(Compression)39 │ │ │ │ b(metho)s(ds)0 590 y Fn(F)-8 b(requen)m(tly)31 b(a)f(tree)g(will)g │ │ │ │ (need)g(to)g(b)s(e)f(compressed)g(in)h(some)g(manner.)39 │ │ │ │ b(Elimination)31 b(trees)f(usually)f(ha)m(v)m(e)i(long)0 │ │ │ │ 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 │ │ │ │ @@ -5479,17 +5485,17 @@ │ │ │ │ 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 1153 4 v │ │ │ │ -1335 w Fm(Tree)29 b Fg(:)41 b Fl(DRAFT)30 b Fg(Jan)m(uary)g(6,)h(2026)p │ │ │ │ -2748 100 V 227 399 a Fl(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fn(8)p 136 100 1130 4 v │ │ │ │ +1312 w Fm(Tree)29 b Fg(:)41 b Fl(DRAFT)30 b Fg(Jan)m(uary)g(10,)i(2026) │ │ │ │ +p 2770 100 V 227 399 a Fl(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ b Fn(If)30 b Fm(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 │ │ │ │ @@ -5550,17 +5556,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 1153 4 v 1334 100 a Fm(Tree)29 │ │ │ │ -b Fg(:)41 b Fl(DRAFT)121 b Fg(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2700 100 V 1153 w Fn(9)1230 399 y Fm(double)46 b(frame[],)f(double)h │ │ │ │ +TeXDict begin 9 8 bop 91 100 1130 4 v 1312 100 a Fm(Tree)29 │ │ │ │ +b Fg(:)40 b Fl(DRAFT)122 b Fg(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2723 100 V 1130 w Fn(9)1230 399 y Fm(double)46 b(frame[],)f(double)h │ │ │ │ (bounds[])g(\))h(;)227 557 y Fn(This)24 b(metho)s(d)f(dra)m(ws)h(a)g │ │ │ │ (tree.)40 b(The)23 b(co)s(ordinates)i(of)f(the)h(no)s(des)e(are)h │ │ │ │ (found)f(in)h(the)g Fm(xDV)f Fn(and)h Fm(yDV)f Fn(v)m(ectors.)227 │ │ │ │ 715 y(The)29 b(no)s(des)f(will)h(ha)m(v)m(e)i(circles)f(of)f(constan)m │ │ │ │ (t)i(radius)d(\(if)h Fm(radiusDV)e Fn(is)i Fm(NULL)p │ │ │ │ Fn(\))f(or)h(eac)m(h)i(circle)f(can)f(ha)m(v)m(e)i(a)227 │ │ │ │ 828 y(di\013eren)m(t)g(radius)f(found)f(in)h Fm(radiusDV)e │ │ │ │ @@ -5633,17 +5639,17 @@ │ │ │ │ b(alue)27 b Fm(1)g Fn(is)f(returned.)39 b(If)26 b(an)g(IO)h(error)f(is) │ │ │ │ h(encoun)m(tered)g(from)f Fm(fscanf)p Fn(,)g(zero)h(is)g(returned.)227 │ │ │ │ 5407 y Fl(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fn(If)30 │ │ │ │ b Fm(tree)g Fn(or)g Fm(fp)g Fn(are)g Fm(NULL)p Fn(,)g(an)g(error)g │ │ │ │ (message)i(is)e(prin)m(ted)g(and)g(zero)h(is)f(returned.)p │ │ │ │ eop end │ │ │ │ %%Page: 10 10 │ │ │ │ -TeXDict begin 10 9 bop 0 100 a Fn(10)p 182 100 1130 4 │ │ │ │ -v 1312 w Fm(Tree)30 b Fg(:)40 b Fl(DRAFT)31 b Fg(Jan)m(uary)f(6,)h │ │ │ │ -(2026)p 2770 100 V 111 399 a Fn(3.)46 b Fm(int)h │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fn(10)p 182 100 1107 4 │ │ │ │ +v 1290 w Fm(Tree)29 b Fg(:)41 b Fl(DRAFT)30 b Fg(Jan)m(uary)g(10,)h │ │ │ │ +(2026)p 2793 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 │ │ │ │ @@ -5711,17 +5717,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 1130 4 v 1312 100 a Fm(Tree)29 │ │ │ │ -b Fg(:)40 b Fl(DRAFT)122 b Fg(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2678 100 V 1130 w Fn(11)337 399 y Fi(\210)45 b Fn(The)33 │ │ │ │ +TeXDict begin 11 10 bop 91 100 1107 4 v 1289 100 a Fm(Tree)29 │ │ │ │ +b Fg(:)41 b Fl(DRAFT)121 b Fg(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2700 100 V 1107 w Fn(11)337 399 y Fi(\210)45 b Fn(The)33 │ │ │ │ b Fm(msgFile)e Fn(parameter)j(determines)f(the)h(message)g(\014le)f(|)h │ │ │ │ (if)f Fm(msgFile)e Fn(is)i Fm(stdout)p Fn(,)g(then)g(the)427 │ │ │ │ 511 y(output)c(\014le)h(is)f Fl(stdout)p Fn(,)i(otherwise)f(a)f(\014le) │ │ │ │ h(is)f(op)s(ened)g(with)g Fl(app)-5 b(end)31 b Fn(status)e(to)i(receiv) │ │ │ │ m(e)g(an)m(y)e(output)427 624 y(data.)337 770 y Fi(\210)45 │ │ │ │ b Fn(The)29 b Fm(inTreeFile)e Fn(parameter)j(is)g(the)f(input)g(\014le) │ │ │ │ g(for)h(the)f Fm(Tree)g Fn(ob)5 b(ject.)41 b(It)30 b(m)m(ust)f(b)s(e)g │ │ │ │ @@ -5769,17 +5775,17 @@ │ │ │ │ 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 1130 │ │ │ │ -4 v 1312 w Fm(Tree)30 b Fg(:)40 b Fl(DRAFT)31 b Fg(Jan)m(uary)f(6,)h │ │ │ │ -(2026)p 2770 100 V 0 571 a Fn(Figure)38 b(1.1:)56 b Fa(R2D100)p │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fn(12)p 182 100 1107 │ │ │ │ +4 v 1290 w Fm(Tree)29 b Fg(:)41 b Fl(DRAFT)30 b Fg(Jan)m(uary)g(10,)h │ │ │ │ +(2026)p 2793 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 │ │ │ │ ├── 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 January 6, 2026 │ │ │ │ │ + 2 Tree : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 3 │ │ │ │ │ + Tree : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 4 Tree : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 5 │ │ │ │ │ + Tree : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 6 Tree : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 7 │ │ │ │ │ + Tree : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 8 Tree : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 9 │ │ │ │ │ + Tree : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 10 Tree : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 11 │ │ │ │ │ + Tree : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 12 Tree : DRAFT January 10, 2026 │ │ │ │ │ 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 2026.01.06:2034 │ │ │ │ +%DVIPSSource: TeX output 2026.01.10:0513 │ │ │ │ %%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 │ │ │ │ @@ -3357,14 +3357,15 @@ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ /UnderlineThickness 50 def │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ +dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ dup 54 /six put │ │ │ │ dup 58 /colon put │ │ │ │ dup 74 /J put │ │ │ │ dup 97 /a put │ │ │ │ dup 110 /n put │ │ │ │ dup 114 /r put │ │ │ │ @@ -3554,79 +3555,84 @@ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB88440048702D1F │ │ │ │ -77994EE04EC3B4531D6E1888C86A8F0DA6CF1F056F16AB0DD76C862830F89DA4 │ │ │ │ -28923B3AA543E0D6E41D3BD283E600BC11F889315EE92C675C109C81065ED1BC │ │ │ │ -82A5583D1B723D50051B0557A367887F5B263014C6E77288B4883C50889473D3 │ │ │ │ -3787BAD4BEB88BD1353AFA5B73E61814819537E7FF09F53EF94792BB3DD36ED0 │ │ │ │ -002D0E7A6CDAB85A9C17AF5664BCB5A71663B861880F3ECCABC8E7A2FC81A4CC │ │ │ │ -AE7A87503FDC1CE0077BA51ECC7B43B60793FED8E9AAD5BBD03ADD6183DCD26D │ │ │ │ -24A74163611C05562437644EF9B8889FD4F9D311911204FEFD35237486F2D2D0 │ │ │ │ -B6783A03BF12EA6D19D6D0F87E4D08515F12F9CBF1961CAA71E0D69FE3C4C4D2 │ │ │ │ -7C7FB64ED24F8684C8F00C2BEDEA53EA390CDC0B5BEBD7DD982580B2EA1F1F89 │ │ │ │ -CFED5916630DC2BA32BB9180277E1ABC339B3B7DE086717BD93F7FF3681BA5B3 │ │ │ │ -FCF671C4B293C2DE4A322F0AA3323A4934444C69F23EF90120B8755482757759 │ │ │ │ -C457A435FB8BB4922BD92C5F3D9555D978275C510183E29DFF2FCE4ABBFC18DE │ │ │ │ -76CAD3B486BA12047DD808CD4D521A0FD368E4AE79DE262630983A5D6F0B679D │ │ │ │ -2F005306393C520E1B6987302D029939D94B0178DB06211C7F3B123A41E6E7BA │ │ │ │ -87164737110707A3ED3983895F3FBC815EF370F54C808ED93D910937BCA3D8AF │ │ │ │ -7CBF80DC180CDA54059DB76710B4FCD4139D5B7DA7DB1A0D0AF86AD2453D3691 │ │ │ │ -0BA5BAD40FF28BB4235FCD40FC87C2B888E67928D9B0ACA5692149373DBB93BF │ │ │ │ -6520DDD36A9BFE4D415CA67A5E04F1D48BDB28C69676273ED842CF7980E8E17C │ │ │ │ -B88563F407E340AFAE8F51AABCF8A39521BCEE1EC8396D75E124B24B4675909F │ │ │ │ -E246F87DA08584A3173AEFF153ECDF610543FA7474D125A31ADD6285A49222B5 │ │ │ │ -177066EA395BFA4B1114C7FCF7712DA772A21C99E64F4E1181E69CAF98137FA2 │ │ │ │ -76CF74F682B8CD7BA6EEA79B70FA8A76809634517F8415B6F21A5A7D6099B5E8 │ │ │ │ -EAB356BBC4FB68C72B8C61DDCE8EAB1A53B9D6BAD78584B307EFF57CEAE74884 │ │ │ │ -35987BF89E9E60E962D22FA5612F2DB5EB840499B7CC11A34BA5DEE30D277540 │ │ │ │ -39B8211D69B448ADE95B723F8369A631DE6DD75703AFD7485FB7FFF41A60CBE4 │ │ │ │ -813B8FEA120662355773830EF85015E7FFD609B2CEE52CB5FFE9C35B6BEEE4A4 │ │ │ │ -A66719E31CE1523FDD7771FB1E881A32A7DB7D92C2326DF4B93241C14ABFCCD6 │ │ │ │ -8E5BCAC61E800E6B1B4687ADA4CBF41EC0AFC26D021D1772CBDCD0516DF5EBE1 │ │ │ │ -37FD2AC5ABB8D774B5735940F1F6866D044FD8CE74444FAA5D0202C11E39CC10 │ │ │ │ -213731F41F704450E1D0565013BF22188442CE0FC256190A9F92F0C802AA2660 │ │ │ │ -614AFE9E9C82F8CD2E6035EEF84E5F16CBB690AC819B4B910EA8E81106F0ACE5 │ │ │ │ -CDFE77DAF69E4AFE72C43145A3ABCC40B6C5297487083F738C86422277AC2267 │ │ │ │ -51759F1B7F129E87DE16433B664AD0FB6D30424A11C70B52B591352BF653C8B0 │ │ │ │ -0840C224FBFEAA996A6BE1D69414DD778C2EF56A63B64D59BA412EC3E4000831 │ │ │ │ -73361FB9813F9A7C74BA3A50D331B07B61492E5D75F0861B530587269B3ADC90 │ │ │ │ -EA1DF586AC4BC57C3230893EFE953A6E76950ABA895FAC711D3BD330ABC6846A │ │ │ │ -C91F6ABF3410B913DFE5C8266020CEE5C7A9EDA2E7D9BCA797DC486443C7BA7C │ │ │ │ -7E03439A40927FA3251B6D417E5653E7799E9D6F04149C34096E2CA9B1F9B1EC │ │ │ │ -38958A2521B4A657A8B9F16E1FD66C7E345A10D7AA0241559503D214AC6507A4 │ │ │ │ -CBDE8617AA7ED136577734428594487F3565BF45FA196375759E2FE23C26EC8A │ │ │ │ -3310A36917A5E2F260EAB31030F8E570303D36B833626938F56939849DFA1F3F │ │ │ │ -66D0A317BB6364427F1512AAB380B555611C76345C02C3A6FBF78590331D5ECA │ │ │ │ -029DEFB722F6AB05327C2A31AB7BD6ED0F0386E6F45C1278048D22B90B074CCB │ │ │ │ -2BBEBCC1927C97EC532E651CAF0058AFE8FC08F00F0216D5DD9830C294FF76DA │ │ │ │ -426A073B3A3AEEFBDEE71C5182186311607ECDBD1F1AF4C5E79748CD01445C8D │ │ │ │ -25DD49490C8A6810065908222C8D0AC9F83AFBEE7115023E2D2615A170A5D40A │ │ │ │ -AD49BDF59A59187B6434F83E68EED22EF4EFDBADED6F1559AC779E0377FE7375 │ │ │ │ -D7060584FE74B1859D0FD98772253A712B17FFBB467840C484F5EF82C5677ADB │ │ │ │ -EDF159A456A526B8B9F6E8FC7608DFD47B0F09E26118F79CBE53B6C4E32BACAB │ │ │ │ -D62AFD4AA527CC4B587BB41A17A9BCE106A8C592BC9B73422B712C466C284A17 │ │ │ │ -E8D0C1E01D43C739FB1C083AD2714F78AC785B0C09AA7E67417A73510E00F2FE │ │ │ │ -E3D3EBF626A2F3A20A386E3F98D1285F4A2A332FC609CD191F01F128627B3505 │ │ │ │ -0AC2387DC0AD1B950490EBB5045F22BEC54955402CE2D267B6754E7C32BE84E8 │ │ │ │ -E6B63E3D3EAEE979442D167AEF69C27B22A8E887A2510C3A168D95D285CF7515 │ │ │ │ -011C921679B2F386575826A3F2071D015EEB78F02A4F94D4E5F07873623200F8 │ │ │ │ -7DF95BA0DC6B6D31DECC925BEA1E6A7C52FE685800EC33CBAE830F1AE5454DFA │ │ │ │ -913B8F457D7E2D3DFF019869E3301EEEC64A38295DE6B588E776922B32362382 │ │ │ │ -D1CF3D058613C8A96E6994D3EC23E8B71EC6E718383B20BB6C22DB6F93FA559F │ │ │ │ -3449CA84EB33B25C8BE0DFD1C29DC4FBD7AFBDC96C12162CAAB2C5E354B0FB10 │ │ │ │ -4BF8CC3610875ABD5111D09F2F847822118972214EDEB9EE34BAFE45E7AC15C5 │ │ │ │ -CA63EC4A3CEEA505A5EDD88A59BB67C71C3E026DFFE177F99BC69E6635545D03 │ │ │ │ -77A634F98230EF64381EC67CA519D4B9770EFA844789E21970F89D5FFC5DEAA8 │ │ │ │ -DC008EBA09306967ED090FF91B002FA6120C2B461A87AA32EFB003C5578D8EEF │ │ │ │ - │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ +AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ +E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ +46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ +FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ +389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ +7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ +2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ +C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ +B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ +AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ +E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ +F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ +0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ +2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ +29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ +CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ +6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ +5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ +36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0DD96AB602D004DCFE000A0 │ │ │ │ +ABE41BAB8AB7D50BD32BFD6F1AA3B60B09B9BE4E273EDD2DDCB21A98A760D17D │ │ │ │ +0A5C9303AFE63CF80A93E60C72A0576FAADEECBE2DE91892D210EB0AD1889C04 │ │ │ │ +C7530652584E775B4ED19CFB4B8DBCCC57A9FA9E4DDC8A1E5A1D3BE9E93407A6 │ │ │ │ +2C237ACE27F4EDA330EE952EDCBE91683AA98A29197735006666C96A2CE7C787 │ │ │ │ +BBA5A57C4DBF6FAA5B38AF226B5D9A65FAD84650AC0C3DB29C30602699F81E01 │ │ │ │ +0BAF8F1CE44A03C680121B77A1703C638187675D6C22C49F9902475E6CE9C732 │ │ │ │ +48ED028CC92EA542EF189CC9CA1C384E3387793057615D0A2BF040CC90B275B9 │ │ │ │ +F70A5310874DC2E0A360373E7BCAC88250FBC8989C7D18DA8274C06F02FCF31C │ │ │ │ +2B3868CBAF083DAC2FB159DE368261842DB7C9EA1A86B17617C861A48FBA8FF9 │ │ │ │ +D184CB026F4A418C0955347612F94C039B1536A76CB182A591DD7C02D509CF16 │ │ │ │ +8B9E46502ABF5DE31F5DFBD19C7417A2AF7AF13F0D5FF837C94CE56F07B96337 │ │ │ │ +0ED215252346FAEB54B5F3ABE29709B7ECB9FBD23A4AD397E6ABA6938F1BBF33 │ │ │ │ +1D5460D9414F0B8725DA832744525C13E3FD9C8DB33FBEE12F9C4969988402C8 │ │ │ │ +96AF916364CC2DF17EDBA622FC0A5D0013418E29F912FFA06F8D7E31ECAB0B08 │ │ │ │ +C4D2D8EE537CC768FC9038DD6D86D33642C6E812E941F157FC6917AF19C2B99A │ │ │ │ +5BF10B9A7ECF711BBB6F33C8C3DAD778153122593F36ABDDC0E97A602B045DE6 │ │ │ │ +19BD82D877DDA960AB11EF48C7F75A28D0D731D4A5DBC98283087267CD1A470D │ │ │ │ +537E949DA5EECF097B099547995BE066A941CED683B5748962AD2B02C21636C0 │ │ │ │ +2EAFA33CA0CB3BF8A95703F015A210D918865B9BEA2890DCFB68BC3719C305EC │ │ │ │ +315EC8727BF9A93632AB9E3090B100C022EE1396CD329B37547F26A7DCE52BD7 │ │ │ │ +F91B7388DEC34F4A0C6D46CD7CA6ACC00C5C4C71E47C6AD96496B3CBF531F342 │ │ │ │ +A740EE6B99BD70AD490DFA700772A0697EC6561CE88A0113E4DC3B21F372D810 │ │ │ │ +DFF2C3F6EDF3E917BF2664EEFC9AD292DD6CC36853CF936018D43FDB28D5B001 │ │ │ │ +7D1C805F958F13FD221377ABDD69D102E8CC1DAB2E011EE16CF6DB9D195BA702 │ │ │ │ +5A8738FABF989B0351282D0E5121182DFC52169782A5F3DD5D820411BEF909DE │ │ │ │ +04D963E6FDA76F88508C4E91DDAAA1748F396A1D380D8CA429673AF27C164434 │ │ │ │ +771781B39565D3EE50F3CF03EF12908B13A6C11C9AB7631B32125828B13050BA │ │ │ │ +041A93B97AC32D4A1E28C5FA98CDEE998B5F97823D6291D01E3611A16854F1FE │ │ │ │ +69B9D6D2AE3E56D012B7BC3E582FB4C23188A5E365E65EB1F804A706AF73A2F8 │ │ │ │ +9804808EF71F0982B14133BF9A27D6F2E719BDB751022B1B052722933948904E │ │ │ │ +3582E363478DCDA115205A0FDE39DF71FEAEEB104419C35A6B0678C19616C6D9 │ │ │ │ +A892DC2F4257069AF096C80C099CD13024DF3995F28C694E00D1F08B43D4450C │ │ │ │ +D18F5C925CFD2D124E74FC64BBAA0DE32A79E4A4507B5B5DD834C67160CDA110 │ │ │ │ +EF0061DD27E8864F4250A92BBEFD75C784BB98F4FA789A8236C2A21E4E61ABD0 │ │ │ │ +C6B4D13B3C31AC8E55FA34BEC7C308C61FB0280382EC6AFD63D959678D42D2B3 │ │ │ │ +4134F6236A0808D9302B4E3C6F81FC6973B4833602750CCB5DE36AEA23ED6BD4 │ │ │ │ +5B72DF0DD7B81C871CAA6EC190748CD8C4B998D576E5D340ACAC0617DDBE461C │ │ │ │ +8E82E809D11A01D265D039F4315066832E27E08A6F067E129E45FBF533F761BB │ │ │ │ +EC3C071209BECE7D14D3184B2E6BFD65717A5A7C08F3776B20C513649488C1CF │ │ │ │ +03333805B249D1034FB0AE2D7D2A23324EE27AEDB68F8E329A8052FE58D7C0D9 │ │ │ │ +A40A0CDC79F2085C4F39A7DFDB625C8F071E2A32CF6215DD3E060A9BABF7A3AA │ │ │ │ +C57DA0C0571C5D6EEAA975D1BB9C99F8EA4958360E43E8C60080B03DC4435550 │ │ │ │ +E6048DDD35DF3E5DA69669F266FFD7B44649A68025270DC84258E329F6E6907C │ │ │ │ +BCFF900D715D0C7EC43C5E7180CAD6427BA4FD41AAD6531A5C06B0EC26DDA71F │ │ │ │ +4A9DA50DE919E79226F6DDF7C1BA478936AA86CEAD93072CC2960E98C45A1A0C │ │ │ │ +60CF8A26E4278AB4F9E28FA6532648196CC455607D6BCD00F60675DE8CC02C8C │ │ │ │ +9BE5D5B714731814D5B008EE236563D77AC6895E0158877C95797E07C02AFEBE │ │ │ │ +CC9FE97D5E103F7DB0A834E9A7A75893EC66340B0E4C6F0EEDEF43415BF9FCF4 │ │ │ │ +47340CBEA4DCFBA0D028EB2149FFBBDB3322AE5F6FD20242526EDC55E476D983 │ │ │ │ +DC │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -5493,15 +5499,15 @@ │ │ │ │ 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 3[51 12[45 22[47 15[25 3[45 3[45 │ │ │ │ -1[45 3[25 44[{}11 90.9091 /CMSL10 rf │ │ │ │ +45 45 3[25 44[{}12 90.9091 /CMSL10 rf │ │ │ │ %DVIPSBitmapFont: Fm tcrm1095 10.95 1 │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ /Dotaccent/cedilla/ogonek/quotesinglbase.ts1 4{/.notdef}repeat │ │ │ │ /quotedblbase.ts1/.notdef/.notdef/twelveudash/threequartersemdash │ │ │ │ /afii61664.cap/arrowleft/arrowright/tieaccentlowercase/tieaccentcapital │ │ │ │ /tieaccentlowercase.new/tieaccentcapital.new/.notdef/afii61664.asc/uni2422 3 │ │ │ │ {/.notdef}repeat/dollar/.notdef/.notdef/quotesingle/.notdef/.notdef │ │ │ │ @@ -5600,17 +5606,17 @@ │ │ │ │ b Fq(data)h(\014elds.)558 4763 y Fp(typedef)45 b(struct)h(_I2OP)h(I2OP) │ │ │ │ f(;)558 4876 y(struct)g(_I2OP)g({)701 4989 y(int)190 │ │ │ │ b(value0)94 b(;)701 5101 y(int)190 b(value1)94 b(;)701 │ │ │ │ 5214 y(void)142 b(*value2)46 b(;)701 5327 y(I2OP)142 │ │ │ │ b(*next)g(;)558 5440 y(})47 b(;)1927 5656 y Fq(1)p eop │ │ │ │ end │ │ │ │ %%Page: 2 2 │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fq(2)p 136 100 1034 4 v │ │ │ │ -1215 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(Jan)m(uary)g(6,)h │ │ │ │ -(2026)p 2867 100 V 0 399 a Fn(1.2)135 b(Protot)l(yp)t(es)46 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fq(2)p 136 100 1011 4 v │ │ │ │ +1193 w Fp(Utilities)28 b Fl(:)40 b Fk(DRAFT)30 b Fl(Jan)m(uary)g(10,)i │ │ │ │ +(2026)p 2890 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 │ │ │ │ @@ -5666,17 +5672,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 1034 4 v 1215 100 a Fp(Utilities)28 │ │ │ │ -b Fl(:)40 b Fk(DRAFT)122 b Fl(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2820 100 V 1034 w Fq(3)111 399 y(2.)46 b Fp(double)g(*)i(DVinit2)e(\()h │ │ │ │ +TeXDict begin 3 2 bop 91 100 1011 4 v 1192 100 a Fp(Utilities)28 │ │ │ │ +b Fl(:)41 b Fk(DRAFT)121 b Fl(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2842 100 V 1011 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 │ │ │ │ @@ -5728,17 +5734,17 @@ │ │ │ │ (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 1034 4 v │ │ │ │ -1215 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(Jan)m(uary)g(6,)h │ │ │ │ -(2026)p 2867 100 V 227 399 a Fp(y0[])47 b(=)g(y0[])g(+)g(alpha[0])f(*)h │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fq(4)p 136 100 1011 4 v │ │ │ │ +1193 w Fp(Utilities)28 b Fl(:)40 b Fk(DRAFT)30 b Fl(Jan)m(uary)g(10,)i │ │ │ │ +(2026)p 2890 100 V 227 399 a Fp(y0[])47 b(=)g(y0[])g(+)g(alpha[0])f(*)h │ │ │ │ (x0[])227 511 y(y1[])g(=)g(y1[])g(+)g(alpha[1])f(*)h(x0[])227 │ │ │ │ 624 y(y2[])g(=)g(y2[])g(+)g(alpha[2])f(*)h(x0[])66 850 │ │ │ │ y Fq(12.)f Fp(void)h(DVaxpy23)e(\()j(int)f(n,)g(double)f(y0[],)g │ │ │ │ (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 │ │ │ │ @@ -5772,17 +5778,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 1034 4 v 1215 100 a Fp(Utilities)28 │ │ │ │ -b Fl(:)40 b Fk(DRAFT)122 b Fl(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2820 100 V 1034 w Fq(5)66 399 y(19.)46 b Fp(void)h(DVcompress)e(\()i │ │ │ │ +TeXDict begin 5 4 bop 91 100 1011 4 v 1192 100 a Fp(Utilities)28 │ │ │ │ +b Fl(:)41 b Fk(DRAFT)121 b Fl(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2842 100 V 1011 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 │ │ │ │ @@ -5872,17 +5878,17 @@ │ │ │ │ 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 1034 4 v │ │ │ │ -1215 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(Jan)m(uary)g(6,)h │ │ │ │ -(2026)p 2867 100 V 66 399 a Fq(25.)46 b Fp(int)h(DVdot23)f(\()h(int)g │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fq(6)p 136 100 1011 4 v │ │ │ │ +1193 w Fp(Utilities)28 b Fl(:)40 b Fk(DRAFT)30 b Fl(Jan)m(uary)g(10,)i │ │ │ │ +(2026)p 2890 100 V 66 399 a Fq(25.)46 b Fp(int)h(DVdot23)f(\()h(int)g │ │ │ │ (n,)h(double)e(row0[],)f(double)i(row1[],)895 511 y(double)g(col0[],)e │ │ │ │ (double)h(col1[],)g(double)g(col2[],)g(double)g(sums[])g(\))i(;)227 │ │ │ │ 667 y Fq(This)30 b(metho)s(d)g(computes)g(six)h(dot)f(pro)s(ducts.)277 │ │ │ │ 891 y Fp(sums)p Fq([)p Fp(0)p Fq(])24 b(=)687 786 y Fe(n)p │ │ │ │ Fd(\000)p Fe(1)690 810 y Ff(X)687 989 y Fe(i)p Fc(=)p │ │ │ │ Fe(0)828 891 y Fp(row0)p Fq([)p Fp(i)p Fq(])19 b Fg(\003)i │ │ │ │ Fp(col0)p Fq([)p Fp(i)p Fq(])99 b Fp(sums)p Fq([)p Fp(1)p │ │ │ │ @@ -5962,17 +5968,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 1034 4 v 1215 100 a Fp(Utilities)28 │ │ │ │ -b Fl(:)40 b Fk(DRAFT)122 b Fl(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2820 100 V 1034 w Fq(7)66 399 y(31.)46 b Fp(int)h(DVdoti)f(\()i(int)f │ │ │ │ +TeXDict begin 7 6 bop 91 100 1011 4 v 1192 100 a Fp(Utilities)28 │ │ │ │ +b Fl(:)41 b Fk(DRAFT)121 b Fl(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2842 100 V 1011 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 │ │ │ │ @@ -6026,17 +6032,17 @@ │ │ │ │ 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 1034 4 v │ │ │ │ -1215 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(Jan)m(uary)g(6,)h │ │ │ │ -(2026)p 2867 100 V 66 399 a Fq(44.)46 b Fp(void)h(DVscale2)e(\()j(int)f │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fq(8)p 136 100 1011 4 v │ │ │ │ +1193 w Fp(Utilities)28 b Fl(:)40 b Fk(DRAFT)30 b Fl(Jan)m(uary)g(10,)i │ │ │ │ +(2026)p 2890 100 V 66 399 a Fq(44.)46 b Fp(void)h(DVscale2)e(\()j(int)f │ │ │ │ (n,)g(double)f(x[],)h(double)f(y[],)991 511 y(double)g(a,)h(double)f │ │ │ │ (b,)h(double)g(c,)g(double)f(d)h(\))h(;)227 668 y Fq(This)30 │ │ │ │ b(metho)s(d)g(scales)h(t)m(w)m(o)h(v)m(ectors)g Fp(y[])d │ │ │ │ Fq(b)m(y)h(a)h(2)21 b Fg(\002)f Fq(2)31 b(matrix,)g(i.e.,)881 │ │ │ │ 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 │ │ │ │ @@ -6102,17 +6108,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 1034 4 v 1215 100 a Fp(Utilities)28 │ │ │ │ -b Fl(:)40 b Fk(DRAFT)122 b Fl(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2820 100 V 1034 w Fq(9)0 399 y Fi(1.2.3)112 b Fh(ZV)38 │ │ │ │ +TeXDict begin 9 8 bop 91 100 1011 4 v 1192 100 a Fp(Utilities)28 │ │ │ │ +b Fl(:)41 b Fk(DRAFT)121 b Fl(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2842 100 V 1011 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 │ │ │ │ @@ -6179,18 +6185,18 @@ │ │ │ │ 5294 y Fq(This)33 b(metho)s(d)h(adds)f(a)h(scaled)g(m)m(ultiple)h(of)f │ │ │ │ (t)m(w)m(o)h(v)m(ectors)g Fp(x[])e Fq(and)h Fp(y[])f │ │ │ │ Fq(to)h(another)g(v)m(ector)i Fp(z[])p Fq(,)e(i.e.,)227 │ │ │ │ 5407 y(i.e.,)e Fp(z[i])47 b(+=)g(\(areal,aimag\))d(*)j(x[i])g(+)h │ │ │ │ (\(breal,bimag\))c(*)j(y[i])29 b Fq(for)h Fp(0)48 b(<=)f(i)h(<)f(n)p │ │ │ │ Fq(.)p eop end │ │ │ │ %%Page: 10 10 │ │ │ │ -TeXDict begin 10 9 bop 0 100 a Fq(10)p 182 100 1011 4 │ │ │ │ -v 1193 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(Jan)m(uary)g(6,)h │ │ │ │ -(2026)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 │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fq(10)p 182 100 988 4 │ │ │ │ +v 1170 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(Jan)m(uary)g(10,) │ │ │ │ +i(2026)p 2912 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 │ │ │ │ @@ -6225,24 +6231,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 1011 4 v 1192 100 a Fp(Utilities)28 │ │ │ │ -b Fl(:)41 b Fk(DRAFT)121 b Fl(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2797 100 V 1011 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 988 4 v 1169 100 a Fp(Utilities)28 │ │ │ │ +b Fl(:)41 b Fk(DRAFT)121 b Fl(Jan)m(uary)30 b(10,)i(2026)p │ │ │ │ +2820 100 V 988 w Fq(11)66 399 y(14.)46 b Fp(void)h(ZVaxpy13)e(\()j(int) │ │ │ │ +f(n,)g(double)f(y0[],)991 511 y(double)g(alpha[],)g(double)g(x0[],)g │ │ │ │ +(double)g(x1[],)g(double)h(x2[])f(\))i(;)227 667 y Fq(This)30 │ │ │ │ +b(metho)s(d)g(computes)g(the)h(follo)m(wing.)227 907 │ │ │ │ +y Fp(y0[])47 b(=)g(y0[])g(+)g(alpha[0:1])e(*)j(x0[])f(+)g(alpha[2:3])e │ │ │ │ +(*)i(x1[])g(+)h(alpha[4:5])d(*)i(x2[])66 1146 y Fq(15.)f │ │ │ │ +Fp(void)h(ZVaxpy12)e(\()j(int)f(n,)g(double)f(y0[],)g(double)h │ │ │ │ +(alpha[],)e(double)h(x0[],)h(double)f(x1[])g(\))i(;)227 │ │ │ │ 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 │ │ │ │ @@ -6282,36 +6288,36 @@ │ │ │ │ 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 1011 │ │ │ │ -4 v 1193 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b │ │ │ │ -Fl(Jan)m(uary)g(6,)h(2026)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 │ │ │ │ -Fp(col1)p Fq([)p Fp(i)p Fq(])277 723 y Fp(sums)p Fq([)p │ │ │ │ -Fp(4)k Fq(:)i Fp(5)p Fq(])f(=)811 617 y Fe(n)p Fd(\000)p │ │ │ │ -Fe(1)814 642 y Ff(X)811 821 y Fe(i)p Fc(=)p Fe(0)952 │ │ │ │ -723 y Fp(row0)p Fq([)p Fp(i)p Fq(])19 b Fg(\003)i Fp(col2)p │ │ │ │ -Fq([)p Fp(i)p Fq(])194 b Fp(sums)p Fq([)p Fp(6)24 b Fq(:)h │ │ │ │ -Fp(7)p Fq(])h(=)2345 617 y Fe(n)p Fd(\000)p Fe(1)2347 │ │ │ │ -642 y Ff(X)2345 821 y Fe(i)p Fc(=)p Fe(0)2485 723 y Fp(row1)p │ │ │ │ -Fq([)p Fp(i)p Fq(])20 b Fg(\003)g Fp(col0)p Fq([)p Fp(i)p │ │ │ │ -Fq(])277 984 y Fp(sums)p Fq([)p Fp(8)k Fq(:)i Fp(9)p │ │ │ │ -Fq(])f(=)811 878 y Fe(n)p Fd(\000)p Fe(1)814 903 y Ff(X)811 │ │ │ │ -1082 y Fe(i)p Fc(=)p Fe(0)952 984 y Fp(row1)p Fq([)p │ │ │ │ -Fp(i)p Fq(])19 b Fg(\003)i Fp(col1)p Fq([)p Fp(i)p Fq(])194 │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fq(12)p 182 100 988 4 │ │ │ │ +v 1170 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(Jan)m(uary)g(10,) │ │ │ │ +i(2026)p 2912 100 V 277 462 a Fp(sums)p Fq([)p Fp(0)p │ │ │ │ +Fq(;)15 b Fp(1)p Fq(])25 b(=)776 356 y Fe(n)p Fd(\000)p │ │ │ │ +Fe(1)778 381 y Ff(X)776 560 y Fe(i)p Fc(=)p Fe(0)916 │ │ │ │ +462 y Fp(row0)p Fq([)p Fp(i)p Fq(])20 b Fg(\003)g Fp(col0)p │ │ │ │ +Fq([)p Fp(i)p Fq(])230 b Fp(sums)p Fq([)p Fp(2)24 b Fq(:)h │ │ │ │ +Fp(3)p Fq(])h(=)2345 356 y Fe(n)p Fd(\000)p Fe(1)2347 │ │ │ │ +381 y Ff(X)2345 560 y Fe(i)p Fc(=)p Fe(0)2485 462 y Fp(row0)p │ │ │ │ +Fq([)p Fp(i)p Fq(])20 b Fg(\003)g Fp(col1)p Fq([)p Fp(i)p │ │ │ │ +Fq(])277 723 y Fp(sums)p Fq([)p Fp(4)k Fq(:)i Fp(5)p │ │ │ │ +Fq(])f(=)811 617 y Fe(n)p Fd(\000)p Fe(1)814 642 y Ff(X)811 │ │ │ │ +821 y Fe(i)p Fc(=)p Fe(0)952 723 y Fp(row0)p Fq([)p Fp(i)p │ │ │ │ +Fq(])19 b Fg(\003)i Fp(col2)p Fq([)p Fp(i)p Fq(])194 │ │ │ │ +b Fp(sums)p Fq([)p Fp(6)24 b Fq(:)h Fp(7)p Fq(])h(=)2345 │ │ │ │ +617 y Fe(n)p Fd(\000)p Fe(1)2347 642 y Ff(X)2345 821 │ │ │ │ +y Fe(i)p Fc(=)p Fe(0)2485 723 y Fp(row1)p Fq([)p Fp(i)p │ │ │ │ +Fq(])20 b Fg(\003)g Fp(col0)p Fq([)p Fp(i)p Fq(])277 │ │ │ │ +984 y Fp(sums)p Fq([)p Fp(8)k Fq(:)i Fp(9)p Fq(])f(=)811 │ │ │ │ +878 y Fe(n)p Fd(\000)p Fe(1)814 903 y Ff(X)811 1082 y │ │ │ │ +Fe(i)p Fc(=)p Fe(0)952 984 y Fp(row1)p Fq([)p Fp(i)p │ │ │ │ +Fq(])19 b Fg(\003)i Fp(col1)p Fq([)p Fp(i)p Fq(])194 │ │ │ │ b Fp(sums)p Fq([)p Fp(10)24 b Fq(:)h Fp(11)p Fq(])g(=)2440 │ │ │ │ 878 y Fe(n)p Fd(\000)p Fe(1)2443 903 y Ff(X)2440 1082 │ │ │ │ y Fe(i)p Fc(=)p Fe(0)2581 984 y Fp(row1)p Fq([)p Fp(i)p │ │ │ │ Fq(])19 b Fg(\003)i Fp(col2)p Fq([)p Fp(i)p Fq(])277 │ │ │ │ 1245 y Fp(sums)p Fq([)p Fp(12)j Fq(:)h Fp(13)p Fq(])g(=)906 │ │ │ │ 1139 y Fe(n)p Fd(\000)p Fe(1)909 1164 y Ff(X)906 1343 │ │ │ │ y Fe(i)p Fc(=)p Fe(0)1047 1245 y Fp(row2)p Fq([)p Fp(i)p │ │ │ │ @@ -6393,18 +6399,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 1011 4 v 1192 100 a Fp(Utilities)28 │ │ │ │ -b Fl(:)41 b Fk(DRAFT)121 b Fl(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2797 100 V 1011 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 988 4 v 1169 100 a Fp(Utilities)28 │ │ │ │ +b Fl(:)41 b Fk(DRAFT)121 b Fl(Jan)m(uary)30 b(10,)i(2026)p │ │ │ │ +2820 100 V 988 w Fq(13)66 399 y(26.)46 b Fp(int)h(ZVdotU22)f(\()h(int)g │ │ │ │ +(n,)g(double)f(row0[],)g(double)g(row1[],)895 511 y(double)h(col0[],)e │ │ │ │ (double)h(col1[],)g(double)g(sums[])g(\))i(;)227 681 │ │ │ │ y Fq(This)30 b(metho)s(d)g(computes)g(four)g(dot)g(pro)s(ducts.)277 │ │ │ │ 918 y Fp(sums)p Fq([)p Fp(0)24 b Fq(:)i Fp(1)p Fq(])f(=)811 │ │ │ │ 813 y Fe(n)p Fd(\000)p Fe(1)814 838 y Ff(X)811 1017 y │ │ │ │ Fe(i)p Fc(=)p Fe(0)952 918 y Fp(row0)p Fq([)p Fp(i)p │ │ │ │ Fq(])19 b Fg(\003)i Fp(col0)p Fq([)p Fp(i)p Fq(])98 b │ │ │ │ Fp(sums)p Fq([)p Fp(2)24 b Fq(:)i Fp(3)p Fq(])f(=)2249 │ │ │ │ @@ -6466,30 +6472,30 @@ │ │ │ │ Fq(])19 b Fg(\003)i Fp(col0)p Fq([)p Fp(i)p Fq(])66 5125 │ │ │ │ y(31.)46 b Fp(int)h(ZVdotC33)f(\()h(int)g(n,)g(double)f(row0[],)g │ │ │ │ (double)g(row1[],)g(double)g(row2[],)895 5238 y(double)h(col0[],)e │ │ │ │ (double)h(col1[],)g(double)g(col2[],)g(double)g(sums[])g(\))i(;)227 │ │ │ │ 5407 y Fq(This)30 b(metho)s(d)g(computes)g(nine)g(dot)h(pro)s(ducts.)p │ │ │ │ eop end │ │ │ │ %%Page: 14 14 │ │ │ │ -TeXDict begin 14 13 bop 0 100 a Fq(14)p 182 100 1011 │ │ │ │ -4 v 1193 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b │ │ │ │ -Fl(Jan)m(uary)g(6,)h(2026)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 │ │ │ │ -Fq([)p Fp(i)p Fq(])20 b Fg(\003)g Fp(col1)p Fq([)p Fp(i)p │ │ │ │ -Fq(])277 723 y Fp(sums)p Fq([)p Fp(4)k Fq(:)i Fp(5)p │ │ │ │ -Fq(])f(=)811 617 y Fe(n)p Fd(\000)p Fe(1)814 642 y Ff(X)811 │ │ │ │ -821 y Fe(i)p Fc(=)p Fe(0)p 952 645 V 952 723 a Fp(row0)p │ │ │ │ -Fq([)p Fp(i)p Fq(])19 b Fg(\003)i Fp(col2)p Fq([)p Fp(i)p │ │ │ │ -Fq(])194 b Fp(sums)p Fq([)p Fp(6)24 b Fq(:)h Fp(7)p Fq(])h(=)2345 │ │ │ │ +TeXDict begin 14 13 bop 0 100 a Fq(14)p 182 100 988 4 │ │ │ │ +v 1170 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(Jan)m(uary)g(10,) │ │ │ │ +i(2026)p 2912 100 V 277 462 a Fp(sums)p Fq([)p Fp(0)p │ │ │ │ +Fq(;)15 b Fp(1)p Fq(])25 b(=)776 356 y Fe(n)p Fd(\000)p │ │ │ │ +Fe(1)778 381 y Ff(X)776 560 y Fe(i)p Fc(=)p Fe(0)p 916 │ │ │ │ +384 290 4 v 916 462 a Fp(row0)p Fq([)p Fp(i)p Fq(])20 │ │ │ │ +b Fg(\003)g Fp(col0)p Fq([)p Fp(i)p Fq(])230 b Fp(sums)p │ │ │ │ +Fq([)p Fp(2)24 b Fq(:)h Fp(3)p Fq(])h(=)2345 356 y Fe(n)p │ │ │ │ +Fd(\000)p Fe(1)2347 381 y Ff(X)2345 560 y Fe(i)p Fc(=)p │ │ │ │ +Fe(0)p 2485 384 V 2485 462 a Fp(row0)p Fq([)p Fp(i)p │ │ │ │ +Fq(])20 b Fg(\003)g Fp(col1)p Fq([)p Fp(i)p Fq(])277 │ │ │ │ +723 y Fp(sums)p Fq([)p Fp(4)k Fq(:)i Fp(5)p Fq(])f(=)811 │ │ │ │ +617 y Fe(n)p Fd(\000)p Fe(1)814 642 y Ff(X)811 821 y │ │ │ │ +Fe(i)p Fc(=)p Fe(0)p 952 645 V 952 723 a Fp(row0)p Fq([)p │ │ │ │ +Fp(i)p Fq(])19 b Fg(\003)i Fp(col2)p Fq([)p Fp(i)p Fq(])194 │ │ │ │ +b Fp(sums)p Fq([)p Fp(6)24 b Fq(:)h Fp(7)p Fq(])h(=)2345 │ │ │ │ 617 y Fe(n)p Fd(\000)p Fe(1)2347 642 y Ff(X)2345 821 │ │ │ │ y Fe(i)p Fc(=)p Fe(0)p 2485 645 V 2485 723 a Fp(row1)p │ │ │ │ Fq([)p Fp(i)p Fq(])20 b Fg(\003)g Fp(col0)p Fq([)p Fp(i)p │ │ │ │ Fq(])277 984 y Fp(sums)p Fq([)p Fp(8)k Fq(:)i Fp(9)p │ │ │ │ Fq(])f(=)811 878 y Fe(n)p Fd(\000)p Fe(1)814 903 y Ff(X)811 │ │ │ │ 1082 y Fe(i)p Fc(=)p Fe(0)p 952 906 V 952 984 a Fp(row1)p │ │ │ │ Fq([)p Fp(i)p Fq(])19 b Fg(\003)i Fp(col1)p Fq([)p Fp(i)p │ │ │ │ @@ -6582,18 +6588,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 1011 4 v 1192 100 a Fp(Utilities)28 │ │ │ │ -b Fl(:)41 b Fk(DRAFT)121 b Fl(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2797 100 V 1011 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 988 4 v 1169 100 a Fp(Utilities)28 │ │ │ │ +b Fl(:)41 b Fk(DRAFT)121 b Fl(Jan)m(uary)30 b(10,)i(2026)p │ │ │ │ +2820 100 V 988 w Fq(15)66 399 y(35.)46 b Fp(int)h(ZVdotC22)f(\()h(int)g │ │ │ │ +(n,)g(double)f(row0[],)g(double)g(row1[],)895 511 y(double)h(col0[],)e │ │ │ │ (double)h(col1[],)g(double)g(sums[])g(\))i(;)227 669 │ │ │ │ y Fq(This)30 b(metho)s(d)g(computes)g(four)g(dot)g(pro)s(ducts.)277 │ │ │ │ 895 y Fp(sums)p Fq([)p Fp(0)24 b Fq(:)i Fp(1)p Fq(])f(=)811 │ │ │ │ 789 y Fe(n)p Fd(\000)p Fe(1)814 814 y Ff(X)811 993 y │ │ │ │ Fe(i)p Fc(=)p Fe(0)p 952 817 290 4 v 952 895 a Fp(row0)p │ │ │ │ Fq([)p Fp(i)p Fq(])19 b Fg(\003)i Fp(col0)p Fq([)p Fp(i)p │ │ │ │ Fq(])98 b Fp(sums)p Fq([)p Fp(2)24 b Fq(:)i Fp(3)p Fq(])f(=)2249 │ │ │ │ @@ -6660,40 +6666,40 @@ │ │ │ │ (y[],)h(double)f(x[],)g(int)h(index[])f(\))i(;)227 5047 │ │ │ │ y(y[i])f(=)g(x[index[i]])28 b Fq(for)i Fp(0)47 b(<=)g(i)h(<)f(n)p │ │ │ │ Fq(.)66 5249 y(41.)f Fp(double)g(ZVmaxabs)g(\()h(int)g(n,)g(double)g │ │ │ │ (y[])f(\))i(;)227 5407 y Fq(This)30 b(metho)s(d)g(returns)f(the)h │ │ │ │ (maxim)m(um)h(magnitude)f(of)h(en)m(tries)g(in)f Fp(y[0:n-1])p │ │ │ │ Fq(.)p eop end │ │ │ │ %%Page: 16 16 │ │ │ │ -TeXDict begin 16 15 bop 0 100 a Fq(16)p 182 100 1011 │ │ │ │ -4 v 1193 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b │ │ │ │ -Fl(Jan)m(uary)g(6,)h(2026)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 │ │ │ │ -Fq(.)36 b(for)29 b Fp(0)48 b(<=)227 1046 y(i)g(<)f(n)p │ │ │ │ -Fq(.)66 1257 y(44.)f Fp(void)h(ZVscale2)e(\()j(int)f(n,)g(double)f │ │ │ │ -(x[],)h(double)f(y[],)991 1370 y(double)g(areal,)g(double)g(aimag,)g │ │ │ │ -(double)g(breal,)g(double)h(bimag,)991 1482 y(double)f(creal,)g(double) │ │ │ │ -g(cimag,)g(double)g(dreal,)g(double)h(dimag)f(\))h(;)227 │ │ │ │ -1644 y Fq(This)30 b(metho)s(d)g(scales)h(t)m(w)m(o)h(v)m(ectors)g │ │ │ │ -Fp(y[])d Fq(b)m(y)h(a)h(2)21 b Fg(\002)f Fq(2)31 b(matrix,)g(i.e.,)340 │ │ │ │ -1785 y Ff(")430 1872 y Fp(x)p Fq([)p Fp(0)p Fq(])83 b │ │ │ │ -Fb(:)15 b(:)g(:)84 b Fp(x)p Fq([)p Fp(n)20 b Fg(\000)g │ │ │ │ -Fp(1)p Fq(])430 1985 y Fp(y)p Fq([)p Fp(0)p Fq(])83 b │ │ │ │ -Fb(:)15 b(:)g(:)84 b Fp(y)p Fq([)p Fp(n)20 b Fg(\000)g │ │ │ │ -Fp(1)p Fq(])1194 1785 y Ff(#)1268 1929 y Fq(:=)1389 1785 │ │ │ │ -y Ff(")1479 1872 y Fq(\()p Fp(areal)p Fb(;)15 b Fp(aimag)p │ │ │ │ -Fq(\))82 b(\()p Fp(breal)p Fb(;)15 b Fp(bimag)p Fq(\))1479 │ │ │ │ -1985 y(\()p Fp(creal)p Fb(;)g Fp(cimag)p Fq(\))82 b(\()p │ │ │ │ -Fp(dreal)p Fb(;)15 b Fp(dimag)p Fq(\))2780 1785 y Ff(#)h(")2934 │ │ │ │ +TeXDict begin 16 15 bop 0 100 a Fq(16)p 182 100 988 4 │ │ │ │ +v 1170 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(Jan)m(uary)g(10,) │ │ │ │ +i(2026)p 2912 100 V 66 399 a Fq(42.)46 b Fp(double)g(ZVminabs)g(\()h │ │ │ │ +(int)g(n,)g(double)g(y[])f(\))i(;)227 560 y Fq(This)30 │ │ │ │ +b(metho)s(d)g(returns)f(the)h(minim)m(um)g(magnitude)g(of)h(en)m(tries) │ │ │ │ +g(in)f Fp(y[0:n-1])p Fq(.)66 771 y(43.)46 b Fp(void)h(ZVscale)f(\()h │ │ │ │ +(int)g(n,)g(double)f(y[],)h(double)f(areal,)g(double)g(aimag)h(\))g(;) │ │ │ │ +227 933 y Fq(This)29 b(metho)s(d)f(scales)i(a)g(v)m(ector)g │ │ │ │ +Fp(y[])e Fq(b)m(y)h Fp(\(areal,aimag\))p Fq(,)d(i.e.,)31 │ │ │ │ +b Fp(y[i])46 b(*=)i(\(areal,aimag\))p Fq(.)36 b(for)29 │ │ │ │ +b Fp(0)48 b(<=)227 1046 y(i)g(<)f(n)p Fq(.)66 1257 y(44.)f │ │ │ │ +Fp(void)h(ZVscale2)e(\()j(int)f(n,)g(double)f(x[],)h(double)f(y[],)991 │ │ │ │ +1370 y(double)g(areal,)g(double)g(aimag,)g(double)g(breal,)g(double)h │ │ │ │ +(bimag,)991 1482 y(double)f(creal,)g(double)g(cimag,)g(double)g(dreal,) │ │ │ │ +g(double)h(dimag)f(\))h(;)227 1644 y Fq(This)30 b(metho)s(d)g(scales)h │ │ │ │ +(t)m(w)m(o)h(v)m(ectors)g Fp(y[])d Fq(b)m(y)h(a)h(2)21 │ │ │ │ +b Fg(\002)f Fq(2)31 b(matrix,)g(i.e.,)340 1785 y Ff(")430 │ │ │ │ +1872 y Fp(x)p Fq([)p Fp(0)p Fq(])83 b Fb(:)15 b(:)g(:)84 │ │ │ │ +b Fp(x)p Fq([)p Fp(n)20 b Fg(\000)g Fp(1)p Fq(])430 1985 │ │ │ │ +y Fp(y)p Fq([)p Fp(0)p Fq(])83 b Fb(:)15 b(:)g(:)84 b │ │ │ │ +Fp(y)p Fq([)p Fp(n)20 b Fg(\000)g Fp(1)p Fq(])1194 1785 │ │ │ │ +y Ff(#)1268 1929 y Fq(:=)1389 1785 y Ff(")1479 1872 y │ │ │ │ +Fq(\()p Fp(areal)p Fb(;)15 b Fp(aimag)p Fq(\))82 b(\()p │ │ │ │ +Fp(breal)p Fb(;)15 b Fp(bimag)p Fq(\))1479 1985 y(\()p │ │ │ │ +Fp(creal)p Fb(;)g Fp(cimag)p Fq(\))82 b(\()p Fp(dreal)p │ │ │ │ +Fb(;)15 b Fp(dimag)p Fq(\))2780 1785 y Ff(#)h(")2934 │ │ │ │ 1872 y Fp(x)p Fq([)p Fp(0)p Fq(])83 b Fb(:)15 b(:)g(:)84 │ │ │ │ b Fp(x)p Fq([)p Fp(n)20 b Fg(\000)g Fp(1)p Fq(])2934 │ │ │ │ 1985 y Fp(y)p Fq([)p Fp(0)p Fq(])83 b Fb(:)15 b(:)g(:)84 │ │ │ │ b Fp(y)p Fq([)p Fp(n)20 b Fg(\000)g Fp(1)p Fq(])3698 │ │ │ │ 1785 y Ff(#)3762 1929 y Fb(:)66 2260 y Fq(45.)46 b Fp(void)h(ZVscatter) │ │ │ │ e(\()j(int)f(n,)g(double)f(y[],)g(int)h(index[],)f(double)g(x[])h(\))g │ │ │ │ (;)227 2421 y Fq(This)33 b(metho)s(d)h(scatters)h Fp(n)e │ │ │ │ @@ -6727,17 +6733,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 1011 4 v 1192 100 a Fp(Utilities)28 │ │ │ │ -b Fl(:)41 b Fk(DRAFT)121 b Fl(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2797 100 V 1011 w Fq(17)111 399 y(5.)46 b Fp(int)h(IVfp80)f(\()i(FILE)e │ │ │ │ +TeXDict begin 17 16 bop 91 100 988 4 v 1169 100 a Fp(Utilities)28 │ │ │ │ +b Fl(:)41 b Fk(DRAFT)121 b Fl(Jan)m(uary)30 b(10,)i(2026)p │ │ │ │ +2820 100 V 988 w Fq(17)111 399 y(5.)46 b Fp(int)h(IVfp80)f(\()i(FILE)e │ │ │ │ (*fp,)h(int)g(n,)g(int)g(y[],)g(int)g(column,)e(int)i(*pierr)f(\))i(;) │ │ │ │ 227 549 y Fq(This)21 b(metho)s(d)g(prin)m(ts)g Fp(n)g │ │ │ │ Fq(en)m(tries)h(in)g Fp(y[])e Fq(to)i(\014le)g Fp(fp)p │ │ │ │ Fq(.)37 b(The)21 b(metho)s(d)g(splices)h(v)m(ectors)h(together)g(or)f │ │ │ │ (naturally)227 662 y(breaks)33 b(the)h(large)g(v)m(ectors)h(in)m(to)f │ │ │ │ (lines.)49 b(The)33 b Fp(column)f Fq(v)-5 b(alue)33 b(is)h(the)f │ │ │ │ (presen)m(t)g(lo)s(cation.)51 b(If)33 b(the)g(prin)m(ted)227 │ │ │ │ @@ -6801,21 +6807,21 @@ │ │ │ │ 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 1011 │ │ │ │ -4 v 1193 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b │ │ │ │ -Fl(Jan)m(uary)g(6,)h(2026)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 │ │ │ │ +TeXDict begin 18 17 bop 0 100 a Fq(18)p 182 100 988 4 │ │ │ │ +v 1170 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(Jan)m(uary)g(10,) │ │ │ │ +i(2026)p 2912 100 V 66 399 a Fq(16.)46 b Fp(int)h(IVmin)g(\()g(int)g │ │ │ │ +(n,)g(int)g(y[],)g(int)g(*ploc)f(\))h(;)227 554 y Fq(This)25 │ │ │ │ +b(metho)s(d)h(returns)f(the)h(minim)m(um)f(en)m(try)h(in)g │ │ │ │ +Fp(y[0:n-1])d Fq(and)j(puts)f(the)h(\014rst)f(lo)s(cation)j(where)d(it) │ │ │ │ +i(w)m(as)227 667 y(found)i(in)m(to)j(the)e(address)g │ │ │ │ Fp(ploc)p Fq(.)66 866 y(17.)46 b Fp(int)h(IVminabs)f(\()h(int)g(n,)g │ │ │ │ (int)g(y[],)g(int)g(*ploc)f(\))i(;)227 1022 y Fq(This)29 │ │ │ │ b(metho)s(d)f(returns)g(the)h(minim)m(um)f(magnitude)i(of)f(en)m(tries) │ │ │ │ h(in)e Fp(y[0:n-1])f Fq(and)i(puts)f(the)h(\014rst)g(lo)s(ca-)227 │ │ │ │ 1135 y(tion)i(where)f(it)h(w)m(as)g(found)e(in)m(to)i(the)g(address)e │ │ │ │ Fp(ploc)p Fq(.)66 1334 y(18.)46 b Fp(void)h(IVperm)f(\()h(int)g(n,)h │ │ │ │ (int)e(y[],)h(int)g(index[])f(\))h(;)227 1490 y Fq(This)25 │ │ │ │ @@ -6867,17 +6873,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 1011 4 v 1192 100 a Fp(Utilities)28 │ │ │ │ -b Fl(:)41 b Fk(DRAFT)121 b Fl(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2797 100 V 1011 w Fq(19)111 399 y(2.)46 b Fp(float)h(*)g(FVinit2)f(\()h │ │ │ │ +TeXDict begin 19 18 bop 91 100 988 4 v 1169 100 a Fp(Utilities)28 │ │ │ │ +b Fl(:)41 b Fk(DRAFT)121 b Fl(Jan)m(uary)30 b(10,)i(2026)p │ │ │ │ +2820 100 V 988 w Fq(19)111 399 y(2.)46 b Fp(float)h(*)g(FVinit2)f(\()h │ │ │ │ (int)g(n)h(\))f(;)227 549 y Fq(This)32 b(is)h(an)f(allo)s(cator)j │ │ │ │ (metho)s(d)d(for)h Fp(float)e Fq(v)m(ectors.)49 b(Storage)34 │ │ │ │ b(for)f(an)f(arra)m(y)h(with)g(size)g Fp(n)g Fq(is)f(found.)47 │ │ │ │ b(A)227 662 y(p)s(oin)m(ter)31 b(to)g(the)f(arra)m(y)h(is)g(returned.) │ │ │ │ 39 b(Note,)32 b(on)e(return,)g(there)g(will)h(lik)m(ely)h(b)s(e)e │ │ │ │ (garbage)h(in)g(the)f(arra)m(y)-8 b(.)111 850 y(3.)46 │ │ │ │ b Fp(void)h(FVfree)f(\()h(int)g(vec[])g(\))g(;)227 1001 │ │ │ │ @@ -6937,29 +6943,29 @@ │ │ │ │ g(index[])f(\))h(;)227 5068 y(y[i])g(=)g(x[index[i]])28 │ │ │ │ b Fq(for)i Fp(0)47 b(<=)g(i)h(<)f(n)p Fq(.)66 5257 y(14.)f │ │ │ │ Fp(void)h(FVgatherAddZero)d(\()j(int)g(n,)g(float)f(y[],)h(float)f │ │ │ │ (x[],)h(int)g(index[])f(\))h(;)227 5407 y(y[i])g(+=)g(x[index[i]])27 │ │ │ │ b Fq(and)j Fp(x[index[i]])45 b(=)i(0)30 b Fq(for)g Fp(0)48 │ │ │ │ b(<=)f(i)h(<)f(n)p Fq(.)p eop end │ │ │ │ %%Page: 20 20 │ │ │ │ -TeXDict begin 20 19 bop 0 100 a Fq(20)p 182 100 1011 │ │ │ │ -4 v 1193 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b │ │ │ │ -Fl(Jan)m(uary)g(6,)h(2026)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 │ │ │ │ -1001 y(a)31 b(similar)g(function.)66 1189 y(17.)46 b │ │ │ │ -Fp(float)h(FVmax)f(\()h(int)g(n,)h(float)e(y[],)h(int)f(*ploc)h(\))g(;) │ │ │ │ -227 1340 y Fq(This)36 b(metho)s(d)h(returns)e(the)i(maxim)m(um)g(en)m │ │ │ │ -(try)g(in)g Fp(y[0:n-1])d Fq(and)i(puts)g(the)i(\014rst)e(lo)s(cation)i │ │ │ │ -(where)e(it)227 1453 y(w)m(as)31 b(found)e(in)m(to)i(the)g(address)e │ │ │ │ +TeXDict begin 20 19 bop 0 100 a Fq(20)p 182 100 988 4 │ │ │ │ +v 1170 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(Jan)m(uary)g(10,) │ │ │ │ +i(2026)p 2912 100 V 66 399 a Fq(15.)46 b Fp(void)h(FVgatherZero)d(\()k │ │ │ │ +(int)f(n,)g(float)f(y[],)h(float)f(x[],)h(int)g(index[])f(\))h(;)227 │ │ │ │ +549 y(y[i])g(=)g(x[index[i]])28 b Fq(and)h Fp(x[index[i]])45 │ │ │ │ +b(=)j(0)66 738 y Fq(16.)e Fp(void)h(FVinvPerm)e(\()j(int)f(n,)g(float)f │ │ │ │ +(y[],)h(int)g(index[])e(\))j(;)227 888 y Fq(This)26 b(metho)s(d)g(p)s │ │ │ │ +(erm)m(utes)g(the)g(v)m(ector)j(y)d(as)h(follo)m(ws.)40 │ │ │ │ +b(i.e.,)29 b Fp(y[index[i]])45 b(:=)i(y[i])p Fq(.)38 │ │ │ │ +b(See)27 b Fp(FVperm\(\))d Fq(for)227 1001 y(a)31 b(similar)g │ │ │ │ +(function.)66 1189 y(17.)46 b Fp(float)h(FVmax)f(\()h(int)g(n,)h(float) │ │ │ │ +e(y[],)h(int)f(*ploc)h(\))g(;)227 1340 y Fq(This)36 b(metho)s(d)h │ │ │ │ +(returns)e(the)i(maxim)m(um)g(en)m(try)g(in)g Fp(y[0:n-1])d │ │ │ │ +Fq(and)i(puts)g(the)i(\014rst)e(lo)s(cation)i(where)e(it)227 │ │ │ │ +1453 y(w)m(as)31 b(found)e(in)m(to)i(the)g(address)e │ │ │ │ Fp(ploc)p Fq(.)66 1641 y(18.)46 b Fp(float)h(FVmaxabs)e(\()j(int)f(n,)g │ │ │ │ (float)f(y[],)h(int)g(*ploc)f(\))h(;)227 1792 y Fq(This)d(metho)s(d)g │ │ │ │ (returns)f(the)i(maxim)m(um)f(magnitude)h(of)g(en)m(tries)g(in)f │ │ │ │ Fp(y[0:n-1])e Fq(and)i(puts)g(the)h(\014rst)227 1905 │ │ │ │ y(lo)s(cation)32 b(where)e(it)h(w)m(as)g(found)e(in)m(to)i(the)g │ │ │ │ (address)e Fp(ploc)p Fq(.)66 2093 y(19.)46 b Fp(float)h(FVmin)f(\()h │ │ │ │ (int)g(n,)h(float)e(y[],)h(int)f(*ploc)h(\))g(;)227 2244 │ │ │ │ @@ -7002,17 +7008,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 1011 4 v 1192 100 a Fp(Utilities)28 │ │ │ │ -b Fl(:)41 b Fk(DRAFT)121 b Fl(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2797 100 V 1011 w Fq(21)66 399 y(27.)46 b Fp(void)h(FVsub)f(\()i(int)f │ │ │ │ +TeXDict begin 21 20 bop 91 100 988 4 v 1169 100 a Fp(Utilities)28 │ │ │ │ +b Fl(:)41 b Fk(DRAFT)121 b Fl(Jan)m(uary)30 b(10,)i(2026)p │ │ │ │ +2820 100 V 988 w Fq(21)66 399 y(27.)46 b Fp(void)h(FVsub)f(\()i(int)f │ │ │ │ (n,)g(float)f(y[],)h(float)f(x[])h(\))h(;)227 546 y Fq(This)30 │ │ │ │ b(metho)s(d)g(subtracts)g Fp(n)g Fq(en)m(tries)h(from)f │ │ │ │ Fp(x[])f Fq(to)j Fp(y[])p Fq(,)d(i.e.,)j Fp(y[i])47 b(-=)g(x[i])29 │ │ │ │ b Fq(for)h Fp(0)48 b(<=)f(i)g(<)h(n)p Fq(.)66 729 y(28.)e │ │ │ │ Fp(float)h(FVsum)f(\()h(int)g(n,)h(float)e(y[])h(\))g(;)227 │ │ │ │ 877 y Fq(This)30 b(metho)s(d)g(returns)f(the)h(sum)g(of)g(the)h │ │ │ │ (\014rst)f Fp(n)g Fq(en)m(tries)h(in)f(the)g(v)m(ector)i │ │ │ │ @@ -7075,26 +7081,25 @@ │ │ │ │ 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 1011 │ │ │ │ -4 v 1193 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b │ │ │ │ -Fl(Jan)m(uary)g(6,)h(2026)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 │ │ │ │ -(double)i(vec[],)f(double)g(*p_vec[])f(\))j(;)227 975 │ │ │ │ -y Fq(This)29 b(metho)s(d)g(sets)h(the)g(en)m(tries)g(of)g │ │ │ │ +TeXDict begin 22 21 bop 0 100 a Fq(22)p 182 100 988 4 │ │ │ │ +v 1170 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(Jan)m(uary)g(10,) │ │ │ │ +i(2026)p 2912 100 V 111 399 a Fq(3.)46 b Fp(void)h(PDVcopy)f(\()h(int)g │ │ │ │ +(n,)g(double)f(*p_y[],)g(double)g(*p_x[])g(\))i(;)227 │ │ │ │ +571 y Fq(This)30 b(metho)s(d)g(copies)h Fp(n)f Fq(en)m(tries)h(from)f │ │ │ │ +Fp(p)p 1672 571 29 4 v 34 w(x[])g Fq(to)h Fp(p)p 2039 │ │ │ │ +571 V 34 w(y[])p Fq(,)e(i.e.,)j Fp(p)p 2491 571 V 34 │ │ │ │ +w(y[i])47 b(=)g(p)p 2907 571 V 34 w(x[i])30 b Fq(for)g │ │ │ │ +Fp(0)47 b(<=)g(i)h(<)f(n)p Fq(.)111 803 y(4.)f Fp(void)h(PDVsetup)e(\() │ │ │ │ +j(int)f(n,)g(int)g(sizes[],)e(double)i(vec[],)f(double)g(*p_vec[])f(\)) │ │ │ │ +j(;)227 975 y Fq(This)29 b(metho)s(d)g(sets)h(the)g(en)m(tries)g(of)g │ │ │ │ Fp(p)p 1544 975 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 │ │ │ │ 1088 y(i.e.,)32 b Fp(p)p 453 1088 V 34 w(vec[0])46 b(=)i(vec)p │ │ │ │ Fq(,)29 b(and)h Fp(p)p 1340 1088 V 34 w(vec[i])46 b(=)i(p)p │ │ │ │ 1852 1088 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(.)0 1417 y Fp(PIV)34 b Fo(:)h │ │ │ │ Fp(int)47 b(*)34 b Fo(v)m(ector)i(metho)s(ds)111 1635 │ │ │ │ @@ -7144,17 +7149,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 1011 4 v 1192 100 a Fp(Utilities)28 │ │ │ │ -b Fl(:)41 b Fk(DRAFT)121 b Fl(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2797 100 V 1011 w Fq(23)0 399 y Fi(1.2.9)112 b(Sorting)38 │ │ │ │ +TeXDict begin 23 22 bop 91 100 988 4 v 1169 100 a Fp(Utilities)28 │ │ │ │ +b Fl(:)41 b Fk(DRAFT)121 b Fl(Jan)m(uary)30 b(10,)i(2026)p │ │ │ │ +2820 100 V 988 w Fq(23)0 399 y Fi(1.2.9)112 b(Sorting)38 │ │ │ │ b(routines)0 591 y Fo(V)-9 b(alidation)35 b(routines)111 │ │ │ │ 784 y Fq(1.)46 b Fp(int)h(IVisascending)d(\()k(int)f(n,)g(int)g(ivec[]) │ │ │ │ f(\))h(;)227 897 y(int)g(IVisdescending)d(\()k(int)e(n,)i(int)f(ivec[]) │ │ │ │ f(\))h(;)227 1044 y Fq(These)29 b(metho)s(ds)f(returns)f │ │ │ │ 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 │ │ │ │ @@ -7204,36 +7209,35 @@ │ │ │ │ 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 1011 │ │ │ │ -4 v 1193 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b │ │ │ │ -Fl(Jan)m(uary)g(6,)h(2026)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 │ │ │ │ -(double)g(dvec2[])f(\))j(;)227 1202 y Fq(These)29 b(metho)s(ds)g(sort)g │ │ │ │ -(the)h(arra)m(y)f Fp(dvec1[])e Fq(in)m(to)k(ascending)e(or)g │ │ │ │ -(descending)g(order)g(using)g(an)g(insertion)227 1315 │ │ │ │ -y(sort)i(and)f(p)s(erm)m(utes)f(the)i(companion)f(arra)m(y)h │ │ │ │ -Fp(dvec2[])e Fq(in)h(the)g(same)h(fashion.)111 1491 y(9.)46 │ │ │ │ -b Fp(void)h(DVIVisortUp)e(\()i(int)g(n,)g(double)f(dvec[],)g(int)h │ │ │ │ -(ivec[])f(\))i(;)227 1604 y(void)f(DVIVisortDown)d(\()k(int)e(n,)i │ │ │ │ -(double)e(dvec[],)g(int)g(ivec[])h(\))g(;)227 1748 y │ │ │ │ -Fq(These)33 b(metho)s(ds)f(sort)h(the)g(arra)m(y)h Fp(dvec[])d │ │ │ │ -Fq(in)m(to)j(ascending)f(or)g(descending)f(order)h(using)f(an)h │ │ │ │ -(insertion)227 1861 y(sort)e(and)f(p)s(erm)m(utes)f(the)i(companion)f │ │ │ │ -(arra)m(y)h Fp(ivec[])e Fq(in)h(the)h(same)f(fashion.)0 │ │ │ │ +TeXDict begin 24 23 bop 0 100 a Fq(24)p 182 100 988 4 │ │ │ │ +v 1170 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(Jan)m(uary)g(10,) │ │ │ │ +i(2026)p 2912 100 V 111 399 a Fq(7.)46 b Fp(void)h(DVisortUp)e(\()j │ │ │ │ +(int)f(n,)g(double)f(dvec[])g(\))h(;)227 511 y(void)g(DVisortDown)e(\() │ │ │ │ +i(int)g(n,)g(double)f(dvec[])g(\))i(;)227 656 y Fq(These)39 │ │ │ │ +b(metho)s(ds)g(sort)g(a)g Fp(double)f Fq(arra)m(y)h(in)m(to)h │ │ │ │ +(ascending)g(or)f(descending)g(order)f(using)h(an)g(insertion)227 │ │ │ │ +769 y(sort.)111 945 y(8.)46 b Fp(void)h(DV2isortUp)e(\()i(int)g(n,)g │ │ │ │ +(double)g(dvec1[],)e(double)h(dvec2[])g(\))h(;)227 1058 │ │ │ │ +y(void)g(DV2isortDown)d(\()k(int)f(n,)g(double)f(dvec1[],)g(double)g │ │ │ │ +(dvec2[])f(\))j(;)227 1202 y Fq(These)29 b(metho)s(ds)g(sort)g(the)h │ │ │ │ +(arra)m(y)f Fp(dvec1[])e Fq(in)m(to)k(ascending)e(or)g(descending)g │ │ │ │ +(order)g(using)g(an)g(insertion)227 1315 y(sort)i(and)f(p)s(erm)m(utes) │ │ │ │ +f(the)i(companion)f(arra)m(y)h Fp(dvec2[])e Fq(in)h(the)g(same)h │ │ │ │ +(fashion.)111 1491 y(9.)46 b Fp(void)h(DVIVisortUp)e(\()i(int)g(n,)g │ │ │ │ +(double)f(dvec[],)g(int)h(ivec[])f(\))i(;)227 1604 y(void)f │ │ │ │ +(DVIVisortDown)d(\()k(int)e(n,)i(double)e(dvec[],)g(int)g(ivec[])h(\))g │ │ │ │ +(;)227 1748 y Fq(These)33 b(metho)s(ds)f(sort)h(the)g(arra)m(y)h │ │ │ │ +Fp(dvec[])d Fq(in)m(to)j(ascending)f(or)g(descending)f(order)h(using)f │ │ │ │ +(an)h(insertion)227 1861 y(sort)e(and)f(p)s(erm)m(utes)f(the)i │ │ │ │ +(companion)f(arra)m(y)h Fp(ivec[])e Fq(in)h(the)h(same)f(fashion.)0 │ │ │ │ 2115 y Fo(Quic)m(ksort)35 b(routines)111 2306 y Fq(1.)46 │ │ │ │ b Fp(void)h(IVqsortUp)e(\()j(int)f(n,)g(int)g(ivec[])f(\))h(;)227 │ │ │ │ 2419 y(void)g(IVqsortDown)e(\()i(int)g(n,)g(int)g(ivec[])f(\))i(;)227 │ │ │ │ 2563 y Fq(These)30 b(metho)s(ds)g(sort)h(an)f Fp(int)f │ │ │ │ Fq(arra)m(y)i(in)m(to)h(ascending)e(or)h(descending)f(order)g(using)f │ │ │ │ (a)i(quic)m(k)g(sort.)111 2739 y(2.)46 b Fp(void)h(IV2qsortUp)e(\()i │ │ │ │ (int)g(n,)g(int)g(ivec1[],)f(int)h(ivec2[])f(\))h(;)227 │ │ │ │ @@ -7271,17 +7275,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 1011 4 v 1192 100 a Fp(Utilities)28 │ │ │ │ -b Fl(:)41 b Fk(DRAFT)121 b Fl(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2797 100 V 1011 w Fq(25)111 399 y(7.)46 b Fp(void)h(DVqsortUp)e(\()j │ │ │ │ +TeXDict begin 25 24 bop 91 100 988 4 v 1169 100 a Fp(Utilities)28 │ │ │ │ +b Fl(:)41 b Fk(DRAFT)121 b Fl(Jan)m(uary)30 b(10,)i(2026)p │ │ │ │ +2820 100 V 988 w Fq(25)111 399 y(7.)46 b Fp(void)h(DVqsortUp)e(\()j │ │ │ │ (int)f(n,)g(double)f(dvec[])g(\))h(;)227 511 y(void)g(DVqsortDown)e(\() │ │ │ │ i(int)g(n,)g(double)f(dvec[])g(\))i(;)227 658 y Fq(Thes)30 │ │ │ │ b(metho)s(ds)g(sort)g(a)h Fp(double)e Fq(arra)m(y)i(in)m(to)g │ │ │ │ (ascending)g(or)f(descending)g(order)g(using)g(a)h(quic)m(k)f(sort.)111 │ │ │ │ 839 y(8.)46 b Fp(void)h(DV2qsortUp)e(\()i(int)g(n,)g(double)g(dvec1[],) │ │ │ │ e(double)h(dvec2[])g(\))h(;)227 952 y(void)g(DV2qsortDown)d(\()k(int)f │ │ │ │ (n,)g(double)f(dvec1[],)g(double)g(dvec2[])f(\))j(;)227 │ │ │ │ @@ -7347,44 +7351,43 @@ │ │ │ │ (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 1011 │ │ │ │ -4 v 1193 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b │ │ │ │ -Fl(Jan)m(uary)g(6,)h(2026)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 │ │ │ │ -b Fq(pairs.)80 b(The)44 b(return)e(v)-5 b(alue)44 b(is)g(the)g(n)m(um)m │ │ │ │ -(b)s(er)f(of)h(unique)e(en)m(tries)j(stored)f(in)f(the)h(leading)227 │ │ │ │ -888 y(lo)s(cations)32 b(of)f(the)f(v)m(ectors)i Fp(ivec1[])p │ │ │ │ -Fq(,)d Fp(ivec2[])f Fq(and)i Fp(dvec[])p Fq(.)227 1039 │ │ │ │ -y Fk(Err)-5 b(or)32 b(che)-5 b(cking:)39 b Fq(If)27 b │ │ │ │ -Fp(n)47 b(<)h(0)p Fq(,)28 b(or)g(if)f Fp(ivec1)p Fq(,)h │ │ │ │ -Fp(ivec2)e Fq(or)i Fp(dvec)e Fq(is)i Fp(NULL)p Fq(,)f(an)g(error)h │ │ │ │ -(message)g(is)g(prin)m(ted)g(and)227 1151 y(the)j(program)f(exits.)111 │ │ │ │ -1340 y(6.)46 b Fp(int)h(IV2ZVsortUpAndCompress)42 b(\()47 │ │ │ │ -b(int)g(n,)g(int)g(ivec1[],)f(int)h(ivec2[],)e(double)h(dvec[])h(\))g │ │ │ │ -(;)227 1491 y Fq(This)d(metho)s(d)g(sorts)g Fp(ivec1[])e │ │ │ │ -Fq(in)m(to)k(ascending)e(order)g(with)g Fp(ivec2[])f │ │ │ │ -Fq(and)g(the)i(double)f(precision)227 1603 y Fp(dvec[])34 │ │ │ │ -b Fq(as)i(companion)g(v)m(ectors.)58 b(It)36 b(then)f(compresses)h(the) │ │ │ │ -g(pairs,)h(summing)d(the)i(complex)h Fp(dvec[])227 1716 │ │ │ │ -y Fq(en)m(tries)g(for)f(iden)m(tical)i Fp(\(ivec1[],)45 │ │ │ │ -b(ivec2[]\))34 b Fq(pairs.)58 b(The)36 b(return)f(v)-5 │ │ │ │ -b(alue)36 b(is)g(the)h(n)m(um)m(b)s(er)e(of)h(unique)227 │ │ │ │ -1829 y(en)m(tries)31 b(stored)g(in)f(the)h(leading)g(lo)s(cations)g(of) │ │ │ │ -g(the)g(v)m(ectors)g Fp(ivec1[])p Fq(,)e Fp(ivec2[])f │ │ │ │ +TeXDict begin 26 25 bop 0 100 a Fq(26)p 182 100 988 4 │ │ │ │ +v 1170 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(Jan)m(uary)g(10,) │ │ │ │ +i(2026)p 2912 100 V 111 399 a Fq(5.)46 b Fp(int)h │ │ │ │ +(IV2DVsortUpAndCompress)42 b(\()47 b(int)g(n,)g(int)g(ivec1[],)f(int)h │ │ │ │ +(ivec2[],)e(double)h(dvec[])h(\))g(;)227 549 y Fq(This)39 │ │ │ │ +b(metho)s(d)g(sorts)g Fp(ivec1[])f Fq(in)m(to)i(ascending)g(order)f │ │ │ │ +(with)g Fp(ivec2[])e Fq(and)i Fp(dvec[])f Fq(as)i(companion)227 │ │ │ │ +662 y(v)m(ectors.)56 b(It)35 b(then)f(compresses)h(the)g(pairs,)h │ │ │ │ +(summing)e(the)h Fp(dvec[])e Fq(en)m(tries)i(for)g(iden)m(tical)h │ │ │ │ +Fp(\(ivec1[],)227 775 y(ivec2[]\))42 b Fq(pairs.)80 b(The)44 │ │ │ │ +b(return)e(v)-5 b(alue)44 b(is)g(the)g(n)m(um)m(b)s(er)f(of)h(unique)e │ │ │ │ +(en)m(tries)j(stored)f(in)f(the)h(leading)227 888 y(lo)s(cations)32 │ │ │ │ +b(of)f(the)f(v)m(ectors)i Fp(ivec1[])p Fq(,)d Fp(ivec2[])f │ │ │ │ +Fq(and)i Fp(dvec[])p Fq(.)227 1039 y Fk(Err)-5 b(or)32 │ │ │ │ +b(che)-5 b(cking:)39 b Fq(If)27 b Fp(n)47 b(<)h(0)p Fq(,)28 │ │ │ │ +b(or)g(if)f Fp(ivec1)p Fq(,)h Fp(ivec2)e Fq(or)i Fp(dvec)e │ │ │ │ +Fq(is)i Fp(NULL)p Fq(,)f(an)g(error)h(message)g(is)g(prin)m(ted)g(and) │ │ │ │ +227 1151 y(the)j(program)f(exits.)111 1340 y(6.)46 b │ │ │ │ +Fp(int)h(IV2ZVsortUpAndCompress)42 b(\()47 b(int)g(n,)g(int)g(ivec1[],) │ │ │ │ +f(int)h(ivec2[],)e(double)h(dvec[])h(\))g(;)227 1491 │ │ │ │ +y Fq(This)d(metho)s(d)g(sorts)g Fp(ivec1[])e Fq(in)m(to)k(ascending)e │ │ │ │ +(order)g(with)g Fp(ivec2[])f Fq(and)g(the)i(double)f(precision)227 │ │ │ │ +1603 y Fp(dvec[])34 b Fq(as)i(companion)g(v)m(ectors.)58 │ │ │ │ +b(It)36 b(then)f(compresses)h(the)g(pairs,)h(summing)d(the)i(complex)h │ │ │ │ +Fp(dvec[])227 1716 y Fq(en)m(tries)g(for)f(iden)m(tical)i │ │ │ │ +Fp(\(ivec1[],)45 b(ivec2[]\))34 b Fq(pairs.)58 b(The)36 │ │ │ │ +b(return)f(v)-5 b(alue)36 b(is)g(the)h(n)m(um)m(b)s(er)e(of)h(unique) │ │ │ │ +227 1829 y(en)m(tries)31 b(stored)g(in)f(the)h(leading)g(lo)s(cations)g │ │ │ │ +(of)g(the)g(v)m(ectors)g Fp(ivec1[])p Fq(,)e Fp(ivec2[])f │ │ │ │ Fq(and)i Fp(dvec[])p Fq(.)227 1980 y Fk(Err)-5 b(or)32 │ │ │ │ b(che)-5 b(cking:)39 b Fq(If)27 b Fp(n)47 b(<)h(0)p Fq(,)28 │ │ │ │ b(or)g(if)f Fp(ivec1)p Fq(,)h Fp(ivec2)e Fq(or)i Fp(dvec)e │ │ │ │ Fq(is)i Fp(NULL)p Fq(,)f(an)g(error)h(message)g(is)g(prin)m(ted)g(and) │ │ │ │ 227 2093 y(the)j(program)f(exits.)0 2362 y Fi(1.2.11)113 │ │ │ │ b Fh(IP)37 b Fi(:)h Fh(\(int,)52 b(pointer\))40 b Fi(singly)e(link)m │ │ │ │ (ed-list)h(metho)s(ds)330 2532 y Fp(typedef)46 b(struct)g(_IP)h(IP)g(;) │ │ │ │ @@ -7419,17 +7422,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 1011 4 v 1192 100 a Fp(Utilities)28 │ │ │ │ -b Fl(:)41 b Fk(DRAFT)121 b Fl(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2797 100 V 1011 w Fq(27)111 399 y(5.)46 b Fp(IP)h(*)h(IP_mergeUp)d(\()i │ │ │ │ +TeXDict begin 27 26 bop 91 100 988 4 v 1169 100 a Fp(Utilities)28 │ │ │ │ +b Fl(:)41 b Fk(DRAFT)121 b Fl(Jan)m(uary)30 b(10,)i(2026)p │ │ │ │ +2820 100 V 988 w Fq(27)111 399 y(5.)46 b Fp(IP)h(*)h(IP_mergeUp)d(\()i │ │ │ │ (IP)h(*ip1,)e(IP)h(*ip2)g(\))g(;)227 547 y Fq(This)32 │ │ │ │ b(metho)s(d)h(merges)g(t)m(w)m(o)h(singly)f(link)m(ed)g(lists)g(in)m │ │ │ │ (to)h(one.)49 b(If)32 b(the)h(t)m(w)m(o)h(lists)f(are)h(in)e(ascending) │ │ │ │ h(order,)227 660 y(the)e(new)f(list)h(is)f(also)h(in)g(ascending)f │ │ │ │ (order.)40 b(The)30 b(head)g(of)h(the)g(new)e(list)i(is)g(returned.)111 │ │ │ │ 845 y(6.)46 b Fp(IP)h(*)h(IP_mergeSortUp)c(\()j(IP)g(*ip)g(\))h(;)227 │ │ │ │ 993 y Fq(This)30 b(metho)s(d)g(sorts)g(a)h(list)g(in)m(to)g(ascending)g │ │ │ │ @@ -7487,23 +7490,23 @@ │ │ │ │ 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 1011 │ │ │ │ -4 v 1193 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b │ │ │ │ -Fl(Jan)m(uary)g(6,)h(2026)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 │ │ │ │ +TeXDict begin 28 27 bop 0 100 a Fq(28)p 182 100 988 4 │ │ │ │ +v 1170 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(Jan)m(uary)g(10,) │ │ │ │ +i(2026)p 2912 100 V 111 399 a Fq(3.)46 b Fp(void)h(I2OP_free)e(\()j │ │ │ │ +(I2OP)e(*i2op)h(\))g(;)227 546 y Fq(This)30 b(metho)s(d)g(releases)h │ │ │ │ +(the)g(storage)h(based)e(at)h Fp(*i2op)p Fq(.)111 729 │ │ │ │ +y(4.)46 b Fp(void)h(I2OP_fprintf)d(\()k(FILE)e(*fp,)h(I2OP)g(*i2op)f │ │ │ │ +(\))i(;)227 876 y Fq(This)30 b(metho)s(d)g(prin)m(ts)g(the)g(singly)h │ │ │ │ +(link)m(ed)f(list)h(that)g(starts)g(with)f Fp(i2op)p │ │ │ │ +Fq(.)0 1183 y Fn(1.3)135 b(Driv)l(er)46 b(programs)111 │ │ │ │ 1408 y Fq(1.)g Fp(test_sort)g(msglvl)g(msgFile)f(target)i(sortType)e(n) │ │ │ │ j(range)e(mod)h(seed)227 1556 y Fq(This)30 b(driv)m(er)g(program)g │ │ │ │ (tests)h(the)g(sort)f(metho)s(ds.)40 b(Use)31 b(the)g(script)f(\014le)g │ │ │ │ Fp(do)p 2849 1556 29 4 v 34 w(test)p 3075 1556 V 34 w(sort)f │ │ │ │ Fq(for)h(testing.)337 1761 y Fm(\210)45 b Fq(The)f Fp(msglvl)e │ │ │ │ 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 1874 │ │ │ │ @@ -7547,17 +7550,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 1011 4 v 1192 100 a Fp(Utilities)28 │ │ │ │ -b Fl(:)41 b Fk(DRAFT)121 b Fl(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2797 100 V 1011 w Fq(29)337 399 y Fm(\210)45 b Fq(The)33 │ │ │ │ +TeXDict begin 29 28 bop 91 100 988 4 v 1169 100 a Fp(Utilities)28 │ │ │ │ +b Fl(:)41 b Fk(DRAFT)121 b Fl(Jan)m(uary)30 b(10,)i(2026)p │ │ │ │ +2820 100 V 988 w Fq(29)337 399 y Fm(\210)45 b Fq(The)33 │ │ │ │ b Fp(msgFile)e Fq(parameter)j(determines)f(the)h(message)g(\014le)f(|)h │ │ │ │ (if)f Fp(msgFile)e Fq(is)i Fp(stdout)p Fq(,)g(then)g(the)427 │ │ │ │ 511 y(message)27 b(\014le)f(is)g Fk(stdout)p Fq(,)i(otherwise)e(a)h │ │ │ │ (\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 │ │ │ │ @@ -7622,17 +7625,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 1011 4 v 1192 100 a Fp(Utilities)28 │ │ │ │ -b Fl(:)41 b Fk(DRAFT)121 b Fl(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2797 100 V 1011 w Fq(31)0 399 y Fp(FVfprintf\(\))p Fq(,)d(16)0 │ │ │ │ +TeXDict begin 31 30 bop 91 100 988 4 v 1169 100 a Fp(Utilities)28 │ │ │ │ +b Fl(:)41 b Fk(DRAFT)121 b Fl(Jan)m(uary)30 b(10,)i(2026)p │ │ │ │ +2820 100 V 988 w Fq(31)0 399 y Fp(FVfprintf\(\))p Fq(,)c(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 │ │ │ │ @@ -7691,19 +7694,19 @@ │ │ │ │ Fq(,)h(15)1992 4724 y Fp(IVscatter\(\))p Fq(,)f(15)1992 │ │ │ │ 4838 y Fp(IVshuffle\(\))p Fq(,)g(16)1992 4952 y Fp │ │ │ │ (IVsortUpAndCompress\(\))p Fq(,)d(22)1992 5066 y Fp(IVsum\(\))p │ │ │ │ Fq(,)k(15)1992 5180 y Fp(IVsumabs\(\))p Fq(,)f(15)1992 │ │ │ │ 5293 y Fp(IVswap\(\))p Fq(,)h(15)1992 5407 y Fp(IVzero\(\))p │ │ │ │ Fq(,)g(16)p eop end │ │ │ │ %%Page: 32 32 │ │ │ │ -TeXDict begin 32 31 bop 0 100 a Fq(32)p 182 100 1011 │ │ │ │ -4 v 1193 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b │ │ │ │ -Fl(Jan)m(uary)g(6,)h(2026)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 │ │ │ │ +TeXDict begin 32 31 bop 0 100 a Fq(32)p 182 100 988 4 │ │ │ │ +v 1170 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(Jan)m(uary)g(10,) │ │ │ │ +i(2026)p 2912 100 V 0 399 a Fp(IVZVisortDown\(\))p Fq(,)26 │ │ │ │ +b(21)0 511 y Fp(IVZVisortUp\(\))p Fq(,)h(21)0 624 y Fp │ │ │ │ +(IVZVqsortDown\(\))p Fq(,)f(22)0 737 y Fp(IVZVqsortUp\(\))p │ │ │ │ Fq(,)h(22)0 850 y Fp(IVZVsortUpAndCompress\(\))p Fq(,)d(23)0 │ │ │ │ 1040 y Fp(PCVcopy\(\))p Fq(,)k(19)0 1153 y Fp(PCVfree\(\))p │ │ │ │ Fq(,)g(18)0 1266 y Fp(PCVinit\(\))p Fq(,)g(18)0 1379 │ │ │ │ y Fp(PCVsetup\(\))p Fq(,)g(19)0 1491 y Fp(PDVcopy\(\))p │ │ │ │ Fq(,)g(19)0 1604 y Fp(PDVfree\(\))p Fq(,)g(19)0 1717 │ │ │ │ y Fp(PDVinit\(\))p Fq(,)g(19)0 1830 y Fp(PDVsetup\(\))p │ │ │ │ Fq(,)g(19)0 1943 y Fp(PFVcopy\(\))p Fq(,)g(20)0 2056 │ │ │ │ ├── ps2ascii {} │ │ │ │ │ @@ -22,15 +22,15 @@ │ │ │ │ │ struct _I2OP { │ │ │ │ │ int value0 ; │ │ │ │ │ int value1 ; │ │ │ │ │ void *value2 ; │ │ │ │ │ I2OP *next ; │ │ │ │ │ } ; │ │ │ │ │ 1 │ │ │ │ │ - 2 Utilities : DRAFT January 6, 2026 │ │ │ │ │ + 2 Utilities : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 3 │ │ │ │ │ + Utilities : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 4 Utilities : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 5 │ │ │ │ │ + Utilities : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 6 Utilities : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 7 │ │ │ │ │ + Utilities : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 8 Utilities : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 9 │ │ │ │ │ + Utilities : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 10 Utilities : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 11 │ │ │ │ │ + Utilities : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 12 Utilities : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 13 │ │ │ │ │ + Utilities : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 14 Utilities : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 15 │ │ │ │ │ + Utilities : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 16 Utilities : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 17 │ │ │ │ │ + Utilities : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 18 Utilities : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 19 │ │ │ │ │ + Utilities : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 20 Utilities : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 21 │ │ │ │ │ + Utilities : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 22 Utilities : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 23 │ │ │ │ │ + Utilities : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 24 Utilities : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 25 │ │ │ │ │ + Utilities : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 26 Utilities : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 27 │ │ │ │ │ + Utilities : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 28 Utilities : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 29 │ │ │ │ │ + Utilities : DRAFT January 10, 2026 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 January 6, 2026 31 │ │ │ │ │ + Utilities : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 32 Utilities : DRAFT January 10, 2026 │ │ │ │ │ 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 2026.01.06:2034 │ │ │ │ +%DVIPSSource: TeX output 2026.01.10:0513 │ │ │ │ %%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 │ │ │ │ @@ -2350,14 +2350,15 @@ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ /UnderlineThickness 50 def │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ +dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ dup 54 /six put │ │ │ │ dup 58 /colon put │ │ │ │ dup 74 /J put │ │ │ │ dup 97 /a put │ │ │ │ dup 110 /n put │ │ │ │ dup 114 /r put │ │ │ │ @@ -2547,79 +2548,84 @@ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB88440048702D1F │ │ │ │ -77994EE04EC3B4531D6E1888C86A8F0DA6CF1F056F16AB0DD76C862830F89DA4 │ │ │ │ -28923B3AA543E0D6E41D3BD283E600BC11F889315EE92C675C109C81065ED1BC │ │ │ │ -82A5583D1B723D50051B0557A367887F5B263014C6E77288B4883C50889473D3 │ │ │ │ -3787BAD4BEB88BD1353AFA5B73E61814819537E7FF09F53EF94792BB3DD36ED0 │ │ │ │ -002D0E7A6CDAB85A9C17AF5664BCB5A71663B861880F3ECCABC8E7A2FC81A4CC │ │ │ │ -AE7A87503FDC1CE0077BA51ECC7B43B60793FED8E9AAD5BBD03ADD6183DCD26D │ │ │ │ -24A74163611C05562437644EF9B8889FD4F9D311911204FEFD35237486F2D2D0 │ │ │ │ -B6783A03BF12EA6D19D6D0F87E4D08515F12F9CBF1961CAA71E0D69FE3C4C4D2 │ │ │ │ -7C7FB64ED24F8684C8F00C2BEDEA53EA390CDC0B5BEBD7DD982580B2EA1F1F89 │ │ │ │ -CFED5916630DC2BA32BB9180277E1ABC339B3B7DE086717BD93F7FF3681BA5B3 │ │ │ │ -FCF671C4B293C2DE4A322F0AA3323A4934444C69F23EF90120B8755482757759 │ │ │ │ -C457A435FB8BB4922BD92C5F3D9555D978275C510183E29DFF2FCE4ABBFC18DE │ │ │ │ -76CAD3B486BA12047DD808CD4D521A0FD368E4AE79DE262630983A5D6F0B679D │ │ │ │ -2F005306393C520E1B6987302D029939D94B0178DB06211C7F3B123A41E6E7BA │ │ │ │ -87164737110707A3ED3983895F3FBC815EF370F54C808ED93D910937BCA3D8AF │ │ │ │ -7CBF80DC180CDA54059DB76710B4FCD4139D5B7DA7DB1A0D0AF86AD2453D3691 │ │ │ │ -0BA5BAD40FF28BB4235FCD40FC87C2B888E67928D9B0ACA5692149373DBB93BF │ │ │ │ -6520DDD36A9BFE4D415CA67A5E04F1D48BDB28C69676273ED842CF7980E8E17C │ │ │ │ -B88563F407E340AFAE8F51AABCF8A39521BCEE1EC8396D75E124B24B4675909F │ │ │ │ -E246F87DA08584A3173AEFF153ECDF610543FA7474D125A31ADD6285A49222B5 │ │ │ │ -177066EA395BFA4B1114C7FCF7712DA772A21C99E64F4E1181E69CAF98137FA2 │ │ │ │ -76CF74F682B8CD7BA6EEA79B70FA8A76809634517F8415B6F21A5A7D6099B5E8 │ │ │ │ -EAB356BBC4FB68C72B8C61DDCE8EAB1A53B9D6BAD78584B307EFF57CEAE74884 │ │ │ │ -35987BF89E9E60E962D22FA5612F2DB5EB840499B7CC11A34BA5DEE30D277540 │ │ │ │ -39B8211D69B448ADE95B723F8369A631DE6DD75703AFD7485FB7FFF41A60CBE4 │ │ │ │ -813B8FEA120662355773830EF85015E7FFD609B2CEE52CB5FFE9C35B6BEEE4A4 │ │ │ │ -A66719E31CE1523FDD7771FB1E881A32A7DB7D92C2326DF4B93241C14ABFCCD6 │ │ │ │ -8E5BCAC61E800E6B1B4687ADA4CBF41EC0AFC26D021D1772CBDCD0516DF5EBE1 │ │ │ │ -37FD2AC5ABB8D774B5735940F1F6866D044FD8CE74444FAA5D0202C11E39CC10 │ │ │ │ -213731F41F704450E1D0565013BF22188442CE0FC256190A9F92F0C802AA2660 │ │ │ │ -614AFE9E9C82F8CD2E6035EEF84E5F16CBB690AC819B4B910EA8E81106F0ACE5 │ │ │ │ -CDFE77DAF69E4AFE72C43145A3ABCC40B6C5297487083F738C86422277AC2267 │ │ │ │ -51759F1B7F129E87DE16433B664AD0FB6D30424A11C70B52B591352BF653C8B0 │ │ │ │ -0840C224FBFEAA996A6BE1D69414DD778C2EF56A63B64D59BA412EC3E4000831 │ │ │ │ -73361FB9813F9A7C74BA3A50D331B07B61492E5D75F0861B530587269B3ADC90 │ │ │ │ -EA1DF586AC4BC57C3230893EFE953A6E76950ABA895FAC711D3BD330ABC6846A │ │ │ │ -C91F6ABF3410B913DFE5C8266020CEE5C7A9EDA2E7D9BCA797DC486443C7BA7C │ │ │ │ -7E03439A40927FA3251B6D417E5653E7799E9D6F04149C34096E2CA9B1F9B1EC │ │ │ │ -38958A2521B4A657A8B9F16E1FD66C7E345A10D7AA0241559503D214AC6507A4 │ │ │ │ -CBDE8617AA7ED136577734428594487F3565BF45FA196375759E2FE23C26EC8A │ │ │ │ -3310A36917A5E2F260EAB31030F8E570303D36B833626938F56939849DFA1F3F │ │ │ │ -66D0A317BB6364427F1512AAB380B555611C76345C02C3A6FBF78590331D5ECA │ │ │ │ -029DEFB722F6AB05327C2A31AB7BD6ED0F0386E6F45C1278048D22B90B074CCB │ │ │ │ -2BBEBCC1927C97EC532E651CAF0058AFE8FC08F00F0216D5DD9830C294FF76DA │ │ │ │ -426A073B3A3AEEFBDEE71C5182186311607ECDBD1F1AF4C5E79748CD01445C8D │ │ │ │ -25DD49490C8A6810065908222C8D0AC9F83AFBEE7115023E2D2615A170A5D40A │ │ │ │ -AD49BDF59A59187B6434F83E68EED22EF4EFDBADED6F1559AC779E0377FE7375 │ │ │ │ -D7060584FE74B1859D0FD98772253A712B17FFBB467840C484F5EF82C5677ADB │ │ │ │ -EDF159A456A526B8B9F6E8FC7608DFD47B0F09E26118F79CBE53B6C4E32BACAB │ │ │ │ -D62AFD4AA527CC4B587BB41A17A9BCE106A8C592BC9B73422B712C466C284A17 │ │ │ │ -E8D0C1E01D43C739FB1C083AD2714F78AC785B0C09AA7E67417A73510E00F2FE │ │ │ │ -E3D3EBF626A2F3A20A386E3F98D1285F4A2A332FC609CD191F01F128627B3505 │ │ │ │ -0AC2387DC0AD1B950490EBB5045F22BEC54955402CE2D267B6754E7C32BE84E8 │ │ │ │ -E6B63E3D3EAEE979442D167AEF69C27B22A8E887A2510C3A168D95D285CF7515 │ │ │ │ -011C921679B2F386575826A3F2071D015EEB78F02A4F94D4E5F07873623200F8 │ │ │ │ -7DF95BA0DC6B6D31DECC925BEA1E6A7C52FE685800EC33CBAE830F1AE5454DFA │ │ │ │ -913B8F457D7E2D3DFF019869E3301EEEC64A38295DE6B588E776922B32362382 │ │ │ │ -D1CF3D058613C8A96E6994D3EC23E8B71EC6E718383B20BB6C22DB6F93FA559F │ │ │ │ -3449CA84EB33B25C8BE0DFD1C29DC4FBD7AFBDC96C12162CAAB2C5E354B0FB10 │ │ │ │ -4BF8CC3610875ABD5111D09F2F847822118972214EDEB9EE34BAFE45E7AC15C5 │ │ │ │ -CA63EC4A3CEEA505A5EDD88A59BB67C71C3E026DFFE177F99BC69E6635545D03 │ │ │ │ -77A634F98230EF64381EC67CA519D4B9770EFA844789E21970F89D5FFC5DEAA8 │ │ │ │ -DC008EBA09306967ED090FF91B002FA6120C2B461A87AA32EFB003C5578D8EEF │ │ │ │ - │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ +AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ +E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ +46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ +FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ +389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ +7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ +2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ +C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ +B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ +AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ +E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ +F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ +0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ +2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ +29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ +CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ +6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ +5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ +36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0DD96AB602D004DCFE000A0 │ │ │ │ +ABE41BAB8AB7D50BD32BFD6F1AA3B60B09B9BE4E273EDD2DDCB21A98A760D17D │ │ │ │ +0A5C9303AFE63CF80A93E60C72A0576FAADEECBE2DE91892D210EB0AD1889C04 │ │ │ │ +C7530652584E775B4ED19CFB4B8DBCCC57A9FA9E4DDC8A1E5A1D3BE9E93407A6 │ │ │ │ +2C237ACE27F4EDA330EE952EDCBE91683AA98A29197735006666C96A2CE7C787 │ │ │ │ +BBA5A57C4DBF6FAA5B38AF226B5D9A65FAD84650AC0C3DB29C30602699F81E01 │ │ │ │ +0BAF8F1CE44A03C680121B77A1703C638187675D6C22C49F9902475E6CE9C732 │ │ │ │ +48ED028CC92EA542EF189CC9CA1C384E3387793057615D0A2BF040CC90B275B9 │ │ │ │ +F70A5310874DC2E0A360373E7BCAC88250FBC8989C7D18DA8274C06F02FCF31C │ │ │ │ +2B3868CBAF083DAC2FB159DE368261842DB7C9EA1A86B17617C861A48FBA8FF9 │ │ │ │ +D184CB026F4A418C0955347612F94C039B1536A76CB182A591DD7C02D509CF16 │ │ │ │ +8B9E46502ABF5DE31F5DFBD19C7417A2AF7AF13F0D5FF837C94CE56F07B96337 │ │ │ │ +0ED215252346FAEB54B5F3ABE29709B7ECB9FBD23A4AD397E6ABA6938F1BBF33 │ │ │ │ +1D5460D9414F0B8725DA832744525C13E3FD9C8DB33FBEE12F9C4969988402C8 │ │ │ │ +96AF916364CC2DF17EDBA622FC0A5D0013418E29F912FFA06F8D7E31ECAB0B08 │ │ │ │ +C4D2D8EE537CC768FC9038DD6D86D33642C6E812E941F157FC6917AF19C2B99A │ │ │ │ +5BF10B9A7ECF711BBB6F33C8C3DAD778153122593F36ABDDC0E97A602B045DE6 │ │ │ │ +19BD82D877DDA960AB11EF48C7F75A28D0D731D4A5DBC98283087267CD1A470D │ │ │ │ +537E949DA5EECF097B099547995BE066A941CED683B5748962AD2B02C21636C0 │ │ │ │ +2EAFA33CA0CB3BF8A95703F015A210D918865B9BEA2890DCFB68BC3719C305EC │ │ │ │ +315EC8727BF9A93632AB9E3090B100C022EE1396CD329B37547F26A7DCE52BD7 │ │ │ │ +F91B7388DEC34F4A0C6D46CD7CA6ACC00C5C4C71E47C6AD96496B3CBF531F342 │ │ │ │ +A740EE6B99BD70AD490DFA700772A0697EC6561CE88A0113E4DC3B21F372D810 │ │ │ │ +DFF2C3F6EDF3E917BF2664EEFC9AD292DD6CC36853CF936018D43FDB28D5B001 │ │ │ │ +7D1C805F958F13FD221377ABDD69D102E8CC1DAB2E011EE16CF6DB9D195BA702 │ │ │ │ +5A8738FABF989B0351282D0E5121182DFC52169782A5F3DD5D820411BEF909DE │ │ │ │ +04D963E6FDA76F88508C4E91DDAAA1748F396A1D380D8CA429673AF27C164434 │ │ │ │ +771781B39565D3EE50F3CF03EF12908B13A6C11C9AB7631B32125828B13050BA │ │ │ │ +041A93B97AC32D4A1E28C5FA98CDEE998B5F97823D6291D01E3611A16854F1FE │ │ │ │ +69B9D6D2AE3E56D012B7BC3E582FB4C23188A5E365E65EB1F804A706AF73A2F8 │ │ │ │ +9804808EF71F0982B14133BF9A27D6F2E719BDB751022B1B052722933948904E │ │ │ │ +3582E363478DCDA115205A0FDE39DF71FEAEEB104419C35A6B0678C19616C6D9 │ │ │ │ +A892DC2F4257069AF096C80C099CD13024DF3995F28C694E00D1F08B43D4450C │ │ │ │ +D18F5C925CFD2D124E74FC64BBAA0DE32A79E4A4507B5B5DD834C67160CDA110 │ │ │ │ +EF0061DD27E8864F4250A92BBEFD75C784BB98F4FA789A8236C2A21E4E61ABD0 │ │ │ │ +C6B4D13B3C31AC8E55FA34BEC7C308C61FB0280382EC6AFD63D959678D42D2B3 │ │ │ │ +4134F6236A0808D9302B4E3C6F81FC6973B4833602750CCB5DE36AEA23ED6BD4 │ │ │ │ +5B72DF0DD7B81C871CAA6EC190748CD8C4B998D576E5D340ACAC0617DDBE461C │ │ │ │ +8E82E809D11A01D265D039F4315066832E27E08A6F067E129E45FBF533F761BB │ │ │ │ +EC3C071209BECE7D14D3184B2E6BFD65717A5A7C08F3776B20C513649488C1CF │ │ │ │ +03333805B249D1034FB0AE2D7D2A23324EE27AEDB68F8E329A8052FE58D7C0D9 │ │ │ │ +A40A0CDC79F2085C4F39A7DFDB625C8F071E2A32CF6215DD3E060A9BABF7A3AA │ │ │ │ +C57DA0C0571C5D6EEAA975D1BB9C99F8EA4958360E43E8C60080B03DC4435550 │ │ │ │ +E6048DDD35DF3E5DA69669F266FFD7B44649A68025270DC84258E329F6E6907C │ │ │ │ +BCFF900D715D0C7EC43C5E7180CAD6427BA4FD41AAD6531A5C06B0EC26DDA71F │ │ │ │ +4A9DA50DE919E79226F6DDF7C1BA478936AA86CEAD93072CC2960E98C45A1A0C │ │ │ │ +60CF8A26E4278AB4F9E28FA6532648196CC455607D6BCD00F60675DE8CC02C8C │ │ │ │ +9BE5D5B714731814D5B008EE236563D77AC6895E0158877C95797E07C02AFEBE │ │ │ │ +CC9FE97D5E103F7DB0A834E9A7A75893EC66340B0E4C6F0EEDEF43415BF9FCF4 │ │ │ │ +47340CBEA4DCFBA0D028EB2149FFBBDB3322AE5F6FD20242526EDC55E476D983 │ │ │ │ +DC │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -4003,15 +4009,15 @@ │ │ │ │ 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 3[51 12[45 22[47 │ │ │ │ -15[25 3[45 3[45 1[45 3[25 44[{}11 90.9091 /CMSL10 rf │ │ │ │ +15[25 3[45 3[45 45 45 3[25 44[{}12 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 │ │ │ │ @@ -4130,17 +4136,17 @@ │ │ │ │ (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 1206 4 v │ │ │ │ -1388 w Fj(ZV)29 b Fg(:)i Ff(DRAFT)f Fg(Jan)m(uary)g(6,)h(2026)p │ │ │ │ -2695 100 V 137 399 a Fi(\210)45 b Fj(int)i(size)29 b │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fk(2)p 136 100 1183 4 v │ │ │ │ +1365 w Fj(ZV)30 b Fg(:)g Ff(DRAFT)g Fg(Jan)m(uary)g(10,)i(2026)p │ │ │ │ +2717 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 │ │ │ │ @@ -4195,17 +4201,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 1206 4 v 1387 100 a Fj(ZV)30 │ │ │ │ -b Fg(:)g Ff(DRAFT)121 b Fg(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2647 100 V 1206 w Fk(3)0 399 y Fd(1.2.2)112 b(Instance)38 │ │ │ │ +TeXDict begin 3 2 bop 91 100 1183 4 v 1364 100 a Fj(ZV)30 │ │ │ │ +b Fg(:)h Ff(DRAFT)121 b Fg(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2670 100 V 1183 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 │ │ │ │ @@ -4269,17 +4275,17 @@ │ │ │ │ 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 1206 4 v │ │ │ │ -1388 w Fj(ZV)29 b Fg(:)i Ff(DRAFT)f Fg(Jan)m(uary)g(6,)h(2026)p │ │ │ │ -2695 100 V 111 399 a Fk(8.)46 b Fj(void)h(ZV_setEntry)e(\()i(ZV)g(*zv,) │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fk(4)p 136 100 1183 4 v │ │ │ │ +1365 w Fj(ZV)30 b Fg(:)g Ff(DRAFT)g Fg(Jan)m(uary)g(10,)i(2026)p │ │ │ │ +2717 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 │ │ │ │ @@ -4355,17 +4361,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 1206 4 v 1387 100 a Fj(ZV)30 │ │ │ │ -b Fg(:)g Ff(DRAFT)121 b Fg(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2647 100 V 1206 w Fk(5)0 399 y Fd(1.2.4)112 b(Utilit)m(y)38 │ │ │ │ +TeXDict begin 5 4 bop 91 100 1183 4 v 1364 100 a Fj(ZV)30 │ │ │ │ +b Fg(:)h Ff(DRAFT)121 b Fg(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2670 100 V 1183 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 │ │ │ │ @@ -4425,17 +4431,17 @@ │ │ │ │ b(The)24 b(n)m(um)m(b)s(er)f(of)i(en)m(tries)g(that)g(are)g(copied)g │ │ │ │ (is)g(the)f(smaller)227 5244 y(of)31 b(the)f(t)m(w)m(o)i(sizes.)227 │ │ │ │ 5407 y 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 1206 4 v │ │ │ │ -1388 w Fj(ZV)29 b Fg(:)i Ff(DRAFT)f Fg(Jan)m(uary)g(6,)h(2026)p │ │ │ │ -2695 100 V 111 399 a Fk(8.)46 b Fj(void)h(ZV_log10profile)d(\()j(ZV)g │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fk(6)p 136 100 1183 4 v │ │ │ │ +1365 w Fj(ZV)30 b Fg(:)g Ff(DRAFT)g Fg(Jan)m(uary)g(10,)i(2026)p │ │ │ │ +2717 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) │ │ │ │ @@ -4517,17 +4523,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 1206 4 v 1387 100 a Fj(ZV)30 │ │ │ │ -b Fg(:)g Ff(DRAFT)121 b Fg(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2647 100 V 1206 w Fk(7)111 399 y(6.)46 b Fj(int)h(ZV_writeToBinaryFile) │ │ │ │ +TeXDict begin 7 6 bop 91 100 1183 4 v 1364 100 a Fj(ZV)30 │ │ │ │ +b Fg(:)h Ff(DRAFT)121 b Fg(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2670 100 V 1183 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 │ │ │ │ @@ -4583,17 +4589,17 @@ │ │ │ │ 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 1206 4 v │ │ │ │ -1388 w Fj(ZV)29 b Fg(:)i Ff(DRAFT)f Fg(Jan)m(uary)g(6,)h(2026)p │ │ │ │ -2695 100 V 337 399 a Fi(\210)45 b Fk(The)40 b Fj(outFile)f │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fk(8)p 136 100 1183 4 v │ │ │ │ +1365 w Fj(ZV)30 b Fg(:)g Ff(DRAFT)g Fg(Jan)m(uary)g(10,)i(2026)p │ │ │ │ +2717 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 │ │ │ │ ├── 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 January 6, 2026 │ │ │ │ │ + 2 ZV : DRAFT January 10, 2026 │ │ │ │ │ • 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 January 6, 2026 3 │ │ │ │ │ + ZV : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 4 ZV : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 5 │ │ │ │ │ + ZV : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 6 ZV : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 7 │ │ │ │ │ + ZV : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 8 ZV : DRAFT January 10, 2026 │ │ │ │ │ • 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 2026.01.06:2034 │ │ │ │ +%DVIPSSource: TeX output 2026.01.10:0513 │ │ │ │ %%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 │ │ │ │ @@ -2250,14 +2250,15 @@ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ /UnderlineThickness 50 def │ │ │ │ end readonly def │ │ │ │ /Encoding 256 array │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ dup 44 /comma put │ │ │ │ dup 48 /zero put │ │ │ │ +dup 49 /one put │ │ │ │ dup 50 /two put │ │ │ │ dup 54 /six put │ │ │ │ dup 58 /colon put │ │ │ │ dup 74 /J put │ │ │ │ dup 97 /a put │ │ │ │ dup 110 /n put │ │ │ │ dup 114 /r put │ │ │ │ @@ -2447,79 +2448,84 @@ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB88440048702D1F │ │ │ │ -77994EE04EC3B4531D6E1888C86A8F0DA6CF1F056F16AB0DD76C862830F89DA4 │ │ │ │ -28923B3AA543E0D6E41D3BD283E600BC11F889315EE92C675C109C81065ED1BC │ │ │ │ -82A5583D1B723D50051B0557A367887F5B263014C6E77288B4883C50889473D3 │ │ │ │ -3787BAD4BEB88BD1353AFA5B73E61814819537E7FF09F53EF94792BB3DD36ED0 │ │ │ │ -002D0E7A6CDAB85A9C17AF5664BCB5A71663B861880F3ECCABC8E7A2FC81A4CC │ │ │ │ -AE7A87503FDC1CE0077BA51ECC7B43B60793FED8E9AAD5BBD03ADD6183DCD26D │ │ │ │ -24A74163611C05562437644EF9B8889FD4F9D311911204FEFD35237486F2D2D0 │ │ │ │ -B6783A03BF12EA6D19D6D0F87E4D08515F12F9CBF1961CAA71E0D69FE3C4C4D2 │ │ │ │ -7C7FB64ED24F8684C8F00C2BEDEA53EA390CDC0B5BEBD7DD982580B2EA1F1F89 │ │ │ │ -CFED5916630DC2BA32BB9180277E1ABC339B3B7DE086717BD93F7FF3681BA5B3 │ │ │ │ -FCF671C4B293C2DE4A322F0AA3323A4934444C69F23EF90120B8755482757759 │ │ │ │ -C457A435FB8BB4922BD92C5F3D9555D978275C510183E29DFF2FCE4ABBFC18DE │ │ │ │ -76CAD3B486BA12047DD808CD4D521A0FD368E4AE79DE262630983A5D6F0B679D │ │ │ │ -2F005306393C520E1B6987302D029939D94B0178DB06211C7F3B123A41E6E7BA │ │ │ │ -87164737110707A3ED3983895F3FBC815EF370F54C808ED93D910937BCA3D8AF │ │ │ │ -7CBF80DC180CDA54059DB76710B4FCD4139D5B7DA7DB1A0D0AF86AD2453D3691 │ │ │ │ -0BA5BAD40FF28BB4235FCD40FC87C2B888E67928D9B0ACA5692149373DBB93BF │ │ │ │ -6520DDD36A9BFE4D415CA67A5E04F1D48BDB28C69676273ED842CF7980E8E17C │ │ │ │ -B88563F407E340AFAE8F51AABCF8A39521BCEE1EC8396D75E124B24B4675909F │ │ │ │ -E246F87DA08584A3173AEFF153ECDF610543FA7474D125A31ADD6285A49222B5 │ │ │ │ -177066EA395BFA4B1114C7FCF7712DA772A21C99E64F4E1181E69CAF98137FA2 │ │ │ │ -76CF74F682B8CD7BA6EEA79B70FA8A76809634517F8415B6F21A5A7D6099B5E8 │ │ │ │ -EAB356BBC4FB68C72B8C61DDCE8EAB1A53B9D6BAD78584B307EFF57CEAE74884 │ │ │ │ -35987BF89E9E60E962D22FA5612F2DB5EB840499B7CC11A34BA5DEE30D277540 │ │ │ │ -39B8211D69B448ADE95B723F8369A631DE6DD75703AFD7485FB7FFF41A60CBE4 │ │ │ │ -813B8FEA120662355773830EF85015E7FFD609B2CEE52CB5FFE9C35B6BEEE4A4 │ │ │ │ -A66719E31CE1523FDD7771FB1E881A32A7DB7D92C2326DF4B93241C14ABFCCD6 │ │ │ │ -8E5BCAC61E800E6B1B4687ADA4CBF41EC0AFC26D021D1772CBDCD0516DF5EBE1 │ │ │ │ -37FD2AC5ABB8D774B5735940F1F6866D044FD8CE74444FAA5D0202C11E39CC10 │ │ │ │ -213731F41F704450E1D0565013BF22188442CE0FC256190A9F92F0C802AA2660 │ │ │ │ -614AFE9E9C82F8CD2E6035EEF84E5F16CBB690AC819B4B910EA8E81106F0ACE5 │ │ │ │ -CDFE77DAF69E4AFE72C43145A3ABCC40B6C5297487083F738C86422277AC2267 │ │ │ │ -51759F1B7F129E87DE16433B664AD0FB6D30424A11C70B52B591352BF653C8B0 │ │ │ │ -0840C224FBFEAA996A6BE1D69414DD778C2EF56A63B64D59BA412EC3E4000831 │ │ │ │ -73361FB9813F9A7C74BA3A50D331B07B61492E5D75F0861B530587269B3ADC90 │ │ │ │ -EA1DF586AC4BC57C3230893EFE953A6E76950ABA895FAC711D3BD330ABC6846A │ │ │ │ -C91F6ABF3410B913DFE5C8266020CEE5C7A9EDA2E7D9BCA797DC486443C7BA7C │ │ │ │ -7E03439A40927FA3251B6D417E5653E7799E9D6F04149C34096E2CA9B1F9B1EC │ │ │ │ -38958A2521B4A657A8B9F16E1FD66C7E345A10D7AA0241559503D214AC6507A4 │ │ │ │ -CBDE8617AA7ED136577734428594487F3565BF45FA196375759E2FE23C26EC8A │ │ │ │ -3310A36917A5E2F260EAB31030F8E570303D36B833626938F56939849DFA1F3F │ │ │ │ -66D0A317BB6364427F1512AAB380B555611C76345C02C3A6FBF78590331D5ECA │ │ │ │ -029DEFB722F6AB05327C2A31AB7BD6ED0F0386E6F45C1278048D22B90B074CCB │ │ │ │ -2BBEBCC1927C97EC532E651CAF0058AFE8FC08F00F0216D5DD9830C294FF76DA │ │ │ │ -426A073B3A3AEEFBDEE71C5182186311607ECDBD1F1AF4C5E79748CD01445C8D │ │ │ │ -25DD49490C8A6810065908222C8D0AC9F83AFBEE7115023E2D2615A170A5D40A │ │ │ │ -AD49BDF59A59187B6434F83E68EED22EF4EFDBADED6F1559AC779E0377FE7375 │ │ │ │ -D7060584FE74B1859D0FD98772253A712B17FFBB467840C484F5EF82C5677ADB │ │ │ │ -EDF159A456A526B8B9F6E8FC7608DFD47B0F09E26118F79CBE53B6C4E32BACAB │ │ │ │ -D62AFD4AA527CC4B587BB41A17A9BCE106A8C592BC9B73422B712C466C284A17 │ │ │ │ -E8D0C1E01D43C739FB1C083AD2714F78AC785B0C09AA7E67417A73510E00F2FE │ │ │ │ -E3D3EBF626A2F3A20A386E3F98D1285F4A2A332FC609CD191F01F128627B3505 │ │ │ │ -0AC2387DC0AD1B950490EBB5045F22BEC54955402CE2D267B6754E7C32BE84E8 │ │ │ │ -E6B63E3D3EAEE979442D167AEF69C27B22A8E887A2510C3A168D95D285CF7515 │ │ │ │ -011C921679B2F386575826A3F2071D015EEB78F02A4F94D4E5F07873623200F8 │ │ │ │ -7DF95BA0DC6B6D31DECC925BEA1E6A7C52FE685800EC33CBAE830F1AE5454DFA │ │ │ │ -913B8F457D7E2D3DFF019869E3301EEEC64A38295DE6B588E776922B32362382 │ │ │ │ -D1CF3D058613C8A96E6994D3EC23E8B71EC6E718383B20BB6C22DB6F93FA559F │ │ │ │ -3449CA84EB33B25C8BE0DFD1C29DC4FBD7AFBDC96C12162CAAB2C5E354B0FB10 │ │ │ │ -4BF8CC3610875ABD5111D09F2F847822118972214EDEB9EE34BAFE45E7AC15C5 │ │ │ │ -CA63EC4A3CEEA505A5EDD88A59BB67C71C3E026DFFE177F99BC69E6635545D03 │ │ │ │ -77A634F98230EF64381EC67CA519D4B9770EFA844789E21970F89D5FFC5DEAA8 │ │ │ │ -DC008EBA09306967ED090FF91B002FA6120C2B461A87AA32EFB003C5578D8EEF │ │ │ │ - │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB884400493EF704 │ │ │ │ +AAD58B5EC7446C104E35E1BD40C2A5E8212D57F595E78782FF19251B1D373536 │ │ │ │ +E1A3A3EE00CD97FC5A24DC762E7B137A39BF92FCC32B212DD98F38F58DBF529B │ │ │ │ +46E5C4DF7FCC98AF1868EFACE75B457F265EABDBED7B0B4C58B992F2C7447EFE │ │ │ │ +FBB747B040B7A00BDD7E6E1A9144C7C2A0B5FE09992FD8372689AC90494273BA │ │ │ │ +389E9AEECD921A82778626A823A88C7E731F64A920DF219678972CC33BA79221 │ │ │ │ +7883F0BED070FA6336715004DE725C4438E0A4431CDB05CA0177BDEA3DFF75DB │ │ │ │ +2938B887D7EC2E7CBC13845072C39A1DA383303D39F219ABC7F6E6C99B6A4FC0 │ │ │ │ +C6F170700D1A58EF5512E64926C123AAF808D1F82B4347D87457E6C42D4F2861 │ │ │ │ +B15A3EDD23FA95CAE9D32CB9EE6A700CEC2EF1A7237C5F8CF8F36DB986C6C618 │ │ │ │ +AA94C56948B12CBECB56482AE117E1D2718A47E04B25A3BB929DF522B058D2A8 │ │ │ │ +E610C497FF3E62F2B5E3EA125E1C7A7D0CDD1B656ABBBC684EFC1FABEEE8A3E8 │ │ │ │ +F812958902C2213DC8835D84D33D72E561AB92789C9C2B8372506DF00B76E49F │ │ │ │ +0F18AF54AB198C8E674B20D0CAFDEC3113EC3DAB5C49494C5BF62647F8C32CB2 │ │ │ │ +2A405FF6D486626EE1DF1CE028FAE43822D28EB2999D32BAEFA8A7D911F8FBA2 │ │ │ │ +29B8C3FBACD828A9789FBC1B6BBF6FDBA0BF218EDDA5411AE11F52E2B968F2FA │ │ │ │ +CA0155FE48E9D7F6C0B245A43535A677055555D051B9350C305B3F1F02D755C8 │ │ │ │ +6D53B044E0FA1119FB58BC06269CA7905CF325D92AFB8DC05DB4ED462BD5F24A │ │ │ │ +5077A0C74E23351DC9AF6E6814001DF6ED7B1D139CEB81A08C0B21C8A6036A76 │ │ │ │ +36E2C1ABB79B66B7A74EA152EB08091E51B5D1F6D0DD96AB602D004DCFE000A0 │ │ │ │ +ABE41BAB8AB7D50BD32BFD6F1AA3B60B09B9BE4E273EDD2DDCB21A98A760D17D │ │ │ │ +0A5C9303AFE63CF80A93E60C72A0576FAADEECBE2DE91892D210EB0AD1889C04 │ │ │ │ +C7530652584E775B4ED19CFB4B8DBCCC57A9FA9E4DDC8A1E5A1D3BE9E93407A6 │ │ │ │ +2C237ACE27F4EDA330EE952EDCBE91683AA98A29197735006666C96A2CE7C787 │ │ │ │ +BBA5A57C4DBF6FAA5B38AF226B5D9A65FAD84650AC0C3DB29C30602699F81E01 │ │ │ │ +0BAF8F1CE44A03C680121B77A1703C638187675D6C22C49F9902475E6CE9C732 │ │ │ │ +48ED028CC92EA542EF189CC9CA1C384E3387793057615D0A2BF040CC90B275B9 │ │ │ │ +F70A5310874DC2E0A360373E7BCAC88250FBC8989C7D18DA8274C06F02FCF31C │ │ │ │ +2B3868CBAF083DAC2FB159DE368261842DB7C9EA1A86B17617C861A48FBA8FF9 │ │ │ │ +D184CB026F4A418C0955347612F94C039B1536A76CB182A591DD7C02D509CF16 │ │ │ │ +8B9E46502ABF5DE31F5DFBD19C7417A2AF7AF13F0D5FF837C94CE56F07B96337 │ │ │ │ +0ED215252346FAEB54B5F3ABE29709B7ECB9FBD23A4AD397E6ABA6938F1BBF33 │ │ │ │ +1D5460D9414F0B8725DA832744525C13E3FD9C8DB33FBEE12F9C4969988402C8 │ │ │ │ +96AF916364CC2DF17EDBA622FC0A5D0013418E29F912FFA06F8D7E31ECAB0B08 │ │ │ │ +C4D2D8EE537CC768FC9038DD6D86D33642C6E812E941F157FC6917AF19C2B99A │ │ │ │ +5BF10B9A7ECF711BBB6F33C8C3DAD778153122593F36ABDDC0E97A602B045DE6 │ │ │ │ +19BD82D877DDA960AB11EF48C7F75A28D0D731D4A5DBC98283087267CD1A470D │ │ │ │ +537E949DA5EECF097B099547995BE066A941CED683B5748962AD2B02C21636C0 │ │ │ │ +2EAFA33CA0CB3BF8A95703F015A210D918865B9BEA2890DCFB68BC3719C305EC │ │ │ │ +315EC8727BF9A93632AB9E3090B100C022EE1396CD329B37547F26A7DCE52BD7 │ │ │ │ +F91B7388DEC34F4A0C6D46CD7CA6ACC00C5C4C71E47C6AD96496B3CBF531F342 │ │ │ │ +A740EE6B99BD70AD490DFA700772A0697EC6561CE88A0113E4DC3B21F372D810 │ │ │ │ +DFF2C3F6EDF3E917BF2664EEFC9AD292DD6CC36853CF936018D43FDB28D5B001 │ │ │ │ +7D1C805F958F13FD221377ABDD69D102E8CC1DAB2E011EE16CF6DB9D195BA702 │ │ │ │ +5A8738FABF989B0351282D0E5121182DFC52169782A5F3DD5D820411BEF909DE │ │ │ │ +04D963E6FDA76F88508C4E91DDAAA1748F396A1D380D8CA429673AF27C164434 │ │ │ │ +771781B39565D3EE50F3CF03EF12908B13A6C11C9AB7631B32125828B13050BA │ │ │ │ +041A93B97AC32D4A1E28C5FA98CDEE998B5F97823D6291D01E3611A16854F1FE │ │ │ │ +69B9D6D2AE3E56D012B7BC3E582FB4C23188A5E365E65EB1F804A706AF73A2F8 │ │ │ │ +9804808EF71F0982B14133BF9A27D6F2E719BDB751022B1B052722933948904E │ │ │ │ +3582E363478DCDA115205A0FDE39DF71FEAEEB104419C35A6B0678C19616C6D9 │ │ │ │ +A892DC2F4257069AF096C80C099CD13024DF3995F28C694E00D1F08B43D4450C │ │ │ │ +D18F5C925CFD2D124E74FC64BBAA0DE32A79E4A4507B5B5DD834C67160CDA110 │ │ │ │ +EF0061DD27E8864F4250A92BBEFD75C784BB98F4FA789A8236C2A21E4E61ABD0 │ │ │ │ +C6B4D13B3C31AC8E55FA34BEC7C308C61FB0280382EC6AFD63D959678D42D2B3 │ │ │ │ +4134F6236A0808D9302B4E3C6F81FC6973B4833602750CCB5DE36AEA23ED6BD4 │ │ │ │ +5B72DF0DD7B81C871CAA6EC190748CD8C4B998D576E5D340ACAC0617DDBE461C │ │ │ │ +8E82E809D11A01D265D039F4315066832E27E08A6F067E129E45FBF533F761BB │ │ │ │ +EC3C071209BECE7D14D3184B2E6BFD65717A5A7C08F3776B20C513649488C1CF │ │ │ │ +03333805B249D1034FB0AE2D7D2A23324EE27AEDB68F8E329A8052FE58D7C0D9 │ │ │ │ +A40A0CDC79F2085C4F39A7DFDB625C8F071E2A32CF6215DD3E060A9BABF7A3AA │ │ │ │ +C57DA0C0571C5D6EEAA975D1BB9C99F8EA4958360E43E8C60080B03DC4435550 │ │ │ │ +E6048DDD35DF3E5DA69669F266FFD7B44649A68025270DC84258E329F6E6907C │ │ │ │ +BCFF900D715D0C7EC43C5E7180CAD6427BA4FD41AAD6531A5C06B0EC26DDA71F │ │ │ │ +4A9DA50DE919E79226F6DDF7C1BA478936AA86CEAD93072CC2960E98C45A1A0C │ │ │ │ +60CF8A26E4278AB4F9E28FA6532648196CC455607D6BCD00F60675DE8CC02C8C │ │ │ │ +9BE5D5B714731814D5B008EE236563D77AC6895E0158877C95797E07C02AFEBE │ │ │ │ +CC9FE97D5E103F7DB0A834E9A7A75893EC66340B0E4C6F0EEDEF43415BF9FCF4 │ │ │ │ +47340CBEA4DCFBA0D028EB2149FFBBDB3322AE5F6FD20242526EDC55E476D983 │ │ │ │ +DC │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ @@ -5627,16 +5633,16 @@ │ │ │ │ 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 3[51 12[45 22[47 15[25 3[45 3[45 1[45 3[25 │ │ │ │ -44[{}11 90.9091 /CMSL10 rf /Fi 234[71 71 17[71 1[71{}4 │ │ │ │ +3[51 2[36 3[51 12[45 22[47 15[25 3[45 3[45 45 45 3[25 │ │ │ │ +44[{}12 90.9091 /CMSL10 rf /Fi 234[71 71 17[71 1[71{}4 │ │ │ │ 90.9091 /CMSY10 rf /Fj 136[60 42 49 30 37 38 1[46 46 │ │ │ │ 51 74 23 42 1[28 46 42 1[42 46 42 42 46 12[65 1[66 3[68 │ │ │ │ 7[59 62 69 2[68 6[28 12[33 45[{}29 90.9091 /CMTI10 rf │ │ │ │ /Fk 134[59 1[81 1[62 44 44 46 1[62 56 62 93 31 2[31 62 │ │ │ │ 56 1[51 62 50 1[54 12[78 5[88 106 67 4[88 18[56 56 56 │ │ │ │ 56 2[31 1[31 44[{}29 99.6264 /CMBX12 rf /Fl 130[48 1[48 │ │ │ │ 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 │ │ │ │ @@ -5711,18 +5717,18 @@ │ │ │ │ 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 1153 4 v │ │ │ │ -1335 w Fl(Misc)29 b Fh(:)41 b Fj(DRAFT)30 b Fh(Jan)m(uary)g(6,)h(2026)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 │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fp(2)p 136 100 1130 4 v │ │ │ │ +1312 w Fl(Misc)29 b Fh(:)41 b Fj(DRAFT)30 b Fh(Jan)m(uary)g(10,)i(2026) │ │ │ │ +p 2770 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 │ │ │ │ @@ -5808,17 +5814,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 1153 4 v 1334 100 a Fl(Misc)29 │ │ │ │ -b Fh(:)41 b Fj(DRAFT)121 b Fh(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2700 100 V 1153 w Fp(3)111 399 y(5.)46 b Fl(void)h(fp2DGrid)e(\()j(int) │ │ │ │ +TeXDict begin 3 2 bop 91 100 1130 4 v 1312 100 a Fl(Misc)29 │ │ │ │ +b Fh(:)40 b Fj(DRAFT)122 b Fh(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2723 100 V 1130 w Fp(3)111 399 y(5.)46 b Fl(void)h(fp2DGrid)e(\()j(int) │ │ │ │ f(n1,)g(int)g(n2,)g(int)f(ivec[],)g(FILE)h(*fp)g(\))g(;)227 │ │ │ │ 562 y Fp(This)40 b(metho)s(d)f(writes)i(the)f Fl(ivec[])f │ │ │ │ Fp(v)m(ector)j(on)m(to)f(an)f Fl(n1)48 b(x)f(n2)40 b │ │ │ │ Fp(grid)g(to)h(\014le)f Fl(fp)p Fp(.)70 b(This)39 b(is)i(useful)e(to) │ │ │ │ 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) │ │ │ │ @@ -5890,20 +5896,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 1153 4 v │ │ │ │ -1335 w Fl(Misc)29 b Fh(:)41 b Fj(DRAFT)30 b Fh(Jan)m(uary)g(6,)h(2026)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 │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fp(4)p 136 100 1130 4 v │ │ │ │ +1312 w Fl(Misc)29 b Fh(:)41 b Fj(DRAFT)30 b Fh(Jan)m(uary)g(10,)i(2026) │ │ │ │ +p 2770 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.) │ │ │ │ @@ -5978,17 +5984,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 1153 4 v 1334 100 a Fl(Misc)29 │ │ │ │ -b Fh(:)41 b Fj(DRAFT)121 b Fh(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2700 100 V 1153 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 1130 4 v 1312 100 a Fl(Misc)29 │ │ │ │ +b Fh(:)40 b Fj(DRAFT)122 b Fh(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2723 100 V 1130 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 │ │ │ │ @@ -6071,19 +6077,19 @@ │ │ │ │ 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 1153 4 v │ │ │ │ -1335 w Fl(Misc)29 b Fh(:)41 b Fj(DRAFT)30 b Fh(Jan)m(uary)g(6,)h(2026)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 │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fp(6)p 136 100 1130 4 v │ │ │ │ +1312 w Fl(Misc)29 b Fh(:)41 b Fj(DRAFT)30 b Fh(Jan)m(uary)g(10,)i(2026) │ │ │ │ +p 2770 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 │ │ │ │ @@ -6148,17 +6154,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 1153 4 v 1334 100 a Fl(Misc)29 │ │ │ │ -b Fh(:)41 b Fj(DRAFT)121 b Fh(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2700 100 V 1153 w Fp(7)111 399 y(3.)46 b Fl(testOrderViaND)e(msglvl)i │ │ │ │ +TeXDict begin 7 6 bop 91 100 1130 4 v 1312 100 a Fl(Misc)29 │ │ │ │ +b Fh(:)40 b Fj(DRAFT)122 b Fh(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2723 100 V 1130 w Fp(7)111 399 y(3.)46 b Fl(testOrderViaND)e(msglvl)i │ │ │ │ (msgFile)g(GraphFile)f(maxdomainsize)g(seed)h(ETreeFile)227 │ │ │ │ 550 y Fp(This)23 b(program)h(reads)g(in)g(a)g Fl(Graph)f │ │ │ │ Fp(ob)5 b(ject)25 b(from)e(a)i(\014le)f(and)f(computes)h(a)h │ │ │ │ (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 │ │ │ │ @@ -6228,18 +6234,18 @@ │ │ │ │ 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 1153 4 v │ │ │ │ -1335 w Fl(Misc)29 b Fh(:)41 b Fj(DRAFT)30 b Fh(Jan)m(uary)g(6,)h(2026)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 │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fp(8)p 136 100 1130 4 v │ │ │ │ +1312 w Fl(Misc)29 b Fh(:)41 b Fj(DRAFT)30 b Fh(Jan)m(uary)g(10,)i(2026) │ │ │ │ +p 2770 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 │ │ │ │ @@ -6314,17 +6320,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 1153 4 v 1334 100 a Fl(Misc)29 │ │ │ │ -b Fh(:)41 b Fj(DRAFT)121 b Fh(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2700 100 V 1153 w Fp(9)1541 1617 y(Figure)g(1.1:)42 b │ │ │ │ +TeXDict begin 9 8 bop 91 100 1130 4 v 1312 100 a Fl(Misc)29 │ │ │ │ +b Fh(:)40 b Fj(DRAFT)122 b Fh(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2723 100 V 1130 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 │ │ │ │ @@ -6729,17 +6735,17 @@ │ │ │ │ 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 1130 4 │ │ │ │ -v 1312 w Fl(Misc)30 b Fh(:)40 b Fj(DRAFT)31 b Fh(Jan)m(uary)f(6,)h │ │ │ │ -(2026)p 2770 100 V 813 1617 a Fp(Figure)f(1.2:)42 b Fb(R2D100:)k │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fp(10)p 182 100 1107 4 │ │ │ │ +v 1290 w Fl(Misc)29 b Fh(:)41 b Fj(DRAFT)30 b Fh(Jan)m(uary)g(10,)h │ │ │ │ +(2026)p 2793 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 │ │ │ │ @@ -7148,17 +7154,17 @@ │ │ │ │ 348.123 444.374 (0) radius drawLabel │ │ │ │ grestore │ │ │ │ showpage │ │ │ │ │ │ │ │ %%EndDocument │ │ │ │ @endspecial eop end │ │ │ │ %%Page: 11 11 │ │ │ │ -TeXDict begin 11 10 bop 91 100 1130 4 v 1312 100 a Fl(Misc)29 │ │ │ │ -b Fh(:)40 b Fj(DRAFT)122 b Fh(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2678 100 V 1130 w Fp(11)227 399 y Fg(A)g Fp(is)f(factored)h(as)1106 │ │ │ │ +TeXDict begin 11 10 bop 91 100 1107 4 v 1289 100 a Fl(Misc)29 │ │ │ │ +b Fh(:)41 b Fj(DRAFT)121 b Fh(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2700 100 V 1107 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 │ │ │ │ @@ -7267,17 +7273,17 @@ │ │ │ │ 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 1130 │ │ │ │ -4 v 1312 w Fl(Misc)30 b Fh(:)40 b Fj(DRAFT)31 b Fh(Jan)m(uary)f(6,)h │ │ │ │ -(2026)p 2770 100 V 337 399 a Ff(\210)45 b Fp(The)29 b │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fp(12)p 182 100 1107 │ │ │ │ +4 v 1290 w Fl(Misc)29 b Fh(:)41 b Fj(DRAFT)30 b Fh(Jan)m(uary)g(10,)h │ │ │ │ +(2026)p 2793 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 │ │ │ │ @@ -7345,17 +7351,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 1130 4 v 1312 100 a Fl(Misc)29 │ │ │ │ -b Fh(:)40 b Fj(DRAFT)122 b Fh(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2678 100 V 1130 w Fp(13)427 399 y Fl(nrow)47 b(ncol)g(nent)427 │ │ │ │ +TeXDict begin 13 12 bop 91 100 1107 4 v 1289 100 a Fl(Misc)29 │ │ │ │ +b Fh(:)41 b Fj(DRAFT)121 b Fh(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2700 100 V 1107 w Fp(13)427 399 y Fl(nrow)47 b(ncol)g(nent)427 │ │ │ │ 511 y(...)427 624 y(irow)g(jcol)g(real_value)e(imag_value)427 │ │ │ │ 737 y(...)427 904 y Fp(F)-8 b(or)30 b(b)s(oth)e(real)i(and)e(complex)h │ │ │ │ (en)m(tries,)i(the)e(en)m(tries)g(need)g(not)g(b)s(e)f(disjoin)m(t,)i │ │ │ │ (i.e.,)h(en)m(tries)e(with)g(the)427 1017 y(same)i Fl(irow)e │ │ │ │ Fp(and)h Fl(jcol)f Fp(v)-5 b(alues)31 b(are)g Fj(summe)-5 │ │ │ │ b(d)p Fp(.)337 1163 y Ff(\210)45 b Fp(The)26 b Fl(rhsFileName)d │ │ │ │ Fp(parameter)k(is)g(the)f(name)h(of)f(the)h(input)e(\014le)i(for)f(the) │ │ │ │ @@ -7411,17 +7417,17 @@ │ │ │ │ (\(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 1130 │ │ │ │ -4 v 1312 w Fl(Misc)30 b Fh(:)40 b Fj(DRAFT)31 b Fh(Jan)m(uary)f(6,)h │ │ │ │ -(2026)p 2770 100 V 427 399 a Fp(for)f Fg(A)h Fp(real)g(or)f(complex)h │ │ │ │ +TeXDict begin 14 13 bop 0 100 a Fp(14)p 182 100 1107 │ │ │ │ +4 v 1290 w Fl(Misc)29 b Fh(:)41 b Fj(DRAFT)30 b Fh(Jan)m(uary)g(10,)h │ │ │ │ +(2026)p 2793 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 │ │ │ │ @@ -7482,17 +7488,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 1130 4 v 1312 100 a Fl(Misc)29 │ │ │ │ -b Fh(:)40 b Fj(DRAFT)122 b Fh(Jan)m(uary)30 b(6,)h(2026)p │ │ │ │ -2678 100 V 1130 w Fp(15)337 399 y Ff(\210)45 b Fl(type)29 │ │ │ │ +TeXDict begin 15 14 bop 91 100 1107 4 v 1289 100 a Fl(Misc)29 │ │ │ │ +b Fh(:)41 b Fj(DRAFT)121 b Fh(Jan)m(uary)30 b(10,)h(2026)p │ │ │ │ +2700 100 V 1107 w Fp(15)337 399 y Ff(\210)45 b Fl(type)29 │ │ │ │ b Fp(is)i(the)f(t)m(yp)s(e)h(of)g(en)m(tries)500 545 │ │ │ │ y Fo({)45 b Fl(1)30 b Fp(|)h(\()p Fl(SPOOLES)p 1174 545 │ │ │ │ 29 4 v 32 w(REAL)p Fp(\))f(for)g(real)h(en)m(tries)500 │ │ │ │ 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 January 6, 2026 │ │ │ │ │ + 2 Misc : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 3 │ │ │ │ │ + Misc : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 4 Misc : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 5 │ │ │ │ │ + Misc : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 6 Misc : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 7 │ │ │ │ │ + Misc : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 8 Misc : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 9 │ │ │ │ │ + Misc : DRAFT January 10, 2026 9 │ │ │ │ │ Figure 1.1: R2D100 │ │ │ │ │ - 10 Misc : DRAFT January 6, 2026 │ │ │ │ │ + 10 Misc : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 11 │ │ │ │ │ + 2 2 4 4 │ │ │ │ │ + 0 4 4 │ │ │ │ │ + 2 2 0 4 4 4 4 4 4 4 │ │ │ │ │ + Misc : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 12 Misc : DRAFT January 10, 2026 │ │ │ │ │ • 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 January 6, 2026 13 │ │ │ │ │ + Misc : DRAFT January 10, 2026 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 January 6, 2026 │ │ │ │ │ + 14 Misc : DRAFT January 10, 2026 │ │ │ │ │ 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 January 6, 2026 15 │ │ │ │ │ + Misc : DRAFT January 10, 2026 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 │ │ │ │ │ ...