--- /srv/reproducible-results/rbuild-debian/r-b-build.B8M90P2N/b1/spooles_2.2-14_i386.changes +++ /srv/reproducible-results/rbuild-debian/r-b-build.B8M90P2N/b2/spooles_2.2-14_i386.changes ├── Files │ @@ -1,5 +1,5 @@ │ │ 1a28d682d38fc68335878c9d106a6dd2 636632 libdevel optional libspooles-dev_2.2-14_i386.deb │ 2d8a24590017907acbfd966b17500c3c 1131612 debug optional libspooles2.2-dbgsym_2.2-14_i386.deb │ 1e06bc4ef4a054977c3cb0c2e3428569 485860 libs optional libspooles2.2_2.2-14_i386.deb │ - 35948241f1b2a9b830208c507ccd60b4 6789792 doc optional spooles-doc_2.2-14_all.deb │ + b58ca8546e0c3fb479d42a9506af35bb 6815892 doc optional spooles-doc_2.2-14_all.deb ├── spooles-doc_2.2-14_all.deb │ ├── file list │ │ @@ -1,3 +1,3 @@ │ │ -rw-r--r-- 0 0 0 4 2018-12-19 22:56:58.000000 debian-binary │ │ --rw-r--r-- 0 0 0 1944 2018-12-19 22:56:58.000000 control.tar.xz │ │ --rw-r--r-- 0 0 0 6787656 2018-12-19 22:56:58.000000 data.tar.xz │ │ +-rw-r--r-- 0 0 0 1940 2018-12-19 22:56:58.000000 control.tar.xz │ │ +-rw-r--r-- 0 0 0 6813760 2018-12-19 22:56:58.000000 data.tar.xz │ ├── control.tar.xz │ │ ├── control.tar │ │ │ ├── ./control │ │ │ │ @@ -1,13 +1,13 @@ │ │ │ │ Package: spooles-doc │ │ │ │ Source: spooles │ │ │ │ Version: 2.2-14 │ │ │ │ Architecture: all │ │ │ │ Maintainer: Debian Science Maintainers │ │ │ │ -Installed-Size: 6888 │ │ │ │ +Installed-Size: 6899 │ │ │ │ Suggests: libspooles2.2-dev │ │ │ │ Section: doc │ │ │ │ Priority: optional │ │ │ │ Homepage: http://www.netlib.org/linalg/spooles/ │ │ │ │ Description: SPOOLES numerical simulation pre- and post-processor documentation │ │ │ │ SPOOLES is a library for solving sparse real and complex linear systems of │ │ │ │ equations, written in the C language using object oriented design. │ │ │ ├── ./md5sums │ │ │ │ ├── ./md5sums │ │ │ │ │┄ Files differ │ ├── data.tar.xz │ │ ├── data.tar │ │ │ ├── file list │ │ │ │ @@ -1,56 +1,56 @@ │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2018-12-19 22:56:58.000000 ./ │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2018-12-19 22:56:58.000000 ./usr/ │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2018-12-19 22:56:58.000000 ./usr/share/ │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2018-12-19 22:56:58.000000 ./usr/share/doc/ │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/ │ │ │ │ --rw-r--r-- 0 root (0) root (0) 152075 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/A2.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 152217 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/A2.ps.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 596035 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/ASHCRAFC.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 67575 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/AllInOne.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 127944 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/BKL.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 156153 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/BPG.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 190448 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/Chv.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 101021 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/ChvList.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 94761 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/ChvManager.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 121020 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/Coords.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 116084 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/DSTree.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 134158 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/DV.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 117908 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/DenseMtx.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 107605 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/Drand.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 121678 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/EGraph.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 221084 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/ETree.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 87631 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/Eigen.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 179724 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/FrontMtx.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 275774 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/FrontTrees.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 184624 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/GPart.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 190236 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/Graph.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 132006 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/I2Ohash.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 110032 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/IIheap.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 121843 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/IV.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 124743 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/IVL.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 95732 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/Ideq.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 205122 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/InpMtx.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 127714 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/LinSol.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 89519 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/Lock.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 176525 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/MPI.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 168576 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/MSMD.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 163484 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/MT.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 146595 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/Network.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 143664 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/PatchAndGoInfo.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 124791 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/Pencil.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 107299 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/Perm.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 149424 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/ReferenceManual.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 153135 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/SemiImplMtx.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 134714 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/SolveMap.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 175782 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/SubMtx.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 101689 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/SubMtxList.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 117902 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/SubMtxManager.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 121033 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/SymbFac.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 168030 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/Tree.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 190328 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/Utilities.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 128043 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/ZV.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 68013 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/AllInOne.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 128123 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/BKL.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 156278 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/BPG.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 190604 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/Chv.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 101217 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/ChvList.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 94927 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/ChvManager.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 121188 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/Coords.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 116249 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/DSTree.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 134331 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/DV.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 118097 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/DenseMtx.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 107739 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/Drand.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 121778 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/EGraph.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 221256 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/ETree.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 88074 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/Eigen.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 179820 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/FrontMtx.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 276056 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/FrontTrees.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 184858 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/GPart.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 190446 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/Graph.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 132123 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/I2Ohash.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 110237 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/IIheap.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 121987 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/IV.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 124964 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/IVL.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 95884 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/Ideq.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 205279 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/InpMtx.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 127917 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/LinSol.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 89692 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/Lock.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 176698 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/MPI.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 168731 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/MSMD.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 163707 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/MT.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 146778 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/Network.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 143823 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/PatchAndGoInfo.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 124968 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/Pencil.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 107499 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/Perm.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 149892 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/ReferenceManual.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 153279 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/SemiImplMtx.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 134775 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/SolveMap.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 175975 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/SubMtx.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 101886 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/SubMtxList.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 118089 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/SubMtxManager.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 121185 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/SymbFac.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 168194 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/Tree.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 190491 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/Utilities.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 128192 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/ZV.ps.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 758 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/changelog.Debian.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 378 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/copyright │ │ │ │ --rw-r--r-- 0 root (0) root (0) 189175 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/misc.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 189428 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/misc.ps.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 9600 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/spooles.2.2.html │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2018-12-19 22:56:58.000000 ./usr/share/doc-base/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 430 2018-12-19 22:56:58.000000 ./usr/share/doc-base/spooles-doc.spooles │ │ │ ├── ./usr/share/doc/spooles-doc/A2.ps.gz │ │ │ │ ├── A2.ps │ │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ │ %%EndComments │ │ │ │ │ %%BeginDefaults │ │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ │ %%EndDefaults │ │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ │ %DVIPSCommandLine: dvips main -o A2.ps │ │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ │ -%DVIPSSource: TeX output 2024.01.16:2047 │ │ │ │ │ +%DVIPSSource: TeX output 2025.02.18:0318 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -2062,20 +2062,21 @@ │ │ │ │ │ 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 52 /four put │ │ │ │ │ -dup 54 /six put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ +dup 56 /eight put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 74 /J put │ │ │ │ │ +dup 70 /F put │ │ │ │ │ dup 97 /a put │ │ │ │ │ -dup 110 /n put │ │ │ │ │ +dup 98 /b put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ dup 114 /r put │ │ │ │ │ dup 117 /u put │ │ │ │ │ dup 121 /y put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ @@ -2259,89 +2260,93 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ │ -C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ │ -6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ │ -11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ │ -1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ │ -A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ │ -F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ │ -EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ │ -033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ │ -A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ │ -468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8A71FF9C085003EBB4F4 │ │ │ │ │ -3D271F5B16B1AAD3EBDC391F534AA46E545E9D8659DD19B309C3B7625A8396FA │ │ │ │ │ -2519464539D46E43ACB72952313C8497315E0319C08628023E8FC54D7D3BAC29 │ │ │ │ │ -D5AD8EFDABF0C33C7AFB7151A6606C62A87F0F5F783569AC4C881A992E3FE420 │ │ │ │ │ -297F7BC5147F3B2FA98450D2F8B07F7D229BC8BE06729920CFEC22556740E1CB │ │ │ │ │ -3DE09AC763C6D4A20AD1599C368FABD07BC35C16683F2A0311A88983415A9140 │ │ │ │ │ -2EFC4BC1B10DCAD4B2B8A28510E5BD39D6616D2B9B079ED3CF9C315B7DEC29D9 │ │ │ │ │ -251DFD0194B34EC175964C23383F23FFB2E41B698C405815D65EAFF9E9DD1DDE │ │ │ │ │ -30F77924656C288B8DDB2E5B0E7B1FAA66791DE3848EE6DE63AD0E945E49C6C7 │ │ │ │ │ -9FCA16E01F027F9EF7ACB55F02F5B0136480802F789F6FE14B430879979BA04D │ │ │ │ │ -F481AD4CF47E6847936F377FB04869F9A80E597301BFCAB718D8764094673876 │ │ │ │ │ -BCEF8FA3701608C84B3A0399A11D2E6AD922CCB7D72AF9EBFB30F4648A37A123 │ │ │ │ │ -CB8FB14BDC351692CF0CCAA5CA9383C2B23BAAA38700327EB743FBBE9EE04041 │ │ │ │ │ -13F5CEF4B3881BBC051C33369A82B3505B1CFD7D91AEF2E43EA728EE48E2D854 │ │ │ │ │ -5A7E516998ACDD4FD835FA901C5A21810A56D51FE919B2E58408EEB4DAEB487F │ │ │ │ │ -BA7F1D292CED902DF3533566D96DAD918319EA650D4FC7D9E0170CDE620F755B │ │ │ │ │ -0E7AE02D9B118481B26F5FF7060FBCFA2A682B6826F00679BCDA68794C05286D │ │ │ │ │ -B616DD08372ACDE0AE6E7EF116F0D36F16241ED4F0E8CCD80377792E3BB1343C │ │ │ │ │ -EEB22CC77738F7CBCBA32CF6C3979F6DF7ED81A89AE8928FD7CC550F2730BA88 │ │ │ │ │ -1B51CEDC63F4C47F261AFCAB7AC3CED20B15C97E714A460A1A3B16436B4A5149 │ │ │ │ │ -8F91DA4BE0B9B648534CE5F442117036B602DC91E2852BEA62F55803B833FDF7 │ │ │ │ │ -9F901AB87489E703DDEED1091A79DC73B4440BBBF2C7592B441187C4A3562204 │ │ │ │ │ -859F08BA3CE2A8ECCD5AAD13C50FB806FE79A388F1822C5608837CBDE526A044 │ │ │ │ │ -12E5CDE4A066932AF2ACA7E8FC6BA4603640944718752975B7DA6E906BE1EA01 │ │ │ │ │ -46736FF5D1AA1CC682D011B6039CF98C35E36D4F14ABC84A38B7203CC9A17756 │ │ │ │ │ -B2B0345276798F1A88A54AD9FEA0853C6DDF28525ED4F0B7380D14147012C2A4 │ │ │ │ │ -5B02888C986C76497EA4C729B0B82EE73C1A1A8E8F1ABF401E341028E9C15AF9 │ │ │ │ │ -354706D8DC07492921AD0932A46736C0D1B066D00287DACCC068FAE6A796EC89 │ │ │ │ │ -54D1D73AA88F3A5912BA9D3FF70065C8D0D0DAD1CD846501E06694374EFDBEC6 │ │ │ │ │ -931F644D5E8494AFC742423AD9A487658E310E0682BE19B8475F4D450487A686 │ │ │ │ │ -2B94494DEAF1C0F59DE82F2CE64BEE5E97F942FCFA1187ED6AA5761E951A7BF7 │ │ │ │ │ -9F842E34A4656C58B35A9E99F7E6762CEE11E0CF59FFD75D7382C5EE6DBB43F1 │ │ │ │ │ -ED219071D3FB22DBA90977723BB467C0490D042684C0724F40DCA3E0D8F1F4E7 │ │ │ │ │ -3C4F9A67BE6528185EAAFDD415224F7E256A4EA00111C17C746CBD80BF569A27 │ │ │ │ │ -D81195D7F79C1CCEEF30ED00D49F48B63E4B8D7953403A3710AE953CC1B76F0F │ │ │ │ │ -F523D777A6A186F262A602543F94AF7471DBE25FEBC207DB42DAF7DC9A5781FB │ │ │ │ │ -2131AD42869D966A734AAE3466DF1CE9D1BCFA72409A558C0AEE6A8E2FEAACB6 │ │ │ │ │ -2CDABCC28433034848ACF9FB4465D272E4AFC48572647F05F41C7A293CC5B595 │ │ │ │ │ -AD31555FB708A72962707348BC7033A8224BD42EB9D75FDF3AE9E6A9C960B330 │ │ │ │ │ -5137DF59F8E2E0D535F41524ABDF070745A4FA25CD8DFD38A5FF30A95452B875 │ │ │ │ │ -6569E8812631300D79A942C563AF174AC05C9F2D09D7D5D3C605F5A6B7F21B34 │ │ │ │ │ -18F270A993B050838E701A17938D1C156CBA7CA4BAC7C562CE9D7B758EAB25A9 │ │ │ │ │ -A6DFFC71F65561341847B776DF34061CE3D439B87B857626987EC93B3B95B8E8 │ │ │ │ │ -76FFB16B263675333FA10414FEED707FF7C366BF8B20FF8577CDEBEBCF1A5BCE │ │ │ │ │ -258C09C90175A5278B7C444A623E3331FDE5A6387B3E389540ED1E7E883958F3 │ │ │ │ │ -3A5C89CCD62256FA069DF4A5090FB17C1F1757C9209DAFB8A1F47182BF3E88D9 │ │ │ │ │ -0B5376B59EE165A761902759C8ED7F5AD301E7EB8B49CC09AF921DB45B7F8002 │ │ │ │ │ -AB32E73AAE53942DE0F9175D8446017006C9C0B93EF39C13B7A879F2F6DDFF16 │ │ │ │ │ -204BB24F976847CF006FD29332FCCB255B5116F7077A44F7066C39C81DC4BAD2 │ │ │ │ │ -40DB2753626C0102E5D047522ABC38EA294A699B8DFD9CA0A7980561A1062E90 │ │ │ │ │ -AB11EE286A9C238D9F721D9980D0A1828C2814972622D948CEE8C812C19A9A03 │ │ │ │ │ -608ED0AC138A436FFBF8BE3D1E66C87793416AF38ED9BC5424568A175FBDAA9E │ │ │ │ │ -D6FC11A7021693819B051562B5A59F32629E2D6019D69DD329BE1894A2B295E1 │ │ │ │ │ -1DCE9683B29AE126C56F26E5C595BF1A8249BDE231DBE8B066F7F62EF149B975 │ │ │ │ │ -A863969A4690504A5EA064721DA909B8157C0B39FBF8228D95CB655E406161E1 │ │ │ │ │ -148610FAEED7C5509880223C06A66DA19E10F94DC2DB481B26 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004FD597ED │ │ │ │ │ +EFDBC64ABD9B79386FB2427D1A63522195B1239C09F8CB3F8BD7A245A6DD82E3 │ │ │ │ │ +260C3889587626DFC5F7978E55F5524ABD6A3319CDD3D3F40D040044D51DA4E1 │ │ │ │ │ +6797EEAC7AA07C77EC6DB0E6E182B545A8BEF63B14F3FC07BAC09E7CD5C17ED6 │ │ │ │ │ +10080704B0DA4E9BA12F968DF8A58458D17E9A5B1F14A83DC51F5B161ADEE1CC │ │ │ │ │ +0183D82ED92C6FC7203C289949EDF0284D9893029FF5408E421324625F17C3E5 │ │ │ │ │ +2437C8F75A9D68EE1AF9174FEA6FC6BF793C7D2E497EA90396CF1A645E283B69 │ │ │ │ │ +8425F47C323587DF91E1D596DCB1E3A787C955D9D965A5E3E26ADF58B62AD5F9 │ │ │ │ │ +0C9AC784DE479780606354111E3202F215650DBBE1063A46F3C10B9EBC974DDA │ │ │ │ │ +A1A28DBBD43E9E5BFF000B12C787D0427928078F8EC5FE90DED97E6C129E8DEA │ │ │ │ │ +51F66504DB83764E52B0BA68DF7BE684C8959CB1D3345CC48221A9A4683306C0 │ │ │ │ │ +62B634E0A539383F0C7A788D9711EFF414869CCC5659D78CEBE009BF2463F56A │ │ │ │ │ +0ADC993348FE96DF7C250E13ED6504AACFE8F8DCA2D2048D9D8CFA127D363EAC │ │ │ │ │ +1F0630E2D1B621E6954038195D965B91FD974FA3F1B8B29D200A16CEBA645E2F │ │ │ │ │ +CEEE6FD49FBBD49E38AE67D4BFFCE91F1FC422554EC4409C5FA18D40FCD6D9B3 │ │ │ │ │ +2185ED1E0F98106D4339F086B05CA36E56EC22C60E2CE23F9C4CC403ACAD3F94 │ │ │ │ │ +4086B4DF6DFA0B7B4716417263E7B558535566AED2F6C2F9846A16D71A7930A7 │ │ │ │ │ +49232D3D16C4A01CF1A1998A06F40062ED329179A85668537C55D0BC24FC0010 │ │ │ │ │ +54DA83E2FC66B2A5D428E6A9BFC983253668C0ECE6CA36DBF97C4B7659D50842 │ │ │ │ │ +C65B36604840EEDA399B57E2DEFAC3E7FB031634CE33D04238F9854D2AAAF448 │ │ │ │ │ +34DA5F3BCCED3166FEEE82BB0BBA0A397CC2F95865CB52AABFF454D93B425809 │ │ │ │ │ +A26AC459F321FD23E2262FE816D06BAAECF32AAF167F84799AF80F9F88388D07 │ │ │ │ │ +0DB5FD57AFEE2850A8DFE977E6AE39CB3DC16DB1A163A583C86C6F775CE33521 │ │ │ │ │ +0081C0BBBAD6D30D26C66B28B38CEAC78FEA5FB3CC5853656B67C6D9D80EB30E │ │ │ │ │ +397558C9179AF5920F34DAB3F578DFCF0DBB137AED17D6325C23883E69EE4621 │ │ │ │ │ +34355A70C19EA68891E1CA937376901C85CDEE109F1665943E29A216DC00937A │ │ │ │ │ +B983A729A4654AD09187C0242D52FA4ADD0853EF4888864914D7D81C56578DD4 │ │ │ │ │ +3B51907032022E6E412D4F114675DEDCA8A9E85DC03A0B583FECD84432D15F70 │ │ │ │ │ +01F627BD6EC91F9FCFDA01BF40E1229B5F164309DBB641AD50970503DA2048C1 │ │ │ │ │ +DF8F36E8D252EE113F0B46677D9BAF376BAE18D74CFB0DBBD0C7E9D0A58BA3ED │ │ │ │ │ +1E5099CAE073EB5638617760AB57849893764EA9735173CD1EAB66884CEA7EE3 │ │ │ │ │ +8843327B2E145BD6FBB49102776B82BC511D109F8BE9E7E99DADABABEDC3CFD9 │ │ │ │ │ +393578FFD85907DFF2849E4CDE6FA4DEC7E1C150EBE4047FFB650F9548BE6D11 │ │ │ │ │ +0C51226A5436F18BF20A02E0F888F46B6AC3A8E8D927ECD3B5E095933AD3859F │ │ │ │ │ +5167C41D832EFCC4093BD2AFA7101AB430E57DAFC3590F05D3CBABB32BC203A0 │ │ │ │ │ +467B23BDB830487C9AA5B85BAC065F8538871B4180F8C4732E637DB090CFDE5A │ │ │ │ │ +3F4F2B5BFAFB848BAAD1A17CB076B34159601639BD93ECAB1214ACABF2C67FE2 │ │ │ │ │ +0658AA20B08681070FF56F1CC52144ABA8765D6E124D1CEA9BBA102808CE1BB2 │ │ │ │ │ +5EDF46BC7BBC2A5B49EE6EC28F5797A3969B057B21FCDBBD0E60848FF14F6CA3 │ │ │ │ │ +70F3060BDBB019B22722C99C7691760F013763B7FBEB62830AE215F195BF9F01 │ │ │ │ │ +21BF4377397E89574CFA47D123AA506A570A77BA6EB4AAB0B237A26154880293 │ │ │ │ │ +3952F832F72ECCB024F02385E5EE8566B165904B594E30D0700D033C6B429F6F │ │ │ │ │ +2A20BC774F442BC9CE29FCC81807C2768A8BC927A215558FBF36DC53F477F04A │ │ │ │ │ +41DA66E1A85B659EB761230977EAD7DA0150513D3323B143D4E2A61BCF03334C │ │ │ │ │ +C0EE3E1B06CFAF58ECC910BD81F0352B75FF1594D6A4EF504232D442174BE766 │ │ │ │ │ +0F8E703F97E21D25D4CD097549C31FEE7017C3916EFB02E7BF869172889827B6 │ │ │ │ │ +A48465EB7612BA3DBC6A9436C7167F149A25CE9F8E3F4F8DE3B5ADF6C0986CB3 │ │ │ │ │ +3A7E2DAB44AB489796461536F5F713017F2620AD03295CAE9285F08974AE0DF8 │ │ │ │ │ +D739260929619B509491AFF09C4CAEF9E65C2CA69470C907ECBF3AB6C955360D │ │ │ │ │ +05ABAC306DB51122A1ADC7EF0DD70FA299A45C505A83727D4598C86319EE9C06 │ │ │ │ │ +7218EFD4F40388354BCF1B79593D5AD221DF955D081F99F880E5CED07321AB3E │ │ │ │ │ +A2FCB8B05D54807D8E15E65B78DCE12989B9276350080C905DBB74CE9AA7E246 │ │ │ │ │ +5D3BAED292C562D4CF54617FCC6654496C7996D1ECE1EFF9258716AB763A12E6 │ │ │ │ │ +316E4C5587351A6DB011F58F6A15BC28BEBDC3836E0CB892807FEC228DC1B380 │ │ │ │ │ +92F7F42279F08D60F13D6A4CB425543C3644461461CBF6F27B6603F613D1FCF8 │ │ │ │ │ +A8410AD82D1498166AEB35D4125D7E2ADEAAB18BC04806AED53513F066E5F154 │ │ │ │ │ +3E13E863C50B9814EE2FB978D0D24A03FAF650CB6E2CADF1E6BE6BAF699AFC03 │ │ │ │ │ +E1A0EEB207B3B9A689ED5B373FE86686AD230BE6C18E1673DDA50E224B343EC5 │ │ │ │ │ +903BA0C8041C13607B50D5852AC7970B15C244E6EBA7D54B3086312CF04761D6 │ │ │ │ │ +7D3D75D51F20C371494AB81AB4A9838B20B483B851D01FEF41EA5C0B4755B964 │ │ │ │ │ +EB6E9B178051C556A010994EB88EAE641F4C1A0D7E0F98D5267E18AEF1AEA7E7 │ │ │ │ │ +9030A97DF89AFF621981C33B645FFB5F3BB2065A7661D11B26E0999561DF3580 │ │ │ │ │ +4A76A05DFAF8085525F8D5C01936F03C32E26E72569371C9EA3B8916F9DFC5FC │ │ │ │ │ +6A6F25A0FFDB981BA8B896393D75774D50828E6ADE903C45406E354703A4BC56 │ │ │ │ │ +2C49A47FEAC970DC433E3050C49F7FB945A9705BD8852D2D65D935F244D3B423 │ │ │ │ │ +EFAB84AAAAB8FBAFF50AFF372A533BCCEB5FC273DBADCF715776DF02A5DCBA9A │ │ │ │ │ +FBF265FAB4745D6475B33611EEE1EA95E7584E0BEEC7CA789AA69C8D03D6F8C0 │ │ │ │ │ +5B6844E2B901ACA560C0433B053D134866E567425174E47173679AAD4486A2D3 │ │ │ │ │ +369C29E4DD2CD6ACA1BE80ED8FF0A9C58A616D26E758BD8E6342624EC83FB590 │ │ │ │ │ +BD354B52B60BB054FAFE9AC63E1564FBC721FE8F276B0413EC89A2C85E5ED1B0 │ │ │ │ │ +3A9D83BE62A4488ADE7CE69971A8AF7E5862A4290EEF6F00D4171C7FFB360065 │ │ │ │ │ +92E72BF02BE27161AE0BB5516572A0BDC4F316FFB24B38484AC8D1FD4CD86062 │ │ │ │ │ +A2B5D03CF28C3A679C039A6EFDD4C9DA7E463AD60234C9F6BBEE48D87DD94D85 │ │ │ │ │ +842F495F3E25723718682CE4D6224CBBF4456F03077EDF736D65B9DDAB09470E │ │ │ │ │ +17742D82011FFA96BFE86B96E858F9352FCD20C3D46B77DBDEE54336EC2249EA │ │ │ │ │ +211F6DFFF5BEA1E5192BE1BAC0BDD5EDDB3D56C6F7C6E543561A0B39E5C1B04F │ │ │ │ │ +C683A7516B6E69D682455386DDA709929D621FA434D403E895AA0A77DBE1DFD2 │ │ │ │ │ +0D060DF82378880147ED97C6E8149686FA048710B113760AC1DA4512FF8556B3 │ │ │ │ │ +16E2447485B8C3CD58D0469C4A45FFB4CB0322BB284C02 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -4630,20 +4635,20 @@ │ │ │ │ │ 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 1[42 1[42 42 42 │ │ │ │ │ -3[23 44[{}13 83.022 /CMSL10 rf /Fg 139[62 4[62 4[62 4[62 │ │ │ │ │ -1[62 62 32[62 14[62 50[{}8 119.552 /CMTT12 rf /Fh 136[55 │ │ │ │ │ -1[45 28 34 35 1[42 42 47 68 21 38 1[25 42 38 1[38 42 │ │ │ │ │ -38 38 42 12[59 1[61 11[54 56 63 2[62 6[25 58[{}26 83.022 │ │ │ │ │ -/CMTI10 rf │ │ │ │ │ +3[46 2[33 12[37 2[46 42 26[54 11[23 1[42 2[42 2[42 42 │ │ │ │ │ +42 3[23 44[{}14 83.022 /CMSL10 rf /Fg 139[62 4[62 4[62 │ │ │ │ │ +4[62 1[62 62 32[62 14[62 50[{}8 119.552 /CMTT12 rf /Fh │ │ │ │ │ +136[55 1[45 28 34 35 1[42 42 47 68 21 38 1[25 42 38 1[38 │ │ │ │ │ +42 38 38 42 12[59 1[61 11[54 56 63 2[62 6[25 58[{}26 │ │ │ │ │ +83.022 /CMTI10 rf │ │ │ │ │ %DVIPSBitmapFont: Fi tcrm1000 10 1 │ │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ │ /Dotaccent/cedilla/ogonek/quotesinglbase.ts1 4{/.notdef}repeat │ │ │ │ │ /quotedblbase.ts1/.notdef/.notdef/twelveudash/threequartersemdash │ │ │ │ │ /afii61664.cap/arrowleft/arrowright/tieaccentlowercase/tieaccentcapital │ │ │ │ │ /tieaccentlowercase.new/tieaccentcapital.new/.notdef/afii61664.asc/uni2422 3 │ │ │ │ │ {/.notdef}repeat/dollar/.notdef/.notdef/quotesingle/.notdef/.notdef │ │ │ │ │ @@ -4764,41 +4769,42 @@ │ │ │ │ │ 2397 4912 V 31 w(BY)p 2516 4912 V 31 w(COLUMNS)p Fm(.)0 │ │ │ │ │ 5204 y Fj(1.2)135 b(Protot)l(yp)t(es)46 b(and)f(descriptions)g(of)g │ │ │ │ │ Fg(A2)f Fj(metho)t(ds)0 5407 y Fm(This)28 b(section)f(con)n(tains)f │ │ │ │ │ (brief)i(descriptions)f(including)h(protot)n(yp)r(es)e(of)i(all)f │ │ │ │ │ (metho)r(ds)h(that)g(b)r(elong)f(to)g(the)h Fl(A2)f Fm(ob)5 │ │ │ │ │ b(ject.)1929 5656 y(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fm(2)p 125 100 1245 4 v │ │ │ │ │ -1410 w Fl(A2)27 b Ff(:)37 b Fh(DRAFT)27 b Ff(Jan)n(uary)f(16,)g(2024)p │ │ │ │ │ -2656 100 V 0 390 a Fe(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ │ -573 y Fm(As)21 b(usual,)g(there)f(are)g(four)g(basic)g(metho)r(ds)g(to) │ │ │ │ │ -h(supp)r(ort)f(ob)5 b(ject)20 b(creation,)h(setting)f(default)h │ │ │ │ │ -(\014elds,)h(clearing)d(an)n(y)h(allo)r(cated)0 672 y(data,)27 │ │ │ │ │ -b(and)h(free'ing)f(the)h(ob)5 b(ject.)101 889 y(1.)42 │ │ │ │ │ -b Fl(A2)g(*)h(A2_new)f(\()h(void)f(\))h(;)208 1027 y │ │ │ │ │ -Fm(This)28 b(metho)r(d)g(simply)h(allo)r(cates)e(storage)f(for)h(the)i │ │ │ │ │ -Fl(A2)e Fm(structure)h(and)g(then)h(sets)f(the)g(default)h(\014elds)f │ │ │ │ │ -(b)n(y)g(a)f(call)h(to)208 1127 y Fl(A2)p 301 1127 27 │ │ │ │ │ -4 v 30 w(setDefaultFields)o(\(\))p Fm(.)101 1302 y(2.)42 │ │ │ │ │ -b Fl(void)f(A2_setDefaultFiel)o(ds)c(\()43 b(A2)g(*mtx)f(\))h(;)208 │ │ │ │ │ -1440 y Fm(The)34 b(structure's)h(\014elds)g(are)e(set)i(to)g(default)g │ │ │ │ │ -(v)-5 b(alues:)51 b Fl(type)34 b Fm(=)g Fl(SPOOLES)p │ │ │ │ │ -2618 1440 V 29 w(REAL)p Fm(,)f Fl(n1)h Fm(=)h Fl(inc1)e │ │ │ │ │ -Fm(=)h Fl(n2)h Fm(=)f Fl(inc2)f Fm(=)208 1539 y Fl(nowned)25 │ │ │ │ │ -b Fm(=)i(0)g(and)h Fl(entries)c Fm(=)k Fl(NULL)e Fm(.)208 │ │ │ │ │ -1677 y Fh(Err)l(or)k(che)l(cking:)38 b Fm(If)28 b Fl(mtx)f │ │ │ │ │ -Fm(is)g Fl(NULL)p Fm(,)f(an)i(error)d(message)i(is)g(prin)n(ted)h(and)f │ │ │ │ │ -(the)h(program)e(exits.)101 1852 y(3.)42 b Fl(void)f(A2_clearData)e(\() │ │ │ │ │ -k(A2)g(*mtx)f(\))h(;)208 1990 y Fm(This)32 b(metho)r(d)i(clears)d(the)j │ │ │ │ │ -(ob)5 b(ject)32 b(and)h(free's)f(an)n(y)h(o)n(wned)f(data.)52 │ │ │ │ │ -b(If)33 b Fl(nowned)41 b(>)j(0)32 b Fm(and)h Fl(entries)d │ │ │ │ │ -Fm(is)j(not)g Fl(NULL)p Fm(,)208 2090 y(then)28 b Fl(DVfree\(entries\)) │ │ │ │ │ -21 b Fm(is)28 b(called)f(to)g(free)h(the)g(storage.)35 │ │ │ │ │ -b(It)28 b(calls)e Fl(A2)p 2487 2090 V 31 w(setDefaultFields)o(\(\))p │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fm(2)p 125 100 1228 4 v │ │ │ │ │ +1393 w Fl(A2)26 b Ff(:)37 b Fh(DRAFT)28 b Ff(F)-7 b(ebruary)26 │ │ │ │ │ +b(18,)h(2025)p 2673 100 V 0 390 a Fe(1.2.1)112 b(Basic)38 │ │ │ │ │ +b(metho)s(ds)0 573 y Fm(As)21 b(usual,)g(there)f(are)g(four)g(basic)g │ │ │ │ │ +(metho)r(ds)g(to)h(supp)r(ort)f(ob)5 b(ject)20 b(creation,)h(setting)f │ │ │ │ │ +(default)h(\014elds,)h(clearing)d(an)n(y)h(allo)r(cated)0 │ │ │ │ │ +672 y(data,)27 b(and)h(free'ing)f(the)h(ob)5 b(ject.)101 │ │ │ │ │ +889 y(1.)42 b Fl(A2)g(*)h(A2_new)f(\()h(void)f(\))h(;)208 │ │ │ │ │ +1027 y Fm(This)28 b(metho)r(d)g(simply)h(allo)r(cates)e(storage)f(for)h │ │ │ │ │ +(the)i Fl(A2)e Fm(structure)h(and)g(then)h(sets)f(the)g(default)h │ │ │ │ │ +(\014elds)f(b)n(y)g(a)f(call)h(to)208 1127 y Fl(A2)p │ │ │ │ │ +301 1127 27 4 v 30 w(setDefaultFields)o(\(\))p Fm(.)101 │ │ │ │ │ +1302 y(2.)42 b Fl(void)f(A2_setDefaultFiel)o(ds)c(\()43 │ │ │ │ │ +b(A2)g(*mtx)f(\))h(;)208 1440 y Fm(The)34 b(structure's)h(\014elds)g │ │ │ │ │ +(are)e(set)i(to)g(default)g(v)-5 b(alues:)51 b Fl(type)34 │ │ │ │ │ +b Fm(=)g Fl(SPOOLES)p 2618 1440 V 29 w(REAL)p Fm(,)f │ │ │ │ │ +Fl(n1)h Fm(=)h Fl(inc1)e Fm(=)h Fl(n2)h Fm(=)f Fl(inc2)f │ │ │ │ │ +Fm(=)208 1539 y Fl(nowned)25 b Fm(=)i(0)g(and)h Fl(entries)c │ │ │ │ │ +Fm(=)k Fl(NULL)e Fm(.)208 1677 y Fh(Err)l(or)k(che)l(cking:)38 │ │ │ │ │ +b Fm(If)28 b Fl(mtx)f Fm(is)g Fl(NULL)p Fm(,)f(an)i(error)d(message)i │ │ │ │ │ +(is)g(prin)n(ted)h(and)f(the)h(program)e(exits.)101 1852 │ │ │ │ │ +y(3.)42 b Fl(void)f(A2_clearData)e(\()k(A2)g(*mtx)f(\))h(;)208 │ │ │ │ │ +1990 y Fm(This)32 b(metho)r(d)i(clears)d(the)j(ob)5 b(ject)32 │ │ │ │ │ +b(and)h(free's)f(an)n(y)h(o)n(wned)f(data.)52 b(If)33 │ │ │ │ │ +b Fl(nowned)41 b(>)j(0)32 b Fm(and)h Fl(entries)d Fm(is)j(not)g │ │ │ │ │ +Fl(NULL)p Fm(,)208 2090 y(then)28 b Fl(DVfree\(entries\))21 │ │ │ │ │ +b Fm(is)28 b(called)f(to)g(free)h(the)g(storage.)35 b(It)28 │ │ │ │ │ +b(calls)e Fl(A2)p 2487 2090 V 31 w(setDefaultFields)o(\(\))p │ │ │ │ │ Fm(.)208 2227 y Fh(Err)l(or)k(che)l(cking:)38 b Fm(If)28 │ │ │ │ │ b Fl(mtx)f Fm(is)g Fl(NULL)p Fm(,)f(an)i(error)d(message)i(is)g(prin)n │ │ │ │ │ (ted)h(and)f(the)h(program)e(exits.)101 2403 y(4.)42 │ │ │ │ │ b Fl(void)f(A2_free)g(\()i(A2)g(*mtx)f(\))h(;)208 2540 │ │ │ │ │ y Fm(This)27 b(metho)r(d)h(releases)e(an)n(y)h(storage)f(b)n(y)h(a)g │ │ │ │ │ (call)g(to)h Fl(A2)p 1975 2540 V 30 w(clearData\(\))c │ │ │ │ │ Fm(and)j(then)h(free)f(the)h(space)f(for)g Fl(mtx)p Fm(.)208 │ │ │ │ │ @@ -4833,17 +4839,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 1245 4 v 1411 100 a Fl(A2)26 │ │ │ │ │ -b Ff(:)37 b Fh(DRAFT)111 b Ff(Jan)n(uary)25 b(16,)i(2024)p │ │ │ │ │ -2616 100 V 1245 w Fm(3)101 390 y(6.)42 b Fl(double)f(*)i(A2_row)e(\()i │ │ │ │ │ +TeXDict begin 3 2 bop 83 100 1228 4 v 1393 100 a Fl(A2)27 │ │ │ │ │ +b Ff(:)37 b Fh(DRAFT)110 b Ff(F)-7 b(ebruary)27 b(18,)f(2025)p │ │ │ │ │ +2633 100 V 1228 w Fm(3)101 390 y(6.)42 b Fl(double)f(*)i(A2_row)e(\()i │ │ │ │ │ (A2)g(*mtx,)e(int)i(irow)f(\))h(;)208 541 y Fm(This)27 │ │ │ │ │ b(metho)r(d)h(returns)f(a)g(p)r(oin)n(ter)g(to)h(the)g(leading)f │ │ │ │ │ (elemen)n(t)h(of)f(ro)n(w)g Fl(irow)p Fm(.)208 691 y │ │ │ │ │ Fh(Err)l(or)k(che)l(cking:)41 b Fm(If)29 b Fl(mtx)f Fm(or)g │ │ │ │ │ Fl(entries)e Fm(is)j Fl(NULL)p Fm(,)e(or)h(if)i Fl(irow)d │ │ │ │ │ Fm(is)i(not)f(in)i Fl([0,n1-1])p Fm(,)c(an)i(error)f(message)g(is)i │ │ │ │ │ (prin)n(ted)208 791 y(and)e(the)h(program)e(exits.)101 │ │ │ │ │ @@ -4914,51 +4920,51 @@ │ │ │ │ │ Fm(,)e Fl(ppReal)f Fm(or)i Fl(ppImag)e Fm(is)i Fl(NULL)p │ │ │ │ │ Fm(,)f(or)h(if)g(the)h(matrix)f(is)g(not)h(complex,)f(or)f(if)i │ │ │ │ │ Fl(irow)e Fm(is)h(not)h(in)208 5407 y Fl([0,n1-1])p Fm(,)c(or)j(if)h │ │ │ │ │ Fl(jcol)e Fm(is)h(not)h(in)g Fl([0,n2-1])p Fm(,)c(an)j(error)f(message) │ │ │ │ │ g(is)i(prin)n(ted)f(and)h(the)g(program)d(exits.)p eop │ │ │ │ │ end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fm(4)p 125 100 1245 4 v │ │ │ │ │ -1410 w Fl(A2)27 b Ff(:)37 b Fh(DRAFT)27 b Ff(Jan)n(uary)f(16,)g(2024)p │ │ │ │ │ -2656 100 V 0 390 a Fe(1.2.3)112 b(Initialize)38 b(metho)s(ds)101 │ │ │ │ │ -574 y Fm(1.)k Fl(void)f(A2_init)g(\()i(A2)g(*mtx,)f(int)g(type,)f(int)i │ │ │ │ │ -(n1,)f(int)h(n2,)f(int)g(inc1,)g(int)g(inc2,)861 674 │ │ │ │ │ -y(double)f(*entries)g(\))i(;)208 812 y Fm(This)30 b(is)h(the)g(basic)f │ │ │ │ │ -(initializer)h(metho)r(d.)47 b(W)-7 b(e)31 b(require)e(that)i │ │ │ │ │ -Fl(mtx)f Fm(not)h(b)r(e)g Fl(NULL)p Fm(,)e Fl(type)g │ │ │ │ │ -Fm(b)r(e)j(either)e Fl(SPOOLES)p 3702 812 27 4 v 29 w(REAL)208 │ │ │ │ │ -912 y Fm(or)d Fl(SPOOLES)p 623 912 V 29 w(COMPLEX)p Fm(,)e │ │ │ │ │ -Fl(n1)j Fm(and)g Fl(n2)g Fm(b)r(oth)h(b)r(e)g(p)r(ositiv)n(e,)f(and)h │ │ │ │ │ -(b)r(oth)f Fl(inc1)f Fm(and)i Fl(inc2)e Fm(b)r(oth)i(b)r(e)f(p)r │ │ │ │ │ -(ositiv)n(e)g(and)h(that)208 1012 y(one)g(of)h(them)h(b)r(e)f(equal)g │ │ │ │ │ -(to)g(one.)44 b(Also,)30 b(w)n(e)g(only)f(initialize)i(a)e(full)i │ │ │ │ │ -(matrix,)f(i.e.,)h(one)f(of)g Fl(inc1)42 b(=)h(1)30 b │ │ │ │ │ -Fm(and)f Fl(inc2)42 b(=)208 1111 y(nrow)26 b Fm(or)g │ │ │ │ │ -Fl(inc1)42 b(=)h(ncol)26 b Fm(and)i Fl(inc2)42 b(=)h(1)27 │ │ │ │ │ -b Fm(m)n(ust)h(hold.)208 1250 y(The)g(ob)5 b(ject)29 │ │ │ │ │ -b(is)f(\014rst)g(cleared)g(with)h(a)f(call)h(to)f Fl(A2)p │ │ │ │ │ -1780 1250 V 31 w(clearData\(\))p Fm(.)35 b(If)29 b Fl(entries)d │ │ │ │ │ -Fm(is)i Fl(NULL)f Fm(then)i Fl(n1*n2)e Fm(new)i(en)n(tries)208 │ │ │ │ │ -1350 y(are)h(found,)k Fl(mtx->entries)27 b Fm(is)32 b(set)f(to)h(this)g │ │ │ │ │ -(address)f(and)h Fl(nowned)d Fm(is)j(set)g(to)g Fl(n1*n2)p │ │ │ │ │ -Fm(.)48 b(If)32 b Fl(entries)d Fm(is)j(not)g Fl(NULL)p │ │ │ │ │ -Fm(,)208 1449 y(then)c Fl(mtx->entries)22 b Fm(is)28 │ │ │ │ │ -b(set)f(to)h Fl(entries)d Fm(and)i Fl(nowned)e Fm(is)j(set)f(to)h │ │ │ │ │ -(zero.)208 1588 y Fh(Err)l(or)e(che)l(cking:)37 b Fm(If)25 │ │ │ │ │ -b Fl(mtx)d Fm(is)i Fl(NULL)p Fm(,)f(or)g(if)h Fl(n1)p │ │ │ │ │ -Fm(,)g Fl(n2)p Fm(,)g Fl(inc1)f Fm(or)g Fl(inc2)f Fm(are)h(less)h(than) │ │ │ │ │ -g(or)f(equal)g(to)h(zero,)g(or)f(if)h(the)h(matrix)208 │ │ │ │ │ -1688 y(is)k(not)h(full)h(matrix)e(\(i.e.,)i Fl(inc1)d │ │ │ │ │ -Fm(m)n(ust)i(b)r(e)g Fl(1)f Fm(and)h Fl(inc2)e Fm(m)n(ust)i(b)r(e)g │ │ │ │ │ -Fl(n1)p Fm(,)g Fh(or)g Fl(inc1)f Fm(m)n(ust)h(b)r(e)g │ │ │ │ │ -Fl(n2)f Fm(and)h Fl(inc2)e Fm(m)n(ust)i(b)r(e)208 1787 │ │ │ │ │ -y Fl(1)p Fm(\),)d(an)g(error)f(message)g(is)i(prin)n(ted)f(and)h(zero)e │ │ │ │ │ -(is)i(returned.)101 1965 y(2.)42 b Fl(void)f(A2_subA2)g(\()i(A2)g │ │ │ │ │ -(*mtxA,)e(A2)i(*mtxB,)905 2065 y(int)f(firstrow,)e(int)i(lastrow,)f │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fm(4)p 125 100 1228 4 v │ │ │ │ │ +1393 w Fl(A2)26 b Ff(:)37 b Fh(DRAFT)28 b Ff(F)-7 b(ebruary)26 │ │ │ │ │ +b(18,)h(2025)p 2673 100 V 0 390 a Fe(1.2.3)112 b(Initialize)38 │ │ │ │ │ +b(metho)s(ds)101 574 y Fm(1.)k Fl(void)f(A2_init)g(\()i(A2)g(*mtx,)f │ │ │ │ │ +(int)g(type,)f(int)i(n1,)f(int)h(n2,)f(int)g(inc1,)g(int)g(inc2,)861 │ │ │ │ │ +674 y(double)f(*entries)g(\))i(;)208 812 y Fm(This)30 │ │ │ │ │ +b(is)h(the)g(basic)f(initializer)h(metho)r(d.)47 b(W)-7 │ │ │ │ │ +b(e)31 b(require)e(that)i Fl(mtx)f Fm(not)h(b)r(e)g Fl(NULL)p │ │ │ │ │ +Fm(,)e Fl(type)g Fm(b)r(e)j(either)e Fl(SPOOLES)p 3702 │ │ │ │ │ +812 27 4 v 29 w(REAL)208 912 y Fm(or)d Fl(SPOOLES)p 623 │ │ │ │ │ +912 V 29 w(COMPLEX)p Fm(,)e Fl(n1)j Fm(and)g Fl(n2)g │ │ │ │ │ +Fm(b)r(oth)h(b)r(e)g(p)r(ositiv)n(e,)f(and)h(b)r(oth)f │ │ │ │ │ +Fl(inc1)f Fm(and)i Fl(inc2)e Fm(b)r(oth)i(b)r(e)f(p)r(ositiv)n(e)g(and) │ │ │ │ │ +h(that)208 1012 y(one)g(of)h(them)h(b)r(e)f(equal)g(to)g(one.)44 │ │ │ │ │ +b(Also,)30 b(w)n(e)g(only)f(initialize)i(a)e(full)i(matrix,)f(i.e.,)h │ │ │ │ │ +(one)f(of)g Fl(inc1)42 b(=)h(1)30 b Fm(and)f Fl(inc2)42 │ │ │ │ │ +b(=)208 1111 y(nrow)26 b Fm(or)g Fl(inc1)42 b(=)h(ncol)26 │ │ │ │ │ +b Fm(and)i Fl(inc2)42 b(=)h(1)27 b Fm(m)n(ust)h(hold.)208 │ │ │ │ │ +1250 y(The)g(ob)5 b(ject)29 b(is)f(\014rst)g(cleared)g(with)h(a)f(call) │ │ │ │ │ +h(to)f Fl(A2)p 1780 1250 V 31 w(clearData\(\))p Fm(.)35 │ │ │ │ │ +b(If)29 b Fl(entries)d Fm(is)i Fl(NULL)f Fm(then)i Fl(n1*n2)e │ │ │ │ │ +Fm(new)i(en)n(tries)208 1350 y(are)h(found,)k Fl(mtx->entries)27 │ │ │ │ │ +b Fm(is)32 b(set)f(to)h(this)g(address)f(and)h Fl(nowned)d │ │ │ │ │ +Fm(is)j(set)g(to)g Fl(n1*n2)p Fm(.)48 b(If)32 b Fl(entries)d │ │ │ │ │ +Fm(is)j(not)g Fl(NULL)p Fm(,)208 1449 y(then)c Fl(mtx->entries)22 │ │ │ │ │ +b Fm(is)28 b(set)f(to)h Fl(entries)d Fm(and)i Fl(nowned)e │ │ │ │ │ +Fm(is)j(set)f(to)h(zero.)208 1588 y Fh(Err)l(or)e(che)l(cking:)37 │ │ │ │ │ +b Fm(If)25 b Fl(mtx)d Fm(is)i Fl(NULL)p Fm(,)f(or)g(if)h │ │ │ │ │ +Fl(n1)p Fm(,)g Fl(n2)p Fm(,)g Fl(inc1)f Fm(or)g Fl(inc2)f │ │ │ │ │ +Fm(are)h(less)h(than)g(or)f(equal)g(to)h(zero,)g(or)f(if)h(the)h │ │ │ │ │ +(matrix)208 1688 y(is)k(not)h(full)h(matrix)e(\(i.e.,)i │ │ │ │ │ +Fl(inc1)d Fm(m)n(ust)i(b)r(e)g Fl(1)f Fm(and)h Fl(inc2)e │ │ │ │ │ +Fm(m)n(ust)i(b)r(e)g Fl(n1)p Fm(,)g Fh(or)g Fl(inc1)f │ │ │ │ │ +Fm(m)n(ust)h(b)r(e)g Fl(n2)f Fm(and)h Fl(inc2)e Fm(m)n(ust)i(b)r(e)208 │ │ │ │ │ +1787 y Fl(1)p Fm(\),)d(an)g(error)f(message)g(is)i(prin)n(ted)f(and)h │ │ │ │ │ +(zero)e(is)i(returned.)101 1965 y(2.)42 b Fl(void)f(A2_subA2)g(\()i(A2) │ │ │ │ │ +g(*mtxA,)e(A2)i(*mtxB,)905 2065 y(int)f(firstrow,)e(int)i(lastrow,)f │ │ │ │ │ (int)h(firstcol,)e(int)i(lastcol)f(\))i(;)208 2204 y │ │ │ │ │ Fm(This)27 b(initializer)g(metho)r(d)h(mak)n(es)f(the)h(ob)5 │ │ │ │ │ b(ject)27 b Fl(mtxA)f Fm(p)r(oin)n(t)i(in)n(to)f(a)h(submatrix)f(of)g │ │ │ │ │ (ob)5 b(ject)28 b Fl(mtxB)p Fm(,)e(as)208 2415 y Fl(A\(0:lastrow-fir)o │ │ │ │ │ (str)o(ow)o(,0)o(:la)o(st)o(col)o(-f)o(ir)o(stc)o(ol)o(\))38 │ │ │ │ │ b(=)43 b(B\(firstrow:lastr)o(ow)o(,)37 b(firstcol:lastcol\))208 │ │ │ │ │ 2626 y Fm(Note,)20 b Fl(firstrow)p Fm(,)d Fl(lastrow)p │ │ │ │ │ @@ -5008,17 +5014,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 1245 4 v 1411 100 a Fl(A2)26 │ │ │ │ │ -b Ff(:)37 b Fh(DRAFT)111 b Ff(Jan)n(uary)25 b(16,)i(2024)p │ │ │ │ │ -2616 100 V 1245 w Fm(5)101 390 y(4.)42 b Fl(void)f(A2_applyQT)f(\()j │ │ │ │ │ +TeXDict begin 5 4 bop 83 100 1228 4 v 1393 100 a Fl(A2)27 │ │ │ │ │ +b Ff(:)37 b Fh(DRAFT)110 b Ff(F)-7 b(ebruary)27 b(18,)f(2025)p │ │ │ │ │ +2633 100 V 1228 w Fm(5)101 390 y(4.)42 b Fl(void)f(A2_applyQT)f(\()j │ │ │ │ │ (A2)g(*Y,)f(A2)h(*A,)f(A2)h(*X,)f(DV)h(*workDV,)d(int)j(msglvl,)d(FILE) │ │ │ │ │ i(*msgFile)f(\))i(;)208 522 y Fm(This)22 b(metho)r(d)h(computes)f │ │ │ │ │ Fk(Y)42 b Fm(=)22 b Fk(Q)1296 491 y Fc(T)1348 522 y Fk(X)29 │ │ │ │ │ b Fm(\(if)23 b(real\))f(or)f Fk(Y)42 b Fm(=)22 b Fk(Q)2077 │ │ │ │ │ 491 y Fc(H)2140 522 y Fk(X)29 b Fm(\(if)23 b(complex\),)g(where)f │ │ │ │ │ Fk(Q)g Fm(is)g(stored)g(in)g(Householder)208 621 y(v)n(ectors)d(inside) │ │ │ │ │ j Fk(A)p Fm(.)35 b(W)-7 b(e)21 b(assume)g(that)h Fk(A)p │ │ │ │ │ @@ -5086,23 +5092,23 @@ │ │ │ │ │ 5176 y Fm(This)27 b(metho)r(d)h(returns)f(the)h(one-norm)e(of)i(ro)n(w) │ │ │ │ │ e Fl(irow)g Fm(of)i(the)g(matrix.)208 5308 y Fh(Err)l(or)d(che)l │ │ │ │ │ (cking:)36 b Fm(If)22 b Fl(mtx)f Fm(is)h Fl(NULL)p Fm(,)e(or)i │ │ │ │ │ Fl(irow)e Fm(is)i(not)g(in)g Fl([0,n1-1])p Fm(,)e(an)i(error)e(message) │ │ │ │ │ h(is)h(prin)n(ted)g(and)g(the)g(program)208 5407 y(exits.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 6 6 │ │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fm(6)p 125 100 1245 4 v │ │ │ │ │ -1410 w Fl(A2)27 b Ff(:)37 b Fh(DRAFT)27 b Ff(Jan)n(uary)f(16,)g(2024)p │ │ │ │ │ -2656 100 V 101 390 a Fm(9.)42 b Fl(double)f(A2_twoNormOfRow)c(\()43 │ │ │ │ │ -b(A2)g(*mtx,)e(int)i(irow)f(\))h(;)208 521 y Fm(This)27 │ │ │ │ │ -b(metho)r(d)h(returns)f(the)h(t)n(w)n(o-norm)e(of)h(ro)n(w)g │ │ │ │ │ -Fl(irow)f Fm(of)h(the)h(matrix.)208 652 y Fh(Err)l(or)d(che)l(cking:)36 │ │ │ │ │ -b Fm(If)22 b Fl(mtx)f Fm(is)h Fl(NULL)p Fm(,)e(or)i Fl(irow)e │ │ │ │ │ -Fm(is)i(not)g(in)g Fl([0,n1-1])p Fm(,)e(an)i(error)e(message)h(is)h │ │ │ │ │ -(prin)n(ted)g(and)g(the)g(program)208 751 y(exits.)60 │ │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fm(6)p 125 100 1228 4 v │ │ │ │ │ +1393 w Fl(A2)26 b Ff(:)37 b Fh(DRAFT)28 b Ff(F)-7 b(ebruary)26 │ │ │ │ │ +b(18,)h(2025)p 2673 100 V 101 390 a Fm(9.)42 b Fl(double)f │ │ │ │ │ +(A2_twoNormOfRow)c(\()43 b(A2)g(*mtx,)e(int)i(irow)f(\))h(;)208 │ │ │ │ │ +521 y Fm(This)27 b(metho)r(d)h(returns)f(the)h(t)n(w)n(o-norm)e(of)h │ │ │ │ │ +(ro)n(w)g Fl(irow)f Fm(of)h(the)h(matrix.)208 652 y Fh(Err)l(or)d(che)l │ │ │ │ │ +(cking:)36 b Fm(If)22 b Fl(mtx)f Fm(is)h Fl(NULL)p Fm(,)e(or)i │ │ │ │ │ +Fl(irow)e Fm(is)i(not)g(in)g Fl([0,n1-1])p Fm(,)e(an)i(error)e(message) │ │ │ │ │ +h(is)h(prin)n(ted)g(and)g(the)g(program)208 751 y(exits.)60 │ │ │ │ │ 914 y(10.)41 b Fl(double)g(A2_infinityNorm)o(OfR)o(ow)c(\()43 │ │ │ │ │ b(A2)g(*mtx,)e(int)i(irow)f(\))h(;)208 1044 y Fm(This)27 │ │ │ │ │ b(metho)r(d)h(returns)f(the)h(in\014nit)n(y-norm)f(of)h(ro)n(w)e │ │ │ │ │ Fl(irow)g Fm(of)i(the)g(matrix.)208 1175 y Fh(Err)l(or)d(che)l(cking:) │ │ │ │ │ 36 b Fm(If)22 b Fl(mtx)f Fm(is)h Fl(NULL)p Fm(,)e(or)i │ │ │ │ │ Fl(irow)e Fm(is)i(not)g(in)g Fl([0,n1-1])p Fm(,)e(an)i(error)e(message) │ │ │ │ │ h(is)h(prin)n(ted)g(and)g(the)g(program)208 1275 y(exits.)0 │ │ │ │ │ @@ -5169,17 +5175,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 1245 4 v 1411 100 a Fl(A2)26 │ │ │ │ │ -b Ff(:)37 b Fh(DRAFT)111 b Ff(Jan)n(uary)25 b(16,)i(2024)p │ │ │ │ │ -2616 100 V 1245 w Fm(7)208 390 y Fh(Err)l(or)j(che)l(cking:)38 │ │ │ │ │ +TeXDict begin 7 6 bop 83 100 1228 4 v 1393 100 a Fl(A2)27 │ │ │ │ │ +b Ff(:)37 b Fh(DRAFT)110 b Ff(F)-7 b(ebruary)27 b(18,)f(2025)p │ │ │ │ │ +2633 100 V 1228 w Fm(7)208 390 y Fh(Err)l(or)k(che)l(cking:)38 │ │ │ │ │ b Fm(If)28 b Fl(mtx)f Fm(is)g Fl(NULL)f Fm(an)i(error)d(message)h(is)i │ │ │ │ │ (prin)n(ted)f(and)h(the)g(program)d(exits.)101 551 y(3.)42 │ │ │ │ │ b Fl(int)g(A2_rowMajor)d(\()k(A2)g(*mtx)f(\))h(;)208 │ │ │ │ │ 682 y Fm(This)27 b(metho)r(d)h(returns)f(1)g(if)h(the)g(storage)e(is)i │ │ │ │ │ (ro)n(w)e(ma)5 b(jor,)26 b(otherwise)h(it)h(returns)f(zero.)208 │ │ │ │ │ 812 y Fh(Err)l(or)j(che)l(cking:)38 b Fm(If)28 b Fl(mtx)f │ │ │ │ │ Fm(is)g Fl(NULL)p Fm(,)f(an)i(error)d(message)i(is)g(prin)n(ted)h(and)f │ │ │ │ │ @@ -5253,19 +5259,19 @@ │ │ │ │ │ Fm(of)i(the)g(matrix)f(with)h(the)g(en)n(tries)f(in)h(the)g │ │ │ │ │ Fl(row[])d Fm(v)n(ector.)208 5308 y Fh(Err)l(or)k(che)l(cking:)39 │ │ │ │ │ b Fm(If)27 b Fl(mtx)p Fm(,)f Fl(entries)e Fm(or)j Fl(row[])e │ │ │ │ │ Fm(are)h Fl(NULL)p Fm(,)f(or)h(if)i Fl(irow)d Fm(is)i(not)g(in)h │ │ │ │ │ Fl([0,n1-1])p Fm(,)c(an)i(error)g(message)f(is)208 5407 │ │ │ │ │ y(prin)n(ted)i(and)g(the)h(program)e(exits.)p eop end │ │ │ │ │ %%Page: 8 8 │ │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fm(8)p 125 100 1245 4 v │ │ │ │ │ -1410 w Fl(A2)27 b Ff(:)37 b Fh(DRAFT)27 b Ff(Jan)n(uary)f(16,)g(2024)p │ │ │ │ │ -2656 100 V 60 390 a Fm(13.)41 b Fl(void)g(A2_setRowDV)f(\()j(A2)f │ │ │ │ │ -(*mtx,)g(DV)h(rowDV,)e(int)h(irow)g(\))h(;)208 520 y │ │ │ │ │ -Fm(This)27 b(metho)r(d)h(\014lls)g(ro)n(w)e Fl(irow)g │ │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fm(8)p 125 100 1228 4 v │ │ │ │ │ +1393 w Fl(A2)26 b Ff(:)37 b Fh(DRAFT)28 b Ff(F)-7 b(ebruary)26 │ │ │ │ │ +b(18,)h(2025)p 2673 100 V 60 390 a Fm(13.)41 b Fl(void)g(A2_setRowDV)f │ │ │ │ │ +(\()j(A2)f(*mtx,)g(DV)h(rowDV,)e(int)h(irow)g(\))h(;)208 │ │ │ │ │ +520 y Fm(This)27 b(metho)r(d)h(\014lls)g(ro)n(w)e Fl(irow)g │ │ │ │ │ Fm(of)i(the)g(matrix)f(with)h(the)g(en)n(tries)f(in)h(the)g │ │ │ │ │ Fl(rowDV)d Fm(ob)5 b(ject.)208 649 y Fh(Err)l(or)32 b(che)l(cking:)44 │ │ │ │ │ b Fm(If)31 b Fl(mtx)e Fm(or)h Fl(rowDV)e Fm(are)i Fl(NULL)p │ │ │ │ │ Fm(,)e(or)i(if)h(the)f(matrix)g(is)g(not)h(real,)f(or)f(if)i │ │ │ │ │ Fl(irow)e Fm(is)h(not)h(in)f Fl([0,n1-1])p Fm(,)208 749 │ │ │ │ │ y(an)d(error)e(message)i(is)g(prin)n(ted)h(and)f(the)h(program)e │ │ │ │ │ (exits.)60 908 y(14.)41 b Fl(void)g(A2_setRowZV)f(\()j(A2)f(*mtx,)g(ZV) │ │ │ │ │ @@ -5338,17 +5344,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 1245 4 v 1411 100 a Fl(A2)26 │ │ │ │ │ -b Ff(:)37 b Fh(DRAFT)111 b Ff(Jan)n(uary)25 b(16,)i(2024)p │ │ │ │ │ -2616 100 V 1245 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 1228 4 v 1393 100 a Fl(A2)27 │ │ │ │ │ +b Ff(:)37 b Fh(DRAFT)110 b Ff(F)-7 b(ebruary)27 b(18,)f(2025)p │ │ │ │ │ +2633 100 V 1228 w Fm(9)60 390 y(23.)41 b Fl(void)g(A2_sub)h(\()h(A2)g │ │ │ │ │ (*mtxA,)e(A2)h(*mtxB)g(\))h(;)208 523 y Fm(This)27 b(metho)r(d)h │ │ │ │ │ (subtracts)e(en)n(tries)h(in)h(matrix)e Fl(mtxB)g Fm(from)h(en)n(tries) │ │ │ │ │ g(in)g(matrix)g Fl(mtxA)p Fm(.)f(Note,)h Fl(mtxA)f Fm(and)h │ │ │ │ │ Fl(mtxB)f Fm(need)208 622 y(not)34 b(b)r(e)h(of)g(the)f(same)g(size,)i │ │ │ │ │ (the)f(leading)f Fl(min\(mtxA->n1,mtxB)o(->)o(n1\))28 │ │ │ │ │ b Fm(ro)n(ws)33 b(and)h Fl(min\(mtxA->n2,mtx)o(B->)o(n2)o(\))208 │ │ │ │ │ 722 y Fm(columns)27 b(are)f(subtracted.)208 855 y Fh(Err)l(or)k(che)l │ │ │ │ │ @@ -5435,21 +5441,21 @@ │ │ │ │ │ (in)i(reading)208 5275 y(the)i(data,)f(the)h(v)-5 b(alue)27 │ │ │ │ │ b Fl(1)g Fm(is)h(returned.)36 b(If)28 b(an)g(IO)f(error)f(is)h(encoun)n │ │ │ │ │ (tered)g(from)g Fl(fread)p Fm(,)f(zero)g(is)i(returned.)208 │ │ │ │ │ 5407 y Fh(Err)l(or)i(che)l(cking:)38 b Fm(If)28 b Fl(mtx)f │ │ │ │ │ Fm(or)g Fl(fp)f Fm(are)h Fl(NULL)p Fm(,)f(an)h(error)f(message)g(is)i │ │ │ │ │ (prin)n(ted)f(and)h(zero)e(is)i(returned.)p eop end │ │ │ │ │ %%Page: 10 10 │ │ │ │ │ -TeXDict begin 10 9 bop 0 100 a Fm(10)p 166 100 1224 4 │ │ │ │ │ -v 1389 w Fl(A2)27 b Ff(:)37 b Fh(DRAFT)27 b Ff(Jan)n(uary)e(16,)i(2024) │ │ │ │ │ -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 │ │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fm(10)p 166 100 1207 4 │ │ │ │ │ +v 1371 w Fl(A2)27 b Ff(:)37 b Fh(DRAFT)27 b Ff(F)-7 b(ebruary)27 │ │ │ │ │ +b(18,)g(2025)p 2694 100 V 101 390 a Fm(4.)42 b Fl(int)g(A2_writeToFile) │ │ │ │ │ +c(\()43 b(A2)g(*mtx,)e(char)h(*fn)g(\))i(;)208 522 y │ │ │ │ │ +Fm(This)31 b(metho)r(d)h(writes)f(a)g Fl(A2)g Fm(ob)5 │ │ │ │ │ +b(ject)31 b(to)h(a)f(\014le.)49 b(It)32 b(tries)f(to)g(op)r(en)h(the)g │ │ │ │ │ +(\014le)g(and)f(if)h(it)g(is)f(successful,)i(it)f(then)g(calls)208 │ │ │ │ │ 622 y Fl(A2)p 301 622 27 4 v 30 w(writeFromFormatt)o(edF)o(il)o(e\(\)) │ │ │ │ │ 24 b Fm(or)29 b Fl(A2)p 1600 622 V 31 w(writeFromBinaryF)o(ile)o(\(\))o │ │ │ │ │ Fm(,)d(closes)j(the)i(\014le)g(and)f(returns)g(the)h(v)-5 │ │ │ │ │ b(alue)208 722 y(returned)27 b(from)g(the)h(called)f(routine.)208 │ │ │ │ │ 854 y Fh(Err)l(or)i(che)l(cking:)38 b Fm(If)27 b Fl(mtx)e │ │ │ │ │ Fm(or)g Fl(fn)h Fm(are)g Fl(NULL)p Fm(,)f(or)g(if)i Fl(fn)f │ │ │ │ │ Fm(is)g(not)g(of)h(the)g(form)f Fl(*.a2f)e Fm(\(for)i(a)g(formatted)h │ │ │ │ │ @@ -5522,17 +5528,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 1224 4 v 1390 100 a Fl(A2)27 │ │ │ │ │ -b Ff(:)37 b Fh(DRAFT)110 b Ff(Jan)n(uary)25 b(16,)i(2024)p │ │ │ │ │ -2595 100 V 1224 w Fm(11)307 390 y Fi(\210)42 b Fm(The)28 │ │ │ │ │ +TeXDict begin 11 10 bop 83 100 1207 4 v 1372 100 a Fl(A2)27 │ │ │ │ │ +b Ff(:)37 b Fh(DRAFT)110 b Ff(F)-7 b(ebruary)27 b(18,)g(2025)p │ │ │ │ │ +2613 100 V 1207 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 16, 2024 │ │ │ │ │ │ + 2 A2 : DRAFT February 18, 2025 │ │ │ │ │ │ 1.2.1 Basic methods │ │ │ │ │ │ Asusual, there are four basic methods to support object creation, setting default fields, clearing any allocated │ │ │ │ │ │ data, and free’ing the object. │ │ │ │ │ │ 1. A2 * A2_new ( void ) ; │ │ │ │ │ │ This method simply allocates storage for the A2 structure and then sets the default fields by a call to │ │ │ │ │ │ A2 setDefaultFields(). │ │ │ │ │ │ 2. void A2_setDefaultFields ( A2 *mtx ) ; │ │ │ │ │ │ @@ -56,15 +56,15 @@ │ │ │ │ │ │ 4. int A2_inc2 ( A2 *mtx ) ; │ │ │ │ │ │ This method returns the secondary increment, the stride in memory (with respect to real or complex │ │ │ │ │ │ entries) between adjacent entries in the same row. │ │ │ │ │ │ Error checking: If mtx is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 5. double * A2_entries ( A2 *mtx ) ; │ │ │ │ │ │ This method returns a pointer to the base address of the entries. │ │ │ │ │ │ Error checking: If mtx is NULL, an error message is printed and the program exits. │ │ │ │ │ │ - A2 : DRAFT January 16, 2024 3 │ │ │ │ │ │ + A2 : DRAFT February 18, 2025 3 │ │ │ │ │ │ 6. double * A2_row ( A2 *mtx, int irow ) ; │ │ │ │ │ │ This method returns a pointer to the leading element of row irow. │ │ │ │ │ │ Error checking: If mtx or entries is NULL, or if irow is not in [0,n1-1], an error message is printed │ │ │ │ │ │ and the program exits. │ │ │ │ │ │ 7. double * A2_column ( A2 *mtx, int jcol ) ; │ │ │ │ │ │ This method returns a pointer to the leading element of column jcol. │ │ │ │ │ │ Error checking: If mtx or entries is NULL, or if jcol is not in [0,n2-1], an error message is printed │ │ │ │ │ │ @@ -93,15 +93,15 @@ │ │ │ │ │ │ or if jcol is not in [0,n2-1], an error message is printed and the program exits. │ │ │ │ │ │ 13. void A2_pointerToComplexEntry ( A2 *mtx, int irow, int jcol, │ │ │ │ │ │ double **ppReal, double **ppImag ) ; │ │ │ │ │ │ This method sets *ppReal to the pointer to the real part of the (irow,jcol) entry, and sets *ppImag │ │ │ │ │ │ to the pointer to the imaginary part of the (irow,jcol) entry. │ │ │ │ │ │ Error checking: If mtx, ppReal or ppImag is NULL, or if the matrix is not complex, or if irow is not in │ │ │ │ │ │ [0,n1-1], or if jcol is not in [0,n2-1], an error message is printed and the program exits. │ │ │ │ │ │ - 4 A2 : DRAFT January 16, 2024 │ │ │ │ │ │ + 4 A2 : DRAFT February 18, 2025 │ │ │ │ │ │ 1.2.3 Initialize methods │ │ │ │ │ │ 1. void A2_init ( A2 *mtx, int type, int n1, int n2, int inc1, int inc2, │ │ │ │ │ │ double *entries ) ; │ │ │ │ │ │ This is the basic initializer method. We require that mtx not be NULL, type be either SPOOLES REAL │ │ │ │ │ │ or SPOOLES COMPLEX, n1 and n2 both be positive, and both inc1 and inc2 both be positive and that │ │ │ │ │ │ one of them be equal to one. Also, we only initialize a full matrix, i.e., one of inc1 = 1 and inc2 = │ │ │ │ │ │ nrow or inc1 = ncol and inc2 = 1 must hold. │ │ │ │ │ │ @@ -134,15 +134,15 @@ │ │ │ │ │ │ Error checking: If A or workDV is NULL, or if msglvl > 0 and msgFile if NULL, an error message is │ │ │ │ │ │ printed and the program exits. │ │ │ │ │ │ 3. void A2_computeQ ( A2 *Q, A2 *A, DV *workDV, int msglvl, FILE *msgFile ) ; │ │ │ │ │ │ This method computes Q from the A = QR factorization computed in A2 QRreduce(). Note: A and Q │ │ │ │ │ │ must be column major. │ │ │ │ │ │ Error checking: If Q, A or workDV is NULL, or if msglvl > 0 and msgFile if NULL, an error message is │ │ │ │ │ │ printed and the program exits. │ │ │ │ │ │ - A2 : DRAFT January 16, 2024 5 │ │ │ │ │ │ + A2 : DRAFT February 18, 2025 5 │ │ │ │ │ │ 4. void A2_applyQT ( A2 *Y, A2 *A, A2 *X, DV *workDV, int msglvl, FILE *msgFile ) ; │ │ │ │ │ │ T H │ │ │ │ │ │ This method computes Y = Q X (if real) or Y = Q X (if complex), where Q is stored in Householder │ │ │ │ │ │ vectors inside A. We assume that A2 reduce() has been previously called with A as an argument. Since │ │ │ │ │ │ Y is computed column-by-column, X and Y can be the same A2 object. The workDV object is resized │ │ │ │ │ │ as necessary. Note: Y, A and X must be column major. │ │ │ │ │ │ Error checking: If Y, A, X or workDV is NULL, or if msglvl > 0 and msgFile if NULL, or if Y, A or X is │ │ │ │ │ │ @@ -174,15 +174,15 @@ │ │ │ │ │ │ This method returns the infinity-norm of column jcol of the matrix. │ │ │ │ │ │ Error checking: If mtx is NULL, or jcol is not in [0,n2-1], an error message is printed and the program │ │ │ │ │ │ exits. │ │ │ │ │ │ 8. double A2_oneNormOfRow ( A2 *mtx, int irow ) ; │ │ │ │ │ │ This method returns the one-norm of row irow of the matrix. │ │ │ │ │ │ Error checking: If mtx is NULL, or irow is not in [0,n1-1], an error message is printed and the program │ │ │ │ │ │ exits. │ │ │ │ │ │ - 6 A2 : DRAFT January 16, 2024 │ │ │ │ │ │ + 6 A2 : DRAFT February 18, 2025 │ │ │ │ │ │ 9. double A2_twoNormOfRow ( A2 *mtx, int irow ) ; │ │ │ │ │ │ This method returns the two-norm of row irow of the matrix. │ │ │ │ │ │ Error checking: If mtx is NULL, or irow is not in [0,n1-1], an error message is printed and the program │ │ │ │ │ │ exits. │ │ │ │ │ │ 10. double A2_infinityNormOfRow ( A2 *mtx, int irow ) ; │ │ │ │ │ │ This method returns the infinity-norm of row irow of the matrix. │ │ │ │ │ │ Error checking: If mtx is NULL, or irow is not in [0,n1-1], an error message is printed and the program │ │ │ │ │ │ @@ -213,15 +213,15 @@ │ │ │ │ │ │ 1.2.7 Utility methods │ │ │ │ │ │ 1. int A2_sizeOf ( A2 *mtx ) ; │ │ │ │ │ │ This method returns the number of bytes owned by this object. │ │ │ │ │ │ Error checking: If mtx is NULL an error message is printed and the program exits. │ │ │ │ │ │ 2. void A2_shiftBase ( A2 *mtx, int rowoff, int coloff ) ; │ │ │ │ │ │ This method is used to shift the base of the entries and adjust dimensions of the A2 object. │ │ │ │ │ │ mtx(0:n1-rowoff-1,0:n2-coloff-1) := mtx(rowoff:n1-1,coloff:n2-1) │ │ │ │ │ │ - A2 : DRAFT January 16, 2024 7 │ │ │ │ │ │ + A2 : DRAFT February 18, 2025 7 │ │ │ │ │ │ Error checking: If mtx is NULL an error message is printed and the program exits. │ │ │ │ │ │ 3. int A2_rowMajor ( A2 *mtx ) ; │ │ │ │ │ │ This method returns 1 if the storage is row major, otherwise it returns zero. │ │ │ │ │ │ Error checking: If mtx is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 4. int A2_columnMajor ( A2 *mtx ) ; │ │ │ │ │ │ This method returns 1 if the storage is column major, otherwise it returns zero. │ │ │ │ │ │ Error checking: If mtx is NULL, an error message is printed and the program exits. │ │ │ │ │ │ @@ -253,15 +253,15 @@ │ │ │ │ │ │ This method fills the colZV object with column jcol of the matrix. │ │ │ │ │ │ Error checking: If mtx or colZV are NULL, or if the matrix is not complex, or if jcol is not in [0,n2-1], │ │ │ │ │ │ an error message is printed and the program exits. │ │ │ │ │ │ 12. void A2_setRow ( A2 *mtx, double row[], int irow ) ; │ │ │ │ │ │ This method fills row irow of the matrix with the entries in the row[] vector. │ │ │ │ │ │ Error checking: If mtx, entries or row[] are NULL, or if irow is not in [0,n1-1], an error message is │ │ │ │ │ │ printed and the program exits. │ │ │ │ │ │ - 8 A2 : DRAFT January 16, 2024 │ │ │ │ │ │ + 8 A2 : DRAFT February 18, 2025 │ │ │ │ │ │ 13. void A2_setRowDV ( A2 *mtx, DV rowDV, int irow ) ; │ │ │ │ │ │ This method fills row irow of the matrix with the entries in the rowDV object. │ │ │ │ │ │ Error checking: If mtx or rowDV are NULL, or if the matrix is not real, or if irow is not in [0,n1-1], │ │ │ │ │ │ an error message is printed and the program exits. │ │ │ │ │ │ 14. void A2_setRowZV ( A2 *mtx, ZV rowZV, int irow ) ; │ │ │ │ │ │ This method fills row irow of the matrix with the entries in the rowZV object. │ │ │ │ │ │ Error checking: If mtx or rowZV are NULL, or if the matrix is not complex, or if irow is not in [0,n1-1], │ │ │ │ │ │ @@ -294,15 +294,15 @@ │ │ │ │ │ │ Error checking: If mtx is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 22. void A2_copy ( A2 *mtxA, A2 *mtxB ) ; │ │ │ │ │ │ This method copies entries from matrix mtxB into matrix mtxA. Note, mtxA and mtxB need not be of │ │ │ │ │ │ the same size, the leading min(mtxA->n1,mtxB->n1)rows and min(mtxA->n2,mtxB->n2)columns are │ │ │ │ │ │ copied. │ │ │ │ │ │ Error checking: If mtxA or mtxB is NULL, or if the matrices are not of the same type, an error message │ │ │ │ │ │ is printed and the program exits. │ │ │ │ │ │ - A2 : DRAFT January 16, 2024 9 │ │ │ │ │ │ + A2 : DRAFT February 18, 2025 9 │ │ │ │ │ │ 23. void A2_sub ( A2 *mtxA, A2 *mtxB ) ; │ │ │ │ │ │ This method subtracts entries in matrix mtxB from entries in matrix mtxA. Note, mtxA and mtxB need │ │ │ │ │ │ not be of the same size, the leading min(mtxA->n1,mtxB->n1) rows and min(mtxA->n2,mtxB->n2) │ │ │ │ │ │ columns are subtracted. │ │ │ │ │ │ Error checking: If mtxA or mtxB is NULL, or if the matrices are not of the same type, an error message │ │ │ │ │ │ is printed and the program exits. │ │ │ │ │ │ 24. void A2_swapRows ( A2 *mtx, int irow1, int irow2 ) ; │ │ │ │ │ │ @@ -335,15 +335,15 @@ │ │ │ │ │ │ This method reads a A2 object from a formatted file whose pointer is fp. If there are no errors in │ │ │ │ │ │ reading the data, the value 1 is returned. If an IO error is encountered from fscanf, zero is returned. │ │ │ │ │ │ Error checking: If mtx or fp are NULL, an error message is printed and zero is returned. │ │ │ │ │ │ 3. int A2_readFromBinaryFile ( A2 *mtx, FILE *fp ) ; │ │ │ │ │ │ This method reads a A2 object from a binary file whose pointer is fp. If there are no errors in reading │ │ │ │ │ │ the data, the value 1 is returned. If an IO error is encountered from fread, zero is returned. │ │ │ │ │ │ Error checking: If mtx or fp are NULL, an error message is printed and zero is returned. │ │ │ │ │ │ - 10 A2 : DRAFT January 16, 2024 │ │ │ │ │ │ + 10 A2 : DRAFT February 18, 2025 │ │ │ │ │ │ 4. int A2_writeToFile ( A2 *mtx, char *fn ) ; │ │ │ │ │ │ This method writes a A2 object to a file. It tries to open the file and if it is successful, it then calls │ │ │ │ │ │ A2 writeFromFormattedFile() or A2 writeFromBinaryFile(), closes the file and returns the value │ │ │ │ │ │ returned from the called routine. │ │ │ │ │ │ Error checking: If mtx or fn are NULL, or if fn is not of the form *.a2f (for a formatted file) or *.a2b │ │ │ │ │ │ (for a binary file), an error message is printed and the method returns zero. │ │ │ │ │ │ 5. int A2_writeToFormattedFile ( A2 *mtx, FILE *fp ) ; │ │ │ │ │ │ @@ -374,15 +374,15 @@ │ │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the message │ │ │ │ │ │ file is stdout, otherwise a file is opened with append status to receive any output data. │ │ │ │ │ │ • The type parameter denotes the type of entries — SPOOLES REAL or SPOOLES COMPLEX │ │ │ │ │ │ • The nrow parameter is the number of rows. │ │ │ │ │ │ • The ncol parameter is the number of rows. │ │ │ │ │ │ • The inc1 parameter is the row increment. │ │ │ │ │ │ • The inc2 parameter is the column increment. │ │ │ │ │ │ - A2 : DRAFT January 16, 2024 11 │ │ │ │ │ │ + A2 : DRAFT February 18, 2025 11 │ │ │ │ │ │ • The seed parameter is a random number seed. │ │ │ │ │ │ 2. test_QR msglvl msgFile type nrow ncol inc1 inc2 seed │ │ │ │ │ │ This driver program tests the A2 QRreduce()and A2 QRreduce2()methods which reduce A to QR via │ │ │ │ │ │ rank-1 and rank-2 updates. Use the script file do QR for testing. When msglvl > 1, the matrix A and │ │ │ │ │ │ matrices R1 and R2 (computed from A2 QRreduce()and A2 QRreduce2(),respectively) are printed to │ │ │ │ │ │ T T T T │ │ │ │ │ │ the message file. When the output file is loaded into matlab, the errors A A−R R and A A−R R │ │ │ ├── ./usr/share/doc/spooles-doc/AllInOne.ps.gz │ │ │ │ ├── AllInOne.ps │ │ │ │ │ @@ -10,15 +10,15 @@ │ │ │ │ │ %%EndComments │ │ │ │ │ %%BeginDefaults │ │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ │ %%EndDefaults │ │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ │ %DVIPSCommandLine: dvips main -o AllInOne.ps │ │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ │ -%DVIPSSource: TeX output 2024.01.16:2046 │ │ │ │ │ +%DVIPSSource: TeX output 2025.02.18:0318 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -1374,27 +1374,29 @@ │ │ │ │ │ /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 52 /four put │ │ │ │ │ -dup 54 /six put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ +dup 56 /eight put │ │ │ │ │ dup 65 /A put │ │ │ │ │ dup 66 /B put │ │ │ │ │ dup 67 /C put │ │ │ │ │ dup 68 /D put │ │ │ │ │ +dup 70 /F put │ │ │ │ │ dup 71 /G put │ │ │ │ │ dup 74 /J put │ │ │ │ │ dup 75 /K put │ │ │ │ │ dup 80 /P put │ │ │ │ │ dup 82 /R put │ │ │ │ │ dup 87 /W put │ │ │ │ │ dup 97 /a put │ │ │ │ │ +dup 98 /b put │ │ │ │ │ dup 99 /c put │ │ │ │ │ dup 101 /e put │ │ │ │ │ dup 102 /f put │ │ │ │ │ dup 103 /g put │ │ │ │ │ dup 104 /h put │ │ │ │ │ dup 105 /i put │ │ │ │ │ dup 107 /k put │ │ │ │ │ @@ -1588,207 +1590,219 @@ │ │ │ │ │ 34DE10D995ABCAF45FBB3B6B73E80D05F4C51F8C29D4B0F67C8A86432A6C5E86 │ │ │ │ │ F0126AB25A5CA2875B48C61CB8112A4CF9AA08F8B0157396CF63CBECDB8867CC │ │ │ │ │ AC10F060630C9BFBAD84B1FF01C814878F0C177F552BDC9BB181B14581C6E968 │ │ │ │ │ DAAAB2896FCFB745795C4D2C87CC15BAA041EF80C5BDC12EC1F5786BB41A5A21 │ │ │ │ │ 073EE0BC436B346E014DB4099EDC67BC432E470A4B779FD556341061CA3F2BE8 │ │ │ │ │ EFA332637AEC878C2BB189CA3267B2BE5B8178E6B7889A33771F86276E6F0B8E │ │ │ │ │ 8E93B816AC7005575762EF4DE45E2794B7322F9B6D8E634FB8FF250D638EB502 │ │ │ │ │ -818321B3C46DB51B8EC6C2EF1D05C716519A3BD6B12A67239898F8A010CD1ECB │ │ │ │ │ -5F98B639B1CCA391E8E72C3B7BCA757603E45860252B9430C2B59108094C406E │ │ │ │ │ -3488A7B276447B996367CAC4B345C878EB62E1A25B4FA057A5AA4AC1F48CDB0C │ │ │ │ │ -8AEA68F7CE7DCF59E58483DBC9BDD003771B04CC1AC3A0BA98AD9CC43DF7CC38 │ │ │ │ │ -72CB2C8DE93596934273247D48FA99288E762B45EA5A53EF684DE34B2A258F91 │ │ │ │ │ -FFA8F98747970CF629A6AA0B502A12C052C618EAC473F8F71933A1249F78E167 │ │ │ │ │ -F8F63A74FAF011ECAF83656F61D94D2083A6E96E7433C74DBD75B59A700980BA │ │ │ │ │ -6F10E8B58DA52ABD314BA086D9D03527F6B60037F883B74E4B268BCB101B0DD5 │ │ │ │ │ -AD78BEC9ECDB537CC30DA36CB6A89269964AAB69D0496F7B066F6E6BB9DB874C │ │ │ │ │ -E5A7D81EAB79F6F3BD7EE8980243CAC635045E36384181357D5B27F0081A0C5F │ │ │ │ │ -C8D6DBBA75A36F394BDD94BF384052B0F49C8AE0F44E4DE57EE3D1C7FE73B242 │ │ │ │ │ -A69A5CB53064013162122BB97555452CDD3D06645171DE53FADF72425A518092 │ │ │ │ │ -ED601B61ACD5AF2E7C68E72A147F29630DD3383589EB195B842F3FB1D5D02CB2 │ │ │ │ │ -FD370592D78AED95114A409B7C64A3CF625EDEBC194F5DBAE70A5E643AD50465 │ │ │ │ │ -9750ADC1F788EB274F9D8B573A93ABFBF0AE15AA59E6C62DFF92AE3A69A13BCA │ │ │ │ │ -596CD20AE2D9257B1CD8E678BFD9A8E659284AE3DCD521BDCA97D4F65F6D03B2 │ │ │ │ │ -042D540AB72E504830F03AEA815E662667A3EBC84EEA8D5765C590512D138C70 │ │ │ │ │ -674BFE85C088A1012EEBD6F051BAEFEB67AB4E46A34E26B52D0F438442EC7934 │ │ │ │ │ -59274364A388BF5EC671E4E5BD9DD22A75BED3BEE56EC6ED196AE15AC0EC9CB5 │ │ │ │ │ -F60FBEFD59F10992FCCD3C2FC2C82BA701D32222C3A260C39FF6F62DBC786F26 │ │ │ │ │ -39A79A62CA866FEE75A9EDCC35232FAE9ECF5BD170EA05C1A9DB9B513B7DD837 │ │ │ │ │ -A6BDFF7E1CB3509E78965A78AB494DE656DD8F62ED71A718AFADA019B74C1E51 │ │ │ │ │ -BF18C629CA84EEC48CA9B8352C90CCADBC305461BBE12FB165B64CE5C432409C │ │ │ │ │ -B6200C83D3513BBEC1243870A777C1A4B00BB9EFB3A6B1878B95A37E7276F706 │ │ │ │ │ -1934CDC8E5DB2E59189B0C050511A46FACAD4C10E9BD97363CBA94BA7078C922 │ │ │ │ │ -BE901E5A6A9AF5A2B1621AD0650061F5DFDAF757C202000E6918ED6A26B7CB2F │ │ │ │ │ -78381C9B52127443C9FF0395B7F73E45373EAC0133646DA3475BBCFE84B100D4 │ │ │ │ │ -23178D16437815212EA507333F3EA8E8C5EAFC119AA87CC4ED4087B9926EA05E │ │ │ │ │ -0B346F78C2BF3D96B2D4A3404844F9C8DAAE05AE4E8275646BDCE4653194DCFE │ │ │ │ │ -FA370B5B2976536219D6C427D18A6EB920AE81630E444A752631C8F7B8A7D6FB │ │ │ │ │ -1DA6401D584DB64700C874EA4DC2FC37003489BFFF5AA91C1BFEAC828C75B70E │ │ │ │ │ -142062C5823246137F49F7F1600AF762CDD15886CFC92C2873D55CACBDCF1E2A │ │ │ │ │ -126F799E7BBE5CCA9807EB906412835A62D89634BB08DF831ADEF64FA6691747 │ │ │ │ │ -8A9B2CB2545FF170DB5F4CFDC96FEA058288087900CA05B07FC4F60512E74376 │ │ │ │ │ -24FEC29B9FC9FE2A22A05B18B3B85CBD59157D10201912F4FE500185293B7F03 │ │ │ │ │ -63210C648F7F12812FDEDA1B793C6771604A64B2F8A17E92DC011FCB4DDCD6C0 │ │ │ │ │ -8FE5E42F4289E7827E96B3337DB4816A48AFF5E7AE2B9C9EE2B064A51660AF4F │ │ │ │ │ -AD3B39FB3A02EBCD01E9A48ED773E3E351298AAC4718B8481236152F1EE78072 │ │ │ │ │ -533F341C2993BBCA85D89692247E858899DA28A13559C76AAE35A0491B9C262A │ │ │ │ │ -F82C144870884A727638F29586ED6A3ED40BEA0F37655D474467F803249D985D │ │ │ │ │ -F27A5E23AD82EEE2757B756887F5308B5A607A763EDF163F8CFAA71619C607EE │ │ │ │ │ -344B9DC873273C0975C06E54FABAEA08B5BF4938BEB11740E06C35C21C499BC2 │ │ │ │ │ -81197D62A592F2324D8F4A6B02AE20EB18E423405497D6AA13E41C76A5A0843A │ │ │ │ │ -DB6D6DC073A3FF1565430CA9608F869B5C86B1931335F6239EB310C1601DBA15 │ │ │ │ │ -EF85016CB40195C446CA073815B479F460D27B6C8FCC871854448FC0DD28B385 │ │ │ │ │ -C5427D3861BA39D5AD40EA2E7A738D2D47F4FA2092FA1E527F06252D36A18E60 │ │ │ │ │ -DD13E8ED57A39AB40547225C9EBEB5FA5F4925079D3F4741AE73BB5D5C7E74D0 │ │ │ │ │ -2A35EE24A912A8D55CD62031C4C6AEEB0FC4953B960E9701C92AFE9E5AA53CA4 │ │ │ │ │ -10CC72CD9B15187FD552065C517339CBF24C25A6B0889F4793976A915F6212BC │ │ │ │ │ -CD529D70E1CBC728F22650C7731AB482F58D87EC0DF150589008AF6BC9FD3BA5 │ │ │ │ │ -57CF8E7F76302950A1D1DF2339113C29A03F3BE2F1B5CC6B328137AA94CCD857 │ │ │ │ │ -5653E0B1856DAEF710C921B4439BD426825121B23A899258302B01F836D45736 │ │ │ │ │ -1BC3F3678405B094E39C0000DB0AA65F54048AACABEA81BD1F3EDA7641DB205E │ │ │ │ │ -D6BAA90F8AC2BA7C47348BED03D3D75902E3980A9FFBC0FFDEFF42D21E09B383 │ │ │ │ │ -F71A402F77BE18C57B98A91A3B0D4457CABFFE0AE509AE7F251C1D8A5BB16863 │ │ │ │ │ -AB82B89A68EA55EF0FF92D4AE943BBB02555CE8E90963DAE2E71D5B11C004C1C │ │ │ │ │ -1801A8D4DA94C39ECD73F61C5C1901E6E0ED799489A50010C21B8D7D4CD9A6C7 │ │ │ │ │ -D2C7FC22D140A104CCBC3C17CE0B87CCB5FA67D066EAFED801CCA47EB865BD5E │ │ │ │ │ -60AFC204C40C874C11F772783874B7F44D0CC1521964C2A7F3F0508CC7899941 │ │ │ │ │ -A620369D4E8BAC9721326CD1D41BC8388BB7C6AC0D1BD71E649C4AD6FB2DA461 │ │ │ │ │ -1B3B819CC89B8A646046DD6BFEA7273F701EF87FF401FDA632EFD7B6699A8439 │ │ │ │ │ -EC0BBF3D802E39BD0A8126C39418B005B152ACB1504BB91CF73452A864E1FDEF │ │ │ │ │ -F048A2DF65EE2E9AEC1EC979B9EB21C9CC7CBD8B3D748845F748D4053EFE06A3 │ │ │ │ │ -0BA35CB303B82435998035693D46536CECCC7404AD6C58CA937CB8A9C088BB76 │ │ │ │ │ -8F4C3983FB5D134BC1B07C7E78B404ED6B91902A171BF57A4B0598E548D1D885 │ │ │ │ │ -62380027A00AB03B48E6FC251D9E7CDFB33DC31B4C9AE5EBC0CCF3E9C29582E9 │ │ │ │ │ -E29EE5A29E58318129621ADED6C62CB50878DC3F729AE8242491174AD80FF7AC │ │ │ │ │ -42719CEEB8F82770D0F1DB175EDF87A2E4E10C4D0008CB86D9E1F1E012CD4827 │ │ │ │ │ -D727FFBA6D8A7A847FE55CF178D99D3CE585D63B0EEBCD9E048DA47F255486A9 │ │ │ │ │ -A2C332698D938937F617889D318AE42AFBE53A16DD587C0BCC9DB13F9F38B377 │ │ │ │ │ -DAC9B80EC7B6C8639668AD7A7B6B229635AEA4488A95E8A5BEFA154C70D7C852 │ │ │ │ │ -9EDF0A8C6B7D7CE404ED0A59505CDBA481B53C27CCEFA2F369E4348830A622C6 │ │ │ │ │ -6BD9D88A2118B5F03139B31DE63AD4466D7B7F6C61B55680AA0D736EF6308772 │ │ │ │ │ -F766817629909CD6E2545CFBFE5F4A328DFF6790B2634F635EF1DABBDE62A085 │ │ │ │ │ -0E74E90AE7A95428CC1B335204F63D3A50C0FEB11AB18BB76C31023625AC6ED3 │ │ │ │ │ -E8CD6F9D834103C16642EE66AB58DCCEDB6B2C198AC1762110AD1D4E5E7C9BC6 │ │ │ │ │ -865568BBF18137F863791F327B79399A4315EE4864AAA4A418EC0B277A028B76 │ │ │ │ │ -A392F3FC83AA3E7401B6CA4E62CF3FF11025E5795276C5A2E50354109EE65613 │ │ │ │ │ -5864AAE27EC8C0418D82F545A0EF216BE9C2FCE1FA33844B901D5B93961959A2 │ │ │ │ │ -08F15F6CF3DC300D351A85B9121A2C8A1D04E4F65CB45800AE7D1FE768005F73 │ │ │ │ │ -89BD5B3BD88BEC8A3831F680246964EC4D2E2B119C29C654E1CC931648C264A3 │ │ │ │ │ -04461767BECF92DF9B2A535DA23775B47F0E92216152E1CF87EFA9F24CC49F63 │ │ │ │ │ -01881C39EF24231F48A025E6395AEB15B9E038519C4D034F53CB2744CFF863CB │ │ │ │ │ -6BA1EC1124933A0A1AD8441D8A2B6FAC09C9A3453FBA17BBBA59E973951CEEE3 │ │ │ │ │ -2DE8F847AC74A85A8069D56C49CA3F0D634BAFA67D2AE1C22FB0F312E4AE7867 │ │ │ │ │ -7F72061C308D07553485CAC93E8D91D8782586FBF44045DB1C5F7CA8D5F79BA5 │ │ │ │ │ -20344A5651B6D3F32D03F4E551FF088BD3116E0271E215FB6C52413B680802CC │ │ │ │ │ -5A3B5C6085A975E6DF2F6AAC6FE7E0AC8F4CFAFD7F719B1A7B14F10F37243C03 │ │ │ │ │ -F056EF7886BF3F58DAB2FD8C3963E5F74066C4C3080863E1F79AAAFA3A25E393 │ │ │ │ │ -8C2BB0850052AE6B063A3A780F06BCFD79A3D6C9F624595F33F19661AD6EAE11 │ │ │ │ │ -37B98B7843BA53CDBF01FC6E4B40B8D85E7E8D753A74022C273DCADD668CB2EF │ │ │ │ │ -F35FC91929480C95BD28DCCF17FFC7C2105B428C4D104F8D0B570595E2145B7E │ │ │ │ │ -45AA97012BC18EDA28853E33813F7181997D6A169F2270F34D704FFC0C21812A │ │ │ │ │ -878661DCAA99C553604A3AE6CA0EF4A5350B9212EEBD5F979C4B5B8E089EEA8E │ │ │ │ │ -B674C753584D143C5B8CCC3B769EFC2639335AC9BDA3D9A50D7DC44BE13CE7D4 │ │ │ │ │ -133E0BAACDBFBA8EA0443DAD4CFABDF68534DAEF6377E3AB0920F4D6B5F4F21C │ │ │ │ │ -00373320968E128D05B30848332ECD422011A396312AD28528A081E08A4C7187 │ │ │ │ │ -0A9A24505E6DE907F6A602EA216AC137645C7BFA3CB82C41A954F4A4B39AC9DB │ │ │ │ │ -40A12FEF6BEAED6953C8B7001173C85E9DF2B3D1B3DC3C0387E74C2FF78B1529 │ │ │ │ │ -EAC70037914C77C6CCD84C8E56F2A7D35A57BEB8AF2C357A824CB83447CA6A66 │ │ │ │ │ -9932D2AB168750DFEA412B710EE784A36178729E6FDC2A724F24D05AE3EE99C4 │ │ │ │ │ -0D2BD017C263566F9DF04B0B70C797599FD7D354F426F4E5C145B18710F6776C │ │ │ │ │ -75FD850D26B838A33BE7AE5DA32E982DB51FF18646BA8744E7F1C22E53E44EE9 │ │ │ │ │ -82826A27CE51C7F853859C7BC767E8E3C907CC4FF2AA70E840888F3D75C708EA │ │ │ │ │ -F1FC65C75851A10E936702FECA169AA64E107DAC3CB9428D3A0272FC2531387D │ │ │ │ │ -02C72CBBC4F6AC0CAE2EA06945F9055E6AF3A1BA34878776762EE20D81B7386A │ │ │ │ │ -9B7630C3C8F6BB3AF3566E462BD1D089260E4A4983884E8BBB0582167562C40B │ │ │ │ │ -4C21C43FBD63B2726AE25ED8F4558C70BF5E87510DEB0E04E75FD2BF0A3CD2D5 │ │ │ │ │ -E0407FB92DD591FC6350982F5AECCE5306F9337EBBFBAB06D1BB1AD3B6AE339A │ │ │ │ │ -BE0BC28963312E4DAE87DD2D85355020548CFCE96CE7E96DDAD9059A3D7F9AF2 │ │ │ │ │ -A7833165D69FC04FA09FD03FB384FBD4E4BB6C4EBCC4D64FD1C3567320AA3000 │ │ │ │ │ -9008B2B09AB3A51CA722D5CC1A0C62BF369A667DCB7B6CB75A0205727F7F2E3B │ │ │ │ │ -9FD36878E8D82DE6F4221D3FB88E94EB342C6BB872EBEC01740D5CB17C672527 │ │ │ │ │ -DBBCE14E3EB2DDA784641F2A8882E40DE6E3E4CD0C416C2FF5AD8818811A2013 │ │ │ │ │ -85C98FA252930B0B5932342C7D58BED9E531B68159EF789E313A2AA33B991330 │ │ │ │ │ -36B695EDB12D57CF7F8BF913FFC9FCE992868BAD188F0679CC444F8AEC779B47 │ │ │ │ │ -C95B5BF8D835AEFE84405C47980F12AAAEA7269C2A2EB17E4EA9CB5D10F7A213 │ │ │ │ │ -6818C7CF48392C36B8A8136800C96C2C57374464A5D2EA984DD2097E1CB75762 │ │ │ │ │ -0F44D55E3FFA25CDB6C5AA801890F42BAC712F16FC4344FA4D038C7C501E7578 │ │ │ │ │ -F7BF1C219F3CE29B815A32262091B2DB03BC9CA13779CD4F7417305C8483CBCB │ │ │ │ │ -A125EBF49BF3554B3C85CC26C108F8BE3F30EFA4D073EAC0883F148D57210CF3 │ │ │ │ │ -EB8CFE3256290C7E54BA42C6F4863AF046C545E7D61B34B3D1D16DB21C664AD0 │ │ │ │ │ -EE7912CAE2DFA5D951CF93F0A61D55514600CA3A9B042626AE1FAF4BAE30C1D9 │ │ │ │ │ -B34FE00BD183838F28A563FD6A37A4272DF7D45A6A47C9C611ED14FB2F017F71 │ │ │ │ │ -18034D4DD5B0C525969B432A0A83BA1805A9DC0F0CBE3F16838F7C2AE1F68CCB │ │ │ │ │ -EB6C6E90F64BC8DEB43563E2BADE8478BBB65E21AEAD876BF331434E1CA09E1B │ │ │ │ │ -100595B3491A3B99F3987B84C40CE460F00340CC6589BA542DD67DD9BEBFE0A8 │ │ │ │ │ -B8C3D6EB7CAA155AEEDA2134BA62462C25F85B90EDE8002156DB03EFD4DB8A15 │ │ │ │ │ -0A03AECB45BD10FD27329B5453B2880E3BBAF0E8C96E332439B5DE770512DD7D │ │ │ │ │ -081E86E69C61F5C0A4FFCFB94B2C843CB1339B25B589D1C3AC9053FF9547FD7F │ │ │ │ │ -73F88C358048DE1CC452ED819464A62CC41643A2583CC1F6D4C1D2E54DE586CD │ │ │ │ │ -327BE271BC9067FA0EB4FA6D61714E749C75A26DFAD3959EB965084A389D2831 │ │ │ │ │ -6CBDED512070D3B3E2897DF13FF08B5B864A3797EE2A71E4DFFF5BDDA96A3FCB │ │ │ │ │ -1147EAE27CE73209345E214C7E96E54E0AE51B0D2B918C9DD4C74F4492AAB31A │ │ │ │ │ -6606EF0418BF843CE355F3ADA9DD95379F64133F3930CF69507FC00F20F50945 │ │ │ │ │ -EA7DE0DB3C13B86D394071CD9102FA869B75942F24F83958033584137426CA12 │ │ │ │ │ -A6F667D93C604A8149CD58DF3DE999956FBBD54F0820A272E2E82B9BC614009D │ │ │ │ │ -F4F6B7981C75A19D26CBC94243AE7E1673B3A91E27B8E99E9D27E71E4113BD25 │ │ │ │ │ -2DCA04EE73701E19FB770861D8BFC9A1CC6FDD0789DC3C10DC0D32758E9FE235 │ │ │ │ │ -B3CD27F2D156D5440E1CEFB94B2AF270230690298D58E06A22C3612C3974B407 │ │ │ │ │ -B821E62F7B1E72A6D7DD6704FE389321C8995E8B656E011EFB5DA5ADDEA98A89 │ │ │ │ │ -DABF583F091566BDACE0C9AB943121992A77C65CE53F4BF4CB7E6CE2240319AF │ │ │ │ │ -A38D1EB8A80233AC841B62B4B53D33CCF39CD6BF76BB34E3A3F4E4F01155CA63 │ │ │ │ │ -08F813FFC6CFA924A303644ECDD8D4477487CA652B3F6D51F6E9B7E84AFD0404 │ │ │ │ │ -67E43F28DD6ABA648564F25DEA7A6C3D8D66FA66EE85055CB6C86B363A8E3618 │ │ │ │ │ -508D75AD0B9936DA6699D8E9F0B165BEA17545051414DD10CF881193E295CC31 │ │ │ │ │ -C1D141D4F8F0256453D05C161DB553269CB43264A104EAC63706073A8E157BC9 │ │ │ │ │ -B15AEFFAA4E7ED1BCDDBFB34998AB7E4A71A33B2046D2BC07C8ED60A1F4DD418 │ │ │ │ │ -4225195A817261A984DE138018B93EA5C836C796524ECE97603757A4D0C114D1 │ │ │ │ │ -65BCC5FC0A6E50AD19BFFB3F2829A2D114877BC53FA2B4CE787A02BE6447305A │ │ │ │ │ -618D65F9BEE49A831637CE4C827FAA4111EC8BDB05636C0BAE426B3D48709C05 │ │ │ │ │ -8E036953E0965975275B1B4DE93D5B73F4B59E9F1BA98C6C4942036AD2CCD54D │ │ │ │ │ -C86E2B9B98261BA176141D4585DECA34664E52919BF0E5A392DAF5F468CC8372 │ │ │ │ │ -FBFFC2A9E48FFB610D995DA9294C16BE7152041C4F70E1361D9339E190831D4F │ │ │ │ │ -6C5D6BCD00782CEF66942971C874A9B5499D42C410661C1961BC5B7F754D2085 │ │ │ │ │ -F0003A87213A5B2BFEA5725709708BD4B144517485266B5C5BA6661A2B59B926 │ │ │ │ │ -16B86DACD37B519C75289F512DA5BE898419059808FBD8E136FD2A5702BC3DEE │ │ │ │ │ -930D34A0BE456EAD9DE3E350A3D05BD8DC9F64039C74AB0FCABCC7B56016C891 │ │ │ │ │ -B008DB6E2C1E0E06168D2FA18BB47B52051912FC26E429CA10E825D25077F36E │ │ │ │ │ -6ACA276BB0907F2A36CC873D359E9D6FE93CF7C6E3F12DD7EA56B64709CA5BE0 │ │ │ │ │ -16617DCB9BC822B79BAC1FFC1BFB263FB4BFC8229ADCC467A76E9D2C8694FE2B │ │ │ │ │ -CE2378C4D7FF4E20AD617AE54BE50B4EBB2A72FA8F6F99CC0468995F21415EA0 │ │ │ │ │ -3339F4E91585F9D3ABDCC60012342941814142BD779DA2966AAD051FD630010A │ │ │ │ │ -9E2A0B31711A9A9F68A0CB5397E11E6C6501696C946F05B0D75127889DC56A06 │ │ │ │ │ -3DE87CE33825CA7CCF57F56D75DBD317617B9FC55B51C4206213FC8FEA4EC209 │ │ │ │ │ -E5D39A449DD00486738D29EEEB8053B7979C91E4A0CBB0F6251D338548035398 │ │ │ │ │ -2143AD3E7F1E54B5916072D94F588228756E3C7CC1516255730D090E090FA487 │ │ │ │ │ -1D35DF70C91CAB96708BCBD6C5B121EBB1337E01F1BDCD687002C9A6BCD0BB3A │ │ │ │ │ -5384DD2AB206C42F97B6AB8705EA7BC59163E560B864E57205BF0E413C5C3C79 │ │ │ │ │ -49BBF67D5A5DBCFCC4FF8CAF758CC62AC09BDAD4D6C5A875D2260D7D33146F37 │ │ │ │ │ -94CC728E0D97083218D1EA17FAA6AFA327CE41DF8F8081D94AAD56D56815B5A6 │ │ │ │ │ -0D4C7A45002E4F6932F75B1C3E93BBE9A2E5FE5307D6F2766D954592169D9256 │ │ │ │ │ -917F639CA9D05B8194A46BF8A4A69CA33D8E57E3CAFB733C5BBF63B54D413F26 │ │ │ │ │ -20F135B64E692956C6C5C668AE4A9B2CB723688CB0DC65805F610AB532793E96 │ │ │ │ │ -297415F5967CC3529252AD6DFC20142FB137BF2E3CB9208D15034DCCB691C70F │ │ │ │ │ -FB99FF2736F8CDAF23B9B1548FEE941E338BC7BED80D4FE46308F0A45FE93B1D │ │ │ │ │ -F2D35592CD171DED4B0244E7C17EB72B8A78E170B5E1167011B2F5B1EB5A3153 │ │ │ │ │ -3C76C738078E989F3453A12A4057ECED089402FC7A3E385BADD4A2DF06204AF5 │ │ │ │ │ -BCB971ED7440B10A2C961D91893981732CE6A40B03E96D06CE44065A82372EE5 │ │ │ │ │ -B315A23C3D9595B0E9BB367F3DDA385B9696E6E43BBAB6CE3E2D625EE7B43F3F │ │ │ │ │ -61013F3E00BFB9515A0119881268336373198AC76E39A10C90B02A977576EDCF │ │ │ │ │ -A360CFEBC37869101B60AF3435C039FD8359D0790F3F7959317C1424357CA530 │ │ │ │ │ -74157724AAC67F28A766426EEDC5CCE9E0874B8A9261FECF95E68FE5579E07B6 │ │ │ │ │ -6DAA70B2F79A19CF70B4CA9865C8DE758C4186D61B1E09EF509C3F938C704EB7 │ │ │ │ │ -B24997B99CC24508504A2AFEBCC194F507ECA9546A3D8BFEA15C7BAE6D82D847 │ │ │ │ │ -A88DE03ED400632BC3D72BDEF7504B82FBAC5A9684797E9AC1630E9CA6F9933D │ │ │ │ │ -BF2BBFE3D72378516EB2FD00EA87A6D6866A987AF5A10B0C7AA47DEF86EBA0F0 │ │ │ │ │ -B947F1803A7D4B7B40DA7B0ABE22E976DAF9B25A30AAAC300C4F760E595A7433 │ │ │ │ │ -A8B35F2EDB7D11CC5BCA6A5C37F9D5A1AC5102823E1BE7778C4DC80D9033F2F9 │ │ │ │ │ -E359C58C2FEC55E54541874169BF6F71939235045D49A841E9C9B210D6D6CD10 │ │ │ │ │ -31B57D92A7F50507FCFC3D026C3039C06D135DADA1C6C6A80567E70FB756EC18 │ │ │ │ │ -5986F302714892F64FFEB34B69F2E3243ADD9F4F3DDF9230D261A79B239BDCF8 │ │ │ │ │ -A5A64B4EFEC55F3D78EA1A84F114FE87B4F753B6B353593881 │ │ │ │ │ +818321B3C46DB51B8EC6C2EF1D05C716519A3BD6B12A67239898F8A010CFFB7C │ │ │ │ │ +208CE8B4BFE2E5DC6AA540F5A078F0C996B4AC1352A7043CF871E16F52290B1D │ │ │ │ │ +07ED39C7BB7404204ABCECE8F45650B9DCC9C45DE1634C04CFAA3AC6A9B17C7A │ │ │ │ │ +2B570577A05640C463C5F558E06C1CB2007DC5E654A86ECE9EC82567F45B3918 │ │ │ │ │ +3424161AA6718C2ABE18EF1955D1B520AC84099693DEDAFA162C2A00887916E0 │ │ │ │ │ +5E5F8D954F6287F0C1F72BABAB1C67E63D52421B062C798E37A821C28E4BCB69 │ │ │ │ │ +0399CD70C89CC033DCBA2AA29B45BC7134771933D413F56302D7553C6C934A72 │ │ │ │ │ +101EED293ABA41A26BF09C393FB4F378B1A1589145AF1B94C8CE5DBB4E586D95 │ │ │ │ │ +E53D291E50CE65E03EDD0815B278B6C8C75F97A5CFBBCC3F5DA36251E8016AEA │ │ │ │ │ +DE0408BB64F5D0824854CFDDD493303F243E25C201E0771B1D24E726CDA26707 │ │ │ │ │ +B47C2D2263D313669F22DDB06A6D1789EEC92922B25A56BD5A7EC6FBEEB835A4 │ │ │ │ │ +D7A452672EA009C46B5D1680AF70656E3776C820164CF57A7B60639FE80B7E67 │ │ │ │ │ +5AFBFAC978C8F9FEEB8E33C94A80816A99733C1251FF66CF88E7BA2D97B4EC3A │ │ │ │ │ +A19DCA748CCFC50C54F5FC4952B66EF024AE300BC20AB6384A046130567D78A6 │ │ │ │ │ +98FAE577896607B52533833B838004B5202CB3B757C5E6701BC1569D6E4D14B9 │ │ │ │ │ +C8DDC3339E87414C442D919DBDC1B1CB11A79329E57271390026E88A6E93BDF1 │ │ │ │ │ +860676D380F97739382EB296E6C805DCCEC8E27B623E7CCF504269080CB72C5C │ │ │ │ │ +40E2F31562C470C0B21D5779B09D32E4200C48B816884F5F3C1C5D0477DF7347 │ │ │ │ │ +ACE5496BE7ED452917DA51B5E720D5756E38A0B200CC7A80AE1F0E9C2D4480F9 │ │ │ │ │ +37FC448D64E6E8446697FD23A25D7EB1167D055876AE3CD06D34F8F768A2A00E │ │ │ │ │ +335EC897DECC3857FA43C4156C271B160A67ADE48F02CF42D7F54C96BFAA2C8A │ │ │ │ │ +8C89D4F90D5223B8813CD2F1EBBF0E37E8BA401A2CFF2DB48CD5FB68AD59B007 │ │ │ │ │ +F52F3DBC7A49402F94BD5CC82A2F372C7B72188C1791A5BE9E00FF7E1E790379 │ │ │ │ │ +7D8A25938DE56C5857581D722BCE1501010C139558FE4A11B60E6B06EB814C57 │ │ │ │ │ +6708E5D9462530BFD2DE971F2824004BFD6370EA0D1A7B6C14E06421F0A1F374 │ │ │ │ │ +0F293432669FA4879A5F9A364EFD57357449A369F0555453FF0C2E74DFA51E19 │ │ │ │ │ +B37FAE2874F4CBC5935DE3E08942E88280CA2A790070E9858C8877F5AE72FC17 │ │ │ │ │ +A89D0454C9D7B6F09A77761C765D50FB543C57B42DA5217645DC806A8DCA6E0C │ │ │ │ │ +2FBDE8E11FDBFB80ABBC1C6DE2B79997737F13E6196C8BA02B560C4D9BAB77DB │ │ │ │ │ +9185D6ED0849AE9CA8AC1188E7FC1D87D12A6404D7CB238501F46778EAA58B2E │ │ │ │ │ +3BCC0A45B935824938D8BB067E1341C0CAE944E72B24F3A8A038FBCA99CF5812 │ │ │ │ │ +DBE9D0FF5CF740CD7EEA28730FFD845461C384A25D0A49DFEE209D6E9067D6D0 │ │ │ │ │ +383BC3C8D767B31E76E153B5E882670A4A96CFBDEFF4DE11ABA38D1EDB5A8D36 │ │ │ │ │ +DDFE1C0144A4CE45863CD6E7807C210E1D6D703216CE449440D89862F41F625D │ │ │ │ │ +E3FD1432862F5A03689F39A2B04A79009502D7432C4E8F74C659C20D3AA05C24 │ │ │ │ │ +E4D983A8127135710E0FF452F11E36544B6233D2529D46890C80024713C0BDE6 │ │ │ │ │ +4039E249C9B69CD540D09518FCBF50106B63827B522BB6FE68E61A63DE321FE2 │ │ │ │ │ +FEF1D1394A93D2F7D6693093FBD05D1CB238F2EF7DDEEB278CAF61BFE8C25079 │ │ │ │ │ +DD058231718F4D93DB05D59C105E08A77BCBF19DFCED2366B85DB5BDAAED8BFA │ │ │ │ │ +C6B964AEAC2511B6CA6281FD65ABCDAA308258FC60AF5C51B12F3C865249A2BA │ │ │ │ │ +0BD9F727960F13794D3BCD56AEC57606E8AD6C468FA4775767D8C8203507D331 │ │ │ │ │ +2E0ECBB195D6F2F666003699399EDFAED26F4107E78DD0E8E55FBE68180ABDA2 │ │ │ │ │ +D3E3F67A89E5B7D95A4408D3F4F7119F460CE697521BC01E379701EDA8162242 │ │ │ │ │ +162E0382C551140F37120BFE5D984F65506488297260ABE9E0A34236507C7199 │ │ │ │ │ +BB9506D1FF3412D50494F80AA22278F708EDE401CA40E6D6ADCC8E07856C9D73 │ │ │ │ │ +A041C9BDDBF6AADFF5C922F3492EE24E0C4CE2B255642D9000C9FE3DE4CD216C │ │ │ │ │ +83DEA2A73D87B5C2FE327138BDB1CCE8B3E905A6D9F489F547156BF790ED37E9 │ │ │ │ │ +61CAC4B30A2D05C0E202FA99525E1E9663E7E99879906BF11276C6163B540969 │ │ │ │ │ +B20A658335BCD7A66BF9B9DB73F4B8DEE10371A587A3935D91E24F0A5BF194D2 │ │ │ │ │ +C800A4E13E54AAF6D931A4B73E1829B9FB637C325C114BB900010DC953598B30 │ │ │ │ │ +ABEB75BA72C997D9E8A3233A8497ED6D50C9678D20286BCA9025602C9BBF295C │ │ │ │ │ +C6D683D6BDBD03325AE3BEE0A3B423696A7AB48E614D91EAA324848C604B12CE │ │ │ │ │ +EAC02FCAC2B28B06156A7D1026438EE3E3E153C3B81531D322161500E15A6556 │ │ │ │ │ +730FFF35929673D5FC94B769AD26D7917934B7A8D8037835B603DBEC3A3F9C65 │ │ │ │ │ +E36926BF148F4FBE49AEA5CAF74DB3C6B4F8F78DA8E5FA33443EF4CF7ED323DE │ │ │ │ │ +9862E9032AB3C810DF4CDADDAFACB89CFCC878CDD07397284725FDA0531F1262 │ │ │ │ │ +460D4AEB050BC38DB67865CB2D7253097C553C73EDEA3F1C3D1897242401ACB2 │ │ │ │ │ +BF42BAA55698CFECC42F9FEC1503481DD9DFF32165EA88BB508FA7E42BDBB8A3 │ │ │ │ │ +0F017FB1F41C13A2C33A78177A27FCE0BA90BB41D005965B1833EA0559491029 │ │ │ │ │ +430CD958DD708125388F68BB3457873947DA17B95EE7231494EF0304CB54682A │ │ │ │ │ +3FBC3FCAB86B1D9B5263B043AB8DAE07BC57685247DA931EC3FFBFDDCE9E5E0F │ │ │ │ │ +F259E7D26258D8EF2DAF18448E44E5214C8C3C05ED34A6C196DC8CE023A17544 │ │ │ │ │ +0A3CDCA144217298B2BAA73F6C7C4EF2CFCD3281B906F98E0FA2C21489B205D0 │ │ │ │ │ +2B17CE92651E2CE99E972C7633CE954B0675E6F25C503EE8B4FF5B9A0050C2C7 │ │ │ │ │ +118631A6EA1939491C9AC5FACF77EEAE466D4F6C04145F0202B68C507C4CE8B1 │ │ │ │ │ +A76A9093E51DE487A2F1C53A8F095E5E3F8F7066797A92D5891DB63E121C3128 │ │ │ │ │ +9FAC8D89326DE6C20C6C52BFBF0C5C0C88EE844DBAA3100C94BA0A429C4E50DC │ │ │ │ │ +1CD328A603D0C223C176D0013A8A1951FED6514CDFD25D4BA85D299962ED9DE9 │ │ │ │ │ +9C62004103A394DA9166978BE04972FCFBF9BFBA8EAD36FA9FA94F4AF06AD3CD │ │ │ │ │ +858BA8759203B5AA5383B5C3CB4F3C90BFB9F2564C6462B2EDCF301844BDC9A6 │ │ │ │ │ +20F8532A14C245190C29EBCE7E798F587B6BB46D6E9A6DD040414F0D02AE3DF7 │ │ │ │ │ +0A1BCEA94045CCB649C1151B70745D8A1B2C711D07EC2307EDFB436876918AF2 │ │ │ │ │ +C0878DF56D36B90F81ACCE9483CD97A665F236F35CAE799DB05282AEF7C966DC │ │ │ │ │ +9B41E78E989697193F3A145CEC5A672EC82E6EABD6B367B4C8AC0676616C61E5 │ │ │ │ │ +7861E330133ADC65028CD444699ABDBF31BF4F166982CE6937EABCF221528686 │ │ │ │ │ +05274F9C375F42B2A0B807C9094D48C991671AA77FB0417F95D8C93811E986AB │ │ │ │ │ +18C60336BE1A6227F6192AEC7E439BCAC4AE7533087A032D8D39A6550DAFC068 │ │ │ │ │ +5F783D4AC56617569DB4D06295F7827BFE0E2BBF50F6BFA539BCE865555C72EA │ │ │ │ │ +29019DD1B9A5C0F4B039414872D9B9B69179BEEBC0B03CC9788F02A4742DC5C6 │ │ │ │ │ +1DD5E6325F4D4FC1A0BD91A3F24126EB7663440E34DD511C39F3A8A9BBEE9C86 │ │ │ │ │ +E1B1B69ACF1CA82601F5911F83D80A3787D10F27841EB59053A83D950E15C6B9 │ │ │ │ │ +0D1294E00927215C70315B5DF6FE5E1FC61E60A2130C4C0DEA01D442350B7659 │ │ │ │ │ +017282C505C8295941A91AB7FC690738EAADD25D8D963C6586C1BB69DC3AE611 │ │ │ │ │ +1C9FA208D0A7FE7649346BAAA9E35EC40A79F911B877F53649704DFFAE3BC352 │ │ │ │ │ +F3916DE6DFA20A8BBDE9347E42FCD670FB680C94CAA46C29D6DAB725C5E90823 │ │ │ │ │ +06116BFC8D8A92C7D46E8F5E19649BC8685123C6CDC27C70F2D4D3A2AD7B818E │ │ │ │ │ +24F41574CDFE9E8D77BBD6D118BC50BBF2C93F055562844A6960996AF85F2D21 │ │ │ │ │ +7336C280BEA9FFDC4080CE648BE1FC89F9CE36986325ECB5214273830BC3B77E │ │ │ │ │ +EEE37EB1890243E54A92A82EF8C7564861B2AE6A5D50E94550BAD8838A8CD855 │ │ │ │ │ +41E6B11075E7DB86BC73751E17426F1AB86914CCC61C40A35815600AA966B7EA │ │ │ │ │ +79D8D21A9258F1F8434C56CA6EE81E8A3690A9053CDCEED2A62BBED81BF2250D │ │ │ │ │ +41A290A73456F959084FA1D906A6E9FDA48AE81FC75BE0E0987DDE4E2CD844D8 │ │ │ │ │ +052419029EC350A8491B9ED2CDDA5B5F6EEE462C598A019E1248B829DD59A8A1 │ │ │ │ │ +ABD3F57D8EA5E0B7E3003F4DA1ED7A31B7AE43ABEAD548A58E656E1E7BD700F0 │ │ │ │ │ +780597A395563D816DA8D2BE1EB0701E444B12C7224087B4E709B811BC8DDE4D │ │ │ │ │ +9C75FE7E73060E8D56F9CB21B42BCCB12998DA8FF87305AD8E36CE4B8050C833 │ │ │ │ │ +2C5AB5E499D996492FA8253A1FFA029FB66C358B396A3BA1B4820D491980B839 │ │ │ │ │ +BDD09841B8AE4F4DFE54D2E84C34BA2073F3CF142D0A5F20D1A4C24C47707BD7 │ │ │ │ │ +03C453A039EF2C2DB708DBDC5C4872E6DE5A712B0B9F87473BAF0B3DFBD6BC86 │ │ │ │ │ +3BCE164B981BB4D27F1E3B970035D10EAEC8361E539956DF8BC33CECBEA0E1F3 │ │ │ │ │ +313A05C3B88924D9B703FFE4512836089B80587363DD75332E5F02BF264E8AC3 │ │ │ │ │ +86DCCF500609E13243C6C50E56B4EA7B1092FE659E2020E62B7A98A400452ABE │ │ │ │ │ +E5FEA90AAE9A29AF919A069945474569CCC3941652AA36EE7B63790F4163F5CB │ │ │ │ │ +BC243E9F3CCFCA9A24E04A7AB5C20F2CF2186EAD601C57FC594E3558C5B45130 │ │ │ │ │ +EC0759AC13AD6E1FDD49EFBA99337C72114788EAF69C1349C752A8B1D82BB327 │ │ │ │ │ +897BD046121837D8F0EC39EBDDF5C440277FF4C4E8853665B715F2656D4FAB1F │ │ │ │ │ +FF226887793EF188DA1BBB9F96A67EF39536581F0E5C0BC455D0EA2D660A7A86 │ │ │ │ │ +264F66E3D14A64DD55E4C26CDA2D3CA28EBD29446682E6941F7186840F5B1456 │ │ │ │ │ +BD8FA32890C44D98F2211A00B8F02C9E97AA3FD8BF23815C7F2C49C6B55ECD50 │ │ │ │ │ +0B224942754C35AF7591E09520F1F060C41B2554438CB869FA451FADFAB487C5 │ │ │ │ │ +DB0107F205D75359C58D91CE3E774241C5E5AD718DE540136C01D5135F93DB5B │ │ │ │ │ +EE6A68F7EB525B8CD34EFFF220F46B89D667EE3E14C8E06CA139B24255BD7F36 │ │ │ │ │ +B87E2E254888C298348E9D53373385589738304FAAA2D3FF082921D07507C3C9 │ │ │ │ │ +80A7EEDE2AAF50B73D225BE4DF526D9F2407B7A0D1EEF33FB916E5E568E820E0 │ │ │ │ │ +8ABD2FE30B6D94504987C10EEF593442460CFB10E83239312AD39AFA7D981EFA │ │ │ │ │ +AF3875B62C4174E21B6FD725B316076F6C0125F9843FEB302EE89E798F1A31CE │ │ │ │ │ +FB5CDE792C6054B2718FDCB0D70D142CB2F4CEA6EC29916C787FC3F369F1CBF0 │ │ │ │ │ +7BDD0343C2A1AB86F58DD3171889A5764F8F0A8EF7AA5C0F01E698C05209640E │ │ │ │ │ +3CDB83F8AE92843B2E480C97E0D9E857B6377F2760550427BDAAD8C9BC8EFA6D │ │ │ │ │ +8664336AC6771344661BBC4359AE9FD6C48F3BC520D29426008BE881CD1989B0 │ │ │ │ │ +D6FDC26F29A7179BDF60D15DE9E6B5812081350B902EBFA14B27731EFC8AA071 │ │ │ │ │ +80C80236E07E6FD7AF7825D029C3F82782A6E9EBD81219D105A46F334E6EF54C │ │ │ │ │ +2AED636BD35C68FECE094F2DAE74D398DAC30D455F56C0849EFC005DEC7589C2 │ │ │ │ │ +34BADE9105596D7EC86BA3C0F4B1E225C99C384992665ACD574FF724D316968E │ │ │ │ │ +8FB894C4FB0B2EE18A4AFA27A3B64DB0BD93EBB90600FCC9040A2180781EC688 │ │ │ │ │ +A3A7A1DD5A60FA5F88E0067E44B1DD7917D417B11CB8AB61373E665CD8306843 │ │ │ │ │ +284817A2CC510E4D3F6124FB2133ED13A57AFFCBAA6606E892B2499C60BC5244 │ │ │ │ │ +D0ED4F1ED783B46574E2F64166B1E02CE7243EBC10A1217251E16BD89F9851AA │ │ │ │ │ +2FC94B712C5A613F8D8652180B4638B485853A71BC2C9F6B5BC8B3B59BAA58EB │ │ │ │ │ +6237B6AE27A949EE0984E4113495F50FD6DCF8E8C47BBCC90B0EDE92AD785412 │ │ │ │ │ +7F8D14A093852A3D6BBE9C44E664DD346D9AE140C60D828E038EA4C11664E3E0 │ │ │ │ │ +510524DCDC221E762DCFB65BEFB43F5DCDC85A52EFDF3A6D48BE3FEA42D06A4B │ │ │ │ │ +DA1A406E6349052439312DE732B88A3608B132A77E54DC832D5F77854A6534DB │ │ │ │ │ +F758EE21255FAD951CE6669D049F19EB2000B22692DD15A687F24CCBE57FA281 │ │ │ │ │ +20FDB48880321A8B3CE2C51D09D63A7C935753E7F9179BE6D5AEBE64127723AB │ │ │ │ │ +DB62D627530E46B7FBA3A5F53CA25E6761D23B091FAA01CAF3E63DF6FE840271 │ │ │ │ │ +050BD0DBCFB4C3A806CAF321465B4F5E8DD199E2ED38FE4AA014F55993757F82 │ │ │ │ │ +71B981650D82CAE980DC9AB796030AE84B6C79E55871F18193F3C4039CA1A1A6 │ │ │ │ │ +9DCAEEECBB16EA02AC809996D37F51C03138201DA25F250E57E7473AEE3C9ED9 │ │ │ │ │ +691D2976242D87DA3C7041F3387D43156BB5FBDD69BE3C06FB9B9068F1784E4A │ │ │ │ │ +F53178942EDD94EB7F0BC7ECAA34167F4CA98ED25A16D321423FEBCA296E9968 │ │ │ │ │ +E28585CF46A42FB4530EF657B8DDE269F31881EA02EA9E018E66DE2E700FFBE8 │ │ │ │ │ +D45AE5D57CD91BB28AE2BF8E9F267DC58F03D29E6EB47B73D32CA94A5B436873 │ │ │ │ │ +15DE57E8BB76FD77BCB179E4EDB2C0033E9722437FA580449239DE72C315AC86 │ │ │ │ │ +B814BBDC797623640D594082F36E1DD89075051084386D0F06461196831493AE │ │ │ │ │ +B5C9561B8B5978D735C4C46EF859A21758CBA74B707819E2D26736D738C6FFEA │ │ │ │ │ +E34665E7E2644D5E39D1DB8F67C41E7AD05939431C5483189023991A2412B2EB │ │ │ │ │ +5C113B1D0A51AFE538F3F235BD769E6C228AFA671A931CC7F44EE5623588B8F5 │ │ │ │ │ +2CEB699D99585A390B66EE3D64780CD6CFDC2D76661DA5EA4EC110A0686C8B19 │ │ │ │ │ +B2B8B3E943363ED12E4C9D86D6DF0E2251D8DEA3E88EFF78109E19A55A42D59B │ │ │ │ │ +13A12A54A18BAAD88EA5AC4BF836F7480CB0CC5E06DB45C569179C3FBA1DBB12 │ │ │ │ │ +E254194161486AB678AA77E449FD3689768176B0C8E0E67EB4E3244E35A54571 │ │ │ │ │ +7275DDC6A50B07B70AE190CB1FB094B875C25F928E214FE8A925DA1B75CD2DCD │ │ │ │ │ +83F14069A8A64993E85832359654AFFFB4EB3823FE0668B3E58A46FF6B643357 │ │ │ │ │ +C1457E6D1F4D26EDDE9AAE99E451D3C5D69D12DDB1CCB635A0DCB6261D650DB6 │ │ │ │ │ +564BC77A29996CC3CDA47D5C15974B7E7F7E2D24C9558E1049CD51095A54B202 │ │ │ │ │ +83323FA2E62724168E1917D5E84B8A5CED4A937E2FA2CBB92F357C34DA85C164 │ │ │ │ │ +075BAEBB7AAC45BEA7CFA0B7664B273B300432FA5F0AE9F44EB1617F14E1FB58 │ │ │ │ │ +BB8F95023DA3C474884A73BE24E91E9EF743704F4AACCE2549AC1B06FCA16D6F │ │ │ │ │ +340AF9ABD849F3426E62EF9D0EB7965AB74974618E3DA1F0CA30E17B3AA0ED7C │ │ │ │ │ +39C418778C37BAD6FB1F4576F1454120E81A8C745538A99E34FD05F4ED1316AE │ │ │ │ │ +9B3D53C83D21D49FC774C3FCADD038959CEBE114E0C31034782B2A9F92F18E5C │ │ │ │ │ +D3EDC7DD1B114A7BF56A01304AC02E7D95633829ECD4AD2D7EBDE115B7AFE6AD │ │ │ │ │ +FA7F254A41EBBB333CF7E16D440FECE7DB8844CAD8467686FB3CDB1202E17CF0 │ │ │ │ │ +2B545E44EFFDC554456F3E0A0FAD28BF85A617C65818F9B41EAFBC107A3EB31B │ │ │ │ │ +9A6ED3801127A3CE917CC1BE821B529979E1315AF0C139AC209500B944FAB0B3 │ │ │ │ │ +7780379AB1915E9AB909594134829D2B9D797C66F1D13104AC892C6F74BFEBEE │ │ │ │ │ +5A22E76FCA4ED5F1CEA2697F93F4376A68C3F0088C7794C85A3005228CCA018F │ │ │ │ │ +135C61BCE807090ECA4CFFBA69CDE8B4AC88314112FCE4E17E0B484597D2B89C │ │ │ │ │ +81B04DDE570C076BD4DA4FB4B80BBF53F84C0AEAD5595E2AC0042605E39977FF │ │ │ │ │ +2DAB8D31FD4FA6B57D15F3A961E2F7F31E69C45CAA11ABC2FAFCA9E57A702EDB │ │ │ │ │ +3383AA143BC0546F9232661096BBA233710F8838407EBEA5A06488054D7C3304 │ │ │ │ │ +02040A3EF21CBF07117778162014209D4B68DB5C9CB6714E49D0375BE714941F │ │ │ │ │ +705BCFF89CF8497F5347DEA98EC849ED328798FE991D20BD003B1B0699E7424B │ │ │ │ │ +7FB211772B39855B0CCC830F4A2C974485CC6301A44B4C874944C3C94D79898C │ │ │ │ │ +E78AB1BFE046B184C38050E78328F17579EAB308F017AECDC9B860B740F2B4D5 │ │ │ │ │ +9604E118FECDA0D9C06BD89FD31D3488E387F1C875BC663BAD1CC630E1B53C78 │ │ │ │ │ +4C5B1673681196C90891AA5A65695950F8462C77310625AFB69669D5C19D1F9C │ │ │ │ │ +953939198CFFFD0FE7C9688DF27ED77962D91538534226E882B9CAD9D9B7958C │ │ │ │ │ +7E05AEF15CC05139B67505AFDE1952DCF860EAF22B2323AEE269B83878BE4758 │ │ │ │ │ +87E54D2F3C3A1748B9DC6383BF3552133F4F6480363C3CCFAFBD52EC3176CE6D │ │ │ │ │ +4FF9E1C05A50EC3F56AEABE68FC3470A55C238F521B6A94FE587DE369B2FA3BE │ │ │ │ │ +42B44DA485D867C71540FEBBF51FDE4121B1237C40E0C30309BD78BE5F7F4211 │ │ │ │ │ +CCDA015345354774DA9E7370F050E571740382821FDE9E574AF8181DE27113B0 │ │ │ │ │ +BAD67728D729F9E06E71A4D93BD4203A4FEDCA9F409D8CE26275895D1D66A4BB │ │ │ │ │ +99D9518CF8442BD754D5B7B8D38BD67F307BFA5091D8DD70C45E872BA5212589 │ │ │ │ │ +BA7A55D479F076F59CB8A18AA91C62A911D057F1D18CED6D68C321BADEE02DE9 │ │ │ │ │ +347ABEC4B2996107BD7A01BD97F34FD6BED4EB9E02003F0399410EF80DD91A91 │ │ │ │ │ +5B843737D082275ABBDFB6867AD0E89C8B09FB83D7B2E1987CA4D1B18231256C │ │ │ │ │ +790CA62C409F4A217DEEF3FC9A7B5668CDD2DEADD74F024377E02DDC974D2C9B │ │ │ │ │ +889896D8EC15A3C0FAB81DD51ED9AEADEDEAE8FD8460150D6EDA475E69C3CD04 │ │ │ │ │ +43FD30F8F04D6DA4331749FE430435362DD032A6933C907A9DF2FAF2B38077F5 │ │ │ │ │ +4EB1B02B89EE806B16E12BAE044697A4239E2AFEC81FE7067D60E0CDC7BFD6B3 │ │ │ │ │ +D8B9CD73367C6AAC997178D49EAB23C3876AE49DFD86782539D33EDCC27A7173 │ │ │ │ │ +0518BD6D5869F3984BACF08F7C784508366C29215C718DFD007172A13ABF6F46 │ │ │ │ │ +BBDBA5B5EE18A2F0CC0F8DF30A54D9974194F61D8D0B080C99B3AA69FE7EF7F8 │ │ │ │ │ +1FA45B0F48F731A1C84B954F64345A26A50153F4491F484349EAA7CDE98B9135 │ │ │ │ │ +4F4E5DB83C1740CDB48E0C303640E939572295505D007D377C8A89F13E7E0785 │ │ │ │ │ +B569D98DCEDD2ECBD945EB6AB2A49377E81E76C6E15AB9B59F208CD44002E217 │ │ │ │ │ +5F606261C0C49720A5DB09EF8F11552D36D22D853F3203D9159992875AE6F665 │ │ │ │ │ +C64526AAB184991376BAAC517FBC428A124F9F0939F447D36B612B2DB5BE876E │ │ │ │ │ +7D63DFAEF67925583A6A516C7E863D5CEAFC206D511CB77024A007DDCF7F6919 │ │ │ │ │ +EF76E06DDD0E3A296140F06EF192F5DFD4BBC9B2D3EF3C6559C074292C02437E │ │ │ │ │ +4E9E37C0A274F547D80826FA4BB0B53D6F9C11992C809FF1011ED85DF28FCF36 │ │ │ │ │ +E1DE519438C087BA9B77E5F1 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -2456,20 +2470,20 @@ │ │ │ │ │ 0780FC0C0FC07F0C3F803F8C7F0007CCF80001FFE000007F8000001E0000007F800001FF │ │ │ │ │ E00007CCF8003F8C7F007F0C3F80FC0C0FC0781E0780601E0180001E0000001E0000001E │ │ │ │ │ 0000001E0000001E0000000C00001A1D7C9E23>42 D E │ │ │ │ │ /Fd load 0 Fd currentfont 66.6667 scalefont put/FMat │ │ │ │ │ X/FBB X/IEn X │ │ │ │ │ %EndDVIPSBitmapFont │ │ │ │ │ /Fe 134[51 3[54 38 38 38 2[49 54 81 1[51 1[27 54 49 30 │ │ │ │ │ -43 1[43 1[49 9[100 4[72 1[66 4[76 50 2[77 2[75 70 69 │ │ │ │ │ -73 10[49 1[49 1[49 49 49 1[27 1[27 44[{}33 99.6264 /CMR12 │ │ │ │ │ -rf /Ff 172[90 2[110 121 2[97 6[106 18[81 3[45 46[{}7 │ │ │ │ │ -143.462 /CMBX12 rf /Fg 134[70 2[70 73 51 52 51 2[66 73 │ │ │ │ │ -111 36 2[36 1[66 1[58 3[66 13[73 6[83 76[{}16 143.462 │ │ │ │ │ -/CMR17 rf end │ │ │ │ │ +43 1[43 54 49 9[100 4[72 1[66 4[76 50 2[77 64 1[75 70 │ │ │ │ │ +69 73 8[49 2[49 2[49 49 49 1[27 1[27 44[{}35 99.6264 │ │ │ │ │ +/CMR12 rf /Ff 172[90 2[110 121 2[97 6[106 18[81 3[45 │ │ │ │ │ +46[{}7 143.462 /CMBX12 rf /Fg 134[70 2[70 73 51 52 51 │ │ │ │ │ +2[66 73 111 36 2[36 1[66 1[58 3[66 13[73 6[83 76[{}16 │ │ │ │ │ +143.462 /CMR17 rf end │ │ │ │ │ %%EndProlog │ │ │ │ │ %%BeginSetup │ │ │ │ │ %%Feature: *Resolution 600dpi │ │ │ │ │ TeXDict begin │ │ │ │ │ %%BeginPaperSize: Letter │ │ │ │ │ /setpagedevice where │ │ │ │ │ { pop << /PageSize [612 792] >> setpagedevice } │ │ │ │ │ @@ -2479,15 +2493,15 @@ │ │ │ │ │ end │ │ │ │ │ %%EndSetup │ │ │ │ │ %%Page: 1 1 │ │ │ │ │ TeXDict begin 1 0 bop 590 739 a Fg(Solving)43 b(Linear)g(Systems)f │ │ │ │ │ (using)h Ff(SPOOLES)54 b(2.2)778 1005 y Fe(C.)33 b(C.)g(Ashcraft,)g(R.) │ │ │ │ │ f(G.)h(Grimes,)g(D.)f(J.)h(Pierce,)h(D.)e(K.)g(W)-8 b(ah)1442 │ │ │ │ │ 1121 y(Bo)s(eing)32 b(Phan)m(tom)i(W)-8 b(orks)2458 1085 │ │ │ │ │ -y Fd(*)1586 1340 y Fe(Jan)m(uary)34 b(16,)e(2024)p 0 │ │ │ │ │ +y Fd(*)1566 1341 y Fe(F)g(ebruary)33 b(18,)f(2025)p 0 │ │ │ │ │ 5173 1560 4 v 92 5226 a Fc(*)127 5249 y Fb(P)-6 b(.)33 │ │ │ │ │ b(O.)g(Bo)n(x)h(24346,)j(Mail)32 b(Stop)i(7L-22,)i(Seattle,)h(W)-6 │ │ │ │ │ b(ashington)36 b(98124.)62 b(This)32 b(researc)n(h)i(w)n(as)g(supp)r │ │ │ │ │ (orted)g(in)f(part)h(b)n(y)g(the)g(D)n(ARP)-6 b(A)0 5328 │ │ │ │ │ y(Con)n(tract)33 b(D)n(ABT63-95-C-0122)f(and)g(the)g(DoD)g(High)f(P)n │ │ │ │ │ (erformance)h(Computing)g(Mo)r(dernization)g(Program)f(Common)h(HPC)f │ │ │ │ │ (Soft)n(w)n(are)0 5407 y(Supp)r(ort)25 b(Initiativ)n(e.)1929 │ │ │ │ │ ├── ps2ascii {} │ │ │ │ │ │ @@ -1,8 +1,8 @@ │ │ │ │ │ │ Solving Linear Systems using SPOOLES 2.2 │ │ │ │ │ │ C. C. Ashcraft, R. G. Grimes, D. J. Pierce, D. K. Wah │ │ │ │ │ │ Boeing Phantom Works∗ │ │ │ │ │ │ - January 16, 2024 │ │ │ │ │ │ + February 18, 2025 │ │ │ │ │ │ ∗P. O. Box 24346, Mail Stop 7L-22, Seattle, Washington 98124. This research was supported in part by the DARPA │ │ │ │ │ │ Contract DABT63-95-C-0122 and the DoD High Performance Computing Modernization Program Common HPC Software │ │ │ │ │ │ Support Initiative. │ │ │ │ │ │ 1 │ │ │ ├── ./usr/share/doc/spooles-doc/BKL.ps.gz │ │ │ │ ├── BKL.ps │ │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ │ %%EndComments │ │ │ │ │ %%BeginDefaults │ │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ │ %%EndDefaults │ │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ │ %DVIPSCommandLine: dvips main -o BKL.ps │ │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ │ -%DVIPSSource: TeX output 2024.01.16:2047 │ │ │ │ │ +%DVIPSSource: TeX output 2025.02.18:0318 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -2555,20 +2555,21 @@ │ │ │ │ │ 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 52 /four put │ │ │ │ │ -dup 54 /six put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ +dup 56 /eight put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 74 /J put │ │ │ │ │ +dup 70 /F put │ │ │ │ │ dup 97 /a put │ │ │ │ │ -dup 110 /n put │ │ │ │ │ +dup 98 /b put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ dup 114 /r put │ │ │ │ │ dup 117 /u put │ │ │ │ │ dup 121 /y put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ @@ -2752,89 +2753,93 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ │ -C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ │ -6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ │ -11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ │ -1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ │ -A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ │ -F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ │ -EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ │ -033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ │ -A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ │ -468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8A71FF9C085003EBB4F4 │ │ │ │ │ -3D271F5B16B1AAD3EBDC391F534AA46E545E9D8659DD19B309C3B7625A8396FA │ │ │ │ │ -2519464539D46E43ACB72952313C8497315E0319C08628023E8FC54D7D3BAC29 │ │ │ │ │ -D5AD8EFDABF0C33C7AFB7151A6606C62A87F0F5F783569AC4C881A992E3FE420 │ │ │ │ │ -297F7BC5147F3B2FA98450D2F8B07F7D229BC8BE06729920CFEC22556740E1CB │ │ │ │ │ -3DE09AC763C6D4A20AD1599C368FABD07BC35C16683F2A0311A88983415A9140 │ │ │ │ │ -2EFC4BC1B10DCAD4B2B8A28510E5BD39D6616D2B9B079ED3CF9C315B7DEC29D9 │ │ │ │ │ -251DFD0194B34EC175964C23383F23FFB2E41B698C405815D65EAFF9E9DD1DDE │ │ │ │ │ -30F77924656C288B8DDB2E5B0E7B1FAA66791DE3848EE6DE63AD0E945E49C6C7 │ │ │ │ │ -9FCA16E01F027F9EF7ACB55F02F5B0136480802F789F6FE14B430879979BA04D │ │ │ │ │ -F481AD4CF47E6847936F377FB04869F9A80E597301BFCAB718D8764094673876 │ │ │ │ │ -BCEF8FA3701608C84B3A0399A11D2E6AD922CCB7D72AF9EBFB30F4648A37A123 │ │ │ │ │ -CB8FB14BDC351692CF0CCAA5CA9383C2B23BAAA38700327EB743FBBE9EE04041 │ │ │ │ │ -13F5CEF4B3881BBC051C33369A82B3505B1CFD7D91AEF2E43EA728EE48E2D854 │ │ │ │ │ -5A7E516998ACDD4FD835FA901C5A21810A56D51FE919B2E58408EEB4DAEB487F │ │ │ │ │ -BA7F1D292CED902DF3533566D96DAD918319EA650D4FC7D9E0170CDE620F755B │ │ │ │ │ -0E7AE02D9B118481B26F5FF7060FBCFA2A682B6826F00679BCDA68794C05286D │ │ │ │ │ -B616DD08372ACDE0AE6E7EF116F0D36F16241ED4F0E8CCD80377792E3BB1343C │ │ │ │ │ -EEB22CC77738F7CBCBA32CF6C3979F6DF7ED81A89AE8928FD7CC550F2730BA88 │ │ │ │ │ -1B51CEDC63F4C47F261AFCAB7AC3CED20B15C97E714A460A1A3B16436B4A5149 │ │ │ │ │ -8F91DA4BE0B9B648534CE5F442117036B602DC91E2852BEA62F55803B833FDF7 │ │ │ │ │ -9F901AB87489E703DDEED1091A79DC73B4440BBBF2C7592B441187C4A3562204 │ │ │ │ │ -859F08BA3CE2A8ECCD5AAD13C50FB806FE79A388F1822C5608837CBDE526A044 │ │ │ │ │ -12E5CDE4A066932AF2ACA7E8FC6BA4603640944718752975B7DA6E906BE1EA01 │ │ │ │ │ -46736FF5D1AA1CC682D011B6039CF98C35E36D4F14ABC84A38B7203CC9A17756 │ │ │ │ │ -B2B0345276798F1A88A54AD9FEA0853C6DDF28525ED4F0B7380D14147012C2A4 │ │ │ │ │ -5B02888C986C76497EA4C729B0B82EE73C1A1A8E8F1ABF401E341028E9C15AF9 │ │ │ │ │ -354706D8DC07492921AD0932A46736C0D1B066D00287DACCC068FAE6A796EC89 │ │ │ │ │ -54D1D73AA88F3A5912BA9D3FF70065C8D0D0DAD1CD846501E06694374EFDBEC6 │ │ │ │ │ -931F644D5E8494AFC742423AD9A487658E310E0682BE19B8475F4D450487A686 │ │ │ │ │ -2B94494DEAF1C0F59DE82F2CE64BEE5E97F942FCFA1187ED6AA5761E951A7BF7 │ │ │ │ │ -9F842E34A4656C58B35A9E99F7E6762CEE11E0CF59FFD75D7382C5EE6DBB43F1 │ │ │ │ │ -ED219071D3FB22DBA90977723BB467C0490D042684C0724F40DCA3E0D8F1F4E7 │ │ │ │ │ -3C4F9A67BE6528185EAAFDD415224F7E256A4EA00111C17C746CBD80BF569A27 │ │ │ │ │ -D81195D7F79C1CCEEF30ED00D49F48B63E4B8D7953403A3710AE953CC1B76F0F │ │ │ │ │ -F523D777A6A186F262A602543F94AF7471DBE25FEBC207DB42DAF7DC9A5781FB │ │ │ │ │ -2131AD42869D966A734AAE3466DF1CE9D1BCFA72409A558C0AEE6A8E2FEAACB6 │ │ │ │ │ -2CDABCC28433034848ACF9FB4465D272E4AFC48572647F05F41C7A293CC5B595 │ │ │ │ │ -AD31555FB708A72962707348BC7033A8224BD42EB9D75FDF3AE9E6A9C960B330 │ │ │ │ │ -5137DF59F8E2E0D535F41524ABDF070745A4FA25CD8DFD38A5FF30A95452B875 │ │ │ │ │ -6569E8812631300D79A942C563AF174AC05C9F2D09D7D5D3C605F5A6B7F21B34 │ │ │ │ │ -18F270A993B050838E701A17938D1C156CBA7CA4BAC7C562CE9D7B758EAB25A9 │ │ │ │ │ -A6DFFC71F65561341847B776DF34061CE3D439B87B857626987EC93B3B95B8E8 │ │ │ │ │ -76FFB16B263675333FA10414FEED707FF7C366BF8B20FF8577CDEBEBCF1A5BCE │ │ │ │ │ -258C09C90175A5278B7C444A623E3331FDE5A6387B3E389540ED1E7E883958F3 │ │ │ │ │ -3A5C89CCD62256FA069DF4A5090FB17C1F1757C9209DAFB8A1F47182BF3E88D9 │ │ │ │ │ -0B5376B59EE165A761902759C8ED7F5AD301E7EB8B49CC09AF921DB45B7F8002 │ │ │ │ │ -AB32E73AAE53942DE0F9175D8446017006C9C0B93EF39C13B7A879F2F6DDFF16 │ │ │ │ │ -204BB24F976847CF006FD29332FCCB255B5116F7077A44F7066C39C81DC4BAD2 │ │ │ │ │ -40DB2753626C0102E5D047522ABC38EA294A699B8DFD9CA0A7980561A1062E90 │ │ │ │ │ -AB11EE286A9C238D9F721D9980D0A1828C2814972622D948CEE8C812C19A9A03 │ │ │ │ │ -608ED0AC138A436FFBF8BE3D1E66C87793416AF38ED9BC5424568A175FBDAA9E │ │ │ │ │ -D6FC11A7021693819B051562B5A59F32629E2D6019D69DD329BE1894A2B295E1 │ │ │ │ │ -1DCE9683B29AE126C56F26E5C595BF1A8249BDE231DBE8B066F7F62EF149B975 │ │ │ │ │ -A863969A4690504A5EA064721DA909B8157C0B39FBF8228D95CB655E406161E1 │ │ │ │ │ -148610FAEED7C5509880223C06A66DA19E10F94DC2DB481B26 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004FD597ED │ │ │ │ │ +EFDBC64ABD9B79386FB2427D1A63522195B1239C09F8CB3F8BD7A245A6DD82E3 │ │ │ │ │ +260C3889587626DFC5F7978E55F5524ABD6A3319CDD3D3F40D040044D51DA4E1 │ │ │ │ │ +6797EEAC7AA07C77EC6DB0E6E182B545A8BEF63B14F3FC07BAC09E7CD5C17ED6 │ │ │ │ │ +10080704B0DA4E9BA12F968DF8A58458D17E9A5B1F14A83DC51F5B161ADEE1CC │ │ │ │ │ +0183D82ED92C6FC7203C289949EDF0284D9893029FF5408E421324625F17C3E5 │ │ │ │ │ +2437C8F75A9D68EE1AF9174FEA6FC6BF793C7D2E497EA90396CF1A645E283B69 │ │ │ │ │ +8425F47C323587DF91E1D596DCB1E3A787C955D9D965A5E3E26ADF58B62AD5F9 │ │ │ │ │ +0C9AC784DE479780606354111E3202F215650DBBE1063A46F3C10B9EBC974DDA │ │ │ │ │ +A1A28DBBD43E9E5BFF000B12C787D0427928078F8EC5FE90DED97E6C129E8DEA │ │ │ │ │ +51F66504DB83764E52B0BA68DF7BE684C8959CB1D3345CC48221A9A4683306C0 │ │ │ │ │ +62B634E0A539383F0C7A788D9711EFF414869CCC5659D78CEBE009BF2463F56A │ │ │ │ │ +0ADC993348FE96DF7C250E13ED6504AACFE8F8DCA2D2048D9D8CFA127D363EAC │ │ │ │ │ +1F0630E2D1B621E6954038195D965B91FD974FA3F1B8B29D200A16CEBA645E2F │ │ │ │ │ +CEEE6FD49FBBD49E38AE67D4BFFCE91F1FC422554EC4409C5FA18D40FCD6D9B3 │ │ │ │ │ +2185ED1E0F98106D4339F086B05CA36E56EC22C60E2CE23F9C4CC403ACAD3F94 │ │ │ │ │ +4086B4DF6DFA0B7B4716417263E7B558535566AED2F6C2F9846A16D71A7930A7 │ │ │ │ │ +49232D3D16C4A01CF1A1998A06F40062ED329179A85668537C55D0BC24FC0010 │ │ │ │ │ +54DA83E2FC66B2A5D428E6A9BFC983253668C0ECE6CA36DBF97C4B7659D50842 │ │ │ │ │ +C65B36604840EEDA399B57E2DEFAC3E7FB031634CE33D04238F9854D2AAAF448 │ │ │ │ │ +34DA5F3BCCED3166FEEE82BB0BBA0A397CC2F95865CB52AABFF454D93B425809 │ │ │ │ │ +A26AC459F321FD23E2262FE816D06BAAECF32AAF167F84799AF80F9F88388D07 │ │ │ │ │ +0DB5FD57AFEE2850A8DFE977E6AE39CB3DC16DB1A163A583C86C6F775CE33521 │ │ │ │ │ +0081C0BBBAD6D30D26C66B28B38CEAC78FEA5FB3CC5853656B67C6D9D80EB30E │ │ │ │ │ +397558C9179AF5920F34DAB3F578DFCF0DBB137AED17D6325C23883E69EE4621 │ │ │ │ │ +34355A70C19EA68891E1CA937376901C85CDEE109F1665943E29A216DC00937A │ │ │ │ │ +B983A729A4654AD09187C0242D52FA4ADD0853EF4888864914D7D81C56578DD4 │ │ │ │ │ +3B51907032022E6E412D4F114675DEDCA8A9E85DC03A0B583FECD84432D15F70 │ │ │ │ │ +01F627BD6EC91F9FCFDA01BF40E1229B5F164309DBB641AD50970503DA2048C1 │ │ │ │ │ +DF8F36E8D252EE113F0B46677D9BAF376BAE18D74CFB0DBBD0C7E9D0A58BA3ED │ │ │ │ │ +1E5099CAE073EB5638617760AB57849893764EA9735173CD1EAB66884CEA7EE3 │ │ │ │ │ +8843327B2E145BD6FBB49102776B82BC511D109F8BE9E7E99DADABABEDC3CFD9 │ │ │ │ │ +393578FFD85907DFF2849E4CDE6FA4DEC7E1C150EBE4047FFB650F9548BE6D11 │ │ │ │ │ +0C51226A5436F18BF20A02E0F888F46B6AC3A8E8D927ECD3B5E095933AD3859F │ │ │ │ │ +5167C41D832EFCC4093BD2AFA7101AB430E57DAFC3590F05D3CBABB32BC203A0 │ │ │ │ │ +467B23BDB830487C9AA5B85BAC065F8538871B4180F8C4732E637DB090CFDE5A │ │ │ │ │ +3F4F2B5BFAFB848BAAD1A17CB076B34159601639BD93ECAB1214ACABF2C67FE2 │ │ │ │ │ +0658AA20B08681070FF56F1CC52144ABA8765D6E124D1CEA9BBA102808CE1BB2 │ │ │ │ │ +5EDF46BC7BBC2A5B49EE6EC28F5797A3969B057B21FCDBBD0E60848FF14F6CA3 │ │ │ │ │ +70F3060BDBB019B22722C99C7691760F013763B7FBEB62830AE215F195BF9F01 │ │ │ │ │ +21BF4377397E89574CFA47D123AA506A570A77BA6EB4AAB0B237A26154880293 │ │ │ │ │ +3952F832F72ECCB024F02385E5EE8566B165904B594E30D0700D033C6B429F6F │ │ │ │ │ +2A20BC774F442BC9CE29FCC81807C2768A8BC927A215558FBF36DC53F477F04A │ │ │ │ │ +41DA66E1A85B659EB761230977EAD7DA0150513D3323B143D4E2A61BCF03334C │ │ │ │ │ +C0EE3E1B06CFAF58ECC910BD81F0352B75FF1594D6A4EF504232D442174BE766 │ │ │ │ │ +0F8E703F97E21D25D4CD097549C31FEE7017C3916EFB02E7BF869172889827B6 │ │ │ │ │ +A48465EB7612BA3DBC6A9436C7167F149A25CE9F8E3F4F8DE3B5ADF6C0986CB3 │ │ │ │ │ +3A7E2DAB44AB489796461536F5F713017F2620AD03295CAE9285F08974AE0DF8 │ │ │ │ │ +D739260929619B509491AFF09C4CAEF9E65C2CA69470C907ECBF3AB6C955360D │ │ │ │ │ +05ABAC306DB51122A1ADC7EF0DD70FA299A45C505A83727D4598C86319EE9C06 │ │ │ │ │ +7218EFD4F40388354BCF1B79593D5AD221DF955D081F99F880E5CED07321AB3E │ │ │ │ │ +A2FCB8B05D54807D8E15E65B78DCE12989B9276350080C905DBB74CE9AA7E246 │ │ │ │ │ +5D3BAED292C562D4CF54617FCC6654496C7996D1ECE1EFF9258716AB763A12E6 │ │ │ │ │ +316E4C5587351A6DB011F58F6A15BC28BEBDC3836E0CB892807FEC228DC1B380 │ │ │ │ │ +92F7F42279F08D60F13D6A4CB425543C3644461461CBF6F27B6603F613D1FCF8 │ │ │ │ │ +A8410AD82D1498166AEB35D4125D7E2ADEAAB18BC04806AED53513F066E5F154 │ │ │ │ │ +3E13E863C50B9814EE2FB978D0D24A03FAF650CB6E2CADF1E6BE6BAF699AFC03 │ │ │ │ │ +E1A0EEB207B3B9A689ED5B373FE86686AD230BE6C18E1673DDA50E224B343EC5 │ │ │ │ │ +903BA0C8041C13607B50D5852AC7970B15C244E6EBA7D54B3086312CF04761D6 │ │ │ │ │ +7D3D75D51F20C371494AB81AB4A9838B20B483B851D01FEF41EA5C0B4755B964 │ │ │ │ │ +EB6E9B178051C556A010994EB88EAE641F4C1A0D7E0F98D5267E18AEF1AEA7E7 │ │ │ │ │ +9030A97DF89AFF621981C33B645FFB5F3BB2065A7661D11B26E0999561DF3580 │ │ │ │ │ +4A76A05DFAF8085525F8D5C01936F03C32E26E72569371C9EA3B8916F9DFC5FC │ │ │ │ │ +6A6F25A0FFDB981BA8B896393D75774D50828E6ADE903C45406E354703A4BC56 │ │ │ │ │ +2C49A47FEAC970DC433E3050C49F7FB945A9705BD8852D2D65D935F244D3B423 │ │ │ │ │ +EFAB84AAAAB8FBAFF50AFF372A533BCCEB5FC273DBADCF715776DF02A5DCBA9A │ │ │ │ │ +FBF265FAB4745D6475B33611EEE1EA95E7584E0BEEC7CA789AA69C8D03D6F8C0 │ │ │ │ │ +5B6844E2B901ACA560C0433B053D134866E567425174E47173679AAD4486A2D3 │ │ │ │ │ +369C29E4DD2CD6ACA1BE80ED8FF0A9C58A616D26E758BD8E6342624EC83FB590 │ │ │ │ │ +BD354B52B60BB054FAFE9AC63E1564FBC721FE8F276B0413EC89A2C85E5ED1B0 │ │ │ │ │ +3A9D83BE62A4488ADE7CE69971A8AF7E5862A4290EEF6F00D4171C7FFB360065 │ │ │ │ │ +92E72BF02BE27161AE0BB5516572A0BDC4F316FFB24B38484AC8D1FD4CD86062 │ │ │ │ │ +A2B5D03CF28C3A679C039A6EFDD4C9DA7E463AD60234C9F6BBEE48D87DD94D85 │ │ │ │ │ +842F495F3E25723718682CE4D6224CBBF4456F03077EDF736D65B9DDAB09470E │ │ │ │ │ +17742D82011FFA96BFE86B96E858F9352FCD20C3D46B77DBDEE54336EC2249EA │ │ │ │ │ +211F6DFFF5BEA1E5192BE1BAC0BDD5EDDB3D56C6F7C6E543561A0B39E5C1B04F │ │ │ │ │ +C683A7516B6E69D682455386DDA709929D621FA434D403E895AA0A77DBE1DFD2 │ │ │ │ │ +0D060DF82378880147ED97C6E8149686FA048710B113760AC1DA4512FF8556B3 │ │ │ │ │ +16E2447485B8C3CD58D0469C4A45FFB4CB0322BB284C02 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -4124,16 +4129,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 1[45 1[45 │ │ │ │ │ -45 45 3[25 44[{}13 90.9091 /CMSL10 rf │ │ │ │ │ +134[48 3[51 2[36 12[40 2[51 45 26[59 11[25 1[45 2[45 │ │ │ │ │ +2[45 45 45 3[25 44[{}14 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 │ │ │ │ │ @@ -4242,17 +4247,17 @@ │ │ │ │ │ 5294 y Fi(\210)45 b Fk(int)i(*cweights)28 b Fl(:)40 b(p)s(oin)m(ter)30 │ │ │ │ │ b(to)h(an)f Fk(int)f Fl(v)m(ector)j(of)e(size)h(3,)g │ │ │ │ │ Fk(cweights[0])c Fl(con)m(tains)32 b(the)e(w)m(eigh)m(t)h(of)g(the)227 │ │ │ │ │ 5407 y(separator,)h Fk(cweights[1])27 b Fl(and)j Fk(cweights[2])d │ │ │ │ │ Fl(con)m(tains)k(the)g(w)m(eigh)m(ts)h(of)e(the)h(t)m(w)m(o)h(comp)s │ │ │ │ │ (onen)m(ts)1927 5656 y(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fl(2)p 136 100 1159 4 v │ │ │ │ │ -1341 w Fk(BKL)29 b Fh(:)i Fg(DRAFT)f Fh(Jan)m(uary)g(16,)i(2024)p │ │ │ │ │ -2741 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 1140 4 v │ │ │ │ │ +1322 w Fk(BKL)29 b Fh(:)i Fg(DRAFT)f Fh(F)-8 b(ebruary)30 │ │ │ │ │ +b(18,)i(2025)p 2760 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 │ │ │ │ │ @@ -4297,17 +4302,17 @@ │ │ │ │ │ (call)h(to)f Fk(BKL)p 2265 5125 V 34 w(clearData\(\))c │ │ │ │ │ Fl(then)j(free's)h(the)f(storage)i(for)227 5238 y(the)31 │ │ │ │ │ b(structure)f(with)g(a)h(call)g(to)g Fk(free\(\))p Fl(.)227 │ │ │ │ │ 5407 y Fg(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fl(If)30 │ │ │ │ │ b Fk(bkl)g Fl(is)g Fk(NULL)p Fl(,)g(an)g(error)g(message)h(is)g(prin)m │ │ │ │ │ (ted)f(and)g(the)g(program)g(exits.)p eop end │ │ │ │ │ %%Page: 3 3 │ │ │ │ │ -TeXDict begin 3 2 bop 91 100 1159 4 v 1340 100 a Fk(BKL)30 │ │ │ │ │ -b Fh(:)g Fg(DRAFT)122 b Fh(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2694 100 V 1159 w Fl(3)0 399 y Fe(1.3.1)112 b(Initializer)38 │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1140 4 v 1321 100 a Fk(BKL)30 │ │ │ │ │ +b Fh(:)g Fg(DRAFT)122 b Fh(F)-8 b(ebruary)30 b(18,)h(2025)p │ │ │ │ │ +2713 100 V 1140 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 │ │ │ │ │ @@ -4371,17 +4376,17 @@ │ │ │ │ │ y(6.)46 b Fk(float)h(BKL_setInitPart)c(\()48 b(BKL)f(*bkl,)f(int)h │ │ │ │ │ (flag,)f(int)h(seed,)g(int)f(domcolors[])f(\))j(;)227 │ │ │ │ │ 5294 y Fl(This)43 b(metho)s(d)g(sets)h(the)f(initial)i(partition)f(b)m │ │ │ │ │ (y)f(coloring)i(the)e(domains)h(and)e(segmen)m(ts.)81 │ │ │ │ │ b(The)43 b Fk(flag)227 5407 y Fl(parameter)31 b(has)f(the)h(follo)m │ │ │ │ │ (wing)h(v)-5 b(alues.)p eop end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fl(4)p 136 100 1159 4 v │ │ │ │ │ -1341 w Fk(BKL)29 b Fh(:)i Fg(DRAFT)f Fh(Jan)m(uary)g(16,)i(2024)p │ │ │ │ │ -2741 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 1140 4 v │ │ │ │ │ +1322 w Fk(BKL)29 b Fh(:)i Fg(DRAFT)f Fh(F)-8 b(ebruary)30 │ │ │ │ │ +b(18,)i(2025)p 2760 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 │ │ │ │ │ @@ -4449,17 +4454,17 @@ │ │ │ │ │ b(it)g(returns)e(\()p Fd(j)p Fc(S)5 b Fd(j)21 b Fl(+)f │ │ │ │ │ Fd(j)p Fc(B)5 b Fd(j)20 b Fl(+)g Fd(j)p Fc(W)13 b Fd(j)p │ │ │ │ │ Fl(\))1714 5211 y Fa(2)1754 5244 y Fl(.)227 5407 y Fg(Err)-5 │ │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fl(If)30 b Fk(bkl)g Fl(is)g │ │ │ │ │ Fk(NULL)p Fl(,)g(an)g(error)g(message)h(is)g(prin)m(ted)f(and)g(the)g │ │ │ │ │ (program)g(exits.)p eop end │ │ │ │ │ %%Page: 5 5 │ │ │ │ │ -TeXDict begin 5 4 bop 91 100 1159 4 v 1340 100 a Fk(BKL)30 │ │ │ │ │ -b Fh(:)g Fg(DRAFT)122 b Fh(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2694 100 V 1159 w Fl(5)111 399 y(3.)46 b Fk(float)h(BKL_eval)e(\()j │ │ │ │ │ +TeXDict begin 5 4 bop 91 100 1140 4 v 1321 100 a Fk(BKL)30 │ │ │ │ │ +b Fh(:)g Fg(DRAFT)122 b Fh(F)-8 b(ebruary)30 b(18,)h(2025)p │ │ │ │ │ +2713 100 V 1140 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 16, 2024 │ │ │ │ │ │ + 2 BKL : DRAFT February 18, 2025 │ │ │ │ │ │ • int *regwghts : pointer to an int vector of size nreg, used to store the weights of the │ │ │ │ │ │ domains and segments │ │ │ │ │ │ • float alpha : number used to store the partition evaluation parameter, the cost of the │ │ │ │ │ │ partition is │ │ │ │ │ │ balance = max(cweights[1], cweights[2])/min(cweights[1], cweights[2]) ; │ │ │ │ │ │ cost = cweights[0]*(1. + alpha*balance) ; │ │ │ │ │ │ 1.2 Prototypes and descriptions of BKL methods │ │ │ │ │ │ @@ -47,15 +47,15 @@ │ │ │ │ │ │ This method clears any data allocated by the object, namely the colors and regwghts vec- │ │ │ │ │ │ tors. It then fills the structure’s fields with default values with a call to BKL setDefaultFields(). │ │ │ │ │ │ Error checking: If bkl is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 4. void BKL_free ( BKL *bkl ) ; │ │ │ │ │ │ This method releases any storage by a call to BKL clearData() then free’s the storage for │ │ │ │ │ │ the structure with a call to free(). │ │ │ │ │ │ Error checking: If bkl is NULL, an error message is printed and the program exits. │ │ │ │ │ │ - BKL : DRAFT January 16, 2024 3 │ │ │ │ │ │ + BKL : DRAFT February 18, 2025 3 │ │ │ │ │ │ 1.3.1 Initializer methods │ │ │ │ │ │ 1. void BKL_init ( BKL *bkl, BPG *bpg, float alpha ) ; │ │ │ │ │ │ This method initializes the BKL object given a bipartite graph object and cost function pa- │ │ │ │ │ │ rameter as input. Any previous data is cleared with a call to BKL clearData(). The ndom, │ │ │ │ │ │ nseg and nreg scalars are set, the regwghts[] vector allocated and filled, and the colors[] │ │ │ │ │ │ vector allocated and filled with zeros. │ │ │ │ │ │ Error checking: If bkl or bpg is NULL, an error message is printed and the program exits. │ │ │ │ │ │ @@ -84,15 +84,15 @@ │ │ │ │ │ │ This method returns the next domain id in a grey code sequence, used to exhaustively search │ │ │ │ │ │ of a subspace of partitions defined by set of candidate domains to flip. The value count │ │ │ │ │ │ ranges from 1 to 2ndom. │ │ │ │ │ │ Error checking: If bkl is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 6. float BKL_setInitPart ( BKL *bkl, int flag, int seed, int domcolors[] ) ; │ │ │ │ │ │ This method sets the initial partition by coloring the domains and segments. The flag │ │ │ │ │ │ parameter has the following values. │ │ │ │ │ │ - 4 BKL : DRAFT January 16, 2024 │ │ │ │ │ │ + 4 BKL : DRAFT February 18, 2025 │ │ │ │ │ │ • flag = 1 −→ random coloring of the domains │ │ │ │ │ │ • flag = 2 −→ one black domain, (seed % ndom), rest are white │ │ │ │ │ │ • flag = 3 −→ one black pseudoperipheral domain, found using domain (seed % ndom) │ │ │ │ │ │ as root, rest are white │ │ │ │ │ │ • flag = 4 −→ roughly half-half split, breadth first search of domains, (seed % ndom) as │ │ │ │ │ │ root │ │ │ │ │ │ • flag = 5 −→ roughly half-half split, breadth first search of domains, (seed % ndom) as │ │ │ │ │ │ @@ -119,15 +119,15 @@ │ │ │ │ │ │ The |S|, |B| and |W| values are taken from the cweights[] vector. If min(|B|,|W|) > 0, this │ │ │ │ │ │ function returns   │ │ │ │ │ │ |S| 1+α∗max(|B|,|W|) , │ │ │ │ │ │ min(|B|,|W|) │ │ │ │ │ │ 2 │ │ │ │ │ │ otherwise it returns (|S| + |B| + |W|) . │ │ │ │ │ │ Error checking: If bkl is NULL, an error message is printed and the program exits. │ │ │ │ │ │ - BKL : DRAFT January 16, 2024 5 │ │ │ │ │ │ + BKL : DRAFT February 18, 2025 5 │ │ │ │ │ │ 3. float BKL_eval ( BKL *bkl, int Sweight, int Bweight, int Wweight ) ; │ │ │ │ │ │ The |S|, |B| and |W| values are taken from the Sweight, Bweight and Wweight parameters. │ │ │ │ │ │ If min(|B|,|W|) > 0, this function returns │ │ │ │ │ │ |S|1+α∗ max(|B|,|W|), │ │ │ │ │ │ min(|B|,|W|) │ │ │ │ │ │ 2 │ │ │ │ │ │ otherwise it returns (|S| + |B| + |W|) . The method checks that bkl is not NULL. │ │ │ ├── ./usr/share/doc/spooles-doc/BPG.ps.gz │ │ │ │ ├── BPG.ps │ │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ │ %%EndComments │ │ │ │ │ %%BeginDefaults │ │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ │ %%EndDefaults │ │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ │ %DVIPSCommandLine: dvips main -o BPG.ps │ │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ │ -%DVIPSSource: TeX output 2024.01.16:2047 │ │ │ │ │ +%DVIPSSource: TeX output 2025.02.18:0318 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -1427,20 +1427,21 @@ │ │ │ │ │ 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 52 /four put │ │ │ │ │ -dup 54 /six put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ +dup 56 /eight put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 74 /J put │ │ │ │ │ +dup 70 /F put │ │ │ │ │ dup 97 /a put │ │ │ │ │ -dup 110 /n put │ │ │ │ │ +dup 98 /b put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ dup 114 /r put │ │ │ │ │ dup 117 /u put │ │ │ │ │ dup 121 /y put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ @@ -1624,89 +1625,93 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ │ -C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ │ -6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ │ -11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ │ -1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ │ -A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ │ -F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ │ -EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ │ -033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ │ -A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ │ -468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8A71FF9C085003EBB4F4 │ │ │ │ │ -3D271F5B16B1AAD3EBDC391F534AA46E545E9D8659DD19B309C3B7625A8396FA │ │ │ │ │ -2519464539D46E43ACB72952313C8497315E0319C08628023E8FC54D7D3BAC29 │ │ │ │ │ -D5AD8EFDABF0C33C7AFB7151A6606C62A87F0F5F783569AC4C881A992E3FE420 │ │ │ │ │ -297F7BC5147F3B2FA98450D2F8B07F7D229BC8BE06729920CFEC22556740E1CB │ │ │ │ │ -3DE09AC763C6D4A20AD1599C368FABD07BC35C16683F2A0311A88983415A9140 │ │ │ │ │ -2EFC4BC1B10DCAD4B2B8A28510E5BD39D6616D2B9B079ED3CF9C315B7DEC29D9 │ │ │ │ │ -251DFD0194B34EC175964C23383F23FFB2E41B698C405815D65EAFF9E9DD1DDE │ │ │ │ │ -30F77924656C288B8DDB2E5B0E7B1FAA66791DE3848EE6DE63AD0E945E49C6C7 │ │ │ │ │ -9FCA16E01F027F9EF7ACB55F02F5B0136480802F789F6FE14B430879979BA04D │ │ │ │ │ -F481AD4CF47E6847936F377FB04869F9A80E597301BFCAB718D8764094673876 │ │ │ │ │ -BCEF8FA3701608C84B3A0399A11D2E6AD922CCB7D72AF9EBFB30F4648A37A123 │ │ │ │ │ -CB8FB14BDC351692CF0CCAA5CA9383C2B23BAAA38700327EB743FBBE9EE04041 │ │ │ │ │ -13F5CEF4B3881BBC051C33369A82B3505B1CFD7D91AEF2E43EA728EE48E2D854 │ │ │ │ │ -5A7E516998ACDD4FD835FA901C5A21810A56D51FE919B2E58408EEB4DAEB487F │ │ │ │ │ -BA7F1D292CED902DF3533566D96DAD918319EA650D4FC7D9E0170CDE620F755B │ │ │ │ │ -0E7AE02D9B118481B26F5FF7060FBCFA2A682B6826F00679BCDA68794C05286D │ │ │ │ │ -B616DD08372ACDE0AE6E7EF116F0D36F16241ED4F0E8CCD80377792E3BB1343C │ │ │ │ │ -EEB22CC77738F7CBCBA32CF6C3979F6DF7ED81A89AE8928FD7CC550F2730BA88 │ │ │ │ │ -1B51CEDC63F4C47F261AFCAB7AC3CED20B15C97E714A460A1A3B16436B4A5149 │ │ │ │ │ -8F91DA4BE0B9B648534CE5F442117036B602DC91E2852BEA62F55803B833FDF7 │ │ │ │ │ -9F901AB87489E703DDEED1091A79DC73B4440BBBF2C7592B441187C4A3562204 │ │ │ │ │ -859F08BA3CE2A8ECCD5AAD13C50FB806FE79A388F1822C5608837CBDE526A044 │ │ │ │ │ -12E5CDE4A066932AF2ACA7E8FC6BA4603640944718752975B7DA6E906BE1EA01 │ │ │ │ │ -46736FF5D1AA1CC682D011B6039CF98C35E36D4F14ABC84A38B7203CC9A17756 │ │ │ │ │ -B2B0345276798F1A88A54AD9FEA0853C6DDF28525ED4F0B7380D14147012C2A4 │ │ │ │ │ -5B02888C986C76497EA4C729B0B82EE73C1A1A8E8F1ABF401E341028E9C15AF9 │ │ │ │ │ -354706D8DC07492921AD0932A46736C0D1B066D00287DACCC068FAE6A796EC89 │ │ │ │ │ -54D1D73AA88F3A5912BA9D3FF70065C8D0D0DAD1CD846501E06694374EFDBEC6 │ │ │ │ │ -931F644D5E8494AFC742423AD9A487658E310E0682BE19B8475F4D450487A686 │ │ │ │ │ -2B94494DEAF1C0F59DE82F2CE64BEE5E97F942FCFA1187ED6AA5761E951A7BF7 │ │ │ │ │ -9F842E34A4656C58B35A9E99F7E6762CEE11E0CF59FFD75D7382C5EE6DBB43F1 │ │ │ │ │ -ED219071D3FB22DBA90977723BB467C0490D042684C0724F40DCA3E0D8F1F4E7 │ │ │ │ │ -3C4F9A67BE6528185EAAFDD415224F7E256A4EA00111C17C746CBD80BF569A27 │ │ │ │ │ -D81195D7F79C1CCEEF30ED00D49F48B63E4B8D7953403A3710AE953CC1B76F0F │ │ │ │ │ -F523D777A6A186F262A602543F94AF7471DBE25FEBC207DB42DAF7DC9A5781FB │ │ │ │ │ -2131AD42869D966A734AAE3466DF1CE9D1BCFA72409A558C0AEE6A8E2FEAACB6 │ │ │ │ │ -2CDABCC28433034848ACF9FB4465D272E4AFC48572647F05F41C7A293CC5B595 │ │ │ │ │ -AD31555FB708A72962707348BC7033A8224BD42EB9D75FDF3AE9E6A9C960B330 │ │ │ │ │ -5137DF59F8E2E0D535F41524ABDF070745A4FA25CD8DFD38A5FF30A95452B875 │ │ │ │ │ -6569E8812631300D79A942C563AF174AC05C9F2D09D7D5D3C605F5A6B7F21B34 │ │ │ │ │ -18F270A993B050838E701A17938D1C156CBA7CA4BAC7C562CE9D7B758EAB25A9 │ │ │ │ │ -A6DFFC71F65561341847B776DF34061CE3D439B87B857626987EC93B3B95B8E8 │ │ │ │ │ -76FFB16B263675333FA10414FEED707FF7C366BF8B20FF8577CDEBEBCF1A5BCE │ │ │ │ │ -258C09C90175A5278B7C444A623E3331FDE5A6387B3E389540ED1E7E883958F3 │ │ │ │ │ -3A5C89CCD62256FA069DF4A5090FB17C1F1757C9209DAFB8A1F47182BF3E88D9 │ │ │ │ │ -0B5376B59EE165A761902759C8ED7F5AD301E7EB8B49CC09AF921DB45B7F8002 │ │ │ │ │ -AB32E73AAE53942DE0F9175D8446017006C9C0B93EF39C13B7A879F2F6DDFF16 │ │ │ │ │ -204BB24F976847CF006FD29332FCCB255B5116F7077A44F7066C39C81DC4BAD2 │ │ │ │ │ -40DB2753626C0102E5D047522ABC38EA294A699B8DFD9CA0A7980561A1062E90 │ │ │ │ │ -AB11EE286A9C238D9F721D9980D0A1828C2814972622D948CEE8C812C19A9A03 │ │ │ │ │ -608ED0AC138A436FFBF8BE3D1E66C87793416AF38ED9BC5424568A175FBDAA9E │ │ │ │ │ -D6FC11A7021693819B051562B5A59F32629E2D6019D69DD329BE1894A2B295E1 │ │ │ │ │ -1DCE9683B29AE126C56F26E5C595BF1A8249BDE231DBE8B066F7F62EF149B975 │ │ │ │ │ -A863969A4690504A5EA064721DA909B8157C0B39FBF8228D95CB655E406161E1 │ │ │ │ │ -148610FAEED7C5509880223C06A66DA19E10F94DC2DB481B26 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004FD597ED │ │ │ │ │ +EFDBC64ABD9B79386FB2427D1A63522195B1239C09F8CB3F8BD7A245A6DD82E3 │ │ │ │ │ +260C3889587626DFC5F7978E55F5524ABD6A3319CDD3D3F40D040044D51DA4E1 │ │ │ │ │ +6797EEAC7AA07C77EC6DB0E6E182B545A8BEF63B14F3FC07BAC09E7CD5C17ED6 │ │ │ │ │ +10080704B0DA4E9BA12F968DF8A58458D17E9A5B1F14A83DC51F5B161ADEE1CC │ │ │ │ │ +0183D82ED92C6FC7203C289949EDF0284D9893029FF5408E421324625F17C3E5 │ │ │ │ │ +2437C8F75A9D68EE1AF9174FEA6FC6BF793C7D2E497EA90396CF1A645E283B69 │ │ │ │ │ +8425F47C323587DF91E1D596DCB1E3A787C955D9D965A5E3E26ADF58B62AD5F9 │ │ │ │ │ +0C9AC784DE479780606354111E3202F215650DBBE1063A46F3C10B9EBC974DDA │ │ │ │ │ +A1A28DBBD43E9E5BFF000B12C787D0427928078F8EC5FE90DED97E6C129E8DEA │ │ │ │ │ +51F66504DB83764E52B0BA68DF7BE684C8959CB1D3345CC48221A9A4683306C0 │ │ │ │ │ +62B634E0A539383F0C7A788D9711EFF414869CCC5659D78CEBE009BF2463F56A │ │ │ │ │ +0ADC993348FE96DF7C250E13ED6504AACFE8F8DCA2D2048D9D8CFA127D363EAC │ │ │ │ │ +1F0630E2D1B621E6954038195D965B91FD974FA3F1B8B29D200A16CEBA645E2F │ │ │ │ │ +CEEE6FD49FBBD49E38AE67D4BFFCE91F1FC422554EC4409C5FA18D40FCD6D9B3 │ │ │ │ │ +2185ED1E0F98106D4339F086B05CA36E56EC22C60E2CE23F9C4CC403ACAD3F94 │ │ │ │ │ +4086B4DF6DFA0B7B4716417263E7B558535566AED2F6C2F9846A16D71A7930A7 │ │ │ │ │ +49232D3D16C4A01CF1A1998A06F40062ED329179A85668537C55D0BC24FC0010 │ │ │ │ │ +54DA83E2FC66B2A5D428E6A9BFC983253668C0ECE6CA36DBF97C4B7659D50842 │ │ │ │ │ +C65B36604840EEDA399B57E2DEFAC3E7FB031634CE33D04238F9854D2AAAF448 │ │ │ │ │ +34DA5F3BCCED3166FEEE82BB0BBA0A397CC2F95865CB52AABFF454D93B425809 │ │ │ │ │ +A26AC459F321FD23E2262FE816D06BAAECF32AAF167F84799AF80F9F88388D07 │ │ │ │ │ +0DB5FD57AFEE2850A8DFE977E6AE39CB3DC16DB1A163A583C86C6F775CE33521 │ │ │ │ │ +0081C0BBBAD6D30D26C66B28B38CEAC78FEA5FB3CC5853656B67C6D9D80EB30E │ │ │ │ │ +397558C9179AF5920F34DAB3F578DFCF0DBB137AED17D6325C23883E69EE4621 │ │ │ │ │ +34355A70C19EA68891E1CA937376901C85CDEE109F1665943E29A216DC00937A │ │ │ │ │ +B983A729A4654AD09187C0242D52FA4ADD0853EF4888864914D7D81C56578DD4 │ │ │ │ │ +3B51907032022E6E412D4F114675DEDCA8A9E85DC03A0B583FECD84432D15F70 │ │ │ │ │ +01F627BD6EC91F9FCFDA01BF40E1229B5F164309DBB641AD50970503DA2048C1 │ │ │ │ │ +DF8F36E8D252EE113F0B46677D9BAF376BAE18D74CFB0DBBD0C7E9D0A58BA3ED │ │ │ │ │ +1E5099CAE073EB5638617760AB57849893764EA9735173CD1EAB66884CEA7EE3 │ │ │ │ │ +8843327B2E145BD6FBB49102776B82BC511D109F8BE9E7E99DADABABEDC3CFD9 │ │ │ │ │ +393578FFD85907DFF2849E4CDE6FA4DEC7E1C150EBE4047FFB650F9548BE6D11 │ │ │ │ │ +0C51226A5436F18BF20A02E0F888F46B6AC3A8E8D927ECD3B5E095933AD3859F │ │ │ │ │ +5167C41D832EFCC4093BD2AFA7101AB430E57DAFC3590F05D3CBABB32BC203A0 │ │ │ │ │ +467B23BDB830487C9AA5B85BAC065F8538871B4180F8C4732E637DB090CFDE5A │ │ │ │ │ +3F4F2B5BFAFB848BAAD1A17CB076B34159601639BD93ECAB1214ACABF2C67FE2 │ │ │ │ │ +0658AA20B08681070FF56F1CC52144ABA8765D6E124D1CEA9BBA102808CE1BB2 │ │ │ │ │ +5EDF46BC7BBC2A5B49EE6EC28F5797A3969B057B21FCDBBD0E60848FF14F6CA3 │ │ │ │ │ +70F3060BDBB019B22722C99C7691760F013763B7FBEB62830AE215F195BF9F01 │ │ │ │ │ +21BF4377397E89574CFA47D123AA506A570A77BA6EB4AAB0B237A26154880293 │ │ │ │ │ +3952F832F72ECCB024F02385E5EE8566B165904B594E30D0700D033C6B429F6F │ │ │ │ │ +2A20BC774F442BC9CE29FCC81807C2768A8BC927A215558FBF36DC53F477F04A │ │ │ │ │ +41DA66E1A85B659EB761230977EAD7DA0150513D3323B143D4E2A61BCF03334C │ │ │ │ │ +C0EE3E1B06CFAF58ECC910BD81F0352B75FF1594D6A4EF504232D442174BE766 │ │ │ │ │ +0F8E703F97E21D25D4CD097549C31FEE7017C3916EFB02E7BF869172889827B6 │ │ │ │ │ +A48465EB7612BA3DBC6A9436C7167F149A25CE9F8E3F4F8DE3B5ADF6C0986CB3 │ │ │ │ │ +3A7E2DAB44AB489796461536F5F713017F2620AD03295CAE9285F08974AE0DF8 │ │ │ │ │ +D739260929619B509491AFF09C4CAEF9E65C2CA69470C907ECBF3AB6C955360D │ │ │ │ │ +05ABAC306DB51122A1ADC7EF0DD70FA299A45C505A83727D4598C86319EE9C06 │ │ │ │ │ +7218EFD4F40388354BCF1B79593D5AD221DF955D081F99F880E5CED07321AB3E │ │ │ │ │ +A2FCB8B05D54807D8E15E65B78DCE12989B9276350080C905DBB74CE9AA7E246 │ │ │ │ │ +5D3BAED292C562D4CF54617FCC6654496C7996D1ECE1EFF9258716AB763A12E6 │ │ │ │ │ +316E4C5587351A6DB011F58F6A15BC28BEBDC3836E0CB892807FEC228DC1B380 │ │ │ │ │ +92F7F42279F08D60F13D6A4CB425543C3644461461CBF6F27B6603F613D1FCF8 │ │ │ │ │ +A8410AD82D1498166AEB35D4125D7E2ADEAAB18BC04806AED53513F066E5F154 │ │ │ │ │ +3E13E863C50B9814EE2FB978D0D24A03FAF650CB6E2CADF1E6BE6BAF699AFC03 │ │ │ │ │ +E1A0EEB207B3B9A689ED5B373FE86686AD230BE6C18E1673DDA50E224B343EC5 │ │ │ │ │ +903BA0C8041C13607B50D5852AC7970B15C244E6EBA7D54B3086312CF04761D6 │ │ │ │ │ +7D3D75D51F20C371494AB81AB4A9838B20B483B851D01FEF41EA5C0B4755B964 │ │ │ │ │ +EB6E9B178051C556A010994EB88EAE641F4C1A0D7E0F98D5267E18AEF1AEA7E7 │ │ │ │ │ +9030A97DF89AFF621981C33B645FFB5F3BB2065A7661D11B26E0999561DF3580 │ │ │ │ │ +4A76A05DFAF8085525F8D5C01936F03C32E26E72569371C9EA3B8916F9DFC5FC │ │ │ │ │ +6A6F25A0FFDB981BA8B896393D75774D50828E6ADE903C45406E354703A4BC56 │ │ │ │ │ +2C49A47FEAC970DC433E3050C49F7FB945A9705BD8852D2D65D935F244D3B423 │ │ │ │ │ +EFAB84AAAAB8FBAFF50AFF372A533BCCEB5FC273DBADCF715776DF02A5DCBA9A │ │ │ │ │ +FBF265FAB4745D6475B33611EEE1EA95E7584E0BEEC7CA789AA69C8D03D6F8C0 │ │ │ │ │ +5B6844E2B901ACA560C0433B053D134866E567425174E47173679AAD4486A2D3 │ │ │ │ │ +369C29E4DD2CD6ACA1BE80ED8FF0A9C58A616D26E758BD8E6342624EC83FB590 │ │ │ │ │ +BD354B52B60BB054FAFE9AC63E1564FBC721FE8F276B0413EC89A2C85E5ED1B0 │ │ │ │ │ +3A9D83BE62A4488ADE7CE69971A8AF7E5862A4290EEF6F00D4171C7FFB360065 │ │ │ │ │ +92E72BF02BE27161AE0BB5516572A0BDC4F316FFB24B38484AC8D1FD4CD86062 │ │ │ │ │ +A2B5D03CF28C3A679C039A6EFDD4C9DA7E463AD60234C9F6BBEE48D87DD94D85 │ │ │ │ │ +842F495F3E25723718682CE4D6224CBBF4456F03077EDF736D65B9DDAB09470E │ │ │ │ │ +17742D82011FFA96BFE86B96E858F9352FCD20C3D46B77DBDEE54336EC2249EA │ │ │ │ │ +211F6DFFF5BEA1E5192BE1BAC0BDD5EDDB3D56C6F7C6E543561A0B39E5C1B04F │ │ │ │ │ +C683A7516B6E69D682455386DDA709929D621FA434D403E895AA0A77DBE1DFD2 │ │ │ │ │ +0D060DF82378880147ED97C6E8149686FA048710B113760AC1DA4512FF8556B3 │ │ │ │ │ +16E2447485B8C3CD58D0469C4A45FFB4CB0322BB284C02 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -4750,18 +4755,19 @@ │ │ │ │ │ @start /Fa 173[50 8[29 3[49 69[{}3 58.1154 /CMMI7 rf │ │ │ │ │ /Fb 133[50 59 3[62 44 44 46 1[62 56 62 93 31 2[31 62 │ │ │ │ │ 56 1[51 62 50 1[54 11[86 5[84 1[106 3[42 1[88 2[86 1[80 │ │ │ │ │ 11[56 56 56 56 56 56 2[31 37 45[{}33 99.6264 /CMBX12 │ │ │ │ │ rf /Fc 175[62 8[62 4[62 66[{}3 119.552 /CMTT12 rf /Fd │ │ │ │ │ 134[71 2[71 75 52 53 55 1[75 67 75 112 2[41 37 75 67 │ │ │ │ │ 41 61 75 60 75 65 13[75 2[92 11[103 16[67 67 67 2[37 │ │ │ │ │ -46[{}27 119.552 /CMBX12 rf /Fe 134[44 3[46 2[33 3[46 │ │ │ │ │ -12[42 22[43 15[23 3[42 1[42 1[42 42 42 3[23 44[{}13 83.022 │ │ │ │ │ -/CMSL10 rf /Ff 156[83 46 35[74 1[74 1[74 1[74 56[{}6 │ │ │ │ │ -83.022 /CMEX10 rf /Fg 192[45 63[{}1 83.022 /CMBX10 rf │ │ │ │ │ +46[{}27 119.552 /CMBX12 rf /Fe 134[44 3[46 2[33 12[37 │ │ │ │ │ +2[46 42 26[54 11[23 1[42 2[42 2[42 42 42 3[23 44[{}14 │ │ │ │ │ +83.022 /CMSL10 rf /Ff 156[83 46 35[74 1[74 1[74 1[74 │ │ │ │ │ +56[{}6 83.022 /CMEX10 rf /Fg 192[45 63[{}1 83.022 /CMBX10 │ │ │ │ │ +rf │ │ │ │ │ %DVIPSBitmapFont: Fh tcrm1000 10 1 │ │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ │ /Dotaccent/cedilla/ogonek/quotesinglbase.ts1 4{/.notdef}repeat │ │ │ │ │ /quotedblbase.ts1/.notdef/.notdef/twelveudash/threequartersemdash │ │ │ │ │ /afii61664.cap/arrowleft/arrowright/tieaccentlowercase/tieaccentcapital │ │ │ │ │ /tieaccentlowercase.new/tieaccentcapital.new/.notdef/afii61664.asc/uni2422 3 │ │ │ │ │ {/.notdef}repeat/dollar/.notdef/.notdef/quotesingle/.notdef/.notdef │ │ │ │ │ @@ -4908,29 +4914,30 @@ │ │ │ │ │ y(Finding)27 b(the)g(Dulmage-Mendelsohn)g(decomp)r(osition)f(of)h(a)g │ │ │ │ │ (bipartite)g(graph)f(is)h(a)f(little)i(less)f(clear)f(cut.)37 │ │ │ │ │ b(When)28 b(the)0 5215 y(v)n(ertices)e(in)i(the)g(bipartite)g(graph)e │ │ │ │ │ (ha)n(v)n(e)h(unit)h(w)n(eigh)n(t,)f(the)h(pro)r(cess)e(is)i(straigh)n │ │ │ │ │ (tforw)n(ard.)125 5407 y Fh(\210)42 b Fm(Find)28 b(a)f(maxim)n(um)g │ │ │ │ │ (matc)n(hing.)1929 5656 y(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fm(2)p 125 100 1228 4 v │ │ │ │ │ -1393 w Fl(BPG)26 b Fe(:)i Fk(DRAFT)f Fe(Jan)n(uary)f(16,)h(2024)p │ │ │ │ │ -2673 100 V 125 390 a Fh(\210)42 b Fm(Drop)27 b(an)g(alternating)g(lev)n │ │ │ │ │ -(el)g(structure)g(from)g(exp)r(osed)g(no)r(des)h(in)f │ │ │ │ │ -Fj(X)7 b Fm(.)125 564 y Fh(\210)42 b Fm(Drop)27 b(an)g(alternating)g │ │ │ │ │ -(lev)n(el)g(structure)g(from)g(exp)r(osed)g(no)r(des)h(in)f │ │ │ │ │ -Fj(Y)19 b Fm(.)125 738 y Fh(\210)42 b Fm(Based)24 b(on)h(the)g(t)n(w)n │ │ │ │ │ -(o)g(previous)f(steps,)h(partition)g Fj(X)32 b Fm(in)n(to)25 │ │ │ │ │ -b(three)g(pieces)g(and)g Fj(Y)44 b Fm(in)n(to)24 b(three)h(pieces)g │ │ │ │ │ -(and)g(form)g(a)g(new)208 838 y(separator)g(from)i(the)h(pieces.)0 │ │ │ │ │ -1035 y(\(If)21 b(these)f(terms)g(are)g(not)g(familiar,)h(see)f([)p │ │ │ │ │ -Fg(?)p Fm(];)j(our)d(presen)n(t)f(purp)r(ose)h(is)g(a)g(discussion)g │ │ │ │ │ -(of)g(soft)n(w)n(are)e(design,)k(not)e(algorithms.\))0 │ │ │ │ │ -1134 y(A)29 b(matc)n(hing)f(is)g(a)g(v)n(ery)f(common)h(op)r(eration)f │ │ │ │ │ -(on)i(a)f(bipartite)g(graph,)f(so)h(it)h(is)f(not)h(unreasonable)d(to)j │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fm(2)p 125 100 1210 4 v │ │ │ │ │ +1375 w Fl(BPG)27 b Fe(:)h Fk(DRAFT)f Fe(F)-7 b(ebruary)26 │ │ │ │ │ +b(18,)h(2025)p 2690 100 V 125 390 a Fh(\210)42 b Fm(Drop)27 │ │ │ │ │ +b(an)g(alternating)g(lev)n(el)g(structure)g(from)g(exp)r(osed)g(no)r │ │ │ │ │ +(des)h(in)f Fj(X)7 b Fm(.)125 564 y Fh(\210)42 b Fm(Drop)27 │ │ │ │ │ +b(an)g(alternating)g(lev)n(el)g(structure)g(from)g(exp)r(osed)g(no)r │ │ │ │ │ +(des)h(in)f Fj(Y)19 b Fm(.)125 738 y Fh(\210)42 b Fm(Based)24 │ │ │ │ │ +b(on)h(the)g(t)n(w)n(o)g(previous)f(steps,)h(partition)g │ │ │ │ │ +Fj(X)32 b Fm(in)n(to)25 b(three)g(pieces)g(and)g Fj(Y)44 │ │ │ │ │ +b Fm(in)n(to)24 b(three)h(pieces)g(and)g(form)g(a)g(new)208 │ │ │ │ │ +838 y(separator)g(from)i(the)h(pieces.)0 1035 y(\(If)21 │ │ │ │ │ +b(these)f(terms)g(are)g(not)g(familiar,)h(see)f([)p Fg(?)p │ │ │ │ │ +Fm(];)j(our)d(presen)n(t)f(purp)r(ose)h(is)g(a)g(discussion)g(of)g │ │ │ │ │ +(soft)n(w)n(are)e(design,)k(not)e(algorithms.\))0 1134 │ │ │ │ │ +y(A)29 b(matc)n(hing)f(is)g(a)g(v)n(ery)f(common)h(op)r(eration)f(on)i │ │ │ │ │ +(a)f(bipartite)g(graph,)f(so)h(it)h(is)f(not)h(unreasonable)d(to)j │ │ │ │ │ (expand)f(the)h(data)0 1234 y(ob)5 b(ject)34 b(to)g(include)h(some)e │ │ │ │ │ (mec)n(hanism)h(for)g(matc)n(hing,)h(e.g.,)h(a)e Fl(mate[])e │ │ │ │ │ Fm(v)n(ector.)55 b(Finding)35 b(a)e(maxim)n(um)h(matc)n(hing)g(is)0 │ │ │ │ │ 1334 y(a)d(bit)h(more)f(tric)n(ky)g(for)g(there)g(are)g(a)g(n)n(um)n(b) │ │ │ │ │ r(er)h(of)f(algorithms)f(to)i(do)f(so,)h(some)f(fast,)i(some)e(slo)n │ │ │ │ │ (w,)h(some)f(simple,)i(some)0 1433 y(complex.)j(Whic)n(h)28 │ │ │ │ │ b(to)g(c)n(ho)r(ose?)125 1560 y(If)23 b(w)n(e)h(only)f(w)n(ork)n(ed)f │ │ │ │ │ @@ -5038,17 +5045,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 1228 4 v 1393 100 a Fl(BPG)27 │ │ │ │ │ -b Fe(:)h Fk(DRAFT)110 b Fe(Jan)n(uary)25 b(16,)i(2024)p │ │ │ │ │ -2633 100 V 1228 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 1210 4 v 1376 100 a Fl(BPG)26 │ │ │ │ │ +b Fe(:)i Fk(DRAFT)110 b Fe(F)-7 b(ebruary)27 b(18,)g(2025)p │ │ │ │ │ +2651 100 V 1210 w Fm(3)0 390 y(la)n(y)n(ers)e(to)i(the)g(wide)g │ │ │ │ │ (separator,)e(but)j(the)f(con)n(v)n(erse)e(do)r(es)h(not)h(hold.)37 │ │ │ │ │ b(W)-7 b(e)27 b(w)n(ere)f(then)i(free)e(to)h(examine)g(wide)g │ │ │ │ │ (separators)0 490 y(that)f(had)f(more)g(than)g(t)n(w)n(o)g(la)n(y)n │ │ │ │ │ (ers)e(from)i(whic)n(h)g(to)h(\014nd)g(a)f(minimal)g(w)n(eigh)n(t)g │ │ │ │ │ (separator.)34 b(It)26 b(turns)f(out)g(that)h(three)f(la)n(y)n(ers)0 │ │ │ │ │ 589 y(is)i(b)r(etter)h(than)g(t)n(w)n(o,)f(in)h(practice.)125 │ │ │ │ │ 720 y(W)-7 b(e)34 b(did)g(write)f(a)g(separate)f(ob)5 │ │ │ │ │ @@ -5109,55 +5116,55 @@ │ │ │ │ │ 5162 V 30 w(clearData\(\))c Fm(then)23 b(free's)f(the)h(storage)d(for)i │ │ │ │ │ (the)h(structure)208 5262 y(with)28 b(a)f(call)g(to)h │ │ │ │ │ Fl(free\(\))p Fm(.)208 5407 y Fk(Err)l(or)i(che)l(cking:)38 │ │ │ │ │ b Fm(If)28 b Fl(bpg)f Fm(is)g Fl(NULL)p Fm(,)f(an)i(error)d(message)i │ │ │ │ │ (is)g(prin)n(ted)h(and)f(the)h(program)e(exits.)p eop │ │ │ │ │ end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fm(4)p 125 100 1228 4 v │ │ │ │ │ -1393 w Fl(BPG)26 b Fe(:)i Fk(DRAFT)f Fe(Jan)n(uary)f(16,)h(2024)p │ │ │ │ │ -2673 100 V 0 390 a Fb(1.2.2)112 b(Initializer)38 b(metho)s(ds)0 │ │ │ │ │ -562 y Fm(There)27 b(are)g(t)n(w)n(o)f(initializer)i(metho)r(ds.)101 │ │ │ │ │ -731 y(1.)42 b Fl(void)f(BPG_init)g(\()i(BPG)f(*bpg,)g(int)g(nX,)g(int)h │ │ │ │ │ -(nY,)f(Graph)g(*graph)f(\))i(;)208 858 y Fm(This)23 b(metho)r(d)i │ │ │ │ │ -(initializes)e(the)h Fl(BPG)f Fm(ob)5 b(ject)23 b(when)h(all)g(three)f │ │ │ │ │ -(of)h(its)g(\014elds)g(are)f(giv)n(en)g(in)h(the)g(calling)f(sequence.) │ │ │ │ │ -35 b(The)208 958 y Fl(Graph)22 b Fm(ob)5 b(ject)25 b(has)f │ │ │ │ │ -Fl(nX)42 b(+)i(nY)23 b Fm(v)n(ertices.)35 b(Note,)26 │ │ │ │ │ -b(the)f Fl(BPG)e Fm(ob)5 b(ject)24 b(no)n(w)g(\\o)n(wns")f(the)i │ │ │ │ │ -Fl(Graph)e Fm(ob)5 b(ject)24 b(and)h(so)e(will)i(free)208 │ │ │ │ │ -1057 y(the)31 b Fl(Graph)d Fm(ob)5 b(ject)31 b(when)g(it)g(is)g │ │ │ │ │ -(free'd.)46 b(The)31 b Fl(Graph)e Fm(ob)5 b(ject)30 b(ma)n(y)g(con)n │ │ │ │ │ -(tains)g(edges)g(b)r(et)n(w)n(een)h(no)r(des)f(in)h Fl(X)g │ │ │ │ │ -Fm(and)f Fl(Y)p Fm(,)208 1157 y(but)e(these)f(edges)g(are)g(sw)n(app)r │ │ │ │ │ -(ed)g(to)g(the)h(end)g(of)g(eac)n(h)f(adjacency)f(list)i(and)g(the)g │ │ │ │ │ -(size)f(of)h(eac)n(h)e(list)i(is)g(then)g(set.)208 1283 │ │ │ │ │ -y Fk(Err)l(or)k(che)l(cking:)44 b Fm(If)30 b Fl(bpg)f │ │ │ │ │ -Fm(or)g Fl(graph)f Fm(are)i Fl(NULL)p Fm(,)e(or)h(if)i │ │ │ │ │ -Fl(nX)26 b Fi(\024)h Fm(0,)j(or)g(if)g Fl(nY)d Fi(\024)f │ │ │ │ │ -Fm(0,)31 b(an)e(error)g(message)f(is)i(prin)n(ted)g(and)208 │ │ │ │ │ -1383 y(the)e(program)d(exits.)101 1536 y(2.)42 b Fl(void)f │ │ │ │ │ -(BPG_initFromColor)o(ing)c(\()43 b(BPG)f(*bpg,)g(Graph)f(*graph,)g(int) │ │ │ │ │ -h(colors[],)e(int)j(cX,)1428 1636 y(int)f(cY,)h(int)f(cmap[],)f(int)h │ │ │ │ │ -(indX[],)f(int)h(indY[])f(\))i(;)208 1762 y Fm(This)22 │ │ │ │ │ -b(metho)r(d)h(extracts)f(a)g(bipartite)g(graph)g(from)g(a)g │ │ │ │ │ -Fl(Graph)f Fm(ob)5 b(ject)22 b(where)g(the)h Fl(X)f Fm(v)n(ertices)g │ │ │ │ │ -(are)f(those)h(with)h Fl(cmap[])208 1862 y Fm(v)-5 b(alue)26 │ │ │ │ │ -b(equal)g(to)h Fl(cX)f Fm(and)h(the)g Fl(Y)f Fm(v)n(ertices)g(are)f │ │ │ │ │ -(those)i(with)g Fl(cmap[])d Fm(v)-5 b(alue)27 b(equal)f(to)h │ │ │ │ │ -Fl(cY)p Fm(.)f(The)h(v)n(ectors)e Fl(indX[])f Fm(and)208 │ │ │ │ │ -1962 y Fl(indY[])h Fm(hold)i(the)h(global)f(v)n(ertex)f(ids)i(of)f(the) │ │ │ │ │ -h Fl(X)g Fm(and)f Fl(Y)g Fm(v)n(ertices)g(resp)r(ectiv)n(ely)-7 │ │ │ │ │ -b(.)208 2088 y Fk(Err)l(or)32 b(che)l(cking:)43 b Fm(If)31 │ │ │ │ │ -b Fl(bpg)p Fm(,)e Fl(graph)p Fm(,)g Fl(colors)e Fm(or)i │ │ │ │ │ -Fl(cmap)g Fm(are)f Fl(NULL)p Fm(,)h(or)g(if)h Fl(cX)c │ │ │ │ │ -Fi(\024)h Fm(0,)j(or)f(if)i Fl(cY)26 b Fi(\024)g Fm(0,)k(or)f(if)i │ │ │ │ │ -Fl(cX)26 b Fm(=)h Fl(cY)o Fm(,)j(an)208 2188 y(error)25 │ │ │ │ │ -b(message)h(is)i(prin)n(ted)f(and)h(the)g(program)d(exits.)0 │ │ │ │ │ -2433 y Fb(1.2.3)112 b(Generate)38 b(induced)h(graphs)0 │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fm(4)p 125 100 1210 4 v │ │ │ │ │ +1375 w Fl(BPG)27 b Fe(:)h Fk(DRAFT)f Fe(F)-7 b(ebruary)26 │ │ │ │ │ +b(18,)h(2025)p 2690 100 V 0 390 a Fb(1.2.2)112 b(Initializer)38 │ │ │ │ │ +b(metho)s(ds)0 562 y Fm(There)27 b(are)g(t)n(w)n(o)f(initializer)i │ │ │ │ │ +(metho)r(ds.)101 731 y(1.)42 b Fl(void)f(BPG_init)g(\()i(BPG)f(*bpg,)g │ │ │ │ │ +(int)g(nX,)g(int)h(nY,)f(Graph)g(*graph)f(\))i(;)208 │ │ │ │ │ +858 y Fm(This)23 b(metho)r(d)i(initializes)e(the)h Fl(BPG)f │ │ │ │ │ +Fm(ob)5 b(ject)23 b(when)h(all)g(three)f(of)h(its)g(\014elds)g(are)f │ │ │ │ │ +(giv)n(en)g(in)h(the)g(calling)f(sequence.)35 b(The)208 │ │ │ │ │ +958 y Fl(Graph)22 b Fm(ob)5 b(ject)25 b(has)f Fl(nX)42 │ │ │ │ │ +b(+)i(nY)23 b Fm(v)n(ertices.)35 b(Note,)26 b(the)f Fl(BPG)e │ │ │ │ │ +Fm(ob)5 b(ject)24 b(no)n(w)g(\\o)n(wns")f(the)i Fl(Graph)e │ │ │ │ │ +Fm(ob)5 b(ject)24 b(and)h(so)e(will)i(free)208 1057 y(the)31 │ │ │ │ │ +b Fl(Graph)d Fm(ob)5 b(ject)31 b(when)g(it)g(is)g(free'd.)46 │ │ │ │ │ +b(The)31 b Fl(Graph)e Fm(ob)5 b(ject)30 b(ma)n(y)g(con)n(tains)g(edges) │ │ │ │ │ +g(b)r(et)n(w)n(een)h(no)r(des)f(in)h Fl(X)g Fm(and)f │ │ │ │ │ +Fl(Y)p Fm(,)208 1157 y(but)e(these)f(edges)g(are)g(sw)n(app)r(ed)g(to)g │ │ │ │ │ +(the)h(end)g(of)g(eac)n(h)f(adjacency)f(list)i(and)g(the)g(size)f(of)h │ │ │ │ │ +(eac)n(h)e(list)i(is)g(then)g(set.)208 1283 y Fk(Err)l(or)k(che)l │ │ │ │ │ +(cking:)44 b Fm(If)30 b Fl(bpg)f Fm(or)g Fl(graph)f Fm(are)i │ │ │ │ │ +Fl(NULL)p Fm(,)e(or)h(if)i Fl(nX)26 b Fi(\024)h Fm(0,)j(or)g(if)g │ │ │ │ │ +Fl(nY)d Fi(\024)f Fm(0,)31 b(an)e(error)g(message)f(is)i(prin)n(ted)g │ │ │ │ │ +(and)208 1383 y(the)e(program)d(exits.)101 1536 y(2.)42 │ │ │ │ │ +b Fl(void)f(BPG_initFromColor)o(ing)c(\()43 b(BPG)f(*bpg,)g(Graph)f │ │ │ │ │ +(*graph,)g(int)h(colors[],)e(int)j(cX,)1428 1636 y(int)f(cY,)h(int)f │ │ │ │ │ +(cmap[],)f(int)h(indX[],)f(int)h(indY[])f(\))i(;)208 │ │ │ │ │ +1762 y Fm(This)22 b(metho)r(d)h(extracts)f(a)g(bipartite)g(graph)g │ │ │ │ │ +(from)g(a)g Fl(Graph)f Fm(ob)5 b(ject)22 b(where)g(the)h │ │ │ │ │ +Fl(X)f Fm(v)n(ertices)g(are)f(those)h(with)h Fl(cmap[])208 │ │ │ │ │ +1862 y Fm(v)-5 b(alue)26 b(equal)g(to)h Fl(cX)f Fm(and)h(the)g │ │ │ │ │ +Fl(Y)f Fm(v)n(ertices)g(are)f(those)i(with)g Fl(cmap[])d │ │ │ │ │ +Fm(v)-5 b(alue)27 b(equal)f(to)h Fl(cY)p Fm(.)f(The)h(v)n(ectors)e │ │ │ │ │ +Fl(indX[])f Fm(and)208 1962 y Fl(indY[])h Fm(hold)i(the)h(global)f(v)n │ │ │ │ │ +(ertex)f(ids)i(of)f(the)h Fl(X)g Fm(and)f Fl(Y)g Fm(v)n(ertices)g(resp) │ │ │ │ │ +r(ectiv)n(ely)-7 b(.)208 2088 y Fk(Err)l(or)32 b(che)l(cking:)43 │ │ │ │ │ +b Fm(If)31 b Fl(bpg)p Fm(,)e Fl(graph)p Fm(,)g Fl(colors)e │ │ │ │ │ +Fm(or)i Fl(cmap)g Fm(are)f Fl(NULL)p Fm(,)h(or)g(if)h │ │ │ │ │ +Fl(cX)c Fi(\024)h Fm(0,)j(or)f(if)i Fl(cY)26 b Fi(\024)g │ │ │ │ │ +Fm(0,)k(or)f(if)i Fl(cX)26 b Fm(=)h Fl(cY)o Fm(,)j(an)208 │ │ │ │ │ +2188 y(error)25 b(message)h(is)i(prin)n(ted)f(and)h(the)g(program)d │ │ │ │ │ +(exits.)0 2433 y Fb(1.2.3)112 b(Generate)38 b(induced)h(graphs)0 │ │ │ │ │ 2605 y Fm(Sometimes)25 b(w)n(e)f(need)h(to)g(kno)n(w)f(whic)n(h)h │ │ │ │ │ Fl(X)g Fm(or)f Fl(Y)g Fm(v)n(ertices)g(share)g(an)g(edge,)h(e.g.,)g(in) │ │ │ │ │ g(the)h Fl(BKL)d Fm(ob)5 b(ject)25 b(w)n(e)g(need)g(the)g(domain-)0 │ │ │ │ │ 2705 y(domain)k(adjacency)g(graph)f(\(the)i(domains)f(are)g(the)g │ │ │ │ │ Fl(X)h Fm(v)n(ertices\))e(to)i(e\016cien)n(tly)f(implemen)n(t)h(the)g │ │ │ │ │ (Fiduccia-Mattheyses)0 2804 y(algorithm.)36 b(W)-7 b(e)28 │ │ │ │ │ b(ha)n(v)n(e)e(t)n(w)n(o)h(metho)r(ds)h(to)f(generate)g(the)h(t)n(w)n │ │ │ │ │ @@ -5203,17 +5210,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 1228 4 v 1393 100 a Fl(BPG)27 │ │ │ │ │ -b Fe(:)h Fk(DRAFT)110 b Fe(Jan)n(uary)25 b(16,)i(2024)p │ │ │ │ │ -2633 100 V 1228 w Fm(5)0 390 y Fb(1.2.5)112 b(Dulmage-Mendelsohn)42 │ │ │ │ │ +TeXDict begin 5 4 bop 83 100 1210 4 v 1376 100 a Fl(BPG)26 │ │ │ │ │ +b Fe(:)i Fk(DRAFT)110 b Fe(F)-7 b(ebruary)27 b(18,)g(2025)p │ │ │ │ │ +2651 100 V 1210 w Fm(5)0 390 y Fb(1.2.5)112 b(Dulmage-Mendelsohn)42 │ │ │ │ │ b(decomp)s(osition)c(metho)s(d)0 563 y Fm(There)32 b(is)h(one)f(metho)r │ │ │ │ │ (d)h(to)f(\014nd)h(the)g(Dulmage-Mendelsohn)f(decomp)r(osition)g(that)h │ │ │ │ │ (uses)f(matc)n(hing)g(when)h(the)g(graph)0 662 y(is)41 │ │ │ │ │ b(unit)g(w)n(eigh)n(t)f(and)g(a)h(generalized)e(matc)n(hing)h(tec)n │ │ │ │ │ (hnique)h(otherwise.)75 b(There)40 b(is)h(a)f(second)g(metho)r(d)h(to)g │ │ │ │ │ (\014nd)g(the)0 762 y(decomp)r(osition)30 b(using)g(a)h(F)-7 │ │ │ │ │ b(ord-F)g(ulk)n(erson)28 b(algorithm)i(to)g(\014nd)h(a)f(max)h(\015o)n │ │ │ │ │ @@ -5308,34 +5315,34 @@ │ │ │ │ │ 208 5280 y(v)-5 b(alue)27 b Fl(1)g Fm(is)h(returned.)36 │ │ │ │ │ b(If)28 b(an)g(IO)f(error)e(is)j(encoun)n(tered)f(from)g │ │ │ │ │ Fl(fscanf)p Fm(,)e(zero)i(is)g(returned.)208 5407 y Fk(Err)l(or)j(che)l │ │ │ │ │ (cking:)38 b Fm(If)28 b Fl(bpg)f Fm(or)g Fl(fp)f Fm(is)i │ │ │ │ │ Fl(NULL)e Fm(an)h(error)f(message)g(is)i(prin)n(ted)f(and)g(zero)g(is)g │ │ │ │ │ (returned.)p eop end │ │ │ │ │ %%Page: 6 6 │ │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fm(6)p 125 100 1228 4 v │ │ │ │ │ -1393 w Fl(BPG)26 b Fe(:)i Fk(DRAFT)f Fe(Jan)n(uary)f(16,)h(2024)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 │ │ │ │ │ -Fm(or)g Fl(fp)f Fm(is)i Fl(NULL)e Fm(an)h(error)f(message)g(is)i(prin)n │ │ │ │ │ -(ted)f(and)g(zero)g(is)g(returned.)101 922 y(4.)42 b │ │ │ │ │ -Fl(int)g(BPG_writeToFile)37 b(\()43 b(BPG)g(*bpg,)e(char)h(*fn)h(\))g │ │ │ │ │ -(;)208 1055 y Fm(This)20 b(metho)r(d)h(writes)g(a)f Fl(BPG)g │ │ │ │ │ -Fm(ob)5 b(ject)20 b(to)h(a)f(\014le.)35 b(The)20 b(metho)r(d)i(tries)e │ │ │ │ │ -(to)g(op)r(en)h(the)g(\014le)g(and)g(if)g(it)g(is)g(successful,)g(it)h │ │ │ │ │ -(then)208 1154 y(calls)h Fl(BPG)p 526 1154 27 4 v 30 │ │ │ │ │ -w(writeFromFormatte)o(dF)o(ile)o(\(\))18 b Fm(or)23 b │ │ │ │ │ -Fl(BPG)p 1857 1154 V 30 w(writeFromBinaryF)o(il)o(e\(\))o │ │ │ │ │ -Fm(,)c(closes)k(the)i(\014le)f(and)g(returns)g(the)208 │ │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fm(6)p 125 100 1210 4 v │ │ │ │ │ +1375 w Fl(BPG)27 b Fe(:)h Fk(DRAFT)f Fe(F)-7 b(ebruary)26 │ │ │ │ │ +b(18,)h(2025)p 2690 100 V 101 390 a Fm(3.)42 b Fl(int)g │ │ │ │ │ +(BPG_readFromBina)o(ry)o(Fil)o(e)37 b(\()44 b(BPG)e(*bpg,)f(FILE)h(*fp) │ │ │ │ │ +h(\))g(;)208 523 y Fm(This)24 b(metho)r(d)i(reads)e(a)g │ │ │ │ │ +Fl(BPG)g Fm(ob)5 b(ject)25 b(from)f(a)h(binary)f(\014le.)36 │ │ │ │ │ +b(If)26 b(there)e(are)g(no)h(errors)e(in)i(reading)f(the)h(data,)g(the) │ │ │ │ │ +g(v)-5 b(alue)208 623 y Fl(1)27 b Fm(is)g(returned.)37 │ │ │ │ │ +b(If)28 b(an)f(IO)g(error)f(is)h(encoun)n(tered)g(from)g │ │ │ │ │ +Fl(fread)p Fm(,)f(zero)h(is)g(returned.)208 756 y Fk(Err)l(or)j(che)l │ │ │ │ │ +(cking:)38 b Fm(If)28 b Fl(bpg)f Fm(or)g Fl(fp)f Fm(is)i │ │ │ │ │ +Fl(NULL)e Fm(an)h(error)f(message)g(is)i(prin)n(ted)f(and)g(zero)g(is)g │ │ │ │ │ +(returned.)101 922 y(4.)42 b Fl(int)g(BPG_writeToFile)37 │ │ │ │ │ +b(\()43 b(BPG)g(*bpg,)e(char)h(*fn)h(\))g(;)208 1055 │ │ │ │ │ +y Fm(This)20 b(metho)r(d)h(writes)g(a)f Fl(BPG)g Fm(ob)5 │ │ │ │ │ +b(ject)20 b(to)h(a)f(\014le.)35 b(The)20 b(metho)r(d)i(tries)e(to)g(op) │ │ │ │ │ +r(en)h(the)g(\014le)g(and)g(if)g(it)g(is)g(successful,)g(it)h(then)208 │ │ │ │ │ +1154 y(calls)h Fl(BPG)p 526 1154 27 4 v 30 w(writeFromFormatte)o(dF)o │ │ │ │ │ +(ile)o(\(\))18 b Fm(or)23 b Fl(BPG)p 1857 1154 V 30 w(writeFromBinaryF) │ │ │ │ │ +o(il)o(e\(\))o Fm(,)c(closes)k(the)i(\014le)f(and)g(returns)g(the)208 │ │ │ │ │ 1254 y(v)-5 b(alue)27 b(returned)g(from)g(the)h(called)g(routine.)208 │ │ │ │ │ 1387 y Fk(Err)l(or)f(che)l(cking:)38 b Fm(If)25 b Fl(bpg)f │ │ │ │ │ Fm(or)g Fl(fn)g Fm(is)h Fl(NULL)p Fm(,)e(or)h(if)i Fl(fn)e │ │ │ │ │ Fm(is)h(not)g(of)g(the)g(form)g Fl(*.bpgf)d Fm(\(for)j(a)f(formatted)h │ │ │ │ │ (\014le\))g(or)f Fl(*.bpgb)208 1487 y Fm(\(for)j(a)g(binary)g │ │ │ │ │ (\014le\),)h(an)f(error)f(message)g(is)i(prin)n(ted)f(and)h(the)g │ │ │ │ │ (metho)r(d)g(returns)f(zero.)101 1653 y(5.)42 b Fl(int)g │ │ │ │ │ @@ -5401,17 +5408,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 1228 4 v 1393 100 a Fl(BPG)27 │ │ │ │ │ -b Fe(:)h Fk(DRAFT)110 b Fe(Jan)n(uary)25 b(16,)i(2024)p │ │ │ │ │ -2633 100 V 1228 w Fm(7)307 390 y Fh(\210)42 b Fm(The)33 │ │ │ │ │ +TeXDict begin 7 6 bop 83 100 1210 4 v 1376 100 a Fl(BPG)26 │ │ │ │ │ +b Fe(:)i Fk(DRAFT)110 b Fe(F)-7 b(ebruary)27 b(18,)g(2025)p │ │ │ │ │ +2651 100 V 1210 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 16, 2024 │ │ │ │ │ │ + 2 BPG : DRAFT February 18, 2025 │ │ │ │ │ │ • Drop an alternating level structure from exposed nodes in X. │ │ │ │ │ │ • Drop an alternating level structure from exposed nodes in Y . │ │ │ │ │ │ • Based on the two previous steps, partition X into three pieces and Y into three pieces and form a new │ │ │ │ │ │ separator from the pieces. │ │ │ │ │ │ (If these terms are not familiar, see [?]; our present purpose is a discussion of software design, not algorithms.) │ │ │ │ │ │ Amatching is a very common operation on a bipartite graph, so it is not unreasonable to expand the data │ │ │ │ │ │ object to include some mechanism for matching, e.g., a mate[] vector. Finding a maximum matching is │ │ │ │ │ │ @@ -78,15 +78,15 @@ │ │ │ │ │ │ b │ │ │ │ │ │ separator size. But, if we consider S ∪ (Adj(S) ∩ B) to be a wide separator, the resulting separator S need │ │ │ │ │ │ not be a separator with minimal weight that is found within the wide separator. The trick is that some │ │ │ │ │ │ nodes in Adj(S)∩B might be absorbed into W. │ │ │ │ │ │ Onecanfindaseparatorwith minimal weight from the wide separator S∪(Adj(S)∩B), in fact from any │ │ │ │ │ │ wide separator that contains S, by solving a max flow problem. The drawback is that the network induced │ │ │ │ │ │ by S∪(Adj(S)∩B) need not be bipartite. In other words, a bipartite induced graph necessarily implies two │ │ │ │ │ │ - BPG : DRAFT January 16, 2024 3 │ │ │ │ │ │ + BPG : DRAFT February 18, 2025 3 │ │ │ │ │ │ layers to the wide separator, but the converse does not hold. We were then free to examine wide separators │ │ │ │ │ │ that had more than two layers from which to find a minimal weight separator. It turns out that three layers │ │ │ │ │ │ is better than two, in practice. │ │ │ │ │ │ We did write a separate object to solve our max flow problem; see the Network object. To smooth a │ │ │ │ │ │ separator, i.e., to improve a 2-set partition, we no longer have need of the bipartite graph object. We leave │ │ │ │ │ │ the two Dulmage-Mendelsohn methods in the BPG object for historical and sentimental reasons. │ │ │ │ │ │ 1.1 Data Structure │ │ │ │ │ │ @@ -110,15 +110,15 @@ │ │ │ │ │ │ This method releases the storage for graph via a call to Graph clearData(), and then the structure’s │ │ │ │ │ │ fields are then set to their default values with a call to BPG setDefaultFields(). │ │ │ │ │ │ Error checking: If bpg is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 4. void BPG_free ( BPG *bpg ) ; │ │ │ │ │ │ This method releases any storage by a call to BPG clearData()then free’s the storage for the structure │ │ │ │ │ │ with a call to free(). │ │ │ │ │ │ Error checking: If bpg is NULL, an error message is printed and the program exits. │ │ │ │ │ │ - 4 BPG : DRAFT January 16, 2024 │ │ │ │ │ │ + 4 BPG : DRAFT February 18, 2025 │ │ │ │ │ │ 1.2.2 Initializer methods │ │ │ │ │ │ There are two initializer methods. │ │ │ │ │ │ 1. void BPG_init ( BPG *bpg, int nX, int nY, Graph *graph ) ; │ │ │ │ │ │ This method initializes the BPG object when all three of its fields are given in the calling sequence. The │ │ │ │ │ │ Graphobject has nX + nY vertices. Note, the BPG object now “owns” the Graph object and so will free │ │ │ │ │ │ the Graph object when it is free’d. The Graph object may contains edges between nodes in X and Y, │ │ │ │ │ │ but these edges are swapped to the end of each adjacency list and the size of each list is then set. │ │ │ │ │ │ @@ -151,15 +151,15 @@ │ │ │ │ │ │ int mark[], int tag ) ; │ │ │ │ │ │ This method drops a level structure from vertex root, fills the dist[] vector with the distances from │ │ │ │ │ │ root, and returns the number of levels created. The mark[] vector is used to mark nodes with the tag │ │ │ │ │ │ value as they are placed in the level structure. The list[] vector is used to accumulate the nodes as │ │ │ │ │ │ they are placed in the level structure. │ │ │ │ │ │ Error checking: If bpg, list, dist or mark is NULL, or if root is not in [0, nX+nY), an error message │ │ │ │ │ │ is printed and the program exits. │ │ │ │ │ │ - BPG : DRAFT January 16, 2024 5 │ │ │ │ │ │ + BPG : DRAFT February 18, 2025 5 │ │ │ │ │ │ 1.2.5 Dulmage-Mendelsohn decomposition method │ │ │ │ │ │ There is one method to find the Dulmage-Mendelsohn decomposition that uses matching when the graph │ │ │ │ │ │ is unit weight and a generalized matching technique otherwise. There is a second method to find the │ │ │ │ │ │ decomposition using a Ford-Fulkerson algorithm to find a max flow and a min-cut on a bipartite network. │ │ │ │ │ │ This has largely been superceded by the Network object. │ │ │ │ │ │ 1. void BPG_DMdecomposition ( BPG *bpg, int dmflags[], int stats[], │ │ │ │ │ │ int msglvl, FILE *msgFile ) │ │ │ │ │ │ @@ -204,15 +204,15 @@ │ │ │ │ │ │ the value returned from the called routine. │ │ │ │ │ │ Error checking: If bpg or fn is NULL, or if fn is not of the form *.bpgf (for a formatted file) or *.bpgb │ │ │ │ │ │ (for a binary file), an error message is printed and the method returns zero. │ │ │ │ │ │ 2. int BPG_readFromFormattedFile ( BPG *bpg, FILE *fp ) ; │ │ │ │ │ │ This method reads a BPG object from a formatted file. If there are no errors in reading the data, the │ │ │ │ │ │ value 1 is returned. If an IO error is encountered from fscanf, zero is returned. │ │ │ │ │ │ Error checking: If bpg or fp is NULL an error message is printed and zero is returned. │ │ │ │ │ │ - 6 BPG : DRAFT January 16, 2024 │ │ │ │ │ │ + 6 BPG : DRAFT February 18, 2025 │ │ │ │ │ │ 3. int BPG_readFromBinaryFile ( BPG *bpg, FILE *fp ) ; │ │ │ │ │ │ This method reads a BPG object from a binary file. If there are no errors in reading the data, the value │ │ │ │ │ │ 1 is returned. If an IO error is encountered from fread, zero is returned. │ │ │ │ │ │ Error checking: If bpg or fp is NULL an error message is printed and zero is returned. │ │ │ │ │ │ 4. int BPG_writeToFile ( BPG *bpg, char *fn ) ; │ │ │ │ │ │ ThismethodwritesaBPGobjecttoafile. Themethodtriestoopenthefileandifitissuccessful,it then │ │ │ │ │ │ calls BPG writeFromFormattedFile()or BPG writeFromBinaryFile(),closes the file and returns the │ │ │ │ │ │ @@ -243,15 +243,15 @@ │ │ │ │ │ │ BPG writeStats() method). │ │ │ │ │ │ • The msglvl parameter determines the amount of output — taking msglvl >= 3 means the BPG │ │ │ │ │ │ object is written to the message file. │ │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the message │ │ │ │ │ │ file is stdout, otherwise a file is opened with append status to receive any output data. │ │ │ │ │ │ • The inFile parameter is the input file for the BPG object. It must be of the form *.bpgf or │ │ │ │ │ │ *.bpgb. The BPG object is read from the file via the BPG readFromFile() method. │ │ │ │ │ │ - BPG : DRAFT January 16, 2024 7 │ │ │ │ │ │ + BPG : DRAFT February 18, 2025 7 │ │ │ │ │ │ • The outFile parameter is the output file for the BPG object. If outFile is none then the BPG │ │ │ │ │ │ object is not written to a file. Otherwise, the BPG writeToFile() method is called to write the │ │ │ │ │ │ graph to a formatted file (if outFile is of the form *.bpgf), or a binary file (if outFile is of the │ │ │ │ │ │ form *.bpgb). │ │ │ │ │ │ 2. extractBPG msglvl msgFile inGraphFile inCompidsIVfile │ │ │ │ │ │ icomp outMapFile outBPGfile │ │ │ │ │ │ This driver program reads in a Graph object and an IV object that contains the component ids. (A │ │ │ ├── ./usr/share/doc/spooles-doc/Chv.ps.gz │ │ │ │ ├── Chv.ps │ │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ │ %%EndComments │ │ │ │ │ %%BeginDefaults │ │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ │ %%EndDefaults │ │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ │ %DVIPSCommandLine: dvips main -o Chv.ps │ │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ │ -%DVIPSSource: TeX output 2024.01.16:2047 │ │ │ │ │ +%DVIPSSource: TeX output 2025.02.18:0318 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -2518,20 +2518,21 @@ │ │ │ │ │ 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 52 /four put │ │ │ │ │ -dup 54 /six put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ +dup 56 /eight put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 74 /J put │ │ │ │ │ +dup 70 /F put │ │ │ │ │ dup 97 /a put │ │ │ │ │ -dup 110 /n put │ │ │ │ │ +dup 98 /b put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ dup 114 /r put │ │ │ │ │ dup 117 /u put │ │ │ │ │ dup 121 /y put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ @@ -2715,89 +2716,93 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ │ -C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ │ -6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ │ -11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ │ -1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ │ -A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ │ -F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ │ -EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ │ -033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ │ -A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ │ -468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8A71FF9C085003EBB4F4 │ │ │ │ │ -3D271F5B16B1AAD3EBDC391F534AA46E545E9D8659DD19B309C3B7625A8396FA │ │ │ │ │ -2519464539D46E43ACB72952313C8497315E0319C08628023E8FC54D7D3BAC29 │ │ │ │ │ -D5AD8EFDABF0C33C7AFB7151A6606C62A87F0F5F783569AC4C881A992E3FE420 │ │ │ │ │ -297F7BC5147F3B2FA98450D2F8B07F7D229BC8BE06729920CFEC22556740E1CB │ │ │ │ │ -3DE09AC763C6D4A20AD1599C368FABD07BC35C16683F2A0311A88983415A9140 │ │ │ │ │ -2EFC4BC1B10DCAD4B2B8A28510E5BD39D6616D2B9B079ED3CF9C315B7DEC29D9 │ │ │ │ │ -251DFD0194B34EC175964C23383F23FFB2E41B698C405815D65EAFF9E9DD1DDE │ │ │ │ │ -30F77924656C288B8DDB2E5B0E7B1FAA66791DE3848EE6DE63AD0E945E49C6C7 │ │ │ │ │ -9FCA16E01F027F9EF7ACB55F02F5B0136480802F789F6FE14B430879979BA04D │ │ │ │ │ -F481AD4CF47E6847936F377FB04869F9A80E597301BFCAB718D8764094673876 │ │ │ │ │ -BCEF8FA3701608C84B3A0399A11D2E6AD922CCB7D72AF9EBFB30F4648A37A123 │ │ │ │ │ -CB8FB14BDC351692CF0CCAA5CA9383C2B23BAAA38700327EB743FBBE9EE04041 │ │ │ │ │ -13F5CEF4B3881BBC051C33369A82B3505B1CFD7D91AEF2E43EA728EE48E2D854 │ │ │ │ │ -5A7E516998ACDD4FD835FA901C5A21810A56D51FE919B2E58408EEB4DAEB487F │ │ │ │ │ -BA7F1D292CED902DF3533566D96DAD918319EA650D4FC7D9E0170CDE620F755B │ │ │ │ │ -0E7AE02D9B118481B26F5FF7060FBCFA2A682B6826F00679BCDA68794C05286D │ │ │ │ │ -B616DD08372ACDE0AE6E7EF116F0D36F16241ED4F0E8CCD80377792E3BB1343C │ │ │ │ │ -EEB22CC77738F7CBCBA32CF6C3979F6DF7ED81A89AE8928FD7CC550F2730BA88 │ │ │ │ │ -1B51CEDC63F4C47F261AFCAB7AC3CED20B15C97E714A460A1A3B16436B4A5149 │ │ │ │ │ -8F91DA4BE0B9B648534CE5F442117036B602DC91E2852BEA62F55803B833FDF7 │ │ │ │ │ -9F901AB87489E703DDEED1091A79DC73B4440BBBF2C7592B441187C4A3562204 │ │ │ │ │ -859F08BA3CE2A8ECCD5AAD13C50FB806FE79A388F1822C5608837CBDE526A044 │ │ │ │ │ -12E5CDE4A066932AF2ACA7E8FC6BA4603640944718752975B7DA6E906BE1EA01 │ │ │ │ │ -46736FF5D1AA1CC682D011B6039CF98C35E36D4F14ABC84A38B7203CC9A17756 │ │ │ │ │ -B2B0345276798F1A88A54AD9FEA0853C6DDF28525ED4F0B7380D14147012C2A4 │ │ │ │ │ -5B02888C986C76497EA4C729B0B82EE73C1A1A8E8F1ABF401E341028E9C15AF9 │ │ │ │ │ -354706D8DC07492921AD0932A46736C0D1B066D00287DACCC068FAE6A796EC89 │ │ │ │ │ -54D1D73AA88F3A5912BA9D3FF70065C8D0D0DAD1CD846501E06694374EFDBEC6 │ │ │ │ │ -931F644D5E8494AFC742423AD9A487658E310E0682BE19B8475F4D450487A686 │ │ │ │ │ -2B94494DEAF1C0F59DE82F2CE64BEE5E97F942FCFA1187ED6AA5761E951A7BF7 │ │ │ │ │ -9F842E34A4656C58B35A9E99F7E6762CEE11E0CF59FFD75D7382C5EE6DBB43F1 │ │ │ │ │ -ED219071D3FB22DBA90977723BB467C0490D042684C0724F40DCA3E0D8F1F4E7 │ │ │ │ │ -3C4F9A67BE6528185EAAFDD415224F7E256A4EA00111C17C746CBD80BF569A27 │ │ │ │ │ -D81195D7F79C1CCEEF30ED00D49F48B63E4B8D7953403A3710AE953CC1B76F0F │ │ │ │ │ -F523D777A6A186F262A602543F94AF7471DBE25FEBC207DB42DAF7DC9A5781FB │ │ │ │ │ -2131AD42869D966A734AAE3466DF1CE9D1BCFA72409A558C0AEE6A8E2FEAACB6 │ │ │ │ │ -2CDABCC28433034848ACF9FB4465D272E4AFC48572647F05F41C7A293CC5B595 │ │ │ │ │ -AD31555FB708A72962707348BC7033A8224BD42EB9D75FDF3AE9E6A9C960B330 │ │ │ │ │ -5137DF59F8E2E0D535F41524ABDF070745A4FA25CD8DFD38A5FF30A95452B875 │ │ │ │ │ -6569E8812631300D79A942C563AF174AC05C9F2D09D7D5D3C605F5A6B7F21B34 │ │ │ │ │ -18F270A993B050838E701A17938D1C156CBA7CA4BAC7C562CE9D7B758EAB25A9 │ │ │ │ │ -A6DFFC71F65561341847B776DF34061CE3D439B87B857626987EC93B3B95B8E8 │ │ │ │ │ -76FFB16B263675333FA10414FEED707FF7C366BF8B20FF8577CDEBEBCF1A5BCE │ │ │ │ │ -258C09C90175A5278B7C444A623E3331FDE5A6387B3E389540ED1E7E883958F3 │ │ │ │ │ -3A5C89CCD62256FA069DF4A5090FB17C1F1757C9209DAFB8A1F47182BF3E88D9 │ │ │ │ │ -0B5376B59EE165A761902759C8ED7F5AD301E7EB8B49CC09AF921DB45B7F8002 │ │ │ │ │ -AB32E73AAE53942DE0F9175D8446017006C9C0B93EF39C13B7A879F2F6DDFF16 │ │ │ │ │ -204BB24F976847CF006FD29332FCCB255B5116F7077A44F7066C39C81DC4BAD2 │ │ │ │ │ -40DB2753626C0102E5D047522ABC38EA294A699B8DFD9CA0A7980561A1062E90 │ │ │ │ │ -AB11EE286A9C238D9F721D9980D0A1828C2814972622D948CEE8C812C19A9A03 │ │ │ │ │ -608ED0AC138A436FFBF8BE3D1E66C87793416AF38ED9BC5424568A175FBDAA9E │ │ │ │ │ -D6FC11A7021693819B051562B5A59F32629E2D6019D69DD329BE1894A2B295E1 │ │ │ │ │ -1DCE9683B29AE126C56F26E5C595BF1A8249BDE231DBE8B066F7F62EF149B975 │ │ │ │ │ -A863969A4690504A5EA064721DA909B8157C0B39FBF8228D95CB655E406161E1 │ │ │ │ │ -148610FAEED7C5509880223C06A66DA19E10F94DC2DB481B26 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004FD597ED │ │ │ │ │ +EFDBC64ABD9B79386FB2427D1A63522195B1239C09F8CB3F8BD7A245A6DD82E3 │ │ │ │ │ +260C3889587626DFC5F7978E55F5524ABD6A3319CDD3D3F40D040044D51DA4E1 │ │ │ │ │ +6797EEAC7AA07C77EC6DB0E6E182B545A8BEF63B14F3FC07BAC09E7CD5C17ED6 │ │ │ │ │ +10080704B0DA4E9BA12F968DF8A58458D17E9A5B1F14A83DC51F5B161ADEE1CC │ │ │ │ │ +0183D82ED92C6FC7203C289949EDF0284D9893029FF5408E421324625F17C3E5 │ │ │ │ │ +2437C8F75A9D68EE1AF9174FEA6FC6BF793C7D2E497EA90396CF1A645E283B69 │ │ │ │ │ +8425F47C323587DF91E1D596DCB1E3A787C955D9D965A5E3E26ADF58B62AD5F9 │ │ │ │ │ +0C9AC784DE479780606354111E3202F215650DBBE1063A46F3C10B9EBC974DDA │ │ │ │ │ +A1A28DBBD43E9E5BFF000B12C787D0427928078F8EC5FE90DED97E6C129E8DEA │ │ │ │ │ +51F66504DB83764E52B0BA68DF7BE684C8959CB1D3345CC48221A9A4683306C0 │ │ │ │ │ +62B634E0A539383F0C7A788D9711EFF414869CCC5659D78CEBE009BF2463F56A │ │ │ │ │ +0ADC993348FE96DF7C250E13ED6504AACFE8F8DCA2D2048D9D8CFA127D363EAC │ │ │ │ │ +1F0630E2D1B621E6954038195D965B91FD974FA3F1B8B29D200A16CEBA645E2F │ │ │ │ │ +CEEE6FD49FBBD49E38AE67D4BFFCE91F1FC422554EC4409C5FA18D40FCD6D9B3 │ │ │ │ │ +2185ED1E0F98106D4339F086B05CA36E56EC22C60E2CE23F9C4CC403ACAD3F94 │ │ │ │ │ +4086B4DF6DFA0B7B4716417263E7B558535566AED2F6C2F9846A16D71A7930A7 │ │ │ │ │ +49232D3D16C4A01CF1A1998A06F40062ED329179A85668537C55D0BC24FC0010 │ │ │ │ │ +54DA83E2FC66B2A5D428E6A9BFC983253668C0ECE6CA36DBF97C4B7659D50842 │ │ │ │ │ +C65B36604840EEDA399B57E2DEFAC3E7FB031634CE33D04238F9854D2AAAF448 │ │ │ │ │ +34DA5F3BCCED3166FEEE82BB0BBA0A397CC2F95865CB52AABFF454D93B425809 │ │ │ │ │ +A26AC459F321FD23E2262FE816D06BAAECF32AAF167F84799AF80F9F88388D07 │ │ │ │ │ +0DB5FD57AFEE2850A8DFE977E6AE39CB3DC16DB1A163A583C86C6F775CE33521 │ │ │ │ │ +0081C0BBBAD6D30D26C66B28B38CEAC78FEA5FB3CC5853656B67C6D9D80EB30E │ │ │ │ │ +397558C9179AF5920F34DAB3F578DFCF0DBB137AED17D6325C23883E69EE4621 │ │ │ │ │ +34355A70C19EA68891E1CA937376901C85CDEE109F1665943E29A216DC00937A │ │ │ │ │ +B983A729A4654AD09187C0242D52FA4ADD0853EF4888864914D7D81C56578DD4 │ │ │ │ │ +3B51907032022E6E412D4F114675DEDCA8A9E85DC03A0B583FECD84432D15F70 │ │ │ │ │ +01F627BD6EC91F9FCFDA01BF40E1229B5F164309DBB641AD50970503DA2048C1 │ │ │ │ │ +DF8F36E8D252EE113F0B46677D9BAF376BAE18D74CFB0DBBD0C7E9D0A58BA3ED │ │ │ │ │ +1E5099CAE073EB5638617760AB57849893764EA9735173CD1EAB66884CEA7EE3 │ │ │ │ │ +8843327B2E145BD6FBB49102776B82BC511D109F8BE9E7E99DADABABEDC3CFD9 │ │ │ │ │ +393578FFD85907DFF2849E4CDE6FA4DEC7E1C150EBE4047FFB650F9548BE6D11 │ │ │ │ │ +0C51226A5436F18BF20A02E0F888F46B6AC3A8E8D927ECD3B5E095933AD3859F │ │ │ │ │ +5167C41D832EFCC4093BD2AFA7101AB430E57DAFC3590F05D3CBABB32BC203A0 │ │ │ │ │ +467B23BDB830487C9AA5B85BAC065F8538871B4180F8C4732E637DB090CFDE5A │ │ │ │ │ +3F4F2B5BFAFB848BAAD1A17CB076B34159601639BD93ECAB1214ACABF2C67FE2 │ │ │ │ │ +0658AA20B08681070FF56F1CC52144ABA8765D6E124D1CEA9BBA102808CE1BB2 │ │ │ │ │ +5EDF46BC7BBC2A5B49EE6EC28F5797A3969B057B21FCDBBD0E60848FF14F6CA3 │ │ │ │ │ +70F3060BDBB019B22722C99C7691760F013763B7FBEB62830AE215F195BF9F01 │ │ │ │ │ +21BF4377397E89574CFA47D123AA506A570A77BA6EB4AAB0B237A26154880293 │ │ │ │ │ +3952F832F72ECCB024F02385E5EE8566B165904B594E30D0700D033C6B429F6F │ │ │ │ │ +2A20BC774F442BC9CE29FCC81807C2768A8BC927A215558FBF36DC53F477F04A │ │ │ │ │ +41DA66E1A85B659EB761230977EAD7DA0150513D3323B143D4E2A61BCF03334C │ │ │ │ │ +C0EE3E1B06CFAF58ECC910BD81F0352B75FF1594D6A4EF504232D442174BE766 │ │ │ │ │ +0F8E703F97E21D25D4CD097549C31FEE7017C3916EFB02E7BF869172889827B6 │ │ │ │ │ +A48465EB7612BA3DBC6A9436C7167F149A25CE9F8E3F4F8DE3B5ADF6C0986CB3 │ │ │ │ │ +3A7E2DAB44AB489796461536F5F713017F2620AD03295CAE9285F08974AE0DF8 │ │ │ │ │ +D739260929619B509491AFF09C4CAEF9E65C2CA69470C907ECBF3AB6C955360D │ │ │ │ │ +05ABAC306DB51122A1ADC7EF0DD70FA299A45C505A83727D4598C86319EE9C06 │ │ │ │ │ +7218EFD4F40388354BCF1B79593D5AD221DF955D081F99F880E5CED07321AB3E │ │ │ │ │ +A2FCB8B05D54807D8E15E65B78DCE12989B9276350080C905DBB74CE9AA7E246 │ │ │ │ │ +5D3BAED292C562D4CF54617FCC6654496C7996D1ECE1EFF9258716AB763A12E6 │ │ │ │ │ +316E4C5587351A6DB011F58F6A15BC28BEBDC3836E0CB892807FEC228DC1B380 │ │ │ │ │ +92F7F42279F08D60F13D6A4CB425543C3644461461CBF6F27B6603F613D1FCF8 │ │ │ │ │ +A8410AD82D1498166AEB35D4125D7E2ADEAAB18BC04806AED53513F066E5F154 │ │ │ │ │ +3E13E863C50B9814EE2FB978D0D24A03FAF650CB6E2CADF1E6BE6BAF699AFC03 │ │ │ │ │ +E1A0EEB207B3B9A689ED5B373FE86686AD230BE6C18E1673DDA50E224B343EC5 │ │ │ │ │ +903BA0C8041C13607B50D5852AC7970B15C244E6EBA7D54B3086312CF04761D6 │ │ │ │ │ +7D3D75D51F20C371494AB81AB4A9838B20B483B851D01FEF41EA5C0B4755B964 │ │ │ │ │ +EB6E9B178051C556A010994EB88EAE641F4C1A0D7E0F98D5267E18AEF1AEA7E7 │ │ │ │ │ +9030A97DF89AFF621981C33B645FFB5F3BB2065A7661D11B26E0999561DF3580 │ │ │ │ │ +4A76A05DFAF8085525F8D5C01936F03C32E26E72569371C9EA3B8916F9DFC5FC │ │ │ │ │ +6A6F25A0FFDB981BA8B896393D75774D50828E6ADE903C45406E354703A4BC56 │ │ │ │ │ +2C49A47FEAC970DC433E3050C49F7FB945A9705BD8852D2D65D935F244D3B423 │ │ │ │ │ +EFAB84AAAAB8FBAFF50AFF372A533BCCEB5FC273DBADCF715776DF02A5DCBA9A │ │ │ │ │ +FBF265FAB4745D6475B33611EEE1EA95E7584E0BEEC7CA789AA69C8D03D6F8C0 │ │ │ │ │ +5B6844E2B901ACA560C0433B053D134866E567425174E47173679AAD4486A2D3 │ │ │ │ │ +369C29E4DD2CD6ACA1BE80ED8FF0A9C58A616D26E758BD8E6342624EC83FB590 │ │ │ │ │ +BD354B52B60BB054FAFE9AC63E1564FBC721FE8F276B0413EC89A2C85E5ED1B0 │ │ │ │ │ +3A9D83BE62A4488ADE7CE69971A8AF7E5862A4290EEF6F00D4171C7FFB360065 │ │ │ │ │ +92E72BF02BE27161AE0BB5516572A0BDC4F316FFB24B38484AC8D1FD4CD86062 │ │ │ │ │ +A2B5D03CF28C3A679C039A6EFDD4C9DA7E463AD60234C9F6BBEE48D87DD94D85 │ │ │ │ │ +842F495F3E25723718682CE4D6224CBBF4456F03077EDF736D65B9DDAB09470E │ │ │ │ │ +17742D82011FFA96BFE86B96E858F9352FCD20C3D46B77DBDEE54336EC2249EA │ │ │ │ │ +211F6DFFF5BEA1E5192BE1BAC0BDD5EDDB3D56C6F7C6E543561A0B39E5C1B04F │ │ │ │ │ +C683A7516B6E69D682455386DDA709929D621FA434D403E895AA0A77DBE1DFD2 │ │ │ │ │ +0D060DF82378880147ED97C6E8149686FA048710B113760AC1DA4512FF8556B3 │ │ │ │ │ +16E2447485B8C3CD58D0469C4A45FFB4CB0322BB284C02 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -5387,15 +5392,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 1[45 1[45 45 45 3[25 44[{}13 │ │ │ │ │ +12[40 2[51 45 26[59 11[25 1[45 2[45 2[45 45 45 3[25 44[{}14 │ │ │ │ │ 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 │ │ │ │ │ @@ -5523,34 +5528,34 @@ │ │ │ │ │ (\(e.g.,)i Fj(umfp)-6 b(a)n(ck)34 b Fn(and)j Fj(superlu)p │ │ │ │ │ Fn(\),)f(then)h(w)m(e)g(can)g(mo)s(dify)0 5272 y(the)31 │ │ │ │ │ b Fm(Chv)e Fn(ob)5 b(ject)31 b(to)g(handle)f(unequal)g(ro)m(ws)h(and)e │ │ │ │ │ (columns.)141 5407 y(During)h(a)h(factorization,)i(a)e(fron)m(t)f(has)h │ │ │ │ │ (to)g(tak)m(e)h(part)e(in)g(four)g(distinct)g(op)s(erations.)1927 │ │ │ │ │ 5656 y(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fn(2)p 136 100 1154 4 v │ │ │ │ │ -1336 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(Jan)m(uary)g(16,)i(2024)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 │ │ │ │ │ -(ts.)37 b(\(See)21 b(the)g Fm(Chv)p 2837 885 V 33 w │ │ │ │ │ -(assemblePostponedData\(\))227 998 y Fn(metho)s(d.\))111 │ │ │ │ │ -1185 y(4.)46 b(Compute)20 b(the)h(factorization)i(of)d(the)g │ │ │ │ │ -(completely)i(assem)m(bled)f(fron)m(t.)38 b(\(See)20 │ │ │ │ │ -b(the)h Fm(Chv)p 3118 1185 V 33 w(factor\(\))d Fn(metho)s(d.\))141 │ │ │ │ │ -1396 y(The)35 b(implemen)m(tor)h(of)g(a)f(fron)m(t)h(ob)5 │ │ │ │ │ -b(ject)36 b(has)f(a)h(great)g(deal)g(of)g(freedom)f(to)h(design)f(the)h │ │ │ │ │ -(underlying)e(data)0 1509 y(structures.)57 b(W)-8 b(e)37 │ │ │ │ │ -b(ha)m(v)m(e)h(c)m(hosen)e(to)h(store)g(the)f(en)m(tries)h(in)f(eac)m │ │ │ │ │ -(h)h(single)g(c)m(hevron)f(in)g(con)m(tiguous)h(memory)f(|)0 │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fn(2)p 136 100 1135 4 v │ │ │ │ │ +1317 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(F)-8 b(ebruary)30 │ │ │ │ │ +b(18,)i(2025)p 2765 100 V 111 399 a Fn(1.)46 b(Assem)m(ble)39 │ │ │ │ │ +b(en)m(tries)g(from)f(the)h(original)g(matrix)g(\(or)g(matrix)f(p)s │ │ │ │ │ +(encil\).)65 b(\(See)39 b(the)g Fm(Chv)p 3300 399 29 │ │ │ │ │ +4 v 33 w(addChevron\(\))227 511 y Fn(metho)s(d.\))111 │ │ │ │ │ +698 y(2.)46 b(Accum)m(ulate)32 b(up)s(dates)e(from)g(descendan)m(t)g │ │ │ │ │ +(fron)m(ts.)41 b(\(See)31 b(the)f Fm(Chv)p 2548 698 V │ │ │ │ │ +34 w(update)p Fh(f)p Fm(S,H,N)p Fh(g)p Fm(\(\))e Fn(metho)s(ds.\))111 │ │ │ │ │ +885 y(3.)46 b(Assem)m(ble)21 b(an)m(y)g(p)s(ostp)s(oned)e(data)i(from)e │ │ │ │ │ +(its)i(c)m(hildren)f(fron)m(ts.)37 b(\(See)21 b(the)g │ │ │ │ │ +Fm(Chv)p 2837 885 V 33 w(assemblePostponedData\(\))227 │ │ │ │ │ +998 y Fn(metho)s(d.\))111 1185 y(4.)46 b(Compute)20 b(the)h │ │ │ │ │ +(factorization)i(of)d(the)g(completely)i(assem)m(bled)f(fron)m(t.)38 │ │ │ │ │ +b(\(See)20 b(the)h Fm(Chv)p 3118 1185 V 33 w(factor\(\))d │ │ │ │ │ +Fn(metho)s(d.\))141 1396 y(The)35 b(implemen)m(tor)h(of)g(a)f(fron)m(t) │ │ │ │ │ +h(ob)5 b(ject)36 b(has)f(a)h(great)g(deal)g(of)g(freedom)f(to)h(design) │ │ │ │ │ +f(the)h(underlying)e(data)0 1509 y(structures.)57 b(W)-8 │ │ │ │ │ +b(e)37 b(ha)m(v)m(e)h(c)m(hosen)e(to)h(store)g(the)f(en)m(tries)h(in)f │ │ │ │ │ +(eac)m(h)h(single)g(c)m(hevron)f(in)g(con)m(tiguous)h(memory)f(|)0 │ │ │ │ │ 1621 y(the)31 b(\014rst)f(en)m(try)h(of)g(a)h(c)m(hevron)f(is)g(in)f │ │ │ │ │ (the)h(last)h(ro)m(w)f(of)g(the)g(fron)m(t,)g(the)g(last)h(en)m(try)f │ │ │ │ │ (of)g(a)g(c)m(hevron)h(is)e(in)h(the)g(last)0 1734 y(column)h(of)h(the) │ │ │ │ │ g(fron)m(t.)47 b(The)32 b(\014gure)g(b)s(elo)m(w)g(sho)m(ws)h(the)f │ │ │ │ │ (storage)i(lo)s(cations)g(for)e(the)h(en)m(tries)g(|)g(on)f(the)h(left) │ │ │ │ │ g(is)0 1847 y(a)e(nonsymmetric)f(c)m(hevron,)h(on)f(the)h(righ)m(t)g │ │ │ │ │ (is)f(a)h(symmetric)f(or)h(hermitian)f(c)m(hevron.)1290 │ │ │ │ │ @@ -5716,17 +5721,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 1154 4 v 1335 100 a Fm(Chv)30 │ │ │ │ │ -b Fi(:)41 b Fl(DRAFT)121 b Fi(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2699 100 V 1154 w Fn(3)0 399 y(of)38 b(comm)m(unication.)63 │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1135 4 v 1316 100 a Fm(Chv)30 │ │ │ │ │ +b Fi(:)40 b Fl(DRAFT)122 b Fi(F)-8 b(ebruary)30 b(18,)h(2025)p │ │ │ │ │ +2718 100 V 1135 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 │ │ │ │ │ @@ -5795,19 +5800,19 @@ │ │ │ │ │ b Fm(int)i(*colind)29 b Fn(:)40 b(p)s(oin)m(ter)31 b(to)g(the)f(base)h │ │ │ │ │ (address)e(of)i(the)f Fm(int)g Fn(v)m(ector)i(that)f(con)m(tains)g │ │ │ │ │ (column)g(indices.)137 5407 y Fe(\210)45 b Fm(double)h(*entries)22 │ │ │ │ │ b Fn(:)37 b(p)s(oin)m(ter)23 b(to)h(the)g(base)g(address)e(of)i(the)g │ │ │ │ │ Fm(double)d Fn(v)m(ector)k(that)g(con)m(tains)f(the)g(en)m(tries.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fn(4)p 136 100 1154 4 v │ │ │ │ │ -1336 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(Jan)m(uary)g(16,)i(2024)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 │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fn(4)p 136 100 1135 4 v │ │ │ │ │ +1317 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(F)-8 b(ebruary)30 │ │ │ │ │ +b(18,)i(2025)p 2765 100 V 137 399 a Fe(\210)45 b Fm(DV)i(wrkDV)29 │ │ │ │ │ +b Fn(:)i(ob)5 b(ject)31 b(that)g(manages)g(the)g(o)m(wned)f(w)m(orking) │ │ │ │ │ +h(storage.)137 586 y Fe(\210)45 b Fm(Chv)i(*next)29 b │ │ │ │ │ Fn(:)41 b(link)30 b(to)h(a)g(next)f(ob)5 b(ject)32 b(in)e(a)h(singly)f │ │ │ │ │ (link)m(ed)h(list.)141 798 y(One)f(can)h(query)f(the)g(t)m(yp)s(e)h │ │ │ │ │ (and)e(symmetry)h(of)h(the)f(ob)5 b(ject)32 b(using)e(these)g(simple)h │ │ │ │ │ (macros.)137 1011 y Fe(\210)45 b Fm(CHV)p 377 1011 29 │ │ │ │ │ 4 v 34 w(IS)p 507 1011 V 34 w(REAL\(chv\))27 b Fn(is)k │ │ │ │ │ Fm(1)f Fn(if)g Fm(chv)g Fn(has)g(real)h(en)m(tries)g(and)f │ │ │ │ │ Fm(0)g Fn(otherwise.)137 1198 y Fe(\210)45 b Fm(CHV)p │ │ │ │ │ @@ -5865,17 +5870,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 1154 4 v 1335 100 a Fm(Chv)30 │ │ │ │ │ -b Fi(:)41 b Fl(DRAFT)121 b Fi(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2699 100 V 1154 w Fn(5)0 399 y Fc(1.2.2)112 b(Instance)38 │ │ │ │ │ +TeXDict begin 5 4 bop 91 100 1135 4 v 1316 100 a Fm(Chv)30 │ │ │ │ │ +b Fi(:)40 b Fl(DRAFT)122 b Fi(F)-8 b(ebruary)30 b(18,)h(2025)p │ │ │ │ │ +2718 100 V 1135 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 │ │ │ │ │ @@ -5935,25 +5940,25 @@ │ │ │ │ │ Fl(double)k(pr)-5 b(e)g(cision)32 b(c)-5 b(omplex)30 │ │ │ │ │ b Fn(en)m(tries,)g(equal)f(to)g(one)g(half)g(the)f(n)m(um)m(b)s(er)227 │ │ │ │ │ 5256 y(of)j(double)f(precision)g(en)m(tries)h(that)g(are)g(stored.)227 │ │ │ │ │ 5407 y Fl(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fn(If)30 │ │ │ │ │ b Fm(chv)g Fn(is)g Fm(NULL)p Fn(,)g(an)g(error)g(message)h(is)g(prin)m │ │ │ │ │ (ted)f(and)g(zero)h(is)f(returned.)p eop end │ │ │ │ │ %%Page: 6 6 │ │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fn(6)p 136 100 1154 4 v │ │ │ │ │ -1336 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(Jan)m(uary)g(16,)i(2024)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 │ │ │ │ │ -y(9.)46 b Fm(double)g(*)i(Chv_diagLocation)43 b(\()48 │ │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fn(6)p 136 100 1135 4 v │ │ │ │ │ +1317 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(F)-8 b(ebruary)30 │ │ │ │ │ +b(18,)i(2025)p 2765 100 V 111 399 a Fn(8.)46 b Fm(double)g(*)i │ │ │ │ │ +(Chv_entries)d(\()i(Chv)g(*chv)g(\))g(;)227 548 y Fn(This)40 │ │ │ │ │ +b(metho)s(d)h(returns)f(the)h Fl(entries)g Fn(\014eld)g(of)g(the)g(ob)5 │ │ │ │ │ +b(ject,)45 b(a)c(p)s(oin)m(ter)g(to)h(the)f(base)g(lo)s(cation)i(of)e │ │ │ │ │ +(the)227 661 y(double)30 b(precision)h(arra)m(y)g(that)g(stores)f(the)h │ │ │ │ │ +(complex)g(data.)227 810 y Fl(Err)-5 b(or)34 b(che)-5 │ │ │ │ │ +b(cking:)40 b Fn(If)30 b Fm(chv)g Fn(is)g Fm(NULL)p Fn(,)g(an)g(error)g │ │ │ │ │ +(message)h(is)g(prin)m(ted)f(and)g(zero)h(is)f(returned.)111 │ │ │ │ │ +995 y(9.)46 b Fm(double)g(*)i(Chv_diagLocation)43 b(\()48 │ │ │ │ │ b(Chv)f(*chv,)f(int)h(ichv)f(\))i(;)227 1145 y Fn(This)33 │ │ │ │ │ b(metho)s(d)f(returns)g(a)i(p)s(oin)m(ter)f(to)h(the)f(address)f(of)i │ │ │ │ │ (the)f(en)m(try)g(in)g(the)h Fm(ichv)p Fn('th)e(diagonal)i(lo)s │ │ │ │ │ (cation.)227 1257 y(F)-8 b(or)31 b(a)g(real)g(c)m(hevron,)g(to)g │ │ │ │ │ (\014nd)e(the)i(en)m(try)f Fm(k)h Fn(places)g(to)g(the)g(righ)m(t)g(of) │ │ │ │ │ f(the)h(diagonal)g(en)m(try)-8 b(,)32 b(add)e Fm(k)g │ │ │ │ │ Fn(to)h(the)227 1370 y(address.)62 b(T)-8 b(o)38 b(\014nd)e(an)i(en)m │ │ │ │ │ @@ -6025,17 +6030,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 1154 4 v 1335 100 a Fm(Chv)30 │ │ │ │ │ -b Fi(:)41 b Fl(DRAFT)121 b Fi(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2699 100 V 1154 w Fn(7)66 399 y(15.)46 b Fm(Chv_locationOfComplexEntr)o │ │ │ │ │ +TeXDict begin 7 6 bop 91 100 1135 4 v 1316 100 a Fm(Chv)30 │ │ │ │ │ +b Fi(:)40 b Fl(DRAFT)122 b Fi(F)-8 b(ebruary)30 b(18,)h(2025)p │ │ │ │ │ +2718 100 V 1135 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 │ │ │ │ │ @@ -6108,29 +6113,30 @@ │ │ │ │ │ b(,)33 b(the)f(w)m(orkspace)h(bu\013er)e(o)m(wned)h(b)m(y)f(the)h │ │ │ │ │ Fm(Chv)f Fn(ob)5 b(ject)33 b(is)f(sen)m(t)h(and)227 5253 │ │ │ │ │ y(receiv)m(ed.)227 5407 y Fl(Err)-5 b(or)34 b(che)-5 │ │ │ │ │ b(cking:)40 b Fn(If)30 b Fm(chv)g Fn(is)g Fm(NULL)p Fn(,)g(an)g(error)g │ │ │ │ │ (message)h(is)g(prin)m(ted)f(and)g(zero)h(is)f(returned.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 8 8 │ │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fn(8)p 136 100 1154 4 v │ │ │ │ │ -1336 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(Jan)m(uary)g(16,)i(2024)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 │ │ │ │ │ -b(Its)227 989 y(magnitude)30 b(is)g(returned)e(in)i Fm(*pmaxval)p │ │ │ │ │ -Fn(.)38 b(Note,)31 b(if)f(the)g(c)m(hevron)f(is)h(complex,)h(the)f(lo)s │ │ │ │ │ -(cation)h(is)f(in)f(terms)227 1101 y(of)g(the)g(complex)g(en)m(tries,)h │ │ │ │ │ -(not)e(in)h(the)f(real)i(en)m(tries,)f(i.e.,)i(if)d Fm(k)48 │ │ │ │ │ -b(=)f(Chv)p 2654 1101 29 4 v 34 w(maxabsDiagonal11\(chv,..)o(.\))p │ │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fn(8)p 136 100 1135 4 v │ │ │ │ │ +1317 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(F)-8 b(ebruary)30 │ │ │ │ │ +b(18,)i(2025)p 2765 100 V 0 399 a Fc(1.2.4)112 b(Searc)m(h)38 │ │ │ │ │ +b(metho)s(ds)111 604 y Fn(1.)46 b Fm(int)h(Chv_maxabsInDiagonal11)42 │ │ │ │ │ +b(\()47 b(Chv)g(*chv,)g(int)g(mark[],)e(int)i(tag,)g(double)f(*pmaxval) │ │ │ │ │ +g(\))h(;)227 763 y Fn(This)34 b(metho)s(d)g(returns)f(the)i(lo)s │ │ │ │ │ +(cation)h(of)f(the)g(\014rst)f(tagged)i(elemen)m(t)g(with)e(the)h │ │ │ │ │ +(largest)h(magnitude)e(in)227 876 y(the)i(diagonal)i(of)e(the)g │ │ │ │ │ +(\(1,1\))i(blo)s(c)m(k.)58 b(Elemen)m(t)37 b Fm(jj)e │ │ │ │ │ +Fn(m)m(ust)h(ha)m(v)m(e)h Fm(mark[jj])46 b(=)h(tag)36 │ │ │ │ │ +b Fn(to)g(b)s(e)g(eligible.)59 b(Its)227 989 y(magnitude)30 │ │ │ │ │ +b(is)g(returned)e(in)i Fm(*pmaxval)p Fn(.)38 b(Note,)31 │ │ │ │ │ +b(if)f(the)g(c)m(hevron)f(is)h(complex,)h(the)f(lo)s(cation)h(is)f(in)f │ │ │ │ │ +(terms)227 1101 y(of)g(the)g(complex)g(en)m(tries,)h(not)e(in)h(the)f │ │ │ │ │ +(real)i(en)m(tries,)f(i.e.,)i(if)d Fm(k)48 b(=)f(Chv)p │ │ │ │ │ +2654 1101 29 4 v 34 w(maxabsDiagonal11\(chv,..)o(.\))p │ │ │ │ │ Fn(,)227 1214 y(then)30 b(the)h(complex)g(en)m(try)g(is)f(found)f(in)h │ │ │ │ │ Fm(chv->entries[2*kk:2*kk+1])o Fn(.)227 1373 y Fl(Err)-5 │ │ │ │ │ b(or)30 b(che)-5 b(cking:)38 b Fn(If)25 b Fm(chv)p Fn(,)g │ │ │ │ │ Fm(mark)g Fn(or)g Fm(pmaxval)f Fn(is)h Fm(NULL)p Fn(,)g(an)g(error)g │ │ │ │ │ (message)i(is)f(prin)m(ted)f(and)f(the)i(program)227 │ │ │ │ │ 1486 y(exits.)111 1692 y(2.)46 b Fm(int)h(Chv_maxabsInRow11)c(\()48 │ │ │ │ │ b(Chv)f(*chv,)f(int)h(irow,)f(int)h(colmark[],)1373 1804 │ │ │ │ │ @@ -6186,17 +6192,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 1154 4 v 1335 100 a Fm(Chv)30 │ │ │ │ │ -b Fi(:)41 b Fl(DRAFT)121 b Fi(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2699 100 V 1154 w Fn(9)227 399 y(This)h(metho)s(d)g(returns)g(the)h(lo) │ │ │ │ │ +TeXDict begin 9 8 bop 91 100 1135 4 v 1316 100 a Fm(Chv)30 │ │ │ │ │ +b Fi(:)40 b Fl(DRAFT)122 b Fi(F)-8 b(ebruary)30 b(18,)h(2025)p │ │ │ │ │ +2718 100 V 1135 w Fn(9)227 399 y(This)h(metho)s(d)g(returns)g(the)h(lo) │ │ │ │ │ s(cation)h(of)f(the)g(\014rst)f(elemen)m(t)i(with)f(the)g(largest)h │ │ │ │ │ (magnitude)f(in)f(column)227 511 y Fm(jcol)p Fn(.)52 │ │ │ │ │ b(Elemen)m(t)35 b Fm(jj)f Fn(m)m(ust)g(ha)m(v)m(e)i Fm(rowmark[jj])45 │ │ │ │ │ b(=)i(tag)33 b Fn(to)j(b)s(e)d(eligible.)55 b(Its)34 │ │ │ │ │ b(magnitude)h(is)f(returned)227 624 y(in)28 b Fm(*pmaxval)p │ │ │ │ │ Fn(.)38 b(Note,)30 b(if)e(the)h(c)m(hevron)f(is)g(complex,)i(the)e(lo)s │ │ │ │ │ (cation)i(is)e(in)g(terms)g(of)h(the)f(complex)h(en)m(tries,)227 │ │ │ │ │ @@ -6280,23 +6286,23 @@ │ │ │ │ │ (symmetric,)h(w)m(e)f(can)h(\014nd)d(a)j(1)21 b Fh(\002)g │ │ │ │ │ Fn(1)33 b(or)f(2)22 b Fh(\002)f Fn(2)32 b(piv)m(ot.)47 │ │ │ │ │ b(If)31 b(the)i(c)m(hevron)227 5294 y(is)d(nonsymmetric,)g(w)m(e)h │ │ │ │ │ (only)f(\014nd)e(a)i(1)20 b Fh(\002)f Fn(1)30 b(piv)m(ot.)42 │ │ │ │ │ b(A)30 b(return)e(v)-5 b(alue)31 b(of)f(zero)h(means)e(that)i(no)f(piv) │ │ │ │ │ m(ot)h(w)m(as)227 5407 y(found.)p eop end │ │ │ │ │ %%Page: 10 10 │ │ │ │ │ -TeXDict begin 10 9 bop 0 100 a Fn(10)p 182 100 1131 4 │ │ │ │ │ -v 1314 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(Jan)m(uary)g(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fn(10)p 182 100 1112 4 │ │ │ │ │ +v 1295 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2788 100 V 227 399 a Fl(Err)-5 │ │ │ │ │ +b(or)47 b(che)-5 b(cking:)67 b Fn(If)43 b Fm(chv)p Fn(,)j │ │ │ │ │ +Fm(workDV)p Fn(,)d Fm(pirow)p Fn(,)j Fm(pjcol)c Fn(or)i │ │ │ │ │ +Fm(pntest)e Fn(is)h Fm(NULL)p Fn(,)g(or)h(if)g Fm(tau)j │ │ │ │ │ +Fb(<)g Fn(1)p Fb(:)p Fn(0,)h(or)c(if)227 511 y Fm(ndelay)24 │ │ │ │ │ +b Fb(<)h Fn(0,)31 b(an)f(error)g(message)i(is)e(prin)m(ted)g(and)g(the) │ │ │ │ │ +g(program)g(exits.)0 782 y Fc(1.2.6)112 b(Up)s(date)39 │ │ │ │ │ b(metho)s(ds)111 980 y Fn(1.)46 b Fm(void)h(Chv_updateS)e(\()i(Chv)g │ │ │ │ │ (*chv,)f(SubMtx)g(*mtxD,)h(SubMtx)f(*mtxU,)g(DV)h(*tempDV)f(\))h(;)227 │ │ │ │ │ 1093 y(void)g(Chv_updateH)e(\()i(Chv)g(*chv,)f(SubMtx)g(*mtxD,)h │ │ │ │ │ (SubMtx)f(*mtxU,)g(DV)h(*tempDV)f(\))h(;)227 1206 y(void)g(Chv_updateN) │ │ │ │ │ e(\()i(Chv)g(*chv,)f(SubMtx)g(*mtxL,)h(SubMtx)f(*mtxD,)g(SubMtx)g │ │ │ │ │ (*mtxU,)1134 1318 y(DV)h(*tempDV)f(\))i(;)227 1470 y │ │ │ │ │ Fn(These)36 b(metho)s(ds)f(p)s(erform)f(an)i(up)s(date)f(to)i(a)f(c)m │ │ │ │ │ @@ -6388,17 +6394,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 1131 4 v 1313 100 a Fm(Chv)29 │ │ │ │ │ -b Fi(:)41 b Fl(DRAFT)121 b Fi(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2676 100 V 1131 w Fn(11)227 399 y(call)e(to)g(assem)m(ble)g(en)m(tries) │ │ │ │ │ +TeXDict begin 11 10 bop 91 100 1112 4 v 1294 100 a Fm(Chv)29 │ │ │ │ │ +b Fi(:)41 b Fl(DRAFT)121 b Fi(F)-8 b(ebruary)30 b(18,)h(2025)p │ │ │ │ │ +2695 100 V 1112 w Fn(11)227 399 y(call)e(to)g(assem)m(ble)g(en)m(tries) │ │ │ │ │ g(in)e Fb(A)h Fn(\(from)g(the)g(p)s(encil)g Fb(A)15 b │ │ │ │ │ Fn(+)g Fb(\033)s(B)5 b Fn(\))28 b(w)m(ould)f(ha)m(v)m(e)i │ │ │ │ │ Fm(alpha[])46 b(=)i(\(1.0,0.0\))p Fn(;)26 b(to)227 511 │ │ │ │ │ y(assem)m(ble)32 b(en)m(tries)f(in)f Fb(B)35 b Fn(\(from)30 │ │ │ │ │ b(the)g(p)s(encil)h Fb(A)20 b Fn(+)g Fb(\033)s(B)5 b │ │ │ │ │ Fn(\))30 b(w)m(ould)g(ha)m(v)m(e)i Fm(alpha[])23 b Fn(=)i(\()p │ │ │ │ │ Fb(R)q(eal)r Fn(\()p Fb(\033)s Fn(\))p Fb(;)15 b(I)7 │ │ │ │ │ @@ -6486,31 +6492,31 @@ │ │ │ │ │ (functionalit)m(y)-8 b(,)33 b(where)d(if)h(a)g(small)g(or)g(zero)g(en)m │ │ │ │ │ (try)g(is)g(found)e(in)i(the)g(diagonal)g(elemen)m(t)227 │ │ │ │ │ 5294 y(that)45 b(is)f(to)h(b)s(e)f(eliminated,)49 b(some)c(action)h │ │ │ │ │ (can)e(b)s(e)g(tak)m(en.)83 b(The)44 b(return)f(v)-5 │ │ │ │ │ b(alue)45 b(is)f(the)h(n)m(um)m(b)s(er)e(of)227 5407 │ │ │ │ │ y(eliminated)32 b(ro)m(ws)e(and)g(columns.)p eop end │ │ │ │ │ %%Page: 12 12 │ │ │ │ │ -TeXDict begin 12 11 bop 0 100 a Fn(12)p 182 100 1131 │ │ │ │ │ -4 v 1314 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(Jan)m(uary)g(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ -(nonzero,)h Fm(0)f Fn(otherwise.)227 1003 y Fl(Err)-5 │ │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fn(12)p 182 100 1112 │ │ │ │ │ +4 v 1295 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2788 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 1192 y(4.)46 b Fm(int)h(Chv_r2upd)e(\()j(Chv)f │ │ │ │ │ -(*chv)f(\))i(;)227 1343 y Fn(This)28 b(metho)s(d)h(is)g(used)f(during)f │ │ │ │ │ -(the)i(factorization)j(of)d(a)g(fron)m(t,)h(p)s(erforming)d(a)j(rank-t) │ │ │ │ │ -m(w)m(o)g(up)s(date)e(of)h(the)227 1456 y(c)m(hevron.)41 │ │ │ │ │ +(program)g(exits.)111 588 y(3.)46 b Fm(int)h(Chv_r1upd)e(\()j(Chv)f │ │ │ │ │ +(*chv)f(\))i(;)227 739 y Fn(This)29 b(metho)s(d)f(is)i(used)e(during)g │ │ │ │ │ +(the)h(factorization)j(of)e(a)f(fron)m(t,)h(p)s(erforming)e(a)i │ │ │ │ │ +(rank-one)f(up)s(date)f(of)i(the)227 852 y(c)m(hevron.)41 │ │ │ │ │ +b(The)30 b(return)f(v)-5 b(alue)31 b(is)g Fm(1)f Fn(if)g(the)h(piv)m │ │ │ │ │ +(ot)g(is)f(nonzero,)h Fm(0)f Fn(otherwise.)227 1003 y │ │ │ │ │ +Fl(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fn(If)30 b Fm(chv)g │ │ │ │ │ +Fn(is)g Fm(NULL)p Fn(,)g(an)g(error)g(message)h(is)g(prin)m(ted)f(and)g │ │ │ │ │ +(the)g(program)g(exits.)111 1192 y(4.)46 b Fm(int)h(Chv_r2upd)e(\()j │ │ │ │ │ +(Chv)f(*chv)f(\))i(;)227 1343 y Fn(This)28 b(metho)s(d)h(is)g(used)f │ │ │ │ │ +(during)f(the)i(factorization)j(of)d(a)g(fron)m(t,)h(p)s(erforming)d(a) │ │ │ │ │ +j(rank-t)m(w)m(o)g(up)s(date)e(of)h(the)227 1456 y(c)m(hevron.)41 │ │ │ │ │ b(The)30 b(return)f(v)-5 b(alue)31 b(is)g Fm(1)f Fn(if)g(the)h(piv)m │ │ │ │ │ (ot)g(is)f(nonsingular,)g Fm(0)g Fn(otherwise.)227 1607 │ │ │ │ │ y Fl(Err)-5 b(or)31 b(che)-5 b(cking:)39 b Fn(If)26 b │ │ │ │ │ Fm(chv)h Fn(is)g Fm(NULL)p Fn(,)f(or)h(if)g(the)g(c)m(hevron)h(is)f │ │ │ │ │ (nonsymmetric,)g(an)g(error)g(message)h(is)f(prin)m(ted)227 │ │ │ │ │ 1720 y(and)j(the)h(program)f(exits.)111 1909 y(5.)46 │ │ │ │ │ b Fm(void)h(Chv_maxabsInChevron)42 b(\()48 b(Chv)f(*chv,)f(int)h(ichv,) │ │ │ │ │ @@ -6564,17 +6570,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 1131 4 v 1313 100 a Fm(Chv)29 │ │ │ │ │ -b Fi(:)41 b Fl(DRAFT)121 b Fi(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2676 100 V 1131 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 1112 4 v 1294 100 a Fm(Chv)29 │ │ │ │ │ +b Fi(:)41 b Fl(DRAFT)121 b Fi(F)-8 b(ebruary)30 b(18,)h(2025)p │ │ │ │ │ +2695 100 V 1112 w Fn(13)227 399 y(This)f(metho)s(d)g(is)g(used)g(to)h │ │ │ │ │ (compute)f(the)h(necessary)g(storage)h(to)f(store)g(a)g(c)m(hevron)f │ │ │ │ │ (as)h(a)g(dense)f(fron)m(t.)227 551 y Fl(Err)-5 b(or)36 │ │ │ │ │ b(che)-5 b(cking:)45 b Fn(If)32 b Fm(chv)g Fn(is)h Fm(NULL)e │ │ │ │ │ Fn(or)i(if)g Fm(countflag)d Fn(is)i(not)h(v)-5 b(alid,)34 │ │ │ │ │ b(an)f(error)f(message)i(is)e(prin)m(ted)h(and)227 664 │ │ │ │ │ y(the)e(program)f(exits.)111 855 y(2.)46 b Fm(int)h │ │ │ │ │ (Chv_countBigEntries)c(\()k(Chv)g(*chv,)f(int)h(npivot,)f(int)h │ │ │ │ │ @@ -6654,19 +6660,19 @@ │ │ │ │ │ b(che)-5 b(cking:)45 b Fn(If)32 b Fm(chv)g Fn(or)g Fm(dvec)g │ │ │ │ │ Fn(is)h Fm(NULL)e Fn(or)i(if)f Fm(length)f Fn(is)i(less)g(than)f(the)h │ │ │ │ │ (n)m(um)m(b)s(er)e(of)i(en)m(tries)g(to)h(b)s(e)227 5294 │ │ │ │ │ y(copied,)k(or)d(if)g Fm(copyflag)e Fn(or)j Fm(storeflag)c │ │ │ │ │ Fn(is)k(v)-5 b(alid,)37 b(an)e(error)g(message)i(is)e(prin)m(ted)g(and) │ │ │ │ │ g(the)g(program)227 5407 y(exits.)p eop end │ │ │ │ │ %%Page: 14 14 │ │ │ │ │ -TeXDict begin 14 13 bop 0 100 a Fn(14)p 182 100 1131 │ │ │ │ │ -4 v 1314 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(Jan)m(uary)g(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ +TeXDict begin 14 13 bop 0 100 a Fn(14)p 182 100 1112 │ │ │ │ │ +4 v 1295 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2788 100 V 111 399 a Fn(4.)46 │ │ │ │ │ +b Fm(int)h(Chv_copyBigEntriesToVecto)o(r)42 b(\()47 b(Chv)g(*chv,)g │ │ │ │ │ +(int)f(npivot,)g(int)h(pivotsizes[],)1420 511 y(int)g(sizes[],)f(int)h │ │ │ │ │ (ivec[],)f(double)g(dvec[],)1420 624 y(int)h(copyflag,)f(int)h │ │ │ │ │ (storeflag,)e(double)h(droptol)f(\))j(;)227 769 y Fn(This)32 │ │ │ │ │ b(metho)s(d)f(also)j(copies)f(some)g(en)m(tries)g(the)f(c)m(hevron)h │ │ │ │ │ (ob)5 b(ject)33 b(in)m(to)g(a)g(double)f(precision)g(v)m(ector,)j(but) │ │ │ │ │ 227 882 y(only)40 b(those)f(en)m(tries)h(whose)f(magnitude)g(is)h │ │ │ │ │ (greater)g(than)f(or)g(equal)h(to)g Fm(droptol)d Fn(are)i(copied.)68 │ │ │ │ │ b(This)227 995 y(metho)s(d)27 b(is)g(called)h(after)f(a)h(fron)m(t)f │ │ │ │ │ @@ -6753,17 +6759,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 1131 4 v 1313 100 a Fm(Chv)29 │ │ │ │ │ -b Fi(:)41 b Fl(DRAFT)121 b Fi(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2676 100 V 1131 w Fn(15)227 399 y Fl(Err)-5 b(or)35 b(che)-5 │ │ │ │ │ +TeXDict begin 15 14 bop 91 100 1112 4 v 1294 100 a Fm(Chv)29 │ │ │ │ │ +b Fi(:)41 b Fl(DRAFT)121 b Fi(F)-8 b(ebruary)30 b(18,)h(2025)p │ │ │ │ │ +2695 100 V 1112 w Fn(15)227 399 y Fl(Err)-5 b(or)35 b(che)-5 │ │ │ │ │ b(cking:)43 b Fn(If)31 b Fm(chv)g Fn(is)h Fm(NULL)e Fn(or)i(if)g │ │ │ │ │ Fm(irow)e Fn(or)i Fm(jrow)e Fn(are)i(less)g(than)f(0)i(or)e(greater)i │ │ │ │ │ (than)e(or)h(equal)g(to)227 511 y Fm(nD)p Fn(,)e(an)h(error)f(message)h │ │ │ │ │ (is)f(prin)m(ted)g(and)g(the)h(program)f(exits.)111 699 │ │ │ │ │ y(2.)46 b Fm(void)h(Chv_swapColumns)d(\()j(Chv)g(*chv,)f(int)h(icol,)g │ │ │ │ │ (int)f(jcol)h(\))h(;)227 849 y Fn(This)29 b(metho)s(d)g(sw)m(aps)g │ │ │ │ │ (columns)g Fm(icol)g Fn(and)g Fm(jcol)f Fn(of)h(the)h(c)m(hevron.)41 │ │ │ │ │ @@ -6833,54 +6839,55 @@ │ │ │ │ │ Fn(is)i(p)s(ositiv)m(e,)k(the)41 b(\014rst)g Fm(shift)f │ │ │ │ │ Fn(c)m(hevrons)i(are)g(remo)m(v)m(ed)g(from)f(the)h(c)m(hevron.)75 │ │ │ │ │ b(If)41 b Fm(shift)f Fn(is)227 5407 y(negativ)m(e,)j(the)38 │ │ │ │ │ b Fm(shift)f Fn(previous)g(c)m(hevrons)h(are)h(prep)s(ended)d(to)i(the) │ │ │ │ │ h(c)m(hevron.)64 b(This)37 b(is)h(a)g(dangerous)p eop │ │ │ │ │ end │ │ │ │ │ %%Page: 16 16 │ │ │ │ │ -TeXDict begin 16 15 bop 0 100 a Fn(16)p 182 100 1131 │ │ │ │ │ -4 v 1314 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(Jan)m(uary)g(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ -(shifted)g(during)f(the)i(factorization.)227 910 y Fl(Err)-5 │ │ │ │ │ -b(or)34 b(che)-5 b(cking:)40 b Fn(If)30 b Fm(chv)g Fn(is)g │ │ │ │ │ -Fm(NULL)f Fn(an)i(error)f(message)h(is)g(prin)m(ted)f(and)f(the)i │ │ │ │ │ -(program)f(exits.)111 1142 y(6.)46 b Fm(void)h(Chv_fill11block)d(\()j │ │ │ │ │ -(Chv)g(*chv,)f(A2)h(*mtx)g(\))h(;)227 1315 y Fn(This)27 │ │ │ │ │ -b(metho)s(d)h(is)g(used)f(to)h(\014ll)g(a)h Fm(A2)e Fn(dense)g(matrix)i │ │ │ │ │ -(ob)5 b(ject)28 b(with)g(the)g(en)m(tries)h(in)e(the)h(\(1)p │ │ │ │ │ -Fb(;)15 b Fn(1\))30 b(blo)s(c)m(k)f(of)f(the)227 1428 │ │ │ │ │ -y(c)m(hevron.)227 1601 y Fl(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ │ -b Fn(If)30 b Fm(chv)g Fn(or)g Fm(mtx)g Fn(is)g Fm(NULL)p │ │ │ │ │ -Fn(,)g(an)g(error)g(message)h(is)g(prin)m(ted)f(and)f(the)i(program)f │ │ │ │ │ -(exits.)111 1833 y(7.)46 b Fm(void)h(Chv_fill12block)d(\()j(Chv)g │ │ │ │ │ -(*chv,)f(A2)h(*mtx)g(\))h(;)227 2006 y Fn(This)27 b(metho)s(d)h(is)g │ │ │ │ │ -(used)f(to)h(\014ll)g(a)h Fm(A2)e Fn(dense)g(matrix)i(ob)5 │ │ │ │ │ -b(ject)28 b(with)g(the)g(en)m(tries)h(in)e(the)h(\(1)p │ │ │ │ │ -Fb(;)15 b Fn(2\))30 b(blo)s(c)m(k)f(of)f(the)227 2119 │ │ │ │ │ -y(c)m(hevron.)227 2292 y Fl(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ │ -b Fn(If)30 b Fm(chv)g Fn(or)g Fm(mtx)g Fn(is)g Fm(NULL)p │ │ │ │ │ -Fn(,)g(an)g(error)g(message)h(is)g(prin)m(ted)f(and)f(the)i(program)f │ │ │ │ │ -(exits.)111 2524 y(8.)46 b Fm(void)h(Chv_fill21block)d(\()j(Chv)g │ │ │ │ │ -(*chv,)f(A2)h(*mtx)g(\))h(;)227 2697 y Fn(This)27 b(metho)s(d)h(is)g │ │ │ │ │ -(used)f(to)h(\014ll)g(a)h Fm(A2)e Fn(dense)g(matrix)i(ob)5 │ │ │ │ │ -b(ject)28 b(with)g(the)g(en)m(tries)h(in)e(the)h(\(2)p │ │ │ │ │ -Fb(;)15 b Fn(1\))30 b(blo)s(c)m(k)f(of)f(the)227 2810 │ │ │ │ │ -y(c)m(hevron.)227 2983 y Fl(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ │ -b Fn(If)30 b Fm(chv)g Fn(or)g Fm(mtx)g Fn(is)g Fm(NULL)p │ │ │ │ │ -Fn(,)g(an)g(error)g(message)h(is)g(prin)m(ted)f(and)f(the)i(program)f │ │ │ │ │ -(exits.)111 3215 y(9.)46 b Fm(double)g(Chv_maxabs)f(\()j(Chv)f(*chv)f │ │ │ │ │ -(\))i(;)227 3388 y Fn(This)30 b(metho)s(d)g(returns)f(the)h(magnitude)h │ │ │ │ │ -(of)f(the)h(en)m(try)g(of)f(largest)i(magnitude)e(in)g(the)h(ob)5 │ │ │ │ │ +TeXDict begin 16 15 bop 0 100 a Fn(16)p 182 100 1112 │ │ │ │ │ +4 v 1295 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2788 100 V 227 399 a Fn(metho)s(d)j(as)h │ │ │ │ │ +(it)g(c)m(hanges)h(the)e(state)i(of)f(the)g(ob)5 b(ject.)54 │ │ │ │ │ +b(W)-8 b(e)35 b(use)g(it)g(during)e(the)i(factorization)i(of)e(a)g │ │ │ │ │ +(fron)m(t,)227 511 y(where)c(one)g Fm(Chv)e Fn(ob)5 b(ject)32 │ │ │ │ │ +b(p)s(oin)m(ts)f(to)g(the)g(en)m(tire)h(c)m(hevron)f(in)f(order)g(to)i │ │ │ │ │ +(sw)m(ap)e(ro)m(ws)h(and)f(columns,)h(while)227 624 y(another)36 │ │ │ │ │ +b(c)m(hevron)g(p)s(oin)m(ts)g(to)g(the)g(uneliminated)g(ro)m(ws)g(and)f │ │ │ │ │ +(columns)g(of)h(the)g(fron)m(t.)57 b(It)36 b(is)g(the)g(latter)227 │ │ │ │ │ +737 y(c)m(hevron)31 b(that)g(is)f(shifted)g(during)f(the)i │ │ │ │ │ +(factorization.)227 910 y Fl(Err)-5 b(or)34 b(che)-5 │ │ │ │ │ +b(cking:)40 b Fn(If)30 b Fm(chv)g Fn(is)g Fm(NULL)f Fn(an)i(error)f │ │ │ │ │ +(message)h(is)g(prin)m(ted)f(and)f(the)i(program)f(exits.)111 │ │ │ │ │ +1142 y(6.)46 b Fm(void)h(Chv_fill11block)d(\()j(Chv)g(*chv,)f(A2)h │ │ │ │ │ +(*mtx)g(\))h(;)227 1315 y Fn(This)27 b(metho)s(d)h(is)g(used)f(to)h │ │ │ │ │ +(\014ll)g(a)h Fm(A2)e Fn(dense)g(matrix)i(ob)5 b(ject)28 │ │ │ │ │ +b(with)g(the)g(en)m(tries)h(in)e(the)h(\(1)p Fb(;)15 │ │ │ │ │ +b Fn(1\))30 b(blo)s(c)m(k)f(of)f(the)227 1428 y(c)m(hevron.)227 │ │ │ │ │ +1601 y Fl(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fn(If)30 │ │ │ │ │ +b Fm(chv)g Fn(or)g Fm(mtx)g Fn(is)g Fm(NULL)p Fn(,)g(an)g(error)g │ │ │ │ │ +(message)h(is)g(prin)m(ted)f(and)f(the)i(program)f(exits.)111 │ │ │ │ │ +1833 y(7.)46 b Fm(void)h(Chv_fill12block)d(\()j(Chv)g(*chv,)f(A2)h │ │ │ │ │ +(*mtx)g(\))h(;)227 2006 y Fn(This)27 b(metho)s(d)h(is)g(used)f(to)h │ │ │ │ │ +(\014ll)g(a)h Fm(A2)e Fn(dense)g(matrix)i(ob)5 b(ject)28 │ │ │ │ │ +b(with)g(the)g(en)m(tries)h(in)e(the)h(\(1)p Fb(;)15 │ │ │ │ │ +b Fn(2\))30 b(blo)s(c)m(k)f(of)f(the)227 2119 y(c)m(hevron.)227 │ │ │ │ │ +2292 y Fl(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fn(If)30 │ │ │ │ │ +b Fm(chv)g Fn(or)g Fm(mtx)g Fn(is)g Fm(NULL)p Fn(,)g(an)g(error)g │ │ │ │ │ +(message)h(is)g(prin)m(ted)f(and)f(the)i(program)f(exits.)111 │ │ │ │ │ +2524 y(8.)46 b Fm(void)h(Chv_fill21block)d(\()j(Chv)g(*chv,)f(A2)h │ │ │ │ │ +(*mtx)g(\))h(;)227 2697 y Fn(This)27 b(metho)s(d)h(is)g(used)f(to)h │ │ │ │ │ +(\014ll)g(a)h Fm(A2)e Fn(dense)g(matrix)i(ob)5 b(ject)28 │ │ │ │ │ +b(with)g(the)g(en)m(tries)h(in)e(the)h(\(2)p Fb(;)15 │ │ │ │ │ +b Fn(1\))30 b(blo)s(c)m(k)f(of)f(the)227 2810 y(c)m(hevron.)227 │ │ │ │ │ +2983 y Fl(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fn(If)30 │ │ │ │ │ +b Fm(chv)g Fn(or)g Fm(mtx)g Fn(is)g Fm(NULL)p Fn(,)g(an)g(error)g │ │ │ │ │ +(message)h(is)g(prin)m(ted)f(and)f(the)i(program)f(exits.)111 │ │ │ │ │ +3215 y(9.)46 b Fm(double)g(Chv_maxabs)f(\()j(Chv)f(*chv)f(\))i(;)227 │ │ │ │ │ +3388 y Fn(This)30 b(metho)s(d)g(returns)f(the)h(magnitude)h(of)f(the)h │ │ │ │ │ +(en)m(try)g(of)f(largest)i(magnitude)e(in)g(the)h(ob)5 │ │ │ │ │ b(ject.)227 3560 y Fl(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ │ b Fn(If)30 b Fm(chv)g Fn(is)g Fm(NULL)p Fn(,)g(an)g(error)g(message)h │ │ │ │ │ (is)g(prin)m(ted)f(and)g(the)g(program)g(exits.)66 3793 │ │ │ │ │ y(10.)46 b Fm(double)g(Chv_frobNorm)f(\()i(Chv)g(*chv)g(\))g(;)227 │ │ │ │ │ 3966 y Fn(This)30 b(metho)s(d)g(returns)f(the)h(F)-8 │ │ │ │ │ b(rob)s(enius)30 b(norm)g(of)g(the)h(c)m(hevron.)227 │ │ │ │ │ 4138 y Fl(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fn(If)30 │ │ │ │ │ @@ -6897,17 +6904,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 1131 4 v 1313 100 a Fm(Chv)29 │ │ │ │ │ -b Fi(:)41 b Fl(DRAFT)121 b Fi(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2676 100 V 1131 w Fn(17)0 399 y Fc(1.2.12)113 b(IO)37 │ │ │ │ │ +TeXDict begin 17 16 bop 91 100 1112 4 v 1294 100 a Fm(Chv)29 │ │ │ │ │ +b Fi(:)41 b Fl(DRAFT)121 b Fi(F)-8 b(ebruary)30 b(18,)h(2025)p │ │ │ │ │ +2695 100 V 1112 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 │ │ │ │ │ @@ -6967,20 +6974,20 @@ │ │ │ │ │ Fn(is)h(\(1.0,0.0\),)j(when)c(w)m(e)h(are)g(just)g(loading)g(matrix)g │ │ │ │ │ (en)m(tries)h(in)m(to)g(a)427 5294 y(fron)m(t.)41 b(Ho)m(w)m(ev)m(er,) │ │ │ │ │ 33 b(when)c(w)m(e)i(factor)g Fb(A)20 b Fn(+)g Fb(\013B)5 │ │ │ │ │ b Fn(,)31 b(the)f(en)m(tries)h(of)g Fb(B)j Fn(will)d(b)s(e)f(loaded)h │ │ │ │ │ (with)f Fm(alpha)e Fn(set)427 5407 y(equal)j(to)g Fb(\013)p │ │ │ │ │ Fn([0)c(:)e(1].)p eop end │ │ │ │ │ %%Page: 18 18 │ │ │ │ │ -TeXDict begin 18 17 bop 0 100 a Fn(18)p 182 100 1131 │ │ │ │ │ -4 v 1314 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(Jan)m(uary)g(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ +TeXDict begin 18 17 bop 0 100 a Fn(18)p 182 100 1112 │ │ │ │ │ +4 v 1295 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2788 100 V 111 399 a Fn(2.)46 │ │ │ │ │ +b Fm(test_assmbChv)e(msglvl)j(msgFile)e(nDJ)i(nUJ)g(nDI)g(nUI)g(type)g │ │ │ │ │ +(symflag)e(seed)227 553 y Fn(This)30 b(driv)m(er)h(program)g(tests)g │ │ │ │ │ +(the)h Fm(Chv)p 1585 553 29 4 v 33 w(assembleChv)c Fn(metho)s(d.)42 │ │ │ │ │ b(It)31 b(assem)m(bles)g(a)h(c)m(hevron)f Fb(T)3517 567 │ │ │ │ │ y Fa(I)3588 553 y Fn(in)m(to)h Fb(T)3826 567 y Fa(J)3875 │ │ │ │ │ 553 y Fn(,)227 666 y(as)c(is)f(done)h(during)e(the)h(assem)m(bly)h(of)g │ │ │ │ │ (p)s(ostp)s(oned)e(ro)m(ws)h(and)g(columns)g(during)f(the)i │ │ │ │ │ (factorization)i(when)227 779 y(piv)m(oting)42 b(is)f(enabled.)72 │ │ │ │ │ b(Use)41 b(the)f(script)h(\014le)g Fm(do)p 1967 779 V │ │ │ │ │ 34 w(assmbChv)d Fn(for)j(testing.)72 b(When)41 b(the)g(output)f(\014le) │ │ │ │ │ @@ -7054,17 +7061,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 1131 4 v 1313 100 a Fm(Chv)29 │ │ │ │ │ -b Fi(:)41 b Fl(DRAFT)121 b Fi(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2676 100 V 1131 w Fn(19)337 399 y Fe(\210)45 b Fn(The)35 │ │ │ │ │ +TeXDict begin 19 18 bop 91 100 1112 4 v 1294 100 a Fm(Chv)29 │ │ │ │ │ +b Fi(:)41 b Fl(DRAFT)121 b Fi(F)-8 b(ebruary)30 b(18,)h(2025)p │ │ │ │ │ +2695 100 V 1112 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 │ │ │ │ │ @@ -7140,21 +7147,21 @@ │ │ │ │ │ Fn(parameter)j(determines)f(the)h(message)g(\014le)f(|)h(if)f │ │ │ │ │ Fm(msgFile)e Fn(is)i Fm(stdout)p Fn(,)g(then)g(the)427 │ │ │ │ │ 5294 y(message)27 b(\014le)f(is)g Fl(stdout)p Fn(,)i(otherwise)e(a)h │ │ │ │ │ (\014le)f(is)f(op)s(ened)g(with)h Fl(app)-5 b(end)28 │ │ │ │ │ b Fn(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 5407 │ │ │ │ │ y(data.)p eop end │ │ │ │ │ %%Page: 20 20 │ │ │ │ │ -TeXDict begin 20 19 bop 0 100 a Fn(20)p 182 100 1131 │ │ │ │ │ -4 v 1314 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(Jan)m(uary)g(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ +TeXDict begin 20 19 bop 0 100 a Fn(20)p 182 100 1112 │ │ │ │ │ +4 v 1295 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2788 100 V 337 399 a Fe(\210)45 │ │ │ │ │ +b Fn(The)30 b Fm(nD)g Fn(parameter)h(is)f(the)h(n)m(um)m(b)s(er)e(of)h │ │ │ │ │ +(ro)m(ws)h(and)e(columns)h(in)h(the)f(\(1,1\))i(blo)s(c)m(k.)337 │ │ │ │ │ +551 y Fe(\210)45 b Fn(The)30 b Fm(nU)g Fn(parameter)h(is)f(the)h(n)m │ │ │ │ │ +(um)m(b)s(er)e(of)h(columns)g(in)g(the)h(\(1,2\))h(blo)s(c)m(k.)337 │ │ │ │ │ 703 y Fe(\210)45 b Fn(The)30 b Fm(type)f Fn(parameter)i(denotes)g(the)g │ │ │ │ │ (t)m(yp)s(e)f(of)h(en)m(tries)g(|)f Fm(SPOOLES)p 2818 │ │ │ │ │ 703 29 4 v 32 w(REAL)g Fn(or)g Fm(SPOOLES)p 3519 703 │ │ │ │ │ V 32 w(COMPLEX)337 855 y Fe(\210)45 b Fn(The)20 b Fm(symflag)e │ │ │ │ │ Fn(parameter)j(is)f(the)h(symmetry)f(\015ag)g(|)g Fm(SPOOLES)p │ │ │ │ │ 2640 855 V 33 w(SYMMETRIC)p Fn(,)e Fm(SPOOLES)p 3484 │ │ │ │ │ 855 V 32 w(HERMITIAN)427 968 y Fn(or)31 b Fm(SPOOLES)p │ │ │ │ │ @@ -7222,17 +7229,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 1131 4 v 1313 100 a Fm(Chv)29 │ │ │ │ │ -b Fi(:)41 b Fl(DRAFT)121 b Fi(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2676 100 V 1131 w Fn(21)337 399 y Fe(\210)45 b Fn(The)33 │ │ │ │ │ +TeXDict begin 21 20 bop 91 100 1112 4 v 1294 100 a Fm(Chv)29 │ │ │ │ │ +b Fi(:)41 b Fl(DRAFT)121 b Fi(F)-8 b(ebruary)30 b(18,)h(2025)p │ │ │ │ │ +2695 100 V 1112 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 │ │ │ │ │ @@ -7302,19 +7309,19 @@ │ │ │ │ │ (\(1,1\))i(blo)s(c)m(k.)337 5259 y Fe(\210)45 b Fn(The)30 │ │ │ │ │ b Fm(nU)g Fn(parameter)h(is)f(the)h(n)m(um)m(b)s(er)e(of)h(columns)g │ │ │ │ │ (in)g(the)h(\(1,2\))h(blo)s(c)m(k.)337 5407 y Fe(\210)45 │ │ │ │ │ b Fn(The)30 b Fm(type)f Fn(parameter)i(denotes)g(the)g(t)m(yp)s(e)f(of) │ │ │ │ │ h(en)m(tries)g(|)f Fm(SPOOLES)p 2818 5407 V 32 w(REAL)g │ │ │ │ │ Fn(or)g Fm(SPOOLES)p 3519 5407 V 32 w(COMPLEX)p eop end │ │ │ │ │ %%Page: 22 22 │ │ │ │ │ -TeXDict begin 22 21 bop 0 100 a Fn(22)p 182 100 1131 │ │ │ │ │ -4 v 1314 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(Jan)m(uary)g(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ +TeXDict begin 22 21 bop 0 100 a Fn(22)p 182 100 1112 │ │ │ │ │ +4 v 1295 w Fm(Chv)29 b Fi(:)41 b Fl(DRAFT)30 b Fi(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2788 100 V 337 399 a Fe(\210)45 │ │ │ │ │ +b Fn(The)20 b Fm(symflag)e Fn(parameter)j(is)f(the)h(symmetry)f(\015ag) │ │ │ │ │ +g(|)g Fm(SPOOLES)p 2640 399 29 4 v 33 w(SYMMETRIC)p Fn(,)e │ │ │ │ │ Fm(SPOOLES)p 3484 399 V 32 w(HERMITIAN)427 511 y Fn(or)31 │ │ │ │ │ b Fm(SPOOLES)p 881 511 V 32 w(NONSYMMETRIC)p Fn(.)337 │ │ │ │ │ 659 y Fe(\210)45 b Fn(The)30 b Fm(seed)f Fn(parameter)i(is)g(a)f │ │ │ │ │ (random)g(n)m(um)m(b)s(er)f(seed.)66 876 y(10.)46 b Fm(test_swap)g │ │ │ │ │ (msglvl)g(msgFile)f(nD)j(nU)f(type)f(symflag)g(seed)227 │ │ │ │ │ 1027 y Fn(This)26 b(driv)m(er)g(program)g(tests)h(three)g(metho)s(ds:) │ │ │ │ │ 38 b Fm(Chv)p 2038 1027 V 33 w(swapRowsAndColumns\(\))p │ │ │ │ │ @@ -7388,17 +7395,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 1131 4 v 1313 100 a Fm(Chv)29 │ │ │ │ │ -b Fi(:)41 b Fl(DRAFT)121 b Fi(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2676 100 V 1131 w Fn(23)337 399 y Fe(\210)45 b Fn(The)30 │ │ │ │ │ +TeXDict begin 23 22 bop 91 100 1112 4 v 1294 100 a Fm(Chv)29 │ │ │ │ │ +b Fi(:)41 b Fl(DRAFT)121 b Fi(F)-8 b(ebruary)30 b(18,)h(2025)p │ │ │ │ │ +2695 100 V 1112 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 16, 2024 │ │ │ │ │ │ + 2 Chv : DRAFT February 18, 2025 │ │ │ │ │ │ 1. Assemble entries from the original matrix (or matrix pencil). (See the Chv addChevron() │ │ │ │ │ │ method.) │ │ │ │ │ │ 2. Accumulate updates from descendant fronts. (See the Chv update{S,H,N}() methods.) │ │ │ │ │ │ 3. Assembleanypostponeddatafromitschildrenfronts. (SeetheChv assemblePostponedData() │ │ │ │ │ │ method.) │ │ │ │ │ │ 4. Computethefactorization ofthecompletely assembledfront. (SeetheChv factor()method.) │ │ │ │ │ │ The implementor of a front object has a great deal of freedom to design the underlying data │ │ │ │ │ │ @@ -65,15 +65,15 @@ │ │ │ │ │ │ defineitsrowsandcolumns. ForasymmetricorHermitianmatrix, weonlystorethecolumnindices. │ │ │ │ │ │ For a nonsymmetric matrix, we store the both the row and column indices. This second case may │ │ │ │ │ │ seem unnecessary, since we assume that the larger global matrix has symmetric structure. However, │ │ │ │ │ │ during a factorization with pivoting enabled, a pivot element may be chosen from anywhere in the │ │ │ │ │ │ (1,1) block, so the row indices and column indices may no longer be identical. │ │ │ │ │ │ AChv object is inherently a serial, single threaded object, meaning it is designed so that only │ │ │ │ │ │ one thread or process “owns” or operates on a particular Chv object. A Chv object is an “atom” │ │ │ │ │ │ - Chv : DRAFT January 16, 2024 3 │ │ │ │ │ │ + Chv : DRAFT February 18, 2025 3 │ │ │ │ │ │ of communication. It stores postponed rows and columns to be assembled in a parent front. It │ │ │ │ │ │ might have to be written to and read from a file in an out-of-core implementation. In a distributed │ │ │ │ │ │ environment, it is communicated between processes. For these reasons, we designed the object so │ │ │ │ │ │ that its data (the scalars that describe its dimensions, id and type, the row and column indices, │ │ │ │ │ │ and its entries) are found in contiguous storage managed by a DV object. A file operation can be │ │ │ │ │ │ done with a single read or write, a message can be sent without packing and unpacking data, or │ │ │ │ │ │ defining a new datatype. Managing working storage for a number of Chv objects is now simpler. │ │ │ │ │ │ @@ -100,15 +100,15 @@ │ │ │ │ │ │ • int symflag : symmetry flag │ │ │ │ │ │ – SPOOLES SYMMETRIC =⇒ symmetric entries │ │ │ │ │ │ – SPOOLES HERMITIAN =⇒ Hermitian entries │ │ │ │ │ │ – SPOOLES NONSYMMETRIC =⇒ nonsymmetric entries │ │ │ │ │ │ • int *rowind : pointer to the base address of the int vector that contains row indices. │ │ │ │ │ │ • int *colind : pointer to the base address of the int vector that contains column indices. │ │ │ │ │ │ • double *entries: pointer to the base address of the double vector that contains the entries. │ │ │ │ │ │ - 4 Chv : DRAFT January 16, 2024 │ │ │ │ │ │ + 4 Chv : DRAFT February 18, 2025 │ │ │ │ │ │ • DV wrkDV : object that manages the owned working storage. │ │ │ │ │ │ • Chv *next : link to a next object in a singly linked list. │ │ │ │ │ │ One can query the type and symmetry of the object using these simple macros. │ │ │ │ │ │ • CHV IS REAL(chv) is 1 if chv has real entries and 0 otherwise. │ │ │ │ │ │ • CHV IS COMPLEX(chv) is 1 if chv has complex entries and 0 otherwise. │ │ │ │ │ │ • CHV IS SYMMETRIC(chv) is 1 if chv is symmetric and 0 otherwise. │ │ │ │ │ │ • CHV IS HERMITIAN(chv) is 1 if chv is Hermitian and 0 otherwise. │ │ │ │ │ │ @@ -131,15 +131,15 @@ │ │ │ │ │ │ This method clears the object and free’s any owned data by invoking the clearData() │ │ │ │ │ │ methods for its internal DV object. There is a concluding call to Chv setDefaultFields(). │ │ │ │ │ │ Error checking: If chv is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 4. void Chv_free ( Chv *chv ) ; │ │ │ │ │ │ This method releases any storage by a call to Chv clearData() and then free the space for │ │ │ │ │ │ chv. │ │ │ │ │ │ Error checking: If chv is NULL, an error message is printed and the program exits. │ │ │ │ │ │ - Chv : DRAFT January 16, 2024 5 │ │ │ │ │ │ + Chv : DRAFT February 18, 2025 5 │ │ │ │ │ │ 1.2.2 Instance methods │ │ │ │ │ │ 1. int Chv_id ( Chv *chv ) ; │ │ │ │ │ │ This method returns the id of the object. │ │ │ │ │ │ Error checking: If chv is NULL, an error message is printed and zero is returned. │ │ │ │ │ │ 2. int Chv_type ( Chv *chv ) ; │ │ │ │ │ │ This method returns the type of the object. │ │ │ │ │ │ • SPOOLES REAL =⇒ real entries │ │ │ │ │ │ @@ -167,15 +167,15 @@ │ │ │ │ │ │ Error checking: If chv, pncol or pcolind is NULL, an error message is printed and zero is │ │ │ │ │ │ returned. │ │ │ │ │ │ 7. int Chv_nent ( Chv *chv ) ; │ │ │ │ │ │ This method returns number of matrix entries that the object contains. Note, for a complex │ │ │ │ │ │ chevron, this is the number of double precision complex entries, equal to one half the number │ │ │ │ │ │ of double precision entries that are stored. │ │ │ │ │ │ Error checking: If chv is NULL, an error message is printed and zero is returned. │ │ │ │ │ │ - 6 Chv : DRAFT January 16, 2024 │ │ │ │ │ │ + 6 Chv : DRAFT February 18, 2025 │ │ │ │ │ │ 8. double * Chv_entries ( Chv *chv ) ; │ │ │ │ │ │ This method returns the entries field of the object, a pointer to the base location of the │ │ │ │ │ │ double precision array that stores the complex data. │ │ │ │ │ │ Error checking: If chv is NULL, an error message is printed and zero is returned. │ │ │ │ │ │ 9. double * Chv_diagLocation ( Chv *chv, int ichv ) ; │ │ │ │ │ │ This method returns a pointer to the address of the entry in the ichv’th diagonal location. │ │ │ │ │ │ For a real chevron, to find the entry k places to the right of the diagonal entry, add k to the │ │ │ │ │ │ @@ -205,15 +205,15 @@ │ │ │ │ │ │ 14. void Chv_complexEntry ( Chv *chv, int irow, int jcol, │ │ │ │ │ │ double *pReal, double *pImag ) ; │ │ │ │ │ │ This method fills *pReal with the real part and *pImag with the imaginary part of the the │ │ │ │ │ │ entry in row irow and column jcol. Note, irow and jcol are local indices, i.e., 0 ≤ irow < │ │ │ │ │ │ nD+nLand0≤jcolentries[2*kk:2*kk+1]. │ │ │ │ │ │ @@ -281,15 +281,15 @@ │ │ │ │ │ │ in *pmaxval. Note, if the chevron is complex, the location is in terms of the complex entries, │ │ │ │ │ │ not in the real entries, i.e., if k = Chv maxabsRow(chv,...), then the complex entry is found │ │ │ │ │ │ in chv->entries[2*kk:2*kk+1]. │ │ │ │ │ │ Error checking: If chv is NULL or irow is not in [0,n1-1], an error message is printed and │ │ │ │ │ │ the program exits. │ │ │ │ │ │ 5. int Chv_maxabsInColumn ( Chv *chv, int jcol, int rowmark[], │ │ │ │ │ │ int tag, double *pmaxval ) ; │ │ │ │ │ │ - Chv : DRAFT January 16, 2024 9 │ │ │ │ │ │ + Chv : DRAFT February 18, 2025 9 │ │ │ │ │ │ This method returns the location of the first element with the largest magnitude in column │ │ │ │ │ │ jcol. Element jj must have rowmark[jj] = tag to be eligible. Its magnitude is returned │ │ │ │ │ │ in *pmaxval. Note, if the chevron is complex, the location is in terms of the complex entries, │ │ │ │ │ │ not in the real entries, i.e., if k = Chv maxabsColumn11(chv,...), then the complex entry │ │ │ │ │ │ is found in chv->entries[2*kk:2*kk+1]. │ │ │ │ │ │ Error checking: If chv is NULL or irow is not in [0,n1-1], an error message is printed and │ │ │ │ │ │ the program exits. │ │ │ │ │ │ @@ -322,15 +322,15 @@ │ │ │ │ │ │ number of leading rows and columns to ignore, useful when delayed rows and columns have │ │ │ │ │ │ been placed in the leading portion of the chevron. The pirow, pjcol and pntest addresses │ │ │ │ │ │ are filled with the pivot row, pivot column, and number of pivot tests performed to find the │ │ │ │ │ │ pivot. If no pivot was found, pirow and pjcol are filled with -1. The return value is the size │ │ │ │ │ │ of the pivot. If the chevron is symmetric, we can find a 1 × 1 or 2 × 2 pivot. If the chevron │ │ │ │ │ │ is nonsymmetric, we only find a 1×1 pivot. A return value of zero means that no pivot was │ │ │ │ │ │ found. │ │ │ │ │ │ - 10 Chv : DRAFT January 16, 2024 │ │ │ │ │ │ + 10 Chv : DRAFT February 18, 2025 │ │ │ │ │ │ Error checking: If chv, workDV, pirow, pjcol or pntest is NULL, or if tau < 1.0, or if │ │ │ │ │ │ ndelay < 0, an error message is printed and the program exits. │ │ │ │ │ │ 1.2.6 Update methods │ │ │ │ │ │ 1. void Chv_updateS ( Chv *chv, SubMtx *mtxD, SubMtx *mtxU, DV *tempDV ) ; │ │ │ │ │ │ void Chv_updateH ( Chv *chv, SubMtx *mtxD, SubMtx *mtxU, DV *tempDV ) ; │ │ │ │ │ │ void Chv_updateN ( Chv *chv, SubMtx *mtxL, SubMtx *mtxD, SubMtx *mtxU, │ │ │ │ │ │ DV *tempDV ) ; │ │ │ │ │ │ @@ -364,15 +364,15 @@ │ │ │ │ │ │ This method is used to assemble entries from the matrix pencil A+σB into the block chevron │ │ │ │ │ │ object. Typically the entries from A or B will come from a InpMtx object, one of whose modes │ │ │ │ │ │ of storage is by single chevrons. The value ichvis the row and column location of the diagonal │ │ │ │ │ │ entry. The indices found in chvind[] are offsets. Let off = chvind[ii] be the offset for one │ │ │ │ │ │ of the chevron’s entries. If off ≥ 0, then the entry is found in location (ichv, ichv+off) of │ │ │ │ │ │ the matrix. If off < 0, then the entry is found in location (ichv-off, ichv) of the matrix. │ │ │ │ │ │ The value(s) in alpha[] form a scalar used to scale the entire chevron for its assembly. A │ │ │ │ │ │ - Chv : DRAFT January 16, 2024 11 │ │ │ │ │ │ + Chv : DRAFT February 18, 2025 11 │ │ │ │ │ │ call to assemble entries in A (from the pencil A+σB) would have alpha[] = (1.0,0.0); to │ │ │ │ │ │ assemble entries in B (from the pencil A+σB) would have alpha[] = (Real(σ),Imag(σ)). │ │ │ │ │ │ Error checking: If chv, chvind, chvent or alpha is NULL, or if ichv or chvsize are less than │ │ │ │ │ │ zero, an error message is printed and the program exits. │ │ │ │ │ │ 2. void Chv_assembleChv ( Chv *chvJ, Chv *chvI ) ; │ │ │ │ │ │ This method is used to assemble entries from one Chv object into another. The application │ │ │ │ │ │ is during a factorization with pivoting, postponed entries from the children are stored in the │ │ │ │ │ │ @@ -404,15 +404,15 @@ │ │ │ │ │ │ chevron is symmetric or Hermitian, pivotflag == SPOOLES PIVOTING and pivotsizesIV is │ │ │ │ │ │ NULL, an error message is printed and the program exits. │ │ │ │ │ │ 2. int Chv_factorWithNoPivoting ( Chv *chv, PatchAndGoInfo *info ) ; │ │ │ │ │ │ This method factors a front without using pivoting for numerical stability. It does support │ │ │ │ │ │ “patch-and-go” functionality, where if a small or zero entry is found in the diagonal element │ │ │ │ │ │ that is to be eliminated, some action can be taken. The return value is the number of │ │ │ │ │ │ eliminated rows and columns. │ │ │ │ │ │ - 12 Chv : DRAFT January 16, 2024 │ │ │ │ │ │ + 12 Chv : DRAFT February 18, 2025 │ │ │ │ │ │ Error checking: If chv is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 3. int Chv_r1upd ( Chv *chv ) ; │ │ │ │ │ │ This method is used during the factorization of a front, performing a rank-one update of the │ │ │ │ │ │ chevron. The return value is 1 if the pivot is nonzero, 0 otherwise. │ │ │ │ │ │ Error checking: If chv is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 4. int Chv_r2upd ( Chv *chv ) ; │ │ │ │ │ │ This method is used during the factorization of a front, performing a rank-two update of the │ │ │ │ │ │ @@ -440,15 +440,15 @@ │ │ │ │ │ │ • CHV STRICT LOWER =⇒ count strict lower entries │ │ │ │ │ │ • CHV DIAGONAL =⇒ count diagonal entries │ │ │ │ │ │ • CHV STRICT UPPER =⇒ count strict upper entries │ │ │ │ │ │ • CHV STRICT LOWER 11 =⇒ count strict lower entries in the (1,1) block │ │ │ │ │ │ • CHV LOWER 21 =⇒ count lower entries in the (2,1) block │ │ │ │ │ │ • CHV STRICT UPPER 11 =⇒ count strict upper entries in the (1,1) block │ │ │ │ │ │ • CHV UPPER 12 =⇒ count upper entries in the (1,2) block │ │ │ │ │ │ - Chv : DRAFT January 16, 2024 13 │ │ │ │ │ │ + Chv : DRAFT February 18, 2025 13 │ │ │ │ │ │ This method is used to compute the necessary storage to store a chevron as a dense front. │ │ │ │ │ │ Error checking: If chv is NULL or if countflag is not valid, an error message is printed and │ │ │ │ │ │ the program exits. │ │ │ │ │ │ 2. int Chv_countBigEntries ( Chv *chv, int npivot, int pivotsizes[], │ │ │ │ │ │ int countflag, double droptol ) ; │ │ │ │ │ │ This method counts the number of entries in the chevron that are larger in magnitude than │ │ │ │ │ │ droptol. countflag has the following meaning. │ │ │ │ │ │ @@ -477,15 +477,15 @@ │ │ │ │ │ │ • CHV STRICT UPPER 11 =⇒ copy strict upper entries in the (1,1) block │ │ │ │ │ │ • CHV UPPER 12 =⇒ copy upper entries in the (1,2) block │ │ │ │ │ │ If storeflagisCHV BY ROWS,theentriesarestoredbyrowsandifstoreflagisCHV BY COLUMNS, │ │ │ │ │ │ the entries are stored by columns. │ │ │ │ │ │ Error checking: If chv or dvec is NULL or if length is less than the number of entries to be │ │ │ │ │ │ copied, or if copyflag or storeflag is valid, an error message is printed and the program │ │ │ │ │ │ exits. │ │ │ │ │ │ - 14 Chv : DRAFT January 16, 2024 │ │ │ │ │ │ + 14 Chv : DRAFT February 18, 2025 │ │ │ │ │ │ 4. int Chv_copyBigEntriesToVector ( Chv *chv, int npivot, int pivotsizes[], │ │ │ │ │ │ int sizes[], int ivec[], double dvec[], │ │ │ │ │ │ int copyflag, int storeflag, double droptol ) ; │ │ │ │ │ │ This method also copies some entries the chevron object into a double precision vector, but │ │ │ │ │ │ only those entries whose magnitude is greater than or equal to droptol are copied. This │ │ │ │ │ │ method is called after a front has been factored and is used to store the factor entries of large │ │ │ │ │ │ magnitude into the storage for the factor matrix. If the front is nonsymmetric, the front │ │ │ │ │ │ @@ -517,15 +517,15 @@ │ │ │ │ │ │ Error checking: If chvI or chvJ is NULL, or if offset < 0 or offset is greater than the │ │ │ │ │ │ number of chevrons in chvJ, an error message is printed and the program exits. │ │ │ │ │ │ 1.2.10 Swap methods │ │ │ │ │ │ 1. void Chv_swapRows ( Chv *chv, int irow, int jrow ) ; │ │ │ │ │ │ This method swaps rows irow and jrow of the chevron. Both rows must be less than the │ │ │ │ │ │ width nD of the chevron. The row ids of the two rows are also swapped. If the chevron is │ │ │ │ │ │ symmetric, then the method Chv swapRowsAndColumns() is called. │ │ │ │ │ │ - Chv : DRAFT January 16, 2024 15 │ │ │ │ │ │ + Chv : DRAFT February 18, 2025 15 │ │ │ │ │ │ Error checking: If chv is NULL or if irow or jrow are less than 0 or greater than or equal to │ │ │ │ │ │ nD, an error message is printed and the program exits. │ │ │ │ │ │ 2. void Chv_swapColumns ( Chv *chv, int icol, int jcol ) ; │ │ │ │ │ │ This method swaps columns icol and jcol of the chevron. Both columns must be less than │ │ │ │ │ │ the width nD of the chevron. The column ids of the two columns are also swapped. If the │ │ │ │ │ │ chevron is symmetric, then the method Chv swapRowsAndColumns() is called. │ │ │ │ │ │ Error checking: If chv is NULL or if icol or jcol are less than 0 or greater than or equal to │ │ │ │ │ │ @@ -553,15 +553,15 @@ │ │ │ │ │ │ This method sets the scalar fields and rowind, colind and entries pointers. │ │ │ │ │ │ Error checking: If chv is NULL, or if nD ≤ 0, or if nL or nU are less than zero, or if type or │ │ │ │ │ │ symflag are not valid, an error message is printed and the program exits. │ │ │ │ │ │ 5. void Chv_shift ( Chv *chv, int shift ) ; │ │ │ │ │ │ This method is used to shift the base of the entries and adjust dimensions of the Chv object. │ │ │ │ │ │ If shift is positive, the first shift chevrons are removed from the chevron. If shift is │ │ │ │ │ │ negative, the shift previous chevrons are prepended to the chevron. This is a dangerous │ │ │ │ │ │ - 16 Chv : DRAFT January 16, 2024 │ │ │ │ │ │ + 16 Chv : DRAFT February 18, 2025 │ │ │ │ │ │ method as it changes the state of the object. We use it during the factorization of a front, │ │ │ │ │ │ where one Chv object points to the entire chevron in order to swap rows and columns, while │ │ │ │ │ │ another chevron points to the uneliminated rows and columns of the front. It is the latter │ │ │ │ │ │ chevron that is shifted during the factorization. │ │ │ │ │ │ Error checking: If chv is NULL an error message is printed and the program exits. │ │ │ │ │ │ 6. void Chv_fill11block ( Chv *chv, A2 *mtx ) ; │ │ │ │ │ │ This method is used to fill a A2 dense matrix object with the entries in the (1,1) block of the │ │ │ │ │ │ @@ -584,15 +584,15 @@ │ │ │ │ │ │ 11. void Chv_sub ( Chv *chvJ, Chv *chvI ) ; │ │ │ │ │ │ This method subtracts chvI from chvJ. │ │ │ │ │ │ Error checking: If chvJ or chvI is NULL, or if their dimensions are not the same, or if either │ │ │ │ │ │ of their entries fields are NULL, an error message is printed and the program exits. │ │ │ │ │ │ 12. void Chv_zero ( Chv *chv ) ; │ │ │ │ │ │ This method zeroes the entries in the chevron. │ │ │ │ │ │ Error checking: If chv is NULL, an error message is printed and the program exits. │ │ │ │ │ │ - Chv : DRAFT January 16, 2024 17 │ │ │ │ │ │ + Chv : DRAFT February 18, 2025 17 │ │ │ │ │ │ 1.2.12 IO methods │ │ │ │ │ │ 1. void Chv_writeForHumanEye ( Chv *chv, FILE *fp ) ; │ │ │ │ │ │ This method writes a Chv object to a file in an easily readable format. │ │ │ │ │ │ Error checking: If chv or fp are NULL, an error message is printed and zero is returned. │ │ │ │ │ │ 2. void Chv_writeForMatlab ( Chv *chv, char *chvname, FILE *fp ) ; │ │ │ │ │ │ This method writes a Chv object to a file in a matlab format. For a real chevron, a sample │ │ │ │ │ │ line is │ │ │ │ │ │ @@ -619,15 +619,15 @@ │ │ │ │ │ │ • Thesymflagparameteristhesymmetryflag—SPOOLES SYMMETRIC,SPOOLES HERMITIAN │ │ │ │ │ │ or SPOOLES NONSYMMETRIC. │ │ │ │ │ │ • The seed parameter is a random number seed. │ │ │ │ │ │ • The alphareal and alphaimag parameters form a complex number that is a scaling │ │ │ │ │ │ parameter. Normally alpha is (1.0,0.0), when we are just loading matrix entries into a │ │ │ │ │ │ front. However, when we factor A+αB, the entries of B will be loaded with alpha set │ │ │ │ │ │ equal to α[0 : 1]. │ │ │ │ │ │ - 18 Chv : DRAFT January 16, 2024 │ │ │ │ │ │ + 18 Chv : DRAFT February 18, 2025 │ │ │ │ │ │ 2. test_assmbChv msglvl msgFile nDJ nUJ nDI nUI type symflag seed │ │ │ │ │ │ This driver program tests the Chv assembleChv method. It assembles a chevron T into T , │ │ │ │ │ │ I J │ │ │ │ │ │ as is done during the assembly of postponed rows and columns during the factorization when │ │ │ │ │ │ pivoting is enabled. Use the script file do assmbChv for testing. When the output file is │ │ │ │ │ │ loaded into matlab, the last line to the screen is the error of the assembly. │ │ │ │ │ │ • The msglvl parameter determines the amount of output. Use msglvl = 1 for just │ │ │ │ │ │ @@ -658,15 +658,15 @@ │ │ │ │ │ │ • The nD parameter is the number of rows and columns in the (1,1) block. │ │ │ │ │ │ • The nU parameter is the number of columns in the (1,2) block. │ │ │ │ │ │ • The type parameter denotes the type of entries — SPOOLES REAL or SPOOLES COMPLEX │ │ │ │ │ │ • Thesymflagparameteristhesymmetryflag—SPOOLES SYMMETRIC,SPOOLES HERMITIAN │ │ │ │ │ │ or SPOOLES NONSYMMETRIC. │ │ │ │ │ │ • The pivotingflag parameter is the pivoting flag — SPOOLES NO PIVOTING for no piv- │ │ │ │ │ │ oting, SPOOLES PIVOTING for pivoting. │ │ │ │ │ │ - Chv : DRAFT January 16, 2024 19 │ │ │ │ │ │ + Chv : DRAFT February 18, 2025 19 │ │ │ │ │ │ • The storeflag parameter is the storage flag, to store by rows, use SPOOLES BY ROWS, │ │ │ │ │ │ to store by columns, use SPOOLES BY COLUMNS. │ │ │ │ │ │ • The seed parameter is a random number seed. │ │ │ │ │ │ 4. test_copyBigEntriesToVector msglvl msgFile nD nU type symflag │ │ │ │ │ │ pivotingflag storeflag seed droptol │ │ │ │ │ │ This driver program tests the Chv copyBigEntriesToVector method which is used when │ │ │ │ │ │ after a front has been factored to store the entries into sparse L and U submatrices. Use │ │ │ │ │ │ @@ -698,15 +698,15 @@ │ │ │ │ │ │ three entries. The first entry is the error in the factorization. The second and third entries │ │ │ │ │ │ are the maximum magnitudes of the entries in L and U, respectively. │ │ │ │ │ │ • The msglvl parameter determines the amount of output. Use msglvl = 1 for just │ │ │ │ │ │ timing output. │ │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ │ message file is stdout, otherwise a file is opened with append status to receive any output │ │ │ │ │ │ data. │ │ │ │ │ │ - 20 Chv : DRAFT January 16, 2024 │ │ │ │ │ │ + 20 Chv : DRAFT February 18, 2025 │ │ │ │ │ │ • The nD parameter is the number of rows and columns in the (1,1) block. │ │ │ │ │ │ • The nU parameter is the number of columns in the (1,2) block. │ │ │ │ │ │ • The type parameter denotes the type of entries — SPOOLES REAL or SPOOLES COMPLEX │ │ │ │ │ │ • Thesymflagparameteristhesymmetryflag—SPOOLES SYMMETRIC,SPOOLES HERMITIAN │ │ │ │ │ │ or SPOOLES NONSYMMETRIC. │ │ │ │ │ │ • The pivotingflag parameter is the pivoting flag — SPOOLES NO PIVOTING for no piv- │ │ │ │ │ │ oting, SPOOLES PIVOTING for pivoting. │ │ │ │ │ │ @@ -735,15 +735,15 @@ │ │ │ │ │ │ ThisdriverprogramteststheChv maxabsInRow(),Chv maxabsInRow11(),Chv maxabsInColumn(), │ │ │ │ │ │ Chv maxabsInColumn11() and Chv maxabsInDiagonal11() methods. Use the script file │ │ │ │ │ │ do maxabs for testing. When the output file is loaded into matlab, look on the screen for the │ │ │ │ │ │ variables rowerror, colerror, rowerror11, colerror11 and diag11error. All should be │ │ │ │ │ │ zero. │ │ │ │ │ │ • The msglvl parameter determines the amount of output. Use msglvl = 1 for just │ │ │ │ │ │ timing output. │ │ │ │ │ │ - Chv : DRAFT January 16, 2024 21 │ │ │ │ │ │ + Chv : DRAFT February 18, 2025 21 │ │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ │ message file is stdout, otherwise a file is opened with append status to receive any output │ │ │ │ │ │ data. │ │ │ │ │ │ • The nD parameter is the number of rows and columns in the (1,1) block. │ │ │ │ │ │ • The nU parameter is the number of columns in the (1,2) block. │ │ │ │ │ │ • The type parameter denotes the type of entries — SPOOLES REAL or SPOOLES COMPLEX │ │ │ │ │ │ • Thesymflagparameteristhesymmetryflag—SPOOLES SYMMETRIC,SPOOLES HERMITIAN │ │ │ │ │ │ @@ -772,15 +772,15 @@ │ │ │ │ │ │ timing output. │ │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ │ message file is stdout, otherwise a file is opened with append status to receive any output │ │ │ │ │ │ data. │ │ │ │ │ │ • The nD parameter is the number of rows and columns in the (1,1) block. │ │ │ │ │ │ • The nU parameter is the number of columns in the (1,2) block. │ │ │ │ │ │ • The type parameter denotes the type of entries — SPOOLES REAL or SPOOLES COMPLEX │ │ │ │ │ │ - 22 Chv : DRAFT January 16, 2024 │ │ │ │ │ │ + 22 Chv : DRAFT February 18, 2025 │ │ │ │ │ │ • Thesymflagparameteristhesymmetryflag—SPOOLES SYMMETRIC,SPOOLES HERMITIAN │ │ │ │ │ │ or SPOOLES NONSYMMETRIC. │ │ │ │ │ │ • The seed parameter is a random number seed. │ │ │ │ │ │ 10. test_swap msglvl msgFile nD nU type symflag seed │ │ │ │ │ │ This driver program tests three methods: Chv swapRowsAndColumns(), Chv swapRows() and │ │ │ │ │ │ Chv swapColumns(). Use the script file do swap for testing. When the output file is loaded │ │ │ │ │ │ into matlab, look for the maxerrrowswap1, maxerrcolswap1, maxerrswap, maxerrsymswap1 │ │ │ │ │ │ @@ -810,15 +810,15 @@ │ │ │ │ │ │ • The type parameter denotes the type of entries — SPOOLES REAL or SPOOLES COMPLEX │ │ │ │ │ │ • Thesymflagparameteristhesymmetryflag—SPOOLES SYMMETRIC,SPOOLES HERMITIAN │ │ │ │ │ │ or SPOOLES NONSYMMETRIC. │ │ │ │ │ │ • The sparsityflag parameter should be zero for dense U and L, or 1 for sparse U and │ │ │ │ │ │ L. │ │ │ │ │ │ • The ncolT parameter is the number of columns in the (1,1) and (1,2) blocks of T. │ │ │ │ │ │ • The nDT parameter is the number of rows and columns in the (1,1) block of T. │ │ │ │ │ │ - Chv : DRAFT January 16, 2024 23 │ │ │ │ │ │ + Chv : DRAFT February 18, 2025 23 │ │ │ │ │ │ • The ncolU parameter is the number of columns in U. │ │ │ │ │ │ • The nrowD parameter is the number of rows and columns in D. │ │ │ │ │ │ • The nentU parameter is the number entries in U, ignored if sparsityflag = 0. │ │ │ │ │ │ • The offset parameter is the offset of first index in T from the last index in D. │ │ │ │ │ │ • The seed parameter is a random number seed. │ │ │ │ │ │ Index │ │ │ │ │ │ Chv addChevron(), 10 Chv new(), 4 │ │ │ ├── ./usr/share/doc/spooles-doc/ChvList.ps.gz │ │ │ │ ├── ChvList.ps │ │ │ │ │ @@ -10,15 +10,15 @@ │ │ │ │ │ %%EndComments │ │ │ │ │ %%BeginDefaults │ │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ │ %%EndDefaults │ │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ │ %DVIPSCommandLine: dvips main -o ChvList.ps │ │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ │ -%DVIPSSource: TeX output 2024.01.16:2047 │ │ │ │ │ +%DVIPSSource: TeX output 2025.02.18:0318 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -1762,20 +1762,21 @@ │ │ │ │ │ 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 52 /four put │ │ │ │ │ -dup 54 /six put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ +dup 56 /eight put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 74 /J put │ │ │ │ │ +dup 70 /F put │ │ │ │ │ dup 97 /a put │ │ │ │ │ -dup 110 /n put │ │ │ │ │ +dup 98 /b put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ dup 114 /r put │ │ │ │ │ dup 117 /u put │ │ │ │ │ dup 121 /y put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ @@ -1959,89 +1960,93 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ │ -C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ │ -6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ │ -11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ │ -1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ │ -A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ │ -F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ │ -EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ │ -033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ │ -A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ │ -468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8A71FF9C085003EBB4F4 │ │ │ │ │ -3D271F5B16B1AAD3EBDC391F534AA46E545E9D8659DD19B309C3B7625A8396FA │ │ │ │ │ -2519464539D46E43ACB72952313C8497315E0319C08628023E8FC54D7D3BAC29 │ │ │ │ │ -D5AD8EFDABF0C33C7AFB7151A6606C62A87F0F5F783569AC4C881A992E3FE420 │ │ │ │ │ -297F7BC5147F3B2FA98450D2F8B07F7D229BC8BE06729920CFEC22556740E1CB │ │ │ │ │ -3DE09AC763C6D4A20AD1599C368FABD07BC35C16683F2A0311A88983415A9140 │ │ │ │ │ -2EFC4BC1B10DCAD4B2B8A28510E5BD39D6616D2B9B079ED3CF9C315B7DEC29D9 │ │ │ │ │ -251DFD0194B34EC175964C23383F23FFB2E41B698C405815D65EAFF9E9DD1DDE │ │ │ │ │ -30F77924656C288B8DDB2E5B0E7B1FAA66791DE3848EE6DE63AD0E945E49C6C7 │ │ │ │ │ -9FCA16E01F027F9EF7ACB55F02F5B0136480802F789F6FE14B430879979BA04D │ │ │ │ │ -F481AD4CF47E6847936F377FB04869F9A80E597301BFCAB718D8764094673876 │ │ │ │ │ -BCEF8FA3701608C84B3A0399A11D2E6AD922CCB7D72AF9EBFB30F4648A37A123 │ │ │ │ │ -CB8FB14BDC351692CF0CCAA5CA9383C2B23BAAA38700327EB743FBBE9EE04041 │ │ │ │ │ -13F5CEF4B3881BBC051C33369A82B3505B1CFD7D91AEF2E43EA728EE48E2D854 │ │ │ │ │ -5A7E516998ACDD4FD835FA901C5A21810A56D51FE919B2E58408EEB4DAEB487F │ │ │ │ │ -BA7F1D292CED902DF3533566D96DAD918319EA650D4FC7D9E0170CDE620F755B │ │ │ │ │ -0E7AE02D9B118481B26F5FF7060FBCFA2A682B6826F00679BCDA68794C05286D │ │ │ │ │ -B616DD08372ACDE0AE6E7EF116F0D36F16241ED4F0E8CCD80377792E3BB1343C │ │ │ │ │ -EEB22CC77738F7CBCBA32CF6C3979F6DF7ED81A89AE8928FD7CC550F2730BA88 │ │ │ │ │ -1B51CEDC63F4C47F261AFCAB7AC3CED20B15C97E714A460A1A3B16436B4A5149 │ │ │ │ │ -8F91DA4BE0B9B648534CE5F442117036B602DC91E2852BEA62F55803B833FDF7 │ │ │ │ │ -9F901AB87489E703DDEED1091A79DC73B4440BBBF2C7592B441187C4A3562204 │ │ │ │ │ -859F08BA3CE2A8ECCD5AAD13C50FB806FE79A388F1822C5608837CBDE526A044 │ │ │ │ │ -12E5CDE4A066932AF2ACA7E8FC6BA4603640944718752975B7DA6E906BE1EA01 │ │ │ │ │ -46736FF5D1AA1CC682D011B6039CF98C35E36D4F14ABC84A38B7203CC9A17756 │ │ │ │ │ -B2B0345276798F1A88A54AD9FEA0853C6DDF28525ED4F0B7380D14147012C2A4 │ │ │ │ │ -5B02888C986C76497EA4C729B0B82EE73C1A1A8E8F1ABF401E341028E9C15AF9 │ │ │ │ │ -354706D8DC07492921AD0932A46736C0D1B066D00287DACCC068FAE6A796EC89 │ │ │ │ │ -54D1D73AA88F3A5912BA9D3FF70065C8D0D0DAD1CD846501E06694374EFDBEC6 │ │ │ │ │ -931F644D5E8494AFC742423AD9A487658E310E0682BE19B8475F4D450487A686 │ │ │ │ │ -2B94494DEAF1C0F59DE82F2CE64BEE5E97F942FCFA1187ED6AA5761E951A7BF7 │ │ │ │ │ -9F842E34A4656C58B35A9E99F7E6762CEE11E0CF59FFD75D7382C5EE6DBB43F1 │ │ │ │ │ -ED219071D3FB22DBA90977723BB467C0490D042684C0724F40DCA3E0D8F1F4E7 │ │ │ │ │ -3C4F9A67BE6528185EAAFDD415224F7E256A4EA00111C17C746CBD80BF569A27 │ │ │ │ │ -D81195D7F79C1CCEEF30ED00D49F48B63E4B8D7953403A3710AE953CC1B76F0F │ │ │ │ │ -F523D777A6A186F262A602543F94AF7471DBE25FEBC207DB42DAF7DC9A5781FB │ │ │ │ │ -2131AD42869D966A734AAE3466DF1CE9D1BCFA72409A558C0AEE6A8E2FEAACB6 │ │ │ │ │ -2CDABCC28433034848ACF9FB4465D272E4AFC48572647F05F41C7A293CC5B595 │ │ │ │ │ -AD31555FB708A72962707348BC7033A8224BD42EB9D75FDF3AE9E6A9C960B330 │ │ │ │ │ -5137DF59F8E2E0D535F41524ABDF070745A4FA25CD8DFD38A5FF30A95452B875 │ │ │ │ │ -6569E8812631300D79A942C563AF174AC05C9F2D09D7D5D3C605F5A6B7F21B34 │ │ │ │ │ -18F270A993B050838E701A17938D1C156CBA7CA4BAC7C562CE9D7B758EAB25A9 │ │ │ │ │ -A6DFFC71F65561341847B776DF34061CE3D439B87B857626987EC93B3B95B8E8 │ │ │ │ │ -76FFB16B263675333FA10414FEED707FF7C366BF8B20FF8577CDEBEBCF1A5BCE │ │ │ │ │ -258C09C90175A5278B7C444A623E3331FDE5A6387B3E389540ED1E7E883958F3 │ │ │ │ │ -3A5C89CCD62256FA069DF4A5090FB17C1F1757C9209DAFB8A1F47182BF3E88D9 │ │ │ │ │ -0B5376B59EE165A761902759C8ED7F5AD301E7EB8B49CC09AF921DB45B7F8002 │ │ │ │ │ -AB32E73AAE53942DE0F9175D8446017006C9C0B93EF39C13B7A879F2F6DDFF16 │ │ │ │ │ -204BB24F976847CF006FD29332FCCB255B5116F7077A44F7066C39C81DC4BAD2 │ │ │ │ │ -40DB2753626C0102E5D047522ABC38EA294A699B8DFD9CA0A7980561A1062E90 │ │ │ │ │ -AB11EE286A9C238D9F721D9980D0A1828C2814972622D948CEE8C812C19A9A03 │ │ │ │ │ -608ED0AC138A436FFBF8BE3D1E66C87793416AF38ED9BC5424568A175FBDAA9E │ │ │ │ │ -D6FC11A7021693819B051562B5A59F32629E2D6019D69DD329BE1894A2B295E1 │ │ │ │ │ -1DCE9683B29AE126C56F26E5C595BF1A8249BDE231DBE8B066F7F62EF149B975 │ │ │ │ │ -A863969A4690504A5EA064721DA909B8157C0B39FBF8228D95CB655E406161E1 │ │ │ │ │ -148610FAEED7C5509880223C06A66DA19E10F94DC2DB481B26 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004FD597ED │ │ │ │ │ +EFDBC64ABD9B79386FB2427D1A63522195B1239C09F8CB3F8BD7A245A6DD82E3 │ │ │ │ │ +260C3889587626DFC5F7978E55F5524ABD6A3319CDD3D3F40D040044D51DA4E1 │ │ │ │ │ +6797EEAC7AA07C77EC6DB0E6E182B545A8BEF63B14F3FC07BAC09E7CD5C17ED6 │ │ │ │ │ +10080704B0DA4E9BA12F968DF8A58458D17E9A5B1F14A83DC51F5B161ADEE1CC │ │ │ │ │ +0183D82ED92C6FC7203C289949EDF0284D9893029FF5408E421324625F17C3E5 │ │ │ │ │ +2437C8F75A9D68EE1AF9174FEA6FC6BF793C7D2E497EA90396CF1A645E283B69 │ │ │ │ │ +8425F47C323587DF91E1D596DCB1E3A787C955D9D965A5E3E26ADF58B62AD5F9 │ │ │ │ │ +0C9AC784DE479780606354111E3202F215650DBBE1063A46F3C10B9EBC974DDA │ │ │ │ │ +A1A28DBBD43E9E5BFF000B12C787D0427928078F8EC5FE90DED97E6C129E8DEA │ │ │ │ │ +51F66504DB83764E52B0BA68DF7BE684C8959CB1D3345CC48221A9A4683306C0 │ │ │ │ │ +62B634E0A539383F0C7A788D9711EFF414869CCC5659D78CEBE009BF2463F56A │ │ │ │ │ +0ADC993348FE96DF7C250E13ED6504AACFE8F8DCA2D2048D9D8CFA127D363EAC │ │ │ │ │ +1F0630E2D1B621E6954038195D965B91FD974FA3F1B8B29D200A16CEBA645E2F │ │ │ │ │ +CEEE6FD49FBBD49E38AE67D4BFFCE91F1FC422554EC4409C5FA18D40FCD6D9B3 │ │ │ │ │ +2185ED1E0F98106D4339F086B05CA36E56EC22C60E2CE23F9C4CC403ACAD3F94 │ │ │ │ │ +4086B4DF6DFA0B7B4716417263E7B558535566AED2F6C2F9846A16D71A7930A7 │ │ │ │ │ +49232D3D16C4A01CF1A1998A06F40062ED329179A85668537C55D0BC24FC0010 │ │ │ │ │ +54DA83E2FC66B2A5D428E6A9BFC983253668C0ECE6CA36DBF97C4B7659D50842 │ │ │ │ │ +C65B36604840EEDA399B57E2DEFAC3E7FB031634CE33D04238F9854D2AAAF448 │ │ │ │ │ +34DA5F3BCCED3166FEEE82BB0BBA0A397CC2F95865CB52AABFF454D93B425809 │ │ │ │ │ +A26AC459F321FD23E2262FE816D06BAAECF32AAF167F84799AF80F9F88388D07 │ │ │ │ │ +0DB5FD57AFEE2850A8DFE977E6AE39CB3DC16DB1A163A583C86C6F775CE33521 │ │ │ │ │ +0081C0BBBAD6D30D26C66B28B38CEAC78FEA5FB3CC5853656B67C6D9D80EB30E │ │ │ │ │ +397558C9179AF5920F34DAB3F578DFCF0DBB137AED17D6325C23883E69EE4621 │ │ │ │ │ +34355A70C19EA68891E1CA937376901C85CDEE109F1665943E29A216DC00937A │ │ │ │ │ +B983A729A4654AD09187C0242D52FA4ADD0853EF4888864914D7D81C56578DD4 │ │ │ │ │ +3B51907032022E6E412D4F114675DEDCA8A9E85DC03A0B583FECD84432D15F70 │ │ │ │ │ +01F627BD6EC91F9FCFDA01BF40E1229B5F164309DBB641AD50970503DA2048C1 │ │ │ │ │ +DF8F36E8D252EE113F0B46677D9BAF376BAE18D74CFB0DBBD0C7E9D0A58BA3ED │ │ │ │ │ +1E5099CAE073EB5638617760AB57849893764EA9735173CD1EAB66884CEA7EE3 │ │ │ │ │ +8843327B2E145BD6FBB49102776B82BC511D109F8BE9E7E99DADABABEDC3CFD9 │ │ │ │ │ +393578FFD85907DFF2849E4CDE6FA4DEC7E1C150EBE4047FFB650F9548BE6D11 │ │ │ │ │ +0C51226A5436F18BF20A02E0F888F46B6AC3A8E8D927ECD3B5E095933AD3859F │ │ │ │ │ +5167C41D832EFCC4093BD2AFA7101AB430E57DAFC3590F05D3CBABB32BC203A0 │ │ │ │ │ +467B23BDB830487C9AA5B85BAC065F8538871B4180F8C4732E637DB090CFDE5A │ │ │ │ │ +3F4F2B5BFAFB848BAAD1A17CB076B34159601639BD93ECAB1214ACABF2C67FE2 │ │ │ │ │ +0658AA20B08681070FF56F1CC52144ABA8765D6E124D1CEA9BBA102808CE1BB2 │ │ │ │ │ +5EDF46BC7BBC2A5B49EE6EC28F5797A3969B057B21FCDBBD0E60848FF14F6CA3 │ │ │ │ │ +70F3060BDBB019B22722C99C7691760F013763B7FBEB62830AE215F195BF9F01 │ │ │ │ │ +21BF4377397E89574CFA47D123AA506A570A77BA6EB4AAB0B237A26154880293 │ │ │ │ │ +3952F832F72ECCB024F02385E5EE8566B165904B594E30D0700D033C6B429F6F │ │ │ │ │ +2A20BC774F442BC9CE29FCC81807C2768A8BC927A215558FBF36DC53F477F04A │ │ │ │ │ +41DA66E1A85B659EB761230977EAD7DA0150513D3323B143D4E2A61BCF03334C │ │ │ │ │ +C0EE3E1B06CFAF58ECC910BD81F0352B75FF1594D6A4EF504232D442174BE766 │ │ │ │ │ +0F8E703F97E21D25D4CD097549C31FEE7017C3916EFB02E7BF869172889827B6 │ │ │ │ │ +A48465EB7612BA3DBC6A9436C7167F149A25CE9F8E3F4F8DE3B5ADF6C0986CB3 │ │ │ │ │ +3A7E2DAB44AB489796461536F5F713017F2620AD03295CAE9285F08974AE0DF8 │ │ │ │ │ +D739260929619B509491AFF09C4CAEF9E65C2CA69470C907ECBF3AB6C955360D │ │ │ │ │ +05ABAC306DB51122A1ADC7EF0DD70FA299A45C505A83727D4598C86319EE9C06 │ │ │ │ │ +7218EFD4F40388354BCF1B79593D5AD221DF955D081F99F880E5CED07321AB3E │ │ │ │ │ +A2FCB8B05D54807D8E15E65B78DCE12989B9276350080C905DBB74CE9AA7E246 │ │ │ │ │ +5D3BAED292C562D4CF54617FCC6654496C7996D1ECE1EFF9258716AB763A12E6 │ │ │ │ │ +316E4C5587351A6DB011F58F6A15BC28BEBDC3836E0CB892807FEC228DC1B380 │ │ │ │ │ +92F7F42279F08D60F13D6A4CB425543C3644461461CBF6F27B6603F613D1FCF8 │ │ │ │ │ +A8410AD82D1498166AEB35D4125D7E2ADEAAB18BC04806AED53513F066E5F154 │ │ │ │ │ +3E13E863C50B9814EE2FB978D0D24A03FAF650CB6E2CADF1E6BE6BAF699AFC03 │ │ │ │ │ +E1A0EEB207B3B9A689ED5B373FE86686AD230BE6C18E1673DDA50E224B343EC5 │ │ │ │ │ +903BA0C8041C13607B50D5852AC7970B15C244E6EBA7D54B3086312CF04761D6 │ │ │ │ │ +7D3D75D51F20C371494AB81AB4A9838B20B483B851D01FEF41EA5C0B4755B964 │ │ │ │ │ +EB6E9B178051C556A010994EB88EAE641F4C1A0D7E0F98D5267E18AEF1AEA7E7 │ │ │ │ │ +9030A97DF89AFF621981C33B645FFB5F3BB2065A7661D11B26E0999561DF3580 │ │ │ │ │ +4A76A05DFAF8085525F8D5C01936F03C32E26E72569371C9EA3B8916F9DFC5FC │ │ │ │ │ +6A6F25A0FFDB981BA8B896393D75774D50828E6ADE903C45406E354703A4BC56 │ │ │ │ │ +2C49A47FEAC970DC433E3050C49F7FB945A9705BD8852D2D65D935F244D3B423 │ │ │ │ │ +EFAB84AAAAB8FBAFF50AFF372A533BCCEB5FC273DBADCF715776DF02A5DCBA9A │ │ │ │ │ +FBF265FAB4745D6475B33611EEE1EA95E7584E0BEEC7CA789AA69C8D03D6F8C0 │ │ │ │ │ +5B6844E2B901ACA560C0433B053D134866E567425174E47173679AAD4486A2D3 │ │ │ │ │ +369C29E4DD2CD6ACA1BE80ED8FF0A9C58A616D26E758BD8E6342624EC83FB590 │ │ │ │ │ +BD354B52B60BB054FAFE9AC63E1564FBC721FE8F276B0413EC89A2C85E5ED1B0 │ │ │ │ │ +3A9D83BE62A4488ADE7CE69971A8AF7E5862A4290EEF6F00D4171C7FFB360065 │ │ │ │ │ +92E72BF02BE27161AE0BB5516572A0BDC4F316FFB24B38484AC8D1FD4CD86062 │ │ │ │ │ +A2B5D03CF28C3A679C039A6EFDD4C9DA7E463AD60234C9F6BBEE48D87DD94D85 │ │ │ │ │ +842F495F3E25723718682CE4D6224CBBF4456F03077EDF736D65B9DDAB09470E │ │ │ │ │ +17742D82011FFA96BFE86B96E858F9352FCD20C3D46B77DBDEE54336EC2249EA │ │ │ │ │ +211F6DFFF5BEA1E5192BE1BAC0BDD5EDDB3D56C6F7C6E543561A0B39E5C1B04F │ │ │ │ │ +C683A7516B6E69D682455386DDA709929D621FA434D403E895AA0A77DBE1DFD2 │ │ │ │ │ +0D060DF82378880147ED97C6E8149686FA048710B113760AC1DA4512FF8556B3 │ │ │ │ │ +16E2447485B8C3CD58D0469C4A45FFB4CB0322BB284C02 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -3307,17 +3312,17 @@ │ │ │ │ │ 59 4[44 44 3[56 62 93 31 2[31 62 2[51 62 50 1[54 11[86 │ │ │ │ │ 5[84 5[42 6[80 13[56 56 56 56 2[31 46[{}23 99.6264 /CMBX12 │ │ │ │ │ rf /Fc 137[62 1[62 62 9[62 62 27[62 8[62 67[{}7 119.552 │ │ │ │ │ /CMTT12 rf /Fd 134[71 3[75 52 53 55 1[75 67 75 112 3[37 │ │ │ │ │ 75 1[41 61 75 60 1[65 13[75 2[92 11[103 17[67 67 2[37 │ │ │ │ │ 46[{}22 119.552 /CMBX12 rf /Fe 141[38 2[46 51 2[42 1[28 │ │ │ │ │ 46 42 1[42 1[42 14[65 1[66 11[59 62 69 2[68 6[28 58[{}16 │ │ │ │ │ -90.9091 /CMTI10 rf /Ff 134[48 3[51 2[36 3[51 12[45 22[47 │ │ │ │ │ -15[25 3[45 1[45 1[45 45 45 3[25 44[{}13 90.9091 /CMSL10 │ │ │ │ │ -rf │ │ │ │ │ +90.9091 /CMTI10 rf /Ff 134[48 3[51 2[36 12[40 2[51 45 │ │ │ │ │ +26[59 11[25 1[45 2[45 2[45 45 45 3[25 44[{}14 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 │ │ │ │ │ @@ -3428,25 +3433,25 @@ │ │ │ │ │ (not)h(y)m(et)h(zero.)141 5294 y(Ha)m(ving)27 b(a)g(lo)s(c)m(k)g(asso)s │ │ │ │ │ (ciated)g(with)f(a)h Fh(ChvList)d Fi(ob)5 b(ject)27 b(is)f(optional,)i │ │ │ │ │ (for)e(example,)i(it)e(is)g(not)g(needed)g(during)0 5407 │ │ │ │ │ y(a)31 b(serial)h(factorization)i(nor)c(a)i(MPI)f(factorization.)45 │ │ │ │ │ b(In)31 b(the)g(latter)h(case)g(there)g(is)f(one)g Fh(ChvList)e │ │ │ │ │ Fi(p)s(er)h(pro)s(cess.)1927 5656 y(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fi(2)p 136 100 1059 4 v │ │ │ │ │ -1240 w Fh(ChvList)29 b Ff(:)40 b Fe(DRAFT)31 b Ff(Jan)m(uary)f(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ -(utual)h(exclusion)g(lo)s(c)m(k.)40 b(Presen)m(tly)27 │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fi(2)p 136 100 1040 4 v │ │ │ │ │ +1221 w Fh(ChvList)29 b Ff(:)40 b Fe(DRAFT)31 b Ff(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2861 100 V 0 399 a Fi(F)-8 │ │ │ │ │ +b(or)35 b(a)g(m)m(ultithreaded)g(factorization)i(there)d(is)h(one)f │ │ │ │ │ +Fh(ChvList)f Fi(ob)5 b(ject)35 b(that)g(is)g(shared)e(b)m(y)i(all)g │ │ │ │ │ +(threads.)52 b(The)0 511 y(m)m(utual)22 b(exclusion)h(lo)s(c)m(k)g │ │ │ │ │ +(that)f(is)g(\(optionally\))i(em)m(b)s(edded)d(in)h(the)g │ │ │ │ │ +Fh(ChvList)e Fi(ob)5 b(ject)23 b(is)f(a)g Fh(Lock)f Fi(ob)5 │ │ │ │ │ +b(ject)23 b(from)e(this)0 624 y(library)-8 b(.)39 b(It)27 │ │ │ │ │ +b(is)f(inside)g(the)g Fh(Lock)f Fi(ob)5 b(ject)27 b(that)g(w)m(e)f(ha)m │ │ │ │ │ +(v)m(e)i(a)e(m)m(utual)h(exclusion)g(lo)s(c)m(k.)40 b(Presen)m(tly)27 │ │ │ │ │ b(w)m(e)f(supp)s(ort)f(the)0 737 y(Solaris)32 b(and)g(POSIX)f(thread)h │ │ │ │ │ (pac)m(k)-5 b(ages.)48 b(P)m(orting)33 b(the)g(m)m(ultithreaded)f(co)s │ │ │ │ │ (des)g(to)h(another)g(platform)f(should)0 850 y(b)s(e)37 │ │ │ │ │ b(simple)h(if)g(the)h(POSIX)e(thread)h(pac)m(k)-5 b(age)40 │ │ │ │ │ b(is)e(presen)m(t.)64 b(Another)38 b(t)m(yp)s(e)g(of)g(thread)g(pac)m │ │ │ │ │ (k)-5 b(age)40 b(will)e(require)0 963 y(some)31 b(mo)s(di\014cations)f │ │ │ │ │ (to)h(the)g Fh(Lock)e Fi(ob)5 b(ject,)32 b(but)d(none)i(to)g(the)f │ │ │ │ │ @@ -3491,17 +3496,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 1059 4 v 1240 100 a Fh(ChvList)28 │ │ │ │ │ -b Ff(:)41 b Fe(DRAFT)121 b Ff(Jan)m(uary)30 b(16,)i(2024)p │ │ │ │ │ -2795 100 V 1059 w Fi(3)111 399 y(3.)46 b Fh(void)h(ChvList_clearData)c │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1040 4 v 1221 100 a Fh(ChvList)28 │ │ │ │ │ +b Ff(:)41 b Fe(DRAFT)121 b Ff(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2814 100 V 1040 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 │ │ │ │ │ @@ -3564,27 +3569,27 @@ │ │ │ │ │ 5138 y(metho)s(d)e(returns)f(0.)227 5294 y Fe(Err)-5 │ │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fi(If)29 b Fh(list)g Fi(is)h │ │ │ │ │ Fh(NULL)p Fi(,)f(or)h(if)g Fh(ilist)e Fi(is)i(not)h(in)e(the)h(range)h │ │ │ │ │ Fh([0,nlist\))p Fi(,)c(an)j(error)g(message)227 5407 │ │ │ │ │ y(is)h(prin)m(ted)f(and)f(zero)j(is)e(returned.)p eop │ │ │ │ │ end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fi(4)p 136 100 1059 4 v │ │ │ │ │ -1240 w Fh(ChvList)29 b Ff(:)40 b Fe(DRAFT)31 b Ff(Jan)m(uary)f(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ -Fi(.)227 775 y(If)c(the)h(list)g(w)m(as)f(lo)s(c)m(k)m(ed,)j(the)d(n)m │ │ │ │ │ -(um)m(b)s(er)f(of)i(lo)s(c)m(ks)g(is)g(incremen)m(ted)f(and)g(the)h(lo) │ │ │ │ │ -s(c)m(k)g(unlo)s(c)m(k)m(ed.)47 b(The)32 b(sa)m(v)m(ed)227 │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fi(4)p 136 100 1040 4 v │ │ │ │ │ +1221 w Fh(ChvList)29 b Ff(:)40 b Fe(DRAFT)31 b Ff(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2861 100 V 111 399 a Fi(3.)46 │ │ │ │ │ +b Fh(Chv)h(*)h(ChvList_getList)43 b(\()48 b(ChvList)e(*list,)g(int)h │ │ │ │ │ +(ilist)f(\))h(;)227 549 y Fi(If)28 b(list)h Fh(ilist)e │ │ │ │ │ +Fi(is)h(empt)m(y)-8 b(,)30 b(the)f(metho)s(d)f(returns)f │ │ │ │ │ +Fh(NULL)p Fi(.)g(Otherwise,)i(if)f(the)h(list)g(needs)f(to)h(b)s(e)e │ │ │ │ │ +(lo)s(c)m(k)m(ed,)k(the)227 662 y(lo)s(c)m(k)37 b(is)e(lo)s(c)m(k)m │ │ │ │ │ +(ed.)57 b(The)34 b(head)h(of)h(the)f(list)h(is)f(sa)m(v)m(ed)i(to)f(a)f │ │ │ │ │ +(p)s(oin)m(ter)h(and)e(then)h(the)h(head)f(is)g(set)h(to)g │ │ │ │ │ +Fh(NULL)p Fi(.)227 775 y(If)c(the)h(list)g(w)m(as)f(lo)s(c)m(k)m(ed,)j │ │ │ │ │ +(the)d(n)m(um)m(b)s(er)f(of)i(lo)s(c)m(ks)g(is)g(incremen)m(ted)f(and)g │ │ │ │ │ +(the)h(lo)s(c)m(k)g(unlo)s(c)m(k)m(ed.)47 b(The)32 b(sa)m(v)m(ed)227 │ │ │ │ │ 888 y(p)s(oin)m(ter)f(is)f(returned.)227 1038 y Fe(Err)-5 │ │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fi(If)29 b Fh(list)g Fi(is)h │ │ │ │ │ Fh(NULL)p Fi(,)f(or)h(if)g Fh(ilist)e Fi(is)i(not)h(in)e(the)h(range)h │ │ │ │ │ Fh([0,nlist\))p Fi(,)c(an)j(error)g(message)227 1151 │ │ │ │ │ y(is)h(prin)m(ted)f(and)f(zero)j(is)e(returned.)111 1338 │ │ │ │ │ y(4.)46 b Fh(void)h(ChvList_addObjectToList)41 b(\()48 │ │ │ │ │ b(ChvList)e(*list,)g(Chv)h(*chv,)f(int)h(ilist)f(\))i(;)227 │ │ │ │ │ ├── ps2ascii {} │ │ │ │ │ │ @@ -22,15 +22,15 @@ │ │ │ │ │ │ The first two operations are queries, and can be done without locking the list. The third operation │ │ │ │ │ │ needs a lock only when two or more threads will be inserting objects into the list. The fourth │ │ │ │ │ │ operation requires a lock only when one thread will add an object while another thread removes │ │ │ │ │ │ the object and the incoming count is not yet zero. │ │ │ │ │ │ Having a lock associated with a ChvList object is optional, for example, it is not needed during │ │ │ │ │ │ a serial factorization nor a MPI factorization. In the latter case there is one ChvList per process. │ │ │ │ │ │ 1 │ │ │ │ │ │ - 2 ChvList : DRAFT January 16, 2024 │ │ │ │ │ │ + 2 ChvList : DRAFT February 18, 2025 │ │ │ │ │ │ For a multithreaded factorization there is one ChvList object that is shared by all threads. The │ │ │ │ │ │ mutualexclusion lock that is (optionally) embedded in the ChvListobject is a Lock object from this │ │ │ │ │ │ library. It is inside the Lock object that we have a mutual exclusion lock. Presently we support the │ │ │ │ │ │ Solaris and POSIX thread packages. Porting the multithreaded codes to another platform should │ │ │ │ │ │ be simple if the POSIX thread package is present. Another type of thread package will require │ │ │ │ │ │ some modifications to the Lock object, but none to the ChvList objects. │ │ │ │ │ │ 1.1 Data Structure │ │ │ │ │ │ @@ -52,15 +52,15 @@ │ │ │ │ │ │ 1. ChvList * ChvList_new ( void ) ; │ │ │ │ │ │ This method simply allocates storage for the ChvList structure and then sets the default │ │ │ │ │ │ fields by a call to ChvList setDefaultFields(). │ │ │ │ │ │ 2. void ChvList_setDefaultFields ( ChvList *list ) ; │ │ │ │ │ │ The structure’s fields are set to default values: nlist and nlocks set to zero, and heads, │ │ │ │ │ │ counts, lock and flags are set to NULL . │ │ │ │ │ │ Error checking: If list is NULL, an error message is printed and the program exits. │ │ │ │ │ │ - ChvList : DRAFT January 16, 2024 3 │ │ │ │ │ │ + ChvList : DRAFT February 18, 2025 3 │ │ │ │ │ │ 3. void ChvList_clearData ( ChvList *list ) ; │ │ │ │ │ │ This method clears the object and free’s any owned data by calling Chv free() for each │ │ │ │ │ │ object on the free list. If heads is not NULL, it is free’d. If counts is not NULL, it is free’d │ │ │ │ │ │ via a call to IVfree(). If flags is not NULL, it is free’d via a call to CVfree(). If the │ │ │ │ │ │ lock is not NULL, it is destroyed via a call to Lock free(). There is a concluding call to │ │ │ │ │ │ ChvList setDefaultFields(). │ │ │ │ │ │ Error checking: If list is NULL, an error message is printed and the program exits. │ │ │ │ │ │ @@ -87,15 +87,15 @@ │ │ │ │ │ │ Error checking: If list is NULL, or if ilist is not in the range [0,nlist), an error message │ │ │ │ │ │ is printed and zero is returned. │ │ │ │ │ │ 2. int ChvList_isCountZero ( ChvList *list, int ilist ) ; │ │ │ │ │ │ If counts is NULL, or if counts[ilist] equal to zero, the method returns 1. Otherwise, the │ │ │ │ │ │ method returns 0. │ │ │ │ │ │ Error checking: If list is NULL, or if ilist is not in the range [0,nlist), an error message │ │ │ │ │ │ is printed and zero is returned. │ │ │ │ │ │ - 4 ChvList : DRAFT January 16, 2024 │ │ │ │ │ │ + 4 ChvList : DRAFT February 18, 2025 │ │ │ │ │ │ 3. Chv * ChvList_getList ( ChvList *list, int ilist ) ; │ │ │ │ │ │ If list ilist is empty, the method returns NULL. Otherwise, if the list needs to be locked, the │ │ │ │ │ │ lock is locked. The head of the list is saved to a pointer and then the head is set to NULL. │ │ │ │ │ │ If the list was locked, the number of locks is incremented and the lock unlocked. The saved │ │ │ │ │ │ pointer is returned. │ │ │ │ │ │ Error checking: If list is NULL, or if ilist is not in the range [0,nlist), an error message │ │ │ │ │ │ is printed and zero is returned. │ │ │ ├── ./usr/share/doc/spooles-doc/ChvManager.ps.gz │ │ │ │ ├── ChvManager.ps │ │ │ │ │ @@ -10,15 +10,15 @@ │ │ │ │ │ %%EndComments │ │ │ │ │ %%BeginDefaults │ │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ │ %%EndDefaults │ │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ │ %DVIPSCommandLine: dvips main -o ChvManager.ps │ │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ │ -%DVIPSSource: TeX output 2024.01.16:2047 │ │ │ │ │ +%DVIPSSource: TeX output 2025.02.18:0318 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -1159,20 +1159,21 @@ │ │ │ │ │ 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 52 /four put │ │ │ │ │ -dup 54 /six put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ +dup 56 /eight put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 74 /J put │ │ │ │ │ +dup 70 /F put │ │ │ │ │ dup 97 /a put │ │ │ │ │ -dup 110 /n put │ │ │ │ │ +dup 98 /b put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ dup 114 /r put │ │ │ │ │ dup 117 /u put │ │ │ │ │ dup 121 /y put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ @@ -1356,89 +1357,93 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ │ -C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ │ -6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ │ -11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ │ -1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ │ -A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ │ -F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ │ -EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ │ -033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ │ -A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ │ -468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8A71FF9C085003EBB4F4 │ │ │ │ │ -3D271F5B16B1AAD3EBDC391F534AA46E545E9D8659DD19B309C3B7625A8396FA │ │ │ │ │ -2519464539D46E43ACB72952313C8497315E0319C08628023E8FC54D7D3BAC29 │ │ │ │ │ -D5AD8EFDABF0C33C7AFB7151A6606C62A87F0F5F783569AC4C881A992E3FE420 │ │ │ │ │ -297F7BC5147F3B2FA98450D2F8B07F7D229BC8BE06729920CFEC22556740E1CB │ │ │ │ │ -3DE09AC763C6D4A20AD1599C368FABD07BC35C16683F2A0311A88983415A9140 │ │ │ │ │ -2EFC4BC1B10DCAD4B2B8A28510E5BD39D6616D2B9B079ED3CF9C315B7DEC29D9 │ │ │ │ │ -251DFD0194B34EC175964C23383F23FFB2E41B698C405815D65EAFF9E9DD1DDE │ │ │ │ │ -30F77924656C288B8DDB2E5B0E7B1FAA66791DE3848EE6DE63AD0E945E49C6C7 │ │ │ │ │ -9FCA16E01F027F9EF7ACB55F02F5B0136480802F789F6FE14B430879979BA04D │ │ │ │ │ -F481AD4CF47E6847936F377FB04869F9A80E597301BFCAB718D8764094673876 │ │ │ │ │ -BCEF8FA3701608C84B3A0399A11D2E6AD922CCB7D72AF9EBFB30F4648A37A123 │ │ │ │ │ -CB8FB14BDC351692CF0CCAA5CA9383C2B23BAAA38700327EB743FBBE9EE04041 │ │ │ │ │ -13F5CEF4B3881BBC051C33369A82B3505B1CFD7D91AEF2E43EA728EE48E2D854 │ │ │ │ │ -5A7E516998ACDD4FD835FA901C5A21810A56D51FE919B2E58408EEB4DAEB487F │ │ │ │ │ -BA7F1D292CED902DF3533566D96DAD918319EA650D4FC7D9E0170CDE620F755B │ │ │ │ │ -0E7AE02D9B118481B26F5FF7060FBCFA2A682B6826F00679BCDA68794C05286D │ │ │ │ │ -B616DD08372ACDE0AE6E7EF116F0D36F16241ED4F0E8CCD80377792E3BB1343C │ │ │ │ │ -EEB22CC77738F7CBCBA32CF6C3979F6DF7ED81A89AE8928FD7CC550F2730BA88 │ │ │ │ │ -1B51CEDC63F4C47F261AFCAB7AC3CED20B15C97E714A460A1A3B16436B4A5149 │ │ │ │ │ -8F91DA4BE0B9B648534CE5F442117036B602DC91E2852BEA62F55803B833FDF7 │ │ │ │ │ -9F901AB87489E703DDEED1091A79DC73B4440BBBF2C7592B441187C4A3562204 │ │ │ │ │ -859F08BA3CE2A8ECCD5AAD13C50FB806FE79A388F1822C5608837CBDE526A044 │ │ │ │ │ -12E5CDE4A066932AF2ACA7E8FC6BA4603640944718752975B7DA6E906BE1EA01 │ │ │ │ │ -46736FF5D1AA1CC682D011B6039CF98C35E36D4F14ABC84A38B7203CC9A17756 │ │ │ │ │ -B2B0345276798F1A88A54AD9FEA0853C6DDF28525ED4F0B7380D14147012C2A4 │ │ │ │ │ -5B02888C986C76497EA4C729B0B82EE73C1A1A8E8F1ABF401E341028E9C15AF9 │ │ │ │ │ -354706D8DC07492921AD0932A46736C0D1B066D00287DACCC068FAE6A796EC89 │ │ │ │ │ -54D1D73AA88F3A5912BA9D3FF70065C8D0D0DAD1CD846501E06694374EFDBEC6 │ │ │ │ │ -931F644D5E8494AFC742423AD9A487658E310E0682BE19B8475F4D450487A686 │ │ │ │ │ -2B94494DEAF1C0F59DE82F2CE64BEE5E97F942FCFA1187ED6AA5761E951A7BF7 │ │ │ │ │ -9F842E34A4656C58B35A9E99F7E6762CEE11E0CF59FFD75D7382C5EE6DBB43F1 │ │ │ │ │ -ED219071D3FB22DBA90977723BB467C0490D042684C0724F40DCA3E0D8F1F4E7 │ │ │ │ │ -3C4F9A67BE6528185EAAFDD415224F7E256A4EA00111C17C746CBD80BF569A27 │ │ │ │ │ -D81195D7F79C1CCEEF30ED00D49F48B63E4B8D7953403A3710AE953CC1B76F0F │ │ │ │ │ -F523D777A6A186F262A602543F94AF7471DBE25FEBC207DB42DAF7DC9A5781FB │ │ │ │ │ -2131AD42869D966A734AAE3466DF1CE9D1BCFA72409A558C0AEE6A8E2FEAACB6 │ │ │ │ │ -2CDABCC28433034848ACF9FB4465D272E4AFC48572647F05F41C7A293CC5B595 │ │ │ │ │ -AD31555FB708A72962707348BC7033A8224BD42EB9D75FDF3AE9E6A9C960B330 │ │ │ │ │ -5137DF59F8E2E0D535F41524ABDF070745A4FA25CD8DFD38A5FF30A95452B875 │ │ │ │ │ -6569E8812631300D79A942C563AF174AC05C9F2D09D7D5D3C605F5A6B7F21B34 │ │ │ │ │ -18F270A993B050838E701A17938D1C156CBA7CA4BAC7C562CE9D7B758EAB25A9 │ │ │ │ │ -A6DFFC71F65561341847B776DF34061CE3D439B87B857626987EC93B3B95B8E8 │ │ │ │ │ -76FFB16B263675333FA10414FEED707FF7C366BF8B20FF8577CDEBEBCF1A5BCE │ │ │ │ │ -258C09C90175A5278B7C444A623E3331FDE5A6387B3E389540ED1E7E883958F3 │ │ │ │ │ -3A5C89CCD62256FA069DF4A5090FB17C1F1757C9209DAFB8A1F47182BF3E88D9 │ │ │ │ │ -0B5376B59EE165A761902759C8ED7F5AD301E7EB8B49CC09AF921DB45B7F8002 │ │ │ │ │ -AB32E73AAE53942DE0F9175D8446017006C9C0B93EF39C13B7A879F2F6DDFF16 │ │ │ │ │ -204BB24F976847CF006FD29332FCCB255B5116F7077A44F7066C39C81DC4BAD2 │ │ │ │ │ -40DB2753626C0102E5D047522ABC38EA294A699B8DFD9CA0A7980561A1062E90 │ │ │ │ │ -AB11EE286A9C238D9F721D9980D0A1828C2814972622D948CEE8C812C19A9A03 │ │ │ │ │ -608ED0AC138A436FFBF8BE3D1E66C87793416AF38ED9BC5424568A175FBDAA9E │ │ │ │ │ -D6FC11A7021693819B051562B5A59F32629E2D6019D69DD329BE1894A2B295E1 │ │ │ │ │ -1DCE9683B29AE126C56F26E5C595BF1A8249BDE231DBE8B066F7F62EF149B975 │ │ │ │ │ -A863969A4690504A5EA064721DA909B8157C0B39FBF8228D95CB655E406161E1 │ │ │ │ │ -148610FAEED7C5509880223C06A66DA19E10F94DC2DB481B26 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004FD597ED │ │ │ │ │ +EFDBC64ABD9B79386FB2427D1A63522195B1239C09F8CB3F8BD7A245A6DD82E3 │ │ │ │ │ +260C3889587626DFC5F7978E55F5524ABD6A3319CDD3D3F40D040044D51DA4E1 │ │ │ │ │ +6797EEAC7AA07C77EC6DB0E6E182B545A8BEF63B14F3FC07BAC09E7CD5C17ED6 │ │ │ │ │ +10080704B0DA4E9BA12F968DF8A58458D17E9A5B1F14A83DC51F5B161ADEE1CC │ │ │ │ │ +0183D82ED92C6FC7203C289949EDF0284D9893029FF5408E421324625F17C3E5 │ │ │ │ │ +2437C8F75A9D68EE1AF9174FEA6FC6BF793C7D2E497EA90396CF1A645E283B69 │ │ │ │ │ +8425F47C323587DF91E1D596DCB1E3A787C955D9D965A5E3E26ADF58B62AD5F9 │ │ │ │ │ +0C9AC784DE479780606354111E3202F215650DBBE1063A46F3C10B9EBC974DDA │ │ │ │ │ +A1A28DBBD43E9E5BFF000B12C787D0427928078F8EC5FE90DED97E6C129E8DEA │ │ │ │ │ +51F66504DB83764E52B0BA68DF7BE684C8959CB1D3345CC48221A9A4683306C0 │ │ │ │ │ +62B634E0A539383F0C7A788D9711EFF414869CCC5659D78CEBE009BF2463F56A │ │ │ │ │ +0ADC993348FE96DF7C250E13ED6504AACFE8F8DCA2D2048D9D8CFA127D363EAC │ │ │ │ │ +1F0630E2D1B621E6954038195D965B91FD974FA3F1B8B29D200A16CEBA645E2F │ │ │ │ │ +CEEE6FD49FBBD49E38AE67D4BFFCE91F1FC422554EC4409C5FA18D40FCD6D9B3 │ │ │ │ │ +2185ED1E0F98106D4339F086B05CA36E56EC22C60E2CE23F9C4CC403ACAD3F94 │ │ │ │ │ +4086B4DF6DFA0B7B4716417263E7B558535566AED2F6C2F9846A16D71A7930A7 │ │ │ │ │ +49232D3D16C4A01CF1A1998A06F40062ED329179A85668537C55D0BC24FC0010 │ │ │ │ │ +54DA83E2FC66B2A5D428E6A9BFC983253668C0ECE6CA36DBF97C4B7659D50842 │ │ │ │ │ +C65B36604840EEDA399B57E2DEFAC3E7FB031634CE33D04238F9854D2AAAF448 │ │ │ │ │ +34DA5F3BCCED3166FEEE82BB0BBA0A397CC2F95865CB52AABFF454D93B425809 │ │ │ │ │ +A26AC459F321FD23E2262FE816D06BAAECF32AAF167F84799AF80F9F88388D07 │ │ │ │ │ +0DB5FD57AFEE2850A8DFE977E6AE39CB3DC16DB1A163A583C86C6F775CE33521 │ │ │ │ │ +0081C0BBBAD6D30D26C66B28B38CEAC78FEA5FB3CC5853656B67C6D9D80EB30E │ │ │ │ │ +397558C9179AF5920F34DAB3F578DFCF0DBB137AED17D6325C23883E69EE4621 │ │ │ │ │ +34355A70C19EA68891E1CA937376901C85CDEE109F1665943E29A216DC00937A │ │ │ │ │ +B983A729A4654AD09187C0242D52FA4ADD0853EF4888864914D7D81C56578DD4 │ │ │ │ │ +3B51907032022E6E412D4F114675DEDCA8A9E85DC03A0B583FECD84432D15F70 │ │ │ │ │ +01F627BD6EC91F9FCFDA01BF40E1229B5F164309DBB641AD50970503DA2048C1 │ │ │ │ │ +DF8F36E8D252EE113F0B46677D9BAF376BAE18D74CFB0DBBD0C7E9D0A58BA3ED │ │ │ │ │ +1E5099CAE073EB5638617760AB57849893764EA9735173CD1EAB66884CEA7EE3 │ │ │ │ │ +8843327B2E145BD6FBB49102776B82BC511D109F8BE9E7E99DADABABEDC3CFD9 │ │ │ │ │ +393578FFD85907DFF2849E4CDE6FA4DEC7E1C150EBE4047FFB650F9548BE6D11 │ │ │ │ │ +0C51226A5436F18BF20A02E0F888F46B6AC3A8E8D927ECD3B5E095933AD3859F │ │ │ │ │ +5167C41D832EFCC4093BD2AFA7101AB430E57DAFC3590F05D3CBABB32BC203A0 │ │ │ │ │ +467B23BDB830487C9AA5B85BAC065F8538871B4180F8C4732E637DB090CFDE5A │ │ │ │ │ +3F4F2B5BFAFB848BAAD1A17CB076B34159601639BD93ECAB1214ACABF2C67FE2 │ │ │ │ │ +0658AA20B08681070FF56F1CC52144ABA8765D6E124D1CEA9BBA102808CE1BB2 │ │ │ │ │ +5EDF46BC7BBC2A5B49EE6EC28F5797A3969B057B21FCDBBD0E60848FF14F6CA3 │ │ │ │ │ +70F3060BDBB019B22722C99C7691760F013763B7FBEB62830AE215F195BF9F01 │ │ │ │ │ +21BF4377397E89574CFA47D123AA506A570A77BA6EB4AAB0B237A26154880293 │ │ │ │ │ +3952F832F72ECCB024F02385E5EE8566B165904B594E30D0700D033C6B429F6F │ │ │ │ │ +2A20BC774F442BC9CE29FCC81807C2768A8BC927A215558FBF36DC53F477F04A │ │ │ │ │ +41DA66E1A85B659EB761230977EAD7DA0150513D3323B143D4E2A61BCF03334C │ │ │ │ │ +C0EE3E1B06CFAF58ECC910BD81F0352B75FF1594D6A4EF504232D442174BE766 │ │ │ │ │ +0F8E703F97E21D25D4CD097549C31FEE7017C3916EFB02E7BF869172889827B6 │ │ │ │ │ +A48465EB7612BA3DBC6A9436C7167F149A25CE9F8E3F4F8DE3B5ADF6C0986CB3 │ │ │ │ │ +3A7E2DAB44AB489796461536F5F713017F2620AD03295CAE9285F08974AE0DF8 │ │ │ │ │ +D739260929619B509491AFF09C4CAEF9E65C2CA69470C907ECBF3AB6C955360D │ │ │ │ │ +05ABAC306DB51122A1ADC7EF0DD70FA299A45C505A83727D4598C86319EE9C06 │ │ │ │ │ +7218EFD4F40388354BCF1B79593D5AD221DF955D081F99F880E5CED07321AB3E │ │ │ │ │ +A2FCB8B05D54807D8E15E65B78DCE12989B9276350080C905DBB74CE9AA7E246 │ │ │ │ │ +5D3BAED292C562D4CF54617FCC6654496C7996D1ECE1EFF9258716AB763A12E6 │ │ │ │ │ +316E4C5587351A6DB011F58F6A15BC28BEBDC3836E0CB892807FEC228DC1B380 │ │ │ │ │ +92F7F42279F08D60F13D6A4CB425543C3644461461CBF6F27B6603F613D1FCF8 │ │ │ │ │ +A8410AD82D1498166AEB35D4125D7E2ADEAAB18BC04806AED53513F066E5F154 │ │ │ │ │ +3E13E863C50B9814EE2FB978D0D24A03FAF650CB6E2CADF1E6BE6BAF699AFC03 │ │ │ │ │ +E1A0EEB207B3B9A689ED5B373FE86686AD230BE6C18E1673DDA50E224B343EC5 │ │ │ │ │ +903BA0C8041C13607B50D5852AC7970B15C244E6EBA7D54B3086312CF04761D6 │ │ │ │ │ +7D3D75D51F20C371494AB81AB4A9838B20B483B851D01FEF41EA5C0B4755B964 │ │ │ │ │ +EB6E9B178051C556A010994EB88EAE641F4C1A0D7E0F98D5267E18AEF1AEA7E7 │ │ │ │ │ +9030A97DF89AFF621981C33B645FFB5F3BB2065A7661D11B26E0999561DF3580 │ │ │ │ │ +4A76A05DFAF8085525F8D5C01936F03C32E26E72569371C9EA3B8916F9DFC5FC │ │ │ │ │ +6A6F25A0FFDB981BA8B896393D75774D50828E6ADE903C45406E354703A4BC56 │ │ │ │ │ +2C49A47FEAC970DC433E3050C49F7FB945A9705BD8852D2D65D935F244D3B423 │ │ │ │ │ +EFAB84AAAAB8FBAFF50AFF372A533BCCEB5FC273DBADCF715776DF02A5DCBA9A │ │ │ │ │ +FBF265FAB4745D6475B33611EEE1EA95E7584E0BEEC7CA789AA69C8D03D6F8C0 │ │ │ │ │ +5B6844E2B901ACA560C0433B053D134866E567425174E47173679AAD4486A2D3 │ │ │ │ │ +369C29E4DD2CD6ACA1BE80ED8FF0A9C58A616D26E758BD8E6342624EC83FB590 │ │ │ │ │ +BD354B52B60BB054FAFE9AC63E1564FBC721FE8F276B0413EC89A2C85E5ED1B0 │ │ │ │ │ +3A9D83BE62A4488ADE7CE69971A8AF7E5862A4290EEF6F00D4171C7FFB360065 │ │ │ │ │ +92E72BF02BE27161AE0BB5516572A0BDC4F316FFB24B38484AC8D1FD4CD86062 │ │ │ │ │ +A2B5D03CF28C3A679C039A6EFDD4C9DA7E463AD60234C9F6BBEE48D87DD94D85 │ │ │ │ │ +842F495F3E25723718682CE4D6224CBBF4456F03077EDF736D65B9DDAB09470E │ │ │ │ │ +17742D82011FFA96BFE86B96E858F9352FCD20C3D46B77DBDEE54336EC2249EA │ │ │ │ │ +211F6DFFF5BEA1E5192BE1BAC0BDD5EDDB3D56C6F7C6E543561A0B39E5C1B04F │ │ │ │ │ +C683A7516B6E69D682455386DDA709929D621FA434D403E895AA0A77DBE1DFD2 │ │ │ │ │ +0D060DF82378880147ED97C6E8149686FA048710B113760AC1DA4512FF8556B3 │ │ │ │ │ +16E2447485B8C3CD58D0469C4A45FFB4CB0322BB284C02 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -3109,16 +3114,16 @@ │ │ │ │ │ TeXDict begin 40258437 52099151 1000 600 600 (main.dvi) │ │ │ │ │ @start /Fa 133[50 59 4[44 44 3[56 62 93 31 2[31 62 2[51 │ │ │ │ │ 62 50 1[54 11[86 5[84 5[42 6[80 13[56 56 56 56 2[31 46[{}23 │ │ │ │ │ 99.6264 /CMBX12 rf /Fb 137[62 3[62 3[62 5[62 62 1[62 │ │ │ │ │ 3[62 19[62 9[62 67[{}9 119.552 /CMTT12 rf /Fc 134[71 │ │ │ │ │ 3[75 52 53 55 1[75 67 75 112 3[37 75 1[41 61 75 60 1[65 │ │ │ │ │ 13[75 2[92 11[103 17[67 67 2[37 46[{}22 119.552 /CMBX12 │ │ │ │ │ -rf /Fd 134[48 3[51 2[36 3[51 12[45 22[47 15[25 3[45 1[45 │ │ │ │ │ -1[45 45 45 3[25 44[{}13 90.9091 /CMSL10 rf /Fe 134[44 │ │ │ │ │ +rf /Fd 134[48 3[51 2[36 12[40 2[51 45 26[59 11[25 1[45 │ │ │ │ │ +2[45 2[45 45 45 3[25 44[{}14 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 │ │ │ │ │ @@ -3238,21 +3243,21 @@ │ │ │ │ │ (recycling)i(mo)s(de.)141 5294 y(A)39 b(m)m(ultithreaded)g(en)m │ │ │ │ │ (vironmen)m(t)g(creates)h(some)f(di\016culties.)66 b(Should)37 │ │ │ │ │ b(there)i(b)s(e)f(one)h(manager)g(ob)5 b(ject)0 5407 │ │ │ │ │ y(p)s(er)30 b(thread,)h(or)g(should)e(all)j(the)f(threads)g(share)f │ │ │ │ │ (one)h(ob)5 b(ject?)43 b(W)-8 b(e)32 b(ha)m(v)m(e)g(c)m(hosen)f(the)g │ │ │ │ │ (latter)i(course,)e(but)f(this)1927 5656 y(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fh(2)p 136 100 1035 4 v │ │ │ │ │ -1217 w Fg(DChvList)28 b Fd(:)40 b Fe(DRAFT)31 b Fd(Jan)m(uary)f(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fh(2)p 136 100 1016 4 v │ │ │ │ │ +1197 w Fg(DChvList)29 b Fd(:)40 b Fe(DRAFT)30 b Fd(F)-8 │ │ │ │ │ +b(ebruary)31 b(18,)g(2025)p 2885 100 V 0 399 a Fh(requires)f(that)i(a)f │ │ │ │ │ +(lo)s(c)m(k)h(b)s(e)e(presen)m(t)h(to)h(guard)e(the)h(critical)i │ │ │ │ │ +(section)f(of)f(co)s(de)g(where)f(one)h(searc)m(hes)h(or)f(adds)f(an)0 │ │ │ │ │ +511 y(ob)5 b(ject)38 b(to)g(the)f(list.)61 b(The)36 b(lo)s(c)m(k)i(w)m │ │ │ │ │ +(e)g(use)e(is)h(a)h Fg(Lock)d Fh(ob)5 b(ject,)40 b(and)d(so)g(the)g │ │ │ │ │ Fg(ChvManager)d Fh(co)s(de)j(is)g(completely)0 624 y(indep)s(enden)m(t) │ │ │ │ │ c(of)i(the)f(thread)g(pac)m(k)-5 b(age.)55 b(P)m(orting)35 │ │ │ │ │ b(to)g(a)g(new)e(system)i(migh)m(t)g(require)f(some)h(mo)s │ │ │ │ │ (di\014cation)f(to)0 737 y(the)d Fg(Lock)p Fh(,)e(but)h(none)g(to)h │ │ │ │ │ (the)g(manager)f(ob)5 b(ject.)141 873 y(Eac)m(h)46 b(manager)g(ob)5 │ │ │ │ │ b(ject)46 b(k)m(eeps)f(trac)m(k)i(of)e(certain)h(statistics,)51 │ │ │ │ │ b(b)m(ytes)46 b(in)f(their)g(w)m(orkspaces,)50 b(the)45 │ │ │ │ │ @@ -3301,17 +3306,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 1035 4 v 1216 100 a Fg(DChvList)28 │ │ │ │ │ -b Fd(:)41 b Fe(DRAFT)121 b Fd(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2818 100 V 1035 w Fh(3)111 399 y(2.)46 b Fg(void)h │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1016 4 v 1197 100 a Fg(DChvList)28 │ │ │ │ │ +b Fd(:)41 b Fe(DRAFT)121 b Fd(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2838 100 V 1016 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 │ │ │ │ │ @@ -3378,24 +3383,25 @@ │ │ │ │ │ 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 1035 4 v │ │ │ │ │ -1217 w Fg(DChvList)28 b Fd(:)40 b Fe(DRAFT)31 b Fd(Jan)m(uary)f(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fh(4)p 136 100 1016 4 v │ │ │ │ │ +1197 w Fg(DChvList)29 b Fd(:)40 b Fe(DRAFT)30 b Fd(F)-8 │ │ │ │ │ +b(ebruary)31 b(18,)g(2025)p 2885 100 V 0 399 a Fa(1.2.4)112 │ │ │ │ │ +b(IO)38 b(metho)s(ds)111 595 y Fh(1.)46 b Fg(void)h │ │ │ │ │ +(ChvManager_writeForHuman)o(Eye)41 b(\()48 b(ChvManager)d(*manager,)g │ │ │ │ │ +(FILE)i(*fp)g(\))g(;)227 745 y Fh(This)30 b(metho)s(d)g(writes)g(the)h │ │ │ │ │ +(statistics)h(to)f(a)g(\014le)f(in)g(user)g(readable)h(form.)227 │ │ │ │ │ +896 y Fe(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fh(If)30 │ │ │ │ │ +b Fg(manager)f Fh(or)h Fg(fp)g Fh(are)h Fg(NULL)p Fh(,)e(an)h(error)g │ │ │ │ │ +(message)i(is)e(prin)m(ted)g(and)g(zero)h(is)g(returned.)p │ │ │ │ │ +eop end │ │ │ │ │ %%Page: 5 5 │ │ │ │ │ TeXDict begin 5 4 bop 0 866 a Fi(Index)0 1289 y Fg(ChvManager)p │ │ │ │ │ 486 1289 29 4 v 32 w(clearData\(\))p Fh(,)27 b(3)0 1402 │ │ │ │ │ y Fg(ChvManager)p 486 1402 V 32 w(free\(\))p Fh(,)i(3)0 │ │ │ │ │ 1515 y Fg(ChvManager)p 486 1515 V 32 w(init\(\))p Fh(,)g(3)0 │ │ │ │ │ 1628 y Fg(ChvManager)p 486 1628 V 32 w(new\(\))p Fh(,)g(2)0 │ │ │ │ │ 1741 y Fg(ChvManager)p 486 1741 V 32 w(newObjectOfSizeNbytes\(\))o │ │ │ │ │ ├── ps2ascii {} │ │ │ │ │ │ @@ -23,15 +23,15 @@ │ │ │ │ │ │ finds a smallest object of that size or larger.) If there is no object on the free pool of sufficient │ │ │ │ │ │ size, one is created and returned. When the user releases an object to the manager, the object │ │ │ │ │ │ is placed on the free pool. │ │ │ │ │ │ For the factorization, serial, multithreaded or MPI, we recommend using the recycling mode. │ │ │ │ │ │ A multithreaded environment creates some difficulties. Should there be one manager object │ │ │ │ │ │ per thread, or should all the threads share one object? We have chosen the latter course, but this │ │ │ │ │ │ 1 │ │ │ │ │ │ - 2 DChvList : DRAFT January 16, 2024 │ │ │ │ │ │ + 2 DChvList : DRAFT February 18, 2025 │ │ │ │ │ │ requires that a lock be present to guard the critical section of code where one searches or adds an │ │ │ │ │ │ object to the list. The lock we use is a Lock object, and so the ChvManager code is completely │ │ │ │ │ │ independent of the thread package. Porting to a new system might require some modification to │ │ │ │ │ │ the Lock, but none to the manager object. │ │ │ │ │ │ Each manager object keeps track of certain statistics, bytes in their workspaces, the total │ │ │ │ │ │ number of bytes requested, the number of requests for a Chv objects, the number of releases, and │ │ │ │ │ │ the number of locks and unlocks. │ │ │ │ │ │ @@ -54,15 +54,15 @@ │ │ │ │ │ │ ChvManager object. │ │ │ │ │ │ 1.2.1 Basic methods │ │ │ │ │ │ As usual, there are four basic methods to support object creation, setting default fields, clearing │ │ │ │ │ │ any allocated data, and free’ing the object. │ │ │ │ │ │ 1. ChvManager * ChvManager_new ( void ) ; │ │ │ │ │ │ This method simply allocates storage for the ChvManager structure and then sets the default │ │ │ │ │ │ fields by a call to ChvManager setDefaultFields(). │ │ │ │ │ │ - DChvList : DRAFT January 16, 2024 3 │ │ │ │ │ │ + DChvList : DRAFT February 18, 2025 3 │ │ │ │ │ │ 2. void ChvManager_setDefaultFields ( ChvManager *manager ) ; │ │ │ │ │ │ Thestructure’sfieldsaresettodefaultvalues: mode,nactive,nbytesactive,nbytesrequested, │ │ │ │ │ │ nbytesalloc, nrequests, nreleases, nlocks and nunlocks set to zero, and head and lock │ │ │ │ │ │ are set to NULL . │ │ │ │ │ │ Error checking: If manager is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 3. void ChvManager_clearData ( ChvManager *manager ) ; │ │ │ │ │ │ This method clears the object and free’s any owned data by calling Chv free() for each │ │ │ │ │ │ @@ -89,15 +89,15 @@ │ │ │ │ │ │ 2. void ChvManager_releaseObject ( ChvManager *manager, Chv *chv ) ; │ │ │ │ │ │ This method releases the chv instance into the free pool of objects. │ │ │ │ │ │ Error checking: If manager is NULL, an error message is printed and zero is returned. │ │ │ │ │ │ 3. void ChvManager_releaseListOfObjects ( ChvManager *manager, Chv *chv ) ; │ │ │ │ │ │ This method releases a list of Chv objects into the free pool of objects. The head of the list │ │ │ │ │ │ is the chv instance. │ │ │ │ │ │ Error checking: If manager is NULL, an error message is printed and zero is returned. │ │ │ │ │ │ - 4 DChvList : DRAFT January 16, 2024 │ │ │ │ │ │ + 4 DChvList : DRAFT February 18, 2025 │ │ │ │ │ │ 1.2.4 IO methods │ │ │ │ │ │ 1. void ChvManager_writeForHumanEye ( ChvManager *manager, FILE *fp ) ; │ │ │ │ │ │ This method writes the statistics to a file in user readable form. │ │ │ │ │ │ Error checking: If manager or fp are NULL, an error message is printed and zero is returned. │ │ │ │ │ │ Index │ │ │ │ │ │ ChvManager clearData(), 3 │ │ │ │ │ │ ChvManager free(), 3 │ │ │ ├── ./usr/share/doc/spooles-doc/Coords.ps.gz │ │ │ │ ├── Coords.ps │ │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ │ %%EndComments │ │ │ │ │ %%BeginDefaults │ │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ │ %%EndDefaults │ │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ │ %DVIPSCommandLine: dvips main -o Coords.ps │ │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ │ -%DVIPSSource: TeX output 2024.01.16:2047 │ │ │ │ │ +%DVIPSSource: TeX output 2025.02.18:0318 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -1238,20 +1238,21 @@ │ │ │ │ │ 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 52 /four put │ │ │ │ │ -dup 54 /six put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ +dup 56 /eight put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 74 /J put │ │ │ │ │ +dup 70 /F put │ │ │ │ │ dup 97 /a put │ │ │ │ │ -dup 110 /n put │ │ │ │ │ +dup 98 /b put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ dup 114 /r put │ │ │ │ │ dup 117 /u put │ │ │ │ │ dup 121 /y put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ @@ -1435,89 +1436,93 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ │ -C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ │ -6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ │ -11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ │ -1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ │ -A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ │ -F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ │ -EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ │ -033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ │ -A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ │ -468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8A71FF9C085003EBB4F4 │ │ │ │ │ -3D271F5B16B1AAD3EBDC391F534AA46E545E9D8659DD19B309C3B7625A8396FA │ │ │ │ │ -2519464539D46E43ACB72952313C8497315E0319C08628023E8FC54D7D3BAC29 │ │ │ │ │ -D5AD8EFDABF0C33C7AFB7151A6606C62A87F0F5F783569AC4C881A992E3FE420 │ │ │ │ │ -297F7BC5147F3B2FA98450D2F8B07F7D229BC8BE06729920CFEC22556740E1CB │ │ │ │ │ -3DE09AC763C6D4A20AD1599C368FABD07BC35C16683F2A0311A88983415A9140 │ │ │ │ │ -2EFC4BC1B10DCAD4B2B8A28510E5BD39D6616D2B9B079ED3CF9C315B7DEC29D9 │ │ │ │ │ -251DFD0194B34EC175964C23383F23FFB2E41B698C405815D65EAFF9E9DD1DDE │ │ │ │ │ -30F77924656C288B8DDB2E5B0E7B1FAA66791DE3848EE6DE63AD0E945E49C6C7 │ │ │ │ │ -9FCA16E01F027F9EF7ACB55F02F5B0136480802F789F6FE14B430879979BA04D │ │ │ │ │ -F481AD4CF47E6847936F377FB04869F9A80E597301BFCAB718D8764094673876 │ │ │ │ │ -BCEF8FA3701608C84B3A0399A11D2E6AD922CCB7D72AF9EBFB30F4648A37A123 │ │ │ │ │ -CB8FB14BDC351692CF0CCAA5CA9383C2B23BAAA38700327EB743FBBE9EE04041 │ │ │ │ │ -13F5CEF4B3881BBC051C33369A82B3505B1CFD7D91AEF2E43EA728EE48E2D854 │ │ │ │ │ -5A7E516998ACDD4FD835FA901C5A21810A56D51FE919B2E58408EEB4DAEB487F │ │ │ │ │ -BA7F1D292CED902DF3533566D96DAD918319EA650D4FC7D9E0170CDE620F755B │ │ │ │ │ -0E7AE02D9B118481B26F5FF7060FBCFA2A682B6826F00679BCDA68794C05286D │ │ │ │ │ -B616DD08372ACDE0AE6E7EF116F0D36F16241ED4F0E8CCD80377792E3BB1343C │ │ │ │ │ -EEB22CC77738F7CBCBA32CF6C3979F6DF7ED81A89AE8928FD7CC550F2730BA88 │ │ │ │ │ -1B51CEDC63F4C47F261AFCAB7AC3CED20B15C97E714A460A1A3B16436B4A5149 │ │ │ │ │ -8F91DA4BE0B9B648534CE5F442117036B602DC91E2852BEA62F55803B833FDF7 │ │ │ │ │ -9F901AB87489E703DDEED1091A79DC73B4440BBBF2C7592B441187C4A3562204 │ │ │ │ │ -859F08BA3CE2A8ECCD5AAD13C50FB806FE79A388F1822C5608837CBDE526A044 │ │ │ │ │ -12E5CDE4A066932AF2ACA7E8FC6BA4603640944718752975B7DA6E906BE1EA01 │ │ │ │ │ -46736FF5D1AA1CC682D011B6039CF98C35E36D4F14ABC84A38B7203CC9A17756 │ │ │ │ │ -B2B0345276798F1A88A54AD9FEA0853C6DDF28525ED4F0B7380D14147012C2A4 │ │ │ │ │ -5B02888C986C76497EA4C729B0B82EE73C1A1A8E8F1ABF401E341028E9C15AF9 │ │ │ │ │ -354706D8DC07492921AD0932A46736C0D1B066D00287DACCC068FAE6A796EC89 │ │ │ │ │ -54D1D73AA88F3A5912BA9D3FF70065C8D0D0DAD1CD846501E06694374EFDBEC6 │ │ │ │ │ -931F644D5E8494AFC742423AD9A487658E310E0682BE19B8475F4D450487A686 │ │ │ │ │ -2B94494DEAF1C0F59DE82F2CE64BEE5E97F942FCFA1187ED6AA5761E951A7BF7 │ │ │ │ │ -9F842E34A4656C58B35A9E99F7E6762CEE11E0CF59FFD75D7382C5EE6DBB43F1 │ │ │ │ │ -ED219071D3FB22DBA90977723BB467C0490D042684C0724F40DCA3E0D8F1F4E7 │ │ │ │ │ -3C4F9A67BE6528185EAAFDD415224F7E256A4EA00111C17C746CBD80BF569A27 │ │ │ │ │ -D81195D7F79C1CCEEF30ED00D49F48B63E4B8D7953403A3710AE953CC1B76F0F │ │ │ │ │ -F523D777A6A186F262A602543F94AF7471DBE25FEBC207DB42DAF7DC9A5781FB │ │ │ │ │ -2131AD42869D966A734AAE3466DF1CE9D1BCFA72409A558C0AEE6A8E2FEAACB6 │ │ │ │ │ -2CDABCC28433034848ACF9FB4465D272E4AFC48572647F05F41C7A293CC5B595 │ │ │ │ │ -AD31555FB708A72962707348BC7033A8224BD42EB9D75FDF3AE9E6A9C960B330 │ │ │ │ │ -5137DF59F8E2E0D535F41524ABDF070745A4FA25CD8DFD38A5FF30A95452B875 │ │ │ │ │ -6569E8812631300D79A942C563AF174AC05C9F2D09D7D5D3C605F5A6B7F21B34 │ │ │ │ │ -18F270A993B050838E701A17938D1C156CBA7CA4BAC7C562CE9D7B758EAB25A9 │ │ │ │ │ -A6DFFC71F65561341847B776DF34061CE3D439B87B857626987EC93B3B95B8E8 │ │ │ │ │ -76FFB16B263675333FA10414FEED707FF7C366BF8B20FF8577CDEBEBCF1A5BCE │ │ │ │ │ -258C09C90175A5278B7C444A623E3331FDE5A6387B3E389540ED1E7E883958F3 │ │ │ │ │ -3A5C89CCD62256FA069DF4A5090FB17C1F1757C9209DAFB8A1F47182BF3E88D9 │ │ │ │ │ -0B5376B59EE165A761902759C8ED7F5AD301E7EB8B49CC09AF921DB45B7F8002 │ │ │ │ │ -AB32E73AAE53942DE0F9175D8446017006C9C0B93EF39C13B7A879F2F6DDFF16 │ │ │ │ │ -204BB24F976847CF006FD29332FCCB255B5116F7077A44F7066C39C81DC4BAD2 │ │ │ │ │ -40DB2753626C0102E5D047522ABC38EA294A699B8DFD9CA0A7980561A1062E90 │ │ │ │ │ -AB11EE286A9C238D9F721D9980D0A1828C2814972622D948CEE8C812C19A9A03 │ │ │ │ │ -608ED0AC138A436FFBF8BE3D1E66C87793416AF38ED9BC5424568A175FBDAA9E │ │ │ │ │ -D6FC11A7021693819B051562B5A59F32629E2D6019D69DD329BE1894A2B295E1 │ │ │ │ │ -1DCE9683B29AE126C56F26E5C595BF1A8249BDE231DBE8B066F7F62EF149B975 │ │ │ │ │ -A863969A4690504A5EA064721DA909B8157C0B39FBF8228D95CB655E406161E1 │ │ │ │ │ -148610FAEED7C5509880223C06A66DA19E10F94DC2DB481B26 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004FD597ED │ │ │ │ │ +EFDBC64ABD9B79386FB2427D1A63522195B1239C09F8CB3F8BD7A245A6DD82E3 │ │ │ │ │ +260C3889587626DFC5F7978E55F5524ABD6A3319CDD3D3F40D040044D51DA4E1 │ │ │ │ │ +6797EEAC7AA07C77EC6DB0E6E182B545A8BEF63B14F3FC07BAC09E7CD5C17ED6 │ │ │ │ │ +10080704B0DA4E9BA12F968DF8A58458D17E9A5B1F14A83DC51F5B161ADEE1CC │ │ │ │ │ +0183D82ED92C6FC7203C289949EDF0284D9893029FF5408E421324625F17C3E5 │ │ │ │ │ +2437C8F75A9D68EE1AF9174FEA6FC6BF793C7D2E497EA90396CF1A645E283B69 │ │ │ │ │ +8425F47C323587DF91E1D596DCB1E3A787C955D9D965A5E3E26ADF58B62AD5F9 │ │ │ │ │ +0C9AC784DE479780606354111E3202F215650DBBE1063A46F3C10B9EBC974DDA │ │ │ │ │ +A1A28DBBD43E9E5BFF000B12C787D0427928078F8EC5FE90DED97E6C129E8DEA │ │ │ │ │ +51F66504DB83764E52B0BA68DF7BE684C8959CB1D3345CC48221A9A4683306C0 │ │ │ │ │ +62B634E0A539383F0C7A788D9711EFF414869CCC5659D78CEBE009BF2463F56A │ │ │ │ │ +0ADC993348FE96DF7C250E13ED6504AACFE8F8DCA2D2048D9D8CFA127D363EAC │ │ │ │ │ +1F0630E2D1B621E6954038195D965B91FD974FA3F1B8B29D200A16CEBA645E2F │ │ │ │ │ +CEEE6FD49FBBD49E38AE67D4BFFCE91F1FC422554EC4409C5FA18D40FCD6D9B3 │ │ │ │ │ +2185ED1E0F98106D4339F086B05CA36E56EC22C60E2CE23F9C4CC403ACAD3F94 │ │ │ │ │ +4086B4DF6DFA0B7B4716417263E7B558535566AED2F6C2F9846A16D71A7930A7 │ │ │ │ │ +49232D3D16C4A01CF1A1998A06F40062ED329179A85668537C55D0BC24FC0010 │ │ │ │ │ +54DA83E2FC66B2A5D428E6A9BFC983253668C0ECE6CA36DBF97C4B7659D50842 │ │ │ │ │ +C65B36604840EEDA399B57E2DEFAC3E7FB031634CE33D04238F9854D2AAAF448 │ │ │ │ │ +34DA5F3BCCED3166FEEE82BB0BBA0A397CC2F95865CB52AABFF454D93B425809 │ │ │ │ │ +A26AC459F321FD23E2262FE816D06BAAECF32AAF167F84799AF80F9F88388D07 │ │ │ │ │ +0DB5FD57AFEE2850A8DFE977E6AE39CB3DC16DB1A163A583C86C6F775CE33521 │ │ │ │ │ +0081C0BBBAD6D30D26C66B28B38CEAC78FEA5FB3CC5853656B67C6D9D80EB30E │ │ │ │ │ +397558C9179AF5920F34DAB3F578DFCF0DBB137AED17D6325C23883E69EE4621 │ │ │ │ │ +34355A70C19EA68891E1CA937376901C85CDEE109F1665943E29A216DC00937A │ │ │ │ │ +B983A729A4654AD09187C0242D52FA4ADD0853EF4888864914D7D81C56578DD4 │ │ │ │ │ +3B51907032022E6E412D4F114675DEDCA8A9E85DC03A0B583FECD84432D15F70 │ │ │ │ │ +01F627BD6EC91F9FCFDA01BF40E1229B5F164309DBB641AD50970503DA2048C1 │ │ │ │ │ +DF8F36E8D252EE113F0B46677D9BAF376BAE18D74CFB0DBBD0C7E9D0A58BA3ED │ │ │ │ │ +1E5099CAE073EB5638617760AB57849893764EA9735173CD1EAB66884CEA7EE3 │ │ │ │ │ +8843327B2E145BD6FBB49102776B82BC511D109F8BE9E7E99DADABABEDC3CFD9 │ │ │ │ │ +393578FFD85907DFF2849E4CDE6FA4DEC7E1C150EBE4047FFB650F9548BE6D11 │ │ │ │ │ +0C51226A5436F18BF20A02E0F888F46B6AC3A8E8D927ECD3B5E095933AD3859F │ │ │ │ │ +5167C41D832EFCC4093BD2AFA7101AB430E57DAFC3590F05D3CBABB32BC203A0 │ │ │ │ │ +467B23BDB830487C9AA5B85BAC065F8538871B4180F8C4732E637DB090CFDE5A │ │ │ │ │ +3F4F2B5BFAFB848BAAD1A17CB076B34159601639BD93ECAB1214ACABF2C67FE2 │ │ │ │ │ +0658AA20B08681070FF56F1CC52144ABA8765D6E124D1CEA9BBA102808CE1BB2 │ │ │ │ │ +5EDF46BC7BBC2A5B49EE6EC28F5797A3969B057B21FCDBBD0E60848FF14F6CA3 │ │ │ │ │ +70F3060BDBB019B22722C99C7691760F013763B7FBEB62830AE215F195BF9F01 │ │ │ │ │ +21BF4377397E89574CFA47D123AA506A570A77BA6EB4AAB0B237A26154880293 │ │ │ │ │ +3952F832F72ECCB024F02385E5EE8566B165904B594E30D0700D033C6B429F6F │ │ │ │ │ +2A20BC774F442BC9CE29FCC81807C2768A8BC927A215558FBF36DC53F477F04A │ │ │ │ │ +41DA66E1A85B659EB761230977EAD7DA0150513D3323B143D4E2A61BCF03334C │ │ │ │ │ +C0EE3E1B06CFAF58ECC910BD81F0352B75FF1594D6A4EF504232D442174BE766 │ │ │ │ │ +0F8E703F97E21D25D4CD097549C31FEE7017C3916EFB02E7BF869172889827B6 │ │ │ │ │ +A48465EB7612BA3DBC6A9436C7167F149A25CE9F8E3F4F8DE3B5ADF6C0986CB3 │ │ │ │ │ +3A7E2DAB44AB489796461536F5F713017F2620AD03295CAE9285F08974AE0DF8 │ │ │ │ │ +D739260929619B509491AFF09C4CAEF9E65C2CA69470C907ECBF3AB6C955360D │ │ │ │ │ +05ABAC306DB51122A1ADC7EF0DD70FA299A45C505A83727D4598C86319EE9C06 │ │ │ │ │ +7218EFD4F40388354BCF1B79593D5AD221DF955D081F99F880E5CED07321AB3E │ │ │ │ │ +A2FCB8B05D54807D8E15E65B78DCE12989B9276350080C905DBB74CE9AA7E246 │ │ │ │ │ +5D3BAED292C562D4CF54617FCC6654496C7996D1ECE1EFF9258716AB763A12E6 │ │ │ │ │ +316E4C5587351A6DB011F58F6A15BC28BEBDC3836E0CB892807FEC228DC1B380 │ │ │ │ │ +92F7F42279F08D60F13D6A4CB425543C3644461461CBF6F27B6603F613D1FCF8 │ │ │ │ │ +A8410AD82D1498166AEB35D4125D7E2ADEAAB18BC04806AED53513F066E5F154 │ │ │ │ │ +3E13E863C50B9814EE2FB978D0D24A03FAF650CB6E2CADF1E6BE6BAF699AFC03 │ │ │ │ │ +E1A0EEB207B3B9A689ED5B373FE86686AD230BE6C18E1673DDA50E224B343EC5 │ │ │ │ │ +903BA0C8041C13607B50D5852AC7970B15C244E6EBA7D54B3086312CF04761D6 │ │ │ │ │ +7D3D75D51F20C371494AB81AB4A9838B20B483B851D01FEF41EA5C0B4755B964 │ │ │ │ │ +EB6E9B178051C556A010994EB88EAE641F4C1A0D7E0F98D5267E18AEF1AEA7E7 │ │ │ │ │ +9030A97DF89AFF621981C33B645FFB5F3BB2065A7661D11B26E0999561DF3580 │ │ │ │ │ +4A76A05DFAF8085525F8D5C01936F03C32E26E72569371C9EA3B8916F9DFC5FC │ │ │ │ │ +6A6F25A0FFDB981BA8B896393D75774D50828E6ADE903C45406E354703A4BC56 │ │ │ │ │ +2C49A47FEAC970DC433E3050C49F7FB945A9705BD8852D2D65D935F244D3B423 │ │ │ │ │ +EFAB84AAAAB8FBAFF50AFF372A533BCCEB5FC273DBADCF715776DF02A5DCBA9A │ │ │ │ │ +FBF265FAB4745D6475B33611EEE1EA95E7584E0BEEC7CA789AA69C8D03D6F8C0 │ │ │ │ │ +5B6844E2B901ACA560C0433B053D134866E567425174E47173679AAD4486A2D3 │ │ │ │ │ +369C29E4DD2CD6ACA1BE80ED8FF0A9C58A616D26E758BD8E6342624EC83FB590 │ │ │ │ │ +BD354B52B60BB054FAFE9AC63E1564FBC721FE8F276B0413EC89A2C85E5ED1B0 │ │ │ │ │ +3A9D83BE62A4488ADE7CE69971A8AF7E5862A4290EEF6F00D4171C7FFB360065 │ │ │ │ │ +92E72BF02BE27161AE0BB5516572A0BDC4F316FFB24B38484AC8D1FD4CD86062 │ │ │ │ │ +A2B5D03CF28C3A679C039A6EFDD4C9DA7E463AD60234C9F6BBEE48D87DD94D85 │ │ │ │ │ +842F495F3E25723718682CE4D6224CBBF4456F03077EDF736D65B9DDAB09470E │ │ │ │ │ +17742D82011FFA96BFE86B96E858F9352FCD20C3D46B77DBDEE54336EC2249EA │ │ │ │ │ +211F6DFFF5BEA1E5192BE1BAC0BDD5EDDB3D56C6F7C6E543561A0B39E5C1B04F │ │ │ │ │ +C683A7516B6E69D682455386DDA709929D621FA434D403E895AA0A77DBE1DFD2 │ │ │ │ │ +0D060DF82378880147ED97C6E8149686FA048710B113760AC1DA4512FF8556B3 │ │ │ │ │ +16E2447485B8C3CD58D0469C4A45FFB4CB0322BB284C02 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -3897,16 +3902,16 @@ │ │ │ │ │ cleartomark │ │ │ │ │ {restore}if │ │ │ │ │ %%EndFont │ │ │ │ │ TeXDict begin 39158280 55380996 1000 600 600 (main.dvi) │ │ │ │ │ @start /Fa 253[71 2[{}1 90.9091 /CMSY10 rf /Fb 138[49 │ │ │ │ │ 30 37 38 1[46 46 51 2[42 1[28 46 42 1[42 46 42 1[46 12[65 │ │ │ │ │ 1[66 11[59 62 69 2[68 6[28 58[{}22 90.9091 /CMTI10 rf │ │ │ │ │ -/Fc 134[48 3[51 2[36 3[51 12[45 22[47 15[25 3[45 1[45 │ │ │ │ │ -1[45 45 45 3[25 44[{}13 90.9091 /CMSL10 rf /Fd 133[50 │ │ │ │ │ +/Fc 134[48 3[51 2[36 12[40 2[51 45 26[59 11[25 1[45 2[45 │ │ │ │ │ +2[45 45 45 3[25 44[{}14 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 │ │ │ │ │ @@ -4012,34 +4017,34 @@ │ │ │ │ │ (metho)s(ds)f(that)h(b)s(elong)f(to)h(the)0 4808 y Fj(Coords)29 │ │ │ │ │ b Fk(ob)5 b(ject.)0 5092 y Fd(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ │ 5294 y Fk(As)d(usual,)h(there)f(are)g(four)f(basic)h(metho)s(ds)g(to)g │ │ │ │ │ (supp)s(ort)e(ob)5 b(ject)36 b(creation,)i(setting)e(default)f │ │ │ │ │ (\014elds,)h(clearing)0 5407 y(an)m(y)31 b(allo)s(cated)h(data,)f(and)f │ │ │ │ │ (free'ing)h(the)g(ob)5 b(ject.)1927 5656 y(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fk(2)p 136 100 1082 4 v │ │ │ │ │ -1264 w Fj(Coords)29 b Fc(:)41 b Fb(DRAFT)30 b Fc(Jan)m(uary)g(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ -(default)g(v)-5 b(alues:)49 b Fj(type)e(=)h(COORDS)p │ │ │ │ │ -3480 1023 V 32 w(BY)p 3608 1023 V 34 w(TUPLE)p Fk(,)227 │ │ │ │ │ -1136 y Fj(ndim)f(=)g(ncoor)g(=)g(0)30 b Fk(and)g Fj(coors)46 │ │ │ │ │ -b(=)i(NULL)p Fk(.)227 1292 y Fb(Err)-5 b(or)34 b(che)-5 │ │ │ │ │ -b(cking:)40 b Fk(If)30 b Fj(coords)f Fk(is)h Fj(NULL)p │ │ │ │ │ -Fk(,)g(an)g(error)g(message)i(is)e(prin)m(ted)g(and)g(the)g(program)g │ │ │ │ │ -(exits.)111 1492 y(3.)46 b Fj(void)h(Coords_clearData)c(\()48 │ │ │ │ │ -b(Coords)e(*coords)g(\))h(;)227 1648 y Fk(This)29 b(metho)s(d)g(clears) │ │ │ │ │ -i(data)f(and)f(releases)i(an)m(y)f(storage)h(allo)s(cated)h(b)m(y)d │ │ │ │ │ -(the)h(ob)5 b(ject.)41 b(If)30 b Fj(coords->coors)227 │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fk(2)p 136 100 1063 4 v │ │ │ │ │ +1245 w Fj(Coords)29 b Fc(:)41 b Fb(DRAFT)30 b Fc(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2837 100 V 111 399 a Fk(1.)46 │ │ │ │ │ +b Fj(Coords)g(*)i(Coords_new)d(\()i(void)g(\))g(;)227 │ │ │ │ │ +555 y Fk(This)25 b(metho)s(d)g(simply)f(allo)s(cates)k(storage)f(for)e │ │ │ │ │ +(the)h Fj(Coords)d Fk(structure)i(and)g(then)g(sets)g(the)h(default)f │ │ │ │ │ +(\014elds)227 668 y(b)m(y)31 b(a)f(call)i(to)f Fj(Coords)p │ │ │ │ │ +1001 668 29 4 v 33 w(setDefaultFields\(\))p Fk(.)111 │ │ │ │ │ +867 y(2.)46 b Fj(void)h(Coords_setDefaultFields)41 b(\()48 │ │ │ │ │ +b(Coords)e(*coords)g(\))h(;)227 1023 y Fk(This)34 b(metho)s(d)g(sets)h │ │ │ │ │ +(the)g(structure's)f(\014elds)g(are)h(set)h(to)f(default)g(v)-5 │ │ │ │ │ +b(alues:)49 b Fj(type)e(=)h(COORDS)p 3480 1023 V 32 w(BY)p │ │ │ │ │ +3608 1023 V 34 w(TUPLE)p Fk(,)227 1136 y Fj(ndim)f(=)g(ncoor)g(=)g(0)30 │ │ │ │ │ +b Fk(and)g Fj(coors)46 b(=)i(NULL)p Fk(.)227 1292 y Fb(Err)-5 │ │ │ │ │ +b(or)34 b(che)-5 b(cking:)40 b Fk(If)30 b Fj(coords)f │ │ │ │ │ +Fk(is)h Fj(NULL)p Fk(,)g(an)g(error)g(message)i(is)e(prin)m(ted)g(and)g │ │ │ │ │ +(the)g(program)g(exits.)111 1492 y(3.)46 b Fj(void)h(Coords_clearData)c │ │ │ │ │ +(\()48 b(Coords)e(*coords)g(\))h(;)227 1648 y Fk(This)29 │ │ │ │ │ +b(metho)s(d)g(clears)i(data)f(and)f(releases)i(an)m(y)f(storage)h(allo) │ │ │ │ │ +s(cated)h(b)m(y)d(the)h(ob)5 b(ject.)41 b(If)30 b Fj(coords->coors)227 │ │ │ │ │ 1761 y Fk(is)e(not)f Fj(NULL)p Fk(,)f(then)h Fj │ │ │ │ │ (FVfree\(coords->coors\))22 b Fk(is)27 b(called)i(to)f(free)f(the)h │ │ │ │ │ Fj(float)d Fk(v)m(ector.)42 b(It)27 b(then)g(sets)h(the)227 │ │ │ │ │ 1874 y(structure's)i(default)h(\014elds)f(with)g(a)g(call)i(to)f │ │ │ │ │ Fj(Coords)p 2071 1874 V 33 w(setDefaultFields\(\))p Fk(.)227 │ │ │ │ │ 2030 y Fb(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fk(If)30 │ │ │ │ │ b Fj(coords)f Fk(is)h Fj(NULL)p Fk(,)g(an)g(error)g(message)i(is)e │ │ │ │ │ @@ -4091,17 +4096,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 1082 4 v 1264 100 a Fj(Coords)28 │ │ │ │ │ -b Fc(:)41 b Fb(DRAFT)121 b Fc(Jan)m(uary)30 b(16,)i(2024)p │ │ │ │ │ -2771 100 V 1082 w Fk(3)227 399 y(This)f(metho)s(d)g(initializes)i(a)f │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1063 4 v 1245 100 a Fj(Coords)28 │ │ │ │ │ +b Fc(:)41 b Fb(DRAFT)121 b Fc(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2790 100 V 1063 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 │ │ │ │ │ @@ -4182,32 +4187,32 @@ │ │ │ │ │ Fk(2,)34 b Fj(Coords)p 3110 5294 V 32 w(setValue\(coords,)227 │ │ │ │ │ 5407 y(2,)47 b(16,)g(3.3\))30 b Fk(sets)g Fi(y)1005 5421 │ │ │ │ │ y Ff(16)1105 5407 y Fk(=)25 b(3)p Fi(:)p Fk(3,)32 b(and)d │ │ │ │ │ Fj(Coords)p 1843 5407 V 33 w(setValue\(coords,)43 b(3,)48 │ │ │ │ │ b(118,)e(0\))30 b Fk(sets)h Fi(z)3409 5421 y Ff(118)3544 │ │ │ │ │ 5407 y Fk(=)25 b(0.)p eop end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fk(4)p 136 100 1082 4 v │ │ │ │ │ -1264 w Fj(Coords)29 b Fc(:)41 b Fb(DRAFT)30 b Fc(Jan)m(uary)g(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ -b(\014le)g(structure)g(of)g(a)h Fj(Coords)d Fk(ob)5 b(ject)30 │ │ │ │ │ -b(is)f(simple:)40 b Fj(type)p Fk(,)29 b Fj(ndim)p Fk(,)0 │ │ │ │ │ -1102 y Fj(ncoor)g Fk(follo)m(w)m(ed)j(b)m(y)e(the)h Fj(coors[])d │ │ │ │ │ -Fk(v)m(ector.)111 1348 y(1.)46 b Fj(int)h(Coords_readFromFile)c(\()k │ │ │ │ │ -(Coords)f(*coords,)g(char)g(*filename)g(\))h(;)227 1502 │ │ │ │ │ -y Fk(This)25 b(metho)s(d)h(read)g(a)g Fj(Coords)e Fk(ob)5 │ │ │ │ │ -b(ject)27 b(from)f(a)g(\014le.)39 b(It)26 b(tries)h(to)f(op)s(en)g(the) │ │ │ │ │ -g(\014le)g(and)f(if)h(it)h(is)f(successful,)g(it)227 │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fk(4)p 136 100 1063 4 v │ │ │ │ │ +1245 w Fj(Coords)29 b Fc(:)41 b Fb(DRAFT)30 b Fc(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2837 100 V 227 399 a Fb(Err)-5 │ │ │ │ │ +b(or)34 b(che)-5 b(cking:)40 b Fk(If)29 b Fj(coords)g │ │ │ │ │ +Fk(is)h Fj(NULL)p Fk(,)f(or)h(if)g Fj(idim)f Fk(do)s(es)g(not)h(lie)h │ │ │ │ │ +(in)f(the)g(range)g Fj([1,ndim])p Fk(,)e(or)i(if)g Fj(icoor)227 │ │ │ │ │ +511 y Fk(do)s(es)g(not)h(lie)g(in)f(the)h(range)g Fj([0,ncoor\))p │ │ │ │ │ +Fk(,)d(an)i(error)g(message)h(is)g(prin)m(ted)f(and)f(the)i(program)f │ │ │ │ │ +(exits.)0 790 y Fd(1.2.4)112 b(IO)38 b(metho)s(ds)0 989 │ │ │ │ │ +y Fk(There)29 b(are)g(the)g(usual)g(eigh)m(t)i(IO)d(routines.)40 │ │ │ │ │ +b(The)29 b(\014le)g(structure)g(of)g(a)h Fj(Coords)d │ │ │ │ │ +Fk(ob)5 b(ject)30 b(is)f(simple:)40 b Fj(type)p Fk(,)29 │ │ │ │ │ +b Fj(ndim)p Fk(,)0 1102 y Fj(ncoor)g Fk(follo)m(w)m(ed)j(b)m(y)e(the)h │ │ │ │ │ +Fj(coors[])d Fk(v)m(ector.)111 1348 y(1.)46 b Fj(int)h │ │ │ │ │ +(Coords_readFromFile)c(\()k(Coords)f(*coords,)g(char)g(*filename)g(\))h │ │ │ │ │ +(;)227 1502 y Fk(This)25 b(metho)s(d)h(read)g(a)g Fj(Coords)e │ │ │ │ │ +Fk(ob)5 b(ject)27 b(from)f(a)g(\014le.)39 b(It)26 b(tries)h(to)f(op)s │ │ │ │ │ +(en)g(the)g(\014le)g(and)f(if)h(it)h(is)f(successful,)g(it)227 │ │ │ │ │ 1615 y(then)j(calls)h Fj(Coords)p 928 1615 29 4 v 33 │ │ │ │ │ w(readFromFormattedFile\(\))23 b Fk(or)29 b Fj(Coords)p │ │ │ │ │ 2486 1615 V 32 w(readFromBinaryFile\(\))p Fk(,)c(closes)30 │ │ │ │ │ b(the)227 1728 y(\014le)h(and)f(returns)f(the)h(v)-5 │ │ │ │ │ b(alue)31 b(returned)e(from)h(the)h(called)g(routine.)227 │ │ │ │ │ 1882 y Fb(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fk(If)29 │ │ │ │ │ b Fj(coords)f Fk(or)i Fj(filename)d Fk(is)j Fj(NULL)p │ │ │ │ │ @@ -4269,17 +4274,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 1082 4 v 1264 100 a Fj(Coords)28 │ │ │ │ │ -b Fc(:)41 b Fb(DRAFT)121 b Fc(Jan)m(uary)30 b(16,)i(2024)p │ │ │ │ │ -2771 100 V 1082 w Fk(5)111 399 y(7.)46 b Fj(int)h │ │ │ │ │ +TeXDict begin 5 4 bop 91 100 1063 4 v 1245 100 a Fj(Coords)28 │ │ │ │ │ +b Fc(:)41 b Fb(DRAFT)121 b Fc(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2790 100 V 1063 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 │ │ │ │ │ @@ -4343,26 +4348,26 @@ │ │ │ │ │ 5181 y Fg(\210)45 b Fk(The)33 b Fj(msgFile)e Fk(parameter)j(determines) │ │ │ │ │ f(the)h(message)g(\014le)f(|)h(if)f Fj(msgFile)e Fk(is)i │ │ │ │ │ Fj(stdout)p Fk(,)g(then)g(the)427 5294 y(message)24 b(\014le)e(is)h │ │ │ │ │ Fb(stdout)p Fk(,)i(otherwise)e(a)f(\014le)h(is)f(op)s(ened)g(with)g │ │ │ │ │ Fb(app)-5 b(end)24 b Fk(status)f(to)g(receiv)m(e)h(an)m(y)f(message)427 │ │ │ │ │ 5407 y(data.)p eop end │ │ │ │ │ %%Page: 6 6 │ │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fk(6)p 136 100 1082 4 v │ │ │ │ │ -1264 w Fj(Coords)29 b Fc(:)41 b Fb(DRAFT)30 b Fc(Jan)m(uary)g(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ -Fj(outCoordsFile)c Fk(is)k(of)g(the)f(form)427 737 y │ │ │ │ │ -Fj(*.coordsf)p Fk(\),)i(or)h(a)h(binary)e(\014le)i(\(if)g │ │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fk(6)p 136 100 1063 4 v │ │ │ │ │ +1245 w Fj(Coords)29 b Fc(:)41 b Fb(DRAFT)30 b Fc(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2837 100 V 337 399 a Fg(\210)45 │ │ │ │ │ +b Fk(The)20 b Fj(outCoordsFile)d Fk(parameter)j(is)h(the)f(output)g │ │ │ │ │ +(\014le)g(for)h(the)f Fj(Coords)f Fk(ob)5 b(ject.)38 │ │ │ │ │ +b(If)20 b Fj(outCoordsFile)427 511 y Fk(is)h Fj(none)e │ │ │ │ │ +Fk(then)h(the)g Fj(Coords)f Fk(ob)5 b(ject)21 b(is)f(not)h(written)f │ │ │ │ │ +(to)h(a)g(\014le.)37 b(Otherwise,)22 b(the)f Fj(Coords)p │ │ │ │ │ +3409 511 29 4 v 33 w(writeToFile\(\))427 624 y Fk(metho)s(d)27 │ │ │ │ │ +b(is)h(called)h(to)f(write)g(the)g(ob)5 b(ject)29 b(to)f(a)g(formatted) │ │ │ │ │ +g(\014le)g(\(if)g Fj(outCoordsFile)c Fk(is)k(of)g(the)f(form)427 │ │ │ │ │ +737 y Fj(*.coordsf)p Fk(\),)i(or)h(a)h(binary)e(\014le)i(\(if)g │ │ │ │ │ Fj(outCoordsFile)26 b Fk(is)31 b(of)f(the)h(form)f Fj(*.coordsb)p │ │ │ │ │ Fk(\).)p eop end │ │ │ │ │ %%Page: 7 7 │ │ │ │ │ TeXDict begin 7 6 bop 0 866 a Fl(Index)0 1289 y Fj(Coords)p │ │ │ │ │ 294 1289 29 4 v 33 w(clearData\(\))p Fk(,)27 b(2)0 1402 │ │ │ │ │ y Fj(Coords)p 294 1402 V 33 w(free\(\))p Fk(,)i(2)0 1515 │ │ │ │ │ y Fj(Coords)p 294 1515 V 33 w(init\(\))p Fk(,)g(2)0 1628 │ │ │ │ │ ├── ps2ascii {} │ │ │ │ │ │ @@ -18,15 +18,15 @@ │ │ │ │ │ │ 1.2 Prototypes and descriptions of Coords methods │ │ │ │ │ │ This section contains brief descriptions including prototypes of all methods that belong to the │ │ │ │ │ │ Coords object. │ │ │ │ │ │ 1.2.1 Basic methods │ │ │ │ │ │ As usual, there are four basic methods to support object creation, setting default fields, clearing │ │ │ │ │ │ any allocated data, and free’ing the object. │ │ │ │ │ │ 1 │ │ │ │ │ │ - 2 Coords : DRAFT January 16, 2024 │ │ │ │ │ │ + 2 Coords : DRAFT February 18, 2025 │ │ │ │ │ │ 1. Coords * Coords_new ( void ) ; │ │ │ │ │ │ This method simply allocates storage for the Coords structure and then sets the default fields │ │ │ │ │ │ by a call to Coords setDefaultFields(). │ │ │ │ │ │ 2. void Coords_setDefaultFields ( Coords *coords ) ; │ │ │ │ │ │ This method sets the structure’s fields are set to default values: type = COORDS BY TUPLE, │ │ │ │ │ │ ndim = ncoor = 0 and coors = NULL. │ │ │ │ │ │ Error checking: If coords is NULL, an error message is printed and the program exits. │ │ │ │ │ │ @@ -54,15 +54,15 @@ │ │ │ │ │ │ point, bbox[2] = x-coordinate of the northeast point, and bbox[3] = y-coordinate of the │ │ │ │ │ │ northeast point. │ │ │ │ │ │ Error checking: If coordsbboxisNULL,oriftypeisnotCOORDS BY TUPLEorCOORDS BY COORD, │ │ │ │ │ │ or if any of n1, n2 or ncomp are nonpositive, an error message is printed and the program │ │ │ │ │ │ exits. │ │ │ │ │ │ 3. void Coords_init27P ( Coords *coords, float bbox[], int type, │ │ │ │ │ │ int n1, int n2, int n3, int ncomp ) ; │ │ │ │ │ │ - Coords : DRAFT January 16, 2024 3 │ │ │ │ │ │ + Coords : DRAFT February 18, 2025 3 │ │ │ │ │ │ This method initializes a Coords object for a 27-point operator on a n1 ×n2 ×n3 grid with │ │ │ │ │ │ ncomp degrees of freedom at a grid point. The grid’s location is given by the bounding │ │ │ │ │ │ box vector, bbox[0] = x-coordinate of the southwest point, bbox[1] = y-coordinate of the │ │ │ │ │ │ southwest point, bbox[2] = z-coordinate of the southwest point, bbox[3] = x-coordinate │ │ │ │ │ │ of the northeast point, bbox[4] = y-coordinate of the northeast point, and bbox[5] = z- │ │ │ │ │ │ coordinate of the northeast point. │ │ │ │ │ │ Error checking: If coordsbboxisNULL,oriftypeisnotCOORDS BY TUPLEorCOORDS BY COORD, │ │ │ │ │ │ @@ -94,15 +94,15 @@ │ │ │ │ │ │ does not lie in the range [0,ncoor), an error message is printed and the program exits. │ │ │ │ │ │ 5. void Coords_setValue ( Coords *coords, int idim, int icoor, float val ) ; │ │ │ │ │ │ Thismethodsetsthefloatvalueoftheidim-thcoordinateoftheicoor-thgridpoint. Forex- │ │ │ │ │ │ ample, Coords setValue(coords, 1, 27, 1.2) sets x =1.2, Coords setValue(coords, │ │ │ │ │ │ 27 │ │ │ │ │ │ 2, 16, 3.3) sets y =3.3, and Coords setValue(coords, 3, 118, 0) sets z =0. │ │ │ │ │ │ 16 118 │ │ │ │ │ │ - 4 Coords : DRAFT January 16, 2024 │ │ │ │ │ │ + 4 Coords : DRAFT February 18, 2025 │ │ │ │ │ │ Error checking: If coords is NULL, or if idim does not lie in the range [1,ndim], or if icoor │ │ │ │ │ │ does not lie in the range [0,ncoor), an error message is printed and the program exits. │ │ │ │ │ │ 1.2.4 IO methods │ │ │ │ │ │ There are the usual eight IO routines. The file structure of a Coords object is simple: type, ndim, │ │ │ │ │ │ ncoor followed by the coors[] vector. │ │ │ │ │ │ 1. int Coords_readFromFile ( Coords *coords, char *filename ) ; │ │ │ │ │ │ This method read a Coords object from a file. It tries to open the file and if it is successful, it │ │ │ │ │ │ @@ -129,15 +129,15 @@ │ │ │ │ │ │ This method writes a Coords object to a formatted file. If there are no errors in writing the │ │ │ │ │ │ data, the value 1 is returned. If an IO error is encountered from fprintf, zero is returned. │ │ │ │ │ │ Error checking: If coords or fp are NULL an error message is printed and zero is returned. │ │ │ │ │ │ 6. int Coords_writeToBinaryFile ( Coords *coords, FILE *fp ) ; │ │ │ │ │ │ This method writes a Coords object to a binary file. If there are no errors in writing the │ │ │ │ │ │ data, the value 1 is returned. If an IO error is encountered from fwrite, zero is returned. │ │ │ │ │ │ Error checking: If coords or fp are NULL an error message is printed and zero is returned. │ │ │ │ │ │ - Coords : DRAFT January 16, 2024 5 │ │ │ │ │ │ + Coords : DRAFT February 18, 2025 5 │ │ │ │ │ │ 7. int Coords_writeForHumanEye ( Coords *coords, FILE *fp ) ; │ │ │ │ │ │ This method write the Coords object to a file in an easy to read fashion. The method │ │ │ │ │ │ Coords writeStats() is called to write out the header and statistics. The coors[] vector is │ │ │ │ │ │ then printed out. The value 1 is returned. │ │ │ │ │ │ Error checking: If coords or fp are NULL an error message is printed and zero is returned. │ │ │ │ │ │ 8. int Coords_writeStats ( Coords *coords, FILE *fp ) ; │ │ │ │ │ │ The header and statistics are written. The value 1 is returned. │ │ │ │ │ │ @@ -164,15 +164,15 @@ │ │ │ │ │ │ This driver program creates a Coords object for 9-point finite difference operator on a n1×n2 │ │ │ │ │ │ grid and optionally writes it to a file. │ │ │ │ │ │ • The msglvl parameter determines the amount of output — taking msglvl >= 3 means │ │ │ │ │ │ that all objects are written to the message file. │ │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ │ message file is stdout, otherwise a file is opened with append status to receive any message │ │ │ │ │ │ data. │ │ │ │ │ │ - 6 Coords : DRAFT January 16, 2024 │ │ │ │ │ │ + 6 Coords : DRAFT February 18, 2025 │ │ │ │ │ │ • TheoutCoordsFileparameteristheoutputfilefortheCoordsobject. IfoutCoordsFile │ │ │ │ │ │ is nonethentheCoordsobjectisnotwrittentoafile. Otherwise,theCoords writeToFile() │ │ │ │ │ │ method is called to write the object to a formatted file (if outCoordsFile is of the form │ │ │ │ │ │ *.coordsf), or a binary file (if outCoordsFile is of the form *.coordsb). │ │ │ │ │ │ Index │ │ │ │ │ │ Coords clearData(), 2 │ │ │ │ │ │ Coords free(), 2 │ │ │ ├── ./usr/share/doc/spooles-doc/DSTree.ps.gz │ │ │ │ ├── DSTree.ps │ │ │ │ │ @@ -10,15 +10,15 @@ │ │ │ │ │ %%EndComments │ │ │ │ │ %%BeginDefaults │ │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ │ %%EndDefaults │ │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ │ %DVIPSCommandLine: dvips main -o DSTree.ps │ │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ │ -%DVIPSSource: TeX output 2024.01.16:2047 │ │ │ │ │ +%DVIPSSource: TeX output 2025.02.18:0318 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -1408,20 +1408,21 @@ │ │ │ │ │ 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 52 /four put │ │ │ │ │ -dup 54 /six put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ +dup 56 /eight put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 74 /J put │ │ │ │ │ +dup 70 /F put │ │ │ │ │ dup 97 /a put │ │ │ │ │ -dup 110 /n put │ │ │ │ │ +dup 98 /b put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ dup 114 /r put │ │ │ │ │ dup 117 /u put │ │ │ │ │ dup 121 /y put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ @@ -1605,89 +1606,93 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ │ -C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ │ -6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ │ -11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ │ -1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ │ -A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ │ -F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ │ -EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ │ -033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ │ -A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ │ -468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8A71FF9C085003EBB4F4 │ │ │ │ │ -3D271F5B16B1AAD3EBDC391F534AA46E545E9D8659DD19B309C3B7625A8396FA │ │ │ │ │ -2519464539D46E43ACB72952313C8497315E0319C08628023E8FC54D7D3BAC29 │ │ │ │ │ -D5AD8EFDABF0C33C7AFB7151A6606C62A87F0F5F783569AC4C881A992E3FE420 │ │ │ │ │ -297F7BC5147F3B2FA98450D2F8B07F7D229BC8BE06729920CFEC22556740E1CB │ │ │ │ │ -3DE09AC763C6D4A20AD1599C368FABD07BC35C16683F2A0311A88983415A9140 │ │ │ │ │ -2EFC4BC1B10DCAD4B2B8A28510E5BD39D6616D2B9B079ED3CF9C315B7DEC29D9 │ │ │ │ │ -251DFD0194B34EC175964C23383F23FFB2E41B698C405815D65EAFF9E9DD1DDE │ │ │ │ │ -30F77924656C288B8DDB2E5B0E7B1FAA66791DE3848EE6DE63AD0E945E49C6C7 │ │ │ │ │ -9FCA16E01F027F9EF7ACB55F02F5B0136480802F789F6FE14B430879979BA04D │ │ │ │ │ -F481AD4CF47E6847936F377FB04869F9A80E597301BFCAB718D8764094673876 │ │ │ │ │ -BCEF8FA3701608C84B3A0399A11D2E6AD922CCB7D72AF9EBFB30F4648A37A123 │ │ │ │ │ -CB8FB14BDC351692CF0CCAA5CA9383C2B23BAAA38700327EB743FBBE9EE04041 │ │ │ │ │ -13F5CEF4B3881BBC051C33369A82B3505B1CFD7D91AEF2E43EA728EE48E2D854 │ │ │ │ │ -5A7E516998ACDD4FD835FA901C5A21810A56D51FE919B2E58408EEB4DAEB487F │ │ │ │ │ -BA7F1D292CED902DF3533566D96DAD918319EA650D4FC7D9E0170CDE620F755B │ │ │ │ │ -0E7AE02D9B118481B26F5FF7060FBCFA2A682B6826F00679BCDA68794C05286D │ │ │ │ │ -B616DD08372ACDE0AE6E7EF116F0D36F16241ED4F0E8CCD80377792E3BB1343C │ │ │ │ │ -EEB22CC77738F7CBCBA32CF6C3979F6DF7ED81A89AE8928FD7CC550F2730BA88 │ │ │ │ │ -1B51CEDC63F4C47F261AFCAB7AC3CED20B15C97E714A460A1A3B16436B4A5149 │ │ │ │ │ -8F91DA4BE0B9B648534CE5F442117036B602DC91E2852BEA62F55803B833FDF7 │ │ │ │ │ -9F901AB87489E703DDEED1091A79DC73B4440BBBF2C7592B441187C4A3562204 │ │ │ │ │ -859F08BA3CE2A8ECCD5AAD13C50FB806FE79A388F1822C5608837CBDE526A044 │ │ │ │ │ -12E5CDE4A066932AF2ACA7E8FC6BA4603640944718752975B7DA6E906BE1EA01 │ │ │ │ │ -46736FF5D1AA1CC682D011B6039CF98C35E36D4F14ABC84A38B7203CC9A17756 │ │ │ │ │ -B2B0345276798F1A88A54AD9FEA0853C6DDF28525ED4F0B7380D14147012C2A4 │ │ │ │ │ -5B02888C986C76497EA4C729B0B82EE73C1A1A8E8F1ABF401E341028E9C15AF9 │ │ │ │ │ -354706D8DC07492921AD0932A46736C0D1B066D00287DACCC068FAE6A796EC89 │ │ │ │ │ -54D1D73AA88F3A5912BA9D3FF70065C8D0D0DAD1CD846501E06694374EFDBEC6 │ │ │ │ │ -931F644D5E8494AFC742423AD9A487658E310E0682BE19B8475F4D450487A686 │ │ │ │ │ -2B94494DEAF1C0F59DE82F2CE64BEE5E97F942FCFA1187ED6AA5761E951A7BF7 │ │ │ │ │ -9F842E34A4656C58B35A9E99F7E6762CEE11E0CF59FFD75D7382C5EE6DBB43F1 │ │ │ │ │ -ED219071D3FB22DBA90977723BB467C0490D042684C0724F40DCA3E0D8F1F4E7 │ │ │ │ │ -3C4F9A67BE6528185EAAFDD415224F7E256A4EA00111C17C746CBD80BF569A27 │ │ │ │ │ -D81195D7F79C1CCEEF30ED00D49F48B63E4B8D7953403A3710AE953CC1B76F0F │ │ │ │ │ -F523D777A6A186F262A602543F94AF7471DBE25FEBC207DB42DAF7DC9A5781FB │ │ │ │ │ -2131AD42869D966A734AAE3466DF1CE9D1BCFA72409A558C0AEE6A8E2FEAACB6 │ │ │ │ │ -2CDABCC28433034848ACF9FB4465D272E4AFC48572647F05F41C7A293CC5B595 │ │ │ │ │ -AD31555FB708A72962707348BC7033A8224BD42EB9D75FDF3AE9E6A9C960B330 │ │ │ │ │ -5137DF59F8E2E0D535F41524ABDF070745A4FA25CD8DFD38A5FF30A95452B875 │ │ │ │ │ -6569E8812631300D79A942C563AF174AC05C9F2D09D7D5D3C605F5A6B7F21B34 │ │ │ │ │ -18F270A993B050838E701A17938D1C156CBA7CA4BAC7C562CE9D7B758EAB25A9 │ │ │ │ │ -A6DFFC71F65561341847B776DF34061CE3D439B87B857626987EC93B3B95B8E8 │ │ │ │ │ -76FFB16B263675333FA10414FEED707FF7C366BF8B20FF8577CDEBEBCF1A5BCE │ │ │ │ │ -258C09C90175A5278B7C444A623E3331FDE5A6387B3E389540ED1E7E883958F3 │ │ │ │ │ -3A5C89CCD62256FA069DF4A5090FB17C1F1757C9209DAFB8A1F47182BF3E88D9 │ │ │ │ │ -0B5376B59EE165A761902759C8ED7F5AD301E7EB8B49CC09AF921DB45B7F8002 │ │ │ │ │ -AB32E73AAE53942DE0F9175D8446017006C9C0B93EF39C13B7A879F2F6DDFF16 │ │ │ │ │ -204BB24F976847CF006FD29332FCCB255B5116F7077A44F7066C39C81DC4BAD2 │ │ │ │ │ -40DB2753626C0102E5D047522ABC38EA294A699B8DFD9CA0A7980561A1062E90 │ │ │ │ │ -AB11EE286A9C238D9F721D9980D0A1828C2814972622D948CEE8C812C19A9A03 │ │ │ │ │ -608ED0AC138A436FFBF8BE3D1E66C87793416AF38ED9BC5424568A175FBDAA9E │ │ │ │ │ -D6FC11A7021693819B051562B5A59F32629E2D6019D69DD329BE1894A2B295E1 │ │ │ │ │ -1DCE9683B29AE126C56F26E5C595BF1A8249BDE231DBE8B066F7F62EF149B975 │ │ │ │ │ -A863969A4690504A5EA064721DA909B8157C0B39FBF8228D95CB655E406161E1 │ │ │ │ │ -148610FAEED7C5509880223C06A66DA19E10F94DC2DB481B26 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004FD597ED │ │ │ │ │ +EFDBC64ABD9B79386FB2427D1A63522195B1239C09F8CB3F8BD7A245A6DD82E3 │ │ │ │ │ +260C3889587626DFC5F7978E55F5524ABD6A3319CDD3D3F40D040044D51DA4E1 │ │ │ │ │ +6797EEAC7AA07C77EC6DB0E6E182B545A8BEF63B14F3FC07BAC09E7CD5C17ED6 │ │ │ │ │ +10080704B0DA4E9BA12F968DF8A58458D17E9A5B1F14A83DC51F5B161ADEE1CC │ │ │ │ │ +0183D82ED92C6FC7203C289949EDF0284D9893029FF5408E421324625F17C3E5 │ │ │ │ │ +2437C8F75A9D68EE1AF9174FEA6FC6BF793C7D2E497EA90396CF1A645E283B69 │ │ │ │ │ +8425F47C323587DF91E1D596DCB1E3A787C955D9D965A5E3E26ADF58B62AD5F9 │ │ │ │ │ +0C9AC784DE479780606354111E3202F215650DBBE1063A46F3C10B9EBC974DDA │ │ │ │ │ +A1A28DBBD43E9E5BFF000B12C787D0427928078F8EC5FE90DED97E6C129E8DEA │ │ │ │ │ +51F66504DB83764E52B0BA68DF7BE684C8959CB1D3345CC48221A9A4683306C0 │ │ │ │ │ +62B634E0A539383F0C7A788D9711EFF414869CCC5659D78CEBE009BF2463F56A │ │ │ │ │ +0ADC993348FE96DF7C250E13ED6504AACFE8F8DCA2D2048D9D8CFA127D363EAC │ │ │ │ │ +1F0630E2D1B621E6954038195D965B91FD974FA3F1B8B29D200A16CEBA645E2F │ │ │ │ │ +CEEE6FD49FBBD49E38AE67D4BFFCE91F1FC422554EC4409C5FA18D40FCD6D9B3 │ │ │ │ │ +2185ED1E0F98106D4339F086B05CA36E56EC22C60E2CE23F9C4CC403ACAD3F94 │ │ │ │ │ +4086B4DF6DFA0B7B4716417263E7B558535566AED2F6C2F9846A16D71A7930A7 │ │ │ │ │ +49232D3D16C4A01CF1A1998A06F40062ED329179A85668537C55D0BC24FC0010 │ │ │ │ │ +54DA83E2FC66B2A5D428E6A9BFC983253668C0ECE6CA36DBF97C4B7659D50842 │ │ │ │ │ +C65B36604840EEDA399B57E2DEFAC3E7FB031634CE33D04238F9854D2AAAF448 │ │ │ │ │ +34DA5F3BCCED3166FEEE82BB0BBA0A397CC2F95865CB52AABFF454D93B425809 │ │ │ │ │ +A26AC459F321FD23E2262FE816D06BAAECF32AAF167F84799AF80F9F88388D07 │ │ │ │ │ +0DB5FD57AFEE2850A8DFE977E6AE39CB3DC16DB1A163A583C86C6F775CE33521 │ │ │ │ │ +0081C0BBBAD6D30D26C66B28B38CEAC78FEA5FB3CC5853656B67C6D9D80EB30E │ │ │ │ │ +397558C9179AF5920F34DAB3F578DFCF0DBB137AED17D6325C23883E69EE4621 │ │ │ │ │ +34355A70C19EA68891E1CA937376901C85CDEE109F1665943E29A216DC00937A │ │ │ │ │ +B983A729A4654AD09187C0242D52FA4ADD0853EF4888864914D7D81C56578DD4 │ │ │ │ │ +3B51907032022E6E412D4F114675DEDCA8A9E85DC03A0B583FECD84432D15F70 │ │ │ │ │ +01F627BD6EC91F9FCFDA01BF40E1229B5F164309DBB641AD50970503DA2048C1 │ │ │ │ │ +DF8F36E8D252EE113F0B46677D9BAF376BAE18D74CFB0DBBD0C7E9D0A58BA3ED │ │ │ │ │ +1E5099CAE073EB5638617760AB57849893764EA9735173CD1EAB66884CEA7EE3 │ │ │ │ │ +8843327B2E145BD6FBB49102776B82BC511D109F8BE9E7E99DADABABEDC3CFD9 │ │ │ │ │ +393578FFD85907DFF2849E4CDE6FA4DEC7E1C150EBE4047FFB650F9548BE6D11 │ │ │ │ │ +0C51226A5436F18BF20A02E0F888F46B6AC3A8E8D927ECD3B5E095933AD3859F │ │ │ │ │ +5167C41D832EFCC4093BD2AFA7101AB430E57DAFC3590F05D3CBABB32BC203A0 │ │ │ │ │ +467B23BDB830487C9AA5B85BAC065F8538871B4180F8C4732E637DB090CFDE5A │ │ │ │ │ +3F4F2B5BFAFB848BAAD1A17CB076B34159601639BD93ECAB1214ACABF2C67FE2 │ │ │ │ │ +0658AA20B08681070FF56F1CC52144ABA8765D6E124D1CEA9BBA102808CE1BB2 │ │ │ │ │ +5EDF46BC7BBC2A5B49EE6EC28F5797A3969B057B21FCDBBD0E60848FF14F6CA3 │ │ │ │ │ +70F3060BDBB019B22722C99C7691760F013763B7FBEB62830AE215F195BF9F01 │ │ │ │ │ +21BF4377397E89574CFA47D123AA506A570A77BA6EB4AAB0B237A26154880293 │ │ │ │ │ +3952F832F72ECCB024F02385E5EE8566B165904B594E30D0700D033C6B429F6F │ │ │ │ │ +2A20BC774F442BC9CE29FCC81807C2768A8BC927A215558FBF36DC53F477F04A │ │ │ │ │ +41DA66E1A85B659EB761230977EAD7DA0150513D3323B143D4E2A61BCF03334C │ │ │ │ │ +C0EE3E1B06CFAF58ECC910BD81F0352B75FF1594D6A4EF504232D442174BE766 │ │ │ │ │ +0F8E703F97E21D25D4CD097549C31FEE7017C3916EFB02E7BF869172889827B6 │ │ │ │ │ +A48465EB7612BA3DBC6A9436C7167F149A25CE9F8E3F4F8DE3B5ADF6C0986CB3 │ │ │ │ │ +3A7E2DAB44AB489796461536F5F713017F2620AD03295CAE9285F08974AE0DF8 │ │ │ │ │ +D739260929619B509491AFF09C4CAEF9E65C2CA69470C907ECBF3AB6C955360D │ │ │ │ │ +05ABAC306DB51122A1ADC7EF0DD70FA299A45C505A83727D4598C86319EE9C06 │ │ │ │ │ +7218EFD4F40388354BCF1B79593D5AD221DF955D081F99F880E5CED07321AB3E │ │ │ │ │ +A2FCB8B05D54807D8E15E65B78DCE12989B9276350080C905DBB74CE9AA7E246 │ │ │ │ │ +5D3BAED292C562D4CF54617FCC6654496C7996D1ECE1EFF9258716AB763A12E6 │ │ │ │ │ +316E4C5587351A6DB011F58F6A15BC28BEBDC3836E0CB892807FEC228DC1B380 │ │ │ │ │ +92F7F42279F08D60F13D6A4CB425543C3644461461CBF6F27B6603F613D1FCF8 │ │ │ │ │ +A8410AD82D1498166AEB35D4125D7E2ADEAAB18BC04806AED53513F066E5F154 │ │ │ │ │ +3E13E863C50B9814EE2FB978D0D24A03FAF650CB6E2CADF1E6BE6BAF699AFC03 │ │ │ │ │ +E1A0EEB207B3B9A689ED5B373FE86686AD230BE6C18E1673DDA50E224B343EC5 │ │ │ │ │ +903BA0C8041C13607B50D5852AC7970B15C244E6EBA7D54B3086312CF04761D6 │ │ │ │ │ +7D3D75D51F20C371494AB81AB4A9838B20B483B851D01FEF41EA5C0B4755B964 │ │ │ │ │ +EB6E9B178051C556A010994EB88EAE641F4C1A0D7E0F98D5267E18AEF1AEA7E7 │ │ │ │ │ +9030A97DF89AFF621981C33B645FFB5F3BB2065A7661D11B26E0999561DF3580 │ │ │ │ │ +4A76A05DFAF8085525F8D5C01936F03C32E26E72569371C9EA3B8916F9DFC5FC │ │ │ │ │ +6A6F25A0FFDB981BA8B896393D75774D50828E6ADE903C45406E354703A4BC56 │ │ │ │ │ +2C49A47FEAC970DC433E3050C49F7FB945A9705BD8852D2D65D935F244D3B423 │ │ │ │ │ +EFAB84AAAAB8FBAFF50AFF372A533BCCEB5FC273DBADCF715776DF02A5DCBA9A │ │ │ │ │ +FBF265FAB4745D6475B33611EEE1EA95E7584E0BEEC7CA789AA69C8D03D6F8C0 │ │ │ │ │ +5B6844E2B901ACA560C0433B053D134866E567425174E47173679AAD4486A2D3 │ │ │ │ │ +369C29E4DD2CD6ACA1BE80ED8FF0A9C58A616D26E758BD8E6342624EC83FB590 │ │ │ │ │ +BD354B52B60BB054FAFE9AC63E1564FBC721FE8F276B0413EC89A2C85E5ED1B0 │ │ │ │ │ +3A9D83BE62A4488ADE7CE69971A8AF7E5862A4290EEF6F00D4171C7FFB360065 │ │ │ │ │ +92E72BF02BE27161AE0BB5516572A0BDC4F316FFB24B38484AC8D1FD4CD86062 │ │ │ │ │ +A2B5D03CF28C3A679C039A6EFDD4C9DA7E463AD60234C9F6BBEE48D87DD94D85 │ │ │ │ │ +842F495F3E25723718682CE4D6224CBBF4456F03077EDF736D65B9DDAB09470E │ │ │ │ │ +17742D82011FFA96BFE86B96E858F9352FCD20C3D46B77DBDEE54336EC2249EA │ │ │ │ │ +211F6DFFF5BEA1E5192BE1BAC0BDD5EDDB3D56C6F7C6E543561A0B39E5C1B04F │ │ │ │ │ +C683A7516B6E69D682455386DDA709929D621FA434D403E895AA0A77DBE1DFD2 │ │ │ │ │ +0D060DF82378880147ED97C6E8149686FA048710B113760AC1DA4512FF8556B3 │ │ │ │ │ +16E2447485B8C3CD58D0469C4A45FFB4CB0322BB284C02 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -3660,17 +3665,17 @@ │ │ │ │ │ {restore}if │ │ │ │ │ %%EndFont │ │ │ │ │ TeXDict begin 39158280 55380996 1000 600 600 (main.dvi) │ │ │ │ │ @start /Fa 154[40 40 100[{}2 90.9091 /CMSY10 rf /Fb 133[50 │ │ │ │ │ 59 4[44 44 46 2[56 62 93 31 2[31 62 56 1[51 62 50 1[54 │ │ │ │ │ 11[86 1[62 3[84 5[42 6[80 11[56 56 56 56 56 56 2[31 46[{}28 │ │ │ │ │ 99.6264 /CMBX12 rf /Fc 141[62 12[62 16[62 62 14[62 68[{}5 │ │ │ │ │ -119.552 /CMTT12 rf /Fd 134[48 3[51 2[36 3[51 12[45 22[47 │ │ │ │ │ -15[25 3[45 1[45 1[45 45 45 3[25 44[{}13 90.9091 /CMSL10 │ │ │ │ │ -rf │ │ │ │ │ +119.552 /CMTT12 rf /Fd 134[48 3[51 2[36 12[40 2[51 45 │ │ │ │ │ +26[59 11[25 1[45 2[45 2[45 45 45 3[25 44[{}14 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 │ │ │ │ │ @@ -3787,17 +3792,17 @@ │ │ │ │ │ 5074 y Fe(\210)45 b Fi(Tree)i(*tree)29 b Fj(:)41 b(p)s(oin)m(ter)30 │ │ │ │ │ b(to)h(the)g Fi(Tree)e Fj(ob)5 b(ject)137 5294 y Fe(\210)45 │ │ │ │ │ b Fi(IV)i(*mapIV)d Fj(:)h(p)s(oin)m(ter)g(to)h(the)f │ │ │ │ │ Fi(IV)g Fj(ob)5 b(ject)46 b(that)g(holds)e(the)i(map)e(from)h(v)m │ │ │ │ │ (ertices)i(to)f(domains)f(and)227 5407 y(separators.)1927 │ │ │ │ │ 5656 y(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fj(2)p 136 100 1130 4 v │ │ │ │ │ -1312 w Fi(Tree)29 b Fd(:)41 b Fh(DRAFT)30 b Fd(Jan)m(uary)g(16,)i(2024) │ │ │ │ │ -p 2770 100 V 0 399 a Ff(1.2)135 b(Protot)l(yp)t(es)46 │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fj(2)p 136 100 1111 4 v │ │ │ │ │ +1293 w Fi(Tree)29 b Fd(:)41 b Fh(DRAFT)30 b Fd(F)-8 b(ebruary)30 │ │ │ │ │ +b(18,)i(2025)p 2789 100 V 0 399 a Ff(1.2)135 b(Protot)l(yp)t(es)46 │ │ │ │ │ b(and)f(descriptions)g(of)g Fc(DSTree)d Ff(metho)t(ds)0 │ │ │ │ │ 636 y Fj(This)f(section)j(con)m(tains)f(brief)f(descriptions)g │ │ │ │ │ (including)f(protot)m(yp)s(es)i(of)f(all)h(metho)s(ds)f(that)h(b)s │ │ │ │ │ (elong)f(to)h(the)0 749 y Fi(DSTree)29 b Fj(ob)5 b(ject.)0 │ │ │ │ │ 1047 y Fb(1.2.1)112 b(Basic)38 b(metho)s(ds)0 1253 y │ │ │ │ │ Fj(As)d(usual,)h(there)f(are)g(four)f(basic)h(metho)s(ds)g(to)g(supp)s │ │ │ │ │ (ort)e(ob)5 b(ject)36 b(creation,)i(setting)e(default)f(\014elds,)h │ │ │ │ │ @@ -3852,17 +3857,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 1130 4 v 1312 100 a Fi(Tree)29 │ │ │ │ │ -b Fd(:)40 b Fh(DRAFT)122 b Fd(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2723 100 V 1130 w Fj(3)0 399 y Fb(1.2.3)112 b(Initializer)38 │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1111 4 v 1292 100 a Fi(Tree)30 │ │ │ │ │ +b Fd(:)40 b Fh(DRAFT)121 b Fd(F)-8 b(ebruary)31 b(18,)g(2025)p │ │ │ │ │ +2742 100 V 1111 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 │ │ │ │ │ @@ -3930,32 +3935,32 @@ │ │ │ │ │ (k,)f(its)f(stage)i(is)f Fa(d)p Fg(k)s(=)p Fj(2)p Fa(e)p │ │ │ │ │ Fj(.)227 5294 y Fh(Err)-5 b(or)34 b(che)-5 b(cking:)41 │ │ │ │ │ b Fj(If)29 b Fi(dstree)g Fj(is)i Fi(NULL)p Fj(,)e(or)h(if)h(the)f(ob)5 │ │ │ │ │ b(ject)32 b(has)e(not)g(b)s(een)g(initialized,)j(an)d(error)g(message) │ │ │ │ │ 227 5407 y(is)h(prin)m(ted)f(and)f(the)i(program)f(exits.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fj(4)p 136 100 1130 4 v │ │ │ │ │ -1312 w Fi(Tree)29 b Fd(:)41 b Fh(DRAFT)30 b Fd(Jan)m(uary)g(16,)i(2024) │ │ │ │ │ -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 │ │ │ │ │ -Fj(,)40 b(\014lled)g(and)f(then)h(returned.)69 b(If)39 │ │ │ │ │ -b(a)i(v)m(ertex)g(is)227 892 y(found)29 b(in)h(a)h(domain,)g(its)f │ │ │ │ │ -(stage)i(is)f(zero.)41 b(If)30 b(a)h(v)m(ertex)g(is)g(found)e(in)h(a)h │ │ │ │ │ -(separator,)g(its)g(stage)g(is)g(one.)227 1046 y Fh(Err)-5 │ │ │ │ │ -b(or)34 b(che)-5 b(cking:)41 b Fj(If)29 b Fi(dstree)g │ │ │ │ │ -Fj(is)i Fi(NULL)p Fj(,)e(or)h(if)h(the)f(ob)5 b(ject)32 │ │ │ │ │ -b(has)e(not)g(b)s(een)g(initialized,)j(an)d(error)g(message)227 │ │ │ │ │ -1159 y(is)h(prin)m(ted)f(and)f(the)i(program)f(exits.)111 │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fj(4)p 136 100 1111 4 v │ │ │ │ │ +1293 w Fi(Tree)29 b Fd(:)41 b Fh(DRAFT)30 b Fd(F)-8 b(ebruary)30 │ │ │ │ │ +b(18,)i(2025)p 2789 100 V 111 399 a Fj(3.)46 b Fi(IV)h(*)h │ │ │ │ │ +(DSTree_MS2stages)43 b(\()48 b(DSTree)e(*dstree)g(\))95 │ │ │ │ │ +b(;)227 553 y Fj(This)40 b(metho)s(d)g(returns)f(the)i(stages)h(for)e │ │ │ │ │ +(the)h(standard)f(m)m(ultisection)i(ordering.)71 b(The)40 │ │ │ │ │ +b(lev)m(els)i(of)f(the)227 666 y(domains)34 b(and)f(separators)h(are)g │ │ │ │ │ +(obtained)g(via)g(a)g(call)h(to)g Fi(Tree)p 2455 666 │ │ │ │ │ +29 4 v 33 w(setHeightImetric\(\))p Fj(.)45 b(A)34 b Fi(stagesIV)227 │ │ │ │ │ +779 y(IV)40 b Fj(ob)5 b(ject)41 b(is)f(created)h(of)f(size)h │ │ │ │ │ +Fi(nvtx)47 b(=)g(mapIV->size)p Fj(,)40 b(\014lled)g(and)f(then)h │ │ │ │ │ +(returned.)69 b(If)39 b(a)i(v)m(ertex)g(is)227 892 y(found)29 │ │ │ │ │ +b(in)h(a)h(domain,)g(its)f(stage)i(is)f(zero.)41 b(If)30 │ │ │ │ │ +b(a)h(v)m(ertex)g(is)g(found)e(in)h(a)h(separator,)g(its)g(stage)g(is)g │ │ │ │ │ +(one.)227 1046 y Fh(Err)-5 b(or)34 b(che)-5 b(cking:)41 │ │ │ │ │ +b Fj(If)29 b Fi(dstree)g Fj(is)i Fi(NULL)p Fj(,)e(or)h(if)h(the)f(ob)5 │ │ │ │ │ +b(ject)32 b(has)e(not)g(b)s(een)g(initialized,)j(an)d(error)g(message) │ │ │ │ │ +227 1159 y(is)h(prin)m(ted)f(and)f(the)i(program)f(exits.)111 │ │ │ │ │ 1355 y(4.)46 b Fi(IV)h(*)h(DSTree_MS3stages)43 b(\()48 │ │ │ │ │ b(DSTree)e(*dstree)g(\))95 b(;)227 1510 y Fj(This)35 │ │ │ │ │ b(metho)s(d)h(returns)e(the)i(stages)h(for)f(a)g(three-stage)i(v)-5 │ │ │ │ │ b(arian)m(t)37 b(of)f(the)g(m)m(ultisection)i(ordering.)56 │ │ │ │ │ b(The)227 1623 y(lev)m(els)37 b(of)f(the)f(domains)h(and)e(separators)i │ │ │ │ │ (are)g(obtained)g(via)g(a)g(call)g(to)g Fi(Tree)p 2988 │ │ │ │ │ 1623 V 34 w(setHeightImetric\(\))p Fj(.)227 1736 y(A)c │ │ │ │ │ @@ -4011,17 +4016,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 1130 4 v 1312 100 a Fi(Tree)29 │ │ │ │ │ -b Fd(:)40 b Fh(DRAFT)122 b Fd(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2723 100 V 1130 w Fj(5)111 399 y(3.)46 b Fi(int)h(DSTree_domainWeight)c │ │ │ │ │ +TeXDict begin 5 4 bop 91 100 1111 4 v 1292 100 a Fi(Tree)30 │ │ │ │ │ +b Fd(:)40 b Fh(DRAFT)121 b Fd(F)-8 b(ebruary)31 b(18,)g(2025)p │ │ │ │ │ +2742 100 V 1111 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 │ │ │ │ │ @@ -4088,21 +4093,21 @@ │ │ │ │ │ b Fi(dstree)e Fj(or)h Fi(fn)g Fj(are)i Fi(NULL)p Fj(,)d(or)i(if)g │ │ │ │ │ Fi(fn)f Fj(is)h(not)g(of)f(the)h(form)g Fi(*.dstreef)d │ │ │ │ │ Fj(\(for)j(a)227 5294 y(formatted)32 b(\014le\))g(or)f │ │ │ │ │ Fi(*.dstreeb)e Fj(\(for)j(a)f(binary)g(\014le\),)h(an)f(error)g │ │ │ │ │ (message)i(is)e(prin)m(ted)g(and)g(the)g(metho)s(d)227 │ │ │ │ │ 5407 y(returns)e(zero.)p eop end │ │ │ │ │ %%Page: 6 6 │ │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fj(6)p 136 100 1130 4 v │ │ │ │ │ -1312 w Fi(Tree)29 b Fd(:)41 b Fh(DRAFT)30 b Fd(Jan)m(uary)g(16,)i(2024) │ │ │ │ │ -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 │ │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fj(6)p 136 100 1111 4 v │ │ │ │ │ +1293 w Fi(Tree)29 b Fd(:)41 b Fh(DRAFT)30 b Fd(F)-8 b(ebruary)30 │ │ │ │ │ +b(18,)i(2025)p 2789 100 V 111 399 a Fj(5.)46 b Fi(int)h │ │ │ │ │ +(DSTree_writeToFormattedFi)o(le)42 b(\()47 b(DSTree)f(*dstree,)g(FILE)g │ │ │ │ │ +(*fp)h(\))h(;)227 548 y Fj(This)30 b(metho)s(d)g(writes)g(a)h │ │ │ │ │ +Fi(DSTree)e Fj(ob)5 b(ject)31 b(to)g(a)g(formatted)g(\014le.)41 │ │ │ │ │ +b(If)30 b(there)h(are)g(no)f(errors)g(in)g(writing)h(the)227 │ │ │ │ │ 661 y(data,)h(the)e(v)-5 b(alue)31 b Fi(1)f Fj(is)g(returned.)40 │ │ │ │ │ b(If)30 b(an)g(IO)g(error)g(is)g(encoun)m(tered)h(from)f │ │ │ │ │ Fi(fprintf)p Fj(,)f(zero)i(is)f(returned.)227 810 y Fh(Err)-5 │ │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fj(If)30 b Fi(dstree)f │ │ │ │ │ Fj(or)h Fi(fp)g Fj(is)h Fi(NULL)p Fj(,)e(an)h(error)g(message)i(is)e │ │ │ │ │ (prin)m(ted)g(and)g(zero)h(is)f(returned.)111 996 y(6.)46 │ │ │ │ │ b Fi(int)h(DSTree_writeToBinaryFile)41 b(\()48 b(DSTree)e(*dstree,)f │ │ │ │ │ @@ -4172,17 +4177,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 1130 4 v 1312 100 a Fi(Tree)29 │ │ │ │ │ -b Fd(:)40 b Fh(DRAFT)122 b Fd(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2723 100 V 1130 w Fj(7)111 399 y(2.)46 b Fi(writeStagesIV)e(msglvl)j │ │ │ │ │ +TeXDict begin 7 6 bop 91 100 1111 4 v 1292 100 a Fi(Tree)30 │ │ │ │ │ +b Fd(:)40 b Fh(DRAFT)121 b Fd(F)-8 b(ebruary)31 b(18,)g(2025)p │ │ │ │ │ +2742 100 V 1111 w Fj(7)111 399 y(2.)46 b Fi(writeStagesIV)e(msglvl)j │ │ │ │ │ (msgFile)e(inFile)h(type)h(outFile)227 544 y Fj(This)28 │ │ │ │ │ b(driv)m(er)h(program)g(reads)f(in)h(a)g Fi(DSTree)e │ │ │ │ │ Fj(from)h(a)i(\014le,)f(creates)h(a)g(stages)g Fi(IV)e │ │ │ │ │ Fj(ob)5 b(ject)30 b(and)e(writes)h(it)g(to)227 657 y(a)i(\014le.)337 │ │ │ │ │ 855 y Fe(\210)45 b Fj(The)28 b Fi(msglvl)f Fj(parameter)i(determines)g │ │ │ │ │ (the)g(amoun)m(t)g(of)f(output)h(|)f(taking)i Fi(msglvl)46 │ │ │ │ │ b(>=)h(3)28 b Fj(means)427 968 y(the)j Fi(DSTree)e Fj(ob)5 │ │ │ │ │ ├── ps2ascii {} │ │ │ │ │ │ @@ -21,15 +21,15 @@ │ │ │ │ │ │ The DSTree object has a very simple data structure. It contains a Tree object to represent the │ │ │ │ │ │ tree fields of the domains and separators, and an IV object to hold the map from the vertices to │ │ │ │ │ │ the domains and separators. │ │ │ │ │ │ • Tree *tree : pointer to the Tree object │ │ │ │ │ │ • IV *mapIV : pointer to the IV object that holds the map from vertices to domains and │ │ │ │ │ │ separators. │ │ │ │ │ │ 1 │ │ │ │ │ │ - 2 Tree : DRAFT January 16, 2024 │ │ │ │ │ │ + 2 Tree : DRAFT February 18, 2025 │ │ │ │ │ │ 1.2 Prototypes and descriptions of DSTree methods │ │ │ │ │ │ This section contains brief descriptions including prototypes of all methods that belong to the │ │ │ │ │ │ DSTree object. │ │ │ │ │ │ 1.2.1 Basic methods │ │ │ │ │ │ As usual, there are four basic methods to support object creation, setting default fields, clearing │ │ │ │ │ │ any allocated data, and free’ing the object. │ │ │ │ │ │ 1. DSTree * DSTree_new ( void ) ; │ │ │ │ │ │ @@ -52,15 +52,15 @@ │ │ │ │ │ │ 1.2.2 Instance methods │ │ │ │ │ │ 1. Tree * DSTree_tree ( DSTree *dstree ) ; │ │ │ │ │ │ This method returns a pointer to its Tree object. │ │ │ │ │ │ Error checking: If dstree is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 2. IV * DSTree_mapIV ( DSTree *dstree ) ; │ │ │ │ │ │ This method returns a pointer to its IV object that maps vertices to domains and separators. │ │ │ │ │ │ Error checking: If dstree is NULL, an error message is printed and the program exits. │ │ │ │ │ │ - Tree : DRAFT January 16, 2024 3 │ │ │ │ │ │ + Tree : DRAFT February 18, 2025 3 │ │ │ │ │ │ 1.2.3 Initializer methods │ │ │ │ │ │ There are three initializers and two helper functions to set the dimensions of the dstree, allocate │ │ │ │ │ │ the three vectors, and fill the information. │ │ │ │ │ │ 1. void DSTree_init1 ( DSTree *dstree, int ndomsep, int nvtx ) ; │ │ │ │ │ │ This method initializes an object given the number of vertices, (the dimension of mapIV) and │ │ │ │ │ │ domains and separators (the number of nodes in tree). It then clears any previous data │ │ │ │ │ │ with a call to DSTree clearData(). The tree field is created and initialized via a call to │ │ │ │ │ │ @@ -88,15 +88,15 @@ │ │ │ │ │ │ This method returns the stages for a nested dissection variant, separators on two adjacent │ │ │ │ │ │ levels are put into the same stage. The levels of the domains and separators are obtained │ │ │ │ │ │ via a call to Tree setHeightImetric(). A stagesIV IV object is created of size nvtx = │ │ │ │ │ │ mapIV->size, filled and then returned. If a vertex is found in a domain, its stage is zero. If │ │ │ │ │ │ a vertex is found in a separator at level k, its stage is ⌈k/2⌉. │ │ │ │ │ │ Error checking: If dstree is NULL, or if the object has not been initialized, an error message │ │ │ │ │ │ is printed and the program exits. │ │ │ │ │ │ - 4 Tree : DRAFT January 16, 2024 │ │ │ │ │ │ + 4 Tree : DRAFT February 18, 2025 │ │ │ │ │ │ 3. IV * DSTree_MS2stages ( DSTree *dstree ) ; │ │ │ │ │ │ This method returns the stages for the standard multisection ordering. The levels of the │ │ │ │ │ │ domains and separators are obtained via a call to Tree setHeightImetric(). A stagesIV │ │ │ │ │ │ IV object is created of size nvtx = mapIV->size, filled and then returned. If a vertex is │ │ │ │ │ │ found in a domain, its stage is zero. If a vertex is found in a separator, its stage is one. │ │ │ │ │ │ Error checking: If dstree is NULL, or if the object has not been initialized, an error message │ │ │ │ │ │ is printed and the program exits. │ │ │ │ │ │ @@ -125,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 16, 2024 5 │ │ │ │ │ │ - 3. int DSTree_domainWeight ( DSTree *dstree, int vwghts[] ) ; │ │ │ │ │ │ + Tree : DRAFT February 18, 2025 5 │ │ │ │ │ │ + 3. int DSTree_domainWeight ( DSTree *dstree, int vwghts[] ) ; │ │ │ │ │ │ This method returns the weight of the vertices in the domains. If vwghts is NULL, the vertices │ │ │ │ │ │ have unit weight. │ │ │ │ │ │ Error checking: If dstree is NULL, an error message is printed and the program exits. │ │ │ │ │ │ - 4. int DSTree_separatorWeight ( DSTree *dstree, int vwghts[] ) ; │ │ │ │ │ │ + 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 16, 2024 │ │ │ │ │ │ + 6 Tree : DRAFT February 18, 2025 │ │ │ │ │ │ 5. int DSTree_writeToFormattedFile ( DSTree *dstree, FILE *fp ) ; │ │ │ │ │ │ This method writes a DSTree object to a formatted file. If there are no errors in writing the │ │ │ │ │ │ data, the value 1 is returned. If an IO error is encountered from fprintf, zero is returned. │ │ │ │ │ │ Error checking: If dstree or fp is NULL, an error message is printed and zero is returned. │ │ │ │ │ │ 6. int DSTree_writeToBinaryFile ( DSTree *dstree, FILE *fp ) ; │ │ │ │ │ │ This method writes a DSTree object to a binary file. If there are no errors in writing the │ │ │ │ │ │ data, the value 1 is returned. If an IO error is encountered from fwrite, zero is returned. │ │ │ │ │ │ @@ -195,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 16, 2024 7 │ │ │ │ │ │ - 2. writeStagesIV msglvl msgFile inFile type outFile │ │ │ │ │ │ + Tree : DRAFT February 18, 2025 7 │ │ │ │ │ │ + 2. writeStagesIV msglvl msgFile inFile type outFile │ │ │ │ │ │ This driver program reads in a DSTree from a file, creates a stages IV object and writes it to │ │ │ │ │ │ a file. │ │ │ │ │ │ • The msglvl parameter determines the amount of output — taking msglvl >= 3 means │ │ │ │ │ │ the DSTree object is written to the message file. │ │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ │ message file is stdout, otherwise a file is opened with append status to receive any output │ │ │ │ │ │ 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 2024.01.16:2047 │ │ │ │ │ +%DVIPSSource: TeX output 2025.02.18:0318 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -2352,20 +2352,21 @@ │ │ │ │ │ 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 52 /four put │ │ │ │ │ -dup 54 /six put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ +dup 56 /eight put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 74 /J put │ │ │ │ │ +dup 70 /F put │ │ │ │ │ dup 97 /a put │ │ │ │ │ -dup 110 /n put │ │ │ │ │ +dup 98 /b put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ dup 114 /r put │ │ │ │ │ dup 117 /u put │ │ │ │ │ dup 121 /y put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ @@ -2549,89 +2550,93 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ │ -C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ │ -6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ │ -11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ │ -1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ │ -A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ │ -F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ │ -EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ │ -033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ │ -A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ │ -468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8A71FF9C085003EBB4F4 │ │ │ │ │ -3D271F5B16B1AAD3EBDC391F534AA46E545E9D8659DD19B309C3B7625A8396FA │ │ │ │ │ -2519464539D46E43ACB72952313C8497315E0319C08628023E8FC54D7D3BAC29 │ │ │ │ │ -D5AD8EFDABF0C33C7AFB7151A6606C62A87F0F5F783569AC4C881A992E3FE420 │ │ │ │ │ -297F7BC5147F3B2FA98450D2F8B07F7D229BC8BE06729920CFEC22556740E1CB │ │ │ │ │ -3DE09AC763C6D4A20AD1599C368FABD07BC35C16683F2A0311A88983415A9140 │ │ │ │ │ -2EFC4BC1B10DCAD4B2B8A28510E5BD39D6616D2B9B079ED3CF9C315B7DEC29D9 │ │ │ │ │ -251DFD0194B34EC175964C23383F23FFB2E41B698C405815D65EAFF9E9DD1DDE │ │ │ │ │ -30F77924656C288B8DDB2E5B0E7B1FAA66791DE3848EE6DE63AD0E945E49C6C7 │ │ │ │ │ -9FCA16E01F027F9EF7ACB55F02F5B0136480802F789F6FE14B430879979BA04D │ │ │ │ │ -F481AD4CF47E6847936F377FB04869F9A80E597301BFCAB718D8764094673876 │ │ │ │ │ -BCEF8FA3701608C84B3A0399A11D2E6AD922CCB7D72AF9EBFB30F4648A37A123 │ │ │ │ │ -CB8FB14BDC351692CF0CCAA5CA9383C2B23BAAA38700327EB743FBBE9EE04041 │ │ │ │ │ -13F5CEF4B3881BBC051C33369A82B3505B1CFD7D91AEF2E43EA728EE48E2D854 │ │ │ │ │ -5A7E516998ACDD4FD835FA901C5A21810A56D51FE919B2E58408EEB4DAEB487F │ │ │ │ │ -BA7F1D292CED902DF3533566D96DAD918319EA650D4FC7D9E0170CDE620F755B │ │ │ │ │ -0E7AE02D9B118481B26F5FF7060FBCFA2A682B6826F00679BCDA68794C05286D │ │ │ │ │ -B616DD08372ACDE0AE6E7EF116F0D36F16241ED4F0E8CCD80377792E3BB1343C │ │ │ │ │ -EEB22CC77738F7CBCBA32CF6C3979F6DF7ED81A89AE8928FD7CC550F2730BA88 │ │ │ │ │ -1B51CEDC63F4C47F261AFCAB7AC3CED20B15C97E714A460A1A3B16436B4A5149 │ │ │ │ │ -8F91DA4BE0B9B648534CE5F442117036B602DC91E2852BEA62F55803B833FDF7 │ │ │ │ │ -9F901AB87489E703DDEED1091A79DC73B4440BBBF2C7592B441187C4A3562204 │ │ │ │ │ -859F08BA3CE2A8ECCD5AAD13C50FB806FE79A388F1822C5608837CBDE526A044 │ │ │ │ │ -12E5CDE4A066932AF2ACA7E8FC6BA4603640944718752975B7DA6E906BE1EA01 │ │ │ │ │ -46736FF5D1AA1CC682D011B6039CF98C35E36D4F14ABC84A38B7203CC9A17756 │ │ │ │ │ -B2B0345276798F1A88A54AD9FEA0853C6DDF28525ED4F0B7380D14147012C2A4 │ │ │ │ │ -5B02888C986C76497EA4C729B0B82EE73C1A1A8E8F1ABF401E341028E9C15AF9 │ │ │ │ │ -354706D8DC07492921AD0932A46736C0D1B066D00287DACCC068FAE6A796EC89 │ │ │ │ │ -54D1D73AA88F3A5912BA9D3FF70065C8D0D0DAD1CD846501E06694374EFDBEC6 │ │ │ │ │ -931F644D5E8494AFC742423AD9A487658E310E0682BE19B8475F4D450487A686 │ │ │ │ │ -2B94494DEAF1C0F59DE82F2CE64BEE5E97F942FCFA1187ED6AA5761E951A7BF7 │ │ │ │ │ -9F842E34A4656C58B35A9E99F7E6762CEE11E0CF59FFD75D7382C5EE6DBB43F1 │ │ │ │ │ -ED219071D3FB22DBA90977723BB467C0490D042684C0724F40DCA3E0D8F1F4E7 │ │ │ │ │ -3C4F9A67BE6528185EAAFDD415224F7E256A4EA00111C17C746CBD80BF569A27 │ │ │ │ │ -D81195D7F79C1CCEEF30ED00D49F48B63E4B8D7953403A3710AE953CC1B76F0F │ │ │ │ │ -F523D777A6A186F262A602543F94AF7471DBE25FEBC207DB42DAF7DC9A5781FB │ │ │ │ │ -2131AD42869D966A734AAE3466DF1CE9D1BCFA72409A558C0AEE6A8E2FEAACB6 │ │ │ │ │ -2CDABCC28433034848ACF9FB4465D272E4AFC48572647F05F41C7A293CC5B595 │ │ │ │ │ -AD31555FB708A72962707348BC7033A8224BD42EB9D75FDF3AE9E6A9C960B330 │ │ │ │ │ -5137DF59F8E2E0D535F41524ABDF070745A4FA25CD8DFD38A5FF30A95452B875 │ │ │ │ │ -6569E8812631300D79A942C563AF174AC05C9F2D09D7D5D3C605F5A6B7F21B34 │ │ │ │ │ -18F270A993B050838E701A17938D1C156CBA7CA4BAC7C562CE9D7B758EAB25A9 │ │ │ │ │ -A6DFFC71F65561341847B776DF34061CE3D439B87B857626987EC93B3B95B8E8 │ │ │ │ │ -76FFB16B263675333FA10414FEED707FF7C366BF8B20FF8577CDEBEBCF1A5BCE │ │ │ │ │ -258C09C90175A5278B7C444A623E3331FDE5A6387B3E389540ED1E7E883958F3 │ │ │ │ │ -3A5C89CCD62256FA069DF4A5090FB17C1F1757C9209DAFB8A1F47182BF3E88D9 │ │ │ │ │ -0B5376B59EE165A761902759C8ED7F5AD301E7EB8B49CC09AF921DB45B7F8002 │ │ │ │ │ -AB32E73AAE53942DE0F9175D8446017006C9C0B93EF39C13B7A879F2F6DDFF16 │ │ │ │ │ -204BB24F976847CF006FD29332FCCB255B5116F7077A44F7066C39C81DC4BAD2 │ │ │ │ │ -40DB2753626C0102E5D047522ABC38EA294A699B8DFD9CA0A7980561A1062E90 │ │ │ │ │ -AB11EE286A9C238D9F721D9980D0A1828C2814972622D948CEE8C812C19A9A03 │ │ │ │ │ -608ED0AC138A436FFBF8BE3D1E66C87793416AF38ED9BC5424568A175FBDAA9E │ │ │ │ │ -D6FC11A7021693819B051562B5A59F32629E2D6019D69DD329BE1894A2B295E1 │ │ │ │ │ -1DCE9683B29AE126C56F26E5C595BF1A8249BDE231DBE8B066F7F62EF149B975 │ │ │ │ │ -A863969A4690504A5EA064721DA909B8157C0B39FBF8228D95CB655E406161E1 │ │ │ │ │ -148610FAEED7C5509880223C06A66DA19E10F94DC2DB481B26 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004FD597ED │ │ │ │ │ +EFDBC64ABD9B79386FB2427D1A63522195B1239C09F8CB3F8BD7A245A6DD82E3 │ │ │ │ │ +260C3889587626DFC5F7978E55F5524ABD6A3319CDD3D3F40D040044D51DA4E1 │ │ │ │ │ +6797EEAC7AA07C77EC6DB0E6E182B545A8BEF63B14F3FC07BAC09E7CD5C17ED6 │ │ │ │ │ +10080704B0DA4E9BA12F968DF8A58458D17E9A5B1F14A83DC51F5B161ADEE1CC │ │ │ │ │ +0183D82ED92C6FC7203C289949EDF0284D9893029FF5408E421324625F17C3E5 │ │ │ │ │ +2437C8F75A9D68EE1AF9174FEA6FC6BF793C7D2E497EA90396CF1A645E283B69 │ │ │ │ │ +8425F47C323587DF91E1D596DCB1E3A787C955D9D965A5E3E26ADF58B62AD5F9 │ │ │ │ │ +0C9AC784DE479780606354111E3202F215650DBBE1063A46F3C10B9EBC974DDA │ │ │ │ │ +A1A28DBBD43E9E5BFF000B12C787D0427928078F8EC5FE90DED97E6C129E8DEA │ │ │ │ │ +51F66504DB83764E52B0BA68DF7BE684C8959CB1D3345CC48221A9A4683306C0 │ │ │ │ │ +62B634E0A539383F0C7A788D9711EFF414869CCC5659D78CEBE009BF2463F56A │ │ │ │ │ +0ADC993348FE96DF7C250E13ED6504AACFE8F8DCA2D2048D9D8CFA127D363EAC │ │ │ │ │ +1F0630E2D1B621E6954038195D965B91FD974FA3F1B8B29D200A16CEBA645E2F │ │ │ │ │ +CEEE6FD49FBBD49E38AE67D4BFFCE91F1FC422554EC4409C5FA18D40FCD6D9B3 │ │ │ │ │ +2185ED1E0F98106D4339F086B05CA36E56EC22C60E2CE23F9C4CC403ACAD3F94 │ │ │ │ │ +4086B4DF6DFA0B7B4716417263E7B558535566AED2F6C2F9846A16D71A7930A7 │ │ │ │ │ +49232D3D16C4A01CF1A1998A06F40062ED329179A85668537C55D0BC24FC0010 │ │ │ │ │ +54DA83E2FC66B2A5D428E6A9BFC983253668C0ECE6CA36DBF97C4B7659D50842 │ │ │ │ │ +C65B36604840EEDA399B57E2DEFAC3E7FB031634CE33D04238F9854D2AAAF448 │ │ │ │ │ +34DA5F3BCCED3166FEEE82BB0BBA0A397CC2F95865CB52AABFF454D93B425809 │ │ │ │ │ +A26AC459F321FD23E2262FE816D06BAAECF32AAF167F84799AF80F9F88388D07 │ │ │ │ │ +0DB5FD57AFEE2850A8DFE977E6AE39CB3DC16DB1A163A583C86C6F775CE33521 │ │ │ │ │ +0081C0BBBAD6D30D26C66B28B38CEAC78FEA5FB3CC5853656B67C6D9D80EB30E │ │ │ │ │ +397558C9179AF5920F34DAB3F578DFCF0DBB137AED17D6325C23883E69EE4621 │ │ │ │ │ +34355A70C19EA68891E1CA937376901C85CDEE109F1665943E29A216DC00937A │ │ │ │ │ +B983A729A4654AD09187C0242D52FA4ADD0853EF4888864914D7D81C56578DD4 │ │ │ │ │ +3B51907032022E6E412D4F114675DEDCA8A9E85DC03A0B583FECD84432D15F70 │ │ │ │ │ +01F627BD6EC91F9FCFDA01BF40E1229B5F164309DBB641AD50970503DA2048C1 │ │ │ │ │ +DF8F36E8D252EE113F0B46677D9BAF376BAE18D74CFB0DBBD0C7E9D0A58BA3ED │ │ │ │ │ +1E5099CAE073EB5638617760AB57849893764EA9735173CD1EAB66884CEA7EE3 │ │ │ │ │ +8843327B2E145BD6FBB49102776B82BC511D109F8BE9E7E99DADABABEDC3CFD9 │ │ │ │ │ +393578FFD85907DFF2849E4CDE6FA4DEC7E1C150EBE4047FFB650F9548BE6D11 │ │ │ │ │ +0C51226A5436F18BF20A02E0F888F46B6AC3A8E8D927ECD3B5E095933AD3859F │ │ │ │ │ +5167C41D832EFCC4093BD2AFA7101AB430E57DAFC3590F05D3CBABB32BC203A0 │ │ │ │ │ +467B23BDB830487C9AA5B85BAC065F8538871B4180F8C4732E637DB090CFDE5A │ │ │ │ │ +3F4F2B5BFAFB848BAAD1A17CB076B34159601639BD93ECAB1214ACABF2C67FE2 │ │ │ │ │ +0658AA20B08681070FF56F1CC52144ABA8765D6E124D1CEA9BBA102808CE1BB2 │ │ │ │ │ +5EDF46BC7BBC2A5B49EE6EC28F5797A3969B057B21FCDBBD0E60848FF14F6CA3 │ │ │ │ │ +70F3060BDBB019B22722C99C7691760F013763B7FBEB62830AE215F195BF9F01 │ │ │ │ │ +21BF4377397E89574CFA47D123AA506A570A77BA6EB4AAB0B237A26154880293 │ │ │ │ │ +3952F832F72ECCB024F02385E5EE8566B165904B594E30D0700D033C6B429F6F │ │ │ │ │ +2A20BC774F442BC9CE29FCC81807C2768A8BC927A215558FBF36DC53F477F04A │ │ │ │ │ +41DA66E1A85B659EB761230977EAD7DA0150513D3323B143D4E2A61BCF03334C │ │ │ │ │ +C0EE3E1B06CFAF58ECC910BD81F0352B75FF1594D6A4EF504232D442174BE766 │ │ │ │ │ +0F8E703F97E21D25D4CD097549C31FEE7017C3916EFB02E7BF869172889827B6 │ │ │ │ │ +A48465EB7612BA3DBC6A9436C7167F149A25CE9F8E3F4F8DE3B5ADF6C0986CB3 │ │ │ │ │ +3A7E2DAB44AB489796461536F5F713017F2620AD03295CAE9285F08974AE0DF8 │ │ │ │ │ +D739260929619B509491AFF09C4CAEF9E65C2CA69470C907ECBF3AB6C955360D │ │ │ │ │ +05ABAC306DB51122A1ADC7EF0DD70FA299A45C505A83727D4598C86319EE9C06 │ │ │ │ │ +7218EFD4F40388354BCF1B79593D5AD221DF955D081F99F880E5CED07321AB3E │ │ │ │ │ +A2FCB8B05D54807D8E15E65B78DCE12989B9276350080C905DBB74CE9AA7E246 │ │ │ │ │ +5D3BAED292C562D4CF54617FCC6654496C7996D1ECE1EFF9258716AB763A12E6 │ │ │ │ │ +316E4C5587351A6DB011F58F6A15BC28BEBDC3836E0CB892807FEC228DC1B380 │ │ │ │ │ +92F7F42279F08D60F13D6A4CB425543C3644461461CBF6F27B6603F613D1FCF8 │ │ │ │ │ +A8410AD82D1498166AEB35D4125D7E2ADEAAB18BC04806AED53513F066E5F154 │ │ │ │ │ +3E13E863C50B9814EE2FB978D0D24A03FAF650CB6E2CADF1E6BE6BAF699AFC03 │ │ │ │ │ +E1A0EEB207B3B9A689ED5B373FE86686AD230BE6C18E1673DDA50E224B343EC5 │ │ │ │ │ +903BA0C8041C13607B50D5852AC7970B15C244E6EBA7D54B3086312CF04761D6 │ │ │ │ │ +7D3D75D51F20C371494AB81AB4A9838B20B483B851D01FEF41EA5C0B4755B964 │ │ │ │ │ +EB6E9B178051C556A010994EB88EAE641F4C1A0D7E0F98D5267E18AEF1AEA7E7 │ │ │ │ │ +9030A97DF89AFF621981C33B645FFB5F3BB2065A7661D11B26E0999561DF3580 │ │ │ │ │ +4A76A05DFAF8085525F8D5C01936F03C32E26E72569371C9EA3B8916F9DFC5FC │ │ │ │ │ +6A6F25A0FFDB981BA8B896393D75774D50828E6ADE903C45406E354703A4BC56 │ │ │ │ │ +2C49A47FEAC970DC433E3050C49F7FB945A9705BD8852D2D65D935F244D3B423 │ │ │ │ │ +EFAB84AAAAB8FBAFF50AFF372A533BCCEB5FC273DBADCF715776DF02A5DCBA9A │ │ │ │ │ +FBF265FAB4745D6475B33611EEE1EA95E7584E0BEEC7CA789AA69C8D03D6F8C0 │ │ │ │ │ +5B6844E2B901ACA560C0433B053D134866E567425174E47173679AAD4486A2D3 │ │ │ │ │ +369C29E4DD2CD6ACA1BE80ED8FF0A9C58A616D26E758BD8E6342624EC83FB590 │ │ │ │ │ +BD354B52B60BB054FAFE9AC63E1564FBC721FE8F276B0413EC89A2C85E5ED1B0 │ │ │ │ │ +3A9D83BE62A4488ADE7CE69971A8AF7E5862A4290EEF6F00D4171C7FFB360065 │ │ │ │ │ +92E72BF02BE27161AE0BB5516572A0BDC4F316FFB24B38484AC8D1FD4CD86062 │ │ │ │ │ +A2B5D03CF28C3A679C039A6EFDD4C9DA7E463AD60234C9F6BBEE48D87DD94D85 │ │ │ │ │ +842F495F3E25723718682CE4D6224CBBF4456F03077EDF736D65B9DDAB09470E │ │ │ │ │ +17742D82011FFA96BFE86B96E858F9352FCD20C3D46B77DBDEE54336EC2249EA │ │ │ │ │ +211F6DFFF5BEA1E5192BE1BAC0BDD5EDDB3D56C6F7C6E543561A0B39E5C1B04F │ │ │ │ │ +C683A7516B6E69D682455386DDA709929D621FA434D403E895AA0A77DBE1DFD2 │ │ │ │ │ +0D060DF82378880147ED97C6E8149686FA048710B113760AC1DA4512FF8556B3 │ │ │ │ │ +16E2447485B8C3CD58D0469C4A45FFB4CB0322BB284C02 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -4205,19 +4210,19 @@ │ │ │ │ │ /Fb 235[71 20[{}1 90.9091 /CMSY10 rf /Fc 206[35 35 48[{}2 │ │ │ │ │ 66.4176 /CMR8 rf /Fd 133[50 59 4[44 44 46 2[56 62 93 │ │ │ │ │ 31 2[31 62 2[51 62 50 1[54 11[86 5[84 5[42 6[80 12[56 │ │ │ │ │ 56 56 56 56 2[31 46[{}25 99.6264 /CMBX12 rf /Fe 139[62 │ │ │ │ │ 4[62 4[62 4[62 1[62 62 11[62 17[62 68[{}8 119.552 /CMTT12 │ │ │ │ │ rf /Ff 138[49 30 37 38 1[46 46 51 74 23 42 1[28 46 42 │ │ │ │ │ 1[42 46 42 42 46 12[65 1[66 11[59 62 69 2[68 6[28 58[{}25 │ │ │ │ │ -90.9091 /CMTI10 rf /Fg 134[48 3[51 2[36 3[51 12[45 22[47 │ │ │ │ │ -15[25 3[45 1[45 1[45 45 45 3[25 44[{}13 90.9091 /CMSL10 │ │ │ │ │ -rf /Fh 134[71 2[71 75 52 53 55 1[75 67 75 112 3[37 75 │ │ │ │ │ -67 41 61 75 60 1[65 13[75 2[92 11[103 16[67 67 67 2[37 │ │ │ │ │ -46[{}25 119.552 /CMBX12 rf │ │ │ │ │ +90.9091 /CMTI10 rf /Fg 134[48 3[51 2[36 12[40 2[51 45 │ │ │ │ │ +26[59 11[25 1[45 2[45 2[45 45 45 3[25 44[{}14 90.9091 │ │ │ │ │ +/CMSL10 rf /Fh 134[71 2[71 75 52 53 55 1[75 67 75 112 │ │ │ │ │ +3[37 75 67 41 61 75 60 1[65 13[75 2[92 11[103 16[67 67 │ │ │ │ │ +67 2[37 46[{}25 119.552 /CMBX12 rf │ │ │ │ │ %DVIPSBitmapFont: Fi tcrm1095 10.95 2 │ │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ │ /Dotaccent/cedilla/ogonek/quotesinglbase.ts1 4{/.notdef}repeat │ │ │ │ │ /quotedblbase.ts1/.notdef/.notdef/twelveudash/threequartersemdash │ │ │ │ │ /afii61664.cap/arrowleft/arrowright/tieaccentlowercase/tieaccentcapital │ │ │ │ │ /tieaccentlowercase.new/tieaccentcapital.new/.notdef/afii61664.asc/uni2422 3 │ │ │ │ │ {/.notdef}repeat/dollar/.notdef/.notdef/quotesingle/.notdef/.notdef │ │ │ │ │ @@ -4332,17 +4337,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 1183 4 v │ │ │ │ │ -1365 w Fk(DV)30 b Fg(:)g Ff(DRAFT)g Fg(Jan)m(uary)g(16,)i(2024)p │ │ │ │ │ -2717 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 1164 4 v │ │ │ │ │ +1346 w Fk(DV)29 b Fg(:)i Ff(DRAFT)f Fg(F)-8 b(ebruary)30 │ │ │ │ │ +b(18,)i(2025)p 2737 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 │ │ │ │ │ @@ -4396,17 +4401,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 1183 4 v 1364 100 a Fk(DV)30 │ │ │ │ │ -b Fg(:)h Ff(DRAFT)121 b Fg(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2670 100 V 1183 w Fl(3)0 399 y Fd(1.2.2)112 b(Instance)38 │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1164 4 v 1345 100 a Fk(DV)30 │ │ │ │ │ +b Fg(:)h Ff(DRAFT)121 b Fg(F)-8 b(ebruary)30 b(18,)h(2025)p │ │ │ │ │ +2689 100 V 1164 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 │ │ │ │ │ @@ -4460,33 +4465,33 @@ │ │ │ │ │ (double)h(value)f(\))h(;)227 5242 y Fl(This)30 b(metho)s(d)g(sets)g │ │ │ │ │ (the)h Fk(loc)p Fl('th)f(en)m(try)g(of)h(the)f(v)m(ector)i(to)f │ │ │ │ │ Fk(value)p Fl(.)227 5407 y Ff(Err)-5 b(or)33 b(che)-5 │ │ │ │ │ b(cking:)40 b Fl(If)28 b Fk(dv)h Fl(is)g Fk(NULL)e Fl(or)j │ │ │ │ │ Fk(loc)46 b(<)i(0)p Fl(,)29 b(an)g(error)g(message)h(is)f(prin)m(ted)f │ │ │ │ │ (and)h(the)g(program)g(exits.)p eop end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fl(4)p 136 100 1183 4 v │ │ │ │ │ -1365 w Fk(DV)30 b Fg(:)g Ff(DRAFT)g Fg(Jan)m(uary)g(16,)i(2024)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 │ │ │ │ │ -29 4 v 34 w(clearData\(\))p Fl(.)37 b(If)28 b Fk(entries)46 │ │ │ │ │ -b(!=)227 1178 y(NULL)31 b Fl(then)h(the)h Fk(vec)e Fl(\014eld)h(is)g │ │ │ │ │ -(set)h(to)g Fk(entries)p Fl(,)e(the)h Fk(size)f Fl(and)h │ │ │ │ │ -Fk(maxsize)e Fl(\014elds)h(are)i(set)g(to)g Fk(size)p │ │ │ │ │ -Fl(,)f(and)227 1291 y Fk(owned)25 b Fl(is)h(set)g(to)h(zero)g(b)s │ │ │ │ │ -(ecause)f(the)g(ob)5 b(ject)27 b(do)s(es)f(not)g(o)m(wn)g(the)g(en)m │ │ │ │ │ -(tries.)40 b(If)26 b Fk(entries)e Fl(is)i Fk(NULL)f Fl(and)g │ │ │ │ │ -Fk(size)227 1404 y(>)48 b(0)30 b Fl(then)g(a)h(v)m(ector)h(is)e(allo)s │ │ │ │ │ -(cated)i(b)m(y)f(the)f(ob)5 b(ject,)32 b(and)d(the)i(ob)5 │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fl(4)p 136 100 1164 4 v │ │ │ │ │ +1346 w Fk(DV)29 b Fg(:)i Ff(DRAFT)f Fg(F)-8 b(ebruary)30 │ │ │ │ │ +b(18,)i(2025)p 2737 100 V 0 399 a Fd(1.2.3)112 b(Initializer)38 │ │ │ │ │ +b(metho)s(ds)0 592 y Fl(There)30 b(are)h(three)f(initializer)j(metho)s │ │ │ │ │ +(ds.)111 806 y(1.)46 b Fk(void)h(DV_init)f(\()h(DV)g(*dv,)g(int)g │ │ │ │ │ +(size,)f(double)g(*entries)g(\))h(;)227 953 y Fl(This)36 │ │ │ │ │ +b(metho)s(d)g(initializes)j(the)d(ob)5 b(ject)38 b(giv)m(en)f(a)g(size) │ │ │ │ │ +h(for)e(the)h(v)m(ector)h(and)e(a)h(p)s(ossible)f(p)s(oin)m(ter)g(to)i │ │ │ │ │ +(the)227 1066 y(v)m(ectors')30 b(storage.)42 b(An)m(y)28 │ │ │ │ │ +b(previous)g(data)h(is)g(cleared)g(with)f(a)h(call)h(to)f │ │ │ │ │ +Fk(DV)p 2716 1066 29 4 v 34 w(clearData\(\))p Fl(.)37 │ │ │ │ │ +b(If)28 b Fk(entries)46 b(!=)227 1178 y(NULL)31 b Fl(then)h(the)h │ │ │ │ │ +Fk(vec)e Fl(\014eld)h(is)g(set)h(to)g Fk(entries)p Fl(,)e(the)h │ │ │ │ │ +Fk(size)f Fl(and)h Fk(maxsize)e Fl(\014elds)h(are)i(set)g(to)g │ │ │ │ │ +Fk(size)p Fl(,)f(and)227 1291 y Fk(owned)25 b Fl(is)h(set)g(to)h(zero)g │ │ │ │ │ +(b)s(ecause)f(the)g(ob)5 b(ject)27 b(do)s(es)f(not)g(o)m(wn)g(the)g(en) │ │ │ │ │ +m(tries.)40 b(If)26 b Fk(entries)e Fl(is)i Fk(NULL)f │ │ │ │ │ +Fl(and)g Fk(size)227 1404 y(>)48 b(0)30 b Fl(then)g(a)h(v)m(ector)h(is) │ │ │ │ │ +e(allo)s(cated)i(b)m(y)f(the)f(ob)5 b(ject,)32 b(and)d(the)i(ob)5 │ │ │ │ │ b(ject)31 b(o)m(wns)g(this)f(storage.)227 1551 y Ff(Err)-5 │ │ │ │ │ b(or)30 b(che)-5 b(cking:)38 b Fl(If)26 b Fk(dv)f Fl(is)h │ │ │ │ │ Fk(NULL)e Fl(or)i Fk(size)47 b(<)g(0)p Fl(,)27 b(an)f(error)f(message)i │ │ │ │ │ (is)f(prin)m(ted)g(and)f(the)h(program)g(exits.)111 1732 │ │ │ │ │ y(2.)46 b Fk(void)h(DV_init1)e(\()j(DV)f(*dv,)g(int)g(size)f(\))i(;)227 │ │ │ │ │ 1879 y Fl(This)30 b(metho)s(d)g(initializes)i(the)f(ob)5 │ │ │ │ │ b(ject)31 b(giv)m(en)g(a)g(size)g(size)h(for)e(the)g(v)m(ector)i(via)f │ │ │ │ │ @@ -4546,17 +4551,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 1183 4 v 1364 100 a Fk(DV)30 │ │ │ │ │ -b Fg(:)h Ff(DRAFT)121 b Fg(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2670 100 V 1183 w Fl(5)227 399 y(the)37 b(v)m(ector)h(is)e(lost,)j │ │ │ │ │ +TeXDict begin 5 4 bop 91 100 1164 4 v 1345 100 a Fk(DV)30 │ │ │ │ │ +b Fg(:)h Ff(DRAFT)121 b Fg(F)-8 b(ebruary)30 b(18,)h(2025)p │ │ │ │ │ +2689 100 V 1164 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 │ │ │ │ │ @@ -4615,55 +4620,55 @@ │ │ │ │ │ 5088 y(7.)46 b Fk(int)h(DV_sizeOf)e(\()j(DV)f(*dv)g(\))g(;)227 │ │ │ │ │ 5247 y Fl(This)30 b(metho)s(d)g(returns)f(the)h(n)m(um)m(b)s(er)f(of)i │ │ │ │ │ (b)m(ytes)g(tak)m(en)g(b)m(y)g(the)f(ob)5 b(ject.)227 │ │ │ │ │ 5407 y Ff(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fl(If)30 │ │ │ │ │ b Fk(dv)g Fl(is)h Fk(NULL)e Fl(an)h(error)g(message)h(is)g(prin)m(ted)f │ │ │ │ │ (and)g(the)g(program)g(exits.)p eop end │ │ │ │ │ %%Page: 6 6 │ │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fl(6)p 136 100 1183 4 v │ │ │ │ │ -1365 w Fk(DV)30 b Fg(:)g Ff(DRAFT)g Fg(Jan)m(uary)g(16,)i(2024)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 │ │ │ │ │ -Fl(,)f(if)i(so)f(an)g(error)g(message)i(is)e(prin)m(ted)g(and)g(the)227 │ │ │ │ │ -1509 y(program)f(exits.)69 b(In)38 b(metho)s(d)h Fk(DV)p │ │ │ │ │ -1442 1509 29 4 v 34 w(next\(\))p Fl(,)h(if)f Fk(pd)g │ │ │ │ │ -Fl(is)g(not)g(in)g(the)h(v)-5 b(alid)39 b(range,)j(an)e(error)e │ │ │ │ │ -(message)j(is)227 1621 y(prin)m(ted)30 b(and)g(the)h(program)f(exits.) │ │ │ │ │ -227 1781 y Ff(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fl(If)30 │ │ │ │ │ -b Fk(dv)g Fl(is)h Fk(NULL)e Fl(an)h(error)g(message)h(is)g(prin)m(ted)f │ │ │ │ │ -(and)g(the)g(program)g(exits.)111 1988 y(9.)46 b Fk(void)h(DV_fill)f │ │ │ │ │ -(\()h(DV)g(*dv,)g(double)f(value)g(\))i(;)227 2148 y │ │ │ │ │ -Fl(This)30 b(metho)s(d)g(\014lls)g(the)g(v)m(ector)i(with)e(a)h(scalar) │ │ │ │ │ -h(v)-5 b(alue.)227 2308 y Ff(Err)g(or)34 b(che)-5 b(cking:)40 │ │ │ │ │ -b Fl(If)30 b Fk(dv)g Fl(is)h Fk(NULL)p Fl(,)e(an)h(error)g(message)i │ │ │ │ │ -(is)e(prin)m(ted)g(and)g(the)g(program)h(exits.)66 2515 │ │ │ │ │ -y(10.)46 b Fk(void)h(DV_zero)f(\()h(DV)g(*dv)g(\))h(;)227 │ │ │ │ │ -2675 y Fl(This)30 b(metho)s(d)g(\014lls)g(the)g(v)m(ector)i(with)e │ │ │ │ │ -(zeros.)227 2835 y Ff(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ │ -b Fl(If)30 b Fk(dv)g Fl(is)h Fk(NULL)p Fl(,)e(an)h(error)g(message)i │ │ │ │ │ -(is)e(prin)m(ted)g(and)g(the)g(program)h(exits.)66 3042 │ │ │ │ │ -y(11.)46 b Fk(void)h(DV_copy)f(\()h(DV)g(*dv1,)g(DV)g(*dv2)g(\))g(;)227 │ │ │ │ │ -3202 y Fl(This)30 b(metho)s(d)g(\014lls)h(the)f Fk(dv1)g │ │ │ │ │ -Fl(ob)5 b(ject)32 b(with)e(en)m(tries)h(in)g(the)g Fk(iv2)e │ │ │ │ │ -Fl(ob)5 b(ject.)43 b(Note,)32 b(this)f(is)f(a)h Ff(mapp)-5 │ │ │ │ │ -b(e)g(d)34 b Fl(cop)m(y)-8 b(,)227 3315 y Fk(dv1)24 b │ │ │ │ │ -Fl(and)g Fk(dv2)f Fl(need)i(not)f(ha)m(v)m(e)i(the)f(same)g(size.)39 │ │ │ │ │ -b(The)24 b(n)m(um)m(b)s(er)f(of)i(en)m(tries)g(that)g(are)g(copied)g │ │ │ │ │ -(is)g(the)f(smaller)227 3428 y(of)31 b(the)f(t)m(w)m(o)i(sizes.)227 │ │ │ │ │ -3588 y Ff(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fl(If)30 │ │ │ │ │ -b Fk(dv1)g Fl(or)g Fk(dv2)g Fl(is)g Fk(NULL)p Fl(,)g(an)g(error)g │ │ │ │ │ -(message)h(is)g(prin)m(ted)f(and)f(the)i(program)f(exits.)66 │ │ │ │ │ -3795 y(12.)46 b Fk(void)h(DV_log10profile)d(\()j(DV)g(*dv,)g(int)g │ │ │ │ │ -(npts,)f(DV)h(*xDV,)g(DV)g(*yDV,)f(double)g(tausmall,)1325 │ │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fl(6)p 136 100 1164 4 v │ │ │ │ │ +1346 w Fk(DV)29 b Fg(:)i Ff(DRAFT)f Fg(F)-8 b(ebruary)30 │ │ │ │ │ +b(18,)i(2025)p 2737 100 V 111 399 a Fl(8.)46 b Fk(double)g(*)i │ │ │ │ │ +(DV_first)d(\()j(DV)f(*dv)g(\))g(;)227 511 y(double)f(*)i(DV_next)e(\() │ │ │ │ │ +h(DV)g(*dv,)g(int)g(*pd)g(\))g(;)227 671 y Fl(These)30 │ │ │ │ │ +b(t)m(w)m(o)i(metho)s(ds)e(are)h(used)e(as)i(iterators,)h(e.g.,)227 │ │ │ │ │ +921 y Fk(for)47 b(\()h(pd)f(=)g(DV_first\(dv\))e(;)i(pd)g(!=)h(NULL)e │ │ │ │ │ +(;)i(pd)f(=)g(DV_next\(dv,)e(pd\))i(\))g({)370 1033 y(do)h(something)d │ │ │ │ │ +(with)i(entry)f(*pd)227 1146 y(})227 1396 y Fl(Eac)m(h)41 │ │ │ │ │ +b(metho)s(d)f(c)m(hec)m(ks)i(to)f(see)g(if)f Fk(dv)g │ │ │ │ │ +Fl(or)g Fk(pd)g Fl(is)g Fk(NULL)p Fl(,)f(if)i(so)f(an)g(error)g │ │ │ │ │ +(message)i(is)e(prin)m(ted)g(and)g(the)227 1509 y(program)f(exits.)69 │ │ │ │ │ +b(In)38 b(metho)s(d)h Fk(DV)p 1442 1509 29 4 v 34 w(next\(\))p │ │ │ │ │ +Fl(,)h(if)f Fk(pd)g Fl(is)g(not)g(in)g(the)h(v)-5 b(alid)39 │ │ │ │ │ +b(range,)j(an)e(error)e(message)j(is)227 1621 y(prin)m(ted)30 │ │ │ │ │ +b(and)g(the)h(program)f(exits.)227 1781 y Ff(Err)-5 b(or)34 │ │ │ │ │ +b(che)-5 b(cking:)40 b Fl(If)30 b Fk(dv)g Fl(is)h Fk(NULL)e │ │ │ │ │ +Fl(an)h(error)g(message)h(is)g(prin)m(ted)f(and)g(the)g(program)g │ │ │ │ │ +(exits.)111 1988 y(9.)46 b Fk(void)h(DV_fill)f(\()h(DV)g(*dv,)g(double) │ │ │ │ │ +f(value)g(\))i(;)227 2148 y Fl(This)30 b(metho)s(d)g(\014lls)g(the)g(v) │ │ │ │ │ +m(ector)i(with)e(a)h(scalar)h(v)-5 b(alue.)227 2308 y │ │ │ │ │ +Ff(Err)g(or)34 b(che)-5 b(cking:)40 b Fl(If)30 b Fk(dv)g │ │ │ │ │ +Fl(is)h Fk(NULL)p Fl(,)e(an)h(error)g(message)i(is)e(prin)m(ted)g(and)g │ │ │ │ │ +(the)g(program)h(exits.)66 2515 y(10.)46 b Fk(void)h(DV_zero)f(\()h(DV) │ │ │ │ │ +g(*dv)g(\))h(;)227 2675 y Fl(This)30 b(metho)s(d)g(\014lls)g(the)g(v)m │ │ │ │ │ +(ector)i(with)e(zeros.)227 2835 y Ff(Err)-5 b(or)34 b(che)-5 │ │ │ │ │ +b(cking:)40 b Fl(If)30 b Fk(dv)g Fl(is)h Fk(NULL)p Fl(,)e(an)h(error)g │ │ │ │ │ +(message)i(is)e(prin)m(ted)g(and)g(the)g(program)h(exits.)66 │ │ │ │ │ +3042 y(11.)46 b Fk(void)h(DV_copy)f(\()h(DV)g(*dv1,)g(DV)g(*dv2)g(\))g │ │ │ │ │ +(;)227 3202 y Fl(This)30 b(metho)s(d)g(\014lls)h(the)f │ │ │ │ │ +Fk(dv1)g Fl(ob)5 b(ject)32 b(with)e(en)m(tries)h(in)g(the)g │ │ │ │ │ +Fk(iv2)e Fl(ob)5 b(ject.)43 b(Note,)32 b(this)f(is)f(a)h │ │ │ │ │ +Ff(mapp)-5 b(e)g(d)34 b Fl(cop)m(y)-8 b(,)227 3315 y │ │ │ │ │ +Fk(dv1)24 b Fl(and)g Fk(dv2)f Fl(need)i(not)f(ha)m(v)m(e)i(the)f(same)g │ │ │ │ │ +(size.)39 b(The)24 b(n)m(um)m(b)s(er)f(of)i(en)m(tries)g(that)g(are)g │ │ │ │ │ +(copied)g(is)g(the)f(smaller)227 3428 y(of)31 b(the)f(t)m(w)m(o)i │ │ │ │ │ +(sizes.)227 3588 y Ff(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ │ +b Fl(If)30 b Fk(dv1)g Fl(or)g Fk(dv2)g Fl(is)g Fk(NULL)p │ │ │ │ │ +Fl(,)g(an)g(error)g(message)h(is)g(prin)m(ted)f(and)f(the)i(program)f │ │ │ │ │ +(exits.)66 3795 y(12.)46 b Fk(void)h(DV_log10profile)d(\()j(DV)g(*dv,)g │ │ │ │ │ +(int)g(npts,)f(DV)h(*xDV,)g(DV)g(*yDV,)f(double)g(tausmall,)1325 │ │ │ │ │ 3908 y(double)g(taubig,)g(int)h(*pnzero,)e(int)i(*pnsmall,)f(int)g │ │ │ │ │ (*pnbig)h(\))g(;)227 4068 y Fl(This)34 b(metho)s(d)f(scans)i(the)f(en)m │ │ │ │ │ (tries)h(in)f(the)g Fk(DV)g Fl(ob)5 b(ject)35 b(and)f(\014lls)g │ │ │ │ │ Fk(xDV)f Fl(and)h Fk(yDV)f Fl(with)h(data)h(that)g(allo)m(ws)227 │ │ │ │ │ 4181 y(a)c(simple)f(log)703 4203 y Fc(10)808 4181 y Fl(distribution)f │ │ │ │ │ (plot.)41 b(Only)29 b(en)m(tries)i(whose)f(magnitudes)g(lie)h(in)e(the) │ │ │ │ │ h(range)h Fk([tausmall,)227 4294 y(taubig])i Fl(con)m(tribute)j(to)g │ │ │ │ │ @@ -4685,17 +4690,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 1183 4 v 1364 100 a Fk(DV)30 │ │ │ │ │ -b Fg(:)h Ff(DRAFT)121 b Fg(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2670 100 V 1183 w Fl(7)111 399 y(1.)46 b Fk(int)h(DV_readFromFile)d(\() │ │ │ │ │ +TeXDict begin 7 6 bop 91 100 1164 4 v 1345 100 a Fk(DV)30 │ │ │ │ │ +b Fg(:)h Ff(DRAFT)121 b Fg(F)-8 b(ebruary)30 b(18,)h(2025)p │ │ │ │ │ +2689 100 V 1164 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 │ │ │ │ │ @@ -4776,41 +4781,41 @@ │ │ │ │ │ (\))h(;)227 5259 y Fl(This)30 b(metho)s(d)g(writes)g(the)h(header)f │ │ │ │ │ (and)g(statistics)i(to)f(a)g(\014le.)41 b(The)29 b(v)-5 │ │ │ │ │ b(alue)31 b Fk(1)f Fl(is)h(returned.)227 5407 y Ff(Err)-5 │ │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fl(If)30 b Fk(dv)g Fl(or)g │ │ │ │ │ Fk(fp)g Fl(are)h Fk(NULL)p Fl(,)e(an)i(error)f(message)h(is)g(prin)m │ │ │ │ │ (ted)f(and)f(zero)i(is)g(returned.)p eop end │ │ │ │ │ %%Page: 8 8 │ │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fl(8)p 136 100 1183 4 v │ │ │ │ │ -1365 w Fk(DV)30 b Fg(:)g Ff(DRAFT)g Fg(Jan)m(uary)g(16,)i(2024)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 │ │ │ │ │ -(1.000000000000e0)d(;)227 1112 y(A\(2\))j(=)g(2.000000000000e0)d(;)227 │ │ │ │ │ -1225 y(...)227 1450 y Fl(for)31 b(eac)m(h)h(en)m(try)g(in)e(the)i(v)m │ │ │ │ │ -(ector.)44 b(Note,)33 b(the)e(output)g(indexing)g(is)g(1-based,)h(not)f │ │ │ │ │ -(0-based.)43 b(The)31 b(v)-5 b(alue)31 b Fk(1)227 1563 │ │ │ │ │ -y Fl(is)g(returned.)227 1714 y Ff(Err)-5 b(or)34 b(che)-5 │ │ │ │ │ -b(cking:)40 b Fl(If)30 b Fk(dv)g Fl(or)g Fk(fp)g Fl(are)h │ │ │ │ │ -Fk(NULL)p Fl(,)e(an)i(error)f(message)h(is)g(prin)m(ted)f(and)f(zero)i │ │ │ │ │ -(is)g(returned.)0 2025 y Fh(1.3)135 b(Driv)l(er)46 b(programs)g(for)f │ │ │ │ │ -(the)g Fe(DV)60 b(object)111 2253 y Fl(1.)46 b Fk(testIO)g(msglvl)g │ │ │ │ │ -(msgFile)g(inFile)g(outFile)227 2403 y Fl(This)f(driv)m(er)g(program)g │ │ │ │ │ -(tests)h(the)f Fk(DV)f Fl(IO)h(metho)s(ds,)k(and)44 b(is)h(useful)g │ │ │ │ │ -(for)g(translating)h(b)s(et)m(w)m(een)g(the)227 2516 │ │ │ │ │ -y(formatted)31 b Fk(*.dvf)e Fl(and)h(binary)g Fk(*.dvb)e │ │ │ │ │ -Fl(\014les.)337 2728 y Fi(\210)45 b Fl(The)f Fk(msglvl)e │ │ │ │ │ -Fl(parameter)j(determines)f(the)g(amoun)m(t)h(of)f(output.)82 │ │ │ │ │ -b(Use)44 b Fk(msglvl)i(=)i(1)c Fl(for)g(just)427 2841 │ │ │ │ │ -y(timing)31 b(output.)337 2988 y Fi(\210)45 b Fl(The)33 │ │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fl(8)p 136 100 1164 4 v │ │ │ │ │ +1346 w Fk(DV)29 b Fg(:)i Ff(DRAFT)f Fg(F)-8 b(ebruary)30 │ │ │ │ │ +b(18,)i(2025)p 2737 100 V 111 399 a Fl(9.)46 b Fk(int)h │ │ │ │ │ +(DV_writeForMatlab)c(\()48 b(DV)f(*dv,)g(char)f(*name,)g(FILE)h(*fp)g │ │ │ │ │ +(\))g(;)227 549 y Fl(This)37 b(metho)s(d)h(writes)f(the)i(en)m(tries)f │ │ │ │ │ +(of)g(the)g(v)m(ector)i(to)e(a)g(\014le)g(suitable)h(to)f(b)s(e)g(read) │ │ │ │ │ +f(b)m(y)h(Matlab.)64 b(The)227 662 y(c)m(haracter)31 │ │ │ │ │ +b(string)e Fk(name)f Fl(is)h(the)g(name)g(of)g(the)g(v)m(ector,)i(e.g,) │ │ │ │ │ +g(if)e Fk(name)46 b(=)i("A")p Fl(,)28 b(then)h(w)m(e)g(ha)m(v)m(e)h │ │ │ │ │ +(lines)g(of)f(the)227 775 y(form)227 1000 y Fk(A\(1\))47 │ │ │ │ │ +b(=)g(1.000000000000e0)d(;)227 1112 y(A\(2\))j(=)g(2.000000000000e0)d │ │ │ │ │ +(;)227 1225 y(...)227 1450 y Fl(for)31 b(eac)m(h)h(en)m(try)g(in)e(the) │ │ │ │ │ +i(v)m(ector.)44 b(Note,)33 b(the)e(output)g(indexing)g(is)g(1-based,)h │ │ │ │ │ +(not)f(0-based.)43 b(The)31 b(v)-5 b(alue)31 b Fk(1)227 │ │ │ │ │ +1563 y Fl(is)g(returned.)227 1714 y Ff(Err)-5 b(or)34 │ │ │ │ │ +b(che)-5 b(cking:)40 b Fl(If)30 b Fk(dv)g Fl(or)g Fk(fp)g │ │ │ │ │ +Fl(are)h Fk(NULL)p Fl(,)e(an)i(error)f(message)h(is)g(prin)m(ted)f(and) │ │ │ │ │ +f(zero)i(is)g(returned.)0 2025 y Fh(1.3)135 b(Driv)l(er)46 │ │ │ │ │ +b(programs)g(for)f(the)g Fe(DV)60 b(object)111 2253 y │ │ │ │ │ +Fl(1.)46 b Fk(testIO)g(msglvl)g(msgFile)g(inFile)g(outFile)227 │ │ │ │ │ +2403 y Fl(This)f(driv)m(er)g(program)g(tests)h(the)f │ │ │ │ │ +Fk(DV)f Fl(IO)h(metho)s(ds,)k(and)44 b(is)h(useful)g(for)g(translating) │ │ │ │ │ +h(b)s(et)m(w)m(een)g(the)227 2516 y(formatted)31 b Fk(*.dvf)e │ │ │ │ │ +Fl(and)h(binary)g Fk(*.dvb)e Fl(\014les.)337 2728 y Fi(\210)45 │ │ │ │ │ +b Fl(The)f Fk(msglvl)e Fl(parameter)j(determines)f(the)g(amoun)m(t)h │ │ │ │ │ +(of)f(output.)82 b(Use)44 b Fk(msglvl)i(=)i(1)c Fl(for)g(just)427 │ │ │ │ │ +2841 y(timing)31 b(output.)337 2988 y Fi(\210)45 b Fl(The)33 │ │ │ │ │ b Fk(msgFile)e Fl(parameter)j(determines)f(the)h(message)g(\014le)f(|)h │ │ │ │ │ (if)f Fk(msgFile)e Fl(is)i Fk(stdout)p Fl(,)g(then)g(the)427 │ │ │ │ │ 3100 y(message)27 b(\014le)f(is)g Ff(stdout)p Fl(,)i(otherwise)e(a)h │ │ │ │ │ (\014le)f(is)f(op)s(ened)g(with)h Ff(app)-5 b(end)28 │ │ │ │ │ b Fl(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 3213 │ │ │ │ │ y(data.)337 3359 y Fi(\210)45 b Fl(The)29 b Fk(inFile)f │ │ │ │ │ Fl(parameter)j(is)e(the)h(name)g(of)g(the)g(\014le)f(from)h(whic)m(h)f │ │ │ │ │ ├── ps2ascii {} │ │ │ │ │ │ @@ -22,15 +22,15 @@ │ │ │ │ │ │ simplest operations, and so when we need to manipulate an double vector inside a loop, we extract │ │ │ │ │ │ out the size and pointer to the base array from the DV object. On the other hand, the convenience │ │ │ │ │ │ makes it a widely used object. │ │ │ │ │ │ 1.1 Data Structure │ │ │ │ │ │ The DV structure has three fields. │ │ │ │ │ │ • int size : present size of the vector. │ │ │ │ │ │ 1 │ │ │ │ │ │ - 2 DV : DRAFT January 16, 2024 │ │ │ │ │ │ + 2 DV : DRAFT February 18, 2025 │ │ │ │ │ │ • int maxsize : maximum size of the vector. │ │ │ │ │ │ • int owned : owner flag for the data. When owned = 1, storage for owned double’s has been │ │ │ │ │ │ allocated by this object and can be free’d by the object. When owned == 0 but size > 0 , │ │ │ │ │ │ this object points to entries that have been allocated elsewhere, and these entries will not be │ │ │ │ │ │ free’d by this object. │ │ │ │ │ │ • double *vec : pointer to the base address of the double vector │ │ │ │ │ │ The size, maxsize, nowned and vec fields need never be accessed directly — see the DV size(), │ │ │ │ │ │ @@ -53,15 +53,15 @@ │ │ │ │ │ │ the storage for vec is free’d by a call to DVfree(). The structure’s default fields are then set │ │ │ │ │ │ with a call to DV setDefaultFields(). │ │ │ │ │ │ Error checking: If dv is NULL an error message is printed and the program exits. │ │ │ │ │ │ 4. void DV_free ( DV *dv ) ; │ │ │ │ │ │ This method releases any storage by a call to DV clearData() then free’s the storage for the │ │ │ │ │ │ structure with a call to free(). │ │ │ │ │ │ Error checking: If dv is NULL an error message is printed and the program exits. │ │ │ │ │ │ - DV : DRAFT January 16, 2024 3 │ │ │ │ │ │ + DV : DRAFT February 18, 2025 3 │ │ │ │ │ │ 1.2.2 Instance methods │ │ │ │ │ │ These method allow access to information in the data fields without explicitly following pointers. │ │ │ │ │ │ There is overhead involved with these method due to the function call and error checking inside │ │ │ │ │ │ the methods. │ │ │ │ │ │ 1. int DV_owned ( DV *dv ) ; │ │ │ │ │ │ This method returns the value of owned. If owned > 0, then the object owns the data pointed │ │ │ │ │ │ to by vec and will free this data with a call to DVfree() when its data is cleared by a call to │ │ │ │ │ │ @@ -85,15 +85,15 @@ │ │ │ │ │ │ This method fills *psize with the size of the vector and **pentries with the base address │ │ │ │ │ │ of the vector. │ │ │ │ │ │ Error checking: If dv, psize or pentriesis NULL, an error message is printed and the program │ │ │ │ │ │ exits. │ │ │ │ │ │ 7. void DV_setEntry ( DV *dv, int loc, double value ) ; │ │ │ │ │ │ This method sets the loc’th entry of the vector to value. │ │ │ │ │ │ Error checking: If dv is NULL or loc < 0, an error message is printed and the program exits. │ │ │ │ │ │ - 4 DV : DRAFT January 16, 2024 │ │ │ │ │ │ + 4 DV : DRAFT February 18, 2025 │ │ │ │ │ │ 1.2.3 Initializer methods │ │ │ │ │ │ There are three initializer methods. │ │ │ │ │ │ 1. void DV_init ( DV *dv, int size, double *entries ) ; │ │ │ │ │ │ This method initializes the object given a size for the vector and a possible pointer to the │ │ │ │ │ │ vectors’ storage. Any previous data is cleared with a call to DV clearData(). If entries != │ │ │ │ │ │ NULL then the vec field is set to entries, the size and maxsize fields are set to size, and │ │ │ │ │ │ owned is set to zero because the object does not own the entries. If entries is NULL and size │ │ │ │ │ │ @@ -123,15 +123,15 @@ │ │ │ │ │ │ increased with a call to DV setMaxsize(). The size field is set to newsize. │ │ │ │ │ │ Error checking: If dv is NULL, or newsize < 0, or if 0 < maxsize < newsize and owned = │ │ │ │ │ │ 0, an error message is printed and the program exits. │ │ │ │ │ │ 1.2.4 Utility methods │ │ │ │ │ │ 1. void DV_shiftBase ( DV *dv, int offset ) ; │ │ │ │ │ │ This method shifts the base entries of the vector and decrements the present size and max- │ │ │ │ │ │ imum size of the vector by offset. This is a dangerous method to use because the state of │ │ │ │ │ │ - DV : DRAFT January 16, 2024 5 │ │ │ │ │ │ + DV : DRAFT February 18, 2025 5 │ │ │ │ │ │ the vector is lost, namely vec, the base of the entries, is corrupted. If the object owns its │ │ │ │ │ │ entries and DV free(), DV setSize() or DV setMaxsize() is called before the base has been │ │ │ │ │ │ shifted back to its original position, a segmentation violation will likely result. This is a very │ │ │ │ │ │ useful method, but use with caution. │ │ │ │ │ │ Error checking: If dv is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 2. void DV_push ( DV *dv, double val ) ; │ │ │ │ │ │ This method pushes an entry onto the vector. If the vector is full, i.e., if size == maxsize │ │ │ │ │ │ @@ -159,15 +159,15 @@ │ │ │ │ │ │ This method shuffles the entries in the vector using seed as a seed to a random number │ │ │ │ │ │ generator. │ │ │ │ │ │ Error checking: If dv is NULL, size <= 0 or if vec == NULL, an error message is printed and │ │ │ │ │ │ the program exits. │ │ │ │ │ │ 7. int DV_sizeOf ( DV *dv ) ; │ │ │ │ │ │ This method returns the number of bytes taken by the object. │ │ │ │ │ │ Error checking: If dv is NULL an error message is printed and the program exits. │ │ │ │ │ │ - 6 DV : DRAFT January 16, 2024 │ │ │ │ │ │ + 6 DV : DRAFT February 18, 2025 │ │ │ │ │ │ 8. double * DV_first ( DV *dv ) ; │ │ │ │ │ │ double * DV_next ( DV *dv, int *pd ) ; │ │ │ │ │ │ These two methods are used as iterators, e.g., │ │ │ │ │ │ for ( pd = DV_first(dv) ; pd != NULL ; pd = DV_next(dv, pd) ) { │ │ │ │ │ │ do something with entry *pd │ │ │ │ │ │ } │ │ │ │ │ │ Each method checks to see if dv or pd is NULL, if so an error message is printed and the │ │ │ │ │ │ @@ -193,15 +193,15 @@ │ │ │ │ │ │ smaller than tausmall, or larger than taubig are placed into pnzero, *pnsmall and *pnbig, │ │ │ │ │ │ respectively. On return, the size of the xDV and yDV objects is npts. │ │ │ │ │ │ Error checking: If dv, xDV, yDV, pnsmall or pnbig are NULL, or if npts ≤ 0, or if taubig < 0.0 │ │ │ │ │ │ or if tausmall > taubig, an error message is printed and the program exits. │ │ │ │ │ │ 1.2.5 IO methods │ │ │ │ │ │ There are the usual eight IO routines. The file structure of a DV object is simple: the first entry is │ │ │ │ │ │ size, followed by the size entries found in vec[]. │ │ │ │ │ │ - DV : DRAFT January 16, 2024 7 │ │ │ │ │ │ + DV : DRAFT February 18, 2025 7 │ │ │ │ │ │ 1. int DV_readFromFile ( DV *dv, char *fn ) ; │ │ │ │ │ │ This method reads a DV object from a file. It tries to open the file and if it is successful, it │ │ │ │ │ │ then calls DV readFromFormattedFile() or DV readFromBinaryFile(), closes the file and │ │ │ │ │ │ returns the value returned from the called routine. │ │ │ │ │ │ Error checking: If dv or fn are NULL, or if fn is not of the form *.dvf (for a formatted file) │ │ │ │ │ │ or *.dvb (for a binary file), an error message is printed and the method returns zero. │ │ │ │ │ │ 2. int DV_readFromFormattedFile ( DV *dv, FILE *fp ) ; │ │ │ │ │ │ @@ -230,15 +230,15 @@ │ │ │ │ │ │ This method writes a DV object to a file in a human readable format. is called to write out │ │ │ │ │ │ the header and statistics. The entries of the vector then follow in eighty column format using │ │ │ │ │ │ the DVfprintf() method. The value 1 is returned. │ │ │ │ │ │ Error checking: If dv or fp are NULL, an error message is printed and zero is returned. │ │ │ │ │ │ 8. int DV_writeStats ( DV *dv, FILE *fp ) ; │ │ │ │ │ │ This method writes the header and statistics to a file. The value 1 is returned. │ │ │ │ │ │ Error checking: If dv or fp are NULL, an error message is printed and zero is returned. │ │ │ │ │ │ - 8 DV : DRAFT January 16, 2024 │ │ │ │ │ │ + 8 DV : DRAFT February 18, 2025 │ │ │ │ │ │ 9. int DV_writeForMatlab ( DV *dv, char *name, FILE *fp ) ; │ │ │ │ │ │ This method writes the entries of the vector to a file suitable to be read by Matlab. The │ │ │ │ │ │ character string name is the name of the vector, e.g, if name = "A", then we have lines of the │ │ │ │ │ │ form │ │ │ │ │ │ A(1) = 1.000000000000e0 ; │ │ │ │ │ │ A(2) = 2.000000000000e0 ; │ │ │ │ │ │ ... │ │ │ ├── ./usr/share/doc/spooles-doc/DenseMtx.ps.gz │ │ │ │ ├── DenseMtx.ps │ │ │ │ │ @@ -10,15 +10,15 @@ │ │ │ │ │ %%EndComments │ │ │ │ │ %%BeginDefaults │ │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ │ %%EndDefaults │ │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ │ %DVIPSCommandLine: dvips main -o DenseMtx.ps │ │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ │ -%DVIPSSource: TeX output 2024.01.16:2047 │ │ │ │ │ +%DVIPSSource: TeX output 2025.02.18:0318 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -1623,20 +1623,21 @@ │ │ │ │ │ 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 52 /four put │ │ │ │ │ -dup 54 /six put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ +dup 56 /eight put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 74 /J put │ │ │ │ │ +dup 70 /F put │ │ │ │ │ dup 97 /a put │ │ │ │ │ -dup 110 /n put │ │ │ │ │ +dup 98 /b put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ dup 114 /r put │ │ │ │ │ dup 117 /u put │ │ │ │ │ dup 121 /y put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ @@ -1820,89 +1821,93 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ │ -C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ │ -6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ │ -11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ │ -1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ │ -A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ │ -F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ │ -EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ │ -033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ │ -A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ │ -468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8A71FF9C085003EBB4F4 │ │ │ │ │ -3D271F5B16B1AAD3EBDC391F534AA46E545E9D8659DD19B309C3B7625A8396FA │ │ │ │ │ -2519464539D46E43ACB72952313C8497315E0319C08628023E8FC54D7D3BAC29 │ │ │ │ │ -D5AD8EFDABF0C33C7AFB7151A6606C62A87F0F5F783569AC4C881A992E3FE420 │ │ │ │ │ -297F7BC5147F3B2FA98450D2F8B07F7D229BC8BE06729920CFEC22556740E1CB │ │ │ │ │ -3DE09AC763C6D4A20AD1599C368FABD07BC35C16683F2A0311A88983415A9140 │ │ │ │ │ -2EFC4BC1B10DCAD4B2B8A28510E5BD39D6616D2B9B079ED3CF9C315B7DEC29D9 │ │ │ │ │ -251DFD0194B34EC175964C23383F23FFB2E41B698C405815D65EAFF9E9DD1DDE │ │ │ │ │ -30F77924656C288B8DDB2E5B0E7B1FAA66791DE3848EE6DE63AD0E945E49C6C7 │ │ │ │ │ -9FCA16E01F027F9EF7ACB55F02F5B0136480802F789F6FE14B430879979BA04D │ │ │ │ │ -F481AD4CF47E6847936F377FB04869F9A80E597301BFCAB718D8764094673876 │ │ │ │ │ -BCEF8FA3701608C84B3A0399A11D2E6AD922CCB7D72AF9EBFB30F4648A37A123 │ │ │ │ │ -CB8FB14BDC351692CF0CCAA5CA9383C2B23BAAA38700327EB743FBBE9EE04041 │ │ │ │ │ -13F5CEF4B3881BBC051C33369A82B3505B1CFD7D91AEF2E43EA728EE48E2D854 │ │ │ │ │ -5A7E516998ACDD4FD835FA901C5A21810A56D51FE919B2E58408EEB4DAEB487F │ │ │ │ │ -BA7F1D292CED902DF3533566D96DAD918319EA650D4FC7D9E0170CDE620F755B │ │ │ │ │ -0E7AE02D9B118481B26F5FF7060FBCFA2A682B6826F00679BCDA68794C05286D │ │ │ │ │ -B616DD08372ACDE0AE6E7EF116F0D36F16241ED4F0E8CCD80377792E3BB1343C │ │ │ │ │ -EEB22CC77738F7CBCBA32CF6C3979F6DF7ED81A89AE8928FD7CC550F2730BA88 │ │ │ │ │ -1B51CEDC63F4C47F261AFCAB7AC3CED20B15C97E714A460A1A3B16436B4A5149 │ │ │ │ │ -8F91DA4BE0B9B648534CE5F442117036B602DC91E2852BEA62F55803B833FDF7 │ │ │ │ │ -9F901AB87489E703DDEED1091A79DC73B4440BBBF2C7592B441187C4A3562204 │ │ │ │ │ -859F08BA3CE2A8ECCD5AAD13C50FB806FE79A388F1822C5608837CBDE526A044 │ │ │ │ │ -12E5CDE4A066932AF2ACA7E8FC6BA4603640944718752975B7DA6E906BE1EA01 │ │ │ │ │ -46736FF5D1AA1CC682D011B6039CF98C35E36D4F14ABC84A38B7203CC9A17756 │ │ │ │ │ -B2B0345276798F1A88A54AD9FEA0853C6DDF28525ED4F0B7380D14147012C2A4 │ │ │ │ │ -5B02888C986C76497EA4C729B0B82EE73C1A1A8E8F1ABF401E341028E9C15AF9 │ │ │ │ │ -354706D8DC07492921AD0932A46736C0D1B066D00287DACCC068FAE6A796EC89 │ │ │ │ │ -54D1D73AA88F3A5912BA9D3FF70065C8D0D0DAD1CD846501E06694374EFDBEC6 │ │ │ │ │ -931F644D5E8494AFC742423AD9A487658E310E0682BE19B8475F4D450487A686 │ │ │ │ │ -2B94494DEAF1C0F59DE82F2CE64BEE5E97F942FCFA1187ED6AA5761E951A7BF7 │ │ │ │ │ -9F842E34A4656C58B35A9E99F7E6762CEE11E0CF59FFD75D7382C5EE6DBB43F1 │ │ │ │ │ -ED219071D3FB22DBA90977723BB467C0490D042684C0724F40DCA3E0D8F1F4E7 │ │ │ │ │ -3C4F9A67BE6528185EAAFDD415224F7E256A4EA00111C17C746CBD80BF569A27 │ │ │ │ │ -D81195D7F79C1CCEEF30ED00D49F48B63E4B8D7953403A3710AE953CC1B76F0F │ │ │ │ │ -F523D777A6A186F262A602543F94AF7471DBE25FEBC207DB42DAF7DC9A5781FB │ │ │ │ │ -2131AD42869D966A734AAE3466DF1CE9D1BCFA72409A558C0AEE6A8E2FEAACB6 │ │ │ │ │ -2CDABCC28433034848ACF9FB4465D272E4AFC48572647F05F41C7A293CC5B595 │ │ │ │ │ -AD31555FB708A72962707348BC7033A8224BD42EB9D75FDF3AE9E6A9C960B330 │ │ │ │ │ -5137DF59F8E2E0D535F41524ABDF070745A4FA25CD8DFD38A5FF30A95452B875 │ │ │ │ │ -6569E8812631300D79A942C563AF174AC05C9F2D09D7D5D3C605F5A6B7F21B34 │ │ │ │ │ -18F270A993B050838E701A17938D1C156CBA7CA4BAC7C562CE9D7B758EAB25A9 │ │ │ │ │ -A6DFFC71F65561341847B776DF34061CE3D439B87B857626987EC93B3B95B8E8 │ │ │ │ │ -76FFB16B263675333FA10414FEED707FF7C366BF8B20FF8577CDEBEBCF1A5BCE │ │ │ │ │ -258C09C90175A5278B7C444A623E3331FDE5A6387B3E389540ED1E7E883958F3 │ │ │ │ │ -3A5C89CCD62256FA069DF4A5090FB17C1F1757C9209DAFB8A1F47182BF3E88D9 │ │ │ │ │ -0B5376B59EE165A761902759C8ED7F5AD301E7EB8B49CC09AF921DB45B7F8002 │ │ │ │ │ -AB32E73AAE53942DE0F9175D8446017006C9C0B93EF39C13B7A879F2F6DDFF16 │ │ │ │ │ -204BB24F976847CF006FD29332FCCB255B5116F7077A44F7066C39C81DC4BAD2 │ │ │ │ │ -40DB2753626C0102E5D047522ABC38EA294A699B8DFD9CA0A7980561A1062E90 │ │ │ │ │ -AB11EE286A9C238D9F721D9980D0A1828C2814972622D948CEE8C812C19A9A03 │ │ │ │ │ -608ED0AC138A436FFBF8BE3D1E66C87793416AF38ED9BC5424568A175FBDAA9E │ │ │ │ │ -D6FC11A7021693819B051562B5A59F32629E2D6019D69DD329BE1894A2B295E1 │ │ │ │ │ -1DCE9683B29AE126C56F26E5C595BF1A8249BDE231DBE8B066F7F62EF149B975 │ │ │ │ │ -A863969A4690504A5EA064721DA909B8157C0B39FBF8228D95CB655E406161E1 │ │ │ │ │ -148610FAEED7C5509880223C06A66DA19E10F94DC2DB481B26 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004FD597ED │ │ │ │ │ +EFDBC64ABD9B79386FB2427D1A63522195B1239C09F8CB3F8BD7A245A6DD82E3 │ │ │ │ │ +260C3889587626DFC5F7978E55F5524ABD6A3319CDD3D3F40D040044D51DA4E1 │ │ │ │ │ +6797EEAC7AA07C77EC6DB0E6E182B545A8BEF63B14F3FC07BAC09E7CD5C17ED6 │ │ │ │ │ +10080704B0DA4E9BA12F968DF8A58458D17E9A5B1F14A83DC51F5B161ADEE1CC │ │ │ │ │ +0183D82ED92C6FC7203C289949EDF0284D9893029FF5408E421324625F17C3E5 │ │ │ │ │ +2437C8F75A9D68EE1AF9174FEA6FC6BF793C7D2E497EA90396CF1A645E283B69 │ │ │ │ │ +8425F47C323587DF91E1D596DCB1E3A787C955D9D965A5E3E26ADF58B62AD5F9 │ │ │ │ │ +0C9AC784DE479780606354111E3202F215650DBBE1063A46F3C10B9EBC974DDA │ │ │ │ │ +A1A28DBBD43E9E5BFF000B12C787D0427928078F8EC5FE90DED97E6C129E8DEA │ │ │ │ │ +51F66504DB83764E52B0BA68DF7BE684C8959CB1D3345CC48221A9A4683306C0 │ │ │ │ │ +62B634E0A539383F0C7A788D9711EFF414869CCC5659D78CEBE009BF2463F56A │ │ │ │ │ +0ADC993348FE96DF7C250E13ED6504AACFE8F8DCA2D2048D9D8CFA127D363EAC │ │ │ │ │ +1F0630E2D1B621E6954038195D965B91FD974FA3F1B8B29D200A16CEBA645E2F │ │ │ │ │ +CEEE6FD49FBBD49E38AE67D4BFFCE91F1FC422554EC4409C5FA18D40FCD6D9B3 │ │ │ │ │ +2185ED1E0F98106D4339F086B05CA36E56EC22C60E2CE23F9C4CC403ACAD3F94 │ │ │ │ │ +4086B4DF6DFA0B7B4716417263E7B558535566AED2F6C2F9846A16D71A7930A7 │ │ │ │ │ +49232D3D16C4A01CF1A1998A06F40062ED329179A85668537C55D0BC24FC0010 │ │ │ │ │ +54DA83E2FC66B2A5D428E6A9BFC983253668C0ECE6CA36DBF97C4B7659D50842 │ │ │ │ │ +C65B36604840EEDA399B57E2DEFAC3E7FB031634CE33D04238F9854D2AAAF448 │ │ │ │ │ +34DA5F3BCCED3166FEEE82BB0BBA0A397CC2F95865CB52AABFF454D93B425809 │ │ │ │ │ +A26AC459F321FD23E2262FE816D06BAAECF32AAF167F84799AF80F9F88388D07 │ │ │ │ │ +0DB5FD57AFEE2850A8DFE977E6AE39CB3DC16DB1A163A583C86C6F775CE33521 │ │ │ │ │ +0081C0BBBAD6D30D26C66B28B38CEAC78FEA5FB3CC5853656B67C6D9D80EB30E │ │ │ │ │ +397558C9179AF5920F34DAB3F578DFCF0DBB137AED17D6325C23883E69EE4621 │ │ │ │ │ +34355A70C19EA68891E1CA937376901C85CDEE109F1665943E29A216DC00937A │ │ │ │ │ +B983A729A4654AD09187C0242D52FA4ADD0853EF4888864914D7D81C56578DD4 │ │ │ │ │ +3B51907032022E6E412D4F114675DEDCA8A9E85DC03A0B583FECD84432D15F70 │ │ │ │ │ +01F627BD6EC91F9FCFDA01BF40E1229B5F164309DBB641AD50970503DA2048C1 │ │ │ │ │ +DF8F36E8D252EE113F0B46677D9BAF376BAE18D74CFB0DBBD0C7E9D0A58BA3ED │ │ │ │ │ +1E5099CAE073EB5638617760AB57849893764EA9735173CD1EAB66884CEA7EE3 │ │ │ │ │ +8843327B2E145BD6FBB49102776B82BC511D109F8BE9E7E99DADABABEDC3CFD9 │ │ │ │ │ +393578FFD85907DFF2849E4CDE6FA4DEC7E1C150EBE4047FFB650F9548BE6D11 │ │ │ │ │ +0C51226A5436F18BF20A02E0F888F46B6AC3A8E8D927ECD3B5E095933AD3859F │ │ │ │ │ +5167C41D832EFCC4093BD2AFA7101AB430E57DAFC3590F05D3CBABB32BC203A0 │ │ │ │ │ +467B23BDB830487C9AA5B85BAC065F8538871B4180F8C4732E637DB090CFDE5A │ │ │ │ │ +3F4F2B5BFAFB848BAAD1A17CB076B34159601639BD93ECAB1214ACABF2C67FE2 │ │ │ │ │ +0658AA20B08681070FF56F1CC52144ABA8765D6E124D1CEA9BBA102808CE1BB2 │ │ │ │ │ +5EDF46BC7BBC2A5B49EE6EC28F5797A3969B057B21FCDBBD0E60848FF14F6CA3 │ │ │ │ │ +70F3060BDBB019B22722C99C7691760F013763B7FBEB62830AE215F195BF9F01 │ │ │ │ │ +21BF4377397E89574CFA47D123AA506A570A77BA6EB4AAB0B237A26154880293 │ │ │ │ │ +3952F832F72ECCB024F02385E5EE8566B165904B594E30D0700D033C6B429F6F │ │ │ │ │ +2A20BC774F442BC9CE29FCC81807C2768A8BC927A215558FBF36DC53F477F04A │ │ │ │ │ +41DA66E1A85B659EB761230977EAD7DA0150513D3323B143D4E2A61BCF03334C │ │ │ │ │ +C0EE3E1B06CFAF58ECC910BD81F0352B75FF1594D6A4EF504232D442174BE766 │ │ │ │ │ +0F8E703F97E21D25D4CD097549C31FEE7017C3916EFB02E7BF869172889827B6 │ │ │ │ │ +A48465EB7612BA3DBC6A9436C7167F149A25CE9F8E3F4F8DE3B5ADF6C0986CB3 │ │ │ │ │ +3A7E2DAB44AB489796461536F5F713017F2620AD03295CAE9285F08974AE0DF8 │ │ │ │ │ +D739260929619B509491AFF09C4CAEF9E65C2CA69470C907ECBF3AB6C955360D │ │ │ │ │ +05ABAC306DB51122A1ADC7EF0DD70FA299A45C505A83727D4598C86319EE9C06 │ │ │ │ │ +7218EFD4F40388354BCF1B79593D5AD221DF955D081F99F880E5CED07321AB3E │ │ │ │ │ +A2FCB8B05D54807D8E15E65B78DCE12989B9276350080C905DBB74CE9AA7E246 │ │ │ │ │ +5D3BAED292C562D4CF54617FCC6654496C7996D1ECE1EFF9258716AB763A12E6 │ │ │ │ │ +316E4C5587351A6DB011F58F6A15BC28BEBDC3836E0CB892807FEC228DC1B380 │ │ │ │ │ +92F7F42279F08D60F13D6A4CB425543C3644461461CBF6F27B6603F613D1FCF8 │ │ │ │ │ +A8410AD82D1498166AEB35D4125D7E2ADEAAB18BC04806AED53513F066E5F154 │ │ │ │ │ +3E13E863C50B9814EE2FB978D0D24A03FAF650CB6E2CADF1E6BE6BAF699AFC03 │ │ │ │ │ +E1A0EEB207B3B9A689ED5B373FE86686AD230BE6C18E1673DDA50E224B343EC5 │ │ │ │ │ +903BA0C8041C13607B50D5852AC7970B15C244E6EBA7D54B3086312CF04761D6 │ │ │ │ │ +7D3D75D51F20C371494AB81AB4A9838B20B483B851D01FEF41EA5C0B4755B964 │ │ │ │ │ +EB6E9B178051C556A010994EB88EAE641F4C1A0D7E0F98D5267E18AEF1AEA7E7 │ │ │ │ │ +9030A97DF89AFF621981C33B645FFB5F3BB2065A7661D11B26E0999561DF3580 │ │ │ │ │ +4A76A05DFAF8085525F8D5C01936F03C32E26E72569371C9EA3B8916F9DFC5FC │ │ │ │ │ +6A6F25A0FFDB981BA8B896393D75774D50828E6ADE903C45406E354703A4BC56 │ │ │ │ │ +2C49A47FEAC970DC433E3050C49F7FB945A9705BD8852D2D65D935F244D3B423 │ │ │ │ │ +EFAB84AAAAB8FBAFF50AFF372A533BCCEB5FC273DBADCF715776DF02A5DCBA9A │ │ │ │ │ +FBF265FAB4745D6475B33611EEE1EA95E7584E0BEEC7CA789AA69C8D03D6F8C0 │ │ │ │ │ +5B6844E2B901ACA560C0433B053D134866E567425174E47173679AAD4486A2D3 │ │ │ │ │ +369C29E4DD2CD6ACA1BE80ED8FF0A9C58A616D26E758BD8E6342624EC83FB590 │ │ │ │ │ +BD354B52B60BB054FAFE9AC63E1564FBC721FE8F276B0413EC89A2C85E5ED1B0 │ │ │ │ │ +3A9D83BE62A4488ADE7CE69971A8AF7E5862A4290EEF6F00D4171C7FFB360065 │ │ │ │ │ +92E72BF02BE27161AE0BB5516572A0BDC4F316FFB24B38484AC8D1FD4CD86062 │ │ │ │ │ +A2B5D03CF28C3A679C039A6EFDD4C9DA7E463AD60234C9F6BBEE48D87DD94D85 │ │ │ │ │ +842F495F3E25723718682CE4D6224CBBF4456F03077EDF736D65B9DDAB09470E │ │ │ │ │ +17742D82011FFA96BFE86B96E858F9352FCD20C3D46B77DBDEE54336EC2249EA │ │ │ │ │ +211F6DFFF5BEA1E5192BE1BAC0BDD5EDDB3D56C6F7C6E543561A0B39E5C1B04F │ │ │ │ │ +C683A7516B6E69D682455386DDA709929D621FA434D403E895AA0A77DBE1DFD2 │ │ │ │ │ +0D060DF82378880147ED97C6E8149686FA048710B113760AC1DA4512FF8556B3 │ │ │ │ │ +16E2447485B8C3CD58D0469C4A45FFB4CB0322BB284C02 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -3691,16 +3696,16 @@ │ │ │ │ │ %%EndFont │ │ │ │ │ TeXDict begin 40258437 52099151 1000 600 600 (main.dvi) │ │ │ │ │ @start /Fa 234[65 21[{}1 83.022 /CMSY10 rf /Fb 195[65 │ │ │ │ │ 60[{}1 83.022 /CMMI10 rf /Fc 133[50 59 4[44 44 3[56 62 │ │ │ │ │ 93 31 2[31 62 2[51 62 50 1[54 11[86 5[84 5[42 6[80 12[56 │ │ │ │ │ 56 56 56 56 2[31 46[{}24 99.6264 /CMBX12 rf /Fd 135[62 │ │ │ │ │ 3[62 62 4[62 8[62 23[62 8[62 68[{}7 119.552 /CMTT12 rf │ │ │ │ │ -/Fe 134[44 3[46 2[33 3[46 12[42 22[43 15[23 3[42 1[42 │ │ │ │ │ -1[42 42 42 3[23 44[{}13 83.022 /CMSL10 rf │ │ │ │ │ +/Fe 134[44 3[46 2[33 12[37 2[46 42 26[54 11[23 1[42 2[42 │ │ │ │ │ +2[42 42 42 3[23 44[{}14 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 │ │ │ │ │ @@ -3823,40 +3828,41 @@ │ │ │ │ │ b Fj(returns)j Fi(1)g Fj(if)h(the)g(matrix)f(has)g(real)g(en)n(tries,)g │ │ │ │ │ (and)h Fi(0)f Fj(otherwise.)125 5407 y Ff(\210)42 b Fi(DENSEMTX)p │ │ │ │ │ 565 5407 V 28 w(IS)p 681 5407 V 30 w(COMPLEX\(mtx\))23 │ │ │ │ │ b Fj(returns)k Fi(1)g Fj(if)h(the)g(matrix)f(has)g(complex)g(en)n │ │ │ │ │ (tries,)g(and)h Fi(0)f Fj(otherwise.)1929 5656 y(1)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fj(2)p 125 100 1114 4 v │ │ │ │ │ -1279 w Fi(DenseMtx)25 b Fe(:)37 b Fh(DRAFT)27 b Fe(Jan)n(uary)e(16,)i │ │ │ │ │ -(2024)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) │ │ │ │ │ -d(an)n(y)h(allo)r(cated)0 1237 y(data,)27 b(and)h(free'ing)f(the)h(ob)5 │ │ │ │ │ -b(ject.)101 1447 y(1.)42 b Fi(DenseMtx)e(*)j(DenseMtx_new)c(\()k(void)f │ │ │ │ │ -(\))h(;)208 1581 y Fj(This)27 b(metho)r(d)h(simply)g(allo)r(cates)f │ │ │ │ │ -(storage)f(for)h(the)h Fi(DenseMtx)d Fj(structure)i(and)g(then)i(sets)e │ │ │ │ │ -(the)h(default)g(\014elds)g(b)n(y)f(a)208 1681 y(call)g(to)g │ │ │ │ │ -Fi(DenseMtx)p 818 1681 27 4 v 28 w(setDefaultFields\()o(\))p │ │ │ │ │ -Fj(.)101 1849 y(2.)42 b Fi(void)f(DenseMtx_setDefau)o(ltF)o(ie)o(lds)c │ │ │ │ │ -(\()43 b(DenseMtx)d(*mtx)i(\))h(;)208 1983 y Fj(The)29 │ │ │ │ │ -b(structure's)g(\014elds)g(are)g(set)g(to)g(default)h(v)-5 │ │ │ │ │ -b(alues:)40 b Fi(type)28 b Fj(=)h Fi(SPOOLES)p 2558 1983 │ │ │ │ │ -V 29 w(REAL)p Fj(,)e Fi(rowid)h Fj(=)h Fi(colid)e Fj(=)i │ │ │ │ │ -Fi(-1)p Fj(,)h Fi(nrow)d Fj(=)208 2083 y Fi(ncol)h Fj(=)i │ │ │ │ │ -Fi(inc1)f Fj(=)h Fi(inc2)e Fj(=)i(0)g(and)g Fi(rowind)e │ │ │ │ │ -Fj(=)i Fi(colind)e Fj(=)i Fi(entries)d Fj(=)j Fi(next)f │ │ │ │ │ -Fj(=)h Fi(NULL)f Fj(.)h(The)g Fi(wrkDV)f Fj(ob)5 b(ject)30 │ │ │ │ │ -b(has)208 2183 y(its)d(default)h(\014elds)g(set)g(via)f(a)g(call)g(to)h │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fj(2)p 125 100 1097 4 v │ │ │ │ │ +1262 w Fi(DenseMtx)24 b Fe(:)37 b Fh(DRAFT)27 b Fe(F)-7 │ │ │ │ │ +b(ebruary)27 b(18,)g(2025)p 2804 100 V 0 390 a Fg(1.2)135 │ │ │ │ │ +b(Protot)l(yp)t(es)46 b(and)f(descriptions)g(of)g Fd(DenseMtx)c │ │ │ │ │ +Fg(metho)t(ds)0 598 y Fj(This)35 b(section)f(con)n(tains)g(brief)h │ │ │ │ │ +(descriptions)f(including)h(protot)n(yp)r(es)f(of)h(all)f(metho)r(ds)i │ │ │ │ │ +(that)f(b)r(elong)f(to)h(the)g Fi(DenseMtx)0 698 y Fj(ob)5 │ │ │ │ │ +b(ject.)0 958 y Fc(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ │ +1138 y Fj(As)21 b(usual,)g(there)f(are)g(four)g(basic)g(metho)r(ds)g │ │ │ │ │ +(to)h(supp)r(ort)f(ob)5 b(ject)20 b(creation,)h(setting)f(default)h │ │ │ │ │ +(\014elds,)h(clearing)d(an)n(y)h(allo)r(cated)0 1237 │ │ │ │ │ +y(data,)27 b(and)h(free'ing)f(the)h(ob)5 b(ject.)101 │ │ │ │ │ +1447 y(1.)42 b Fi(DenseMtx)e(*)j(DenseMtx_new)c(\()k(void)f(\))h(;)208 │ │ │ │ │ +1581 y Fj(This)27 b(metho)r(d)h(simply)g(allo)r(cates)f(storage)f(for)h │ │ │ │ │ +(the)h Fi(DenseMtx)d Fj(structure)i(and)g(then)i(sets)e(the)h(default)g │ │ │ │ │ +(\014elds)g(b)n(y)f(a)208 1681 y(call)g(to)g Fi(DenseMtx)p │ │ │ │ │ +818 1681 27 4 v 28 w(setDefaultFields\()o(\))p Fj(.)101 │ │ │ │ │ +1849 y(2.)42 b Fi(void)f(DenseMtx_setDefau)o(ltF)o(ie)o(lds)c(\()43 │ │ │ │ │ +b(DenseMtx)d(*mtx)i(\))h(;)208 1983 y Fj(The)29 b(structure's)g │ │ │ │ │ +(\014elds)g(are)g(set)g(to)g(default)h(v)-5 b(alues:)40 │ │ │ │ │ +b Fi(type)28 b Fj(=)h Fi(SPOOLES)p 2558 1983 V 29 w(REAL)p │ │ │ │ │ +Fj(,)e Fi(rowid)h Fj(=)h Fi(colid)e Fj(=)i Fi(-1)p Fj(,)h │ │ │ │ │ +Fi(nrow)d Fj(=)208 2083 y Fi(ncol)h Fj(=)i Fi(inc1)f │ │ │ │ │ +Fj(=)h Fi(inc2)e Fj(=)i(0)g(and)g Fi(rowind)e Fj(=)i │ │ │ │ │ +Fi(colind)e Fj(=)i Fi(entries)d Fj(=)j Fi(next)f Fj(=)h │ │ │ │ │ +Fi(NULL)f Fj(.)h(The)g Fi(wrkDV)f Fj(ob)5 b(ject)30 b(has)208 │ │ │ │ │ +2183 y(its)d(default)h(\014elds)g(set)g(via)f(a)g(call)g(to)h │ │ │ │ │ Fi(DV)p 1497 2183 V 30 w(setDefaultFields)o(\(\))p Fj(.)208 │ │ │ │ │ 2317 y Fh(Err)l(or)i(che)l(cking:)38 b Fj(If)28 b Fi(mtx)f │ │ │ │ │ Fj(is)g Fi(NULL)p Fj(,)f(an)i(error)d(message)i(is)g(prin)n(ted)h(and)f │ │ │ │ │ (the)h(program)e(exits.)101 2485 y(3.)42 b Fi(void)f(DenseMtx_clearDat) │ │ │ │ │ o(a)d(\()43 b(DenseMtx)d(*mtx)i(\))h(;)208 2619 y Fj(This)29 │ │ │ │ │ b(metho)r(d)i(clears)d(the)i(ob)5 b(ject)30 b(and)g(free's)f(an)n(y)g │ │ │ │ │ (o)n(wned)g(data)h(b)n(y)f(in)n(v)n(oking)g(the)p 2928 │ │ │ │ │ @@ -3897,17 +3903,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 1114 4 v 1280 100 a Fi(DenseMtx)24 │ │ │ │ │ -b Fe(:)37 b Fh(DRAFT)110 b Fe(Jan)n(uary)26 b(16,)h(2024)p │ │ │ │ │ -2747 100 V 1114 w Fj(3)101 390 y(5.)42 b Fi(int)g(DenseMtx_rowIncr)o │ │ │ │ │ +TeXDict begin 3 2 bop 83 100 1097 4 v 1262 100 a Fi(DenseMtx)25 │ │ │ │ │ +b Fe(:)37 b Fh(DRAFT)110 b Fe(F)-7 b(ebruary)26 b(18,)h(2025)p │ │ │ │ │ +2764 100 V 1097 w Fj(3)101 390 y(5.)42 b Fi(int)g(DenseMtx_rowIncr)o │ │ │ │ │ (em)o(ent)37 b(\()43 b(DenseMtx)d(*mtx)i(\))h(;)208 529 │ │ │ │ │ y Fj(This)24 b(metho)r(d)g(returns)f(the)i(ro)n(w)e(incremen)n(t)g(of)h │ │ │ │ │ (the)h(ob)5 b(ject,)24 b(the)h(di\013erence)f(in)g(memory)f(lo)r │ │ │ │ │ (cations)h(of)g(t)n(w)n(o)f(en)n(tries)208 629 y(in)k(consecutiv)n(e)g │ │ │ │ │ (ro)n(ws)f(in)i(the)g(same)f(column.)208 767 y Fh(Err)l(or)j(che)l │ │ │ │ │ (cking:)38 b Fj(If)28 b Fi(mtx)f Fj(is)g Fi(NULL)p Fj(,)f(an)i(error)d │ │ │ │ │ (message)i(is)g(prin)n(ted)h(and)f(the)h(program)e(exits.)101 │ │ │ │ │ @@ -3978,31 +3984,31 @@ │ │ │ │ │ Fi(jcol)f Fj(to)i(b)r(e)208 5169 y Fi(\(real,imag\))p │ │ │ │ │ Fj(.)208 5308 y Fh(Err)l(or)31 b(che)l(cking:)42 b Fj(If)29 │ │ │ │ │ b Fi(mtx)f Fj(is)h Fi(NULL)p Fj(,)e(or)h(if)i(the)f(matrix)g(is)g(not)g │ │ │ │ │ (complex,)g(or)f(if)h Fi(irow)f Fj(or)g Fi(jcol)f Fj(is)i(out)g(of)g │ │ │ │ │ (range,)f(an)208 5407 y(error)d(message)h(is)i(prin)n(ted)f(and)h(the)g │ │ │ │ │ (program)d(exits.)p eop end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fj(4)p 125 100 1114 4 v │ │ │ │ │ -1279 w Fi(DenseMtx)25 b Fe(:)37 b Fh(DRAFT)27 b Fe(Jan)n(uary)e(16,)i │ │ │ │ │ -(2024)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 │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fj(4)p 125 100 1097 4 v │ │ │ │ │ +1262 w Fi(DenseMtx)24 b Fe(:)37 b Fh(DRAFT)27 b Fe(F)-7 │ │ │ │ │ +b(ebruary)27 b(18,)g(2025)p 2804 100 V 60 390 a Fj(14.)41 │ │ │ │ │ +b Fi(int)h(DenseMtx_row)d(\()k(DenseMtx)d(*mtx,)h(int)i(irow,)e(double) │ │ │ │ │ +g(**prowent)f(\))j(;)208 517 y Fj(This)27 b(metho)r(d)h(\014lls)g │ │ │ │ │ +Fi(*prowent)c Fj(with)k(the)g(\014rst)g(lo)r(cation)f(of)g(the)h(en)n │ │ │ │ │ +(tries)f(in)h(ro)n(w)e Fi(irow)p Fj(.)208 644 y Fh(R)l(eturn)31 │ │ │ │ │ +b(c)l(o)l(des:)45 b Fi(1)31 b Fj(is)g(a)g(normal)f(return,)i │ │ │ │ │ +Fi(-1)e Fj(means)h Fi(mtx)f Fj(is)h Fi(NULL)p Fj(,)f │ │ │ │ │ +Fi(-2)g Fj(means)h(in)n(v)-5 b(alid)31 b(t)n(yp)r(e)g(for)g │ │ │ │ │ +Fi(mtx)p Fj(,)g Fi(-3)g Fj(means)208 744 y Fi(irow)26 │ │ │ │ │ +b Fj(is)h(out-of-range,)f Fi(-4)g Fj(means)h Fi(prowent)e │ │ │ │ │ +Fj(is)j Fi(NULL)p Fj(.)60 899 y(15.)41 b Fi(int)h(DenseMtx_column)37 │ │ │ │ │ +b(\()43 b(DenseMtx)e(*mtx,)g(int)i(jcol,)e(double)g(**pcolent)f(\))j(;) │ │ │ │ │ +208 1026 y Fj(This)27 b(metho)r(d)h(\014lls)g Fi(*pcolent)c │ │ │ │ │ Fj(with)k(the)g(\014rst)g(lo)r(cation)f(of)g(the)h(en)n(tries)f(in)h │ │ │ │ │ -(ro)n(w)e Fi(irow)p Fj(.)208 644 y Fh(R)l(eturn)31 b(c)l(o)l(des:)45 │ │ │ │ │ -b Fi(1)31 b Fj(is)g(a)g(normal)f(return,)i Fi(-1)e Fj(means)h │ │ │ │ │ -Fi(mtx)f Fj(is)h Fi(NULL)p Fj(,)f Fi(-2)g Fj(means)h(in)n(v)-5 │ │ │ │ │ -b(alid)31 b(t)n(yp)r(e)g(for)g Fi(mtx)p Fj(,)g Fi(-3)g │ │ │ │ │ -Fj(means)208 744 y Fi(irow)26 b Fj(is)h(out-of-range,)f │ │ │ │ │ -Fi(-4)g Fj(means)h Fi(prowent)e Fj(is)j Fi(NULL)p Fj(.)60 │ │ │ │ │ -899 y(15.)41 b Fi(int)h(DenseMtx_column)37 b(\()43 b(DenseMtx)e(*mtx,)g │ │ │ │ │ -(int)i(jcol,)e(double)g(**pcolent)f(\))j(;)208 1026 y │ │ │ │ │ -Fj(This)27 b(metho)r(d)h(\014lls)g Fi(*pcolent)c Fj(with)k(the)g │ │ │ │ │ -(\014rst)g(lo)r(cation)f(of)g(the)h(en)n(tries)f(in)h(column)g │ │ │ │ │ -Fi(jcol)p Fj(.)208 1153 y Fh(R)l(eturn)j(c)l(o)l(des:)45 │ │ │ │ │ +(column)g Fi(jcol)p Fj(.)208 1153 y Fh(R)l(eturn)j(c)l(o)l(des:)45 │ │ │ │ │ b Fi(1)31 b Fj(is)g(a)g(normal)f(return,)i Fi(-1)e Fj(means)h │ │ │ │ │ Fi(mtx)f Fj(is)h Fi(NULL)p Fj(,)f Fi(-2)g Fj(means)h(in)n(v)-5 │ │ │ │ │ b(alid)31 b(t)n(yp)r(e)g(for)g Fi(mtx)p Fj(,)g Fi(-3)g │ │ │ │ │ Fj(means)208 1253 y Fi(jcol)26 b Fj(is)h(out-of-range,)f │ │ │ │ │ Fi(-4)g Fj(means)h Fi(pcolent)e Fj(is)j Fi(NULL)p Fj(.)0 │ │ │ │ │ 1499 y Fc(1.2.3)112 b(Initialization)39 b(metho)s(ds)0 │ │ │ │ │ 1672 y Fj(There)27 b(are)g(three)g(initializer)g(metho)r(ds.)101 │ │ │ │ │ @@ -4075,17 +4081,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 1114 4 v 1280 100 a Fi(DenseMtx)24 │ │ │ │ │ -b Fe(:)37 b Fh(DRAFT)110 b Fe(Jan)n(uary)26 b(16,)h(2024)p │ │ │ │ │ -2747 100 V 1114 w Fj(5)0 390 y Fc(1.2.4)112 b(Utilit)m(y)38 │ │ │ │ │ +TeXDict begin 5 4 bop 83 100 1097 4 v 1262 100 a Fi(DenseMtx)25 │ │ │ │ │ +b Fe(:)37 b Fh(DRAFT)110 b Fe(F)-7 b(ebruary)26 b(18,)h(2025)p │ │ │ │ │ +2764 100 V 1097 w Fj(5)0 390 y Fc(1.2.4)112 b(Utilit)m(y)38 │ │ │ │ │ b(metho)s(ds)101 570 y Fj(1.)k Fi(int)g(DenseMtx_nbytesN)o(ee)o(ded)37 │ │ │ │ │ b(\()43 b(int)f(type,)g(int)g(nrow,)g(int)g(ncol)g(\))h(;)208 │ │ │ │ │ 705 y Fj(This)27 b(metho)r(d)h(returns)f(the)h(n)n(um)n(b)r(er)f(of)h │ │ │ │ │ (b)n(ytes)f(required)g(to)g(store)g(the)h(ob)5 b(ject's)27 │ │ │ │ │ b(information)g(in)h(its)g(bu\013er.)208 839 y Fh(Err)l(or)h(che)l │ │ │ │ │ (cking:)38 b Fj(If)27 b Fi(type)e Fj(is)i(neither)f Fi(SPOOLES)p │ │ │ │ │ 1758 839 27 4 v 29 w(REAL)f Fj(nor)g Fi(SPOOLES)p 2442 │ │ │ │ │ @@ -4164,34 +4170,35 @@ │ │ │ │ │ Fi(irowB)e Fj(is)h(out)h(of)f(range,)h(or)f(if)h Fi(mtxA)e │ │ │ │ │ Fj(is)h Fi(NULL)p Fj(,)f(or)h(if)h Fi(irowA)e Fj(is)h(out)h(of)208 │ │ │ │ │ 5308 y(range,)23 b(or)h(if)g(the)h(n)n(um)n(b)r(er)f(of)h(columns)f(in) │ │ │ │ │ g Fi(mtxB)f Fj(and)h Fi(mtxA)f Fj(are)g(not)h(the)h(same,)g(an)f(error) │ │ │ │ │ e(message)h(is)h(prin)n(ted)g(and)208 5407 y(the)k(program)d(exits.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 6 6 │ │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fj(6)p 125 100 1114 4 v │ │ │ │ │ -1279 w Fi(DenseMtx)25 b Fe(:)37 b Fh(DRAFT)27 b Fe(Jan)n(uary)e(16,)i │ │ │ │ │ -(2024)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 │ │ │ │ │ -Fi(irowA)e Fj(is)h(out)h(of)208 759 y(range,)23 b(or)h(if)g(the)h(n)n │ │ │ │ │ -(um)n(b)r(er)f(of)h(columns)f(in)g Fi(mtxB)f Fj(and)h │ │ │ │ │ -Fi(mtxA)f Fj(are)g(not)h(the)h(same,)g(an)f(error)e(message)h(is)h │ │ │ │ │ -(prin)n(ted)g(and)208 859 y(the)k(program)d(exits.)60 │ │ │ │ │ -1028 y(10.)41 b Fi(void)g(DenseMtx_zero)e(\()k(DenseMtx)d(*mtx)i(\))h │ │ │ │ │ -(;)208 1163 y Fj(This)27 b(metho)r(d)h(zeros)e(the)i(en)n(tries)f(in)h │ │ │ │ │ -(the)g(matrix.)208 1298 y Fh(Err)l(or)i(che)l(cking:)38 │ │ │ │ │ -b Fj(If)28 b Fi(mtx)f Fj(is)g Fi(NULL)p Fj(,)f(an)i(error)d(message)i │ │ │ │ │ -(is)g(prin)n(ted)h(and)f(the)h(program)e(exits.)60 1467 │ │ │ │ │ -y(11.)41 b Fi(void)g(DenseMtx_fillRand)o(omE)o(nt)o(rie)o(s)c(\()43 │ │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fj(6)p 125 100 1097 4 v │ │ │ │ │ +1262 w Fi(DenseMtx)24 b Fe(:)37 b Fh(DRAFT)27 b Fe(F)-7 │ │ │ │ │ +b(ebruary)27 b(18,)g(2025)p 2804 100 V 101 390 a Fj(9.)42 │ │ │ │ │ +b Fi(void)f(DenseMtx_addRow)d(\()43 b(DenseMtx)d(*mtxB,)h(int)i(irowB,) │ │ │ │ │ +e(DenseMtx)f(*mtxA,)h(int)i(irowA)85 b(\))43 b(;)208 │ │ │ │ │ +525 y Fj(This)27 b(metho)r(d)h(adds)f(ro)n(w)g Fi(irowA)e │ │ │ │ │ +Fj(from)j(matrix)f Fi(mtxA)f Fj(in)n(to)h(ro)n(w)f Fi(irowB)g │ │ │ │ │ +Fj(of)i(matrix)f Fi(mtxB)p Fj(.)208 659 y Fh(Err)l(or)34 │ │ │ │ │ +b(che)l(cking:)46 b Fj(If)32 b Fi(mtxB)e Fj(is)i Fi(NULL)p │ │ │ │ │ +Fj(,)e(or)h(if)h Fi(irowB)e Fj(is)h(out)h(of)f(range,)h(or)f(if)h │ │ │ │ │ +Fi(mtxA)e Fj(is)h Fi(NULL)p Fj(,)f(or)h(if)h Fi(irowA)e │ │ │ │ │ +Fj(is)h(out)h(of)208 759 y(range,)23 b(or)h(if)g(the)h(n)n(um)n(b)r(er) │ │ │ │ │ +f(of)h(columns)f(in)g Fi(mtxB)f Fj(and)h Fi(mtxA)f Fj(are)g(not)h(the)h │ │ │ │ │ +(same,)g(an)f(error)e(message)h(is)h(prin)n(ted)g(and)208 │ │ │ │ │ +859 y(the)k(program)d(exits.)60 1028 y(10.)41 b Fi(void)g │ │ │ │ │ +(DenseMtx_zero)e(\()k(DenseMtx)d(*mtx)i(\))h(;)208 1163 │ │ │ │ │ +y Fj(This)27 b(metho)r(d)h(zeros)e(the)i(en)n(tries)f(in)h(the)g │ │ │ │ │ +(matrix.)208 1298 y Fh(Err)l(or)i(che)l(cking:)38 b Fj(If)28 │ │ │ │ │ +b Fi(mtx)f Fj(is)g Fi(NULL)p Fj(,)f(an)i(error)d(message)i(is)g(prin)n │ │ │ │ │ +(ted)h(and)f(the)h(program)e(exits.)60 1467 y(11.)41 │ │ │ │ │ +b Fi(void)g(DenseMtx_fillRand)o(omE)o(nt)o(rie)o(s)c(\()43 │ │ │ │ │ b(DenseMtx)e(*mtx,)g(Drand)h(*drand)f(\))i(;)208 1602 │ │ │ │ │ y Fj(This)27 b(metho)r(d)h(the)g(en)n(tries)f(in)h(the)g(matrix)f(with) │ │ │ │ │ h(random)f(n)n(um)n(b)r(ers)g(using)g(the)h Fi(drand)e │ │ │ │ │ Fj(ob)5 b(ject.)208 1737 y Fh(Err)l(or)30 b(che)l(cking:)38 │ │ │ │ │ b Fj(If)28 b Fi(mtx)f Fj(or)g Fi(drand)e Fj(is)j Fi(NULL)p │ │ │ │ │ Fj(,)e(an)h(error)f(message)g(is)h(prin)n(ted)h(and)f(the)h(program)e │ │ │ │ │ (exits.)60 1906 y(12.)41 b Fi(void)g(DenseMtx_checksum)o(s)d(\()43 │ │ │ │ │ @@ -4247,17 +4254,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 1114 4 v 1280 100 a Fi(DenseMtx)24 │ │ │ │ │ -b Fe(:)37 b Fh(DRAFT)110 b Fe(Jan)n(uary)26 b(16,)h(2024)p │ │ │ │ │ -2747 100 V 1114 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 1097 4 v 1262 100 a Fi(DenseMtx)25 │ │ │ │ │ +b Fe(:)37 b Fh(DRAFT)110 b Fe(F)-7 b(ebruary)26 b(18,)h(2025)p │ │ │ │ │ +2764 100 V 1097 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 │ │ │ │ │ @@ -4344,21 +4351,22 @@ │ │ │ │ │ 5270 y Fj(This)27 b(metho)r(d)h(writes)f(a)h Fi(DenseMtx)c │ │ │ │ │ Fj(ob)5 b(ject)27 b(to)h(a)f(\014le)h(in)g(an)f(easily)g(readable)f │ │ │ │ │ (format.)208 5407 y Fh(Err)l(or)k(che)l(cking:)38 b Fj(If)28 │ │ │ │ │ b Fi(mtx)f Fj(or)g Fi(fp)f Fj(are)h Fi(NULL)p Fj(,)f(an)h(error)f │ │ │ │ │ (message)g(is)i(prin)n(ted)f(and)h(zero)e(is)i(returned.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 8 8 │ │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fj(8)p 125 100 1114 4 v │ │ │ │ │ -1279 w Fi(DenseMtx)25 b Fe(:)37 b Fh(DRAFT)27 b Fe(Jan)n(uary)e(16,)i │ │ │ │ │ -(2024)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 │ │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fj(8)p 125 100 1097 4 v │ │ │ │ │ +1262 w Fi(DenseMtx)24 b Fe(:)37 b Fh(DRAFT)27 b Fe(F)-7 │ │ │ │ │ +b(ebruary)27 b(18,)g(2025)p 2804 100 V 101 390 a Fj(9.)42 │ │ │ │ │ +b Fi(void)f(DenseMtx_writeFor)o(Mat)o(la)o(b)d(\()43 │ │ │ │ │ +b(DenseMtx)d(*mtx,)i(char)f(*mtxname,)f(FILE)i(*fp)h(\))g(;)208 │ │ │ │ │ +523 y Fj(This)27 b(metho)r(d)h(writes)f(out)h(a)f Fi(DenseMtx)e │ │ │ │ │ +Fj(ob)5 b(ject)27 b(to)g(a)h(\014le)f(in)h(a)f(Matlab)h(format.)36 │ │ │ │ │ +b(A)28 b(sample)f(line)h(is)208 722 y Fi(a\(10,5\))40 │ │ │ │ │ b(=)87 b(-1.550328201511e)o(-01)37 b(+)130 b(1.848033378871e+)o(00*)o │ │ │ │ │ (i)37 b(;)208 922 y Fj(for)27 b(complex)g(matrices,)g(or)208 │ │ │ │ │ 1121 y Fi(a\(10,5\))40 b(=)87 b(-1.550328201511e)o(-01)37 │ │ │ │ │ b(;)208 1320 y Fj(for)27 b(real)g(matrices,)h(where)f(m)n(txname)h(=)g │ │ │ │ │ Fi("a")p Fj(.)38 b(The)28 b(matrix)f(indices)h(come)g(from)g(the)g │ │ │ │ │ Fi(rowind[])d Fj(and)j Fi(colind[])208 1420 y Fj(v)n(ectors,)e(and)h │ │ │ │ │ (are)g(incremen)n(ted)g(b)n(y)g(one)h(to)f(follo)n(w)g(the)h(Matlab)f │ │ │ │ │ ├── ps2ascii {} │ │ │ │ │ │ @@ -22,15 +22,15 @@ │ │ │ │ │ │ • double *entries : pointer to the base address of the double vector that contains the entries. │ │ │ │ │ │ • DV wrkDV : object that manages the owned working storage. │ │ │ │ │ │ • DenseMtx *next : link to a next object in a singly linked list. │ │ │ │ │ │ One can query the type of entries via two macros. │ │ │ │ │ │ • DENSEMTX IS REAL(mtx) returns 1 if the matrix has real entries, and 0 otherwise. │ │ │ │ │ │ • DENSEMTX IS COMPLEX(mtx) returns 1 if the matrix has complex entries, and 0 otherwise. │ │ │ │ │ │ 1 │ │ │ │ │ │ - 2 DenseMtx : DRAFT January 16, 2024 │ │ │ │ │ │ + 2 DenseMtx : DRAFT February 18, 2025 │ │ │ │ │ │ 1.2 Prototypes and descriptions of DenseMtx methods │ │ │ │ │ │ This section contains brief descriptions including prototypes of all methods that belong to the DenseMtx │ │ │ │ │ │ object. │ │ │ │ │ │ 1.2.1 Basic methods │ │ │ │ │ │ Asusual, there are four basic methods to support object creation, setting default fields, clearing any allocated │ │ │ │ │ │ data, and free’ing the object. │ │ │ │ │ │ 1. DenseMtx * DenseMtx_new ( void ) ; │ │ │ │ │ │ @@ -58,15 +58,15 @@ │ │ │ │ │ │ 3. void DenseMtx_dimensions ( DenseMtx *mtx, int *pnrow, int *pncol ) ; │ │ │ │ │ │ This method fills *pnrow and *pncol with nrow and ncol. │ │ │ │ │ │ Error checking: If mtx is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 4. int DenseMtx_columnIncrement ( DenseMtx *mtx ) ; │ │ │ │ │ │ This method returns the row increment of the object, the difference in memory locations of two entries │ │ │ │ │ │ in consecutive columns in the same row. │ │ │ │ │ │ Error checking: If mtx is NULL, an error message is printed and the program exits. │ │ │ │ │ │ - DenseMtx : DRAFT January 16, 2024 3 │ │ │ │ │ │ + DenseMtx : DRAFT February 18, 2025 3 │ │ │ │ │ │ 5. int DenseMtx_rowIncrement ( DenseMtx *mtx ) ; │ │ │ │ │ │ This method returns the row increment of the object, the difference in memory locations of two entries │ │ │ │ │ │ in consecutive rows in the same column. │ │ │ │ │ │ Error checking: If mtx is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 6. void DenseMtx_rowIndices ( DenseMtx *mtx, int *pnrow, **prowind ) ; │ │ │ │ │ │ This method fills *pnrow with nrow, the number of rows, and *prowind with rowind, a pointer to the │ │ │ │ │ │ row indices. │ │ │ │ │ │ @@ -97,15 +97,15 @@ │ │ │ │ │ │ message is printed and the program exits. │ │ │ │ │ │ 13. void DenseMtx_setComplexEntry ( DenseMtx *mtx, int irow, int jcol, │ │ │ │ │ │ double real, double imag ) ; │ │ │ │ │ │ This method sets the real and imaginary parts of the entry in row irow and column jcol to be │ │ │ │ │ │ (real,imag). │ │ │ │ │ │ Error checking: If mtx is NULL, or if the matrix is not complex, or if irow or jcol is out of range, an │ │ │ │ │ │ error message is printed and the program exits. │ │ │ │ │ │ - 4 DenseMtx : DRAFT January 16, 2024 │ │ │ │ │ │ + 4 DenseMtx : DRAFT February 18, 2025 │ │ │ │ │ │ 14. int DenseMtx_row ( DenseMtx *mtx, int irow, double **prowent ) ; │ │ │ │ │ │ This method fills *prowent with the first location of the entries in row irow. │ │ │ │ │ │ Return codes: 1 is a normal return, -1 means mtx is NULL, -2 means invalid type for mtx, -3 means │ │ │ │ │ │ irow is out-of-range, -4 means prowent is NULL. │ │ │ │ │ │ 15. int DenseMtx_column ( DenseMtx *mtx, int jcol, double **pcolent ) ; │ │ │ │ │ │ This method fills *pcolent with the first location of the entries in column jcol. │ │ │ │ │ │ Return codes: 1 is a normal return, -1 means mtx is NULL, -2 means invalid type for mtx, -3 means │ │ │ │ │ │ @@ -139,15 +139,15 @@ │ │ │ │ │ │ 4. void DenseMtx_initFromBuffer ( DenseMtx *mtx ) ; │ │ │ │ │ │ This method initializes the object using information present in the workspace buffer. This method is │ │ │ │ │ │ used to initialize the DenseMtx object when it has been received as an MPI message. │ │ │ │ │ │ Error checking: If mtx is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 5. void DenseMtx_setA2 ( DenseMtx *mtx, A2 *a2 ) ; │ │ │ │ │ │ This method initializes the a2 object to point into the entries of the matrix. │ │ │ │ │ │ Error checking: If mtx or a2 is NULL, an error message is printed and the program exits. │ │ │ │ │ │ - DenseMtx : DRAFT January 16, 2024 5 │ │ │ │ │ │ + DenseMtx : DRAFT February 18, 2025 5 │ │ │ │ │ │ 1.2.4 Utility methods │ │ │ │ │ │ 1. int DenseMtx_nbytesNeeded ( int type, int nrow, int ncol ) ; │ │ │ │ │ │ This method returns the number of bytes required to store the object’s information in its buffer. │ │ │ │ │ │ Error checking: If type is neither SPOOLES REAL nor SPOOLES COMPLEX, or if nrow or ncol is less than │ │ │ │ │ │ zero, an error message is printed and the program exits. │ │ │ │ │ │ 2. int DenseMtx_nbytesInWorkspace ( DenseMtx *mtx ) ; │ │ │ │ │ │ This method returns the number of bytes in the workspace owned by this object. │ │ │ │ │ │ @@ -174,21 +174,21 @@ │ │ │ │ │ │ Error checking: If mtx is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 7. void DenseMtx_copyRow ( DenseMtx *mtxB, int irowB, DenseMtx *mtxA, int irowA ) ; │ │ │ │ │ │ This method copies row irowA from matrix mtxA into row irowB of matrix mtxB. │ │ │ │ │ │ Error checking: If mtxB is NULL, or if irowB is out of range, or if mtxA is NULL, or if irowA is out of │ │ │ │ │ │ range, or if the number of columns in mtxB and mtxA are not the same, an error message is printed and │ │ │ │ │ │ the program exits. │ │ │ │ │ │ 8. void DenseMtx_copyRowAndIndex ( DenseMtx *mtxB, int irowB, │ │ │ │ │ │ - DenseMtx *mtxA, int irowA ) ; │ │ │ │ │ │ + DenseMtx *mtxA, int irowA ) ; │ │ │ │ │ │ This method copies row irowA from matrix mtxA into row irowB of matrix mtxB, and copies the index │ │ │ │ │ │ of row irowA of mtxA into location irowB of the row indices for mtxB. │ │ │ │ │ │ Error checking: If mtxB is NULL, or if irowB is out of range, or if mtxA is NULL, or if irowA is out of │ │ │ │ │ │ range, or if the number of columns in mtxB and mtxA are not the same, an error message is printed and │ │ │ │ │ │ the program exits. │ │ │ │ │ │ - 6 DenseMtx : DRAFT January 16, 2024 │ │ │ │ │ │ + 6 DenseMtx : DRAFT February 18, 2025 │ │ │ │ │ │ 9. void DenseMtx_addRow ( DenseMtx *mtxB, int irowB, DenseMtx *mtxA, int irowA ) ; │ │ │ │ │ │ This method adds row irowA from matrix mtxA into row irowB of matrix mtxB. │ │ │ │ │ │ Error checking: If mtxB is NULL, or if irowB is out of range, or if mtxA is NULL, or if irowA is out of │ │ │ │ │ │ range, or if the number of columns in mtxB and mtxA are not the same, an error message is printed and │ │ │ │ │ │ the program exits. │ │ │ │ │ │ 10. void DenseMtx_zero ( DenseMtx *mtx ) ; │ │ │ │ │ │ This method zeros the entries in the matrix. │ │ │ │ │ │ @@ -219,15 +219,15 @@ │ │ │ │ │ │ This method copies vector vec[] into row irow of matrix mtx. │ │ │ │ │ │ Error checking: If mtx or vec is NULL, or if irow < 0 or irow ≥ nrow, an error message is printed and │ │ │ │ │ │ the program exits. │ │ │ │ │ │ 18. double DenseMtx_addVectorIntoRow ( DenseMtx *mtx, int irow, double vec[] ) ; │ │ │ │ │ │ This method adds vector vec[] into row irow of matrix mtx. │ │ │ │ │ │ Error checking: If mtx or vec is NULL, or if irow < 0 or irow ≥ nrow, an error message is printed and │ │ │ │ │ │ the program exits. │ │ │ │ │ │ - DenseMtx : DRAFT January 16, 2024 7 │ │ │ │ │ │ + DenseMtx : DRAFT February 18, 2025 7 │ │ │ │ │ │ 1.2.5 IO methods │ │ │ │ │ │ Thefile structure of a DenseMtxobject is simple. First comes seven scalars, type, rowid, colid, nrow, ncol, │ │ │ │ │ │ inc1 and inc2, followed by the row indices, followed by the column indices, and then followed by the matrix │ │ │ │ │ │ entries. │ │ │ │ │ │ 1. int DenseMtx_readFromFile ( DenseMtx *mtx, char *fn ) ; │ │ │ │ │ │ This method reads an DenseMtx object from a file. If the the file can be opened successfully, the │ │ │ │ │ │ method calls DenseMtx readFromFormattedFile() or DenseMtx readFromBinaryFile(), closes the │ │ │ │ │ │ @@ -258,15 +258,15 @@ │ │ │ │ │ │ Error checking: If mtx or fp are NULL an error message is printed and zero is returned. │ │ │ │ │ │ 7. int DenseMtx_writeStats ( DenseMtx *mtx, FILE *fp ) ; │ │ │ │ │ │ This method writes out a header and statistics to a file. The value 1 is returned. │ │ │ │ │ │ Error checking: If mtx or fp are NULL, an error message is printed and zero is returned. │ │ │ │ │ │ 8. void DenseMtx_writeForHumanEye ( DenseMtx *mtx, FILE *fp ) ; │ │ │ │ │ │ This method writes a DenseMtx object to a file in an easily readable format. │ │ │ │ │ │ Error checking: If mtx or fp are NULL, an error message is printed and zero is returned. │ │ │ │ │ │ - 8 DenseMtx : DRAFT January 16, 2024 │ │ │ │ │ │ + 8 DenseMtx : DRAFT February 18, 2025 │ │ │ │ │ │ 9. void DenseMtx_writeForMatlab ( DenseMtx *mtx, char *mtxname, FILE *fp ) ; │ │ │ │ │ │ This method writes out a DenseMtx object to a file in a Matlab format. A sample line is │ │ │ │ │ │ a(10,5) = -1.550328201511e-01 + 1.848033378871e+00*i ; │ │ │ │ │ │ for complex matrices, or │ │ │ │ │ │ a(10,5) = -1.550328201511e-01 ; │ │ │ │ │ │ for real matrices, where mtxname = "a". The matrix indices come from the rowind[] and colind[] │ │ │ │ │ │ vectors, and are incremented by one to follow the Matlab and FORTRAN convention. │ │ │ ├── ./usr/share/doc/spooles-doc/Drand.ps.gz │ │ │ │ ├── Drand.ps │ │ │ │ │ @@ -10,15 +10,15 @@ │ │ │ │ │ %%EndComments │ │ │ │ │ %%BeginDefaults │ │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ │ %%EndDefaults │ │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ │ %DVIPSCommandLine: dvips main -o Drand.ps │ │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ │ -%DVIPSSource: TeX output 2024.01.16:2047 │ │ │ │ │ +%DVIPSSource: TeX output 2025.02.18:0318 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -1721,20 +1721,21 @@ │ │ │ │ │ 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 52 /four put │ │ │ │ │ -dup 54 /six put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ +dup 56 /eight put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 74 /J put │ │ │ │ │ +dup 70 /F put │ │ │ │ │ dup 97 /a put │ │ │ │ │ -dup 110 /n put │ │ │ │ │ +dup 98 /b put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ dup 114 /r put │ │ │ │ │ dup 117 /u put │ │ │ │ │ dup 121 /y put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ @@ -1918,89 +1919,93 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ │ -C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ │ -6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ │ -11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ │ -1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ │ -A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ │ -F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ │ -EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ │ -033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ │ -A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ │ -468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8A71FF9C085003EBB4F4 │ │ │ │ │ -3D271F5B16B1AAD3EBDC391F534AA46E545E9D8659DD19B309C3B7625A8396FA │ │ │ │ │ -2519464539D46E43ACB72952313C8497315E0319C08628023E8FC54D7D3BAC29 │ │ │ │ │ -D5AD8EFDABF0C33C7AFB7151A6606C62A87F0F5F783569AC4C881A992E3FE420 │ │ │ │ │ -297F7BC5147F3B2FA98450D2F8B07F7D229BC8BE06729920CFEC22556740E1CB │ │ │ │ │ -3DE09AC763C6D4A20AD1599C368FABD07BC35C16683F2A0311A88983415A9140 │ │ │ │ │ -2EFC4BC1B10DCAD4B2B8A28510E5BD39D6616D2B9B079ED3CF9C315B7DEC29D9 │ │ │ │ │ -251DFD0194B34EC175964C23383F23FFB2E41B698C405815D65EAFF9E9DD1DDE │ │ │ │ │ -30F77924656C288B8DDB2E5B0E7B1FAA66791DE3848EE6DE63AD0E945E49C6C7 │ │ │ │ │ -9FCA16E01F027F9EF7ACB55F02F5B0136480802F789F6FE14B430879979BA04D │ │ │ │ │ -F481AD4CF47E6847936F377FB04869F9A80E597301BFCAB718D8764094673876 │ │ │ │ │ -BCEF8FA3701608C84B3A0399A11D2E6AD922CCB7D72AF9EBFB30F4648A37A123 │ │ │ │ │ -CB8FB14BDC351692CF0CCAA5CA9383C2B23BAAA38700327EB743FBBE9EE04041 │ │ │ │ │ -13F5CEF4B3881BBC051C33369A82B3505B1CFD7D91AEF2E43EA728EE48E2D854 │ │ │ │ │ -5A7E516998ACDD4FD835FA901C5A21810A56D51FE919B2E58408EEB4DAEB487F │ │ │ │ │ -BA7F1D292CED902DF3533566D96DAD918319EA650D4FC7D9E0170CDE620F755B │ │ │ │ │ -0E7AE02D9B118481B26F5FF7060FBCFA2A682B6826F00679BCDA68794C05286D │ │ │ │ │ -B616DD08372ACDE0AE6E7EF116F0D36F16241ED4F0E8CCD80377792E3BB1343C │ │ │ │ │ -EEB22CC77738F7CBCBA32CF6C3979F6DF7ED81A89AE8928FD7CC550F2730BA88 │ │ │ │ │ -1B51CEDC63F4C47F261AFCAB7AC3CED20B15C97E714A460A1A3B16436B4A5149 │ │ │ │ │ -8F91DA4BE0B9B648534CE5F442117036B602DC91E2852BEA62F55803B833FDF7 │ │ │ │ │ -9F901AB87489E703DDEED1091A79DC73B4440BBBF2C7592B441187C4A3562204 │ │ │ │ │ -859F08BA3CE2A8ECCD5AAD13C50FB806FE79A388F1822C5608837CBDE526A044 │ │ │ │ │ -12E5CDE4A066932AF2ACA7E8FC6BA4603640944718752975B7DA6E906BE1EA01 │ │ │ │ │ -46736FF5D1AA1CC682D011B6039CF98C35E36D4F14ABC84A38B7203CC9A17756 │ │ │ │ │ -B2B0345276798F1A88A54AD9FEA0853C6DDF28525ED4F0B7380D14147012C2A4 │ │ │ │ │ -5B02888C986C76497EA4C729B0B82EE73C1A1A8E8F1ABF401E341028E9C15AF9 │ │ │ │ │ -354706D8DC07492921AD0932A46736C0D1B066D00287DACCC068FAE6A796EC89 │ │ │ │ │ -54D1D73AA88F3A5912BA9D3FF70065C8D0D0DAD1CD846501E06694374EFDBEC6 │ │ │ │ │ -931F644D5E8494AFC742423AD9A487658E310E0682BE19B8475F4D450487A686 │ │ │ │ │ -2B94494DEAF1C0F59DE82F2CE64BEE5E97F942FCFA1187ED6AA5761E951A7BF7 │ │ │ │ │ -9F842E34A4656C58B35A9E99F7E6762CEE11E0CF59FFD75D7382C5EE6DBB43F1 │ │ │ │ │ -ED219071D3FB22DBA90977723BB467C0490D042684C0724F40DCA3E0D8F1F4E7 │ │ │ │ │ -3C4F9A67BE6528185EAAFDD415224F7E256A4EA00111C17C746CBD80BF569A27 │ │ │ │ │ -D81195D7F79C1CCEEF30ED00D49F48B63E4B8D7953403A3710AE953CC1B76F0F │ │ │ │ │ -F523D777A6A186F262A602543F94AF7471DBE25FEBC207DB42DAF7DC9A5781FB │ │ │ │ │ -2131AD42869D966A734AAE3466DF1CE9D1BCFA72409A558C0AEE6A8E2FEAACB6 │ │ │ │ │ -2CDABCC28433034848ACF9FB4465D272E4AFC48572647F05F41C7A293CC5B595 │ │ │ │ │ -AD31555FB708A72962707348BC7033A8224BD42EB9D75FDF3AE9E6A9C960B330 │ │ │ │ │ -5137DF59F8E2E0D535F41524ABDF070745A4FA25CD8DFD38A5FF30A95452B875 │ │ │ │ │ -6569E8812631300D79A942C563AF174AC05C9F2D09D7D5D3C605F5A6B7F21B34 │ │ │ │ │ -18F270A993B050838E701A17938D1C156CBA7CA4BAC7C562CE9D7B758EAB25A9 │ │ │ │ │ -A6DFFC71F65561341847B776DF34061CE3D439B87B857626987EC93B3B95B8E8 │ │ │ │ │ -76FFB16B263675333FA10414FEED707FF7C366BF8B20FF8577CDEBEBCF1A5BCE │ │ │ │ │ -258C09C90175A5278B7C444A623E3331FDE5A6387B3E389540ED1E7E883958F3 │ │ │ │ │ -3A5C89CCD62256FA069DF4A5090FB17C1F1757C9209DAFB8A1F47182BF3E88D9 │ │ │ │ │ -0B5376B59EE165A761902759C8ED7F5AD301E7EB8B49CC09AF921DB45B7F8002 │ │ │ │ │ -AB32E73AAE53942DE0F9175D8446017006C9C0B93EF39C13B7A879F2F6DDFF16 │ │ │ │ │ -204BB24F976847CF006FD29332FCCB255B5116F7077A44F7066C39C81DC4BAD2 │ │ │ │ │ -40DB2753626C0102E5D047522ABC38EA294A699B8DFD9CA0A7980561A1062E90 │ │ │ │ │ -AB11EE286A9C238D9F721D9980D0A1828C2814972622D948CEE8C812C19A9A03 │ │ │ │ │ -608ED0AC138A436FFBF8BE3D1E66C87793416AF38ED9BC5424568A175FBDAA9E │ │ │ │ │ -D6FC11A7021693819B051562B5A59F32629E2D6019D69DD329BE1894A2B295E1 │ │ │ │ │ -1DCE9683B29AE126C56F26E5C595BF1A8249BDE231DBE8B066F7F62EF149B975 │ │ │ │ │ -A863969A4690504A5EA064721DA909B8157C0B39FBF8228D95CB655E406161E1 │ │ │ │ │ -148610FAEED7C5509880223C06A66DA19E10F94DC2DB481B26 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004FD597ED │ │ │ │ │ +EFDBC64ABD9B79386FB2427D1A63522195B1239C09F8CB3F8BD7A245A6DD82E3 │ │ │ │ │ +260C3889587626DFC5F7978E55F5524ABD6A3319CDD3D3F40D040044D51DA4E1 │ │ │ │ │ +6797EEAC7AA07C77EC6DB0E6E182B545A8BEF63B14F3FC07BAC09E7CD5C17ED6 │ │ │ │ │ +10080704B0DA4E9BA12F968DF8A58458D17E9A5B1F14A83DC51F5B161ADEE1CC │ │ │ │ │ +0183D82ED92C6FC7203C289949EDF0284D9893029FF5408E421324625F17C3E5 │ │ │ │ │ +2437C8F75A9D68EE1AF9174FEA6FC6BF793C7D2E497EA90396CF1A645E283B69 │ │ │ │ │ +8425F47C323587DF91E1D596DCB1E3A787C955D9D965A5E3E26ADF58B62AD5F9 │ │ │ │ │ +0C9AC784DE479780606354111E3202F215650DBBE1063A46F3C10B9EBC974DDA │ │ │ │ │ +A1A28DBBD43E9E5BFF000B12C787D0427928078F8EC5FE90DED97E6C129E8DEA │ │ │ │ │ +51F66504DB83764E52B0BA68DF7BE684C8959CB1D3345CC48221A9A4683306C0 │ │ │ │ │ +62B634E0A539383F0C7A788D9711EFF414869CCC5659D78CEBE009BF2463F56A │ │ │ │ │ +0ADC993348FE96DF7C250E13ED6504AACFE8F8DCA2D2048D9D8CFA127D363EAC │ │ │ │ │ +1F0630E2D1B621E6954038195D965B91FD974FA3F1B8B29D200A16CEBA645E2F │ │ │ │ │ +CEEE6FD49FBBD49E38AE67D4BFFCE91F1FC422554EC4409C5FA18D40FCD6D9B3 │ │ │ │ │ +2185ED1E0F98106D4339F086B05CA36E56EC22C60E2CE23F9C4CC403ACAD3F94 │ │ │ │ │ +4086B4DF6DFA0B7B4716417263E7B558535566AED2F6C2F9846A16D71A7930A7 │ │ │ │ │ +49232D3D16C4A01CF1A1998A06F40062ED329179A85668537C55D0BC24FC0010 │ │ │ │ │ +54DA83E2FC66B2A5D428E6A9BFC983253668C0ECE6CA36DBF97C4B7659D50842 │ │ │ │ │ +C65B36604840EEDA399B57E2DEFAC3E7FB031634CE33D04238F9854D2AAAF448 │ │ │ │ │ +34DA5F3BCCED3166FEEE82BB0BBA0A397CC2F95865CB52AABFF454D93B425809 │ │ │ │ │ +A26AC459F321FD23E2262FE816D06BAAECF32AAF167F84799AF80F9F88388D07 │ │ │ │ │ +0DB5FD57AFEE2850A8DFE977E6AE39CB3DC16DB1A163A583C86C6F775CE33521 │ │ │ │ │ +0081C0BBBAD6D30D26C66B28B38CEAC78FEA5FB3CC5853656B67C6D9D80EB30E │ │ │ │ │ +397558C9179AF5920F34DAB3F578DFCF0DBB137AED17D6325C23883E69EE4621 │ │ │ │ │ +34355A70C19EA68891E1CA937376901C85CDEE109F1665943E29A216DC00937A │ │ │ │ │ +B983A729A4654AD09187C0242D52FA4ADD0853EF4888864914D7D81C56578DD4 │ │ │ │ │ +3B51907032022E6E412D4F114675DEDCA8A9E85DC03A0B583FECD84432D15F70 │ │ │ │ │ +01F627BD6EC91F9FCFDA01BF40E1229B5F164309DBB641AD50970503DA2048C1 │ │ │ │ │ +DF8F36E8D252EE113F0B46677D9BAF376BAE18D74CFB0DBBD0C7E9D0A58BA3ED │ │ │ │ │ +1E5099CAE073EB5638617760AB57849893764EA9735173CD1EAB66884CEA7EE3 │ │ │ │ │ +8843327B2E145BD6FBB49102776B82BC511D109F8BE9E7E99DADABABEDC3CFD9 │ │ │ │ │ +393578FFD85907DFF2849E4CDE6FA4DEC7E1C150EBE4047FFB650F9548BE6D11 │ │ │ │ │ +0C51226A5436F18BF20A02E0F888F46B6AC3A8E8D927ECD3B5E095933AD3859F │ │ │ │ │ +5167C41D832EFCC4093BD2AFA7101AB430E57DAFC3590F05D3CBABB32BC203A0 │ │ │ │ │ +467B23BDB830487C9AA5B85BAC065F8538871B4180F8C4732E637DB090CFDE5A │ │ │ │ │ +3F4F2B5BFAFB848BAAD1A17CB076B34159601639BD93ECAB1214ACABF2C67FE2 │ │ │ │ │ +0658AA20B08681070FF56F1CC52144ABA8765D6E124D1CEA9BBA102808CE1BB2 │ │ │ │ │ +5EDF46BC7BBC2A5B49EE6EC28F5797A3969B057B21FCDBBD0E60848FF14F6CA3 │ │ │ │ │ +70F3060BDBB019B22722C99C7691760F013763B7FBEB62830AE215F195BF9F01 │ │ │ │ │ +21BF4377397E89574CFA47D123AA506A570A77BA6EB4AAB0B237A26154880293 │ │ │ │ │ +3952F832F72ECCB024F02385E5EE8566B165904B594E30D0700D033C6B429F6F │ │ │ │ │ +2A20BC774F442BC9CE29FCC81807C2768A8BC927A215558FBF36DC53F477F04A │ │ │ │ │ +41DA66E1A85B659EB761230977EAD7DA0150513D3323B143D4E2A61BCF03334C │ │ │ │ │ +C0EE3E1B06CFAF58ECC910BD81F0352B75FF1594D6A4EF504232D442174BE766 │ │ │ │ │ +0F8E703F97E21D25D4CD097549C31FEE7017C3916EFB02E7BF869172889827B6 │ │ │ │ │ +A48465EB7612BA3DBC6A9436C7167F149A25CE9F8E3F4F8DE3B5ADF6C0986CB3 │ │ │ │ │ +3A7E2DAB44AB489796461536F5F713017F2620AD03295CAE9285F08974AE0DF8 │ │ │ │ │ +D739260929619B509491AFF09C4CAEF9E65C2CA69470C907ECBF3AB6C955360D │ │ │ │ │ +05ABAC306DB51122A1ADC7EF0DD70FA299A45C505A83727D4598C86319EE9C06 │ │ │ │ │ +7218EFD4F40388354BCF1B79593D5AD221DF955D081F99F880E5CED07321AB3E │ │ │ │ │ +A2FCB8B05D54807D8E15E65B78DCE12989B9276350080C905DBB74CE9AA7E246 │ │ │ │ │ +5D3BAED292C562D4CF54617FCC6654496C7996D1ECE1EFF9258716AB763A12E6 │ │ │ │ │ +316E4C5587351A6DB011F58F6A15BC28BEBDC3836E0CB892807FEC228DC1B380 │ │ │ │ │ +92F7F42279F08D60F13D6A4CB425543C3644461461CBF6F27B6603F613D1FCF8 │ │ │ │ │ +A8410AD82D1498166AEB35D4125D7E2ADEAAB18BC04806AED53513F066E5F154 │ │ │ │ │ +3E13E863C50B9814EE2FB978D0D24A03FAF650CB6E2CADF1E6BE6BAF699AFC03 │ │ │ │ │ +E1A0EEB207B3B9A689ED5B373FE86686AD230BE6C18E1673DDA50E224B343EC5 │ │ │ │ │ +903BA0C8041C13607B50D5852AC7970B15C244E6EBA7D54B3086312CF04761D6 │ │ │ │ │ +7D3D75D51F20C371494AB81AB4A9838B20B483B851D01FEF41EA5C0B4755B964 │ │ │ │ │ +EB6E9B178051C556A010994EB88EAE641F4C1A0D7E0F98D5267E18AEF1AEA7E7 │ │ │ │ │ +9030A97DF89AFF621981C33B645FFB5F3BB2065A7661D11B26E0999561DF3580 │ │ │ │ │ +4A76A05DFAF8085525F8D5C01936F03C32E26E72569371C9EA3B8916F9DFC5FC │ │ │ │ │ +6A6F25A0FFDB981BA8B896393D75774D50828E6ADE903C45406E354703A4BC56 │ │ │ │ │ +2C49A47FEAC970DC433E3050C49F7FB945A9705BD8852D2D65D935F244D3B423 │ │ │ │ │ +EFAB84AAAAB8FBAFF50AFF372A533BCCEB5FC273DBADCF715776DF02A5DCBA9A │ │ │ │ │ +FBF265FAB4745D6475B33611EEE1EA95E7584E0BEEC7CA789AA69C8D03D6F8C0 │ │ │ │ │ +5B6844E2B901ACA560C0433B053D134866E567425174E47173679AAD4486A2D3 │ │ │ │ │ +369C29E4DD2CD6ACA1BE80ED8FF0A9C58A616D26E758BD8E6342624EC83FB590 │ │ │ │ │ +BD354B52B60BB054FAFE9AC63E1564FBC721FE8F276B0413EC89A2C85E5ED1B0 │ │ │ │ │ +3A9D83BE62A4488ADE7CE69971A8AF7E5862A4290EEF6F00D4171C7FFB360065 │ │ │ │ │ +92E72BF02BE27161AE0BB5516572A0BDC4F316FFB24B38484AC8D1FD4CD86062 │ │ │ │ │ +A2B5D03CF28C3A679C039A6EFDD4C9DA7E463AD60234C9F6BBEE48D87DD94D85 │ │ │ │ │ +842F495F3E25723718682CE4D6224CBBF4456F03077EDF736D65B9DDAB09470E │ │ │ │ │ +17742D82011FFA96BFE86B96E858F9352FCD20C3D46B77DBDEE54336EC2249EA │ │ │ │ │ +211F6DFFF5BEA1E5192BE1BAC0BDD5EDDB3D56C6F7C6E543561A0B39E5C1B04F │ │ │ │ │ +C683A7516B6E69D682455386DDA709929D621FA434D403E895AA0A77DBE1DFD2 │ │ │ │ │ +0D060DF82378880147ED97C6E8149686FA048710B113760AC1DA4512FF8556B3 │ │ │ │ │ +16E2447485B8C3CD58D0469C4A45FFB4CB0322BB284C02 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -3611,16 +3616,16 @@ │ │ │ │ │ %%EndFont │ │ │ │ │ TeXDict begin 39158280 55380996 1000 600 600 (main.dvi) │ │ │ │ │ @start /Fa 234[71 71 20[{}2 90.9091 /CMSY10 rf /Fb 133[50 │ │ │ │ │ 59 4[44 44 46 2[56 62 93 31 2[31 62 2[51 62 50 1[54 11[86 │ │ │ │ │ 11[42 6[80 14[56 56 56 2[31 46[{}22 99.6264 /CMBX12 rf │ │ │ │ │ /Fc 138[49 30 37 38 1[46 46 51 2[42 1[28 46 42 1[42 46 │ │ │ │ │ 42 1[46 12[65 1[66 11[59 62 69 2[68 6[28 58[{}22 90.9091 │ │ │ │ │ -/CMTI10 rf /Fd 134[48 3[51 2[36 3[51 12[45 22[47 15[25 │ │ │ │ │ -3[45 1[45 1[45 45 45 3[25 44[{}13 90.9091 /CMSL10 rf │ │ │ │ │ +/CMTI10 rf /Fd 134[48 3[51 2[36 12[40 2[51 45 26[59 11[25 │ │ │ │ │ +1[45 2[45 2[45 45 45 3[25 44[{}14 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 │ │ │ │ │ @@ -3713,31 +3718,32 @@ │ │ │ │ │ b(ject,)31 b(uniform)e(is)i Fh(1)p Fj(,)f(normal)g(is)h │ │ │ │ │ Fh(2)0 5064 y Fg(1.2)135 b(Protot)l(yp)t(es)46 b(and)f(descriptions)g │ │ │ │ │ (of)g Fe(Drand)e Fg(metho)t(ds)0 5294 y Fj(This)e(section)j(con)m │ │ │ │ │ (tains)f(brief)f(descriptions)g(including)f(protot)m(yp)s(es)i(of)f │ │ │ │ │ (all)h(metho)s(ds)f(that)h(b)s(elong)f(to)h(the)0 5407 │ │ │ │ │ y Fh(Drand)29 b Fj(ob)5 b(ject.)1927 5656 y(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fj(2)p 136 100 1106 4 v │ │ │ │ │ -1288 w Fh(Drand)29 b Fd(:)41 b Fc(DRAFT)30 b Fd(Jan)m(uary)g(16,)h │ │ │ │ │ -(2024)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) │ │ │ │ │ -227 1243 y(b)m(y)j(a)f(call)i(to)f Fh(Drand)p 953 1243 │ │ │ │ │ -29 4 v 33 w(setDefaultFields\(\))p Fj(.)111 1446 y(2.)46 │ │ │ │ │ -b Fh(void)h(Drand_setDefaultFields)42 b(\()47 b(Drand)f(*drand)h(\))g │ │ │ │ │ -(;)227 1604 y Fj(This)30 b(metho)s(d)g(sets)g(the)h(structure's)f │ │ │ │ │ -(\014elds)g(to)h(default)g(v)-5 b(alues.)227 1848 y Fh(drand->seed1)45 │ │ │ │ │ -b(=)95 b(123456789.0)45 b(;)i(drand->seed2)e(=)95 b(987654321.0)44 │ │ │ │ │ -b(;)227 1961 y(drand->base1)h(=)i(2147483563.0)e(;)i(drand->base2)e(=)i │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fj(2)p 136 100 1087 4 v │ │ │ │ │ +1269 w Fh(Drand)29 b Fd(:)41 b Fc(DRAFT)30 b Fd(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2813 100 V 0 399 a Fb(1.2.1)112 │ │ │ │ │ +b(Basic)38 b(metho)s(ds)0 602 y Fj(As)d(usual,)h(there)f(are)g(four)f │ │ │ │ │ +(basic)h(metho)s(ds)g(to)g(supp)s(ort)e(ob)5 b(ject)36 │ │ │ │ │ +b(creation,)i(setting)e(default)f(\014elds,)h(clearing)0 │ │ │ │ │ +715 y(an)m(y)31 b(allo)s(cated)h(data,)f(and)f(free'ing)h(the)g(ob)5 │ │ │ │ │ +b(ject.)111 972 y(1.)46 b Fh(Drand)h(*)g(Drand_new)e(\()j(void)e(\))i │ │ │ │ │ +(;)227 1130 y Fj(This)28 b(metho)s(d)g(simply)h(allo)s(cates)i(storage) │ │ │ │ │ +f(for)e(the)h Fh(Drand)f Fj(structure)g(and)g(then)g(sets)i(the)f │ │ │ │ │ +(default)f(\014elds)227 1243 y(b)m(y)j(a)f(call)i(to)f │ │ │ │ │ +Fh(Drand)p 953 1243 29 4 v 33 w(setDefaultFields\(\))p │ │ │ │ │ +Fj(.)111 1446 y(2.)46 b Fh(void)h(Drand_setDefaultFields)42 │ │ │ │ │ +b(\()47 b(Drand)f(*drand)h(\))g(;)227 1604 y Fj(This)30 │ │ │ │ │ +b(metho)s(d)g(sets)g(the)h(structure's)f(\014elds)g(to)h(default)g(v)-5 │ │ │ │ │ +b(alues.)227 1848 y Fh(drand->seed1)45 b(=)95 b(123456789.0)45 │ │ │ │ │ +b(;)i(drand->seed2)e(=)95 b(987654321.0)44 b(;)227 1961 │ │ │ │ │ +y(drand->base1)h(=)i(2147483563.0)e(;)i(drand->base2)e(=)i │ │ │ │ │ (2147483399.0)d(;)227 2074 y(drand->lower)h(=)477 b(0.0)47 │ │ │ │ │ b(;)g(drand->upper)e(=)477 b(1.0)46 b(;)227 2187 y(drand->mean)93 │ │ │ │ │ b(=)477 b(0.0)47 b(;)g(drand->sigma)e(=)477 b(1.0)46 │ │ │ │ │ b(;)227 2300 y(drand->mode)93 b(=)572 b(1)48 b(;)227 │ │ │ │ │ 2544 y Fj(The)30 b(default)h(mo)s(de)f(is)g(a)h(uniform)e(distribution) │ │ │ │ │ h(on)g Fh([0,1])p Fj(.)227 2702 y Fc(Err)-5 b(or)34 b(che)-5 │ │ │ │ │ b(cking:)40 b Fj(If)30 b Fh(drand)f Fj(is)i Fh(NULL)p │ │ │ │ │ @@ -3771,17 +3777,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 1106 4 v 1288 100 a Fh(Drand)29 │ │ │ │ │ -b Fd(:)40 b Fc(DRAFT)121 b Fd(Jan)m(uary)30 b(16,)i(2024)p │ │ │ │ │ -2747 100 V 1106 w Fj(3)111 399 y(3.)46 b Fh(void)h(Drand_setSeeds)d(\() │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1087 4 v 1269 100 a Fh(Drand)29 │ │ │ │ │ +b Fd(:)40 b Fc(DRAFT)121 b Fd(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2766 100 V 1087 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 │ │ │ │ │ @@ -3836,20 +3842,20 @@ │ │ │ │ │ Fh(n)47 b(<)h(0)f Fj(,)35 b(an)f(error)f(message)i(is)e(prin)m(ted)h │ │ │ │ │ (and)f(the)227 4852 y(program)d(exits.)0 5175 y Fg(1.3)135 │ │ │ │ │ b(Driv)l(er)46 b(programs)g(for)f(the)g Fe(Drand)d Fg(ob)7 │ │ │ │ │ b(ject)0 5407 y Fj(This)30 b(section)h(con)m(tains)h(brief)e │ │ │ │ │ (descriptions)g(of)g(the)h(driv)m(er)f(programs.)p eop │ │ │ │ │ end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fj(4)p 136 100 1106 4 v │ │ │ │ │ -1288 w Fh(Drand)29 b Fd(:)41 b Fc(DRAFT)30 b Fd(Jan)m(uary)g(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fj(4)p 136 100 1087 4 v │ │ │ │ │ +1269 w Fh(Drand)29 b Fd(:)41 b Fc(DRAFT)30 b Fd(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2813 100 V 111 399 a Fj(1.)46 │ │ │ │ │ +b Fh(testDrand)g(msglvl)g(msgFile)f(distribution)g(param1)h(param2)g │ │ │ │ │ +(seed1)g(seed2)h(n)227 549 y Fj(This)30 b(driv)m(er)g(program)g(test)h │ │ │ │ │ +(the)g Fh(Drand)e Fj(random)g(n)m(um)m(b)s(er)h(generator.)337 │ │ │ │ │ 761 y Ff(\210)45 b Fj(The)30 b Fh(msglvl)f Fj(parameter)i(determines)f │ │ │ │ │ (the)h(amoun)m(t)f(of)h(output.)337 907 y Ff(\210)45 │ │ │ │ │ b Fj(The)33 b Fh(msgFile)e Fj(parameter)j(determines)f(the)h(message)g │ │ │ │ │ (\014le)f(|)h(if)f Fh(msgFile)e Fj(is)i Fh(stdout)p Fj(,)g(then)g(the) │ │ │ │ │ 427 1020 y(message)27 b(\014le)f(is)g Fc(stdout)p Fj(,)i(otherwise)e(a) │ │ │ │ │ h(\014le)f(is)f(op)s(ened)g(with)h Fc(app)-5 b(end)28 │ │ │ │ │ b Fj(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 1133 │ │ │ │ │ ├── ps2ascii {} │ │ │ │ │ │ @@ -15,15 +15,15 @@ │ │ │ │ │ │ • double mean : mean for a normal distribution │ │ │ │ │ │ • double sigma : variation for a normal distribution │ │ │ │ │ │ • int mode: mode of the object, uniform is 1, normal is 2 │ │ │ │ │ │ 1.2 Prototypes and descriptions of Drand methods │ │ │ │ │ │ This section contains brief descriptions including prototypes of all methods that belong to the │ │ │ │ │ │ Drand object. │ │ │ │ │ │ 1 │ │ │ │ │ │ - 2 Drand : DRAFT January 16, 2024 │ │ │ │ │ │ + 2 Drand : DRAFT February 18, 2025 │ │ │ │ │ │ 1.2.1 Basic methods │ │ │ │ │ │ As usual, there are four basic methods to support object creation, setting default fields, clearing │ │ │ │ │ │ any allocated data, and free’ing the object. │ │ │ │ │ │ 1. Drand * Drand_new ( void ) ; │ │ │ │ │ │ This method simply allocates storage for the Drand structure and then sets the default fields │ │ │ │ │ │ by a call to Drand setDefaultFields(). │ │ │ │ │ │ 2. void Drand_setDefaultFields ( Drand *drand ) ; │ │ │ │ │ │ @@ -47,15 +47,15 @@ │ │ │ │ │ │ 1. void Drand_init ( Drand *drand ) ; │ │ │ │ │ │ This initializer simply sets the default fields with a call to Drand setDefaultFields(). │ │ │ │ │ │ Error checking: If drand is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 2. void Drand_setSeed ( Drand *drand, int seed1 ) ; │ │ │ │ │ │ This method sets the random number seeds using a single input seed. │ │ │ │ │ │ Error checking: If drand is NULL, or if seed1 ≤ 0, or if seed1 ≥ 2147483563, an error message │ │ │ │ │ │ is printed and the program exits. │ │ │ │ │ │ - Drand : DRAFT January 16, 2024 3 │ │ │ │ │ │ + Drand : DRAFT February 18, 2025 3 │ │ │ │ │ │ 3. void Drand_setSeeds ( Drand *drand, int seed1, int seed2 ) ; │ │ │ │ │ │ This method sets the random number seeds using two input seeds. │ │ │ │ │ │ Error checking: If drand is NULL, an error message is printed and the program exits. │ │ │ │ │ │ Error checking: If drand is NULL, or if seed1 ≤ 0, or if seed1 ≥ 2147483563, or if seed2 ≤ 0, │ │ │ │ │ │ or if seed2 ≥ 2147483399, an error message is printed and the program exits. │ │ │ │ │ │ 4. void Drand_setNormal ( Drand *drand, double mean, double sigma ) ; │ │ │ │ │ │ This method sets the mode to be a normal distribution with mean mean and variation sigma. │ │ │ │ │ │ @@ -79,15 +79,15 @@ │ │ │ │ │ │ program exits. │ │ │ │ │ │ 4. void Drand_fillIvector ( Drand *drand, int n, int vec[] ) ; │ │ │ │ │ │ This method fills vec[] with n int random numbers. │ │ │ │ │ │ Error checking: If drand or vec are NULL or if n < 0 , an error message is printed and the │ │ │ │ │ │ program exits. │ │ │ │ │ │ 1.3 Driver programs for the Drand object │ │ │ │ │ │ This section contains brief descriptions of the driver programs. │ │ │ │ │ │ - 4 Drand : DRAFT January 16, 2024 │ │ │ │ │ │ + 4 Drand : DRAFT February 18, 2025 │ │ │ │ │ │ 1. testDrand msglvl msgFile distribution param1 param2 seed1 seed2 n │ │ │ │ │ │ This driver program test the Drand random number generator. │ │ │ │ │ │ • The msglvl parameter determines the amount of output. │ │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ │ message file is stdout, otherwise a file is opened with append status to receive any output │ │ │ │ │ │ data. │ │ │ │ │ │ • The distribution parameter specifies the mode of the object. If 1, the distribution is │ │ │ ├── ./usr/share/doc/spooles-doc/EGraph.ps.gz │ │ │ │ ├── EGraph.ps │ │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ │ %%EndComments │ │ │ │ │ %%BeginDefaults │ │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ │ %%EndDefaults │ │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ │ %DVIPSCommandLine: dvips main -o EGraph.ps │ │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ │ -%DVIPSSource: TeX output 2024.01.16:2047 │ │ │ │ │ +%DVIPSSource: TeX output 2025.02.18:0318 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -1407,20 +1407,21 @@ │ │ │ │ │ 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 52 /four put │ │ │ │ │ -dup 54 /six put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ +dup 56 /eight put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 74 /J put │ │ │ │ │ +dup 70 /F put │ │ │ │ │ dup 97 /a put │ │ │ │ │ -dup 110 /n put │ │ │ │ │ +dup 98 /b put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ dup 114 /r put │ │ │ │ │ dup 117 /u put │ │ │ │ │ dup 121 /y put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ @@ -1604,89 +1605,93 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ │ -C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ │ -6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ │ -11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ │ -1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ │ -A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ │ -F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ │ -EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ │ -033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ │ -A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ │ -468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8A71FF9C085003EBB4F4 │ │ │ │ │ -3D271F5B16B1AAD3EBDC391F534AA46E545E9D8659DD19B309C3B7625A8396FA │ │ │ │ │ -2519464539D46E43ACB72952313C8497315E0319C08628023E8FC54D7D3BAC29 │ │ │ │ │ -D5AD8EFDABF0C33C7AFB7151A6606C62A87F0F5F783569AC4C881A992E3FE420 │ │ │ │ │ -297F7BC5147F3B2FA98450D2F8B07F7D229BC8BE06729920CFEC22556740E1CB │ │ │ │ │ -3DE09AC763C6D4A20AD1599C368FABD07BC35C16683F2A0311A88983415A9140 │ │ │ │ │ -2EFC4BC1B10DCAD4B2B8A28510E5BD39D6616D2B9B079ED3CF9C315B7DEC29D9 │ │ │ │ │ -251DFD0194B34EC175964C23383F23FFB2E41B698C405815D65EAFF9E9DD1DDE │ │ │ │ │ -30F77924656C288B8DDB2E5B0E7B1FAA66791DE3848EE6DE63AD0E945E49C6C7 │ │ │ │ │ -9FCA16E01F027F9EF7ACB55F02F5B0136480802F789F6FE14B430879979BA04D │ │ │ │ │ -F481AD4CF47E6847936F377FB04869F9A80E597301BFCAB718D8764094673876 │ │ │ │ │ -BCEF8FA3701608C84B3A0399A11D2E6AD922CCB7D72AF9EBFB30F4648A37A123 │ │ │ │ │ -CB8FB14BDC351692CF0CCAA5CA9383C2B23BAAA38700327EB743FBBE9EE04041 │ │ │ │ │ -13F5CEF4B3881BBC051C33369A82B3505B1CFD7D91AEF2E43EA728EE48E2D854 │ │ │ │ │ -5A7E516998ACDD4FD835FA901C5A21810A56D51FE919B2E58408EEB4DAEB487F │ │ │ │ │ -BA7F1D292CED902DF3533566D96DAD918319EA650D4FC7D9E0170CDE620F755B │ │ │ │ │ -0E7AE02D9B118481B26F5FF7060FBCFA2A682B6826F00679BCDA68794C05286D │ │ │ │ │ -B616DD08372ACDE0AE6E7EF116F0D36F16241ED4F0E8CCD80377792E3BB1343C │ │ │ │ │ -EEB22CC77738F7CBCBA32CF6C3979F6DF7ED81A89AE8928FD7CC550F2730BA88 │ │ │ │ │ -1B51CEDC63F4C47F261AFCAB7AC3CED20B15C97E714A460A1A3B16436B4A5149 │ │ │ │ │ -8F91DA4BE0B9B648534CE5F442117036B602DC91E2852BEA62F55803B833FDF7 │ │ │ │ │ -9F901AB87489E703DDEED1091A79DC73B4440BBBF2C7592B441187C4A3562204 │ │ │ │ │ -859F08BA3CE2A8ECCD5AAD13C50FB806FE79A388F1822C5608837CBDE526A044 │ │ │ │ │ -12E5CDE4A066932AF2ACA7E8FC6BA4603640944718752975B7DA6E906BE1EA01 │ │ │ │ │ -46736FF5D1AA1CC682D011B6039CF98C35E36D4F14ABC84A38B7203CC9A17756 │ │ │ │ │ -B2B0345276798F1A88A54AD9FEA0853C6DDF28525ED4F0B7380D14147012C2A4 │ │ │ │ │ -5B02888C986C76497EA4C729B0B82EE73C1A1A8E8F1ABF401E341028E9C15AF9 │ │ │ │ │ -354706D8DC07492921AD0932A46736C0D1B066D00287DACCC068FAE6A796EC89 │ │ │ │ │ -54D1D73AA88F3A5912BA9D3FF70065C8D0D0DAD1CD846501E06694374EFDBEC6 │ │ │ │ │ -931F644D5E8494AFC742423AD9A487658E310E0682BE19B8475F4D450487A686 │ │ │ │ │ -2B94494DEAF1C0F59DE82F2CE64BEE5E97F942FCFA1187ED6AA5761E951A7BF7 │ │ │ │ │ -9F842E34A4656C58B35A9E99F7E6762CEE11E0CF59FFD75D7382C5EE6DBB43F1 │ │ │ │ │ -ED219071D3FB22DBA90977723BB467C0490D042684C0724F40DCA3E0D8F1F4E7 │ │ │ │ │ -3C4F9A67BE6528185EAAFDD415224F7E256A4EA00111C17C746CBD80BF569A27 │ │ │ │ │ -D81195D7F79C1CCEEF30ED00D49F48B63E4B8D7953403A3710AE953CC1B76F0F │ │ │ │ │ -F523D777A6A186F262A602543F94AF7471DBE25FEBC207DB42DAF7DC9A5781FB │ │ │ │ │ -2131AD42869D966A734AAE3466DF1CE9D1BCFA72409A558C0AEE6A8E2FEAACB6 │ │ │ │ │ -2CDABCC28433034848ACF9FB4465D272E4AFC48572647F05F41C7A293CC5B595 │ │ │ │ │ -AD31555FB708A72962707348BC7033A8224BD42EB9D75FDF3AE9E6A9C960B330 │ │ │ │ │ -5137DF59F8E2E0D535F41524ABDF070745A4FA25CD8DFD38A5FF30A95452B875 │ │ │ │ │ -6569E8812631300D79A942C563AF174AC05C9F2D09D7D5D3C605F5A6B7F21B34 │ │ │ │ │ -18F270A993B050838E701A17938D1C156CBA7CA4BAC7C562CE9D7B758EAB25A9 │ │ │ │ │ -A6DFFC71F65561341847B776DF34061CE3D439B87B857626987EC93B3B95B8E8 │ │ │ │ │ -76FFB16B263675333FA10414FEED707FF7C366BF8B20FF8577CDEBEBCF1A5BCE │ │ │ │ │ -258C09C90175A5278B7C444A623E3331FDE5A6387B3E389540ED1E7E883958F3 │ │ │ │ │ -3A5C89CCD62256FA069DF4A5090FB17C1F1757C9209DAFB8A1F47182BF3E88D9 │ │ │ │ │ -0B5376B59EE165A761902759C8ED7F5AD301E7EB8B49CC09AF921DB45B7F8002 │ │ │ │ │ -AB32E73AAE53942DE0F9175D8446017006C9C0B93EF39C13B7A879F2F6DDFF16 │ │ │ │ │ -204BB24F976847CF006FD29332FCCB255B5116F7077A44F7066C39C81DC4BAD2 │ │ │ │ │ -40DB2753626C0102E5D047522ABC38EA294A699B8DFD9CA0A7980561A1062E90 │ │ │ │ │ -AB11EE286A9C238D9F721D9980D0A1828C2814972622D948CEE8C812C19A9A03 │ │ │ │ │ -608ED0AC138A436FFBF8BE3D1E66C87793416AF38ED9BC5424568A175FBDAA9E │ │ │ │ │ -D6FC11A7021693819B051562B5A59F32629E2D6019D69DD329BE1894A2B295E1 │ │ │ │ │ -1DCE9683B29AE126C56F26E5C595BF1A8249BDE231DBE8B066F7F62EF149B975 │ │ │ │ │ -A863969A4690504A5EA064721DA909B8157C0B39FBF8228D95CB655E406161E1 │ │ │ │ │ -148610FAEED7C5509880223C06A66DA19E10F94DC2DB481B26 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004FD597ED │ │ │ │ │ +EFDBC64ABD9B79386FB2427D1A63522195B1239C09F8CB3F8BD7A245A6DD82E3 │ │ │ │ │ +260C3889587626DFC5F7978E55F5524ABD6A3319CDD3D3F40D040044D51DA4E1 │ │ │ │ │ +6797EEAC7AA07C77EC6DB0E6E182B545A8BEF63B14F3FC07BAC09E7CD5C17ED6 │ │ │ │ │ +10080704B0DA4E9BA12F968DF8A58458D17E9A5B1F14A83DC51F5B161ADEE1CC │ │ │ │ │ +0183D82ED92C6FC7203C289949EDF0284D9893029FF5408E421324625F17C3E5 │ │ │ │ │ +2437C8F75A9D68EE1AF9174FEA6FC6BF793C7D2E497EA90396CF1A645E283B69 │ │ │ │ │ +8425F47C323587DF91E1D596DCB1E3A787C955D9D965A5E3E26ADF58B62AD5F9 │ │ │ │ │ +0C9AC784DE479780606354111E3202F215650DBBE1063A46F3C10B9EBC974DDA │ │ │ │ │ +A1A28DBBD43E9E5BFF000B12C787D0427928078F8EC5FE90DED97E6C129E8DEA │ │ │ │ │ +51F66504DB83764E52B0BA68DF7BE684C8959CB1D3345CC48221A9A4683306C0 │ │ │ │ │ +62B634E0A539383F0C7A788D9711EFF414869CCC5659D78CEBE009BF2463F56A │ │ │ │ │ +0ADC993348FE96DF7C250E13ED6504AACFE8F8DCA2D2048D9D8CFA127D363EAC │ │ │ │ │ +1F0630E2D1B621E6954038195D965B91FD974FA3F1B8B29D200A16CEBA645E2F │ │ │ │ │ +CEEE6FD49FBBD49E38AE67D4BFFCE91F1FC422554EC4409C5FA18D40FCD6D9B3 │ │ │ │ │ +2185ED1E0F98106D4339F086B05CA36E56EC22C60E2CE23F9C4CC403ACAD3F94 │ │ │ │ │ +4086B4DF6DFA0B7B4716417263E7B558535566AED2F6C2F9846A16D71A7930A7 │ │ │ │ │ +49232D3D16C4A01CF1A1998A06F40062ED329179A85668537C55D0BC24FC0010 │ │ │ │ │ +54DA83E2FC66B2A5D428E6A9BFC983253668C0ECE6CA36DBF97C4B7659D50842 │ │ │ │ │ +C65B36604840EEDA399B57E2DEFAC3E7FB031634CE33D04238F9854D2AAAF448 │ │ │ │ │ +34DA5F3BCCED3166FEEE82BB0BBA0A397CC2F95865CB52AABFF454D93B425809 │ │ │ │ │ +A26AC459F321FD23E2262FE816D06BAAECF32AAF167F84799AF80F9F88388D07 │ │ │ │ │ +0DB5FD57AFEE2850A8DFE977E6AE39CB3DC16DB1A163A583C86C6F775CE33521 │ │ │ │ │ +0081C0BBBAD6D30D26C66B28B38CEAC78FEA5FB3CC5853656B67C6D9D80EB30E │ │ │ │ │ +397558C9179AF5920F34DAB3F578DFCF0DBB137AED17D6325C23883E69EE4621 │ │ │ │ │ +34355A70C19EA68891E1CA937376901C85CDEE109F1665943E29A216DC00937A │ │ │ │ │ +B983A729A4654AD09187C0242D52FA4ADD0853EF4888864914D7D81C56578DD4 │ │ │ │ │ +3B51907032022E6E412D4F114675DEDCA8A9E85DC03A0B583FECD84432D15F70 │ │ │ │ │ +01F627BD6EC91F9FCFDA01BF40E1229B5F164309DBB641AD50970503DA2048C1 │ │ │ │ │ +DF8F36E8D252EE113F0B46677D9BAF376BAE18D74CFB0DBBD0C7E9D0A58BA3ED │ │ │ │ │ +1E5099CAE073EB5638617760AB57849893764EA9735173CD1EAB66884CEA7EE3 │ │ │ │ │ +8843327B2E145BD6FBB49102776B82BC511D109F8BE9E7E99DADABABEDC3CFD9 │ │ │ │ │ +393578FFD85907DFF2849E4CDE6FA4DEC7E1C150EBE4047FFB650F9548BE6D11 │ │ │ │ │ +0C51226A5436F18BF20A02E0F888F46B6AC3A8E8D927ECD3B5E095933AD3859F │ │ │ │ │ +5167C41D832EFCC4093BD2AFA7101AB430E57DAFC3590F05D3CBABB32BC203A0 │ │ │ │ │ +467B23BDB830487C9AA5B85BAC065F8538871B4180F8C4732E637DB090CFDE5A │ │ │ │ │ +3F4F2B5BFAFB848BAAD1A17CB076B34159601639BD93ECAB1214ACABF2C67FE2 │ │ │ │ │ +0658AA20B08681070FF56F1CC52144ABA8765D6E124D1CEA9BBA102808CE1BB2 │ │ │ │ │ +5EDF46BC7BBC2A5B49EE6EC28F5797A3969B057B21FCDBBD0E60848FF14F6CA3 │ │ │ │ │ +70F3060BDBB019B22722C99C7691760F013763B7FBEB62830AE215F195BF9F01 │ │ │ │ │ +21BF4377397E89574CFA47D123AA506A570A77BA6EB4AAB0B237A26154880293 │ │ │ │ │ +3952F832F72ECCB024F02385E5EE8566B165904B594E30D0700D033C6B429F6F │ │ │ │ │ +2A20BC774F442BC9CE29FCC81807C2768A8BC927A215558FBF36DC53F477F04A │ │ │ │ │ +41DA66E1A85B659EB761230977EAD7DA0150513D3323B143D4E2A61BCF03334C │ │ │ │ │ +C0EE3E1B06CFAF58ECC910BD81F0352B75FF1594D6A4EF504232D442174BE766 │ │ │ │ │ +0F8E703F97E21D25D4CD097549C31FEE7017C3916EFB02E7BF869172889827B6 │ │ │ │ │ +A48465EB7612BA3DBC6A9436C7167F149A25CE9F8E3F4F8DE3B5ADF6C0986CB3 │ │ │ │ │ +3A7E2DAB44AB489796461536F5F713017F2620AD03295CAE9285F08974AE0DF8 │ │ │ │ │ +D739260929619B509491AFF09C4CAEF9E65C2CA69470C907ECBF3AB6C955360D │ │ │ │ │ +05ABAC306DB51122A1ADC7EF0DD70FA299A45C505A83727D4598C86319EE9C06 │ │ │ │ │ +7218EFD4F40388354BCF1B79593D5AD221DF955D081F99F880E5CED07321AB3E │ │ │ │ │ +A2FCB8B05D54807D8E15E65B78DCE12989B9276350080C905DBB74CE9AA7E246 │ │ │ │ │ +5D3BAED292C562D4CF54617FCC6654496C7996D1ECE1EFF9258716AB763A12E6 │ │ │ │ │ +316E4C5587351A6DB011F58F6A15BC28BEBDC3836E0CB892807FEC228DC1B380 │ │ │ │ │ +92F7F42279F08D60F13D6A4CB425543C3644461461CBF6F27B6603F613D1FCF8 │ │ │ │ │ +A8410AD82D1498166AEB35D4125D7E2ADEAAB18BC04806AED53513F066E5F154 │ │ │ │ │ +3E13E863C50B9814EE2FB978D0D24A03FAF650CB6E2CADF1E6BE6BAF699AFC03 │ │ │ │ │ +E1A0EEB207B3B9A689ED5B373FE86686AD230BE6C18E1673DDA50E224B343EC5 │ │ │ │ │ +903BA0C8041C13607B50D5852AC7970B15C244E6EBA7D54B3086312CF04761D6 │ │ │ │ │ +7D3D75D51F20C371494AB81AB4A9838B20B483B851D01FEF41EA5C0B4755B964 │ │ │ │ │ +EB6E9B178051C556A010994EB88EAE641F4C1A0D7E0F98D5267E18AEF1AEA7E7 │ │ │ │ │ +9030A97DF89AFF621981C33B645FFB5F3BB2065A7661D11B26E0999561DF3580 │ │ │ │ │ +4A76A05DFAF8085525F8D5C01936F03C32E26E72569371C9EA3B8916F9DFC5FC │ │ │ │ │ +6A6F25A0FFDB981BA8B896393D75774D50828E6ADE903C45406E354703A4BC56 │ │ │ │ │ +2C49A47FEAC970DC433E3050C49F7FB945A9705BD8852D2D65D935F244D3B423 │ │ │ │ │ +EFAB84AAAAB8FBAFF50AFF372A533BCCEB5FC273DBADCF715776DF02A5DCBA9A │ │ │ │ │ +FBF265FAB4745D6475B33611EEE1EA95E7584E0BEEC7CA789AA69C8D03D6F8C0 │ │ │ │ │ +5B6844E2B901ACA560C0433B053D134866E567425174E47173679AAD4486A2D3 │ │ │ │ │ +369C29E4DD2CD6ACA1BE80ED8FF0A9C58A616D26E758BD8E6342624EC83FB590 │ │ │ │ │ +BD354B52B60BB054FAFE9AC63E1564FBC721FE8F276B0413EC89A2C85E5ED1B0 │ │ │ │ │ +3A9D83BE62A4488ADE7CE69971A8AF7E5862A4290EEF6F00D4171C7FFB360065 │ │ │ │ │ +92E72BF02BE27161AE0BB5516572A0BDC4F316FFB24B38484AC8D1FD4CD86062 │ │ │ │ │ +A2B5D03CF28C3A679C039A6EFDD4C9DA7E463AD60234C9F6BBEE48D87DD94D85 │ │ │ │ │ +842F495F3E25723718682CE4D6224CBBF4456F03077EDF736D65B9DDAB09470E │ │ │ │ │ +17742D82011FFA96BFE86B96E858F9352FCD20C3D46B77DBDEE54336EC2249EA │ │ │ │ │ +211F6DFFF5BEA1E5192BE1BAC0BDD5EDDB3D56C6F7C6E543561A0B39E5C1B04F │ │ │ │ │ +C683A7516B6E69D682455386DDA709929D621FA434D403E895AA0A77DBE1DFD2 │ │ │ │ │ +0D060DF82378880147ED97C6E8149686FA048710B113760AC1DA4512FF8556B3 │ │ │ │ │ +16E2447485B8C3CD58D0469C4A45FFB4CB0322BB284C02 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -3906,16 +3911,16 @@ │ │ │ │ │ {restore}if │ │ │ │ │ %%EndFont │ │ │ │ │ TeXDict begin 39158280 55380996 1000 600 600 (main.dvi) │ │ │ │ │ @start /Fa 253[71 2[{}1 90.9091 /CMSY10 rf /Fb 133[50 │ │ │ │ │ 59 4[44 44 46 2[56 62 93 31 2[31 62 2[51 62 50 1[54 11[86 │ │ │ │ │ 5[84 5[42 6[80 13[56 56 56 56 2[31 46[{}24 99.6264 /CMBX12 │ │ │ │ │ rf /Fc 141[62 1[62 7[62 6[62 25[62 1[62 69[{}6 119.552 │ │ │ │ │ -/CMTT12 rf /Fd 134[48 3[51 2[36 3[51 12[45 22[47 15[25 │ │ │ │ │ -3[45 1[45 1[45 45 45 3[25 44[{}13 90.9091 /CMSL10 rf │ │ │ │ │ +/CMTT12 rf /Fd 134[48 3[51 2[36 12[40 2[51 45 26[59 11[25 │ │ │ │ │ +1[45 2[45 2[45 45 45 3[25 44[{}14 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 │ │ │ │ │ @@ -4035,88 +4040,88 @@ │ │ │ │ │ (ts.)0 5294 y(A)37 b(correctly)i(initialized)g(and)d(non)m(trivial)i │ │ │ │ │ Fj(EGraph)e Fk(ob)5 b(ject)38 b(will)f(ha)m(v)m(e)i(p)s(ositiv)m(e)f │ │ │ │ │ Fj(nelem)e Fk(and)g Fj(nvtx)g Fk(v)-5 b(alues,)40 b(a)0 │ │ │ │ │ 5407 y(v)-5 b(alid)31 b Fj(adjIVL)d Fk(\014eld.)41 b(If)30 │ │ │ │ │ b Fj(type)46 b(=)i(1)p Fk(,)30 b(the)h Fj(vwghts)d Fk(will)j(b)s(e)f │ │ │ │ │ (non-)p Fj(NULL)p Fk(.)1927 5656 y(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fk(2)p 136 100 1082 4 v │ │ │ │ │ -1264 w Fj(EGraph)29 b Fd(:)41 b Fg(DRAFT)30 b Fd(Jan)m(uary)g(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ -(clearing)0 1339 y(an)m(y)31 b(allo)s(cated)h(data,)f(and)f(free'ing)h │ │ │ │ │ -(the)g(ob)5 b(ject.)111 1587 y(1.)46 b Fj(EGraph)g(*)i(EGraph_new)d(\() │ │ │ │ │ -i(void)g(\))g(;)227 1742 y Fk(This)25 b(metho)s(d)g(simply)f(allo)s │ │ │ │ │ -(cates)k(storage)f(for)e(the)h Fj(EGraph)d Fk(structure)i(and)g(then)g │ │ │ │ │ -(sets)g(the)h(default)f(\014elds)227 1855 y(b)m(y)31 │ │ │ │ │ -b(a)f(call)i(to)f Fj(EGraph)p 1001 1855 29 4 v 33 w │ │ │ │ │ -(setDefaultFields\(\))p Fk(.)111 2052 y(2.)46 b Fj(void)h │ │ │ │ │ -(EGraph_setDefaultFields)41 b(\()48 b(EGraph)e(*egraph)g(\))h(;)227 │ │ │ │ │ -2206 y Fk(This)28 b(metho)s(d)f(sets)i(the)f(structure's)g(\014elds)g │ │ │ │ │ -(are)g(set)h(to)g(default)f(v)-5 b(alues:)40 b Fj(type)47 │ │ │ │ │ -b(=)g(nelem)f(=)i(nvtx)f(=)g(0)p Fk(,)227 2319 y Fj(adjIVL)f(=)i │ │ │ │ │ -(vwghts)e(=)h(NULL)p Fk(.)227 2474 y Fg(Err)-5 b(or)34 │ │ │ │ │ -b(che)-5 b(cking:)40 b Fk(If)30 b Fj(egraph)f Fk(is)h │ │ │ │ │ -Fj(NULL)g Fk(an)g(error)g(message)h(is)g(prin)m(ted)f(and)f(the)i │ │ │ │ │ -(program)f(exits.)111 2671 y(3.)46 b Fj(void)h(EGraph_clearData)c(\()48 │ │ │ │ │ -b(EGraph)e(*egraph)g(\))h(;)227 2825 y Fk(This)25 b(metho)s(d)g(clears) │ │ │ │ │ -i(data)g(and)e(releases)i(an)m(y)f(storage)h(allo)s(cated)h(b)m(y)d │ │ │ │ │ -(the)h(ob)5 b(ject.)41 b(If)25 b Fj(egraph->adjIVL)227 │ │ │ │ │ -2938 y Fk(is)c(not)f Fj(NULL)p Fk(,)f(then)h Fj(IVL)p │ │ │ │ │ -1043 2938 V 34 w(free\(egraph->adjIVL\))15 b Fk(is)20 │ │ │ │ │ -b(called)h(to)h(free)e(the)g Fj(IVL)g Fk(ob)5 b(ject.)38 │ │ │ │ │ -b(If)20 b Fj(egraph->vwghts)227 3051 y Fk(is)31 b(not)g │ │ │ │ │ -Fj(NULL)p Fk(,)e(then)i Fj(IVfree\(egraph->vwghts\))24 │ │ │ │ │ -b Fk(is)31 b(called)g(to)h(free)e(the)h Fj(int)f Fk(v)m(ector.)43 │ │ │ │ │ -b(It)31 b(then)f(sets)h(the)227 3164 y(structure's)f(default)h │ │ │ │ │ -(\014elds)f(with)g(a)g(call)i(to)f Fj(EGraph)p 2071 3164 │ │ │ │ │ -V 33 w(setDefaultFields\(\))p Fk(.)227 3319 y Fg(Err)-5 │ │ │ │ │ -b(or)34 b(che)-5 b(cking:)40 b Fk(If)30 b Fj(egraph)f │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fk(2)p 136 100 1063 4 v │ │ │ │ │ +1245 w Fj(EGraph)29 b Fd(:)41 b Fg(DRAFT)30 b Fd(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2837 100 V 0 399 a Ff(1.2)135 │ │ │ │ │ +b(Protot)l(yp)t(es)46 b(and)f(descriptions)g(of)g Fc(EGraph)d │ │ │ │ │ +Ff(metho)t(ds)0 631 y Fk(This)f(section)j(con)m(tains)f(brief)f │ │ │ │ │ +(descriptions)g(including)f(protot)m(yp)s(es)i(of)f(all)h(metho)s(ds)f │ │ │ │ │ +(that)h(b)s(elong)f(to)h(the)0 744 y Fj(EGraph)29 b Fk(ob)5 │ │ │ │ │ +b(ject.)0 1025 y Fb(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ │ +1226 y Fk(As)d(usual,)h(there)f(are)g(four)f(basic)h(metho)s(ds)g(to)g │ │ │ │ │ +(supp)s(ort)e(ob)5 b(ject)36 b(creation,)i(setting)e(default)f │ │ │ │ │ +(\014elds,)h(clearing)0 1339 y(an)m(y)31 b(allo)s(cated)h(data,)f(and)f │ │ │ │ │ +(free'ing)h(the)g(ob)5 b(ject.)111 1587 y(1.)46 b Fj(EGraph)g(*)i │ │ │ │ │ +(EGraph_new)d(\()i(void)g(\))g(;)227 1742 y Fk(This)25 │ │ │ │ │ +b(metho)s(d)g(simply)f(allo)s(cates)k(storage)f(for)e(the)h │ │ │ │ │ +Fj(EGraph)d Fk(structure)i(and)g(then)g(sets)g(the)h(default)f │ │ │ │ │ +(\014elds)227 1855 y(b)m(y)31 b(a)f(call)i(to)f Fj(EGraph)p │ │ │ │ │ +1001 1855 29 4 v 33 w(setDefaultFields\(\))p Fk(.)111 │ │ │ │ │ +2052 y(2.)46 b Fj(void)h(EGraph_setDefaultFields)41 b(\()48 │ │ │ │ │ +b(EGraph)e(*egraph)g(\))h(;)227 2206 y Fk(This)28 b(metho)s(d)f(sets)i │ │ │ │ │ +(the)f(structure's)g(\014elds)g(are)g(set)h(to)g(default)f(v)-5 │ │ │ │ │ +b(alues:)40 b Fj(type)47 b(=)g(nelem)f(=)i(nvtx)f(=)g(0)p │ │ │ │ │ +Fk(,)227 2319 y Fj(adjIVL)f(=)i(vwghts)e(=)h(NULL)p Fk(.)227 │ │ │ │ │ +2474 y Fg(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fk(If)30 │ │ │ │ │ +b Fj(egraph)f Fk(is)h Fj(NULL)g Fk(an)g(error)g(message)h(is)g(prin)m │ │ │ │ │ +(ted)f(and)f(the)i(program)f(exits.)111 2671 y(3.)46 │ │ │ │ │ +b Fj(void)h(EGraph_clearData)c(\()48 b(EGraph)e(*egraph)g(\))h(;)227 │ │ │ │ │ +2825 y Fk(This)25 b(metho)s(d)g(clears)i(data)g(and)e(releases)i(an)m │ │ │ │ │ +(y)f(storage)h(allo)s(cated)h(b)m(y)d(the)h(ob)5 b(ject.)41 │ │ │ │ │ +b(If)25 b Fj(egraph->adjIVL)227 2938 y Fk(is)c(not)f │ │ │ │ │ +Fj(NULL)p Fk(,)f(then)h Fj(IVL)p 1043 2938 V 34 w │ │ │ │ │ +(free\(egraph->adjIVL\))15 b Fk(is)20 b(called)h(to)h(free)e(the)g │ │ │ │ │ +Fj(IVL)g Fk(ob)5 b(ject.)38 b(If)20 b Fj(egraph->vwghts)227 │ │ │ │ │ +3051 y Fk(is)31 b(not)g Fj(NULL)p Fk(,)e(then)i Fj │ │ │ │ │ +(IVfree\(egraph->vwghts\))24 b Fk(is)31 b(called)g(to)h(free)e(the)h │ │ │ │ │ +Fj(int)f Fk(v)m(ector.)43 b(It)31 b(then)f(sets)h(the)227 │ │ │ │ │ +3164 y(structure's)f(default)h(\014elds)f(with)g(a)g(call)i(to)f │ │ │ │ │ +Fj(EGraph)p 2071 3164 V 33 w(setDefaultFields\(\))p Fk(.)227 │ │ │ │ │ +3319 y Fg(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fk(If)30 │ │ │ │ │ +b Fj(egraph)f Fk(is)h Fj(NULL)g Fk(an)g(error)g(message)h(is)g(prin)m │ │ │ │ │ +(ted)f(and)f(the)i(program)f(exits.)111 3516 y(4.)46 │ │ │ │ │ +b Fj(void)h(EGraph_free)e(\()i(EGraph)f(*egraph)g(\))h(;)227 │ │ │ │ │ +3670 y Fk(This)26 b(metho)s(d)f(releases)j(an)m(y)e(storage)i(b)m(y)e │ │ │ │ │ +(a)h(call)g(to)g Fj(EGraph)p 2317 3670 V 33 w(clearData\(\))c │ │ │ │ │ +Fk(then)j(free's)g(the)g(storage)i(for)227 3783 y(the)j(structure)f │ │ │ │ │ +(with)g(a)h(call)g(to)g Fj(free\(\))p Fk(.)227 3938 y │ │ │ │ │ +Fg(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fk(If)30 b Fj(egraph)f │ │ │ │ │ Fk(is)h Fj(NULL)g Fk(an)g(error)g(message)h(is)g(prin)m(ted)f(and)f │ │ │ │ │ -(the)i(program)f(exits.)111 3516 y(4.)46 b Fj(void)h(EGraph_free)e(\()i │ │ │ │ │ -(EGraph)f(*egraph)g(\))h(;)227 3670 y Fk(This)26 b(metho)s(d)f │ │ │ │ │ -(releases)j(an)m(y)e(storage)i(b)m(y)e(a)h(call)g(to)g │ │ │ │ │ -Fj(EGraph)p 2317 3670 V 33 w(clearData\(\))c Fk(then)j(free's)g(the)g │ │ │ │ │ -(storage)i(for)227 3783 y(the)j(structure)f(with)g(a)h(call)g(to)g │ │ │ │ │ -Fj(free\(\))p Fk(.)227 3938 y Fg(Err)-5 b(or)34 b(che)-5 │ │ │ │ │ -b(cking:)40 b Fk(If)30 b Fj(egraph)f Fk(is)h Fj(NULL)g │ │ │ │ │ -Fk(an)g(error)g(message)h(is)g(prin)m(ted)f(and)f(the)i(program)f │ │ │ │ │ -(exits.)0 4219 y Fb(1.2.2)112 b(Initializer)38 b(metho)s(ds)111 │ │ │ │ │ -4420 y Fk(1.)46 b Fj(void)h(EGraph_init)e(\()i(EGraph)f(*egraph,)g(int) │ │ │ │ │ -h(type,)f(int)h(nelem,)f(int)h(nvtx,)1134 4533 y(int)g(IVL_type)f(\))h │ │ │ │ │ -(;)227 4688 y Fk(This)41 b(metho)s(d)h(initializes)i(an)e │ │ │ │ │ -Fj(EGraph)e Fk(ob)5 b(ject)43 b(giv)m(en)g(the)f(t)m(yp)s(e)g(of)h(v)m │ │ │ │ │ -(ertices,)j(n)m(um)m(b)s(er)41 b(of)h(elemen)m(ts,)227 │ │ │ │ │ -4801 y(n)m(um)m(b)s(er)g(of)h(v)m(ertices,)49 b(and)42 │ │ │ │ │ -b(storage)j(t)m(yp)s(e)e(for)g(the)h Fj(IVL)e Fk(elemen)m(t)j(list)e │ │ │ │ │ -(ob)5 b(ject.)80 b(It)44 b(then)f(clears)h(an)m(y)227 │ │ │ │ │ -4914 y(previous)39 b(data)i(with)e(a)h(call)h(to)f Fj(EGraph)p │ │ │ │ │ -1706 4914 V 33 w(clearData\(\))p Fk(.)65 b(The)39 b Fj(IVL)g │ │ │ │ │ -Fk(ob)5 b(ject)40 b(is)g(initialized)h(b)m(y)f(a)g(call)227 │ │ │ │ │ -5027 y(to)35 b Fj(IVL)p 492 5027 V 33 w(init1\(\))p Fk(.)48 │ │ │ │ │ -b(If)33 b Fj(type)47 b(=)g(1)p Fk(,)35 b(the)e Fj(vwghts)f │ │ │ │ │ -Fk(is)i(initialized)h(via)f(a)g(call)h(to)f Fj(IVinit\(\))p │ │ │ │ │ -Fk(.)48 b(See)34 b(the)g Fj(IVL)227 5140 y Fk(ob)5 b(ject)32 │ │ │ │ │ -b(for)e(a)g(description)h(of)f(the)h Fj(IVL)p 1593 5140 │ │ │ │ │ -V 33 w(type)f Fk(parameter.)227 5294 y Fg(Err)-5 b(or)36 │ │ │ │ │ -b(che)-5 b(cking:)45 b Fk(If)32 b Fj(egraph)f Fk(is)i │ │ │ │ │ -Fj(NULL)f Fk(or)g Fj(type)g Fk(is)h(not)g(zero)g(or)g(one,)h(or)e(if)h │ │ │ │ │ -(either)g Fj(nelem)e Fk(or)i Fj(nvtx)f Fk(are)227 5407 │ │ │ │ │ -y(nonp)s(ositiv)m(e,)f(an)g(error)f(message)h(is)g(prin)m(ted)e(and)h │ │ │ │ │ -(the)h(program)f(exits.)p eop end │ │ │ │ │ +(the)i(program)f(exits.)0 4219 y Fb(1.2.2)112 b(Initializer)38 │ │ │ │ │ +b(metho)s(ds)111 4420 y Fk(1.)46 b Fj(void)h(EGraph_init)e(\()i(EGraph) │ │ │ │ │ +f(*egraph,)g(int)h(type,)f(int)h(nelem,)f(int)h(nvtx,)1134 │ │ │ │ │ +4533 y(int)g(IVL_type)f(\))h(;)227 4688 y Fk(This)41 │ │ │ │ │ +b(metho)s(d)h(initializes)i(an)e Fj(EGraph)e Fk(ob)5 │ │ │ │ │ +b(ject)43 b(giv)m(en)g(the)f(t)m(yp)s(e)g(of)h(v)m(ertices,)j(n)m(um)m │ │ │ │ │ +(b)s(er)41 b(of)h(elemen)m(ts,)227 4801 y(n)m(um)m(b)s(er)g(of)h(v)m │ │ │ │ │ +(ertices,)49 b(and)42 b(storage)j(t)m(yp)s(e)e(for)g(the)h │ │ │ │ │ +Fj(IVL)e Fk(elemen)m(t)j(list)e(ob)5 b(ject.)80 b(It)44 │ │ │ │ │ +b(then)f(clears)h(an)m(y)227 4914 y(previous)39 b(data)i(with)e(a)h │ │ │ │ │ +(call)h(to)f Fj(EGraph)p 1706 4914 V 33 w(clearData\(\))p │ │ │ │ │ +Fk(.)65 b(The)39 b Fj(IVL)g Fk(ob)5 b(ject)40 b(is)g(initialized)h(b)m │ │ │ │ │ +(y)f(a)g(call)227 5027 y(to)35 b Fj(IVL)p 492 5027 V │ │ │ │ │ +33 w(init1\(\))p Fk(.)48 b(If)33 b Fj(type)47 b(=)g(1)p │ │ │ │ │ +Fk(,)35 b(the)e Fj(vwghts)f Fk(is)i(initialized)h(via)f(a)g(call)h(to)f │ │ │ │ │ +Fj(IVinit\(\))p Fk(.)48 b(See)34 b(the)g Fj(IVL)227 5140 │ │ │ │ │ +y Fk(ob)5 b(ject)32 b(for)e(a)g(description)h(of)f(the)h │ │ │ │ │ +Fj(IVL)p 1593 5140 V 33 w(type)f Fk(parameter.)227 5294 │ │ │ │ │ +y Fg(Err)-5 b(or)36 b(che)-5 b(cking:)45 b Fk(If)32 b │ │ │ │ │ +Fj(egraph)f Fk(is)i Fj(NULL)f Fk(or)g Fj(type)g Fk(is)h(not)g(zero)g │ │ │ │ │ +(or)g(one,)h(or)e(if)h(either)g Fj(nelem)e Fk(or)i Fj(nvtx)f │ │ │ │ │ +Fk(are)227 5407 y(nonp)s(ositiv)m(e,)f(an)g(error)f(message)h(is)g │ │ │ │ │ +(prin)m(ted)e(and)h(the)h(program)f(exits.)p eop end │ │ │ │ │ %%Page: 3 3 │ │ │ │ │ -TeXDict begin 3 2 bop 91 100 1082 4 v 1264 100 a Fj(EGraph)28 │ │ │ │ │ -b Fd(:)41 b Fg(DRAFT)121 b Fd(Jan)m(uary)30 b(16,)i(2024)p │ │ │ │ │ -2771 100 V 1082 w Fk(3)0 399 y Fb(1.2.3)112 b(Utilit)m(y)38 │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1063 4 v 1245 100 a Fj(EGraph)28 │ │ │ │ │ +b Fd(:)41 b Fg(DRAFT)121 b Fd(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2790 100 V 1063 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 │ │ │ │ │ @@ -4188,37 +4193,37 @@ │ │ │ │ │ 5261 y(the)d(data,)h(the)f(v)-5 b(alue)30 b Fj(1)f Fk(is)h(returned.)39 │ │ │ │ │ b(If)29 b(an)h(IO)f(error)g(is)h(encoun)m(tered)g(from)f │ │ │ │ │ Fj(fread)p Fk(,)g(zero)h(is)g(returned.)227 5407 y Fg(Err)-5 │ │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fk(If)30 b Fj(egraph)f │ │ │ │ │ Fk(or)h Fj(fp)g Fk(are)h Fj(NULL)e Fk(an)h(error)g(message)i(is)e(prin) │ │ │ │ │ m(ted)g(and)g(zero)h(is)g(returned.)p eop end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fk(4)p 136 100 1082 4 v │ │ │ │ │ -1264 w Fj(EGraph)29 b Fd(:)41 b Fg(DRAFT)30 b Fd(Jan)m(uary)g(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ -771 y(the)31 b(\014le)f(and)g(returns)f(the)i(v)-5 b(alue)31 │ │ │ │ │ -b(returned)e(from)h(the)g(called)i(routine.)227 918 y │ │ │ │ │ -Fg(Err)-5 b(or)47 b(che)-5 b(cking:)66 b Fk(If)44 b Fj(egraph)e │ │ │ │ │ -Fk(or)h Fj(fn)g Fk(are)i Fj(NULL)p Fk(,)d(or)i(if)g Fj(fn)f │ │ │ │ │ -Fk(is)h(not)g(of)f(the)h(form)g Fj(*.egraphf)d Fk(\(for)j(a)227 │ │ │ │ │ -1031 y(formatted)32 b(\014le\))g(or)f Fj(*.egraphb)e │ │ │ │ │ -Fk(\(for)j(a)f(binary)g(\014le\),)h(an)f(error)g(message)i(is)e(prin)m │ │ │ │ │ -(ted)g(and)g(the)g(metho)s(d)227 1144 y(returns)e(zero.)111 │ │ │ │ │ -1325 y(5.)46 b Fj(int)h(EGraph_writeToFormattedFi)o(le)42 │ │ │ │ │ -b(\()47 b(EGraph)f(*egraph,)g(FILE)g(*fp)h(\))h(;)227 │ │ │ │ │ -1472 y Fk(This)27 b(metho)s(d)g(writes)g(an)g Fj(EGraph)f │ │ │ │ │ -Fk(ob)5 b(ject)28 b(to)g(a)g(formatted)g(\014le.)40 b(If)27 │ │ │ │ │ -b(there)g(are)h(no)f(errors)g(in)g(writing)h(the)227 │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fk(4)p 136 100 1063 4 v │ │ │ │ │ +1245 w Fj(EGraph)29 b Fd(:)41 b Fg(DRAFT)30 b Fd(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2837 100 V 111 399 a Fk(4.)46 │ │ │ │ │ +b Fj(int)h(EGraph_writeToFile)c(\()k(EGraph)g(*egraph,)e(char)i(*fn)g │ │ │ │ │ +(\))g(;)227 546 y Fk(This)29 b(metho)s(d)h(writes)g(an)g │ │ │ │ │ +Fj(EGraph)e Fk(ob)5 b(ject)31 b(to)g(a)f(\014le.)41 b(It)30 │ │ │ │ │ +b(tries)h(to)f(op)s(en)g(the)g(\014le)g(and)f(if)h(it)h(is)f │ │ │ │ │ +(successful,)227 658 y(it)25 b(then)e(calls)i Fj(EGraph)p │ │ │ │ │ +1002 658 29 4 v 33 w(writeFromFormattedFile\(\))17 b │ │ │ │ │ +Fk(or)24 b Fj(EGraph)p 2597 658 V 33 w(writeFromBinaryFile\(\))p │ │ │ │ │ +Fk(,)c(closes)227 771 y(the)31 b(\014le)f(and)g(returns)f(the)i(v)-5 │ │ │ │ │ +b(alue)31 b(returned)e(from)h(the)g(called)i(routine.)227 │ │ │ │ │ +918 y Fg(Err)-5 b(or)47 b(che)-5 b(cking:)66 b Fk(If)44 │ │ │ │ │ +b Fj(egraph)e Fk(or)h Fj(fn)g Fk(are)i Fj(NULL)p Fk(,)d(or)i(if)g │ │ │ │ │ +Fj(fn)f Fk(is)h(not)g(of)f(the)h(form)g Fj(*.egraphf)d │ │ │ │ │ +Fk(\(for)j(a)227 1031 y(formatted)32 b(\014le\))g(or)f │ │ │ │ │ +Fj(*.egraphb)e Fk(\(for)j(a)f(binary)g(\014le\),)h(an)f(error)g │ │ │ │ │ +(message)i(is)e(prin)m(ted)g(and)g(the)g(metho)s(d)227 │ │ │ │ │ +1144 y(returns)e(zero.)111 1325 y(5.)46 b Fj(int)h │ │ │ │ │ +(EGraph_writeToFormattedFi)o(le)42 b(\()47 b(EGraph)f(*egraph,)g(FILE)g │ │ │ │ │ +(*fp)h(\))h(;)227 1472 y Fk(This)27 b(metho)s(d)g(writes)g(an)g │ │ │ │ │ +Fj(EGraph)f Fk(ob)5 b(ject)28 b(to)g(a)g(formatted)g(\014le.)40 │ │ │ │ │ +b(If)27 b(there)g(are)h(no)f(errors)g(in)g(writing)h(the)227 │ │ │ │ │ 1585 y(data,)k(the)e(v)-5 b(alue)31 b Fj(1)f Fk(is)g(returned.)40 │ │ │ │ │ b(If)30 b(an)g(IO)g(error)g(is)g(encoun)m(tered)h(from)f │ │ │ │ │ Fj(fprintf)p Fk(,)f(zero)i(is)f(returned.)227 1732 y │ │ │ │ │ Fg(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fk(If)30 b Fj(egraph)f │ │ │ │ │ Fk(or)h Fj(fp)g Fk(are)h Fj(NULL)e Fk(an)h(error)g(message)i(is)e(prin) │ │ │ │ │ m(ted)g(and)g(zero)h(is)g(returned.)111 1913 y(6.)46 │ │ │ │ │ b Fj(int)h(EGraph_writeToBinaryFile)41 b(\()48 b(EGraph)e(*egraph,)f │ │ │ │ │ @@ -4270,17 +4275,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 1082 4 v 1264 100 a Fj(EGraph)28 │ │ │ │ │ -b Fd(:)41 b Fg(DRAFT)121 b Fd(Jan)m(uary)30 b(16,)i(2024)p │ │ │ │ │ -2771 100 V 1082 w Fk(5)337 399 y Fe(\210)45 b Fk(The)35 │ │ │ │ │ +TeXDict begin 5 4 bop 91 100 1063 4 v 1245 100 a Fj(EGraph)28 │ │ │ │ │ +b Fd(:)41 b Fg(DRAFT)121 b Fd(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2790 100 V 1063 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 │ │ │ │ │ @@ -4352,26 +4357,26 @@ │ │ │ │ │ (b)s(e)g(greater)i(than)f(or)g(equal)g(to)427 5139 y(one.)337 │ │ │ │ │ 5294 y Fe(\210)45 b Fj(ncomp)26 b Fk(is)g(the)h(n)m(um)m(b)s(er)f(of)h │ │ │ │ │ (comp)s(onen)m(ts)f(\(i.e.,)k(the)c(n)m(um)m(b)s(er)g(of)h(degrees)g │ │ │ │ │ (of)g(freedom\))g(at)g(eac)m(h)h(grid)427 5407 y(p)s(oin)m(t,)j(m)m │ │ │ │ │ (ust)f(b)s(e)g(greater)h(than)g(or)f(equal)h(to)g(one.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 6 6 │ │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fk(6)p 136 100 1082 4 v │ │ │ │ │ -1264 w Fj(EGraph)29 b Fd(:)41 b Fg(DRAFT)30 b Fd(Jan)m(uary)g(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ -Fj(outEGraphFile)c Fk(is)k(of)g(the)f(form)427 737 y │ │ │ │ │ -Fj(*.egraphf)p Fk(\),)i(or)h(a)h(binary)e(\014le)i(\(if)g │ │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fk(6)p 136 100 1063 4 v │ │ │ │ │ +1245 w Fj(EGraph)29 b Fd(:)41 b Fg(DRAFT)30 b Fd(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2837 100 V 337 399 a Fe(\210)45 │ │ │ │ │ +b Fk(The)20 b Fj(outEGraphFile)d Fk(parameter)j(is)h(the)f(output)g │ │ │ │ │ +(\014le)g(for)h(the)f Fj(EGraph)f Fk(ob)5 b(ject.)38 │ │ │ │ │ +b(If)20 b Fj(outEGraphFile)427 511 y Fk(is)h Fj(none)e │ │ │ │ │ +Fk(then)h(the)g Fj(EGraph)f Fk(ob)5 b(ject)21 b(is)f(not)h(written)f │ │ │ │ │ +(to)h(a)g(\014le.)37 b(Otherwise,)22 b(the)f Fj(EGraph)p │ │ │ │ │ +3409 511 29 4 v 33 w(writeToFile\(\))427 624 y Fk(metho)s(d)27 │ │ │ │ │ +b(is)h(called)h(to)f(write)g(the)g(ob)5 b(ject)29 b(to)f(a)g(formatted) │ │ │ │ │ +g(\014le)g(\(if)g Fj(outEGraphFile)c Fk(is)k(of)g(the)f(form)427 │ │ │ │ │ +737 y Fj(*.egraphf)p Fk(\),)i(or)h(a)h(binary)e(\014le)i(\(if)g │ │ │ │ │ Fj(outEGraphFile)26 b Fk(is)31 b(of)f(the)h(form)f Fj(*.egraphb)p │ │ │ │ │ Fk(\).)p eop end │ │ │ │ │ %%Page: 7 7 │ │ │ │ │ TeXDict begin 7 6 bop 0 866 a Fl(Index)0 1289 y Fj(EGraph)p │ │ │ │ │ 294 1289 29 4 v 33 w(clearData\(\))p Fk(,)27 b(2)0 1402 │ │ │ │ │ y Fj(EGraph)p 294 1402 V 33 w(free\(\))p Fk(,)i(2)0 1515 │ │ │ │ │ y Fj(EGraph)p 294 1515 V 33 w(init\(\))p Fk(,)g(2)0 1628 │ │ │ │ │ ├── ps2ascii {} │ │ │ │ │ │ @@ -21,15 +21,15 @@ │ │ │ │ │ │ • int nvtx : number of vertices in the graph │ │ │ │ │ │ • IVL *adjIVL : pointer to a IVL structure that holds the vertex lists for the elements. │ │ │ │ │ │ • int *vwghts : when type = 1, vwghts points to an int vector of size nvtx that holds the │ │ │ │ │ │ node weights. │ │ │ │ │ │ A correctly initialized and nontrivial EGraph object will have positive nelem and nvtx values, a │ │ │ │ │ │ valid adjIVL field. If type = 1, the vwghts will be non-NULL. │ │ │ │ │ │ 1 │ │ │ │ │ │ - 2 EGraph : DRAFT January 16, 2024 │ │ │ │ │ │ + 2 EGraph : DRAFT February 18, 2025 │ │ │ │ │ │ 1.2 Prototypes and descriptions of EGraph methods │ │ │ │ │ │ This section contains brief descriptions including prototypes of all methods that belong to the │ │ │ │ │ │ EGraph object. │ │ │ │ │ │ 1.2.1 Basic methods │ │ │ │ │ │ As usual, there are four basic methods to support object creation, setting default fields, clearing │ │ │ │ │ │ any allocated data, and free’ing the object. │ │ │ │ │ │ 1. EGraph * EGraph_new ( void ) ; │ │ │ │ │ │ @@ -55,15 +55,15 @@ │ │ │ │ │ │ This method initializes an EGraph object given the type of vertices, number of elements, │ │ │ │ │ │ number of vertices, and storage type for the IVL element list object. It then clears any │ │ │ │ │ │ previous data with a call to EGraph clearData(). The IVL object is initialized by a call │ │ │ │ │ │ to IVL init1(). If type = 1, the vwghts is initialized via a call to IVinit(). See the IVL │ │ │ │ │ │ object for a description of the IVL type parameter. │ │ │ │ │ │ Error checking: If egraph is NULL or type is not zero or one, or if either nelem or nvtx are │ │ │ │ │ │ nonpositive, an error message is printed and the program exits. │ │ │ │ │ │ - EGraph : DRAFT January 16, 2024 3 │ │ │ │ │ │ + EGraph : DRAFT February 18, 2025 3 │ │ │ │ │ │ 1.2.3 Utility methods │ │ │ │ │ │ 1. Graph EGraph_mkAdjGraph ( EGraph *egraph ) ; │ │ │ │ │ │ This method creates and returns a Graph object with vertex adjacency lists from the element │ │ │ │ │ │ graph object. │ │ │ │ │ │ Error checking: If egraph is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 2. EGraph * EGraph_make9P ( int n1, int n2, int ncomp ) ; │ │ │ │ │ │ This method creates and returns a EGraph object for a n1 × n2 grid for a 9-point operator │ │ │ │ │ │ @@ -92,15 +92,15 @@ │ │ │ │ │ │ This method reads in an EGraph object from a formatted file. If there are no errors in reading │ │ │ │ │ │ the data, the value 1 is returned. If an IO error is encountered from fscanf, zero is returned. │ │ │ │ │ │ Error checking: If egraph or fp are NULL an error message is printed and zero is returned. │ │ │ │ │ │ 3. int EGraph_readFromBinaryFile ( EGraph *egraph, FILE *fp ) ; │ │ │ │ │ │ This method reads in an EGraph object from a binary file. If there are no errors in reading │ │ │ │ │ │ the data, the value 1 is returned. If an IO error is encountered from fread, zero is returned. │ │ │ │ │ │ Error checking: If egraph or fp are NULL an error message is printed and zero is returned. │ │ │ │ │ │ - 4 EGraph : DRAFT January 16, 2024 │ │ │ │ │ │ + 4 EGraph : DRAFT February 18, 2025 │ │ │ │ │ │ 4. int EGraph_writeToFile ( EGraph *egraph, char *fn ) ; │ │ │ │ │ │ This method writes an EGraph object to a file. It tries to open the file and if it is successful, │ │ │ │ │ │ it then calls EGraph writeFromFormattedFile()or EGraph writeFromBinaryFile(),closes │ │ │ │ │ │ the file and returns the value returned from the called routine. │ │ │ │ │ │ Error checking: If egraph or fn are NULL, or if fn is not of the form *.egraphf (for a │ │ │ │ │ │ formatted file) or *.egraphb (for a binary file), an error message is printed and the method │ │ │ │ │ │ returns zero. │ │ │ │ │ │ @@ -128,15 +128,15 @@ │ │ │ │ │ │ binary files and vice versa. One can also read in a EGraph file and print out just the header │ │ │ │ │ │ information (see the EGraph writeStats() method). │ │ │ │ │ │ • The msglvl parameter determines the amount of output — taking msglvl >= 3 means │ │ │ │ │ │ the EGraph object is written to the message file. │ │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ │ message file is stdout, otherwise a file is opened with append status to receive any output │ │ │ │ │ │ data. │ │ │ │ │ │ - EGraph : DRAFT January 16, 2024 5 │ │ │ │ │ │ + EGraph : DRAFT February 18, 2025 5 │ │ │ │ │ │ • The inFile parameter is the input file for the EGraph object. It must be of the form │ │ │ │ │ │ *.egraphfor*.egraphb. TheEGraphobjectisreadfromthefileviatheEGraph readFromFile() │ │ │ │ │ │ method. │ │ │ │ │ │ • The outFileparameter is the output file for the EGraph object. If outFile is none then │ │ │ │ │ │ the EGraphobject is not written to a file. Otherwise, the EGraph writeToFile()method │ │ │ │ │ │ is called to write the object to a formatted file (if outFile is of the form *.egraphf), │ │ │ │ │ │ or a binary file (if outFile is of the form *.egraphb). │ │ │ │ │ │ @@ -166,15 +166,15 @@ │ │ │ │ │ │ data. │ │ │ │ │ │ • n1 is the number of grid points in the first direction, must be greater than one. │ │ │ │ │ │ • n2 is the number of grid points in the second direction, must be greater than one. │ │ │ │ │ │ • n3 is the number of grid points in the third direction, must be greater than or equal to │ │ │ │ │ │ one. │ │ │ │ │ │ • ncomp is the number of components (i.e., the number of degrees of freedom) at each grid │ │ │ │ │ │ point, must be greater than or equal to one. │ │ │ │ │ │ - 6 EGraph : DRAFT January 16, 2024 │ │ │ │ │ │ + 6 EGraph : DRAFT February 18, 2025 │ │ │ │ │ │ • TheoutEGraphFileparameteristheoutputfilefortheEGraphobject. IfoutEGraphFile │ │ │ │ │ │ is nonethentheEGraphobjectisnotwrittentoafile. Otherwise,theEGraph writeToFile() │ │ │ │ │ │ method is called to write the object to a formatted file (if outEGraphFile is of the form │ │ │ │ │ │ *.egraphf), or a binary file (if outEGraphFile is of the form *.egraphb). │ │ │ │ │ │ Index │ │ │ │ │ │ EGraph clearData(), 2 │ │ │ │ │ │ EGraph free(), 2 │ │ │ ├── ./usr/share/doc/spooles-doc/ETree.ps.gz │ │ │ │ ├── ETree.ps │ │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ │ %%EndComments │ │ │ │ │ %%BeginDefaults │ │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ │ %%EndDefaults │ │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ │ %DVIPSCommandLine: dvips main -o ETree.ps │ │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ │ -%DVIPSSource: TeX output 2024.01.16:2047 │ │ │ │ │ +%DVIPSSource: TeX output 2025.02.18:0318 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -3607,20 +3607,21 @@ │ │ │ │ │ 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 52 /four put │ │ │ │ │ -dup 54 /six put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ +dup 56 /eight put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 74 /J put │ │ │ │ │ +dup 70 /F put │ │ │ │ │ dup 97 /a put │ │ │ │ │ -dup 110 /n put │ │ │ │ │ +dup 98 /b put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ dup 114 /r put │ │ │ │ │ dup 117 /u put │ │ │ │ │ dup 121 /y put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ @@ -3804,89 +3805,93 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ │ -C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ │ -6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ │ -11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ │ -1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ │ -A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ │ -F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ │ -EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ │ -033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ │ -A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ │ -468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8A71FF9C085003EBB4F4 │ │ │ │ │ -3D271F5B16B1AAD3EBDC391F534AA46E545E9D8659DD19B309C3B7625A8396FA │ │ │ │ │ -2519464539D46E43ACB72952313C8497315E0319C08628023E8FC54D7D3BAC29 │ │ │ │ │ -D5AD8EFDABF0C33C7AFB7151A6606C62A87F0F5F783569AC4C881A992E3FE420 │ │ │ │ │ -297F7BC5147F3B2FA98450D2F8B07F7D229BC8BE06729920CFEC22556740E1CB │ │ │ │ │ -3DE09AC763C6D4A20AD1599C368FABD07BC35C16683F2A0311A88983415A9140 │ │ │ │ │ -2EFC4BC1B10DCAD4B2B8A28510E5BD39D6616D2B9B079ED3CF9C315B7DEC29D9 │ │ │ │ │ -251DFD0194B34EC175964C23383F23FFB2E41B698C405815D65EAFF9E9DD1DDE │ │ │ │ │ -30F77924656C288B8DDB2E5B0E7B1FAA66791DE3848EE6DE63AD0E945E49C6C7 │ │ │ │ │ -9FCA16E01F027F9EF7ACB55F02F5B0136480802F789F6FE14B430879979BA04D │ │ │ │ │ -F481AD4CF47E6847936F377FB04869F9A80E597301BFCAB718D8764094673876 │ │ │ │ │ -BCEF8FA3701608C84B3A0399A11D2E6AD922CCB7D72AF9EBFB30F4648A37A123 │ │ │ │ │ -CB8FB14BDC351692CF0CCAA5CA9383C2B23BAAA38700327EB743FBBE9EE04041 │ │ │ │ │ -13F5CEF4B3881BBC051C33369A82B3505B1CFD7D91AEF2E43EA728EE48E2D854 │ │ │ │ │ -5A7E516998ACDD4FD835FA901C5A21810A56D51FE919B2E58408EEB4DAEB487F │ │ │ │ │ -BA7F1D292CED902DF3533566D96DAD918319EA650D4FC7D9E0170CDE620F755B │ │ │ │ │ -0E7AE02D9B118481B26F5FF7060FBCFA2A682B6826F00679BCDA68794C05286D │ │ │ │ │ -B616DD08372ACDE0AE6E7EF116F0D36F16241ED4F0E8CCD80377792E3BB1343C │ │ │ │ │ -EEB22CC77738F7CBCBA32CF6C3979F6DF7ED81A89AE8928FD7CC550F2730BA88 │ │ │ │ │ -1B51CEDC63F4C47F261AFCAB7AC3CED20B15C97E714A460A1A3B16436B4A5149 │ │ │ │ │ -8F91DA4BE0B9B648534CE5F442117036B602DC91E2852BEA62F55803B833FDF7 │ │ │ │ │ -9F901AB87489E703DDEED1091A79DC73B4440BBBF2C7592B441187C4A3562204 │ │ │ │ │ -859F08BA3CE2A8ECCD5AAD13C50FB806FE79A388F1822C5608837CBDE526A044 │ │ │ │ │ -12E5CDE4A066932AF2ACA7E8FC6BA4603640944718752975B7DA6E906BE1EA01 │ │ │ │ │ -46736FF5D1AA1CC682D011B6039CF98C35E36D4F14ABC84A38B7203CC9A17756 │ │ │ │ │ -B2B0345276798F1A88A54AD9FEA0853C6DDF28525ED4F0B7380D14147012C2A4 │ │ │ │ │ -5B02888C986C76497EA4C729B0B82EE73C1A1A8E8F1ABF401E341028E9C15AF9 │ │ │ │ │ -354706D8DC07492921AD0932A46736C0D1B066D00287DACCC068FAE6A796EC89 │ │ │ │ │ -54D1D73AA88F3A5912BA9D3FF70065C8D0D0DAD1CD846501E06694374EFDBEC6 │ │ │ │ │ -931F644D5E8494AFC742423AD9A487658E310E0682BE19B8475F4D450487A686 │ │ │ │ │ -2B94494DEAF1C0F59DE82F2CE64BEE5E97F942FCFA1187ED6AA5761E951A7BF7 │ │ │ │ │ -9F842E34A4656C58B35A9E99F7E6762CEE11E0CF59FFD75D7382C5EE6DBB43F1 │ │ │ │ │ -ED219071D3FB22DBA90977723BB467C0490D042684C0724F40DCA3E0D8F1F4E7 │ │ │ │ │ -3C4F9A67BE6528185EAAFDD415224F7E256A4EA00111C17C746CBD80BF569A27 │ │ │ │ │ -D81195D7F79C1CCEEF30ED00D49F48B63E4B8D7953403A3710AE953CC1B76F0F │ │ │ │ │ -F523D777A6A186F262A602543F94AF7471DBE25FEBC207DB42DAF7DC9A5781FB │ │ │ │ │ -2131AD42869D966A734AAE3466DF1CE9D1BCFA72409A558C0AEE6A8E2FEAACB6 │ │ │ │ │ -2CDABCC28433034848ACF9FB4465D272E4AFC48572647F05F41C7A293CC5B595 │ │ │ │ │ -AD31555FB708A72962707348BC7033A8224BD42EB9D75FDF3AE9E6A9C960B330 │ │ │ │ │ -5137DF59F8E2E0D535F41524ABDF070745A4FA25CD8DFD38A5FF30A95452B875 │ │ │ │ │ -6569E8812631300D79A942C563AF174AC05C9F2D09D7D5D3C605F5A6B7F21B34 │ │ │ │ │ -18F270A993B050838E701A17938D1C156CBA7CA4BAC7C562CE9D7B758EAB25A9 │ │ │ │ │ -A6DFFC71F65561341847B776DF34061CE3D439B87B857626987EC93B3B95B8E8 │ │ │ │ │ -76FFB16B263675333FA10414FEED707FF7C366BF8B20FF8577CDEBEBCF1A5BCE │ │ │ │ │ -258C09C90175A5278B7C444A623E3331FDE5A6387B3E389540ED1E7E883958F3 │ │ │ │ │ -3A5C89CCD62256FA069DF4A5090FB17C1F1757C9209DAFB8A1F47182BF3E88D9 │ │ │ │ │ -0B5376B59EE165A761902759C8ED7F5AD301E7EB8B49CC09AF921DB45B7F8002 │ │ │ │ │ -AB32E73AAE53942DE0F9175D8446017006C9C0B93EF39C13B7A879F2F6DDFF16 │ │ │ │ │ -204BB24F976847CF006FD29332FCCB255B5116F7077A44F7066C39C81DC4BAD2 │ │ │ │ │ -40DB2753626C0102E5D047522ABC38EA294A699B8DFD9CA0A7980561A1062E90 │ │ │ │ │ -AB11EE286A9C238D9F721D9980D0A1828C2814972622D948CEE8C812C19A9A03 │ │ │ │ │ -608ED0AC138A436FFBF8BE3D1E66C87793416AF38ED9BC5424568A175FBDAA9E │ │ │ │ │ -D6FC11A7021693819B051562B5A59F32629E2D6019D69DD329BE1894A2B295E1 │ │ │ │ │ -1DCE9683B29AE126C56F26E5C595BF1A8249BDE231DBE8B066F7F62EF149B975 │ │ │ │ │ -A863969A4690504A5EA064721DA909B8157C0B39FBF8228D95CB655E406161E1 │ │ │ │ │ -148610FAEED7C5509880223C06A66DA19E10F94DC2DB481B26 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004FD597ED │ │ │ │ │ +EFDBC64ABD9B79386FB2427D1A63522195B1239C09F8CB3F8BD7A245A6DD82E3 │ │ │ │ │ +260C3889587626DFC5F7978E55F5524ABD6A3319CDD3D3F40D040044D51DA4E1 │ │ │ │ │ +6797EEAC7AA07C77EC6DB0E6E182B545A8BEF63B14F3FC07BAC09E7CD5C17ED6 │ │ │ │ │ +10080704B0DA4E9BA12F968DF8A58458D17E9A5B1F14A83DC51F5B161ADEE1CC │ │ │ │ │ +0183D82ED92C6FC7203C289949EDF0284D9893029FF5408E421324625F17C3E5 │ │ │ │ │ +2437C8F75A9D68EE1AF9174FEA6FC6BF793C7D2E497EA90396CF1A645E283B69 │ │ │ │ │ +8425F47C323587DF91E1D596DCB1E3A787C955D9D965A5E3E26ADF58B62AD5F9 │ │ │ │ │ +0C9AC784DE479780606354111E3202F215650DBBE1063A46F3C10B9EBC974DDA │ │ │ │ │ +A1A28DBBD43E9E5BFF000B12C787D0427928078F8EC5FE90DED97E6C129E8DEA │ │ │ │ │ +51F66504DB83764E52B0BA68DF7BE684C8959CB1D3345CC48221A9A4683306C0 │ │ │ │ │ +62B634E0A539383F0C7A788D9711EFF414869CCC5659D78CEBE009BF2463F56A │ │ │ │ │ +0ADC993348FE96DF7C250E13ED6504AACFE8F8DCA2D2048D9D8CFA127D363EAC │ │ │ │ │ +1F0630E2D1B621E6954038195D965B91FD974FA3F1B8B29D200A16CEBA645E2F │ │ │ │ │ +CEEE6FD49FBBD49E38AE67D4BFFCE91F1FC422554EC4409C5FA18D40FCD6D9B3 │ │ │ │ │ +2185ED1E0F98106D4339F086B05CA36E56EC22C60E2CE23F9C4CC403ACAD3F94 │ │ │ │ │ +4086B4DF6DFA0B7B4716417263E7B558535566AED2F6C2F9846A16D71A7930A7 │ │ │ │ │ +49232D3D16C4A01CF1A1998A06F40062ED329179A85668537C55D0BC24FC0010 │ │ │ │ │ +54DA83E2FC66B2A5D428E6A9BFC983253668C0ECE6CA36DBF97C4B7659D50842 │ │ │ │ │ +C65B36604840EEDA399B57E2DEFAC3E7FB031634CE33D04238F9854D2AAAF448 │ │ │ │ │ +34DA5F3BCCED3166FEEE82BB0BBA0A397CC2F95865CB52AABFF454D93B425809 │ │ │ │ │ +A26AC459F321FD23E2262FE816D06BAAECF32AAF167F84799AF80F9F88388D07 │ │ │ │ │ +0DB5FD57AFEE2850A8DFE977E6AE39CB3DC16DB1A163A583C86C6F775CE33521 │ │ │ │ │ +0081C0BBBAD6D30D26C66B28B38CEAC78FEA5FB3CC5853656B67C6D9D80EB30E │ │ │ │ │ +397558C9179AF5920F34DAB3F578DFCF0DBB137AED17D6325C23883E69EE4621 │ │ │ │ │ +34355A70C19EA68891E1CA937376901C85CDEE109F1665943E29A216DC00937A │ │ │ │ │ +B983A729A4654AD09187C0242D52FA4ADD0853EF4888864914D7D81C56578DD4 │ │ │ │ │ +3B51907032022E6E412D4F114675DEDCA8A9E85DC03A0B583FECD84432D15F70 │ │ │ │ │ +01F627BD6EC91F9FCFDA01BF40E1229B5F164309DBB641AD50970503DA2048C1 │ │ │ │ │ +DF8F36E8D252EE113F0B46677D9BAF376BAE18D74CFB0DBBD0C7E9D0A58BA3ED │ │ │ │ │ +1E5099CAE073EB5638617760AB57849893764EA9735173CD1EAB66884CEA7EE3 │ │ │ │ │ +8843327B2E145BD6FBB49102776B82BC511D109F8BE9E7E99DADABABEDC3CFD9 │ │ │ │ │ +393578FFD85907DFF2849E4CDE6FA4DEC7E1C150EBE4047FFB650F9548BE6D11 │ │ │ │ │ +0C51226A5436F18BF20A02E0F888F46B6AC3A8E8D927ECD3B5E095933AD3859F │ │ │ │ │ +5167C41D832EFCC4093BD2AFA7101AB430E57DAFC3590F05D3CBABB32BC203A0 │ │ │ │ │ +467B23BDB830487C9AA5B85BAC065F8538871B4180F8C4732E637DB090CFDE5A │ │ │ │ │ +3F4F2B5BFAFB848BAAD1A17CB076B34159601639BD93ECAB1214ACABF2C67FE2 │ │ │ │ │ +0658AA20B08681070FF56F1CC52144ABA8765D6E124D1CEA9BBA102808CE1BB2 │ │ │ │ │ +5EDF46BC7BBC2A5B49EE6EC28F5797A3969B057B21FCDBBD0E60848FF14F6CA3 │ │ │ │ │ +70F3060BDBB019B22722C99C7691760F013763B7FBEB62830AE215F195BF9F01 │ │ │ │ │ +21BF4377397E89574CFA47D123AA506A570A77BA6EB4AAB0B237A26154880293 │ │ │ │ │ +3952F832F72ECCB024F02385E5EE8566B165904B594E30D0700D033C6B429F6F │ │ │ │ │ +2A20BC774F442BC9CE29FCC81807C2768A8BC927A215558FBF36DC53F477F04A │ │ │ │ │ +41DA66E1A85B659EB761230977EAD7DA0150513D3323B143D4E2A61BCF03334C │ │ │ │ │ +C0EE3E1B06CFAF58ECC910BD81F0352B75FF1594D6A4EF504232D442174BE766 │ │ │ │ │ +0F8E703F97E21D25D4CD097549C31FEE7017C3916EFB02E7BF869172889827B6 │ │ │ │ │ +A48465EB7612BA3DBC6A9436C7167F149A25CE9F8E3F4F8DE3B5ADF6C0986CB3 │ │ │ │ │ +3A7E2DAB44AB489796461536F5F713017F2620AD03295CAE9285F08974AE0DF8 │ │ │ │ │ +D739260929619B509491AFF09C4CAEF9E65C2CA69470C907ECBF3AB6C955360D │ │ │ │ │ +05ABAC306DB51122A1ADC7EF0DD70FA299A45C505A83727D4598C86319EE9C06 │ │ │ │ │ +7218EFD4F40388354BCF1B79593D5AD221DF955D081F99F880E5CED07321AB3E │ │ │ │ │ +A2FCB8B05D54807D8E15E65B78DCE12989B9276350080C905DBB74CE9AA7E246 │ │ │ │ │ +5D3BAED292C562D4CF54617FCC6654496C7996D1ECE1EFF9258716AB763A12E6 │ │ │ │ │ +316E4C5587351A6DB011F58F6A15BC28BEBDC3836E0CB892807FEC228DC1B380 │ │ │ │ │ +92F7F42279F08D60F13D6A4CB425543C3644461461CBF6F27B6603F613D1FCF8 │ │ │ │ │ +A8410AD82D1498166AEB35D4125D7E2ADEAAB18BC04806AED53513F066E5F154 │ │ │ │ │ +3E13E863C50B9814EE2FB978D0D24A03FAF650CB6E2CADF1E6BE6BAF699AFC03 │ │ │ │ │ +E1A0EEB207B3B9A689ED5B373FE86686AD230BE6C18E1673DDA50E224B343EC5 │ │ │ │ │ +903BA0C8041C13607B50D5852AC7970B15C244E6EBA7D54B3086312CF04761D6 │ │ │ │ │ +7D3D75D51F20C371494AB81AB4A9838B20B483B851D01FEF41EA5C0B4755B964 │ │ │ │ │ +EB6E9B178051C556A010994EB88EAE641F4C1A0D7E0F98D5267E18AEF1AEA7E7 │ │ │ │ │ +9030A97DF89AFF621981C33B645FFB5F3BB2065A7661D11B26E0999561DF3580 │ │ │ │ │ +4A76A05DFAF8085525F8D5C01936F03C32E26E72569371C9EA3B8916F9DFC5FC │ │ │ │ │ +6A6F25A0FFDB981BA8B896393D75774D50828E6ADE903C45406E354703A4BC56 │ │ │ │ │ +2C49A47FEAC970DC433E3050C49F7FB945A9705BD8852D2D65D935F244D3B423 │ │ │ │ │ +EFAB84AAAAB8FBAFF50AFF372A533BCCEB5FC273DBADCF715776DF02A5DCBA9A │ │ │ │ │ +FBF265FAB4745D6475B33611EEE1EA95E7584E0BEEC7CA789AA69C8D03D6F8C0 │ │ │ │ │ +5B6844E2B901ACA560C0433B053D134866E567425174E47173679AAD4486A2D3 │ │ │ │ │ +369C29E4DD2CD6ACA1BE80ED8FF0A9C58A616D26E758BD8E6342624EC83FB590 │ │ │ │ │ +BD354B52B60BB054FAFE9AC63E1564FBC721FE8F276B0413EC89A2C85E5ED1B0 │ │ │ │ │ +3A9D83BE62A4488ADE7CE69971A8AF7E5862A4290EEF6F00D4171C7FFB360065 │ │ │ │ │ +92E72BF02BE27161AE0BB5516572A0BDC4F316FFB24B38484AC8D1FD4CD86062 │ │ │ │ │ +A2B5D03CF28C3A679C039A6EFDD4C9DA7E463AD60234C9F6BBEE48D87DD94D85 │ │ │ │ │ +842F495F3E25723718682CE4D6224CBBF4456F03077EDF736D65B9DDAB09470E │ │ │ │ │ +17742D82011FFA96BFE86B96E858F9352FCD20C3D46B77DBDEE54336EC2249EA │ │ │ │ │ +211F6DFFF5BEA1E5192BE1BAC0BDD5EDDB3D56C6F7C6E543561A0B39E5C1B04F │ │ │ │ │ +C683A7516B6E69D682455386DDA709929D621FA434D403E895AA0A77DBE1DFD2 │ │ │ │ │ +0D060DF82378880147ED97C6E8149686FA048710B113760AC1DA4512FF8556B3 │ │ │ │ │ +16E2447485B8C3CD58D0469C4A45FFB4CB0322BB284C02 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -5428,16 +5433,16 @@ │ │ │ │ │ /CMMI10 rf /Fh 133[50 59 3[62 44 44 46 1[62 56 62 93 │ │ │ │ │ 31 2[31 62 56 34 51 62 50 1[54 11[86 78 62 2[77 84 1[106 │ │ │ │ │ 2[58 42 5[81 80 8[56 56 56 56 56 56 56 56 56 56 1[31 │ │ │ │ │ 33[62 12[{}41 99.6264 /CMBX12 rf /Fi 141[62 12[62 16[62 │ │ │ │ │ 14[62 69[{}4 119.552 /CMTT12 rf /Fj 135[42 60 1[49 30 │ │ │ │ │ 37 38 1[46 46 51 74 23 42 1[28 46 42 1[42 46 42 42 46 │ │ │ │ │ 12[65 51 66 4[82 6[59 62 69 2[68 6[28 12[33 45[{}30 90.9091 │ │ │ │ │ -/CMTI10 rf /Fk 134[48 3[51 2[36 3[51 12[45 22[47 15[25 │ │ │ │ │ -3[45 1[45 1[45 45 45 3[25 44[{}13 90.9091 /CMSL10 rf │ │ │ │ │ +/CMTI10 rf /Fk 134[48 3[51 2[36 12[40 2[51 45 26[59 11[25 │ │ │ │ │ +1[45 2[45 2[45 45 45 3[25 44[{}14 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 │ │ │ │ │ @@ -5550,30 +5555,31 @@ │ │ │ │ │ b Fo(:)i(p)s(oin)m(ter)h(to)g(an)f Fn(IV)g Fo(ob)5 b(ject)31 │ │ │ │ │ b(to)g(hold)f(fron)m(t)h(w)m(eigh)m(ts,)h(size)f Fn(nfront)137 │ │ │ │ │ 5294 y Fl(\210)45 b Fn(IV)i(*bndwghtsIV)28 b Fo(:)i(p)s(oin)m(ter)h(to) │ │ │ │ │ g(an)f Fn(IV)g Fo(ob)5 b(ject)31 b(to)g(hold)f(the)h(w)m(eigh)m(ts)g │ │ │ │ │ (of)g(the)f(fron)m(ts')h(b)s(oundaries,)e(size)227 5407 │ │ │ │ │ y Fn(nfront)1927 5656 y Fo(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fo(2)p 136 100 1106 4 v │ │ │ │ │ -1288 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(Jan)m(uary)g(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ -Fo(and)i Fn(vtxToFrontIV)d Fo(p)s(oin)m(ters.)0 1155 │ │ │ │ │ -y Fm(1.2)135 b(Protot)l(yp)t(es)46 b(and)f(descriptions)g(of)g │ │ │ │ │ -Fi(ETree)e Fm(metho)t(ds)0 1385 y Fo(This)e(section)j(con)m(tains)f │ │ │ │ │ -(brief)f(descriptions)g(including)f(protot)m(yp)s(es)i(of)f(all)h │ │ │ │ │ -(metho)s(ds)f(that)h(b)s(elong)f(to)h(the)0 1497 y Fn(ETree)29 │ │ │ │ │ -b Fo(ob)5 b(ject.)0 1770 y Fh(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fo(2)p 136 100 1087 4 v │ │ │ │ │ +1269 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2813 100 V 137 399 a Fl(\210)45 │ │ │ │ │ +b Fn(IV)i(*vtxToFrontIV)35 b Fo(:)j(p)s(oin)m(ter)h(to)g(an)f │ │ │ │ │ +Fn(IV)f Fo(ob)5 b(ject)39 b(to)g(hold)f(the)g(map)g(from)g(v)m(ertices) │ │ │ │ │ +i(to)f(fron)m(ts,)h(size)227 511 y Fn(nfront)0 727 y │ │ │ │ │ +Fo(A)d(correctly)i(initialized)g(and)d(non)m(trivial)i │ │ │ │ │ +Fn(ETree)e Fo(ob)5 b(ject)38 b(will)g(ha)m(v)m(e)g(p)s(ositiv)m(e)g │ │ │ │ │ +Fn(nfront)e Fo(and)g Fn(nvtx)g Fo(v)-5 b(alues,)40 b(a)0 │ │ │ │ │ +840 y(v)-5 b(alid)31 b Fn(tree)e Fo(\014eld)h(and)g(non-)p │ │ │ │ │ +Fn(NULL)f(nodwghtsIV)p Fo(,)e Fn(bndwghtsIV)h Fo(and)i │ │ │ │ │ +Fn(vtxToFrontIV)d Fo(p)s(oin)m(ters.)0 1155 y Fm(1.2)135 │ │ │ │ │ +b(Protot)l(yp)t(es)46 b(and)f(descriptions)g(of)g Fi(ETree)e │ │ │ │ │ +Fm(metho)t(ds)0 1385 y Fo(This)e(section)j(con)m(tains)f(brief)f │ │ │ │ │ +(descriptions)g(including)f(protot)m(yp)s(es)i(of)f(all)h(metho)s(ds)f │ │ │ │ │ +(that)h(b)s(elong)f(to)h(the)0 1497 y Fn(ETree)29 b Fo(ob)5 │ │ │ │ │ +b(ject.)0 1770 y Fh(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ │ 1968 y Fo(As)d(usual,)h(there)f(are)g(four)f(basic)h(metho)s(ds)g(to)g │ │ │ │ │ (supp)s(ort)e(ob)5 b(ject)36 b(creation,)i(setting)e(default)f │ │ │ │ │ (\014elds,)h(clearing)0 2081 y(an)m(y)31 b(allo)s(cated)h(data,)f(and)f │ │ │ │ │ (free'ing)h(the)g(ob)5 b(ject.)111 2322 y(1.)46 b Fn(ETree)h(*)g │ │ │ │ │ (ETree_new)e(\()j(void)e(\))i(;)227 2474 y Fo(This)28 │ │ │ │ │ b(metho)s(d)g(simply)h(allo)s(cates)i(storage)f(for)e(the)h │ │ │ │ │ Fn(ETree)f Fo(structure)g(and)g(then)g(sets)i(the)f(default)f(\014elds) │ │ │ │ │ @@ -5613,17 +5619,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 1106 4 v 1288 100 a Fn(ETree)29 │ │ │ │ │ -b Fk(:)40 b Fj(DRAFT)121 b Fk(Jan)m(uary)30 b(16,)i(2024)p │ │ │ │ │ -2747 100 V 1106 w Fo(3)111 399 y(2.)46 b Fn(int)h(ETree_nvtx)e(\()j │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1087 4 v 1269 100 a Fn(ETree)29 │ │ │ │ │ +b Fk(:)40 b Fj(DRAFT)121 b Fk(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2766 100 V 1087 w Fo(3)111 399 y(2.)46 b Fn(int)h(ETree_nvtx)e(\()j │ │ │ │ │ (ETree)e(*etree)g(\))i(;)227 556 y Fo(This)30 b(metho)s(d)g(returns)f │ │ │ │ │ (the)h(n)m(um)m(b)s(er)f(of)i(v)m(ertices.)227 713 y │ │ │ │ │ Fj(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fo(If)30 b Fn(etree)f │ │ │ │ │ Fo(is)i Fn(NULL)p Fo(,)e(an)h(error)g(message)i(is)e(prin)m(ted)g(and)g │ │ │ │ │ (the)h(program)f(exits.)111 915 y(3.)46 b Fn(Tree)h(*)g(ETree_tree)e │ │ │ │ │ (\()j(ETree)e(*etree)g(\))i(;)227 1072 y Fo(This)30 b(metho)s(d)g │ │ │ │ │ (returns)f(a)i(p)s(oin)m(ter)f(to)h(the)g Fn(Tree)e Fo(ob)5 │ │ │ │ │ @@ -5671,30 +5677,30 @@ │ │ │ │ │ b(ETree)e(*etree)g(\))i(;)227 5250 y Fo(This)30 b(metho)s(d)g(returns)f │ │ │ │ │ (a)i(p)s(oin)m(ter)f(to)h(the)g Fn(bndwghtsIV)c Fo(ob)5 │ │ │ │ │ b(ject.)227 5407 y Fj(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ │ b Fo(If)30 b Fn(etree)f Fo(is)i Fn(NULL)p Fo(,)e(an)h(error)g(message)i │ │ │ │ │ (is)e(prin)m(ted)g(and)g(the)h(program)f(exits.)p eop │ │ │ │ │ end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fo(4)p 136 100 1106 4 v │ │ │ │ │ -1288 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(Jan)m(uary)g(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fo(4)p 136 100 1087 4 v │ │ │ │ │ +1269 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2813 100 V 66 399 a Fo(11.)46 │ │ │ │ │ +b Fn(int)h(*)h(ETree_bndwghts)c(\()j(ETree)f(*etree)g(\))i(;)227 │ │ │ │ │ +551 y Fo(This)30 b(metho)s(d)g(returns)f(a)i(p)s(oin)m(ter)f(to)h(the)g │ │ │ │ │ +Fn(bndwghts)d Fo(v)m(ector.)227 703 y Fj(Err)-5 b(or)32 │ │ │ │ │ +b(che)-5 b(cking:)39 b Fo(If)27 b Fn(etree)f Fo(or)i │ │ │ │ │ +Fn(etree->bndwghtsIV)23 b Fo(is)k Fn(NULL)p Fo(,)g(an)h(error)f │ │ │ │ │ +(message)i(is)e(prin)m(ted)h(and)f(the)227 816 y(program)j(exits.)66 │ │ │ │ │ +1008 y(12.)46 b Fn(IV)h(*)h(ETree_vtxToFrontIV)43 b(\()k(ETree)g │ │ │ │ │ +(*etree)f(\))h(;)227 1160 y Fo(This)30 b(metho)s(d)g(returns)f(a)i(p)s │ │ │ │ │ +(oin)m(ter)f(to)h(the)g Fn(vtxToFrontIV)c Fo(ob)5 b(ject.)227 │ │ │ │ │ +1312 y Fj(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fo(If)30 │ │ │ │ │ +b Fn(etree)f Fo(is)i Fn(NULL)p Fo(,)e(an)h(error)g(message)i(is)e(prin) │ │ │ │ │ +m(ted)g(and)g(the)h(program)f(exits.)66 1504 y(13.)46 │ │ │ │ │ +b Fn(int)h(*)h(ETree_vtxToFront)43 b(\()k(ETree)g(*etree)f(\))h(;)227 │ │ │ │ │ 1656 y Fo(This)30 b(metho)s(d)g(returns)f(a)i(p)s(oin)m(ter)f(to)h(the) │ │ │ │ │ g Fn(vtxToFront)c Fo(v)m(ector.)227 1809 y Fj(Err)-5 │ │ │ │ │ b(or)36 b(che)-5 b(cking:)44 b Fo(If)31 b Fn(etree)g │ │ │ │ │ Fo(or)h Fn(etree->vtxToFrontIV)27 b Fo(is)32 b Fn(NULL)p │ │ │ │ │ Fo(,)g(an)g(error)f(message)j(is)e(prin)m(ted)g(and)227 │ │ │ │ │ 1922 y(the)f(program)f(exits.)66 2113 y(14.)46 b Fn(int)h │ │ │ │ │ (ETree_frontSize)d(\()j(ETree)g(*etree,)e(int)i(J)h(\))f(;)227 │ │ │ │ │ @@ -5739,17 +5745,17 @@ │ │ │ │ │ Fo(ob)5 b(ject)34 b(giv)m(en)g(the)f(n)m(um)m(b)s(er)f(of)h(fron)m(ts)g │ │ │ │ │ (and)f(n)m(um)m(b)s(er)g(of)h(v)m(ertices.)227 5407 y(An)m(y)26 │ │ │ │ │ b(previous)f(data)h(is)f(cleared)i(with)e(a)h(call)g(to)h │ │ │ │ │ Fn(ETree)p 2153 5407 V 33 w(clearData\(\))p Fo(,)c(The)i │ │ │ │ │ Fn(Tree)f Fo(ob)5 b(ject)27 b(is)e(initialized)p eop │ │ │ │ │ end │ │ │ │ │ %%Page: 5 5 │ │ │ │ │ -TeXDict begin 5 4 bop 91 100 1106 4 v 1288 100 a Fn(ETree)29 │ │ │ │ │ -b Fk(:)40 b Fj(DRAFT)121 b Fk(Jan)m(uary)30 b(16,)i(2024)p │ │ │ │ │ -2747 100 V 1106 w Fo(5)227 399 y(with)i(a)g(call)i(to)e │ │ │ │ │ +TeXDict begin 5 4 bop 91 100 1087 4 v 1269 100 a Fn(ETree)29 │ │ │ │ │ +b Fk(:)40 b Fj(DRAFT)121 b Fk(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2766 100 V 1087 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 │ │ │ │ │ @@ -5827,26 +5833,26 @@ │ │ │ │ │ 5294 y Fo(This)f(metho)s(d)g(initializes)j Fn(subtree)c │ │ │ │ │ Fo(from)h Fn(tree)f Fo(using)h(the)h(no)s(des)f(of)h │ │ │ │ │ Fn(etree)e Fo(that)i(are)g(found)e(in)227 5407 y Fn(nodeidsIV)p │ │ │ │ │ Fo(.)28 b(The)i(map)g(from)g(no)s(des)g(in)g Fn(subtree)e │ │ │ │ │ Fo(to)j(no)s(des)f(in)g Fn(etree)f Fo(is)h(returned)f(in)h │ │ │ │ │ Fn(vtxIV)p Fo(.)p eop end │ │ │ │ │ %%Page: 6 6 │ │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fo(6)p 136 100 1106 4 v │ │ │ │ │ -1288 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(Jan)m(uary)g(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fo(6)p 136 100 1087 4 v │ │ │ │ │ +1269 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2813 100 V 227 399 a Fj(R)-5 │ │ │ │ │ +b(eturn)40 b(c)-5 b(o)g(de:)111 b Fo(1)38 b(for)f(a)h(normal)g(return,) │ │ │ │ │ +g(-1)h(if)e Fn(subtree)f Fo(is)h Fn(NULL)p Fo(,)g(-2)h(if)g │ │ │ │ │ +Fn(nodeidsIV)d Fo(is)i Fn(NULL)p Fo(,)g(-3)h(if)227 511 │ │ │ │ │ +y Fn(etree)29 b Fo(is)i Fn(NULL)p Fo(,)e(-4)i(if)f Fn(nodeidsIV)e │ │ │ │ │ +Fo(is)j(in)m(v)-5 b(alid,)31 b(-5)g(if)f Fn(vtxIV)f Fo(is)i │ │ │ │ │ +Fn(NULL)p Fo(.)0 809 y Fh(1.2.4)112 b(Utilit)m(y)38 b(metho)s(ds)0 │ │ │ │ │ +1015 y Fo(The)23 b(utilit)m(y)h(metho)s(ds)f(return)f(the)h(n)m(um)m(b) │ │ │ │ │ +s(er)f(of)h(b)m(ytes)h(tak)m(en)g(b)m(y)f(the)h(ob)5 │ │ │ │ │ +b(ject,)26 b(or)d(the)g(n)m(um)m(b)s(er)f(of)h(factor)i(indices,)0 │ │ │ │ │ 1128 y(en)m(tries)31 b(or)g(op)s(erations)f(required)g(b)m(y)g(the)h │ │ │ │ │ (ob)5 b(ject.)111 1391 y(1.)46 b Fn(int)h(ETree_sizeOf)e(\()i(ETree)f │ │ │ │ │ (*etree)h(\))g(;)227 1551 y Fo(This)24 b(metho)s(d)g(returns)f(the)h(n) │ │ │ │ │ m(um)m(b)s(er)f(of)h(b)m(ytes)h(tak)m(en)h(b)m(y)e(this)g(ob)5 │ │ │ │ │ b(ject)25 b(\(whic)m(h)g(includes)f(the)g(b)m(ytes)h(tak)m(en)227 │ │ │ │ │ 1664 y(b)m(y)31 b(the)f(in)m(ternal)h Fn(Tree)e Fo(structure\).)227 │ │ │ │ │ 1825 y Fj(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fo(If)30 │ │ │ │ │ @@ -5912,17 +5918,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 1106 4 v 1288 100 a Fn(ETree)29 │ │ │ │ │ -b Fk(:)40 b Fj(DRAFT)121 b Fk(Jan)m(uary)30 b(16,)i(2024)p │ │ │ │ │ -2747 100 V 1106 w Fo(7)111 399 y(6.)46 b Fn(double)g │ │ │ │ │ +TeXDict begin 7 6 bop 91 100 1087 4 v 1269 100 a Fn(ETree)29 │ │ │ │ │ +b Fk(:)40 b Fj(DRAFT)121 b Fk(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2766 100 V 1087 w Fo(7)111 399 y(6.)46 b Fn(double)g │ │ │ │ │ (ETree_nInternalOpsInFront)41 b(\()48 b(ETree)e(*etree,)g(int)h(type,)f │ │ │ │ │ (int)h(symflag,)f(int)h(J)g(\))g(;)227 554 y Fo(This)20 │ │ │ │ │ b(metho)s(d)f(returns)h(the)g(n)m(um)m(b)s(er)f(of)h(in)m(ternal)h(op)s │ │ │ │ │ (erations)g(p)s(erformed)e(b)m(y)h(fron)m(t)g Fn(J)g │ │ │ │ │ Fo(on)h(its)f(\(1)p Fg(;)15 b Fo(1\),)25 b(\(2)p Fg(;)15 │ │ │ │ │ b Fo(1\),)227 667 y(and)37 b(\(1)p Fg(;)15 b Fo(2\))38 │ │ │ │ │ b(blo)s(c)m(ks)g(during)d(a)j(factorization.)63 b(The)36 │ │ │ │ │ @@ -6008,23 +6014,23 @@ │ │ │ │ │ 39 b(The)27 b(map)f(from)227 5138 y(compressed)k(v)m(ertices)i(to)f │ │ │ │ │ (uncompressed)f(v)m(ertices)i(is)e(found)f(in)h(the)h │ │ │ │ │ Fn(eqmapIV)d Fo(ob)5 b(ject.)227 5294 y Fj(Err)-5 b(or)39 │ │ │ │ │ b(che)-5 b(cking:)50 b Fo(If)34 b Fn(etree)g Fo(or)h │ │ │ │ │ Fn(eqmapIV)e Fo(is)j Fn(NULL)p Fo(,)e(an)h(error)g(message)h(is)f(prin) │ │ │ │ │ m(ted)g(and)g(the)g(program)227 5407 y(exits.)p eop end │ │ │ │ │ %%Page: 8 8 │ │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fo(8)p 136 100 1106 4 v │ │ │ │ │ -1288 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(Jan)m(uary)g(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fo(8)p 136 100 1087 4 v │ │ │ │ │ +1269 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2813 100 V 66 399 a Fo(12.)46 │ │ │ │ │ +b Fn(ETree)h(*)g(ETree_spliceTwoEtrees)42 b(\()48 b(ETree)e(*etree0,)f │ │ │ │ │ +(Graph)i(*graph,)f(IV)h(*mapIV,)f(ETree)g(*etree1)g(\))h(;)227 │ │ │ │ │ +562 y Fo(This)38 b(metho)s(d)h(creates)h(and)e(returns)g(an)h │ │ │ │ │ +Fn(ETree)e Fo(ob)5 b(ject)40 b(that)g(is)f(formed)f(b)m(y)h(splicing)g │ │ │ │ │ +(together)i(t)m(w)m(o)227 675 y(fron)m(t)28 b(trees,)h │ │ │ │ │ +Fn(etree0)c Fo(for)j(the)f(v)m(ertices)i(the)f(eliminated)g(domains,)g │ │ │ │ │ Fn(etree1)e Fo(for)h(the)h(v)m(ertices)h(the)f(Sc)m(h)m(ur)227 │ │ │ │ │ 788 y(complemen)m(t.)43 b(The)30 b Fn(mapIV)f Fo(ob)5 │ │ │ │ │ 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 │ │ │ │ │ @@ -6087,17 +6093,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 1106 4 v 1288 100 a Fn(ETree)29 │ │ │ │ │ -b Fk(:)40 b Fj(DRAFT)121 b Fk(Jan)m(uary)30 b(16,)i(2024)p │ │ │ │ │ -2747 100 V 1106 w Fo(9)0 399 y Fh(1.2.6)112 b(Compression)39 │ │ │ │ │ +TeXDict begin 9 8 bop 91 100 1087 4 v 1269 100 a Fn(ETree)29 │ │ │ │ │ +b Fk(:)40 b Fj(DRAFT)121 b Fk(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2766 100 V 1087 w Fo(9)0 399 y Fh(1.2.6)112 b(Compression)39 │ │ │ │ │ b(metho)s(ds)0 604 y Fo(F)-8 b(requen)m(tly)30 b(an)f │ │ │ │ │ Fn(ETree)f Fo(ob)5 b(ject)30 b(will)g(need)e(to)i(b)s(e)f(compressed)g │ │ │ │ │ (in)f(some)i(manner.)40 b(Elimination)29 b(trees)h(usually)0 │ │ │ │ │ 717 y(ha)m(v)m(e)42 b(long)g(c)m(hains)g(of)f(v)m(ertices)i(at)f(the)f │ │ │ │ │ (higher)g(lev)m(els,)46 b(where)41 b(eac)m(h)h(c)m(hain)g(of)f(v)m │ │ │ │ │ (ertices)i(corresp)s(onds)d(to)i(a)0 830 y(sup)s(erno)s(de.)d(Liu's)30 │ │ │ │ │ b(generalized)i(ro)m(w)e(en)m(v)m(elop)s(e)i(metho)s(ds)e(partition)h │ │ │ │ │ @@ -6165,25 +6171,25 @@ │ │ │ │ │ b(then)j(returned.)227 5294 y Fj(Err)-5 b(or)35 b(che)-5 │ │ │ │ │ b(cking:)41 b Fo(If)31 b Fn(etree)e Fo(or)i Fn(tree)f │ │ │ │ │ Fo(is)h Fn(NULL)p Fo(,)f(or)h(if)g Fn(nfront)24 b Fg(<)i │ │ │ │ │ Fo(1,)32 b(or)f(if)g Fn(nvtx)25 b Fg(<)h Fo(1,)31 b(an)g(error)g │ │ │ │ │ (message)227 5407 y(is)g(prin)m(ted)f(and)f(the)i(program)f(exits.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 10 10 │ │ │ │ │ -TeXDict begin 10 9 bop 0 100 a Fo(10)p 182 100 1084 4 │ │ │ │ │ -v 1266 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)31 b Fk(Jan)m(uary)f(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ -b(ject)31 b(will)g(not)f(b)s(e)g(w)m(ell)h(de\014ned.)227 │ │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fo(10)p 182 100 1065 4 │ │ │ │ │ +v 1247 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)31 b Fk(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2836 100 V 111 399 a Fo(3.)46 │ │ │ │ │ +b Fn(ETree)h(*)g(ETree_compress)d(\()j(ETree)g(*etree,)f(IV)h │ │ │ │ │ +(*frontMapIV)e(\))i(;)227 562 y Fo(Using)41 b Fn(frontMapIV)p │ │ │ │ │ +Fo(,)d(a)j(new)f Fn(ETree)f Fo(ob)5 b(ject)41 b(is)g(created)g(and)f │ │ │ │ │ +(returned.)70 b(If)40 b Fn(frontMapIV)e Fo(do)s(es)i(not)227 │ │ │ │ │ +675 y(de\014ne)30 b(eac)m(h)i(in)m(v)m(erse)f(map)f(of)h(a)g(new)f(no)s │ │ │ │ │ +(de)g(to)h(b)s(e)f(connected)i(set)f(of)f(no)s(des)g(in)g(the)h(old)g │ │ │ │ │ +Fn(ETree)e Fo(ob)5 b(ject,)227 788 y(the)31 b(new)f Fn(ETree)f │ │ │ │ │ +Fo(ob)5 b(ject)31 b(will)g(not)f(b)s(e)g(w)m(ell)h(de\014ned.)227 │ │ │ │ │ 951 y Fj(Err)-5 b(or)37 b(che)-5 b(cking:)47 b Fo(If)33 │ │ │ │ │ b Fn(etree)g Fo(or)g Fn(frontMapIV)e Fo(is)j Fn(NULL)p │ │ │ │ │ Fo(,)f(or)g(if)h Fn(nfront)29 b Fg(<)i Fo(1,)k(or)f(if)f │ │ │ │ │ Fn(nvtx)d Fg(<)h Fo(1,)k(an)e(error)227 1064 y(message)f(is)e(prin)m │ │ │ │ │ (ted)g(and)g(the)g(program)h(exits.)0 1369 y Fh(1.2.7)112 │ │ │ │ │ b(Justi\014cation)38 b(metho)s(ds)0 1578 y Fo(Giv)m(en)g(an)g │ │ │ │ │ Fn(ETree)e Fo(ob)5 b(ject,)40 b(ho)m(w)e(should)e(the)i(c)m(hildren)f │ │ │ │ │ @@ -6239,17 +6245,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 1084 4 v 1265 100 a Fn(ETree)29 │ │ │ │ │ -b Fk(:)41 b Fj(DRAFT)121 b Fk(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2724 100 V 1084 w Fo(11)111 399 y(2.)46 b Fn(IV)h(*)h │ │ │ │ │ +TeXDict begin 11 10 bop 91 100 1065 4 v 1246 100 a Fn(ETree)29 │ │ │ │ │ +b Fk(:)40 b Fj(DRAFT)122 b Fk(F)-8 b(ebruary)30 b(18,)h(2025)p │ │ │ │ │ +2743 100 V 1065 w Fo(11)111 399 y(2.)46 b Fn(IV)h(*)h │ │ │ │ │ (ETree_newToOldVtxPerm)42 b(\()47 b(ETree)g(*etree)f(\))h(;)227 │ │ │ │ │ 511 y(IV)g(*)h(ETree_oldToNewVtxPerm)42 b(\()47 b(ETree)g(*etree)f(\))h │ │ │ │ │ (;)227 663 y Fo(An)29 b Fn(IV)f Fo(ob)5 b(ject)30 b(is)g(created)g │ │ │ │ │ (with)f(size)h Fn(nvtx)p Fo(.)39 b(First)29 b(w)m(e)h(\014nd)d(a)j │ │ │ │ │ (new-to-old)g(p)s(erm)m(utation)f(of)g(the)h(fron)m(ts.)227 │ │ │ │ │ 776 y(Then)j(w)m(e)i(searc)m(h)f(o)m(v)m(er)h(the)g(fron)m(ts)f(in)f │ │ │ │ │ (their)h(new)g(order)f(to)i(\014ll)f(the)g(v)m(ertex)h(new-to-old)g(p)s │ │ │ │ │ @@ -6321,21 +6327,21 @@ │ │ │ │ │ b(Multisector)47 b(no)s(des)227 5294 y(ha)m(v)m(e)36 │ │ │ │ │ b(their)e(comp)s(onen)m(t)g(id)g(zero,)i(domain)e(no)s(des)f(ha)m(v)m │ │ │ │ │ (e)i(their)f(comp)s(onen)m(t)h(id)e(one.)52 b(Inclusion)34 │ │ │ │ │ b(in)g(the)227 5407 y(m)m(ultisector)g(is)e(based)f(on)h(the)g(n)m(um)m │ │ │ │ │ (b)s(er)e(of)i(factor)h(en)m(tries)g(in)e(the)i(subtree)e(that)h(a)h(v) │ │ │ │ │ m(ertex)g(b)s(elongs,)f(or)p eop end │ │ │ │ │ %%Page: 12 12 │ │ │ │ │ -TeXDict begin 12 11 bop 0 100 a Fo(12)p 182 100 1084 │ │ │ │ │ -4 v 1266 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)31 b Fk(Jan)m(uary)f(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fo(12)p 182 100 1065 │ │ │ │ │ +4 v 1247 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)31 b Fk(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2836 100 V 227 399 a Fo(strictly)36 │ │ │ │ │ +b(sp)s(eaking,)f(the)f(n)m(um)m(b)s(er)f(of)i(factor)g(en)m(tries)g(in) │ │ │ │ │ +f(the)g(subtree)g(of)g(the)h(fron)m(t)f(to)h(whic)m(h)f(a)h(v)m(ertex) │ │ │ │ │ +227 511 y(b)s(elongs.)63 b(If)37 b(w)m(eigh)m(t)i(of)f(the)g(subtree)g │ │ │ │ │ +(is)f(more)h(than)g Fn(cutoff)e Fo(times)i(the)g(n)m(um)m(b)s(er)e(of)i │ │ │ │ │ (factor)h(en)m(tries,)227 624 y(the)31 b(v)m(ertex)h(is)f(in)g(the)g(m) │ │ │ │ │ m(ultisector.)44 b(The)31 b Fn(symflag)e Fo(parameter)i(can)g(b)s(e)f │ │ │ │ │ (one)i(of)f Fn(SPOOLES)p 3419 624 29 4 v 32 w(SYMMETRIC)p │ │ │ │ │ Fo(,)227 737 y Fn(SPOOLES)p 569 737 V 33 w(HERMITIAN)d │ │ │ │ │ Fo(or)i Fn(SPOOLES)p 1509 737 V 32 w(NONSYMMETRIC)p Fo(.)227 │ │ │ │ │ 905 y Fj(Err)-5 b(or)37 b(che)-5 b(cking:)47 b Fo(If)33 │ │ │ │ │ b Fn(etree)f Fo(is)h Fn(NULL)p Fo(,)g(or)h(if)f Fn(nfront)c │ │ │ │ │ @@ -6424,17 +6430,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 1084 4 v 1265 100 a Fn(ETree)29 │ │ │ │ │ -b Fk(:)41 b Fj(DRAFT)121 b Fk(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2724 100 V 1084 w Fo(13)0 399 y Fh(1.2.10)113 b(T)-9 │ │ │ │ │ +TeXDict begin 13 12 bop 91 100 1065 4 v 1246 100 a Fn(ETree)29 │ │ │ │ │ +b Fk(:)40 b Fj(DRAFT)122 b Fk(F)-8 b(ebruary)30 b(18,)h(2025)p │ │ │ │ │ +2743 100 V 1065 w Fo(13)0 399 y Fh(1.2.10)113 b(T)-9 │ │ │ │ │ b(ransformation)38 b(metho)s(ds)0 592 y Fo(Often)g(the)h(elimination)h │ │ │ │ │ (tree)g(or)e(fron)m(t)h(tree)g(that)h(w)m(e)f(obtain)g(from)f(an)h │ │ │ │ │ (ordering)f(of)h(the)g(graph)f(is)h(not)g(as)0 705 y(appropriate)30 │ │ │ │ │ b(for)h(a)f(factorization)j(as)e(w)m(e)g(w)m(ould)f(lik)m(e.)42 │ │ │ │ │ b(There)30 b(are)h(t)m(w)m(o)g(imp)s(ortan)m(t)g(cases.)137 │ │ │ │ │ 898 y Fl(\210)45 b Fo(Near)h(the)g(lea)m(v)m(es)i(of)d(the)h(tree)g │ │ │ │ │ (the)g(fron)m(ts)f(are)h(t)m(ypically)i(small)e(in)f(size.)87 │ │ │ │ │ @@ -6523,31 +6529,31 @@ │ │ │ │ │ (recom-)0 5294 y(mend)32 b(\014rst)g(using)h Fn(ETree)p │ │ │ │ │ 927 5294 V 33 w(mergeFrontsOne\(\))c Fo(follo)m(w)m(ed)34 │ │ │ │ │ b(b)m(y)f Fn(ETree)p 2479 5294 V 33 w(mergeFrontsAll\(\))p │ │ │ │ │ Fo(.)45 b(See)33 b(the)g(driv)m(er)0 5407 y(programs)d │ │ │ │ │ Fn(testTransform)d Fo(and)j Fn(mkNDETree)d Fo(for)k(examples)f(of)h(ho) │ │ │ │ │ m(w)f(to)h(call)h(the)f(metho)s(ds.)p eop end │ │ │ │ │ %%Page: 14 14 │ │ │ │ │ -TeXDict begin 14 13 bop 0 100 a Fo(14)p 182 100 1084 │ │ │ │ │ -4 v 1266 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)31 b Fk(Jan)m(uary)f(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ -b(that)g(go)m(v)m(erns)g(the)f(merging)h(pro)s(cess)f(is)g │ │ │ │ │ -Fn(maxzeros)p Fo(,)e(the)j(n)m(um)m(b)s(er)e(of)h(zero)h(en)m(tries)g │ │ │ │ │ -(that)g(can)227 888 y(b)s(e)36 b(in)m(tro)s(duced)f(b)m(y)h(merging)h │ │ │ │ │ -(a)f(c)m(hild)h(and)e(paren)m(t)h(fron)m(t)h(together.)59 │ │ │ │ │ -b(On)35 b(input,)i Fn(nzerosIV)d Fo(con)m(tains)227 1001 │ │ │ │ │ -y(the)d(n)m(um)m(b)s(er)e(of)i(zeros)g(presen)m(tly)g(in)f(eac)m(h)i │ │ │ │ │ -(fron)m(t.)41 b(It)31 b(is)f(mo)s(di\014ed)f(on)i(output)f(to)h │ │ │ │ │ +TeXDict begin 14 13 bop 0 100 a Fo(14)p 182 100 1065 │ │ │ │ │ +4 v 1247 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)31 b Fk(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2836 100 V 111 399 a Fo(1.)46 │ │ │ │ │ +b Fn(ETree)h(*)g(ETree_mergeFrontsOne)42 b(\()48 b(ETree)e(*etree,)g │ │ │ │ │ +(int)h(maxzeros,)e(IV)i(*nzerosIV)f(\))h(;)227 549 y │ │ │ │ │ +Fo(This)27 b(metho)s(d)g(only)g(tries)h(to)g(merge)g(a)g(fron)m(t)f │ │ │ │ │ +(with)g(its)h(only)f(c)m(hild.)40 b(It)28 b(returns)e(an)h │ │ │ │ │ +Fn(ETree)f Fo(ob)5 b(ject)28 b(where)227 662 y(one)34 │ │ │ │ │ +b(or)g(more)f(subtrees)g(that)h(con)m(tain)h(m)m(ultiple)f(fron)m(ts)g │ │ │ │ │ +(ha)m(v)m(e)g(b)s(een)f(merged)h(in)m(to)g(single)g(fron)m(ts.)50 │ │ │ │ │ +b(The)227 775 y(parameter)28 b(that)g(go)m(v)m(erns)g(the)f(merging)h │ │ │ │ │ +(pro)s(cess)f(is)g Fn(maxzeros)p Fo(,)e(the)j(n)m(um)m(b)s(er)e(of)h │ │ │ │ │ +(zero)h(en)m(tries)g(that)g(can)227 888 y(b)s(e)36 b(in)m(tro)s(duced)f │ │ │ │ │ +(b)m(y)h(merging)h(a)f(c)m(hild)h(and)e(paren)m(t)h(fron)m(t)h │ │ │ │ │ +(together.)59 b(On)35 b(input,)i Fn(nzerosIV)d Fo(con)m(tains)227 │ │ │ │ │ +1001 y(the)d(n)m(um)m(b)s(er)e(of)i(zeros)g(presen)m(tly)g(in)f(eac)m │ │ │ │ │ +(h)i(fron)m(t.)41 b(It)31 b(is)f(mo)s(di\014ed)f(on)i(output)f(to)h │ │ │ │ │ (corresp)s(ond)f(with)g(the)227 1114 y(new)g(fron)m(t)h(tree.)41 │ │ │ │ │ b(This)30 b(metho)s(d)f(only)i(tries)g(to)g(merge)g(a)f(fron)m(t)h │ │ │ │ │ (with)f(its)h(only)f(c)m(hild.)227 1265 y Fj(Err)-5 b(or)31 │ │ │ │ │ b(che)-5 b(cking:)38 b Fo(If)26 b Fn(etree)e Fo(is)j │ │ │ │ │ Fn(NULL)p Fo(,)e(or)h(if)h Fn(nfront)c Fg(<)i Fo(1,)j(or)e(if)h │ │ │ │ │ Fn(nvtx)d Fg(<)h Fo(1,)i(an)g(error)f(message)h(is)f(prin)m(ted)227 │ │ │ │ │ 1377 y(and)k(the)h(program)f(exits.)111 1566 y(2.)46 │ │ │ │ │ @@ -6613,17 +6619,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 1084 4 v 1265 100 a Fn(ETree)29 │ │ │ │ │ -b Fk(:)41 b Fj(DRAFT)121 b Fk(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2724 100 V 1084 w Fo(15)227 399 y Fn(ETree)47 b(*)g(ETree_transform2)c │ │ │ │ │ +TeXDict begin 15 14 bop 91 100 1065 4 v 1246 100 a Fn(ETree)29 │ │ │ │ │ +b Fk(:)40 b Fj(DRAFT)122 b Fk(F)-8 b(ebruary)30 b(18,)h(2025)p │ │ │ │ │ +2743 100 V 1065 w Fo(15)227 399 y Fn(ETree)47 b(*)g(ETree_transform2)c │ │ │ │ │ (\()48 b(ETree)e(*etree,)g(int)h(vwghts[],)e(int)i(maxzeros,)1516 │ │ │ │ │ 511 y(int)g(maxfrontsize,)d(int)j(seed)g(\))g(;)227 675 │ │ │ │ │ y Fo(These)37 b(metho)s(ds)g(returns)f(an)i Fn(ETree)e │ │ │ │ │ Fo(ob)5 b(ject)38 b(where)f(one)h(or)f(more)h(subtrees)e(that)i(con)m │ │ │ │ │ (tain)h(m)m(ultiple)227 788 y(fron)m(ts)28 b(ha)m(v)m(e)g(b)s(een)f │ │ │ │ │ (merged)h(in)m(to)g(single)g(fron)m(ts)g(and)f(where)g(one)g(or)h(more) │ │ │ │ │ f(large)i(fron)m(ts)e(ha)m(v)m(e)i(b)s(een)e(split)227 │ │ │ │ │ @@ -6688,51 +6694,51 @@ │ │ │ │ │ 5181 y(assigned)i(to)f(all)h(pro)s(cessors.\))49 b(The)33 │ │ │ │ │ b(tree)h(is)f(then)g(visited)g(in)g(a)h(p)s(ost-order)e(tra)m(v)m │ │ │ │ │ (ersal,)k(and)d(eac)m(h)427 5294 y(fron)m(t)27 b(is)g(assigned)g(to)g │ │ │ │ │ (an)g(eligible)h(thread)e(or)h(pro)s(cessor)f(with)h(the)f(least)i(n)m │ │ │ │ │ (um)m(b)s(er)e(of)h(accum)m(ulated)427 5407 y(ops)j(so)h(far.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 16 16 │ │ │ │ │ -TeXDict begin 16 15 bop 0 100 a Fo(16)p 182 100 1084 │ │ │ │ │ -4 v 1266 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)31 b Fk(Jan)m(uary)f(16,)h │ │ │ │ │ -(2024)p 2817 100 V 337 399 a Fl(\210)45 b Fo(The)28 b │ │ │ │ │ -Fj(domain)k(de)-5 b(c)g(omp)g(osition)34 b(map)c Fo(is)e(also)h │ │ │ │ │ -(complex,)h(where)e(domains)g(are)g(mapp)s(ed)f(to)i(threads,)427 │ │ │ │ │ -511 y(then)d(the)h(fron)m(ts)f(in)g(the)g(sc)m(h)m(ur)g(complemen)m(t)i │ │ │ │ │ -(are)e(mapp)s(ed)f(to)i(threads,)g(b)s(oth)e(using)h(indep)s(enden)m(t) │ │ │ │ │ -427 624 y(balanced)38 b(maps.)61 b(The)36 b(metho)s(d)h │ │ │ │ │ -Fn(ETree)p 1884 624 29 4 v 33 w(ddMapNew\(\))e Fo(is)i(more)g(robust)g │ │ │ │ │ -(than)g Fn(ETree)p 3514 624 V 33 w(ddMap\(\))p Fo(,)427 │ │ │ │ │ -737 y(and)c(is)h(more)g(general)g(in)g(the)f(sense)h(that)g(it)g(tak)m │ │ │ │ │ -(es)h(a)f(m)m(ultisector)h(v)m(ector)h(as)e(input.)49 │ │ │ │ │ -b(The)33 b Fn(msIV)427 850 y Fo(ob)5 b(ject)41 b(is)f(a)g(map)g(from)f │ │ │ │ │ -(the)h(v)m(ertices)h(to)g Ff(f)p Fo(0)p Fg(;)15 b Fo(1)p │ │ │ │ │ -Ff(g)p Fo(.)71 b(A)40 b(v)m(ertex)h(mapp)s(ed)e(to)h(0)g(lies)h(in)e │ │ │ │ │ -(the)i(Sc)m(h)m(ur)427 963 y(complemen)m(t,)32 b(a)f(v)m(ertex)g(mapp)s │ │ │ │ │ -(ed)e(to)i(1)g(lies)g(in)f(a)h(domain.)227 1196 y Fj(Err)-5 │ │ │ │ │ -b(or)44 b(che)-5 b(cking:)61 b Fo(If)41 b Fn(etree)f │ │ │ │ │ -Fo(or)g Fn(cumopsDV)f Fo(is)i Fn(NULL)p Fo(,)f(or)h(if)g │ │ │ │ │ -Fn(type)f Fo(or)h Fn(symflag)e Fo(is)i(in)m(v)-5 b(alid,)44 │ │ │ │ │ -b(an)d(error)227 1309 y(message)32 b(is)e(prin)m(ted)g(and)g(the)g │ │ │ │ │ -(program)h(exits.)0 1600 y Fh(1.2.12)113 b(Storage)37 │ │ │ │ │ -b(pro\014le)h(metho)s(ds)0 1804 y Fo(These)33 b(metho)s(ds)f(\014ll)h │ │ │ │ │ -(a)h(v)m(ector)g(with)f(the)g(total)i(amoun)m(t)e(of)h(w)m(orking)f │ │ │ │ │ -(storage)h(necessary)g(during)e(the)h(factor)0 1917 y(and)d(solv)m(es.) │ │ │ │ │ -111 2175 y(1.)46 b Fn(void)h(ETree_MFstackProfile)42 │ │ │ │ │ -b(\()48 b(ETree)e(*etree,)g(int)h(type,)f(double)g(dvec[])g(\))i(;)227 │ │ │ │ │ -2333 y Fo(On)38 b(return,)h Fn(dvec[J])d Fo(con)m(tains)k(the)e(amoun)m │ │ │ │ │ -(t)h(of)f(activ)m(e)j(storage)e(to)g(eliminate)h Fn(J)e │ │ │ │ │ -Fo(using)g(the)g(m)m(ulti-)227 2446 y(fron)m(tal)c(metho)s(d)e(and)g │ │ │ │ │ -(the)h(natural)g(p)s(ost-order)f(tra)m(v)m(ersal.)50 │ │ │ │ │ -b(The)32 b Fn(symflag)e Fo(parameter)k(can)f(b)s(e)f(one)h(of)227 │ │ │ │ │ -2559 y Fn(SPOOLES)p 569 2559 V 33 w(SYMMETRIC)p Fo(,)28 │ │ │ │ │ -b Fn(SPOOLES)p 1423 2559 V 32 w(HERMITIAN)g Fo(or)i Fn(SPOOLES)p │ │ │ │ │ -2362 2559 V 33 w(NONSYMMETRIC)p Fo(.)227 2717 y Fj(Err)-5 │ │ │ │ │ -b(or)28 b(che)-5 b(cking:)37 b Fo(If)23 b Fn(etree)f │ │ │ │ │ -Fo(or)h Fn(dvec)g Fo(are)g Fn(NULL)p Fo(,)g(or)h(if)f │ │ │ │ │ +TeXDict begin 16 15 bop 0 100 a Fo(16)p 182 100 1065 │ │ │ │ │ +4 v 1247 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)31 b Fk(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2836 100 V 337 399 a Fl(\210)45 │ │ │ │ │ +b Fo(The)28 b Fj(domain)k(de)-5 b(c)g(omp)g(osition)34 │ │ │ │ │ +b(map)c Fo(is)e(also)h(complex,)h(where)e(domains)g(are)g(mapp)s(ed)f │ │ │ │ │ +(to)i(threads,)427 511 y(then)d(the)h(fron)m(ts)f(in)g(the)g(sc)m(h)m │ │ │ │ │ +(ur)g(complemen)m(t)i(are)e(mapp)s(ed)f(to)i(threads,)g(b)s(oth)e │ │ │ │ │ +(using)h(indep)s(enden)m(t)427 624 y(balanced)38 b(maps.)61 │ │ │ │ │ +b(The)36 b(metho)s(d)h Fn(ETree)p 1884 624 29 4 v 33 │ │ │ │ │ +w(ddMapNew\(\))e Fo(is)i(more)g(robust)g(than)g Fn(ETree)p │ │ │ │ │ +3514 624 V 33 w(ddMap\(\))p Fo(,)427 737 y(and)c(is)h(more)g(general)g │ │ │ │ │ +(in)g(the)f(sense)h(that)g(it)g(tak)m(es)h(a)f(m)m(ultisector)h(v)m │ │ │ │ │ +(ector)h(as)e(input.)49 b(The)33 b Fn(msIV)427 850 y │ │ │ │ │ +Fo(ob)5 b(ject)41 b(is)f(a)g(map)g(from)f(the)h(v)m(ertices)h(to)g │ │ │ │ │ +Ff(f)p Fo(0)p Fg(;)15 b Fo(1)p Ff(g)p Fo(.)71 b(A)40 │ │ │ │ │ +b(v)m(ertex)h(mapp)s(ed)e(to)h(0)g(lies)h(in)e(the)i(Sc)m(h)m(ur)427 │ │ │ │ │ +963 y(complemen)m(t,)32 b(a)f(v)m(ertex)g(mapp)s(ed)e(to)i(1)g(lies)g │ │ │ │ │ +(in)f(a)h(domain.)227 1196 y Fj(Err)-5 b(or)44 b(che)-5 │ │ │ │ │ +b(cking:)61 b Fo(If)41 b Fn(etree)f Fo(or)g Fn(cumopsDV)f │ │ │ │ │ +Fo(is)i Fn(NULL)p Fo(,)f(or)h(if)g Fn(type)f Fo(or)h │ │ │ │ │ +Fn(symflag)e Fo(is)i(in)m(v)-5 b(alid,)44 b(an)d(error)227 │ │ │ │ │ +1309 y(message)32 b(is)e(prin)m(ted)g(and)g(the)g(program)h(exits.)0 │ │ │ │ │ +1600 y Fh(1.2.12)113 b(Storage)37 b(pro\014le)h(metho)s(ds)0 │ │ │ │ │ +1804 y Fo(These)33 b(metho)s(ds)f(\014ll)h(a)h(v)m(ector)g(with)f(the)g │ │ │ │ │ +(total)i(amoun)m(t)e(of)h(w)m(orking)f(storage)h(necessary)g(during)e │ │ │ │ │ +(the)h(factor)0 1917 y(and)d(solv)m(es.)111 2175 y(1.)46 │ │ │ │ │ +b Fn(void)h(ETree_MFstackProfile)42 b(\()48 b(ETree)e(*etree,)g(int)h │ │ │ │ │ +(type,)f(double)g(dvec[])g(\))i(;)227 2333 y Fo(On)38 │ │ │ │ │ +b(return,)h Fn(dvec[J])d Fo(con)m(tains)k(the)e(amoun)m(t)h(of)f(activ) │ │ │ │ │ +m(e)j(storage)e(to)g(eliminate)h Fn(J)e Fo(using)g(the)g(m)m(ulti-)227 │ │ │ │ │ +2446 y(fron)m(tal)c(metho)s(d)e(and)g(the)h(natural)g(p)s(ost-order)f │ │ │ │ │ +(tra)m(v)m(ersal.)50 b(The)32 b Fn(symflag)e Fo(parameter)k(can)f(b)s │ │ │ │ │ +(e)f(one)h(of)227 2559 y Fn(SPOOLES)p 569 2559 V 33 w(SYMMETRIC)p │ │ │ │ │ +Fo(,)28 b Fn(SPOOLES)p 1423 2559 V 32 w(HERMITIAN)g Fo(or)i │ │ │ │ │ +Fn(SPOOLES)p 2362 2559 V 33 w(NONSYMMETRIC)p Fo(.)227 │ │ │ │ │ +2717 y Fj(Err)-5 b(or)28 b(che)-5 b(cking:)37 b Fo(If)23 │ │ │ │ │ +b Fn(etree)f Fo(or)h Fn(dvec)g Fo(are)g Fn(NULL)p Fo(,)g(or)h(if)f │ │ │ │ │ Fn(symflag)f Fo(is)h(in)m(v)-5 b(alid,)26 b(an)d(error)g(message)i(is)e │ │ │ │ │ (prin)m(ted)227 2830 y(and)30 b(the)h(program)f(exits.)111 │ │ │ │ │ 3034 y(2.)46 b Fn(void)h(ETree_GSstorageProfile)42 b(\()47 │ │ │ │ │ b(ETree)f(*etree,)g(int)h(type,)g(IVL)f(*symbfacIVL,)1659 │ │ │ │ │ 3147 y(int)h(*vwghts,)f(double)g(dvec[])g(\))h(;)227 │ │ │ │ │ 3305 y Fo(On)23 b(return,)h Fn(dvec[J])d Fo(con)m(tains)k(the)f(amoun)m │ │ │ │ │ (t)g(of)f(activ)m(e)j(storage)f(to)f(eliminate)h Fn(J)e │ │ │ │ │ @@ -6767,17 +6773,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 1084 4 v 1265 100 a Fn(ETree)29 │ │ │ │ │ -b Fk(:)41 b Fj(DRAFT)121 b Fk(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2724 100 V 1084 w Fo(17)111 399 y(5.)46 b Fn(void)h │ │ │ │ │ +TeXDict begin 17 16 bop 91 100 1065 4 v 1246 100 a Fn(ETree)29 │ │ │ │ │ +b Fk(:)40 b Fj(DRAFT)122 b Fk(F)-8 b(ebruary)30 b(18,)h(2025)p │ │ │ │ │ +2743 100 V 1065 w Fo(17)111 399 y(5.)46 b Fn(void)h │ │ │ │ │ (ETree_backSolveProfile)42 b(\()47 b(ETree)f(*etree,)g(double)g(dvec[]) │ │ │ │ │ g(\))i(;)227 555 y Fo(On)24 b(return,)g Fn(dvec[J])f │ │ │ │ │ Fo(con)m(tains)i(the)g(amoun)m(t)g(of)f(stac)m(k)i(storage)g(to)f(solv) │ │ │ │ │ m(e)h(for)e Fn(J)g Fo(using)g(the)g(m)m(ultifron)m(tal-)227 │ │ │ │ │ 668 y(based)30 b(bac)m(kw)m(ard)h(solv)m(e.)227 825 y │ │ │ │ │ Fj(Err)-5 b(or)29 b(che)-5 b(cking:)38 b Fo(If)25 b Fn(etree)e │ │ │ │ │ Fo(or)j Fn(dvec)d Fo(are)j Fn(NULL)p Fo(,)e(an)h(error)g(message)h(is)f │ │ │ │ │ @@ -6851,19 +6857,19 @@ │ │ │ │ │ e(v)-5 b(alue)34 b Fn(1)e Fo(is)i(returned.)47 b(If)33 │ │ │ │ │ b(an)g(IO)f(error)h(is)227 5250 y(encoun)m(tered)e(from)f │ │ │ │ │ Fn(fprintf)p Fo(,)f(zero)i(is)f(returned.)227 5407 y │ │ │ │ │ Fj(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fo(If)30 b Fn(etree)f │ │ │ │ │ Fo(or)i Fn(fp)e Fo(are)i Fn(NULL)p Fo(,)f(an)g(error)g(message)h(is)g │ │ │ │ │ (prin)m(ted)f(and)f(zero)j(is)e(returned.)p eop end │ │ │ │ │ %%Page: 18 18 │ │ │ │ │ -TeXDict begin 18 17 bop 0 100 a Fo(18)p 182 100 1084 │ │ │ │ │ -4 v 1266 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)31 b Fk(Jan)m(uary)f(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ +TeXDict begin 18 17 bop 0 100 a Fo(18)p 182 100 1065 │ │ │ │ │ +4 v 1247 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)31 b Fk(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2836 100 V 111 399 a Fo(6.)46 │ │ │ │ │ +b Fn(int)h(ETree_writeToBinaryFile)42 b(\()47 b(ETree)f(*etree,)g(FILE) │ │ │ │ │ +h(*fp)g(\))g(;)227 557 y Fo(This)37 b(metho)s(d)g(writes)g(an)h │ │ │ │ │ Fn(ETree)e Fo(ob)5 b(ject)38 b(to)g(a)g(binary)f(\014le.)62 │ │ │ │ │ b(If)37 b(there)h(are)g(no)f(errors)g(in)g(writing)h(the)227 │ │ │ │ │ 670 y(data,)32 b(the)e(v)-5 b(alue)31 b Fn(1)f Fo(is)g(returned.)40 │ │ │ │ │ b(If)30 b(an)g(IO)g(error)g(is)g(encoun)m(tered)h(from)f │ │ │ │ │ Fn(fwrite)p Fo(,)f(zero)i(is)g(returned.)227 829 y Fj(Err)-5 │ │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fo(If)30 b Fn(etree)f │ │ │ │ │ Fo(or)i Fn(fp)e Fo(are)i Fn(NULL)p Fo(,)f(an)g(error)g(message)h(is)g │ │ │ │ │ @@ -6932,17 +6938,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 1084 4 v 1265 100 a Fn(ETree)29 │ │ │ │ │ -b Fk(:)41 b Fj(DRAFT)121 b Fk(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2724 100 V 1084 w Fo(19)337 399 y Fl(\210)45 b Fo(The)24 │ │ │ │ │ +TeXDict begin 19 18 bop 91 100 1065 4 v 1246 100 a Fn(ETree)29 │ │ │ │ │ +b Fk(:)40 b Fj(DRAFT)122 b Fk(F)-8 b(ebruary)30 b(18,)h(2025)p │ │ │ │ │ +2743 100 V 1065 w Fo(19)337 399 y Fl(\210)45 b Fo(The)24 │ │ │ │ │ b Fn(outETreeFile)d Fo(parameter)k(is)f(the)h(output)f(\014le)g(for)g │ │ │ │ │ (the)h Fn(ETree)d Fo(ob)5 b(ject.)40 b(If)24 b Fn(outETreeFile)d │ │ │ │ │ Fo(is)427 511 y Fn(none)g Fo(then)h(the)g Fn(ETree)f │ │ │ │ │ Fo(ob)5 b(ject)22 b(is)g(not)h(written)f(to)g(a)h(\014le.)38 │ │ │ │ │ b(Otherwise,)23 b(the)g Fn(ETree)p 3253 511 29 4 v 33 │ │ │ │ │ w(writeToFile\(\))427 624 y Fo(metho)s(d)30 b(is)h(called)h(to)f(write) │ │ │ │ │ g(the)g(ob)5 b(ject)31 b(to)h(a)f(formatted)g(\014le)g(\(if)g │ │ │ │ │ @@ -7014,29 +7020,29 @@ │ │ │ │ │ b(39661)47 b(indices,)141 b(367237)46 b(|L|,)g(63215265)g(ops)275 │ │ │ │ │ 5294 y(merge2)142 b(:)g(511)47 b(fronts,)189 b(29525)47 │ │ │ │ │ b(indices,)141 b(373757)46 b(|L|,)g(63590185)g(ops)275 │ │ │ │ │ 5407 y(split)190 b(:)142 b(536)47 b(fronts,)189 b(34484)47 │ │ │ │ │ b(indices,)141 b(373757)46 b(|L|,)g(63590185)g(ops)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 20 20 │ │ │ │ │ -TeXDict begin 20 19 bop 0 100 a Fo(20)p 182 100 1084 │ │ │ │ │ -4 v 1266 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)31 b Fk(Jan)m(uary)f(16,)h │ │ │ │ │ -(2024)p 2817 100 V 337 399 a Fl(\210)45 b Fo(The)28 b │ │ │ │ │ -Fn(msglvl)f Fo(parameter)i(determines)g(the)g(amoun)m(t)g(of)f(output)h │ │ │ │ │ -(|)f(taking)i Fn(msglvl)46 b(>=)h(3)28 b Fo(means)427 │ │ │ │ │ -511 y(the)j Fn(ETree)e Fo(ob)5 b(ject)31 b(is)f(written)h(to)g(the)g │ │ │ │ │ -(message)g(\014le.)337 660 y Fl(\210)45 b Fo(The)33 b │ │ │ │ │ -Fn(msgFile)e Fo(parameter)j(determines)f(the)h(message)g(\014le)f(|)h │ │ │ │ │ -(if)f Fn(msgFile)e Fo(is)i Fn(stdout)p Fo(,)g(then)g(the)427 │ │ │ │ │ -773 y(message)27 b(\014le)f(is)g Fj(stdout)p Fo(,)i(otherwise)e(a)h │ │ │ │ │ -(\014le)f(is)f(op)s(ened)g(with)h Fj(app)-5 b(end)28 │ │ │ │ │ -b Fo(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 885 │ │ │ │ │ -y(data.)337 1034 y Fl(\210)45 b Fn(n1)30 b Fo(is)g(the)h(n)m(um)m(b)s │ │ │ │ │ -(er)e(of)i(grid)f(p)s(oin)m(ts)g(in)g(the)h(\014rst)e(direction.)337 │ │ │ │ │ -1182 y Fl(\210)45 b Fn(n2)30 b Fo(is)g(the)h(n)m(um)m(b)s(er)e(of)i │ │ │ │ │ +TeXDict begin 20 19 bop 0 100 a Fo(20)p 182 100 1065 │ │ │ │ │ +4 v 1247 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)31 b Fk(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2836 100 V 337 399 a Fl(\210)45 │ │ │ │ │ +b Fo(The)28 b Fn(msglvl)f Fo(parameter)i(determines)g(the)g(amoun)m(t)g │ │ │ │ │ +(of)f(output)h(|)f(taking)i Fn(msglvl)46 b(>=)h(3)28 │ │ │ │ │ +b Fo(means)427 511 y(the)j Fn(ETree)e Fo(ob)5 b(ject)31 │ │ │ │ │ +b(is)f(written)h(to)g(the)g(message)g(\014le.)337 660 │ │ │ │ │ +y Fl(\210)45 b Fo(The)33 b Fn(msgFile)e Fo(parameter)j(determines)f │ │ │ │ │ +(the)h(message)g(\014le)f(|)h(if)f Fn(msgFile)e Fo(is)i │ │ │ │ │ +Fn(stdout)p Fo(,)g(then)g(the)427 773 y(message)27 b(\014le)f(is)g │ │ │ │ │ +Fj(stdout)p Fo(,)i(otherwise)e(a)h(\014le)f(is)f(op)s(ened)g(with)h │ │ │ │ │ +Fj(app)-5 b(end)28 b Fo(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 │ │ │ │ │ +885 y(data.)337 1034 y Fl(\210)45 b Fn(n1)30 b Fo(is)g(the)h(n)m(um)m │ │ │ │ │ +(b)s(er)e(of)i(grid)f(p)s(oin)m(ts)g(in)g(the)h(\014rst)e(direction.) │ │ │ │ │ +337 1182 y Fl(\210)45 b Fn(n2)30 b Fo(is)g(the)h(n)m(um)m(b)s(er)e(of)i │ │ │ │ │ (grid)f(p)s(oin)m(ts)g(in)g(the)h(second)f(direction.)337 │ │ │ │ │ 1330 y Fl(\210)45 b Fn(n3)30 b Fo(is)g(the)h(n)m(um)m(b)s(er)e(of)i │ │ │ │ │ (grid)f(p)s(oin)m(ts)g(in)g(the)h(third)e(direction.)337 │ │ │ │ │ 1478 y Fl(\210)45 b Fo(The)27 b Fn(maxzeros)e Fo(parameter)j(is)f(an)g │ │ │ │ │ (upp)s(er)f(b)s(ound)f(on)i(the)h(n)m(um)m(b)s(er)e(of)h(logically)j │ │ │ │ │ (zero)e(en)m(tries)g(that)427 1591 y(will)j(b)s(e)f(allo)m(w)m(ed)i(in) │ │ │ │ │ e(a)h(new)f(fron)m(t.)337 1740 y Fl(\210)45 b Fo(The)31 │ │ │ │ │ @@ -7094,17 +7100,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 1084 4 v 1265 100 a Fn(ETree)29 │ │ │ │ │ -b Fk(:)41 b Fj(DRAFT)121 b Fk(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2724 100 V 1084 w Fo(21)337 399 y Fl(\210)45 b Fo(The)30 │ │ │ │ │ +TeXDict begin 21 20 bop 91 100 1065 4 v 1246 100 a Fn(ETree)29 │ │ │ │ │ +b Fk(:)40 b Fj(DRAFT)122 b Fk(F)-8 b(ebruary)30 b(18,)h(2025)p │ │ │ │ │ +2743 100 V 1065 w Fo(21)337 399 y Fl(\210)45 b Fo(The)30 │ │ │ │ │ b Fn(maptype)f Fo(parameter)h(is)h(the)f(t)m(yp)s(e)h(of)f(map.)500 │ │ │ │ │ 540 y Fe({)45 b Fn(1)30 b Fo(|)h(wrap)e(map)500 667 y │ │ │ │ │ Fe({)45 b Fn(2)30 b Fo(|)h(balanced)f(map)500 794 y Fe({)45 │ │ │ │ │ b Fn(3)30 b Fo(|)h(subtree-subset)e(map)500 921 y Fe({)45 │ │ │ │ │ b Fn(4)30 b Fo(|)h(domain)f(decomp)s(osition)h(map)337 │ │ │ │ │ 1062 y Fl(\210)45 b Fo(The)d Fn(cutoff)e Fo(parameter)i(is)g(used)f(b)m │ │ │ │ │ (y)h(the)g(domain)g(decomp)s(osition)g(map)g(only)-8 │ │ │ │ │ @@ -7187,32 +7193,32 @@ │ │ │ │ │ b(Otherwise,)37 b(the)g Fn(IV)p 3252 5181 V 34 w(writeToFile\(\))427 │ │ │ │ │ 5294 y Fo(metho)s(d)i(is)h(called)h(to)f(write)g(the)g(ob)5 │ │ │ │ │ b(ject)40 b(to)g(a)g(formatted)h(\014le)e(\(if)h Fn(outIVFile)d │ │ │ │ │ Fo(is)j(of)g(the)f(form)427 5407 y Fn(*.ivf)p Fo(\),)30 │ │ │ │ │ b(or)g(a)h(binary)f(\014le)g(\(if)h Fn(outIVFile)d Fo(is)i(of)g(the)h │ │ │ │ │ (form)f Fn(*.ivb)p Fo(\).)p eop end │ │ │ │ │ %%Page: 22 22 │ │ │ │ │ -TeXDict begin 22 21 bop 0 100 a Fo(22)p 182 100 1084 │ │ │ │ │ -4 v 1266 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)31 b Fk(Jan)m(uary)f(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ -1001 y(the)j Fn(ETree)e Fo(ob)5 b(ject)31 b(is)f(written)h(to)g(the)g │ │ │ │ │ -(message)g(\014le.)337 1151 y Fl(\210)45 b Fo(The)33 │ │ │ │ │ -b Fn(msgFile)e Fo(parameter)j(determines)f(the)h(message)g(\014le)f(|)h │ │ │ │ │ -(if)f Fn(msgFile)e Fo(is)i Fn(stdout)p Fo(,)g(then)g(the)427 │ │ │ │ │ -1264 y(message)27 b(\014le)f(is)g Fj(stdout)p Fo(,)i(otherwise)e(a)h │ │ │ │ │ -(\014le)f(is)f(op)s(ened)g(with)h Fj(app)-5 b(end)28 │ │ │ │ │ -b Fo(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 1377 │ │ │ │ │ -y(data.)337 1527 y Fl(\210)45 b Fo(The)36 b Fn(inETreeFile)d │ │ │ │ │ +TeXDict begin 22 21 bop 0 100 a Fo(22)p 182 100 1065 │ │ │ │ │ +4 v 1247 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)31 b Fk(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2836 100 V 111 399 a Fo(6.)46 │ │ │ │ │ +b Fn(testExpand)f(msglvl)h(msgFile)g(inETreeFile)f(inEqmapFile)g │ │ │ │ │ +(outETreeFile)227 553 y Fo(This)39 b(driv)m(er)h(program)g(is)g(used)f │ │ │ │ │ +(to)i(translate)g(an)f Fn(ETree)e Fo(ob)5 b(ject)41 b(for)f(a)g │ │ │ │ │ +(compressed)g(graph)f(in)m(to)i(an)227 666 y Fn(ETree)29 │ │ │ │ │ +b Fo(ob)5 b(ject)31 b(for)g(the)f(unit)g(w)m(eigh)m(t)i(graph.)337 │ │ │ │ │ +888 y Fl(\210)45 b Fo(The)28 b Fn(msglvl)f Fo(parameter)i(determines)g │ │ │ │ │ +(the)g(amoun)m(t)g(of)f(output)h(|)f(taking)i Fn(msglvl)46 │ │ │ │ │ +b(>=)h(3)28 b Fo(means)427 1001 y(the)j Fn(ETree)e Fo(ob)5 │ │ │ │ │ +b(ject)31 b(is)f(written)h(to)g(the)g(message)g(\014le.)337 │ │ │ │ │ +1151 y Fl(\210)45 b Fo(The)33 b Fn(msgFile)e Fo(parameter)j(determines) │ │ │ │ │ +f(the)h(message)g(\014le)f(|)h(if)f Fn(msgFile)e Fo(is)i │ │ │ │ │ +Fn(stdout)p Fo(,)g(then)g(the)427 1264 y(message)27 b(\014le)f(is)g │ │ │ │ │ +Fj(stdout)p Fo(,)i(otherwise)e(a)h(\014le)f(is)f(op)s(ened)g(with)h │ │ │ │ │ +Fj(app)-5 b(end)28 b Fo(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 │ │ │ │ │ +1377 y(data.)337 1527 y Fl(\210)45 b Fo(The)36 b Fn(inETreeFile)d │ │ │ │ │ Fo(parameter)j(is)g(the)g(input)f(\014le)h(for)g(the)g │ │ │ │ │ Fn(ETree)f Fo(ob)5 b(ject)36 b(for)g(the)g(compressed)427 │ │ │ │ │ 1640 y(graph.)53 b(It)34 b(m)m(ust)g(b)s(e)g(of)h(the)f(form)g │ │ │ │ │ Fn(*.etreef)e Fo(or)j Fn(*.etreeb)p Fo(.)50 b(The)34 │ │ │ │ │ b Fn(ETree)f Fo(ob)5 b(ject)36 b(is)e(read)g(from)427 │ │ │ │ │ 1753 y(the)d(\014le)f(via)h(the)g Fn(ETree)p 1282 1753 │ │ │ │ │ 29 4 v 33 w(readFromFile\(\))26 b Fo(metho)s(d.)337 1903 │ │ │ │ │ @@ -7272,17 +7278,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 1084 4 v 1265 100 a Fn(ETree)29 │ │ │ │ │ -b Fk(:)41 b Fj(DRAFT)121 b Fk(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2724 100 V 1084 w Fo(23)0 453 y(Figure)26 b(1.1:)40 b │ │ │ │ │ +TeXDict begin 23 22 bop 91 100 1065 4 v 1246 100 a Fn(ETree)29 │ │ │ │ │ +b Fk(:)40 b Fj(DRAFT)122 b Fk(F)-8 b(ebruary)30 b(18,)h(2025)p │ │ │ │ │ +2743 100 V 1065 w Fo(23)0 453 y(Figure)26 b(1.1:)40 b │ │ │ │ │ Fa(GRD7x7)p Fo(:)f(W)-8 b(orking)26 b(storage)i(for)d(the)h(forw)m(ard) │ │ │ │ │ f(sparse)g(factorization)k(of)d(the)g(nested)f(dissection)0 │ │ │ │ │ 566 y(ordering.)40 b(On)28 b(the)h(left)h(is)e(the)h(storage)i │ │ │ │ │ (required)d(to)i(factor)2159 540 y Fb(b)2137 566 y Fg(J)38 │ │ │ │ │ b Fo(and)29 b(its)g(up)s(date)f(matrix.)40 b(On)28 b(the)h(righ)m(t)h │ │ │ │ │ (is)f(the)0 679 y(storage)j(required)d(to)j(factor)f │ │ │ │ │ Fg(J)39 b Fo(and)30 b(all)h(of)g(its)g(ancestors.)41 │ │ │ │ │ @@ -7681,20 +7687,20 @@ │ │ │ │ │ 5053 y(information)d(\(see)g(the)g Fn(ETree)p 1305 5053 │ │ │ │ │ V 33 w(writeStats\(\))c Fo(metho)s(d\).)337 5294 y Fl(\210)45 │ │ │ │ │ b Fo(The)28 b Fn(msglvl)f Fo(parameter)i(determines)g(the)g(amoun)m(t)g │ │ │ │ │ (of)f(output)h(|)f(taking)i Fn(msglvl)46 b(>=)h(3)28 │ │ │ │ │ b Fo(means)427 5407 y(the)j Fn(ETree)e Fo(ob)5 b(ject)31 │ │ │ │ │ b(is)f(written)h(to)g(the)g(message)g(\014le.)p eop end │ │ │ │ │ %%Page: 24 24 │ │ │ │ │ -TeXDict begin 24 23 bop 0 100 a Fo(24)p 182 100 1084 │ │ │ │ │ -4 v 1266 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)31 b Fk(Jan)m(uary)f(16,)h │ │ │ │ │ -(2024)p 2817 100 V 337 399 a Fl(\210)45 b Fo(The)33 b │ │ │ │ │ -Fn(msgFile)e Fo(parameter)j(determines)f(the)h(message)g(\014le)f(|)h │ │ │ │ │ -(if)f Fn(msgFile)e Fo(is)i Fn(stdout)p Fo(,)g(then)g(the)427 │ │ │ │ │ -511 y(message)27 b(\014le)f(is)g Fj(stdout)p Fo(,)i(otherwise)e(a)h │ │ │ │ │ +TeXDict begin 24 23 bop 0 100 a Fo(24)p 182 100 1065 │ │ │ │ │ +4 v 1247 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)31 b Fk(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2836 100 V 337 399 a Fl(\210)45 │ │ │ │ │ +b Fo(The)33 b Fn(msgFile)e Fo(parameter)j(determines)f(the)h(message)g │ │ │ │ │ +(\014le)f(|)h(if)f Fn(msgFile)e Fo(is)i Fn(stdout)p Fo(,)g(then)g(the) │ │ │ │ │ +427 511 y(message)27 b(\014le)f(is)g Fj(stdout)p Fo(,)i(otherwise)e(a)h │ │ │ │ │ (\014le)f(is)f(op)s(ened)g(with)h Fj(app)-5 b(end)28 │ │ │ │ │ b Fo(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 624 │ │ │ │ │ y(data.)337 770 y Fl(\210)45 b Fo(The)37 b Fn(inFile)f │ │ │ │ │ Fo(parameter)i(is)g(the)g(input)e(\014le)i(for)f(the)h │ │ │ │ │ Fn(ETree)e Fo(ob)5 b(ject.)64 b(It)37 b(m)m(ust)h(b)s(e)f(of)h(the)f │ │ │ │ │ (form)427 883 y Fn(*.etreef)18 b Fo(or)j Fn(*.etreeb)p │ │ │ │ │ Fo(.)35 b(The)19 b Fn(ETree)g Fo(ob)5 b(ject)21 b(is)g(read)f(from)g │ │ │ │ │ @@ -7772,17 +7778,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 1084 4 v 1265 100 a Fn(ETree)29 │ │ │ │ │ -b Fk(:)41 b Fj(DRAFT)121 b Fk(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2724 100 V 1084 w Fo(25)227 399 y(the)h Fn(flag)e Fo(and)h │ │ │ │ │ +TeXDict begin 25 24 bop 91 100 1065 4 v 1246 100 a Fn(ETree)29 │ │ │ │ │ +b Fk(:)40 b Fj(DRAFT)122 b Fk(F)-8 b(ebruary)30 b(18,)h(2025)p │ │ │ │ │ +2743 100 V 1065 w Fo(25)227 399 y(the)h Fn(flag)e Fo(and)h │ │ │ │ │ Fn(cutoff)f Fo(parameters)i(|)f(it)h(can)g(b)s(e)f(based)g(on)h(depth)f │ │ │ │ │ (of)g(a)h(subtree)f(or)h(the)g(n)m(um)m(b)s(er)e(of)227 │ │ │ │ │ 511 y(v)m(ertices,)36 b(factor)e(en)m(tries)g(or)f(factor)h(op)s │ │ │ │ │ (erations)f(asso)s(ciated)i(with)e(the)g(subtree.)48 │ │ │ │ │ b(The)33 b(comp)s(onen)m(t)g(ids)227 624 y Fn(IV)27 b │ │ │ │ │ Fo(ob)5 b(ject)28 b(is)g(optionally)h(written)e(to)h(a)g(\014le.)40 │ │ │ │ │ b(Here)28 b(is)f(some)h(sample)g(output)f(for)g Fn(BCSSTK30)e │ │ │ │ │ @@ -7846,19 +7852,19 @@ │ │ │ │ │ (\014le.)40 b(Otherwise,)30 b(the)f Fn(IV)p 2832 5181 │ │ │ │ │ V 34 w(writeToFile\(\))c Fo(metho)s(d)k(is)427 5294 y(called)35 │ │ │ │ │ b(to)f(write)g(the)f(ob)5 b(ject)35 b(to)f(a)g(formatted)g(\014le)f │ │ │ │ │ (\(if)h Fn(outIVFile)d Fo(is)i(of)h(the)g(form)f Fn(*.ivf)p │ │ │ │ │ Fo(\),)g(or)h(a)427 5407 y(binary)c(\014le)g(\(if)h Fn(outIVFile)d │ │ │ │ │ Fo(is)i(of)h(the)f(form)g Fn(*.ivb)p Fo(\).)p eop end │ │ │ │ │ %%Page: 26 26 │ │ │ │ │ -TeXDict begin 26 25 bop 0 100 a Fo(26)p 182 100 1084 │ │ │ │ │ -4 v 1266 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)31 b Fk(Jan)m(uary)f(16,)h │ │ │ │ │ -(2024)p 2817 100 V 337 399 a Fl(\210)45 b Fo(The)30 b │ │ │ │ │ -Fn(flag)f Fo(parameter)i(sp)s(eci\014es)f(the)h(t)m(yp)s(e)f(of)h(m)m │ │ │ │ │ -(ultisector.)500 548 y Fe({)45 b Fn(flag)i(==)g(1)30 │ │ │ │ │ +TeXDict begin 26 25 bop 0 100 a Fo(26)p 182 100 1065 │ │ │ │ │ +4 v 1247 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)31 b Fk(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2836 100 V 337 399 a Fl(\210)45 │ │ │ │ │ +b Fo(The)30 b Fn(flag)f Fo(parameter)i(sp)s(eci\014es)f(the)h(t)m(yp)s │ │ │ │ │ +(e)f(of)h(m)m(ultisector.)500 548 y Fe({)45 b Fn(flag)i(==)g(1)30 │ │ │ │ │ b Fo(|)h(the)g(m)m(ultisector)h(is)f(based)f(on)g(the)h(depth)f(of)h │ │ │ │ │ (the)g(fron)m(t,)g(i.e.,)h(if)e(the)h(fron)m(t)g(is)597 │ │ │ │ │ 661 y(more)g(than)f Fn(depth)f Fo(steps)h(remo)m(v)m(ed)i(from)d(the)i │ │ │ │ │ (ro)s(ot,)g(it)g(forms)f(the)g(ro)s(ot)h(of)f(a)h(domain.)500 │ │ │ │ │ 792 y Fe({)45 b Fn(flag)i(==)g(2)32 b Fo(|)h(the)g(m)m(ultisector)h(is) │ │ │ │ │ f(based)g(on)f(the)h(n)m(um)m(b)s(er)f(of)g(v)m(ertices)j(in)d(a)h │ │ │ │ │ (subtree,)h(i.e.,)597 905 y(if)e(the)g(subtree)f(ro)s(oted)h(at)g(a)h │ │ │ │ │ @@ -7926,17 +7932,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 1084 4 v 1265 100 a Fn(ETree)29 │ │ │ │ │ -b Fk(:)41 b Fj(DRAFT)121 b Fk(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2724 100 V 1084 w Fo(27)337 399 y Fl(\210)45 b Fo(The)30 │ │ │ │ │ +TeXDict begin 27 26 bop 91 100 1065 4 v 1246 100 a Fn(ETree)29 │ │ │ │ │ +b Fk(:)40 b Fj(DRAFT)122 b Fk(F)-8 b(ebruary)30 b(18,)h(2025)p │ │ │ │ │ +2743 100 V 1065 w Fo(27)337 399 y Fl(\210)45 b Fo(The)30 │ │ │ │ │ b Fn(outEPSfile)e Fo(parameter)j(is)f(the)h(name)f(of)h(the)f(EPS)g │ │ │ │ │ (\014le)g(to)h(hold)f(the)h(tree.)337 542 y Fl(\210)45 │ │ │ │ │ b Fo(The)34 b Fn(metricType)e Fo(parameter)j(de\014nes)f(the)h(t)m(yp)s │ │ │ │ │ (e)g(of)g(metric)g(to)g(b)s(e)f(illustrated.)54 b(See)35 │ │ │ │ │ b(ab)s(o)m(v)m(e)h(for)427 655 y(v)-5 b(alues.)337 799 │ │ │ │ │ y Fl(\210)45 b Fo(F)-8 b(or)31 b(information)g(ab)s(out)f(the)h │ │ │ │ │ Fn(heightflag)c Fo(and)j Fn(coordflag)e Fo(parameters,)j(see)g(Section) │ │ │ │ │ @@ -9739,18 +9745,18 @@ │ │ │ │ │ b Fj(Mer)-5 b(ging)31 b Fo(the)h(fron)m(t)g(tree)h(means)f(com)m │ │ │ │ │ (bining)g(fron)m(ts)g(together)h(that)227 5407 y(do)26 │ │ │ │ │ b(not)g(in)m(tro)s(duce)f(more)h(than)f Fn(maxzeros)e │ │ │ │ │ Fo(zero)k(en)m(tries)f(in)f(a)h(fron)m(t.)40 b(\(See)26 │ │ │ │ │ b([)p Fe(?)p Fo(])g(and)f([)p Fe(?)q Fo(])h(for)f(a)h(description)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 28 28 │ │ │ │ │ -TeXDict begin 28 27 bop 0 100 a Fo(28)p 182 100 1084 │ │ │ │ │ -4 v 1266 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)31 b Fk(Jan)m(uary)f(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ +TeXDict begin 28 27 bop 0 100 a Fo(28)p 182 100 1065 │ │ │ │ │ +4 v 1247 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)31 b Fk(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2836 100 V 0 731 a Fo(Figure)c(1.2:)39 │ │ │ │ │ +b Fa(GRD7x7x7)p Fo(:)h(F)-8 b(our)26 b(tree)h(plots)g(for)f(a)g(7)12 │ │ │ │ │ b Ff(\002)g Fo(7)g Ff(\002)g Fo(7)27 b(grid)f(matrix)g(ordered)g(using) │ │ │ │ │ g(nested)g(dissection.)0 844 y(The)j(top)h(left)h(tree)g(measure)e(n)m │ │ │ │ │ (um)m(b)s(er)g(of)h(original)h(matrix)f(en)m(tries)h(in)f(a)g(fron)m │ │ │ │ │ (t.)40 b(The)30 b(top)g(righ)m(t)g(tree)h(measure)0 957 │ │ │ │ │ y(n)m(um)m(b)s(er)20 b(of)i(factor)h(matrix)f(en)m(tries)h(in)e(a)h │ │ │ │ │ (fron)m(t.)38 b(The)22 b(b)s(ottom)g(left)g(tree)h(measure)e(n)m(um)m │ │ │ │ │ (b)s(er)g(of)h(factor)h(op)s(erations)0 1070 y(in)30 │ │ │ │ │ @@ -12020,17 +12026,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 1084 4 v 1265 100 a Fn(ETree)29 │ │ │ │ │ -b Fk(:)41 b Fj(DRAFT)121 b Fk(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2724 100 V 1084 w Fo(29)227 399 y(of)j(this)g(sup)s(erno)s(de)d │ │ │ │ │ +TeXDict begin 29 28 bop 91 100 1065 4 v 1246 100 a Fn(ETree)29 │ │ │ │ │ +b Fk(:)40 b Fj(DRAFT)122 b Fk(F)-8 b(ebruary)30 b(18,)h(2025)p │ │ │ │ │ +2743 100 V 1065 w Fo(29)227 399 y(of)j(this)g(sup)s(erno)s(de)d │ │ │ │ │ (amalgamation)36 b(or)e(relaxation.\))53 b Fj(Splitting)34 │ │ │ │ │ b Fo(a)g(fron)m(t)g(means)f(breaking)h(a)g(fron)m(t)g(up)227 │ │ │ │ │ 511 y(in)m(to)39 b(a)f(c)m(hain)g(of)g(smaller)g(fron)m(ts;)j(this)d │ │ │ │ │ (allo)m(ws)h(more)e(pro)s(cessors)g(to)i(w)m(ork)f(on)f(the)h(original) │ │ │ │ │ h(fron)m(t)e(in)227 624 y(a)g(straigh)m(tforw)m(ard)f(manner.)57 │ │ │ │ │ b(The)35 b(new)h(fron)m(t)g(tree)g(is)g(optionally)i(written)e(to)g(a)h │ │ │ │ │ (\014le.)57 b(Here)37 b(is)f(some)227 737 y(output)30 │ │ │ │ │ @@ -12191,17 +12197,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 1084 4 v 1265 100 a Fn(ETree)29 │ │ │ │ │ -b Fk(:)41 b Fj(DRAFT)121 b Fk(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2724 100 V 1084 w Fo(31)0 399 y Fn(ETree)p 246 399 29 │ │ │ │ │ +TeXDict begin 31 30 bop 91 100 1065 4 v 1246 100 a Fn(ETree)29 │ │ │ │ │ +b Fk(:)40 b Fj(DRAFT)122 b Fk(F)-8 b(ebruary)30 b(18,)h(2025)p │ │ │ │ │ +2743 100 V 1065 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 16, 2024 │ │ │ │ │ │ + 2 ETree : DRAFT February 18, 2025 │ │ │ │ │ │ • IV *vtxToFrontIV : pointer to an IV object to hold the map from vertices to fronts, size │ │ │ │ │ │ nfront │ │ │ │ │ │ A correctly initialized and nontrivial ETree object will have positive nfront and nvtx values, a │ │ │ │ │ │ valid tree field and non-NULL nodwghtsIV, bndwghtsIV and vtxToFrontIV pointers. │ │ │ │ │ │ 1.2 Prototypes and descriptions of ETree methods │ │ │ │ │ │ This section contains brief descriptions including prototypes of all methods that belong to the │ │ │ │ │ │ ETree object. │ │ │ │ │ │ @@ -53,15 +53,15 @@ │ │ │ │ │ │ This method releases any storage by a call to ETree clearData() then free’s the storage for │ │ │ │ │ │ the structure with a call to free(). │ │ │ │ │ │ Error checking: If etree is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 1.2.2 Instance methods │ │ │ │ │ │ 1. int ETree_nfront ( ETree *etree ) ; │ │ │ │ │ │ This method returns the number of fronts. │ │ │ │ │ │ Error checking: If etree is NULL, an error message is printed and the program exits. │ │ │ │ │ │ - ETree : DRAFT January 16, 2024 3 │ │ │ │ │ │ + ETree : DRAFT February 18, 2025 3 │ │ │ │ │ │ 2. int ETree_nvtx ( ETree *etree ) ; │ │ │ │ │ │ This method returns the number of vertices. │ │ │ │ │ │ Error checking: If etree is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 3. Tree * ETree_tree ( ETree *etree ) ; │ │ │ │ │ │ This method returns a pointer to the Tree object. │ │ │ │ │ │ Error checking: If etree is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 4. int ETree_root ( ETree *etree ) ; │ │ │ │ │ │ @@ -86,15 +86,15 @@ │ │ │ │ │ │ 9. int * ETree_nodwghts ( ETree *etree ) ; │ │ │ │ │ │ This method returns a pointer to the nodwghts vector. │ │ │ │ │ │ Error checking: If etree or etree->nodwghtsIV is NULL, an error message is printed and the │ │ │ │ │ │ program exits. │ │ │ │ │ │ 10. IV * ETree_bndwghtsIV ( ETree *etree ) ; │ │ │ │ │ │ This method returns a pointer to the bndwghtsIV object. │ │ │ │ │ │ Error checking: If etree is NULL, an error message is printed and the program exits. │ │ │ │ │ │ - 4 ETree : DRAFT January 16, 2024 │ │ │ │ │ │ + 4 ETree : DRAFT February 18, 2025 │ │ │ │ │ │ 11. int * ETree_bndwghts ( ETree *etree ) ; │ │ │ │ │ │ This method returns a pointer to the bndwghts vector. │ │ │ │ │ │ Error checking: If etree or etree->bndwghtsIV is NULL, an error message is printed and the │ │ │ │ │ │ program exits. │ │ │ │ │ │ 12. IV * ETree_vtxToFrontIV ( ETree *etree ) ; │ │ │ │ │ │ This method returns a pointer to the vtxToFrontIV object. │ │ │ │ │ │ Error checking: If etree is NULL, an error message is printed and the program exits. │ │ │ │ │ │ @@ -121,15 +121,15 @@ │ │ │ │ │ │ Error checking: If etree is NULL, or if symflag is invalid, an error message is printed and the │ │ │ │ │ │ program exits. │ │ │ │ │ │ 1.2.3 Initializer methods │ │ │ │ │ │ There are four initializer methods. │ │ │ │ │ │ 1. void ETree_init1 ( ETree *etree, int nfront, int nvtx ) ; │ │ │ │ │ │ This method initializes an ETree object given the number of fronts and number of vertices. │ │ │ │ │ │ Anyprevious data is cleared with a call to ETree clearData(), The Tree object is initialized │ │ │ │ │ │ - ETree : DRAFT January 16, 2024 5 │ │ │ │ │ │ + ETree : DRAFT February 18, 2025 5 │ │ │ │ │ │ with a call to Tree init1(). The nodwghtsIV, bndwghtsIV and vtxToFrontIV objects are │ │ │ │ │ │ initialized with calls to IV init(). The entries in nodwghtsIV and bndwghtsIV are set to 0, │ │ │ │ │ │ while the entries in vtxToFrontIV are set to -1. │ │ │ │ │ │ Error checking: If etree is NULL, or if nfront is negative, or if nvtx < nfront, an error │ │ │ │ │ │ message is printed and the program exits. │ │ │ │ │ │ 2. void ETree_initFromGraph ( ETree *etree, Graph *g ) ; │ │ │ │ │ │ This method generates an elimination tree from a graph. The nodwghtsIV vector object is │ │ │ │ │ │ @@ -160,15 +160,15 @@ │ │ │ │ │ │ permutes to vertex-to-front map, and returns an IV object that contains the old-to-new │ │ │ │ │ │ permutation. │ │ │ │ │ │ Error checking: If etree is NULL or inETreeFileName is “none”, an error message is printed │ │ │ │ │ │ and the program exits. │ │ │ │ │ │ 6. int ETree_initFromSubtree ( ETree *subtree, IV *nodeidsIV, ETree *etree, IV *vtxIV ) ; │ │ │ │ │ │ This method initializes subtree from tree using the nodes of etree that are found in │ │ │ │ │ │ nodeidsIV. The map from nodes in subtree to nodes in etree is returned in vtxIV. │ │ │ │ │ │ - 6 ETree : DRAFT January 16, 2024 │ │ │ │ │ │ + 6 ETree : DRAFT February 18, 2025 │ │ │ │ │ │ Return code: 1 for a normal return, -1 if subtree is NULL, -2 if nodeidsIV is NULL, -3 if │ │ │ │ │ │ etree is NULL, -4 if nodeidsIV is invalid, -5 if vtxIV is NULL. │ │ │ │ │ │ 1.2.4 Utility methods │ │ │ │ │ │ Theutility methods return the number of bytes taken by the object, or the number of factor indices, │ │ │ │ │ │ entries or operations required by the object. │ │ │ │ │ │ 1. int ETree_sizeOf ( ETree *etree ) ; │ │ │ │ │ │ This method returns the number of bytes taken by this object (which includes the bytes taken │ │ │ │ │ │ @@ -195,15 +195,15 @@ │ │ │ │ │ │ Error checking: If etree or tree is NULL, or if nfront < 1, or if nvtx < 1, or if type or │ │ │ │ │ │ symflag is invalid, an error message is printed and the program exits. │ │ │ │ │ │ 5. double ETree_nFactorEntriesInFront ( ETree *etree, int symflag, int J ) ; │ │ │ │ │ │ ThismethodreturnsthenumberofentriesinfrontJforanLU factorization. Thesymflagpa- │ │ │ │ │ │ rameter can be one of SPOOLES SYMMETRIC, SPOOLES HERMITIAN or SPOOLES NONSYMMETRIC. │ │ │ │ │ │ Error checking: If etree or tree is NULL, or if nfront < 1, or if symflag is invalid, or if │ │ │ │ │ │ J < 0, or if J ≥ nfront, an error message is printed and the program exits. │ │ │ │ │ │ - ETree : DRAFT January 16, 2024 7 │ │ │ │ │ │ + ETree : DRAFT February 18, 2025 7 │ │ │ │ │ │ 6. double ETree_nInternalOpsInFront ( ETree *etree, int type, int symflag, int J ) ; │ │ │ │ │ │ ThismethodreturnsthenumberofinternaloperationsperformedbyfrontJonits(1,1), (2,1), │ │ │ │ │ │ and (1,2) blocks during a factorization. The type parameter can be one of SPOOLES REAL │ │ │ │ │ │ or SPOOLES COMPLEX. symflag must be one of SPOOLES SYMMETRIC, SPOOLES HERMITIAN or │ │ │ │ │ │ SPOOLES NONSYMMETRIC. │ │ │ │ │ │ Error checking: If etree or tree is NULL, or if nfront < 1, or if type or symflag is invalid, │ │ │ │ │ │ or if J < 0, or if J ≥ nfront, an error message is printed and the program exits. │ │ │ │ │ │ @@ -233,15 +233,15 @@ │ │ │ │ │ │ Error checking: If etree is NULL, or if type or symflag is invalid, an error message is printed │ │ │ │ │ │ and the program exits. │ │ │ │ │ │ 11. ETree * ETree_expand ( ETree *etree, IV *eqmapIV ) ; │ │ │ │ │ │ This method creates and returns an ETree object for an uncompressed graph. The map from │ │ │ │ │ │ compressed vertices to uncompressed vertices is found in the eqmapIV object. │ │ │ │ │ │ Error checking: If etree or eqmapIV is NULL, an error message is printed and the program │ │ │ │ │ │ exits. │ │ │ │ │ │ - 8 ETree : DRAFT January 16, 2024 │ │ │ │ │ │ + 8 ETree : DRAFT February 18, 2025 │ │ │ │ │ │ 12. ETree * ETree_spliceTwoEtrees ( ETree *etree0, Graph *graph, IV *mapIV, ETree *etree1 ) ; │ │ │ │ │ │ This method creates and returns an ETree object that is formed by splicing together two │ │ │ │ │ │ front trees, etree0 for the vertices the eliminated domains, etree1 for the vertices the Schur │ │ │ │ │ │ complement. The mapIV object maps vertices to domains or the Schur complement — if the │ │ │ │ │ │ entry is 0, the vertex is in the Schur complement, otherwise it is in a domain. │ │ │ │ │ │ Error checking: If etree0, graph, mapIV or etree1 is NULL, an error message is printed and │ │ │ │ │ │ the program exits. │ │ │ │ │ │ @@ -266,15 +266,15 @@ │ │ │ │ │ │ 3. DV * ETree_nopsMetric ( ETree *etree, int type, int symflag ) ; │ │ │ │ │ │ AnDVobjectofsize nfrontis created and returned. Each entry of the vector is filled with the │ │ │ │ │ │ number of factor operations associated with the corresponding front. The type parameter │ │ │ │ │ │ can be one of SPOOLES REAL or SPOOLES COMPLEX. The symflag parameter can be one of │ │ │ │ │ │ SPOOLES SYMMETRIC, SPOOLES HERMITIAN or SPOOLES NONSYMMETRIC. │ │ │ │ │ │ Error checking: If etree is NULL, or if nfront < 1, or if nvtx < 1, or if type or symflag is │ │ │ │ │ │ invalid, an error message is printed and the program exits. │ │ │ │ │ │ - ETree : DRAFT January 16, 2024 9 │ │ │ │ │ │ + ETree : DRAFT February 18, 2025 9 │ │ │ │ │ │ 1.2.6 Compression methods │ │ │ │ │ │ Frequently an ETree object will need to be compressed in some manner. Elimination trees usually │ │ │ │ │ │ have long chains of vertices at the higher levels, where each chain of vertices corresponds to a │ │ │ │ │ │ supernode. Liu’s generalized row envelope methods partition the vertices by longest chains [?]. In │ │ │ │ │ │ both cases, we can construct a map from each node to a set of nodes to define a smaller, more │ │ │ │ │ │ compact ETree object. Given such a map, we construct the smaller etree. │ │ │ │ │ │ Afundamental chain is a set of vertices v ,...,v such that │ │ │ │ │ │ @@ -308,15 +308,15 @@ │ │ │ │ │ │ Error checking: If etree or tree is NULL, or if nfront < 1, or if nvtx < 1, an error message │ │ │ │ │ │ is printed and the program exits. │ │ │ │ │ │ 2. IV * ETree_fundSupernodeMap ( ETree *etree ) ; │ │ │ │ │ │ An IV object of size nfront is created, filled with the map from vertices to fundamental │ │ │ │ │ │ supernodes, then returned. │ │ │ │ │ │ Error checking: If etree or tree is NULL, or if nfront < 1, or if nvtx < 1, an error message │ │ │ │ │ │ is printed and the program exits. │ │ │ │ │ │ - 10 ETree : DRAFT January 16, 2024 │ │ │ │ │ │ + 10 ETree : DRAFT February 18, 2025 │ │ │ │ │ │ 3. ETree * ETree_compress ( ETree *etree, IV *frontMapIV ) ; │ │ │ │ │ │ Using frontMapIV, a new ETree object is created and returned. If frontMapIV does not │ │ │ │ │ │ define each inverse map of a new node to be connected set of nodes in the old ETree object, │ │ │ │ │ │ the new ETree object will not be well defined. │ │ │ │ │ │ Error checking: If etree or frontMapIV is NULL, or if nfront < 1, or if nvtx < 1, an error │ │ │ │ │ │ message is printed and the program exits. │ │ │ │ │ │ 1.2.7 Justification methods │ │ │ │ │ │ @@ -342,15 +342,15 @@ │ │ │ │ │ │ 1. IV * ETree_newToOldFrontPerm ( ETree *etree ) ; │ │ │ │ │ │ IV * ETree_oldToNewFrontPerm ( ETree *etree ) ; │ │ │ │ │ │ An IV object is created with size nfront. A post-order traversal of the Tree object fills │ │ │ │ │ │ the new-to-old permutation. A reversal of the new-to-old permutation gives the old-to-new │ │ │ │ │ │ permutation. Both methods are simply wrappers around the respective Tree methods. │ │ │ │ │ │ Error checking: If etree is NULL, or if nfront < 1, or if nvtx < 1, an error message is printed │ │ │ │ │ │ and the program exits. │ │ │ │ │ │ - ETree : DRAFT January 16, 2024 11 │ │ │ │ │ │ + ETree : DRAFT February 18, 2025 11 │ │ │ │ │ │ 2. IV * ETree_newToOldVtxPerm ( ETree *etree ) ; │ │ │ │ │ │ IV * ETree_oldToNewVtxPerm ( ETree *etree ) ; │ │ │ │ │ │ AnIVobject is created with size nvtx. First we find a new-to-old permutation of the fronts. │ │ │ │ │ │ Then we search over the fronts in their new order to fill the vertex new-to-old permutation │ │ │ │ │ │ vector. The old-to-new vertex permutation vector is found by first finding the new-to-old │ │ │ │ │ │ vertex permutation vector, then inverting it. │ │ │ │ │ │ Error checking: If etree is NULL, or if nfront < 1, or if nvtx < 1, an error message is printed │ │ │ │ │ │ @@ -380,15 +380,15 @@ │ │ │ │ │ │ of the subtree is more than cutoff times the vertex weight, the vertex is in the multisector. │ │ │ │ │ │ Error checking: If etree is NULL, or if nfront < 1, or if nvtx < 1, an error message is printed │ │ │ │ │ │ and the program exits. │ │ │ │ │ │ 3. IV * ETree_msByNentCutoff ( ETree *etree, double cutoff, int symflag ) ; │ │ │ │ │ │ An IV object is created to hold the multisector nodes and returned. Multisector nodes │ │ │ │ │ │ have their component id zero, domain nodes have their component id one. Inclusion in the │ │ │ │ │ │ multisector is based on the number of factor entries in the subtree that a vertex belongs, or │ │ │ │ │ │ - 12 ETree : DRAFT January 16, 2024 │ │ │ │ │ │ + 12 ETree : DRAFT February 18, 2025 │ │ │ │ │ │ strictly speaking, the number of factor entries in the subtree of the front to which a vertex │ │ │ │ │ │ belongs. If weight of the subtree is more than cutoff times the number of factor entries, │ │ │ │ │ │ the vertex is in the multisector. The symflag parameter can be one of SPOOLES SYMMETRIC, │ │ │ │ │ │ SPOOLES HERMITIAN or SPOOLES NONSYMMETRIC. │ │ │ │ │ │ Error checking: If etree is NULL, or if nfront < 1, or if nvtx < 1, or if symflag is invalid, │ │ │ │ │ │ an error message is printed and the program exits. │ │ │ │ │ │ 4. IV * ETree_msByNopsCutoff ( ETree *etree, double cutoff, int type, int symflag ) ; │ │ │ │ │ │ @@ -423,15 +423,15 @@ │ │ │ │ │ │ ∂J,J ∂J,J J,J │ │ │ │ │ │ α = 0, we minimize active storage, when α = 1, we minimize solve operations. On return, │ │ │ │ │ │ *ptotalgain is filled with the total gain. The return value is a pointer to compidsIV, where │ │ │ │ │ │ compids[J] = 0 means that J is in the Schur complement, and compids[J] != 0 means │ │ │ │ │ │ that J is in domain compids[J]. │ │ │ │ │ │ Error checking: If etree, graph or symbfacIVL is NULL, an error message is printed and the │ │ │ │ │ │ program exits. │ │ │ │ │ │ - ETree : DRAFT January 16, 2024 13 │ │ │ │ │ │ + ETree : DRAFT February 18, 2025 13 │ │ │ │ │ │ 1.2.10 Transformation methods │ │ │ │ │ │ Often the elimination tree or front tree that we obtain from an ordering of the graph is not as │ │ │ │ │ │ appropriate for a factorization as we would like. There are two important cases. │ │ │ │ │ │ • Near the leaves of the tree the fronts are typically small in size. There is an overhead │ │ │ │ │ │ associated with each front, and though the overhead varies with regard to the factorization │ │ │ │ │ │ algorithm, it can be beneficial to group small subtrees together into one front. The expense is │ │ │ │ │ │ added storage for the logically zero entries and the factor operations on them. In this library, │ │ │ │ │ │ @@ -464,15 +464,15 @@ │ │ │ │ │ │ restriction. │ │ │ │ │ │ • The method ETree mergeFrontsAll() tries to merge a front with all of its children, if the │ │ │ │ │ │ resulting front does not contain too many zero entries. This has the effect of merging small │ │ │ │ │ │ bushy subtrees, but will not merge a top level separator with one of its children. │ │ │ │ │ │ For a serial application, ETree mergeFrontsAny()is suitable. For a parallel application, we recom- │ │ │ │ │ │ mend first using ETree mergeFrontsOne() followed by ETree mergeFrontsAll(). See the driver │ │ │ │ │ │ programs testTransform and mkNDETree for examples of how to call the methods. │ │ │ │ │ │ - 14 ETree : DRAFT January 16, 2024 │ │ │ │ │ │ + 14 ETree : DRAFT February 18, 2025 │ │ │ │ │ │ 1. ETree * ETree_mergeFrontsOne ( ETree *etree, int maxzeros, IV *nzerosIV ) ; │ │ │ │ │ │ This method only tries to merge a front with its only child. It returns an ETree object where │ │ │ │ │ │ one or more subtrees that contain multiple fronts have been merged into single fronts. The │ │ │ │ │ │ parameter that governs the merging process is maxzeros, the number of zero entries that can │ │ │ │ │ │ be introduced by merging a child and parent front together. On input, nzerosIV contains │ │ │ │ │ │ the number of zeros presently in each front. It is modified on output to correspond with the │ │ │ │ │ │ new front tree. This method only tries to merge a front with its only child. │ │ │ │ │ │ @@ -505,15 +505,15 @@ │ │ │ │ │ │ is NULL, then the vertices have unit weight. The way the vertices in a front to be split are │ │ │ │ │ │ assigned to smaller fronts is random; the seed parameter is a seed to a random number │ │ │ │ │ │ generator that permutes the vertices in a front. │ │ │ │ │ │ Error checking: If etree is NULL, or if nfront < 1, or if nvtx < 1, or if maxfrontsize ≤ 0, │ │ │ │ │ │ an error message is printed and the program exits. │ │ │ │ │ │ 5. ETree * ETree_transform ( ETree *etree, int vwghts[], int maxzeros, │ │ │ │ │ │ int maxfrontsize, int seed ) ; │ │ │ │ │ │ - ETree : DRAFT January 16, 2024 15 │ │ │ │ │ │ + ETree : DRAFT February 18, 2025 15 │ │ │ │ │ │ ETree * ETree_transform2 ( ETree *etree, int vwghts[], int maxzeros, │ │ │ │ │ │ int maxfrontsize, int seed ) ; │ │ │ │ │ │ These methods returns an ETree object where one or more subtrees that contain multiple │ │ │ │ │ │ fronts have been merged into single fronts and where one or more large fronts have been split │ │ │ │ │ │ into smaller fronts. The two methods differ slightly. ETree transform2() is better suited │ │ │ │ │ │ for parallel computing because it tends to preserve the tree branching properties. (A front is │ │ │ │ │ │ merged with either an only child or all children. ETree transform() can merge a front with │ │ │ │ │ │ @@ -544,15 +544,15 @@ │ │ │ │ │ │ where the fronts are visited in a post-order traversal of the tree and a front is assigned │ │ │ │ │ │ to a thread or processor with the least number of accumulated operations thus far. │ │ │ │ │ │ • The subtree-subset map is the most complex, where subsets of threads or processors are │ │ │ │ │ │ assigned to subtrees via a pre-order traversal of the tree. (Each root of the tree can be │ │ │ │ │ │ assigned to all processors.) The tree is then visited in a post-order traversal, and each │ │ │ │ │ │ front is assigned to an eligible thread or processor with the least number of accumulated │ │ │ │ │ │ ops so far. │ │ │ │ │ │ - 16 ETree : DRAFT January 16, 2024 │ │ │ │ │ │ + 16 ETree : DRAFT February 18, 2025 │ │ │ │ │ │ • The domain decomposition map is also complex, where domains are mapped to threads, │ │ │ │ │ │ then the fronts in the schur complement are mapped to threads, both using independent │ │ │ │ │ │ balanced maps. The method ETree ddMapNew() is more robust than ETree ddMap(), │ │ │ │ │ │ and is more general in the sense that it takes a multisector vector as input. The msIV │ │ │ │ │ │ object is a map from the vertices to {0,1}. A vertex mapped to 0 lies in the Schur │ │ │ │ │ │ complement, a vertex mapped to 1 lies in a domain. │ │ │ │ │ │ Error checking: If etree or cumopsDV is NULL, or if type or symflag is invalid, an error │ │ │ │ │ │ @@ -580,15 +580,15 @@ │ │ │ │ │ │ can be one of SPOOLES SYMMETRIC, SPOOLES HERMITIAN or SPOOLES NONSYMMETRIC. │ │ │ │ │ │ Error checking: If etree or dvec are NULL, or if symflag is invalid, an error message is printed │ │ │ │ │ │ and the program exits. │ │ │ │ │ │ 4. void ETree_forwSolveProfile ( ETree *etree, double dvec[] ) ; │ │ │ │ │ │ Onreturn, dvec[J] contains the amount of stack storage to solve for J using the multifrontal- │ │ │ │ │ │ based forward solve. │ │ │ │ │ │ Error checking: If etree or dvec are NULL, an error message is printed and the program exits. │ │ │ │ │ │ - ETree : DRAFT January 16, 2024 17 │ │ │ │ │ │ + ETree : DRAFT February 18, 2025 17 │ │ │ │ │ │ 5. void ETree_backSolveProfile ( ETree *etree, double dvec[] ) ; │ │ │ │ │ │ Onreturn, dvec[J] contains the amount of stack storage to solve for J using the multifrontal- │ │ │ │ │ │ based backward solve. │ │ │ │ │ │ Error checking: If etree or dvec are NULL, an error message is printed and the program exits. │ │ │ │ │ │ 1.2.13 IO methods │ │ │ │ │ │ There are the usual eight IO routines. The file structure of a tree object is simple: nfront, nvtx, │ │ │ │ │ │ a Tree object followed by the nodwghtsIV, bndwghtsIV and vtxToFrontIV objects. │ │ │ │ │ │ @@ -615,15 +615,15 @@ │ │ │ │ │ │ Error checking: If etree or fn are NULL, or if fn is not of the form *.etreef (for a formatted │ │ │ │ │ │ file) or *.etreeb (for a binary file), an error message is printed and the method returns zero. │ │ │ │ │ │ 5. int ETree_writeToFormattedFile ( ETree *etree, FILE *fp ) ; │ │ │ │ │ │ This method writes an ETree object to a formatted file. Otherwise, the data is written to │ │ │ │ │ │ the file. If there are no errors in writing the data, the value 1 is returned. If an IO error is │ │ │ │ │ │ encountered from fprintf, zero is returned. │ │ │ │ │ │ Error checking: If etree or fp are NULL, an error message is printed and zero is returned. │ │ │ │ │ │ - 18 ETree : DRAFT January 16, 2024 │ │ │ │ │ │ + 18 ETree : DRAFT February 18, 2025 │ │ │ │ │ │ 6. int ETree_writeToBinaryFile ( ETree *etree, FILE *fp ) ; │ │ │ │ │ │ This method writes an ETree object to a binary file. If there are no errors in writing the │ │ │ │ │ │ data, the value 1 is returned. If an IO error is encountered from fwrite, zero is returned. │ │ │ │ │ │ Error checking: If etree or fp are NULL, an error message is printed and zero is returned. │ │ │ │ │ │ 7. int ETree_writeForHumanEye ( ETree *etree, FILE *fp ) ; │ │ │ │ │ │ This method writes an ETree object to a file in a readable format. Otherwise, the method │ │ │ │ │ │ ETree writeStats() is called to write out the header and statistics. Then the parent, first │ │ │ │ │ │ @@ -650,15 +650,15 @@ │ │ │ │ │ │ • The inPermFile parameter is the input file for the Perm object. It must be of the form │ │ │ │ │ │ *.permfor*.permb. ThePermobjectisreadfromthefileviathePerm readFromFile() │ │ │ │ │ │ method. │ │ │ │ │ │ • The outIVfile parameter is the output file for the vertex-to-front map IV object. │ │ │ │ │ │ If outIVfile is none then the IV object is not written to a file. Otherwise, the │ │ │ │ │ │ IV writeToFile()methodis called to write the object to a formatted file (if outIVfile │ │ │ │ │ │ is of the form *.ivf), or a binary file (if outIVfile is of the form *.ivb). │ │ │ │ │ │ - ETree : DRAFT January 16, 2024 19 │ │ │ │ │ │ + ETree : DRAFT February 18, 2025 19 │ │ │ │ │ │ • TheoutETreeFileparameter is the output file for the ETree object. If outETreeFileis │ │ │ │ │ │ nonethentheETreeobjectisnotwrittentoafile. Otherwise,theETree writeToFile() │ │ │ │ │ │ method is called to write the object to a formatted file (if outETreeFile is of the form │ │ │ │ │ │ *.etreef), or a binary file (if outETreeFile is of the form *.etreeb). │ │ │ │ │ │ 2. extractTopSep msglvl msgFile inETreeFile outIVfile │ │ │ │ │ │ ThisdriverprogramcreatesanIVobjectthatcontainsacompids[]vector, wherecompids[v] │ │ │ │ │ │ = 0 if vertex v is in the top level separator and -1 otherwise. The IV object is optionally │ │ │ │ │ │ @@ -689,15 +689,15 @@ │ │ │ │ │ │ Here is some typical output for a 15×15×15 grid matrix with maxzeros = 64 and maxsize │ │ │ │ │ │ = 32. │ │ │ │ │ │ vtx tree : 3375 fronts, 367237 indices, 367237 |L|, 63215265 ops │ │ │ │ │ │ fs tree : 1023 fronts, 39661 indices, 367237 |L|, 63215265 ops │ │ │ │ │ │ merge1 : 1023 fronts, 39661 indices, 367237 |L|, 63215265 ops │ │ │ │ │ │ merge2 : 511 fronts, 29525 indices, 373757 |L|, 63590185 ops │ │ │ │ │ │ split : 536 fronts, 34484 indices, 373757 |L|, 63590185 ops │ │ │ │ │ │ - 20 ETree : DRAFT January 16, 2024 │ │ │ │ │ │ + 20 ETree : DRAFT February 18, 2025 │ │ │ │ │ │ • The msglvl parameter determines the amount of output — taking msglvl >= 3 means │ │ │ │ │ │ the ETree object is written to the message file. │ │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ │ message file is stdout, otherwise a file is opened with append status to receive any output │ │ │ │ │ │ data. │ │ │ │ │ │ • n1 is the number of grid points in the first direction. │ │ │ │ │ │ • n2 is the number of grid points in the second direction. │ │ │ │ │ │ @@ -729,15 +729,15 @@ │ │ │ │ │ │ • n3 is the number of grid points in the third direction. │ │ │ │ │ │ • The maxzeros parameter is an upper bound on the number of logically zero entries that │ │ │ │ │ │ will be allowed in a new front. │ │ │ │ │ │ • The maxsize parameter is an upper bound on the number of vertices in a front — any │ │ │ │ │ │ original front that contains more than maxsize vertices will be broken up into smaller │ │ │ │ │ │ fronts. │ │ │ │ │ │ • The nthread parameter is the number of threads. │ │ │ │ │ │ - ETree : DRAFT January 16, 2024 21 │ │ │ │ │ │ + ETree : DRAFT February 18, 2025 21 │ │ │ │ │ │ • The maptype parameter is the type of map. │ │ │ │ │ │ – 1 — wrap map │ │ │ │ │ │ – 2 — balanced map │ │ │ │ │ │ – 3 — subtree-subset map │ │ │ │ │ │ – 4 — domain decomposition map │ │ │ │ │ │ • The cutoff parameter is used by the domain decomposition map only. Try setting │ │ │ │ │ │ cutoff = 1/nthread or cutoff = 1/(2*nthread). │ │ │ │ │ │ @@ -771,15 +771,15 @@ │ │ │ │ │ │ nonethentheETreeobjectisnotwrittentoafile. Otherwise,theETree writeToFile() │ │ │ │ │ │ method is called to write the object to a formatted file (if outETreeFile is of the form │ │ │ │ │ │ *.etreef), or a binary file (if outETreeFile is of the form *.etreeb). │ │ │ │ │ │ • The outIVFile parameter is the output file for the old-to-new IV object. If outIVFile │ │ │ │ │ │ is none then the IV object is not written to a file. Otherwise, the IV writeToFile() │ │ │ │ │ │ method is called to write the object to a formatted file (if outIVFile is of the form │ │ │ │ │ │ *.ivf), or a binary file (if outIVFile is of the form *.ivb). │ │ │ │ │ │ - 22 ETree : DRAFT January 16, 2024 │ │ │ │ │ │ + 22 ETree : DRAFT February 18, 2025 │ │ │ │ │ │ 6. testExpand msglvl msgFile inETreeFile inEqmapFile outETreeFile │ │ │ │ │ │ This driver program is used to translate an ETree object for a compressed graph into an │ │ │ │ │ │ ETree object for the unit weight graph. │ │ │ │ │ │ • The msglvl parameter determines the amount of output — taking msglvl >= 3 means │ │ │ │ │ │ the ETree object is written to the message file. │ │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ │ message file is stdout, otherwise a file is opened with append status to receive any output │ │ │ │ │ │ @@ -812,15 +812,15 @@ │ │ │ │ │ │ • TheinETreeFileparameteristheinputfilefortheETreeobject. It mustbeof theform │ │ │ │ │ │ *.etreefor*.etreeb. TheETreeobjectisreadfromthefileviatheETree readFromFile() │ │ │ │ │ │ method. │ │ │ │ │ │ • If labelflag = 1, the node ids are written on the nodes in the two plots. │ │ │ │ │ │ • Each node will have a circle with radius radius. │ │ │ │ │ │ • The firstEPSfile and secondEPSfile parameters is the output EPS file for the two │ │ │ │ │ │ plots. │ │ │ │ │ │ - ETree : DRAFT January 16, 2024 23 │ │ │ │ │ │ + ETree : DRAFT February 18, 2025 23 │ │ │ │ │ │ Figure 1.1: GRD7x7: Working storage for the forward sparse factorization of the nested dissection │ │ │ │ │ │ b │ │ │ │ │ │ ordering. On the left is the storage required to factor J and its update matrix. On the right is the │ │ │ │ │ │ storage required to factor J and all of its ancestors. Both plots have the same scale. │ │ │ │ │ │ 29 30 14 22 16 10 4 │ │ │ │ │ │ 23 15 11 3 │ │ │ │ │ │ 26 25 24 19 18 17 12 8 7 5 1 0 │ │ │ │ │ │ @@ -846,15 +846,15 @@ │ │ │ │ │ │ method. │ │ │ │ │ │ 9. testIO msglvl msgFile inFile outFile │ │ │ │ │ │ This driver program reads and writes ETree files, useful for converting formatted files to │ │ │ │ │ │ binary files and vice versa. One can also read in a ETree file and print out just the header │ │ │ │ │ │ information (see the ETree writeStats() method). │ │ │ │ │ │ • The msglvl parameter determines the amount of output — taking msglvl >= 3 means │ │ │ │ │ │ the ETree object is written to the message file. │ │ │ │ │ │ - 24 ETree : DRAFT January 16, 2024 │ │ │ │ │ │ + 24 ETree : DRAFT February 18, 2025 │ │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ │ message file is stdout, otherwise a file is opened with append status to receive any output │ │ │ │ │ │ data. │ │ │ │ │ │ • The inFile parameter is the input file for the ETree object. It must be of the form │ │ │ │ │ │ *.etreefor*.etreeb. TheETreeobjectisreadfromthefileviatheETree readFromFile() │ │ │ │ │ │ method. │ │ │ │ │ │ • The outFile parameter is the output file for the ETree object. If outFile is none then │ │ │ │ │ │ @@ -886,15 +886,15 @@ │ │ │ │ │ │ Thecutoff defines the multisector, 0 ≤ cutoff ≤ 1. If front J has a subtree metric based │ │ │ │ │ │ on forward operations that is greater than or equalt to cutoff times the total number │ │ │ │ │ │ of operations, then front J belongs to the multisector. │ │ │ │ │ │ 11. testMS msglvl msgFile inETreeFile outIVfile flag cutoff │ │ │ │ │ │ This program is used to extract a multisector from a front tree ETree object. It partitions the │ │ │ │ │ │ vertices into domains and a multisector, where each domain is a subtree of the elimination │ │ │ │ │ │ tree and the multisector is the rest of the vertices. The choice of the subtrees depends on │ │ │ │ │ │ - ETree : DRAFT January 16, 2024 25 │ │ │ │ │ │ + ETree : DRAFT February 18, 2025 25 │ │ │ │ │ │ the flag and cutoff parameters — it can be based on depth of a subtree or the number of │ │ │ │ │ │ vertices, factor entries or factor operations associated with the subtree. The component ids │ │ │ │ │ │ IV object is optionally written to a file. Here is some sample output for BCSSTK30 ordered by │ │ │ │ │ │ nested dissection, where the multisector is defined by subtree vertex weight (flag = 2) with │ │ │ │ │ │ cutoff = 0.125. │ │ │ │ │ │ region vertices entries operations metric/(avg domain) │ │ │ │ │ │ 0 1671 597058 255691396 0.797 2.201 3.967 │ │ │ │ │ │ @@ -927,15 +927,15 @@ │ │ │ │ │ │ • TheinETreeFileparameteristheinputfilefortheETreeobject. It mustbeof theform │ │ │ │ │ │ *.etreefor*.etreeb. TheETreeobjectisreadfromthefileviatheETree readFromFile() │ │ │ │ │ │ method. │ │ │ │ │ │ • The outIVFile parameter is the output file for the IV object. If outIVFile is none │ │ │ │ │ │ then the IV object is not written to a file. Otherwise, the IV writeToFile() method is │ │ │ │ │ │ called to write the object to a formatted file (if outIVFile is of the form *.ivf), or a │ │ │ │ │ │ binary file (if outIVFile is of the form *.ivb). │ │ │ │ │ │ - 26 ETree : DRAFT January 16, 2024 │ │ │ │ │ │ + 26 ETree : DRAFT February 18, 2025 │ │ │ │ │ │ • The flag parameter specifies the type of multisector. │ │ │ │ │ │ – flag == 1 — the multisector is based on the depth of the front, i.e., if the front is │ │ │ │ │ │ more than depth steps removed from the root, it forms the root of a domain. │ │ │ │ │ │ – flag == 2 — the multisector is based on the number of vertices in a subtree, i.e., │ │ │ │ │ │ if the subtree rooted at a front contains more than cutoff times the total number │ │ │ │ │ │ of vertices, it is a domain. │ │ │ │ │ │ – flag == 3 — the multisector is based on the number of factor entries in a subtree, │ │ │ │ │ │ @@ -967,15 +967,15 @@ │ │ │ │ │ │ data. │ │ │ │ │ │ • TheinETreeFileparameteristheinputfilefortheETreeobject. It mustbeof theform │ │ │ │ │ │ *.etreefor*.etreeb. TheETreeobjectisreadfromthefileviatheETree readFromFile() │ │ │ │ │ │ method. │ │ │ │ │ │ • TheinGraphFileparameteristheinputfilefortheGraphobject. It mustbeof theform │ │ │ │ │ │ *.graphfor*.graphb. TheGraphobjectisreadfromthefileviatheGraph readFromFile() │ │ │ │ │ │ method. │ │ │ │ │ │ - ETree : DRAFT January 16, 2024 27 │ │ │ │ │ │ + ETree : DRAFT February 18, 2025 27 │ │ │ │ │ │ • The outEPSfile parameter is the name of the EPS file to hold the tree. │ │ │ │ │ │ • The metricType parameter defines the type of metric to be illustrated. See above for │ │ │ │ │ │ values. │ │ │ │ │ │ • For information about the heightflag and coordflag parameters, see Section ??. │ │ │ │ │ │ • If labelflag = 1, the node ids are written on the nodes in the two plots. │ │ │ │ │ │ • The fontscale parameter is the font size when labels are drawn. │ │ │ │ │ │ 13. testStorage msglvl msgFile inETreeFile inGraphFile │ │ │ │ │ │ @@ -1007,21 +1007,21 @@ │ │ │ │ │ │ *.graphfor*.graphb. TheGraphobjectisreadfromthefileviatheGraph readFromFile() │ │ │ │ │ │ method. │ │ │ │ │ │ 14. testTransform msglvl msgFile inETreeFile inGraphFile │ │ │ │ │ │ outETreeFile maxzeros maxsize seed │ │ │ │ │ │ This driver program is used to transform a front tree ETree object into a (possibly) merged │ │ │ │ │ │ and (possibly) split front tree. Merging the front tree means combining fronts together that │ │ │ │ │ │ do not introduce more than maxzeros zero entries in a front. (See [?] and [?] for a description │ │ │ │ │ │ - 28 ETree : DRAFT January 16, 2024 │ │ │ │ │ │ + 28 ETree : DRAFT February 18, 2025 │ │ │ │ │ │ Figure 1.2: GRD7x7x7: Four tree plots for a 7×7×7 grid matrix ordered using nested dissection. │ │ │ │ │ │ The top left tree measure number of original matrix entries in a front. The top right tree measure │ │ │ │ │ │ numberoffactormatrixentries inafront. Thebottomlefttree measurenumberoffactor operations │ │ │ │ │ │ in a front for a forward looking factorization, e.g., forward sparse. The bottom right tree measure │ │ │ │ │ │ number of factor operations in a front for a backward looking factorization, e.g., general sparse. │ │ │ │ │ │ - ETree : DRAFT January 16, 2024 29 │ │ │ │ │ │ + ETree : DRAFT February 18, 2025 29 │ │ │ │ │ │ of this supernode amalgamation or relaxation.) Splitting a front means breaking a front up │ │ │ │ │ │ into a chain of smaller fronts; this allows more processors to work on the original front in │ │ │ │ │ │ a straightforward manner. The new front tree is optionally written to a file. Here is some │ │ │ │ │ │ output for the R3D13824 matrix using maxzeros = 1000 and maxsize = 64. │ │ │ │ │ │ CPU #fronts #indices #entries #ops │ │ │ │ │ │ original : 6001 326858 3459359 1981403337 │ │ │ │ │ │ merge one : 0.209 3477 158834 3497139 2000297117 │ │ │ │ │ │ @@ -1094,15 +1094,15 @@ │ │ │ │ │ │ ETree mergeFrontsAll(), 14 ETree spliceTwoEtrees(), 8 │ │ │ │ │ │ ETree mergeFrontsAny(), 14 ETree splitFronts(), 14 │ │ │ │ │ │ ETree mergeFrontsOne(), 14 ETree subtreeSubsetMap(), 15 │ │ │ │ │ │ ETree MFstackProfile(), 16 ETree transform(), 15 │ │ │ │ │ │ ETree msByDepth(), 11 ETree transform2(), 15 │ │ │ │ │ │ ETree msByNentCutoff(), 11 ETree tree(), 3 │ │ │ │ │ │ 30 │ │ │ │ │ │ - ETree : DRAFT January 16, 2024 31 │ │ │ │ │ │ + ETree : DRAFT February 18, 2025 31 │ │ │ │ │ │ ETree vtxToFront(), 4 │ │ │ │ │ │ ETree vtxToFrontIV(), 4 │ │ │ │ │ │ ETree wrapMap(), 15 │ │ │ │ │ │ ETree writeForHumanEye(), 18 │ │ │ │ │ │ ETree writeStats(), 18 │ │ │ │ │ │ ETree writeToBinaryFile(), 18 │ │ │ │ │ │ ETree writeToFile(), 17 │ │ │ ├── ./usr/share/doc/spooles-doc/Eigen.ps.gz │ │ │ │ ├── Eigen.ps │ │ │ │ │ @@ -7,15 +7,15 @@ │ │ │ │ │ %%BoundingBox: 0 0 612 792 │ │ │ │ │ %%DocumentFonts: CMR17 CMBX12 CMR12 CMR8 CMR6 CMR9 CMTT9 │ │ │ │ │ %%DocumentPaperSizes: Letter │ │ │ │ │ %%EndComments │ │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ │ %DVIPSCommandLine: dvips main -o Eigen.ps │ │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ │ -%DVIPSSource: TeX output 2024.01.16:2047 │ │ │ │ │ +%DVIPSSource: TeX output 2025.02.18:0318 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -2007,23 +2007,25 @@ │ │ │ │ │ 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 52 /four put │ │ │ │ │ -dup 54 /six put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ +dup 56 /eight put │ │ │ │ │ dup 65 /A put │ │ │ │ │ dup 66 /B put │ │ │ │ │ dup 67 /C put │ │ │ │ │ +dup 70 /F put │ │ │ │ │ dup 74 /J put │ │ │ │ │ dup 80 /P put │ │ │ │ │ dup 87 /W put │ │ │ │ │ dup 97 /a put │ │ │ │ │ +dup 98 /b put │ │ │ │ │ dup 99 /c put │ │ │ │ │ dup 101 /e put │ │ │ │ │ dup 102 /f put │ │ │ │ │ dup 103 /g put │ │ │ │ │ dup 104 /h put │ │ │ │ │ dup 105 /i put │ │ │ │ │ dup 107 /k put │ │ │ │ │ @@ -2214,185 +2216,197 @@ │ │ │ │ │ 82032FBD2FCB6E403D34B85ED4053A8CB619BDD4DE001F4C3007B1F317579651 │ │ │ │ │ E6D6662189CC2D95AB85D7473F65C5D7B4AC63B0FE928F3400035D5A9D443D0D │ │ │ │ │ F3532B99F3AC26CB25EA3CD64C341159061E02EFBC7C033C05CD919BBD827A6A │ │ │ │ │ BFCF3BD739E32E7FE909AEE068D50FAC33605FFF98C7D0115FB860178FD03DB9 │ │ │ │ │ 7985B78E0AC21F2EA065FA841F5928FB85163B2E2D8F850DC7EE313912C45C28 │ │ │ │ │ 2783F6762C67882EFEDDC7E7567F91C16B16FD8D5A1ABF35B5586307701B91AD │ │ │ │ │ 54984598F2AD46FEE3D68A2731BEAA754C8E730FE0E84952EF77930E4118F8D7 │ │ │ │ │ -2F3AD7547ECD7EB31108291A22BBC656F4D968DF891E4F87EF8FFE711A48FFD9 │ │ │ │ │ -94762E9918C42251D75772AC97BC15A4FF63D911D96AADA1CFAACE8D7001935C │ │ │ │ │ -9D7A0E6B35E1522780C2629D74057738FCE1BD41CD81D97BFD99D19FE03B2EFF │ │ │ │ │ -7B80B18DA5538D06A810DD315F31DE1331EDB82DAC760E6D8A855FCA3C8DD9E3 │ │ │ │ │ -61164D1386FCA2A0E7735AD69D7D9C6335F02064419B2296ADA17DC51A1E2195 │ │ │ │ │ -45FA3A158E075213ACD6607B07385F0D9F5F3C5C385624B43B10016D497FA569 │ │ │ │ │ -103C0A7CC701BF1558C587B15A8094D8E4524D74DC263BE9C5D1C96970A7324F │ │ │ │ │ -5514ED0576D79D5A7C8CC2859C832B0C5869166DA1DB8CAC589AC9EB48379CBB │ │ │ │ │ -33B840FDDADDDA5FFFC54678E901A33854A703C01C16945C99655BF1BEA74EDA │ │ │ │ │ -723B5FC176D9693ACA831C563CDB35C96C69575A510E33D5BB62701CDD2A759E │ │ │ │ │ -79C045541F511340C52E888907801E3548CEC3D2BC22BA40337B64A862929ECD │ │ │ │ │ -6D7C3F92B5C9AC4427AA6986DDB6A4A792F5FB6C969F50C5068CB2A5C9205191 │ │ │ │ │ -C19B22A4D9627E0304444D963FE2F3C6FE86818FF3A6B50130BCE2DF5DAE000D │ │ │ │ │ -658D411135E9DFB829BCF033FF4ABF1A3F3E6579537DB4D17EA4BF7F2F6ACA4D │ │ │ │ │ -6FA0858A09BDD229CF49A29030D280273CEACB3E72945F424D8AAF50E53187D0 │ │ │ │ │ -61786DA0263FE776D86CC33DF81D8C0325343665F9E6096EA072CD7F53C9FDA8 │ │ │ │ │ -74C647B762ABD1B70F4315247C13EAA98B41F80E9A3E62DC60C8FA85254E5239 │ │ │ │ │ -6F9D3EB9C81F9A4EB912388D4F56D56ECB4179475564C8665CDE38A211E518A0 │ │ │ │ │ -96C3577DF26ECCE018A8C4A547CA4D04E6CFF0CD0F5377FF9D64E584E0A506AB │ │ │ │ │ -C5E8D801F041938BF9F11DB1F8496A26D416A8CA3F96E6E43F149E720F43F1FB │ │ │ │ │ -041E107C8F4752AD70F2FDB90292F314F46D175AB7C9E67CB61C820B36431613 │ │ │ │ │ -D24E877E74EEBD37AF9B2A6D5A0B970F1619FDD5FA8EEA9C6040251136A79F29 │ │ │ │ │ -9900E9D3E27DE70055DED223484D7E8701F0B0AACE6B7C9A56C81A8FD69BE0C7 │ │ │ │ │ -1321229E636B6FC5239806C6A6A19A19B0A43F7E6AEACC7FEB7F6471770A94C8 │ │ │ │ │ -3B600E07999F7C108072A04D12BEEFC041719E567910DD7BD3C4237460E1B956 │ │ │ │ │ -D356557A7E149C9C13E30336771715BDE317074DDDDA96F1FA46796E75876647 │ │ │ │ │ -DB67F05D3AF2B4E6AF1F9282F35BD874A386A441E21582858C1E64E5D1D7454C │ │ │ │ │ -CADC57208A8BB7BCAAF1A4B91B9813CDC814D0558AF3D945EB5A3A6F151032C9 │ │ │ │ │ -75C802C88F09810AA73E89735A39DA656AB50A17BFD20DC2E635EB9AF2B2F231 │ │ │ │ │ -AA18D6C51D9DD3D3A6AC403E59449B472CE4AB1B18CCFF150244E173BD0B7664 │ │ │ │ │ -F98E14D6643108BB5903906E7F9CFB98D49B0794333C02BB4F162910DB9CCEDD │ │ │ │ │ -52DC26D72133AEF0BB93A6C66C9F70E8F09A20BD820980E7199BB192CFC97EBF │ │ │ │ │ -A64E98BD6CB08BCC83C8C99399A57AE2731E681E3735CB258C6F44AD0B10E3B3 │ │ │ │ │ -07B7FE769FE7E634AFEF21A2896D47DBB7B5539B130B9A19EC0C0F5961FD328D │ │ │ │ │ -A5993D8899581CFE9C2D6FD3633A361EC8AB040A8D352C233E05131B41AB26F9 │ │ │ │ │ -39C4ACD9B120F0AC1D5B5998266D76B99F81A346FE137BDB4BC8A2E8E4DF6613 │ │ │ │ │ -29FC27ADFDB99FE6A029CB5B874537A96E1DDEC91582EA4FB797CE7488380D09 │ │ │ │ │ -39B5D7E62FBAA11820A86747192D4D3A0C9AB026EED692B17D197D2D5E41F907 │ │ │ │ │ -B213D84A4B85E31646D988899EA86368D86A70696E5319A2448263D0B3EB3B74 │ │ │ │ │ -CCA1402ED89873B8C46091D4A2593617B21A7C5115762A85F7D6873F4DF2DB05 │ │ │ │ │ -E037C7C7C3FA4247DC30F665658AC47CE310C064F95504C55BC1926B32BCDE59 │ │ │ │ │ -9E133FCE4269129F3CC605461B41D2D03D36A19CE4807307C34F9CC8F2803D53 │ │ │ │ │ -517BEA2A7C8DA7FDD55CC8595E0694193DBF48D155CF38359FCD679AC8CC8DB6 │ │ │ │ │ -4C66A6B1D0E477513D07F24F9A14F74B39E9C88DC6D78FA372AB170C90C5FA0A │ │ │ │ │ -63E7CA97F05D859055338D56F15B26EE9DE35CEF3DD1B957980BF4CD53A3C894 │ │ │ │ │ -59B49AC0C200FB38A6568F1A4E9C46CE912CDBB050EABF8BBBEFEBB2FBF93DB5 │ │ │ │ │ -2AC57C610EC43CB56136C19C6DE0A62D2CF6338AEC5BEEDA8EE93BB9D1DBCD76 │ │ │ │ │ -441D71B66CF71D02DAE94B60903ED011B40E87D52B0B8E80AA448E5467D0DDD0 │ │ │ │ │ -227AE2EB09B898D79AC45BDCFD4049D33B0A6F8AE185810E466C0A7D64771A6A │ │ │ │ │ -45A7C2F8E68B510BA61281D68D09445C841BD9D57FC46FB3061E4445DD5B882E │ │ │ │ │ -63786A49878BB6457A2812D027647A1D29B28A45E03E4AA0F43E0CB1121A1636 │ │ │ │ │ -D202FF54108ECF647681840954A53102C0F31BD2F3E833627003B59B542E7980 │ │ │ │ │ -A6EF53ACA4AE99748F81913077197E2C347144E4975614ADCBE9EF101D34A9E8 │ │ │ │ │ -2B8CF42874F2E65A55F35DBDE777C5F784DB5CD00DD7D93ABFCC43C8C209D221 │ │ │ │ │ -C442C9978E4406C364C16A1129AAD114C58D1B228D484F59B1C16288774BB6C1 │ │ │ │ │ -DB0D4C915CD937F829BFBC18DE9304515EE907DDF735466C8125243592C67E93 │ │ │ │ │ -06D4F25F2502339C317CFCDFAED0F7A27167219E6CA74AF17A18CC8CA6B15D33 │ │ │ │ │ -BA9A92B8F9B164D275B1CA01CC77B9C668298569C32B0C69CA418BAE6814D701 │ │ │ │ │ -623500C87310885A89705FA7FA51746EE72E426A52629E96CC16FE05EF173FA1 │ │ │ │ │ -0F1DE2F5592F4ED45163D235858E2D94E5312477ECD2DE29BF26649EFB4CCE07 │ │ │ │ │ -6F6582F3DDD5A6AF93F1728EE2916604BEBC9E6E4F52E0C39D115D541AD20C26 │ │ │ │ │ -555B3FCB4DB2297F5070CAF9AF2DDF777FFF6A1A2543FFEA4265752D0FA41516 │ │ │ │ │ -FEC695DFEA41835A46BA083D0CFDF236B57172FC2B88A31E0E448AF445A9806C │ │ │ │ │ -F5D91AF464439B94B9C2D9895176F396B14CF785343448BE4396AF7BF304AD46 │ │ │ │ │ -A022C25E854D3EA659A6954D97B5EFA90DD0CB9C2405E0D17DF73BEECB6E0DAB │ │ │ │ │ -289721573616BB56D26C3A029C8F298ED9A05E7EF45860DC7361C499A4A43CFD │ │ │ │ │ -D4CEA09121E618074AA69CEA97D12C849CC0E996C45C890A5D7B784907C551C7 │ │ │ │ │ -AA0AB6A39E205D0EB9C28C9912A56246986089940151EC3586DDDAE12DD06CB2 │ │ │ │ │ -9BAEE19D458276506DCD64856547C9CDEECB471F7926D38AD4628868D491E541 │ │ │ │ │ -155F041714423392846E487BC30841060067918888099DB67CA555E2EE6ED1FE │ │ │ │ │ -9D40B32981249F397CE250174A661C77EED325ED1F6E8EA036820C6B4BD81F7D │ │ │ │ │ -73ACB9B46C9C901C74081573EBF50EFF9CB3554BAEFEC46779F55286023E9250 │ │ │ │ │ -143935C02292EE95A978C9B695B302DE2436CC0A60FE92F41FC37F188CA57341 │ │ │ │ │ -E4A8D6E63C73AEAA2C9F82D6B34E12438AD401E9EB724D0F0E6D4D9450589D60 │ │ │ │ │ -03A0750879297EC2710E3F20C119ADA2894DE9B0BF87A6B8C935ADD1680E0B32 │ │ │ │ │ -E96CCFC03E13376217B8C41DFD0C5553C2B9A3D0FBF9091A6D67ECF554826129 │ │ │ │ │ -472670F51A463D5BFE6ED6601DF8D494499BD8E9DCE309DED653AB8DC9791037 │ │ │ │ │ -2DD1F7D02FD09D3030C342B3911BBCBF462DA4E43A4126D86E7999A6E31C18BC │ │ │ │ │ -4CC268E1AB55FEA2AA4FB28C74752189A65F617502136B2CEE4161DFDDC09BDE │ │ │ │ │ -6630BEBC04C2A7957E5AD66B2E965AB72F8CA8BEF5FCA451F00ED83245B7B096 │ │ │ │ │ -0E910D008AA7C2BE97FEBA5ED2CD04B4E9B92683AFEDA0E2BA506F8087C1206D │ │ │ │ │ -F5E2B13400BE92E0005EC772E16B0689FEE526E49AD0F7B98B9D46DAC793283A │ │ │ │ │ -BF28E71F22335F498F935E24652244E86260AB095BF607ADDEB657088739955A │ │ │ │ │ -1C5A1C11BBA64DA013C8C7433FAC2D89B4FCA3A9D548BF443341E85F5D86D0F9 │ │ │ │ │ -6B0C18AD80EB4403434509BDD61A567101E3DECC7FF2C4CF23FC870B0EE14774 │ │ │ │ │ -A7550F89D3B7DB19B9639F444B4115EB9BB449C4E6F140F278CE8D18F9C06E07 │ │ │ │ │ -0F4076042171C7EFFDA2F794FEFB6A50BA94F72D3295F4389DB7BA90A836CEC8 │ │ │ │ │ -784498F227F4F8D575BC754ADC5D17FD73CAFD8E0F9DC48B6BB052F75FD43268 │ │ │ │ │ -A6CE2EE470F742BA135D6EBE506887D8FBB7CA53D983E675702B1B0A846223AD │ │ │ │ │ -40EE0159B4181BAB9785A0325AF638C6B27C645573F0D89418678494D5F52692 │ │ │ │ │ -7E66683E9281CDE6C8FC49140222E3CEA8428A272595A28AD87B7EF47108498C │ │ │ │ │ -8CFD4304820D46DDA94CC1A9AEB04ECADEA3355F55E8A3038177E2885BF2F7FF │ │ │ │ │ -7E80AC347597AF86374130E0E76787E831009B84AD49604A308D6C74A441F6EA │ │ │ │ │ -82F874DC7E0E85127A0B7CF14C3BCC57DF0E7E298874C7B6A6AD949F32E9BF41 │ │ │ │ │ -835AFBD8835848E239A7A1ACF851FA75E051E257373D99536A7849782EE08246 │ │ │ │ │ -F1C7C2F6CE09205772C90494A647172A03FC242115D2CEC122C171B7E025E296 │ │ │ │ │ -3E35EC13BB995E3DC984BC3F3E9D6ECCFD88A03C4F048DC06803E6044C6D7A46 │ │ │ │ │ -604AD41F093F07A4FD5C4A8452B324E99F34864EF0E7A1AE90CB36A8920C0686 │ │ │ │ │ -726A15909CCE93EDC4DA89609260FADD742D638D3D04A8F9F9A82480BCC114DD │ │ │ │ │ -9F3BC19ADEA42AE0AB37E667DB7D8CF1B9564D81209367075ACD9184790D16F3 │ │ │ │ │ -A5CD4845D60BC710C3C59C1F64F7BCEF93F391EF8912A1CFF59AF48A63F22AFF │ │ │ │ │ -AF7161664130F24A74C46E6ECCB447A44F0193F493D9F97CB3E4E30D0CA07612 │ │ │ │ │ -46A08E1A59638558EF072A4EDEB3703B142F2430D3D9CC185144F74B78548A7B │ │ │ │ │ -B00D506228E45F3A3F093D74A066F0A2E988FC20F1C28210A34CD9FD2561C6E0 │ │ │ │ │ -D57825F7126B4AB087CC6150F006320ECD3472DDECB4F70D8F0F22EA1B4DA7CC │ │ │ │ │ -C4165FB6195E9A46B7B0C9D6EAE0C0FED67D0799AFAD37869A6E9A4032DB3973 │ │ │ │ │ -0C69CF256A85E46CDD017D94E1CAA9CF04EAE2FF3A411A707EA51B65C0FD22EB │ │ │ │ │ -8EEC784DAFEEE5B2713FAEE6D779FD7D53B679E4FF730AB6C2277814EA635D71 │ │ │ │ │ -62E2A45680E9A2BB17355E386AD21D269510460701F8FD9740B402B7606D7F5D │ │ │ │ │ -0A4904C1357638803AA19E31F0175A268520D919C8D8EF35AD3CC45406AC2674 │ │ │ │ │ -4A2938F8D3B92F58318F32ACEB8F9115AB73FEC8BBA5A1BC3FA0DF447D5DF282 │ │ │ │ │ -06F0410A23ACDF46819FF74FF131B7A9F19B32C8AF6382194E833989ECA55195 │ │ │ │ │ -2FD35B769292B48547DC9A97F4E544365EB85646641A7E7819FFF1B81248A602 │ │ │ │ │ -A37F00C17FFE95899AC3976AF5F1627766BF418DC7CC47B60952B03DEEDF87FC │ │ │ │ │ -4EB418B17CB6CD21AEFD050482116E96AC2C803008FA8AE02FC71F9F5A752417 │ │ │ │ │ -8C5731149217C7D26CF7B4D9E21EC6832707B51EA42C0BCB5482ACA1499C2A73 │ │ │ │ │ -B3E219AF1D2D92C2E5A4B2E527E0AA63980A12F6FCED604E9590DFE57018BD3B │ │ │ │ │ -A0715E09C96CBDFAF87CD8EF4A51786A25FE06F07A794AF1436BA15F2B847452 │ │ │ │ │ -708B01CDACFA1221FB93EF1FD8C620940A48091BFF672FFD3F0ECA1F19E6C750 │ │ │ │ │ -73278AA39E17DA30193234CE3E68374804FF802CEA9FE5B82DD935820CDBC01F │ │ │ │ │ -9E14370E70EB2B38972DBC09E510F56E74B42054585ED915F48905841CC6D552 │ │ │ │ │ -40FC69C192D8E767F75FED27E04504D2BF59EFCCCE5BF34D9A4410E48C8A38BE │ │ │ │ │ -223B82F966EBDFDD98A69672F40785F3873C0528C583FB69B580C5D328E2D1BC │ │ │ │ │ -B66ABA959800724D52CDBC4D37B5AA77E03DB033E6CEB1AD9E5CA72966D88E56 │ │ │ │ │ -EF781FB8ACA1DD021BEFBC235A3352BFD28D121AF087C9970DF12866F7B09305 │ │ │ │ │ -EF57815018CFA9A68FC5D6F26DFEF8933C7F35C853891D0EC5BB3869314F371B │ │ │ │ │ -EF7763A5C5FE01182DE228BD8CD5365F2D90F4EAE829C36DEF7A131B5B5A51C1 │ │ │ │ │ -2B9645B50A3152F2105BBA6B4E723F5999D1201537B3ECA81989BB7A34912148 │ │ │ │ │ -693E6CE7B4A2D1722E6C8A5AE07B9AEE2CB65E136F7A6AEE3FF55AE3D943117D │ │ │ │ │ -238058608322B3806C5E3F764076AEA531962EC5DC5B081B65E04DD73BA79F9B │ │ │ │ │ -2011C274DA5AC0BD31530C5E9A0E75068740992FBD3F43631BBDCDA932A67933 │ │ │ │ │ -43A5CE906E60F9B929212FFDD4AF7EDCFA1EA2820F3272E1D17BE4CEEAFB3D82 │ │ │ │ │ -AA6E37A043C195A5ACF432361582B175FFCB29674B2FB45C7FECCD9C5E3037F4 │ │ │ │ │ -A3A2DF3686A33FB813DAFA84424D32E93D2067B6B9DC830ADB8581A3EF794590 │ │ │ │ │ -D7953E867DE7283C651E27A5A5F0EC415DD9679F94C11DF7E7CC42406E3F3BEA │ │ │ │ │ -9D696D4B0596D01BED18A98E619A8192D34D1861FA93501531520FE0B322FA09 │ │ │ │ │ -1D0105C2E3CCAA6EA96DF05589F1ADBD14BF72D68A8F3A4231D14F3B6C763301 │ │ │ │ │ -D85A705F8CD5700525515BD97424E6AEBE3C6B81E06D0551461E01AF0F5A46D5 │ │ │ │ │ -BBA4839CB7F4117D07A24C56056A802BC000732A8C05E656CE7BFBB1C3819232 │ │ │ │ │ -B9DD63CE8A8F7DEF874B913D75253455DA9A12CE31FB6401DA02A91B06ABD54E │ │ │ │ │ -02E023A6E78FBDBF9F588D9828009651487980E7F8F69FDF009D43F4883947AB │ │ │ │ │ -49C13A7CE0560525A8DA4C6B008EB84B97F3023A0F733E3FC83F279B76D2EB9F │ │ │ │ │ -92C73D345E422C7DECDC3447631E6DC719847B1E0ABA1525C95323EE65D6DB91 │ │ │ │ │ -5BEC2941A6B8FC599B129D0025D56B0FE3E88D967BA1DBD5812A0C6AC0C76903 │ │ │ │ │ -191BF99A3C8CEC0B8A56AC61E35EB65A3B3DEDA3C79C18A63379058B19CC7B9D │ │ │ │ │ -8F4D488653FDC234FEDA9F15DDB83925458C7124CB82C2502DDC9B19CD7E574A │ │ │ │ │ -A5BEA3DAC4E1E2C7082E6D5176A26F834C6DF83752DDF828349C0B2B235FF3FC │ │ │ │ │ -F8F496541A6731538D790523D58FE4F49E74458AFE461803ED3C9C4FFB4E9FC5 │ │ │ │ │ -537D290DED44291C0DFD2CA2E1891BD519CABF58E812AF7E24A969271B0BA6A6 │ │ │ │ │ -BE25D638689F1CA01A5EC35E04A84516CC9E54A23740269B6DA3A0121F567100 │ │ │ │ │ -CA76C3790C468C0F54DBFE04605F14403952C4130631F1987943914B3CBBD91C │ │ │ │ │ -80C2D7C269EADA9634E4A161E2C60FEAE9D581A8D61C5510D763ED8CA7258B50 │ │ │ │ │ -365BB3D924EDFAFCB58ADF4F8F13B6DBC48216E36DBE9209A095FCA613F3388A │ │ │ │ │ -EC61044E5B9EA96F46CE4F7E2A3A05182B3429349EE57A48873B2F6971319609 │ │ │ │ │ -D0DBA0C18FAB52651E30660C5D511B13961EF8D958DCCD2755B53F062A24B062 │ │ │ │ │ -E59B6135B88630965AC7B57C8242231CD965AE775BBC946ECA109FE2B29B3479 │ │ │ │ │ -72363D708B3DF35416692D7F63D8E60121F2FF5BB22B7A8104AB0055CFDAD980 │ │ │ │ │ -B9B5CB0DB89D4E2E9E3B36D58236049AE6CDB47CE70C07380395B835301ABC12 │ │ │ │ │ -73338FB303686821F1878D9CD59053CC87313EC206C22F960FE18132C7F3CA8E │ │ │ │ │ -58C097D4B938F34D8809486142AA490EE8808E958B064E5A5CA5CCE78086BDA2 │ │ │ │ │ -C3CEFE6CD1EBC5F1F69F1BB1343F2F6F40D988ED74605554D3B7E5859F3836E4 │ │ │ │ │ -771AF3DA8C255392F3D0C0CE28B19090CD48D96440DDE8D8AB83629CC8728F9D │ │ │ │ │ -04C767127CF5843F5486F8BFF363618BDF95413EA45FD65BD97D5CB15DC3134E │ │ │ │ │ -DF094D9E09E5A812617EC29715D4D135E8F2823A23A71BDA98E4AACFA4CFB377 │ │ │ │ │ -F1CD247A8AD3E2854D49B45F396CBF043FB1638FBCB052CD657DBD0F236D3301 │ │ │ │ │ -391DE9CE3FC1977E2313F1CD5B22BB662A1AAD06B9174736157B707106BD11E1 │ │ │ │ │ -353E2097E20E8C3767AA56357EDA2A1F7A7D0D8A6F8CD62DB31E3EFF4BA16042 │ │ │ │ │ -DAC232A1B449C036EA18F50F2A1BD82FD549D222AAE2378AC7D95A3337E002CD │ │ │ │ │ -9F802D084547BF8F03D5FF5AD068447AB63CEB7E001235269D30FFB338721E3A │ │ │ │ │ -B5F5A4DF2685004482F54A6C1298BF7EAD6D93A4A946864177ADE9205AE74A7E │ │ │ │ │ -878005047B915C93F81B829DF8BD76B6B410DBBA57D914220D20EA8515A2A9 │ │ │ │ │ +2F3AD7547C7083385FD3871F7D9D6AB0715C16A94E4064BAD18DE77DC47979ED │ │ │ │ │ +9ACBD9A9F110703EE62CB30935404C97B62408A2F6B8250BFC3E5BEF8D7B9424 │ │ │ │ │ +447E2145DFB3AA7C4D6665A67B4B1D771BE08109076CE86E7C4FF00B11C3750D │ │ │ │ │ +FDAD6EC03035CAE67CFE15E076F3005E035FDD653336D840574B6B04525D3FA1 │ │ │ │ │ +94630463A7A0A8200642283D1F10FA639022F74C4DDE6148069D909F3DA0A9D5 │ │ │ │ │ +93462CF91CA2CAB590EAF2310184A7866D593E5CEEE3E18CD95BADEFC0132F8A │ │ │ │ │ +A65AD5D3DE74250539F5CE66ECDD43CC7BB7CA82394752376DEBC71F860BE388 │ │ │ │ │ +EFA679BCE3CCACE2753F2D6E0E664F2EC078DCADC02A0358EB040A84E62C7334 │ │ │ │ │ +4205A796FE3B45DA1473F334D7B1F23B9C9FEA91AD3805BF4499CDB6790D84ED │ │ │ │ │ +9BC544829DC4B1ABD23F75A3823CA2B822E174659432CA5E4CBA59E6C2B1B312 │ │ │ │ │ +F675D5D68DAD6C1C9A9D92D41C28C8DB9532C89B689F6E1800FE946E4881A8A1 │ │ │ │ │ +F3923680FC9E9F1B2E0B69A5D608CB47181110FFE733E55494200F328DE47AAC │ │ │ │ │ +09E16DB5B2136E07E7F80C4235848AE8C2AADA5E78120A759C28583A386032ED │ │ │ │ │ +AC2B00BC90D22FFDAFF70DD031C649C52F0BC1444DFDC712742F52F7E59EBC9B │ │ │ │ │ +BE5E7CB184EA233D08DDBCB12F26FB0CEFBCDAD03FE844DE2E81B2994A0E082F │ │ │ │ │ +B66F9485940B6610E19624F236A567E5E4E7B6151592560305F5476DB1E8B9D9 │ │ │ │ │ +0C73675FED457770AB0AF092D834764757403C4AD653AAAFBB9075C7C7A3A8D6 │ │ │ │ │ +2D993EB4295772265D5388692E2280DD50595BDC1F2FC0D687D78B0E0DC83B0E │ │ │ │ │ +F0D98A3D077906829248F04E0CA4369D5CE37222CC4C21ED0F6FBAD950EB448D │ │ │ │ │ +F2CABA8C9412DB44BA9B0D60F2C69F0B2C5FCBE6E559E4AF882E9601F58C8DAE │ │ │ │ │ +372C30DF59935B4BFCF5E850A939A0D8C48514F18430F63C9B7721244193912A │ │ │ │ │ +28EEAE7B6B1C54ED2569747205D2B5BB4FC7177DACC87522A4F6BEC44E5F2A81 │ │ │ │ │ +475F00ABC00A5EAD27EA4A545EB9B01C0F83D77EB89750D21A34F2CD4ADBA1FC │ │ │ │ │ +F973D527DF43951DF19C3F087C9FC44CF3539BD2B6576FE216D10951A16B4F3F │ │ │ │ │ +BF900794ECC52AB1D039C7D366DC86029F4C140BE331A8B2465EEA6A75217534 │ │ │ │ │ +843ED40860DF69BFB62A280CB4D600A3572F74B1D27C25684C3B28B9D990C50B │ │ │ │ │ +8C5D672416DD46DF230BC81847AEDAC2802670F0B36CA027F167C8987ED00607 │ │ │ │ │ +05FFC0655BC8A5F7B03968F03DC8BDB628C9814F46B8D9D9F2E9E5F4ECD1DD42 │ │ │ │ │ +A61A43C86E86F881DFFB201846B5EB057114A306D799BC3F42C6D811C80A93B5 │ │ │ │ │ +4359690974F9E3F67E8F2BB4A820BDA15BFFB833AD090E1958516F409AFD6623 │ │ │ │ │ +120E87D02189ED2B896EB7BE5EA0DFF2A13D7BB6A37006BB78A9817707FA2534 │ │ │ │ │ +24A5B8ED9D9CDD7DB77B06461ADBD43E37D07CEB478FCFF51FC29888D3B3F340 │ │ │ │ │ +44BE1B967A4768EF2C7996C66E62BC651832498E6322A038DFCB1400B6023555 │ │ │ │ │ +A38574052F39870983B1C5FD2254AE0BDABA9D965BA40F8FE4FE49C12C64696F │ │ │ │ │ +1BB572C97FAC2D547BA8A091D683DB96B80E318D16DADBD6E050AD4B8E5B523D │ │ │ │ │ +B37108145A8F8A39FFEDD17B450DD83CA98AB310D24411A8A88DF7106FFC8AB5 │ │ │ │ │ +2716AD34903A3BCE2E712BD9D7FFA055F796D7B479A1F8C8AD3BDD0ECDF456A7 │ │ │ │ │ +AD3DD48B7A98447A56BB528D6F1608ABD57E5A6E9941A9D64DF48AE00C30F4E8 │ │ │ │ │ +71045DC79EFEA6C93A892AADEC14CCA8F8FE2BD12381085A5B9FA2758F628460 │ │ │ │ │ +4C145EC1D4C269708A5091602C5890BBC16B870BF82D1CE9088BF6CA50D7F03C │ │ │ │ │ +339ECF3B33BFCFBBB6E768D90FCC2D6B8A50CABD2F780F95D95A64FF0CD8E752 │ │ │ │ │ +C9C3A36799368B286EE339A08AD7F1F0458A324A7781E3858D2FD803C698DDB0 │ │ │ │ │ +2FB754BE4ACD610F5168D3189061A61EB8129447887EBEEB1DA857F4AD361B89 │ │ │ │ │ +F4512E789C80BEDC4488E0D03DC8ACECD03F9065616C721D055CB81BEDC785BC │ │ │ │ │ +7F39546F933D6F280DFE73BAA39F546E5EC721492AE7C3162A506C0860BFB7F7 │ │ │ │ │ +95A333450191448915451F7D27002A2EDE18C7BB606D34A1C88BFE130E5D4771 │ │ │ │ │ +B5EE1B5DDECD7AA762E64FC0AA67F002139380FF494BC2F3EE7C2D44CBDE219F │ │ │ │ │ +7C1D20FDDA8E8F31AC317C5B7907E35DC314B9EA61F2DF80944CE36DA5906F73 │ │ │ │ │ +67BF68496949B511BDADD36C59A8E51F3310293AF1C6E398E873D50B7C54891E │ │ │ │ │ +1B332F949C6A37874F89DF916983A9F057801BBC1B5CC11EA1637CD54815BBEB │ │ │ │ │ +96D0CAB1EF04CB9F30570D59629EEDF0AFE13F183FB2A3B4D3410496D2442B0D │ │ │ │ │ +3E926306618CE445CB0C02644D57E8D90BF250A6B6E9619F22290C3A60FD0143 │ │ │ │ │ +41F4776CA33B8AF696AF7069A2AB58143843317E6D0A5DB4E713F3850CE03CD3 │ │ │ │ │ +4F15C2A463A65BAF13C075ACD45F8DD3F5B96119E9676F3F5F2C74B81EEA1711 │ │ │ │ │ +9245315B51D5D09EDA89EE884F8FB3D825A7EB50C4B5FD8EC8DD3A0D33E7D659 │ │ │ │ │ +F4F6AC907B3CD8DC5E8D8571106244839650888C92025344ABC543F63C56664C │ │ │ │ │ +4B65D5FB21CDB54F76CB7FE401E79D6FC576A83D26FD8D7C552C5FB5E8480136 │ │ │ │ │ +7A6540FC2202E72F00C6D8D5B76BB8C452C654B2712E5DAA6E433206B95D06A7 │ │ │ │ │ +7CEFEBD4D76DDB0F929B6761793853044DA0B641961B887EB5BB307157C90F92 │ │ │ │ │ +60482CF1C3C4C2E8BBDAEBD52CB6E374F4D17B1770BDB701869E80A8383AE4C0 │ │ │ │ │ +3F6A2614D091CDB765BFBE420A2EB66FB7DF3E16A2503ECBA900131C4DDEDF83 │ │ │ │ │ +418F333DA812912FA5DE19006CBD064B9D68D41C67966D3DB3438CE8E3244E5C │ │ │ │ │ +C893BEAB5285BB4DC8AA467573E90CC14CA09B2F9CDB3B3788B42C72CBC5B522 │ │ │ │ │ +95EA00091F912221A13AFA5C5EB5792CFAD9128BCC8540E0A1EA3A97BB2A82A5 │ │ │ │ │ +AC383ACCC10FE205CAF1F2E80F234938ED1A21CBEC6E31D13BDBEEB2EAAA3820 │ │ │ │ │ +5BA6C0A1740DC71E5BEFBE2A24E4C9EF2C4A4CC8799BEC621EB156F8F90FF6E9 │ │ │ │ │ +8ABBC206E08EB209F5E9D18C493A5EAE87623DEEB059CE5A64C046EDD9503F35 │ │ │ │ │ +281E626B5486867EC9E5B0AFBCB178021ECCCD9783F8FA8BAB175F86CB18F720 │ │ │ │ │ +C4DBBA5FC3E153E44818BC4002B1E3FA99D7745C8C77069D42D13DA71563097E │ │ │ │ │ +6641F49849A01B684CF0B9EAA7F169B55059E1A5E0257FB3299DD21146C3D97D │ │ │ │ │ +96E4A853C7DDD782DCBB100A30F65D5A0F80FF3CAA245899CDBEB5CAFCD14F87 │ │ │ │ │ +1356F0ABC78508B5E6D62BE0DD5DD18464CF89892FBAE3CC86E8B493367C1B17 │ │ │ │ │ +7E2D7C5931098630E9E8BFD18BD7A0F110411FBD3C9B15E986223990ADAE6EC5 │ │ │ │ │ +0E37ACD5D35C76597E3F2FB64BDA5C17F8D6C6A1CAC02FCF5A23CD872C10C55B │ │ │ │ │ +6C60D20CB7A7003FA44562B554A96343C51C02872BA732049C0DF5EDECA2E330 │ │ │ │ │ +02D2451B4333B45CC9447C5FAC1C9D77FFD91A4076F8ED3027D7569D4741A6BC │ │ │ │ │ +0A21C94C2B6BB7DFC820B6D2DC7C080B463A40A0483D7C207025AAE21C053A12 │ │ │ │ │ +45EDF181A135E58A9B2C1CD3BA572440A80F40113E9B1D4294F4852A094C1D3A │ │ │ │ │ +1CA0586D9C4A2712C907BE298BA85D051B6175BBA2B78C09191874D5E8901B31 │ │ │ │ │ +7CE897E1204FD9CCBF299FC013C03D8ECAA79C6CD46FBC854B3FF3160FD5796E │ │ │ │ │ +3C1685F37533668556BD181B083662F31FCF248FBD052DA442AB0AE16DD89ACC │ │ │ │ │ +C6B2C03712B18FA4A5124C5ADCF8F1B38B6A46C7AC7F1614EDE8EA57592ECBF9 │ │ │ │ │ +80681ABEF9C4182612C5EA5E4631D3D35063D175994602D3491776B0CA6FED09 │ │ │ │ │ +47849E29D4F9F1B1641ED834AB1CACBBA76A6201AB47ACF01C39983311761555 │ │ │ │ │ +B391340E1B865E62F3C38B888837AB0B60430D35F1F4CAA2091F08D0EFD98CF8 │ │ │ │ │ +06DF9072356F9240D914CC6F84F143C2D23DF86AD7E734C33F170CEE768BA5B6 │ │ │ │ │ +BD74EC6099857F5C8599DE9491F740281BAD9E86613A78AE0A88F97CE3D6AC63 │ │ │ │ │ +4A5C9C14C0DB0596A69ECD0D205E9EEEB4727F0477818F923D6CD18D94CBE9C0 │ │ │ │ │ +EB7BE1E8B67CF2FBBFD7520680B7515C54BB1963494E3FE4A7D08559220DBB0A │ │ │ │ │ +8A551DFCD504482C0BE17E4034E173A4D78CA7D1AE37F0557CD847704791EBB1 │ │ │ │ │ +7851E2403255CEDAF62E5D59AD26553BF3A20364A95C9CB6B997E5D9C26B39A1 │ │ │ │ │ +D50CDAD1A93D44C68140473E3CB035816498F5AB3646147BD9974CD4470A2CDA │ │ │ │ │ +1944AA6CA5E1298251FFF313166DF3AD42BCA17D6F4237B23C59DACE14AAC0E4 │ │ │ │ │ +94203F15C11744763FA2C085A5D2831E9EB099B4FB10DC89192279D8F8B70AB4 │ │ │ │ │ +4CEC90AF82C7D6C847BFE62EA9679D06977B069E8A7A994D6095C660297DCC28 │ │ │ │ │ +8E51F67A14B5B2C6555D6CFAEECEBCF73D3A518D35278D67918419FD5CA32FBC │ │ │ │ │ +39AE2426BD0E3911ED3597A4631FE1CB0108770AA20E24763724E1129BA3D7BA │ │ │ │ │ +BB3C75ABC66534E1F781359EF0CD5758853F1FDEB15B0D93BEC48C354FCC8CC9 │ │ │ │ │ +216CDD21E396CA86DE082982D5E437F9F9F45FB54488C64F3117006C465B9507 │ │ │ │ │ +584E61F2787CB17EDB8C925D04801BB54836EDA2282C65FDF0EF6344C95E9225 │ │ │ │ │ +1A9EDC8CADB27EA7E078E2F8FA8F8B491328478A6020A9E5589A79DF699017E0 │ │ │ │ │ +EA9EED7FF32D2B894FF4AEF6608B85098C47D2B75ABFACDD10FF40E2E4F5EF68 │ │ │ │ │ +21FCC4FB01C255AA9AF2FD75971234251AF56D80E9E71F83D27A09935E688B0B │ │ │ │ │ +0B2D6C5E1CA00EFC52507B0C7479745FED2EF561375ED69DFAB448A108F376CB │ │ │ │ │ +30E989A3AAFF7D210415B7674B1FA2F047A280FEA148AF71687562F83EB1B038 │ │ │ │ │ +48238B98847AC3EE015CBBACCEC90244AA51FF8939F45C1D0190CEECD18DFC57 │ │ │ │ │ +16EC63D2EA1E0100814126848F07489777AAE401C4A14D07AF5E167C60A123BC │ │ │ │ │ +E7874BF04846DC5559D4624BD1799CB4B8F4D714483E973C9529B29FDCFE8B37 │ │ │ │ │ +CDBB0D8DCBEAD7D28E6119F730821706559B4289BF7FE6E2F2BB6485921CECE0 │ │ │ │ │ +83C09D63951B846D5AE6FBCBB1D1CF757618EFF96FB36D246478AB8A93B8703F │ │ │ │ │ +648BF616D0CB66A0F0266D6CCA8C260E95BA0F149A8BB6EBB0684B510D5AACAA │ │ │ │ │ +FFC55E8245716148FCE0C07AB661338BE785A68145574C02C954164CF585FC4F │ │ │ │ │ +FC5B5934DF1D0D1677FCC0EC7DEFBA1241B0840D68E06FDA1B855B4A8FD23B18 │ │ │ │ │ +1AEC7582DC0C0543C852A9F1CA0E51F88C7AF99486B76B20B65568186886046E │ │ │ │ │ +AAAB2AC0739A3DCC7EB1EDE2EFD82FD85EDABB20F4E52F33A5B9ECE118901479 │ │ │ │ │ +C167A0E5CE18889C4CEC4D7E1A8DE30D2FC7CA47536A69E695623BCA26719421 │ │ │ │ │ +6AE4DD146D9B4152061C0695139ED7592969D16501F311D3CD86D01A6086FC14 │ │ │ │ │ +155549F64C8EBEB53449F26E78EB7F61DAB47EEFFBCE9648F1414A9D35251FA3 │ │ │ │ │ +5CFDA233A04BE643C99A07993E8AD6FB10846AE7ECDB2C4E535B147524593DF0 │ │ │ │ │ +3AB8B0FA5C2651B21F2E4708D1F01D6A51870622FC778D89B95D5EF0570C5882 │ │ │ │ │ +0181E0877FE668D5F7EDD2DF42B48686F856BC8A4AF1E3DBD7DA2ADE287E7EB9 │ │ │ │ │ +64670CF9F3E6A441D5D747B35E35B03DA5E83B6F9982D892B81A616D5FD6A203 │ │ │ │ │ +FB59FA6DF959F2DCA1D1D09814B40C2460EF8A47AEF1BB5EB0A4550E0B0F1C42 │ │ │ │ │ +3E1C49999223461FD6DB5FB7A5AAD963F49D4BD84EE4A69CB97F313BD8641793 │ │ │ │ │ +1957D07DB970244B46E3DCCFD6375BD3AFBE1A66C1767537E3BB05AF854C41C3 │ │ │ │ │ +77005C2B04A2346CA2F55DBC2ECB9BD721CAF2A2AB3DB860D1F7280B4AD6A755 │ │ │ │ │ +11A69D8FEFACA8F433F4EE5C507E41CEC3DF1F0D4B21DC320556A2C1BB7D0185 │ │ │ │ │ +0BF1B7CC5EA988A2944C7F668E6BC476B86F81EA61C64038C9A0D4206522CC2F │ │ │ │ │ +D4FDF73C1060DF1152E883136CD530BBC89D3D628A88BB2002D75CAD213B084B │ │ │ │ │ +586DEE2B6B4FC4443BC082D25E9872647F03E6430FDC5BA375BD23D0DF3984E7 │ │ │ │ │ +9F3E4D7D55D410C59529E3A3DBE615FCC750C39547E08E0B7D630A6BB0B8455F │ │ │ │ │ +136494164214681BA2B05D4210BA2939B79252F12B68F5947E979200714D031B │ │ │ │ │ +ADC9F19A72207813187643BF3228E126CDB3F29244F8EDEC9B1F2F3B5AF4C5D1 │ │ │ │ │ +EBC3F653BBBEEE763ED373908B0CB2AA12192960800C721133545BE54E2440F5 │ │ │ │ │ +0E8EFE6E1E9D9318329C1DA1ADF800F94B89BBB5463993B8226A1CA41789FF72 │ │ │ │ │ +34CCE462E3C121F4AE35D08145FCB2B859923C6A1DB6BE998996F82EE1E46F08 │ │ │ │ │ +6E718A45304AD1C3A1B770D34172E5040569989A44418C11A86C1A517F8672E7 │ │ │ │ │ +FAC2BD236278BAFCF93A0C17C804890D29FA9BA3BE48F277D7CFA2AE035F27B2 │ │ │ │ │ +0EFA79D75888A1F4ED9295F4216836C4806BCBCE6466DC9A9C0A54C77348F453 │ │ │ │ │ +94D88D859FD178D8464780E012E2E63B1EC91245CE60F1614384642A7245F23C │ │ │ │ │ +5F3FA202F1E6ED19ADDF550B49C0865C0DC4CEC602FAA69C4617E94684BEA603 │ │ │ │ │ +ECF06302539F68387AD01C81CB76013337FEF44E10B3986D89258269353D06BE │ │ │ │ │ +D384A7F1DA8B2F1330E525709CBC652C38EAC18D46B2321931336722FAA92CFF │ │ │ │ │ +62C66341C87ADCC454196E255BDB12779C8ACE51DDE15F96018DAFFA70A726D3 │ │ │ │ │ +6F198AD3956C2EE4D50EB23D2A91FCB714B39CA98416EE8C3B265223A7E2ED5D │ │ │ │ │ +EF0B8EF429DF730BD53C0F7D88789A99683C4C352BAD30177F23FDF53640FB94 │ │ │ │ │ +194CD38BB1A74E96E0B1D7BD2346D562F3C9F16A4797538092F3F4E285468704 │ │ │ │ │ +3B304695C672F12F1F21B553A9CE0613F065EB75B1D22F68706617C59CC416C7 │ │ │ │ │ +9FDCDBD8D62DD9D67F60706752E16B3502EB71A7B548C7754A38FC27F61B0A5B │ │ │ │ │ +2355227FE051F63A3672FB97F52FD94F571CF0D93EB39651BB99707C012B559F │ │ │ │ │ +6C33771FE068956A95FAA743CE79AB27473800187A3E303C47E113EF5F0C5F40 │ │ │ │ │ +A026D3862C78D06578D778025B046EE08E8CD539403C7F18F54B5A57AD60A7DA │ │ │ │ │ +4B59312A3D33787CBFEB06CC6AB33F9389535D288E6B94E602481654E5372BE4 │ │ │ │ │ +C7C741B325743A57F0B483E9FAB1C07B2349C206581F5D457A5B1BC1B95AB0D1 │ │ │ │ │ +436654A403A7E2CA1A1D683F7C228647060F6F43C9308700FFEE056A76954515 │ │ │ │ │ +E9B03267C33DC1DDEBCA349805EFB70B467DD584B3901E57590F81BD7B775FB6 │ │ │ │ │ +D96F04513F56EADF2F46B6D914A5846C8D60075F50DDC08B0EC981EA49A0EB33 │ │ │ │ │ +EC9CC86AB5B9A18602902C3E167E2A5E582F9D74B5990CB5CFB7DA03F5683E8D │ │ │ │ │ +56E0910FA63280A663E1B39865ABA4B54E91376266AF987C1D648CBF38F0914D │ │ │ │ │ +1CB141F9A1FB7D44FCB548EEB8C398C72B01C411636B90075B524A61409240AC │ │ │ │ │ +470CC74ACD7D8E9BFDECCA2BADB633C0C529723AC9F0A40561227FC8960A57CD │ │ │ │ │ +52DA0C23EAA495EFB5F5BE2A04D6665AB1D9917268384F8102DD51A8554942C1 │ │ │ │ │ +2482265FFBBE1C780C2BC46D3D72DBF4A03624A80586FFF14BA78C9924894790 │ │ │ │ │ +D057BADED8C953B4D1395BCAE828C10C12B33328EC7D58DCBEBEAAB59C067ADF │ │ │ │ │ +1503D9DBE4605F77DACF2EB1D089846C29214198F3A6ABAEBD31F38906C920C4 │ │ │ │ │ +ACC594BDE1321B933E2BBE820D4FD7893E844D47D37C0737E7A21738CD9CC41A │ │ │ │ │ +B4CDD259DBF27C852C97CEE1639C9C77A995E348F8CA8CAC5645517E6F650FF9 │ │ │ │ │ +8CD27803C5CD04E1608297E80E74FB78E15FAEC737C03BE98A5B5E345BF94815 │ │ │ │ │ +BC4EC850068B57ECE8070D9B3F09A0040DE1A0678F1BD24F2392F5AFFC7A11B0 │ │ │ │ │ +2A430B8E75D115523EC9054BD6341B53537DDB5988A1D60D1DDA702E7506FDE3 │ │ │ │ │ +917B4BE6136F997776CE84E14E50E6818E96C189E8191AF9B8F432BBED6847FD │ │ │ │ │ +8EA3F22B6E20C14185D12015898BB5A9C4A610355E682FD60C10E69863CEB9CC │ │ │ │ │ +11331B609370E091266A0A7E8A0C27CC33F093D69199944564480EE994DDB84C │ │ │ │ │ +DC2009B07B96C24D23E1FC503C2D68D140F311883CC05001030720B049317AC5 │ │ │ │ │ +61729378BD7E8EE916674809C600CCA1114E5A374EFDCC9188C260513B63E1BE │ │ │ │ │ +A43FAD62EA9B722BC44D02F31CBAD67FC1DD5DA7B52A9E1C8D3AAF0A40323072 │ │ │ │ │ +30AC6F5BD7D073131567D234C5347A0A4EC52C298A3E753E50413EA1328458A1 │ │ │ │ │ +26FF3DB7C3BF414973622F2FBD2DF76093392544F17D126C434A47A49BB86068 │ │ │ │ │ +FA479A4E66243D609277B232B1F7C26C7AC447DAC16641AB9B2EEAECA4EDD19B │ │ │ │ │ +89BF8A49EAF2023E33BAA67EB4A34D1B97F2116722E8DF456FBF84BED1C248DE │ │ │ │ │ +61AC737FEA00A9857B93A46B3BC6141FE1A56C338EDA94D45E1A4EC79D384F7A │ │ │ │ │ +9EE5BA151A84128C96675955E789D36F32D2AFC003C3AF126EFBC7C05ED257F7 │ │ │ │ │ +9F8D6FD6927AADDB9F9B81DA787AF38743C5 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -3103,17 +3117,17 @@ │ │ │ │ │ 39 39 39 39 39 39 39 39 32[39 17[39 46[{}21 74.7198 /CMTT9 │ │ │ │ │ rf /Fb 133[34 41 41 55 41 43 30 30 30 1[43 38 43 64 21 │ │ │ │ │ 2[21 43 38 23 34 43 34 43 38 9[79 2[55 43 57 1[52 60 │ │ │ │ │ 1[70 48 2[28 58 3[59 55 54 58 7[38 38 38 38 38 38 38 │ │ │ │ │ 38 38 38 1[21 26 21 44[{}50 74.7198 /CMR9 rf /Fc 205[30 │ │ │ │ │ 30 49[{}2 49.8132 /CMR6 rf /Fd 205[35 35 49[{}2 66.4176 │ │ │ │ │ /CMR8 rf /Fe 134[51 2[51 54 38 38 38 2[49 54 81 27 51 │ │ │ │ │ -1[27 54 49 30 43 1[43 1[49 9[100 6[66 5[50 6[70 69 73 │ │ │ │ │ -10[49 1[49 1[49 49 49 3[27 44[{}30 99.6264 /CMR12 rf │ │ │ │ │ -/Ff 165[99 6[90 2[110 121 126 1[97 6[106 1[117 1[122 │ │ │ │ │ +1[27 54 49 30 43 1[43 54 49 9[100 6[66 5[50 3[64 2[70 │ │ │ │ │ +69 73 8[49 2[49 2[49 49 49 3[27 44[{}32 99.6264 /CMR12 │ │ │ │ │ +rf /Ff 165[99 6[90 2[110 121 126 1[97 6[106 1[117 1[122 │ │ │ │ │ 65[{}9 143.462 /CMBX12 rf /Fg 133[58 70 2[70 1[51 52 │ │ │ │ │ 51 1[73 66 73 1[36 70 1[36 73 66 40 58 73 58 73 66 13[73 │ │ │ │ │ 6[83 2[47 3[90 2[94 99 14[66 3[36 43 45[{}29 143.462 │ │ │ │ │ /CMR17 rf end │ │ │ │ │ %%EndProlog │ │ │ │ │ %%BeginSetup │ │ │ │ │ %%Feature: *Resolution 600dpi │ │ │ │ │ @@ -3123,22 +3137,22 @@ │ │ │ │ │ { pop << /PageSize [612 792] >> setpagedevice } │ │ │ │ │ { /letter where { pop letter } if } │ │ │ │ │ ifelse │ │ │ │ │ %%EndPaperSize │ │ │ │ │ end │ │ │ │ │ %%EndSetup │ │ │ │ │ %%Page: 1 1 │ │ │ │ │ -TeXDict begin 1 0 bop 109 1941 a Fg(In)l(tegrating)43 │ │ │ │ │ +TeXDict begin 1 0 bop 109 1940 a Fg(In)l(tegrating)43 │ │ │ │ │ b(the)g Ff(SPOOLES)h Fg(2.2)e(Sparse)i(Linear)f(Algebra)g(Library)326 │ │ │ │ │ 2123 y(in)l(to)g(the)h Ff(LANCZOS)e Fg(Blo)t(c)l(k-shifted)h(Lanczos)g │ │ │ │ │ (Eigensolv)l(er)950 2513 y Fe(Clev)m(e)35 b(Ashcraft)737 │ │ │ │ │ -2630 y(Bo)s(eing)d(Phan)m(tom)i(W)-8 b(orks)1753 2593 │ │ │ │ │ -y Fd(1)2334 2513 y Fe(Jim)33 b(P)m(atterson)2107 2630 │ │ │ │ │ -y(Bo)s(eing)f(Phan)m(tom)i(W)-8 b(orks)3123 2593 y Fd(2)1586 │ │ │ │ │ -2890 y Fe(Jan)m(uary)34 b(16,)e(2024)104 4919 y Fc(1)138 │ │ │ │ │ +2629 y(Bo)s(eing)d(Phan)m(tom)i(W)-8 b(orks)1753 2593 │ │ │ │ │ +y Fd(1)2334 2513 y Fe(Jim)33 b(P)m(atterson)2107 2629 │ │ │ │ │ +y(Bo)s(eing)f(Phan)m(tom)i(W)-8 b(orks)3123 2593 y Fd(2)1566 │ │ │ │ │ +2891 y Fe(F)g(ebruary)33 b(18,)f(2025)104 4919 y Fc(1)138 │ │ │ │ │ 4951 y Fb(P)-6 b(.)36 b(O.)g(Bo)n(x)g(24346,)41 b(Mail)c(Stop)e(7L-22,) │ │ │ │ │ 40 b(Seattle,)f(W)-6 b(ashington)36 b(98124,)k Fa │ │ │ │ │ (cleve.ashcraft@boeing.com)p Fb(.)71 b(This)36 b(researc)n(h)0 │ │ │ │ │ 5042 y(w)n(as)f(supp)r(orted)e(in)h(part)g(b)n(y)f(the)h(D)n(ARP)-6 │ │ │ │ │ b(A)32 b(Con)n(tract)i(D)n(ABT63-95-C-0122)i(and)e(the)g(DoD)f(High)h │ │ │ │ │ (P)n(erformance)i(Computing)0 5133 y(Mo)r(dernization)27 │ │ │ │ │ b(Program)g(Common)g(HPC)f(Soft)n(w)n(are)g(Supp)r(ort)f(Initiativ)n │ │ │ │ │ ├── ps2ascii {} │ │ │ │ │ │ @@ -1,11 +1,11 @@ │ │ │ │ │ │ Integrating the SPOOLES 2.2 Sparse Linear Algebra Library │ │ │ │ │ │ into the LANCZOS Block-shifted Lanczos Eigensolver │ │ │ │ │ │ Cleve Ashcraft Jim Patterson │ │ │ │ │ │ Boeing Phantom Works1 Boeing Phantom Works2 │ │ │ │ │ │ - January 16, 2024 │ │ │ │ │ │ + February 18, 2025 │ │ │ │ │ │ 1P. O. Box 24346, Mail Stop 7L-22, Seattle, Washington 98124, cleve.ashcraft@boeing.com. This research │ │ │ │ │ │ was supported in part by the DARPA Contract DABT63-95-C-0122 and the DoD High Performance Computing │ │ │ │ │ │ Modernization Program Common HPC Software Support Initiative. │ │ │ │ │ │ 2P. O. Box 24346, Mail Stop 7L-22, Seattle, Washington 98124, pattersn@redwood.rt.cs.boeing.com. This re- │ │ │ │ │ │ search was supportedin part bytheDARPAContractDABT63-95-C-0122 andtheDoDHighPerformanceComputing │ │ │ │ │ │ Modernization Program Common HPC Software Support Initiative. │ │ │ ├── ./usr/share/doc/spooles-doc/FrontMtx.ps.gz │ │ │ │ ├── FrontMtx.ps │ │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ │ %%EndComments │ │ │ │ │ %%BeginDefaults │ │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ │ %%EndDefaults │ │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ │ %DVIPSCommandLine: dvips main -o FrontMtx.ps │ │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ │ -%DVIPSSource: TeX output 2024.01.16:2047 │ │ │ │ │ +%DVIPSSource: TeX output 2025.02.18:0318 │ │ │ │ │ %%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,20 +1760,21 @@ │ │ │ │ │ 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 52 /four put │ │ │ │ │ -dup 54 /six put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ +dup 56 /eight put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 74 /J put │ │ │ │ │ +dup 70 /F put │ │ │ │ │ dup 97 /a put │ │ │ │ │ -dup 110 /n put │ │ │ │ │ +dup 98 /b put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ dup 114 /r put │ │ │ │ │ dup 117 /u put │ │ │ │ │ dup 121 /y put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ @@ -1957,89 +1958,93 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ │ -C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ │ -6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ │ -11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ │ -1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ │ -A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ │ -F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ │ -EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ │ -033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ │ -A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ │ -468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8A71FF9C085003EBB4F4 │ │ │ │ │ -3D271F5B16B1AAD3EBDC391F534AA46E545E9D8659DD19B309C3B7625A8396FA │ │ │ │ │ -2519464539D46E43ACB72952313C8497315E0319C08628023E8FC54D7D3BAC29 │ │ │ │ │ -D5AD8EFDABF0C33C7AFB7151A6606C62A87F0F5F783569AC4C881A992E3FE420 │ │ │ │ │ -297F7BC5147F3B2FA98450D2F8B07F7D229BC8BE06729920CFEC22556740E1CB │ │ │ │ │ -3DE09AC763C6D4A20AD1599C368FABD07BC35C16683F2A0311A88983415A9140 │ │ │ │ │ -2EFC4BC1B10DCAD4B2B8A28510E5BD39D6616D2B9B079ED3CF9C315B7DEC29D9 │ │ │ │ │ -251DFD0194B34EC175964C23383F23FFB2E41B698C405815D65EAFF9E9DD1DDE │ │ │ │ │ -30F77924656C288B8DDB2E5B0E7B1FAA66791DE3848EE6DE63AD0E945E49C6C7 │ │ │ │ │ -9FCA16E01F027F9EF7ACB55F02F5B0136480802F789F6FE14B430879979BA04D │ │ │ │ │ -F481AD4CF47E6847936F377FB04869F9A80E597301BFCAB718D8764094673876 │ │ │ │ │ -BCEF8FA3701608C84B3A0399A11D2E6AD922CCB7D72AF9EBFB30F4648A37A123 │ │ │ │ │ -CB8FB14BDC351692CF0CCAA5CA9383C2B23BAAA38700327EB743FBBE9EE04041 │ │ │ │ │ -13F5CEF4B3881BBC051C33369A82B3505B1CFD7D91AEF2E43EA728EE48E2D854 │ │ │ │ │ -5A7E516998ACDD4FD835FA901C5A21810A56D51FE919B2E58408EEB4DAEB487F │ │ │ │ │ -BA7F1D292CED902DF3533566D96DAD918319EA650D4FC7D9E0170CDE620F755B │ │ │ │ │ -0E7AE02D9B118481B26F5FF7060FBCFA2A682B6826F00679BCDA68794C05286D │ │ │ │ │ -B616DD08372ACDE0AE6E7EF116F0D36F16241ED4F0E8CCD80377792E3BB1343C │ │ │ │ │ -EEB22CC77738F7CBCBA32CF6C3979F6DF7ED81A89AE8928FD7CC550F2730BA88 │ │ │ │ │ -1B51CEDC63F4C47F261AFCAB7AC3CED20B15C97E714A460A1A3B16436B4A5149 │ │ │ │ │ -8F91DA4BE0B9B648534CE5F442117036B602DC91E2852BEA62F55803B833FDF7 │ │ │ │ │ -9F901AB87489E703DDEED1091A79DC73B4440BBBF2C7592B441187C4A3562204 │ │ │ │ │ -859F08BA3CE2A8ECCD5AAD13C50FB806FE79A388F1822C5608837CBDE526A044 │ │ │ │ │ -12E5CDE4A066932AF2ACA7E8FC6BA4603640944718752975B7DA6E906BE1EA01 │ │ │ │ │ -46736FF5D1AA1CC682D011B6039CF98C35E36D4F14ABC84A38B7203CC9A17756 │ │ │ │ │ -B2B0345276798F1A88A54AD9FEA0853C6DDF28525ED4F0B7380D14147012C2A4 │ │ │ │ │ -5B02888C986C76497EA4C729B0B82EE73C1A1A8E8F1ABF401E341028E9C15AF9 │ │ │ │ │ -354706D8DC07492921AD0932A46736C0D1B066D00287DACCC068FAE6A796EC89 │ │ │ │ │ -54D1D73AA88F3A5912BA9D3FF70065C8D0D0DAD1CD846501E06694374EFDBEC6 │ │ │ │ │ -931F644D5E8494AFC742423AD9A487658E310E0682BE19B8475F4D450487A686 │ │ │ │ │ -2B94494DEAF1C0F59DE82F2CE64BEE5E97F942FCFA1187ED6AA5761E951A7BF7 │ │ │ │ │ -9F842E34A4656C58B35A9E99F7E6762CEE11E0CF59FFD75D7382C5EE6DBB43F1 │ │ │ │ │ -ED219071D3FB22DBA90977723BB467C0490D042684C0724F40DCA3E0D8F1F4E7 │ │ │ │ │ -3C4F9A67BE6528185EAAFDD415224F7E256A4EA00111C17C746CBD80BF569A27 │ │ │ │ │ -D81195D7F79C1CCEEF30ED00D49F48B63E4B8D7953403A3710AE953CC1B76F0F │ │ │ │ │ -F523D777A6A186F262A602543F94AF7471DBE25FEBC207DB42DAF7DC9A5781FB │ │ │ │ │ -2131AD42869D966A734AAE3466DF1CE9D1BCFA72409A558C0AEE6A8E2FEAACB6 │ │ │ │ │ -2CDABCC28433034848ACF9FB4465D272E4AFC48572647F05F41C7A293CC5B595 │ │ │ │ │ -AD31555FB708A72962707348BC7033A8224BD42EB9D75FDF3AE9E6A9C960B330 │ │ │ │ │ -5137DF59F8E2E0D535F41524ABDF070745A4FA25CD8DFD38A5FF30A95452B875 │ │ │ │ │ -6569E8812631300D79A942C563AF174AC05C9F2D09D7D5D3C605F5A6B7F21B34 │ │ │ │ │ -18F270A993B050838E701A17938D1C156CBA7CA4BAC7C562CE9D7B758EAB25A9 │ │ │ │ │ -A6DFFC71F65561341847B776DF34061CE3D439B87B857626987EC93B3B95B8E8 │ │ │ │ │ -76FFB16B263675333FA10414FEED707FF7C366BF8B20FF8577CDEBEBCF1A5BCE │ │ │ │ │ -258C09C90175A5278B7C444A623E3331FDE5A6387B3E389540ED1E7E883958F3 │ │ │ │ │ -3A5C89CCD62256FA069DF4A5090FB17C1F1757C9209DAFB8A1F47182BF3E88D9 │ │ │ │ │ -0B5376B59EE165A761902759C8ED7F5AD301E7EB8B49CC09AF921DB45B7F8002 │ │ │ │ │ -AB32E73AAE53942DE0F9175D8446017006C9C0B93EF39C13B7A879F2F6DDFF16 │ │ │ │ │ -204BB24F976847CF006FD29332FCCB255B5116F7077A44F7066C39C81DC4BAD2 │ │ │ │ │ -40DB2753626C0102E5D047522ABC38EA294A699B8DFD9CA0A7980561A1062E90 │ │ │ │ │ -AB11EE286A9C238D9F721D9980D0A1828C2814972622D948CEE8C812C19A9A03 │ │ │ │ │ -608ED0AC138A436FFBF8BE3D1E66C87793416AF38ED9BC5424568A175FBDAA9E │ │ │ │ │ -D6FC11A7021693819B051562B5A59F32629E2D6019D69DD329BE1894A2B295E1 │ │ │ │ │ -1DCE9683B29AE126C56F26E5C595BF1A8249BDE231DBE8B066F7F62EF149B975 │ │ │ │ │ -A863969A4690504A5EA064721DA909B8157C0B39FBF8228D95CB655E406161E1 │ │ │ │ │ -148610FAEED7C5509880223C06A66DA19E10F94DC2DB481B26 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004FD597ED │ │ │ │ │ +EFDBC64ABD9B79386FB2427D1A63522195B1239C09F8CB3F8BD7A245A6DD82E3 │ │ │ │ │ +260C3889587626DFC5F7978E55F5524ABD6A3319CDD3D3F40D040044D51DA4E1 │ │ │ │ │ +6797EEAC7AA07C77EC6DB0E6E182B545A8BEF63B14F3FC07BAC09E7CD5C17ED6 │ │ │ │ │ +10080704B0DA4E9BA12F968DF8A58458D17E9A5B1F14A83DC51F5B161ADEE1CC │ │ │ │ │ +0183D82ED92C6FC7203C289949EDF0284D9893029FF5408E421324625F17C3E5 │ │ │ │ │ +2437C8F75A9D68EE1AF9174FEA6FC6BF793C7D2E497EA90396CF1A645E283B69 │ │ │ │ │ +8425F47C323587DF91E1D596DCB1E3A787C955D9D965A5E3E26ADF58B62AD5F9 │ │ │ │ │ +0C9AC784DE479780606354111E3202F215650DBBE1063A46F3C10B9EBC974DDA │ │ │ │ │ +A1A28DBBD43E9E5BFF000B12C787D0427928078F8EC5FE90DED97E6C129E8DEA │ │ │ │ │ +51F66504DB83764E52B0BA68DF7BE684C8959CB1D3345CC48221A9A4683306C0 │ │ │ │ │ +62B634E0A539383F0C7A788D9711EFF414869CCC5659D78CEBE009BF2463F56A │ │ │ │ │ +0ADC993348FE96DF7C250E13ED6504AACFE8F8DCA2D2048D9D8CFA127D363EAC │ │ │ │ │ +1F0630E2D1B621E6954038195D965B91FD974FA3F1B8B29D200A16CEBA645E2F │ │ │ │ │ +CEEE6FD49FBBD49E38AE67D4BFFCE91F1FC422554EC4409C5FA18D40FCD6D9B3 │ │ │ │ │ +2185ED1E0F98106D4339F086B05CA36E56EC22C60E2CE23F9C4CC403ACAD3F94 │ │ │ │ │ +4086B4DF6DFA0B7B4716417263E7B558535566AED2F6C2F9846A16D71A7930A7 │ │ │ │ │ +49232D3D16C4A01CF1A1998A06F40062ED329179A85668537C55D0BC24FC0010 │ │ │ │ │ +54DA83E2FC66B2A5D428E6A9BFC983253668C0ECE6CA36DBF97C4B7659D50842 │ │ │ │ │ +C65B36604840EEDA399B57E2DEFAC3E7FB031634CE33D04238F9854D2AAAF448 │ │ │ │ │ +34DA5F3BCCED3166FEEE82BB0BBA0A397CC2F95865CB52AABFF454D93B425809 │ │ │ │ │ +A26AC459F321FD23E2262FE816D06BAAECF32AAF167F84799AF80F9F88388D07 │ │ │ │ │ +0DB5FD57AFEE2850A8DFE977E6AE39CB3DC16DB1A163A583C86C6F775CE33521 │ │ │ │ │ +0081C0BBBAD6D30D26C66B28B38CEAC78FEA5FB3CC5853656B67C6D9D80EB30E │ │ │ │ │ +397558C9179AF5920F34DAB3F578DFCF0DBB137AED17D6325C23883E69EE4621 │ │ │ │ │ +34355A70C19EA68891E1CA937376901C85CDEE109F1665943E29A216DC00937A │ │ │ │ │ +B983A729A4654AD09187C0242D52FA4ADD0853EF4888864914D7D81C56578DD4 │ │ │ │ │ +3B51907032022E6E412D4F114675DEDCA8A9E85DC03A0B583FECD84432D15F70 │ │ │ │ │ +01F627BD6EC91F9FCFDA01BF40E1229B5F164309DBB641AD50970503DA2048C1 │ │ │ │ │ +DF8F36E8D252EE113F0B46677D9BAF376BAE18D74CFB0DBBD0C7E9D0A58BA3ED │ │ │ │ │ +1E5099CAE073EB5638617760AB57849893764EA9735173CD1EAB66884CEA7EE3 │ │ │ │ │ +8843327B2E145BD6FBB49102776B82BC511D109F8BE9E7E99DADABABEDC3CFD9 │ │ │ │ │ +393578FFD85907DFF2849E4CDE6FA4DEC7E1C150EBE4047FFB650F9548BE6D11 │ │ │ │ │ +0C51226A5436F18BF20A02E0F888F46B6AC3A8E8D927ECD3B5E095933AD3859F │ │ │ │ │ +5167C41D832EFCC4093BD2AFA7101AB430E57DAFC3590F05D3CBABB32BC203A0 │ │ │ │ │ +467B23BDB830487C9AA5B85BAC065F8538871B4180F8C4732E637DB090CFDE5A │ │ │ │ │ +3F4F2B5BFAFB848BAAD1A17CB076B34159601639BD93ECAB1214ACABF2C67FE2 │ │ │ │ │ +0658AA20B08681070FF56F1CC52144ABA8765D6E124D1CEA9BBA102808CE1BB2 │ │ │ │ │ +5EDF46BC7BBC2A5B49EE6EC28F5797A3969B057B21FCDBBD0E60848FF14F6CA3 │ │ │ │ │ +70F3060BDBB019B22722C99C7691760F013763B7FBEB62830AE215F195BF9F01 │ │ │ │ │ +21BF4377397E89574CFA47D123AA506A570A77BA6EB4AAB0B237A26154880293 │ │ │ │ │ +3952F832F72ECCB024F02385E5EE8566B165904B594E30D0700D033C6B429F6F │ │ │ │ │ +2A20BC774F442BC9CE29FCC81807C2768A8BC927A215558FBF36DC53F477F04A │ │ │ │ │ +41DA66E1A85B659EB761230977EAD7DA0150513D3323B143D4E2A61BCF03334C │ │ │ │ │ +C0EE3E1B06CFAF58ECC910BD81F0352B75FF1594D6A4EF504232D442174BE766 │ │ │ │ │ +0F8E703F97E21D25D4CD097549C31FEE7017C3916EFB02E7BF869172889827B6 │ │ │ │ │ +A48465EB7612BA3DBC6A9436C7167F149A25CE9F8E3F4F8DE3B5ADF6C0986CB3 │ │ │ │ │ +3A7E2DAB44AB489796461536F5F713017F2620AD03295CAE9285F08974AE0DF8 │ │ │ │ │ +D739260929619B509491AFF09C4CAEF9E65C2CA69470C907ECBF3AB6C955360D │ │ │ │ │ +05ABAC306DB51122A1ADC7EF0DD70FA299A45C505A83727D4598C86319EE9C06 │ │ │ │ │ +7218EFD4F40388354BCF1B79593D5AD221DF955D081F99F880E5CED07321AB3E │ │ │ │ │ +A2FCB8B05D54807D8E15E65B78DCE12989B9276350080C905DBB74CE9AA7E246 │ │ │ │ │ +5D3BAED292C562D4CF54617FCC6654496C7996D1ECE1EFF9258716AB763A12E6 │ │ │ │ │ +316E4C5587351A6DB011F58F6A15BC28BEBDC3836E0CB892807FEC228DC1B380 │ │ │ │ │ +92F7F42279F08D60F13D6A4CB425543C3644461461CBF6F27B6603F613D1FCF8 │ │ │ │ │ +A8410AD82D1498166AEB35D4125D7E2ADEAAB18BC04806AED53513F066E5F154 │ │ │ │ │ +3E13E863C50B9814EE2FB978D0D24A03FAF650CB6E2CADF1E6BE6BAF699AFC03 │ │ │ │ │ +E1A0EEB207B3B9A689ED5B373FE86686AD230BE6C18E1673DDA50E224B343EC5 │ │ │ │ │ +903BA0C8041C13607B50D5852AC7970B15C244E6EBA7D54B3086312CF04761D6 │ │ │ │ │ +7D3D75D51F20C371494AB81AB4A9838B20B483B851D01FEF41EA5C0B4755B964 │ │ │ │ │ +EB6E9B178051C556A010994EB88EAE641F4C1A0D7E0F98D5267E18AEF1AEA7E7 │ │ │ │ │ +9030A97DF89AFF621981C33B645FFB5F3BB2065A7661D11B26E0999561DF3580 │ │ │ │ │ +4A76A05DFAF8085525F8D5C01936F03C32E26E72569371C9EA3B8916F9DFC5FC │ │ │ │ │ +6A6F25A0FFDB981BA8B896393D75774D50828E6ADE903C45406E354703A4BC56 │ │ │ │ │ +2C49A47FEAC970DC433E3050C49F7FB945A9705BD8852D2D65D935F244D3B423 │ │ │ │ │ +EFAB84AAAAB8FBAFF50AFF372A533BCCEB5FC273DBADCF715776DF02A5DCBA9A │ │ │ │ │ +FBF265FAB4745D6475B33611EEE1EA95E7584E0BEEC7CA789AA69C8D03D6F8C0 │ │ │ │ │ +5B6844E2B901ACA560C0433B053D134866E567425174E47173679AAD4486A2D3 │ │ │ │ │ +369C29E4DD2CD6ACA1BE80ED8FF0A9C58A616D26E758BD8E6342624EC83FB590 │ │ │ │ │ +BD354B52B60BB054FAFE9AC63E1564FBC721FE8F276B0413EC89A2C85E5ED1B0 │ │ │ │ │ +3A9D83BE62A4488ADE7CE69971A8AF7E5862A4290EEF6F00D4171C7FFB360065 │ │ │ │ │ +92E72BF02BE27161AE0BB5516572A0BDC4F316FFB24B38484AC8D1FD4CD86062 │ │ │ │ │ +A2B5D03CF28C3A679C039A6EFDD4C9DA7E463AD60234C9F6BBEE48D87DD94D85 │ │ │ │ │ +842F495F3E25723718682CE4D6224CBBF4456F03077EDF736D65B9DDAB09470E │ │ │ │ │ +17742D82011FFA96BFE86B96E858F9352FCD20C3D46B77DBDEE54336EC2249EA │ │ │ │ │ +211F6DFFF5BEA1E5192BE1BAC0BDD5EDDB3D56C6F7C6E543561A0B39E5C1B04F │ │ │ │ │ +C683A7516B6E69D682455386DDA709929D621FA434D403E895AA0A77DBE1DFD2 │ │ │ │ │ +0D060DF82378880147ED97C6E8149686FA048710B113760AC1DA4512FF8556B3 │ │ │ │ │ +16E2447485B8C3CD58D0469C4A45FFB4CB0322BB284C02 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -5006,18 +5011,18 @@ │ │ │ │ │ 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 1[45 1[45 │ │ │ │ │ -45 45 3[25 44[{}13 90.9091 /CMSL10 rf /Fg 148[45 3[45 │ │ │ │ │ -45 9[61 61 31[45 4[0 51[71 1[71{}9 90.9091 /CMSY10 rf │ │ │ │ │ -/Fh 135[42 1[42 49 30 37 38 1[46 46 51 74 23 42 1[28 │ │ │ │ │ +134[48 3[51 2[36 12[40 2[51 45 26[59 11[25 1[45 2[45 │ │ │ │ │ +2[45 45 45 3[25 44[{}14 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 │ │ │ │ │ @@ -5151,23 +5156,23 @@ │ │ │ │ │ Fk(P)43 b Fm(and)30 b Fk(Q)g Fm(are)h(the)f(iden)m(tit)m(y)-8 │ │ │ │ │ b(.)111 5294 y(3.)46 b Fk(A)k Fm(=)e Fk(QR)e Fm(for)e(square)g(or)h │ │ │ │ │ (rectangular)h Fk(A)p Fm(.)84 b Fk(Q)44 b Fm(is)h(an)f(orthogonal)i │ │ │ │ │ (matrix)f(that)h(is)e(not)h(explicitly)227 5407 y(computed)30 │ │ │ │ │ b(or)h(stored.)41 b Fk(R)31 b Fm(is)f(upp)s(er)e(triangular.)1927 │ │ │ │ │ 5656 y(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fm(2)p 136 100 1035 4 v │ │ │ │ │ -1217 w Fl(FrontMtx)28 b Ff(:)40 b Fh(DRAFT)31 b Ff(Jan)m(uary)f(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fm(2)p 136 100 1016 4 v │ │ │ │ │ +1197 w Fl(FrontMtx)29 b Ff(:)40 b Fh(DRAFT)30 b Ff(F)-8 │ │ │ │ │ +b(ebruary)31 b(18,)g(2025)p 2885 100 V 141 399 a Fm(The)44 │ │ │ │ │ +b(factorization)j(is)d(p)s(erformed)f(using)h(a)g(one)h(dimensional)f │ │ │ │ │ +(decomp)s(osition)h(of)f(the)h(global)g(sparse)0 511 │ │ │ │ │ +y(matrix.)c(A)31 b(t)m(ypical)h Fh(fr)-5 b(ont)31 b Fm(of)g(the)f │ │ │ │ │ +(matrix)h(is)f(found)f(the)i(shaded)f(p)s(ortion)g(of)g(the)h(\014gure) │ │ │ │ │ +e(b)s(elo)m(w.)1650 1237 y @beginspecial 0 @llx 0 @lly │ │ │ │ │ +100 @urx 100 @ury 720 @rwi 720 @rhi @setspecial │ │ │ │ │ %%BeginDocument: ../../FrontMtx/doc/simple.eps │ │ │ │ │ %!PS-Adobe-2.0 EPSF-1.2 │ │ │ │ │ %%BoundingBox: 0.0 0.0 100.0 100.0 │ │ │ │ │ %%%EndComments │ │ │ │ │ │ │ │ │ │ 0.5 setgray │ │ │ │ │ 25 0 75 75 rectfill │ │ │ │ │ @@ -5245,17 +5250,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 1035 4 v 1216 100 a Fl(FrontMtx)28 │ │ │ │ │ -b Ff(:)41 b Fh(DRAFT)121 b Ff(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2818 100 V 1035 w Fm(3)137 399 y Fi(\210)45 b Fm(An)35 │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1016 4 v 1197 100 a Fl(FrontMtx)28 │ │ │ │ │ +b Ff(:)41 b Fh(DRAFT)121 b Ff(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2838 100 V 1016 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 │ │ │ │ │ @@ -5339,21 +5344,21 @@ │ │ │ │ │ b(After)26 b(the)f(factorization)227 5181 y(is)45 b(complete,)50 │ │ │ │ │ b(the)45 b(data)h(structures)e(are)i(p)s(ostpro)s(cessed)e(to)h(yield)g │ │ │ │ │ (submatrices)g(that)h(con)m(tain)g(the)227 5294 y(coupling)34 │ │ │ │ │ b(b)s(et)m(w)m(een)g(fron)m(ts.)50 b(The)33 b(w)m(orking)h(storage)h │ │ │ │ │ (during)d(the)i(solv)m(es)g(is)g(also)g(managed)g(b)m(y)g │ │ │ │ │ Fl(SubMtx)227 5407 y Fm(ob)5 b(jects.)p eop end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fm(4)p 136 100 1035 4 v │ │ │ │ │ -1217 w Fl(FrontMtx)28 b Ff(:)40 b Fh(DRAFT)31 b Ff(Jan)m(uary)f(16,)h │ │ │ │ │ -(2024)p 2866 100 V 137 399 a Fi(\210)45 b Fm(Eac)m(h)25 │ │ │ │ │ -b(submatrix)f(represen)m(ts)h(the)f(coupling)h(b)s(et)m(w)m(een)g(t)m │ │ │ │ │ -(w)m(o)h(fron)m(ts,)g Fk(I)31 b Fm(and)24 b Fk(J)9 b │ │ │ │ │ -Fm(.)39 b(T)-8 b(o)25 b(enable)g(rapid)f(random)227 511 │ │ │ │ │ -y(access)30 b(to)f(these)f(submatrices,)h(w)m(e)f(use)g(a)h │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fm(4)p 136 100 1016 4 v │ │ │ │ │ +1197 w Fl(FrontMtx)29 b Ff(:)40 b Fh(DRAFT)30 b Ff(F)-8 │ │ │ │ │ +b(ebruary)31 b(18,)g(2025)p 2885 100 V 137 399 a Fi(\210)45 │ │ │ │ │ +b Fm(Eac)m(h)25 b(submatrix)f(represen)m(ts)h(the)f(coupling)h(b)s(et)m │ │ │ │ │ +(w)m(een)g(t)m(w)m(o)h(fron)m(ts,)g Fk(I)31 b Fm(and)24 │ │ │ │ │ +b Fk(J)9 b Fm(.)39 b(T)-8 b(o)25 b(enable)g(rapid)f(random)227 │ │ │ │ │ +511 y(access)30 b(to)f(these)f(submatrices,)h(w)m(e)f(use)g(a)h │ │ │ │ │ Fl(I2Ohash)d Fm(ob)5 b(ject)29 b(that)f(is)h(a)f(hash)f(table)i(whose)f │ │ │ │ │ (k)m(eys)h(are)g(t)m(w)m(o)227 624 y(in)m(tegers)j(and)e(whose)g(data)h │ │ │ │ │ (is)f(a)h Fl(void)47 b(*)30 b Fm(p)s(oin)m(ter.)137 808 │ │ │ │ │ y Fi(\210)45 b Fm(The)39 b(set)h(of)g(nonzero)f(submatrices,)j(i.e.,)h │ │ │ │ │ (the)d(nonzero)g(couplings)f(b)s(et)m(w)m(een)h(t)m(w)m(o)h(fron)m(ts,) │ │ │ │ │ h(is)d(k)m(ept)h(in)227 920 y(one)33 b(or)f(t)m(w)m(o)h │ │ │ │ │ Fl(IVL)e Fm(ob)5 b(jects.)47 b(This)31 b(information)i(is)f(necessary)h │ │ │ │ │ @@ -5411,17 +5416,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 1035 4 v 1216 100 a Fl(FrontMtx)28 │ │ │ │ │ -b Ff(:)41 b Fh(DRAFT)121 b Ff(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2818 100 V 1035 w Fm(5)137 399 y Fi(\210)45 b Fl(int)i(dataMode)28 │ │ │ │ │ +TeXDict begin 5 4 bop 91 100 1016 4 v 1197 100 a Fl(FrontMtx)28 │ │ │ │ │ +b Ff(:)41 b Fh(DRAFT)121 b Ff(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2838 100 V 1016 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 │ │ │ │ │ @@ -5478,21 +5483,21 @@ │ │ │ │ │ (submatrices)g(in)g Fk(L)p Fm(,)i(used)d(during)227 5110 │ │ │ │ │ y(the)c(solv)m(es.)137 5294 y Fi(\210)45 b Fl(I2Ohash)h(*upperhash)33 │ │ │ │ │ b Fm(:)51 b(p)s(oin)m(ter)35 b(to)i(a)f Fl(I2Ohash)d │ │ │ │ │ Fm(hash)i(table)h(for)g(submatrices)f(in)g Fk(U)10 b │ │ │ │ │ Fm(,)37 b(used)e(during)227 5407 y(the)c(solv)m(es.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 6 6 │ │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fm(6)p 136 100 1035 4 v │ │ │ │ │ -1217 w Fl(FrontMtx)28 b Ff(:)40 b Fh(DRAFT)31 b Ff(Jan)m(uary)f(16,)h │ │ │ │ │ -(2024)p 2866 100 V 137 399 a Fi(\210)45 b Fl(SubMtxManager)f(*manager) │ │ │ │ │ -30 b Fm(:)43 b(p)s(oin)m(ter)31 b(to)h(an)g(ob)5 b(ject)32 │ │ │ │ │ -b(that)g(manages)h(the)e(instances)h(of)g(submatrices)227 │ │ │ │ │ -511 y(during)d(the)i(factors)g(and)f(solv)m(es.)137 719 │ │ │ │ │ -y Fi(\210)45 b Fl(Lock)i(*lock)27 b Fm(:)40 b(p)s(oin)m(ter)30 │ │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fm(6)p 136 100 1016 4 v │ │ │ │ │ +1197 w Fl(FrontMtx)29 b Ff(:)40 b Fh(DRAFT)30 b Ff(F)-8 │ │ │ │ │ +b(ebruary)31 b(18,)g(2025)p 2885 100 V 137 399 a Fi(\210)45 │ │ │ │ │ +b Fl(SubMtxManager)f(*manager)30 b Fm(:)43 b(p)s(oin)m(ter)31 │ │ │ │ │ +b(to)h(an)g(ob)5 b(ject)32 b(that)g(manages)h(the)e(instances)h(of)g │ │ │ │ │ +(submatrices)227 511 y(during)d(the)i(factors)g(and)f(solv)m(es.)137 │ │ │ │ │ +719 y Fi(\210)45 b Fl(Lock)i(*lock)27 b Fm(:)40 b(p)s(oin)m(ter)30 │ │ │ │ │ b(to)f(a)h Fl(Lock)e Fm(lo)s(c)m(k)i(used)e(in)h(a)g(m)m(ultithreaded)g │ │ │ │ │ (en)m(vironmen)m(t)h(to)g(ensure)e(exlusiv)m(e)227 832 │ │ │ │ │ y(access)i(while)f(allo)s(cating)i(storage)g(in)d(the)h │ │ │ │ │ Fl(IV)g Fm(and)f Fl(IVL)g Fm(ob)5 b(jects.)41 b(This)28 │ │ │ │ │ b(is)h(not)g(used)f(in)g(a)i(serial)f(or)g(MPI)227 945 │ │ │ │ │ y(en)m(vironmen)m(t.)137 1153 y Fi(\210)45 b Fl(int)i(nlocks)29 │ │ │ │ │ b Fm(:)41 b(n)m(um)m(b)s(er)29 b(of)h(times)h(the)g(lo)s(c)m(k)g(has)f │ │ │ │ │ @@ -5548,17 +5553,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 1035 4 v 1216 100 a Fl(FrontMtx)28 │ │ │ │ │ -b Ff(:)41 b Fh(DRAFT)121 b Ff(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2818 100 V 1035 w Fm(7)0 399 y Fb(1.2.1)112 b(Basic)38 │ │ │ │ │ +TeXDict begin 7 6 bop 91 100 1016 4 v 1197 100 a Fl(FrontMtx)28 │ │ │ │ │ +b Ff(:)41 b Fh(DRAFT)121 b Ff(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2838 100 V 1016 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) │ │ │ │ │ @@ -5617,75 +5622,76 @@ │ │ │ │ │ (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 1035 4 v │ │ │ │ │ -1217 w Fl(FrontMtx)28 b Ff(:)40 b Fh(DRAFT)31 b Ff(Jan)m(uary)f(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ -(*frontmtx,)g(int)i(J,)1468 1013 y(int)g(*pnD,)f(int)h(*pnL,)g(int)g │ │ │ │ │ -(*pnU,)f(int)h(*pnbytes)e(\))j(;)227 1166 y Fm(This)29 │ │ │ │ │ -b(metho)s(d)h(\014lls)g(the)g(four)f(p)s(oin)m(ter)h(argumen)m(ts)g │ │ │ │ │ -(with)g(the)g(n)m(um)m(b)s(er)f(of)h(in)m(ternal)h(ro)m(ws)f(and)f │ │ │ │ │ -(columns,)227 1279 y(n)m(um)m(b)s(er)36 b(of)h(ro)m(ws)f(in)h(the)g(lo) │ │ │ │ │ -m(w)m(er)g(blo)s(c)m(k,)j(n)m(um)m(b)s(er)35 b(of)i(columns)f(in)h(the) │ │ │ │ │ -g(upp)s(er)d(blo)s(c)m(k,)39 b(and)d(n)m(um)m(b)s(er)g(of)227 │ │ │ │ │ -1392 y(b)m(ytes)31 b(for)f(a)h Fl(Chv)f Fm(ob)5 b(ject)31 │ │ │ │ │ -b(to)g(hold)f(the)g(fron)m(t.)41 b(in)30 b(fron)m(t)h │ │ │ │ │ -Fl(J)p Fm(.)227 1546 y Fh(Err)-5 b(or)30 b(che)-5 b(cking:)38 │ │ │ │ │ -b Fm(If)26 b Fl(frontmtx)d Fm(is)j Fl(NULL)p Fm(,)f(or)h(if)g │ │ │ │ │ -Fl(J)g Fm(is)f(not)i(in)e Fl([0,nfront\))p Fm(,)g(or)g(if)h(an)m(y)h │ │ │ │ │ -(of)f(the)g(four)f(p)s(oin)m(ter)227 1659 y(argumen)m(ts)31 │ │ │ │ │ -b(are)g(NULL,)f(an)h(error)f(message)h(is)f(prin)m(ted)g(and)g(the)h │ │ │ │ │ -(program)f(exits.)111 1853 y(5.)46 b Fl(int)h(FrontMtx_frontSize)c(\()k │ │ │ │ │ -(FrontMtx)f(*frontmtx,)f(int)i(J)g(\))h(;)227 2006 y │ │ │ │ │ -Fm(This)30 b(metho)s(d)g(returns)f(the)h(n)m(um)m(b)s(er)f(of)i(in)m │ │ │ │ │ -(ternal)g(ro)m(ws)f(and)g(columns)g(in)g(fron)m(t)h Fl(J)p │ │ │ │ │ -Fm(.)227 2160 y Fh(Err)-5 b(or)33 b(che)-5 b(cking:)40 │ │ │ │ │ -b Fm(If)29 b Fl(frontmtx)e Fm(or)i Fl(frontsizesIV)d │ │ │ │ │ -Fm(is)k Fl(NULL)p Fm(,)e(or)i(if)f Fl(J)g Fm(is)g(not)h(in)f │ │ │ │ │ -Fl([0,nfront\))p Fm(,)e(an)i(error)227 2273 y(message)j(is)e(prin)m │ │ │ │ │ -(ted)g(and)g(the)g(program)h(exits.)111 2467 y(6.)46 │ │ │ │ │ -b Fl(void)h(FrontMtx_setFrontSize)42 b(\()47 b(FrontMtx)f(*frontmtx,)f │ │ │ │ │ -(int)i(J,)g(int)g(size)g(\))g(;)227 2621 y Fm(This)23 │ │ │ │ │ -b(metho)s(d)f(sets)i(the)f(n)m(um)m(b)s(er)f(of)h(in)m(ternal)h(ro)m │ │ │ │ │ -(ws)f(and)g(columns)g(in)g(fron)m(t)g Fl(J)g Fm(to)g(b)s(e)g │ │ │ │ │ -Fl(size)p Fm(.)37 b(This)22 b(metho)s(d)227 2733 y(is)37 │ │ │ │ │ -b(used)e(during)g(factorizations)k(with)d(piv)m(oting)i(enabled)e │ │ │ │ │ -(since)h(w)m(e)g(cannot)g(tell)h(ahead)e(of)h(time)g(ho)m(w)227 │ │ │ │ │ -2846 y(man)m(y)31 b(ro)m(ws)f(and)g(columns)g(in)g(a)h(fron)m(t)f(will) │ │ │ │ │ -h(b)s(e)f(eliminated.)227 3000 y Fh(Err)-5 b(or)42 b(che)-5 │ │ │ │ │ -b(cking:)56 b Fm(If)38 b Fl(frontmtx)e Fm(or)j Fl(frontsizesIV)c │ │ │ │ │ -Fm(is)k Fl(NULL)p Fm(,)e(or)i(if)f Fl(J)g Fm(is)h(not)f(in)h │ │ │ │ │ -Fl([0,nfront\))p Fm(,)e(or)i(if)227 3113 y Fl(size)24 │ │ │ │ │ -b Fk(<)h Fm(0,)31 b(an)g(error)f(message)h(is)g(prin)m(ted)e(and)h(the) │ │ │ │ │ -h(program)f(exits.)111 3307 y(7.)46 b Fl(void)h(FrontMtx_columnIndices) │ │ │ │ │ -42 b(\()47 b(FrontMtx)f(*frontmtx,)f(int)i(J,)1659 3420 │ │ │ │ │ -y(int)g(*pncol,)f(int)h(**pindices)e(\))i(;)227 3574 │ │ │ │ │ -y Fm(This)32 b(metho)s(d)f(\014lls)h Fl(*pncol)f Fm(with)h(the)g(n)m │ │ │ │ │ -(um)m(b)s(er)f(of)i(columns)f(and)f Fl(*pindices)f Fm(with)i(a)h(p)s │ │ │ │ │ -(oin)m(ter)f(to)h(the)227 3686 y(column)d(indices)h(for)f(fron)m(t)h │ │ │ │ │ -Fl(J)p Fm(.)227 3840 y Fh(Err)-5 b(or)40 b(che)-5 b(cking:)52 │ │ │ │ │ -b Fm(If)36 b Fl(frontmtx)p Fm(,)g Fl(pncol)f Fm(or)h │ │ │ │ │ -Fl(pindices)e Fm(is)j Fl(NULL)p Fm(,)e(or)h(if)h Fl(J)f │ │ │ │ │ -Fm(is)g(not)h(in)f Fl([0,nfront\))p Fm(,)f(an)227 3953 │ │ │ │ │ -y(error)30 b(message)i(is)e(prin)m(ted)g(and)g(the)g(program)h(exits.) │ │ │ │ │ -111 4147 y(8.)46 b Fl(void)h(FrontMtx_rowIndices)42 b(\()48 │ │ │ │ │ -b(FrontMtx)d(*frontmtx,)g(int)i(J,)1516 4260 y(int)g(*pnrow,)f(int)h │ │ │ │ │ -(**pindices)e(\))i(;)227 4414 y Fm(This)30 b(metho)s(d)f(\014lls)h │ │ │ │ │ -Fl(*pnrow)f Fm(with)h(the)g(n)m(um)m(b)s(er)f(of)h(ro)m(ws)h(and)e │ │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fm(8)p 136 100 1016 4 v │ │ │ │ │ +1197 w Fl(FrontMtx)29 b Ff(:)40 b Fh(DRAFT)30 b Ff(F)-8 │ │ │ │ │ +b(ebruary)31 b(18,)g(2025)p 2885 100 V 111 399 a Fm(3.)46 │ │ │ │ │ +b Fl(Tree)h(*)g(FrontMtx_frontTree)c(\()48 b(FrontMtx)d(*frontmtx)g(\)) │ │ │ │ │ +j(;)227 552 y Fm(This)30 b(metho)s(d)g(returns)f(the)h │ │ │ │ │ +Fl(Tree)g Fm(ob)5 b(ject)31 b(for)f(the)h(fron)m(ts.)227 │ │ │ │ │ +706 y Fh(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fm(If)30 │ │ │ │ │ +b Fl(frontmtx)e Fm(is)j Fl(NULL)p Fm(,)e(an)i(error)f(message)h(is)g │ │ │ │ │ +(prin)m(ted)e(and)h(the)h(program)f(exits.)111 900 y(4.)46 │ │ │ │ │ +b Fl(void)h(FrontMtx_initialFrontDim)o(ensi)o(ons)41 │ │ │ │ │ +b(\()48 b(FrontMtx)d(*frontmtx,)g(int)i(J,)1468 1013 │ │ │ │ │ +y(int)g(*pnD,)f(int)h(*pnL,)g(int)g(*pnU,)f(int)h(*pnbytes)e(\))j(;)227 │ │ │ │ │ +1166 y Fm(This)29 b(metho)s(d)h(\014lls)g(the)g(four)f(p)s(oin)m(ter)h │ │ │ │ │ +(argumen)m(ts)g(with)g(the)g(n)m(um)m(b)s(er)f(of)h(in)m(ternal)h(ro)m │ │ │ │ │ +(ws)f(and)f(columns,)227 1279 y(n)m(um)m(b)s(er)36 b(of)h(ro)m(ws)f(in) │ │ │ │ │ +h(the)g(lo)m(w)m(er)g(blo)s(c)m(k,)j(n)m(um)m(b)s(er)35 │ │ │ │ │ +b(of)i(columns)f(in)h(the)g(upp)s(er)d(blo)s(c)m(k,)39 │ │ │ │ │ +b(and)d(n)m(um)m(b)s(er)g(of)227 1392 y(b)m(ytes)31 b(for)f(a)h │ │ │ │ │ +Fl(Chv)f Fm(ob)5 b(ject)31 b(to)g(hold)f(the)g(fron)m(t.)41 │ │ │ │ │ +b(in)30 b(fron)m(t)h Fl(J)p Fm(.)227 1546 y Fh(Err)-5 │ │ │ │ │ +b(or)30 b(che)-5 b(cking:)38 b Fm(If)26 b Fl(frontmtx)d │ │ │ │ │ +Fm(is)j Fl(NULL)p Fm(,)f(or)h(if)g Fl(J)g Fm(is)f(not)i(in)e │ │ │ │ │ +Fl([0,nfront\))p Fm(,)g(or)g(if)h(an)m(y)h(of)f(the)g(four)f(p)s(oin)m │ │ │ │ │ +(ter)227 1659 y(argumen)m(ts)31 b(are)g(NULL,)f(an)h(error)f(message)h │ │ │ │ │ +(is)f(prin)m(ted)g(and)g(the)h(program)f(exits.)111 1853 │ │ │ │ │ +y(5.)46 b Fl(int)h(FrontMtx_frontSize)c(\()k(FrontMtx)f(*frontmtx,)f │ │ │ │ │ +(int)i(J)g(\))h(;)227 2006 y Fm(This)30 b(metho)s(d)g(returns)f(the)h │ │ │ │ │ +(n)m(um)m(b)s(er)f(of)i(in)m(ternal)g(ro)m(ws)f(and)g(columns)g(in)g │ │ │ │ │ +(fron)m(t)h Fl(J)p Fm(.)227 2160 y Fh(Err)-5 b(or)33 │ │ │ │ │ +b(che)-5 b(cking:)40 b Fm(If)29 b Fl(frontmtx)e Fm(or)i │ │ │ │ │ +Fl(frontsizesIV)d Fm(is)k Fl(NULL)p Fm(,)e(or)i(if)f │ │ │ │ │ +Fl(J)g Fm(is)g(not)h(in)f Fl([0,nfront\))p Fm(,)e(an)i(error)227 │ │ │ │ │ +2273 y(message)j(is)e(prin)m(ted)g(and)g(the)g(program)h(exits.)111 │ │ │ │ │ +2467 y(6.)46 b Fl(void)h(FrontMtx_setFrontSize)42 b(\()47 │ │ │ │ │ +b(FrontMtx)f(*frontmtx,)f(int)i(J,)g(int)g(size)g(\))g(;)227 │ │ │ │ │ +2621 y Fm(This)23 b(metho)s(d)f(sets)i(the)f(n)m(um)m(b)s(er)f(of)h(in) │ │ │ │ │ +m(ternal)h(ro)m(ws)f(and)g(columns)g(in)g(fron)m(t)g │ │ │ │ │ +Fl(J)g Fm(to)g(b)s(e)g Fl(size)p Fm(.)37 b(This)22 b(metho)s(d)227 │ │ │ │ │ +2733 y(is)37 b(used)e(during)g(factorizations)k(with)d(piv)m(oting)i │ │ │ │ │ +(enabled)e(since)h(w)m(e)g(cannot)g(tell)h(ahead)e(of)h(time)g(ho)m(w) │ │ │ │ │ +227 2846 y(man)m(y)31 b(ro)m(ws)f(and)g(columns)g(in)g(a)h(fron)m(t)f │ │ │ │ │ +(will)h(b)s(e)f(eliminated.)227 3000 y Fh(Err)-5 b(or)42 │ │ │ │ │ +b(che)-5 b(cking:)56 b Fm(If)38 b Fl(frontmtx)e Fm(or)j │ │ │ │ │ +Fl(frontsizesIV)c Fm(is)k Fl(NULL)p Fm(,)e(or)i(if)f │ │ │ │ │ +Fl(J)g Fm(is)h(not)f(in)h Fl([0,nfront\))p Fm(,)e(or)i(if)227 │ │ │ │ │ +3113 y Fl(size)24 b Fk(<)h Fm(0,)31 b(an)g(error)f(message)h(is)g(prin) │ │ │ │ │ +m(ted)e(and)h(the)h(program)f(exits.)111 3307 y(7.)46 │ │ │ │ │ +b Fl(void)h(FrontMtx_columnIndices)42 b(\()47 b(FrontMtx)f(*frontmtx,)f │ │ │ │ │ +(int)i(J,)1659 3420 y(int)g(*pncol,)f(int)h(**pindices)e(\))i(;)227 │ │ │ │ │ +3574 y Fm(This)32 b(metho)s(d)f(\014lls)h Fl(*pncol)f │ │ │ │ │ +Fm(with)h(the)g(n)m(um)m(b)s(er)f(of)i(columns)f(and)f │ │ │ │ │ +Fl(*pindices)f Fm(with)i(a)h(p)s(oin)m(ter)f(to)h(the)227 │ │ │ │ │ +3686 y(column)d(indices)h(for)f(fron)m(t)h Fl(J)p Fm(.)227 │ │ │ │ │ +3840 y Fh(Err)-5 b(or)40 b(che)-5 b(cking:)52 b Fm(If)36 │ │ │ │ │ +b Fl(frontmtx)p Fm(,)g Fl(pncol)f Fm(or)h Fl(pindices)e │ │ │ │ │ +Fm(is)j Fl(NULL)p Fm(,)e(or)h(if)h Fl(J)f Fm(is)g(not)h(in)f │ │ │ │ │ +Fl([0,nfront\))p Fm(,)f(an)227 3953 y(error)30 b(message)i(is)e(prin)m │ │ │ │ │ +(ted)g(and)g(the)g(program)h(exits.)111 4147 y(8.)46 │ │ │ │ │ +b Fl(void)h(FrontMtx_rowIndices)42 b(\()48 b(FrontMtx)d(*frontmtx,)g │ │ │ │ │ +(int)i(J,)1516 4260 y(int)g(*pnrow,)f(int)h(**pindices)e(\))i(;)227 │ │ │ │ │ +4414 y Fm(This)30 b(metho)s(d)f(\014lls)h Fl(*pnrow)f │ │ │ │ │ +Fm(with)h(the)g(n)m(um)m(b)s(er)f(of)h(ro)m(ws)h(and)e │ │ │ │ │ Fl(*pindices)f Fm(with)i(a)g(p)s(oin)m(ter)g(to)h(the)g(ro)m(w)227 │ │ │ │ │ 4526 y(indices)g(for)f(fron)m(t)g Fl(J)p Fm(.)227 4680 │ │ │ │ │ y Fh(Err)-5 b(or)40 b(che)-5 b(cking:)52 b Fm(If)36 b │ │ │ │ │ Fl(frontmtx)p Fm(,)g Fl(pnrow)f Fm(or)h Fl(pindices)e │ │ │ │ │ Fm(is)j Fl(NULL)p Fm(,)e(or)h(if)h Fl(J)f Fm(is)g(not)h(in)f │ │ │ │ │ Fl([0,nfront\))p Fm(,)f(an)227 4793 y(error)30 b(message)i(is)e(prin)m │ │ │ │ │ (ted)g(and)g(the)g(program)h(exits.)111 4987 y(9.)46 │ │ │ │ │ @@ -5695,17 +5701,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 1035 4 v 1216 100 a Fl(FrontMtx)28 │ │ │ │ │ -b Ff(:)41 b Fh(DRAFT)121 b Ff(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2818 100 V 1035 w Fm(9)66 399 y(10.)46 b Fl(SubMtx)g(*)i │ │ │ │ │ +TeXDict begin 9 8 bop 91 100 1016 4 v 1197 100 a Fl(FrontMtx)28 │ │ │ │ │ +b Ff(:)41 b Fh(DRAFT)121 b Ff(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2838 100 V 1016 w Fm(9)66 399 y(10.)46 b Fl(SubMtx)g(*)i │ │ │ │ │ (FrontMtx_upperMtx)43 b(\()k(FrontMtx)f(*frontmtx,)f(int)i(J,)g(int)g │ │ │ │ │ (K)g(\))h(;)227 554 y Fm(This)32 b(metho)s(d)h(returns)e(a)i(p)s(oin)m │ │ │ │ │ (ter)g(to)h(the)f(ob)5 b(ject)33 b(that)h(con)m(tains)g(submatrix)e │ │ │ │ │ Fk(U)3087 568 y Fj(J)n(;K)3212 554 y Fm(.)48 b(If)32 │ │ │ │ │ b Fk(K)k Fm(=)29 b Fk(nf)10 b(r)s(ont)p Fm(,)227 667 │ │ │ │ │ y(then)30 b(the)h(ob)5 b(ject)31 b(con)m(taining)h Fk(U)1370 │ │ │ │ │ 682 y Fj(J)n(;@)t(J)1547 667 y Fm(is)e(returned.)227 │ │ │ │ │ @@ -5777,39 +5783,40 @@ │ │ │ │ │ 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 1012 4 │ │ │ │ │ -v 1194 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(Jan)m(uary)g(16,)i │ │ │ │ │ -(2024)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 │ │ │ │ │ -(and)c(initializing)j(the)e(in)m(ternal)h(ob)5 b(jects)25 │ │ │ │ │ -b(as)f(necessary)-8 b(.)227 1214 y(See)41 b(the)f(previous)g(section)h │ │ │ │ │ -(on)f(data)h(structures)f(for)g(the)g(meanings)h(of)f(the)g │ │ │ │ │ -Fl(type)p Fm(,)i Fl(symmetryflag)p Fm(,)227 1327 y Fl(sparsityflag)34 │ │ │ │ │ -b Fm(and)j Fl(pivotingflag)d Fm(parameters.)63 b(The)37 │ │ │ │ │ -b Fl(lockflag)e Fm(parameter)j(has)f(the)g(follo)m(wing)227 │ │ │ │ │ -1440 y(meaning.)337 1645 y Fi(\210)45 b Fl(0)30 b Fm(|)h(the)f │ │ │ │ │ -Fl(Lock)f Fm(ob)5 b(ject)32 b(is)e(not)h(allo)s(cated)h(or)e │ │ │ │ │ -(initialized.)337 1800 y Fi(\210)45 b Fl(1)d Fm(|)h(the)f │ │ │ │ │ -Fl(Lock)f Fm(ob)5 b(ject)44 b(is)e(allo)s(cated)j(and)c(initialized)k │ │ │ │ │ -(to)e(sync)m(hronize)f(only)h(threads)f(in)g(this)427 │ │ │ │ │ -1913 y(pro)s(cess.)337 2068 y Fi(\210)j Fl(2)27 b Fm(|)g(the)h │ │ │ │ │ -Fl(Lock)e Fm(ob)5 b(ject)28 b(is)f(allo)s(cated)j(and)c(initialized)j │ │ │ │ │ -(to)f(sync)m(hronize)g(threads)f(in)g(this)g(and)g(other)427 │ │ │ │ │ -2181 y(pro)s(cesses.)227 2386 y(If)j Fl(lockflag)e Fm(is)j(not)f │ │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fm(10)p 182 100 993 4 │ │ │ │ │ +v 1175 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)i(2025)p 2908 100 V 0 399 a Fb(1.2.3)112 │ │ │ │ │ +b(Initialization)39 b(metho)s(ds)111 604 y Fm(1.)46 b │ │ │ │ │ +Fl(void)h(FrontMtx_init)d(\()k(FrontMtx)d(*frontmtx,)g(ETree)h │ │ │ │ │ +(*frontETree,)705 716 y(IVL)g(*symbfacIVL,)f(int)i(type,)f(int)h │ │ │ │ │ +(symmetryflag,)d(int)j(sparsityflag,)705 829 y(int)f(pivotingflag,)f │ │ │ │ │ +(int)i(lockflag,)e(int)i(myid,)f(IV)h(*ownersIV,)705 │ │ │ │ │ +942 y(SubMtxManager)d(*manager,)h(int)i(msglvl,)f(FILE)g(*msgFile)g(\)) │ │ │ │ │ +h(;)227 1101 y Fm(This)23 b(metho)s(d)h(initializes)i(the)e(ob)5 │ │ │ │ │ +b(ject,)26 b(allo)s(cating)h(and)c(initializing)j(the)e(in)m(ternal)h │ │ │ │ │ +(ob)5 b(jects)25 b(as)f(necessary)-8 b(.)227 1214 y(See)41 │ │ │ │ │ +b(the)f(previous)g(section)h(on)f(data)h(structures)f(for)g(the)g │ │ │ │ │ +(meanings)h(of)f(the)g Fl(type)p Fm(,)i Fl(symmetryflag)p │ │ │ │ │ +Fm(,)227 1327 y Fl(sparsityflag)34 b Fm(and)j Fl(pivotingflag)d │ │ │ │ │ +Fm(parameters.)63 b(The)37 b Fl(lockflag)e Fm(parameter)j(has)f(the)g │ │ │ │ │ +(follo)m(wing)227 1440 y(meaning.)337 1645 y Fi(\210)45 │ │ │ │ │ +b Fl(0)30 b Fm(|)h(the)f Fl(Lock)f Fm(ob)5 b(ject)32 │ │ │ │ │ +b(is)e(not)h(allo)s(cated)h(or)e(initialized.)337 1800 │ │ │ │ │ +y Fi(\210)45 b Fl(1)d Fm(|)h(the)f Fl(Lock)f Fm(ob)5 │ │ │ │ │ +b(ject)44 b(is)e(allo)s(cated)j(and)c(initialized)k(to)e(sync)m │ │ │ │ │ +(hronize)f(only)h(threads)f(in)g(this)427 1913 y(pro)s(cess.)337 │ │ │ │ │ +2068 y Fi(\210)j Fl(2)27 b Fm(|)g(the)h Fl(Lock)e Fm(ob)5 │ │ │ │ │ +b(ject)28 b(is)f(allo)s(cated)j(and)c(initialized)j(to)f(sync)m │ │ │ │ │ +(hronize)g(threads)f(in)g(this)g(and)g(other)427 2181 │ │ │ │ │ +y(pro)s(cesses.)227 2386 y(If)j Fl(lockflag)e Fm(is)j(not)f │ │ │ │ │ Fl(0)p Fm(,)h(the)f(lo)s(c)m(k)i(is)e(allo)s(cated)i(and)e │ │ │ │ │ (initialized.)227 2545 y(This)g(metho)s(d)g(allo)s(cates)k(as)d(m)m(uc) │ │ │ │ │ m(h)f(storage)j(as)e(p)s(ossible.)41 b(When)31 b(piv)m(oting)h(is)e │ │ │ │ │ (not)h(enabled)g(and)f(dense)227 2658 y(fron)m(ts)40 │ │ │ │ │ b(are)g(stored)g(the)g(structure)f(of)h(the)g(factor)h(matrix)f(is)g │ │ │ │ │ (\014xed)f(and)g(giv)m(en)i(b)m(y)f(the)g Fl(frontETree)227 │ │ │ │ │ 2771 y Fm(ob)5 b(ject.)58 b(The)35 b(diagonal)i Fk(D)1190 │ │ │ │ │ @@ -5855,17 +5862,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 1012 4 v 1193 100 a Fl(FrontMtx)28 │ │ │ │ │ -b Ff(:)41 b Fh(DRAFT)121 b Ff(Jan)m(uary)30 b(16,)i(2024)p │ │ │ │ │ -2796 100 V 1012 w Fm(11)111 399 y(2.)46 b Fl(char)h │ │ │ │ │ +TeXDict begin 11 10 bop 91 100 993 4 v 1174 100 a Fl(FrontMtx)28 │ │ │ │ │ +b Ff(:)41 b Fh(DRAFT)121 b Ff(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2815 100 V 993 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 │ │ │ │ │ @@ -5928,19 +5935,19 @@ │ │ │ │ │ (ultithreaded)g(and)f(MPI)h(factor)h(and)e(solv)m(e)i(metho)s(ds)f(to)g │ │ │ │ │ (load)h(the)227 5262 y(dequeue)30 b(with)g(the)h(activ)m(e)i(lea)m(v)m │ │ │ │ │ (es)f(in)e(the)h(fron)m(t)f(tree)h(with)f(resp)s(ect)h(to)g(the)f │ │ │ │ │ (thread)h(or)f(pro)s(cessor.)227 5407 y Fh(Err)-5 b(or)34 │ │ │ │ │ b(che)-5 b(cking:)40 b Fm(None)31 b(presen)m(tly)-8 b(.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 12 12 │ │ │ │ │ -TeXDict begin 12 11 bop 0 100 a Fm(12)p 182 100 1012 │ │ │ │ │ -4 v 1194 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(Jan)m(uary)g │ │ │ │ │ -(16,)i(2024)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 │ │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fm(12)p 182 100 993 4 │ │ │ │ │ +v 1175 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)i(2025)p 2908 100 V 111 399 a Fm(8.)46 │ │ │ │ │ +b Fl(ChvList)g(*)i(FrontMtx_postList)43 b(\()k(FrontMtx)f(*frontmtx,)f │ │ │ │ │ +(IV)i(*frontOwnersIV,)1659 511 y(int)g(lockflag)f(\))h(;)227 │ │ │ │ │ 666 y Fm(This)31 b(metho)s(d)h(is)g(called)h(b)m(y)e(the)h(m)m │ │ │ │ │ (ultithreaded)g(and)g(MPI)g(factor)g(metho)s(ds)g(to)g(create)i(and)d │ │ │ │ │ (return)g(a)227 779 y(list)g(ob)5 b(ject)32 b(to)f(hold)f(p)s(ostp)s │ │ │ │ │ (oned)f(c)m(hevrons)h(and)g(help)g(sync)m(hronize)g(the)h │ │ │ │ │ (factorization.)227 933 y Fh(Err)-5 b(or)34 b(che)-5 │ │ │ │ │ b(cking:)40 b Fm(None)31 b(presen)m(tly)-8 b(.)111 1129 │ │ │ │ │ y(9.)46 b Fl(ChvList)g(*)i(FrontMtx_aggregateList)41 │ │ │ │ │ @@ -6006,18 +6013,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 1012 4 v 1193 100 a Fl(FrontMtx)28 │ │ │ │ │ -b Ff(:)41 b Fh(DRAFT)121 b Ff(Jan)m(uary)30 b(16,)i(2024)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 │ │ │ │ │ +TeXDict begin 13 12 bop 91 100 993 4 v 1174 100 a Fl(FrontMtx)28 │ │ │ │ │ +b Ff(:)41 b Fh(DRAFT)121 b Ff(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2815 100 V 993 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 │ │ │ │ │ @@ -6084,42 +6091,43 @@ │ │ │ │ │ (ulating)i(up)s(dates)d(from)h(descenden)m(ts.)337 5107 │ │ │ │ │ y Fi(\210)45 b Fl(cpus[3])29 b Fm(|)h(time)h(sp)s(en)m(t)f(assem)m │ │ │ │ │ (bling)h(p)s(ostp)s(oned)e(data.)337 5257 y Fi(\210)45 │ │ │ │ │ b Fl(cpus[4])29 b Fm(|)h(time)h(sp)s(en)m(t)f(to)h(factor)g(the)g(fron) │ │ │ │ │ m(ts.)337 5407 y Fi(\210)45 b Fl(cpus[5])29 b Fm(|)h(time)h(sp)s(en)m │ │ │ │ │ (t)f(to)h(extract)h(p)s(ostp)s(oned)d(data.)p eop end │ │ │ │ │ %%Page: 14 14 │ │ │ │ │ -TeXDict begin 14 13 bop 0 100 a Fm(14)p 182 100 1012 │ │ │ │ │ -4 v 1194 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(Jan)m(uary)g │ │ │ │ │ -(16,)i(2024)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 │ │ │ │ │ -Fi(\210)45 b Fl(stats[1])28 b Fm(|)j(n)m(um)m(b)s(er)e(of)h(piv)m(ot)i │ │ │ │ │ -(tests.)337 1401 y Fi(\210)45 b Fl(stats[2])28 b Fm(|)j(n)m(um)m(b)s │ │ │ │ │ -(er)e(of)h(dela)m(y)m(ed)i(ro)m(ws)e(and)g(columns.)337 │ │ │ │ │ -1552 y Fi(\210)45 b Fl(stats[3])28 b Fm(|)j(n)m(um)m(b)s(er)e(of)h(en)m │ │ │ │ │ -(tries)h(in)f Fk(D)s Fm(.)337 1704 y Fi(\210)45 b Fl(stats[4])28 │ │ │ │ │ -b Fm(|)j(n)m(um)m(b)s(er)e(of)h(en)m(tries)h(in)f Fk(L)p │ │ │ │ │ -Fm(.)337 1855 y Fi(\210)45 b Fl(stats[5])28 b Fm(|)j(n)m(um)m(b)s(er)e │ │ │ │ │ -(of)h(en)m(tries)h(in)f Fk(U)10 b Fm(.)227 2054 y Fh(Err)-5 │ │ │ │ │ -b(or)34 b(che)-5 b(cking:)41 b Fm(If)30 b Fl(frontmtx)p │ │ │ │ │ -Fm(,)e Fl(pencil)p Fm(,)h Fl(cpus)g Fm(or)i Fl(stats)e │ │ │ │ │ -Fm(is)h Fl(NULL)p Fm(,)g(or)g(if)g Fl(msglvl)47 b(>)g(0)30 │ │ │ │ │ -b Fm(and)g Fl(msgFile)227 2167 y Fm(is)h Fl(NULL)p Fm(,)e(an)h(error)g │ │ │ │ │ -(message)i(is)e(prin)m(ted)g(and)g(the)h(program)f(exits.)0 │ │ │ │ │ -2450 y Fb(1.2.6)112 b(QR)38 b(factorization)f(utilit)m(y)h(metho)s(ds) │ │ │ │ │ -111 2652 y Fm(1.)46 b Fl(void)h(FrontMtx_QR_setup)c(\()k(FrontMtx)f │ │ │ │ │ -(*frontmtx,)f(InpMtx)h(*mtxA,)g(IVL)h(**prowsIVL,)1420 │ │ │ │ │ -2765 y(int)g(**pfirstnz,)e(int)i(msglvl,)f(FILE)g(*msgFile)g(\))h(;)227 │ │ │ │ │ -2920 y Fm(This)27 b(metho)s(d)g(sets)g(up)f(the)i Fl(rowsIVL)d │ │ │ │ │ +TeXDict begin 14 13 bop 0 100 a Fm(14)p 182 100 993 4 │ │ │ │ │ +v 1175 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)i(2025)p 2908 100 V 337 399 a Fi(\210)45 │ │ │ │ │ +b Fl(cpus[6])29 b Fm(|)h(time)h(sp)s(en)m(t)f(to)h(store)g(the)g │ │ │ │ │ +(factor)g(en)m(tries.)337 550 y Fi(\210)45 b Fl(cpus[7])29 │ │ │ │ │ +b Fm(|)h(miscellaneous)i(time.)337 701 y Fi(\210)45 b │ │ │ │ │ +Fl(cpus[8])29 b Fm(|)h(total)i(time)f(in)f(the)h(metho)s(d.)227 │ │ │ │ │ +900 y(On)f(return,)f(the)i Fl(stats[])d Fm(v)m(ector)k(is)f(\014lled)f │ │ │ │ │ +(with)g(the)h(follo)m(wing)g(information.)337 1098 y │ │ │ │ │ +Fi(\210)45 b Fl(stats[0])28 b Fm(|)j(n)m(um)m(b)s(er)e(of)h(piv)m(ots.) │ │ │ │ │ +337 1249 y Fi(\210)45 b Fl(stats[1])28 b Fm(|)j(n)m(um)m(b)s(er)e(of)h │ │ │ │ │ +(piv)m(ot)i(tests.)337 1401 y Fi(\210)45 b Fl(stats[2])28 │ │ │ │ │ +b Fm(|)j(n)m(um)m(b)s(er)e(of)h(dela)m(y)m(ed)i(ro)m(ws)e(and)g │ │ │ │ │ +(columns.)337 1552 y Fi(\210)45 b Fl(stats[3])28 b Fm(|)j(n)m(um)m(b)s │ │ │ │ │ +(er)e(of)h(en)m(tries)h(in)f Fk(D)s Fm(.)337 1704 y Fi(\210)45 │ │ │ │ │ +b Fl(stats[4])28 b Fm(|)j(n)m(um)m(b)s(er)e(of)h(en)m(tries)h(in)f │ │ │ │ │ +Fk(L)p Fm(.)337 1855 y Fi(\210)45 b Fl(stats[5])28 b │ │ │ │ │ +Fm(|)j(n)m(um)m(b)s(er)e(of)h(en)m(tries)h(in)f Fk(U)10 │ │ │ │ │ +b Fm(.)227 2054 y Fh(Err)-5 b(or)34 b(che)-5 b(cking:)41 │ │ │ │ │ +b Fm(If)30 b Fl(frontmtx)p Fm(,)e Fl(pencil)p Fm(,)h │ │ │ │ │ +Fl(cpus)g Fm(or)i Fl(stats)e Fm(is)h Fl(NULL)p Fm(,)g(or)g(if)g │ │ │ │ │ +Fl(msglvl)47 b(>)g(0)30 b Fm(and)g Fl(msgFile)227 2167 │ │ │ │ │ +y Fm(is)h Fl(NULL)p Fm(,)e(an)h(error)g(message)i(is)e(prin)m(ted)g │ │ │ │ │ +(and)g(the)h(program)f(exits.)0 2450 y Fb(1.2.6)112 b(QR)38 │ │ │ │ │ +b(factorization)f(utilit)m(y)h(metho)s(ds)111 2652 y │ │ │ │ │ +Fm(1.)46 b Fl(void)h(FrontMtx_QR_setup)c(\()k(FrontMtx)f(*frontmtx,)f │ │ │ │ │ +(InpMtx)h(*mtxA,)g(IVL)h(**prowsIVL,)1420 2765 y(int)g(**pfirstnz,)e │ │ │ │ │ +(int)i(msglvl,)f(FILE)g(*msgFile)g(\))h(;)227 2920 y │ │ │ │ │ +Fm(This)27 b(metho)s(d)g(sets)g(up)f(the)i Fl(rowsIVL)d │ │ │ │ │ Fm(and)i Fl(firstnz[])e Fm(data)j(structures.)39 b(The)27 │ │ │ │ │ b(address)f(of)i Fl(rowsIVL)d Fm(is)227 3033 y(placed)32 │ │ │ │ │ b(in)g Fl(*prowsIVL)d Fm(and)i(the)h(address)f(of)h Fl(firstnz)e │ │ │ │ │ Fm(is)i(placed)g(in)f Fl(*pfirstnz)p Fm(.)43 b(List)32 │ │ │ │ │ b Fl(J)f Fm(of)h Fl(rowsIVL)227 3146 y Fm(con)m(tains)26 │ │ │ │ │ b(the)g(ro)m(ws)e(of)i Fk(A)f Fm(that)g(will)g(b)s(e)g(assem)m(bled)g │ │ │ │ │ (in)m(to)h(fron)m(t)f Fl(J)p Fm(.)g(The)f(leading)i(column)f(with)f(a)i │ │ │ │ │ @@ -6156,17 +6164,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 1012 4 v 1193 100 a Fl(FrontMtx)28 │ │ │ │ │ -b Ff(:)41 b Fh(DRAFT)121 b Ff(Jan)m(uary)30 b(16,)i(2024)p │ │ │ │ │ -2796 100 V 1012 w Fm(15)227 399 y(and)27 b(up)s(date)g(matrices)h(are)g │ │ │ │ │ +TeXDict begin 15 14 bop 91 100 993 4 v 1174 100 a Fl(FrontMtx)28 │ │ │ │ │ +b Ff(:)41 b Fh(DRAFT)121 b Ff(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2815 100 V 993 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 │ │ │ │ │ @@ -6238,36 +6246,36 @@ │ │ │ │ │ h(the)g(factoriza-)227 5146 y(tion.)227 5294 y Fh(Err)-5 │ │ │ │ │ b(or)35 b(che)-5 b(cking:)41 b Fm(If)31 b Fl(frontmtx)p │ │ │ │ │ Fm(,)e Fl(frontJ)g Fm(or)i Fl(chvmanager)d Fm(is)j Fl(NULL)p │ │ │ │ │ Fm(,)f(or)h(if)g Fl(msglvl)46 b(>)i(0)31 b Fm(and)f Fl(msgFile)227 │ │ │ │ │ 5407 y Fm(is)h Fl(NULL)p Fm(,)e(an)h(error)g(message)i(is)e(prin)m(ted) │ │ │ │ │ g(and)g(the)h(program)f(exits.)p eop end │ │ │ │ │ %%Page: 16 16 │ │ │ │ │ -TeXDict begin 16 15 bop 0 100 a Fm(16)p 182 100 1012 │ │ │ │ │ -4 v 1194 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(Jan)m(uary)g │ │ │ │ │ -(16,)i(2024)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 │ │ │ │ │ -(and)227 969 y(upp)s(er)36 b(matrices,)41 b(and)c(up)s(dates)g(the)h │ │ │ │ │ -(blo)s(c)m(k)h(adjacency)f(ob)5 b(jects.)64 b(The)38 │ │ │ │ │ -b(c)m(hevron)g(submatrices)g Fk(L)3746 984 y Fj(@)t(J)5 │ │ │ │ │ -b(;J)227 1082 y Fm(and)30 b Fk(U)466 1097 y Fj(J)n(;@)t(J)643 │ │ │ │ │ -1082 y Fm(are)h(split)f(in)m(to)i Fk(L)1244 1096 y Fj(K)q(;J)1403 │ │ │ │ │ -1082 y Fm(and)d Fk(U)1641 1096 y Fj(J)n(;K)1797 1082 │ │ │ │ │ -y Fm(where)h Fk(K)c Fg(\\)20 b Fk(@)5 b(J)35 b Fg(6)p │ │ │ │ │ -Fm(=)25 b Fg(;)p Fm(.)227 1231 y Fh(Err)-5 b(or)33 b(che)-5 │ │ │ │ │ -b(cking:)39 b Fm(If)29 b Fl(frontmtx)d Fm(is)j Fl(NULL)p │ │ │ │ │ -Fm(,)f(or)h(if)g Fl(msglvl)e Fm(>)i(0)g(and)f Fl(msgFile)f │ │ │ │ │ -Fm(is)i Fl(NULL)p Fm(,)f(an)g(error)h(message)227 1344 │ │ │ │ │ -y(is)i(prin)m(ted)f(and)f(the)i(program)f(exits.)111 │ │ │ │ │ +TeXDict begin 16 15 bop 0 100 a Fm(16)p 182 100 993 4 │ │ │ │ │ +v 1175 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)i(2025)p 2908 100 V 0 399 a Fb(1.2.8)112 │ │ │ │ │ +b(P)m(ostpro)s(cessing)38 b(metho)s(ds)111 594 y Fm(1.)46 │ │ │ │ │ +b Fl(void)h(FrontMtx_postProcess)42 b(\()48 b(FrontMtx)d(*frontmtx,)g │ │ │ │ │ +(int)i(msglvl,)f(FILE)h(*msgFile)e(\))j(;)227 743 y Fm(This)31 │ │ │ │ │ +b(metho)s(d)g(do)s(es)g(p)s(ost-pro)s(cessing)g(c)m(hores)i(after)f │ │ │ │ │ +(the)f(factorization)k(is)c(complete.)46 b(If)31 b(piv)m(oting)i(w)m │ │ │ │ │ +(as)227 856 y(enabled,)25 b(the)f(metho)s(d)f(p)s(erm)m(utes)g(the)h │ │ │ │ │ +(ro)m(w)g(and)f(column)g(adjacency)i(ob)5 b(jects,)26 │ │ │ │ │ +b(p)s(erm)m(utes)d(the)h(lo)m(w)m(er)h(and)227 969 y(upp)s(er)36 │ │ │ │ │ +b(matrices,)41 b(and)c(up)s(dates)g(the)h(blo)s(c)m(k)h(adjacency)f(ob) │ │ │ │ │ +5 b(jects.)64 b(The)38 b(c)m(hevron)g(submatrices)g Fk(L)3746 │ │ │ │ │ +984 y Fj(@)t(J)5 b(;J)227 1082 y Fm(and)30 b Fk(U)466 │ │ │ │ │ +1097 y Fj(J)n(;@)t(J)643 1082 y Fm(are)h(split)f(in)m(to)i │ │ │ │ │ +Fk(L)1244 1096 y Fj(K)q(;J)1403 1082 y Fm(and)d Fk(U)1641 │ │ │ │ │ +1096 y Fj(J)n(;K)1797 1082 y Fm(where)h Fk(K)c Fg(\\)20 │ │ │ │ │ +b Fk(@)5 b(J)35 b Fg(6)p Fm(=)25 b Fg(;)p Fm(.)227 1231 │ │ │ │ │ +y Fh(Err)-5 b(or)33 b(che)-5 b(cking:)39 b Fm(If)29 b │ │ │ │ │ +Fl(frontmtx)d Fm(is)j Fl(NULL)p Fm(,)f(or)h(if)g Fl(msglvl)e │ │ │ │ │ +Fm(>)i(0)g(and)f Fl(msgFile)f Fm(is)i Fl(NULL)p Fm(,)f(an)g(error)h │ │ │ │ │ +(message)227 1344 y(is)i(prin)m(ted)f(and)f(the)i(program)f(exits.)111 │ │ │ │ │ 1530 y(2.)46 b Fl(void)h(FrontMtx_permuteUpperAdj)41 │ │ │ │ │ b(\()48 b(FrontMtx)d(*frontmtx,)1755 1642 y(int)h(msglvl,)g(FILE)h │ │ │ │ │ (*msgFile)e(\))j(;)227 1755 y(void)f(FrontMtx_permuteLowerAdj)41 │ │ │ │ │ b(\()48 b(FrontMtx)d(*frontmtx,)1755 1868 y(int)h(msglvl,)g(FILE)h │ │ │ │ │ (*msgFile)e(\))j(;)227 2018 y Fm(These)28 b(metho)s(ds)g(are)h(called)g │ │ │ │ │ (during)e(the)i(p)s(ostpro)s(cessing)f(step,)h(where)e(they)i(p)s(erm)m │ │ │ │ │ (ute)f(the)g(upp)s(er)f(and)227 2130 y(lo)m(w)m(er)34 │ │ │ │ │ @@ -6318,17 +6326,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 1012 4 v 1193 100 a Fl(FrontMtx)28 │ │ │ │ │ -b Ff(:)41 b Fh(DRAFT)121 b Ff(Jan)m(uary)30 b(16,)i(2024)p │ │ │ │ │ -2796 100 V 1012 w Fm(17)227 399 y(This)c(metho)s(d)g(creates)h(and)f │ │ │ │ │ +TeXDict begin 17 16 bop 91 100 993 4 v 1174 100 a Fl(FrontMtx)28 │ │ │ │ │ +b Ff(:)41 b Fh(DRAFT)121 b Ff(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2815 100 V 993 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 │ │ │ │ │ @@ -6396,50 +6404,51 @@ │ │ │ │ │ 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 1012 │ │ │ │ │ -4 v 1194 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(Jan)m(uary)g │ │ │ │ │ -(16,)i(2024)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 │ │ │ │ │ -b(Solv)m(e)g(metho)s(d)111 1380 y Fm(1.)46 b Fl(void)h(FrontMtx_solve)d │ │ │ │ │ -(\()j(FrontMtx)f(*frontmtx,)f(DenseMtx)g(*mtxX,)h(DenseMtx)g(*mtxB,)657 │ │ │ │ │ -1493 y(SubMtxManager)e(*mtxmanager,)g(double)j(cpus[],)e(int)i(msglvl,) │ │ │ │ │ -f(FILE)h(*msgFile)e(\))j(;)227 1642 y Fm(This)24 b(metho)s(d)f(is)h │ │ │ │ │ -(used)g(to)h(solv)m(e)g(one)g(of)f(three)h(linear)f(systems)g(of)h │ │ │ │ │ -(equations)g(|)f(\()p Fk(U)3144 1609 y Fj(T)3207 1642 │ │ │ │ │ -y Fm(+)8 b Fk(I)f Fm(\))p Fk(D)s Fm(\()p Fk(I)15 b Fm(+)8 │ │ │ │ │ -b Fk(U)i Fm(\))p Fk(X)32 b Fm(=)227 1755 y Fk(B)5 b Fm(,)28 │ │ │ │ │ -b(\()p Fk(U)461 1722 y Fj(H)542 1755 y Fm(+)14 b Fk(I)7 │ │ │ │ │ -b Fm(\))p Fk(D)s Fm(\()p Fk(I)21 b Fm(+)14 b Fk(U)c Fm(\))p │ │ │ │ │ -Fk(X)33 b Fm(=)25 b Fk(B)32 b Fm(or)27 b(\()p Fk(L)14 │ │ │ │ │ -b Fm(+)g Fk(I)7 b Fm(\))p Fk(D)s Fm(\()p Fk(I)21 b Fm(+)14 │ │ │ │ │ -b Fk(U)c Fm(\))p Fk(X)33 b Fm(=)25 b Fk(B)5 b Fm(.)39 │ │ │ │ │ -b(En)m(tries)27 b(of)h Fk(B)j Fm(are)d Fh(r)-5 b(e)g(ad)29 │ │ │ │ │ -b Fm(from)d Fl(mtxB)h Fm(and)227 1867 y(en)m(tries)34 │ │ │ │ │ -b(of)f Fk(X)40 b Fm(are)33 b(written)g(to)h Fl(mtxX)p │ │ │ │ │ -Fm(.)e(Therefore,)h Fl(mtxX)f Fm(and)g Fl(mtxB)g Fm(can)h(b)s(e)g(the)g │ │ │ │ │ -(same)g(ob)5 b(ject.)49 b(\(Note,)227 1980 y(this)41 │ │ │ │ │ -b(do)s(es)g(not)h(hold)e(true)h(for)g(an)g(MPI)h(factorization)h(with)e │ │ │ │ │ -(piv)m(oting.\))75 b(The)41 b Fl(mtxmanager)d Fm(ob)5 │ │ │ │ │ -b(ject)227 2093 y(manages)32 b(the)g(w)m(orking)f(storage)i(using)e │ │ │ │ │ -(the)g(solv)m(e.)44 b(On)31 b(return)f(the)h Fl(cpus[])f │ │ │ │ │ -Fm(v)m(ector)j(is)e(\014lled)g(with)g(the)227 2206 y(follo)m(wing.)337 │ │ │ │ │ -2390 y Fi(\210)45 b Fl(cpus[0])29 b Fm(|)h(set)h(up)e(the)i(solv)m(es) │ │ │ │ │ -337 2532 y Fi(\210)45 b Fl(cpus[1])29 b Fm(|)h(fetc)m(h)h(righ)m(t)g │ │ │ │ │ -(hand)e(side)i(and)e(store)i(solution)337 2675 y Fi(\210)45 │ │ │ │ │ +TeXDict begin 18 17 bop 0 100 a Fm(18)p 182 100 993 4 │ │ │ │ │ +v 1175 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)i(2025)p 2908 100 V 111 399 a Fm(8.)46 │ │ │ │ │ +b Fl(void)h(FrontMtx_loadActiveRoots)41 b(\()48 b(FrontMtx)d │ │ │ │ │ +(*frontmtx,)g(char)i(status[],)1755 511 y(char)f(activeFlag,)f(Ideq)i │ │ │ │ │ +(*dequeue)e(\))j(;)227 660 y Fm(This)43 b(metho)s(d)f(loads)i(the)g │ │ │ │ │ +(activ)m(e)h(ro)s(ots)f(for)f(a)g(thread)g(or)h(a)f(pro)s(cessor)g(in)m │ │ │ │ │ +(to)h(the)g(dequeue)f(for)g(the)227 773 y(bac)m(kw)m(ard)31 │ │ │ │ │ +b(solv)m(e.)227 921 y Fh(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ │ +b Fm(None)31 b(presen)m(tly)-8 b(.)0 1186 y Fb(1.2.10)113 │ │ │ │ │ +b(Serial)38 b(Solv)m(e)g(metho)s(d)111 1380 y Fm(1.)46 │ │ │ │ │ +b Fl(void)h(FrontMtx_solve)d(\()j(FrontMtx)f(*frontmtx,)f(DenseMtx)g │ │ │ │ │ +(*mtxX,)h(DenseMtx)g(*mtxB,)657 1493 y(SubMtxManager)e(*mtxmanager,)g │ │ │ │ │ +(double)j(cpus[],)e(int)i(msglvl,)f(FILE)h(*msgFile)e(\))j(;)227 │ │ │ │ │ +1642 y Fm(This)24 b(metho)s(d)f(is)h(used)g(to)h(solv)m(e)g(one)g(of)f │ │ │ │ │ +(three)h(linear)f(systems)g(of)h(equations)g(|)f(\()p │ │ │ │ │ +Fk(U)3144 1609 y Fj(T)3207 1642 y Fm(+)8 b Fk(I)f Fm(\))p │ │ │ │ │ +Fk(D)s Fm(\()p Fk(I)15 b Fm(+)8 b Fk(U)i Fm(\))p Fk(X)32 │ │ │ │ │ +b Fm(=)227 1755 y Fk(B)5 b Fm(,)28 b(\()p Fk(U)461 1722 │ │ │ │ │ +y Fj(H)542 1755 y Fm(+)14 b Fk(I)7 b Fm(\))p Fk(D)s Fm(\()p │ │ │ │ │ +Fk(I)21 b Fm(+)14 b Fk(U)c Fm(\))p Fk(X)33 b Fm(=)25 │ │ │ │ │ +b Fk(B)32 b Fm(or)27 b(\()p Fk(L)14 b Fm(+)g Fk(I)7 b │ │ │ │ │ +Fm(\))p Fk(D)s Fm(\()p Fk(I)21 b Fm(+)14 b Fk(U)c Fm(\))p │ │ │ │ │ +Fk(X)33 b Fm(=)25 b Fk(B)5 b Fm(.)39 b(En)m(tries)27 │ │ │ │ │ +b(of)h Fk(B)j Fm(are)d Fh(r)-5 b(e)g(ad)29 b Fm(from)d │ │ │ │ │ +Fl(mtxB)h Fm(and)227 1867 y(en)m(tries)34 b(of)f Fk(X)40 │ │ │ │ │ +b Fm(are)33 b(written)g(to)h Fl(mtxX)p Fm(.)e(Therefore,)h │ │ │ │ │ +Fl(mtxX)f Fm(and)g Fl(mtxB)g Fm(can)h(b)s(e)g(the)g(same)g(ob)5 │ │ │ │ │ +b(ject.)49 b(\(Note,)227 1980 y(this)41 b(do)s(es)g(not)h(hold)e(true)h │ │ │ │ │ +(for)g(an)g(MPI)h(factorization)h(with)e(piv)m(oting.\))75 │ │ │ │ │ +b(The)41 b Fl(mtxmanager)d Fm(ob)5 b(ject)227 2093 y(manages)32 │ │ │ │ │ +b(the)g(w)m(orking)f(storage)i(using)e(the)g(solv)m(e.)44 │ │ │ │ │ +b(On)31 b(return)f(the)h Fl(cpus[])f Fm(v)m(ector)j(is)e(\014lled)g │ │ │ │ │ +(with)g(the)227 2206 y(follo)m(wing.)337 2390 y Fi(\210)45 │ │ │ │ │ +b Fl(cpus[0])29 b Fm(|)h(set)h(up)e(the)i(solv)m(es)337 │ │ │ │ │ +2532 y Fi(\210)45 b Fl(cpus[1])29 b Fm(|)h(fetc)m(h)h(righ)m(t)g(hand)e │ │ │ │ │ +(side)i(and)e(store)i(solution)337 2675 y Fi(\210)45 │ │ │ │ │ b Fl(cpus[2])29 b Fm(|)h(forw)m(ard)g(solv)m(e)337 2817 │ │ │ │ │ y Fi(\210)45 b Fl(cpus[3])29 b Fm(|)h(diagonal)i(solv)m(e)337 │ │ │ │ │ 2959 y Fi(\210)45 b Fl(cpus[4])29 b Fm(|)h(bac)m(kw)m(ard)h(solv)m(e) │ │ │ │ │ 337 3102 y Fi(\210)45 b Fl(cpus[5])29 b Fm(|)h(total)i(time)f(in)f(the) │ │ │ │ │ h(metho)s(d.)227 3285 y Fh(Err)-5 b(or)33 b(che)-5 b(cking:)39 │ │ │ │ │ b Fm(If)28 b Fl(frontmtx)p Fm(,)f Fl(mtxB)g Fm(or)i Fl(cpus)e │ │ │ │ │ Fm(is)i Fl(NULL)p Fm(,)e(or)i(if)f Fl(msglvl)f Fm(>)h(0)h(and)f │ │ │ │ │ @@ -6479,17 +6488,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 1012 4 v 1193 100 a Fl(FrontMtx)28 │ │ │ │ │ -b Ff(:)41 b Fh(DRAFT)121 b Ff(Jan)m(uary)30 b(16,)i(2024)p │ │ │ │ │ -2796 100 V 1012 w Fm(19)337 399 y Fi(\210)45 b Fl(cpus[4])29 │ │ │ │ │ +TeXDict begin 19 18 bop 91 100 993 4 v 1174 100 a Fl(FrontMtx)28 │ │ │ │ │ +b Ff(:)41 b Fh(DRAFT)121 b Ff(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2815 100 V 993 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 │ │ │ │ │ @@ -6551,20 +6560,20 @@ │ │ │ │ │ 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 1012 │ │ │ │ │ -4 v 1194 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(Jan)m(uary)g │ │ │ │ │ -(16,)i(2024)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 │ │ │ │ │ +TeXDict begin 20 19 bop 0 100 a Fm(20)p 182 100 993 4 │ │ │ │ │ +v 1175 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)i(2025)p 2908 100 V 227 399 a Fm(This)d(metho)s(d)g │ │ │ │ │ +(computes)g(and)g(return)f(the)i(n)m(um)m(b)s(er)e(of)h(\015oating)i(p) │ │ │ │ │ +s(oin)m(t)e(op)s(erations)h(for)f(a)h(solv)m(e)g(with)g(a)227 │ │ │ │ │ +511 y(single)h(righ)m(t)g(hand)f(side.)227 664 y Fh(Err)-5 │ │ │ │ │ b(or)29 b(che)-5 b(cking:)37 b Fm(If)24 b Fl(frontmtx)e │ │ │ │ │ Fm(is)i Fl(NULL)p Fm(,)g(or)g(if)g Fl(type)f Fm(or)i │ │ │ │ │ Fl(symmetryflag)c Fm(are)j(in)m(v)-5 b(alid,)27 b(an)d(error)g(message) │ │ │ │ │ 227 777 y(is)31 b(prin)m(ted)f(and)f(the)i(program)f(exits.)0 │ │ │ │ │ 1053 y Fb(1.2.13)113 b(IO)37 b(metho)s(ds)111 1252 y │ │ │ │ │ Fm(1.)46 b Fl(int)h(FrontMtx_readFromFile)42 b(\()48 │ │ │ │ │ b(FrontMtx)d(*frontmtx,)g(char)i(*fn)g(\))g(;)227 1405 │ │ │ │ │ @@ -6638,17 +6647,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 1012 4 v 1193 100 a Fl(FrontMtx)28 │ │ │ │ │ -b Ff(:)41 b Fh(DRAFT)121 b Ff(Jan)m(uary)30 b(16,)i(2024)p │ │ │ │ │ -2796 100 V 1012 w Fm(21)111 399 y(7.)46 b Fl(int)h │ │ │ │ │ +TeXDict begin 21 20 bop 91 100 993 4 v 1174 100 a Fl(FrontMtx)28 │ │ │ │ │ +b Ff(:)41 b Fh(DRAFT)121 b Ff(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2815 100 V 993 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 │ │ │ │ │ @@ -6711,23 +6720,23 @@ │ │ │ │ │ 4980 y Fm(metho)s(d.)337 5122 y Fi(\210)45 b Fm(The)30 │ │ │ │ │ b Fl(seed)f Fm(parameter)i(is)g(a)f(random)g(n)m(um)m(b)s(er)f(seed.) │ │ │ │ │ 337 5265 y Fi(\210)45 b Fm(The)30 b Fl(type)f Fm(parameter)i(sp)s │ │ │ │ │ (eci\014es)f(a)h(real)g(or)f(complex)h(linear)g(system.)500 │ │ │ │ │ 5407 y Fe({)45 b Fl(type)i(=)g(1)h(\(SPOOLES)p 1417 5407 │ │ │ │ │ V 32 w(REAL\))29 b Fm(for)h(real,)p eop end │ │ │ │ │ %%Page: 22 22 │ │ │ │ │ -TeXDict begin 22 21 bop 0 100 a Fm(22)p 182 100 1012 │ │ │ │ │ -4 v 1194 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(Jan)m(uary)g │ │ │ │ │ -(16,)i(2024)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 │ │ │ │ │ +TeXDict begin 22 21 bop 0 100 a Fm(22)p 182 100 993 4 │ │ │ │ │ +v 1175 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)i(2025)p 2908 100 V 500 399 a Fe({)45 │ │ │ │ │ +b Fl(type)i(=)g(2)h(\(SPOOLES)p 1417 399 29 4 v 32 w(COMPLEX\))28 │ │ │ │ │ +b Fm(for)i(complex.)337 544 y Fi(\210)45 b Fm(The)30 │ │ │ │ │ +b Fl(symmetryflag)d Fm(parameter)k(sp)s(eci\014es)f(the)h(symmetry)f │ │ │ │ │ +(of)g(the)h(matrix.)500 690 y Fe({)45 b Fl(type)i(=)g(0)h(\(SPOOLES)p │ │ │ │ │ +1417 690 V 32 w(SYMMETRIC\))28 b Fm(for)i Fk(A)g Fm(real)h(or)g │ │ │ │ │ +(complex)g(symmetric,)500 820 y Fe({)45 b Fl(type)i(=)g(1)h(\(SPOOLES)p │ │ │ │ │ 1417 820 V 32 w(HERMITIAN\))28 b Fm(for)i Fk(A)g Fm(complex)h │ │ │ │ │ (Hermitian,)500 949 y Fe({)45 b Fl(type)i(=)g(2)h(\(SPOOLES)p │ │ │ │ │ 1417 949 V 32 w(NONSYMMETRIC\))427 1095 y Fm(for)30 b │ │ │ │ │ Fk(A)h Fm(real)g(or)f(complex)h(nonsymmetric.)337 1241 │ │ │ │ │ y Fi(\210)45 b Fm(The)30 b Fl(sparsityflag)d Fm(parameter)k(signals)g │ │ │ │ │ (a)g(direct)g(or)f(appro)m(ximate)h(factorization.)500 │ │ │ │ │ 1387 y Fe({)45 b Fl(sparsityflag)g(=)i(0)h(\(FRONTMTX)p │ │ │ │ │ @@ -6791,17 +6800,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 1012 4 v 1193 100 a Fl(FrontMtx)28 │ │ │ │ │ -b Ff(:)41 b Fh(DRAFT)121 b Ff(Jan)m(uary)30 b(16,)i(2024)p │ │ │ │ │ -2796 100 V 1012 w Fm(23)337 399 y Fi(\210)45 b Fm(The)30 │ │ │ │ │ +TeXDict begin 23 22 bop 91 100 993 4 v 1174 100 a Fl(FrontMtx)28 │ │ │ │ │ +b Ff(:)41 b Fh(DRAFT)121 b Ff(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2815 100 V 993 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 │ │ │ │ │ @@ -6891,16 +6900,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 1012 4 v 1193 100 a Fl(FrontMtx)28 │ │ │ │ │ -b Ff(:)41 b Fh(DRAFT)121 b Ff(Jan)m(uary)30 b(16,)i(2024)p │ │ │ │ │ -2796 100 V 1012 w Fm(25)0 399 y Fl(FrontMtx)p 390 399 │ │ │ │ │ +TeXDict begin 25 24 bop 91 100 993 4 v 1174 100 a Fl(FrontMtx)28 │ │ │ │ │ +b Ff(:)41 b Fh(DRAFT)121 b Ff(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2815 100 V 993 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 16, 2024 │ │ │ │ │ │ + 2 FrontMtx : DRAFT February 18, 2025 │ │ │ │ │ │ The factorization is performed using a one dimensional decomposition of the global sparse │ │ │ │ │ │ matrix. A typical front of the matrix is found the shaded portion of the figure below. │ │ │ │ │ │ Afront is indivisible, it is found on one processor, and one processor or one thread is responsible │ │ │ │ │ │ for its internal computations. This is extremely important if we want to support pivoting for │ │ │ │ │ │ stability, for deciding how to choose the pivot elements in the front requires continuous up-to- │ │ │ │ │ │ date information about all the entries in the front. If a front were partitioned among threads or │ │ │ │ │ │ processors, the cost of the communication to select pivot elements would be intolerable. │ │ │ │ │ │ @@ -56,15 +56,15 @@ │ │ │ │ │ │ • The linear combination A+σB is found in a Pencil object. │ │ │ │ │ │ • The ETree object contains the front tree that governs the factorization and solve. Inside │ │ │ │ │ │ this object are the dimensions of each front (the number of internal and external rows and │ │ │ │ │ │ columns), the tree connectivity of the fronts, and a map from each vertex to the front that │ │ │ │ │ │ contains it as an internal row and column. The FrontMtx object contains a pointer to an │ │ │ │ │ │ ETree object, but it does not modify the object, nor does it own the storage for the ETree │ │ │ │ │ │ object. Thus multiple front matrices can all point to the same ETree object simultaneously. │ │ │ │ │ │ - FrontMtx : DRAFT January 16, 2024 3 │ │ │ │ │ │ + FrontMtx : DRAFT February 18, 2025 3 │ │ │ │ │ │ • An IVL object (Integer Vector List), contains the symbolic factorization. For each front, it │ │ │ │ │ │ gives the list of internal and external rows and columns, used to initialize a front prior to its │ │ │ │ │ │ factorization. For a factorization without pivoting, this object stores the index information │ │ │ │ │ │ for the factors, and so is used during the forward and backsolves. For a factorization with │ │ │ │ │ │ pivoting, the index information for a front may change, so this object is not used during the │ │ │ │ │ │ solves. As for the ETree object, the symbolic factorization is neither modified or owned by │ │ │ │ │ │ the front matrix object. │ │ │ │ │ │ @@ -96,15 +96,15 @@ │ │ │ │ │ │ postponed data (when pivoting is enabled) or aggregate data (in a parallel factorization), and │ │ │ │ │ │ the factorization of the fully assembled front, take place within the context of this object. │ │ │ │ │ │ • The SubMtx object is used to store a submatrix of the factor matrices D, L and U. Once a │ │ │ │ │ │ front is factored it is split into one or more of these submatrix objects. After the factorization │ │ │ │ │ │ is complete, the data structures are postprocessed to yield submatrices that contain the │ │ │ │ │ │ coupling between fronts. The working storage during the solves is also managed by SubMtx │ │ │ │ │ │ objects. │ │ │ │ │ │ - 4 FrontMtx : DRAFT January 16, 2024 │ │ │ │ │ │ + 4 FrontMtx : DRAFT February 18, 2025 │ │ │ │ │ │ • Each submatrix represents the coupling between two fronts, I and J. To enable rapid random │ │ │ │ │ │ access to these submatrices, we use a I2Ohash object that is a hash table whose keys are two │ │ │ │ │ │ integers and whose data is a void * pointer. │ │ │ │ │ │ • The set of nonzero submatrices, i.e., the nonzero couplings between two fronts, is kept in │ │ │ │ │ │ one or two IVL objects. This information is necessary for the factorization and forward and │ │ │ │ │ │ backsolves. │ │ │ │ │ │ • The factorization and solves require lists of fronts and submatrices to manage assembly of │ │ │ │ │ │ @@ -131,15 +131,15 @@ │ │ │ │ │ │ • int pivotingflag : flag to specify pivoting for stability, │ │ │ │ │ │ – SPOOLES NO PIVOTING — pivoting not used │ │ │ │ │ │ – SPOOLES PIVOTING — pivoting used │ │ │ │ │ │ • int sparsityflag : flag to specify storage of factors. │ │ │ │ │ │ – 0 — each front is dense │ │ │ │ │ │ – 1 — a front may be sparse due to entries dropped because they are below a drop │ │ │ │ │ │ tolerance. │ │ │ │ │ │ - FrontMtx : DRAFT January 16, 2024 5 │ │ │ │ │ │ + FrontMtx : DRAFT February 18, 2025 5 │ │ │ │ │ │ • int dataMode : flag to specify data storage. │ │ │ │ │ │ – 1 — one-dimensional, used during the factorization. │ │ │ │ │ │ – 2 — two-dimensional, used during the solves. │ │ │ │ │ │ • int nentD : number of entries in D │ │ │ │ │ │ • int nentL : number of entries in L │ │ │ │ │ │ • int nentU : number of entries in U │ │ │ │ │ │ • Tree *tree: Treeobjectthatholdsthetreeoffronts. Note, normallythisisfrontETree->tree, │ │ │ │ │ │ @@ -165,15 +165,15 @@ │ │ │ │ │ │ used only during a nonsymmetric factorization. │ │ │ │ │ │ • SubMtx **p mtxLNJ : a vector of pointers to submatrices in L that are off the block diagonal, │ │ │ │ │ │ used only during a nonsymmetric factorization. │ │ │ │ │ │ • I2Ohash *lowerhash : pointer to a I2Ohash hash table for submatrices in L, used during │ │ │ │ │ │ the solves. │ │ │ │ │ │ • I2Ohash *upperhash : pointer to a I2Ohash hash table for submatrices in U, used during │ │ │ │ │ │ the solves. │ │ │ │ │ │ - 6 FrontMtx : DRAFT January 16, 2024 │ │ │ │ │ │ + 6 FrontMtx : DRAFT February 18, 2025 │ │ │ │ │ │ • SubMtxManager *manager : pointer to an object that manages the instances of submatrices │ │ │ │ │ │ during the factors and solves. │ │ │ │ │ │ • Lock *lock : pointer to a Lock lock used in a multithreaded environment to ensure exlusive │ │ │ │ │ │ access while allocating storage in the IV and IVL objects. This is not used in a serial or MPI │ │ │ │ │ │ environment. │ │ │ │ │ │ • int nlocks : number of times the lock has been locked. │ │ │ │ │ │ • PatchAndGo *info : this is a pointer to an object that is used by the Chv object during the │ │ │ │ │ │ @@ -196,15 +196,15 @@ │ │ │ │ │ │ • FRONTMTX IS 1D MODE(frontmtx) is 1 if the factor are still stored as a one-dimensional data │ │ │ │ │ │ decomposition (i.e., the matrix has not yet been post-processed), and 0 otherwise. │ │ │ │ │ │ • FRONTMTX IS 2D MODE(frontmtx) is 1 if the factor are stored as a two-dimensional data │ │ │ │ │ │ decomposition (i.e., the matrix has been post-processed), and 0 otherwise. │ │ │ │ │ │ 1.2 Prototypes and descriptions of FrontMtx methods │ │ │ │ │ │ This section contains brief descriptions including prototypes of all methods that belong to the │ │ │ │ │ │ FrontMtx object. │ │ │ │ │ │ - FrontMtx : DRAFT January 16, 2024 7 │ │ │ │ │ │ + FrontMtx : DRAFT February 18, 2025 7 │ │ │ │ │ │ 1.2.1 Basic methods │ │ │ │ │ │ As usual, there are four basic methods to support object creation, setting default fields, clearing │ │ │ │ │ │ any allocated data, and free’ing the object. │ │ │ │ │ │ 1. FrontMtx * FrontMtx_new ( void ) ; │ │ │ │ │ │ This method simply allocates storage for the FrontMtx structure and then sets the default │ │ │ │ │ │ fields by a call to FrontMtx setDefaultFields(). │ │ │ │ │ │ 2. void FrontMtx_setDefaultFields ( FrontMtx *frontmtx ) ; │ │ │ │ │ │ @@ -231,15 +231,15 @@ │ │ │ │ │ │ 1.2.2 Instance methods │ │ │ │ │ │ 1. int FrontMtx_nfront ( FrontMtx *frontmtx ) ; │ │ │ │ │ │ This method returns the number of fronts in the matrix. │ │ │ │ │ │ Error checking: If frontmtx is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 2. int FrontMtx_neqns ( FrontMtx *frontmtx ) ; │ │ │ │ │ │ This method returns the number of equations in the matrix. │ │ │ │ │ │ Error checking: If frontmtx is NULL, an error message is printed and the program exits. │ │ │ │ │ │ - 8 FrontMtx : DRAFT January 16, 2024 │ │ │ │ │ │ + 8 FrontMtx : DRAFT February 18, 2025 │ │ │ │ │ │ 3. Tree * FrontMtx_frontTree ( FrontMtx *frontmtx ) ; │ │ │ │ │ │ This method returns the Tree object for the fronts. │ │ │ │ │ │ Error checking: If frontmtx is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 4. void FrontMtx_initialFrontDimensions ( FrontMtx *frontmtx, int J, │ │ │ │ │ │ int *pnD, int *pnL, int *pnU, int *pnbytes ) ; │ │ │ │ │ │ This method fills the four pointer arguments with the number of internal rows and columns, │ │ │ │ │ │ number of rows in the lower block, number of columns in the upper block, and number of │ │ │ │ │ │ @@ -269,15 +269,15 @@ │ │ │ │ │ │ Error checking: If frontmtx, pnrow or pindices is NULL, or if J is not in [0,nfront), an │ │ │ │ │ │ error message is printed and the program exits. │ │ │ │ │ │ 9. SubMtx * FrontMtx_diagMtx ( FrontMtx *frontmtx, int J ) ; │ │ │ │ │ │ This method returns a pointer to the object that contains submatrix D . │ │ │ │ │ │ J,J │ │ │ │ │ │ Error checking: If frontmtx is NULL, or if J is not in [0,nfront), an error message is printed │ │ │ │ │ │ and the program exits. │ │ │ │ │ │ - FrontMtx : DRAFT January 16, 2024 9 │ │ │ │ │ │ + FrontMtx : DRAFT February 18, 2025 9 │ │ │ │ │ │ 10. SubMtx * FrontMtx_upperMtx ( FrontMtx *frontmtx, int J, int K ) ; │ │ │ │ │ │ This method returns a pointer to the object that contains submatrix UJ,K. If K = nfront, │ │ │ │ │ │ then the object containing UJ,∂J is returned. │ │ │ │ │ │ Error checking: If frontmtx is NULL, or if J is not in [0,nfront), or if K is not in [0,nfront], │ │ │ │ │ │ an error message is printed and the program exits. │ │ │ │ │ │ 11. SubMtx * FrontMtx_lowerMtx ( FrontMtx *frontmtx, int K, int J ) ; │ │ │ │ │ │ This method returns a pointer to the object that contains submatrix LK,J. If K = nfront, │ │ │ │ │ │ @@ -304,15 +304,15 @@ │ │ │ │ │ │ Error checking: If frontmtx is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 16. IVL * FrontMtx_upperBlockIVL ( FrontMtx *frontmtx ) ; │ │ │ │ │ │ This method returns a pointer to the IVL object that holds the upper blocks. │ │ │ │ │ │ Error checking: If frontmtx is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 17. IVL * FrontMtx_lowerBlockIVL ( FrontMtx *frontmtx ) ; │ │ │ │ │ │ This method returns a pointer to the IVL object that holds the lower blocks. │ │ │ │ │ │ Error checking: If frontmtx is NULL, an error message is printed and the program exits. │ │ │ │ │ │ - 10 FrontMtx : DRAFT January 16, 2024 │ │ │ │ │ │ + 10 FrontMtx : DRAFT February 18, 2025 │ │ │ │ │ │ 1.2.3 Initialization methods │ │ │ │ │ │ 1. void FrontMtx_init ( FrontMtx *frontmtx, ETree *frontETree, │ │ │ │ │ │ IVL *symbfacIVL, int type, int symmetryflag, int sparsityflag, │ │ │ │ │ │ int pivotingflag, int lockflag, int myid, IV *ownersIV, │ │ │ │ │ │ SubMtxManager *manager, int msglvl, FILE *msgFile ) ; │ │ │ │ │ │ This method initializes the object, allocating and initializing the internal objects as necessary. │ │ │ │ │ │ See the previous section on data structures for the meanings of the type, symmetryflag, │ │ │ │ │ │ @@ -342,15 +342,15 @@ │ │ │ │ │ │ 1. void FrontMtx_initializeFront ( FrontMtx *frontmtx, Chv *frontJ, int J ) ; │ │ │ │ │ │ This method is called to initialize a front. The number of internal rows and columns is found │ │ │ │ │ │ from the front ETree object and the row and column indices are obtained from the symbolic │ │ │ │ │ │ factorization IVL object. The front Chv object is initialized via a call to Chv init(), and the │ │ │ │ │ │ column indices and row indices (when nonsymemtric) are copied. Finally the front’s entries │ │ │ │ │ │ are zeroed via a call to Chv zero(). │ │ │ │ │ │ Error checking: None presently. │ │ │ │ │ │ - FrontMtx : DRAFT January 16, 2024 11 │ │ │ │ │ │ + FrontMtx : DRAFT February 18, 2025 11 │ │ │ │ │ │ 2. char FrontMtx_factorVisit ( FrontMtx *frontmtx, Pencil *pencil, int J, │ │ │ │ │ │ int myid, int owners[], Chv *fronts[], int lookahead, double tau, │ │ │ │ │ │ double droptol, char status[], IP *heads[], IV *pivotsizesIV, DV *workDV, │ │ │ │ │ │ int parent[], ChvList *aggList, ChvList *postList, ChvManager *chvmanager, │ │ │ │ │ │ int stats[], double cpus[], int msglvl, FILE *msgFile ) ; │ │ │ │ │ │ This method is called during the serial, multithreaded and MPI factorizations when front J │ │ │ │ │ │ is visited during the bottom-up traversal of the tree. │ │ │ │ │ │ @@ -382,15 +382,15 @@ │ │ │ │ │ │ Error checking: If frontmtx, owners or status is NULL, or if myid < 0, an error message is │ │ │ │ │ │ printed and the program exits. │ │ │ │ │ │ 7. void FrontMtx_loadActiveLeaves ( FrontMtx *frontmtx, char status[], │ │ │ │ │ │ char activeFlag, Ideq *dequeue ) ; │ │ │ │ │ │ This method is called by the multithreaded and MPI factor and solve methods to load the │ │ │ │ │ │ dequeue with the active leaves in the front tree with respect to the thread or processor. │ │ │ │ │ │ Error checking: None presently. │ │ │ │ │ │ - 12 FrontMtx : DRAFT January 16, 2024 │ │ │ │ │ │ + 12 FrontMtx : DRAFT February 18, 2025 │ │ │ │ │ │ 8. ChvList * FrontMtx_postList ( FrontMtx *frontmtx, IV *frontOwnersIV, │ │ │ │ │ │ int lockflag ) ; │ │ │ │ │ │ This method is called by the multithreaded and MPI factor methods to create and return a │ │ │ │ │ │ list object to hold postponed chevrons and help synchronize the factorization. │ │ │ │ │ │ Error checking: None presently. │ │ │ │ │ │ 9. ChvList * FrontMtx_aggregateList ( FrontMtx *frontmtx, │ │ │ │ │ │ IV *frontOwnersIV, int lockflag ) ; │ │ │ │ │ │ @@ -421,15 +421,15 @@ │ │ │ │ │ │ the list in postponedlist. If this list is empty, a new front is created to hold the aggregate │ │ │ │ │ │ updates and the postponed data, and the chvmanager object receives the aggregate and │ │ │ │ │ │ postponed Chv objects. The number of delayed rows and columns is returned in *pndelay — │ │ │ │ │ │ this is used during the factorization of the front that follows immediately. │ │ │ │ │ │ Error checking: None presently. │ │ │ │ │ │ 13. FrontMtx_storePostponedData ( FrontMtx *frontmtx, Chv *frontJ, │ │ │ │ │ │ int npost, int K, ChvList *postponedlist, ChvManager *chvmanager ) ; │ │ │ │ │ │ - FrontMtx : DRAFT January 16, 2024 13 │ │ │ │ │ │ + FrontMtx : DRAFT February 18, 2025 13 │ │ │ │ │ │ This method is used to store any postponed rows and columns from the current front frontJ │ │ │ │ │ │ into a Chv object obtained from the chvmanager object and place it into the list of postponed │ │ │ │ │ │ objects for K, its parent, found in the postponedlist object. The frontJ object is unchanged │ │ │ │ │ │ by this method. │ │ │ │ │ │ Error checking: None presently. │ │ │ │ │ │ 14. FrontMtx_storeFront ( FrontMtx *frontmtx, Chv *frontJ, IV *pivotsizesIV, │ │ │ │ │ │ double droptol, int msglvl, FILE *msgFile ) ; │ │ │ │ │ │ @@ -459,15 +459,15 @@ │ │ │ │ │ │ following information. │ │ │ │ │ │ • cpus[0] — time spent initializing the fronts. │ │ │ │ │ │ • cpus[1] — time spent loading the original entries. │ │ │ │ │ │ • cpus[2] — time spent accumulating updates from descendents. │ │ │ │ │ │ • cpus[3] — time spent assembling postponed data. │ │ │ │ │ │ • cpus[4] — time spent to factor the fronts. │ │ │ │ │ │ • cpus[5] — time spent to extract postponed data. │ │ │ │ │ │ - 14 FrontMtx : DRAFT January 16, 2024 │ │ │ │ │ │ + 14 FrontMtx : DRAFT February 18, 2025 │ │ │ │ │ │ • cpus[6] — time spent to store the factor entries. │ │ │ │ │ │ • cpus[7] — miscellaneous time. │ │ │ │ │ │ • cpus[8] — total time in the method. │ │ │ │ │ │ Onreturn, the stats[] vector is filled with the following information. │ │ │ │ │ │ • stats[0] — number of pivots. │ │ │ │ │ │ • stats[1] — number of pivot tests. │ │ │ │ │ │ • stats[2] — number of delayed rows and columns. │ │ │ │ │ │ @@ -495,15 +495,15 @@ │ │ │ │ │ │ workDV, cpus or pfacops is NULL, or if msglvl > 0 and msgFile is NULL, an error message │ │ │ │ │ │ is printed and the program exits. │ │ │ │ │ │ 3. A2 * FrontMtx_QR_assembleFront ( FrontMtx *frontmtx, int J, InpMtx *mtxA, │ │ │ │ │ │ IVL *rowsIVL, int firstnz[], int colmap[], Chv *firstchild, │ │ │ │ │ │ DV *workDV, int msglvl, FILE *msgFile ) ; │ │ │ │ │ │ This method creates an A2 object to hold the front, assembles any original rows of A and │ │ │ │ │ │ any update matrices from the children into the front, and then returns the front. The rows │ │ │ │ │ │ - FrontMtx : DRAFT January 16, 2024 15 │ │ │ │ │ │ + FrontMtx : DRAFT February 18, 2025 15 │ │ │ │ │ │ and update matrices are assembled into staircase form, so no subsequent permutations of the │ │ │ │ │ │ rows is necessary. │ │ │ │ │ │ Error checking: If frontmtx, mtxA, rowsIVL, firstnz, colmap or workDV is NULL, or if msglvl │ │ │ │ │ │ > 0 and msgFile is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 4. void FrontMtx_QR_storeFront ( FrontMtx *frontmtx, int J, A2 *frontJ, │ │ │ │ │ │ int msglvl, FILE *msgFile ) ; │ │ │ │ │ │ This method takes as input frontJ, the front in trapezoidal or triangular form. It scales the │ │ │ │ │ │ @@ -533,15 +533,15 @@ │ │ │ │ │ │ • cpus[4] – time to store the update entries │ │ │ │ │ │ • cpus[5] – miscellaneous time │ │ │ │ │ │ • cpus[6] – total time │ │ │ │ │ │ Onreturn, *pfacops contains the number of floating point operations done by the factoriza- │ │ │ │ │ │ tion. │ │ │ │ │ │ Error checking: If frontmtx, frontJ or chvmanager is NULL, or if msglvl > 0 and msgFile │ │ │ │ │ │ is NULL, an error message is printed and the program exits. │ │ │ │ │ │ - 16 FrontMtx : DRAFT January 16, 2024 │ │ │ │ │ │ + 16 FrontMtx : DRAFT February 18, 2025 │ │ │ │ │ │ 1.2.8 Postprocessing methods │ │ │ │ │ │ 1. void FrontMtx_postProcess ( FrontMtx *frontmtx, int msglvl, FILE *msgFile ) ; │ │ │ │ │ │ This method does post-processing chores after the factorization is complete. If pivoting was │ │ │ │ │ │ enabled, the method permutes the row and column adjacency objects, permutes the lower and │ │ │ │ │ │ upper matrices, and updates the block adjacency objects. The chevron submatrices L∂J,J │ │ │ │ │ │ and UJ,∂J are split into LK,J and UJ,K where K ∩∂J 6= ∅. │ │ │ │ │ │ Error checking: If frontmtx is NULL, or if msglvl ¿ 0 and msgFile is NULL, an error message │ │ │ │ │ │ @@ -572,15 +572,15 @@ │ │ │ │ │ │ Error checking: If frontmtx is NULL, or if msglvl ¿ 0 and msgFile is NULL, an error message │ │ │ │ │ │ is printed and the program exits. │ │ │ │ │ │ 1.2.9 Utility Solve methods │ │ │ │ │ │ The following methods are called by all the solve methods — serial, multithreaded and MPI. │ │ │ │ │ │ 1. SubMtx ** FrontMtx_loadRightHandSide ( FrontMtx *frontmtx, DenseMtx *mtxB, │ │ │ │ │ │ int owners[], int myid, SubMtxManager *mtxmanager, │ │ │ │ │ │ int msglvl, FILE *msgFile ) ; │ │ │ │ │ │ - FrontMtx : DRAFT January 16, 2024 17 │ │ │ │ │ │ + FrontMtx : DRAFT February 18, 2025 17 │ │ │ │ │ │ This method creates and returns a vector of pointers to SubMtx objects that hold pointers to │ │ │ │ │ │ the right hand side submatrices owned by the thread or processor. │ │ │ │ │ │ Error checking: None presently. │ │ │ │ │ │ 2. void FrontMtx_forwardVisit ( FrontMtx *frontmtx, int J, int nrhs, │ │ │ │ │ │ int *owners, int myid, SubMtxManager *mtxmanager, SubMtxList *aggList, │ │ │ │ │ │ SubMtx *p_mtx[], char frontIsDone[], IP *heads[], SubMtx *p_agg[], │ │ │ │ │ │ char status[], int msglvl, FILE *msgFile) ; │ │ │ │ │ │ @@ -610,15 +610,15 @@ │ │ │ │ │ │ this thread or processor. │ │ │ │ │ │ Error checking: None presently. │ │ │ │ │ │ 7. IP ** FrontMtx_backwardSetup ( FrontMtx *frontmtx, int msglvl, FILE *msgFile ) ; │ │ │ │ │ │ This method is used to set up a data structure of IP objects that hold the updates of the │ │ │ │ │ │ form Z := Z −U X that will be performed by this thread or processor. │ │ │ │ │ │ J J J,K K │ │ │ │ │ │ Error checking: None presently. │ │ │ │ │ │ - 18 FrontMtx : DRAFT January 16, 2024 │ │ │ │ │ │ + 18 FrontMtx : DRAFT February 18, 2025 │ │ │ │ │ │ 8. void FrontMtx_loadActiveRoots ( FrontMtx *frontmtx, char status[], │ │ │ │ │ │ char activeFlag, Ideq *dequeue ) ; │ │ │ │ │ │ This method loads the active roots for a thread or a processor into the dequeue for the │ │ │ │ │ │ backward solve. │ │ │ │ │ │ Error checking: None presently. │ │ │ │ │ │ 1.2.10 Serial Solve method │ │ │ │ │ │ 1. void FrontMtx_solve ( FrontMtx *frontmtx, DenseMtx *mtxX, DenseMtx *mtxB, │ │ │ │ │ │ @@ -648,15 +648,15 @@ │ │ │ │ │ │ the seminormal equations (U +I)D(I +U)X = A B or (U +I)D(I +U)X = A B for │ │ │ │ │ │ X. The mtxmanager object manages the working storage used in the solves. On return the │ │ │ │ │ │ cpus[] vector is filled with the following. │ │ │ │ │ │ • cpus[0] — set up the solves │ │ │ │ │ │ • cpus[1] — fetch right hand side and store solution │ │ │ │ │ │ • cpus[2] — forward solve │ │ │ │ │ │ • cpus[3] — diagonal solve │ │ │ │ │ │ - FrontMtx : DRAFT January 16, 2024 19 │ │ │ │ │ │ + FrontMtx : DRAFT February 18, 2025 19 │ │ │ │ │ │ • cpus[4] — backward solve │ │ │ │ │ │ • cpus[5] — total time in the solve method. │ │ │ │ │ │ T H │ │ │ │ │ │ • cpus[6] — time to compute A B or A B. │ │ │ │ │ │ • cpus[7] — total time. │ │ │ │ │ │ Error checking: If frontmtx, mtxA, mtxX, mtxB or cpus is NULL, or if msglvl ¿ 0 and msgFile │ │ │ │ │ │ is NULL, an error message is printed and the program exits. │ │ │ │ │ │ @@ -685,15 +685,15 @@ │ │ │ │ │ │ This method determines the inertia of a symmetric matrix based on the (UT + I)D(I + U) │ │ │ │ │ │ factorization. The number of negative eigenvalues is returned in *pnneg, the number of zero │ │ │ │ │ │ eigenvalues is returned in *pnzero, and the number of positive eigenvalues is returned in │ │ │ │ │ │ *pnpos. │ │ │ │ │ │ Error checking: If frontmtx, pnneg, pnzero or pnpos is NULL, or if symmetryflag 6= 0 an │ │ │ │ │ │ error message is printed and the program exits. │ │ │ │ │ │ 5. int FrontMtx_nSolveOps ( FrontMtx *frontmtx ) ; │ │ │ │ │ │ - 20 FrontMtx : DRAFT January 16, 2024 │ │ │ │ │ │ + 20 FrontMtx : DRAFT February 18, 2025 │ │ │ │ │ │ This method computes and return the number of floating point operations for a solve with a │ │ │ │ │ │ single right hand side. │ │ │ │ │ │ Error checking: If frontmtx is NULL, or if type or symmetryflag are invalid, an error message │ │ │ │ │ │ is printed and the program exits. │ │ │ │ │ │ 1.2.13 IO methods │ │ │ │ │ │ 1. int FrontMtx_readFromFile ( FrontMtx *frontmtx, char *fn ) ; │ │ │ │ │ │ This method reads a FrontMtx object from a file. It tries to open the file and if it is success- │ │ │ │ │ │ @@ -721,15 +721,15 @@ │ │ │ │ │ │ This method writes a FrontMtx object to a formatted file. If there are no errors in writing the │ │ │ │ │ │ data, the value 1 is returned. If an IO error is encountered from fprintf, zero is returned. │ │ │ │ │ │ Error checking: If frontmtx or fp are NULL an error message is printed and zero is returned. │ │ │ │ │ │ 6. int FrontMtx_writeToBinaryFile ( FrontMtx *frontmtx, FILE *fp ) ; │ │ │ │ │ │ This method writes a FrontMtx object to a binary file. If there are no errors in writing the │ │ │ │ │ │ data, the value 1 is returned. If an IO error is encountered from fwrite, zero is returned. │ │ │ │ │ │ Error checking: If frontmtx or fp are NULL an error message is printed and zero is returned. │ │ │ │ │ │ - FrontMtx : DRAFT January 16, 2024 21 │ │ │ │ │ │ + FrontMtx : DRAFT February 18, 2025 21 │ │ │ │ │ │ 7. int FrontMtx_writeForHumanEye ( FrontMtx *frontmtx, FILE *fp ) ; │ │ │ │ │ │ This method writes a FrontMtx object to a file in a human readable format. The method │ │ │ │ │ │ FrontMtx writeStats() is called to write out the header and statistics. The value 1 is │ │ │ │ │ │ returned. │ │ │ │ │ │ Error checking: If frontmtx or fp are NULL an error message is printed and zero is returned. │ │ │ │ │ │ 8. int FrontMtx_writeStats ( FrontMtx *frontmtx, FILE *fp ) ; │ │ │ │ │ │ The header and statistics are written to a file. The value 1 is returned. │ │ │ │ │ │ @@ -758,15 +758,15 @@ │ │ │ │ │ │ • maxzeros is used to merge small fronts together into larger fronts. Look at the ETree │ │ │ │ │ │ object for the ETree mergeFronts{One,All,Any}() methods. │ │ │ │ │ │ • maxsize is used to split large fronts into smaller fronts. See the ETree splitFronts() │ │ │ │ │ │ method. │ │ │ │ │ │ • The seed parameter is a random number seed. │ │ │ │ │ │ • The type parameter specifies a real or complex linear system. │ │ │ │ │ │ – type = 1 (SPOOLES REAL) for real, │ │ │ │ │ │ - 22 FrontMtx : DRAFT January 16, 2024 │ │ │ │ │ │ + 22 FrontMtx : DRAFT February 18, 2025 │ │ │ │ │ │ – type = 2 (SPOOLES COMPLEX) for complex. │ │ │ │ │ │ • The symmetryflag parameter specifies the symmetry of the matrix. │ │ │ │ │ │ – type = 0 (SPOOLES SYMMETRIC) for A real or complex symmetric, │ │ │ │ │ │ – type = 1 (SPOOLES HERMITIAN) for A complex Hermitian, │ │ │ │ │ │ – type = 2 (SPOOLES NONSYMMETRIC) │ │ │ │ │ │ for A real or complex nonsymmetric. │ │ │ │ │ │ • The sparsityflag parameter signals a direct or approximate factorization. │ │ │ │ │ │ @@ -798,15 +798,15 @@ │ │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ │ message file is stdout, otherwise a file is opened with append status to receive any output │ │ │ │ │ │ data. │ │ │ │ │ │ • n1 is the number of points in the first grid direction. │ │ │ │ │ │ • n2 is the number of points in the second grid direction. │ │ │ │ │ │ • n3 is the number of points in the third grid direction. │ │ │ │ │ │ • The seed parameter is a random number seed. │ │ │ │ │ │ - FrontMtx : DRAFT January 16, 2024 23 │ │ │ │ │ │ + FrontMtx : DRAFT February 18, 2025 23 │ │ │ │ │ │ • The nrhs parameter is the number of right hand sides to solve as one block. │ │ │ │ │ │ • The type parameter specifies a real or complex linear system. │ │ │ │ │ │ – type = 1 (SPOOLES REAL) for real, │ │ │ │ │ │ – type = 2 (SPOOLES COMPLEX) for complex. │ │ │ │ │ │ Index │ │ │ │ │ │ FrontMtx aggregateList(), 12 FrontMtx ownedColumns(), 19 │ │ │ │ │ │ FrontMtx assemblePostponedData(), 12 FrontMtx ownedRows(), 19 │ │ │ │ │ │ @@ -842,9 +842,9 @@ │ │ │ │ │ │ FrontMtx nactiveChild(), 11 FrontMtx upperBlockIVL(), 9 │ │ │ │ │ │ FrontMtx neqns(), 7 FrontMtx upperMtx(), 9 │ │ │ │ │ │ FrontMtx new(), 7 FrontMtx writeForHumanEye(), 20 │ │ │ │ │ │ FrontMtx nfront(), 7 FrontMtx writeStats(), 21 │ │ │ │ │ │ FrontMtx nLowerBlocks(), 9 FrontMtx writeToBinaryFile(), 20 │ │ │ │ │ │ FrontMtx nUpperBlocks(), 9 FrontMtx writeToFile(), 20 │ │ │ │ │ │ 24 │ │ │ │ │ │ - FrontMtx : DRAFT January 16, 2024 25 │ │ │ │ │ │ + FrontMtx : DRAFT February 18, 2025 25 │ │ │ │ │ │ FrontMtx writeToFormattedFile(), 20 │ │ │ ├── ./usr/share/doc/spooles-doc/FrontTrees.ps.gz │ │ │ │ ├── FrontTrees.ps │ │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ │ %%EndComments │ │ │ │ │ %%BeginDefaults │ │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ │ %%EndDefaults │ │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ │ %DVIPSCommandLine: dvips main -o FrontTrees.ps │ │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ │ -%DVIPSSource: TeX output 2024.01.16:2046 │ │ │ │ │ +%DVIPSSource: TeX output 2025.02.18:0318 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -3346,21 +3346,21 @@ │ │ │ │ │ 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 52 /four put │ │ │ │ │ -dup 54 /six put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ +dup 56 /eight put │ │ │ │ │ dup 70 /F put │ │ │ │ │ -dup 74 /J put │ │ │ │ │ dup 79 /O put │ │ │ │ │ dup 84 /T put │ │ │ │ │ dup 97 /a put │ │ │ │ │ +dup 98 /b put │ │ │ │ │ dup 100 /d put │ │ │ │ │ dup 101 /e put │ │ │ │ │ dup 103 /g put │ │ │ │ │ dup 105 /i put │ │ │ │ │ dup 110 /n put │ │ │ │ │ dup 111 /o put │ │ │ │ │ dup 114 /r put │ │ │ │ │ @@ -3566,123 +3566,124 @@ │ │ │ │ │ 08DEDBA3C08C02E68839D7F4BE7FAAA1E02C827318B197877AF9BCCE1672FEA3 │ │ │ │ │ BE29CF70087D9173BFD000DD4A017C0A2DAECC5AF6087B2BA350D1878A5A28F3 │ │ │ │ │ 69D32483E9313AFFAFBC58467E9060722A237ADE5AB1277AD81CA46F4C961B3F │ │ │ │ │ DFA1A6935CE12185CB35ECE23D3E794816EAD5145F477FBE824C0F0897FDEA08 │ │ │ │ │ 11CE02EDDD4B267C2613CED061A00B69BB7DA125058E7ECBD934C7E7BBC86873 │ │ │ │ │ 4631EE83B47CE83A4D156C193C0755D5E91438F660A3DB577C863662EF0841D1 │ │ │ │ │ 939DDC747B7995C76BA103919DE1937DEA40B571C1CA4A48B9D9C7B78DDC6F2E │ │ │ │ │ -615CF9403DF3BCE321EF1932E2F7EE17FE6F0C402F4DF304B9A1DB46B32FB29E │ │ │ │ │ -BDCA91097C4A6B30A7396CE684F60FF945E2BB1D7C277B8614CBA0139AB45E6F │ │ │ │ │ -927B61C01D161B5984340AAF2E39AE87832D7787189C08DF52A1EF478E07CC83 │ │ │ │ │ -1B6FD55FFCF174A35DCF946434FD83CF4C6EFBEB1FBC85D2BE19AB55CB76E017 │ │ │ │ │ -A4F86E18E8F25F8F66F69550C4942FEB82E5664211A2D61B1C543671A33CB08A │ │ │ │ │ -BA012E3E6DC4EC4AA22BC9A182EF27781B724B85EC1880948EBCEB4218A9B0C8 │ │ │ │ │ -3926E6A6D8696510518CAEF4C6CC3D4B1123B14B1F5911D6A6FB71716E55BA23 │ │ │ │ │ -72E3B03506201466A15E87B6E4895AD8C9A56FCA7978DD56829521C5186FE0DE │ │ │ │ │ -8061E6481FFB741ACC1ACA4318D5F66F1A82730B0FCB38B65B5B3A3942B34B98 │ │ │ │ │ -255F2ABF5EB1E69FEE187B3BEA63893913D152D8C4BBBD95285B766502246381 │ │ │ │ │ -365F55B8C3DEC39A1228A236E7FBBA7111CB57CC444FE0FD7B6F9BF163061D8C │ │ │ │ │ -2358FD3A5567C5277044EF70468B3B1A147A9F7C9D2C70DCA13AD35BBF6465EE │ │ │ │ │ -3A698350DA9CA3B2B48833627C4A179823E5354D1A5A26A64FE348622CCB06AD │ │ │ │ │ -28A5194F4F52412B1B753C2408AE00B7F100238706194276BC9DE74D201AE51A │ │ │ │ │ -8DEE6D2DEF44A1EA0DDC86487E3F58A0842EB48529F3432D497102223FD8D291 │ │ │ │ │ -1C8BF37798092AF67EEE8DB174331D107BCF64F43B9B4CD77B49ABA05F2689B8 │ │ │ │ │ -B688F97DBE2FDE0F0D88F5DE0BA2F57E048581582DE43A6570EE4B2036B05710 │ │ │ │ │ -526F98DB733812E9BF0899D62A52A286728749F0B237CF0C8D12B1F9758CED13 │ │ │ │ │ -41BDD4D645245AC57113348E7C3F3D93AB8D7A676A5CD1DCB95498DA2330C811 │ │ │ │ │ -D73A35D849537AC77531C61DEB4C1C85B9BE89ED4DF2A6A7CF99D0EE0F6CDAB1 │ │ │ │ │ -2DD9FB584504EEBA1DB1AC2E1DF3BE04D88429B7ABA76345EE2432D7FA02E9F1 │ │ │ │ │ -EA4C613C9A1A5448D3F92749019EA3AE56C7D1D65E939DEFBADF66D70C9294DF │ │ │ │ │ -55E9A8803766697957E2D1ABC31E94FBF3F52F0BA622B124D975EE2797E3DAA3 │ │ │ │ │ -8CFB1C1DDCC8B837C68B033BB5888DD61A09F160F3773F1F1427F5826F5DFDBE │ │ │ │ │ -67A6CE15582506085746DF78F3FB41167163623856059DCF540D998E8908A2C7 │ │ │ │ │ -B87A6116A576E2CB70414CC37D43B2C046EB58637BC6A6E1A471D7A9EF3785F4 │ │ │ │ │ -7FE0AB8735374672A350A7B2D984F12ACD5F94761EB09E52AA7A1A80CB9A099A │ │ │ │ │ -3975D2DD173E52C95D30B03B35A967E57A0544597831A8F78E4482CC99A033FF │ │ │ │ │ -FBD27BFFFDFD91D0D3A8B302456C0326647720BAA914A1F7717646087C414123 │ │ │ │ │ -BF2C532B8A9D9CD2D7163460084A185251F2360081EDB907C55C0057705CB557 │ │ │ │ │ -C9136567F885486221444DC3A003E8B83E5BA8D66E85A456CA39F158F732F543 │ │ │ │ │ -ECCEA5AC17145EE28E2F9602F9845398F86DDA7A5A5AFCE312865B20C7D97FD8 │ │ │ │ │ -208F46C5CC52249C16F69626C610D5F6E1BBDFA7966759E27D553EB212100801 │ │ │ │ │ -60924A1555849D347861F94F2656FF90D7FF7B00E0C3112C47F84FC24589BD39 │ │ │ │ │ -B0B1F520B5402E35B15CD5199342AF974FC0D9106AD4A4AC801A38D3CF8CFBB7 │ │ │ │ │ -C3DCEA96C60A7FF9C0DF43C208B86545061D970CB7D11B055840EDC9F1919E4D │ │ │ │ │ -952ECF01ECF09DD11569A5E57D7945C10B57D9290E083ABFEB8426CD9BAAF2E0 │ │ │ │ │ -8636E3F9FF19EE2D825CA93AC3298789B687C3C18C8D3AD27DA7582E03262744 │ │ │ │ │ -9CF6C5D29C2C2FB22529A381532DBEEFC5A5116D6F62E7706F3CD5004CF3877F │ │ │ │ │ -B32B2AB98547D710BA5D8B7949A5EB11BB69845D93FE51B9D2D1211172D492D5 │ │ │ │ │ -BB768F0C291FEF5CDDAC21199DDAB823EC6620A906F18A943954F8258EF90D9A │ │ │ │ │ -5B26D7F82CA839EB798DF37F1B765FB41FA5BF59AC743744594B0718C9D82B42 │ │ │ │ │ -902C08C937E171BDEF8D4FACF2BD17165FFC4262185AD095185ECFEB9075774D │ │ │ │ │ -63343234D2B5782CA448C095C1D579656F2BE1A90EC55DB072CD7C0EB502DF16 │ │ │ │ │ -4D0E344D23A1BDC50F2DC60B4A8EEC42C471E87833384E3EFE7A510F7B2E0EBA │ │ │ │ │ -3D4E7F87F9EB76A9F93C8B2881B9DEA329799D89D984AB62B0FC5740DC42321C │ │ │ │ │ -0A1987E13B21A2154945462E13E6BF584850F0AC9BC22D495ADC8F3D61FA4AB9 │ │ │ │ │ -A1820D499591714CC94BD615C7D75C88C1B0CFDBE8706AC918CD2FC6C1FD1EA3 │ │ │ │ │ -CB89BC93847C5B14DB30147318149F34FDF177D4D841A976A9CC1A123C173D29 │ │ │ │ │ -713701F7C4E1C928389F0C0FCBA778C7C7695BCABBE0A349E493575241BD4C7D │ │ │ │ │ -429D6CCFC7308EE05C3E620ECCD4410F0581285C68D1E336D5612B18F62A5689 │ │ │ │ │ -AAD3CAAF347C99F745141DCB590F5A626520326A9E496A6BD82FD1539BA41F3E │ │ │ │ │ -756A15D5D5F81ED75675420640CA72F3C8A92688F5200BB60736951558998903 │ │ │ │ │ -F956A655311A51C5B74F4C2C0380FF4BE7C5948C9E3CDF62DE8FA102AC09E32D │ │ │ │ │ -3A03DA2F2AB78C2EA93BE775397B60C202F2492267D7BCD12C0C46426FC18C57 │ │ │ │ │ -FAF6ECA7D81C817B72102184AB0D43F6757904F37DD8838385BF028C29025FB1 │ │ │ │ │ -092BDE30A9299650514EBD86CE62D2C39BA2C1EEE1E352A0B7EDD115535B1CCB │ │ │ │ │ -7C8DA45DD0F670DA788259F5FD2F41953C3CE000F5D801A187D62A2FD3CF2F76 │ │ │ │ │ -8B53A2C49E909CCB65E9530DB1DDDB06B5425FD09DC152221CF9D0B27461FE4B │ │ │ │ │ -7F062FF45A3BDFA103E9445D67FB1D44F13F320C3E706231D579C1E649B8A42F │ │ │ │ │ -2E7516FBB2CC4476D999858E2D2846CF36DB3BB85445FD968D445DF77EA312C4 │ │ │ │ │ -023F1F3DC5EA1A0ED03DDEEABABC04C2C360A73AC3364BF50006700F3E3FE91A │ │ │ │ │ -0451A197D56D355AF05F1D60BB78D8D31983B6A9DB00D13E9999175287F7FC97 │ │ │ │ │ -49E69C703D343B62C62A3A16F139F27702E0A25E0F1F7CDC24FBAA13A52D3156 │ │ │ │ │ -071F21A9A062DE6B4BF05EB1592C7AE9EE0A3C992AD5251B28334CA361269038 │ │ │ │ │ -00B1A7EF795DF6237642AFBE148F440D0D9737E412FECEC0C58499B7626020BF │ │ │ │ │ -8EBFDF3DD4885E8BD4740A0457ED3E2A6DD23E045E5CE9293F0A7AF0FD535A3E │ │ │ │ │ -61CBAAFF12611EA6095D94FB0BAF017EA59CE500FF5D570D55B550B770D8AB34 │ │ │ │ │ -EA831098A16E8C601101AF095D204A8D2058CF3922E93F0E69C4869819A711A2 │ │ │ │ │ -7F12BC45735D21471D839030265B86F81502BA05BEFFBF061FD2892C17B3692F │ │ │ │ │ -E1C97CE67EEE821457597D41249FD6DE9779B5AD2735DEC81F9ECDB576A5BA94 │ │ │ │ │ -F0983934A14A77AF7194E507C13E6398A757C000EA468CFE57FCBE9FD5F5DCF1 │ │ │ │ │ -9D996D4F3E24D28B43D83758918BABA472E6C38587063F086DD8DF9FBAF19E1D │ │ │ │ │ -63A5A37529A0C75176C218F93959F9EDFCBEAF14C8D2C3BD3D73B6CC8D6A0D2F │ │ │ │ │ -8F13F2AC14A64676FF9DAA18A3BE138A831D02D7EF071525CDB9382C17682727 │ │ │ │ │ -7103D7A9D6109D71880D56C346FD0AE8493D0A901588D5C58CFB516C41E7241C │ │ │ │ │ -630D8CBC396F95257220DABBA20A0EF6C2B19FEFB6F14162002937DAE86A57E6 │ │ │ │ │ -CDE4688E0EE4D94D7D4EBAC54BCFAB4864A210D047ABAE0DB97C5DA0C91D9FCA │ │ │ │ │ -307F23E0CF6E2ECDDF21E23559ED368A3A45D3D9429B3107C6E0AAF8F4679E30 │ │ │ │ │ -DD4C4A61D965D68085C921EA6BE7C4E3DA5EB40FC5410A9E8211E6C5B9912968 │ │ │ │ │ -1FD32ECFA9FEFE8EEC96ACE384C05E99D91FEA152FA9828E503D2F57C75D779C │ │ │ │ │ -4F8EE9A9865D704FB3F413E2CCB1B7AC0304A6F02EBA357B4AFCB178FEE12CDC │ │ │ │ │ -7D11097FCFBEEED9E634DAE95F236A466033E33DD3791E20A3A825C8F9EE8F25 │ │ │ │ │ -521132BB55D72DB9F20C52403714AD580FDC587615BFCEE0FED774190E56BF0E │ │ │ │ │ -572AE59EFFFD57A9C6DBC1675CB9F0E3203D2AAD38C83DDE861FF7E9129725E9 │ │ │ │ │ -1C639739BC8724443EA40C71C66E8C9A15DB1CECAE6FEE68FAB367C68A3E90E0 │ │ │ │ │ -A76BB95E3BE88D5E362BEEAABF7504768A0ED9B8CB43B11D158494B3DC225CF8 │ │ │ │ │ -C3A9F1997FC5020A62E978E1BF6A7C50A063556438C8CBB946801696B63DFBA9 │ │ │ │ │ -848CB4AE7D73182C75FEAC5641449FDAA92D397ECDDB24D9C180ED1EF434CBF6 │ │ │ │ │ -C79BF351529EC80C22E941724ADEA5AF4AEEFAB486F4741A25E4D9B6D042BE2B │ │ │ │ │ -690E0CC893A9501594971E257409FEA6C0D48A518A8ADA82F2E54B0ECBF3276F │ │ │ │ │ -0700953FD85558D0A0D9F94D308FA69957FEB8CAC55CE5B0D464644727B8F998 │ │ │ │ │ -A455A18F92275C865BEFE47309C07174115FFEF529043DE151A39CB7DB6D63CB │ │ │ │ │ -08FBD641B27766C7193FB95CFA86255F7E3ECBC6CA3AF37EC5771E83033033BC │ │ │ │ │ -D4FFDEB1C39A98C4992F2F475B18AAE80C5B3850E988FF842353849ABD99F41E │ │ │ │ │ -B26484F90E30B1C91B924CCA7A3E18F06E9D2FDB42ABFE5C23F472EA29DD48EA │ │ │ │ │ -C92F4A1E47ACBD808E4E348A598CE51B5CD3D7257F98A7C5C4A7F163A11A63B5 │ │ │ │ │ -02FE2A997EA51F6B686507787939113C35368912534666DB96431B5A92DB8CDB │ │ │ │ │ -109D90849165DF73BAB650D5934EC8B415BD4C59B237714303DC1965A8521918 │ │ │ │ │ -BFAF205A4A6A3244549D2B2DD8409426BC4BAD2E31D06D94F63A32B568DD5ECB │ │ │ │ │ -A23D20273A64D6ED6185B4DACB29D5A412460765B88CA107046C80078E487089 │ │ │ │ │ -4B8ECAD5F8E26BB748681F2F560C6A3A8EFC3603D446D321DD169E8C5349A05F │ │ │ │ │ -BB46924131A40C917EA649E1ABADDF72B3837A70A97F56DCB65971CDDB2CDF1B │ │ │ │ │ -F21FF4BF34837FF404E833123DC871AD57111AA75EF6D790F6B05C9B5D3E3622 │ │ │ │ │ -EED727290B4B118AB00188A37DF181353BF8C75AF65989AB9EE773D59D5DB1AE │ │ │ │ │ -9F794D17FC1CB6C7A5296B5CC03FE0E5BAA8B6ECC0BDC572F9B5E53E8AA371C1 │ │ │ │ │ -862688EB28FC471311C4761552A2918B967C7DA5F79D5C6468EBB342247251B4 │ │ │ │ │ -333159DF073D13F16F6D993DDC6B839EBF9E6B3E5E50641B0EA71FF344D1841A │ │ │ │ │ -311371C9 │ │ │ │ │ +615CF9403DF3BCE321EF1932E2F7EE17FE6F0C402F4DF304B9A1DB46B32FB4F1 │ │ │ │ │ +9444B496AC2EF8DBC323983FE3D5279BB682A2EC5318795A75C9AD2E0A94DB5A │ │ │ │ │ +69BA4D67D410D45D9C0851E976D75CF3FBE807DEDC3ECA4990994256B1012A91 │ │ │ │ │ +CC52EEB381F12FE24B7578E2ADAB4EF25D9D0FA3318BEFF0AABC613C3FC462B6 │ │ │ │ │ +00C69C22D6E9770394CCC68D60F04349FD12FC66D8FF8DC61E07E39122E27CDF │ │ │ │ │ +3E53FA42061430B43FE26F8DEE18CC578AAE977AE41DFE18388212516D0D66D8 │ │ │ │ │ +3DE54CD686D54B0E637FF98BF72164B02BAC5AE4D0E2AF2F8360E43938C78D37 │ │ │ │ │ +A8694F29EE7A2771ABB65F2423A19E6C0994C556A90A43122FABC159AE9A1EC5 │ │ │ │ │ +E5A1861BE4DBF547A892E358DBB22DBC88F6D503601ED766F3A9111126348074 │ │ │ │ │ +1C2F6898557F95CFF5C31B5C33851309258174E58A8679E1A2A1BED9988668EE │ │ │ │ │ +88095E7B2D376084E8347CE76BCCC779701C900CBF926C97D3793B131F47A4BE │ │ │ │ │ +906ADDB4B77557123ABCD08FD431CE194859AF2A90B1E108C56EAF1B26207AEA │ │ │ │ │ +6289CC70AD823E5C1BDA0E1DB9C1FC0354C844CA82F74104C5670AC287950ACE │ │ │ │ │ +DAD713FEDD8F76B600FB852E0A92ED6D70E80663171CDECEEBBD735B8B9264F6 │ │ │ │ │ +EE9361E39AD9A4D8979F9377D9140AA35FE0875DC7281217DACA57579BF4B93C │ │ │ │ │ +4804FD66591EF39DD4C4CC89E1F45DA343B830515BA696946A239E8DCB375713 │ │ │ │ │ +9C7DCA06D43DFB1551FD331212C57A7265B61867E91F673B6D295868C2328E98 │ │ │ │ │ +54EDF596A214EFF0A509F7703F03328ED5D27A49BD0DECD16025F17211B4B1A9 │ │ │ │ │ +53FBC3B0BBE568EA4FEC01DF4CA1FB051B62144CDB5917B3AD79BBADBD01DBD1 │ │ │ │ │ +363F017EED1BD9DEA1566CDF0BCDC07761264A3B40D2CB9089DE5CC2DDB6F7AF │ │ │ │ │ +DC7F8B5779B1199C24A65F97635056727D83235AAEC8B5AD0BE478C8536BB476 │ │ │ │ │ +E171DBB63DD07EA8E9BBA9A9D6EFBED8EC5EAD9676639463707ED9AC5E0F0851 │ │ │ │ │ +FDAF357163AAB3316FE657F2A7EF0B8E5E7EF2B50412131A26C60A9652F71DA1 │ │ │ │ │ +4B2EC622DBE5B2FBF00608CC35E97D1CB83B73D064222E32729F2C0062D05920 │ │ │ │ │ +9F00163FD4644ED471A46E4B0D831B1B518F56178EA2097D97FE0ABC0734677E │ │ │ │ │ +571FEA0A6AC5E5542B788F2EB72D5C86A5BB245463A20DA72833E84C7C9605D3 │ │ │ │ │ +DAC12AD997E8D09D999BA5E899DD63F7192D8042DF222FB996B5EF6E799C83A9 │ │ │ │ │ +14395F1C62E2AB16D11A992C0D95AC38EA9DBA0F1FBDA762DD19774B377C1301 │ │ │ │ │ +5D3E25B731B22EE31120EC87B88892BD98CAD63D3E21C44273D44674E49E1E18 │ │ │ │ │ +9766DC763ED3F1F83AE3291B35853E2D03763D8878F447883BD2FF8E62D51B42 │ │ │ │ │ +D09EBE7DE7830E616E34C34B078DF9A8E3C514687C7C166192C9F821673AB973 │ │ │ │ │ +364CBBF9D3B07B1556CDB2B2CB8D283FF7CCCB7B3178DD193400FC223FFF0291 │ │ │ │ │ +0ACBDAF3E7F04DB29E81376D8A54070FB9E5DB77FD64F9628033C4F324B2118E │ │ │ │ │ +92FA398FC41E6BAF4D0547870AE3C9B34DF1D50DA7F54960050C5DF79241CC97 │ │ │ │ │ +0C1DF0C8A0E59AD1CC776390116FC4FF14869243BCF11C324CFDFF2AB1DAEA4A │ │ │ │ │ +5304857E2B2CD5F118F2C9247807664C7CCCA42F40EE8B343CE2ABF98CE3BD35 │ │ │ │ │ +9D2E279C99C0E648C592BBC7A94023ECAF8D0528B7531F385801C7B02182778B │ │ │ │ │ +F45E0D54BD01B1F21931BB7377F99338874331EBC032C1CF5568A87AF29D1A74 │ │ │ │ │ +A52CDD9C4E6406C21AF92FD3D933F31BDE46951A87AF6F13A31DC544D032D239 │ │ │ │ │ +004D01C1517204F79BFBF420735E6924BF40246A18A8D9E4BAD78395E289894B │ │ │ │ │ +DBDA7A4AAE9B1E9EF0A00330ADD47E7A0AD6E84A19BA9822452A3EB4851DDB01 │ │ │ │ │ +D5EF942B5702EC1B83F47406128329C67B19A8FEE90D2F691C3449617D1D748C │ │ │ │ │ +85C06C95D58374D46DC37F0BBCC6F9FD6F91C43B65619B165151BEFE88E1B88B │ │ │ │ │ +92690A2E6891A3843C87B66EF630F1152E6ADC6CAB1BE2D79BABD359D8E022DC │ │ │ │ │ +CCF503801AEC3282B6606FB00ADB7DA15A42D4A93746883AAD39E836E7E9E4E9 │ │ │ │ │ +7824F674DFC253B904618A6289895E8BBB56D6E219CA701E75D7556737CE01C5 │ │ │ │ │ +DD83D0D1F0A783CF02B0BF2B4CEFE558663E73AD432F0A19B3C5BD6147EFA2B8 │ │ │ │ │ +F3903A67525BF7FA571CFFEECAAE051862D782BF82A677B5CEE76C789C208441 │ │ │ │ │ +6DF03A9675A6A07D8515D10FE21A828147F45E2D6227A6A431DF6F5C3DAB6193 │ │ │ │ │ +5C93E4F136B5F7D768150E81DEF6795293F38C7B20F9A0963989F423157D499D │ │ │ │ │ +0018976CCB04F5D35CBA5209A57E2A45073BD17CB4F5EADCE951A7FE41D55BEE │ │ │ │ │ +C820520079262A97BFD382CFFD758C8667043E749C73553D53C374110C3683DC │ │ │ │ │ +C4CA75A5E06DCEA3CB6826B61BAAF1EAF097496261F9E9546FF7A7733361A952 │ │ │ │ │ +3E8F7DC18CA8BE92CC9702132DEDD1677F74D6744FEF9B9DC8AED0508902DD5D │ │ │ │ │ +FD7C3B282CEDD7BF1D790AFD330C16B279019698D0AB232842CA9FF19B50A221 │ │ │ │ │ +27CB12D64B4400D9B78D7570D78A81E34F1E48AAF03CB571BE71DA3CD434122C │ │ │ │ │ +06854F669B31CF35CA99EAA465485509C67EA9878A3AE76C199134BBD26F52FA │ │ │ │ │ +324430249536F48D910DB81BBBD947E04CA862BB88150E4A085D171328B894AD │ │ │ │ │ +48AB77D0EE1B756807D1492C3091905914155FA07EF10765338EFDACD2D48416 │ │ │ │ │ +C0FE3494947879EE88759E9024ABD51967B552FDEBED047B97D8708B7A733F9F │ │ │ │ │ +33C1FCF77029440AEE56F7E78B334B650387F53270D78C78CA0BDC47F4F34B69 │ │ │ │ │ +6D9015CBD0AFCA0D6C179E53DE57544DA75E4AD74B41738F3256F236603482E8 │ │ │ │ │ +2124F9D9DC32AEA06E6BA58C1D4CFBF95F9B5DD908656D7F2082485B1836765B │ │ │ │ │ +DF5F25EE989F9EBE6A96FD4AEC26BEC9B19CF22149FCA42E3A37FED454E63148 │ │ │ │ │ +88B6115FA92FD577AADAFCD53B56D4CE5CC6B0B97BE1CBCBD2145062C0F184EC │ │ │ │ │ +8AC5F99CC5E02C178D4FB018755333BEE1F42C8377498C4027DDFC85DB78E0E3 │ │ │ │ │ +32A99409B829B1B157B7877CDBA6771FEAA7365CDC22D0EB1A099BDB3F0CF636 │ │ │ │ │ +5E3FC5242BAA9946CCCB6718F88BD802239993583F13006DF3792E57B2474E39 │ │ │ │ │ +19D352D292F64B0668D28945AD900289E43CD0319AB5A3CA0638F88917E5C0FC │ │ │ │ │ +1894E04AC0369284A829EBC57285B488DCA256D47525F28F61927EA9559EA1D8 │ │ │ │ │ +D8B4535FA1A02A6E85635B64B82A93E297A83610504B06C0B7CAF15A5E34643E │ │ │ │ │ +24F483D2A07B1786D88E78DEE9FF270ABAC51D220BFAE73A46330207B273C76B │ │ │ │ │ +B518D3D282DBB600935FD6E378876A429493E25C6C61567DC15FF359AC40F5A1 │ │ │ │ │ +D82AADD164342BA98733796E8C9D1422E9D83CAEF48CF72619D0E5C4577A45CE │ │ │ │ │ +505B959987B8665640E7DB8E21D888ADAB8DCDEC79324CB60580CB93576BCF3E │ │ │ │ │ +ED52D3C26C7143963EA9713C262A4B2D9CB24F0DAA9F9B17A2A83531A9B74FF6 │ │ │ │ │ +4283F15EAAFD610EFB4096768D68066822294F1D0EA84F11C1BFF7AEAB02069A │ │ │ │ │ +BA27CB52DF86AAAE61B0646B12D897E7B1A07587374303A42F4C25C59AE48EDF │ │ │ │ │ +E1013070EC429859919DF83E79B4E27A42DDB7D70D504BFED77B45B87F5CE6C9 │ │ │ │ │ +242D822D1F8578D75AC5A3D154A4C1D3757D3EA7EAFCAB47FDD9761B64295D94 │ │ │ │ │ +A426767954ECD73D9B687815E9C109DD2B21419A289FA2AF2CC554BDD28DBCCD │ │ │ │ │ +028BA818F19FEF11195D8B63F9B7E38481317A023CC32057C568992F7D2E6BAD │ │ │ │ │ +7AAD4B07B301D8F353A610A199A6CC046C6F7EE78F788FC19A755AFA71E5CA38 │ │ │ │ │ +58934CF7CDCDA35DDF0D1E7B2EC1357F44E6425A8B5659140CBC25114932C5B3 │ │ │ │ │ +205AB768CB1210961BD9FBC25DB4C9706E04167B5C4776BE8903858F9A3D10C8 │ │ │ │ │ +E6BC2EDA05CB2ADD89BD4704046AFB2155EDFFF75280DBB9CA1380D2852D94D3 │ │ │ │ │ +E8A66FB012A0B9B26C22D208630044E691425AD28519BFD9EA8431A0DCE30E2C │ │ │ │ │ +34B8605EA5CC57CEF8711B33690A7B2EA86D4A423F5EA61BC839410DC21F169D │ │ │ │ │ +ADEE3EB30DEEFF46B22918315CEBE4C91BC4B67EFC63B3534F8B0CDBF9DAF4E0 │ │ │ │ │ +CEABFE19A44BB1B2B29F91445598D02E629F537443BBECDA8D1D6AEBDAA6D127 │ │ │ │ │ +CC0BE3D0B4EB689641B5AAE1EB1EE0E7F7EADE3C47295B5567EAAF6E65E43838 │ │ │ │ │ +88CFE5ACFDE6AF03681AFE30F1FB2E410860E34A1ECAAC12F8DFD085F3B2902D │ │ │ │ │ +8C46176980770A65378CCC731E29A19D1A7E9E0CEEB3EC47B7B3016C5C6090BC │ │ │ │ │ +0991A7684AEB23D4F53CED7269C25FA12720CDF7BF06545188E6D1DF8E2D2A84 │ │ │ │ │ +D1298DB8BA25AC9D7426FE3C230230F4C34B53A5F7161D3134F3593F4ACEAA36 │ │ │ │ │ +D1BD06711843F3AC4B3780A49D224E06D755E5577CE143FAEF0CD57A6DEC13AA │ │ │ │ │ +65A102708DBD5349E463F25AF00381309D91BFD3BD58E36898252E15B4F92F7A │ │ │ │ │ +485A886744EDE971DF81A423C82ECD48B653B925F572F42CF1A566757D5C48AC │ │ │ │ │ +A40588A7E6C6EA7D496B19D62A7DCBAF5F1B88E630386EFB31211408C9DAA2F8 │ │ │ │ │ +54F118141CE7159F5016D62EBCD19AD3ABBF54EA0D31BB170248B1CC1BEFD147 │ │ │ │ │ +58B65FFDA299B8F7366A6FA867F14EEABF4B4C65251EEC3FDBEF6798CAF4C8DD │ │ │ │ │ +A2F38A497F5DD3B2D4FDA8A72F5279251925CA6FCFCD87C88B1DAE3E6BD36B8C │ │ │ │ │ +646CC22A79BEA1E921E0411778A11C458CDD380D65D3A573ED7E8504E0BF365E │ │ │ │ │ +E4D7AE8263860A9845E9F226B5115B7A33EAE76F168DA23F47B3BCA0C7E6B148 │ │ │ │ │ +CFB4BF037F4D8BB8DEE392BBF428A2D85BD5DB0B1DDE867BDB5E0F778048A128 │ │ │ │ │ +1F8ABA0EFECE51CB82A5240990BCF03C191146CE8FE791DA8F4895DD09C0C673 │ │ │ │ │ +76C4B9DB9FD259DE9612755242C4AECB57FE9F074B9CAFBFD7FC17F963FCDBC1 │ │ │ │ │ +F64694FD3B552753A53E5DE35E941825BEA4F5C2BB8F5F5548946340115A133D │ │ │ │ │ +6B8EB5C2B6A9BFD22FBB18CA58DE2C406AEBB155828A15D4EB049FC5F86662AD │ │ │ │ │ +59AD2982804633F91129A910F79B │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -6756,23 +6757,24 @@ │ │ │ │ │ end readonly def │ │ │ │ │ /Encoding 256 array │ │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ │ dup 44 /comma put │ │ │ │ │ dup 48 /zero put │ │ │ │ │ dup 49 /one put │ │ │ │ │ dup 50 /two put │ │ │ │ │ -dup 52 /four put │ │ │ │ │ -dup 54 /six put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ +dup 56 /eight put │ │ │ │ │ dup 65 /A put │ │ │ │ │ dup 66 /B put │ │ │ │ │ dup 67 /C put │ │ │ │ │ +dup 70 /F put │ │ │ │ │ dup 71 /G put │ │ │ │ │ -dup 74 /J put │ │ │ │ │ dup 83 /S put │ │ │ │ │ dup 97 /a put │ │ │ │ │ +dup 98 /b put │ │ │ │ │ dup 99 /c put │ │ │ │ │ dup 100 /d put │ │ │ │ │ dup 101 /e put │ │ │ │ │ dup 102 /f put │ │ │ │ │ dup 103 /g put │ │ │ │ │ dup 104 /h put │ │ │ │ │ dup 105 /i put │ │ │ │ │ @@ -6963,176 +6965,183 @@ │ │ │ │ │ 82032FBD2FCB6E403D34B85ED4053A8CB619BDD4DE001F4C3007B1F317579651 │ │ │ │ │ E6D6662189CC2D95AB85D7473F65C5D7B4AC63B0FE928F3400035D5A9D443D0D │ │ │ │ │ F3532B99F3AC26CB25EA3CD64C341159061E02EFBC7C033C05CD919BBD827A6A │ │ │ │ │ BFCF3BD739E32E7FE909AEE068D50FAC33605FFF98C7D0115FB860178FD03DB9 │ │ │ │ │ 7985B78E0AC21F2EA065FA841F5928FB85163B2E2D8F850DC7EE313912C45C28 │ │ │ │ │ 2783F6762C67882EFEDDC7E7567F91C16B16FD8D5A1ABF35B5586307701B91AD │ │ │ │ │ 54984598F2AD46FEE3D68A2731BEAA754C8E730FE0E84952EF77930E4118F8D7 │ │ │ │ │ -2F3AD7547ECD7EB31108291A22BBC656F4D968DF891E4F87EF8FFE711A48FFD9 │ │ │ │ │ -94762E9918C42251D75772AC97BC15A4FF63D911D96AADA1CFAACE8D7001935C │ │ │ │ │ -9D7A0E6B35E1522780C2629D74057738FCE1BD41CD81D97BFD99D19FE03B2EFF │ │ │ │ │ -7B80B18DA5538D06A810DD315F31DE1331EDB82DAC760E6D8A855FCA3C8DD9E3 │ │ │ │ │ -61164D1386FCA2A0E7735AD69D7D9C6335F02064419B2296ADA17DC51A1E2195 │ │ │ │ │ -45FA3A158E075213ACD6607B07385F0D9F5F3C5C385624B43B10016D497FA569 │ │ │ │ │ -103C0A7CC701BF1558C587B15A8094D8E4524D74DC263BE9C5D1C96970A7324F │ │ │ │ │ -5514ED0576D79D5A7C8CC2859C832B0C5869166DA1DB8CAC589AC9EB48379CBB │ │ │ │ │ -33B840FDDADDDA5FFFC54678E901A33854A703C01C16945C99655BF1BEA74EDA │ │ │ │ │ -723B5FC176D9693ACA831C563CDB35C96C69575A510E33D5BB62701CDD2A759E │ │ │ │ │ -79C045541F511340C52E888907801E3548CEC3D2BC22BA40337B64A862929ECD │ │ │ │ │ -6D7C3F92B5C9AC4427AA6986DDB6A4A792F5FB6C969F50C5068CB2A5C9205191 │ │ │ │ │ -C19B22A4D9627E0304444D963FE2F3C6FE86818FF3A6B50130BCE2DF5DAE000D │ │ │ │ │ -658D411135E9DFB829BCF033FF4ABF1A3F3E6579537DB4D17EA4BF7F2F6ACA4D │ │ │ │ │ -6FA0858A09BDD229CF49A29030D280273CEACB3E72945F424D8AAF50E53187D0 │ │ │ │ │ -61786DA0263FE776D86CC33DF81D8C0325343665F9E6096EA072CD7F53C9FDA8 │ │ │ │ │ -74C647B762ABD1B70F4315247C13EAA98B41F80E9A3E62DC60C8FA85254E5239 │ │ │ │ │ -6F9D3EB9C81F9A4EB912388D4F56D56ECB4179475564C8665CDE38A211E518A0 │ │ │ │ │ -96C3577DF26ECCE018A8C4A547CA4D04E6CFF0CD0F5377FF9D64E584E0A506AB │ │ │ │ │ -C5E8D801F041938BF9F11DB1F8496A26D416A8CA3F96E6E43F149E720F43F1FB │ │ │ │ │ -041E107C8F4752AD70F2FDB90292F314F46D175AB7C9E67CB61C820B36431613 │ │ │ │ │ -D24E877E74EEBD37AF9B2A6D5A0B970F1619FDD5FA8EEA9C6040251136A79F29 │ │ │ │ │ -9900E9D3E27DE70055DED223484D7E8701F0B0AACE6B7C9A56C81A8FD69BE0C7 │ │ │ │ │ -1321229E636B6FC5239806C6A6A19A19B0A43F7E6AEACC7FEB7F6471770A94C8 │ │ │ │ │ -3B600E07999F7C108072A04D12BEEFC041719E567910DD7BD3C4237460E1B956 │ │ │ │ │ -D356557A7E149C9C13E30336771715BDE317074DDDDA96F1FA46796E75876647 │ │ │ │ │ -DB67F05D3AF2B4E6AF1F9282F35BD874A386A441E21582858C1E64E5D1D7454C │ │ │ │ │ -CADC57208A8BB7BCAAF1A4B91B9813CDC814D0558AF3D945EB5A3A6F151032C9 │ │ │ │ │ -75C802C88F09810AA73E89735A39DA656AB50A17BFD20DC2E635EB9AF2B2F231 │ │ │ │ │ -AA18D6C51D9DD3D3A6AC403E59449B472CE4AB1B18CCFF150244E173BD0B7664 │ │ │ │ │ -F98E14D6643108BB5903906E7F9CFB98D49B0794333C02BB4F162910DB9CCEDD │ │ │ │ │ -52DC26D72133AEF0BB93A6C66C9F70E8F09A20BD820980E7199BB192CFC97EBF │ │ │ │ │ -A64E98BD6CB08BCC83C8C99399A57AE2731E681E3735CB258C6F44AD0B10E3B3 │ │ │ │ │ -07B7FE769FE7E634AFEF21A2896D47DBB7B5539B130B9A19EC0C0F5961FD328D │ │ │ │ │ -A5993D8899581CFE9C2D6FD3633A361EC8AB040A8D352C233E05131B41AB26F9 │ │ │ │ │ -39C4ACD9B120F0AC1D5B5998266D76B99F81A346FE137BDB4BC8A2E8E4DF6613 │ │ │ │ │ -29FC27ADFDB99FE6A029CB5B874537A96E1DDEC91582EA4FB797CE7488380D09 │ │ │ │ │ -39B5D7E62FBAA11820A86747192D4D3A0C9AB026EED692B17D197D2D5E41F907 │ │ │ │ │ -B213D84A4B85E31646D988899EA86368D86A70696E5319A2448263D0B3EB3B74 │ │ │ │ │ -CCA1402ED89873B8C46091D4A2593617B21A7C5115762A85F7D6873F4DF2DB05 │ │ │ │ │ -E037C7C7C3FA4247DC30F665658AC47CE310C064F95504C55BC1926B32BCDE59 │ │ │ │ │ -9E133FCE4269129F3CC605461B41D2D03D36A19CE4807307C34F9CC8F2803D53 │ │ │ │ │ -517BEA2A7C8DA7FDD55CC8595E0694193DBF48D155CF38359FCD679AC8CC8DB6 │ │ │ │ │ -4C66A6B1D0E477513D07F24F9A14F74B39E9C88DC6D78FA372AB170C90C5FA0A │ │ │ │ │ -63E7CA97F05D859055338D56F15B26EE9DE35CEF3DD1B957980BF4CD5E41A7B3 │ │ │ │ │ -86933BE0BC10053DFE0521ADDC79297FAF877982089D5A11BE6AA32C21615B77 │ │ │ │ │ -6D9036821E70FBD5D6851CFF7D9C67026ECFF8DB0FCAB5D34C261A408EFC759E │ │ │ │ │ -D622E68596D099EA3AD91A1EA4D2C890E69DD9B1AB7BD0587C253484E80EEAD4 │ │ │ │ │ -F2F0BDD8185073BA0FEB29A4DD1E8AB349E705BD2DF85592C7523AD0F62BF850 │ │ │ │ │ -7ABC796790D64593B9C2DB8D72AC65F46421C707918FE3CB7E56C4DA8F965300 │ │ │ │ │ -C4E81F57BDC88397EC5410D074E20210ACF9444B24230D018E858389EC16BCCB │ │ │ │ │ -A712D9A6F286DE3D60EF8AAD3925E52BA30C34E41ADCB8FFBAAE1AB34DAA4800 │ │ │ │ │ -D13E4F1A73BFB2FAB945D14EF1D480B99CE4F8D4FABC683F3D9E43B3F733FC8B │ │ │ │ │ -7E960DB4E7B3E819FB366FE610EBAD2EA57EFEF95167D273FDA0D0AC7C389B0B │ │ │ │ │ -1B897CC5559AB5BE4B8A42BC639C1C415C8250C1ACF76D666A160A549D6F7F07 │ │ │ │ │ -1116AB7090F2E13C8480362685698CE9981CD997E4877D1CA78D61071164B2D7 │ │ │ │ │ -43CABDDBDE7F85E6147A0AE7DA6C021B36D7AFDFF489BD1355AE9C39BBA9A390 │ │ │ │ │ -D7A6D05D74061E884C3690C7CFE0907B94F78F89C5F38E5F9518DBA711D36D92 │ │ │ │ │ -5996BDA63A7FCC85F4931619B8119FD472FD009883293B24B744BCDB5BB3DC61 │ │ │ │ │ -15F8683DC3412BDE4DF569A8F063AE774454D8956B0C8481380303423098F17B │ │ │ │ │ -A9D36209453180EA364BCF5B9DD1D97E6B8010693D725980EA85A0686EAD8E54 │ │ │ │ │ -6D5E5747509082EE97142BC36C06C32AD55108F92242C82828543FE66A9A69EF │ │ │ │ │ -992F9F9F101102DCE650CB95908BA1F97153B25FA7144190B5DA5CF27C5FD773 │ │ │ │ │ -83BF7AD37487DC8A611FEB521D2723207E0DBDAAEE95C60449D52A02C09ADFDB │ │ │ │ │ -DD807D528B9791CAB3FD0913859CFAE05002935EF4E08B60E5A8C69FA8A09BC9 │ │ │ │ │ -42D0D01181BAE6CF37B1E465A4817A01A3B3BB5DCF69192EFAE812E29F04B983 │ │ │ │ │ -1C12755BE49ACF28D2D56FB634050FA5DFBA4348B189E703CECBA02481A67D63 │ │ │ │ │ -232F13C2CB4C6B394C5765BA4B962CE71A8E55989AEA3E78CB80E276CF850A54 │ │ │ │ │ -27C46EDC6E60F35AAF28F3D5A5ECFAD134C9C82F068E794CB44117AB0CBEF1DA │ │ │ │ │ -CF16202858705C59F7343BD32E0DA13639CFAF2EDBEDCED642F7AEE50FAEE3B5 │ │ │ │ │ -82035163AA493121534F84CCA95EC3E3CCF1A9AB3F504DC5FAE73A140D8AD82C │ │ │ │ │ -412AC2E8F4AA05AB3EA5AFCE316C93169861B93C61950A38E29D0DAC409E5AC7 │ │ │ │ │ -B0B53E8101702ECF6A7C24CA2B234FBAD8BF1D091CCE9776537CD7352C8082A0 │ │ │ │ │ -0BD24F742B4C9084521B9DB8C7E69C9D256BAAFDCB0686043A9A0446672593F3 │ │ │ │ │ -0516C36E92A29B9419D62014BFA648A8658C07389D2F2B18EE0229DFDA249B05 │ │ │ │ │ -D36143C212A7195A6AA05446AFBBD03D3D8AF96034F4AF0D83A753D33EF327DC │ │ │ │ │ -3780C53245EB3D4DF98F0A3AD4362034432704CCE31947F5C36A613D058EBC13 │ │ │ │ │ -0B869DC5A7D0FD880BF7415247CC08127C60B9E8A747A019FB8C4EE8A979F364 │ │ │ │ │ -5A4C50BEEACD241C9455892533397413A0D9236B13EADE84CD68661D36F6EE15 │ │ │ │ │ -BF80A49406EA352BA5372470BBA250A13ABF279DDF467C3F3DDE823F623D6344 │ │ │ │ │ -E45EC814AF0F1FD65DBD5037A69BC7CB9A75D249CF12C7E125934A82CBCF5815 │ │ │ │ │ -ABB578BC8A0F4FF0DE4164A97731F59B60B60E6A67D8291B9D33E86FB7F62EDE │ │ │ │ │ -754909D3144D4EE588D3D3DC5C0BE72EB5E648150D4BB723BE989E6EB0754C1A │ │ │ │ │ -675F952C7E1ABD2A8BCABDE003CC6AE463079A7797E2613D3FB73500F5E1E899 │ │ │ │ │ -8F4C2CB3A3AE7DA60CBBA55BD1276441B5CCB595CAB81BFE1FA83B94C9B2AF32 │ │ │ │ │ -F88AC7ED61899AF37AF0A56A0A012B9092B4B05232FA29CA37CA6210C23B3AA3 │ │ │ │ │ -0F90A6A38274E0D4C092F6FC5E2B570950053BD828F6ADEAD2428D9E874699DB │ │ │ │ │ -D556CAE5178B519C72336C6879DD656DC7AF7A26EE98E6C5BE630A484469D665 │ │ │ │ │ -D218567C95109D0D2ABB65C46E996FE33C4197DB7283C9D48623A07CCDAF282B │ │ │ │ │ -85ACE3F1DC387F2E95C31D88A6C2459729CD7C16B37E1554C91F3ABE2B4F5036 │ │ │ │ │ -BB87006B6845ECC135E2A9AB6FAA8E3CDDEB15959B10BAF05364BC9E77C6A648 │ │ │ │ │ -3472A585140C6F3B11990193C60E8D398DA4521E60875E3E0B2C9A3CAA4CD343 │ │ │ │ │ -D9CADD568189DD43A980292E7BD5A9C685CD9435EACD84E71084A8D513608E96 │ │ │ │ │ -4286B6FB50BE8BBE9D14CB006B503BDF0BE66D2B0FADD8A5AB2EF7D3A85AC52C │ │ │ │ │ -8C3D70926CD138272EEB12B9897C71D3C962CFB29082E706133C01B43A3FD38F │ │ │ │ │ -C062C8702BF2347E0F9EF06A6E34DF084EBB136C75E1E24CE6263F0251504363 │ │ │ │ │ -36D9FCC25AD83E5EDD28193DB9E8D14877F99F7DEB1179BAD3A3BC2D02C5E915 │ │ │ │ │ -CE8B17B72DAFCDC7996BA0349067D748BC7DEF7F663909E95F18F44DDA95C048 │ │ │ │ │ -9C09A0182EB526220CE4D6C6AF7F0E748669E91AA5A3E52FEB2D72110DE59E40 │ │ │ │ │ -B59516E870E64BABA637A6EB6098F2E75E6A38E907A111D27FBCA41F0980524C │ │ │ │ │ -A69DB8528C546B72AEDDAC49D3E9DC5198314EAA1CFFDF7AF27A3D015E271831 │ │ │ │ │ -2C09E3C6DAF93232F4371E847C88961756E235B882A31AF8F8DDB350E829D3BD │ │ │ │ │ -C52932289D180255ABDEB555EE5EA70A602BD1ECFF87E0B7DD5ECB20C9B9B74F │ │ │ │ │ -7E726E0D36AB39283770CF0EC4139399D21620BC037A90AB459C7C79E6CE0F34 │ │ │ │ │ -F1D20498AF2243833C82C08F4ABE82F6DBEF4D58F5ED9DAC07B028BB48D3A900 │ │ │ │ │ -088408BD1BB96368DF91F7CE2AF41B8F20C28461018F600A9A020FF22C269546 │ │ │ │ │ -0471A8453CF8A9913C39BC0B909C6ABAD5DD68CCFB5D5B1A90EE058809490377 │ │ │ │ │ -9D0544ACA124F0C7A55B5EF08665A194276E1A7043B471E1E67B0753BBA9C91B │ │ │ │ │ -E5A0A064E899A9B05BC4E85D6A365374AE99E55CB9C2B2F72B2BF1493B32F9EA │ │ │ │ │ -8A1D08E34DC6CA522B115E624948294B9CA815688CAF7A6702666B511E08AA0D │ │ │ │ │ -67B9DAB26FB40CC2BC699F6C83ABFF9EFE65A89E1176D4FEE404F6E67CF4A02B │ │ │ │ │ -9CF81E860E25BC639A82576BB1E28CA9D4A6C435ED5EF7675C81068753EFBBAA │ │ │ │ │ -D5F32BD2D1CB1C8D02A2E92F3FA0EE53B6858BD93E2577603432063037D0BAF8 │ │ │ │ │ -0E28A29838EE186BCC14D3A4C362789C6BFADF16EAFC968570EC794AF56A2DBD │ │ │ │ │ -3C2963266E48C193CBD9E7C83AA75823F44B21ABFD031307BC00621D5DFC2704 │ │ │ │ │ -65F2F5F4ACB2BEB037E84B9C02A16E27E833A85734B30AA0E1ED3782C5020740 │ │ │ │ │ -8B79DA43B3433169B9771EFF4706B383C2FB3F1A58EDA0649FD0A0C09F19E962 │ │ │ │ │ -439C1DD45F69958D07D2DECCF42AB8411B30C6ADDEC717A7C9A88471854F0C3F │ │ │ │ │ -9B4A26BBD0FAAA5AA133E95A1464ADD3702B4242E85173CDCAC4577915784A01 │ │ │ │ │ -B09B401E935F632B2ACFC667B75674BB185F223BEBA860B7FCD723641F796700 │ │ │ │ │ -016F9E41B53BE932BFE6FB3A7FF358087027D2BF9B89BE8B9AB08E1AB83BD960 │ │ │ │ │ -1E40AF9079C9A69DE6DE1D91B39D9649BA575DADD51AF50B078941BB76F825C1 │ │ │ │ │ -739D84EFD38E19D55C2D817E19474A8F7CF18BD2FC7920231E5FAE8E8DDFAD67 │ │ │ │ │ -8877C2C1B2B000BB29DB88CB70EC6CA7F5B5F0752A34E778DC4878608D31F448 │ │ │ │ │ -D22E0109BB74F01F441F3B2DCDBF4BC7DF1A748DE9D4413591D22346E9AE4CD2 │ │ │ │ │ -76D7D03D4CAAB33140C82363F734077CBB6821DA3E74CF207310B3D529ADEE46 │ │ │ │ │ -7F897955AEEFEB0BE307B377ECDDED7073787BFE6A245984ECAAD3005CF593E6 │ │ │ │ │ -C45AC7D42782421DDCCFFB9ADD29C0FBC95C680CE065333DB4E14874ECFC02B4 │ │ │ │ │ -B1DBFA2369F35D95A98E5406A89D60ABB24B16B00D157E39EF5A2385E4B7AAD9 │ │ │ │ │ -2F7BA0B4E06EBB88FC1BEF147F3D5B6CA49B9AFA726D28DE3D1C1C9E7614FBBD │ │ │ │ │ -9CE193B6DEB95FA42D2E5DB558C4994750EAB9B3DAD33910739CBCED988090A9 │ │ │ │ │ -EFA9492FC34DB7776A663FCB5D31191AB32880F492003EF7459EDD177FBFA0C3 │ │ │ │ │ -70928F559C972F241B85C3E1E5F2CE4246B800E97FC7C32068C5164A8C429279 │ │ │ │ │ -6480C2542B2FFB7560828895EB09956F0981202E1209AA83232318EDB90E0E1E │ │ │ │ │ -9CB295ACC1EA42C30BE0C20741B7EB4AF09B85CD2F2AA7FEBB20C3EABD3A3D3C │ │ │ │ │ -9239D67804A52E872006E2FF218D94D5F35FA1F89BB3135EC6806DC820A556CC │ │ │ │ │ -B11EC379EB0B487B8AB096EFAB43CB4AAF93500BD7E9050D25D98D01C9084AFB │ │ │ │ │ -438A7E085185F5B7C6D25F70261912C0728ABA629C08A913C5AC008A7EDEC55C │ │ │ │ │ -7D9AFFE16FBC79FD5F14F1F7319A16B432C584BFE5F7EA7494492FADA6E6563D │ │ │ │ │ -EED7A5EBF53215B2A443156675C2B5161699F4877856BC97E60DB2FECCD412B4 │ │ │ │ │ -FDB6D1AE1591066F4FCE93706EE2B842778979C6162955FB5AC2F0F8EC417532 │ │ │ │ │ -6F5BB764110B7C8FAE68A99A80DF14293F0814BB20D9F7E1E1A36E82BCB1AE19 │ │ │ │ │ -0CB8D1B92FBB174602E5FCDC630510490EB3AD6ECB89BC8BC921B4245BB34F49 │ │ │ │ │ -95E40C2D4353B2A7DEC76DFCE58F1FD7CD9FD57F041E561D8A53B1161371AA0E │ │ │ │ │ -44BC0F1E3BF17B7B032E1F5F67DD319EE36250707D796C7340177D8412185C93 │ │ │ │ │ -9CAE4CA2D267FD31F87D1EA41F81266549BB5C4DB38FAAEEAD1F4CD8CA1FEB3B │ │ │ │ │ -E28698E714AAC415A9218C5CDA71C7A842BAD3B85F9FB261DA556C3817E1924A │ │ │ │ │ -A0B8854AABC73626CE7EB06B2A71DBABA9D7F1D206FDCC2C6842D5F572712241 │ │ │ │ │ -3924BB234C3B44DDF4EEBC13F354E6BC74934963EB35D6012123079298AF6D92 │ │ │ │ │ -5DB462370A45FF83BAD58D6A96DBEAC343D92AD9132667DDB01BE5EC7BBCDC1F │ │ │ │ │ -4B3A450739B4F28A3677D885030ABBA47BA04D14057C50BC5929E1B47AF5A573 │ │ │ │ │ -E2A051F61812B6E6BA23B2F7248D881ADC318C0FF7B037A2B3C52BC0984564AF │ │ │ │ │ -660830F40FC8580469A618F009CDD6F8FB1BE97A889A2E65EE6F814FC8D2DDBF │ │ │ │ │ -B0D015BA32466827E1D69784B551AF1C2C6EC7532E7455634733118C2D360972 │ │ │ │ │ -7BB81CCE5B0E7A31328DFAF63992F8C3FE19B218064489F10050F64F3EAA1AED │ │ │ │ │ -48AD3ED4620AA32A50EF42CC5B5A105A5D106BFB9CBBE7EC62C4F411A57FF503 │ │ │ │ │ -C95B26EF981D9A965D73812B1B0B0EB3AEB79F2FE77E4E374BBF106D995F5127 │ │ │ │ │ -337A3DA6C646505C6AE3C25698A0F92F40D17BE53FFBE58EE743616336E8AC19 │ │ │ │ │ -2010DFE74BA3275B181E7CDC10F5ECADBB14883E42FE2063C34259A73B6F59C0 │ │ │ │ │ -3B4B9AE4FDFE47EE5C38832B5FA5E7C7C1E8ACE4CF78FF4415FCFF5D5CEC03BB │ │ │ │ │ -2FED2A399C7C4223C5EA25518D9B3FED11C1B0885A69F9286E1ADCFE61148FBE │ │ │ │ │ -8B7788A8622331811F4103BDCE931D0942F3F506561574D9A1AC69F0B936D5 │ │ │ │ │ +2F3AD7547D3E54167FB0B315756753DC0DF935CC3D1CBB93A9A575EBF5BBB34F │ │ │ │ │ +2CBD38692849D484C11BB5CF75F095251A87F37EC4727933F21C3932EEE24157 │ │ │ │ │ +6C7AFD8361708C885FA63C37FCEC2057BBC47FBA727F94569921D2F4B8F0DB6A │ │ │ │ │ +2E398A672F4122E3B1E3B4EE28D0AB51662DAA00AC11C2A9FED18429ACED7465 │ │ │ │ │ +4F427E7965A7CAE7FDBE67EAAE97D91A082303BCADE1B1361D66DCB0CB8BFC7E │ │ │ │ │ +107366EB90AE246B2C8528DDBA2E621C4382FD8516E071B813A5BDE514EE30D4 │ │ │ │ │ +C647C8877BAD1BFDF9D6068AC5537C48EDC2B9D1BA2E90D4FC2D8B2B28547E0F │ │ │ │ │ +0CA3F834903BD3E34D8D041778BA8D03914A0FAD861C76BE8DADC6F2409E58ED │ │ │ │ │ +F00A13ED0D7A32B44DDD2E55068F610132BD988276F1B9FC6D87C0895E6F3F11 │ │ │ │ │ +470BCB2863BB76B4A2DEF9A4B0E84D2141C43C205C777F8AB1AD08D723B663A0 │ │ │ │ │ +7C8C04E20628379DAFADC61EED09682404590B44F4C010ABF231DFA73E76BC47 │ │ │ │ │ +46805E2B750F0DA2631D5ABDC18015CDCB0F6AA3F44964FADEB2B3935D5D8A56 │ │ │ │ │ +13747C2A489CF91550E18E80ACF5B308502A3E23AD054350E51E08F4E9A9D1C2 │ │ │ │ │ +32165B2F91993513706C61A6C7F3F6F4B84BB6A0ABAFCFBD7B7668F6D9E70CB8 │ │ │ │ │ +12D0F182C7695E70BF8BB79B0D31DECE935F48F0F4962E37AFF310BF10526CA3 │ │ │ │ │ +182C14D0606401FF14F2F64681657BD2307C061AEE2FA92842EE57B65563EC8E │ │ │ │ │ +699417C841B07C3BDD27D696A8F4A1DB1C2AA0B7CE2416F27FA717D969517847 │ │ │ │ │ +93628E5F350CAE0D9082B23DEE9EC2E9E118BC16834F6B4E51DA34E04EDEB615 │ │ │ │ │ +21317137FE080708AE32A5E9060AB44A74472CB67CAC8389A3D7BBC13AAD69A2 │ │ │ │ │ +261B830CE0E8313283A3AF16E53F73FD2198CC7B5F8213D676319F91DA737335 │ │ │ │ │ +043D9077050507B0FDF7D1F843B53B9417B42EB4756B58F33629E144F15CC1F4 │ │ │ │ │ +9C7E97F7F05115BC9149447C0F7F33DFA0E6233D02909A758E6D122DEE976A76 │ │ │ │ │ +B6926EADAEF95F18BAFB0B3897EAD626AE565FFC1779C9FC0883BB96E0D039A8 │ │ │ │ │ +9B358E350EF48EF2DC360FCFDA8C2153A99B73C1E9F1970B18DC3B9742B48F88 │ │ │ │ │ +7366C254A53E97BC383CB4F5319F86BC263B8F1D1924DAF125B15844A07D8FBE │ │ │ │ │ +C8D7C37ED49DDCA1653A73A10C8FB47D7E206C3F062542EEFDCC1D5A9CFE9989 │ │ │ │ │ +7A631199FC3D325170311A0C9BE1F908798E7A6557BABC53A737BFCB007200AB │ │ │ │ │ +7295364F3A924AE466BF848817718C0CF8885D693C2FB8FC6F0A1761594A6DA6 │ │ │ │ │ +64A7E5F581017704AD1ED2C8D86E3CA962CA1ADFACEF2FAE1065EE95A0F3635E │ │ │ │ │ +F058274E1FB3DD7E8E9E9D5F3B2C0CD7E42F615BF1AD73165C847965411CBD5B │ │ │ │ │ +4DEB61BC2D738B008F19DEB0E01E7C44C64D2068C3DE2065A772A09F76311915 │ │ │ │ │ +1351F49C5E003990BF5218AF7C0CE71EFE92430091547F0A6BDAA6EBAD6BD2E5 │ │ │ │ │ +64BC9CE42BC02B956213B0B3EE0AE753319A1C82C867CE1A5BC4BA595BD36A03 │ │ │ │ │ +A2AB47C8D78053E9CD7FD19A98CBE068DE9D4B6ECE4F4199BB47F3DB94E37728 │ │ │ │ │ +25BF7FDCFF2C9572905D335621D2628D5379E55DDB0F8C8944D8F515AD912CBA │ │ │ │ │ +F05D21CC30550241A2C5A3985CB23992D0EAF00DAE9874747EC4C437A68FE73F │ │ │ │ │ +D4711B9112A5B6B3ABA42C66E1E69F8943EB4E7BD4F0FC9692FC4975F4A3A5C1 │ │ │ │ │ +F24CFDBE7E722C87AD8881C6AD42D8C2D8E0955D0024D7DBD06495370C914C24 │ │ │ │ │ +D925444119F5E7E32842C3E2A4AFCC6D86CCAA8A22642B4923C4A85644F4D903 │ │ │ │ │ +F5523E87F1978E383DFBAF1140A361EFDCA65A8C9C6C49DA773FAC4748EB2CEF │ │ │ │ │ +72463E66090D2A33549CBDAE93F439DA72D5B9F9C1F9D8C6C1EF77A958338993 │ │ │ │ │ +49EFB207EF947E2FE871CFFDEE5637E35F865AE3297AF0EADFC55A4DBEE65EAE │ │ │ │ │ +F0F76F6E59FD44D5A10061A2AC709AD9477789138856BEE2721627B629159BC5 │ │ │ │ │ +44706F376F61BD5AD821165A23423C8B37A00333B486993882D8B82C59AD5ACE │ │ │ │ │ +30455515524B3B4B15C2F0AF977CC8E0C06139B10B8440322DCA02E9762AB408 │ │ │ │ │ +A2C62BF7161EA2B85DC997C35AC51145801796E796E24BCACFDDAE78457B9D32 │ │ │ │ │ +EB488F3E83F039C084AC94AB11A055D0CC1A8045B1B6AFD86D04C4475F88B655 │ │ │ │ │ +2BB4841A882C9159D83F8C41C7945709AA3B3CABAB7E64134C85153005F1A3A3 │ │ │ │ │ +16E85549A8A7492376A2A8FF4429A36EFFBAD1F9A9B3B39E9A80668A46EAECAE │ │ │ │ │ +55C0083B25465C2DE964481B0C866F2753AAF1F286FC1AB5AAF3D67BD5C2F819 │ │ │ │ │ +29CC9D00647FC522920C3E3A03FA09E4068A98EEF146DCD01FFB9066E9D3021F │ │ │ │ │ +F8013704BEF7FF3223AAA104BA98313FFC1AB739E13C6429D1D369C597DBBBF2 │ │ │ │ │ +244E10185F6DB3EFBDD85282E6FB0A30AC280BDC57B0AA57C3D45A0FC73B4857 │ │ │ │ │ +5C69A89237B09326C9981C96D952B8F5A66BC4C5AE345BF9F542C84A51C13F0D │ │ │ │ │ +E409C7B10FE9750EA9434E390D984291315B5E8823937A5E8BE642DFB3A0FF0A │ │ │ │ │ +8C283D1FF1A83313ABF04002FF008F59FB7E456AD22A3F89F6729E96C218B93F │ │ │ │ │ +1DC6E9D168496759506945228CBB327D07DDE5C8DEC00BB28D81C85902A86107 │ │ │ │ │ +D7FFCB71F904655E86F77160544D4F3585C50CF6B0BECCF86970A2D33898A104 │ │ │ │ │ +9A9F137D60606477E240CD7B753DBEB3B46BE5DA6E0C14D9C4F892F6D2941DED │ │ │ │ │ +22D22687CB5428517CBA8C951E1456CB3754CACD4143E29943C7C26B2C887EF7 │ │ │ │ │ +2A8C75DF0D9C8C641390DD78CAE296F2782D446CB9EEC482B69C8868F84C2F87 │ │ │ │ │ +C08B384A84EFB3781F321C566A87A933F87DC063013C7A653CAAD047DE59BE67 │ │ │ │ │ +D3F4C088021221BB9D494E430126CC321B98859091C32E2D01088B13D4A906C1 │ │ │ │ │ +A74234296641B8D1F813823FD66CC4E51D842E7567B795EC049E5119F7FD1250 │ │ │ │ │ +3831DAE6EC64F1CEC560913183F25764BB17F38B3D6D7F885B722E4C29123249 │ │ │ │ │ +51EC9184D101ECEDA3AA402C92C1BD752F6AC6D832B34C6F6E7D1CFA662850FE │ │ │ │ │ +6BA97FE3CE24A65413C25BB0897E67071E799307683087CB08E49ADFA68671D1 │ │ │ │ │ +ED6AC666745199EAD78EED3A7B01B6AF1F711D2DBB1676A4D9AD5530E7A5D587 │ │ │ │ │ +3C89E3AED9378435C8B0D92F50A7B6F28BE04003B87EE9CDE3988DA5E0E00248 │ │ │ │ │ +3FE26FBB9DD774A3A635BFFB62F18BFC8DA7ADE5A9BB4BCF3F9552504CF13EE7 │ │ │ │ │ +FCC60F30D87912E9BA6E8E4011F2E0098E40AE04D4F6E7159AE4E4DA535522CD │ │ │ │ │ +9B3256FAEA074EB2B9FA1931AF209BFF72023FC11F8D9266F6E754F2078BC8F3 │ │ │ │ │ +DD717A566E44ED27E0FFBF2431FF1099725F94E967FB472A3A16B490BBD99AE5 │ │ │ │ │ +7ED60E3DBF36C56C1852ED43039D86D404D450EFD358F95B85BA49B03731CA9A │ │ │ │ │ +0C876C1FF4F87B0E4F10B8628C579824E29A081838090E6BDBF7F25068535DBF │ │ │ │ │ +8C6108FFAFBC7BADC86BB60373E0B230DB9A6A39DB65E5CD5809696C73EC8FF0 │ │ │ │ │ +FFABB5DCD60FF5E787A274BEB4EA19373C9402AE10B0AE4022FC7AF4B88FA952 │ │ │ │ │ +ECF700D2AFF516CA6D2C043111A08AF9A547157AE60B238E52F73CEB33A841AA │ │ │ │ │ +2AEC1486418BBBBC661B20F686FBBC3C5479DF4F0546245CDAAA2DE04725E95F │ │ │ │ │ +130AEE92C087B92478D1F495238B573694ABD67F6F5D75D9E3E953C10867739A │ │ │ │ │ +D9F52A9FC4960DF61BAD1C6FB5175CA119F855C4C9200DF7FB7E6CC45FF27A57 │ │ │ │ │ +39E98CA9BC88434E5CCDCB50F86A46D65E8FCCC4C0B5C40B51D6C47744B04881 │ │ │ │ │ +6076F1FED2A7B495A31975B1779EB84F28D2C03C3CB27A684D2F8BCE61183F29 │ │ │ │ │ +49E3132397D942CC13E5F62506AB68797403A8E46B3BD71A7E1E01E373306F3A │ │ │ │ │ +E51157A1CE8121E2E0FC00A2509E14D90731B6F0F669012E1544ACE624F06DC3 │ │ │ │ │ +15686F4B53AD51C904F98442EA23BE8824ED824C80007514D630DB69C0FC1DD5 │ │ │ │ │ +FB1AF90F3209FDD7F46233CE73BEF67BA90EFFE0C0BF949B14C47F9C17336558 │ │ │ │ │ +FA826BF0C7E3D8DBFE4CF5567836215626493B43031A1E7BD5BFCECD4D2FCECE │ │ │ │ │ +BF8F25BE0FCDDB5CD7B1CBFAF76E49BDFA2152B447A5CC58F3A41FB1130AF0A0 │ │ │ │ │ +7B24C81CC57AF2567DCF427B0BF0FC2C999B3B499DDF4565E58E316F9A0C59C3 │ │ │ │ │ +18A25C2B24A74FD640BF9DB6A745F0AB719BF9416EF3BE798B9AAF49609328E8 │ │ │ │ │ +A041FE94A7E2E7BD70C9AFA8AAF592BDBE9322698FAC086AF34BB52A4C4DD642 │ │ │ │ │ +9403305E8CAFF08E8FD26416A77C2D23B6BABD13D890AF7AA59F158161F3272E │ │ │ │ │ +0C7E7C7A81E06C03941A04270CBE77FD3B43A178C86F9A3AC75234331F24EED9 │ │ │ │ │ +5321F9C1558FB05AECBC8FB80F51874D972CF9C86E0D26A6D705A75886D3FC94 │ │ │ │ │ +76AF8585F33FD04A64348DCB1940D98CB8FFF844BB5488286F8AF4569B96EB67 │ │ │ │ │ +8C79947367E27D2C338107B457A8C5D29E8CD7BA7BEC3BB62D2511AFB654DA05 │ │ │ │ │ +3DB54300A47B25F24FE737F5820BD750DCCF560667B1BB29F6C0F510C15F198B │ │ │ │ │ +9BF84B01DB8CE0AB9FC34CD0442D3F0D3271F9469855C2D2183E406AB629AD13 │ │ │ │ │ +A41134E4DD5A5614E32EBF769D2286D710B5FCF315CA7D923F132A62AC3ADD03 │ │ │ │ │ +0505E6623ABFE91FA44F237D4DF9382FF78E746D13A32124D72AD76523818735 │ │ │ │ │ +090232C331E123AFD63D0FFC8F8640177BBDE4955C4A88F16892970773B5A2CD │ │ │ │ │ +EA497286BCEFE616D4F3B55BFBF76F7503825594FE5B317DFB730C6C56F5A469 │ │ │ │ │ +70A68D9FBE7E58A855CCF2C3D1D8252DFCFFD34160064E6ED0725A20C9594156 │ │ │ │ │ +6760DCF6ACEB97E12E424C900AC72E14980FE77321773BAFAD4A2D90773934E7 │ │ │ │ │ +8AB8682931F81814040704CCA8F606085FD07CA8AEDCD87768265248C1CBE8AC │ │ │ │ │ +241DFA0A2C46B71B00BBAF63BDA57029DA2E492A982676D7F92F7BB774D69F61 │ │ │ │ │ +584947DA6A135F5BE875F5E70D472840E7F53994D4C9E4168EA4CECF4D711AAB │ │ │ │ │ +285C2A898D882F1D410D3EED24F4F7FB5EED3FF84E399B450F06CA14C7B0E96B │ │ │ │ │ +45CA14A4B34666168BDBB2079BF8F2D32D08D2AB559B990F5C96916A4B645592 │ │ │ │ │ +1CE182D91648D034146A03367DE89B611C2CE9D6521E887CAD5721BC064CB3DF │ │ │ │ │ +73CC82267B96BFFCA60D5B163ECEB7B94B720E0D3F1F1385A555D37C7EB9943D │ │ │ │ │ +5AE74CA939EC2A8CFFFE475714A2B26933FE489C5E6DD679CE86532C9F1523F1 │ │ │ │ │ +55B6C0A8F827171F25946410987B7832DA8FE8848BA65A38437529659204B7EC │ │ │ │ │ +91EE7D40FCF5FFC24EAF3AB1200866989BBA25401E07D83DC6F5366F25222A65 │ │ │ │ │ +C413772CAA22917830D51486F366E53C07261AC4718CF56D99BCA94F2D5E662D │ │ │ │ │ +8F5C74C4B91BD38847870747676143882914FAA81BF0E1228788090401B22A3F │ │ │ │ │ +138D3B4572707187F452240B0D421E2E0A2017B9BCF2045DF8090671C052E308 │ │ │ │ │ +077E164B78F3397DC8D34FA326B7E7860FC046299636F49988D63CD121A21432 │ │ │ │ │ +212A5934E6A22E325863B6955094683B30E402EC18F3F81DDAA09A6373845039 │ │ │ │ │ +1413DA560EC62DD0AF690BC8A80D5C016E17A80FF0253F3603E56057C0D713F0 │ │ │ │ │ +A8FA57FCA59882DCD5373E4F0B371C6AD2A401B12EFA538AAF131F3B0AADC43B │ │ │ │ │ +A06BE04818E5BE5309EC4BF010E1373E0EFEBABA5A872AC009084A57B1B9AD7F │ │ │ │ │ +F4A2201FD3FC6A747DE1DEBDCC79F0892FBC50133770BC1D57AB4D4A24153E68 │ │ │ │ │ +5FEBE7E440F15B4481C25257BC063A1A0BF186933FA067B3AC584F40720ACF2A │ │ │ │ │ +E9AB443802C5C47BA0DC75AADBC94880B1597E4D113EFFB262CCDE28C8FA77D0 │ │ │ │ │ +B0937192216CFD99399C843B4D1E11725AEBFE353A531270993FCE92437D1B67 │ │ │ │ │ +094910CB4E5C952CA3EC879DFA02C8B33A4F56235528DAD8366A8E0CE4F32521 │ │ │ │ │ +B6F32B8E30225ACCA72DC34C19A8A5ABEF783432B54AB153CE6288FB9E9D9881 │ │ │ │ │ +5CEA63B08501F2F4FA403FF7F69634BC34FCE8B63F58014B5606F36816514DF4 │ │ │ │ │ +6525392C70B34D95888D62789545CEE0BFEE170F4E33706AEE600066115BE12F │ │ │ │ │ +6BBB59A7746D010F7CED7BC82AD4C621073F7A088DA61C6E320CE7B3C339301C │ │ │ │ │ +8ADD8E2F825C3DF164112272B502900162F564397B738A982237ABD302EB3F5E │ │ │ │ │ +65B1A5FCFBCC36D15BE20090A458FE8794B46AC73ECC91618C73F10EB1E85975 │ │ │ │ │ +2FB5761518C9DC2E9782C909BEF311D40451A3CE3CA8C0AC4F22DB3BE36EEF8D │ │ │ │ │ +0DF21001A00D7B66D52020430505EBC9D20FD853E611DABB7173FA1E911B3E24 │ │ │ │ │ +2CFA5D78B9A15008F3C803236821F4C12605B8F91576D0F3B1DDB5F59B5F2DF5 │ │ │ │ │ +FC7301A06E09270D0922FE82654D749177000C8BAC24E8AEDCE766EFBF1ED6FD │ │ │ │ │ +8110E4185D30A3829199A5FF55E918C23187187A5C9C61175CAE19ADF6085416 │ │ │ │ │ +3036B695EDB12D57C55E65B48FE668F41B681D582B89575C0076A5465BA66EC2 │ │ │ │ │ +0EF409276670BAECDC2F20FEF0E1A47C715820F2720F7C47227C4E337A1CC506 │ │ │ │ │ +1A5108BE17C58FAC9EA647890B3912ED096CAF962F87E5751E6A75186AB70ABE │ │ │ │ │ +B4F69286E19AF197AB616765FD1BA552C1700CA6C9C733E5FA7261478579A497 │ │ │ │ │ +C395F6DE75AC0D943AD981145AFF9D7D98E1E7BE757859D6DAE445315EEA2F4F │ │ │ │ │ +281C71C799137104B18DD5CA574DD99D8029CC68C437479BEDD2BEEF05DB52F8 │ │ │ │ │ +B6CE2D853AFBE862BB002F21689C08E4484F46950FD894DEF590F29AB558FC60 │ │ │ │ │ +A15CE2446C0DECCCEAFDFCA423D89C4427B1E493D2BAC6A2DDB00B51C6193422 │ │ │ │ │ +8907F2DC42BDD9973ED302D9BD8BB51AFFF767C88B5B9EEBBBB0CF0299FCF985 │ │ │ │ │ +4C5076EB3ACB5137A8A13401859F68C36BCDB0A78173F07E3FD7A1D4D78AF22F │ │ │ │ │ +CE63025830680E92D46EE975507EF52154BC99F76683E270E8FC4C91B5F26BE2 │ │ │ │ │ +4D129B9ED7A581A8A3F7BC9836C6746A6C63CB6E36D64A8741F7047880D656DF │ │ │ │ │ +26FC2DA25A32191A0B2E71768D31BA6D316E48D7133CB64A295D261AC3AE6D36 │ │ │ │ │ +286A3418A75C980857CE7D60EA459B49C1033BF3AF5145CD8BB995580B81DCD4 │ │ │ │ │ +E639E18A0E339B6CDB732740755577D341C0CD6B953896724C86A483520F82F6 │ │ │ │ │ +4DA2CCED879E72E1298E907F38F03603AC576FBCBDC04C460ED0578C6BB9AE9E │ │ │ │ │ +CCE61E3740F82635D2FB7C0014DCEEC95A847DA4CF5F5A8B39F747A9149FA8D6 │ │ │ │ │ +7F12395D810F4E251EECAE24EF22A5B6DDD907D4BD65D4316E1F8AB089ED6A52 │ │ │ │ │ +B140A06C76CC4A920E011961A4ECAD3527184941255A8D25E15AA76BE8B2309C │ │ │ │ │ +44D3F17E03456D19485F7AA40702F8B22126769767CE720E675CEF317497B20C │ │ │ │ │ +E4775287CA6E729E1F58DC87384F18C3FDE8F75EA0EB407E596D6ABA6CA6A1D3 │ │ │ │ │ +62C1B6CE585512A57DC9D22FC935F53B3F05D8748B6B5DD6CC888FA14A5D6793 │ │ │ │ │ +1187F9CA7331DF54D9919C58D924D8E14183E1498EC6CB67D9F73DB9683C441B │ │ │ │ │ +C1F541DA7CCF708BE0E4B1E3CCBBDF03AFC9597B9EBA0336D17C25331BE80EF5 │ │ │ │ │ +12AF2159573559E919DC7223451D59BB5FF32F041DD19FA2E7048F5CEEAB7786 │ │ │ │ │ +189C0E8C89EC4259AEC18EC7235FE7EC1C0F87DF14CDA31EE36039B164DB953A │ │ │ │ │ +BE9DDCCEE6078CB373FCF0BF175A8885646565E5D312BB9446541F4263FF9284 │ │ │ │ │ +628B582B34168B4D34DB260629B9150592974E7E39F53618D976FF291BB2F67A │ │ │ │ │ +C022B477241AFC282F38A468D1A09DB8D1AA56E1FC23A205B63576EE1356E6B7 │ │ │ │ │ +E7E742841119D2B365175E8DA090780CF7AB8A2142AA8AE6DCAC637D │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -7545,16 +7554,16 @@ │ │ │ │ │ 44 44 44 44 44 1[44 44 44 44 44 2[44 44 44 44 44 44 1[44 │ │ │ │ │ 44 2[44 44 1[44 44 44 44 44 44 44 44 44 44 44 44 44 44 │ │ │ │ │ 44 44 1[44 44 44 2[44 37[{}70 83.022 /CMTT10 rf /Fh 141[51 │ │ │ │ │ 1[51 7[51 6[51 25[51 71[{}5 99.6264 /CMTT12 rf /Fi 135[59 │ │ │ │ │ 2[62 44 44 46 1[62 56 62 93 31 1[34 31 62 56 34 51 62 │ │ │ │ │ 50 62 54 10[85 1[78 62 84 11[70 2[81 1[85 11[56 56 56 │ │ │ │ │ 56 56 2[31 46[{}33 99.6264 /CMBX12 rf /Fj 134[44 3[46 │ │ │ │ │ -32 33 33 2[42 46 4[23 1[42 1[37 46 2[42 12[60 4[65 4[43 │ │ │ │ │ -3[54 15[42 1[42 1[42 42 42 3[23 44[{}22 83.022 /CMSL10 │ │ │ │ │ +32 33 33 2[42 46 4[23 1[42 1[37 46 1[46 42 12[60 4[65 │ │ │ │ │ +8[54 13[42 2[42 2[42 42 42 3[23 44[{}22 83.022 /CMSL10 │ │ │ │ │ rf /Fk 133[31 37 37 51 37 39 27 28 28 1[39 35 39 59 20 │ │ │ │ │ 2[20 39 35 22 31 39 31 39 35 9[72 53 1[51 39 52 1[48 │ │ │ │ │ 55 1[65 44 2[25 53 3[54 51 50 53 3[55 3[35 35 35 35 35 │ │ │ │ │ 35 35 35 35 35 1[20 24 20 31[39 12[{}53 66.4176 /CMR8 │ │ │ │ │ rf │ │ │ │ │ %DVIPSBitmapFont: Fl tcrm0600 6 1 │ │ │ │ │ /EN0 load IEn S/IEn X FBB FMat/FMat[0.02 0 0 -0.02 0 │ │ │ │ │ @@ -7587,16 +7596,16 @@ │ │ │ │ │ 0780FC0C0FC07F0C3F803F8C7F0007CCF80001FFE000007F8000001E0000007F800001FF │ │ │ │ │ E00007CCF8003F8C7F007F0C3F80FC0C0FC0781E0780601E0180001E0000001E0000001E │ │ │ │ │ 0000001E0000001E0000000C00001A1D7C9E23>42 D E │ │ │ │ │ /Ft load 0 Ft currentfont 66.6667 scalefont put/FMat │ │ │ │ │ X/FBB X/IEn X │ │ │ │ │ %EndDVIPSBitmapFont │ │ │ │ │ /Fu 134[51 2[51 54 38 38 38 1[54 49 54 1[27 2[27 54 49 │ │ │ │ │ -30 43 54 43 1[49 13[54 8[50 2[77 3[70 69 73 10[49 1[49 │ │ │ │ │ -1[49 49 49 3[27 44[{}30 99.6264 /CMR12 rf /Fv 139[51 │ │ │ │ │ +30 43 54 43 54 49 13[54 11[77 64 2[70 69 73 8[49 2[49 │ │ │ │ │ +2[49 49 49 3[27 44[{}31 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 │ │ │ │ │ @@ -7607,88 +7616,88 @@ │ │ │ │ │ %%EndPaperSize │ │ │ │ │ end │ │ │ │ │ %%EndSetup │ │ │ │ │ %%Page: 1 1 │ │ │ │ │ TeXDict begin 1 0 bop 333 739 a Fv(Ordering)44 b(Sparse)f(Matrices)g │ │ │ │ │ (and)h(T)-11 b(ransforming)41 b(F)-11 b(ron)l(t)43 b(T)-11 │ │ │ │ │ b(rees)958 1023 y Fu(Clev)m(e)35 b(Ashcraft,)e(Bo)s(eing)f(Shared)i │ │ │ │ │ -(Services)g(Group)2942 987 y Ft(*)1586 1261 y Fu(Jan)m(uary)g(16,)e │ │ │ │ │ -(2024)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 │ │ │ │ │ +(Services)g(Group)2942 987 y Ft(*)1566 1262 y Fu(F)-8 │ │ │ │ │ +b(ebruary)33 b(18,)f(2025)0 1924 y Fs(1)135 b(In)l(tro)t(duction)0 │ │ │ │ │ +2165 y Fr(If)38 b(the)g(ultimate)g(goal)f(is)g(to)h(solv)n(e)e(linear)h │ │ │ │ │ (systems)g(of)h(the)g(form)f Fq(AX)46 b Fr(=)40 b Fq(B)t │ │ │ │ │ Fr(,)g(one)d(m)n(ust)h(compute)g(an)f Fq(A)j Fr(=)g Fq(LD)r(U)9 │ │ │ │ │ -b Fr(,)0 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 │ │ │ │ │ +b Fr(,)0 2265 y Fq(A)25 b Fr(=)e Fq(U)241 2234 y Fp(T)294 │ │ │ │ │ +2265 y Fq(D)r(U)37 b Fr(or)27 b Fq(A)e Fr(=)f Fq(U)803 │ │ │ │ │ +2234 y Fp(H)865 2265 y Fq(D)r(U)38 b Fr(factorization,)27 │ │ │ │ │ b(dep)r(ending)i(on)f(whether)g(the)h(matrix)e Fq(A)i │ │ │ │ │ Fr(is)f(nonsymmetric,)g(symmetric)0 2364 y(or)34 b(Hermitian.)57 │ │ │ │ │ b Fq(D)37 b Fr(is)d(a)g(diagonal)f(or)g(blo)r(c)n(k)h(diagonal)f │ │ │ │ │ (matrix,)j Fq(L)e Fr(is)g(unit)i(lo)n(w)n(er)c(triangular,)j(and)f │ │ │ │ │ -Fq(U)43 b Fr(is)35 b(unit)g(upp)r(er)0 2463 y(triangular.)54 │ │ │ │ │ +Fq(U)43 b Fr(is)35 b(unit)g(upp)r(er)0 2464 y(triangular.)54 │ │ │ │ │ b Fq(A)34 b Fr(is)g(sparse,)g(but)g(the)g(sparsit)n(y)f(structure)g(of) │ │ │ │ │ h Fq(L)f Fr(and)h Fq(U)43 b Fr(will)34 b(lik)n(ely)f(b)r(e)h(m)n(uc)n │ │ │ │ │ (h)g(larger)e(than)i(that)g(of)g Fq(A)p Fr(,)0 2563 y(i.e.,)27 │ │ │ │ │ b(they)h(will)f(su\013er)g(\014ll-in.)37 b(It)27 b(is)g(crucial)f(to)h │ │ │ │ │ (\014nd)h(a)f(p)r(erm)n(utation)f(matrix)h(suc)n(h)g(that)g(the)g │ │ │ │ │ (factors)f(of)h Fq(P)12 b(AP)3555 2533 y Fp(T)3635 2563 │ │ │ │ │ y Fr(ha)n(v)n(e)26 b(as)0 2663 y(mo)r(derate)h(\014ll-in)h(as)f(can)g │ │ │ │ │ (b)r(e)h(reasonably)d(exp)r(ected.)125 2806 y(T)-7 b(o)32 │ │ │ │ │ b(illustrate,)h(consider)f(a)g(27-p)r(oin)n(t)g(\014nite)h │ │ │ │ │ (di\013erence)f(op)r(erator)f(de\014ned)i(on)g(an)f Fq(n)22 │ │ │ │ │ b Fo(\002)f Fq(n)h Fo(\002)f Fq(n)32 b Fr(grid.)52 b(The)32 │ │ │ │ │ -b(n)n(um)n(b)r(er)0 2905 y(of)e(ro)n(ws)f(and)i(columns)f(in)h │ │ │ │ │ -Fq(A)f Fr(is)h Fq(n)1112 2875 y Fn(3)1149 2905 y Fr(,)g(as)f(is)g(the)h │ │ │ │ │ +b(n)n(um)n(b)r(er)0 2906 y(of)e(ro)n(ws)f(and)i(columns)f(in)h │ │ │ │ │ +Fq(A)f Fr(is)h Fq(n)1112 2876 y Fn(3)1149 2906 y Fr(,)g(as)f(is)g(the)h │ │ │ │ │ (n)n(um)n(b)r(er)f(of)h(nonzero)e(en)n(tries)h(in)g Fq(A)p │ │ │ │ │ Fr(.)46 b(Using)31 b(the)f(natural)g(ordering,)g(the)0 │ │ │ │ │ -3005 y(n)n(um)n(b)r(ers)e(of)g(en)n(tries)g(in)h Fq(L)f │ │ │ │ │ +3006 y(n)n(um)n(b)r(ers)e(of)g(en)n(tries)g(in)h Fq(L)f │ │ │ │ │ Fr(and)g Fq(U)37 b Fr(are)28 b Fq(O)r Fr(\()p Fq(n)1424 │ │ │ │ │ -2975 y Fn(5)1462 3005 y Fr(\),)h(and)f(it)h(tak)n(es)e │ │ │ │ │ -Fq(O)r Fr(\()p Fq(n)2152 2975 y Fn(7)2190 3005 y Fr(\))i(op)r(erations) │ │ │ │ │ +2975 y Fn(5)1462 3006 y Fr(\),)h(and)f(it)h(tak)n(es)e │ │ │ │ │ +Fq(O)r Fr(\()p Fq(n)2152 2975 y Fn(7)2190 3006 y Fr(\))i(op)r(erations) │ │ │ │ │ e(to)i(compute)f(the)h(factorization.)38 b(The)0 3105 │ │ │ │ │ y(banded)28 b(and)f(pro\014le)g(orderings)f([11)o(])h(ha)n(v)n(e)g(the) │ │ │ │ │ h(same)f(complexit)n(y)-7 b(.)125 3248 y(Using)30 b(the)h(nested)g │ │ │ │ │ (dissection)f(ordering,)g([10)o(],)i(the)f(factor)f(storage)e(is)j │ │ │ │ │ (reduced)f(to)h Fq(O)r Fr(\()p Fq(n)3017 3218 y Fn(4)3055 │ │ │ │ │ 3248 y Fr(\))g(and)g(factor)e(op)r(erations)0 3348 y(to)38 │ │ │ │ │ -b Fq(O)r Fr(\()p Fq(n)259 3317 y Fn(6)297 3348 y Fr(\).)67 │ │ │ │ │ +b Fq(O)r Fr(\()p Fq(n)259 3318 y Fn(6)297 3348 y Fr(\).)67 │ │ │ │ │ b(In)38 b(practice,)h(the)f(minim)n(um)g(degree)f(ordering)f(has)h │ │ │ │ │ (this)h(same)f(lo)n(w-\014ll)g(nature,)j(although)d(top)r(ological)0 │ │ │ │ │ -3447 y(coun)n(terexamples)28 b(exist)i([7].)44 b(A)31 │ │ │ │ │ +3448 y(coun)n(terexamples)28 b(exist)i([7].)44 b(A)31 │ │ │ │ │ b(unit)f(cub)r(e)h(is)f(the)g(w)n(orst)f(case)g(comparison)g(b)r(et)n │ │ │ │ │ (w)n(een)h(banded)g(and)g(pro\014le)f(orderings)0 3547 │ │ │ │ │ y(and)35 b(the)g(minim)n(um)h(degree)e(and)h(nested)g(dissection)g │ │ │ │ │ (orderings.)57 b(But,)38 b(there)d(is)g(still)g(a)g(lot)g(to)g(b)r(e)g │ │ │ │ │ -(gained)g(b)n(y)f(using)0 3646 y(a)e(go)r(o)r(d)g(p)r(erm)n(utation)g │ │ │ │ │ +(gained)g(b)n(y)f(using)0 3647 y(a)e(go)r(o)r(d)g(p)r(erm)n(utation)g │ │ │ │ │ (when)g(solving)g(most)g(sparse)f(linear)g(systems,)j(and)e(the)h │ │ │ │ │ (relativ)n(e)e(gain)g(b)r(ecomes)h(larger)f(as)h(the)0 │ │ │ │ │ -3746 y(problem)27 b(size)g(increases.)125 3889 y(This)37 │ │ │ │ │ +3746 y(problem)27 b(size)g(increases.)125 3890 y(This)37 │ │ │ │ │ b(short)g(pap)r(er)h(is)f(a)h(gen)n(tle)f(in)n(tro)r(duction)h(to)f │ │ │ │ │ (the)i(ordering)d(metho)r(ds)i(|)g(the)g(bac)n(kground)e(as)h(w)n(ell)h │ │ │ │ │ (as)f(the)0 3989 y(sp)r(eci\014c)29 b(function)g(calls.)40 │ │ │ │ │ b(But)29 b(\014nding)g(a)f(go)r(o)r(d)g(ordering)f(is)i(not)g(enough.) │ │ │ │ │ 39 b(The)29 b(\\c)n(horeograph)n(y")c(of)j(the)h(factorization)0 │ │ │ │ │ 4089 y(and)h(solv)n(es,)g(i.e.,)h(what)f(data)g(structures)f(and)h │ │ │ │ │ (computations)g(exist,)h(and)f(in)g(a)g(parallel)f(en)n(vironmen)n(t,)h │ │ │ │ │ (whic)n(h)h(thread)0 4188 y(or)24 b(pro)r(cessor)f(do)r(es)h(what)h │ │ │ │ │ (and)g(when,)h(is)e(as)h(crucial.)35 b(The)25 b(structure)f(of)h(the)g │ │ │ │ │ (factor)f(matrices,)h(as)f(w)n(ell)h(as)f(the)i(structure)0 │ │ │ │ │ 4288 y(of)k(the)g(computations)f(is)h(con)n(trolled)e(b)n(y)i(a)f │ │ │ │ │ (\\fron)n(t)g(tree".)43 b(This)29 b(ob)5 b(ject)30 b(is)g(constructed)f │ │ │ │ │ -(directly)g(b)n(y)h(the)g Fm(SPOOLES)0 4387 y Fr(ordering)k(soft)n(w)n │ │ │ │ │ +(directly)g(b)n(y)h(the)g Fm(SPOOLES)0 4388 y Fr(ordering)k(soft)n(w)n │ │ │ │ │ (are,)h(or)f(can)h(b)r(e)h(created)e(from)h(the)h(graph)e(of)h(the)h │ │ │ │ │ (matrix)f(and)g(an)g(outside)g(p)r(erm)n(utation.)59 │ │ │ │ │ b(V)-7 b(arious)0 4487 y(transformations)25 b(on)i(the)h(fron)n(t)e │ │ │ │ │ (tree)h(can)g(mak)n(e)f(a)h(large)e(di\013erence)j(in)f(p)r │ │ │ │ │ (erformance.)36 b(Some)26 b(kno)n(wledge)g(of)h(the)h(linear)0 │ │ │ │ │ 4587 y(system,)f(\(e.g.,)g(do)r(es)g(it)h(come)f(from)g(a)g(2-D)g(or)f │ │ │ │ │ (3-D)h(problem?)36 b(is)27 b(it)h(small)f(or)f(large?\),)h(coupled)g │ │ │ │ │ -(with)h(some)e(kno)n(wledge)0 4686 y(of)i(ho)n(w)f(to)g(tailor)g(a)g │ │ │ │ │ +(with)h(some)e(kno)n(wledge)0 4687 y(of)i(ho)n(w)f(to)g(tailor)g(a)g │ │ │ │ │ (fron)n(t)g(tree,)g(can)h(b)r(e)g(imp)r(ortan)n(t)f(to)g(getting)h(the) │ │ │ │ │ g(b)r(est)g(p)r(erformance)e(from)h(the)h(library)-7 │ │ │ │ │ -b(.)125 4829 y(Section)38 b(2)g(in)n(tro)r(duces)f(some)h(bac)n │ │ │ │ │ +b(.)125 4830 y(Section)38 b(2)g(in)n(tro)r(duces)f(some)h(bac)n │ │ │ │ │ (kground)e(on)i(sparse)f(matrix)h(orderings)e(and)j(describ)r(es)e(the) │ │ │ │ │ i Fm(SPOOLES)f Fr(or-)0 4929 y(dering)f(soft)n(w)n(are.)64 │ │ │ │ │ b(Section)38 b(3)e(presen)n(ts)h(the)h(fron)n(t)f(tree)g(ob)5 │ │ │ │ │ b(ject)37 b(that)h(con)n(trols)d(the)j(factorization,)h(and)e(its)g(v) │ │ │ │ │ -5 b(arious)0 5029 y(transformations)26 b(to)h(impro)n(v)n(e)f(p)r │ │ │ │ │ (erformance.)p 0 5173 1560 4 v 92 5226 a Fl(*)127 5249 │ │ │ │ │ y Fk(P)-6 b(.)33 b(O.)g(Bo)n(x)h(24346,)j(Mail)32 b(Stop)i(7L-21,)i │ │ │ │ │ @@ -7696,16 +7705,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 1756 │ │ │ │ │ -4 v 1949 w(Jan)n(uary)25 b(16,)i(2024)0 390 y Fs(2)135 │ │ │ │ │ +b(and)h(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1442 100 1721 │ │ │ │ │ +4 v 1914 w(F)g(ebruary)26 b(18,)h(2025)0 390 y Fs(2)135 │ │ │ │ │ b(Sparse)45 b(matrix)h(orderings)0 605 y Fr(The)22 b(past)h(few)f(y)n │ │ │ │ │ (ears)f(ha)n(v)n(e)g(seen)h(a)g(resurgence)f(of)i(in)n(terest)f(and)g │ │ │ │ │ (accompan)n(ying)e(impro)n(v)n(emen)n(t)h(in)i(algorithms)e(and)h │ │ │ │ │ (soft-)0 705 y(w)n(are)27 b(to)i(order)e(sparse)g(matrices.)39 │ │ │ │ │ b(The)29 b(minim)n(um)g(degree)f(algorithm,)f(sp)r(eci\014cally)h(the)h │ │ │ │ │ (m)n(ultiple)h(external)d(minim)n(um)0 804 y(degree)c(algorithm)g([19)o │ │ │ │ │ (],)h(w)n(as)f(the)i(preferred)d(algorithm)h(of)h(c)n(hoice)f(for)g │ │ │ │ │ @@ -7808,16 +7817,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(16,)g(2024)p │ │ │ │ │ -702 100 1783 4 v 1947 w(Orderings)g(and)i(F)-7 b(ron)n(t)27 │ │ │ │ │ +TeXDict begin 3 2 bop 0 100 a Fj(F)-7 b(ebruary)26 b(18,)h(2025)p │ │ │ │ │ +737 100 1749 4 v 1912 w(Orderings)f(and)i(F)-7 b(ron)n(t)27 │ │ │ │ │ b(T)-7 b(rees)326 b Fr(3)881 448 y(Figure)27 b(1:)36 │ │ │ │ │ b(A)28 b(3)18 b Fo(\002)g Fr(4)27 b(9-p)r(oin)n(t)g(grid)g(with)h(its)g │ │ │ │ │ (adjacency)f(structure)p 481 1707 119 4 v 670 1707 V │ │ │ │ │ 481 1519 V 670 1519 V 481 1330 V 670 1330 V 481 1141 │ │ │ │ │ V 670 1141 V 446 1659 4 95 v 635 1659 V 824 1659 V 446 │ │ │ │ │ 1470 V 635 1470 V 824 1470 V 446 1281 V 635 1281 V 824 │ │ │ │ │ 1281 V 427 1733 a(0)147 b(1)g(2)427 1544 y(3)g(4)g(5)427 │ │ │ │ │ @@ -7870,16 +7879,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 1756 │ │ │ │ │ -4 v 1949 w(Jan)n(uary)25 b(16,)i(2024)125 390 y Ff(\210)42 │ │ │ │ │ +b(and)h(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1442 100 1721 │ │ │ │ │ +4 v 1914 w(F)g(ebruary)26 b(18,)h(2025)125 390 y Ff(\210)42 │ │ │ │ │ b Fr(generalized)26 b(nested)h(dissection,)125 571 y │ │ │ │ │ Ff(\210)42 b Fr(m)n(ultisection,)27 b(and)125 752 y Ff(\210)42 │ │ │ │ │ b Fr(the)28 b(b)r(etter)g(of)f(generalized)f(nested)i(dissection)f(and) │ │ │ │ │ h(m)n(ultisection.)0 954 y(Minim)n(um)g(degree)f(tak)n(es)f(the)i │ │ │ │ │ (least)f(amoun)n(t)h(of)f(CPU)h(time.)37 b(Generalized)27 │ │ │ │ │ b(nested)g(dissection)h(and)f(m)n(ultisection)h(b)r(oth)0 │ │ │ │ │ 1054 y(require)c(the)i(a)e(partition)h(of)g(the)h(graph,)e(whic)n(h)i │ │ │ │ │ @@ -7950,16 +7959,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(16,)g(2024)p │ │ │ │ │ -702 100 1783 4 v 1947 w(Orderings)g(and)i(F)-7 b(ron)n(t)27 │ │ │ │ │ +TeXDict begin 5 4 bop 0 100 a Fj(F)-7 b(ebruary)26 b(18,)h(2025)p │ │ │ │ │ +737 100 1749 4 v 1912 w(Orderings)f(and)i(F)-7 b(ron)n(t)27 │ │ │ │ │ b(T)-7 b(rees)326 b Fr(5)125 390 y Ff(\210)42 b Fr(The)19 │ │ │ │ │ b Fg(seed)g Fr(parameter)f(is)i(used)f(as)h(a)f(random)g(n)n(um)n(b)r │ │ │ │ │ (er)g(seed.)34 b(\(There)20 b(are)f(man)n(y)g(places)g(in)h(the)g │ │ │ │ │ (graph)f(partitioning)208 490 y(and)k(minim)n(um)i(degree)d(algorithms) │ │ │ │ │ h(where)g(randomness)f(pla)n(ys)h(a)g(part.)35 b(Using)24 │ │ │ │ │ b(a)f(random)g(n)n(um)n(b)r(er)g(seed)h(ensures)208 589 │ │ │ │ │ y(rep)r(eatabilit)n(y)-7 b(.\))125 767 y Ff(\210)42 b │ │ │ │ │ @@ -8030,16 +8039,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 1756 │ │ │ │ │ -4 v 1949 w(Jan)n(uary)25 b(16,)i(2024)125 390 y Fr(Let)33 │ │ │ │ │ +b(and)h(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1442 100 1721 │ │ │ │ │ +4 v 1914 w(F)g(ebruary)26 b(18,)h(2025)125 390 y Fr(Let)33 │ │ │ │ │ b(us)g(no)n(w)f(lo)r(ok)h(at)g(a)g(random)f(triangulation)g(of)h(a)g │ │ │ │ │ (unit)g(cub)r(e.)54 b(This)34 b(matrix)e(has)h(13824)e(ro)n(ws)g(and)i │ │ │ │ │ (columns.)0 490 y(Eac)n(h)28 b(face)h(of)g(the)h(cub)r(e)g(has)f(a)g │ │ │ │ │ (22)18 b Fo(\002)h Fr(22)29 b(regular)e(grid)i(of)g(p)r(oin)n(ts.)42 │ │ │ │ │ b(The)29 b(remainder)g(of)g(the)h(v)n(ertices)e(are)g(placed)h(in)h │ │ │ │ │ (the)0 589 y(in)n(terior)c(using)i(quasi-random)d(p)r(oin)n(ts,)j(and)f │ │ │ │ │ (the)h(Delauney)g(triangulation)e(is)i(computed.)1189 │ │ │ │ │ @@ -8107,16 +8116,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(16,)g(2024)p │ │ │ │ │ -702 100 1783 4 v 1947 w(Orderings)g(and)i(F)-7 b(ron)n(t)27 │ │ │ │ │ +TeXDict begin 7 6 bop 0 100 a Fj(F)-7 b(ebruary)26 b(18,)h(2025)p │ │ │ │ │ +737 100 1749 4 v 1912 w(Orderings)f(and)i(F)-7 b(ron)n(t)27 │ │ │ │ │ b(T)-7 b(rees)326 b Fr(7)888 448 y(Figure)27 b(2:)36 │ │ │ │ │ b(R2D100:)g(randomly)26 b(triangulated,)h(100)f(grid)h(p)r(oin)n(ts)109 │ │ │ │ │ 2355 y @beginspecial 0 @llx 0 @lly 300 @urx 300 @ury │ │ │ │ │ 2160 @rwi 2160 @rhi @setspecial │ │ │ │ │ %%BeginDocument: R2D100.eps │ │ │ │ │ %!PS-Adobe-2.0 EPSF-1.2 │ │ │ │ │ %%BoundingBox: 0.0 0.0 300.0 300.0 │ │ │ │ │ @@ -8992,16 +9001,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 1756 │ │ │ │ │ -4 v 1949 w(Jan)n(uary)25 b(16,)i(2024)701 1332 y Fr(Figure)g(3:)36 │ │ │ │ │ +b(and)h(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1442 100 1721 │ │ │ │ │ +4 v 1914 w(F)g(ebruary)26 b(18,)h(2025)701 1332 y Fr(Figure)g(3:)36 │ │ │ │ │ b(V)-7 b(ertex)28 b(elimination)f(tree)g(for)h(R2D100,)e(100)g(ro)n(ws) │ │ │ │ │ g(and)i(columns)450 4440 y @beginspecial 0 @llx 0 @lly │ │ │ │ │ 600 @urx 600 @ury 3600 @rwi 3600 @rhi @setspecial │ │ │ │ │ %%BeginDocument: vtree.eps │ │ │ │ │ %!PS-Adobe-2.0 EPSF-1.2 │ │ │ │ │ %%BoundingBox: 0 0 600 600 │ │ │ │ │ /CSH { │ │ │ │ │ @@ -9451,16 +9460,16 @@ │ │ │ │ │ grestore │ │ │ │ │ │ │ │ │ │ showpage │ │ │ │ │ │ │ │ │ │ %%EndDocument │ │ │ │ │ @endspecial eop end │ │ │ │ │ %%Page: 9 9 │ │ │ │ │ -TeXDict begin 9 8 bop 0 100 a Fj(Jan)n(uary)26 b(16,)g(2024)p │ │ │ │ │ -702 100 1783 4 v 1947 w(Orderings)g(and)i(F)-7 b(ron)n(t)27 │ │ │ │ │ +TeXDict begin 9 8 bop 0 100 a Fj(F)-7 b(ebruary)26 b(18,)h(2025)p │ │ │ │ │ +737 100 1749 4 v 1912 w(Orderings)f(and)i(F)-7 b(ron)n(t)27 │ │ │ │ │ b(T)-7 b(rees)326 b Fr(9)0 390 y(sup)r(erimp)r(osed)27 │ │ │ │ │ b(on)g(the)h(structure)f(of)g(the)g(factor)g Fq(L)p Fr(.)36 │ │ │ │ │ b(Note)28 b(this)f(one)g(imp)r(ortan)n(t)g(prop)r(ert)n(y:)36 │ │ │ │ │ b(within)28 b(an)n(y)e(blo)r(c)n(k)h(column)0 490 y(and)g(b)r(elo)n(w)h │ │ │ │ │ (the)g(diagonal)e(blo)r(c)n(k,)h(a)g(ro)n(w)f(is)i(either)f(zero)g(or)g │ │ │ │ │ (dense.)125 615 y(The)g(co)r(de)h(fragmen)n(t)e(to)i(con)n(v)n(ert)e(a) │ │ │ │ │ h(tree)g(in)n(to)h(a)f(fundamen)n(tal)h(sup)r(erno)r(de)f(tree)g(is)h │ │ │ │ │ @@ -9539,16 +9548,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 1714 │ │ │ │ │ -4 v 1907 w(Jan)n(uary)25 b(16,)i(2024)0 489 y Fr(Figure)22 │ │ │ │ │ +b(and)j(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1484 100 1679 │ │ │ │ │ +4 v 1872 w(F)g(ebruary)26 b(18,)h(2025)0 489 y Fr(Figure)22 │ │ │ │ │ b(4:)35 b(T)-7 b(op:)34 b(v)n(ertex)22 b(elimination)h(tree)g(with)g │ │ │ │ │ (the)h(v)n(ertices)e(mapp)r(ed)h(to)g(the)h(fundamen)n(tal)f(sup)r │ │ │ │ │ (erno)r(de)g(that)g(con)n(tains)0 589 y(them.)37 b(Bottom:)g(fundamen)n │ │ │ │ │ (tal)28 b(sup)r(erno)r(de)f(tree.)450 3696 y @beginspecial │ │ │ │ │ 0 @llx 0 @lly 600 @urx 600 @ury 3600 @rwi 3600 @rhi @setspecial │ │ │ │ │ %%BeginDocument: fsvtree.eps │ │ │ │ │ %!PS-Adobe-2.0 EPSF-1.2 │ │ │ │ │ @@ -10342,20 +10351,21 @@ │ │ │ │ │ grestore │ │ │ │ │ │ │ │ │ │ showpage │ │ │ │ │ │ │ │ │ │ %%EndDocument │ │ │ │ │ @endspecial eop end │ │ │ │ │ %%Page: 11 11 │ │ │ │ │ -TeXDict begin 11 10 bop 0 100 a Fj(Jan)n(uary)26 b(16,)g(2024)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 │ │ │ │ │ +TeXDict begin 11 10 bop 0 100 a Fj(F)-7 b(ebruary)26 │ │ │ │ │ +b(18,)h(2025)p 737 100 1707 4 v 1871 w(Orderings)f(and)h(F)-7 │ │ │ │ │ +b(ron)n(t)27 b(T)-7 b(rees)327 b Fr(11)610 1332 y(Figure)27 │ │ │ │ │ +b(5:)36 b(Blo)r(c)n(k)27 b(structure)g(of)h Fq(L)f Fr(with)h(the)g │ │ │ │ │ +(fundamen)n(tal)f(sup)r(erno)r(de)h(partition.)450 4440 │ │ │ │ │ +y @beginspecial 0 @llx 0 @lly 550 @urx 550 @ury 3600 │ │ │ │ │ +@rwi 3600 @rhi @setspecial │ │ │ │ │ %%BeginDocument: fsmtx.eps │ │ │ │ │ %!PS-Adobe-2.0 EPSF-1.2 │ │ │ │ │ %%BoundingBox: 0.000 0.000 550.000 550.000 │ │ │ │ │ %%EndComments │ │ │ │ │ │ │ │ │ │ /MainFont /Helvetica findfont 8 scalefont def │ │ │ │ │ MainFont setfont │ │ │ │ │ @@ -10695,16 +10705,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 1714 │ │ │ │ │ -4 v 1907 w(Jan)n(uary)25 b(16,)i(2024)0 864 y Fr(Figure)33 │ │ │ │ │ +b(and)j(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1484 100 1679 │ │ │ │ │ +4 v 1872 w(F)g(ebruary)26 b(18,)h(2025)0 864 y Fr(Figure)33 │ │ │ │ │ b(6:)48 b(T)-7 b(op:)49 b(fundamen)n(tal)33 b(sup)r(erno)r(de)g(tree)h │ │ │ │ │ (with)g(the)f(sup)r(erno)r(des)g(mapp)r(ed)h(to)g(the)f(amalgamated)f │ │ │ │ │ (sup)r(erno)r(de)0 964 y(that)c(con)n(tains)f(them.)37 │ │ │ │ │ b(Bottom:)g(amalgamated)25 b(sup)r(erno)r(de)j(tree.)450 │ │ │ │ │ 4071 y @beginspecial 0 @llx 0 @lly 600 @urx 600 @ury │ │ │ │ │ 3600 @rwi 3600 @rhi @setspecial │ │ │ │ │ %%BeginDocument: amvtree.eps │ │ │ │ │ @@ -11311,20 +11321,21 @@ │ │ │ │ │ grestore │ │ │ │ │ │ │ │ │ │ showpage │ │ │ │ │ │ │ │ │ │ %%EndDocument │ │ │ │ │ @endspecial eop end │ │ │ │ │ %%Page: 13 13 │ │ │ │ │ -TeXDict begin 13 12 bop 0 100 a Fj(Jan)n(uary)26 b(16,)g(2024)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 │ │ │ │ │ +TeXDict begin 13 12 bop 0 100 a Fj(F)-7 b(ebruary)26 │ │ │ │ │ +b(18,)h(2025)p 737 100 1707 4 v 1871 w(Orderings)f(and)h(F)-7 │ │ │ │ │ +b(ron)n(t)27 b(T)-7 b(rees)327 b Fr(13)594 1332 y(Figure)26 │ │ │ │ │ +b(7:)37 b(Blo)r(c)n(k)27 b(structure)g(of)g Fq(L)h Fr(with)g(the)g │ │ │ │ │ +(amalgamated)e(sup)r(erno)r(de)h(partition.)450 4440 │ │ │ │ │ +y @beginspecial 0 @llx 0 @lly 550 @urx 550 @ury 3600 │ │ │ │ │ +@rwi 3600 @rhi @setspecial │ │ │ │ │ %%BeginDocument: ammtx.eps │ │ │ │ │ %!PS-Adobe-2.0 EPSF-1.2 │ │ │ │ │ %%BoundingBox: 0.000 0.000 550.000 550.000 │ │ │ │ │ %%EndComments │ │ │ │ │ │ │ │ │ │ /MainFont /Helvetica findfont 8 scalefont def │ │ │ │ │ MainFont setfont │ │ │ │ │ @@ -11618,16 +11629,16 @@ │ │ │ │ │ xnw ynw dx dy adjncyL draw_matrix │ │ │ │ │ xnw ynw dx dy nrow ncol sn_info draw_sn_overlay │ │ │ │ │ │ │ │ │ │ %%EndDocument │ │ │ │ │ @endspecial eop end │ │ │ │ │ %%Page: 14 14 │ │ │ │ │ TeXDict begin 14 13 bop 0 100 a 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 1714 │ │ │ │ │ -4 v 1907 w(Jan)n(uary)25 b(16,)i(2024)0 390 y Fr(The)k(data)f │ │ │ │ │ +b(and)j(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1484 100 1679 │ │ │ │ │ +4 v 1872 w(F)g(ebruary)26 b(18,)h(2025)0 390 y Fr(The)k(data)f │ │ │ │ │ (structure)g(for)g(a)h(top)f(lev)n(el)g(sup)r(erno)r(de)h(can)f(b)r(e)h │ │ │ │ │ (v)n(ery)f(large,)g(to)r(o)g(large)g(to)g(\014t)h(in)n(to)g(memory)-7 │ │ │ │ │ b(.)45 b(In)31 b(a)f(parallel)0 490 y(en)n(vironmen)n(t,)d(w)n(e)h │ │ │ │ │ (follo)n(w)g(the)g(con)n(v)n(en)n(tion)f(that)h(eac)n(h)g(no)r(de)g(in) │ │ │ │ │ g(the)h(tree)f(is)g(handled)g(b)n(y)g(one)g(pro)r(cess.)37 │ │ │ │ │ b(Ha)n(ving)27 b(a)h(v)n(ery)0 589 y(large)e(no)r(de)i(at)f(the)h(top)g │ │ │ │ │ (lev)n(els)f(of)g(the)h(tree)g(will)f(sev)n(erely)f(decrease)h(the)h │ │ │ │ │ @@ -11717,22 +11728,22 @@ │ │ │ │ │ (an)i(fundamen)n(tal)f(sup)r(erno)r(de)h(tree)f(with)h(a)f(call)h(to)f │ │ │ │ │ Fg(ETree)p 2994 5208 27 4 v 29 w(mergeFrontsOne\(\))17 │ │ │ │ │ b Fr(with)208 5308 y Fg(maxzeros)40 b(=)j(0)p Fr(.)36 │ │ │ │ │ b(W)-7 b(e)26 b(see)g(that)g(the)h(n)n(um)n(b)r(er)e(of)h(fron)n(ts)g │ │ │ │ │ (decreases)e(b)n(y)i(one)f(and)h(the)g(n)n(um)n(b)r(er)g(of)g(en)n │ │ │ │ │ (tries)f(do)r(es)h(not)208 5407 y(c)n(hange.)p eop end │ │ │ │ │ %%Page: 15 15 │ │ │ │ │ -TeXDict begin 15 14 bop 0 100 a Fj(Jan)n(uary)26 b(16,)g(2024)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 │ │ │ │ │ +TeXDict begin 15 14 bop 0 100 a Fj(F)-7 b(ebruary)26 │ │ │ │ │ +b(18,)h(2025)p 737 100 1707 4 v 1871 w(Orderings)f(and)h(F)-7 │ │ │ │ │ +b(ron)n(t)27 b(T)-7 b(rees)327 b Fr(15)0 615 y(Figure)24 │ │ │ │ │ +b(8:)35 b(Left:)h(tree)24 b(after)h(the)g(large)e(sup)r(erno)r(des)h │ │ │ │ │ +(ha)n(v)n(e)g(b)r(een)h(split.)36 b(Righ)n(t:)g(tree)24 │ │ │ │ │ +b(with)h(no)r(des)g(mapp)r(ed)g(bac)n(k)f(to)g(their)0 │ │ │ │ │ +715 y(amalgamated)i(sup)r(erno)r(de.)450 3822 y @beginspecial │ │ │ │ │ +0 @llx 0 @lly 600 @urx 600 @ury 3600 @rwi 3600 @rhi @setspecial │ │ │ │ │ %%BeginDocument: spvtree.eps │ │ │ │ │ %!PS-Adobe-2.0 EPSF-1.2 │ │ │ │ │ %%BoundingBox: 0 0 600 600 │ │ │ │ │ /CSH { │ │ │ │ │ % │ │ │ │ │ % center show a string │ │ │ │ │ % │ │ │ │ │ @@ -12358,16 +12369,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 1714 │ │ │ │ │ -4 v 1907 w(Jan)n(uary)25 b(16,)i(2024)420 595 y Fr(Figure)g(9:)37 │ │ │ │ │ +b(and)j(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1484 100 1679 │ │ │ │ │ +4 v 1872 w(F)g(ebruary)26 b(18,)h(2025)420 595 y Fr(Figure)g(9:)37 │ │ │ │ │ b(Blo)r(c)n(k)27 b(structure)g(of)g Fq(L)g Fr(with)h(the)g(amalgamated) │ │ │ │ │ e(and)i(split)g(sup)r(erno)r(de)f(partition.)450 3702 │ │ │ │ │ y @beginspecial 0 @llx 0 @lly 550 @urx 550 @ury 3600 │ │ │ │ │ @rwi 3600 @rhi @setspecial │ │ │ │ │ %%BeginDocument: spmtx.eps │ │ │ │ │ %!PS-Adobe-2.0 EPSF-1.2 │ │ │ │ │ %%BoundingBox: 0.000 0.000 550.000 550.000 │ │ │ │ │ @@ -12687,44 +12698,45 @@ │ │ │ │ │ b(2021347776)692 4948 y(merge)26 b(an)n(y)p 1114 4978 │ │ │ │ │ V 99 w(0.012)279 b(597)232 b(85366)142 b(3753241)154 │ │ │ │ │ b(2035158539)692 5048 y(split)p 1114 5078 V 316 w(0.043)279 │ │ │ │ │ b(643)190 b(115139)142 b(3753241)154 b(2035158539)692 │ │ │ │ │ 5148 y(\014nal)p 1114 5177 V 316 w(0.423)279 b(643)190 │ │ │ │ │ b(115128)142 b(3752694)154 b(2034396840)p eop end │ │ │ │ │ %%Page: 17 17 │ │ │ │ │ -TeXDict begin 17 16 bop 0 100 a Fj(Jan)n(uary)26 b(16,)g(2024)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 │ │ │ │ │ -b(ho)n(w)g(the)h(n)n(um)n(b)r(er)f(of)g(fron)n(ts)g(is)g(decreased)f(b) │ │ │ │ │ -n(y)h(almost)g(one)g(half,)i(and)e(the)g(n)n(um)n(b)r(er)h(of)f(factor) │ │ │ │ │ -208 689 y(en)n(tries)26 b(and)i(op)r(erations)e(increase)g(b)n(y)i │ │ │ │ │ -(1\045.)125 868 y Ff(\210)42 b Fr(The)26 b(third)g(step)g(is)g(a)g │ │ │ │ │ -(call)g(to)g Fg(ETree)p 1383 868 V 29 w(mergeFrontsAll\(\))19 │ │ │ │ │ -b Fr(with)27 b Fg(maxzeros)40 b(=)j(1000)p Fr(,)25 b(where)h(w)n(e)g │ │ │ │ │ -(try)f(to)h(merge)f(a)208 967 y(no)r(de)h(with)g(all)g(of)g(its)h(c)n │ │ │ │ │ -(hildren)e(if)i(p)r(ossible.)36 b(The)26 b(n)n(um)n(b)r(er)g(of)g(fron) │ │ │ │ │ -n(ts)g(decreases)e(again)h(b)n(y)h(a)f(factor)h(of)g(\014v)n(e,)g │ │ │ │ │ -(while)208 1067 y(the)d(n)n(um)n(b)r(er)g(of)g(factor)f(en)n(tries)h │ │ │ │ │ -(and)f(op)r(erations)g(increases)g(b)n(y)h(7\045)f(and)h(2\045,)h(resp) │ │ │ │ │ -r(ectiv)n(ely)-7 b(,)23 b(when)h(compared)e(with)208 │ │ │ │ │ -1167 y(the)28 b(original)e(factor)g(matrices.)125 1345 │ │ │ │ │ -y Ff(\210)42 b Fr(The)27 b(fourth)h(step)g(is)g(a)f(call)h(to)f │ │ │ │ │ -Fg(ETree)p 1438 1345 V 30 w(mergeFrontsAny\()o(\))22 │ │ │ │ │ -b Fr(with)28 b Fg(maxzeros)41 b(=)i(1000)p Fr(,)26 b(where)h(w)n(e)h │ │ │ │ │ -(try)f(to)h(merge)208 1445 y(a)f(fron)n(t)h(with)h(an)n(y)f(subset)g │ │ │ │ │ -(of)g(its)h(c)n(hildren.)38 b(The)29 b(n)n(um)n(b)r(er)f(of)g(fron)n │ │ │ │ │ -(ts)f(decreases)g(further,)i(and)f(the)g(factor)g(en)n(tries)208 │ │ │ │ │ -1545 y(and)f(op)r(erations)f(increase)h(b)n(y)g(8\045)g(and)h(3\045,)f │ │ │ │ │ -(resp)r(ectiv)n(ely)-7 b(.)125 1723 y Ff(\210)42 b Fr(In)32 │ │ │ │ │ +TeXDict begin 17 16 bop 0 100 a Fj(F)-7 b(ebruary)26 │ │ │ │ │ +b(18,)h(2025)p 737 100 1707 4 v 1871 w(Orderings)f(and)h(F)-7 │ │ │ │ │ +b(ron)n(t)27 b(T)-7 b(rees)327 b Fr(17)125 390 y Ff(\210)42 │ │ │ │ │ +b Fr(The)33 b(second)f(step)i(is)f(also)f(a)h(call)f(to)i │ │ │ │ │ +Fg(ETree)p 1665 390 27 4 v 29 w(mergeFrontsOne\(\))o │ │ │ │ │ +Fr(,)29 b(this)k(time)h(with)g Fg(maxzeros)40 b(=)j(1000)p │ │ │ │ │ +Fr(.)52 b(Here)208 490 y(w)n(e)30 b(merge)h(fron)n(ts)f(with)i(only)f │ │ │ │ │ +(one)f(c)n(hild)i(with)f(that)h(c)n(hild,)g(in)f(other)g(w)n(ords,)g │ │ │ │ │ +(only)g(c)n(hains)f(of)h(no)r(des)g(can)g(merge)208 589 │ │ │ │ │ +y(together.)50 b(Note)32 b(ho)n(w)g(the)h(n)n(um)n(b)r(er)f(of)g(fron)n │ │ │ │ │ +(ts)g(is)g(decreased)f(b)n(y)h(almost)g(one)g(half,)i(and)e(the)g(n)n │ │ │ │ │ +(um)n(b)r(er)h(of)f(factor)208 689 y(en)n(tries)26 b(and)i(op)r │ │ │ │ │ +(erations)e(increase)g(b)n(y)i(1\045.)125 868 y Ff(\210)42 │ │ │ │ │ +b Fr(The)26 b(third)g(step)g(is)g(a)g(call)g(to)g Fg(ETree)p │ │ │ │ │ +1383 868 V 29 w(mergeFrontsAll\(\))19 b Fr(with)27 b │ │ │ │ │ +Fg(maxzeros)40 b(=)j(1000)p Fr(,)25 b(where)h(w)n(e)g(try)f(to)h(merge) │ │ │ │ │ +f(a)208 967 y(no)r(de)h(with)g(all)g(of)g(its)h(c)n(hildren)e(if)i(p)r │ │ │ │ │ +(ossible.)36 b(The)26 b(n)n(um)n(b)r(er)g(of)g(fron)n(ts)g(decreases)e │ │ │ │ │ +(again)h(b)n(y)h(a)f(factor)h(of)g(\014v)n(e,)g(while)208 │ │ │ │ │ +1067 y(the)d(n)n(um)n(b)r(er)g(of)g(factor)f(en)n(tries)h(and)f(op)r │ │ │ │ │ +(erations)g(increases)g(b)n(y)h(7\045)f(and)h(2\045,)h(resp)r(ectiv)n │ │ │ │ │ +(ely)-7 b(,)23 b(when)h(compared)e(with)208 1167 y(the)28 │ │ │ │ │ +b(original)e(factor)g(matrices.)125 1345 y Ff(\210)42 │ │ │ │ │ +b Fr(The)27 b(fourth)h(step)g(is)g(a)f(call)h(to)f Fg(ETree)p │ │ │ │ │ +1438 1345 V 30 w(mergeFrontsAny\()o(\))22 b Fr(with)28 │ │ │ │ │ +b Fg(maxzeros)41 b(=)i(1000)p Fr(,)26 b(where)h(w)n(e)h(try)f(to)h │ │ │ │ │ +(merge)208 1445 y(a)f(fron)n(t)h(with)h(an)n(y)f(subset)g(of)g(its)h(c) │ │ │ │ │ +n(hildren.)38 b(The)29 b(n)n(um)n(b)r(er)f(of)g(fron)n(ts)f(decreases)g │ │ │ │ │ +(further,)i(and)f(the)g(factor)g(en)n(tries)208 1545 │ │ │ │ │ +y(and)f(op)r(erations)f(increase)h(b)n(y)g(8\045)g(and)h(3\045,)f(resp) │ │ │ │ │ +r(ectiv)n(ely)-7 b(.)125 1723 y Ff(\210)42 b Fr(In)32 │ │ │ │ │ b(the)h(\014fth)g(step)g(is)f(a)g(call)g(to)g Fg(ETree)p │ │ │ │ │ 1477 1723 V 29 w(splitFronts\(\))c Fr(with)k Fg(maxsize)41 │ │ │ │ │ b(=)i(64)p Fr(,)33 b(where)f(w)n(e)g(try)g(split)h(the)g(large)208 │ │ │ │ │ 1823 y(fron)n(ts)38 b(in)n(to)g(smaller)g(fron)n(ts.)71 │ │ │ │ │ b(Note)38 b(that)i(the)f(n)n(um)n(b)r(er)g(of)f(factor)g(en)n(tries)h │ │ │ │ │ (and)f(op)r(erations)g(do)h(not)f(seem)h(to)208 1923 │ │ │ │ │ y(increase,)29 b(while)h(the)g(n)n(um)n(b)r(er)g(of)g(fron)n(ts)f │ │ │ │ │ @@ -12805,16 +12817,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 1714 │ │ │ │ │ -4 v 1907 w(Jan)n(uary)25 b(16,)i(2024)0 390 y Fr(the)g(submatrices)e │ │ │ │ │ +b(and)j(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1484 100 1679 │ │ │ │ │ +4 v 1872 w(F)g(ebruary)26 b(18,)h(2025)0 390 y Fr(the)g(submatrices)e │ │ │ │ │ (that)i(tak)n(e)f(part)g(are)f(v)n(ery)g(small.)36 b(The)27 │ │ │ │ │ b(o)n(v)n(erhead)d(for)i(the)g(computations)g(tak)n(es)g(far)g(more)f │ │ │ │ │ (time)i(than)0 490 y(the)h(computations)f(themselv)n(es.)125 │ │ │ │ │ 612 y(This)35 b(m)n(ultistep)h(pro)r(cess)e(of)h(merging,)i(merging)d │ │ │ │ │ (again,)i(etc,)h(and)f(\014nally)f(splitting)g(the)h(fron)n(t)f(trees)g │ │ │ │ │ (is)g(tedious.)0 712 y(There)27 b(are)g(simple)g(metho)r(ds)h(that)g │ │ │ │ │ (do)f(the)h(pro)r(cess)f(in)h(one)f(step.)0 894 y Fg(ETree)129 │ │ │ │ │ @@ -12909,30 +12921,30 @@ │ │ │ │ │ b(of)f Fg(64)g Fr(is)h(what)f(w)n(e)g(customarily)g(use.)0 │ │ │ │ │ 5103 y Fs(References)42 5308 y Fr([1])41 b(P)-7 b(.)35 │ │ │ │ │ b(Amesto)n(y)-7 b(,)37 b(T.)f(Da)n(vis,)h(and)e(I.)h(Du\013.)62 │ │ │ │ │ b(An)36 b(appro)n(ximate)e(minim)n(um)i(degree)f(ordering)f(algorithm.) │ │ │ │ │ 59 b Fe(SIAM)37 b(J.)171 5407 y(Matrix)30 b(A)n(nal.)g(Appl.)p │ │ │ │ │ Fr(,)f(17:886{905,)23 b(1996.)p eop end │ │ │ │ │ %%Page: 19 19 │ │ │ │ │ -TeXDict begin 19 18 bop 0 100 a Fj(Jan)n(uary)26 b(16,)g(2024)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 │ │ │ │ │ -w Fr(3.3)108 b(129.8)142 b(15.3)297 b(5.3)291 b(7.8)213 │ │ │ │ │ -b(7.1)150 b(146.2)628 911 y(10)287 b Fo(1)p 1241 941 │ │ │ │ │ -V 220 w Fr(3.5)108 b(129.2)142 b(15.3)297 b(3.3)291 b(5.3)179 │ │ │ │ │ -b(10.5)142 b(141.3)593 1011 y(100)280 b Fo(1)p 1241 1041 │ │ │ │ │ -V 220 w Fr(3.0)108 b(119.3)142 b(16.7)297 b(2.0)291 b(3.9)179 │ │ │ │ │ -b(14.4)142 b(128.2)559 1110 y(1000)272 b Fo(1)p 1241 │ │ │ │ │ -1140 V 220 w Fr(3.0)108 b(121.8)142 b(16.7)297 b(1.4)291 │ │ │ │ │ +TeXDict begin 19 18 bop 0 100 a Fj(F)-7 b(ebruary)26 │ │ │ │ │ +b(18,)h(2025)p 737 100 1707 4 v 1871 w(Orderings)f(and)h(F)-7 │ │ │ │ │ +b(ron)n(t)27 b(T)-7 b(rees)327 b Fr(19)844 448 y(T)-7 │ │ │ │ │ +b(able)27 b(3:)36 b(R3D13824:)f(the)28 b(in\015uence)g(of)f │ │ │ │ │ +Fg(maxzeros)e Fr(and)i Fg(maxsize)p Fr(.)p 1241 639 4 │ │ │ │ │ +100 v 1674 609 a(factor)942 b(solv)n(e)276 b(total)440 │ │ │ │ │ +709 y Fg(maxzeros)96 b(maxsize)p 1241 738 V 97 w Fr(init)105 │ │ │ │ │ +b(CPU)g(m\015ops)99 b(p)r(ostpro)r(cess)f(CPU)i(m\015ops)k(CPU)p │ │ │ │ │ +390 742 3121 4 v 663 811 a(0)294 b Fo(1)p 1241 841 4 │ │ │ │ │ +100 v 220 w Fr(3.3)108 b(129.8)142 b(15.3)297 b(5.3)291 │ │ │ │ │ +b(7.8)213 b(7.1)150 b(146.2)628 911 y(10)287 b Fo(1)p │ │ │ │ │ +1241 941 V 220 w Fr(3.5)108 b(129.2)142 b(15.3)297 b(3.3)291 │ │ │ │ │ +b(5.3)179 b(10.5)142 b(141.3)593 1011 y(100)280 b Fo(1)p │ │ │ │ │ +1241 1041 V 220 w Fr(3.0)108 b(119.3)142 b(16.7)297 b(2.0)291 │ │ │ │ │ +b(3.9)179 b(14.4)142 b(128.2)559 1110 y(1000)272 b Fo(1)p │ │ │ │ │ +1241 1140 V 220 w Fr(3.0)108 b(121.8)142 b(16.7)297 b(1.4)291 │ │ │ │ │ b(3.5)179 b(17.0)142 b(129.7)524 1210 y(10000)265 b Fo(1)p │ │ │ │ │ 1241 1240 V 220 w Fr(3.5)108 b(138.1)142 b(16.8)297 b(1.5)291 │ │ │ │ │ b(4.0)179 b(17.8)142 b(147.1)559 1310 y(1000)272 b(32)p │ │ │ │ │ 1241 1340 V 219 w(3.3)143 b(89.8)149 b(22.7)297 b(2.6)291 │ │ │ │ │ b(4.1)179 b(14.7)e(99.8)559 1409 y(1000)272 b(48)p 1241 │ │ │ │ │ 1439 V 219 w(3.1)143 b(85.8)149 b(23.7)297 b(2.1)291 │ │ │ │ │ b(3.6)179 b(16.5)e(94.6)559 1509 y(1000)272 b(64)p 1241 │ │ │ │ │ @@ -12998,16 +13010,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 1714 │ │ │ │ │ -4 v 1907 w(Jan)n(uary)25 b(16,)i(2024)0 390 y Fr([13])41 │ │ │ │ │ +b(and)j(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1484 100 1679 │ │ │ │ │ +4 v 1872 w(F)g(ebruary)26 b(18,)h(2025)0 390 y Fr([13])41 │ │ │ │ │ b(B.)24 b(Hendric)n(kson)e(and)i(R.)g(Leland.)31 b(An)24 │ │ │ │ │ b(impro)n(v)n(ed)f(sp)r(ectral)g(graph)g(partitioning)g(algorithm)g │ │ │ │ │ (for)h(mapping)f(parallel)171 490 y(computations.)28 │ │ │ │ │ b(T)-7 b(ec)n(hnical)23 b(Rep)r(ort)f(SAND92-1460,)g(Sandia)h(National) │ │ │ │ │ f(Lab)r(oratories,)g(Albuquerque,)h(NM,)h(1992.)0 656 │ │ │ │ │ y([14])41 b(B.)f(Hendric)n(kson)f(and)h(R.)g(Leland.)74 │ │ │ │ │ b(The)40 b(Chaco)f(user's)g(guide.)74 b(T)-7 b(ec)n(hnical)39 │ │ │ │ │ ├── ps2ascii {} │ │ │ │ │ │ @@ -1,11 +1,11 @@ │ │ │ │ │ │ Ordering Sparse Matrices and Transforming Front Trees │ │ │ │ │ │ ∗ │ │ │ │ │ │ Cleve Ashcraft, Boeing Shared Services Group │ │ │ │ │ │ - January 16, 2024 │ │ │ │ │ │ + February 18, 2025 │ │ │ │ │ │ 1 Introduction │ │ │ │ │ │ If the ultimate goal is to solve linear systems of the form AX = B, one must compute an A = LDU, │ │ │ │ │ │ A=UTDU orA=UHDU factorization, depending on whether the matrix A is nonsymmetric, symmetric │ │ │ │ │ │ or Hermitian. D is a diagonal or block diagonal matrix, L is unit lower triangular, and U is unit upper │ │ │ │ │ │ triangular. A is sparse, but the sparsity structure of L and U will likely be much larger than that of A, │ │ │ │ │ │ i.e., they will suffer fill-in. It is crucial to find a permutation matrix such that the factors of PAPT have as │ │ │ │ │ │ moderate fill-in as can be reasonably expected. │ │ │ │ │ │ @@ -35,15 +35,15 @@ │ │ │ │ │ │ Section 2 introduces some background on sparse matrix orderings and describes the SPOOLES or- │ │ │ │ │ │ dering software. Section 3 presents the front tree object that controls the factorization, and its various │ │ │ │ │ │ transformations to improve performance. │ │ │ │ │ │ ∗P. O. Box 24346, Mail Stop 7L-21, Seattle, Washington 98124. This research was supported in part by the DARPA │ │ │ │ │ │ Contract DABT63-95-C-0122 and the DoD High Performance Computing Modernization Program Common HPC Software │ │ │ │ │ │ Support Initiative. │ │ │ │ │ │ 1 │ │ │ │ │ │ - 2 Orderings and Front Trees January 16, 2024 │ │ │ │ │ │ + 2 Orderings and Front Trees February 18, 2025 │ │ │ │ │ │ 2 Sparse matrix orderings │ │ │ │ │ │ Thepast few years have seen a resurgence of interest and accompanying improvement in algorithms and soft- │ │ │ │ │ │ ware to order sparse matrices. The minimum degree algorithm, specifically the multiple external minimum │ │ │ │ │ │ degree algorithm [19], was the preferred algorithm of choice for the better part of a decade. Alternative min- │ │ │ │ │ │ imum priority codes have recently pushed multiple minimum degree aside, including approximate minimum │ │ │ │ │ │ degree [1] and approximate deficiency [21], [25]. They offer improved quality or improved run time, and on │ │ │ │ │ │ occasion, both. │ │ │ │ │ │ @@ -81,15 +81,15 @@ │ │ │ │ │ │ One can construct the IVL object directly. There are methods to set the number of lists, to set the size │ │ │ │ │ │ of a list, to copy entries in a list into the object. It resizes itself as necessary. However, if one already has │ │ │ │ │ │ the matrix entries of A stored in an InpMtx object (which is the way that SPOOLES deals with sparse │ │ │ │ │ │ matrices), there is an easier way. One can create an IVL object from the InpMtx object, as follows. │ │ │ │ │ │ InpMtx *A ; │ │ │ │ │ │ IVL *adjIVL ; │ │ │ │ │ │ adjIVL = InpMtx_fullAdjacency(A) ; │ │ │ │ │ │ - January 16, 2024 Orderings and Front Trees 3 │ │ │ │ │ │ + February 18, 2025 Orderings and Front Trees 3 │ │ │ │ │ │ Figure 1: A 3×4 9-point grid with its adjacency structure │ │ │ │ │ │ IVL : integer vector list object : │ │ │ │ │ │ type 1, chunked storage │ │ │ │ │ │ 12 lists, 12 maximum lists, 70 tsize, 4240 total bytes │ │ │ │ │ │ 1 chunks, 70 active entries, 1024 allocated, 6.84 % used │ │ │ │ │ │ 0 : 0 1 3 4 │ │ │ │ │ │ 9 10 11 1 : 0 1 2 3 4 5 │ │ │ │ │ │ @@ -121,15 +121,15 @@ │ │ │ │ │ │ This is an initializer for the Graph object, one that takes as input a complete IVL adjacency object. The │ │ │ │ │ │ 0 and NULL fields are not applicable here. (The Graph object is sophisticated — it can have weighted or │ │ │ │ │ │ unweighted vertices, weighted or unweighted edges, or both, and it can have boundary vertices. Neither is │ │ │ │ │ │ relevant now.) │ │ │ │ │ │ 2.2 Constructing an ordering │ │ │ │ │ │ Once we have a Graph object, we can construct an ordering. There are four choices: │ │ │ │ │ │ • minimum degree, (actually multiple external minimum degree, from [19]), │ │ │ │ │ │ - 4 Orderings and Front Trees January 16, 2024 │ │ │ │ │ │ + 4 Orderings and Front Trees February 18, 2025 │ │ │ │ │ │ • generalized nested dissection, │ │ │ │ │ │ • multisection, and │ │ │ │ │ │ • the better of generalized nested dissection and multisection. │ │ │ │ │ │ Minimum degree takes the least amount of CPU time. Generalized nested dissection and multisection both │ │ │ │ │ │ require the a partition of the graph, which can be much more expensive to compute than a minimum degree │ │ │ │ │ │ ordering. By and large, for larger graphs nested dissection generates better orderings than minimum degree, │ │ │ │ │ │ and the difference in quality increases as the graph size increases. Multisection is an ordering which almost │ │ │ │ │ │ @@ -161,15 +161,15 @@ │ │ │ │ │ │ etree = orderViaBestOfNDandMS(graph, maxdomainsize, maxzeros, │ │ │ │ │ │ maxsize, seed, msglvl, msgFile) ; │ │ │ │ │ │ Now let us describe the different parameters. │ │ │ │ │ │ • The msglvl and msgFile parameters are used to control output. When msglvl = 0, there is no │ │ │ │ │ │ output. When msglvl > 0, output goes to the msgFile file. The SPOOLES library is a research │ │ │ │ │ │ code, we have left a great deal of monitoring and debug code in the software. Large values of msglvl │ │ │ │ │ │ mayresult in large message files. To see the statistics generated during the ordering, use msglvl = 1. │ │ │ │ │ │ - January 16, 2024 Orderings and Front Trees 5 │ │ │ │ │ │ + February 18, 2025 Orderings and Front Trees 5 │ │ │ │ │ │ • Theseedparameterisusedasarandomnumberseed. (Therearemanyplacesinthegraphpartitioning │ │ │ │ │ │ and minimum degree algorithms where randomness plays a part. Using a random number seed ensures │ │ │ │ │ │ repeatability.) │ │ │ │ │ │ • maxdomainsize is used for the nested dissection and multisection orderings. This parameter is used │ │ │ │ │ │ during the graph partition. Any subgraph that is larger than maxdomainsize is split. We recommend │ │ │ │ │ │ using a value of neqns/16 or neqns/32. Note: maxdomainsize must be greater than zero. │ │ │ │ │ │ • maxzeros and maxsize are used to transform the front tree. In effect, we have placed the ordering │ │ │ │ │ │ @@ -203,15 +203,15 @@ │ │ │ │ │ │ 10102 4.6 210364 10651916 6.2 211089 10722231 │ │ │ │ │ │ 10103 4.6 215795 11760095 6.4 217141 11606103 │ │ │ │ │ │ 10104 4.6 210989 10842091 6.1 212828 11168728 │ │ │ │ │ │ 10105 4.8 209201 10335761 6.1 210468 10582750 │ │ │ │ │ │ For the nested dissection and multisection orderings, we used maxdomainsize = 100. We see that there is │ │ │ │ │ │ really little difference in ordering quality, while the minimum degree ordering takes much less time than the │ │ │ │ │ │ other orderings. │ │ │ │ │ │ - 6 Orderings and Front Trees January 16, 2024 │ │ │ │ │ │ + 6 Orderings and Front Trees February 18, 2025 │ │ │ │ │ │ Let us now look at a random triangulation of a unit cube. This matrix has 13824 rows and columns. │ │ │ │ │ │ Each face of the cube has a 22×22 regular grid of points. The remainder of the vertices are placed in the │ │ │ │ │ │ interior using quasi-random points, and the Delauney triangulation is computed. │ │ │ │ │ │ minimum degree nested dissection │ │ │ │ │ │ seed CPU #entries #ops CPU #entries #ops │ │ │ │ │ │ 10101 9.2 5783892 6119141542 27.8 3410222 1921402246 │ │ │ │ │ │ 10102 8.8 5651678 5959584620 31.4 3470063 1998795621 │ │ │ │ │ │ @@ -245,15 +245,15 @@ │ │ │ │ │ │ ETree *vetree ; │ │ │ │ │ │ int *newToOld, *oldToNew ; │ │ │ │ │ │ Graph *graph ; │ │ │ │ │ │ vetree = ETree_new() ; │ │ │ │ │ │ ETree_initFromGraphWithPerms(vetree, graph, newToOld, oldToNew) ; │ │ │ │ │ │ Thevetreeobjectinthecodefragmentaboveisavertex elimination tree [20], [26], where each front contains │ │ │ │ │ │ one vertex. │ │ │ │ │ │ - January 16, 2024 Orderings and Front Trees 7 │ │ │ │ │ │ + February 18, 2025 Orderings and Front Trees 7 │ │ │ │ │ │ Figure 2: R2D100: randomly triangulated, 100 grid points │ │ │ │ │ │ 48 49 51 50 55 91 8 11 10 9 │ │ │ │ │ │ 52 │ │ │ │ │ │ 53 69 54 17 18 │ │ │ │ │ │ 67 95 │ │ │ │ │ │ 70 19 │ │ │ │ │ │ 66 68 5 3 │ │ │ │ │ │ @@ -300,15 +300,15 @@ │ │ │ │ │ │ tree [2] has these property: any node in the tree is │ │ │ │ │ │ • either a leaf, │ │ │ │ │ │ • or has two or more children, │ │ │ │ │ │ • or its nonzero structure is not contained in that of its one child. │ │ │ │ │ │ The top tree in Figure 4 shows the vertex elimination tree with the “front” number of each vertex superim- │ │ │ │ │ │ posed on the vertex. The bottom tree is the fundamental supernode tree. Figure 5 shows the block partition │ │ │ │ │ │ 1Vertex j is the parent of i if j is the first vertex greater than i such that Lj,i 6= 0. │ │ │ │ │ │ - 8 Orderings and Front Trees January 16, 2024 │ │ │ │ │ │ + 8 Orderings and Front Trees February 18, 2025 │ │ │ │ │ │ Figure 3: Vertex elimination tree for R2D100, 100 rows and columns │ │ │ │ │ │ 99 │ │ │ │ │ │ 98 │ │ │ │ │ │ 97 │ │ │ │ │ │ 96 │ │ │ │ │ │ 95 │ │ │ │ │ │ 94 │ │ │ │ │ │ @@ -327,15 +327,15 @@ │ │ │ │ │ │ 7 17 31 39 55 65 71 78 81 │ │ │ │ │ │ 6 11 16 27 30 38 53 54 64 75 77 80 │ │ │ │ │ │ 2 5 8 10 13 15 22 26 29 37 52 59 63 76 79 │ │ │ │ │ │ 1 4 9 12 14 25 28 36 51 58 62 │ │ │ │ │ │ 0 3 24 35 49 50 57 60 61 │ │ │ │ │ │ 23 34 48 56 │ │ │ │ │ │ 33 │ │ │ │ │ │ - January 16, 2024 Orderings and Front Trees 9 │ │ │ │ │ │ + February 18, 2025 Orderings and Front Trees 9 │ │ │ │ │ │ superimposed on the structure of the factor L. Note this one important property: within any block column │ │ │ │ │ │ and below the diagonal block, a row is either zero or dense. │ │ │ │ │ │ The code fragment to convert a tree into a fundamental supernode tree is given below. │ │ │ │ │ │ ETree *fsetree, *vetree ; │ │ │ │ │ │ int maxzeros ; │ │ │ │ │ │ IV *nzerosIV ; │ │ │ │ │ │ nzerosIV = IV_new() ; │ │ │ │ │ │ @@ -368,15 +368,15 @@ │ │ │ │ │ │ This method will merge a node with all of its children if it will not result in more than maxzeros zeros inside │ │ │ │ │ │ the new block. On input, nzerosIV object keeps count of the number of zeroes already in the blocks of │ │ │ │ │ │ fsetree, and on return it will contain the number of zeros in the blocks of ametree. │ │ │ │ │ │ 3.4 Splitting large fronts │ │ │ │ │ │ There is one final step to constructing the tree that governs the factorization and solve. Large matrices will │ │ │ │ │ │ generate large supernodes at the topmost levels of the tree. For example, a k × k × k grid with a 27 point │ │ │ │ │ │ finite difference operator, when ordered by nested dissection, has a root supernode with k2 rows and columns. │ │ │ │ │ │ - 10 Orderings and Front Trees January 16, 2024 │ │ │ │ │ │ + 10 Orderings and Front Trees February 18, 2025 │ │ │ │ │ │ Figure 4: Top: vertex elimination tree with the vertices mapped to the fundamental supernode that contains │ │ │ │ │ │ them. Bottom: fundamental supernode tree. │ │ │ │ │ │ 71 │ │ │ │ │ │ 71 │ │ │ │ │ │ 71 │ │ │ │ │ │ 71 │ │ │ │ │ │ 71 │ │ │ │ │ │ @@ -407,17 +407,17 @@ │ │ │ │ │ │ 2 5 10 15 23 26 34 43 44 49 53 57 58 67 │ │ │ │ │ │ 1 4 7 9 12 14 18 22 25 33 42 48 52 56 63 66 │ │ │ │ │ │ 0 3 8 11 13 21 24 32 41 47 50 51 60 62 65 │ │ │ │ │ │ 20 31 39 40 46 61 64 │ │ │ │ │ │ 19 30 38 │ │ │ │ │ │ 29 │ │ │ │ │ │ 28 │ │ │ │ │ │ - January 16, 2024 Orderings and Front Trees 11 │ │ │ │ │ │ + February 18, 2025 Orderings and Front Trees 11 │ │ │ │ │ │ Figure 5: Block structure of L with the fundamental supernode partition. │ │ │ │ │ │ - 12 Orderings and Front Trees January 16, 2024 │ │ │ │ │ │ + 12 Orderings and Front Trees February 18, 2025 │ │ │ │ │ │ Figure 6: Top: fundamental supernode tree with the supernodes mapped to the amalgamated supernode │ │ │ │ │ │ that contains them. Bottom: amalgamated supernode tree. │ │ │ │ │ │ 24 │ │ │ │ │ │ 24 │ │ │ │ │ │ 24 │ │ │ │ │ │ 24 │ │ │ │ │ │ 24 │ │ │ │ │ │ @@ -442,17 +442,17 @@ │ │ │ │ │ │ 6 10 13 15 │ │ │ │ │ │ 10 │ │ │ │ │ │ 24 │ │ │ │ │ │ 4 12 18 23 │ │ │ │ │ │ 0 1 2 3 9 11 14 17 19 22 │ │ │ │ │ │ 7 8 10 13 15 16 20 21 │ │ │ │ │ │ 5 6 │ │ │ │ │ │ - January 16, 2024 Orderings and Front Trees 13 │ │ │ │ │ │ + February 18, 2025 Orderings and Front Trees 13 │ │ │ │ │ │ Figure 7: Block structure of L with the amalgamated supernode partition. │ │ │ │ │ │ - 14 Orderings and Front Trees January 16, 2024 │ │ │ │ │ │ + 14 Orderings and Front Trees February 18, 2025 │ │ │ │ │ │ The data structure for a top level supernode can be very large, too large to fit into memory. In a parallel │ │ │ │ │ │ environment, we follow the convention that each node in the tree is handled by one process. Having a very │ │ │ │ │ │ large node at the top levels of the tree will severely decrease the parallelism available to the computations. │ │ │ │ │ │ The solution to both problems, large data structures and limited parallelism, is to split large supernodes │ │ │ │ │ │ into pieces. We can specify a maximum size for the nodes in the tree, and split the large supernode into pieces │ │ │ │ │ │ no larger than this maximum size. This will keep the data structures to a manageable size and increase the │ │ │ │ │ │ available parallelism. We call the resulting tree the front tree because it represents the final computational │ │ │ │ │ │ @@ -488,15 +488,15 @@ │ │ │ │ │ │ of front trees. The original front tree came from our nested dissection ordering. │ │ │ │ │ │ There are 13824 rows and columns in the matrix, and 6001 fronts in the nested dissection tree. While │ │ │ │ │ │ there is an average of two rows and columns per front, most of the fronts are singleton fronts at the lower │ │ │ │ │ │ levels of the tree. The top level front has 750 internal rows and columns. │ │ │ │ │ │ • In the first step we create an fundamental supernode tree with a call to ETree mergeFrontsOne()with │ │ │ │ │ │ maxzeros = 0. We see that the number of fronts decreases by one and the number of entries does not │ │ │ │ │ │ change. │ │ │ │ │ │ - January 16, 2024 Orderings and Front Trees 15 │ │ │ │ │ │ + February 18, 2025 Orderings and Front Trees 15 │ │ │ │ │ │ Figure 8: Left: tree after the large supernodes have been split. Right: tree with nodes mapped back to their │ │ │ │ │ │ amalgamated supernode. │ │ │ │ │ │ 26 │ │ │ │ │ │ 26 │ │ │ │ │ │ 26 │ │ │ │ │ │ 26 │ │ │ │ │ │ 27 │ │ │ │ │ │ @@ -525,26 +525,26 @@ │ │ │ │ │ │ 28 │ │ │ │ │ │ 27 │ │ │ │ │ │ 26 │ │ │ │ │ │ 5 13 20 25 │ │ │ │ │ │ 4 10 12 19 21 24 │ │ │ │ │ │ 0 1 2 3 8 9 11 15 18 22 23 │ │ │ │ │ │ 6 7 14 16 17 │ │ │ │ │ │ - 16 Orderings and Front Trees January 16, 2024 │ │ │ │ │ │ + 16 Orderings and Front Trees February 18, 2025 │ │ │ │ │ │ Figure 9: Block structure of L with the amalgamated and split supernode partition. │ │ │ │ │ │ Table 1: R3D13824: front tree transformations │ │ │ │ │ │ CPU #fronts #indices # entries #operations │ │ │ │ │ │ original 6001 326858 3459359 1981403337 │ │ │ │ │ │ fs tree 0.040 6000 326103 3459359 1981403337 │ │ │ │ │ │ merge one 0.032 3477 158834 3497139 2000297117 │ │ │ │ │ │ merge all 0.020 748 95306 3690546 2021347776 │ │ │ │ │ │ merge any 0.012 597 85366 3753241 2035158539 │ │ │ │ │ │ split 0.043 643 115139 3753241 2035158539 │ │ │ │ │ │ final 0.423 643 115128 3752694 2034396840 │ │ │ │ │ │ - January 16, 2024 Orderings and Front Trees 17 │ │ │ │ │ │ + February 18, 2025 Orderings and Front Trees 17 │ │ │ │ │ │ • The second step is also a call to ETree mergeFrontsOne(), this time with maxzeros = 1000. Here │ │ │ │ │ │ we merge fronts with only one child with that child, in other words, only chains of nodes can merge │ │ │ │ │ │ together. Note how the number of fronts is decreased by almost one half, and the number of factor │ │ │ │ │ │ entries and operations increase by 1%. │ │ │ │ │ │ • The third step is a call to ETree mergeFrontsAll()with maxzeros = 1000, where we try to merge a │ │ │ │ │ │ node with all of its children if possible. The number of fronts decreases again by a factor of five, while │ │ │ │ │ │ the number of factor entries and operations increases by 7% and 2%, respectively, when compared with │ │ │ │ │ │ @@ -582,15 +582,15 @@ │ │ │ │ │ │ the final front tree, for the intra-front computations are a small fraction of the total number of operations. │ │ │ │ │ │ The solve time improves dramatically when small fronts are merged together into larger fronts. Our │ │ │ │ │ │ solves are submatrix algorithms, where the fundamental kernel is an operation Y := B −L X and │ │ │ │ │ │ J J J,I I │ │ │ │ │ │ X :=Y −U Y ,andisdesigned to be a BLAS2 kernel (when X and Y have a single column) or BLAS3 │ │ │ │ │ │ J J I,J J │ │ │ │ │ │ kernel (when X and Y are matrices). When fronts are small, particularly with one internal row and column, │ │ │ │ │ │ - 18 Orderings and Front Trees January 16, 2024 │ │ │ │ │ │ + 18 Orderings and Front Trees February 18, 2025 │ │ │ │ │ │ the submatrices that take part are very small. The overhead for the computations takes far more time than │ │ │ │ │ │ the computations themselves. │ │ │ │ │ │ This multistep process of merging, merging again, etc, and finally splitting the front trees is tedious. │ │ │ │ │ │ There are simple methods that do the process in one step. │ │ │ │ │ │ ETree *etree, *etree2, *etree3 ; │ │ │ │ │ │ int maxfrontsize, maxzeros, seed ; │ │ │ │ │ │ etree2 = ETree_transform(etree, NULL, maxzeros, maxfrontsize, seed) ; │ │ │ │ │ │ @@ -624,15 +624,15 @@ │ │ │ │ │ │ computations in the factorization and solve. If maxsize is too large, then too much of the computations in │ │ │ │ │ │ the factorization is done inside a front, which uses a slow kernel. If maxsize is too small, then the fronts are │ │ │ │ │ │ too small to get much computational efficiency. We recommend using a value between 32 and 96. Luckily, │ │ │ │ │ │ the factor and solve times are fairly flat within this range. A value of 64 is what we customarily use. │ │ │ │ │ │ References │ │ │ │ │ │ [1] P. Amestoy, T. Davis, and I. Duff. An approximate minimum degree ordering algorithm. SIAM J. │ │ │ │ │ │ Matrix Anal. Appl., 17:886–905, 1996. │ │ │ │ │ │ - January 16, 2024 Orderings and Front Trees 19 │ │ │ │ │ │ + February 18, 2025 Orderings and Front Trees 19 │ │ │ │ │ │ Table 3: R3D13824: the influence of maxzeros and maxsize. │ │ │ │ │ │ factor solve total │ │ │ │ │ │ maxzeros maxsize init CPU mflops postprocess CPU mflops CPU │ │ │ │ │ │ 0 ∞ 3.3 129.8 15.3 5.3 7.8 7.1 146.2 │ │ │ │ │ │ 10 ∞ 3.5 129.2 15.3 3.3 5.3 10.5 141.3 │ │ │ │ │ │ 100 ∞ 3.0 119.3 16.7 2.0 3.9 14.4 128.2 │ │ │ │ │ │ 1000 ∞ 3.0 121.8 16.7 1.4 3.5 17.0 129.7 │ │ │ │ │ │ @@ -665,15 +665,15 @@ │ │ │ │ │ │ Trans. Math. Software, 6:302–325, 1983. │ │ │ │ │ │ [10] J. A. George. Nested dissection of a regular finite element mesh. SIAM J. Numer. Anal., 10:345–363, │ │ │ │ │ │ 1973. │ │ │ │ │ │ [11] J. A. George and J. W. H. Liu. Computer Solution of Large Sparse Positive Definite Systems. Prentice- │ │ │ │ │ │ Hall, Englewood Cliffs, NJ, 1981. │ │ │ │ │ │ [12] A. Gupta. WGPP: Watson Graph Partitioning and sparse matrix ordering Package. Technical Report │ │ │ │ │ │ Users Manual, IBM T.J. Watson Research Center, New York, 1996. │ │ │ │ │ │ - 20 Orderings and Front Trees January 16, 2024 │ │ │ │ │ │ + 20 Orderings and Front Trees February 18, 2025 │ │ │ │ │ │ [13] B. Hendrickson and R. Leland. An improved spectral graph partitioning algorithm for mapping parallel │ │ │ │ │ │ computations. Technical Report SAND92-1460, Sandia National Laboratories, Albuquerque, NM, 1992. │ │ │ │ │ │ [14] B. Hendrickson and R. Leland. The Chaco user’s guide. Technical Report SAND93-2339, Sandia │ │ │ │ │ │ National Laboratories, Albuquerque, NM, 1993. │ │ │ │ │ │ [15] B. Hendrickson and E. Rothberg. Improving the runtime and quality of nested dissection ordering. │ │ │ │ │ │ SIAM J. Sci. Comput., 20:468–489, 1998. │ │ │ │ │ │ [16] G. Karypis and V. Kumar. A fast and high quality multilevel scheme for partitioning irregular graphs. │ │ │ ├── ./usr/share/doc/spooles-doc/GPart.ps.gz │ │ │ │ ├── GPart.ps │ │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ │ %%EndComments │ │ │ │ │ %%BeginDefaults │ │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ │ %%EndDefaults │ │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ │ %DVIPSCommandLine: dvips main -o GPart.ps │ │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ │ -%DVIPSSource: TeX output 2024.01.16:2047 │ │ │ │ │ +%DVIPSSource: TeX output 2025.02.18:0318 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -1790,20 +1790,21 @@ │ │ │ │ │ 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 52 /four put │ │ │ │ │ -dup 54 /six put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ +dup 56 /eight put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 74 /J put │ │ │ │ │ +dup 70 /F put │ │ │ │ │ dup 97 /a put │ │ │ │ │ -dup 110 /n put │ │ │ │ │ +dup 98 /b put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ dup 114 /r put │ │ │ │ │ dup 117 /u put │ │ │ │ │ dup 121 /y put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ @@ -1987,89 +1988,93 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ │ -C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ │ -6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ │ -11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ │ -1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ │ -A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ │ -F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ │ -EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ │ -033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ │ -A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ │ -468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8A71FF9C085003EBB4F4 │ │ │ │ │ -3D271F5B16B1AAD3EBDC391F534AA46E545E9D8659DD19B309C3B7625A8396FA │ │ │ │ │ -2519464539D46E43ACB72952313C8497315E0319C08628023E8FC54D7D3BAC29 │ │ │ │ │ -D5AD8EFDABF0C33C7AFB7151A6606C62A87F0F5F783569AC4C881A992E3FE420 │ │ │ │ │ -297F7BC5147F3B2FA98450D2F8B07F7D229BC8BE06729920CFEC22556740E1CB │ │ │ │ │ -3DE09AC763C6D4A20AD1599C368FABD07BC35C16683F2A0311A88983415A9140 │ │ │ │ │ -2EFC4BC1B10DCAD4B2B8A28510E5BD39D6616D2B9B079ED3CF9C315B7DEC29D9 │ │ │ │ │ -251DFD0194B34EC175964C23383F23FFB2E41B698C405815D65EAFF9E9DD1DDE │ │ │ │ │ -30F77924656C288B8DDB2E5B0E7B1FAA66791DE3848EE6DE63AD0E945E49C6C7 │ │ │ │ │ -9FCA16E01F027F9EF7ACB55F02F5B0136480802F789F6FE14B430879979BA04D │ │ │ │ │ -F481AD4CF47E6847936F377FB04869F9A80E597301BFCAB718D8764094673876 │ │ │ │ │ -BCEF8FA3701608C84B3A0399A11D2E6AD922CCB7D72AF9EBFB30F4648A37A123 │ │ │ │ │ -CB8FB14BDC351692CF0CCAA5CA9383C2B23BAAA38700327EB743FBBE9EE04041 │ │ │ │ │ -13F5CEF4B3881BBC051C33369A82B3505B1CFD7D91AEF2E43EA728EE48E2D854 │ │ │ │ │ -5A7E516998ACDD4FD835FA901C5A21810A56D51FE919B2E58408EEB4DAEB487F │ │ │ │ │ -BA7F1D292CED902DF3533566D96DAD918319EA650D4FC7D9E0170CDE620F755B │ │ │ │ │ -0E7AE02D9B118481B26F5FF7060FBCFA2A682B6826F00679BCDA68794C05286D │ │ │ │ │ -B616DD08372ACDE0AE6E7EF116F0D36F16241ED4F0E8CCD80377792E3BB1343C │ │ │ │ │ -EEB22CC77738F7CBCBA32CF6C3979F6DF7ED81A89AE8928FD7CC550F2730BA88 │ │ │ │ │ -1B51CEDC63F4C47F261AFCAB7AC3CED20B15C97E714A460A1A3B16436B4A5149 │ │ │ │ │ -8F91DA4BE0B9B648534CE5F442117036B602DC91E2852BEA62F55803B833FDF7 │ │ │ │ │ -9F901AB87489E703DDEED1091A79DC73B4440BBBF2C7592B441187C4A3562204 │ │ │ │ │ -859F08BA3CE2A8ECCD5AAD13C50FB806FE79A388F1822C5608837CBDE526A044 │ │ │ │ │ -12E5CDE4A066932AF2ACA7E8FC6BA4603640944718752975B7DA6E906BE1EA01 │ │ │ │ │ -46736FF5D1AA1CC682D011B6039CF98C35E36D4F14ABC84A38B7203CC9A17756 │ │ │ │ │ -B2B0345276798F1A88A54AD9FEA0853C6DDF28525ED4F0B7380D14147012C2A4 │ │ │ │ │ -5B02888C986C76497EA4C729B0B82EE73C1A1A8E8F1ABF401E341028E9C15AF9 │ │ │ │ │ -354706D8DC07492921AD0932A46736C0D1B066D00287DACCC068FAE6A796EC89 │ │ │ │ │ -54D1D73AA88F3A5912BA9D3FF70065C8D0D0DAD1CD846501E06694374EFDBEC6 │ │ │ │ │ -931F644D5E8494AFC742423AD9A487658E310E0682BE19B8475F4D450487A686 │ │ │ │ │ -2B94494DEAF1C0F59DE82F2CE64BEE5E97F942FCFA1187ED6AA5761E951A7BF7 │ │ │ │ │ -9F842E34A4656C58B35A9E99F7E6762CEE11E0CF59FFD75D7382C5EE6DBB43F1 │ │ │ │ │ -ED219071D3FB22DBA90977723BB467C0490D042684C0724F40DCA3E0D8F1F4E7 │ │ │ │ │ -3C4F9A67BE6528185EAAFDD415224F7E256A4EA00111C17C746CBD80BF569A27 │ │ │ │ │ -D81195D7F79C1CCEEF30ED00D49F48B63E4B8D7953403A3710AE953CC1B76F0F │ │ │ │ │ -F523D777A6A186F262A602543F94AF7471DBE25FEBC207DB42DAF7DC9A5781FB │ │ │ │ │ -2131AD42869D966A734AAE3466DF1CE9D1BCFA72409A558C0AEE6A8E2FEAACB6 │ │ │ │ │ -2CDABCC28433034848ACF9FB4465D272E4AFC48572647F05F41C7A293CC5B595 │ │ │ │ │ -AD31555FB708A72962707348BC7033A8224BD42EB9D75FDF3AE9E6A9C960B330 │ │ │ │ │ -5137DF59F8E2E0D535F41524ABDF070745A4FA25CD8DFD38A5FF30A95452B875 │ │ │ │ │ -6569E8812631300D79A942C563AF174AC05C9F2D09D7D5D3C605F5A6B7F21B34 │ │ │ │ │ -18F270A993B050838E701A17938D1C156CBA7CA4BAC7C562CE9D7B758EAB25A9 │ │ │ │ │ -A6DFFC71F65561341847B776DF34061CE3D439B87B857626987EC93B3B95B8E8 │ │ │ │ │ -76FFB16B263675333FA10414FEED707FF7C366BF8B20FF8577CDEBEBCF1A5BCE │ │ │ │ │ -258C09C90175A5278B7C444A623E3331FDE5A6387B3E389540ED1E7E883958F3 │ │ │ │ │ -3A5C89CCD62256FA069DF4A5090FB17C1F1757C9209DAFB8A1F47182BF3E88D9 │ │ │ │ │ -0B5376B59EE165A761902759C8ED7F5AD301E7EB8B49CC09AF921DB45B7F8002 │ │ │ │ │ -AB32E73AAE53942DE0F9175D8446017006C9C0B93EF39C13B7A879F2F6DDFF16 │ │ │ │ │ -204BB24F976847CF006FD29332FCCB255B5116F7077A44F7066C39C81DC4BAD2 │ │ │ │ │ -40DB2753626C0102E5D047522ABC38EA294A699B8DFD9CA0A7980561A1062E90 │ │ │ │ │ -AB11EE286A9C238D9F721D9980D0A1828C2814972622D948CEE8C812C19A9A03 │ │ │ │ │ -608ED0AC138A436FFBF8BE3D1E66C87793416AF38ED9BC5424568A175FBDAA9E │ │ │ │ │ -D6FC11A7021693819B051562B5A59F32629E2D6019D69DD329BE1894A2B295E1 │ │ │ │ │ -1DCE9683B29AE126C56F26E5C595BF1A8249BDE231DBE8B066F7F62EF149B975 │ │ │ │ │ -A863969A4690504A5EA064721DA909B8157C0B39FBF8228D95CB655E406161E1 │ │ │ │ │ -148610FAEED7C5509880223C06A66DA19E10F94DC2DB481B26 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004FD597ED │ │ │ │ │ +EFDBC64ABD9B79386FB2427D1A63522195B1239C09F8CB3F8BD7A245A6DD82E3 │ │ │ │ │ +260C3889587626DFC5F7978E55F5524ABD6A3319CDD3D3F40D040044D51DA4E1 │ │ │ │ │ +6797EEAC7AA07C77EC6DB0E6E182B545A8BEF63B14F3FC07BAC09E7CD5C17ED6 │ │ │ │ │ +10080704B0DA4E9BA12F968DF8A58458D17E9A5B1F14A83DC51F5B161ADEE1CC │ │ │ │ │ +0183D82ED92C6FC7203C289949EDF0284D9893029FF5408E421324625F17C3E5 │ │ │ │ │ +2437C8F75A9D68EE1AF9174FEA6FC6BF793C7D2E497EA90396CF1A645E283B69 │ │ │ │ │ +8425F47C323587DF91E1D596DCB1E3A787C955D9D965A5E3E26ADF58B62AD5F9 │ │ │ │ │ +0C9AC784DE479780606354111E3202F215650DBBE1063A46F3C10B9EBC974DDA │ │ │ │ │ +A1A28DBBD43E9E5BFF000B12C787D0427928078F8EC5FE90DED97E6C129E8DEA │ │ │ │ │ +51F66504DB83764E52B0BA68DF7BE684C8959CB1D3345CC48221A9A4683306C0 │ │ │ │ │ +62B634E0A539383F0C7A788D9711EFF414869CCC5659D78CEBE009BF2463F56A │ │ │ │ │ +0ADC993348FE96DF7C250E13ED6504AACFE8F8DCA2D2048D9D8CFA127D363EAC │ │ │ │ │ +1F0630E2D1B621E6954038195D965B91FD974FA3F1B8B29D200A16CEBA645E2F │ │ │ │ │ +CEEE6FD49FBBD49E38AE67D4BFFCE91F1FC422554EC4409C5FA18D40FCD6D9B3 │ │ │ │ │ +2185ED1E0F98106D4339F086B05CA36E56EC22C60E2CE23F9C4CC403ACAD3F94 │ │ │ │ │ +4086B4DF6DFA0B7B4716417263E7B558535566AED2F6C2F9846A16D71A7930A7 │ │ │ │ │ +49232D3D16C4A01CF1A1998A06F40062ED329179A85668537C55D0BC24FC0010 │ │ │ │ │ +54DA83E2FC66B2A5D428E6A9BFC983253668C0ECE6CA36DBF97C4B7659D50842 │ │ │ │ │ +C65B36604840EEDA399B57E2DEFAC3E7FB031634CE33D04238F9854D2AAAF448 │ │ │ │ │ +34DA5F3BCCED3166FEEE82BB0BBA0A397CC2F95865CB52AABFF454D93B425809 │ │ │ │ │ +A26AC459F321FD23E2262FE816D06BAAECF32AAF167F84799AF80F9F88388D07 │ │ │ │ │ +0DB5FD57AFEE2850A8DFE977E6AE39CB3DC16DB1A163A583C86C6F775CE33521 │ │ │ │ │ +0081C0BBBAD6D30D26C66B28B38CEAC78FEA5FB3CC5853656B67C6D9D80EB30E │ │ │ │ │ +397558C9179AF5920F34DAB3F578DFCF0DBB137AED17D6325C23883E69EE4621 │ │ │ │ │ +34355A70C19EA68891E1CA937376901C85CDEE109F1665943E29A216DC00937A │ │ │ │ │ +B983A729A4654AD09187C0242D52FA4ADD0853EF4888864914D7D81C56578DD4 │ │ │ │ │ +3B51907032022E6E412D4F114675DEDCA8A9E85DC03A0B583FECD84432D15F70 │ │ │ │ │ +01F627BD6EC91F9FCFDA01BF40E1229B5F164309DBB641AD50970503DA2048C1 │ │ │ │ │ +DF8F36E8D252EE113F0B46677D9BAF376BAE18D74CFB0DBBD0C7E9D0A58BA3ED │ │ │ │ │ +1E5099CAE073EB5638617760AB57849893764EA9735173CD1EAB66884CEA7EE3 │ │ │ │ │ +8843327B2E145BD6FBB49102776B82BC511D109F8BE9E7E99DADABABEDC3CFD9 │ │ │ │ │ +393578FFD85907DFF2849E4CDE6FA4DEC7E1C150EBE4047FFB650F9548BE6D11 │ │ │ │ │ +0C51226A5436F18BF20A02E0F888F46B6AC3A8E8D927ECD3B5E095933AD3859F │ │ │ │ │ +5167C41D832EFCC4093BD2AFA7101AB430E57DAFC3590F05D3CBABB32BC203A0 │ │ │ │ │ +467B23BDB830487C9AA5B85BAC065F8538871B4180F8C4732E637DB090CFDE5A │ │ │ │ │ +3F4F2B5BFAFB848BAAD1A17CB076B34159601639BD93ECAB1214ACABF2C67FE2 │ │ │ │ │ +0658AA20B08681070FF56F1CC52144ABA8765D6E124D1CEA9BBA102808CE1BB2 │ │ │ │ │ +5EDF46BC7BBC2A5B49EE6EC28F5797A3969B057B21FCDBBD0E60848FF14F6CA3 │ │ │ │ │ +70F3060BDBB019B22722C99C7691760F013763B7FBEB62830AE215F195BF9F01 │ │ │ │ │ +21BF4377397E89574CFA47D123AA506A570A77BA6EB4AAB0B237A26154880293 │ │ │ │ │ +3952F832F72ECCB024F02385E5EE8566B165904B594E30D0700D033C6B429F6F │ │ │ │ │ +2A20BC774F442BC9CE29FCC81807C2768A8BC927A215558FBF36DC53F477F04A │ │ │ │ │ +41DA66E1A85B659EB761230977EAD7DA0150513D3323B143D4E2A61BCF03334C │ │ │ │ │ +C0EE3E1B06CFAF58ECC910BD81F0352B75FF1594D6A4EF504232D442174BE766 │ │ │ │ │ +0F8E703F97E21D25D4CD097549C31FEE7017C3916EFB02E7BF869172889827B6 │ │ │ │ │ +A48465EB7612BA3DBC6A9436C7167F149A25CE9F8E3F4F8DE3B5ADF6C0986CB3 │ │ │ │ │ +3A7E2DAB44AB489796461536F5F713017F2620AD03295CAE9285F08974AE0DF8 │ │ │ │ │ +D739260929619B509491AFF09C4CAEF9E65C2CA69470C907ECBF3AB6C955360D │ │ │ │ │ +05ABAC306DB51122A1ADC7EF0DD70FA299A45C505A83727D4598C86319EE9C06 │ │ │ │ │ +7218EFD4F40388354BCF1B79593D5AD221DF955D081F99F880E5CED07321AB3E │ │ │ │ │ +A2FCB8B05D54807D8E15E65B78DCE12989B9276350080C905DBB74CE9AA7E246 │ │ │ │ │ +5D3BAED292C562D4CF54617FCC6654496C7996D1ECE1EFF9258716AB763A12E6 │ │ │ │ │ +316E4C5587351A6DB011F58F6A15BC28BEBDC3836E0CB892807FEC228DC1B380 │ │ │ │ │ +92F7F42279F08D60F13D6A4CB425543C3644461461CBF6F27B6603F613D1FCF8 │ │ │ │ │ +A8410AD82D1498166AEB35D4125D7E2ADEAAB18BC04806AED53513F066E5F154 │ │ │ │ │ +3E13E863C50B9814EE2FB978D0D24A03FAF650CB6E2CADF1E6BE6BAF699AFC03 │ │ │ │ │ +E1A0EEB207B3B9A689ED5B373FE86686AD230BE6C18E1673DDA50E224B343EC5 │ │ │ │ │ +903BA0C8041C13607B50D5852AC7970B15C244E6EBA7D54B3086312CF04761D6 │ │ │ │ │ +7D3D75D51F20C371494AB81AB4A9838B20B483B851D01FEF41EA5C0B4755B964 │ │ │ │ │ +EB6E9B178051C556A010994EB88EAE641F4C1A0D7E0F98D5267E18AEF1AEA7E7 │ │ │ │ │ +9030A97DF89AFF621981C33B645FFB5F3BB2065A7661D11B26E0999561DF3580 │ │ │ │ │ +4A76A05DFAF8085525F8D5C01936F03C32E26E72569371C9EA3B8916F9DFC5FC │ │ │ │ │ +6A6F25A0FFDB981BA8B896393D75774D50828E6ADE903C45406E354703A4BC56 │ │ │ │ │ +2C49A47FEAC970DC433E3050C49F7FB945A9705BD8852D2D65D935F244D3B423 │ │ │ │ │ +EFAB84AAAAB8FBAFF50AFF372A533BCCEB5FC273DBADCF715776DF02A5DCBA9A │ │ │ │ │ +FBF265FAB4745D6475B33611EEE1EA95E7584E0BEEC7CA789AA69C8D03D6F8C0 │ │ │ │ │ +5B6844E2B901ACA560C0433B053D134866E567425174E47173679AAD4486A2D3 │ │ │ │ │ +369C29E4DD2CD6ACA1BE80ED8FF0A9C58A616D26E758BD8E6342624EC83FB590 │ │ │ │ │ +BD354B52B60BB054FAFE9AC63E1564FBC721FE8F276B0413EC89A2C85E5ED1B0 │ │ │ │ │ +3A9D83BE62A4488ADE7CE69971A8AF7E5862A4290EEF6F00D4171C7FFB360065 │ │ │ │ │ +92E72BF02BE27161AE0BB5516572A0BDC4F316FFB24B38484AC8D1FD4CD86062 │ │ │ │ │ +A2B5D03CF28C3A679C039A6EFDD4C9DA7E463AD60234C9F6BBEE48D87DD94D85 │ │ │ │ │ +842F495F3E25723718682CE4D6224CBBF4456F03077EDF736D65B9DDAB09470E │ │ │ │ │ +17742D82011FFA96BFE86B96E858F9352FCD20C3D46B77DBDEE54336EC2249EA │ │ │ │ │ +211F6DFFF5BEA1E5192BE1BAC0BDD5EDDB3D56C6F7C6E543561A0B39E5C1B04F │ │ │ │ │ +C683A7516B6E69D682455386DDA709929D621FA434D403E895AA0A77DBE1DFD2 │ │ │ │ │ +0D060DF82378880147ED97C6E8149686FA048710B113760AC1DA4512FF8556B3 │ │ │ │ │ +16E2447485B8C3CD58D0469C4A45FFB4CB0322BB284C02 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -5506,26 +5511,26 @@ │ │ │ │ │ 56 62 93 31 2[31 62 56 1[51 62 50 1[54 11[86 2[84 4[106 │ │ │ │ │ 3[42 4[86 1[80 9[56 56 56 56 56 56 56 56 2[31 37 45[{}35 │ │ │ │ │ 99.6264 /CMBX12 rf /Fc 139[62 1[62 16[62 16[62 8[62 71[{}5 │ │ │ │ │ 119.552 /CMTT12 rf /Fd 255[55{}1 66.4176 /CMSY8 rf /Fe │ │ │ │ │ 134[71 2[71 75 52 53 55 1[75 67 75 112 2[41 37 75 67 │ │ │ │ │ 41 61 75 60 75 65 13[75 2[92 11[103 16[67 67 67 2[37 │ │ │ │ │ 46[{}27 119.552 /CMBX12 rf /Ff 132[52 6[41 4[52 58 46[49 │ │ │ │ │ -63[{}5 90.9091 /CMBX10 rf /Fg 134[48 3[51 2[36 3[51 12[45 │ │ │ │ │ -22[47 15[25 3[45 1[45 1[45 45 45 3[25 44[{}13 90.9091 │ │ │ │ │ -/CMSL10 rf /Fh 156[83 46 78[61 61 18[{}4 83.022 /CMEX10 │ │ │ │ │ -rf /Fi 145[45 3[25 35 35 45 45 9[61 61 31[45 4[0 3[61 │ │ │ │ │ -28[71 71 1[71 17[71{}15 90.9091 /CMSY10 rf /Fj 146[62 │ │ │ │ │ -1[37 1[24 17[67 20[53 66[{}5 66.4176 /CMMI8 rf /Fk 204[35 │ │ │ │ │ -35 35 35 4[55 43[{}5 66.4176 /CMR8 rf /Fl 134[45 14[37 │ │ │ │ │ -5[47 10[53 1[86 53 2[56 16[69 68 2[71 45 71 25 25 46[58 │ │ │ │ │ -11[{}15 90.9091 /CMMI10 rf /Fm 136[60 1[49 30 37 38 1[46 │ │ │ │ │ -46 51 74 23 42 1[28 46 42 1[42 46 42 42 46 12[65 1[66 │ │ │ │ │ -11[59 62 69 2[68 6[28 7[46 4[33 32[51 12[{}29 90.9091 │ │ │ │ │ -/CMTI10 rf │ │ │ │ │ +63[{}5 90.9091 /CMBX10 rf /Fg 134[48 3[51 2[36 12[40 │ │ │ │ │ +2[51 45 26[59 11[25 1[45 2[45 2[45 45 45 3[25 44[{}14 │ │ │ │ │ +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 46 51 74 23 42 1[28 46 42 1[42 46 │ │ │ │ │ +42 42 46 12[65 1[66 11[59 62 69 2[68 6[28 7[46 4[33 32[51 │ │ │ │ │ +12[{}29 90.9091 /CMTI10 rf │ │ │ │ │ %DVIPSBitmapFont: Fn 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 │ │ │ │ │ @@ -5666,27 +5671,27 @@ │ │ │ │ │ b Fl(Y)55 b Fp(that)35 b(has)g(minimal)g(w)m(eigh)m(t.)56 │ │ │ │ │ b(W)-8 b(e)36 b(examine)g(t)m(w)m(o)227 5294 y(\(p)s(ossibly\))j │ │ │ │ │ (di\013eren)m(t)h(min-cuts)g(and)e(ev)-5 b(aluate)41 │ │ │ │ │ b(the)f(partitions)g(induced)e(via)i(their)g(minimal)f(w)m(eigh)m(t)227 │ │ │ │ │ 5407 y(separators,)31 b(and)f(accept)i(a)f(b)s(etter)f(partition)h(if)g │ │ │ │ │ (presen)m(t.)1927 5656 y(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fp(2)p 136 100 1106 4 v │ │ │ │ │ -1288 w Fo(GPart)29 b Fg(:)41 b Fm(DRAFT)30 b Fg(Jan)m(uary)g(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ -(tain)i(information)0 1169 y(ab)s(out)30 b(the)h(partition)g(of)f(the)h │ │ │ │ │ -(graph.)141 1307 y(The)f(follo)m(wing)i(\014elds)e(are)g(alw)m(a)m(ys)i │ │ │ │ │ -(activ)m(e.)137 1523 y Fn(\210)45 b Fo(Graph)i(*graph)28 │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fp(2)p 136 100 1087 4 v │ │ │ │ │ +1269 w Fo(GPart)29 b Fg(:)41 b Fm(DRAFT)30 b Fg(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2813 100 V 0 399 a Fp(This)e(pro)s(cess)h │ │ │ │ │ +(w)m(e)g(call)i Fo(DDSEP)p Fp(,)d(whic)m(h)h(is)g(short)f(for)h │ │ │ │ │ +Fo(D)p Fm(omain)k Fo(D)p Fm(e)-5 b(c)g(omp)g(osition)35 │ │ │ │ │ +b Fo(SEP)p Fm(ar)-5 b(ator)p Fp(,)32 b(explained)e(in)g(more)0 │ │ │ │ │ +511 y(detail)i(in)e([)p Ff(?)p Fp(])h(and)f([)p Ff(?)p │ │ │ │ │ +Fp(].)0 827 y Fe(1.1)135 b(Data)46 b(Structures)0 1056 │ │ │ │ │ +y Fp(The)40 b Fo(GPart)e Fp(structure)i(has)f(a)i(p)s(oin)m(ter)f(to)h │ │ │ │ │ +(a)f Fo(Graph)f Fp(ob)5 b(ject)40 b(and)g(other)g(\014elds)g(that)g │ │ │ │ │ +(con)m(tain)i(information)0 1169 y(ab)s(out)30 b(the)h(partition)g(of)f │ │ │ │ │ +(the)h(graph.)141 1307 y(The)f(follo)m(wing)i(\014elds)e(are)g(alw)m(a) │ │ │ │ │ +m(ys)i(activ)m(e.)137 1523 y Fn(\210)45 b Fo(Graph)i(*graph)28 │ │ │ │ │ b Fp(:)41 b(p)s(oin)m(ter)30 b(to)h(the)g Fo(Graph)e │ │ │ │ │ Fp(ob)5 b(ject)137 1713 y Fn(\210)45 b Fo(int)i(nvtx)29 │ │ │ │ │ b Fp(:)41 b(n)m(um)m(b)s(er)29 b(of)i(in)m(ternal)g(v)m(ertices)h(of)e │ │ │ │ │ (the)h(graph)137 1903 y Fn(\210)45 b Fo(int)i(nvbnd)29 │ │ │ │ │ b Fp(:)41 b(n)m(um)m(b)s(er)29 b(of)h(b)s(oundary)f(v)m(ertices)j(of)e │ │ │ │ │ (the)h(graph)137 2094 y Fn(\210)45 b Fo(int)i(ncomp)29 │ │ │ │ │ b Fp(:)41 b(n)m(um)m(b)s(er)29 b(of)h(comp)s(onen)m(ts)h(in)f(the)h │ │ │ │ │ @@ -5731,17 +5736,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 1106 4 v 1288 100 a Fo(GPart)29 │ │ │ │ │ -b Fg(:)40 b Fm(DRAFT)121 b Fg(Jan)m(uary)30 b(16,)i(2024)p │ │ │ │ │ -2747 100 V 1106 w Fp(3)330 399 y Ff({)45 b Fo(int)i(minweight)p │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1087 4 v 1269 100 a Fo(GPart)29 │ │ │ │ │ +b Fg(:)40 b Fm(DRAFT)121 b Fg(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2766 100 V 1087 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 │ │ │ │ │ @@ -5805,34 +5810,34 @@ │ │ │ │ │ (ter)0 5068 y Fe(1.2)135 b(Protot)l(yp)t(es)46 b(and)f(descriptions)g │ │ │ │ │ (of)g Fc(GPart)e Fe(metho)t(ds)0 5294 y Fp(This)e(section)j(con)m │ │ │ │ │ (tains)f(brief)f(descriptions)g(including)f(protot)m(yp)s(es)i(of)f │ │ │ │ │ (all)h(metho)s(ds)f(that)h(b)s(elong)f(to)h(the)0 5407 │ │ │ │ │ y Fo(GPart)29 b Fp(ob)5 b(ject.)42 b(There)29 b(are)i(no)f(IO)g(metho)s │ │ │ │ │ (ds.)p eop end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fp(4)p 136 100 1106 4 v │ │ │ │ │ -1288 w Fo(GPart)29 b Fg(:)41 b Fm(DRAFT)30 b Fg(Jan)m(uary)g(16,)h │ │ │ │ │ -(2024)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) │ │ │ │ │ -227 1226 y(b)m(y)j(a)f(call)i(to)f Fo(GPart)p 953 1226 │ │ │ │ │ -29 4 v 33 w(setDefaultFields\(\))p Fp(.)111 1422 y(2.)46 │ │ │ │ │ -b Fo(void)h(GPart_setDefaultFields)42 b(\()47 b(GPart)f(*gpart)h(\))g │ │ │ │ │ -(;)227 1576 y Fp(This)34 b(metho)s(d)g(sets)i(the)f(structure's)f │ │ │ │ │ -(\014elds)g(to)i(default)f(v)-5 b(alues:)49 b Fo(id)f(=)f(-1)p │ │ │ │ │ -Fp(,)35 b Fo(nvtx)47 b(=)h(nvbnd)e(=)h(ncomp)227 1689 │ │ │ │ │ -y(=)h(0)p Fp(,)35 b Fo(g)g Fp(=)f Fo(par)g Fp(=)g Fo(fch)g │ │ │ │ │ -Fp(=)h Fo(sib)e Fp(=)i Fo(NULL)p Fp(,)f(and)g(the)h(default)g(\014elds) │ │ │ │ │ -f(for)g Fo(compidsIV)p Fp(,)f Fo(cweightsIV)f Fp(and)227 │ │ │ │ │ -1802 y Fo(vtxMapIV)c Fp(are)j(set)g(via)g(calls)h(to)f │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fp(4)p 136 100 1087 4 v │ │ │ │ │ +1269 w Fo(GPart)29 b Fg(:)41 b Fm(DRAFT)30 b Fg(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2813 100 V 0 399 a Fb(1.2.1)112 │ │ │ │ │ +b(Basic)38 b(metho)s(ds)0 599 y Fp(As)d(usual,)h(there)f(are)g(four)f │ │ │ │ │ +(basic)h(metho)s(ds)g(to)g(supp)s(ort)e(ob)5 b(ject)36 │ │ │ │ │ +b(creation,)i(setting)e(default)f(\014elds,)h(clearing)0 │ │ │ │ │ +712 y(an)m(y)31 b(allo)s(cated)h(data,)f(and)f(free'ing)h(the)g(ob)5 │ │ │ │ │ +b(ject.)111 959 y(1.)46 b Fo(GPart)h(*)g(GPart_new)e(\()j(void)e(\))i │ │ │ │ │ +(;)227 1113 y Fp(This)28 b(metho)s(d)g(simply)h(allo)s(cates)i(storage) │ │ │ │ │ +f(for)e(the)h Fo(GPart)f Fp(structure)g(and)g(then)g(sets)i(the)f │ │ │ │ │ +(default)f(\014elds)227 1226 y(b)m(y)j(a)f(call)i(to)f │ │ │ │ │ +Fo(GPart)p 953 1226 29 4 v 33 w(setDefaultFields\(\))p │ │ │ │ │ +Fp(.)111 1422 y(2.)46 b Fo(void)h(GPart_setDefaultFields)42 │ │ │ │ │ +b(\()47 b(GPart)f(*gpart)h(\))g(;)227 1576 y Fp(This)34 │ │ │ │ │ +b(metho)s(d)g(sets)i(the)f(structure's)f(\014elds)g(to)i(default)f(v)-5 │ │ │ │ │ +b(alues:)49 b Fo(id)f(=)f(-1)p Fp(,)35 b Fo(nvtx)47 b(=)h(nvbnd)e(=)h │ │ │ │ │ +(ncomp)227 1689 y(=)h(0)p Fp(,)35 b Fo(g)g Fp(=)f Fo(par)g │ │ │ │ │ +Fp(=)g Fo(fch)g Fp(=)h Fo(sib)e Fp(=)i Fo(NULL)p Fp(,)f(and)g(the)h │ │ │ │ │ +(default)g(\014elds)f(for)g Fo(compidsIV)p Fp(,)f Fo(cweightsIV)f │ │ │ │ │ +Fp(and)227 1802 y Fo(vtxMapIV)c Fp(are)j(set)g(via)g(calls)h(to)f │ │ │ │ │ Fo(IV)p 1498 1802 V 34 w(setDefaultFields\(\))p Fp(.)227 │ │ │ │ │ 1956 y Fm(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fp(If)30 │ │ │ │ │ b Fo(gpart)f Fp(is)i Fo(NULL)p Fp(,)e(an)h(error)g(message)i(is)e(prin) │ │ │ │ │ m(ted)g(and)g(the)h(program)f(exits.)111 2152 y(3.)46 │ │ │ │ │ b Fo(void)h(GPart_clearData)d(\()j(GPart)f(*gpart)g(\))i(;)227 │ │ │ │ │ 2306 y Fp(The)24 b Fo(IV)p 510 2306 V 34 w(clearData\(\))e │ │ │ │ │ Fp(metho)s(d)i(is)h(called)h(for)e(the)h Fo(compidsIV)p │ │ │ │ │ @@ -5875,17 +5880,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 1106 4 v 1288 100 a Fo(GPart)29 │ │ │ │ │ -b Fg(:)40 b Fm(DRAFT)121 b Fg(Jan)m(uary)30 b(16,)i(2024)p │ │ │ │ │ -2747 100 V 1106 w Fp(5)0 399 y Fb(1.2.3)112 b(Utilit)m(y)38 │ │ │ │ │ +TeXDict begin 5 4 bop 91 100 1087 4 v 1269 100 a Fo(GPart)29 │ │ │ │ │ +b Fg(:)40 b Fm(DRAFT)121 b Fg(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2766 100 V 1087 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 │ │ │ │ │ @@ -5965,28 +5970,29 @@ │ │ │ │ │ g(domain.)227 5294 y Fm(Err)-5 b(or)33 b(che)-5 b(cking:)40 │ │ │ │ │ b Fp(If)29 b Fo(gpart)p Fp(,)f Fo(g)h Fp(or)h Fo(domid)e │ │ │ │ │ Fp(is)h Fo(NULL)p Fp(,)f(or)i(if)f Fo(v)g Fp(is)g(out)h(of)g(range)f │ │ │ │ │ (\(i.e.,)j Fo(v)25 b Fl(<)f Fp(0)30 b(or)g Fo(nvtx)24 │ │ │ │ │ b Fi(\024)h Fo(v)p Fp(\),)227 5407 y(an)31 b(error)f(message)h(is)f │ │ │ │ │ (prin)m(ted)g(and)g(the)h(program)f(exits.)p eop end │ │ │ │ │ %%Page: 6 6 │ │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fp(6)p 136 100 1106 4 v │ │ │ │ │ -1288 w Fo(GPart)29 b Fg(:)41 b Fm(DRAFT)30 b Fg(Jan)m(uary)g(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fp(6)p 136 100 1087 4 v │ │ │ │ │ +1269 w Fo(GPart)29 b Fg(:)41 b Fm(DRAFT)30 b Fg(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2813 100 V 111 399 a Fp(6.)46 │ │ │ │ │ +b Fo(IV)h(*)h(GPart_bndWeightsIV)43 b(\()k(GPart)g(*gpart)f(\))h(;)227 │ │ │ │ │ +549 y Fp(This)27 b(metho)s(d)g(returns)f(an)h Fo(IV)g │ │ │ │ │ +Fp(ob)5 b(ject)28 b(that)g(con)m(tains)g(the)g(w)m(eigh)m(ts)h(of)e │ │ │ │ │ +(the)h(v)m(ertices)h(on)e(the)g(b)s(oundaries)227 661 │ │ │ │ │ +y(of)k(the)f(comp)s(onen)m(ts.)227 811 y Fm(Err)-5 b(or)34 │ │ │ │ │ +b(che)-5 b(cking:)40 b Fp(If)30 b Fo(gpart)f Fp(or)i │ │ │ │ │ +Fo(g)f Fp(is)g Fo(NULL)p Fp(,)g(an)g(error)g(message)h(is)g(prin)m(ted) │ │ │ │ │ +f(and)f(the)i(program)f(exits.)0 1079 y Fb(1.2.4)112 │ │ │ │ │ +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 │ │ │ │ │ @@ -6046,17 +6052,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 1106 4 v 1288 100 a Fo(GPart)29 │ │ │ │ │ -b Fg(:)40 b Fm(DRAFT)121 b Fg(Jan)m(uary)30 b(16,)i(2024)p │ │ │ │ │ -2747 100 V 1106 w Fp(7)227 399 y(Kernighan-Lin)j(algorithm)h(to)g │ │ │ │ │ +TeXDict begin 7 6 bop 91 100 1087 4 v 1269 100 a Fo(GPart)29 │ │ │ │ │ +b Fg(:)40 b Fm(DRAFT)121 b Fg(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2766 100 V 1087 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 │ │ │ │ │ @@ -6155,43 +6161,44 @@ │ │ │ │ │ Fp(\))p Fi(g)969 5407 y Fl(Y)1022 5421 y Fk(3)1144 5407 │ │ │ │ │ y Fp(=)83 b Fi(f)p Fl(y)28 b Fi(2)d Fl(Y)50 b Fi(j)31 │ │ │ │ │ b Fl(y)d Fi(2)d Fl(Ad)-10 b(j)5 b Fp(\()p Fl(B)26 b Fi(n)21 │ │ │ │ │ b Fl(Y)f Fp(\))30 b(and)g Fl(y)e Fi(2)d Fl(Ad)-10 b(j)5 │ │ │ │ │ b Fp(\()p Fl(W)34 b Fi(n)21 b Fl(Y)f Fp(\))p Fi(g)p eop │ │ │ │ │ end │ │ │ │ │ %%Page: 8 8 │ │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fp(8)p 136 100 1106 4 v │ │ │ │ │ -1288 w Fo(GPart)29 b Fg(:)41 b Fm(DRAFT)30 b Fg(Jan)m(uary)g(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ -624 y Fp(sets)g(that)g(con)m(tains)g(eac)m(h)h(v)m(ertex.)227 │ │ │ │ │ -784 y Fm(Err)-5 b(or)38 b(che)-5 b(cking:)49 b Fp(If)35 │ │ │ │ │ -b Fo(gpart)p Fp(,)f Fo(g)h Fp(or)g Fo(YVmapIV)d Fp(is)j │ │ │ │ │ -Fo(NULL)p Fp(,)f(or)h(if)g Fo(nvtx)c Fi(\024)h Fp(0,)37 │ │ │ │ │ -b(or)e(if)f Fo(YVmapIV)f Fp(is)i(empt)m(y)-8 b(,)37 b(an)227 │ │ │ │ │ -897 y(error)30 b(message)i(is)e(prin)m(ted)g(and)g(the)g(program)h │ │ │ │ │ -(exits.)111 1103 y(3.)46 b Fo(void)h(*)g(GPart_smoothBy2layers)42 │ │ │ │ │ -b(\()48 b(GPart)e(*gpart,)g(int)h(bipartite,)e(float)h(alpha)h(\))g(;) │ │ │ │ │ -227 1262 y Fp(This)22 b(metho)s(d)h(forms)f(the)h(wide)g(separator)h │ │ │ │ │ -Fl(Y)43 b Fp(from)22 b(t)m(w)m(o)i(la)m(y)m(ers)h(of)e(v)m(ertices,)j │ │ │ │ │ -(either)e Fl(Y)3205 1276 y Fj(B)3291 1262 y Fp(=)g Fl(S)11 │ │ │ │ │ -b Fi([)5 b Fp(\()p Fl(Ad)-10 b(j)5 b Fp(\()p Fl(S)g Fp(\))g │ │ │ │ │ -Fi(\\)227 1375 y Fl(B)g Fp(\))36 b(or)g Fl(Y)542 1389 │ │ │ │ │ -y Fj(W)657 1375 y Fp(=)e Fl(S)29 b Fi([)24 b Fp(\()p │ │ │ │ │ -Fl(Ad)-10 b(j)5 b Fp(\()p Fl(S)g Fp(\))26 b Fi(\\)e Fl(W)13 │ │ │ │ │ -b Fp(\).)57 b(\(If)36 b Fi(j)p Fl(B)5 b Fi(j)35 b(\025)f(j)p │ │ │ │ │ -Fl(W)13 b Fi(j)p Fp(,)38 b(w)m(e)e(\014rst)f(lo)s(ok)i(at)g │ │ │ │ │ -Fl(Y)2885 1389 y Fj(B)2981 1375 y Fp(and)f(if)g(no)g(impro)m(v)m(emen)m │ │ │ │ │ -(t)227 1488 y(can)43 b(b)s(e)f(made)h(w)m(e)g(lo)s(ok)h(at)f │ │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fp(8)p 136 100 1087 4 v │ │ │ │ │ +1269 w Fo(GPart)29 b Fg(:)41 b Fm(DRAFT)30 b Fg(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2813 100 V 227 399 a Fp(The)e │ │ │ │ │ +Fo(YVmapIV)e Fp(ob)5 b(ject)30 b(con)m(tains)g(the)g(list)f(of)h(v)m │ │ │ │ │ +(ertices)g(in)f(the)g(wide)g(separator)h Fl(Y)20 b Fp(.)40 │ │ │ │ │ +b(The)29 b Fo(IV)f Fp(ob)5 b(ject)30 b(that)227 511 y(is)i(returned,)g │ │ │ │ │ +(\(called)h Fo(YCmapIV)d Fp(in)i(the)g(calling)i(metho)s(d\))e(con)m │ │ │ │ │ +(tains)h(the)f(subscripts)f(of)h(the)g Fl(Y)3561 525 │ │ │ │ │ +y Fk(0)3600 511 y Fp(,)h Fl(Y)3711 525 y Fk(1)3750 511 │ │ │ │ │ +y Fp(,)g Fl(Y)3861 525 y Fk(2)227 624 y Fp(or)e Fl(Y)392 │ │ │ │ │ +638 y Fk(3)461 624 y Fp(sets)g(that)g(con)m(tains)g(eac)m(h)h(v)m │ │ │ │ │ +(ertex.)227 784 y Fm(Err)-5 b(or)38 b(che)-5 b(cking:)49 │ │ │ │ │ +b Fp(If)35 b Fo(gpart)p Fp(,)f Fo(g)h Fp(or)g Fo(YVmapIV)d │ │ │ │ │ +Fp(is)j Fo(NULL)p Fp(,)f(or)h(if)g Fo(nvtx)c Fi(\024)h │ │ │ │ │ +Fp(0,)37 b(or)e(if)f Fo(YVmapIV)f Fp(is)i(empt)m(y)-8 │ │ │ │ │ +b(,)37 b(an)227 897 y(error)30 b(message)i(is)e(prin)m(ted)g(and)g(the) │ │ │ │ │ +g(program)h(exits.)111 1103 y(3.)46 b Fo(void)h(*)g │ │ │ │ │ +(GPart_smoothBy2layers)42 b(\()48 b(GPart)e(*gpart,)g(int)h(bipartite,) │ │ │ │ │ +e(float)h(alpha)h(\))g(;)227 1262 y Fp(This)22 b(metho)s(d)h(forms)f │ │ │ │ │ +(the)h(wide)g(separator)h Fl(Y)43 b Fp(from)22 b(t)m(w)m(o)i(la)m(y)m │ │ │ │ │ +(ers)h(of)e(v)m(ertices,)j(either)e Fl(Y)3205 1276 y │ │ │ │ │ +Fj(B)3291 1262 y Fp(=)g Fl(S)11 b Fi([)5 b Fp(\()p Fl(Ad)-10 │ │ │ │ │ +b(j)5 b Fp(\()p Fl(S)g Fp(\))g Fi(\\)227 1375 y Fl(B)g │ │ │ │ │ +Fp(\))36 b(or)g Fl(Y)542 1389 y Fj(W)657 1375 y Fp(=)e │ │ │ │ │ +Fl(S)29 b Fi([)24 b Fp(\()p Fl(Ad)-10 b(j)5 b Fp(\()p │ │ │ │ │ +Fl(S)g Fp(\))26 b Fi(\\)e Fl(W)13 b Fp(\).)57 b(\(If)36 │ │ │ │ │ +b Fi(j)p Fl(B)5 b Fi(j)35 b(\025)f(j)p Fl(W)13 b Fi(j)p │ │ │ │ │ +Fp(,)38 b(w)m(e)e(\014rst)f(lo)s(ok)i(at)g Fl(Y)2885 │ │ │ │ │ +1389 y Fj(B)2981 1375 y Fp(and)f(if)g(no)g(impro)m(v)m(emen)m(t)227 │ │ │ │ │ +1488 y(can)43 b(b)s(e)f(made)h(w)m(e)g(lo)s(ok)h(at)f │ │ │ │ │ Fl(Y)1329 1502 y Fj(W)1409 1488 y Fp(,)j(and)d(the)f(rev)m(erse)i(if)f │ │ │ │ │ Fi(j)p Fl(W)13 b Fi(j)45 b Fl(>)h Fi(j)p Fl(B)5 b Fi(j)p │ │ │ │ │ Fp(.\))78 b(The)42 b Fo(bipartite)e Fp(parameter)227 │ │ │ │ │ 1601 y(de\014nes)28 b(the)h(t)m(yp)s(e)g(of)g(net)m(w)m(ork)h(problem)e │ │ │ │ │ (w)m(e)i(solv)m(e.)41 b(The)29 b(net)m(w)m(ork)g(induced)f(b)m(y)h(the) │ │ │ │ │ g(wide)g(separator)g Fl(Y)227 1714 y Fp(need)34 b(not)f(b)s(e)g │ │ │ │ │ (bipartite,)j(and)d(will)h(not)g(b)s(e)e(bipartite)j(if)e │ │ │ │ │ @@ -6276,17 +6283,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 1106 4 v 1288 100 a Fo(GPart)29 │ │ │ │ │ -b Fg(:)40 b Fm(DRAFT)121 b Fg(Jan)m(uary)30 b(16,)i(2024)p │ │ │ │ │ -2747 100 V 1106 w Fp(9)0 399 y Fb(1.2.7)112 b(Recursiv)m(e)38 │ │ │ │ │ +TeXDict begin 9 8 bop 91 100 1087 4 v 1269 100 a Fo(GPart)29 │ │ │ │ │ +b Fg(:)40 b Fm(DRAFT)121 b Fg(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2766 100 V 1087 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 │ │ │ │ │ @@ -6349,61 +6356,62 @@ │ │ │ │ │ (whether)e Fo(info)f Fp(is)i Fo(NULL)p Fp(.)f Fo(DDsepInfo)p │ │ │ │ │ 2663 5150 V 32 w(setDefaultFields\(\))c Fp(is)32 b(called)227 │ │ │ │ │ 5263 y(to)f(set)g(the)g(default)f(v)-5 b(alues.)227 5407 │ │ │ │ │ y Fm(Err)g(or)34 b(che)-5 b(cking:)40 b Fp(If)30 b Fo(info)g │ │ │ │ │ Fp(is)g Fo(NULL)p Fp(,)f(an)i(error)f(message)h(is)g(prin)m(ted)f(and)f │ │ │ │ │ (the)i(program)f(exits.)p eop end │ │ │ │ │ %%Page: 10 10 │ │ │ │ │ -TeXDict begin 10 9 bop 0 100 a Fp(10)p 182 100 1084 4 │ │ │ │ │ -v 1266 w Fo(GPart)29 b Fg(:)40 b Fm(DRAFT)31 b Fg(Jan)m(uary)f(16,)h │ │ │ │ │ -(2024)p 2817 100 V 111 399 a Fp(4.)46 b Fo(void)h(DDsepInfo_free)d(\()j │ │ │ │ │ -(DDsepInfo)f(*info)g(\))h(;)227 545 y Fp(This)33 b(metho)s(d)g(c)m(hec) │ │ │ │ │ -m(ks)h(to)g(see)g(whether)f Fo(info)f Fp(is)h Fo(NULL)p │ │ │ │ │ -Fp(.)g(If)g(so,)h(an)f(error)g(message)i(is)e(prin)m(ted)g(and)g(the) │ │ │ │ │ -227 658 y(program)f(exits.)46 b(Otherwise,)32 b(it)g(releases)h(an)m(y) │ │ │ │ │ -g(storage)g(b)m(y)f(a)g(call)h(to)g Fo(DDsepInfo)p 3141 │ │ │ │ │ -658 29 4 v 31 w(clearData\(\))c Fp(then)227 771 y(free's)i(the)f │ │ │ │ │ -(storage)i(for)e(the)h(structure)f(with)g(a)h(call)g(to)h │ │ │ │ │ -Fo(free\(\))p Fp(.)227 917 y Fm(Err)-5 b(or)34 b(che)-5 │ │ │ │ │ -b(cking:)40 b Fp(If)30 b Fo(info)g Fp(is)g Fo(NULL)p │ │ │ │ │ -Fp(,)f(an)i(error)f(message)h(is)g(prin)m(ted)f(and)f(the)i(program)f │ │ │ │ │ -(exits.)111 1097 y(5.)46 b Fo(void)h(DDsepInfo_writeCpuTimes)41 │ │ │ │ │ -b(\()48 b(DDsepInfo)d(*info,)h(FILE)h(*msgFile)e(\))j(;)227 │ │ │ │ │ -1244 y Fp(This)32 b(metho)s(d)h(writes)f(a)i(breakdo)m(wn)e(of)h(the)g │ │ │ │ │ -(CPU)f(times)i(in)e(a)i(meaningful)e(format.)49 b(Here)33 │ │ │ │ │ -b(is)g(sample)227 1357 y(output.)275 1559 y Fo(CPU)47 │ │ │ │ │ -b(breakdown)e(for)i(graph)f(partition)943 1671 y(raw)h(CPU)142 │ │ │ │ │ -b(per)47 b(cent)275 1784 y(misc)333 b(:)286 b(1.61)190 │ │ │ │ │ -b(1.2\045)275 1897 y(Split)285 b(:)238 b(24.68)142 b(17.7\045)275 │ │ │ │ │ -2010 y(find)47 b(DD)190 b(:)238 b(12.13)190 b(8.7\045)275 │ │ │ │ │ -2123 y(DomSeg)46 b(Map)h(:)238 b(13.09)190 b(9.4\045)275 │ │ │ │ │ -2236 y(DomSeg)46 b(BPG)h(:)286 b(4.66)190 b(3.3\045)275 │ │ │ │ │ -2349 y(BKL)381 b(:)286 b(5.68)190 b(4.1\045)275 2462 │ │ │ │ │ -y(Smooth)237 b(:)h(77.83)142 b(55.7\045)275 2575 y(Total)285 │ │ │ │ │ -b(:)191 b(139.67)93 b(100.0\045)227 2777 y Fm(Err)-5 │ │ │ │ │ -b(or)41 b(che)-5 b(cking:)56 b Fp(If)38 b Fo(info)f Fp(or)h │ │ │ │ │ -Fo(msgFile)e Fp(is)j Fo(NULL)p Fp(,)e(an)h(error)g(message)h(is)f(prin) │ │ │ │ │ -m(ted)g(and)g(the)g(program)227 2890 y(exits.)0 3194 │ │ │ │ │ -y Fe(1.3)135 b(Driv)l(er)46 b(programs)g(for)f(the)g │ │ │ │ │ -Fc(GPart)d Fe(ob)7 b(ject)0 3418 y Fp(This)30 b(section)h(con)m(tains)h │ │ │ │ │ -(brief)e(descriptions)g(of)g(four)g(driv)m(er)g(programs.)111 │ │ │ │ │ -3628 y(1.)46 b Fo(testDDviaFishnet)e(msglvl)i(msgFile)g(inGraphFile)e │ │ │ │ │ -(freeze)i(minweight)g(maxweight)1039 3741 y(seed)g(outIVfile)227 │ │ │ │ │ -3887 y Fp(This)24 b(driv)m(er)g(program)g(constructs)g(a)h(domain)f │ │ │ │ │ -(decomp)s(osition)h(via)g(the)f Fm(\014shnet)h Fp(algorithm)g([)p │ │ │ │ │ -Ff(?)q Fp(].)39 b(It)24 b(reads)227 4000 y(in)f(a)h Fo(Graph)e │ │ │ │ │ -Fp(ob)5 b(ject)24 b(from)f(a)h(\014le,)h(\014nds)c(the)j(domain)f │ │ │ │ │ -(decomp)s(osition)h(using)f(the)g(four)g(input)f(parameters,)227 │ │ │ │ │ -4113 y(then)30 b(optionally)i(writes)f(out)f(the)h(map)f(from)g(v)m │ │ │ │ │ -(ertices)i(to)f(comp)s(onen)m(ts)f(to)h(a)g(\014le.)337 │ │ │ │ │ -4314 y Fn(\210)45 b Fp(The)30 b Fo(msglvl)f Fp(parameter)i(determines)f │ │ │ │ │ -(the)h(amoun)m(t)f(of)h(output.)337 4453 y Fn(\210)45 │ │ │ │ │ -b Fp(The)37 b Fo(msgFile)e Fp(parameter)j(determines)f(the)g(output)g │ │ │ │ │ -(\014le)g(|)g(if)g Fo(msgFile)e Fp(is)j Fo(stdout)p Fp(,)f(then)g(the) │ │ │ │ │ -427 4566 y(output)29 b(\014le)h(is)f Fm(stdout)p Fp(,)i(otherwise)f(a)f │ │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fp(10)p 182 100 1065 4 │ │ │ │ │ +v 1247 w Fo(GPart)29 b Fg(:)40 b Fm(DRAFT)31 b Fg(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2836 100 V 111 399 a Fp(4.)46 │ │ │ │ │ +b Fo(void)h(DDsepInfo_free)d(\()j(DDsepInfo)f(*info)g(\))h(;)227 │ │ │ │ │ +545 y Fp(This)33 b(metho)s(d)g(c)m(hec)m(ks)h(to)g(see)g(whether)f │ │ │ │ │ +Fo(info)f Fp(is)h Fo(NULL)p Fp(.)g(If)g(so,)h(an)f(error)g(message)i │ │ │ │ │ +(is)e(prin)m(ted)g(and)g(the)227 658 y(program)f(exits.)46 │ │ │ │ │ +b(Otherwise,)32 b(it)g(releases)h(an)m(y)g(storage)g(b)m(y)f(a)g(call)h │ │ │ │ │ +(to)g Fo(DDsepInfo)p 3141 658 29 4 v 31 w(clearData\(\))c │ │ │ │ │ +Fp(then)227 771 y(free's)i(the)f(storage)i(for)e(the)h(structure)f │ │ │ │ │ +(with)g(a)h(call)g(to)h Fo(free\(\))p Fp(.)227 917 y │ │ │ │ │ +Fm(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fp(If)30 b Fo(info)g │ │ │ │ │ +Fp(is)g Fo(NULL)p Fp(,)f(an)i(error)f(message)h(is)g(prin)m(ted)f(and)f │ │ │ │ │ +(the)i(program)f(exits.)111 1097 y(5.)46 b Fo(void)h │ │ │ │ │ +(DDsepInfo_writeCpuTimes)41 b(\()48 b(DDsepInfo)d(*info,)h(FILE)h │ │ │ │ │ +(*msgFile)e(\))j(;)227 1244 y Fp(This)32 b(metho)s(d)h(writes)f(a)i │ │ │ │ │ +(breakdo)m(wn)e(of)h(the)g(CPU)f(times)i(in)e(a)i(meaningful)e(format.) │ │ │ │ │ +49 b(Here)33 b(is)g(sample)227 1357 y(output.)275 1559 │ │ │ │ │ +y Fo(CPU)47 b(breakdown)e(for)i(graph)f(partition)943 │ │ │ │ │ +1671 y(raw)h(CPU)142 b(per)47 b(cent)275 1784 y(misc)333 │ │ │ │ │ +b(:)286 b(1.61)190 b(1.2\045)275 1897 y(Split)285 b(:)238 │ │ │ │ │ +b(24.68)142 b(17.7\045)275 2010 y(find)47 b(DD)190 b(:)238 │ │ │ │ │ +b(12.13)190 b(8.7\045)275 2123 y(DomSeg)46 b(Map)h(:)238 │ │ │ │ │ +b(13.09)190 b(9.4\045)275 2236 y(DomSeg)46 b(BPG)h(:)286 │ │ │ │ │ +b(4.66)190 b(3.3\045)275 2349 y(BKL)381 b(:)286 b(5.68)190 │ │ │ │ │ +b(4.1\045)275 2462 y(Smooth)237 b(:)h(77.83)142 b(55.7\045)275 │ │ │ │ │ +2575 y(Total)285 b(:)191 b(139.67)93 b(100.0\045)227 │ │ │ │ │ +2777 y Fm(Err)-5 b(or)41 b(che)-5 b(cking:)56 b Fp(If)38 │ │ │ │ │ +b Fo(info)f Fp(or)h Fo(msgFile)e Fp(is)j Fo(NULL)p Fp(,)e(an)h(error)g │ │ │ │ │ +(message)h(is)f(prin)m(ted)g(and)g(the)g(program)227 │ │ │ │ │ +2890 y(exits.)0 3194 y Fe(1.3)135 b(Driv)l(er)46 b(programs)g(for)f │ │ │ │ │ +(the)g Fc(GPart)d Fe(ob)7 b(ject)0 3418 y Fp(This)30 │ │ │ │ │ +b(section)h(con)m(tains)h(brief)e(descriptions)g(of)g(four)g(driv)m(er) │ │ │ │ │ +g(programs.)111 3628 y(1.)46 b Fo(testDDviaFishnet)e(msglvl)i(msgFile)g │ │ │ │ │ +(inGraphFile)e(freeze)i(minweight)g(maxweight)1039 3741 │ │ │ │ │ +y(seed)g(outIVfile)227 3887 y Fp(This)24 b(driv)m(er)g(program)g │ │ │ │ │ +(constructs)g(a)h(domain)f(decomp)s(osition)h(via)g(the)f │ │ │ │ │ +Fm(\014shnet)h Fp(algorithm)g([)p Ff(?)q Fp(].)39 b(It)24 │ │ │ │ │ +b(reads)227 4000 y(in)f(a)h Fo(Graph)e Fp(ob)5 b(ject)24 │ │ │ │ │ +b(from)f(a)h(\014le,)h(\014nds)c(the)j(domain)f(decomp)s(osition)h │ │ │ │ │ +(using)f(the)g(four)g(input)f(parameters,)227 4113 y(then)30 │ │ │ │ │ +b(optionally)i(writes)f(out)f(the)h(map)f(from)g(v)m(ertices)i(to)f │ │ │ │ │ +(comp)s(onen)m(ts)f(to)h(a)g(\014le.)337 4314 y Fn(\210)45 │ │ │ │ │ +b Fp(The)30 b Fo(msglvl)f Fp(parameter)i(determines)f(the)h(amoun)m(t)f │ │ │ │ │ +(of)h(output.)337 4453 y Fn(\210)45 b Fp(The)37 b Fo(msgFile)e │ │ │ │ │ +Fp(parameter)j(determines)f(the)g(output)g(\014le)g(|)g(if)g │ │ │ │ │ +Fo(msgFile)e Fp(is)j Fo(stdout)p Fp(,)f(then)g(the)427 │ │ │ │ │ +4566 y(output)29 b(\014le)h(is)f Fm(stdout)p Fp(,)i(otherwise)f(a)f │ │ │ │ │ (\014le)h(is)f(op)s(ened)g(with)g Fm(app)-5 b(end)31 │ │ │ │ │ b Fp(status)e(to)i(receiv)m(e)g(an)m(y)e(output)427 4679 │ │ │ │ │ y(data.)337 4817 y Fn(\210)45 b Fp(The)23 b Fo(inGraphFile)d │ │ │ │ │ Fp(parameter)k(is)f(the)h(input)e(\014le)i(for)f(the)g │ │ │ │ │ Fo(Graph)f Fp(ob)5 b(ject.)39 b(It)24 b(m)m(ust)f(b)s(e)f(of)i(the)f │ │ │ │ │ (form)427 4930 y Fo(*.graphf)18 b Fp(or)j Fo(*.graphb)p │ │ │ │ │ Fp(.)35 b(The)19 b Fo(Graph)g Fp(ob)5 b(ject)21 b(is)g(read)f(from)g │ │ │ │ │ @@ -6412,17 +6420,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 1084 4 v 1265 100 a Fo(GPart)29 │ │ │ │ │ -b Fg(:)41 b Fm(DRAFT)121 b Fg(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2724 100 V 1084 w Fp(11)337 399 y Fn(\210)45 b Fp(The)30 │ │ │ │ │ +TeXDict begin 11 10 bop 91 100 1065 4 v 1246 100 a Fo(GPart)29 │ │ │ │ │ +b Fg(:)40 b Fm(DRAFT)122 b Fg(F)-8 b(ebruary)30 b(18,)h(2025)p │ │ │ │ │ +2743 100 V 1065 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 │ │ │ │ │ @@ -6491,32 +6499,32 @@ │ │ │ │ │ 5181 y Fn(\210)45 b Fp(The)37 b Fo(msgFile)e Fp(parameter)j(determines) │ │ │ │ │ f(the)g(output)g(\014le)g(|)g(if)g Fo(msgFile)e Fp(is)j │ │ │ │ │ Fo(stdout)p Fp(,)f(then)g(the)427 5294 y(output)29 b(\014le)h(is)f │ │ │ │ │ Fm(stdout)p Fp(,)i(otherwise)f(a)f(\014le)h(is)f(op)s(ened)g(with)g │ │ │ │ │ Fm(app)-5 b(end)31 b Fp(status)e(to)i(receiv)m(e)g(an)m(y)e(output)427 │ │ │ │ │ 5407 y(data.)p eop end │ │ │ │ │ %%Page: 12 12 │ │ │ │ │ -TeXDict begin 12 11 bop 0 100 a Fp(12)p 182 100 1084 │ │ │ │ │ -4 v 1266 w Fo(GPart)29 b Fg(:)40 b Fm(DRAFT)31 b Fg(Jan)m(uary)f(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ -(input)f(\014le)h(for)g(the)g Fo(IV)f Fp(ob)5 b(ject)32 │ │ │ │ │ -b(that)g(con)m(tains)g(the)f(map)f(from)427 882 y(v)m(ertices)i(to)f │ │ │ │ │ -(domains)g(and)e(m)m(ultisector.)43 b(It)30 b Fo(inIVfile)e │ │ │ │ │ -Fp(m)m(ust)i(b)s(e)g(of)h(the)f(form)g Fo(*.ivf)f Fp(or)i │ │ │ │ │ -Fo(*.ivb)p Fp(.)337 1028 y Fn(\210)45 b Fp(The)32 b Fo(option)f │ │ │ │ │ -Fp(parameter)i(sp)s(eci\014es)f(the)h(t)m(yp)s(e)f(of)h(net)m(w)m(ork)g │ │ │ │ │ -(optimization)i(problem)d(that)h(will)g(b)s(e)427 1141 │ │ │ │ │ -y(solv)m(ed.)500 1286 y Ff({)45 b Fo(option)h(=)i(1)30 │ │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fp(12)p 182 100 1065 │ │ │ │ │ +4 v 1247 w Fo(GPart)29 b Fg(:)40 b Fm(DRAFT)31 b Fg(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2836 100 V 337 399 a Fn(\210)45 │ │ │ │ │ +b Fp(The)23 b Fo(inGraphFile)d Fp(parameter)k(is)f(the)h(input)e │ │ │ │ │ +(\014le)i(for)f(the)g Fo(Graph)f Fp(ob)5 b(ject.)39 b(It)24 │ │ │ │ │ +b(m)m(ust)f(b)s(e)f(of)i(the)f(form)427 511 y Fo(*.graphf)18 │ │ │ │ │ +b Fp(or)j Fo(*.graphb)p Fp(.)35 b(The)19 b Fo(Graph)g │ │ │ │ │ +Fp(ob)5 b(ject)21 b(is)g(read)f(from)g(the)g(\014le)h(via)f(the)h │ │ │ │ │ +Fo(Graph)p 3368 511 29 4 v 33 w(readFromFile\(\))427 │ │ │ │ │ +624 y Fp(metho)s(d.)337 770 y Fn(\210)45 b Fp(The)31 │ │ │ │ │ +b Fo(inIVfile)d Fp(parameter)k(is)f(the)g(input)f(\014le)h(for)g(the)g │ │ │ │ │ +Fo(IV)f Fp(ob)5 b(ject)32 b(that)g(con)m(tains)g(the)f(map)f(from)427 │ │ │ │ │ +882 y(v)m(ertices)i(to)f(domains)g(and)e(m)m(ultisector.)43 │ │ │ │ │ +b(It)30 b Fo(inIVfile)e Fp(m)m(ust)i(b)s(e)g(of)h(the)f(form)g │ │ │ │ │ +Fo(*.ivf)f Fp(or)i Fo(*.ivb)p Fp(.)337 1028 y Fn(\210)45 │ │ │ │ │ +b Fp(The)32 b Fo(option)f Fp(parameter)i(sp)s(eci\014es)f(the)h(t)m(yp) │ │ │ │ │ +s(e)f(of)h(net)m(w)m(ork)g(optimization)i(problem)d(that)h(will)g(b)s │ │ │ │ │ +(e)427 1141 y(solv)m(ed.)500 1286 y Ff({)45 b Fo(option)h(=)i(1)30 │ │ │ │ │ b Fp(|)g(eac)m(h)i(net)m(w)m(ork)f(has)f(t)m(w)m(o)i(la)m(y)m(ers)f │ │ │ │ │ (and)f(is)h(bipartite.)500 1415 y Ff({)45 b Fo(option)h(=)i(2)30 │ │ │ │ │ b Fp(|)g(eac)m(h)i(net)m(w)m(ork)f(has)f(t)m(w)m(o)i(la)m(y)m(ers)f │ │ │ │ │ (but)f(need)g(not)h(b)s(e)f(bipartite.)500 1544 y Ff({)45 │ │ │ │ │ b Fo(option)h(=)i(2)30 b Fp(|)g(eac)m(h)i(net)m(w)m(ork)f(has)f │ │ │ │ │ Fo(option/2)e Fp(la)m(y)m(ers)k(on)e(eac)m(h)i(side)e(of)h(the)f │ │ │ │ │ (separator.)337 1689 y Fn(\210)45 b Fp(The)30 b Fo(alpha)f │ │ │ │ │ @@ -6572,17 +6580,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 1084 4 v 1265 100 a Fo(GPart)29 │ │ │ │ │ -b Fg(:)41 b Fm(DRAFT)121 b Fg(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2724 100 V 1084 w Fp(13)337 399 y Fn(\210)45 b Fp(The)c │ │ │ │ │ +TeXDict begin 13 12 bop 91 100 1065 4 v 1246 100 a Fo(GPart)29 │ │ │ │ │ +b Fg(:)40 b Fm(DRAFT)122 b Fg(F)-8 b(ebruary)30 b(18,)h(2025)p │ │ │ │ │ +2743 100 V 1065 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 │ │ │ │ │ @@ -6652,25 +6660,26 @@ │ │ │ │ │ 5275 y Ff({)45 b Fo(nlayer)h(=)i(2)30 b Fp(|)g(eac)m(h)i(net)m(w)m(ork) │ │ │ │ │ f(has)f(t)m(w)m(o)i(la)m(y)m(ers)f(but)f(need)g(not)h(b)s(e)f │ │ │ │ │ (bipartite.)500 5407 y Ff({)45 b Fo(nlayer)h(>)i(2)30 │ │ │ │ │ b Fp(|)g(eac)m(h)i(net)m(w)m(ork)f(has)f Fo(option/2)e │ │ │ │ │ Fp(la)m(y)m(ers)k(on)e(eac)m(h)i(side)e(of)h(the)f(separator.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 14 14 │ │ │ │ │ -TeXDict begin 14 13 bop 0 100 a Fp(14)p 182 100 1084 │ │ │ │ │ -4 v 1266 w Fo(GPart)29 b Fg(:)40 b Fm(DRAFT)31 b Fg(Jan)m(uary)f(16,)h │ │ │ │ │ -(2024)p 2817 100 V 337 399 a Fn(\210)45 b Fp(The)34 b │ │ │ │ │ -Fo(outDSTreeFile)d Fp(parameter)k(is)f(the)h(output)f(\014le)g(for)g │ │ │ │ │ -(the)h Fo(DSTree)e Fp(ob)5 b(ject.)53 b(It)35 b(m)m(ust)f(b)s(e)g(of) │ │ │ │ │ -427 511 y(the)29 b(form)f Fo(*.dstreef)e Fp(or)j Fo(*.dstreeb)p │ │ │ │ │ -Fp(.)37 b(If)29 b Fo(outDSTreeFile)24 b Fp(is)29 b(not)g │ │ │ │ │ -Fo("none")p Fp(,)e(the)i Fo(DSTree)e Fp(ob)5 b(ject)427 │ │ │ │ │ -624 y(is)31 b(written)f(to)h(the)g(\014le)f(via)h(the)g │ │ │ │ │ -Fo(DSTree)p 1851 624 29 4 v 33 w(writeToFile\(\))26 b │ │ │ │ │ -Fp(metho)s(d.)p eop end │ │ │ │ │ +TeXDict begin 14 13 bop 0 100 a Fp(14)p 182 100 1065 │ │ │ │ │ +4 v 1247 w Fo(GPart)29 b Fg(:)40 b Fm(DRAFT)31 b Fg(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2836 100 V 337 399 a Fn(\210)45 │ │ │ │ │ +b Fp(The)34 b Fo(outDSTreeFile)d Fp(parameter)k(is)f(the)h(output)f │ │ │ │ │ +(\014le)g(for)g(the)h Fo(DSTree)e Fp(ob)5 b(ject.)53 │ │ │ │ │ +b(It)35 b(m)m(ust)f(b)s(e)g(of)427 511 y(the)29 b(form)f │ │ │ │ │ +Fo(*.dstreef)e Fp(or)j Fo(*.dstreeb)p Fp(.)37 b(If)29 │ │ │ │ │ +b Fo(outDSTreeFile)24 b Fp(is)29 b(not)g Fo("none")p │ │ │ │ │ +Fp(,)e(the)i Fo(DSTree)e Fp(ob)5 b(ject)427 624 y(is)31 │ │ │ │ │ +b(written)f(to)h(the)g(\014le)f(via)h(the)g Fo(DSTree)p │ │ │ │ │ +1851 624 29 4 v 33 w(writeToFile\(\))26 b Fp(metho)s(d.)p │ │ │ │ │ +eop end │ │ │ │ │ %%Page: 15 15 │ │ │ │ │ TeXDict begin 15 14 bop 0 866 a Fq(Index)0 1289 y Fo(DDsepInfo)p │ │ │ │ │ 438 1289 29 4 v 32 w(clearData\(\))p Fp(,)27 b(9)0 1402 │ │ │ │ │ y Fo(DDsepInfo)p 438 1402 V 32 w(free\(\))p Fp(,)i(10)0 │ │ │ │ │ 1515 y Fo(DDsepInfo)p 438 1515 V 32 w(new\(\))p Fp(,)g(9)0 │ │ │ │ │ 1628 y Fo(DDsepInfo)p 438 1628 V 32 w(setDefaultFields\(\))p │ │ │ │ │ Fp(,)d(9)0 1824 y Fo(GPart)p 246 1824 V 33 w(bndWeightsIV\(\))p │ │ │ │ │ ├── ps2ascii {} │ │ │ │ │ │ @@ -30,15 +30,15 @@ │ │ │ │ │ │ condensed into the source while the nodes in W \Y are condensed into the sink. The rest of │ │ │ │ │ │ the network is formed using the structure of the subgraph induced by Y. Given a min-cut of │ │ │ │ │ │ b │ │ │ │ │ │ the network we can identify a separator S ⊆ Y that has minimal weight. We examine two │ │ │ │ │ │ (possibly) different min-cuts and evaluate the partitions induced via their minimal weight │ │ │ │ │ │ separators, and accept a better partition if present. │ │ │ │ │ │ 1 │ │ │ │ │ │ - 2 GPart : DRAFT January 16, 2024 │ │ │ │ │ │ + 2 GPart : DRAFT February 18, 2025 │ │ │ │ │ │ This process we call DDSEP, which is short for Domain Decomposition SEParator, explained in more │ │ │ │ │ │ detail in [?] and [?]. │ │ │ │ │ │ 1.1 Data Structures │ │ │ │ │ │ The GPart structure has a pointer to a Graph object and other fields that contain information │ │ │ │ │ │ about the partition of the graph. │ │ │ │ │ │ The following fields are always active. │ │ │ │ │ │ • Graph *graph : pointer to the Graph object │ │ │ │ │ │ @@ -61,15 +61,15 @@ │ │ │ │ │ │ • GPart *sib : pointer to a sibling GPart object │ │ │ │ │ │ • IV vtxMapIV : an IV object of size nvtx + nvbnd, contains a map from the vertices of the │ │ │ │ │ │ graph to either the vertices of its parent or to the vertices of the root graph │ │ │ │ │ │ The DDsepInfo helper-object is used during the DDSEP recursive bisection process. It contains │ │ │ │ │ │ input parameters for the different stages of the DDSEP algorithm, and collects statistics about the │ │ │ │ │ │ CPUtime spent in each stage. │ │ │ │ │ │ • These parameters are used to generate the domain decomposition. │ │ │ │ │ │ - GPart : DRAFT January 16, 2024 3 │ │ │ │ │ │ + GPart : DRAFT February 18, 2025 3 │ │ │ │ │ │ – int minweight: minimum target weight for a domain │ │ │ │ │ │ – int maxweight: maximum target weight for a domain │ │ │ │ │ │ – double freeze: multiplier used to freeze vertices of high degree into the multisector. │ │ │ │ │ │ If the degree of v is more than freeze times the median degree, v is placed into the │ │ │ │ │ │ multisector. │ │ │ │ │ │ – int seed: random number seed │ │ │ │ │ │ – int DDoption: If 1, a new domain decomposition is constructed for each subgraph. If │ │ │ │ │ │ @@ -98,15 +98,15 @@ │ │ │ │ │ │ – int ntreeobj: number of tree objects in the tree, used to set gpart->id and used to │ │ │ │ │ │ initialize the DSTree object. │ │ │ │ │ │ – int msglvl : message level │ │ │ │ │ │ – FILE *msgFile : message file pointer │ │ │ │ │ │ 1.2 Prototypes and descriptions of GPart methods │ │ │ │ │ │ This section contains brief descriptions including prototypes of all methods that belong to the │ │ │ │ │ │ GPart object. There are no IO methods. │ │ │ │ │ │ - 4 GPart : DRAFT January 16, 2024 │ │ │ │ │ │ + 4 GPart : DRAFT February 18, 2025 │ │ │ │ │ │ 1.2.1 Basic methods │ │ │ │ │ │ As usual, there are four basic methods to support object creation, setting default fields, clearing │ │ │ │ │ │ any allocated data, and free’ing the object. │ │ │ │ │ │ 1. GPart * GPart_new ( void ) ; │ │ │ │ │ │ This method simply allocates storage for the GPart structure and then sets the default fields │ │ │ │ │ │ by a call to GPart setDefaultFields(). │ │ │ │ │ │ 2. void GPart_setDefaultFields ( GPart *gpart ) ; │ │ │ │ │ │ @@ -132,15 +132,15 @@ │ │ │ │ │ │ compidsIV and cweightsIV IV objects are initialized. The remaining fields are not changed │ │ │ │ │ │ from their default values. │ │ │ │ │ │ Error checking: If gpart or g is NULL, or if g->nvtx ≤ 0, an error message is printed and the │ │ │ │ │ │ program exits. │ │ │ │ │ │ 2. void GPart_setMessageInfo ( GPart *gpart, int msglvl, FILE *msgFile ) ; │ │ │ │ │ │ This method sets the msglvl and msgFile fields. │ │ │ │ │ │ Error checking: If gpart is NULL, an error message is printed and the program exits. │ │ │ │ │ │ - GPart : DRAFT January 16, 2024 5 │ │ │ │ │ │ + GPart : DRAFT February 18, 2025 5 │ │ │ │ │ │ 1.2.3 Utility methods │ │ │ │ │ │ 1. void GPart_setCweights ( GPart *gpart ) ; │ │ │ │ │ │ This method sets the component weights vector cweightsIV. We assume that the compidsIV │ │ │ │ │ │ vector has been set prior to entering this method. The weight of a component is not simply │ │ │ │ │ │ the sum of the weights of the vertices with that component’s id. We accept the separator or │ │ │ │ │ │ multisector vertices (those v with compids[v] == 0) but then find the connected components │ │ │ │ │ │ of the remaining vertices, renumbering the compidsIV vector where necessary. Thus, ncomp │ │ │ │ │ │ @@ -171,15 +171,15 @@ │ │ │ │ │ │ This method determines whether the vertex v is adjacent to just one domain or not. We use │ │ │ │ │ │ this method to make a separator or multisector minimal. If the vertex is adjacent to only one │ │ │ │ │ │ domain, the return value is 1 and *pdomid is set to the domain’s id. If a vertex is adjacent │ │ │ │ │ │ to zero or two or more domains, the return value is zero. If a vertex belongs to a domain, it │ │ │ │ │ │ is considered adjacent to that domain. │ │ │ │ │ │ Error checking: If gpart, g or domid is NULL, or if v is out of range (i.e., v < 0 or nvtx ≤ v), │ │ │ │ │ │ an error message is printed and the program exits. │ │ │ │ │ │ - 6 GPart : DRAFT January 16, 2024 │ │ │ │ │ │ + 6 GPart : DRAFT February 18, 2025 │ │ │ │ │ │ 6. IV * GPart_bndWeightsIV ( GPart *gpart ) ; │ │ │ │ │ │ This method returns an IV object that contains the weights of the vertices on the boundaries │ │ │ │ │ │ of the components. │ │ │ │ │ │ Error checking: If gpart or g is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 1.2.4 Domain decomposition methods │ │ │ │ │ │ There are presently two methods that create a domain decomposition of a graph or a subgraph. │ │ │ │ │ │ 1. void GPart_DDviaFishnet ( GPart *gpart, double frac, int minweight, │ │ │ │ │ │ @@ -209,15 +209,15 @@ │ │ │ │ │ │ double cpus[] ) ; │ │ │ │ │ │ This method takes a domain decomposition {Φ,Ω ,...,Ω } defined by the compidsIV vector │ │ │ │ │ │ 1 m │ │ │ │ │ │ and generates a two set partition [S,B,W]. We first compute the map from vertices to │ │ │ │ │ │ domains and segments (the segments partition the interface nodes Φ). We then construct the │ │ │ │ │ │ bipartite graph that represents the connectivity of the domains and segments. Each segment │ │ │ │ │ │ is an “edge” that connects two “adjacent” domains. This allows us to use a variant of the │ │ │ │ │ │ - GPart : DRAFT January 16, 2024 7 │ │ │ │ │ │ + GPart : DRAFT February 18, 2025 7 │ │ │ │ │ │ Kernighan-Lin algorithm to find an “edge” separator formed of segments, which is really a │ │ │ │ │ │ vertex separator, a subset of Φ. The alpha parameter is used in the cost function evaluation │ │ │ │ │ │ for the partition, cost([S,B,W]) = |S|1+αmax{|B|,|W|}. The seed parameter is used │ │ │ │ │ │ min{|B|,|W|} │ │ │ │ │ │ to randomize the algorithm. One can make several runswith different seeds and chose the best │ │ │ │ │ │ partition. The cpus[] array is used to store execution times for segments of the algorithm: │ │ │ │ │ │ cpus[0] stores the time to compute the domain/segment map; cpus[2] stores the time to │ │ │ │ │ │ @@ -253,15 +253,15 @@ │ │ │ │ │ │ 0 │ │ │ │ │ │ Y = {y∈Y | y∈Adj(B\Y) and y ∈/ Adj(W \Y)} │ │ │ │ │ │ 1 │ │ │ │ │ │ Y = {y∈Y | y∈/ Adj(B \Y) and y ∈ Adj(W \Y)} │ │ │ │ │ │ 2 │ │ │ │ │ │ Y = {y∈Y | y∈Adj(B\Y) and y ∈Adj(W \Y)} │ │ │ │ │ │ 3 │ │ │ │ │ │ - 8 GPart : DRAFT January 16, 2024 │ │ │ │ │ │ + 8 GPart : DRAFT February 18, 2025 │ │ │ │ │ │ The YVmapIV object contains the list of vertices in the wide separator Y . The IV object that │ │ │ │ │ │ is returned, (called YCmapIV in the calling method) contains the subscripts of the Y , Y , Y │ │ │ │ │ │ 0 1 2 │ │ │ │ │ │ or Y sets that contains each vertex. │ │ │ │ │ │ 3 │ │ │ │ │ │ Error checking: If gpart, g or YVmapIV is NULL, or if nvtx ≤ 0, or if YVmapIV is empty, an │ │ │ │ │ │ error message is printed and the program exits. │ │ │ │ │ │ @@ -303,15 +303,15 @@ │ │ │ │ │ │ improves it (if possible). The methods returns the cost of a (possibly) new two-set partition │ │ │ │ │ │ b b c │ │ │ │ │ │ [S,B,W] defined by the compidsIV vector. The wide separator Y that is constructed is │ │ │ │ │ │ centered around S, i.e., Y includes all nodes in B and W that are nlayer distance or less │ │ │ │ │ │ from S. This method calls GPart smoothYSep(). │ │ │ │ │ │ Error checking: If gpart is NULL, or if nlevel < 0, or if alpha < 0.0, an error message is │ │ │ │ │ │ printed and the program exits. │ │ │ │ │ │ - GPart : DRAFT January 16, 2024 9 │ │ │ │ │ │ + GPart : DRAFT February 18, 2025 9 │ │ │ │ │ │ 1.2.7 Recursive Bisection method │ │ │ │ │ │ There is presently one method to construct the domain/separator tree. │ │ │ │ │ │ 1. DSTree * GPart_RBviaDDsep ( GPart *gpart, DDsepInfo *info ) ; │ │ │ │ │ │ This method performs a recursive bisection of the graph using the DDSEP algorithm and │ │ │ │ │ │ returns a DSTree object that represents the domain/separator tree and the map from vertices │ │ │ │ │ │ to domains and separators. The DDsepInfo structure contains all the parameters to the │ │ │ │ │ │ different steps of the DDSEP algorithm (the fishnet method to find the domain decomposition, │ │ │ │ │ │ @@ -341,15 +341,15 @@ │ │ │ │ │ │ info->DDoption = 1 ; info->msglvl = 0 ; │ │ │ │ │ │ info->nlayer = 3 ; info->msgFile = stdout ; │ │ │ │ │ │ Error checking: If info is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 3. void DDsepInfo_clearData ( DDsepInfo *info ) ; │ │ │ │ │ │ This method checks to see whether info is NULL. DDsepInfo setDefaultFields() is called │ │ │ │ │ │ to set the default values. │ │ │ │ │ │ Error checking: If info is NULL, an error message is printed and the program exits. │ │ │ │ │ │ - 10 GPart : DRAFT January 16, 2024 │ │ │ │ │ │ + 10 GPart : DRAFT February 18, 2025 │ │ │ │ │ │ 4. void DDsepInfo_free ( DDsepInfo *info ) ; │ │ │ │ │ │ This method checks to see whether info is NULL. If so, an error message is printed and the │ │ │ │ │ │ program exits. Otherwise, it releases any storage by a call to DDsepInfo clearData() then │ │ │ │ │ │ free’s the storage for the structure with a call to free(). │ │ │ │ │ │ Error checking: If info is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 5. void DDsepInfo_writeCpuTimes ( DDsepInfo *info, FILE *msgFile ) ; │ │ │ │ │ │ This method writes a breakdown of the CPU times in a meaningful format. Here is sample │ │ │ │ │ │ @@ -379,15 +379,15 @@ │ │ │ │ │ │ data. │ │ │ │ │ │ • TheinGraphFileparameteristheinputfilefortheGraphobject. It mustbeof theform │ │ │ │ │ │ *.graphfor*.graphb. TheGraphobjectisreadfromthefileviatheGraph readFromFile() │ │ │ │ │ │ method. │ │ │ │ │ │ • The freeze parameter is used to place nodes of high degree into the multisector. If the │ │ │ │ │ │ external degree of a vertex is freeze times the average degree, then it is placed in the │ │ │ │ │ │ multisector. │ │ │ │ │ │ - GPart : DRAFT January 16, 2024 11 │ │ │ │ │ │ + GPart : DRAFT February 18, 2025 11 │ │ │ │ │ │ • The target minimum weight for a domain is minweight. │ │ │ │ │ │ • The target maximum weight for a domain is maxweight. │ │ │ │ │ │ • The seed parameter is a random number seed. │ │ │ │ │ │ • The outIVfile parameter is the output file for the IV object that contains the map │ │ │ │ │ │ from vertices to components. If outIVfile is "none", then there is no output, otherwise │ │ │ │ │ │ outIVfile must be of the form *.ivf or *.ivb. │ │ │ │ │ │ 2. testTwoSetViaBKL msglvl msgFile inGraphFile inIVfile │ │ │ │ │ │ @@ -417,15 +417,15 @@ │ │ │ │ │ │ problems. It reads in a Graph object and an IV object that holds the map from vertices to │ │ │ │ │ │ components (e.g., the output from the driver program testTwoSetViaBKL) from two files, │ │ │ │ │ │ smooths the separator and then optionally writes out the new component ids map to a file. │ │ │ │ │ │ • The msglvl parameter determines the amount of output. │ │ │ │ │ │ • The msgFile parameter determines the output file — if msgFile is stdout, then the │ │ │ │ │ │ output file is stdout, otherwise a file is opened with append status to receive any output │ │ │ │ │ │ data. │ │ │ │ │ │ - 12 GPart : DRAFT January 16, 2024 │ │ │ │ │ │ + 12 GPart : DRAFT February 18, 2025 │ │ │ │ │ │ • TheinGraphFileparameteristheinputfilefortheGraphobject. It mustbeof theform │ │ │ │ │ │ *.graphfor*.graphb. TheGraphobjectisreadfromthefileviatheGraph readFromFile() │ │ │ │ │ │ method. │ │ │ │ │ │ • The inIVfile parameter is the input file for the IV object that contains the map from │ │ │ │ │ │ vertices to domains and multisector. It inIVfile must be of the form *.ivf or *.ivb. │ │ │ │ │ │ • The option parameter specifies the type of network optimization problem that will be │ │ │ │ │ │ solved. │ │ │ │ │ │ @@ -457,15 +457,15 @@ │ │ │ │ │ │ • The target maximum weight for a domain is maxweight. │ │ │ │ │ │ • The freeze parameter is used to place nodes of high degree into the multisector. If the │ │ │ │ │ │ external degree of a vertex is freeze times the average degree, then it is placed in the │ │ │ │ │ │ multisector. │ │ │ │ │ │ • The alpha parameter controls the partition evaluation function. │ │ │ │ │ │ • The maxdomweight parameter controls the recursive bisection — no subgraph with │ │ │ │ │ │ weight less than maxdomweight is further split. │ │ │ │ │ │ - GPart : DRAFT January 16, 2024 13 │ │ │ │ │ │ + GPart : DRAFT February 18, 2025 13 │ │ │ │ │ │ • The DDoption parameter controls the initial domain/segment partition on each sub- │ │ │ │ │ │ graph. When DDDoption = 1 we use the fishnet algorithm for each subgraph. When │ │ │ │ │ │ DDDoption = 1 we use the fishnet algorithm once for the entire graph and this is then │ │ │ │ │ │ projected down onto each subgraph. │ │ │ │ │ │ • The nlayer parameter governs the smoothing process by specifying the type of network │ │ │ │ │ │ optimization problem that will be solved. │ │ │ │ │ │ – nlayer = 1 — each network has two layers and is bipartite. │ │ │ │ │ │ @@ -496,15 +496,15 @@ │ │ │ │ │ │ DDDoption = 1 we use the fishnet algorithm once for the entire graph and this is then │ │ │ │ │ │ projected down onto each subgraph. │ │ │ │ │ │ • The nlayer parameter governs the smoothing process by specifying the type of network │ │ │ │ │ │ optimization problem that will be solved. │ │ │ │ │ │ – nlayer = 1 — each network has two layers and is bipartite. │ │ │ │ │ │ – nlayer = 2 — each network has two layers but need not be bipartite. │ │ │ │ │ │ – nlayer > 2 — each network has option/2 layers on each side of the separator. │ │ │ │ │ │ - 14 GPart : DRAFT January 16, 2024 │ │ │ │ │ │ + 14 GPart : DRAFT February 18, 2025 │ │ │ │ │ │ • The outDSTreeFile parameter is the output file for the DSTree object. It must be of │ │ │ │ │ │ the form *.dstreef or *.dstreeb. If outDSTreeFile is not "none", the DSTree object │ │ │ │ │ │ is written to the file via the DSTree writeToFile() method. │ │ │ │ │ │ Index │ │ │ │ │ │ DDsepInfo clearData(), 9 │ │ │ │ │ │ DDsepInfo free(), 10 │ │ │ │ │ │ DDsepInfo new(), 9 │ │ │ ├── ./usr/share/doc/spooles-doc/Graph.ps.gz │ │ │ │ ├── Graph.ps │ │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ │ %%EndComments │ │ │ │ │ %%BeginDefaults │ │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ │ %%EndDefaults │ │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ │ %DVIPSCommandLine: dvips main -o Graph.ps │ │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ │ -%DVIPSSource: TeX output 2024.01.16:2047 │ │ │ │ │ +%DVIPSSource: TeX output 2025.02.18:0318 │ │ │ │ │ %%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,20 +1204,21 @@ │ │ │ │ │ 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 52 /four put │ │ │ │ │ -dup 54 /six put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ +dup 56 /eight put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 74 /J put │ │ │ │ │ +dup 70 /F put │ │ │ │ │ dup 97 /a put │ │ │ │ │ -dup 110 /n put │ │ │ │ │ +dup 98 /b put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ dup 114 /r put │ │ │ │ │ dup 117 /u put │ │ │ │ │ dup 121 /y put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ @@ -1401,89 +1402,93 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ │ -C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ │ -6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ │ -11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ │ -1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ │ -A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ │ -F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ │ -EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ │ -033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ │ -A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ │ -468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8A71FF9C085003EBB4F4 │ │ │ │ │ -3D271F5B16B1AAD3EBDC391F534AA46E545E9D8659DD19B309C3B7625A8396FA │ │ │ │ │ -2519464539D46E43ACB72952313C8497315E0319C08628023E8FC54D7D3BAC29 │ │ │ │ │ -D5AD8EFDABF0C33C7AFB7151A6606C62A87F0F5F783569AC4C881A992E3FE420 │ │ │ │ │ -297F7BC5147F3B2FA98450D2F8B07F7D229BC8BE06729920CFEC22556740E1CB │ │ │ │ │ -3DE09AC763C6D4A20AD1599C368FABD07BC35C16683F2A0311A88983415A9140 │ │ │ │ │ -2EFC4BC1B10DCAD4B2B8A28510E5BD39D6616D2B9B079ED3CF9C315B7DEC29D9 │ │ │ │ │ -251DFD0194B34EC175964C23383F23FFB2E41B698C405815D65EAFF9E9DD1DDE │ │ │ │ │ -30F77924656C288B8DDB2E5B0E7B1FAA66791DE3848EE6DE63AD0E945E49C6C7 │ │ │ │ │ -9FCA16E01F027F9EF7ACB55F02F5B0136480802F789F6FE14B430879979BA04D │ │ │ │ │ -F481AD4CF47E6847936F377FB04869F9A80E597301BFCAB718D8764094673876 │ │ │ │ │ -BCEF8FA3701608C84B3A0399A11D2E6AD922CCB7D72AF9EBFB30F4648A37A123 │ │ │ │ │ -CB8FB14BDC351692CF0CCAA5CA9383C2B23BAAA38700327EB743FBBE9EE04041 │ │ │ │ │ -13F5CEF4B3881BBC051C33369A82B3505B1CFD7D91AEF2E43EA728EE48E2D854 │ │ │ │ │ -5A7E516998ACDD4FD835FA901C5A21810A56D51FE919B2E58408EEB4DAEB487F │ │ │ │ │ -BA7F1D292CED902DF3533566D96DAD918319EA650D4FC7D9E0170CDE620F755B │ │ │ │ │ -0E7AE02D9B118481B26F5FF7060FBCFA2A682B6826F00679BCDA68794C05286D │ │ │ │ │ -B616DD08372ACDE0AE6E7EF116F0D36F16241ED4F0E8CCD80377792E3BB1343C │ │ │ │ │ -EEB22CC77738F7CBCBA32CF6C3979F6DF7ED81A89AE8928FD7CC550F2730BA88 │ │ │ │ │ -1B51CEDC63F4C47F261AFCAB7AC3CED20B15C97E714A460A1A3B16436B4A5149 │ │ │ │ │ -8F91DA4BE0B9B648534CE5F442117036B602DC91E2852BEA62F55803B833FDF7 │ │ │ │ │ -9F901AB87489E703DDEED1091A79DC73B4440BBBF2C7592B441187C4A3562204 │ │ │ │ │ -859F08BA3CE2A8ECCD5AAD13C50FB806FE79A388F1822C5608837CBDE526A044 │ │ │ │ │ -12E5CDE4A066932AF2ACA7E8FC6BA4603640944718752975B7DA6E906BE1EA01 │ │ │ │ │ -46736FF5D1AA1CC682D011B6039CF98C35E36D4F14ABC84A38B7203CC9A17756 │ │ │ │ │ -B2B0345276798F1A88A54AD9FEA0853C6DDF28525ED4F0B7380D14147012C2A4 │ │ │ │ │ -5B02888C986C76497EA4C729B0B82EE73C1A1A8E8F1ABF401E341028E9C15AF9 │ │ │ │ │ -354706D8DC07492921AD0932A46736C0D1B066D00287DACCC068FAE6A796EC89 │ │ │ │ │ -54D1D73AA88F3A5912BA9D3FF70065C8D0D0DAD1CD846501E06694374EFDBEC6 │ │ │ │ │ -931F644D5E8494AFC742423AD9A487658E310E0682BE19B8475F4D450487A686 │ │ │ │ │ -2B94494DEAF1C0F59DE82F2CE64BEE5E97F942FCFA1187ED6AA5761E951A7BF7 │ │ │ │ │ -9F842E34A4656C58B35A9E99F7E6762CEE11E0CF59FFD75D7382C5EE6DBB43F1 │ │ │ │ │ -ED219071D3FB22DBA90977723BB467C0490D042684C0724F40DCA3E0D8F1F4E7 │ │ │ │ │ -3C4F9A67BE6528185EAAFDD415224F7E256A4EA00111C17C746CBD80BF569A27 │ │ │ │ │ -D81195D7F79C1CCEEF30ED00D49F48B63E4B8D7953403A3710AE953CC1B76F0F │ │ │ │ │ -F523D777A6A186F262A602543F94AF7471DBE25FEBC207DB42DAF7DC9A5781FB │ │ │ │ │ -2131AD42869D966A734AAE3466DF1CE9D1BCFA72409A558C0AEE6A8E2FEAACB6 │ │ │ │ │ -2CDABCC28433034848ACF9FB4465D272E4AFC48572647F05F41C7A293CC5B595 │ │ │ │ │ -AD31555FB708A72962707348BC7033A8224BD42EB9D75FDF3AE9E6A9C960B330 │ │ │ │ │ -5137DF59F8E2E0D535F41524ABDF070745A4FA25CD8DFD38A5FF30A95452B875 │ │ │ │ │ -6569E8812631300D79A942C563AF174AC05C9F2D09D7D5D3C605F5A6B7F21B34 │ │ │ │ │ -18F270A993B050838E701A17938D1C156CBA7CA4BAC7C562CE9D7B758EAB25A9 │ │ │ │ │ -A6DFFC71F65561341847B776DF34061CE3D439B87B857626987EC93B3B95B8E8 │ │ │ │ │ -76FFB16B263675333FA10414FEED707FF7C366BF8B20FF8577CDEBEBCF1A5BCE │ │ │ │ │ -258C09C90175A5278B7C444A623E3331FDE5A6387B3E389540ED1E7E883958F3 │ │ │ │ │ -3A5C89CCD62256FA069DF4A5090FB17C1F1757C9209DAFB8A1F47182BF3E88D9 │ │ │ │ │ -0B5376B59EE165A761902759C8ED7F5AD301E7EB8B49CC09AF921DB45B7F8002 │ │ │ │ │ -AB32E73AAE53942DE0F9175D8446017006C9C0B93EF39C13B7A879F2F6DDFF16 │ │ │ │ │ -204BB24F976847CF006FD29332FCCB255B5116F7077A44F7066C39C81DC4BAD2 │ │ │ │ │ -40DB2753626C0102E5D047522ABC38EA294A699B8DFD9CA0A7980561A1062E90 │ │ │ │ │ -AB11EE286A9C238D9F721D9980D0A1828C2814972622D948CEE8C812C19A9A03 │ │ │ │ │ -608ED0AC138A436FFBF8BE3D1E66C87793416AF38ED9BC5424568A175FBDAA9E │ │ │ │ │ -D6FC11A7021693819B051562B5A59F32629E2D6019D69DD329BE1894A2B295E1 │ │ │ │ │ -1DCE9683B29AE126C56F26E5C595BF1A8249BDE231DBE8B066F7F62EF149B975 │ │ │ │ │ -A863969A4690504A5EA064721DA909B8157C0B39FBF8228D95CB655E406161E1 │ │ │ │ │ -148610FAEED7C5509880223C06A66DA19E10F94DC2DB481B26 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004FD597ED │ │ │ │ │ +EFDBC64ABD9B79386FB2427D1A63522195B1239C09F8CB3F8BD7A245A6DD82E3 │ │ │ │ │ +260C3889587626DFC5F7978E55F5524ABD6A3319CDD3D3F40D040044D51DA4E1 │ │ │ │ │ +6797EEAC7AA07C77EC6DB0E6E182B545A8BEF63B14F3FC07BAC09E7CD5C17ED6 │ │ │ │ │ +10080704B0DA4E9BA12F968DF8A58458D17E9A5B1F14A83DC51F5B161ADEE1CC │ │ │ │ │ +0183D82ED92C6FC7203C289949EDF0284D9893029FF5408E421324625F17C3E5 │ │ │ │ │ +2437C8F75A9D68EE1AF9174FEA6FC6BF793C7D2E497EA90396CF1A645E283B69 │ │ │ │ │ +8425F47C323587DF91E1D596DCB1E3A787C955D9D965A5E3E26ADF58B62AD5F9 │ │ │ │ │ +0C9AC784DE479780606354111E3202F215650DBBE1063A46F3C10B9EBC974DDA │ │ │ │ │ +A1A28DBBD43E9E5BFF000B12C787D0427928078F8EC5FE90DED97E6C129E8DEA │ │ │ │ │ +51F66504DB83764E52B0BA68DF7BE684C8959CB1D3345CC48221A9A4683306C0 │ │ │ │ │ +62B634E0A539383F0C7A788D9711EFF414869CCC5659D78CEBE009BF2463F56A │ │ │ │ │ +0ADC993348FE96DF7C250E13ED6504AACFE8F8DCA2D2048D9D8CFA127D363EAC │ │ │ │ │ +1F0630E2D1B621E6954038195D965B91FD974FA3F1B8B29D200A16CEBA645E2F │ │ │ │ │ +CEEE6FD49FBBD49E38AE67D4BFFCE91F1FC422554EC4409C5FA18D40FCD6D9B3 │ │ │ │ │ +2185ED1E0F98106D4339F086B05CA36E56EC22C60E2CE23F9C4CC403ACAD3F94 │ │ │ │ │ +4086B4DF6DFA0B7B4716417263E7B558535566AED2F6C2F9846A16D71A7930A7 │ │ │ │ │ +49232D3D16C4A01CF1A1998A06F40062ED329179A85668537C55D0BC24FC0010 │ │ │ │ │ +54DA83E2FC66B2A5D428E6A9BFC983253668C0ECE6CA36DBF97C4B7659D50842 │ │ │ │ │ +C65B36604840EEDA399B57E2DEFAC3E7FB031634CE33D04238F9854D2AAAF448 │ │ │ │ │ +34DA5F3BCCED3166FEEE82BB0BBA0A397CC2F95865CB52AABFF454D93B425809 │ │ │ │ │ +A26AC459F321FD23E2262FE816D06BAAECF32AAF167F84799AF80F9F88388D07 │ │ │ │ │ +0DB5FD57AFEE2850A8DFE977E6AE39CB3DC16DB1A163A583C86C6F775CE33521 │ │ │ │ │ +0081C0BBBAD6D30D26C66B28B38CEAC78FEA5FB3CC5853656B67C6D9D80EB30E │ │ │ │ │ +397558C9179AF5920F34DAB3F578DFCF0DBB137AED17D6325C23883E69EE4621 │ │ │ │ │ +34355A70C19EA68891E1CA937376901C85CDEE109F1665943E29A216DC00937A │ │ │ │ │ +B983A729A4654AD09187C0242D52FA4ADD0853EF4888864914D7D81C56578DD4 │ │ │ │ │ +3B51907032022E6E412D4F114675DEDCA8A9E85DC03A0B583FECD84432D15F70 │ │ │ │ │ +01F627BD6EC91F9FCFDA01BF40E1229B5F164309DBB641AD50970503DA2048C1 │ │ │ │ │ +DF8F36E8D252EE113F0B46677D9BAF376BAE18D74CFB0DBBD0C7E9D0A58BA3ED │ │ │ │ │ +1E5099CAE073EB5638617760AB57849893764EA9735173CD1EAB66884CEA7EE3 │ │ │ │ │ +8843327B2E145BD6FBB49102776B82BC511D109F8BE9E7E99DADABABEDC3CFD9 │ │ │ │ │ +393578FFD85907DFF2849E4CDE6FA4DEC7E1C150EBE4047FFB650F9548BE6D11 │ │ │ │ │ +0C51226A5436F18BF20A02E0F888F46B6AC3A8E8D927ECD3B5E095933AD3859F │ │ │ │ │ +5167C41D832EFCC4093BD2AFA7101AB430E57DAFC3590F05D3CBABB32BC203A0 │ │ │ │ │ +467B23BDB830487C9AA5B85BAC065F8538871B4180F8C4732E637DB090CFDE5A │ │ │ │ │ +3F4F2B5BFAFB848BAAD1A17CB076B34159601639BD93ECAB1214ACABF2C67FE2 │ │ │ │ │ +0658AA20B08681070FF56F1CC52144ABA8765D6E124D1CEA9BBA102808CE1BB2 │ │ │ │ │ +5EDF46BC7BBC2A5B49EE6EC28F5797A3969B057B21FCDBBD0E60848FF14F6CA3 │ │ │ │ │ +70F3060BDBB019B22722C99C7691760F013763B7FBEB62830AE215F195BF9F01 │ │ │ │ │ +21BF4377397E89574CFA47D123AA506A570A77BA6EB4AAB0B237A26154880293 │ │ │ │ │ +3952F832F72ECCB024F02385E5EE8566B165904B594E30D0700D033C6B429F6F │ │ │ │ │ +2A20BC774F442BC9CE29FCC81807C2768A8BC927A215558FBF36DC53F477F04A │ │ │ │ │ +41DA66E1A85B659EB761230977EAD7DA0150513D3323B143D4E2A61BCF03334C │ │ │ │ │ +C0EE3E1B06CFAF58ECC910BD81F0352B75FF1594D6A4EF504232D442174BE766 │ │ │ │ │ +0F8E703F97E21D25D4CD097549C31FEE7017C3916EFB02E7BF869172889827B6 │ │ │ │ │ +A48465EB7612BA3DBC6A9436C7167F149A25CE9F8E3F4F8DE3B5ADF6C0986CB3 │ │ │ │ │ +3A7E2DAB44AB489796461536F5F713017F2620AD03295CAE9285F08974AE0DF8 │ │ │ │ │ +D739260929619B509491AFF09C4CAEF9E65C2CA69470C907ECBF3AB6C955360D │ │ │ │ │ +05ABAC306DB51122A1ADC7EF0DD70FA299A45C505A83727D4598C86319EE9C06 │ │ │ │ │ +7218EFD4F40388354BCF1B79593D5AD221DF955D081F99F880E5CED07321AB3E │ │ │ │ │ +A2FCB8B05D54807D8E15E65B78DCE12989B9276350080C905DBB74CE9AA7E246 │ │ │ │ │ +5D3BAED292C562D4CF54617FCC6654496C7996D1ECE1EFF9258716AB763A12E6 │ │ │ │ │ +316E4C5587351A6DB011F58F6A15BC28BEBDC3836E0CB892807FEC228DC1B380 │ │ │ │ │ +92F7F42279F08D60F13D6A4CB425543C3644461461CBF6F27B6603F613D1FCF8 │ │ │ │ │ +A8410AD82D1498166AEB35D4125D7E2ADEAAB18BC04806AED53513F066E5F154 │ │ │ │ │ +3E13E863C50B9814EE2FB978D0D24A03FAF650CB6E2CADF1E6BE6BAF699AFC03 │ │ │ │ │ +E1A0EEB207B3B9A689ED5B373FE86686AD230BE6C18E1673DDA50E224B343EC5 │ │ │ │ │ +903BA0C8041C13607B50D5852AC7970B15C244E6EBA7D54B3086312CF04761D6 │ │ │ │ │ +7D3D75D51F20C371494AB81AB4A9838B20B483B851D01FEF41EA5C0B4755B964 │ │ │ │ │ +EB6E9B178051C556A010994EB88EAE641F4C1A0D7E0F98D5267E18AEF1AEA7E7 │ │ │ │ │ +9030A97DF89AFF621981C33B645FFB5F3BB2065A7661D11B26E0999561DF3580 │ │ │ │ │ +4A76A05DFAF8085525F8D5C01936F03C32E26E72569371C9EA3B8916F9DFC5FC │ │ │ │ │ +6A6F25A0FFDB981BA8B896393D75774D50828E6ADE903C45406E354703A4BC56 │ │ │ │ │ +2C49A47FEAC970DC433E3050C49F7FB945A9705BD8852D2D65D935F244D3B423 │ │ │ │ │ +EFAB84AAAAB8FBAFF50AFF372A533BCCEB5FC273DBADCF715776DF02A5DCBA9A │ │ │ │ │ +FBF265FAB4745D6475B33611EEE1EA95E7584E0BEEC7CA789AA69C8D03D6F8C0 │ │ │ │ │ +5B6844E2B901ACA560C0433B053D134866E567425174E47173679AAD4486A2D3 │ │ │ │ │ +369C29E4DD2CD6ACA1BE80ED8FF0A9C58A616D26E758BD8E6342624EC83FB590 │ │ │ │ │ +BD354B52B60BB054FAFE9AC63E1564FBC721FE8F276B0413EC89A2C85E5ED1B0 │ │ │ │ │ +3A9D83BE62A4488ADE7CE69971A8AF7E5862A4290EEF6F00D4171C7FFB360065 │ │ │ │ │ +92E72BF02BE27161AE0BB5516572A0BDC4F316FFB24B38484AC8D1FD4CD86062 │ │ │ │ │ +A2B5D03CF28C3A679C039A6EFDD4C9DA7E463AD60234C9F6BBEE48D87DD94D85 │ │ │ │ │ +842F495F3E25723718682CE4D6224CBBF4456F03077EDF736D65B9DDAB09470E │ │ │ │ │ +17742D82011FFA96BFE86B96E858F9352FCD20C3D46B77DBDEE54336EC2249EA │ │ │ │ │ +211F6DFFF5BEA1E5192BE1BAC0BDD5EDDB3D56C6F7C6E543561A0B39E5C1B04F │ │ │ │ │ +C683A7516B6E69D682455386DDA709929D621FA434D403E895AA0A77DBE1DFD2 │ │ │ │ │ +0D060DF82378880147ED97C6E8149686FA048710B113760AC1DA4512FF8556B3 │ │ │ │ │ +16E2447485B8C3CD58D0469C4A45FFB4CB0322BB284C02 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -5637,20 +5642,20 @@ │ │ │ │ │ FFFE000FFFFFFC0007FFFFF80003FFFFF00000FFFFC000003FFF0000000FFC000022227B │ │ │ │ │ A72D>136 D E │ │ │ │ │ /Fc load 0 Fc currentfont 91.25 scalefont put/FMat X/FBB │ │ │ │ │ X/IEn X │ │ │ │ │ %EndDVIPSBitmapFont │ │ │ │ │ /Fd 134[71 2[71 75 52 53 55 1[75 67 75 112 2[41 37 75 │ │ │ │ │ 67 41 61 75 60 75 65 13[75 2[92 11[103 16[67 67 67 2[37 │ │ │ │ │ -46[{}27 119.552 /CMBX12 rf /Fe 134[48 3[51 2[36 3[51 │ │ │ │ │ -12[45 22[47 15[25 3[45 1[45 1[45 45 45 3[25 44[{}13 90.9091 │ │ │ │ │ -/CMSL10 rf /Ff 141[39 1[39 7[39 6[39 10[39 9[39 2[39 │ │ │ │ │ -1[39 1[39 69[{}9 74.7198 /CMTT9 rf /Fg 135[41 1[41 43 │ │ │ │ │ -30 30 30 41 43 38 43 64 21 1[23 21 43 38 23 34 1[34 43 │ │ │ │ │ -38 12[55 37[21 1[21 44[{}24 74.7198 /CMR9 rf /Fh 206[30 │ │ │ │ │ +46[{}27 119.552 /CMBX12 rf /Fe 134[48 3[51 2[36 12[40 │ │ │ │ │ +2[51 45 26[59 11[25 1[45 2[45 2[45 45 45 3[25 44[{}14 │ │ │ │ │ +90.9091 /CMSL10 rf /Ff 141[39 1[39 7[39 6[39 10[39 9[39 │ │ │ │ │ +2[39 1[39 1[39 69[{}9 74.7198 /CMTT9 rf /Fg 135[41 1[41 │ │ │ │ │ +43 30 30 30 41 43 38 43 64 21 1[23 21 43 38 23 34 1[34 │ │ │ │ │ +43 38 12[55 37[21 1[21 44[{}24 74.7198 /CMR9 rf /Fh 206[30 │ │ │ │ │ 49[{}1 49.8132 /CMR6 rf /Fi 145[45 3[25 50[0 4[61 16[91 │ │ │ │ │ 6[71 4[71 71 17[71 25 1[{}10 90.9091 /CMSY10 rf /Fj 136[65 │ │ │ │ │ 44 52 30[53 2[56 3[69 7[71 1[67 6[71 1[71 25 28[54 30[{}12 │ │ │ │ │ 90.9091 /CMMI10 rf /Fk 137[55 58 41 4[52 58 23[79 1[73 │ │ │ │ │ 58 3[79 1[99 3[40 82 82 1[69 1[76 1[79 1[49 63[{}17 90.9091 │ │ │ │ │ /CMBX10 rf /Fl 134[44 3[49 30 37 38 1[46 46 51 74 23 │ │ │ │ │ 42 28 28 46 42 28 42 46 42 42 46 12[65 1[66 4[82 6[59 │ │ │ │ │ @@ -5766,34 +5771,34 @@ │ │ │ │ │ b(=)d Fj(w)r Fo(\()p Fk(u)p Fo(\))c Fi(\001)g Fj(w)r │ │ │ │ │ Fo(\()p Fk(v)q Fo(\))p 0 5322 1560 4 v 104 5375 a Fh(1)138 │ │ │ │ │ 5407 y Fg(The)26 b Ff(EGraph)h Fg(ob)t(ject)g(represen)n(ts)e(a)h │ │ │ │ │ (graph)g(of)h(the)e(matrix,)h(but)f(stores)h(a)g(list)h(of)f(co)n(v)n │ │ │ │ │ (ering)g(cliques)g(in)g(an)g Ff(IVL)g Fg(ob)t(ject.)1927 │ │ │ │ │ 5656 y Fo(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fo(2)p 136 100 1106 4 v │ │ │ │ │ -1288 w Fn(Graph)29 b Fe(:)41 b Fl(DRAFT)30 b Fe(Jan)m(uary)g(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ -b(space)g(and)f Fj(O)s Fo(\()p Fi(j)p Fj(E)5 b Fi(j)p │ │ │ │ │ -Fo(\))38 b(time.)61 b(There)36 b(is)h(a)g(metho)s(d)f(to)h(compress)g │ │ │ │ │ -(a)g(graph)f(\(i.e.,)k(giv)m(en)e Fj(G)p Fo(\()p Fj(V)5 │ │ │ │ │ -b(;)15 b(E)5 b Fo(\))39 b(and)0 1110 y(an)32 b(arbitrary)h │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fo(2)p 136 100 1087 4 v │ │ │ │ │ +1269 w Fn(Graph)29 b Fe(:)41 b Fl(DRAFT)30 b Fe(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2813 100 V 0 399 a Fo(and)36 │ │ │ │ │ +b(it)i(is)f(the)g(smallest)h(graph)e(with)h(this)g(prop)s(ert)m(y)-8 │ │ │ │ │ +b(.)60 b(The)36 b(compression)h(is)g Fl(loss-less)p Fo(,)j(for)d(giv)m │ │ │ │ │ +(en)h Fk(G)p Fo(\()p Fk(V)q Fj(;)15 b Fk(E)p Fo(\))0 │ │ │ │ │ +511 y(and)30 b Fj(\036)p Fo(,)i(w)m(e)f(can)g(reconstruct)h(the)f(unit) │ │ │ │ │ +f(w)m(eigh)m(t)j(graph)d Fj(G)p Fo(\()p Fj(V)5 b(;)15 │ │ │ │ │ +b(E)5 b Fo(\).)44 b(In)31 b(e\013ect,)h(w)m(e)g(can)f(w)m(ork)g(with)g │ │ │ │ │ +(the)g(natural)0 624 y(compressed)j(graph)g(to)i(\014nd)d(separators)i │ │ │ │ │ +(and)f(orderings)g(and)g(map)h(bac)m(k)g(to)g(the)g(unit)f(w)m(eigh)m │ │ │ │ │ +(t)i(graph.)53 b(The)0 737 y(sa)m(vings)31 b(in)f(time)h(and)f(space)h │ │ │ │ │ +(can)g(b)s(e)e(considerable.)141 884 y(The)e Fn(Graph)e │ │ │ │ │ +Fo(ob)5 b(ject)28 b(has)e(a)i(metho)s(d)e(to)i(\014nd)d(the)i │ │ │ │ │ +Fj(\036)g Fo(map)g(for)f(the)i(natural)f(compressed)f(graph;)i(it)f │ │ │ │ │ +(requires)0 997 y Fj(O)s Fo(\()p Fi(j)p Fj(V)21 b Fi(j)p │ │ │ │ │ +Fo(\))37 b(space)g(and)f Fj(O)s Fo(\()p Fi(j)p Fj(E)5 │ │ │ │ │ +b Fi(j)p Fo(\))38 b(time.)61 b(There)36 b(is)h(a)g(metho)s(d)f(to)h │ │ │ │ │ +(compress)g(a)g(graph)f(\(i.e.,)k(giv)m(en)e Fj(G)p Fo(\()p │ │ │ │ │ +Fj(V)5 b(;)15 b(E)5 b Fo(\))39 b(and)0 1110 y(an)32 b(arbitrary)h │ │ │ │ │ Fj(\036)p Fo(,)g(construct)g Fk(G)p Fo(\()p Fk(V)q Fj(;)15 │ │ │ │ │ b Fk(E)p Fo(\)\))34 b(and)e(a)h(metho)s(d)f(to)h(expand)f(a)h(graph)f │ │ │ │ │ (\(i.e.,)j(giv)m(en)e Fk(G)p Fo(\()p Fk(V)q Fj(;)15 b │ │ │ │ │ Fk(E)p Fo(\))34 b(and)e(an)0 1223 y(arbitrary)e Fj(\036)p │ │ │ │ │ Fo(,)h(construct)g Fj(G)p Fo(\()p Fj(V)5 b(;)15 b(E)5 │ │ │ │ │ b Fo(\)\).)141 1369 y(There)28 b(are)h(sev)m(eral)h(utilit)m(y)g(metho) │ │ │ │ │ s(ds)d(to)j(return)d(information)i(ab)s(out)f(the)h(memory)f(in)g(use)g │ │ │ │ │ @@ -5832,17 +5837,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 1106 4 v 1288 100 a Fn(Graph)29 │ │ │ │ │ -b Fe(:)40 b Fl(DRAFT)121 b Fe(Jan)m(uary)30 b(16,)i(2024)p │ │ │ │ │ -2747 100 V 1106 w Fo(3)0 399 y Fa(1.2.1)112 b(Basic)38 │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1087 4 v 1269 100 a Fn(Graph)29 │ │ │ │ │ +b Fe(:)40 b Fl(DRAFT)121 b Fe(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2766 100 V 1087 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 │ │ │ │ │ @@ -5909,32 +5914,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 1106 4 v │ │ │ │ │ -1288 w Fn(Graph)29 b Fe(:)41 b Fl(DRAFT)30 b Fe(Jan)m(uary)g(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fo(4)p 136 100 1087 4 v │ │ │ │ │ +1269 w Fn(Graph)29 b Fe(:)41 b Fl(DRAFT)30 b Fe(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2813 100 V 111 399 a Fo(2.)46 │ │ │ │ │ +b Fn(void)h(Graph_init2)e(\()i(Graph)f(*graph,)g(int)h(type,)g(int)f │ │ │ │ │ +(nvtx,)h(int)g(nvbnd,)f(int)h(nedges,)466 511 y(int)g(totvwght,)e(int)i │ │ │ │ │ +(totewght,)e(IVL)i(*adjIVL,)f(int)h(*vwghts,)e(IVL)i(*ewghtIVL\))227 │ │ │ │ │ +665 y Fo(This)41 b(metho)s(d)f(is)h(used)f(b)m(y)h(the)h(IO)e(read)h │ │ │ │ │ +(metho)s(ds.)72 b(When)41 b(a)h Fn(Graph)d Fo(ob)5 b(ject)42 │ │ │ │ │ +b(is)g(read)f(from)f(a)i(\014le,)227 778 y(the)35 b Fn(IVL)e │ │ │ │ │ +Fo(ob)5 b(ject\(s\))35 b(m)m(ust)f(b)s(e)g(initialized)i(and)d(then)h │ │ │ │ │ +(read)g(in)g(from)f(the)i(\014le.)52 b(Therefore,)35 │ │ │ │ │ +b(w)m(e)f(need)g(an)227 891 y(initialization)d(metho)s(d)26 │ │ │ │ │ +b(that)i(allo)m(ws)h(us)e(to)h(set)g(p)s(oin)m(ters)f(to)h(the)g │ │ │ │ │ +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 │ │ │ │ │ @@ -6000,17 +6005,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 1106 4 v 1288 100 a Fn(Graph)29 │ │ │ │ │ -b Fe(:)40 b Fl(DRAFT)121 b Fe(Jan)m(uary)30 b(16,)i(2024)p │ │ │ │ │ -2747 100 V 1106 w Fo(5)227 399 y Fl(Err)-5 b(or)33 b(che)-5 │ │ │ │ │ +TeXDict begin 5 4 bop 91 100 1087 4 v 1269 100 a Fn(Graph)29 │ │ │ │ │ +b Fe(:)40 b Fl(DRAFT)121 b Fe(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2766 100 V 1087 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 │ │ │ │ │ @@ -6070,31 +6075,31 @@ │ │ │ │ │ 5130 y Fo(This)30 b(metho)s(d)g(returns)f(the)h(w)m(eigh)m(t)i(of)f │ │ │ │ │ (adj\()p Fn(v)p Fo(\).)227 5294 y Fl(Err)-5 b(or)39 b(che)-5 │ │ │ │ │ b(cking:)50 b Fo(If)35 b Fn(graph)f Fo(is)i Fn(NULL)p │ │ │ │ │ Fo(,)e(or)i Fn(v)f Fo(is)h(out)f(of)h(range,)h(an)f(error)f(message)h │ │ │ │ │ (is)g(prin)m(ted)f(and)g(the)227 5407 y(program)30 b(exits.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 6 6 │ │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fo(6)p 136 100 1106 4 v │ │ │ │ │ -1288 w Fn(Graph)29 b Fe(:)41 b Fl(DRAFT)30 b Fe(Jan)m(uary)g(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ -Fo(or)h Fn(puadj)f Fo(is)i Fn(NULL)p Fo(,)e(an)227 917 │ │ │ │ │ -y(error)j(message)i(is)e(prin)m(ted)g(and)g(the)g(program)h(exits.)111 │ │ │ │ │ -1098 y(4.)46 b Fn(int)h(Graph_adjAndEweights)42 b(\()48 │ │ │ │ │ -b(Graph)e(*graph,)g(int)h(u,)g(int)g(*pusize,)1516 1210 │ │ │ │ │ -y(int)g(**puadj,)e(int)i(**puewghts\))e(;)227 1357 y │ │ │ │ │ -Fo(This)27 b(metho)s(d)g(\014lls)g Fn(*psize)f Fo(with)i(the)f(size)i │ │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fo(6)p 136 100 1087 4 v │ │ │ │ │ +1269 w Fn(Graph)29 b Fe(:)41 b Fl(DRAFT)30 b Fe(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2813 100 V 111 399 a Fo(3.)46 │ │ │ │ │ +b Fn(int)h(Graph_adjAndSize)d(\()j(Graph)f(*graph,)g(int)h(u,)g(int)g │ │ │ │ │ +(*pusize,)f(int)h(**puadj\))e(;)227 545 y Fo(This)31 │ │ │ │ │ +b(metho)s(d)f(\014lls)h Fn(*pusize)f Fo(with)h(the)g(size)h(of)f(the)h │ │ │ │ │ +(adjacency)g(list)g(for)f Fn(u)g Fo(and)f Fn(*puadj)g │ │ │ │ │ +Fo(p)s(oin)m(ts)h(to)h(the)227 658 y(start)f(of)g(the)f(list)h(v)m │ │ │ │ │ +(ector.)227 804 y Fl(Err)-5 b(or)32 b(che)-5 b(cking:)40 │ │ │ │ │ +b Fo(If)28 b Fn(graph)f Fo(is)h Fn(NULL)p Fo(,)f(or)i(if)f │ │ │ │ │ +Fn(u)48 b(<)f(0)28 b Fo(or)h Fn(u)47 b(>=)g(nvtx)27 b │ │ │ │ │ +Fo(or)i(if)f Fn(pusize)f Fo(or)h Fn(puadj)f Fo(is)i Fn(NULL)p │ │ │ │ │ +Fo(,)e(an)227 917 y(error)j(message)i(is)e(prin)m(ted)g(and)g(the)g │ │ │ │ │ +(program)h(exits.)111 1098 y(4.)46 b Fn(int)h(Graph_adjAndEweights)42 │ │ │ │ │ +b(\()48 b(Graph)e(*graph,)g(int)h(u,)g(int)g(*pusize,)1516 │ │ │ │ │ +1210 y(int)g(**puadj,)e(int)i(**puewghts\))e(;)227 1357 │ │ │ │ │ +y Fo(This)27 b(metho)s(d)g(\014lls)g Fn(*psize)f Fo(with)i(the)f(size)i │ │ │ │ │ (of)e(the)h(adjacency)h(list,)g Fn(*puadj)c Fo(p)s(oin)m(ts)j(to)g(the) │ │ │ │ │ g(start)g(of)g(the)227 1470 y(list)j(v)m(ector)h(and)e │ │ │ │ │ Fn(*puewghts)e Fo(p)s(oin)m(ts)i(to)h(the)g(start)g(of)f(the)h(edge)g │ │ │ │ │ (w)m(eigh)m(ts)h(v)m(ector.)227 1616 y Fl(Err)-5 b(or)34 │ │ │ │ │ b(che)-5 b(cking:)40 b Fo(If)29 b Fn(graph)g Fo(is)g │ │ │ │ │ Fn(NULL)p Fo(,)g(or)h(if)g Fn(u)48 b(<)f(0)30 b Fo(or)f │ │ │ │ │ Fn(u)48 b(>=)f(nvtx)29 b Fo(or)h(if)f Fn(pusize)p Fo(,)g │ │ │ │ │ @@ -6166,17 +6171,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 1106 4 v 1288 100 a Fn(Graph)29 │ │ │ │ │ -b Fe(:)40 b Fl(DRAFT)121 b Fe(Jan)m(uary)30 b(16,)i(2024)p │ │ │ │ │ -2747 100 V 1106 w Fo(7)227 399 y Fl(Err)-5 b(or)32 b(che)-5 │ │ │ │ │ +TeXDict begin 7 6 bop 91 100 1087 4 v 1269 100 a Fn(Graph)29 │ │ │ │ │ +b Fe(:)40 b Fl(DRAFT)121 b Fe(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2766 100 V 1087 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 │ │ │ │ │ @@ -6258,19 +6263,19 @@ │ │ │ │ │ b Fn(1)f Fo(is)g(returned.)40 b(If)30 b(an)g(IO)g(error)g(is)g(encoun)m │ │ │ │ │ (tered)h(from)f Fn(fprintf)p Fo(,)f(zero)i(is)f(returned.)227 │ │ │ │ │ 5407 y Fl(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fo(If)30 │ │ │ │ │ b Fn(graph)f Fo(or)i Fn(fp)e Fo(are)i Fn(NULL)e Fo(an)i(error)f │ │ │ │ │ (message)h(is)g(prin)m(ted)e(and)h(zero)h(is)g(returned.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 8 8 │ │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fo(8)p 136 100 1106 4 v │ │ │ │ │ -1288 w Fn(Graph)29 b Fe(:)41 b Fl(DRAFT)30 b Fe(Jan)m(uary)g(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fo(8)p 136 100 1087 4 v │ │ │ │ │ +1269 w Fn(Graph)29 b Fe(:)41 b Fl(DRAFT)30 b Fe(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2813 100 V 111 399 a Fo(6.)46 │ │ │ │ │ +b Fn(int)h(Graph_writeToBinaryFile)42 b(\()47 b(Graph)f(*graph,)g(FILE) │ │ │ │ │ +h(*fp)g(\))g(;)227 554 y Fo(This)27 b(metho)s(d)g(writes)h(a)g │ │ │ │ │ Fn(Graph)e Fo(ob)5 b(ject)29 b(to)f(a)g(binary)f(\014le.)40 │ │ │ │ │ b(If)27 b(there)h(are)g(no)g(errors)f(in)g(writing)h(the)g(data,)227 │ │ │ │ │ 667 y(the)j(v)-5 b(alue)31 b Fn(1)f Fo(is)g(returned.)40 │ │ │ │ │ b(If)30 b(an)g(IO)g(error)g(is)g(encoun)m(tered)h(from)f │ │ │ │ │ Fn(fwrite)p Fo(,)f(zero)i(is)f(returned.)227 822 y Fl(Err)-5 │ │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fo(If)30 b Fn(graph)f │ │ │ │ │ Fo(or)i Fn(fp)e Fo(are)i Fn(NULL)e Fo(an)i(error)f(message)h(is)g(prin) │ │ │ │ │ @@ -6332,17 +6337,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 1106 4 v 1288 100 a Fn(Graph)29 │ │ │ │ │ -b Fe(:)40 b Fl(DRAFT)121 b Fe(Jan)m(uary)30 b(16,)i(2024)p │ │ │ │ │ -2747 100 V 1106 w Fo(9)337 399 y Fc(\210)45 b Fo(The)28 │ │ │ │ │ +TeXDict begin 9 8 bop 91 100 1087 4 v 1269 100 a Fn(Graph)29 │ │ │ │ │ +b Fe(:)40 b Fl(DRAFT)121 b Fe(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2766 100 V 1087 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 │ │ │ │ │ @@ -6425,50 +6430,51 @@ │ │ │ │ │ g(graph)f(to)i(a)f(formatted)h(\014le)f(\(if)427 5101 │ │ │ │ │ y Fn(outGraphFile)24 b Fo(is)j(of)h(the)f(form)g Fn(*.graphf)p │ │ │ │ │ Fo(\),)f(or)h(a)h(binary)f(\014le)g(\(if)g Fn(outGraphFile)d │ │ │ │ │ Fo(is)k(of)f(the)g(form)427 5214 y Fn(*.graphb)p Fo(\).)111 │ │ │ │ │ 5407 y(4.)46 b Fn(mkGridGraph)f(msglvl)h(msgFile)g(stencil)g(n1)h(n2)g │ │ │ │ │ (n3)g(outFile)p eop end │ │ │ │ │ %%Page: 10 10 │ │ │ │ │ -TeXDict begin 10 9 bop 0 100 a Fo(10)p 182 100 1084 4 │ │ │ │ │ -v 1266 w Fn(Graph)29 b Fe(:)40 b Fl(DRAFT)31 b Fe(Jan)m(uary)f(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ -b Fn(msgFile)e Fo(parameter)j(determines)f(the)h(message)g(\014le)f(|)h │ │ │ │ │ -(if)f Fn(msgFile)e Fo(is)i Fn(stdout)p Fo(,)g(then)g(the)427 │ │ │ │ │ -1082 y(message)27 b(\014le)f(is)g Fl(stdout)p Fo(,)i(otherwise)e(a)h │ │ │ │ │ -(\014le)f(is)f(op)s(ened)g(with)h Fl(app)-5 b(end)28 │ │ │ │ │ -b Fo(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 1195 │ │ │ │ │ -y(data.)337 1345 y Fc(\210)45 b Fo(V)-8 b(alid)35 b Fn(stencil)d │ │ │ │ │ -Fo(v)-5 b(alues)34 b(are)g Fn(5)f Fo(for)g(a)h(2-D)h(5-p)s(oin)m(t)f │ │ │ │ │ -(op)s(erator,)h Fn(7)f Fo(for)f(a)h(3-D)h(7-p)s(oin)m(t)f(op)s(erator,) │ │ │ │ │ -h Fn(9)427 1458 y Fo(for)i(a)h(2-D)h(9-p)s(oin)m(t)f(op)s(erator,)i │ │ │ │ │ -Fn(13)d Fo(for)g(a)h(2-D)g(13-p)s(oin)m(t)h(op)s(erator)f(and)e │ │ │ │ │ -Fn(27)h Fo(for)g(a)h(3-D)h(27-p)s(oin)m(t)427 1571 y(op)s(erator.)337 │ │ │ │ │ -1721 y Fc(\210)45 b Fn(n1)30 b Fo(is)g(the)h(n)m(um)m(b)s(er)e(of)i(p)s │ │ │ │ │ -(oin)m(ts)f(in)g(the)g(\014rst)g(direction.)337 1871 │ │ │ │ │ -y Fc(\210)45 b Fn(n2)30 b Fo(is)g(the)h(n)m(um)m(b)s(er)e(of)i(p)s(oin) │ │ │ │ │ -m(ts)f(in)g(the)g(second)h(direction.)337 2021 y Fc(\210)45 │ │ │ │ │ -b Fn(n3)30 b Fo(is)g(the)h(n)m(um)m(b)s(er)e(of)i(p)s(oin)m(ts)f(in)g │ │ │ │ │ -(the)g(third)g(direction,)h(ignored)g(for)f Fn(stencil)e │ │ │ │ │ -Fo(=)i Fn(5)p Fo(,)h Fn(9)f Fo(and)f Fn(13)p Fo(.)337 │ │ │ │ │ -2171 y Fc(\210)45 b Fo(The)g Fn(Graph)g Fo(ob)5 b(ject)46 │ │ │ │ │ -b(is)g(written)f(to)i(\014le)e Fn(outFile)p Fo(.)85 b(It)45 │ │ │ │ │ -b(m)m(ust)h(b)s(e)f(of)h(the)f(form)h Fn(*.graphf)d Fo(or)427 │ │ │ │ │ -2283 y Fn(*.graphb)p Fo(.)36 b(The)23 b Fn(Graph)e Fo(ob)5 │ │ │ │ │ -b(ject)24 b(is)f(written)g(to)g(the)g(\014le)g(via)h(the)f │ │ │ │ │ -Fn(Graph)p 2904 2283 29 4 v 33 w(writeToFile\(\))c Fo(metho)s(d.)111 │ │ │ │ │ -2479 y(5.)46 b Fn(testIO)g(msglvl)g(msgFile)g(inFile)g(outFile)227 │ │ │ │ │ -2633 y Fo(This)21 b(driv)m(er)g(program)h(reads)f(in)g(a)h │ │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fo(10)p 182 100 1065 4 │ │ │ │ │ +v 1247 w Fn(Graph)29 b Fe(:)40 b Fl(DRAFT)31 b Fe(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2836 100 V 227 399 a Fo(This)d(driv)m(er)h │ │ │ │ │ +(program)g(creates)h(a)f(Graph)g(ob)5 b(ject)29 b(for)g(a)g(\014nite)g │ │ │ │ │ +(di\013erence)h(op)s(erator)f(on)g(a)g Fn(n1)17 b Fi(\002)g │ │ │ │ │ +Fn(n2)g Fi(\002)g Fn(n3)227 511 y Fo(regular)31 b(grid.)337 │ │ │ │ │ +707 y Fc(\210)45 b Fo(The)28 b Fn(msglvl)f Fo(parameter)i(determines)g │ │ │ │ │ +(the)g(amoun)m(t)g(of)f(output)h(|)f(taking)i Fn(msglvl)46 │ │ │ │ │ +b(>=)h(3)28 b Fo(means)427 820 y(that)j(all)h(ob)5 b(jects)31 │ │ │ │ │ +b(are)f(written)h(to)g(the)f(message)i(\014le.)337 969 │ │ │ │ │ +y Fc(\210)45 b Fo(The)33 b Fn(msgFile)e Fo(parameter)j(determines)f │ │ │ │ │ +(the)h(message)g(\014le)f(|)h(if)f Fn(msgFile)e Fo(is)i │ │ │ │ │ +Fn(stdout)p Fo(,)g(then)g(the)427 1082 y(message)27 b(\014le)f(is)g │ │ │ │ │ +Fl(stdout)p Fo(,)i(otherwise)e(a)h(\014le)f(is)f(op)s(ened)g(with)h │ │ │ │ │ +Fl(app)-5 b(end)28 b Fo(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 │ │ │ │ │ +1195 y(data.)337 1345 y Fc(\210)45 b Fo(V)-8 b(alid)35 │ │ │ │ │ +b Fn(stencil)d Fo(v)-5 b(alues)34 b(are)g Fn(5)f Fo(for)g(a)h(2-D)h │ │ │ │ │ +(5-p)s(oin)m(t)f(op)s(erator,)h Fn(7)f Fo(for)f(a)h(3-D)h(7-p)s(oin)m │ │ │ │ │ +(t)f(op)s(erator,)h Fn(9)427 1458 y Fo(for)i(a)h(2-D)h(9-p)s(oin)m(t)f │ │ │ │ │ +(op)s(erator,)i Fn(13)d Fo(for)g(a)h(2-D)g(13-p)s(oin)m(t)h(op)s │ │ │ │ │ +(erator)f(and)e Fn(27)h Fo(for)g(a)h(3-D)h(27-p)s(oin)m(t)427 │ │ │ │ │ +1571 y(op)s(erator.)337 1721 y Fc(\210)45 b Fn(n1)30 │ │ │ │ │ +b Fo(is)g(the)h(n)m(um)m(b)s(er)e(of)i(p)s(oin)m(ts)f(in)g(the)g │ │ │ │ │ +(\014rst)g(direction.)337 1871 y Fc(\210)45 b Fn(n2)30 │ │ │ │ │ +b Fo(is)g(the)h(n)m(um)m(b)s(er)e(of)i(p)s(oin)m(ts)f(in)g(the)g │ │ │ │ │ +(second)h(direction.)337 2021 y Fc(\210)45 b Fn(n3)30 │ │ │ │ │ +b Fo(is)g(the)h(n)m(um)m(b)s(er)e(of)i(p)s(oin)m(ts)f(in)g(the)g(third) │ │ │ │ │ +g(direction,)h(ignored)g(for)f Fn(stencil)e Fo(=)i Fn(5)p │ │ │ │ │ +Fo(,)h Fn(9)f Fo(and)f Fn(13)p Fo(.)337 2171 y Fc(\210)45 │ │ │ │ │ +b Fo(The)g Fn(Graph)g Fo(ob)5 b(ject)46 b(is)g(written)f(to)i(\014le)e │ │ │ │ │ +Fn(outFile)p Fo(.)85 b(It)45 b(m)m(ust)h(b)s(e)f(of)h(the)f(form)h │ │ │ │ │ +Fn(*.graphf)d Fo(or)427 2283 y Fn(*.graphb)p Fo(.)36 │ │ │ │ │ +b(The)23 b Fn(Graph)e Fo(ob)5 b(ject)24 b(is)f(written)g(to)g(the)g │ │ │ │ │ +(\014le)g(via)h(the)f Fn(Graph)p 2904 2283 29 4 v 33 │ │ │ │ │ +w(writeToFile\(\))c Fo(metho)s(d.)111 2479 y(5.)46 b │ │ │ │ │ +Fn(testIO)g(msglvl)g(msgFile)g(inFile)g(outFile)227 2633 │ │ │ │ │ +y Fo(This)21 b(driv)m(er)g(program)h(reads)f(in)g(a)h │ │ │ │ │ Fn(Graph)e Fo(ob)5 b(ject)22 b(from)f Fn(inFile)f Fo(and)h(writes)h │ │ │ │ │ (out)g(the)f(ob)5 b(ject)23 b(to)f Fn(outFile)337 2855 │ │ │ │ │ y Fc(\210)45 b Fo(The)28 b Fn(msglvl)f Fo(parameter)i(determines)g(the) │ │ │ │ │ g(amoun)m(t)g(of)f(output)h(|)f(taking)i Fn(msglvl)46 │ │ │ │ │ b(>=)h(3)28 b Fo(means)427 2968 y(the)j Fn(Graph)e Fo(ob)5 │ │ │ │ │ b(ject)31 b(is)f(written)h(to)g(the)g(message)g(\014le.)337 │ │ │ │ │ 3117 y Fc(\210)45 b Fo(The)33 b Fn(msgFile)e Fo(parameter)j(determines) │ │ │ │ │ @@ -6504,17 +6510,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 1084 4 v 1265 100 a Fn(Graph)29 │ │ │ │ │ -b Fe(:)41 b Fl(DRAFT)121 b Fe(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2724 100 V 1084 w Fo(11)337 399 y Fc(\210)45 b Fo(The)37 │ │ │ │ │ +TeXDict begin 11 10 bop 91 100 1065 4 v 1246 100 a Fn(Graph)29 │ │ │ │ │ +b Fe(:)40 b Fl(DRAFT)122 b Fe(F)-8 b(ebruary)30 b(18,)h(2025)p │ │ │ │ │ +2743 100 V 1065 w Fo(11)337 399 y Fc(\210)45 b Fo(The)37 │ │ │ │ │ b Fn(inFile)f Fo(parameter)i(is)g(the)g(input)e(\014le)i(for)f(the)h │ │ │ │ │ Fn(Graph)e Fo(ob)5 b(ject.)64 b(It)37 b(m)m(ust)h(b)s(e)f(of)h(the)f │ │ │ │ │ (form)427 511 y Fn(*.graphf)18 b Fo(or)j Fn(*.graphb)p │ │ │ │ │ Fo(.)35 b(The)19 b Fn(Graph)g Fo(ob)5 b(ject)21 b(is)g(read)f(from)g │ │ │ │ │ (the)g(\014le)h(via)f(the)h Fn(Graph)p 3368 511 29 4 │ │ │ │ │ v 33 w(readFromFile\(\))427 624 y Fo(metho)s(d.)111 1065 │ │ │ │ │ y(7.)46 b Fn(testWirebasket)e(msglvl)i(msgFile)g(inGraphFile)f │ │ │ │ │ @@ -6571,18 +6577,18 @@ │ │ │ │ │ Fo(15)29 b(grid.)40 b(They)27 b(sho)m(w)h(the)h(stages)227 │ │ │ │ │ 5294 y(for)36 b Fn(radius)46 b(=)i(1)36 b Fo(on)g(the)g(left)h(and)f │ │ │ │ │ Fn(radius)46 b(=)i(2)35 b Fo(on)i(the)f(righ)m(t.)59 │ │ │ │ │ b(The)36 b(domains)g(are)g(3)25 b Fi(\002)f Fo(3)36 b(subgrids)227 │ │ │ │ │ 5407 y(whose)30 b(v)m(ertices)i(ha)m(v)m(e)g(lab)s(els)f(equal)g(to)g │ │ │ │ │ (zero.)p eop end │ │ │ │ │ %%Page: 12 12 │ │ │ │ │ -TeXDict begin 12 11 bop 0 100 a Fo(12)p 182 100 1084 │ │ │ │ │ -4 v 1266 w Fn(Graph)29 b Fe(:)40 b Fl(DRAFT)31 b Fe(Jan)m(uary)f(16,)h │ │ │ │ │ -(2024)p 2817 100 V 429 1927 a @beginspecial 0 @llx 0 │ │ │ │ │ -@lly 600 @urx 600 @ury 1943 @rwi 1943 @rhi @setspecial │ │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fo(12)p 182 100 1065 │ │ │ │ │ +4 v 1247 w Fn(Graph)29 b Fe(:)40 b Fl(DRAFT)31 b Fe(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2836 100 V 429 1927 a @beginspecial │ │ │ │ │ +0 @llx 0 @lly 600 @urx 600 @ury 1943 @rwi 1943 @rhi @setspecial │ │ │ │ │ %%BeginDocument: ../../Graph/doc/rad1.eps │ │ │ │ │ %!PS-Adobe-2.0 EPSF-1.2 │ │ │ │ │ %%BoundingBox: 0.0 0.0 600.0 600.0 │ │ │ │ │ /radius 15 def │ │ │ │ │ /Helvetica findfont 18.75 scalefont setfont │ │ │ │ │ /M {moveto} def │ │ │ │ │ /L {lineto} def │ │ │ │ │ ├── ps2ascii {} │ │ │ │ │ │ @@ -27,15 +27,15 @@ │ │ │ │ │ │ weight vertices in the weighted vertex. The weight of an edge is w(u,v), the number of (u,v) edges │ │ │ │ │ │ in the unit weight graph where u ∈ u and v ∈ v. │ │ │ │ │ │ Thenaturalcompressedgraph[?],[?]isveryimportantformanymatricesfromstructralanalysis │ │ │ │ │ │ and computational fluid mechanics. This type of graph has one special property: │ │ │ │ │ │ w(u,v) = w(u)·w(v) │ │ │ │ │ │ 1The EGraph object represents a graph of the matrix, but stores a list of covering cliques in an IVL object. │ │ │ │ │ │ 1 │ │ │ │ │ │ - 2 Graph : DRAFT January 16, 2024 │ │ │ │ │ │ + 2 Graph : DRAFT February 18, 2025 │ │ │ │ │ │ and it is the smallest graph with this property. The compression is loss-less, for given G(V,E) │ │ │ │ │ │ and φ, we can reconstruct the unit weight graph G(V,E). In effect, we can work with the natural │ │ │ │ │ │ compressed graph to find separators and orderings and map back to the unit weight graph. The │ │ │ │ │ │ savings in time and space can be considerable. │ │ │ │ │ │ The Graph object has a method to find the φ map for the natural compressed graph; it requires │ │ │ │ │ │ O(|V|) space and O(|E|) time. There is a method to compress a graph (i.e., given G(V,E) and │ │ │ │ │ │ an arbitrary φ, construct G(V,E)) and a method to expand a graph (i.e., given G(V,E) and an │ │ │ │ │ │ @@ -57,15 +57,15 @@ │ │ │ │ │ │ • int totewght : total edge weight │ │ │ │ │ │ • IVL *adjIVL : pointer to IVL object to hold adjacency lists │ │ │ │ │ │ • int *vwghts : pointer to a vertex to hold vertex weights non-NULL if type % 2 == 1 │ │ │ │ │ │ • IVL *ewghtIVL : pointer to IVL object to hold edge weight lists, non-NULL if type / 2 == 1 │ │ │ │ │ │ 1.2 Prototypes and descriptions of Graph methods │ │ │ │ │ │ This section contains brief descriptions including prototypes of all methods that belong to the │ │ │ │ │ │ Graph object. │ │ │ │ │ │ - Graph : DRAFT January 16, 2024 3 │ │ │ │ │ │ + Graph : DRAFT February 18, 2025 3 │ │ │ │ │ │ 1.2.1 Basic methods │ │ │ │ │ │ As usual, there are four basic methods to support object creation, setting default fields, clearing │ │ │ │ │ │ any allocated data, and free’ing the object. │ │ │ │ │ │ 1. Graph * Graph_new ( void ) ; │ │ │ │ │ │ This method simply allocates storage for the Graph structure and then sets the default fields │ │ │ │ │ │ by a call to Graph setDefaultFields(). │ │ │ │ │ │ 2. void Graph_setDefaultFields ( Graph *graph ) ; │ │ │ │ │ │ @@ -91,15 +91,15 @@ │ │ │ │ │ │ int adjType, int ewghtType ) ; │ │ │ │ │ │ Thisisthebasicinitializer method. Anypreviousdataisclearedwithacall toGraph clearData(). │ │ │ │ │ │ Thenthescalar fields are set and the adjIVL object is initialized. If type is 1 or 3, the vwghts │ │ │ │ │ │ vector is initialized to zeros. If type is 2 or 3, the ewghtIVL object is initialized. │ │ │ │ │ │ Error checking: If graph is NULL, type is invalid (type must be in [0,3]), nvtx is non- │ │ │ │ │ │ positive, nvbnd or nedges is negative, or adjType of ewghtType is invalid (they must be │ │ │ │ │ │ IVL CHUNKED, IVL SOLO or IVL UNKNOWN). an error message is printed and the program exits. │ │ │ │ │ │ - 4 Graph : DRAFT January 16, 2024 │ │ │ │ │ │ + 4 Graph : DRAFT February 18, 2025 │ │ │ │ │ │ 2. void Graph_init2 ( Graph *graph, int type, int nvtx, int nvbnd, int nedges, │ │ │ │ │ │ int totvwght, int totewght, IVL *adjIVL, int *vwghts, IVL *ewghtIVL) │ │ │ │ │ │ This method is used by the IO read methods. When a Graph object is read from a file, │ │ │ │ │ │ the IVL object(s) must be initialized and then read in from the file. Therefore, we need an │ │ │ │ │ │ initialization method that allows us to set pointers to the IVL objects and the vwghts vector. │ │ │ │ │ │ Note, adjIVL, vwghts and ewghtIVL are owned by the Graph object and will be free’d when │ │ │ │ │ │ the Graph object is free’d. │ │ │ │ │ │ @@ -130,15 +130,15 @@ │ │ │ │ │ │ 1.2.3 Compress and Expand methods │ │ │ │ │ │ These three methods find an equivalence map for the natural compressed graph, compress a graph, │ │ │ │ │ │ and expand a graph. │ │ │ │ │ │ 1. IV * Graph_equivMap ( Graph *graph ) ; │ │ │ │ │ │ This method constructs the equivalence map from the graph to its natural compressed graph. │ │ │ │ │ │ The map φ : V 7→ V is then constructed (see the Introduction in this section) and put into │ │ │ │ │ │ an IV object that is then returned. │ │ │ │ │ │ - Graph : DRAFT January 16, 2024 5 │ │ │ │ │ │ + Graph : DRAFT February 18, 2025 5 │ │ │ │ │ │ Error checking: If graph is NULL or nvtx <= 0, an error message is printed and the program │ │ │ │ │ │ exits. │ │ │ │ │ │ 2. Graph * Graph_compress ( Graph *graph, int map[], int coarseType ) ; │ │ │ │ │ │ Graph * Graph_compress2 ( Graph *graph, IV *mapIV, int coarseType ) ; │ │ │ │ │ │ This Graph and map objects (map[] or mapIV) are checked and if any errors are found, │ │ │ │ │ │ the appropriate message is printed and the program exits. The compressed graph object │ │ │ │ │ │ is constructed and returned. Note, the compressed graph does not have a boundary, even │ │ │ │ │ │ @@ -164,15 +164,15 @@ │ │ │ │ │ │ 1. int Graph_sizeOf ( Graph *graph ) ; │ │ │ │ │ │ This method returns the number of bytes taken by this object. │ │ │ │ │ │ Error checking: If graph is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 2. Graph_externalDegree ( Graph *graph, int v ) ; │ │ │ │ │ │ This method returns the weight of adj(v). │ │ │ │ │ │ Error checking: If graph is NULL, or v is out of range, an error message is printed and the │ │ │ │ │ │ program exits. │ │ │ │ │ │ - 6 Graph : DRAFT January 16, 2024 │ │ │ │ │ │ + 6 Graph : DRAFT February 18, 2025 │ │ │ │ │ │ 3. int Graph_adjAndSize ( Graph *graph, int u, int *pusize, int **puadj) ; │ │ │ │ │ │ This method fills *pusize with the size of the adjacency list for u and *puadj points to the │ │ │ │ │ │ start of the list vector. │ │ │ │ │ │ Error checking: If graph is NULL, or if u < 0 or u >= nvtx or if pusize or puadj is NULL, an │ │ │ │ │ │ error message is printed and the program exits. │ │ │ │ │ │ 4. int Graph_adjAndEweights ( Graph *graph, int u, int *pusize, │ │ │ │ │ │ int **puadj, int **puewghts) ; │ │ │ │ │ │ @@ -205,15 +205,15 @@ │ │ │ │ │ │ list for the vertex in the parent graph. Each adjacency list for a boundary vertex of the │ │ │ │ │ │ subgraph is new storage, and only these lists are free’d when the subgraph is free’d. A map │ │ │ │ │ │ vector is created that maps the subgraphs’s vertices (both internal and boundary) into the │ │ │ │ │ │ parent graph’s vertices; the address of the map vector is put into *pmap. The adjacency lists │ │ │ │ │ │ for the subgraph are overwritten by the map[] vector. This renders the graph object invalid. │ │ │ │ │ │ The graph partitioning methods map the vertices back to their original values. Presently, │ │ │ │ │ │ only graphs with unit edge weights are allowed as input. │ │ │ │ │ │ - Graph : DRAFT January 16, 2024 7 │ │ │ │ │ │ + Graph : DRAFT February 18, 2025 7 │ │ │ │ │ │ Error checking: If graph is NULL or icomp < 0 or compids or pmap is NULL, an error message │ │ │ │ │ │ is printed and the program exits. │ │ │ │ │ │ 8. int Graph_isSymmetric ( Graph *graph ) ; │ │ │ │ │ │ This method returns 1 if the graph is symmetric (i.e., edge (i,j) is present if and only if │ │ │ │ │ │ edge (j,i) is present) and 0 otherwise. │ │ │ │ │ │ Error checking: If graph is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 1.2.6 IO methods │ │ │ │ │ │ @@ -242,15 +242,15 @@ │ │ │ │ │ │ file and returns the value returned from the called routine. │ │ │ │ │ │ Error checking: If graph or fn are NULL, or if fn is not of the form *.graphf (for a formatted │ │ │ │ │ │ file) or *.graphb (for a binary file), an error message is printed and the method returns zero. │ │ │ │ │ │ 5. int Graph_writeToFormattedFile ( Graph *graph, FILE *fp ) ; │ │ │ │ │ │ This method writes a Graph object to a formatted file. If there are no errors in writing the │ │ │ │ │ │ data, the value 1 is returned. If an IO error is encountered from fprintf, zero is returned. │ │ │ │ │ │ Error checking: If graph or fp are NULL an error message is printed and zero is returned. │ │ │ │ │ │ - 8 Graph : DRAFT January 16, 2024 │ │ │ │ │ │ + 8 Graph : DRAFT February 18, 2025 │ │ │ │ │ │ 6. int Graph_writeToBinaryFile ( Graph *graph, FILE *fp ) ; │ │ │ │ │ │ This method writes a Graph object to a binary file. If there are no errors in writing the data, │ │ │ │ │ │ the value 1 is returned. If an IO error is encountered from fwrite, zero is returned. │ │ │ │ │ │ Error checking: If graph or fp are NULL an error message is printed and zero is returned. │ │ │ │ │ │ 7. int Graph_writeForHumanEye ( Graph *graph, FILE *fp ) ; │ │ │ │ │ │ This method writes a Graph object to a file in a human readable format. The method │ │ │ │ │ │ Graph writeStats()is called to write out the header and statistics. The value 1 is returned. │ │ │ │ │ │ @@ -276,15 +276,15 @@ │ │ │ │ │ │ *.graphfor*.graphb. TheGraphobjectisreadfromthefileviatheGraph readFromFile() │ │ │ │ │ │ method. │ │ │ │ │ │ 2. compressGraph msglvl msgFile inGraphFile coarseType outMapFile outGraphFile │ │ │ │ │ │ This driver program reads in a Graph object from a file, computes the equivalence map to │ │ │ │ │ │ its natural compressed graph (the first graph need not be unit weight), and constructs the │ │ │ │ │ │ natural compressed graph. The equivalence map and compressed graph are optionally written │ │ │ │ │ │ out to files. │ │ │ │ │ │ - Graph : DRAFT January 16, 2024 9 │ │ │ │ │ │ + Graph : DRAFT February 18, 2025 9 │ │ │ │ │ │ • The msglvl parameter determines the amount of output — taking msglvl >= 3 means │ │ │ │ │ │ that all objects are written to the message file. │ │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ │ message file is stdout, otherwise a file is opened with append status to receive any output │ │ │ │ │ │ data. │ │ │ │ │ │ • TheinGraphFileparameteristheinputfilefortheGraphobject. It mustbeof theform │ │ │ │ │ │ *.graphfor*.graphb. TheGraphobjectisreadfromthefileviatheGraph readFromFile() │ │ │ │ │ │ @@ -317,15 +317,15 @@ │ │ │ │ │ │ (if inMapFile is of the form *.ivf), or a binary file (if inMapFile is of the form *.ivb). │ │ │ │ │ │ • The outGraphFile parameter is the output file for the compressed Graph object. If │ │ │ │ │ │ outGraphFile is none then the Graph object is not written to a file. Otherwise, │ │ │ │ │ │ the Graph writeToFile() method is called to write the graph to a formatted file (if │ │ │ │ │ │ outGraphFile is of the form *.graphf), or a binary file (if outGraphFile is of the form │ │ │ │ │ │ *.graphb). │ │ │ │ │ │ 4. mkGridGraph msglvl msgFile stencil n1 n2 n3 outFile │ │ │ │ │ │ - 10 Graph : DRAFT January 16, 2024 │ │ │ │ │ │ + 10 Graph : DRAFT February 18, 2025 │ │ │ │ │ │ This driver program creates a Graph object for a finite difference operator on a n1×n2×n3 │ │ │ │ │ │ regular grid. │ │ │ │ │ │ • The msglvl parameter determines the amount of output — taking msglvl >= 3 means │ │ │ │ │ │ that all objects are written to the message file. │ │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ │ message file is stdout, otherwise a file is opened with append status to receive any output │ │ │ │ │ │ data. │ │ │ │ │ │ @@ -355,15 +355,15 @@ │ │ │ │ │ │ Graph isSymmetric() method. This was useful in one application where the Graph object │ │ │ │ │ │ was constructed improperly. │ │ │ │ │ │ • The msglvl parameter determines the amount of output — taking msglvl >= 3 means │ │ │ │ │ │ the Graph object is written to the message file. │ │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ │ message file is stdout, otherwise a file is opened with append status to receive any output │ │ │ │ │ │ data. │ │ │ │ │ │ - Graph : DRAFT January 16, 2024 11 │ │ │ │ │ │ + Graph : DRAFT February 18, 2025 11 │ │ │ │ │ │ • The inFile parameter is the input file for the Graph object. It must be of the form │ │ │ │ │ │ *.graphfor*.graphb. TheGraphobjectisreadfromthefileviatheGraph readFromFile() │ │ │ │ │ │ method. │ │ │ │ │ │ 7. testWirebasket msglvl msgFile inGraphFile inStagesFile │ │ │ │ │ │ outStagesFile radius │ │ │ │ │ │ This driver program reads in a Graph object and and a file that contains the stages ids of the │ │ │ │ │ │ vertices, (stage equal to zero means the vertex is in the Schur complement), and overwrites the │ │ │ │ │ │ @@ -386,15 +386,15 @@ │ │ │ │ │ │ the form *.ivf or *.ivb. The IV object is written to the file via the IV writeToFile() │ │ │ │ │ │ method. │ │ │ │ │ │ • The radius parameter is used to define the stage of a Schur complement vertex, namely │ │ │ │ │ │ the stage is the number of domains that are found within radius edges of the vertex. │ │ │ │ │ │ The two plots below illustrate the wirebasket stages for a 15×15 grid. They show the stages │ │ │ │ │ │ for radius = 1 on the left and radius = 2 on the right. The domains are 3 × 3 subgrids │ │ │ │ │ │ whose vertices have labels equal to zero. │ │ │ │ │ │ - 12 Graph : DRAFT January 16, 2024 │ │ │ │ │ │ + 12 Graph : DRAFT February 18, 2025 │ │ │ │ │ │ 0 0 0 2 0 0 0 2 0 0 0 2 0 0 0 0 0 0 2 0 0 0 2 0 0 0 2 0 0 0 │ │ │ │ │ │ 0 0 0 2 0 0 0 2 0 0 0 2 0 0 0 0 0 0 2 0 0 0 2 0 0 0 2 0 0 0 │ │ │ │ │ │ 0 0 0 2 0 0 0 2 0 0 0 2 0 0 0 0 0 0 4 0 0 0 4 0 0 0 4 0 0 0 │ │ │ │ │ │ 2 2 2 4 2 2 2 4 2 2 2 4 2 2 2 2 2 4 4 4 2 4 4 4 2 4 4 4 2 2 │ │ │ │ │ │ 0 0 0 2 0 0 0 2 0 0 0 2 0 0 0 0 0 0 4 0 0 0 4 0 0 0 4 0 0 0 │ │ │ │ │ │ 0 0 0 2 0 0 0 2 0 0 0 2 0 0 0 0 0 0 2 0 0 0 2 0 0 0 2 0 0 0 │ │ │ │ │ │ 0 0 0 2 0 0 0 2 0 0 0 2 0 0 0 0 0 0 4 0 0 0 4 0 0 0 4 0 0 0 │ │ │ ├── ./usr/share/doc/spooles-doc/I2Ohash.ps.gz │ │ │ │ ├── I2Ohash.ps │ │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ │ %%EndComments │ │ │ │ │ %%BeginDefaults │ │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ │ %%EndDefaults │ │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ │ %DVIPSCommandLine: dvips main -o I2Ohash.ps │ │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ │ -%DVIPSSource: TeX output 2024.01.16:2047 │ │ │ │ │ +%DVIPSSource: TeX output 2025.02.18:0318 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -2425,20 +2425,21 @@ │ │ │ │ │ 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 52 /four put │ │ │ │ │ -dup 54 /six put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ +dup 56 /eight put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 74 /J put │ │ │ │ │ +dup 70 /F put │ │ │ │ │ dup 97 /a put │ │ │ │ │ -dup 110 /n put │ │ │ │ │ +dup 98 /b put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ dup 114 /r put │ │ │ │ │ dup 117 /u put │ │ │ │ │ dup 121 /y put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ @@ -2622,89 +2623,93 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ │ -C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ │ -6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ │ -11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ │ -1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ │ -A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ │ -F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ │ -EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ │ -033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ │ -A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ │ -468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8A71FF9C085003EBB4F4 │ │ │ │ │ -3D271F5B16B1AAD3EBDC391F534AA46E545E9D8659DD19B309C3B7625A8396FA │ │ │ │ │ -2519464539D46E43ACB72952313C8497315E0319C08628023E8FC54D7D3BAC29 │ │ │ │ │ -D5AD8EFDABF0C33C7AFB7151A6606C62A87F0F5F783569AC4C881A992E3FE420 │ │ │ │ │ -297F7BC5147F3B2FA98450D2F8B07F7D229BC8BE06729920CFEC22556740E1CB │ │ │ │ │ -3DE09AC763C6D4A20AD1599C368FABD07BC35C16683F2A0311A88983415A9140 │ │ │ │ │ -2EFC4BC1B10DCAD4B2B8A28510E5BD39D6616D2B9B079ED3CF9C315B7DEC29D9 │ │ │ │ │ -251DFD0194B34EC175964C23383F23FFB2E41B698C405815D65EAFF9E9DD1DDE │ │ │ │ │ -30F77924656C288B8DDB2E5B0E7B1FAA66791DE3848EE6DE63AD0E945E49C6C7 │ │ │ │ │ -9FCA16E01F027F9EF7ACB55F02F5B0136480802F789F6FE14B430879979BA04D │ │ │ │ │ -F481AD4CF47E6847936F377FB04869F9A80E597301BFCAB718D8764094673876 │ │ │ │ │ -BCEF8FA3701608C84B3A0399A11D2E6AD922CCB7D72AF9EBFB30F4648A37A123 │ │ │ │ │ -CB8FB14BDC351692CF0CCAA5CA9383C2B23BAAA38700327EB743FBBE9EE04041 │ │ │ │ │ -13F5CEF4B3881BBC051C33369A82B3505B1CFD7D91AEF2E43EA728EE48E2D854 │ │ │ │ │ -5A7E516998ACDD4FD835FA901C5A21810A56D51FE919B2E58408EEB4DAEB487F │ │ │ │ │ -BA7F1D292CED902DF3533566D96DAD918319EA650D4FC7D9E0170CDE620F755B │ │ │ │ │ -0E7AE02D9B118481B26F5FF7060FBCFA2A682B6826F00679BCDA68794C05286D │ │ │ │ │ -B616DD08372ACDE0AE6E7EF116F0D36F16241ED4F0E8CCD80377792E3BB1343C │ │ │ │ │ -EEB22CC77738F7CBCBA32CF6C3979F6DF7ED81A89AE8928FD7CC550F2730BA88 │ │ │ │ │ -1B51CEDC63F4C47F261AFCAB7AC3CED20B15C97E714A460A1A3B16436B4A5149 │ │ │ │ │ -8F91DA4BE0B9B648534CE5F442117036B602DC91E2852BEA62F55803B833FDF7 │ │ │ │ │ -9F901AB87489E703DDEED1091A79DC73B4440BBBF2C7592B441187C4A3562204 │ │ │ │ │ -859F08BA3CE2A8ECCD5AAD13C50FB806FE79A388F1822C5608837CBDE526A044 │ │ │ │ │ -12E5CDE4A066932AF2ACA7E8FC6BA4603640944718752975B7DA6E906BE1EA01 │ │ │ │ │ -46736FF5D1AA1CC682D011B6039CF98C35E36D4F14ABC84A38B7203CC9A17756 │ │ │ │ │ -B2B0345276798F1A88A54AD9FEA0853C6DDF28525ED4F0B7380D14147012C2A4 │ │ │ │ │ -5B02888C986C76497EA4C729B0B82EE73C1A1A8E8F1ABF401E341028E9C15AF9 │ │ │ │ │ -354706D8DC07492921AD0932A46736C0D1B066D00287DACCC068FAE6A796EC89 │ │ │ │ │ -54D1D73AA88F3A5912BA9D3FF70065C8D0D0DAD1CD846501E06694374EFDBEC6 │ │ │ │ │ -931F644D5E8494AFC742423AD9A487658E310E0682BE19B8475F4D450487A686 │ │ │ │ │ -2B94494DEAF1C0F59DE82F2CE64BEE5E97F942FCFA1187ED6AA5761E951A7BF7 │ │ │ │ │ -9F842E34A4656C58B35A9E99F7E6762CEE11E0CF59FFD75D7382C5EE6DBB43F1 │ │ │ │ │ -ED219071D3FB22DBA90977723BB467C0490D042684C0724F40DCA3E0D8F1F4E7 │ │ │ │ │ -3C4F9A67BE6528185EAAFDD415224F7E256A4EA00111C17C746CBD80BF569A27 │ │ │ │ │ -D81195D7F79C1CCEEF30ED00D49F48B63E4B8D7953403A3710AE953CC1B76F0F │ │ │ │ │ -F523D777A6A186F262A602543F94AF7471DBE25FEBC207DB42DAF7DC9A5781FB │ │ │ │ │ -2131AD42869D966A734AAE3466DF1CE9D1BCFA72409A558C0AEE6A8E2FEAACB6 │ │ │ │ │ -2CDABCC28433034848ACF9FB4465D272E4AFC48572647F05F41C7A293CC5B595 │ │ │ │ │ -AD31555FB708A72962707348BC7033A8224BD42EB9D75FDF3AE9E6A9C960B330 │ │ │ │ │ -5137DF59F8E2E0D535F41524ABDF070745A4FA25CD8DFD38A5FF30A95452B875 │ │ │ │ │ -6569E8812631300D79A942C563AF174AC05C9F2D09D7D5D3C605F5A6B7F21B34 │ │ │ │ │ -18F270A993B050838E701A17938D1C156CBA7CA4BAC7C562CE9D7B758EAB25A9 │ │ │ │ │ -A6DFFC71F65561341847B776DF34061CE3D439B87B857626987EC93B3B95B8E8 │ │ │ │ │ -76FFB16B263675333FA10414FEED707FF7C366BF8B20FF8577CDEBEBCF1A5BCE │ │ │ │ │ -258C09C90175A5278B7C444A623E3331FDE5A6387B3E389540ED1E7E883958F3 │ │ │ │ │ -3A5C89CCD62256FA069DF4A5090FB17C1F1757C9209DAFB8A1F47182BF3E88D9 │ │ │ │ │ -0B5376B59EE165A761902759C8ED7F5AD301E7EB8B49CC09AF921DB45B7F8002 │ │ │ │ │ -AB32E73AAE53942DE0F9175D8446017006C9C0B93EF39C13B7A879F2F6DDFF16 │ │ │ │ │ -204BB24F976847CF006FD29332FCCB255B5116F7077A44F7066C39C81DC4BAD2 │ │ │ │ │ -40DB2753626C0102E5D047522ABC38EA294A699B8DFD9CA0A7980561A1062E90 │ │ │ │ │ -AB11EE286A9C238D9F721D9980D0A1828C2814972622D948CEE8C812C19A9A03 │ │ │ │ │ -608ED0AC138A436FFBF8BE3D1E66C87793416AF38ED9BC5424568A175FBDAA9E │ │ │ │ │ -D6FC11A7021693819B051562B5A59F32629E2D6019D69DD329BE1894A2B295E1 │ │ │ │ │ -1DCE9683B29AE126C56F26E5C595BF1A8249BDE231DBE8B066F7F62EF149B975 │ │ │ │ │ -A863969A4690504A5EA064721DA909B8157C0B39FBF8228D95CB655E406161E1 │ │ │ │ │ -148610FAEED7C5509880223C06A66DA19E10F94DC2DB481B26 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004FD597ED │ │ │ │ │ +EFDBC64ABD9B79386FB2427D1A63522195B1239C09F8CB3F8BD7A245A6DD82E3 │ │ │ │ │ +260C3889587626DFC5F7978E55F5524ABD6A3319CDD3D3F40D040044D51DA4E1 │ │ │ │ │ +6797EEAC7AA07C77EC6DB0E6E182B545A8BEF63B14F3FC07BAC09E7CD5C17ED6 │ │ │ │ │ +10080704B0DA4E9BA12F968DF8A58458D17E9A5B1F14A83DC51F5B161ADEE1CC │ │ │ │ │ +0183D82ED92C6FC7203C289949EDF0284D9893029FF5408E421324625F17C3E5 │ │ │ │ │ +2437C8F75A9D68EE1AF9174FEA6FC6BF793C7D2E497EA90396CF1A645E283B69 │ │ │ │ │ +8425F47C323587DF91E1D596DCB1E3A787C955D9D965A5E3E26ADF58B62AD5F9 │ │ │ │ │ +0C9AC784DE479780606354111E3202F215650DBBE1063A46F3C10B9EBC974DDA │ │ │ │ │ +A1A28DBBD43E9E5BFF000B12C787D0427928078F8EC5FE90DED97E6C129E8DEA │ │ │ │ │ +51F66504DB83764E52B0BA68DF7BE684C8959CB1D3345CC48221A9A4683306C0 │ │ │ │ │ +62B634E0A539383F0C7A788D9711EFF414869CCC5659D78CEBE009BF2463F56A │ │ │ │ │ +0ADC993348FE96DF7C250E13ED6504AACFE8F8DCA2D2048D9D8CFA127D363EAC │ │ │ │ │ +1F0630E2D1B621E6954038195D965B91FD974FA3F1B8B29D200A16CEBA645E2F │ │ │ │ │ +CEEE6FD49FBBD49E38AE67D4BFFCE91F1FC422554EC4409C5FA18D40FCD6D9B3 │ │ │ │ │ +2185ED1E0F98106D4339F086B05CA36E56EC22C60E2CE23F9C4CC403ACAD3F94 │ │ │ │ │ +4086B4DF6DFA0B7B4716417263E7B558535566AED2F6C2F9846A16D71A7930A7 │ │ │ │ │ +49232D3D16C4A01CF1A1998A06F40062ED329179A85668537C55D0BC24FC0010 │ │ │ │ │ +54DA83E2FC66B2A5D428E6A9BFC983253668C0ECE6CA36DBF97C4B7659D50842 │ │ │ │ │ +C65B36604840EEDA399B57E2DEFAC3E7FB031634CE33D04238F9854D2AAAF448 │ │ │ │ │ +34DA5F3BCCED3166FEEE82BB0BBA0A397CC2F95865CB52AABFF454D93B425809 │ │ │ │ │ +A26AC459F321FD23E2262FE816D06BAAECF32AAF167F84799AF80F9F88388D07 │ │ │ │ │ +0DB5FD57AFEE2850A8DFE977E6AE39CB3DC16DB1A163A583C86C6F775CE33521 │ │ │ │ │ +0081C0BBBAD6D30D26C66B28B38CEAC78FEA5FB3CC5853656B67C6D9D80EB30E │ │ │ │ │ +397558C9179AF5920F34DAB3F578DFCF0DBB137AED17D6325C23883E69EE4621 │ │ │ │ │ +34355A70C19EA68891E1CA937376901C85CDEE109F1665943E29A216DC00937A │ │ │ │ │ +B983A729A4654AD09187C0242D52FA4ADD0853EF4888864914D7D81C56578DD4 │ │ │ │ │ +3B51907032022E6E412D4F114675DEDCA8A9E85DC03A0B583FECD84432D15F70 │ │ │ │ │ +01F627BD6EC91F9FCFDA01BF40E1229B5F164309DBB641AD50970503DA2048C1 │ │ │ │ │ +DF8F36E8D252EE113F0B46677D9BAF376BAE18D74CFB0DBBD0C7E9D0A58BA3ED │ │ │ │ │ +1E5099CAE073EB5638617760AB57849893764EA9735173CD1EAB66884CEA7EE3 │ │ │ │ │ +8843327B2E145BD6FBB49102776B82BC511D109F8BE9E7E99DADABABEDC3CFD9 │ │ │ │ │ +393578FFD85907DFF2849E4CDE6FA4DEC7E1C150EBE4047FFB650F9548BE6D11 │ │ │ │ │ +0C51226A5436F18BF20A02E0F888F46B6AC3A8E8D927ECD3B5E095933AD3859F │ │ │ │ │ +5167C41D832EFCC4093BD2AFA7101AB430E57DAFC3590F05D3CBABB32BC203A0 │ │ │ │ │ +467B23BDB830487C9AA5B85BAC065F8538871B4180F8C4732E637DB090CFDE5A │ │ │ │ │ +3F4F2B5BFAFB848BAAD1A17CB076B34159601639BD93ECAB1214ACABF2C67FE2 │ │ │ │ │ +0658AA20B08681070FF56F1CC52144ABA8765D6E124D1CEA9BBA102808CE1BB2 │ │ │ │ │ +5EDF46BC7BBC2A5B49EE6EC28F5797A3969B057B21FCDBBD0E60848FF14F6CA3 │ │ │ │ │ +70F3060BDBB019B22722C99C7691760F013763B7FBEB62830AE215F195BF9F01 │ │ │ │ │ +21BF4377397E89574CFA47D123AA506A570A77BA6EB4AAB0B237A26154880293 │ │ │ │ │ +3952F832F72ECCB024F02385E5EE8566B165904B594E30D0700D033C6B429F6F │ │ │ │ │ +2A20BC774F442BC9CE29FCC81807C2768A8BC927A215558FBF36DC53F477F04A │ │ │ │ │ +41DA66E1A85B659EB761230977EAD7DA0150513D3323B143D4E2A61BCF03334C │ │ │ │ │ +C0EE3E1B06CFAF58ECC910BD81F0352B75FF1594D6A4EF504232D442174BE766 │ │ │ │ │ +0F8E703F97E21D25D4CD097549C31FEE7017C3916EFB02E7BF869172889827B6 │ │ │ │ │ +A48465EB7612BA3DBC6A9436C7167F149A25CE9F8E3F4F8DE3B5ADF6C0986CB3 │ │ │ │ │ +3A7E2DAB44AB489796461536F5F713017F2620AD03295CAE9285F08974AE0DF8 │ │ │ │ │ +D739260929619B509491AFF09C4CAEF9E65C2CA69470C907ECBF3AB6C955360D │ │ │ │ │ +05ABAC306DB51122A1ADC7EF0DD70FA299A45C505A83727D4598C86319EE9C06 │ │ │ │ │ +7218EFD4F40388354BCF1B79593D5AD221DF955D081F99F880E5CED07321AB3E │ │ │ │ │ +A2FCB8B05D54807D8E15E65B78DCE12989B9276350080C905DBB74CE9AA7E246 │ │ │ │ │ +5D3BAED292C562D4CF54617FCC6654496C7996D1ECE1EFF9258716AB763A12E6 │ │ │ │ │ +316E4C5587351A6DB011F58F6A15BC28BEBDC3836E0CB892807FEC228DC1B380 │ │ │ │ │ +92F7F42279F08D60F13D6A4CB425543C3644461461CBF6F27B6603F613D1FCF8 │ │ │ │ │ +A8410AD82D1498166AEB35D4125D7E2ADEAAB18BC04806AED53513F066E5F154 │ │ │ │ │ +3E13E863C50B9814EE2FB978D0D24A03FAF650CB6E2CADF1E6BE6BAF699AFC03 │ │ │ │ │ +E1A0EEB207B3B9A689ED5B373FE86686AD230BE6C18E1673DDA50E224B343EC5 │ │ │ │ │ +903BA0C8041C13607B50D5852AC7970B15C244E6EBA7D54B3086312CF04761D6 │ │ │ │ │ +7D3D75D51F20C371494AB81AB4A9838B20B483B851D01FEF41EA5C0B4755B964 │ │ │ │ │ +EB6E9B178051C556A010994EB88EAE641F4C1A0D7E0F98D5267E18AEF1AEA7E7 │ │ │ │ │ +9030A97DF89AFF621981C33B645FFB5F3BB2065A7661D11B26E0999561DF3580 │ │ │ │ │ +4A76A05DFAF8085525F8D5C01936F03C32E26E72569371C9EA3B8916F9DFC5FC │ │ │ │ │ +6A6F25A0FFDB981BA8B896393D75774D50828E6ADE903C45406E354703A4BC56 │ │ │ │ │ +2C49A47FEAC970DC433E3050C49F7FB945A9705BD8852D2D65D935F244D3B423 │ │ │ │ │ +EFAB84AAAAB8FBAFF50AFF372A533BCCEB5FC273DBADCF715776DF02A5DCBA9A │ │ │ │ │ +FBF265FAB4745D6475B33611EEE1EA95E7584E0BEEC7CA789AA69C8D03D6F8C0 │ │ │ │ │ +5B6844E2B901ACA560C0433B053D134866E567425174E47173679AAD4486A2D3 │ │ │ │ │ +369C29E4DD2CD6ACA1BE80ED8FF0A9C58A616D26E758BD8E6342624EC83FB590 │ │ │ │ │ +BD354B52B60BB054FAFE9AC63E1564FBC721FE8F276B0413EC89A2C85E5ED1B0 │ │ │ │ │ +3A9D83BE62A4488ADE7CE69971A8AF7E5862A4290EEF6F00D4171C7FFB360065 │ │ │ │ │ +92E72BF02BE27161AE0BB5516572A0BDC4F316FFB24B38484AC8D1FD4CD86062 │ │ │ │ │ +A2B5D03CF28C3A679C039A6EFDD4C9DA7E463AD60234C9F6BBEE48D87DD94D85 │ │ │ │ │ +842F495F3E25723718682CE4D6224CBBF4456F03077EDF736D65B9DDAB09470E │ │ │ │ │ +17742D82011FFA96BFE86B96E858F9352FCD20C3D46B77DBDEE54336EC2249EA │ │ │ │ │ +211F6DFFF5BEA1E5192BE1BAC0BDD5EDDB3D56C6F7C6E543561A0B39E5C1B04F │ │ │ │ │ +C683A7516B6E69D682455386DDA709929D621FA434D403E895AA0A77DBE1DFD2 │ │ │ │ │ +0D060DF82378880147ED97C6E8149686FA048710B113760AC1DA4512FF8556B3 │ │ │ │ │ +16E2447485B8C3CD58D0469C4A45FFB4CB0322BB284C02 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -4349,16 +4354,16 @@ │ │ │ │ │ 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 1[45 1[45 45 45 3[25 │ │ │ │ │ -44[{}13 90.9091 /CMSL10 rf /Fi 134[44 3[49 30 37 38 1[46 │ │ │ │ │ +2[36 12[40 2[51 45 26[59 11[25 1[45 2[45 2[45 45 45 3[25 │ │ │ │ │ +44[{}14 90.9091 /CMSL10 rf /Fi 134[44 3[49 30 37 38 1[46 │ │ │ │ │ 46 51 2[42 1[28 46 42 1[42 46 42 1[46 12[65 1[66 11[59 │ │ │ │ │ 62 69 2[68 6[28 58[{}23 90.9091 /CMTI10 rf /Fj 134[71 │ │ │ │ │ 2[71 75 52 53 55 1[75 67 75 112 3[37 75 67 41 61 75 60 │ │ │ │ │ 1[65 13[75 2[92 11[103 16[67 67 67 2[37 46[{}25 119.552 │ │ │ │ │ /CMBX12 rf │ │ │ │ │ %DVIPSBitmapFont: Fk tcrm1095 10.95 1 │ │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ │ @@ -4471,20 +4476,20 @@ │ │ │ │ │ b(n)m(um)m(b)s(er)29 b(of)h(items)h(in)f(the)h(hash)f(table.)137 │ │ │ │ │ 5294 y Fk(\210)45 b Fl(I2OP)i(*baseI2OP)35 b Fm(:)j(p)s(oin)m(ter)g(to) │ │ │ │ │ h(an)f Fl(I2OP)f Fm(ob)5 b(ject)39 b(that)f(k)m(eeps)h(trac)m(k)g(of)f │ │ │ │ │ (all)h(the)f Fl(I2OP)f Fm(ob)5 b(jects)38 b(that)227 │ │ │ │ │ 5407 y(ha)m(v)m(e)32 b(b)s(een)e(allo)s(cated)i(b)m(y)e(the)h(hash)e │ │ │ │ │ (table.)1927 5656 y(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fm(2)p 136 100 1059 4 v │ │ │ │ │ -1240 w Fl(I2Ohash)29 b Fh(:)40 b Fi(DRAFT)31 b Fh(Jan)m(uary)f(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fm(2)p 136 100 1040 4 v │ │ │ │ │ +1221 w Fl(I2Ohash)29 b Fh(:)40 b Fi(DRAFT)31 b Fh(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2861 100 V 137 399 a Fk(\210)45 │ │ │ │ │ +b Fl(I2OP)i(*freeI2OP)28 b Fm(:)i(p)s(oin)m(ter)h(to)g(the)f(\014rst)g │ │ │ │ │ +Fl(I2OP)f Fm(ob)5 b(ject)31 b(on)g(the)f(free)h(list.)137 │ │ │ │ │ +604 y Fk(\210)45 b Fl(I2OP)i(**heads)26 b Fm(:)39 b(p)s(oin)m(ter)29 │ │ │ │ │ b(to)f(a)h(v)m(ector)g(of)g(p)s(oin)m(ters)f(to)g Fl(I2OP)f │ │ │ │ │ Fm(ob)5 b(jects,)30 b(used)d(to)i(hold)e(a)i(p)s(oin)m(ter)f(to)h(the) │ │ │ │ │ 227 717 y(\014rst)h Fl(I2OP)f Fm(ob)5 b(ject)31 b(in)f(eac)m(h)i(list.) │ │ │ │ │ 141 947 y(A)g(correctly)g(initialized)h(and)e(non)m(trivial)h │ │ │ │ │ Fl(I2Ohash)e Fm(ob)5 b(ject)32 b(will)g(ha)m(v)m(e)g │ │ │ │ │ Fl(nlist)46 b(>)i(0)p Fm(.)43 b(If)31 b Fl(grow)f Fm(is)h(zero)i(and)0 │ │ │ │ │ 1059 y(a)e(new)f Fl()25 b Fm(triple)31 │ │ │ │ │ @@ -4531,17 +4536,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 1059 4 v 1240 100 a Fl(I2Ohash)28 │ │ │ │ │ -b Fh(:)41 b Fi(DRAFT)121 b Fh(Jan)m(uary)30 b(16,)i(2024)p │ │ │ │ │ -2795 100 V 1059 w Fm(3)111 399 y(1.)46 b Fl(void)h(I2Ohash_init)d(\()k │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1040 4 v 1221 100 a Fl(I2Ohash)28 │ │ │ │ │ +b Fh(:)41 b Fi(DRAFT)121 b Fh(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2814 100 V 1040 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 │ │ │ │ │ @@ -4617,27 +4622,27 @@ │ │ │ │ │ (*hashtable,)g(FILE)i(*fp)g(\))g(;)227 5151 y Fm(This)30 │ │ │ │ │ b(metho)s(d)g(prin)m(ts)g(the)g(hash)g(table)h(in)f(a)h(h)m │ │ │ │ │ (uman-readable)f(format.)227 5294 y Fi(Err)-5 b(or)41 │ │ │ │ │ b(che)-5 b(cking:)56 b Fm(If)38 b Fl(hashtable)e Fm(or)i │ │ │ │ │ Fl(fp)f Fm(is)i Fl(NULL)p Fm(,)e(an)h(error)g(message)h(is)f(prin)m │ │ │ │ │ (ted)g(and)g(the)g(program)227 5407 y(exits.)p eop end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fm(4)p 136 100 1059 4 v │ │ │ │ │ -1240 w Fl(I2Ohash)29 b Fh(:)40 b Fi(DRAFT)31 b Fh(Jan)m(uary)f(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ -1002 y(table.)337 1215 y Fk(\210)45 b Fm(The)f Fl(msglvl)e │ │ │ │ │ -Fm(parameter)j(determines)f(the)g(amoun)m(t)h(of)f(output.)82 │ │ │ │ │ -b(Use)44 b Fl(msglvl)i(=)i(1)c Fm(for)g(just)427 1328 │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fm(4)p 136 100 1040 4 v │ │ │ │ │ +1221 w Fl(I2Ohash)29 b Fh(:)40 b Fi(DRAFT)31 b Fh(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2861 100 V 0 399 a Fj(1.3)135 │ │ │ │ │ +b(Driv)l(er)46 b(programs)g(for)f(the)g Fg(I2Ohash)58 │ │ │ │ │ +b(object)111 626 y Fm(1.)46 b Fl(test_hash)g(msglvl)g(msgFile)f(size)i │ │ │ │ │ +(grow)g(maxkey)f(nent)g(seed)227 777 y Fm(This)34 b(driv)m(er)h │ │ │ │ │ +(program)g(tests)h(the)f Fl(I2Ohash)e Fm(insert)i(metho)s(d.)54 │ │ │ │ │ +b(It)35 b(inserts)f(a)i(n)m(um)m(b)s(er)d(of)i(triples)h(in)m(to)g(a) │ │ │ │ │ +227 890 y(hash)d(table)h(and)e(prin)m(ts)h(out)g(the)h(\\measure")g(of) │ │ │ │ │ +f(ho)m(w)g(w)m(ell)h(distributed)f(the)g(en)m(tries)h(are)f(in)g(the)h │ │ │ │ │ +(hash)227 1002 y(table.)337 1215 y Fk(\210)45 b Fm(The)f │ │ │ │ │ +Fl(msglvl)e Fm(parameter)j(determines)f(the)g(amoun)m(t)h(of)f(output.) │ │ │ │ │ +82 b(Use)44 b Fl(msglvl)i(=)i(1)c Fm(for)g(just)427 1328 │ │ │ │ │ y(timing)31 b(output.)337 1474 y Fk(\210)45 b Fm(The)33 │ │ │ │ │ b Fl(msgFile)e Fm(parameter)j(determines)f(the)h(message)g(\014le)f(|)h │ │ │ │ │ (if)f Fl(msgFile)e Fm(is)i Fl(stdout)p Fm(,)g(then)g(the)427 │ │ │ │ │ 1587 y(message)27 b(\014le)f(is)g Fi(stdout)p Fm(,)i(otherwise)e(a)h │ │ │ │ │ (\014le)f(is)f(op)s(ened)g(with)h Fi(app)-5 b(end)28 │ │ │ │ │ b Fm(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 1700 │ │ │ │ │ y(data.)337 1846 y Fk(\210)45 b Fm(The)30 b Fl(size)f │ │ │ │ │ ├── ps2ascii {} │ │ │ │ │ │ @@ -21,15 +21,15 @@ │ │ │ │ │ │ • int nlist : number of lists in the hash table │ │ │ │ │ │ • int grow : when no I2OP objects are available to insert a new triple, │ │ │ │ │ │ the object can allocate grow more I2OP objects and put them on the free list. │ │ │ │ │ │ • nitem : number of items in the hash table. │ │ │ │ │ │ • I2OP *baseI2OP : pointer to an I2OP object that keeps track of all the I2OP objects that │ │ │ │ │ │ have been allocated by the hash table. │ │ │ │ │ │ 1 │ │ │ │ │ │ - 2 I2Ohash : DRAFT January 16, 2024 │ │ │ │ │ │ + 2 I2Ohash : DRAFT February 18, 2025 │ │ │ │ │ │ • I2OP *freeI2OP : pointer to the first I2OP object on the free list. │ │ │ │ │ │ • I2OP **heads : pointer to a vector of pointers to I2OP objects, used to hold a pointer to the │ │ │ │ │ │ first I2OP object in each list. │ │ │ │ │ │ Acorrectly initialized and nontrivial I2Ohash object will have nlist > 0. If grow is zero and │ │ │ │ │ │ a new triple is given to the hash table to be inserted, a fatal error occurs. │ │ │ │ │ │ 1.2 Prototypes and descriptions of I2Ohash methods │ │ │ │ │ │ This section contains brief descriptions including prototypes of all methods that belong to the │ │ │ │ │ │ @@ -51,15 +51,15 @@ │ │ │ │ │ │ Error checking: If hashtable is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 4. void I2Ohash_free ( I2Ohash *hashtable ) ; │ │ │ │ │ │ This method releases any storage by a call to I2Ohash clearData() then free’s the storage │ │ │ │ │ │ for the structure with a call to free(). │ │ │ │ │ │ Error checking: If hashtable is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 1.2.2 Initializer methods │ │ │ │ │ │ There is one initializer method. │ │ │ │ │ │ - I2Ohash : DRAFT January 16, 2024 3 │ │ │ │ │ │ + I2Ohash : DRAFT February 18, 2025 3 │ │ │ │ │ │ 1. void I2Ohash_init ( I2Ohash *hashtable, int nlist, int nobj, int grow ) ; │ │ │ │ │ │ This method is the basic initializer method. It clears any previous data with a call to │ │ │ │ │ │ I2Ohash clearData(). It allocates storage for nlist lists and if nobj is positive, it loads the │ │ │ │ │ │ free list with nobj I2OP objects. │ │ │ │ │ │ Error checking: If hashtable is NULL, or if nlist ≤ 0, or if nobj and grow are both zero, an │ │ │ │ │ │ error message is printed and the program exits. │ │ │ │ │ │ 1.2.3 Utility methods │ │ │ │ │ │ @@ -92,15 +92,15 @@ │ │ │ │ │ │ the triples are evenly distributed among nlist/k lists, the value is √k. │ │ │ │ │ │ Error checking: If hashtable is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 1.2.4 IO methods │ │ │ │ │ │ 1. void I2Ohash_writeForHumanEye ( I2Ohash *hashtable, FILE *fp ) ; │ │ │ │ │ │ This method prints the hash table in a human-readable format. │ │ │ │ │ │ Error checking: If hashtable or fp is NULL, an error message is printed and the program │ │ │ │ │ │ exits. │ │ │ │ │ │ - 4 I2Ohash : DRAFT January 16, 2024 │ │ │ │ │ │ + 4 I2Ohash : DRAFT February 18, 2025 │ │ │ │ │ │ 1.3 Driver programs for the I2Ohash object │ │ │ │ │ │ 1. test_hash msglvl msgFile size grow maxkey nent seed │ │ │ │ │ │ This driver program tests the I2Ohash insert method. It inserts a number of triples into a │ │ │ │ │ │ hash table and prints out the “measure” of how well distributed the entries are in the hash │ │ │ │ │ │ table. │ │ │ │ │ │ • The msglvl parameter determines the amount of output. Use msglvl = 1 for just │ │ │ │ │ │ timing output. │ │ │ ├── ./usr/share/doc/spooles-doc/IIheap.ps.gz │ │ │ │ ├── IIheap.ps │ │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ │ %%EndComments │ │ │ │ │ %%BeginDefaults │ │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ │ %%EndDefaults │ │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ │ %DVIPSCommandLine: dvips main -o IIheap.ps │ │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ │ -%DVIPSSource: TeX output 2024.01.16:2047 │ │ │ │ │ +%DVIPSSource: TeX output 2025.02.18:0318 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -1278,20 +1278,21 @@ │ │ │ │ │ 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 52 /four put │ │ │ │ │ -dup 54 /six put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ +dup 56 /eight put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 74 /J put │ │ │ │ │ +dup 70 /F put │ │ │ │ │ dup 97 /a put │ │ │ │ │ -dup 110 /n put │ │ │ │ │ +dup 98 /b put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ dup 114 /r put │ │ │ │ │ dup 117 /u put │ │ │ │ │ dup 121 /y put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ @@ -1475,89 +1476,93 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ │ -C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ │ -6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ │ -11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ │ -1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ │ -A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ │ -F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ │ -EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ │ -033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ │ -A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ │ -468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8A71FF9C085003EBB4F4 │ │ │ │ │ -3D271F5B16B1AAD3EBDC391F534AA46E545E9D8659DD19B309C3B7625A8396FA │ │ │ │ │ -2519464539D46E43ACB72952313C8497315E0319C08628023E8FC54D7D3BAC29 │ │ │ │ │ -D5AD8EFDABF0C33C7AFB7151A6606C62A87F0F5F783569AC4C881A992E3FE420 │ │ │ │ │ -297F7BC5147F3B2FA98450D2F8B07F7D229BC8BE06729920CFEC22556740E1CB │ │ │ │ │ -3DE09AC763C6D4A20AD1599C368FABD07BC35C16683F2A0311A88983415A9140 │ │ │ │ │ -2EFC4BC1B10DCAD4B2B8A28510E5BD39D6616D2B9B079ED3CF9C315B7DEC29D9 │ │ │ │ │ -251DFD0194B34EC175964C23383F23FFB2E41B698C405815D65EAFF9E9DD1DDE │ │ │ │ │ -30F77924656C288B8DDB2E5B0E7B1FAA66791DE3848EE6DE63AD0E945E49C6C7 │ │ │ │ │ -9FCA16E01F027F9EF7ACB55F02F5B0136480802F789F6FE14B430879979BA04D │ │ │ │ │ -F481AD4CF47E6847936F377FB04869F9A80E597301BFCAB718D8764094673876 │ │ │ │ │ -BCEF8FA3701608C84B3A0399A11D2E6AD922CCB7D72AF9EBFB30F4648A37A123 │ │ │ │ │ -CB8FB14BDC351692CF0CCAA5CA9383C2B23BAAA38700327EB743FBBE9EE04041 │ │ │ │ │ -13F5CEF4B3881BBC051C33369A82B3505B1CFD7D91AEF2E43EA728EE48E2D854 │ │ │ │ │ -5A7E516998ACDD4FD835FA901C5A21810A56D51FE919B2E58408EEB4DAEB487F │ │ │ │ │ -BA7F1D292CED902DF3533566D96DAD918319EA650D4FC7D9E0170CDE620F755B │ │ │ │ │ -0E7AE02D9B118481B26F5FF7060FBCFA2A682B6826F00679BCDA68794C05286D │ │ │ │ │ -B616DD08372ACDE0AE6E7EF116F0D36F16241ED4F0E8CCD80377792E3BB1343C │ │ │ │ │ -EEB22CC77738F7CBCBA32CF6C3979F6DF7ED81A89AE8928FD7CC550F2730BA88 │ │ │ │ │ -1B51CEDC63F4C47F261AFCAB7AC3CED20B15C97E714A460A1A3B16436B4A5149 │ │ │ │ │ -8F91DA4BE0B9B648534CE5F442117036B602DC91E2852BEA62F55803B833FDF7 │ │ │ │ │ -9F901AB87489E703DDEED1091A79DC73B4440BBBF2C7592B441187C4A3562204 │ │ │ │ │ -859F08BA3CE2A8ECCD5AAD13C50FB806FE79A388F1822C5608837CBDE526A044 │ │ │ │ │ -12E5CDE4A066932AF2ACA7E8FC6BA4603640944718752975B7DA6E906BE1EA01 │ │ │ │ │ -46736FF5D1AA1CC682D011B6039CF98C35E36D4F14ABC84A38B7203CC9A17756 │ │ │ │ │ -B2B0345276798F1A88A54AD9FEA0853C6DDF28525ED4F0B7380D14147012C2A4 │ │ │ │ │ -5B02888C986C76497EA4C729B0B82EE73C1A1A8E8F1ABF401E341028E9C15AF9 │ │ │ │ │ -354706D8DC07492921AD0932A46736C0D1B066D00287DACCC068FAE6A796EC89 │ │ │ │ │ -54D1D73AA88F3A5912BA9D3FF70065C8D0D0DAD1CD846501E06694374EFDBEC6 │ │ │ │ │ -931F644D5E8494AFC742423AD9A487658E310E0682BE19B8475F4D450487A686 │ │ │ │ │ -2B94494DEAF1C0F59DE82F2CE64BEE5E97F942FCFA1187ED6AA5761E951A7BF7 │ │ │ │ │ -9F842E34A4656C58B35A9E99F7E6762CEE11E0CF59FFD75D7382C5EE6DBB43F1 │ │ │ │ │ -ED219071D3FB22DBA90977723BB467C0490D042684C0724F40DCA3E0D8F1F4E7 │ │ │ │ │ -3C4F9A67BE6528185EAAFDD415224F7E256A4EA00111C17C746CBD80BF569A27 │ │ │ │ │ -D81195D7F79C1CCEEF30ED00D49F48B63E4B8D7953403A3710AE953CC1B76F0F │ │ │ │ │ -F523D777A6A186F262A602543F94AF7471DBE25FEBC207DB42DAF7DC9A5781FB │ │ │ │ │ -2131AD42869D966A734AAE3466DF1CE9D1BCFA72409A558C0AEE6A8E2FEAACB6 │ │ │ │ │ -2CDABCC28433034848ACF9FB4465D272E4AFC48572647F05F41C7A293CC5B595 │ │ │ │ │ -AD31555FB708A72962707348BC7033A8224BD42EB9D75FDF3AE9E6A9C960B330 │ │ │ │ │ -5137DF59F8E2E0D535F41524ABDF070745A4FA25CD8DFD38A5FF30A95452B875 │ │ │ │ │ -6569E8812631300D79A942C563AF174AC05C9F2D09D7D5D3C605F5A6B7F21B34 │ │ │ │ │ -18F270A993B050838E701A17938D1C156CBA7CA4BAC7C562CE9D7B758EAB25A9 │ │ │ │ │ -A6DFFC71F65561341847B776DF34061CE3D439B87B857626987EC93B3B95B8E8 │ │ │ │ │ -76FFB16B263675333FA10414FEED707FF7C366BF8B20FF8577CDEBEBCF1A5BCE │ │ │ │ │ -258C09C90175A5278B7C444A623E3331FDE5A6387B3E389540ED1E7E883958F3 │ │ │ │ │ -3A5C89CCD62256FA069DF4A5090FB17C1F1757C9209DAFB8A1F47182BF3E88D9 │ │ │ │ │ -0B5376B59EE165A761902759C8ED7F5AD301E7EB8B49CC09AF921DB45B7F8002 │ │ │ │ │ -AB32E73AAE53942DE0F9175D8446017006C9C0B93EF39C13B7A879F2F6DDFF16 │ │ │ │ │ -204BB24F976847CF006FD29332FCCB255B5116F7077A44F7066C39C81DC4BAD2 │ │ │ │ │ -40DB2753626C0102E5D047522ABC38EA294A699B8DFD9CA0A7980561A1062E90 │ │ │ │ │ -AB11EE286A9C238D9F721D9980D0A1828C2814972622D948CEE8C812C19A9A03 │ │ │ │ │ -608ED0AC138A436FFBF8BE3D1E66C87793416AF38ED9BC5424568A175FBDAA9E │ │ │ │ │ -D6FC11A7021693819B051562B5A59F32629E2D6019D69DD329BE1894A2B295E1 │ │ │ │ │ -1DCE9683B29AE126C56F26E5C595BF1A8249BDE231DBE8B066F7F62EF149B975 │ │ │ │ │ -A863969A4690504A5EA064721DA909B8157C0B39FBF8228D95CB655E406161E1 │ │ │ │ │ -148610FAEED7C5509880223C06A66DA19E10F94DC2DB481B26 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004FD597ED │ │ │ │ │ +EFDBC64ABD9B79386FB2427D1A63522195B1239C09F8CB3F8BD7A245A6DD82E3 │ │ │ │ │ +260C3889587626DFC5F7978E55F5524ABD6A3319CDD3D3F40D040044D51DA4E1 │ │ │ │ │ +6797EEAC7AA07C77EC6DB0E6E182B545A8BEF63B14F3FC07BAC09E7CD5C17ED6 │ │ │ │ │ +10080704B0DA4E9BA12F968DF8A58458D17E9A5B1F14A83DC51F5B161ADEE1CC │ │ │ │ │ +0183D82ED92C6FC7203C289949EDF0284D9893029FF5408E421324625F17C3E5 │ │ │ │ │ +2437C8F75A9D68EE1AF9174FEA6FC6BF793C7D2E497EA90396CF1A645E283B69 │ │ │ │ │ +8425F47C323587DF91E1D596DCB1E3A787C955D9D965A5E3E26ADF58B62AD5F9 │ │ │ │ │ +0C9AC784DE479780606354111E3202F215650DBBE1063A46F3C10B9EBC974DDA │ │ │ │ │ +A1A28DBBD43E9E5BFF000B12C787D0427928078F8EC5FE90DED97E6C129E8DEA │ │ │ │ │ +51F66504DB83764E52B0BA68DF7BE684C8959CB1D3345CC48221A9A4683306C0 │ │ │ │ │ +62B634E0A539383F0C7A788D9711EFF414869CCC5659D78CEBE009BF2463F56A │ │ │ │ │ +0ADC993348FE96DF7C250E13ED6504AACFE8F8DCA2D2048D9D8CFA127D363EAC │ │ │ │ │ +1F0630E2D1B621E6954038195D965B91FD974FA3F1B8B29D200A16CEBA645E2F │ │ │ │ │ +CEEE6FD49FBBD49E38AE67D4BFFCE91F1FC422554EC4409C5FA18D40FCD6D9B3 │ │ │ │ │ +2185ED1E0F98106D4339F086B05CA36E56EC22C60E2CE23F9C4CC403ACAD3F94 │ │ │ │ │ +4086B4DF6DFA0B7B4716417263E7B558535566AED2F6C2F9846A16D71A7930A7 │ │ │ │ │ +49232D3D16C4A01CF1A1998A06F40062ED329179A85668537C55D0BC24FC0010 │ │ │ │ │ +54DA83E2FC66B2A5D428E6A9BFC983253668C0ECE6CA36DBF97C4B7659D50842 │ │ │ │ │ +C65B36604840EEDA399B57E2DEFAC3E7FB031634CE33D04238F9854D2AAAF448 │ │ │ │ │ +34DA5F3BCCED3166FEEE82BB0BBA0A397CC2F95865CB52AABFF454D93B425809 │ │ │ │ │ +A26AC459F321FD23E2262FE816D06BAAECF32AAF167F84799AF80F9F88388D07 │ │ │ │ │ +0DB5FD57AFEE2850A8DFE977E6AE39CB3DC16DB1A163A583C86C6F775CE33521 │ │ │ │ │ +0081C0BBBAD6D30D26C66B28B38CEAC78FEA5FB3CC5853656B67C6D9D80EB30E │ │ │ │ │ +397558C9179AF5920F34DAB3F578DFCF0DBB137AED17D6325C23883E69EE4621 │ │ │ │ │ +34355A70C19EA68891E1CA937376901C85CDEE109F1665943E29A216DC00937A │ │ │ │ │ +B983A729A4654AD09187C0242D52FA4ADD0853EF4888864914D7D81C56578DD4 │ │ │ │ │ +3B51907032022E6E412D4F114675DEDCA8A9E85DC03A0B583FECD84432D15F70 │ │ │ │ │ +01F627BD6EC91F9FCFDA01BF40E1229B5F164309DBB641AD50970503DA2048C1 │ │ │ │ │ +DF8F36E8D252EE113F0B46677D9BAF376BAE18D74CFB0DBBD0C7E9D0A58BA3ED │ │ │ │ │ +1E5099CAE073EB5638617760AB57849893764EA9735173CD1EAB66884CEA7EE3 │ │ │ │ │ +8843327B2E145BD6FBB49102776B82BC511D109F8BE9E7E99DADABABEDC3CFD9 │ │ │ │ │ +393578FFD85907DFF2849E4CDE6FA4DEC7E1C150EBE4047FFB650F9548BE6D11 │ │ │ │ │ +0C51226A5436F18BF20A02E0F888F46B6AC3A8E8D927ECD3B5E095933AD3859F │ │ │ │ │ +5167C41D832EFCC4093BD2AFA7101AB430E57DAFC3590F05D3CBABB32BC203A0 │ │ │ │ │ +467B23BDB830487C9AA5B85BAC065F8538871B4180F8C4732E637DB090CFDE5A │ │ │ │ │ +3F4F2B5BFAFB848BAAD1A17CB076B34159601639BD93ECAB1214ACABF2C67FE2 │ │ │ │ │ +0658AA20B08681070FF56F1CC52144ABA8765D6E124D1CEA9BBA102808CE1BB2 │ │ │ │ │ +5EDF46BC7BBC2A5B49EE6EC28F5797A3969B057B21FCDBBD0E60848FF14F6CA3 │ │ │ │ │ +70F3060BDBB019B22722C99C7691760F013763B7FBEB62830AE215F195BF9F01 │ │ │ │ │ +21BF4377397E89574CFA47D123AA506A570A77BA6EB4AAB0B237A26154880293 │ │ │ │ │ +3952F832F72ECCB024F02385E5EE8566B165904B594E30D0700D033C6B429F6F │ │ │ │ │ +2A20BC774F442BC9CE29FCC81807C2768A8BC927A215558FBF36DC53F477F04A │ │ │ │ │ +41DA66E1A85B659EB761230977EAD7DA0150513D3323B143D4E2A61BCF03334C │ │ │ │ │ +C0EE3E1B06CFAF58ECC910BD81F0352B75FF1594D6A4EF504232D442174BE766 │ │ │ │ │ +0F8E703F97E21D25D4CD097549C31FEE7017C3916EFB02E7BF869172889827B6 │ │ │ │ │ +A48465EB7612BA3DBC6A9436C7167F149A25CE9F8E3F4F8DE3B5ADF6C0986CB3 │ │ │ │ │ +3A7E2DAB44AB489796461536F5F713017F2620AD03295CAE9285F08974AE0DF8 │ │ │ │ │ +D739260929619B509491AFF09C4CAEF9E65C2CA69470C907ECBF3AB6C955360D │ │ │ │ │ +05ABAC306DB51122A1ADC7EF0DD70FA299A45C505A83727D4598C86319EE9C06 │ │ │ │ │ +7218EFD4F40388354BCF1B79593D5AD221DF955D081F99F880E5CED07321AB3E │ │ │ │ │ +A2FCB8B05D54807D8E15E65B78DCE12989B9276350080C905DBB74CE9AA7E246 │ │ │ │ │ +5D3BAED292C562D4CF54617FCC6654496C7996D1ECE1EFF9258716AB763A12E6 │ │ │ │ │ +316E4C5587351A6DB011F58F6A15BC28BEBDC3836E0CB892807FEC228DC1B380 │ │ │ │ │ +92F7F42279F08D60F13D6A4CB425543C3644461461CBF6F27B6603F613D1FCF8 │ │ │ │ │ +A8410AD82D1498166AEB35D4125D7E2ADEAAB18BC04806AED53513F066E5F154 │ │ │ │ │ +3E13E863C50B9814EE2FB978D0D24A03FAF650CB6E2CADF1E6BE6BAF699AFC03 │ │ │ │ │ +E1A0EEB207B3B9A689ED5B373FE86686AD230BE6C18E1673DDA50E224B343EC5 │ │ │ │ │ +903BA0C8041C13607B50D5852AC7970B15C244E6EBA7D54B3086312CF04761D6 │ │ │ │ │ +7D3D75D51F20C371494AB81AB4A9838B20B483B851D01FEF41EA5C0B4755B964 │ │ │ │ │ +EB6E9B178051C556A010994EB88EAE641F4C1A0D7E0F98D5267E18AEF1AEA7E7 │ │ │ │ │ +9030A97DF89AFF621981C33B645FFB5F3BB2065A7661D11B26E0999561DF3580 │ │ │ │ │ +4A76A05DFAF8085525F8D5C01936F03C32E26E72569371C9EA3B8916F9DFC5FC │ │ │ │ │ +6A6F25A0FFDB981BA8B896393D75774D50828E6ADE903C45406E354703A4BC56 │ │ │ │ │ +2C49A47FEAC970DC433E3050C49F7FB945A9705BD8852D2D65D935F244D3B423 │ │ │ │ │ +EFAB84AAAAB8FBAFF50AFF372A533BCCEB5FC273DBADCF715776DF02A5DCBA9A │ │ │ │ │ +FBF265FAB4745D6475B33611EEE1EA95E7584E0BEEC7CA789AA69C8D03D6F8C0 │ │ │ │ │ +5B6844E2B901ACA560C0433B053D134866E567425174E47173679AAD4486A2D3 │ │ │ │ │ +369C29E4DD2CD6ACA1BE80ED8FF0A9C58A616D26E758BD8E6342624EC83FB590 │ │ │ │ │ +BD354B52B60BB054FAFE9AC63E1564FBC721FE8F276B0413EC89A2C85E5ED1B0 │ │ │ │ │ +3A9D83BE62A4488ADE7CE69971A8AF7E5862A4290EEF6F00D4171C7FFB360065 │ │ │ │ │ +92E72BF02BE27161AE0BB5516572A0BDC4F316FFB24B38484AC8D1FD4CD86062 │ │ │ │ │ +A2B5D03CF28C3A679C039A6EFDD4C9DA7E463AD60234C9F6BBEE48D87DD94D85 │ │ │ │ │ +842F495F3E25723718682CE4D6224CBBF4456F03077EDF736D65B9DDAB09470E │ │ │ │ │ +17742D82011FFA96BFE86B96E858F9352FCD20C3D46B77DBDEE54336EC2249EA │ │ │ │ │ +211F6DFFF5BEA1E5192BE1BAC0BDD5EDDB3D56C6F7C6E543561A0B39E5C1B04F │ │ │ │ │ +C683A7516B6E69D682455386DDA709929D621FA434D403E895AA0A77DBE1DFD2 │ │ │ │ │ +0D060DF82378880147ED97C6E8149686FA048710B113760AC1DA4512FF8556B3 │ │ │ │ │ +16E2447485B8C3CD58D0469C4A45FFB4CB0322BB284C02 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -3727,16 +3732,16 @@ │ │ │ │ │ cleartomark │ │ │ │ │ {restore}if │ │ │ │ │ %%EndFont │ │ │ │ │ TeXDict begin 39158280 55380996 1000 600 600 (main.dvi) │ │ │ │ │ @start /Fa 235[71 20[{}1 90.9091 /CMSY10 rf /Fb 133[50 │ │ │ │ │ 59 4[44 44 46 2[56 62 93 31 2[31 62 2[51 62 50 1[54 11[86 │ │ │ │ │ 11[42 6[80 14[56 56 56 2[31 46[{}22 99.6264 /CMBX12 rf │ │ │ │ │ -/Fc 134[48 3[51 2[36 3[51 12[45 22[47 15[25 3[45 1[45 │ │ │ │ │ -1[45 45 45 3[25 44[{}13 90.9091 /CMSL10 rf /Fd 143[62 │ │ │ │ │ +/Fc 134[48 3[51 2[36 12[40 2[51 45 26[59 11[25 1[45 2[45 │ │ │ │ │ +2[45 45 45 3[25 44[{}14 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 │ │ │ │ │ @@ -3843,30 +3848,30 @@ │ │ │ │ │ 4724 y(maxsize)p Fk(.)0 5059 y Ff(1.2)135 b(Protot)l(yp)t(es)46 │ │ │ │ │ b(and)f(descriptions)g(of)g Fd(IIheap)d Ff(metho)t(ds)0 │ │ │ │ │ 5294 y Fk(This)f(section)j(con)m(tains)f(brief)f(descriptions)g │ │ │ │ │ (including)f(protot)m(yp)s(es)i(of)f(all)h(metho)s(ds)f(that)h(b)s │ │ │ │ │ (elong)f(to)h(the)0 5407 y Fj(IIheap)29 b Fk(ob)5 b(ject.)1927 │ │ │ │ │ 5656 y(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fk(2)p 136 100 1082 4 v │ │ │ │ │ -1264 w Fj(IIheap)29 b Fc(:)41 b Fi(DRAFT)30 b Fc(Jan)m(uary)g(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ -(\014elds)227 1234 y(b)m(y)31 b(a)f(call)i(to)f Fj(IIheap)p │ │ │ │ │ -1001 1234 29 4 v 33 w(setDefaultFields\(\))p Fk(.)111 │ │ │ │ │ -1433 y(2.)46 b Fj(void)h(IIheap_setDefaultFields)41 b(\()48 │ │ │ │ │ -b(IIheap)e(*heap)g(\))i(;)227 1589 y Fk(This)23 b(metho)s(d)f(sets)h │ │ │ │ │ -(the)h(structure's)e(\014elds)h(to)h(default)f(v)-5 b(alues:)37 │ │ │ │ │ -b Fj(size)22 b Fk(and)h Fj(maxsize)e Fk(are)i(zero,)j │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fk(2)p 136 100 1063 4 v │ │ │ │ │ +1245 w Fj(IIheap)29 b Fc(:)41 b Fi(DRAFT)30 b Fc(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2837 100 V 0 399 a Fb(1.2.1)112 │ │ │ │ │ +b(Basic)38 b(metho)s(ds)0 601 y Fk(As)d(usual,)h(there)f(are)g(four)f │ │ │ │ │ +(basic)h(metho)s(ds)g(to)g(supp)s(ort)e(ob)5 b(ject)36 │ │ │ │ │ +b(creation,)i(setting)e(default)f(\014elds,)h(clearing)0 │ │ │ │ │ +714 y(an)m(y)31 b(allo)s(cated)h(data,)f(and)f(free'ing)h(the)g(ob)5 │ │ │ │ │ +b(ject.)111 965 y(1.)46 b Fj(IIheap)g(*)i(IIheap_new)d(\()i(void)g(\))g │ │ │ │ │ +(;)227 1121 y Fk(This)25 b(metho)s(d)g(simply)f(allo)s(cates)k(storage) │ │ │ │ │ +f(for)e(the)h Fj(IIheap)d Fk(structure)i(and)g(then)g(sets)g(the)h │ │ │ │ │ +(default)f(\014elds)227 1234 y(b)m(y)31 b(a)f(call)i(to)f │ │ │ │ │ +Fj(IIheap)p 1001 1234 29 4 v 33 w(setDefaultFields\(\))p │ │ │ │ │ +Fk(.)111 1433 y(2.)46 b Fj(void)h(IIheap_setDefaultFields)41 │ │ │ │ │ +b(\()48 b(IIheap)e(*heap)g(\))i(;)227 1589 y Fk(This)23 │ │ │ │ │ +b(metho)s(d)f(sets)h(the)h(structure's)e(\014elds)h(to)h(default)f(v)-5 │ │ │ │ │ +b(alues:)37 b Fj(size)22 b Fk(and)h Fj(maxsize)e Fk(are)i(zero,)j │ │ │ │ │ Fj(heapLoc)p Fk(,)227 1702 y Fj(keys)j Fk(and)h Fj(values)f │ │ │ │ │ Fk(are)i Fj(NULL)p Fk(.)227 1858 y Fi(Err)-5 b(or)34 │ │ │ │ │ b(che)-5 b(cking:)40 b Fk(If)30 b Fj(heap)g Fk(is)g Fj(NULL)p │ │ │ │ │ Fk(,)f(an)i(error)f(message)h(is)g(prin)m(ted)f(and)f(the)i(program)f │ │ │ │ │ (exits.)111 2057 y(3.)46 b Fj(void)h(IIheap_clearData)c(\()48 │ │ │ │ │ b(IIheap)e(*heap)g(\))i(;)227 2213 y Fk(This)d(metho)s(d)h(clears)h(an) │ │ │ │ │ m(y)f(data)h(o)m(wned)f(b)m(y)g(the)g(ob)5 b(ject.)88 │ │ │ │ │ @@ -3903,17 +3908,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 1082 4 v 1264 100 a Fj(IIheap)28 │ │ │ │ │ -b Fc(:)41 b Fi(DRAFT)121 b Fc(Jan)m(uary)30 b(16,)i(2024)p │ │ │ │ │ -2771 100 V 1082 w Fk(3)111 399 y(2.)46 b Fj(void)h(IIheap_root)e(\()i │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1063 4 v 1245 100 a Fj(IIheap)28 │ │ │ │ │ +b Fc(:)41 b Fi(DRAFT)121 b Fc(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2790 100 V 1063 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 16, 2024 │ │ │ │ │ │ + 2 IIheap : DRAFT February 18, 2025 │ │ │ │ │ │ 1.2.1 Basic methods │ │ │ │ │ │ As usual, there are four basic methods to support object creation, setting default fields, clearing │ │ │ │ │ │ any allocated data, and free’ing the object. │ │ │ │ │ │ 1. IIheap * IIheap_new ( void ) ; │ │ │ │ │ │ This method simply allocates storage for the IIheap structure and then sets the default fields │ │ │ │ │ │ by a call to IIheap setDefaultFields(). │ │ │ │ │ │ 2. void IIheap_setDefaultFields ( IIheap *heap ) ; │ │ │ │ │ │ @@ -49,15 +49,15 @@ │ │ │ │ │ │ IVinit(). The entries in the three vectors are set to -1. │ │ │ │ │ │ Error checking: If heap is NULL, or if maxsize ≤ 0, an error message is printed and the │ │ │ │ │ │ program exits. │ │ │ │ │ │ 1.2.3 Utility methods │ │ │ │ │ │ 1. int IIheap_sizeOf ( IIheap *heap ) ; │ │ │ │ │ │ This method returns the number of bytes taken by this object. │ │ │ │ │ │ Error checking: If heap is NULL, an error message is printed and the program exits. │ │ │ │ │ │ - IIheap : DRAFT January 16, 2024 3 │ │ │ │ │ │ + IIheap : DRAFT February 18, 2025 3 │ │ │ │ │ │ 2. void IIheap_root ( IIheap *heap, int *pkey, int *pvalue ) ; │ │ │ │ │ │ This method fills *pid and *pkey with the key and value, respectively, of the root element, │ │ │ │ │ │ an element with minimum value. If size == 0 then -1 is returned. │ │ │ │ │ │ Error checking: If heap, pkey or pvalue is NULL, an error message is printed and the program │ │ │ │ │ │ exits. │ │ │ │ │ │ 3. void IIheap_insert ( IIheap *heap, int key, int value ) ; │ │ │ │ │ │ This method inserts the pair (key,value) into the heap. │ │ │ ├── ./usr/share/doc/spooles-doc/IV.ps.gz │ │ │ │ ├── IV.ps │ │ │ │ │ @@ -10,15 +10,15 @@ │ │ │ │ │ %%EndComments │ │ │ │ │ %%BeginDefaults │ │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ │ %%EndDefaults │ │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ │ %DVIPSCommandLine: dvips main -o IV.ps │ │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ │ -%DVIPSSource: TeX output 2024.01.16:2047 │ │ │ │ │ +%DVIPSSource: TeX output 2025.02.18:0318 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -1610,20 +1610,21 @@ │ │ │ │ │ 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 52 /four put │ │ │ │ │ -dup 54 /six put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ +dup 56 /eight put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 74 /J put │ │ │ │ │ +dup 70 /F put │ │ │ │ │ dup 97 /a put │ │ │ │ │ -dup 110 /n put │ │ │ │ │ +dup 98 /b put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ dup 114 /r put │ │ │ │ │ dup 117 /u put │ │ │ │ │ dup 121 /y put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ @@ -1807,89 +1808,93 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ │ -C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ │ -6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ │ -11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ │ -1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ │ -A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ │ -F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ │ -EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ │ -033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ │ -A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ │ -468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8A71FF9C085003EBB4F4 │ │ │ │ │ -3D271F5B16B1AAD3EBDC391F534AA46E545E9D8659DD19B309C3B7625A8396FA │ │ │ │ │ -2519464539D46E43ACB72952313C8497315E0319C08628023E8FC54D7D3BAC29 │ │ │ │ │ -D5AD8EFDABF0C33C7AFB7151A6606C62A87F0F5F783569AC4C881A992E3FE420 │ │ │ │ │ -297F7BC5147F3B2FA98450D2F8B07F7D229BC8BE06729920CFEC22556740E1CB │ │ │ │ │ -3DE09AC763C6D4A20AD1599C368FABD07BC35C16683F2A0311A88983415A9140 │ │ │ │ │ -2EFC4BC1B10DCAD4B2B8A28510E5BD39D6616D2B9B079ED3CF9C315B7DEC29D9 │ │ │ │ │ -251DFD0194B34EC175964C23383F23FFB2E41B698C405815D65EAFF9E9DD1DDE │ │ │ │ │ -30F77924656C288B8DDB2E5B0E7B1FAA66791DE3848EE6DE63AD0E945E49C6C7 │ │ │ │ │ -9FCA16E01F027F9EF7ACB55F02F5B0136480802F789F6FE14B430879979BA04D │ │ │ │ │ -F481AD4CF47E6847936F377FB04869F9A80E597301BFCAB718D8764094673876 │ │ │ │ │ -BCEF8FA3701608C84B3A0399A11D2E6AD922CCB7D72AF9EBFB30F4648A37A123 │ │ │ │ │ -CB8FB14BDC351692CF0CCAA5CA9383C2B23BAAA38700327EB743FBBE9EE04041 │ │ │ │ │ -13F5CEF4B3881BBC051C33369A82B3505B1CFD7D91AEF2E43EA728EE48E2D854 │ │ │ │ │ -5A7E516998ACDD4FD835FA901C5A21810A56D51FE919B2E58408EEB4DAEB487F │ │ │ │ │ -BA7F1D292CED902DF3533566D96DAD918319EA650D4FC7D9E0170CDE620F755B │ │ │ │ │ -0E7AE02D9B118481B26F5FF7060FBCFA2A682B6826F00679BCDA68794C05286D │ │ │ │ │ -B616DD08372ACDE0AE6E7EF116F0D36F16241ED4F0E8CCD80377792E3BB1343C │ │ │ │ │ -EEB22CC77738F7CBCBA32CF6C3979F6DF7ED81A89AE8928FD7CC550F2730BA88 │ │ │ │ │ -1B51CEDC63F4C47F261AFCAB7AC3CED20B15C97E714A460A1A3B16436B4A5149 │ │ │ │ │ -8F91DA4BE0B9B648534CE5F442117036B602DC91E2852BEA62F55803B833FDF7 │ │ │ │ │ -9F901AB87489E703DDEED1091A79DC73B4440BBBF2C7592B441187C4A3562204 │ │ │ │ │ -859F08BA3CE2A8ECCD5AAD13C50FB806FE79A388F1822C5608837CBDE526A044 │ │ │ │ │ -12E5CDE4A066932AF2ACA7E8FC6BA4603640944718752975B7DA6E906BE1EA01 │ │ │ │ │ -46736FF5D1AA1CC682D011B6039CF98C35E36D4F14ABC84A38B7203CC9A17756 │ │ │ │ │ -B2B0345276798F1A88A54AD9FEA0853C6DDF28525ED4F0B7380D14147012C2A4 │ │ │ │ │ -5B02888C986C76497EA4C729B0B82EE73C1A1A8E8F1ABF401E341028E9C15AF9 │ │ │ │ │ -354706D8DC07492921AD0932A46736C0D1B066D00287DACCC068FAE6A796EC89 │ │ │ │ │ -54D1D73AA88F3A5912BA9D3FF70065C8D0D0DAD1CD846501E06694374EFDBEC6 │ │ │ │ │ -931F644D5E8494AFC742423AD9A487658E310E0682BE19B8475F4D450487A686 │ │ │ │ │ -2B94494DEAF1C0F59DE82F2CE64BEE5E97F942FCFA1187ED6AA5761E951A7BF7 │ │ │ │ │ -9F842E34A4656C58B35A9E99F7E6762CEE11E0CF59FFD75D7382C5EE6DBB43F1 │ │ │ │ │ -ED219071D3FB22DBA90977723BB467C0490D042684C0724F40DCA3E0D8F1F4E7 │ │ │ │ │ -3C4F9A67BE6528185EAAFDD415224F7E256A4EA00111C17C746CBD80BF569A27 │ │ │ │ │ -D81195D7F79C1CCEEF30ED00D49F48B63E4B8D7953403A3710AE953CC1B76F0F │ │ │ │ │ -F523D777A6A186F262A602543F94AF7471DBE25FEBC207DB42DAF7DC9A5781FB │ │ │ │ │ -2131AD42869D966A734AAE3466DF1CE9D1BCFA72409A558C0AEE6A8E2FEAACB6 │ │ │ │ │ -2CDABCC28433034848ACF9FB4465D272E4AFC48572647F05F41C7A293CC5B595 │ │ │ │ │ -AD31555FB708A72962707348BC7033A8224BD42EB9D75FDF3AE9E6A9C960B330 │ │ │ │ │ -5137DF59F8E2E0D535F41524ABDF070745A4FA25CD8DFD38A5FF30A95452B875 │ │ │ │ │ -6569E8812631300D79A942C563AF174AC05C9F2D09D7D5D3C605F5A6B7F21B34 │ │ │ │ │ -18F270A993B050838E701A17938D1C156CBA7CA4BAC7C562CE9D7B758EAB25A9 │ │ │ │ │ -A6DFFC71F65561341847B776DF34061CE3D439B87B857626987EC93B3B95B8E8 │ │ │ │ │ -76FFB16B263675333FA10414FEED707FF7C366BF8B20FF8577CDEBEBCF1A5BCE │ │ │ │ │ -258C09C90175A5278B7C444A623E3331FDE5A6387B3E389540ED1E7E883958F3 │ │ │ │ │ -3A5C89CCD62256FA069DF4A5090FB17C1F1757C9209DAFB8A1F47182BF3E88D9 │ │ │ │ │ -0B5376B59EE165A761902759C8ED7F5AD301E7EB8B49CC09AF921DB45B7F8002 │ │ │ │ │ -AB32E73AAE53942DE0F9175D8446017006C9C0B93EF39C13B7A879F2F6DDFF16 │ │ │ │ │ -204BB24F976847CF006FD29332FCCB255B5116F7077A44F7066C39C81DC4BAD2 │ │ │ │ │ -40DB2753626C0102E5D047522ABC38EA294A699B8DFD9CA0A7980561A1062E90 │ │ │ │ │ -AB11EE286A9C238D9F721D9980D0A1828C2814972622D948CEE8C812C19A9A03 │ │ │ │ │ -608ED0AC138A436FFBF8BE3D1E66C87793416AF38ED9BC5424568A175FBDAA9E │ │ │ │ │ -D6FC11A7021693819B051562B5A59F32629E2D6019D69DD329BE1894A2B295E1 │ │ │ │ │ -1DCE9683B29AE126C56F26E5C595BF1A8249BDE231DBE8B066F7F62EF149B975 │ │ │ │ │ -A863969A4690504A5EA064721DA909B8157C0B39FBF8228D95CB655E406161E1 │ │ │ │ │ -148610FAEED7C5509880223C06A66DA19E10F94DC2DB481B26 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004FD597ED │ │ │ │ │ +EFDBC64ABD9B79386FB2427D1A63522195B1239C09F8CB3F8BD7A245A6DD82E3 │ │ │ │ │ +260C3889587626DFC5F7978E55F5524ABD6A3319CDD3D3F40D040044D51DA4E1 │ │ │ │ │ +6797EEAC7AA07C77EC6DB0E6E182B545A8BEF63B14F3FC07BAC09E7CD5C17ED6 │ │ │ │ │ +10080704B0DA4E9BA12F968DF8A58458D17E9A5B1F14A83DC51F5B161ADEE1CC │ │ │ │ │ +0183D82ED92C6FC7203C289949EDF0284D9893029FF5408E421324625F17C3E5 │ │ │ │ │ +2437C8F75A9D68EE1AF9174FEA6FC6BF793C7D2E497EA90396CF1A645E283B69 │ │ │ │ │ +8425F47C323587DF91E1D596DCB1E3A787C955D9D965A5E3E26ADF58B62AD5F9 │ │ │ │ │ +0C9AC784DE479780606354111E3202F215650DBBE1063A46F3C10B9EBC974DDA │ │ │ │ │ +A1A28DBBD43E9E5BFF000B12C787D0427928078F8EC5FE90DED97E6C129E8DEA │ │ │ │ │ +51F66504DB83764E52B0BA68DF7BE684C8959CB1D3345CC48221A9A4683306C0 │ │ │ │ │ +62B634E0A539383F0C7A788D9711EFF414869CCC5659D78CEBE009BF2463F56A │ │ │ │ │ +0ADC993348FE96DF7C250E13ED6504AACFE8F8DCA2D2048D9D8CFA127D363EAC │ │ │ │ │ +1F0630E2D1B621E6954038195D965B91FD974FA3F1B8B29D200A16CEBA645E2F │ │ │ │ │ +CEEE6FD49FBBD49E38AE67D4BFFCE91F1FC422554EC4409C5FA18D40FCD6D9B3 │ │ │ │ │ +2185ED1E0F98106D4339F086B05CA36E56EC22C60E2CE23F9C4CC403ACAD3F94 │ │ │ │ │ +4086B4DF6DFA0B7B4716417263E7B558535566AED2F6C2F9846A16D71A7930A7 │ │ │ │ │ +49232D3D16C4A01CF1A1998A06F40062ED329179A85668537C55D0BC24FC0010 │ │ │ │ │ +54DA83E2FC66B2A5D428E6A9BFC983253668C0ECE6CA36DBF97C4B7659D50842 │ │ │ │ │ +C65B36604840EEDA399B57E2DEFAC3E7FB031634CE33D04238F9854D2AAAF448 │ │ │ │ │ +34DA5F3BCCED3166FEEE82BB0BBA0A397CC2F95865CB52AABFF454D93B425809 │ │ │ │ │ +A26AC459F321FD23E2262FE816D06BAAECF32AAF167F84799AF80F9F88388D07 │ │ │ │ │ +0DB5FD57AFEE2850A8DFE977E6AE39CB3DC16DB1A163A583C86C6F775CE33521 │ │ │ │ │ +0081C0BBBAD6D30D26C66B28B38CEAC78FEA5FB3CC5853656B67C6D9D80EB30E │ │ │ │ │ +397558C9179AF5920F34DAB3F578DFCF0DBB137AED17D6325C23883E69EE4621 │ │ │ │ │ +34355A70C19EA68891E1CA937376901C85CDEE109F1665943E29A216DC00937A │ │ │ │ │ +B983A729A4654AD09187C0242D52FA4ADD0853EF4888864914D7D81C56578DD4 │ │ │ │ │ +3B51907032022E6E412D4F114675DEDCA8A9E85DC03A0B583FECD84432D15F70 │ │ │ │ │ +01F627BD6EC91F9FCFDA01BF40E1229B5F164309DBB641AD50970503DA2048C1 │ │ │ │ │ +DF8F36E8D252EE113F0B46677D9BAF376BAE18D74CFB0DBBD0C7E9D0A58BA3ED │ │ │ │ │ +1E5099CAE073EB5638617760AB57849893764EA9735173CD1EAB66884CEA7EE3 │ │ │ │ │ +8843327B2E145BD6FBB49102776B82BC511D109F8BE9E7E99DADABABEDC3CFD9 │ │ │ │ │ +393578FFD85907DFF2849E4CDE6FA4DEC7E1C150EBE4047FFB650F9548BE6D11 │ │ │ │ │ +0C51226A5436F18BF20A02E0F888F46B6AC3A8E8D927ECD3B5E095933AD3859F │ │ │ │ │ +5167C41D832EFCC4093BD2AFA7101AB430E57DAFC3590F05D3CBABB32BC203A0 │ │ │ │ │ +467B23BDB830487C9AA5B85BAC065F8538871B4180F8C4732E637DB090CFDE5A │ │ │ │ │ +3F4F2B5BFAFB848BAAD1A17CB076B34159601639BD93ECAB1214ACABF2C67FE2 │ │ │ │ │ +0658AA20B08681070FF56F1CC52144ABA8765D6E124D1CEA9BBA102808CE1BB2 │ │ │ │ │ +5EDF46BC7BBC2A5B49EE6EC28F5797A3969B057B21FCDBBD0E60848FF14F6CA3 │ │ │ │ │ +70F3060BDBB019B22722C99C7691760F013763B7FBEB62830AE215F195BF9F01 │ │ │ │ │ +21BF4377397E89574CFA47D123AA506A570A77BA6EB4AAB0B237A26154880293 │ │ │ │ │ +3952F832F72ECCB024F02385E5EE8566B165904B594E30D0700D033C6B429F6F │ │ │ │ │ +2A20BC774F442BC9CE29FCC81807C2768A8BC927A215558FBF36DC53F477F04A │ │ │ │ │ +41DA66E1A85B659EB761230977EAD7DA0150513D3323B143D4E2A61BCF03334C │ │ │ │ │ +C0EE3E1B06CFAF58ECC910BD81F0352B75FF1594D6A4EF504232D442174BE766 │ │ │ │ │ +0F8E703F97E21D25D4CD097549C31FEE7017C3916EFB02E7BF869172889827B6 │ │ │ │ │ +A48465EB7612BA3DBC6A9436C7167F149A25CE9F8E3F4F8DE3B5ADF6C0986CB3 │ │ │ │ │ +3A7E2DAB44AB489796461536F5F713017F2620AD03295CAE9285F08974AE0DF8 │ │ │ │ │ +D739260929619B509491AFF09C4CAEF9E65C2CA69470C907ECBF3AB6C955360D │ │ │ │ │ +05ABAC306DB51122A1ADC7EF0DD70FA299A45C505A83727D4598C86319EE9C06 │ │ │ │ │ +7218EFD4F40388354BCF1B79593D5AD221DF955D081F99F880E5CED07321AB3E │ │ │ │ │ +A2FCB8B05D54807D8E15E65B78DCE12989B9276350080C905DBB74CE9AA7E246 │ │ │ │ │ +5D3BAED292C562D4CF54617FCC6654496C7996D1ECE1EFF9258716AB763A12E6 │ │ │ │ │ +316E4C5587351A6DB011F58F6A15BC28BEBDC3836E0CB892807FEC228DC1B380 │ │ │ │ │ +92F7F42279F08D60F13D6A4CB425543C3644461461CBF6F27B6603F613D1FCF8 │ │ │ │ │ +A8410AD82D1498166AEB35D4125D7E2ADEAAB18BC04806AED53513F066E5F154 │ │ │ │ │ +3E13E863C50B9814EE2FB978D0D24A03FAF650CB6E2CADF1E6BE6BAF699AFC03 │ │ │ │ │ +E1A0EEB207B3B9A689ED5B373FE86686AD230BE6C18E1673DDA50E224B343EC5 │ │ │ │ │ +903BA0C8041C13607B50D5852AC7970B15C244E6EBA7D54B3086312CF04761D6 │ │ │ │ │ +7D3D75D51F20C371494AB81AB4A9838B20B483B851D01FEF41EA5C0B4755B964 │ │ │ │ │ +EB6E9B178051C556A010994EB88EAE641F4C1A0D7E0F98D5267E18AEF1AEA7E7 │ │ │ │ │ +9030A97DF89AFF621981C33B645FFB5F3BB2065A7661D11B26E0999561DF3580 │ │ │ │ │ +4A76A05DFAF8085525F8D5C01936F03C32E26E72569371C9EA3B8916F9DFC5FC │ │ │ │ │ +6A6F25A0FFDB981BA8B896393D75774D50828E6ADE903C45406E354703A4BC56 │ │ │ │ │ +2C49A47FEAC970DC433E3050C49F7FB945A9705BD8852D2D65D935F244D3B423 │ │ │ │ │ +EFAB84AAAAB8FBAFF50AFF372A533BCCEB5FC273DBADCF715776DF02A5DCBA9A │ │ │ │ │ +FBF265FAB4745D6475B33611EEE1EA95E7584E0BEEC7CA789AA69C8D03D6F8C0 │ │ │ │ │ +5B6844E2B901ACA560C0433B053D134866E567425174E47173679AAD4486A2D3 │ │ │ │ │ +369C29E4DD2CD6ACA1BE80ED8FF0A9C58A616D26E758BD8E6342624EC83FB590 │ │ │ │ │ +BD354B52B60BB054FAFE9AC63E1564FBC721FE8F276B0413EC89A2C85E5ED1B0 │ │ │ │ │ +3A9D83BE62A4488ADE7CE69971A8AF7E5862A4290EEF6F00D4171C7FFB360065 │ │ │ │ │ +92E72BF02BE27161AE0BB5516572A0BDC4F316FFB24B38484AC8D1FD4CD86062 │ │ │ │ │ +A2B5D03CF28C3A679C039A6EFDD4C9DA7E463AD60234C9F6BBEE48D87DD94D85 │ │ │ │ │ +842F495F3E25723718682CE4D6224CBBF4456F03077EDF736D65B9DDAB09470E │ │ │ │ │ +17742D82011FFA96BFE86B96E858F9352FCD20C3D46B77DBDEE54336EC2249EA │ │ │ │ │ +211F6DFFF5BEA1E5192BE1BAC0BDD5EDDB3D56C6F7C6E543561A0B39E5C1B04F │ │ │ │ │ +C683A7516B6E69D682455386DDA709929D621FA434D403E895AA0A77DBE1DFD2 │ │ │ │ │ +0D060DF82378880147ED97C6E8149686FA048710B113760AC1DA4512FF8556B3 │ │ │ │ │ +16E2447485B8C3CD58D0469C4A45FFB4CB0322BB284C02 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -3763,16 +3768,16 @@ │ │ │ │ │ 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 1[45 1[45 45 45 3[25 │ │ │ │ │ -44[{}13 90.9091 /CMSL10 rf /Ff 152[45 45 102[{}2 90.9091 │ │ │ │ │ +2[36 12[40 2[51 45 26[59 11[25 1[45 2[45 2[45 45 45 3[25 │ │ │ │ │ +44[{}14 90.9091 /CMSL10 rf /Ff 152[45 45 102[{}2 90.9091 │ │ │ │ │ /CMSY10 rf │ │ │ │ │ %DVIPSBitmapFont: Fg tcrm1095 10.95 1 │ │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ │ /Dotaccent/cedilla/ogonek/quotesinglbase.ts1 4{/.notdef}repeat │ │ │ │ │ /quotedblbase.ts1/.notdef/.notdef/twelveudash/threequartersemdash │ │ │ │ │ /afii61664.cap/arrowleft/arrowright/tieaccentlowercase/tieaccentcapital │ │ │ │ │ /tieaccentlowercase.new/tieaccentcapital.new/.notdef/afii61664.asc/uni2422 3 │ │ │ │ │ @@ -3899,28 +3904,28 @@ │ │ │ │ │ (v)m(enience)0 5294 y(mak)m(es)i(it)g(a)g(widely)f(used)g(ob)5 │ │ │ │ │ b(ject.)44 b(Originally)32 b(its)g(use)f(w)m(as)g(restricted)h(to)h │ │ │ │ │ (reading)e(and)g(writing)g Fi(*.iv)p Ff(f)p Fi(f,b)p │ │ │ │ │ Ff(g)0 5407 y Fj(\014les,)g(but)e(no)m(w)i Fi(IV)e Fj(ob)5 │ │ │ │ │ b(jects)32 b(app)s(ear)d(m)m(uc)m(h)i(more)f(frequen)m(tly)h(in)f(new)g │ │ │ │ │ (dev)m(elopmen)m(t.)1927 5656 y(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fj(2)p 136 100 1183 4 v │ │ │ │ │ -1365 w Fi(IV)30 b Fe(:)g Fd(DRAFT)g Fe(Jan)m(uary)g(16,)i(2024)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 │ │ │ │ │ -Fj('s)i(has)h(b)s(een)227 1252 y(allo)s(cated)i(b)m(y)e(this)g(ob)5 │ │ │ │ │ -b(ject)33 b(and)f(can)g(b)s(e)g(free'd)g(b)m(y)g(the)g(ob)5 │ │ │ │ │ -b(ject.)47 b(When)32 b Fi(nowned)46 b(=)h(0)32 b Fj(but)f │ │ │ │ │ -Fi(maxsize)46 b(>)227 1365 y(0)p Fj(,)31 b(this)f(ob)5 │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fj(2)p 136 100 1164 4 v │ │ │ │ │ +1346 w Fi(IV)29 b Fe(:)i Fd(DRAFT)f Fe(F)-8 b(ebruary)30 │ │ │ │ │ +b(18,)i(2025)p 2737 100 V 0 399 a Fc(1.1)135 b(Data)46 │ │ │ │ │ +b(Structure)0 620 y Fj(The)30 b Fi(IV)g Fj(structure)g(has)g(four)f │ │ │ │ │ +(\014elds.)137 791 y Fg(\210)45 b Fi(int)i(size)29 b │ │ │ │ │ +Fj(:)41 b(presen)m(t)30 b(size)i(of)e(the)h(v)m(ector.)137 │ │ │ │ │ +965 y Fg(\210)45 b Fi(int)i(maxsize)29 b Fj(:)40 b(maxim)m(um)30 │ │ │ │ │ +b(size)i(of)e(the)h(v)m(ector.)137 1139 y Fg(\210)45 │ │ │ │ │ +b Fi(int)i(owned)30 b Fj(:)44 b(o)m(wner)32 b(\015ag)g(for)f(the)h │ │ │ │ │ +(data.)46 b(When)31 b Fi(owned)46 b(=)i(1)p Fj(,)32 b(storage)h(for)f │ │ │ │ │ +Fi(maxsize)d(int)p Fj('s)i(has)h(b)s(een)227 1252 y(allo)s(cated)i(b)m │ │ │ │ │ +(y)e(this)g(ob)5 b(ject)33 b(and)f(can)g(b)s(e)g(free'd)g(b)m(y)g(the)g │ │ │ │ │ +(ob)5 b(ject.)47 b(When)32 b Fi(nowned)46 b(=)h(0)32 │ │ │ │ │ +b Fj(but)f Fi(maxsize)46 b(>)227 1365 y(0)p Fj(,)31 b(this)f(ob)5 │ │ │ │ │ b(ject)31 b(p)s(oin)m(ts)f(to)h(en)m(tries)h(that)f(ha)m(v)m(e)g(b)s │ │ │ │ │ (een)f(allo)s(cated)i(elsewhere,)f(and)f(these)h(en)m(tries)g(will)g │ │ │ │ │ (not)227 1478 y(b)s(e)f(free'd)g(b)m(y)h(this)f(ob)5 │ │ │ │ │ b(ject.)137 1652 y Fg(\210)45 b Fi(int)i(*vec)29 b Fj(:)41 │ │ │ │ │ b(p)s(oin)m(ter)30 b(to)i(the)e(base)h(address)e(of)i(the)f │ │ │ │ │ Fd(int)h Fj(v)m(ector)0 1824 y(The)36 b Fi(size)p Fj(,)g │ │ │ │ │ Fi(maxsize)p Fj(,)g Fi(owned)f Fj(and)g Fi(vec)h Fj(\014elds)f(need)h │ │ │ │ │ @@ -3967,17 +3972,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 1183 4 v 1364 100 a Fi(IV)30 │ │ │ │ │ -b Fe(:)h Fd(DRAFT)121 b Fe(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2670 100 V 1183 w Fj(3)0 399 y Fa(1.2.2)112 b(Instance)38 │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1164 4 v 1345 100 a Fi(IV)30 │ │ │ │ │ +b Fe(:)h Fd(DRAFT)121 b Fe(F)-8 b(ebruary)30 b(18,)h(2025)p │ │ │ │ │ +2689 100 V 1164 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 │ │ │ │ │ @@ -4033,30 +4038,30 @@ │ │ │ │ │ Fi(loc)p Fj('th)f(en)m(try)g(of)h(the)f(v)m(ector)i(to)f │ │ │ │ │ Fi(value)p Fj(.)227 5294 y Fd(Err)-5 b(or)32 b(che)-5 │ │ │ │ │ b(cking:)40 b Fj(If)27 b Fi(iv)p Fj(,)i Fi(loc)47 b(<)g(0)28 │ │ │ │ │ b Fj(or)g Fi(loc)47 b(>=)g(size)p Fj(,)28 b(or)g(if)h │ │ │ │ │ Fi(vec)e Fj(is)h Fi(NULL)g Fj(an)g(error)g(message)h(is)f(prin)m(ted) │ │ │ │ │ 227 5407 y(and)i(the)h(program)f(exits.)p eop end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fj(4)p 136 100 1183 4 v │ │ │ │ │ -1365 w Fi(IV)30 b Fe(:)g Fd(DRAFT)g Fe(Jan)m(uary)g(16,)i(2024)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 │ │ │ │ │ -973 y(the)35 b Fi(vec)e Fj(\014eld)g(is)h(set)h(to)g │ │ │ │ │ -Fi(entries)p Fj(,)e(the)h Fi(size)f Fj(and)g Fi(maxsize)g │ │ │ │ │ -Fj(\014elds)g(are)h(set)h(to)g Fi(size)e Fj(,)i(and)e │ │ │ │ │ -Fi(owned)g Fj(is)227 1086 y(set)f(to)f(zero)h(b)s(ecause)f(the)g(ob)5 │ │ │ │ │ -b(ject)32 b(do)s(es)f(not)g(o)m(wn)g(the)g(en)m(tries.)43 │ │ │ │ │ -b(If)30 b Fi(entries)f Fj(is)i Fi(NULL)f Fj(and)g(if)h │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fj(4)p 136 100 1164 4 v │ │ │ │ │ +1346 w Fi(IV)29 b Fe(:)i Fd(DRAFT)f Fe(F)-8 b(ebruary)30 │ │ │ │ │ +b(18,)i(2025)p 2737 100 V 0 399 a Fa(1.2.3)112 b(Initializer)38 │ │ │ │ │ +b(metho)s(ds)111 596 y Fj(1.)46 b Fi(void)h(IV_init)f(\()h(IV)g(*iv,)g │ │ │ │ │ +(int)g(size,)f(int)h(*entries)f(\))h(;)227 747 y Fj(This)36 │ │ │ │ │ +b(metho)s(d)g(initializes)j(the)d(ob)5 b(ject)38 b(giv)m(en)f(a)g(size) │ │ │ │ │ +h(for)e(the)h(v)m(ector)h(and)e(a)h(p)s(ossible)f(p)s(oin)m(ter)g(to)i │ │ │ │ │ +(the)227 860 y(v)m(ectors)28 b(storage.)41 b(An)m(y)26 │ │ │ │ │ +b(previous)g(data)h(with)f(a)h(call)g(to)g Fi(IV)p 2277 │ │ │ │ │ +860 29 4 v 34 w(clearData\(\))p Fj(.)36 b(If)26 b Fi(entries)46 │ │ │ │ │ +b(!=)h(NULL)25 b Fj(then)227 973 y(the)35 b Fi(vec)e │ │ │ │ │ +Fj(\014eld)g(is)h(set)h(to)g Fi(entries)p Fj(,)e(the)h │ │ │ │ │ +Fi(size)f Fj(and)g Fi(maxsize)g Fj(\014elds)g(are)h(set)h(to)g │ │ │ │ │ +Fi(size)e Fj(,)i(and)e Fi(owned)g Fj(is)227 1086 y(set)f(to)f(zero)h(b) │ │ │ │ │ +s(ecause)f(the)g(ob)5 b(ject)32 b(do)s(es)f(not)g(o)m(wn)g(the)g(en)m │ │ │ │ │ +(tries.)43 b(If)30 b Fi(entries)f Fj(is)i Fi(NULL)f Fj(and)g(if)h │ │ │ │ │ Fi(size)47 b(>)g(0)227 1199 y Fj(then)30 b(a)h(v)m(ector)h(is)e(allo)s │ │ │ │ │ (cated)j(b)m(y)d(the)h(ob)5 b(ject,)31 b(and)f(the)h(ob)5 │ │ │ │ │ b(ject)31 b(o)m(wns)f(this)g(storage.)227 1350 y Fd(Err)-5 │ │ │ │ │ b(or)30 b(che)-5 b(cking:)38 b Fj(If)26 b Fi(iv)f Fj(is)h │ │ │ │ │ Fi(NULL)e Fj(or)i Fi(size)47 b(<)g(0)p Fj(,)27 b(an)f(error)f(message)i │ │ │ │ │ (is)f(prin)m(ted)g(and)f(the)h(program)g(exits.)111 1540 │ │ │ │ │ y(2.)46 b Fi(void)h(IV_init1)e(\()j(IV)f(*iv,)g(int)g(size)f(\))i(;)227 │ │ │ │ │ @@ -4122,17 +4127,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 1183 4 v 1364 100 a Fi(IV)30 │ │ │ │ │ -b Fe(:)h Fd(DRAFT)121 b Fe(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2670 100 V 1183 w Fj(5)227 399 y(en)m(tries)e(and)e Fi(IV)p │ │ │ │ │ +TeXDict begin 5 4 bop 91 100 1164 4 v 1345 100 a Fi(IV)30 │ │ │ │ │ +b Fe(:)h Fd(DRAFT)121 b Fe(F)-8 b(ebruary)30 b(18,)h(2025)p │ │ │ │ │ +2689 100 V 1164 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 │ │ │ │ │ @@ -4193,19 +4198,19 @@ │ │ │ │ │ (;)227 5294 y Fj(This)24 b(metho)s(d)f(examines)i(the)g(en)m(tries)g │ │ │ │ │ (in)f(the)g(v)m(ector.)40 b(Let)25 b Fi(k)f Fj(b)s(e)g(en)m(try)g │ │ │ │ │ Fi(i)g Fj(in)g(the)h(v)m(ector.)40 b(If)24 b Fi(tags[k])46 │ │ │ │ │ b(!=)227 5407 y(keepTag)p Fj(,)28 b(the)i(en)m(try)g(is)g(mo)m(v)m(ed)g │ │ │ │ │ (to)h(the)f(end)f(of)g(the)h(v)m(ector,)i(otherwise)e(it)g(is)g(mo)m(v) │ │ │ │ │ m(ed)g(to)h(the)f(b)s(eginning)p eop end │ │ │ │ │ %%Page: 6 6 │ │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fj(6)p 136 100 1183 4 v │ │ │ │ │ -1365 w Fi(IV)30 b Fe(:)g Fd(DRAFT)g Fe(Jan)m(uary)g(16,)i(2024)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 │ │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fj(6)p 136 100 1164 4 v │ │ │ │ │ +1346 w Fi(IV)29 b Fe(:)i Fd(DRAFT)f Fe(F)-8 b(ebruary)30 │ │ │ │ │ +b(18,)i(2025)p 2737 100 V 227 399 a Fj(of)e(the)g(v)m(ector.)42 │ │ │ │ │ +b(The)29 b(size)h(of)g(the)g(v)m(ector)h(is)e(reset)i(to)f(b)s(e)f(the) │ │ │ │ │ +g(n)m(um)m(b)s(er)g(of)g(tagged)i(en)m(tries)g(that)f(are)g(no)m(w)227 │ │ │ │ │ 511 y(in)g(the)h(leading)g(lo)s(cations.)227 660 y Fd(Err)-5 │ │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fj(If)30 b Fi(iv)g Fj(of)h │ │ │ │ │ Fi(tags)e Fj(is)h Fi(NULL)f Fj(an)i(error)f(message)h(is)g(prin)m(ted)f │ │ │ │ │ (and)f(the)i(program)f(exits.)111 844 y(9.)46 b Fi(void)h │ │ │ │ │ (IV_filterPurge)d(\()j(IV)g(*iv,)g(int)g(tags[],)f(int)h(purgeTag)e(\)) │ │ │ │ │ j(;)227 992 y Fj(This)24 b(metho)s(d)f(examines)i(the)g(en)m(tries)g │ │ │ │ │ (in)f(the)g(v)m(ector.)40 b(Let)25 b Fi(k)f Fj(b)s(e)g(en)m(try)g │ │ │ │ │ @@ -4262,17 +4267,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 1183 4 v 1364 100 a Fi(IV)30 │ │ │ │ │ -b Fe(:)h Fd(DRAFT)121 b Fe(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2670 100 V 1183 w Fj(7)66 399 y(15.)46 b Fi(int)h(IV_findValue)e(\()i │ │ │ │ │ +TeXDict begin 7 6 bop 91 100 1164 4 v 1345 100 a Fi(IV)30 │ │ │ │ │ +b Fe(:)h Fd(DRAFT)121 b Fe(F)-8 b(ebruary)30 b(18,)h(2025)p │ │ │ │ │ +2689 100 V 1164 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 │ │ │ │ │ @@ -4343,30 +4348,31 @@ │ │ │ │ │ 5294 y Fd(Err)-5 b(or)36 b(che)-5 b(cking:)43 b Fj(If)31 │ │ │ │ │ b Fi(iv)g Fj(or)h Fi(fn)f Fj(are)i Fi(NULL)p Fj(,)d(or)i(if)g │ │ │ │ │ Fi(fn)f Fj(is)h(not)g(of)g(the)g(form)g Fi(*.ivf)e Fj(\(for)i(a)g │ │ │ │ │ (formatted)g(\014le\))227 5407 y(or)f Fi(*.ivb)e Fj(\(for)h(a)h(binary) │ │ │ │ │ e(\014le\),)j(an)e(error)g(message)h(is)g(prin)m(ted)f(and)f(the)i │ │ │ │ │ (metho)s(d)f(returns)f(zero.)p eop end │ │ │ │ │ %%Page: 8 8 │ │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fj(8)p 136 100 1183 4 v │ │ │ │ │ -1365 w Fi(IV)30 b Fe(:)g Fd(DRAFT)g Fe(Jan)m(uary)g(16,)i(2024)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 │ │ │ │ │ -b Fi(iv)g Fj(or)g Fi(fp)g Fj(are)h Fi(NULL)e Fj(an)h(error)g(message)i │ │ │ │ │ -(is)e(prin)m(ted)g(and)g(zero)h(is)g(returned.)111 1006 │ │ │ │ │ -y(3.)46 b Fi(int)h(IV_readFromBinaryFile)42 b(\()48 b(IV)f(*iv,)f(FILE) │ │ │ │ │ -h(*fp)g(\))g(;)227 1158 y Fj(This)34 b(metho)s(d)h(reads)f(in)h(an)f │ │ │ │ │ -Fi(IV)g Fj(ob)5 b(ject)36 b(from)e(a)i(binary)e(\014le.)54 │ │ │ │ │ -b(If)34 b(there)h(are)g(no)g(errors)f(in)h(reading)g(the)227 │ │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fj(8)p 136 100 1164 4 v │ │ │ │ │ +1346 w Fi(IV)29 b Fe(:)i Fd(DRAFT)f Fe(F)-8 b(ebruary)30 │ │ │ │ │ +b(18,)i(2025)p 2737 100 V 111 399 a Fj(2.)46 b Fi(int)h │ │ │ │ │ +(IV_readFromFormattedFile)41 b(\()48 b(IV)f(*iv,)g(FILE)f(*fp)h(\))h(;) │ │ │ │ │ +227 550 y Fj(This)27 b(metho)s(d)g(reads)h(in)f(an)g │ │ │ │ │ +Fi(IV)g Fj(ob)5 b(ject)29 b(from)e(a)h(formatted)g(\014le.)40 │ │ │ │ │ +b(If)27 b(there)h(are)g(no)g(errors)f(in)g(reading)h(the)227 │ │ │ │ │ +663 y(data,)k(the)e(v)-5 b(alue)31 b Fi(1)f Fj(is)g(returned.)40 │ │ │ │ │ +b(If)30 b(an)g(IO)g(error)g(is)g(encoun)m(tered)h(from)f │ │ │ │ │ +Fi(fscanf)p Fj(,)f(zero)i(is)g(returned.)227 815 y Fd(Err)-5 │ │ │ │ │ +b(or)34 b(che)-5 b(cking:)40 b Fj(If)30 b Fi(iv)g Fj(or)g │ │ │ │ │ +Fi(fp)g Fj(are)h Fi(NULL)e Fj(an)h(error)g(message)i(is)e(prin)m(ted)g │ │ │ │ │ +(and)g(zero)h(is)g(returned.)111 1006 y(3.)46 b Fi(int)h │ │ │ │ │ +(IV_readFromBinaryFile)42 b(\()48 b(IV)f(*iv,)f(FILE)h(*fp)g(\))g(;)227 │ │ │ │ │ +1158 y Fj(This)34 b(metho)s(d)h(reads)f(in)h(an)f Fi(IV)g │ │ │ │ │ +Fj(ob)5 b(ject)36 b(from)e(a)i(binary)e(\014le.)54 b(If)34 │ │ │ │ │ +b(there)h(are)g(no)g(errors)f(in)h(reading)g(the)227 │ │ │ │ │ 1271 y(data,)d(the)e(v)-5 b(alue)31 b Fi(1)f Fj(is)g(returned.)40 │ │ │ │ │ b(If)30 b(an)g(IO)g(error)g(is)g(encoun)m(tered)h(from)f │ │ │ │ │ Fi(fread)p Fj(,)f(zero)i(is)g(returned.)227 1423 y Fd(Err)-5 │ │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fj(If)30 b Fi(iv)g Fj(or)g │ │ │ │ │ Fi(fp)g Fj(are)h Fi(NULL)e Fj(an)h(error)g(message)i(is)e(prin)m(ted)g │ │ │ │ │ (and)g(zero)h(is)g(returned.)111 1614 y(4.)46 b Fi(int)h │ │ │ │ │ (IV_writeToFile)d(\()k(IV)f(*iv,)f(char)h(*fn)g(\))g(;)227 │ │ │ │ │ @@ -4431,17 +4437,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 1183 4 v 1364 100 a Fi(IV)30 │ │ │ │ │ -b Fe(:)h Fd(DRAFT)121 b Fe(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2670 100 V 1183 w Fj(9)66 399 y(10.)46 b Fi(int)h(IV_writeForMatlab)c │ │ │ │ │ +TeXDict begin 9 8 bop 91 100 1164 4 v 1345 100 a Fi(IV)30 │ │ │ │ │ +b Fe(:)h Fd(DRAFT)121 b Fe(F)-8 b(ebruary)30 b(18,)h(2025)p │ │ │ │ │ +2689 100 V 1164 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 16, 2024 │ │ │ │ │ │ + 2 IV : DRAFT February 18, 2025 │ │ │ │ │ │ 1.1 Data Structure │ │ │ │ │ │ The IV structure has four fields. │ │ │ │ │ │ • int size : present size of the vector. │ │ │ │ │ │ • int maxsize : maximum size of the vector. │ │ │ │ │ │ • int owned : owner flag for the data. When owned = 1, storage for maxsize int’s has been │ │ │ │ │ │ allocated by this object and can be free’d by the object. When nowned = 0 but maxsize > │ │ │ │ │ │ 0, this object points to entries that have been allocated elsewhere, and these entries will not │ │ │ │ │ │ @@ -58,15 +58,15 @@ │ │ │ │ │ │ the storage for vec is free’d by a call to IVfree(). The structure’s default fields are then set │ │ │ │ │ │ with a call to IV setDefaultFields(). │ │ │ │ │ │ Error checking: If iv is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 4. void IV_free ( IV *iv ) ; │ │ │ │ │ │ This method releases any storage by a call to IV clearData() then free’s the storage for the │ │ │ │ │ │ structure with a call to free(). │ │ │ │ │ │ Error checking: If iv is NULL, an error message is printed and the program exits. │ │ │ │ │ │ - IV : DRAFT January 16, 2024 3 │ │ │ │ │ │ + IV : DRAFT February 18, 2025 3 │ │ │ │ │ │ 1.2.2 Instance methods │ │ │ │ │ │ These method allow access to information in the data fields without explicitly following pointers. │ │ │ │ │ │ There is overhead involved with these method due to the function call and error checking inside │ │ │ │ │ │ the methods. │ │ │ │ │ │ 1. int IV_owned ( IV *iv ) ; │ │ │ │ │ │ This method returns the value of owned. If owned = 1, then the object owns the data pointed │ │ │ │ │ │ to by vec and will free this data with a call to IVfree() when its data is cleared by a call to │ │ │ │ │ │ @@ -91,15 +91,15 @@ │ │ │ │ │ │ the vector. │ │ │ │ │ │ Error checking: If iv, psize or pentries is NULL an error message is printed and the program │ │ │ │ │ │ exits. │ │ │ │ │ │ 7. void IV_setEntry ( IV *iv, int loc, int value ) ; │ │ │ │ │ │ This method sets the loc’th entry of the vector to value. │ │ │ │ │ │ Error checking: If iv, loc < 0 or loc >= size, or if vec is NULL an error message is printed │ │ │ │ │ │ and the program exits. │ │ │ │ │ │ - 4 IV : DRAFT January 16, 2024 │ │ │ │ │ │ + 4 IV : DRAFT February 18, 2025 │ │ │ │ │ │ 1.2.3 Initializer methods │ │ │ │ │ │ 1. void IV_init ( IV *iv, int size, int *entries ) ; │ │ │ │ │ │ This method initializes the object given a size for the vector and a possible pointer to the │ │ │ │ │ │ vectors storage. Any previous data with a call to IV clearData(). If entries != NULL then │ │ │ │ │ │ the vec field is set to entries, the size and maxsize fields are set to size , and owned is │ │ │ │ │ │ set to zero because the object does not own the entries. If entries is NULL and if size > 0 │ │ │ │ │ │ then a vector is allocated by the object, and the object owns this storage. │ │ │ │ │ │ @@ -128,15 +128,15 @@ │ │ │ │ │ │ Error checking: If iv is NULL or newsize < 0, or if 0 < maxsize < newsize and owned == │ │ │ │ │ │ 0, an error message is printed and the program exits. │ │ │ │ │ │ 1.2.4 Utility methods │ │ │ │ │ │ 1. void IV_shiftBase ( IV *iv, int offset ) ; │ │ │ │ │ │ This method shifts the base entries of the vector and decrements the present size and max- │ │ │ │ │ │ imum size of the vector by offset. This is a dangerous method to use because the state of │ │ │ │ │ │ the vector is lost, namely vec, the base of the entries, is corrupted. If the object owns its │ │ │ │ │ │ - IV : DRAFT January 16, 2024 5 │ │ │ │ │ │ + IV : DRAFT February 18, 2025 5 │ │ │ │ │ │ entries and IV free(), IV setSize() or IV setMaxsize() is called before the base has been │ │ │ │ │ │ shifted back to its original position, a segmentation violation will likely result. This is a very │ │ │ │ │ │ useful method, but use with caution. │ │ │ │ │ │ Error checking: If iv is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 2. void IV_push ( IV *iv, int val ) ; │ │ │ │ │ │ This method pushes an entry onto the vector. If the vector is full, i.e., if size = maxsize │ │ │ │ │ │ - 1, then the size of the vector is doubled if possible. If the storage cannot grow, i.e., if the │ │ │ │ │ │ @@ -164,15 +164,15 @@ │ │ │ │ │ │ the program exits. │ │ │ │ │ │ 7. int IV_sizeOf ( IV *iv ) ; │ │ │ │ │ │ This method returns the number of bytes taken by the object. │ │ │ │ │ │ Error checking: If iv is NULL an error message is printed and the program exits. │ │ │ │ │ │ 8. void IV_filterKeep ( IV *iv, int tags[], int keepTag ) ; │ │ │ │ │ │ This method examines the entries in the vector. Let k be entry i in the vector. If tags[k] != │ │ │ │ │ │ keepTag, the entry is moved to the end of the vector, otherwise it is moved to the beginning │ │ │ │ │ │ - 6 IV : DRAFT January 16, 2024 │ │ │ │ │ │ + 6 IV : DRAFT February 18, 2025 │ │ │ │ │ │ of the vector. The size of the vector is reset to be the number of tagged entries that are now │ │ │ │ │ │ in the leading locations. │ │ │ │ │ │ Error checking: If iv of tags is NULL an error message is printed and the program exits. │ │ │ │ │ │ 9. void IV_filterPurge ( IV *iv, int tags[], int purgeTag ) ; │ │ │ │ │ │ This method examines the entries in the vector. Let k be entry i in the vector. If tags[k] == │ │ │ │ │ │ purgeTag, the entry is moved to the end of the vector, otherwise it is moved to the beginning │ │ │ │ │ │ of the vector. The size of the vector is reset to be the number of untagged entries that are │ │ │ │ │ │ @@ -201,15 +201,15 @@ │ │ │ │ │ │ Error checking: If iv is NULL or if loc is out of range, an error message is printed and the │ │ │ │ │ │ program exits. │ │ │ │ │ │ 14. int IV_decrement ( IV *iv, int loc ) ; │ │ │ │ │ │ This method decrements the loc’th location of the iv object by one and returns the new │ │ │ │ │ │ value. │ │ │ │ │ │ Error checking: If iv is NULL or if loc is out of range, an error message is printed and the │ │ │ │ │ │ program exits. │ │ │ │ │ │ - IV : DRAFT January 16, 2024 7 │ │ │ │ │ │ + IV : DRAFT February 18, 2025 7 │ │ │ │ │ │ 15. int IV_findValue ( IV *iv, int value ) ; │ │ │ │ │ │ This method looks for value in its entries. If value is present, the first location is returned, │ │ │ │ │ │ otherwise -1 is returned. The cost is linear in the number of entries. │ │ │ │ │ │ Error checking: If iv is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 16. int IV_findValueAscending ( IV *iv, int value ) ; │ │ │ │ │ │ Thismethodlooksforvalueinitsentries. Ifvalueispresent, alocation isreturned, otherwise │ │ │ │ │ │ -1 is returned. This method assumes that the entries are sorted in ascending order. The cost │ │ │ │ │ │ @@ -238,15 +238,15 @@ │ │ │ │ │ │ is size, followed by the size entries found in vec[]. │ │ │ │ │ │ 1. int IV_readFromFile ( IV *iv, char *fn ) ; │ │ │ │ │ │ This method reads an IV object from a formatted file. It tries to open the file and if it is │ │ │ │ │ │ successful, it then calls IV readFromFormattedFile() or IV readFromBinaryFile(), closes │ │ │ │ │ │ the file and returns the value returned from the called routine. │ │ │ │ │ │ Error checking: If iv or fn are NULL, or if fn is not of the form *.ivf (for a formatted file) │ │ │ │ │ │ or *.ivb (for a binary file), an error message is printed and the method returns zero. │ │ │ │ │ │ - 8 IV : DRAFT January 16, 2024 │ │ │ │ │ │ + 8 IV : DRAFT February 18, 2025 │ │ │ │ │ │ 2. int IV_readFromFormattedFile ( IV *iv, FILE *fp ) ; │ │ │ │ │ │ This method reads in an IV object from a formatted file. If there are no errors in reading the │ │ │ │ │ │ data, the value 1 is returned. If an IO error is encountered from fscanf, zero is returned. │ │ │ │ │ │ Error checking: If iv or fp are NULL an error message is printed and zero is returned. │ │ │ │ │ │ 3. int IV_readFromBinaryFile ( IV *iv, FILE *fp ) ; │ │ │ │ │ │ This method reads in an IV object from a binary file. If there are no errors in reading the │ │ │ │ │ │ data, the value 1 is returned. If an IO error is encountered from fread, zero is returned. │ │ │ │ │ │ @@ -274,15 +274,15 @@ │ │ │ │ │ │ This method writes the header and statistics to a file. The value 1 is returned. │ │ │ │ │ │ Error checking: If iv or fp are NULL an error message is printed and zero is returned. │ │ │ │ │ │ 9. int IV_fp80 ( IV *iv, FILE *fp, int column, int *pierr ) ; │ │ │ │ │ │ This method is just a wrapper around the IVfp80() method for an int method. The entries │ │ │ │ │ │ in the vector are found on lines with eighty columns and are separated by a whitespace. The │ │ │ │ │ │ value 1 is returned. │ │ │ │ │ │ Error checking: If iv or fp or pierr are NULL, an error message is printed and zero is returned. │ │ │ │ │ │ - IV : DRAFT January 16, 2024 9 │ │ │ │ │ │ + IV : DRAFT February 18, 2025 9 │ │ │ │ │ │ 10. int IV_writeForMatlab ( IV *iv, char *name, FILE *fp ) ; │ │ │ │ │ │ This method writes the entries of the vector to a file suitable to be read by Matlab. The │ │ │ │ │ │ character string name is the name of the vector, e.g, if name = "A", then we have lines of the │ │ │ │ │ │ form │ │ │ │ │ │ A(1) = 32 ; │ │ │ │ │ │ A(2) = -433 ; │ │ │ │ │ │ ... │ │ │ ├── ./usr/share/doc/spooles-doc/IVL.ps.gz │ │ │ │ ├── IVL.ps │ │ │ │ │ @@ -10,15 +10,15 @@ │ │ │ │ │ %%EndComments │ │ │ │ │ %%BeginDefaults │ │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ │ %%EndDefaults │ │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ │ %DVIPSCommandLine: dvips main -o IVL.ps │ │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ │ -%DVIPSSource: TeX output 2024.01.16:2047 │ │ │ │ │ +%DVIPSSource: TeX output 2025.02.18:0318 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -1857,20 +1857,21 @@ │ │ │ │ │ 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 52 /four put │ │ │ │ │ -dup 54 /six put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ +dup 56 /eight put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 74 /J put │ │ │ │ │ +dup 70 /F put │ │ │ │ │ dup 97 /a put │ │ │ │ │ -dup 110 /n put │ │ │ │ │ +dup 98 /b put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ dup 114 /r put │ │ │ │ │ dup 117 /u put │ │ │ │ │ dup 121 /y put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ @@ -2054,89 +2055,93 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ │ -C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ │ -6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ │ -11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ │ -1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ │ -A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ │ -F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ │ -EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ │ -033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ │ -A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ │ -468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8A71FF9C085003EBB4F4 │ │ │ │ │ -3D271F5B16B1AAD3EBDC391F534AA46E545E9D8659DD19B309C3B7625A8396FA │ │ │ │ │ -2519464539D46E43ACB72952313C8497315E0319C08628023E8FC54D7D3BAC29 │ │ │ │ │ -D5AD8EFDABF0C33C7AFB7151A6606C62A87F0F5F783569AC4C881A992E3FE420 │ │ │ │ │ -297F7BC5147F3B2FA98450D2F8B07F7D229BC8BE06729920CFEC22556740E1CB │ │ │ │ │ -3DE09AC763C6D4A20AD1599C368FABD07BC35C16683F2A0311A88983415A9140 │ │ │ │ │ -2EFC4BC1B10DCAD4B2B8A28510E5BD39D6616D2B9B079ED3CF9C315B7DEC29D9 │ │ │ │ │ -251DFD0194B34EC175964C23383F23FFB2E41B698C405815D65EAFF9E9DD1DDE │ │ │ │ │ -30F77924656C288B8DDB2E5B0E7B1FAA66791DE3848EE6DE63AD0E945E49C6C7 │ │ │ │ │ -9FCA16E01F027F9EF7ACB55F02F5B0136480802F789F6FE14B430879979BA04D │ │ │ │ │ -F481AD4CF47E6847936F377FB04869F9A80E597301BFCAB718D8764094673876 │ │ │ │ │ -BCEF8FA3701608C84B3A0399A11D2E6AD922CCB7D72AF9EBFB30F4648A37A123 │ │ │ │ │ -CB8FB14BDC351692CF0CCAA5CA9383C2B23BAAA38700327EB743FBBE9EE04041 │ │ │ │ │ -13F5CEF4B3881BBC051C33369A82B3505B1CFD7D91AEF2E43EA728EE48E2D854 │ │ │ │ │ -5A7E516998ACDD4FD835FA901C5A21810A56D51FE919B2E58408EEB4DAEB487F │ │ │ │ │ -BA7F1D292CED902DF3533566D96DAD918319EA650D4FC7D9E0170CDE620F755B │ │ │ │ │ -0E7AE02D9B118481B26F5FF7060FBCFA2A682B6826F00679BCDA68794C05286D │ │ │ │ │ -B616DD08372ACDE0AE6E7EF116F0D36F16241ED4F0E8CCD80377792E3BB1343C │ │ │ │ │ -EEB22CC77738F7CBCBA32CF6C3979F6DF7ED81A89AE8928FD7CC550F2730BA88 │ │ │ │ │ -1B51CEDC63F4C47F261AFCAB7AC3CED20B15C97E714A460A1A3B16436B4A5149 │ │ │ │ │ -8F91DA4BE0B9B648534CE5F442117036B602DC91E2852BEA62F55803B833FDF7 │ │ │ │ │ -9F901AB87489E703DDEED1091A79DC73B4440BBBF2C7592B441187C4A3562204 │ │ │ │ │ -859F08BA3CE2A8ECCD5AAD13C50FB806FE79A388F1822C5608837CBDE526A044 │ │ │ │ │ -12E5CDE4A066932AF2ACA7E8FC6BA4603640944718752975B7DA6E906BE1EA01 │ │ │ │ │ -46736FF5D1AA1CC682D011B6039CF98C35E36D4F14ABC84A38B7203CC9A17756 │ │ │ │ │ -B2B0345276798F1A88A54AD9FEA0853C6DDF28525ED4F0B7380D14147012C2A4 │ │ │ │ │ -5B02888C986C76497EA4C729B0B82EE73C1A1A8E8F1ABF401E341028E9C15AF9 │ │ │ │ │ -354706D8DC07492921AD0932A46736C0D1B066D00287DACCC068FAE6A796EC89 │ │ │ │ │ -54D1D73AA88F3A5912BA9D3FF70065C8D0D0DAD1CD846501E06694374EFDBEC6 │ │ │ │ │ -931F644D5E8494AFC742423AD9A487658E310E0682BE19B8475F4D450487A686 │ │ │ │ │ -2B94494DEAF1C0F59DE82F2CE64BEE5E97F942FCFA1187ED6AA5761E951A7BF7 │ │ │ │ │ -9F842E34A4656C58B35A9E99F7E6762CEE11E0CF59FFD75D7382C5EE6DBB43F1 │ │ │ │ │ -ED219071D3FB22DBA90977723BB467C0490D042684C0724F40DCA3E0D8F1F4E7 │ │ │ │ │ -3C4F9A67BE6528185EAAFDD415224F7E256A4EA00111C17C746CBD80BF569A27 │ │ │ │ │ -D81195D7F79C1CCEEF30ED00D49F48B63E4B8D7953403A3710AE953CC1B76F0F │ │ │ │ │ -F523D777A6A186F262A602543F94AF7471DBE25FEBC207DB42DAF7DC9A5781FB │ │ │ │ │ -2131AD42869D966A734AAE3466DF1CE9D1BCFA72409A558C0AEE6A8E2FEAACB6 │ │ │ │ │ -2CDABCC28433034848ACF9FB4465D272E4AFC48572647F05F41C7A293CC5B595 │ │ │ │ │ -AD31555FB708A72962707348BC7033A8224BD42EB9D75FDF3AE9E6A9C960B330 │ │ │ │ │ -5137DF59F8E2E0D535F41524ABDF070745A4FA25CD8DFD38A5FF30A95452B875 │ │ │ │ │ -6569E8812631300D79A942C563AF174AC05C9F2D09D7D5D3C605F5A6B7F21B34 │ │ │ │ │ -18F270A993B050838E701A17938D1C156CBA7CA4BAC7C562CE9D7B758EAB25A9 │ │ │ │ │ -A6DFFC71F65561341847B776DF34061CE3D439B87B857626987EC93B3B95B8E8 │ │ │ │ │ -76FFB16B263675333FA10414FEED707FF7C366BF8B20FF8577CDEBEBCF1A5BCE │ │ │ │ │ -258C09C90175A5278B7C444A623E3331FDE5A6387B3E389540ED1E7E883958F3 │ │ │ │ │ -3A5C89CCD62256FA069DF4A5090FB17C1F1757C9209DAFB8A1F47182BF3E88D9 │ │ │ │ │ -0B5376B59EE165A761902759C8ED7F5AD301E7EB8B49CC09AF921DB45B7F8002 │ │ │ │ │ -AB32E73AAE53942DE0F9175D8446017006C9C0B93EF39C13B7A879F2F6DDFF16 │ │ │ │ │ -204BB24F976847CF006FD29332FCCB255B5116F7077A44F7066C39C81DC4BAD2 │ │ │ │ │ -40DB2753626C0102E5D047522ABC38EA294A699B8DFD9CA0A7980561A1062E90 │ │ │ │ │ -AB11EE286A9C238D9F721D9980D0A1828C2814972622D948CEE8C812C19A9A03 │ │ │ │ │ -608ED0AC138A436FFBF8BE3D1E66C87793416AF38ED9BC5424568A175FBDAA9E │ │ │ │ │ -D6FC11A7021693819B051562B5A59F32629E2D6019D69DD329BE1894A2B295E1 │ │ │ │ │ -1DCE9683B29AE126C56F26E5C595BF1A8249BDE231DBE8B066F7F62EF149B975 │ │ │ │ │ -A863969A4690504A5EA064721DA909B8157C0B39FBF8228D95CB655E406161E1 │ │ │ │ │ -148610FAEED7C5509880223C06A66DA19E10F94DC2DB481B26 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004FD597ED │ │ │ │ │ +EFDBC64ABD9B79386FB2427D1A63522195B1239C09F8CB3F8BD7A245A6DD82E3 │ │ │ │ │ +260C3889587626DFC5F7978E55F5524ABD6A3319CDD3D3F40D040044D51DA4E1 │ │ │ │ │ +6797EEAC7AA07C77EC6DB0E6E182B545A8BEF63B14F3FC07BAC09E7CD5C17ED6 │ │ │ │ │ +10080704B0DA4E9BA12F968DF8A58458D17E9A5B1F14A83DC51F5B161ADEE1CC │ │ │ │ │ +0183D82ED92C6FC7203C289949EDF0284D9893029FF5408E421324625F17C3E5 │ │ │ │ │ +2437C8F75A9D68EE1AF9174FEA6FC6BF793C7D2E497EA90396CF1A645E283B69 │ │ │ │ │ +8425F47C323587DF91E1D596DCB1E3A787C955D9D965A5E3E26ADF58B62AD5F9 │ │ │ │ │ +0C9AC784DE479780606354111E3202F215650DBBE1063A46F3C10B9EBC974DDA │ │ │ │ │ +A1A28DBBD43E9E5BFF000B12C787D0427928078F8EC5FE90DED97E6C129E8DEA │ │ │ │ │ +51F66504DB83764E52B0BA68DF7BE684C8959CB1D3345CC48221A9A4683306C0 │ │ │ │ │ +62B634E0A539383F0C7A788D9711EFF414869CCC5659D78CEBE009BF2463F56A │ │ │ │ │ +0ADC993348FE96DF7C250E13ED6504AACFE8F8DCA2D2048D9D8CFA127D363EAC │ │ │ │ │ +1F0630E2D1B621E6954038195D965B91FD974FA3F1B8B29D200A16CEBA645E2F │ │ │ │ │ +CEEE6FD49FBBD49E38AE67D4BFFCE91F1FC422554EC4409C5FA18D40FCD6D9B3 │ │ │ │ │ +2185ED1E0F98106D4339F086B05CA36E56EC22C60E2CE23F9C4CC403ACAD3F94 │ │ │ │ │ +4086B4DF6DFA0B7B4716417263E7B558535566AED2F6C2F9846A16D71A7930A7 │ │ │ │ │ +49232D3D16C4A01CF1A1998A06F40062ED329179A85668537C55D0BC24FC0010 │ │ │ │ │ +54DA83E2FC66B2A5D428E6A9BFC983253668C0ECE6CA36DBF97C4B7659D50842 │ │ │ │ │ +C65B36604840EEDA399B57E2DEFAC3E7FB031634CE33D04238F9854D2AAAF448 │ │ │ │ │ +34DA5F3BCCED3166FEEE82BB0BBA0A397CC2F95865CB52AABFF454D93B425809 │ │ │ │ │ +A26AC459F321FD23E2262FE816D06BAAECF32AAF167F84799AF80F9F88388D07 │ │ │ │ │ +0DB5FD57AFEE2850A8DFE977E6AE39CB3DC16DB1A163A583C86C6F775CE33521 │ │ │ │ │ +0081C0BBBAD6D30D26C66B28B38CEAC78FEA5FB3CC5853656B67C6D9D80EB30E │ │ │ │ │ +397558C9179AF5920F34DAB3F578DFCF0DBB137AED17D6325C23883E69EE4621 │ │ │ │ │ +34355A70C19EA68891E1CA937376901C85CDEE109F1665943E29A216DC00937A │ │ │ │ │ +B983A729A4654AD09187C0242D52FA4ADD0853EF4888864914D7D81C56578DD4 │ │ │ │ │ +3B51907032022E6E412D4F114675DEDCA8A9E85DC03A0B583FECD84432D15F70 │ │ │ │ │ +01F627BD6EC91F9FCFDA01BF40E1229B5F164309DBB641AD50970503DA2048C1 │ │ │ │ │ +DF8F36E8D252EE113F0B46677D9BAF376BAE18D74CFB0DBBD0C7E9D0A58BA3ED │ │ │ │ │ +1E5099CAE073EB5638617760AB57849893764EA9735173CD1EAB66884CEA7EE3 │ │ │ │ │ +8843327B2E145BD6FBB49102776B82BC511D109F8BE9E7E99DADABABEDC3CFD9 │ │ │ │ │ +393578FFD85907DFF2849E4CDE6FA4DEC7E1C150EBE4047FFB650F9548BE6D11 │ │ │ │ │ +0C51226A5436F18BF20A02E0F888F46B6AC3A8E8D927ECD3B5E095933AD3859F │ │ │ │ │ +5167C41D832EFCC4093BD2AFA7101AB430E57DAFC3590F05D3CBABB32BC203A0 │ │ │ │ │ +467B23BDB830487C9AA5B85BAC065F8538871B4180F8C4732E637DB090CFDE5A │ │ │ │ │ +3F4F2B5BFAFB848BAAD1A17CB076B34159601639BD93ECAB1214ACABF2C67FE2 │ │ │ │ │ +0658AA20B08681070FF56F1CC52144ABA8765D6E124D1CEA9BBA102808CE1BB2 │ │ │ │ │ +5EDF46BC7BBC2A5B49EE6EC28F5797A3969B057B21FCDBBD0E60848FF14F6CA3 │ │ │ │ │ +70F3060BDBB019B22722C99C7691760F013763B7FBEB62830AE215F195BF9F01 │ │ │ │ │ +21BF4377397E89574CFA47D123AA506A570A77BA6EB4AAB0B237A26154880293 │ │ │ │ │ +3952F832F72ECCB024F02385E5EE8566B165904B594E30D0700D033C6B429F6F │ │ │ │ │ +2A20BC774F442BC9CE29FCC81807C2768A8BC927A215558FBF36DC53F477F04A │ │ │ │ │ +41DA66E1A85B659EB761230977EAD7DA0150513D3323B143D4E2A61BCF03334C │ │ │ │ │ +C0EE3E1B06CFAF58ECC910BD81F0352B75FF1594D6A4EF504232D442174BE766 │ │ │ │ │ +0F8E703F97E21D25D4CD097549C31FEE7017C3916EFB02E7BF869172889827B6 │ │ │ │ │ +A48465EB7612BA3DBC6A9436C7167F149A25CE9F8E3F4F8DE3B5ADF6C0986CB3 │ │ │ │ │ +3A7E2DAB44AB489796461536F5F713017F2620AD03295CAE9285F08974AE0DF8 │ │ │ │ │ +D739260929619B509491AFF09C4CAEF9E65C2CA69470C907ECBF3AB6C955360D │ │ │ │ │ +05ABAC306DB51122A1ADC7EF0DD70FA299A45C505A83727D4598C86319EE9C06 │ │ │ │ │ +7218EFD4F40388354BCF1B79593D5AD221DF955D081F99F880E5CED07321AB3E │ │ │ │ │ +A2FCB8B05D54807D8E15E65B78DCE12989B9276350080C905DBB74CE9AA7E246 │ │ │ │ │ +5D3BAED292C562D4CF54617FCC6654496C7996D1ECE1EFF9258716AB763A12E6 │ │ │ │ │ +316E4C5587351A6DB011F58F6A15BC28BEBDC3836E0CB892807FEC228DC1B380 │ │ │ │ │ +92F7F42279F08D60F13D6A4CB425543C3644461461CBF6F27B6603F613D1FCF8 │ │ │ │ │ +A8410AD82D1498166AEB35D4125D7E2ADEAAB18BC04806AED53513F066E5F154 │ │ │ │ │ +3E13E863C50B9814EE2FB978D0D24A03FAF650CB6E2CADF1E6BE6BAF699AFC03 │ │ │ │ │ +E1A0EEB207B3B9A689ED5B373FE86686AD230BE6C18E1673DDA50E224B343EC5 │ │ │ │ │ +903BA0C8041C13607B50D5852AC7970B15C244E6EBA7D54B3086312CF04761D6 │ │ │ │ │ +7D3D75D51F20C371494AB81AB4A9838B20B483B851D01FEF41EA5C0B4755B964 │ │ │ │ │ +EB6E9B178051C556A010994EB88EAE641F4C1A0D7E0F98D5267E18AEF1AEA7E7 │ │ │ │ │ +9030A97DF89AFF621981C33B645FFB5F3BB2065A7661D11B26E0999561DF3580 │ │ │ │ │ +4A76A05DFAF8085525F8D5C01936F03C32E26E72569371C9EA3B8916F9DFC5FC │ │ │ │ │ +6A6F25A0FFDB981BA8B896393D75774D50828E6ADE903C45406E354703A4BC56 │ │ │ │ │ +2C49A47FEAC970DC433E3050C49F7FB945A9705BD8852D2D65D935F244D3B423 │ │ │ │ │ +EFAB84AAAAB8FBAFF50AFF372A533BCCEB5FC273DBADCF715776DF02A5DCBA9A │ │ │ │ │ +FBF265FAB4745D6475B33611EEE1EA95E7584E0BEEC7CA789AA69C8D03D6F8C0 │ │ │ │ │ +5B6844E2B901ACA560C0433B053D134866E567425174E47173679AAD4486A2D3 │ │ │ │ │ +369C29E4DD2CD6ACA1BE80ED8FF0A9C58A616D26E758BD8E6342624EC83FB590 │ │ │ │ │ +BD354B52B60BB054FAFE9AC63E1564FBC721FE8F276B0413EC89A2C85E5ED1B0 │ │ │ │ │ +3A9D83BE62A4488ADE7CE69971A8AF7E5862A4290EEF6F00D4171C7FFB360065 │ │ │ │ │ +92E72BF02BE27161AE0BB5516572A0BDC4F316FFB24B38484AC8D1FD4CD86062 │ │ │ │ │ +A2B5D03CF28C3A679C039A6EFDD4C9DA7E463AD60234C9F6BBEE48D87DD94D85 │ │ │ │ │ +842F495F3E25723718682CE4D6224CBBF4456F03077EDF736D65B9DDAB09470E │ │ │ │ │ +17742D82011FFA96BFE86B96E858F9352FCD20C3D46B77DBDEE54336EC2249EA │ │ │ │ │ +211F6DFFF5BEA1E5192BE1BAC0BDD5EDDB3D56C6F7C6E543561A0B39E5C1B04F │ │ │ │ │ +C683A7516B6E69D682455386DDA709929D621FA434D403E895AA0A77DBE1DFD2 │ │ │ │ │ +0D060DF82378880147ED97C6E8149686FA048710B113760AC1DA4512FF8556B3 │ │ │ │ │ +16E2447485B8C3CD58D0469C4A45FFB4CB0322BB284C02 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -3824,16 +3829,16 @@ │ │ │ │ │ @start /Fa 133[50 59 3[62 44 44 46 1[62 56 62 93 31 2[31 │ │ │ │ │ 62 56 1[51 62 50 1[54 11[86 5[84 1[106 67 2[42 6[80 10[56 │ │ │ │ │ 56 56 56 56 56 56 2[31 46[{}32 99.6264 /CMBX12 rf /Fb │ │ │ │ │ 169[62 9[62 2[62 73[{}3 119.552 /CMTT12 rf /Fc 152[45 │ │ │ │ │ 45 99[71 2[{}3 90.9091 /CMSY10 rf /Fd 137[42 49 30 37 │ │ │ │ │ 38 1[46 46 51 1[23 42 1[28 46 42 1[42 46 42 1[46 12[65 │ │ │ │ │ 1[66 11[59 62 69 2[68 6[28 58[{}24 90.9091 /CMTI10 rf │ │ │ │ │ -/Fe 134[48 3[51 2[36 3[51 12[45 22[47 15[25 3[45 1[45 │ │ │ │ │ -1[45 45 45 3[25 44[{}13 90.9091 /CMSL10 rf │ │ │ │ │ +/Fe 134[48 3[51 2[36 12[40 2[51 45 26[59 11[25 1[45 2[45 │ │ │ │ │ +2[45 45 45 3[25 44[{}14 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 │ │ │ │ │ @@ -3949,17 +3954,17 @@ │ │ │ │ │ b(Absolutely)31 b(no)f(free'ing)h(of)f(data)h(is)g(done)f(when)f(the)i │ │ │ │ │ Fi(IVL)e Fj(ob)5 b(ject)32 b(is)e(free'd.)227 5407 y(The)g(storage)i │ │ │ │ │ (managemen)m(t)g(is)e(handled)g(b)m(y)g Fi(IVL)p 1972 │ │ │ │ │ 5407 V 34 w(setList\(\))d Fj(and)j Fi(IVL)p 2786 5407 │ │ │ │ │ V 34 w(setPointerToList\(\))p Fj(.)1927 5656 y(1)p eop │ │ │ │ │ end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fj(2)p 136 100 1159 4 v │ │ │ │ │ -1341 w Fi(IVL)29 b Fe(:)i Fd(DRAFT)f Fe(Jan)m(uary)g(16,)i(2024)p │ │ │ │ │ -2741 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 1140 4 v │ │ │ │ │ +1322 w Fi(IVL)29 b Fe(:)i Fd(DRAFT)f Fe(F)-8 b(ebruary)30 │ │ │ │ │ +b(18,)i(2025)p 2760 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 │ │ │ │ │ @@ -4026,17 +4031,17 @@ │ │ │ │ │ b Fi(tsize)f Fj(are)i(zero,)g Fi(incr)e Fj(is)i Fi(1024)p │ │ │ │ │ Fj(,)e(and)h Fi(sizes)p Fj(,)f Fi(p)p 2126 5262 V 34 │ │ │ │ │ w(vec)h Fj(and)g Fi(chunk)e Fj(are)j Fi(NULL)p Fj(.)227 │ │ │ │ │ 5407 y Fd(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fj(If)30 │ │ │ │ │ b Fi(ivl)g Fj(is)g Fi(NULL)p Fj(,)g(an)g(error)g(message)h(is)g(prin)m │ │ │ │ │ (ted)f(and)g(the)g(program)g(exits.)p eop end │ │ │ │ │ %%Page: 3 3 │ │ │ │ │ -TeXDict begin 3 2 bop 91 100 1159 4 v 1340 100 a Fi(IVL)30 │ │ │ │ │ -b Fe(:)g Fd(DRAFT)122 b Fe(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2694 100 V 1159 w Fj(3)111 399 y(3.)46 b Fi(void)h(IVL_clearData)d(\()k │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1140 4 v 1321 100 a Fi(IVL)30 │ │ │ │ │ +b Fe(:)g Fd(DRAFT)122 b Fe(F)-8 b(ebruary)30 b(18,)h(2025)p │ │ │ │ │ +2713 100 V 1140 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 │ │ │ │ │ @@ -4084,27 +4089,27 @@ │ │ │ │ │ (int)g(incr)f(\))i(;)227 5126 y Fj(This)30 b(metho)s(d)g(sets)g(the)h │ │ │ │ │ (storage)h(incremen)m(t)f(to)g Fi(incr)p Fj(.)227 5294 │ │ │ │ │ y Fd(Err)-5 b(or)27 b(che)-5 b(cking:)36 b Fj(If)21 b │ │ │ │ │ Fi(ivl)g Fj(is)i Fi(NULL)e Fj(or)h Fi(incr)f Fj(is)h(negativ)m(e,)k(an) │ │ │ │ │ c(error)f(message)j(is)e(prin)m(ted)f(and)h(the)g(program)227 │ │ │ │ │ 5407 y(exits.)p eop end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fj(4)p 136 100 1159 4 v │ │ │ │ │ -1341 w Fi(IVL)29 b Fe(:)i Fd(DRAFT)f Fe(Jan)m(uary)g(16,)i(2024)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 │ │ │ │ │ -b(>)j(0)p Fj(,)29 b(storage)i(is)f(allo)s(cated)227 992 │ │ │ │ │ -y(for)g(the)h Fi(sizes[])d Fj(and)i Fi(p)p 1118 992 V │ │ │ │ │ -34 w(vec[])f Fj(arra)m(ys)i(and)f Fi(nlist)f Fj(is)h(set)h(to)g │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fj(4)p 136 100 1140 4 v │ │ │ │ │ +1322 w Fi(IVL)29 b Fe(:)i Fd(DRAFT)f Fe(F)-8 b(ebruary)30 │ │ │ │ │ +b(18,)i(2025)p 2760 100 V 0 399 a Fa(1.2.3)112 b(Initialization)39 │ │ │ │ │ +b(and)f(resizing)g(metho)s(ds)111 606 y Fj(1.)46 b Fi(void)h(IVL_init1) │ │ │ │ │ +e(\()j(IVL)f(*ivl,)f(int)h(type,)f(int)h(maxnlist)f(\))h(;)227 │ │ │ │ │ +767 y Fj(This)34 b(metho)s(d)g(is)g(used)g(when)f(only)i(the)f(n)m(um)m │ │ │ │ │ +(b)s(er)f(of)i(lists)g(is)f(kno)m(wn.)52 b(An)m(y)35 │ │ │ │ │ +b(previous)e(data)j(is)e(cleared)227 879 y(with)c(a)f(call)i(to)g │ │ │ │ │ +Fi(IVL)p 935 879 29 4 v 33 w(clearData\(\))p Fj(.)37 │ │ │ │ │ +b(The)30 b Fi(type)e Fj(\014eld)h(is)h(set.)41 b(If)29 │ │ │ │ │ +b Fi(maxnlist)45 b(>)j(0)p Fj(,)29 b(storage)i(is)f(allo)s(cated)227 │ │ │ │ │ +992 y(for)g(the)h Fi(sizes[])d Fj(and)i Fi(p)p 1118 992 │ │ │ │ │ +V 34 w(vec[])f Fj(arra)m(ys)i(and)f Fi(nlist)f Fj(is)h(set)h(to)g │ │ │ │ │ Fi(maxnlist)p Fj(.)227 1153 y Fd(Err)-5 b(or)33 b(che)-5 │ │ │ │ │ b(cking:)39 b Fj(If)28 b Fi(ivl)g Fj(is)g Fi(NULL)g Fj(or)g │ │ │ │ │ Fi(type)g Fj(is)g(in)m(v)-5 b(alid)30 b(or)e Fi(maxnlist)e │ │ │ │ │ Fj(is)j(negativ)m(e,)j(an)c(error)g(message)i(is)227 │ │ │ │ │ 1266 y(prin)m(ted)g(and)g(the)h(program)f(exits.)111 │ │ │ │ │ 1476 y(2.)46 b Fi(void)h(IVL_init2)e(\()j(IVL)f(*ivl,)f(int)h(type,)f │ │ │ │ │ (int)h(nlist,)f(int)h(tsize)f(\))i(;)227 1637 y Fj(This)30 │ │ │ │ │ @@ -4173,17 +4178,17 @@ │ │ │ │ │ 5085 y Fd(Err)-5 b(or)32 b(che)-5 b(cking:)40 b Fj(If)27 │ │ │ │ │ b Fi(ivl)h Fj(is)g Fi(NULL)f Fj(or)i(if)f Fi(newmaxnlist)d │ │ │ │ │ Fj(is)k(negativ)m(e,)i(an)d(error)g(message)h(is)g(prin)m(ted)f(and)227 │ │ │ │ │ 5198 y(the)j(program)f(exits.)111 5407 y(6.)46 b Fi(void)h │ │ │ │ │ (IVL_setNlist)d(\()k(IVL)f(*ivl,)f(int)h(newnlist)f(\))h(;)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 5 5 │ │ │ │ │ -TeXDict begin 5 4 bop 91 100 1159 4 v 1340 100 a Fi(IVL)30 │ │ │ │ │ -b Fe(:)g Fd(DRAFT)122 b Fe(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2694 100 V 1159 w Fj(5)227 399 y(This)39 b(metho)s(d)f(is)h(used)g(to)g │ │ │ │ │ +TeXDict begin 5 4 bop 91 100 1140 4 v 1321 100 a Fi(IVL)30 │ │ │ │ │ +b Fe(:)g Fd(DRAFT)122 b Fe(F)-8 b(ebruary)30 b(18,)h(2025)p │ │ │ │ │ +2713 100 V 1140 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 │ │ │ │ │ @@ -4226,28 +4231,28 @@ │ │ │ │ │ 5294 y Fj(This)39 b(metho)s(d)f(sets)i(the)g(size)g(and)e(\(p)s │ │ │ │ │ (ossibly\))i(p)s(oin)m(ter)f(to)h(a)g(list)f(of)h(en)m(tries.)68 │ │ │ │ │ b(The)39 b(b)s(eha)m(vior)g(of)h(the)227 5407 y(metho)s(d)30 │ │ │ │ │ b(dep)s(ends)f(on)h(the)g(t)m(yp)s(e)h(of)g(the)f Fi(ivl)g │ │ │ │ │ Fj(ob)5 b(ject.)41 b(Here)31 b(is)f(the)h(\015o)m(w)f(c)m(hart:)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 6 6 │ │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fj(6)p 136 100 1159 4 v │ │ │ │ │ -1341 w Fi(IVL)29 b Fe(:)i Fd(DRAFT)f Fe(Jan)m(uary)g(16,)i(2024)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 │ │ │ │ │ -Fi(type)f Fj(is)i Fi(IVL)p 1382 1318 V 33 w(UNKNOWN)d │ │ │ │ │ -Fj(then)898 1431 y(set)j(the)g(p)s(oin)m(ter)663 1544 │ │ │ │ │ -y(else)898 1656 y(if)g(the)f(presen)m(t)h(size)g(of)f(list)h │ │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fj(6)p 136 100 1140 4 v │ │ │ │ │ +1322 w Fi(IVL)29 b Fe(:)i Fd(DRAFT)f Fe(F)-8 b(ebruary)30 │ │ │ │ │ +b(18,)i(2025)p 2760 100 V 605 311 2918 4 v 605 2506 4 │ │ │ │ │ +2196 v 663 414 a Fj(if)f Fi(ilist)46 b(>=)h(maxnlist)28 │ │ │ │ │ +b Fj(then)898 527 y(the)j(n)m(um)m(b)s(er)e(of)h(lists)h(is)g │ │ │ │ │ +(increased)f(via)h(a)g(call)h(to)f Fi(IVL)p 2816 527 │ │ │ │ │ +29 4 v 33 w(setMaxnlist\(\))663 640 y Fj(endif)663 753 │ │ │ │ │ +y(if)g Fi(ilist)46 b(>=)h(nlist)29 b Fj(then)898 866 │ │ │ │ │ +y Fi(nlist)g Fj(is)i(increased)663 979 y(endif)663 1092 │ │ │ │ │ +y(if)g Fi(isize)46 b(=)i(0)30 b Fj(then)898 1205 y(release)i(the)e │ │ │ │ │ +(storage)i(for)f(that)f(list,)i(reclaim)f(storage)h(if)e(p)s(ossible) │ │ │ │ │ +663 1318 y(else)i(if)e Fi(type)f Fj(is)i Fi(IVL)p 1382 │ │ │ │ │ +1318 V 33 w(UNKNOWN)d Fj(then)898 1431 y(set)j(the)g(p)s(oin)m(ter)663 │ │ │ │ │ +1544 y(else)898 1656 y(if)g(the)f(presen)m(t)h(size)g(of)f(list)h │ │ │ │ │ Fi(ilist)e Fj(is)i(smaller)g(than)f Fi(isize)f Fj(then)1133 │ │ │ │ │ 1769 y(get)j(new)d(storage)j(for)e(a)h(new)f(larger)h(list)898 │ │ │ │ │ 1882 y(endif)898 1995 y(set)g(the)g(size)898 2108 y(if)g │ │ │ │ │ Fi(ivec)e Fj(is)h(not)h Fi(NULL)e Fj(then)1133 2221 y(cop)m(y)i(the)g │ │ │ │ │ (en)m(tries)898 2334 y(endif)663 2447 y(endif)p 3519 │ │ │ │ │ 2506 4 2196 v 605 2509 2918 4 v 227 2720 a Fd(Err)-5 │ │ │ │ │ b(or)28 b(che)-5 b(cking:)37 b Fj(If)23 b Fi(ivl)g Fj(is)g │ │ │ │ │ @@ -4279,17 +4284,17 @@ │ │ │ │ │ y(int)g(IVL_sum)f(\()h(IVL)g(*ivl)g(\))g(;)227 5246 y │ │ │ │ │ Fj(These)30 b(metho)s(ds)g(return)f(some)i(simple)f(information)h(ab)s │ │ │ │ │ (out)f(the)h(ob)5 b(ject.)227 5407 y Fd(Err)-5 b(or)34 │ │ │ │ │ b(che)-5 b(cking:)40 b Fj(If)30 b Fi(ivl)g Fj(is)g Fi(NULL)f │ │ │ │ │ Fj(then)i(an)f(error)g(message)h(is)g(prin)m(ted)f(and)f(the)i(program) │ │ │ │ │ f(exits.)p eop end │ │ │ │ │ %%Page: 7 7 │ │ │ │ │ -TeXDict begin 7 6 bop 91 100 1159 4 v 1340 100 a Fi(IVL)30 │ │ │ │ │ -b Fe(:)g Fd(DRAFT)122 b Fe(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2694 100 V 1159 w Fj(7)111 399 y(3.)46 b Fi(int)h(IVL_sortUp)e(\()j │ │ │ │ │ +TeXDict begin 7 6 bop 91 100 1140 4 v 1321 100 a Fi(IVL)30 │ │ │ │ │ +b Fe(:)g Fd(DRAFT)122 b Fe(F)-8 b(ebruary)30 b(18,)h(2025)p │ │ │ │ │ +2713 100 V 1140 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 │ │ │ │ │ @@ -4357,48 +4362,49 @@ │ │ │ │ │ b(so)227 5246 y(w)m(e)31 b(create)h(and)e(return)f(a)i(new)f │ │ │ │ │ Fi(IVL)f Fj(ob)5 b(ject)31 b(that)g(con)m(tains)h(en)m(tries)f(for)f │ │ │ │ │ (the)h(uncompressed)e(graph.)227 5407 y Fd(Err)-5 b(or)30 │ │ │ │ │ b(che)-5 b(cking:)38 b Fj(If)26 b Fi(ivl)f Fj(or)h Fi(eqmapIV)e │ │ │ │ │ Fj(is)i Fi(NULL)p Fj(,)f(an)h(error)f(message)i(is)f(prin)m(ted)g(and)f │ │ │ │ │ (the)h(program)g(exits.)p eop end │ │ │ │ │ %%Page: 8 8 │ │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fj(8)p 136 100 1159 4 v │ │ │ │ │ -1341 w Fi(IVL)29 b Fe(:)i Fd(DRAFT)f Fe(Jan)m(uary)g(16,)i(2024)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 │ │ │ │ │ -b(che)-5 b(cking:)45 b Fj(If)32 b Fi(n1)p Fj(,)h Fi(n2)g │ │ │ │ │ -Fj(or)g Fi(ncomp)e Fj(is)i(less)g(than)g(or)g(equal)g(to)h(zero,)g(an)f │ │ │ │ │ -(error)f(message)i(is)f(prin)m(ted)227 1131 y(and)d(the)h(program)f │ │ │ │ │ -(exits.)111 1325 y(2.)46 b Fi(IVL)h(*)h(IVL_make13P)c(\()k(int)f(n1,)g │ │ │ │ │ -(int)g(n2)g(\))g(;)227 1479 y Fj(This)32 b(metho)s(d)f(returns)g(an)h │ │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fj(8)p 136 100 1140 4 v │ │ │ │ │ +1322 w Fi(IVL)29 b Fe(:)i Fd(DRAFT)f Fe(F)-8 b(ebruary)30 │ │ │ │ │ +b(18,)i(2025)p 2760 100 V 0 399 a Fa(1.2.6)112 b(Miscellaneous)40 │ │ │ │ │ +b(metho)s(ds)111 598 y Fj(1.)46 b Fi(IVL)h(*)h(IVL_make9P)d(\()i(int)g │ │ │ │ │ +(n1,)g(int)g(n2,)g(int)g(ncomp)f(\))h(;)227 752 y Fj(This)35 │ │ │ │ │ +b(metho)s(d)g(returns)f(an)h Fi(IVL)f Fj(ob)5 b(ject)36 │ │ │ │ │ +b(that)g(con)m(tains)h(the)e(full)g(adjacency)i(structure)d(for)h(a)h │ │ │ │ │ +(9-p)s(oin)m(t)227 865 y(op)s(erator)31 b(on)f(a)h Fi(n1)20 │ │ │ │ │ +b Fc(\002)g Fi(n2)29 b Fj(grid)h(with)g Fi(ncomp)f Fj(comp)s(onen)m(ts) │ │ │ │ │ +i(at)g(eac)m(h)h(grid)e(p)s(oin)m(t.)227 1018 y Fd(Err)-5 │ │ │ │ │ +b(or)37 b(che)-5 b(cking:)45 b Fj(If)32 b Fi(n1)p Fj(,)h │ │ │ │ │ +Fi(n2)g Fj(or)g Fi(ncomp)e Fj(is)i(less)g(than)g(or)g(equal)g(to)h │ │ │ │ │ +(zero,)g(an)f(error)f(message)i(is)f(prin)m(ted)227 1131 │ │ │ │ │ +y(and)d(the)h(program)f(exits.)111 1325 y(2.)46 b Fi(IVL)h(*)h │ │ │ │ │ +(IVL_make13P)c(\()k(int)f(n1,)g(int)g(n2)g(\))g(;)227 │ │ │ │ │ +1479 y Fj(This)32 b(metho)s(d)f(returns)g(an)h Fi(IVL)f │ │ │ │ │ +Fj(ob)5 b(ject)33 b(that)g(con)m(tains)g(the)f(full)g(adjacency)h │ │ │ │ │ +(structure)e(for)h(a)h(13-p)s(oin)m(t)227 1592 y(t)m(w)m(o)f │ │ │ │ │ +(dimensional)e(op)s(erator)h(on)f(a)h Fi(n1)20 b Fc(\002)g │ │ │ │ │ +Fi(n2)30 b Fj(grid.)227 1745 y Fd(Err)-5 b(or)35 b(che)-5 │ │ │ │ │ +b(cking:)41 b Fj(If)30 b Fi(n1)g Fj(or)h Fi(n2)g Fj(is)f(less)i(than)e │ │ │ │ │ +(or)h(equal)g(to)h(zero,)g(an)f(error)f(message)i(is)f(prin)m(ted)f │ │ │ │ │ +(and)h(the)227 1858 y(program)f(exits.)111 2052 y(3.)46 │ │ │ │ │ +b Fi(IVL)h(*)h(IVL_make5P)d(\()i(int)g(n1,)g(int)g(n2)g(\))g(;)227 │ │ │ │ │ +2206 y Fj(This)35 b(metho)s(d)g(returns)f(an)h Fi(IVL)f │ │ │ │ │ +Fj(ob)5 b(ject)36 b(that)g(con)m(tains)h(the)e(full)g(adjacency)i │ │ │ │ │ +(structure)d(for)h(a)h(5-p)s(oin)m(t)227 2318 y(t)m(w)m(o)c │ │ │ │ │ +(dimensional)e(op)s(erator)h(on)f(a)h Fi(n1)20 b Fc(\002)g │ │ │ │ │ +Fi(n2)30 b Fj(grid.)227 2472 y Fd(Err)-5 b(or)35 b(che)-5 │ │ │ │ │ +b(cking:)41 b Fj(If)30 b Fi(n1)g Fj(or)h Fi(n2)g Fj(is)f(less)i(than)e │ │ │ │ │ +(or)h(equal)g(to)h(zero,)g(an)f(error)f(message)i(is)f(prin)m(ted)f │ │ │ │ │ +(and)h(the)227 2585 y(program)f(exits.)111 2779 y(4.)46 │ │ │ │ │ +b Fi(IVL)h(*)h(IVL_make27P)c(\()k(int)f(n1,)g(int)g(n2,)f(int)h(ncomp)g │ │ │ │ │ +(\))g(;)227 2932 y Fj(This)32 b(metho)s(d)f(returns)g(an)h │ │ │ │ │ Fi(IVL)f Fj(ob)5 b(ject)33 b(that)g(con)m(tains)g(the)f(full)g │ │ │ │ │ -(adjacency)h(structure)e(for)h(a)h(13-p)s(oin)m(t)227 │ │ │ │ │ -1592 y(t)m(w)m(o)f(dimensional)e(op)s(erator)h(on)f(a)h │ │ │ │ │ -Fi(n1)20 b Fc(\002)g Fi(n2)30 b Fj(grid.)227 1745 y Fd(Err)-5 │ │ │ │ │ -b(or)35 b(che)-5 b(cking:)41 b Fj(If)30 b Fi(n1)g Fj(or)h │ │ │ │ │ -Fi(n2)g Fj(is)f(less)i(than)e(or)h(equal)g(to)h(zero,)g(an)f(error)f │ │ │ │ │ -(message)i(is)f(prin)m(ted)f(and)h(the)227 1858 y(program)f(exits.)111 │ │ │ │ │ -2052 y(3.)46 b Fi(IVL)h(*)h(IVL_make5P)d(\()i(int)g(n1,)g(int)g(n2)g │ │ │ │ │ -(\))g(;)227 2206 y Fj(This)35 b(metho)s(d)g(returns)f(an)h │ │ │ │ │ -Fi(IVL)f Fj(ob)5 b(ject)36 b(that)g(con)m(tains)h(the)e(full)g │ │ │ │ │ -(adjacency)i(structure)d(for)h(a)h(5-p)s(oin)m(t)227 │ │ │ │ │ -2318 y(t)m(w)m(o)c(dimensional)e(op)s(erator)h(on)f(a)h │ │ │ │ │ -Fi(n1)20 b Fc(\002)g Fi(n2)30 b Fj(grid.)227 2472 y Fd(Err)-5 │ │ │ │ │ -b(or)35 b(che)-5 b(cking:)41 b Fj(If)30 b Fi(n1)g Fj(or)h │ │ │ │ │ -Fi(n2)g Fj(is)f(less)i(than)e(or)h(equal)g(to)h(zero,)g(an)f(error)f │ │ │ │ │ -(message)i(is)f(prin)m(ted)f(and)h(the)227 2585 y(program)f(exits.)111 │ │ │ │ │ -2779 y(4.)46 b Fi(IVL)h(*)h(IVL_make27P)c(\()k(int)f(n1,)g(int)g(n2,)f │ │ │ │ │ -(int)h(ncomp)g(\))g(;)227 2932 y Fj(This)32 b(metho)s(d)f(returns)g(an) │ │ │ │ │ -h Fi(IVL)f Fj(ob)5 b(ject)33 b(that)g(con)m(tains)g(the)f(full)g │ │ │ │ │ (adjacency)h(structure)e(for)h(a)h(27-p)s(oin)m(t)227 │ │ │ │ │ 3045 y(op)s(erator)e(on)f(a)h Fi(n1)20 b Fc(\002)g Fi(n2)f │ │ │ │ │ Fc(\002)h Fi(n3)30 b Fj(grid)g(with)g Fi(ncomp)f Fj(comp)s(onen)m(ts)h │ │ │ │ │ (at)i(eac)m(h)f(grid)f(p)s(oin)m(t.)227 3199 y Fd(Err)-5 │ │ │ │ │ b(or)29 b(che)-5 b(cking:)37 b Fj(If)24 b Fi(n1)p Fj(,)i │ │ │ │ │ Fi(n2)p Fj(,)f Fi(n3)f Fj(or)h Fi(ncomp)e Fj(is)i(less)g(than)f(or)h │ │ │ │ │ (equal)g(to)g(zero,)i(an)e(error)f(message)i(is)e(prin)m(ted)227 │ │ │ │ │ @@ -4431,17 +4437,17 @@ │ │ │ │ │ 5254 y(data,)h(the)e(v)-5 b(alue)31 b Fi(1)f Fj(is)g(returned.)40 │ │ │ │ │ b(If)30 b(an)g(IO)g(error)g(is)g(encoun)m(tered)h(from)f │ │ │ │ │ Fi(fscanf)p Fj(,)f(zero)i(is)g(returned.)227 5407 y Fd(Err)-5 │ │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fj(If)30 b Fi(ivl)g Fj(or)g │ │ │ │ │ Fi(fp)g Fj(are)h Fi(NULL)e Fj(an)h(error)g(message)i(is)e(prin)m(ted)g │ │ │ │ │ (and)g(zero)h(is)f(returned.)p eop end │ │ │ │ │ %%Page: 9 9 │ │ │ │ │ -TeXDict begin 9 8 bop 91 100 1159 4 v 1340 100 a Fi(IVL)30 │ │ │ │ │ -b Fe(:)g Fd(DRAFT)122 b Fe(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2694 100 V 1159 w Fj(9)111 399 y(3.)46 b Fi(int)h │ │ │ │ │ +TeXDict begin 9 8 bop 91 100 1140 4 v 1321 100 a Fi(IVL)30 │ │ │ │ │ +b Fe(:)g Fd(DRAFT)122 b Fe(F)-8 b(ebruary)30 b(18,)h(2025)p │ │ │ │ │ +2713 100 V 1140 w Fj(9)111 399 y(3.)46 b Fi(int)h │ │ │ │ │ (IVL_readFromBinaryFile)42 b(\()47 b(IVL)g(*ivl,)g(FILE)f(*fp)h(\))h(;) │ │ │ │ │ 227 556 y Fj(This)25 b(metho)s(d)g(reads)g(an)g Fi(IVL)g │ │ │ │ │ Fj(ob)5 b(ject)26 b(from)f(a)h(binary)f(\014le.)39 b(If)25 │ │ │ │ │ b(there)h(are)f(no)h(errors)f(in)g(reading)g(the)h(data,)227 │ │ │ │ │ 669 y(the)31 b(v)-5 b(alue)31 b Fi(1)f Fj(is)g(returned.)40 │ │ │ │ │ b(If)30 b(an)g(IO)g(error)g(is)g(encoun)m(tered)h(from)f │ │ │ │ │ Fi(fread)p Fj(,)f(zero)i(is)g(returned.)227 826 y Fd(Err)-5 │ │ │ │ │ @@ -4508,19 +4514,19 @@ │ │ │ │ │ Fi(IVL)e Fj(ob)5 b(ject)29 b(from)e Fi(inFile)e Fj(and)i(writes)h(out)g │ │ │ │ │ (the)f(ob)5 b(ject)29 b(to)f Fi(outFile)337 5294 y Ff(\210)45 │ │ │ │ │ b Fj(The)28 b Fi(msglvl)f Fj(parameter)i(determines)g(the)g(amoun)m(t)g │ │ │ │ │ (of)f(output)h(|)f(taking)i Fi(msglvl)46 b(>=)h(3)28 │ │ │ │ │ b Fj(means)427 5407 y(the)j Fi(IVL)e Fj(ob)5 b(ject)32 │ │ │ │ │ b(is)e(written)g(to)i(the)e(message)i(\014le.)p eop end │ │ │ │ │ %%Page: 10 10 │ │ │ │ │ -TeXDict begin 10 9 bop 0 100 a Fj(10)p 182 100 1136 4 │ │ │ │ │ -v 1319 w Fi(IVL)29 b Fe(:)i Fd(DRAFT)f Fe(Jan)m(uary)g(16,)h(2024)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 │ │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fj(10)p 182 100 1117 4 │ │ │ │ │ +v 1300 w Fi(IVL)29 b Fe(:)i Fd(DRAFT)f Fe(F)-8 b(ebruary)30 │ │ │ │ │ +b(18,)h(2025)p 2783 100 V 337 399 a Ff(\210)45 b Fj(The)33 │ │ │ │ │ +b Fi(msgFile)e Fj(parameter)j(determines)f(the)h(message)g(\014le)f(|)h │ │ │ │ │ +(if)f Fi(msgFile)e Fj(is)i Fi(stdout)p Fj(,)g(then)g(the)427 │ │ │ │ │ 511 y(message)27 b(\014le)f(is)g Fd(stdout)p Fj(,)i(otherwise)e(a)h │ │ │ │ │ (\014le)f(is)f(op)s(ened)g(with)h Fd(app)-5 b(end)28 │ │ │ │ │ b Fj(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 624 │ │ │ │ │ y(data.)337 770 y Ff(\210)45 b Fj(The)25 b Fi(inFile)e │ │ │ │ │ Fj(parameter)i(is)g(the)g(input)f(\014le)g(for)h(the)g │ │ │ │ │ Fi(IVL)f Fj(ob)5 b(ject.)40 b(It)25 b(m)m(ust)f(b)s(e)g(of)h(the)g │ │ │ │ │ (form)g Fi(*.ivlf)427 883 y Fj(or)31 b Fi(*.ivlb)p Fj(.)39 │ │ │ │ │ ├── ps2ascii {} │ │ │ │ │ │ @@ -22,15 +22,15 @@ │ │ │ │ │ │ Each list is allocated separately using the IVinit() function. When the IVL object is │ │ │ │ │ │ free’d, each list is free’d separately using the IVfree() function. │ │ │ │ │ │ – IVL UNKNOWN │ │ │ │ │ │ This storage mode is available for the cases where storage for a list is aliased to another │ │ │ │ │ │ location. Absolutely no free’ing of data is done when the IVL object is free’d. │ │ │ │ │ │ The storage management is handled by IVL setList() and IVL setPointerToList(). │ │ │ │ │ │ 1 │ │ │ │ │ │ - 2 IVL : DRAFT January 16, 2024 │ │ │ │ │ │ + 2 IVL : DRAFT February 18, 2025 │ │ │ │ │ │ • int maxnlist : maximum number of lists. │ │ │ │ │ │ int nlist : number of lists. │ │ │ │ │ │ We may not know how many lists we will need for the object — maxnlist is the dimension │ │ │ │ │ │ of the sizes[] and p vec[] arrays and nlist is the present number of active lists. When │ │ │ │ │ │ we initialize the object using one of the IVL init{1,2,3}() methods, we set nlist equal to │ │ │ │ │ │ maxnlist. We resize the object using IVL setMaxnlist(). │ │ │ │ │ │ • int tsize : total number of list entries. │ │ │ │ │ │ @@ -57,15 +57,15 @@ │ │ │ │ │ │ 1. IVL * IVL_new ( void ) ; │ │ │ │ │ │ This method simply allocates storage for the IVL structure and then sets the default fields by │ │ │ │ │ │ a call to IVL setDefaultFields(). │ │ │ │ │ │ 2. void IVL_setDefaultFields ( IVL *ivl ) ; │ │ │ │ │ │ This method sets the default fields of the object — type = IVL NOTYPE, maxnlist, nlist │ │ │ │ │ │ and tsize are zero, incr is 1024, and sizes, p vec and chunk are NULL. │ │ │ │ │ │ Error checking: If ivl is NULL, an error message is printed and the program exits. │ │ │ │ │ │ - IVL : DRAFT January 16, 2024 3 │ │ │ │ │ │ + IVL : DRAFT February 18, 2025 3 │ │ │ │ │ │ 3. void IVL_clearData ( IVL *ivl ) ; │ │ │ │ │ │ This method clears any data allocated by this object and then sets the default fields with a │ │ │ │ │ │ call to IVL setDefaultFields(). Any storage held by the Ichunk structures is free’d, and │ │ │ │ │ │ if sizes or p vec are not NULL, they are free’d. │ │ │ │ │ │ Error checking: If ivl is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 4. void IVL_free ( IVL *ivl ) ; │ │ │ │ │ │ This method releases any storage by a call to IVL clearData() then free’s the storage for │ │ │ │ │ │ @@ -87,15 +87,15 @@ │ │ │ │ │ │ 5. int IVL_incr ( IVL *ivl ) ; │ │ │ │ │ │ This method returns incr, the storage increment. │ │ │ │ │ │ Error checking: If ivl is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 6. int IVL_setincr ( IVL *ivl, int incr ) ; │ │ │ │ │ │ This method sets the storage increment to incr. │ │ │ │ │ │ Error checking: If ivl is NULL or incr is negative, an error message is printed and the program │ │ │ │ │ │ exits. │ │ │ │ │ │ - 4 IVL : DRAFT January 16, 2024 │ │ │ │ │ │ + 4 IVL : DRAFT February 18, 2025 │ │ │ │ │ │ 1.2.3 Initialization and resizing methods │ │ │ │ │ │ 1. void IVL_init1 ( IVL *ivl, int type, int maxnlist ) ; │ │ │ │ │ │ This method is used when only the number of lists is known. Any previous data is cleared │ │ │ │ │ │ with a call to IVL clearData(). The type field is set. If maxnlist > 0, storage is allocated │ │ │ │ │ │ for the sizes[] and p vec[] arrays and nlist is set to maxnlist. │ │ │ │ │ │ Error checking: If ivl is NULL or type is invalid or maxnlist is negative, an error message is │ │ │ │ │ │ printed and the program exits. │ │ │ │ │ │ @@ -124,15 +124,15 @@ │ │ │ │ │ │ newmaxnlist == maxnlist,nothingisdone. Otherwise,newstorageforsizes[]andp vec[] │ │ │ │ │ │ is allocated, the information for the first nlist lists is copied over, and the old storage │ │ │ │ │ │ free’d. Note, maxnlist is set to newmaxnlist and nlist is set to the minimum of nlist and │ │ │ │ │ │ newmaxnlist. │ │ │ │ │ │ Error checking: If ivl is NULL or if newmaxnlist is negative, an error message is printed and │ │ │ │ │ │ the program exits. │ │ │ │ │ │ 6. void IVL_setNlist ( IVL *ivl, int newnlist ) ; │ │ │ │ │ │ - IVL : DRAFT January 16, 2024 5 │ │ │ │ │ │ + IVL : DRAFT February 18, 2025 5 │ │ │ │ │ │ This method is used to change the number of lists. If newnlist > maxnlist, storage for │ │ │ │ │ │ the lists is increased via a call to the IVL setMaxnlist() method. Then nlist is set to │ │ │ │ │ │ newnlist. │ │ │ │ │ │ Error checking: If ivl is NULL, or if newnlist is negative, an error message is printed and │ │ │ │ │ │ the program exits. │ │ │ │ │ │ 1.2.4 List manipulation methods │ │ │ │ │ │ 1. void IVL_listAndSize ( IVL *ivl, int ilist, int *psize, int **pivec) ; │ │ │ │ │ │ @@ -151,15 +151,15 @@ │ │ │ │ │ │ if so an error message is printed and the program exits. In method IVL firstInList(), if │ │ │ │ │ │ sizes[ilist] > 0 and p vec[ilist] = NULL, an error message is printed and the program │ │ │ │ │ │ exits. In method IVL nextInList(), if pi is not in the valid range for list ilist, an error │ │ │ │ │ │ message is printed and the program exits. │ │ │ │ │ │ 3. void IVL_setList ( IVL *ivl, int ilist, int isize, int ivec[] ) ; │ │ │ │ │ │ This method sets the size and (possibly) pointer to a list of entries. The behavior of the │ │ │ │ │ │ method depends on the type of the ivl object. Here is the flow chart: │ │ │ │ │ │ - 6 IVL : DRAFT January 16, 2024 │ │ │ │ │ │ + 6 IVL : DRAFT February 18, 2025 │ │ │ │ │ │ if ilist >= maxnlist then │ │ │ │ │ │ the number of lists is increased via a call to IVL setMaxnlist() │ │ │ │ │ │ endif │ │ │ │ │ │ if ilist >= nlist then │ │ │ │ │ │ nlist is increased │ │ │ │ │ │ endif │ │ │ │ │ │ if isize = 0 then │ │ │ │ │ │ @@ -189,15 +189,15 @@ │ │ │ │ │ │ Error checking: If ivl is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 2. int IVL_min ( IVL *ivl ) ; │ │ │ │ │ │ int IVL_max ( IVL *ivl ) ; │ │ │ │ │ │ int IVL_maxListSize ( IVL *ivl ) ; │ │ │ │ │ │ int IVL_sum ( IVL *ivl ) ; │ │ │ │ │ │ These methods return some simple information about the object. │ │ │ │ │ │ Error checking: If ivl is NULL then an error message is printed and the program exits. │ │ │ │ │ │ - IVL : DRAFT January 16, 2024 7 │ │ │ │ │ │ + IVL : DRAFT February 18, 2025 7 │ │ │ │ │ │ 3. int IVL_sortUp ( IVL *ivl ) ; │ │ │ │ │ │ This method sorts each list into ascending order. │ │ │ │ │ │ Error checking: If ivl is NULL or nlist < 0 then an error message is printed and the program │ │ │ │ │ │ exits. │ │ │ │ │ │ 4. int * IVL_equivMap1 ( IVL *ivl ) ; │ │ │ │ │ │ IV * IVL_equivMap2 ( IVL *ivl ) ; │ │ │ │ │ │ Two lists are equivalent if their contents are identical. These methods are used to find the │ │ │ │ │ │ @@ -226,15 +226,15 @@ │ │ │ │ │ │ and the program exits. │ │ │ │ │ │ 8. IVL * IVL_expand ( IVL *ivl, IV *eqmapIV ) ; │ │ │ │ │ │ This method was created in support of a symbolic factorization. An IVL object is constructed │ │ │ │ │ │ using a compressed graph. it must be expanded to reflect the compressed graph. The number │ │ │ │ │ │ of lists does not change (there is one list per front) but the size of each list may change. so │ │ │ │ │ │ we create and return a new IVL object that contains entries for the uncompressed graph. │ │ │ │ │ │ Error checking: If ivl or eqmapIV is NULL, an error message is printed and the program exits. │ │ │ │ │ │ - 8 IVL : DRAFT January 16, 2024 │ │ │ │ │ │ + 8 IVL : DRAFT February 18, 2025 │ │ │ │ │ │ 1.2.6 Miscellaneous methods │ │ │ │ │ │ 1. IVL * IVL_make9P ( int n1, int n2, int ncomp ) ; │ │ │ │ │ │ This method returns an IVL object that contains the full adjacency structure for a 9-point │ │ │ │ │ │ operator on a n1×n2 grid with ncomp components at each grid point. │ │ │ │ │ │ Error checking: If n1, n2 or ncomp is less than or equal to zero, an error message is printed │ │ │ │ │ │ and the program exits. │ │ │ │ │ │ 2. IVL * IVL_make13P ( int n1, int n2 ) ; │ │ │ │ │ │ @@ -261,15 +261,15 @@ │ │ │ │ │ │ and returns the value returned from the called routine. │ │ │ │ │ │ Error checking: If ivl or fn are NULL, or if fn is not of the form *.ivlf (for a formatted file) │ │ │ │ │ │ or *.ivlb (for a binary file), an error message is printed and the method returns zero. │ │ │ │ │ │ 2. int IVL_readFromFormattedFile ( IVL *ivl, FILE *fp ) ; │ │ │ │ │ │ This method reads an IVL object from a formatted file. If there are no errors in reading the │ │ │ │ │ │ data, the value 1 is returned. If an IO error is encountered from fscanf, zero is returned. │ │ │ │ │ │ Error checking: If ivl or fp are NULL an error message is printed and zero is returned. │ │ │ │ │ │ - IVL : DRAFT January 16, 2024 9 │ │ │ │ │ │ + IVL : DRAFT February 18, 2025 9 │ │ │ │ │ │ 3. int IVL_readFromBinaryFile ( IVL *ivl, FILE *fp ) ; │ │ │ │ │ │ This method reads an IVL object from a binary file. If there are no errors in reading the data, │ │ │ │ │ │ the value 1 is returned. If an IO error is encountered from fread, zero is returned. │ │ │ │ │ │ Error checking: If ivl or fp are NULL an error message is printed and zero is returned. │ │ │ │ │ │ 4. int IVL_writeToFile ( IVL *ivl, char *fn ) ; │ │ │ │ │ │ This method writes an IVL object to a file. If the the file can be opened successfully, the │ │ │ │ │ │ method calls IVL writeFromFormattedFile() or IVL writeFromBinaryFile(), closes the │ │ │ │ │ │ @@ -293,15 +293,15 @@ │ │ │ │ │ │ Error checking: If ivl or fp are NULL, an error message is printed and zero is returned. │ │ │ │ │ │ 1.3 Driver programs for the IVL object │ │ │ │ │ │ This section contains brief descriptions of six driver programs. │ │ │ │ │ │ 1. testIO msglvl msgFile inFile outFile │ │ │ │ │ │ This driver program reads in a IVL object from inFile and writes out the object to outFile │ │ │ │ │ │ • The msglvl parameter determines the amount of output — taking msglvl >= 3 means │ │ │ │ │ │ the IVL object is written to the message file. │ │ │ │ │ │ - 10 IVL : DRAFT January 16, 2024 │ │ │ │ │ │ + 10 IVL : DRAFT February 18, 2025 │ │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ │ message file is stdout, otherwise a file is opened with append status to receive any output │ │ │ │ │ │ data. │ │ │ │ │ │ • The inFileparameter is the input file for the IVL object. It must be of the form *.ivlf │ │ │ │ │ │ or *.ivlb. The IVL object is read from the file via the IVL readFromFile() method. │ │ │ │ │ │ • The outFile parameter is the output file for the IVL object. It must be of the form │ │ │ │ │ │ *.ivlf or *.ivlb. The IVL object is written to the file via the IVL writeToFile() │ │ │ ├── ./usr/share/doc/spooles-doc/Ideq.ps.gz │ │ │ │ ├── Ideq.ps │ │ │ │ │ @@ -10,15 +10,15 @@ │ │ │ │ │ %%EndComments │ │ │ │ │ %%BeginDefaults │ │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ │ %%EndDefaults │ │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ │ %DVIPSCommandLine: dvips main -o Ideq.ps │ │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ │ -%DVIPSSource: TeX output 2024.01.16:2047 │ │ │ │ │ +%DVIPSSource: TeX output 2025.02.18:0318 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -1257,20 +1257,21 @@ │ │ │ │ │ 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 52 /four put │ │ │ │ │ -dup 54 /six put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ +dup 56 /eight put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 74 /J put │ │ │ │ │ +dup 70 /F put │ │ │ │ │ dup 97 /a put │ │ │ │ │ -dup 110 /n put │ │ │ │ │ +dup 98 /b put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ dup 114 /r put │ │ │ │ │ dup 117 /u put │ │ │ │ │ dup 121 /y put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ @@ -1454,89 +1455,93 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ │ -C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ │ -6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ │ -11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ │ -1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ │ -A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ │ -F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ │ -EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ │ -033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ │ -A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ │ -468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8A71FF9C085003EBB4F4 │ │ │ │ │ -3D271F5B16B1AAD3EBDC391F534AA46E545E9D8659DD19B309C3B7625A8396FA │ │ │ │ │ -2519464539D46E43ACB72952313C8497315E0319C08628023E8FC54D7D3BAC29 │ │ │ │ │ -D5AD8EFDABF0C33C7AFB7151A6606C62A87F0F5F783569AC4C881A992E3FE420 │ │ │ │ │ -297F7BC5147F3B2FA98450D2F8B07F7D229BC8BE06729920CFEC22556740E1CB │ │ │ │ │ -3DE09AC763C6D4A20AD1599C368FABD07BC35C16683F2A0311A88983415A9140 │ │ │ │ │ -2EFC4BC1B10DCAD4B2B8A28510E5BD39D6616D2B9B079ED3CF9C315B7DEC29D9 │ │ │ │ │ -251DFD0194B34EC175964C23383F23FFB2E41B698C405815D65EAFF9E9DD1DDE │ │ │ │ │ -30F77924656C288B8DDB2E5B0E7B1FAA66791DE3848EE6DE63AD0E945E49C6C7 │ │ │ │ │ -9FCA16E01F027F9EF7ACB55F02F5B0136480802F789F6FE14B430879979BA04D │ │ │ │ │ -F481AD4CF47E6847936F377FB04869F9A80E597301BFCAB718D8764094673876 │ │ │ │ │ -BCEF8FA3701608C84B3A0399A11D2E6AD922CCB7D72AF9EBFB30F4648A37A123 │ │ │ │ │ -CB8FB14BDC351692CF0CCAA5CA9383C2B23BAAA38700327EB743FBBE9EE04041 │ │ │ │ │ -13F5CEF4B3881BBC051C33369A82B3505B1CFD7D91AEF2E43EA728EE48E2D854 │ │ │ │ │ -5A7E516998ACDD4FD835FA901C5A21810A56D51FE919B2E58408EEB4DAEB487F │ │ │ │ │ -BA7F1D292CED902DF3533566D96DAD918319EA650D4FC7D9E0170CDE620F755B │ │ │ │ │ -0E7AE02D9B118481B26F5FF7060FBCFA2A682B6826F00679BCDA68794C05286D │ │ │ │ │ -B616DD08372ACDE0AE6E7EF116F0D36F16241ED4F0E8CCD80377792E3BB1343C │ │ │ │ │ -EEB22CC77738F7CBCBA32CF6C3979F6DF7ED81A89AE8928FD7CC550F2730BA88 │ │ │ │ │ -1B51CEDC63F4C47F261AFCAB7AC3CED20B15C97E714A460A1A3B16436B4A5149 │ │ │ │ │ -8F91DA4BE0B9B648534CE5F442117036B602DC91E2852BEA62F55803B833FDF7 │ │ │ │ │ -9F901AB87489E703DDEED1091A79DC73B4440BBBF2C7592B441187C4A3562204 │ │ │ │ │ -859F08BA3CE2A8ECCD5AAD13C50FB806FE79A388F1822C5608837CBDE526A044 │ │ │ │ │ -12E5CDE4A066932AF2ACA7E8FC6BA4603640944718752975B7DA6E906BE1EA01 │ │ │ │ │ -46736FF5D1AA1CC682D011B6039CF98C35E36D4F14ABC84A38B7203CC9A17756 │ │ │ │ │ -B2B0345276798F1A88A54AD9FEA0853C6DDF28525ED4F0B7380D14147012C2A4 │ │ │ │ │ -5B02888C986C76497EA4C729B0B82EE73C1A1A8E8F1ABF401E341028E9C15AF9 │ │ │ │ │ -354706D8DC07492921AD0932A46736C0D1B066D00287DACCC068FAE6A796EC89 │ │ │ │ │ -54D1D73AA88F3A5912BA9D3FF70065C8D0D0DAD1CD846501E06694374EFDBEC6 │ │ │ │ │ -931F644D5E8494AFC742423AD9A487658E310E0682BE19B8475F4D450487A686 │ │ │ │ │ -2B94494DEAF1C0F59DE82F2CE64BEE5E97F942FCFA1187ED6AA5761E951A7BF7 │ │ │ │ │ -9F842E34A4656C58B35A9E99F7E6762CEE11E0CF59FFD75D7382C5EE6DBB43F1 │ │ │ │ │ -ED219071D3FB22DBA90977723BB467C0490D042684C0724F40DCA3E0D8F1F4E7 │ │ │ │ │ -3C4F9A67BE6528185EAAFDD415224F7E256A4EA00111C17C746CBD80BF569A27 │ │ │ │ │ -D81195D7F79C1CCEEF30ED00D49F48B63E4B8D7953403A3710AE953CC1B76F0F │ │ │ │ │ -F523D777A6A186F262A602543F94AF7471DBE25FEBC207DB42DAF7DC9A5781FB │ │ │ │ │ -2131AD42869D966A734AAE3466DF1CE9D1BCFA72409A558C0AEE6A8E2FEAACB6 │ │ │ │ │ -2CDABCC28433034848ACF9FB4465D272E4AFC48572647F05F41C7A293CC5B595 │ │ │ │ │ -AD31555FB708A72962707348BC7033A8224BD42EB9D75FDF3AE9E6A9C960B330 │ │ │ │ │ -5137DF59F8E2E0D535F41524ABDF070745A4FA25CD8DFD38A5FF30A95452B875 │ │ │ │ │ -6569E8812631300D79A942C563AF174AC05C9F2D09D7D5D3C605F5A6B7F21B34 │ │ │ │ │ -18F270A993B050838E701A17938D1C156CBA7CA4BAC7C562CE9D7B758EAB25A9 │ │ │ │ │ -A6DFFC71F65561341847B776DF34061CE3D439B87B857626987EC93B3B95B8E8 │ │ │ │ │ -76FFB16B263675333FA10414FEED707FF7C366BF8B20FF8577CDEBEBCF1A5BCE │ │ │ │ │ -258C09C90175A5278B7C444A623E3331FDE5A6387B3E389540ED1E7E883958F3 │ │ │ │ │ -3A5C89CCD62256FA069DF4A5090FB17C1F1757C9209DAFB8A1F47182BF3E88D9 │ │ │ │ │ -0B5376B59EE165A761902759C8ED7F5AD301E7EB8B49CC09AF921DB45B7F8002 │ │ │ │ │ -AB32E73AAE53942DE0F9175D8446017006C9C0B93EF39C13B7A879F2F6DDFF16 │ │ │ │ │ -204BB24F976847CF006FD29332FCCB255B5116F7077A44F7066C39C81DC4BAD2 │ │ │ │ │ -40DB2753626C0102E5D047522ABC38EA294A699B8DFD9CA0A7980561A1062E90 │ │ │ │ │ -AB11EE286A9C238D9F721D9980D0A1828C2814972622D948CEE8C812C19A9A03 │ │ │ │ │ -608ED0AC138A436FFBF8BE3D1E66C87793416AF38ED9BC5424568A175FBDAA9E │ │ │ │ │ -D6FC11A7021693819B051562B5A59F32629E2D6019D69DD329BE1894A2B295E1 │ │ │ │ │ -1DCE9683B29AE126C56F26E5C595BF1A8249BDE231DBE8B066F7F62EF149B975 │ │ │ │ │ -A863969A4690504A5EA064721DA909B8157C0B39FBF8228D95CB655E406161E1 │ │ │ │ │ -148610FAEED7C5509880223C06A66DA19E10F94DC2DB481B26 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004FD597ED │ │ │ │ │ +EFDBC64ABD9B79386FB2427D1A63522195B1239C09F8CB3F8BD7A245A6DD82E3 │ │ │ │ │ +260C3889587626DFC5F7978E55F5524ABD6A3319CDD3D3F40D040044D51DA4E1 │ │ │ │ │ +6797EEAC7AA07C77EC6DB0E6E182B545A8BEF63B14F3FC07BAC09E7CD5C17ED6 │ │ │ │ │ +10080704B0DA4E9BA12F968DF8A58458D17E9A5B1F14A83DC51F5B161ADEE1CC │ │ │ │ │ +0183D82ED92C6FC7203C289949EDF0284D9893029FF5408E421324625F17C3E5 │ │ │ │ │ +2437C8F75A9D68EE1AF9174FEA6FC6BF793C7D2E497EA90396CF1A645E283B69 │ │ │ │ │ +8425F47C323587DF91E1D596DCB1E3A787C955D9D965A5E3E26ADF58B62AD5F9 │ │ │ │ │ +0C9AC784DE479780606354111E3202F215650DBBE1063A46F3C10B9EBC974DDA │ │ │ │ │ +A1A28DBBD43E9E5BFF000B12C787D0427928078F8EC5FE90DED97E6C129E8DEA │ │ │ │ │ +51F66504DB83764E52B0BA68DF7BE684C8959CB1D3345CC48221A9A4683306C0 │ │ │ │ │ +62B634E0A539383F0C7A788D9711EFF414869CCC5659D78CEBE009BF2463F56A │ │ │ │ │ +0ADC993348FE96DF7C250E13ED6504AACFE8F8DCA2D2048D9D8CFA127D363EAC │ │ │ │ │ +1F0630E2D1B621E6954038195D965B91FD974FA3F1B8B29D200A16CEBA645E2F │ │ │ │ │ +CEEE6FD49FBBD49E38AE67D4BFFCE91F1FC422554EC4409C5FA18D40FCD6D9B3 │ │ │ │ │ +2185ED1E0F98106D4339F086B05CA36E56EC22C60E2CE23F9C4CC403ACAD3F94 │ │ │ │ │ +4086B4DF6DFA0B7B4716417263E7B558535566AED2F6C2F9846A16D71A7930A7 │ │ │ │ │ +49232D3D16C4A01CF1A1998A06F40062ED329179A85668537C55D0BC24FC0010 │ │ │ │ │ +54DA83E2FC66B2A5D428E6A9BFC983253668C0ECE6CA36DBF97C4B7659D50842 │ │ │ │ │ +C65B36604840EEDA399B57E2DEFAC3E7FB031634CE33D04238F9854D2AAAF448 │ │ │ │ │ +34DA5F3BCCED3166FEEE82BB0BBA0A397CC2F95865CB52AABFF454D93B425809 │ │ │ │ │ +A26AC459F321FD23E2262FE816D06BAAECF32AAF167F84799AF80F9F88388D07 │ │ │ │ │ +0DB5FD57AFEE2850A8DFE977E6AE39CB3DC16DB1A163A583C86C6F775CE33521 │ │ │ │ │ +0081C0BBBAD6D30D26C66B28B38CEAC78FEA5FB3CC5853656B67C6D9D80EB30E │ │ │ │ │ +397558C9179AF5920F34DAB3F578DFCF0DBB137AED17D6325C23883E69EE4621 │ │ │ │ │ +34355A70C19EA68891E1CA937376901C85CDEE109F1665943E29A216DC00937A │ │ │ │ │ +B983A729A4654AD09187C0242D52FA4ADD0853EF4888864914D7D81C56578DD4 │ │ │ │ │ +3B51907032022E6E412D4F114675DEDCA8A9E85DC03A0B583FECD84432D15F70 │ │ │ │ │ +01F627BD6EC91F9FCFDA01BF40E1229B5F164309DBB641AD50970503DA2048C1 │ │ │ │ │ +DF8F36E8D252EE113F0B46677D9BAF376BAE18D74CFB0DBBD0C7E9D0A58BA3ED │ │ │ │ │ +1E5099CAE073EB5638617760AB57849893764EA9735173CD1EAB66884CEA7EE3 │ │ │ │ │ +8843327B2E145BD6FBB49102776B82BC511D109F8BE9E7E99DADABABEDC3CFD9 │ │ │ │ │ +393578FFD85907DFF2849E4CDE6FA4DEC7E1C150EBE4047FFB650F9548BE6D11 │ │ │ │ │ +0C51226A5436F18BF20A02E0F888F46B6AC3A8E8D927ECD3B5E095933AD3859F │ │ │ │ │ +5167C41D832EFCC4093BD2AFA7101AB430E57DAFC3590F05D3CBABB32BC203A0 │ │ │ │ │ +467B23BDB830487C9AA5B85BAC065F8538871B4180F8C4732E637DB090CFDE5A │ │ │ │ │ +3F4F2B5BFAFB848BAAD1A17CB076B34159601639BD93ECAB1214ACABF2C67FE2 │ │ │ │ │ +0658AA20B08681070FF56F1CC52144ABA8765D6E124D1CEA9BBA102808CE1BB2 │ │ │ │ │ +5EDF46BC7BBC2A5B49EE6EC28F5797A3969B057B21FCDBBD0E60848FF14F6CA3 │ │ │ │ │ +70F3060BDBB019B22722C99C7691760F013763B7FBEB62830AE215F195BF9F01 │ │ │ │ │ +21BF4377397E89574CFA47D123AA506A570A77BA6EB4AAB0B237A26154880293 │ │ │ │ │ +3952F832F72ECCB024F02385E5EE8566B165904B594E30D0700D033C6B429F6F │ │ │ │ │ +2A20BC774F442BC9CE29FCC81807C2768A8BC927A215558FBF36DC53F477F04A │ │ │ │ │ +41DA66E1A85B659EB761230977EAD7DA0150513D3323B143D4E2A61BCF03334C │ │ │ │ │ +C0EE3E1B06CFAF58ECC910BD81F0352B75FF1594D6A4EF504232D442174BE766 │ │ │ │ │ +0F8E703F97E21D25D4CD097549C31FEE7017C3916EFB02E7BF869172889827B6 │ │ │ │ │ +A48465EB7612BA3DBC6A9436C7167F149A25CE9F8E3F4F8DE3B5ADF6C0986CB3 │ │ │ │ │ +3A7E2DAB44AB489796461536F5F713017F2620AD03295CAE9285F08974AE0DF8 │ │ │ │ │ +D739260929619B509491AFF09C4CAEF9E65C2CA69470C907ECBF3AB6C955360D │ │ │ │ │ +05ABAC306DB51122A1ADC7EF0DD70FA299A45C505A83727D4598C86319EE9C06 │ │ │ │ │ +7218EFD4F40388354BCF1B79593D5AD221DF955D081F99F880E5CED07321AB3E │ │ │ │ │ +A2FCB8B05D54807D8E15E65B78DCE12989B9276350080C905DBB74CE9AA7E246 │ │ │ │ │ +5D3BAED292C562D4CF54617FCC6654496C7996D1ECE1EFF9258716AB763A12E6 │ │ │ │ │ +316E4C5587351A6DB011F58F6A15BC28BEBDC3836E0CB892807FEC228DC1B380 │ │ │ │ │ +92F7F42279F08D60F13D6A4CB425543C3644461461CBF6F27B6603F613D1FCF8 │ │ │ │ │ +A8410AD82D1498166AEB35D4125D7E2ADEAAB18BC04806AED53513F066E5F154 │ │ │ │ │ +3E13E863C50B9814EE2FB978D0D24A03FAF650CB6E2CADF1E6BE6BAF699AFC03 │ │ │ │ │ +E1A0EEB207B3B9A689ED5B373FE86686AD230BE6C18E1673DDA50E224B343EC5 │ │ │ │ │ +903BA0C8041C13607B50D5852AC7970B15C244E6EBA7D54B3086312CF04761D6 │ │ │ │ │ +7D3D75D51F20C371494AB81AB4A9838B20B483B851D01FEF41EA5C0B4755B964 │ │ │ │ │ +EB6E9B178051C556A010994EB88EAE641F4C1A0D7E0F98D5267E18AEF1AEA7E7 │ │ │ │ │ +9030A97DF89AFF621981C33B645FFB5F3BB2065A7661D11B26E0999561DF3580 │ │ │ │ │ +4A76A05DFAF8085525F8D5C01936F03C32E26E72569371C9EA3B8916F9DFC5FC │ │ │ │ │ +6A6F25A0FFDB981BA8B896393D75774D50828E6ADE903C45406E354703A4BC56 │ │ │ │ │ +2C49A47FEAC970DC433E3050C49F7FB945A9705BD8852D2D65D935F244D3B423 │ │ │ │ │ +EFAB84AAAAB8FBAFF50AFF372A533BCCEB5FC273DBADCF715776DF02A5DCBA9A │ │ │ │ │ +FBF265FAB4745D6475B33611EEE1EA95E7584E0BEEC7CA789AA69C8D03D6F8C0 │ │ │ │ │ +5B6844E2B901ACA560C0433B053D134866E567425174E47173679AAD4486A2D3 │ │ │ │ │ +369C29E4DD2CD6ACA1BE80ED8FF0A9C58A616D26E758BD8E6342624EC83FB590 │ │ │ │ │ +BD354B52B60BB054FAFE9AC63E1564FBC721FE8F276B0413EC89A2C85E5ED1B0 │ │ │ │ │ +3A9D83BE62A4488ADE7CE69971A8AF7E5862A4290EEF6F00D4171C7FFB360065 │ │ │ │ │ +92E72BF02BE27161AE0BB5516572A0BDC4F316FFB24B38484AC8D1FD4CD86062 │ │ │ │ │ +A2B5D03CF28C3A679C039A6EFDD4C9DA7E463AD60234C9F6BBEE48D87DD94D85 │ │ │ │ │ +842F495F3E25723718682CE4D6224CBBF4456F03077EDF736D65B9DDAB09470E │ │ │ │ │ +17742D82011FFA96BFE86B96E858F9352FCD20C3D46B77DBDEE54336EC2249EA │ │ │ │ │ +211F6DFFF5BEA1E5192BE1BAC0BDD5EDDB3D56C6F7C6E543561A0B39E5C1B04F │ │ │ │ │ +C683A7516B6E69D682455386DDA709929D621FA434D403E895AA0A77DBE1DFD2 │ │ │ │ │ +0D060DF82378880147ED97C6E8149686FA048710B113760AC1DA4512FF8556B3 │ │ │ │ │ +16E2447485B8C3CD58D0469C4A45FFB4CB0322BB284C02 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -3216,16 +3221,16 @@ │ │ │ │ │ cleartomark │ │ │ │ │ {restore}if │ │ │ │ │ %%EndFont │ │ │ │ │ TeXDict begin 39158280 55380996 1000 600 600 (main.dvi) │ │ │ │ │ @start /Fa 195[71 60[{}1 90.9091 /CMMI10 rf /Fb 133[50 │ │ │ │ │ 59 4[44 44 46 2[56 62 93 31 2[31 62 2[51 62 50 1[54 11[86 │ │ │ │ │ 5[84 5[42 6[80 13[56 56 56 56 2[31 46[{}24 99.6264 /CMBX12 │ │ │ │ │ -rf /Fc 134[48 3[51 2[36 3[51 12[45 22[47 15[25 3[45 1[45 │ │ │ │ │ -1[45 45 45 3[25 44[{}13 90.9091 /CMSL10 rf /Fd 142[62 │ │ │ │ │ +rf /Fc 134[48 3[51 2[36 12[40 2[51 45 26[59 11[25 1[45 │ │ │ │ │ +2[45 2[45 45 45 3[25 44[{}14 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 │ │ │ │ │ @@ -3325,35 +3330,35 @@ │ │ │ │ │ b(,)31 b Fh(head)47 b(=)h(tail)e(=)i(-1)p Fi(.)0 5049 │ │ │ │ │ y Ff(1.2)135 b(Protot)l(yp)t(es)46 b(and)f(descriptions)g(of)g │ │ │ │ │ Fd(Ideq)e Ff(metho)t(ds)0 5294 y Fi(This)25 b(section)h(con)m(tains)h │ │ │ │ │ (brief)e(descriptions)h(including)f(protot)m(yp)s(es)h(of)f(all)i │ │ │ │ │ (metho)s(ds)d(that)j(b)s(elong)e(to)h(the)g Fh(Ideq)0 │ │ │ │ │ 5407 y Fi(ob)5 b(ject.)1927 5656 y(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fi(2)p 136 100 1130 4 v │ │ │ │ │ -1312 w Fh(Ideq)29 b Fc(:)41 b Fg(DRAFT)30 b Fc(Jan)m(uary)g(16,)i(2024) │ │ │ │ │ -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) │ │ │ │ │ -227 1306 y(b)m(y)f(a)f(call)i(to)f Fh(Ideq)p 905 1306 │ │ │ │ │ -29 4 v 33 w(setDefaultFields\(\))p Fi(.)111 1538 y(2.)46 │ │ │ │ │ -b Fh(void)h(Ideq_setDefaultFields)42 b(\()47 b(Ideq)g(*deq)g(\))g(;)227 │ │ │ │ │ -1710 y Fi(This)22 b(metho)s(d)h(sets)g(the)g(structure's)f(\014elds)g │ │ │ │ │ -(to)i(default)f(v)-5 b(alues:)37 b Fh(head)22 b Fi(and)g │ │ │ │ │ -Fh(tail)g Fi(are)h(set)g(to)h Fh(-1)p Fi(,)g Fh(maxsize)227 │ │ │ │ │ -1823 y Fi(is)31 b(set)g(to)g(zero,)g(and)f(the)g(\014elds)g(for)g │ │ │ │ │ -Fh(iv)g Fi(are)h(set)g(via)g(a)g(call)g(to)g Fh(IV)p │ │ │ │ │ -2518 1823 V 34 w(setDefaultFields\(\))p Fi(.)227 1995 │ │ │ │ │ -y Fg(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fi(If)30 b │ │ │ │ │ -Fh(deq)g Fi(is)g Fh(NULL)p Fi(,)g(an)g(error)g(message)h(is)g(prin)m │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fi(2)p 136 100 1111 4 v │ │ │ │ │ +1293 w Fh(Ideq)29 b Fc(:)41 b Fg(DRAFT)30 b Fc(F)-8 b(ebruary)30 │ │ │ │ │ +b(18,)i(2025)p 2789 100 V 0 399 a Fb(1.2.1)112 b(Basic)38 │ │ │ │ │ +b(metho)s(ds)0 616 y Fi(As)d(usual,)h(there)f(are)g(four)f(basic)h │ │ │ │ │ +(metho)s(ds)g(to)g(supp)s(ort)e(ob)5 b(ject)36 b(creation,)i(setting)e │ │ │ │ │ +(default)f(\014elds,)h(clearing)0 729 y(an)m(y)31 b(allo)s(cated)h │ │ │ │ │ +(data,)f(and)f(free'ing)h(the)g(ob)5 b(ject.)111 1021 │ │ │ │ │ +y(1.)46 b Fh(Ideq)h(*)g(Ideq_new)f(\()h(void)g(\))g(;)227 │ │ │ │ │ +1194 y Fi(This)32 b(metho)s(d)f(simply)h(allo)s(cates)i(storage)g(for)e │ │ │ │ │ +(the)g Fh(Ideq)f Fi(structure)h(and)f(then)h(sets)h(the)f(default)g │ │ │ │ │ +(\014elds)227 1306 y(b)m(y)f(a)f(call)i(to)f Fh(Ideq)p │ │ │ │ │ +905 1306 29 4 v 33 w(setDefaultFields\(\))p Fi(.)111 │ │ │ │ │ +1538 y(2.)46 b Fh(void)h(Ideq_setDefaultFields)42 b(\()47 │ │ │ │ │ +b(Ideq)g(*deq)g(\))g(;)227 1710 y Fi(This)22 b(metho)s(d)h(sets)g(the)g │ │ │ │ │ +(structure's)f(\014elds)g(to)i(default)f(v)-5 b(alues:)37 │ │ │ │ │ +b Fh(head)22 b Fi(and)g Fh(tail)g Fi(are)h(set)g(to)h │ │ │ │ │ +Fh(-1)p Fi(,)g Fh(maxsize)227 1823 y Fi(is)31 b(set)g(to)g(zero,)g(and) │ │ │ │ │ +f(the)g(\014elds)g(for)g Fh(iv)g Fi(are)h(set)g(via)g(a)g(call)g(to)g │ │ │ │ │ +Fh(IV)p 2518 1823 V 34 w(setDefaultFields\(\))p Fi(.)227 │ │ │ │ │ +1995 y Fg(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fi(If)30 │ │ │ │ │ +b Fh(deq)g Fi(is)g Fh(NULL)p Fi(,)g(an)g(error)g(message)h(is)g(prin)m │ │ │ │ │ (ted)f(and)g(the)g(program)g(exits.)111 2227 y(3.)46 │ │ │ │ │ b Fh(void)h(Ideq_clearData)d(\()j(Ideq)g(*deq)g(\))g(;)227 │ │ │ │ │ 2399 y Fi(This)23 b(metho)s(d)h(clears)h(an)m(y)f(data)g(o)m(wned)g(b)m │ │ │ │ │ (y)g(the)g(ob)5 b(ject.)40 b(It)24 b(releases)h(an)m(y)f(storage)h │ │ │ │ │ (held)f(b)m(y)g(the)g Fh(deq->iv)227 2512 y Fi(ob)5 b(ject)32 │ │ │ │ │ b(with)e(a)g(call)i(to)f Fh(IV)p 1165 2512 V 34 w(clearData\(\))p │ │ │ │ │ Fi(.)38 b(It)30 b(then)g(calls)i Fh(Ideq)p 2490 2512 │ │ │ │ │ @@ -3390,17 +3395,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 1130 4 v 1312 100 a Fh(Ideq)29 │ │ │ │ │ -b Fc(:)40 b Fg(DRAFT)122 b Fc(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2723 100 V 1130 w Fi(3)0 399 y Fb(1.2.3)112 b(Utilit)m(y)38 │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1111 4 v 1292 100 a Fh(Ideq)30 │ │ │ │ │ +b Fc(:)40 b Fg(DRAFT)121 b Fc(F)-8 b(ebruary)31 b(18,)g(2025)p │ │ │ │ │ +2742 100 V 1111 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 │ │ │ │ │ @@ -3469,21 +3474,21 @@ │ │ │ │ │ 3130 5136 V 34 w(resize\(\))d Fi(metho)s(d.)227 5248 │ │ │ │ │ y(Otherwise,)f(the)f(item)h(is)g(placed)f(in)m(to)i(the)e(list)h(and)f │ │ │ │ │ Fh(1)g Fi(is)h(returned.)227 5407 y Fg(Err)-5 b(or)34 │ │ │ │ │ b(che)-5 b(cking:)40 b Fi(If)30 b Fh(deq)g Fi(is)g Fh(NULL)p │ │ │ │ │ Fi(,)g(an)g(error)g(message)h(is)g(prin)m(ted)f(and)g(the)g(program)g │ │ │ │ │ (exits.)p eop end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fi(4)p 136 100 1130 4 v │ │ │ │ │ -1312 w Fh(Ideq)29 b Fc(:)41 b Fg(DRAFT)30 b Fc(Jan)m(uary)g(16,)i(2024) │ │ │ │ │ -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 │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fi(4)p 136 100 1111 4 v │ │ │ │ │ +1293 w Fh(Ideq)29 b Fc(:)41 b Fg(DRAFT)30 b Fc(F)-8 b(ebruary)30 │ │ │ │ │ +b(18,)i(2025)p 2789 100 V 0 399 a Fb(1.2.4)112 b(IO)38 │ │ │ │ │ +b(metho)s(ds)111 595 y Fi(1.)46 b Fh(void)h(Ideq_writeForHumanEye)42 │ │ │ │ │ +b(\()47 b(Ideq)g(*deq)g(\))g(;)227 745 y Fi(This)31 b(metho)s(d)g │ │ │ │ │ +(write)h(the)f(state)i(of)f(the)f(ob)5 b(ject,)33 b(\(the)f(size,)h │ │ │ │ │ +(head)f(and)e(tail\))k(and)c(the)i(list)g(of)g(en)m(tries)g(to)227 │ │ │ │ │ 858 y(a)f(\014le.)227 1008 y Fg(Err)-5 b(or)34 b(che)-5 │ │ │ │ │ b(cking:)40 b Fi(If)30 b Fh(deq)g Fi(or)g Fh(fp)g Fi(is)g │ │ │ │ │ Fh(NULL)p Fi(,)g(an)g(error)g(message)i(is)e(prin)m(ted)g(and)g(the)g │ │ │ │ │ (program)g(exits.)p eop end │ │ │ │ │ %%Page: 5 5 │ │ │ │ │ TeXDict begin 5 4 bop 0 866 a Fj(Index)0 1289 y Fh(Ideq)p │ │ │ │ │ 198 1289 29 4 v 33 w(clear\(\))p Fi(,)29 b(3)0 1402 y │ │ │ │ │ ├── ps2ascii {} │ │ │ │ │ │ @@ -16,15 +16,15 @@ │ │ │ │ │ │ • IV iv : an IV object to hold the list vector. │ │ │ │ │ │ A correctly initialized and nontrivial Ideq object will have maxsize > 0. When the dequeue is │ │ │ │ │ │ empty, head = tail = -1. │ │ │ │ │ │ 1.2 Prototypes and descriptions of Ideq methods │ │ │ │ │ │ This section contains brief descriptions including prototypes of all methods that belong to the Ideq │ │ │ │ │ │ object. │ │ │ │ │ │ 1 │ │ │ │ │ │ - 2 Ideq : DRAFT January 16, 2024 │ │ │ │ │ │ + 2 Ideq : DRAFT February 18, 2025 │ │ │ │ │ │ 1.2.1 Basic methods │ │ │ │ │ │ As usual, there are four basic methods to support object creation, setting default fields, clearing │ │ │ │ │ │ any allocated data, and free’ing the object. │ │ │ │ │ │ 1. Ideq * Ideq_new ( void ) ; │ │ │ │ │ │ This method simply allocates storage for the Ideq structure and then sets the default fields │ │ │ │ │ │ by a call to Ideq setDefaultFields(). │ │ │ │ │ │ 2. void Ideq_setDefaultFields ( Ideq *deq ) ; │ │ │ │ │ │ @@ -47,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 16, 2024 3 │ │ │ │ │ │ + Ideq : DRAFT February 18, 2025 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 16, 2024 │ │ │ │ │ │ + 4 Ideq : DRAFT February 18, 2025 │ │ │ │ │ │ 1.2.4 IO methods │ │ │ │ │ │ 1. void Ideq_writeForHumanEye ( Ideq *deq ) ; │ │ │ │ │ │ This method write the state of the object, (the size, head and tail) and the list of entries to │ │ │ │ │ │ a file. │ │ │ │ │ │ Error checking: If deq or fp is NULL, an error message is printed and the program exits. │ │ │ │ │ │ Index │ │ │ │ │ │ Ideq clear(), 3 │ │ │ ├── ./usr/share/doc/spooles-doc/InpMtx.ps.gz │ │ │ │ ├── InpMtx.ps │ │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ │ %%EndComments │ │ │ │ │ %%BeginDefaults │ │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ │ %%EndDefaults │ │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ │ %DVIPSCommandLine: dvips main -o InpMtx.ps │ │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ │ -%DVIPSSource: TeX output 2024.01.16:2047 │ │ │ │ │ +%DVIPSSource: TeX output 2025.02.18:0318 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -2764,20 +2764,21 @@ │ │ │ │ │ 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 52 /four put │ │ │ │ │ -dup 54 /six put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ +dup 56 /eight put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 74 /J put │ │ │ │ │ +dup 70 /F put │ │ │ │ │ dup 97 /a put │ │ │ │ │ -dup 110 /n put │ │ │ │ │ +dup 98 /b put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ dup 114 /r put │ │ │ │ │ dup 117 /u put │ │ │ │ │ dup 121 /y put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ @@ -2961,89 +2962,93 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ │ -C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ │ -6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ │ -11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ │ -1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ │ -A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ │ -F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ │ -EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ │ -033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ │ -A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ │ -468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8A71FF9C085003EBB4F4 │ │ │ │ │ -3D271F5B16B1AAD3EBDC391F534AA46E545E9D8659DD19B309C3B7625A8396FA │ │ │ │ │ -2519464539D46E43ACB72952313C8497315E0319C08628023E8FC54D7D3BAC29 │ │ │ │ │ -D5AD8EFDABF0C33C7AFB7151A6606C62A87F0F5F783569AC4C881A992E3FE420 │ │ │ │ │ -297F7BC5147F3B2FA98450D2F8B07F7D229BC8BE06729920CFEC22556740E1CB │ │ │ │ │ -3DE09AC763C6D4A20AD1599C368FABD07BC35C16683F2A0311A88983415A9140 │ │ │ │ │ -2EFC4BC1B10DCAD4B2B8A28510E5BD39D6616D2B9B079ED3CF9C315B7DEC29D9 │ │ │ │ │ -251DFD0194B34EC175964C23383F23FFB2E41B698C405815D65EAFF9E9DD1DDE │ │ │ │ │ -30F77924656C288B8DDB2E5B0E7B1FAA66791DE3848EE6DE63AD0E945E49C6C7 │ │ │ │ │ -9FCA16E01F027F9EF7ACB55F02F5B0136480802F789F6FE14B430879979BA04D │ │ │ │ │ -F481AD4CF47E6847936F377FB04869F9A80E597301BFCAB718D8764094673876 │ │ │ │ │ -BCEF8FA3701608C84B3A0399A11D2E6AD922CCB7D72AF9EBFB30F4648A37A123 │ │ │ │ │ -CB8FB14BDC351692CF0CCAA5CA9383C2B23BAAA38700327EB743FBBE9EE04041 │ │ │ │ │ -13F5CEF4B3881BBC051C33369A82B3505B1CFD7D91AEF2E43EA728EE48E2D854 │ │ │ │ │ -5A7E516998ACDD4FD835FA901C5A21810A56D51FE919B2E58408EEB4DAEB487F │ │ │ │ │ -BA7F1D292CED902DF3533566D96DAD918319EA650D4FC7D9E0170CDE620F755B │ │ │ │ │ -0E7AE02D9B118481B26F5FF7060FBCFA2A682B6826F00679BCDA68794C05286D │ │ │ │ │ -B616DD08372ACDE0AE6E7EF116F0D36F16241ED4F0E8CCD80377792E3BB1343C │ │ │ │ │ -EEB22CC77738F7CBCBA32CF6C3979F6DF7ED81A89AE8928FD7CC550F2730BA88 │ │ │ │ │ -1B51CEDC63F4C47F261AFCAB7AC3CED20B15C97E714A460A1A3B16436B4A5149 │ │ │ │ │ -8F91DA4BE0B9B648534CE5F442117036B602DC91E2852BEA62F55803B833FDF7 │ │ │ │ │ -9F901AB87489E703DDEED1091A79DC73B4440BBBF2C7592B441187C4A3562204 │ │ │ │ │ -859F08BA3CE2A8ECCD5AAD13C50FB806FE79A388F1822C5608837CBDE526A044 │ │ │ │ │ -12E5CDE4A066932AF2ACA7E8FC6BA4603640944718752975B7DA6E906BE1EA01 │ │ │ │ │ -46736FF5D1AA1CC682D011B6039CF98C35E36D4F14ABC84A38B7203CC9A17756 │ │ │ │ │ -B2B0345276798F1A88A54AD9FEA0853C6DDF28525ED4F0B7380D14147012C2A4 │ │ │ │ │ -5B02888C986C76497EA4C729B0B82EE73C1A1A8E8F1ABF401E341028E9C15AF9 │ │ │ │ │ -354706D8DC07492921AD0932A46736C0D1B066D00287DACCC068FAE6A796EC89 │ │ │ │ │ -54D1D73AA88F3A5912BA9D3FF70065C8D0D0DAD1CD846501E06694374EFDBEC6 │ │ │ │ │ -931F644D5E8494AFC742423AD9A487658E310E0682BE19B8475F4D450487A686 │ │ │ │ │ -2B94494DEAF1C0F59DE82F2CE64BEE5E97F942FCFA1187ED6AA5761E951A7BF7 │ │ │ │ │ -9F842E34A4656C58B35A9E99F7E6762CEE11E0CF59FFD75D7382C5EE6DBB43F1 │ │ │ │ │ -ED219071D3FB22DBA90977723BB467C0490D042684C0724F40DCA3E0D8F1F4E7 │ │ │ │ │ -3C4F9A67BE6528185EAAFDD415224F7E256A4EA00111C17C746CBD80BF569A27 │ │ │ │ │ -D81195D7F79C1CCEEF30ED00D49F48B63E4B8D7953403A3710AE953CC1B76F0F │ │ │ │ │ -F523D777A6A186F262A602543F94AF7471DBE25FEBC207DB42DAF7DC9A5781FB │ │ │ │ │ -2131AD42869D966A734AAE3466DF1CE9D1BCFA72409A558C0AEE6A8E2FEAACB6 │ │ │ │ │ -2CDABCC28433034848ACF9FB4465D272E4AFC48572647F05F41C7A293CC5B595 │ │ │ │ │ -AD31555FB708A72962707348BC7033A8224BD42EB9D75FDF3AE9E6A9C960B330 │ │ │ │ │ -5137DF59F8E2E0D535F41524ABDF070745A4FA25CD8DFD38A5FF30A95452B875 │ │ │ │ │ -6569E8812631300D79A942C563AF174AC05C9F2D09D7D5D3C605F5A6B7F21B34 │ │ │ │ │ -18F270A993B050838E701A17938D1C156CBA7CA4BAC7C562CE9D7B758EAB25A9 │ │ │ │ │ -A6DFFC71F65561341847B776DF34061CE3D439B87B857626987EC93B3B95B8E8 │ │ │ │ │ -76FFB16B263675333FA10414FEED707FF7C366BF8B20FF8577CDEBEBCF1A5BCE │ │ │ │ │ -258C09C90175A5278B7C444A623E3331FDE5A6387B3E389540ED1E7E883958F3 │ │ │ │ │ -3A5C89CCD62256FA069DF4A5090FB17C1F1757C9209DAFB8A1F47182BF3E88D9 │ │ │ │ │ -0B5376B59EE165A761902759C8ED7F5AD301E7EB8B49CC09AF921DB45B7F8002 │ │ │ │ │ -AB32E73AAE53942DE0F9175D8446017006C9C0B93EF39C13B7A879F2F6DDFF16 │ │ │ │ │ -204BB24F976847CF006FD29332FCCB255B5116F7077A44F7066C39C81DC4BAD2 │ │ │ │ │ -40DB2753626C0102E5D047522ABC38EA294A699B8DFD9CA0A7980561A1062E90 │ │ │ │ │ -AB11EE286A9C238D9F721D9980D0A1828C2814972622D948CEE8C812C19A9A03 │ │ │ │ │ -608ED0AC138A436FFBF8BE3D1E66C87793416AF38ED9BC5424568A175FBDAA9E │ │ │ │ │ -D6FC11A7021693819B051562B5A59F32629E2D6019D69DD329BE1894A2B295E1 │ │ │ │ │ -1DCE9683B29AE126C56F26E5C595BF1A8249BDE231DBE8B066F7F62EF149B975 │ │ │ │ │ -A863969A4690504A5EA064721DA909B8157C0B39FBF8228D95CB655E406161E1 │ │ │ │ │ -148610FAEED7C5509880223C06A66DA19E10F94DC2DB481B26 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004FD597ED │ │ │ │ │ +EFDBC64ABD9B79386FB2427D1A63522195B1239C09F8CB3F8BD7A245A6DD82E3 │ │ │ │ │ +260C3889587626DFC5F7978E55F5524ABD6A3319CDD3D3F40D040044D51DA4E1 │ │ │ │ │ +6797EEAC7AA07C77EC6DB0E6E182B545A8BEF63B14F3FC07BAC09E7CD5C17ED6 │ │ │ │ │ +10080704B0DA4E9BA12F968DF8A58458D17E9A5B1F14A83DC51F5B161ADEE1CC │ │ │ │ │ +0183D82ED92C6FC7203C289949EDF0284D9893029FF5408E421324625F17C3E5 │ │ │ │ │ +2437C8F75A9D68EE1AF9174FEA6FC6BF793C7D2E497EA90396CF1A645E283B69 │ │ │ │ │ +8425F47C323587DF91E1D596DCB1E3A787C955D9D965A5E3E26ADF58B62AD5F9 │ │ │ │ │ +0C9AC784DE479780606354111E3202F215650DBBE1063A46F3C10B9EBC974DDA │ │ │ │ │ +A1A28DBBD43E9E5BFF000B12C787D0427928078F8EC5FE90DED97E6C129E8DEA │ │ │ │ │ +51F66504DB83764E52B0BA68DF7BE684C8959CB1D3345CC48221A9A4683306C0 │ │ │ │ │ +62B634E0A539383F0C7A788D9711EFF414869CCC5659D78CEBE009BF2463F56A │ │ │ │ │ +0ADC993348FE96DF7C250E13ED6504AACFE8F8DCA2D2048D9D8CFA127D363EAC │ │ │ │ │ +1F0630E2D1B621E6954038195D965B91FD974FA3F1B8B29D200A16CEBA645E2F │ │ │ │ │ +CEEE6FD49FBBD49E38AE67D4BFFCE91F1FC422554EC4409C5FA18D40FCD6D9B3 │ │ │ │ │ +2185ED1E0F98106D4339F086B05CA36E56EC22C60E2CE23F9C4CC403ACAD3F94 │ │ │ │ │ +4086B4DF6DFA0B7B4716417263E7B558535566AED2F6C2F9846A16D71A7930A7 │ │ │ │ │ +49232D3D16C4A01CF1A1998A06F40062ED329179A85668537C55D0BC24FC0010 │ │ │ │ │ +54DA83E2FC66B2A5D428E6A9BFC983253668C0ECE6CA36DBF97C4B7659D50842 │ │ │ │ │ +C65B36604840EEDA399B57E2DEFAC3E7FB031634CE33D04238F9854D2AAAF448 │ │ │ │ │ +34DA5F3BCCED3166FEEE82BB0BBA0A397CC2F95865CB52AABFF454D93B425809 │ │ │ │ │ +A26AC459F321FD23E2262FE816D06BAAECF32AAF167F84799AF80F9F88388D07 │ │ │ │ │ +0DB5FD57AFEE2850A8DFE977E6AE39CB3DC16DB1A163A583C86C6F775CE33521 │ │ │ │ │ +0081C0BBBAD6D30D26C66B28B38CEAC78FEA5FB3CC5853656B67C6D9D80EB30E │ │ │ │ │ +397558C9179AF5920F34DAB3F578DFCF0DBB137AED17D6325C23883E69EE4621 │ │ │ │ │ +34355A70C19EA68891E1CA937376901C85CDEE109F1665943E29A216DC00937A │ │ │ │ │ +B983A729A4654AD09187C0242D52FA4ADD0853EF4888864914D7D81C56578DD4 │ │ │ │ │ +3B51907032022E6E412D4F114675DEDCA8A9E85DC03A0B583FECD84432D15F70 │ │ │ │ │ +01F627BD6EC91F9FCFDA01BF40E1229B5F164309DBB641AD50970503DA2048C1 │ │ │ │ │ +DF8F36E8D252EE113F0B46677D9BAF376BAE18D74CFB0DBBD0C7E9D0A58BA3ED │ │ │ │ │ +1E5099CAE073EB5638617760AB57849893764EA9735173CD1EAB66884CEA7EE3 │ │ │ │ │ +8843327B2E145BD6FBB49102776B82BC511D109F8BE9E7E99DADABABEDC3CFD9 │ │ │ │ │ +393578FFD85907DFF2849E4CDE6FA4DEC7E1C150EBE4047FFB650F9548BE6D11 │ │ │ │ │ +0C51226A5436F18BF20A02E0F888F46B6AC3A8E8D927ECD3B5E095933AD3859F │ │ │ │ │ +5167C41D832EFCC4093BD2AFA7101AB430E57DAFC3590F05D3CBABB32BC203A0 │ │ │ │ │ +467B23BDB830487C9AA5B85BAC065F8538871B4180F8C4732E637DB090CFDE5A │ │ │ │ │ +3F4F2B5BFAFB848BAAD1A17CB076B34159601639BD93ECAB1214ACABF2C67FE2 │ │ │ │ │ +0658AA20B08681070FF56F1CC52144ABA8765D6E124D1CEA9BBA102808CE1BB2 │ │ │ │ │ +5EDF46BC7BBC2A5B49EE6EC28F5797A3969B057B21FCDBBD0E60848FF14F6CA3 │ │ │ │ │ +70F3060BDBB019B22722C99C7691760F013763B7FBEB62830AE215F195BF9F01 │ │ │ │ │ +21BF4377397E89574CFA47D123AA506A570A77BA6EB4AAB0B237A26154880293 │ │ │ │ │ +3952F832F72ECCB024F02385E5EE8566B165904B594E30D0700D033C6B429F6F │ │ │ │ │ +2A20BC774F442BC9CE29FCC81807C2768A8BC927A215558FBF36DC53F477F04A │ │ │ │ │ +41DA66E1A85B659EB761230977EAD7DA0150513D3323B143D4E2A61BCF03334C │ │ │ │ │ +C0EE3E1B06CFAF58ECC910BD81F0352B75FF1594D6A4EF504232D442174BE766 │ │ │ │ │ +0F8E703F97E21D25D4CD097549C31FEE7017C3916EFB02E7BF869172889827B6 │ │ │ │ │ +A48465EB7612BA3DBC6A9436C7167F149A25CE9F8E3F4F8DE3B5ADF6C0986CB3 │ │ │ │ │ +3A7E2DAB44AB489796461536F5F713017F2620AD03295CAE9285F08974AE0DF8 │ │ │ │ │ +D739260929619B509491AFF09C4CAEF9E65C2CA69470C907ECBF3AB6C955360D │ │ │ │ │ +05ABAC306DB51122A1ADC7EF0DD70FA299A45C505A83727D4598C86319EE9C06 │ │ │ │ │ +7218EFD4F40388354BCF1B79593D5AD221DF955D081F99F880E5CED07321AB3E │ │ │ │ │ +A2FCB8B05D54807D8E15E65B78DCE12989B9276350080C905DBB74CE9AA7E246 │ │ │ │ │ +5D3BAED292C562D4CF54617FCC6654496C7996D1ECE1EFF9258716AB763A12E6 │ │ │ │ │ +316E4C5587351A6DB011F58F6A15BC28BEBDC3836E0CB892807FEC228DC1B380 │ │ │ │ │ +92F7F42279F08D60F13D6A4CB425543C3644461461CBF6F27B6603F613D1FCF8 │ │ │ │ │ +A8410AD82D1498166AEB35D4125D7E2ADEAAB18BC04806AED53513F066E5F154 │ │ │ │ │ +3E13E863C50B9814EE2FB978D0D24A03FAF650CB6E2CADF1E6BE6BAF699AFC03 │ │ │ │ │ +E1A0EEB207B3B9A689ED5B373FE86686AD230BE6C18E1673DDA50E224B343EC5 │ │ │ │ │ +903BA0C8041C13607B50D5852AC7970B15C244E6EBA7D54B3086312CF04761D6 │ │ │ │ │ +7D3D75D51F20C371494AB81AB4A9838B20B483B851D01FEF41EA5C0B4755B964 │ │ │ │ │ +EB6E9B178051C556A010994EB88EAE641F4C1A0D7E0F98D5267E18AEF1AEA7E7 │ │ │ │ │ +9030A97DF89AFF621981C33B645FFB5F3BB2065A7661D11B26E0999561DF3580 │ │ │ │ │ +4A76A05DFAF8085525F8D5C01936F03C32E26E72569371C9EA3B8916F9DFC5FC │ │ │ │ │ +6A6F25A0FFDB981BA8B896393D75774D50828E6ADE903C45406E354703A4BC56 │ │ │ │ │ +2C49A47FEAC970DC433E3050C49F7FB945A9705BD8852D2D65D935F244D3B423 │ │ │ │ │ +EFAB84AAAAB8FBAFF50AFF372A533BCCEB5FC273DBADCF715776DF02A5DCBA9A │ │ │ │ │ +FBF265FAB4745D6475B33611EEE1EA95E7584E0BEEC7CA789AA69C8D03D6F8C0 │ │ │ │ │ +5B6844E2B901ACA560C0433B053D134866E567425174E47173679AAD4486A2D3 │ │ │ │ │ +369C29E4DD2CD6ACA1BE80ED8FF0A9C58A616D26E758BD8E6342624EC83FB590 │ │ │ │ │ +BD354B52B60BB054FAFE9AC63E1564FBC721FE8F276B0413EC89A2C85E5ED1B0 │ │ │ │ │ +3A9D83BE62A4488ADE7CE69971A8AF7E5862A4290EEF6F00D4171C7FFB360065 │ │ │ │ │ +92E72BF02BE27161AE0BB5516572A0BDC4F316FFB24B38484AC8D1FD4CD86062 │ │ │ │ │ +A2B5D03CF28C3A679C039A6EFDD4C9DA7E463AD60234C9F6BBEE48D87DD94D85 │ │ │ │ │ +842F495F3E25723718682CE4D6224CBBF4456F03077EDF736D65B9DDAB09470E │ │ │ │ │ +17742D82011FFA96BFE86B96E858F9352FCD20C3D46B77DBDEE54336EC2249EA │ │ │ │ │ +211F6DFFF5BEA1E5192BE1BAC0BDD5EDDB3D56C6F7C6E543561A0B39E5C1B04F │ │ │ │ │ +C683A7516B6E69D682455386DDA709929D621FA434D403E895AA0A77DBE1DFD2 │ │ │ │ │ +0D060DF82378880147ED97C6E8149686FA048710B113760AC1DA4512FF8556B3 │ │ │ │ │ +16E2447485B8C3CD58D0469C4A45FFB4CB0322BB284C02 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -5612,16 +5617,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 1[42 1[42 42 42 │ │ │ │ │ -3[23 44[{}13 83.022 /CMSL10 rf /Fk 148[35 27 23 20[39 │ │ │ │ │ +3[46 2[33 12[37 2[46 42 26[54 11[23 1[42 2[42 2[42 42 │ │ │ │ │ +42 3[23 44[{}14 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 │ │ │ │ │ @@ -5759,19 +5764,19 @@ │ │ │ │ │ Fo(InpMtx)p 1881 5140 V 28 w(changeStorageMode)o(\(\))p │ │ │ │ │ Fp(.)101 5308 y(5.)42 b(Create)18 b(an)h Fo(IVL)g Fp(ob)5 │ │ │ │ │ b(ject)19 b(that)h(con)n(tains)e(the)i(full)h(adjacency)d(of)i │ │ │ │ │ Fl(A)r Fp(+)r Fl(A)2384 5277 y Fk(T)2456 5308 y Fp(b)n(y)g(calling)e │ │ │ │ │ (the)i Fo(InpMtx)p 3222 5308 V 29 w(fullAdjacency\(\))208 │ │ │ │ │ 5407 y Fp(metho)r(d.)1929 5656 y(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fp(2)p 125 100 1158 4 v │ │ │ │ │ -1323 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(Jan)n(uary)f(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fp(2)p 125 100 1140 4 v │ │ │ │ │ +1305 w Fo(InpMtx)26 b Fj(:)37 b Fm(DRAFT)27 b Fj(F)-7 │ │ │ │ │ +b(ebruary)26 b(18,)h(2025)p 2760 100 V 101 390 a Fp(6.)42 │ │ │ │ │ +b(Create)26 b(a)h Fo(Graph)f Fp(ob)5 b(ject)27 b(using)h(the)g │ │ │ │ │ +Fo(Graph)p 1627 390 27 4 v 29 w(init2\(\))d Fp(metho)r(d)j(and)f(the)h │ │ │ │ │ Fo(IVL)f Fp(ob)5 b(ject)27 b(as)g(an)g(input)i(argumen)n(t.)0 │ │ │ │ │ 591 y(A)i(similar)e(functionalit)n(y)i(exists)f(for)f(creating)h(a)f │ │ │ │ │ Fo(Graph)g Fp(ob)5 b(ject)30 b(from)g(a)g(linear)f(com)n(bination)h(of) │ │ │ │ │ g(t)n(w)n(o)g Fo(InpMtx)e Fp(ob)5 b(jects)0 691 y(that)33 │ │ │ │ │ b(con)n(tains)e(the)i(matrices)e Fl(A)i Fp(and)f Fl(B)t │ │ │ │ │ Fp(.)52 b(The)32 b Fo(InpMtx)p 1847 691 V 29 w(fullAdjacency2\(\))26 │ │ │ │ │ b Fp(metho)r(d)33 b(returns)e(an)h Fo(IVL)f Fp(ob)5 b(ject)33 │ │ │ │ │ @@ -5859,17 +5864,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 1158 4 v 1323 100 a Fo(InpMtx)26 │ │ │ │ │ -b Fj(:)36 b Fm(DRAFT)111 b Fj(Jan)n(uary)25 b(16,)i(2024)p │ │ │ │ │ -2703 100 V 1158 w Fp(3)301 390 y Fi({)41 b Fo(INPMTX)p │ │ │ │ │ +TeXDict begin 3 2 bop 83 100 1140 4 v 1306 100 a Fo(InpMtx)25 │ │ │ │ │ +b Fj(:)37 b Fm(DRAFT)110 b Fj(F)-7 b(ebruary)27 b(18,)g(2025)p │ │ │ │ │ +2721 100 V 1140 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 │ │ │ │ │ @@ -5965,27 +5970,27 @@ │ │ │ │ │ (stored)g(as)g(unsorted)g(pairs)g(or)h(triples,)g(and)f │ │ │ │ │ Fo(0)h Fp(other-)208 5242 y(wise.)125 5407 y Fn(\210)42 │ │ │ │ │ b Fo(INPMTX)p 477 5407 V 28 w(IS)p 593 5407 V 31 w(SORTED\(mtx\))23 │ │ │ │ │ b Fp(returns)k Fo(1)g Fp(if)h(the)g(en)n(tries)f(are)g(stored)g(as)g │ │ │ │ │ (sorted)f(pairs)h(or)g(triples,)g(and)h Fo(0)f Fp(otherwise.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fp(4)p 125 100 1158 4 v │ │ │ │ │ -1323 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(Jan)n(uary)f(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ -Fn(\210)42 b Fo(INPMTX)p 477 730 V 28 w(IS)p 593 730 │ │ │ │ │ -V 31 w(REAL)p 800 730 V 30 w(ENTRIES\(mtx\))22 b Fp(returns)27 │ │ │ │ │ -b Fo(1)h Fp(if)g(the)g(en)n(tries)f(are)f(real,)h(and)g │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fp(4)p 125 100 1140 4 v │ │ │ │ │ +1305 w Fo(InpMtx)26 b Fj(:)37 b Fm(DRAFT)27 b Fj(F)-7 │ │ │ │ │ +b(ebruary)26 b(18,)h(2025)p 2760 100 V 125 390 a Fn(\210)42 │ │ │ │ │ +b Fo(INPMTX)p 477 390 27 4 v 28 w(IS)p 593 390 V 31 w(BY)p │ │ │ │ │ +712 390 V 31 w(VECTORS\(mtx\))22 b Fp(returns)27 b Fo(1)g │ │ │ │ │ +Fp(if)i(the)f(en)n(tries)e(are)h(stored)g(as)g(v)n(ectors,)f(and)h │ │ │ │ │ +Fo(0)g Fp(otherwise.)125 560 y Fn(\210)42 b Fo(INPMTX)p │ │ │ │ │ +477 560 V 28 w(IS)p 593 560 V 31 w(INDICES)p 932 560 │ │ │ │ │ +V 28 w(ONLY\(mtx\))24 b Fp(returns)j Fo(1)h Fp(if)g(the)g(en)n(tries)f │ │ │ │ │ +(are)f(not)i(stored,)f(and)g Fo(0)g Fp(otherwise.)125 │ │ │ │ │ +730 y Fn(\210)42 b Fo(INPMTX)p 477 730 V 28 w(IS)p 593 │ │ │ │ │ +730 V 31 w(REAL)p 800 730 V 30 w(ENTRIES\(mtx\))22 b │ │ │ │ │ +Fp(returns)27 b Fo(1)h Fp(if)g(the)g(en)n(tries)f(are)f(real,)h(and)g │ │ │ │ │ Fo(0)h Fp(otherwise.)125 900 y Fn(\210)42 b Fo(INPMTX)p │ │ │ │ │ 477 900 V 28 w(IS)p 593 900 V 31 w(COMPLEX)p 932 900 │ │ │ │ │ V 28 w(ENTRIES\(mtx\))23 b Fp(returns)k Fo(1)g Fp(if)h(the)g(en)n │ │ │ │ │ (tries)f(are)g(complex,)g(and)h Fo(0)f Fp(otherwise.)0 │ │ │ │ │ 1205 y Fh(1.2)135 b(Protot)l(yp)t(es)46 b(and)f(descriptions)g(of)g │ │ │ │ │ Ff(InpMtx)d Fh(metho)t(ds)0 1414 y Fp(This)22 b(section)f(con)n(tains)g │ │ │ │ │ (brief)h(descriptions)f(including)h(protot)n(yp)r(es)f(of)h(all)g │ │ │ │ │ @@ -6041,17 +6046,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 1158 4 v 1323 100 a Fo(InpMtx)26 │ │ │ │ │ -b Fj(:)36 b Fm(DRAFT)111 b Fj(Jan)n(uary)25 b(16,)i(2024)p │ │ │ │ │ -2703 100 V 1158 w Fp(5)208 390 y Fm(Err)l(or)j(che)l(cking:)38 │ │ │ │ │ +TeXDict begin 5 4 bop 83 100 1140 4 v 1306 100 a Fo(InpMtx)25 │ │ │ │ │ +b Fj(:)37 b Fm(DRAFT)110 b Fj(F)-7 b(ebruary)27 b(18,)g(2025)p │ │ │ │ │ +2721 100 V 1140 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 │ │ │ │ │ @@ -6109,37 +6114,37 @@ │ │ │ │ │ (exits.)60 5139 y(10.)41 b Fo(int)h(*)h(InpMtx_ivec2)c(\()k(InpMtx)e │ │ │ │ │ (*inpmtx)g(\))i(;)208 5273 y Fp(This)27 b(metho)r(d)h(returns)f(the)h │ │ │ │ │ (base)f(address)f(of)i(the)g Fo(ivec2[])d Fp(v)n(ector.)208 │ │ │ │ │ 5407 y Fm(Err)l(or)30 b(che)l(cking:)38 b Fp(If)28 b │ │ │ │ │ Fo(inpmtx)e Fp(is)h Fo(NULL)p Fp(,)f(an)i(error)d(message)h(is)i(prin)n │ │ │ │ │ (ted)f(and)h(the)g(program)d(exits.)p eop end │ │ │ │ │ %%Page: 6 6 │ │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fp(6)p 125 100 1158 4 v │ │ │ │ │ -1323 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(Jan)n(uary)f(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ -(address)f(of)i(the)g Fo(vecids[])c Fp(v)n(ector.)208 │ │ │ │ │ -1093 y Fm(Err)l(or)30 b(che)l(cking:)38 b Fp(If)28 b │ │ │ │ │ -Fo(inpmtx)e Fp(is)h Fo(NULL)p Fp(,)f(an)i(error)d(message)h(is)i(prin)n │ │ │ │ │ -(ted)f(and)h(the)g(program)d(exits.)60 1261 y(13.)41 │ │ │ │ │ -b Fo(int)h(*)h(InpMtx_sizes)c(\()k(InpMtx)e(*inpmtx)g(\))i(;)208 │ │ │ │ │ -1394 y Fp(This)27 b(metho)r(d)h(returns)f(the)h(base)f(address)f(of)i │ │ │ │ │ -(the)g Fo(sizes[])d Fp(v)n(ector.)208 1528 y Fm(Err)l(or)30 │ │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fp(6)p 125 100 1140 4 v │ │ │ │ │ +1305 w Fo(InpMtx)26 b Fj(:)37 b Fm(DRAFT)27 b Fj(F)-7 │ │ │ │ │ +b(ebruary)26 b(18,)h(2025)p 2760 100 V 60 390 a Fp(11.)41 │ │ │ │ │ +b Fo(double)g(*)i(InpMtx_dvec)c(\()k(InpMtx)e(*inpmtx)g(\))i(;)208 │ │ │ │ │ +524 y Fp(This)27 b(metho)r(d)h(returns)f(the)h(base)f(address)f(of)i │ │ │ │ │ +(the)g Fo(dvec[])d Fp(v)n(ector.)208 658 y Fm(Err)l(or)30 │ │ │ │ │ b(che)l(cking:)38 b Fp(If)28 b Fo(inpmtx)e Fp(is)h Fo(NULL)p │ │ │ │ │ Fp(,)f(an)i(error)d(message)h(is)i(prin)n(ted)f(and)h(the)g(program)d │ │ │ │ │ -(exits.)60 1696 y(14.)41 b Fo(int)h(*)h(InpMtx_offsets)38 │ │ │ │ │ -b(\()43 b(InpMtx)e(*inpmtx)g(\))i(;)208 1829 y Fp(This)27 │ │ │ │ │ +(exits.)60 825 y(12.)41 b Fo(int)h(*)h(InpMtx_vecids)38 │ │ │ │ │ +b(\()43 b(InpMtx)f(*inpmtx)e(\))j(;)208 959 y Fp(This)27 │ │ │ │ │ b(metho)r(d)h(returns)f(the)h(base)f(address)f(of)i(the)g │ │ │ │ │ -Fo(offsets[])c Fp(v)n(ector.)208 1963 y Fm(Err)l(or)30 │ │ │ │ │ +Fo(vecids[])c Fp(v)n(ector.)208 1093 y Fm(Err)l(or)30 │ │ │ │ │ +b(che)l(cking:)38 b Fp(If)28 b Fo(inpmtx)e Fp(is)h Fo(NULL)p │ │ │ │ │ +Fp(,)f(an)i(error)d(message)h(is)i(prin)n(ted)f(and)h(the)g(program)d │ │ │ │ │ +(exits.)60 1261 y(13.)41 b Fo(int)h(*)h(InpMtx_sizes)c(\()k(InpMtx)e │ │ │ │ │ +(*inpmtx)g(\))i(;)208 1394 y Fp(This)27 b(metho)r(d)h(returns)f(the)h │ │ │ │ │ +(base)f(address)f(of)i(the)g Fo(sizes[])d Fp(v)n(ector.)208 │ │ │ │ │ +1528 y Fm(Err)l(or)30 b(che)l(cking:)38 b Fp(If)28 b │ │ │ │ │ +Fo(inpmtx)e Fp(is)h Fo(NULL)p Fp(,)f(an)i(error)d(message)h(is)i(prin)n │ │ │ │ │ +(ted)f(and)h(the)g(program)d(exits.)60 1696 y(14.)41 │ │ │ │ │ +b Fo(int)h(*)h(InpMtx_offsets)38 b(\()43 b(InpMtx)e(*inpmtx)g(\))i(;) │ │ │ │ │ +208 1829 y Fp(This)27 b(metho)r(d)h(returns)f(the)h(base)f(address)f │ │ │ │ │ +(of)i(the)g Fo(offsets[])c Fp(v)n(ector.)208 1963 y Fm(Err)l(or)30 │ │ │ │ │ b(che)l(cking:)38 b Fp(If)28 b Fo(inpmtx)e Fp(is)h Fo(NULL)p │ │ │ │ │ Fp(,)f(an)i(error)d(message)h(is)i(prin)n(ted)f(and)h(the)g(program)d │ │ │ │ │ (exits.)60 2131 y(15.)41 b Fo(void)g(InpMtx_vector)e(\()k(InpMtx)e │ │ │ │ │ (*inpmtx,)f(int)j(id,)f(int)g(*pnent,)f(int)h(**pindices)e(\))j(;)208 │ │ │ │ │ 2231 y(void)e(InpMtx_realVector)c(\()43 b(InpMtx)e(*inpmtx,)g(int)h │ │ │ │ │ (id,)g(int)h(*pnent,)1297 2330 y(int)g(**pindices,)c(double)i │ │ │ │ │ (**pentries)e(\))k(;)208 2430 y(void)e(InpMtx_complexVec)o(tor)c(\()43 │ │ │ │ │ @@ -6189,17 +6194,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 1158 4 v 1323 100 a Fo(InpMtx)26 │ │ │ │ │ -b Fj(:)36 b Fm(DRAFT)111 b Fj(Jan)n(uary)25 b(16,)i(2024)p │ │ │ │ │ -2703 100 V 1158 w Fp(7)60 390 y(19.)41 b Fo(void)g(InpMtx_setMaxnvec)o │ │ │ │ │ +TeXDict begin 7 6 bop 83 100 1140 4 v 1306 100 a Fo(InpMtx)25 │ │ │ │ │ +b Fj(:)37 b Fm(DRAFT)110 b Fj(F)-7 b(ebruary)27 b(18,)g(2025)p │ │ │ │ │ +2721 100 V 1140 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 │ │ │ │ │ @@ -6284,24 +6289,25 @@ │ │ │ │ │ b Fp(and)23 b Fo(InpMtx)p 2609 5083 V 29 w(convertToVectors\()o(\))p │ │ │ │ │ Fp(,)18 b(as)23 b(appropri-)208 5182 y(ate.)208 5308 │ │ │ │ │ y Fm(Err)l(or)30 b(che)l(cking:)41 b Fp(If)28 b Fo(inpmtx)e │ │ │ │ │ Fp(is)j Fo(NULL)d Fp(or)i Fo(newMode)d Fp(is)k(in)n(v)-5 │ │ │ │ │ b(alid,)28 b(an)g(error)f(message)g(is)h(prin)n(ted)g(and)g(the)h │ │ │ │ │ (program)208 5407 y(exits.)p eop end │ │ │ │ │ %%Page: 8 8 │ │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fp(8)p 125 100 1158 4 v │ │ │ │ │ -1323 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(Jan)n(uary)f(16,)h │ │ │ │ │ -(2024)p 2743 100 V 0 390 a Fe(1.2.4)112 b(Input)38 b(metho)s(ds)101 │ │ │ │ │ -570 y Fp(1.)k Fo(void)f(InpMtx_inputEntry)c(\()43 b(InpMtx)e(*inpmtx,)g │ │ │ │ │ -(int)h(row,)g(int)g(col)h(\))g(;)208 669 y(void)e(InpMtx_inputRealE)o │ │ │ │ │ -(ntr)o(y)c(\()44 b(InpMtx)d(*inpmtx,)f(int)i(row,)g(int)h(col,)e │ │ │ │ │ -(double)h(value)f(\))i(;)208 769 y(void)e(InpMtx_inputCompl)o(exE)o(nt) │ │ │ │ │ -o(ry)c(\()43 b(InpMtx)e(*inpmtx,)g(int)h(row,)g(int)g(col,)1602 │ │ │ │ │ -869 y(double)f(real,)h(double)f(imag)h(\))h(;)208 1003 │ │ │ │ │ -y Fp(This)29 b(metho)r(d)g(places)g(a)f(single)h(en)n(try)f(in)n(to)h │ │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fp(8)p 125 100 1140 4 v │ │ │ │ │ +1305 w Fo(InpMtx)26 b Fj(:)37 b Fm(DRAFT)27 b Fj(F)-7 │ │ │ │ │ +b(ebruary)26 b(18,)h(2025)p 2760 100 V 0 390 a Fe(1.2.4)112 │ │ │ │ │ +b(Input)38 b(metho)s(ds)101 570 y Fp(1.)k Fo(void)f(InpMtx_inputEntry)c │ │ │ │ │ +(\()43 b(InpMtx)e(*inpmtx,)g(int)h(row,)g(int)g(col)h(\))g(;)208 │ │ │ │ │ +669 y(void)e(InpMtx_inputRealE)o(ntr)o(y)c(\()44 b(InpMtx)d(*inpmtx,)f │ │ │ │ │ +(int)i(row,)g(int)h(col,)e(double)h(value)f(\))i(;)208 │ │ │ │ │ +769 y(void)e(InpMtx_inputCompl)o(exE)o(nt)o(ry)c(\()43 │ │ │ │ │ +b(InpMtx)e(*inpmtx,)g(int)h(row,)g(int)g(col,)1602 869 │ │ │ │ │ +y(double)f(real,)h(double)f(imag)h(\))h(;)208 1003 y │ │ │ │ │ +Fp(This)29 b(metho)r(d)g(places)g(a)f(single)h(en)n(try)f(in)n(to)h │ │ │ │ │ (the)g(matrix)g(ob)5 b(ject.)41 b(The)29 b(co)r(ordinate)f(t)n(yp)r(e)h │ │ │ │ │ (of)g(the)h(ob)5 b(ject)29 b(m)n(ust)g(b)r(e)208 1102 │ │ │ │ │ y Fo(INPMTX)p 477 1102 27 4 v 28 w(BY)p 593 1102 V 31 │ │ │ │ │ w(ROWS)p Fp(,)g Fo(INPMTX)p 1116 1102 V 29 w(BY)p 1233 │ │ │ │ │ 1102 V 30 w(COLUMNS)f Fp(or)h Fo(INPMTX)p 1967 1102 V │ │ │ │ │ 29 w(BY)p 2084 1102 V 31 w(CHEVRONS)p Fp(.)e(The)j(triple)h(is)f │ │ │ │ │ (formed)g(and)g(inserted)g(in)n(to)208 1202 y(the)e(v)n(ectors,)e(whic) │ │ │ │ │ @@ -6383,17 +6389,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 1158 4 v 1323 100 a Fo(InpMtx)26 │ │ │ │ │ -b Fj(:)36 b Fm(DRAFT)111 b Fj(Jan)n(uary)25 b(16,)i(2024)p │ │ │ │ │ -2703 100 V 1158 w Fp(9)338 390 y Fo(int)43 b(rowstride,)c(int)j │ │ │ │ │ +TeXDict begin 9 8 bop 83 100 1140 4 v 1306 100 a Fo(InpMtx)25 │ │ │ │ │ +b Fj(:)37 b Fm(DRAFT)110 b Fj(F)-7 b(ebruary)27 b(18,)g(2025)p │ │ │ │ │ +2721 100 V 1140 w Fp(9)338 390 y Fo(int)43 b(rowstride,)c(int)j │ │ │ │ │ (colstride,)e(int)i(rowind[],)e(int)i(colind[],)e(double)h(mtxent[])g │ │ │ │ │ (\))i(;)208 526 y Fp(This)25 b(metho)r(d)h(places)f(a)g(dense)g │ │ │ │ │ (submatrix)g(in)n(to)g(the)h(matrix)f(ob)5 b(ject.)36 │ │ │ │ │ b(The)25 b(co)r(ordinate)g(t)n(yp)r(e)g(of)h(the)g(ob)5 │ │ │ │ │ b(ject)25 b(m)n(ust)208 625 y(b)r(e)h Fo(INPMTX)p 588 │ │ │ │ │ 625 27 4 v 28 w(BY)p 704 625 V 31 w(ROWS)p Fp(,)e Fo(INPMTX)p │ │ │ │ │ 1222 625 V 29 w(BY)p 1339 625 V 31 w(COLUMNS)e Fp(or)j │ │ │ │ │ @@ -6491,30 +6497,31 @@ │ │ │ │ │ (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 1137 4 │ │ │ │ │ -v 1302 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(Jan)n(uary)f(16,)g │ │ │ │ │ -(2024)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 │ │ │ │ │ -y Fo(colOldToNew)i Fp(can)k(b)r(e)h Fo(NULL)p Fp(.)e(If)i │ │ │ │ │ -Fo(coordType)40 b(==)i(INPMTX)p 2138 727 27 4 v 29 w(BY)p │ │ │ │ │ -2255 727 V 31 w(CHEVRONS)p Fp(,)27 b(then)k(the)g(co)r(ordinates)f(are) │ │ │ │ │ -f(c)n(hanged)208 827 y(to)d(ro)n(w)g(co)r(ordinates.)35 │ │ │ │ │ -b(The)27 b(co)r(ordinates)e(are)h(then)h(mapp)r(ed)g(to)g(their)g(new)f │ │ │ │ │ -(v)-5 b(alues.)37 b(The)26 b Fo(storageMode)d Fp(is)j(set)h(to)208 │ │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fp(10)p 166 100 1120 4 │ │ │ │ │ +v 1284 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)28 b Fj(F)-7 │ │ │ │ │ +b(ebruary)26 b(18,)h(2025)p 2781 100 V 101 390 a Fp(4.)42 │ │ │ │ │ +b Fo(void)f(InpMtx_permute)d(\()43 b(InpMtx)f(*inpmtx,)e(int)i │ │ │ │ │ +(rowOldToNew[],)c(int)k(colOldToNew[])d(\))k(;)208 528 │ │ │ │ │ +y Fp(This)28 b(metho)r(d)g(p)r(erm)n(utes)g(the)h(ro)n(ws)d(and)i(or)g │ │ │ │ │ +(columns)g(of)g(the)g(matrix.)38 b(If)29 b Fo(rowOldToNew)23 │ │ │ │ │ +b Fp(and)28 b Fo(colOldToNew)c Fp(are)208 628 y(b)r(oth)29 │ │ │ │ │ +b Fo(NULL)p Fp(,)e(or)h(if)h(there)g(are)f(no)g(en)n(tries)g(in)i(the)f │ │ │ │ │ +(matrix,)f(the)i(metho)r(d)f(returns.)40 b(Note,)29 b(either)g │ │ │ │ │ +Fo(rowOldToNew)24 b Fp(or)208 727 y Fo(colOldToNew)i │ │ │ │ │ +Fp(can)k(b)r(e)h Fo(NULL)p Fp(.)e(If)i Fo(coordType)40 │ │ │ │ │ +b(==)i(INPMTX)p 2138 727 27 4 v 29 w(BY)p 2255 727 V │ │ │ │ │ +31 w(CHEVRONS)p Fp(,)27 b(then)k(the)g(co)r(ordinates)f(are)f(c)n │ │ │ │ │ +(hanged)208 827 y(to)d(ro)n(w)g(co)r(ordinates.)35 b(The)27 │ │ │ │ │ +b(co)r(ordinates)e(are)h(then)h(mapp)r(ed)g(to)g(their)g(new)f(v)-5 │ │ │ │ │ +b(alues.)37 b(The)26 b Fo(storageMode)d Fp(is)j(set)h(to)208 │ │ │ │ │ 927 y Fo(1)p Fp(,)g(\(ra)n(w)g(triples\).)208 1065 y │ │ │ │ │ Fm(Err)l(or)j(che)l(cking:)38 b Fp(If)28 b Fo(inpmtx)e │ │ │ │ │ Fp(is)h Fo(NULL)p Fp(,)f(an)i(error)d(message)h(is)i(prin)n(ted)f(and)h │ │ │ │ │ (the)g(program)d(exits.)0 1336 y Fe(1.2.6)112 b(Matrix-matrix)39 │ │ │ │ │ b(m)m(ultiply)f(metho)s(ds)0 1518 y Fp(There)18 b(are)f(four)h │ │ │ │ │ (families)h(of)f(matrix-v)n(ector)e(and)j(matrix-matrix)d(m)n(ultiply)j │ │ │ │ │ (metho)r(ds.)34 b(The)19 b Fo(InpMtx)p 3214 1518 V 29 │ │ │ │ │ @@ -6603,17 +6610,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 1137 4 v 1303 100 a Fo(InpMtx)25 │ │ │ │ │ -b Fj(:)37 b Fm(DRAFT)110 b Fj(Jan)n(uary)26 b(16,)g(2024)p │ │ │ │ │ -2682 100 V 1137 w Fp(11)101 390 y(2.)42 b Fo(void)f(InpMtx_nonsym_mmm)o │ │ │ │ │ +TeXDict begin 11 10 bop 83 100 1120 4 v 1285 100 a Fo(InpMtx)25 │ │ │ │ │ +b Fj(:)37 b Fm(DRAFT)111 b Fj(F)-7 b(ebruary)26 b(18,)h(2025)p │ │ │ │ │ +2700 100 V 1120 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) │ │ │ │ │ @@ -6715,30 +6722,30 @@ │ │ │ │ │ b(dimensions)f(and)g(strides)g(for)g Fo(X)1889 5220 y │ │ │ │ │ Fp(-13)98 b(en)n(tries)27 b(of)h Fo(X)f Fp(are)f Fo(NULL)1889 │ │ │ │ │ 5319 y Fp(-14)98 b(t)n(yp)r(es)28 b(of)f Fo(A)p Fp(,)h │ │ │ │ │ Fo(X)f Fp(and)g Fo(Y)g Fp(are)g(not)h(iden)n(tical)1889 │ │ │ │ │ 5419 y(-15)98 b(n)n(um)n(b)r(er)27 b(of)h(columns)f(in)h │ │ │ │ │ Fo(X)f Fp(and)h Fo(Y)f Fp(are)g(not)g(equal)p eop end │ │ │ │ │ %%Page: 12 12 │ │ │ │ │ -TeXDict begin 12 11 bop 0 100 a Fp(12)p 166 100 1137 │ │ │ │ │ -4 v 1302 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(Jan)n(uary)f(16,)g │ │ │ │ │ -(2024)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 │ │ │ │ │ -988 y(int)f(InpMtx_nonsym_gm)o(vm)o(_T)37 b(\()43 b(InpMtx)e(*A,)i │ │ │ │ │ -(double)e(beta[],)g(int)h(ny,)g(double)f(y[],)1384 1088 │ │ │ │ │ -y(double)g(alpha[],)g(int)h(nx,)g(double)g(x[])g(\))h(;)208 │ │ │ │ │ -1187 y(int)f(InpMtx_nonsym_gm)o(vm)o(_H)37 b(\()43 b(InpMtx)e(*A,)i │ │ │ │ │ -(double)e(beta[],)g(int)h(ny,)g(double)f(y[],)1384 1287 │ │ │ │ │ -y(double)g(alpha[],)g(int)h(nx,)g(double)g(x[])g(\))h(;)208 │ │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fp(12)p 166 100 1120 │ │ │ │ │ +4 v 1284 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)28 b Fj(F)-7 │ │ │ │ │ +b(ebruary)26 b(18,)h(2025)p 2781 100 V 101 390 a Fp(4.)42 │ │ │ │ │ +b Fo(int)g(InpMtx_nonsym_gm)o(vm)37 b(\()43 b(InpMtx)e(*A,)i(double)e │ │ │ │ │ +(beta[],)f(int)j(ny,)f(double)f(y[],)1297 490 y(double)g(alpha[],)g │ │ │ │ │ +(int)h(nx,)g(double)f(x[])i(\))g(;)208 589 y(int)f(InpMtx_sym_gmvm)37 │ │ │ │ │ +b(\()43 b(InpMtx)f(*A,)g(double)f(beta[],)g(int)h(ny,)g(double)f(y[],) │ │ │ │ │ +1166 689 y(double)h(alpha[],)e(int)i(nx,)h(double)e(x[])h(\))h(;)208 │ │ │ │ │ +789 y(int)f(InpMtx_herm_gmvm)37 b(\()43 b(InpMtx)e(*A,)h(double)g │ │ │ │ │ +(beta[],)e(int)j(ny,)f(double)f(y[],)1210 888 y(double)g(alpha[],)f │ │ │ │ │ +(int)j(nx,)f(double)f(x[])i(\))g(;)208 988 y(int)f(InpMtx_nonsym_gm)o │ │ │ │ │ +(vm)o(_T)37 b(\()43 b(InpMtx)e(*A,)i(double)e(beta[],)g(int)h(ny,)g │ │ │ │ │ +(double)f(y[],)1384 1088 y(double)g(alpha[],)g(int)h(nx,)g(double)g │ │ │ │ │ +(x[])g(\))h(;)208 1187 y(int)f(InpMtx_nonsym_gm)o(vm)o(_H)37 │ │ │ │ │ +b(\()43 b(InpMtx)e(*A,)i(double)e(beta[],)g(int)h(ny,)g(double)f(y[],) │ │ │ │ │ +1384 1287 y(double)g(alpha[],)g(int)h(nx,)g(double)g(x[])g(\))h(;)208 │ │ │ │ │ 1414 y Fp(These)27 b(\014v)n(e)g(metho)r(ds)h(p)r(erform)f(the)h(follo) │ │ │ │ │ n(wing)f(computations.)608 1582 y Fo(InpMtx)p 877 1582 │ │ │ │ │ 27 4 v 28 w(nonsym)p 1169 1582 V 29 w(gmvm\(\))172 b │ │ │ │ │ Fl(y)26 b Fp(:=)d Fl(\014)t(y)e Fp(+)d Fl(\013Ax)164 │ │ │ │ │ b Fp(nonsymmetric)99 b(real)27 b(or)f(complex)608 1681 │ │ │ │ │ y Fo(InpMtx)p 877 1681 V 28 w(sym)p 1037 1681 V 31 w(gmvm\(\))302 │ │ │ │ │ b Fl(y)26 b Fp(:=)d Fl(\014)t(y)e Fp(+)d Fl(\013Ax)164 │ │ │ │ │ @@ -6817,17 +6824,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 1137 4 v 1303 100 a Fo(InpMtx)25 │ │ │ │ │ -b Fj(:)37 b Fm(DRAFT)110 b Fj(Jan)n(uary)26 b(16,)g(2024)p │ │ │ │ │ -2682 100 V 1137 w Fp(13)0 390 y Fe(1.2.8)112 b(Submatrix)39 │ │ │ │ │ +TeXDict begin 13 12 bop 83 100 1120 4 v 1285 100 a Fo(InpMtx)25 │ │ │ │ │ +b Fj(:)37 b Fm(DRAFT)111 b Fj(F)-7 b(ebruary)26 b(18,)h(2025)p │ │ │ │ │ +2700 100 V 1120 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 │ │ │ │ │ @@ -6915,20 +6922,20 @@ │ │ │ │ │ Fp(to)29 b Fl(a)2795 5320 y Fk(j;i)2869 5308 y Fp(.)43 │ │ │ │ │ b(The)29 b(second)g(metho)r(d)g(mo)n(v)n(es)208 5407 │ │ │ │ │ y Fl(a)252 5419 y Fk(i;j)353 5407 y Fp(for)22 b Fl(i)h(>)g(j)28 │ │ │ │ │ b Fp(to)23 b Fl(a)818 5419 y Fk(j;i)892 5407 y Fp(,)i(\(If)f(the)f │ │ │ │ │ (matrix)g(is)g(Hermitian,)h(the)f(sign)g(of)g(the)h(imaginary)d(part)i │ │ │ │ │ (of)g(an)g(en)n(try)f(is)h(dealt)h(with)p eop end │ │ │ │ │ %%Page: 14 14 │ │ │ │ │ -TeXDict begin 14 13 bop 0 100 a Fp(14)p 166 100 1137 │ │ │ │ │ -4 v 1302 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(Jan)n(uary)f(16,)g │ │ │ │ │ -(2024)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 │ │ │ │ │ +TeXDict begin 14 13 bop 0 100 a Fp(14)p 166 100 1120 │ │ │ │ │ +4 v 1284 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)28 b Fj(F)-7 │ │ │ │ │ +b(ebruary)26 b(18,)h(2025)p 2781 100 V 208 390 a Fp(in)g(the)g(correct) │ │ │ │ │ +f(fashion.\))36 b(In)27 b(other)g(w)n(ords,)e(using)i(these)g(metho)r │ │ │ │ │ +(ds)g(will)g(restore)f(the)h(lo)n(w)n(er)f(or)g(upp)r(er)h(triangular) │ │ │ │ │ +208 490 y(structure)g(after)g(a)g(p)r(erm)n(utation.)208 │ │ │ │ │ 641 y Fm(Err)l(or)38 b(che)l(cking:)56 b Fp(If)37 b Fo(inpmtx)d │ │ │ │ │ Fp(is)i Fo(NULL)p Fp(,)f(or)h(if)h Fo(coordType)32 b │ │ │ │ │ Fp(is)37 b(in)n(v)-5 b(alid,)38 b(an)e(error)f(message)g(is)h(prin)n │ │ │ │ │ (ted)g(and)h(the)208 741 y(program)25 b(exits.)101 945 │ │ │ │ │ y(5.)42 b Fo(void)f(InpMtx_log10profi)o(le)c(\()43 b(InpMtx)e(*inpmtx,) │ │ │ │ │ g(int)h(npts,)g(DV)g(*xDV,)g(DV)h(*yDV,)1428 1044 y(double)e(tausmall,) │ │ │ │ │ f(double)h(taubig,)1428 1144 y(int)h(*pnzero,)f(int)h(*pnsmall,)e(int)i │ │ │ │ │ @@ -7018,17 +7025,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 1137 4 v 1303 100 a Fo(InpMtx)25 │ │ │ │ │ -b Fj(:)37 b Fm(DRAFT)110 b Fj(Jan)n(uary)26 b(16,)g(2024)p │ │ │ │ │ -2682 100 V 1137 w Fp(15)0 390 y Fe(1.2.10)113 b(IO)37 │ │ │ │ │ +TeXDict begin 15 14 bop 83 100 1120 4 v 1285 100 a Fo(InpMtx)25 │ │ │ │ │ +b Fj(:)37 b Fm(DRAFT)111 b Fj(F)-7 b(ebruary)26 b(18,)h(2025)p │ │ │ │ │ +2700 100 V 1120 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 │ │ │ │ │ @@ -7125,22 +7132,22 @@ │ │ │ │ │ y(the)h(storage)d(mo)r(de)j(is)f(b)n(y)h(triples,)f(triples)g(are)g │ │ │ │ │ (written)h(out.)37 b(The)27 b(v)-5 b(alue)28 b Fo(1)f │ │ │ │ │ Fp(is)h(returned.)208 5407 y Fm(Err)l(or)i(che)l(cking:)38 │ │ │ │ │ b Fp(If)28 b Fo(inpmtx)e Fp(or)g Fo(fp)h Fp(are)g Fo(NULL)p │ │ │ │ │ Fp(,)f(an)h(error)f(message)g(is)h(prin)n(ted)h(and)f(zero)g(is)g │ │ │ │ │ (returned.)p eop end │ │ │ │ │ %%Page: 16 16 │ │ │ │ │ -TeXDict begin 16 15 bop 0 100 a Fp(16)p 166 100 1137 │ │ │ │ │ -4 v 1302 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(Jan)n(uary)f(16,)g │ │ │ │ │ -(2024)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 │ │ │ │ │ +TeXDict begin 16 15 bop 0 100 a Fp(16)p 166 100 1120 │ │ │ │ │ +4 v 1284 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)28 b Fj(F)-7 │ │ │ │ │ +b(ebruary)26 b(18,)h(2025)p 2781 100 V 101 390 a Fp(8.)42 │ │ │ │ │ +b Fo(int)g(InpMtx_writeStat)o(s)37 b(\()44 b(InpMtx)d(*inpmtx,)f(FILE)i │ │ │ │ │ +(*fp)g(\))h(;)208 520 y Fp(This)27 b(metho)r(d)h(writes)f(the)h │ │ │ │ │ +(statistics)g(ab)r(out)f(the)h(ob)5 b(ject)28 b(to)f(a)g(\014le.)37 │ │ │ │ │ +b(h)n(uman.)g(The)28 b(v)-5 b(alue)27 b Fo(1)g Fp(is)h(returned.)208 │ │ │ │ │ +649 y Fm(Err)l(or)i(che)l(cking:)38 b Fp(If)28 b Fo(inpmtx)e │ │ │ │ │ Fp(or)g Fo(fp)h Fp(are)g Fo(NULL)p Fp(,)f(an)h(error)f(message)g(is)h │ │ │ │ │ (prin)n(ted)h(and)f(zero)g(is)g(returned.)101 808 y(9.)42 │ │ │ │ │ b Fo(void)f(InpMtx_writeForMa)o(tla)o(b)c(\()44 b(InpMtx)d(*mtx,)g │ │ │ │ │ (char)h(*mtxname,)e(FILE)i(*fp)g(\))h(;)208 937 y Fp(This)27 │ │ │ │ │ b(metho)r(d)h(writes)f(out)h(a)f Fo(InpMtx)e Fp(ob)5 │ │ │ │ │ b(ject)28 b(to)f(a)g(\014le)h(in)g(a)f(Matlab)g(format.)37 │ │ │ │ │ b(A)28 b(sample)f(line)h(is)208 1119 y Fo(a\(10,5\))40 │ │ │ │ │ @@ -7215,17 +7222,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 1137 4 v 1303 100 a Fo(InpMtx)25 │ │ │ │ │ -b Fj(:)37 b Fm(DRAFT)110 b Fj(Jan)n(uary)26 b(16,)g(2024)p │ │ │ │ │ -2682 100 V 1137 w Fp(17)307 390 y Fn(\210)42 b Fp(The)19 │ │ │ │ │ +TeXDict begin 17 16 bop 83 100 1120 4 v 1285 100 a Fo(InpMtx)25 │ │ │ │ │ +b Fj(:)37 b Fm(DRAFT)111 b Fj(F)-7 b(ebruary)26 b(18,)h(2025)p │ │ │ │ │ +2700 100 V 1120 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 │ │ │ │ │ @@ -7321,49 +7328,50 @@ │ │ │ │ │ b(driv)n(er)f(program)f(reads)h(in)i Fo(InpMtx)d Fp(ob)5 │ │ │ │ │ b(ject)23 b(from)g(the)g(\014le)h Fo(inFile)d Fp(that)i(holds)g(a)g │ │ │ │ │ (matrix)g Fl(A)p Fp(.)36 b(It)23 b(then)h(creates)208 │ │ │ │ │ 5407 y(a)j Fo(Graph)e Fp(ob)5 b(ject)28 b(for)f Fl(B)g │ │ │ │ │ Fp(=)c Fl(A)1141 5377 y Fk(T)1193 5407 y Fl(A)28 b Fp(and)g(writes)f │ │ │ │ │ (it)h(to)f(the)h(\014le)g Fo(outFile)p Fp(.)p eop end │ │ │ │ │ %%Page: 18 18 │ │ │ │ │ -TeXDict begin 18 17 bop 0 100 a Fp(18)p 166 100 1137 │ │ │ │ │ -4 v 1302 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(Jan)n(uary)f(16,)g │ │ │ │ │ -(2024)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 │ │ │ │ │ -(op)r(ened)f(with)i Fm(app)l(end)g Fp(status)e(to)g(receiv)n(e)g(an)n │ │ │ │ │ -(y)g(output)h(data.)307 846 y Fn(\210)42 b Fp(The)27 │ │ │ │ │ -b Fo(inFile)e Fp(parameter)h(is)h(the)h(input)g(\014le)f(for)g(the)g │ │ │ │ │ -Fo(InpMtx)e Fp(ob)5 b(ject.)37 b(It)27 b(m)n(ust)h(b)r(e)f(of)g(the)h │ │ │ │ │ -(form)f Fo(*.inpmtxf)390 946 y Fp(or)g Fo(*.inpmtxb)p │ │ │ │ │ -Fp(.)33 b(The)27 b Fo(InpMtx)e Fp(ob)5 b(ject)27 b(is)g(read)g(from)g │ │ │ │ │ -(the)g(\014le)h(via)e(the)i Fo(InpMtx)p 2941 946 27 4 │ │ │ │ │ -v 29 w(readFromFile\(\))22 b Fp(metho)r(d.)307 1075 y │ │ │ │ │ -Fn(\210)42 b Fp(The)35 b Fo(outFile)d Fp(parameter)h(is)i(the)g(output) │ │ │ │ │ -g(\014le)g(for)f(the)h Fo(InpMtx)e Fp(ob)5 b(ject.)58 │ │ │ │ │ -b(If)35 b Fo(outFile)d Fp(is)i Fo(none)f Fp(then)j(the)390 │ │ │ │ │ -1174 y Fo(InpMtx)30 b Fp(ob)5 b(ject)32 b(is)g(not)h(written)f(to)g(a)g │ │ │ │ │ -(\014le.)51 b(Otherwise,)33 b(the)g Fo(InpMtx)p 2675 │ │ │ │ │ -1174 V 28 w(writeToFile\(\))27 b Fp(metho)r(d)33 b(is)f(called)390 │ │ │ │ │ -1274 y(to)d(write)g(the)h(ob)5 b(ject)29 b(to)g(a)g(formatted)g(\014le) │ │ │ │ │ -g(\(if)h Fo(outFile)d Fp(is)i(of)g(the)h(form)f Fo(*.inpmtxf)p │ │ │ │ │ -Fp(\),)d(or)j(a)f(binary)h(\014le)g(\(if)390 1373 y Fo(outFile)c │ │ │ │ │ -Fp(is)i(of)h(the)g(form)f Fo(*.inpmtxb)p Fp(\).)101 1550 │ │ │ │ │ -y(6.)42 b Fo(adjToGraph)d(msglvl)i(msgFile)g(inAdjacencyFile)c │ │ │ │ │ -(outGraphFile)i(flag)208 1680 y Fp(This)23 b(driv)n(er)g(program)e(w)n │ │ │ │ │ -(as)i(used)g(to)h(generate)e(a)h Fo(type)42 b(0)24 b(Graph)d │ │ │ │ │ -Fp(ob)5 b(ject)24 b(\(unit)g(w)n(eigh)n(t)f(v)n(ertices)g(and)g │ │ │ │ │ -(edges\))g(from)208 1780 y(a)k(\014le)g(that)h(con)n(tained)f(the)h │ │ │ │ │ -(adjacency)f(structure)g(of)h(a)f(matrix)g(in)h(the)g(follo)n(wing)e │ │ │ │ │ -(form.)469 1968 y Fo(nvtx)42 b(nadj)469 2068 y(offsets[nvtx+1])469 │ │ │ │ │ +TeXDict begin 18 17 bop 0 100 a Fp(18)p 166 100 1120 │ │ │ │ │ +4 v 1284 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)28 b Fj(F)-7 │ │ │ │ │ +b(ebruary)26 b(18,)h(2025)p 2781 100 V 307 390 a Fn(\210)42 │ │ │ │ │ +b Fp(The)19 b Fo(msglvl)e Fp(parameter)g(determines)i(the)h(amoun)n(t)e │ │ │ │ │ +(of)h(output)h(|)f(taking)f Fo(msglvl)41 b(>=)i(3)19 │ │ │ │ │ +b Fp(means)f(the)h Fo(InpMtx)390 490 y Fp(ob)5 b(ject)28 │ │ │ │ │ +b(is)f(written)h(to)f(the)h(message)e(\014le.)307 618 │ │ │ │ │ +y Fn(\210)42 b Fp(The)32 b Fo(msgFile)c Fp(parameter)i(determines)h │ │ │ │ │ +(the)h(message)e(\014le)i(|)f(if)h Fo(msgFile)d Fp(is)i │ │ │ │ │ +Fo(stdout)p Fp(,)f(then)i(the)g(message)390 718 y(\014le)c(is)f │ │ │ │ │ +Fm(stdout)p Fp(,)h(otherwise)e(a)i(\014le)f(is)h(op)r(ened)f(with)i │ │ │ │ │ +Fm(app)l(end)g Fp(status)e(to)g(receiv)n(e)g(an)n(y)g(output)h(data.) │ │ │ │ │ +307 846 y Fn(\210)42 b Fp(The)27 b Fo(inFile)e Fp(parameter)h(is)h(the) │ │ │ │ │ +h(input)g(\014le)f(for)g(the)g Fo(InpMtx)e Fp(ob)5 b(ject.)37 │ │ │ │ │ +b(It)27 b(m)n(ust)h(b)r(e)f(of)g(the)h(form)f Fo(*.inpmtxf)390 │ │ │ │ │ +946 y Fp(or)g Fo(*.inpmtxb)p Fp(.)33 b(The)27 b Fo(InpMtx)e │ │ │ │ │ +Fp(ob)5 b(ject)27 b(is)g(read)g(from)g(the)g(\014le)h(via)e(the)i │ │ │ │ │ +Fo(InpMtx)p 2941 946 27 4 v 29 w(readFromFile\(\))22 │ │ │ │ │ +b Fp(metho)r(d.)307 1075 y Fn(\210)42 b Fp(The)35 b Fo(outFile)d │ │ │ │ │ +Fp(parameter)h(is)i(the)g(output)g(\014le)g(for)f(the)h │ │ │ │ │ +Fo(InpMtx)e Fp(ob)5 b(ject.)58 b(If)35 b Fo(outFile)d │ │ │ │ │ +Fp(is)i Fo(none)f Fp(then)j(the)390 1174 y Fo(InpMtx)30 │ │ │ │ │ +b Fp(ob)5 b(ject)32 b(is)g(not)h(written)f(to)g(a)g(\014le.)51 │ │ │ │ │ +b(Otherwise,)33 b(the)g Fo(InpMtx)p 2675 1174 V 28 w(writeToFile\(\))27 │ │ │ │ │ +b Fp(metho)r(d)33 b(is)f(called)390 1274 y(to)d(write)g(the)h(ob)5 │ │ │ │ │ +b(ject)29 b(to)g(a)g(formatted)g(\014le)g(\(if)h Fo(outFile)d │ │ │ │ │ +Fp(is)i(of)g(the)h(form)f Fo(*.inpmtxf)p Fp(\),)d(or)j(a)f(binary)h │ │ │ │ │ +(\014le)g(\(if)390 1373 y Fo(outFile)c Fp(is)i(of)h(the)g(form)f │ │ │ │ │ +Fo(*.inpmtxb)p Fp(\).)101 1550 y(6.)42 b Fo(adjToGraph)d(msglvl)i │ │ │ │ │ +(msgFile)g(inAdjacencyFile)c(outGraphFile)i(flag)208 │ │ │ │ │ +1680 y Fp(This)23 b(driv)n(er)g(program)e(w)n(as)i(used)g(to)h │ │ │ │ │ +(generate)e(a)h Fo(type)42 b(0)24 b(Graph)d Fp(ob)5 b(ject)24 │ │ │ │ │ +b(\(unit)g(w)n(eigh)n(t)f(v)n(ertices)g(and)g(edges\))g(from)208 │ │ │ │ │ +1780 y(a)k(\014le)g(that)h(con)n(tained)f(the)h(adjacency)f(structure)g │ │ │ │ │ +(of)h(a)f(matrix)g(in)h(the)g(follo)n(wing)e(form.)469 │ │ │ │ │ +1968 y Fo(nvtx)42 b(nadj)469 2068 y(offsets[nvtx+1])469 │ │ │ │ │ 2167 y(indices[nadj])208 2356 y Fp(There)33 b(are)g Fo(nvtx)f │ │ │ │ │ Fp(v)n(ertices)h(in)h(the)g(graph)f(and)g(the)i(adjacency)e(v)n(ector)f │ │ │ │ │ (has)i Fo(nadj)e Fp(en)n(tries.)55 b(It)34 b(w)n(as)f(not)h(kno)n(wn) │ │ │ │ │ 208 2455 y(whether)27 b(the)h(adjacency)f(structure)h(con)n(tained)f │ │ │ │ │ Fo(\(v,v\))e Fp(en)n(tries)i(or)g(if)i(it)f(w)n(as)f(only)g(the)h(upp)r │ │ │ │ │ (er)g(or)f(lo)n(w)n(er)f(triangle.)208 2555 y(Our)k Fo(Graph)f │ │ │ │ │ Fp(ob)5 b(ject)31 b(is)g(symmetric)f(with)i(lo)r(ops,)f(i.e.,)h │ │ │ │ │ @@ -7424,17 +7432,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 1137 4 v 1303 100 a Fo(InpMtx)25 │ │ │ │ │ -b Fj(:)37 b Fm(DRAFT)110 b Fj(Jan)n(uary)26 b(16,)g(2024)p │ │ │ │ │ -2682 100 V 1137 w Fp(19)469 390 y Fo(nvtx)42 b(nadj)469 │ │ │ │ │ +TeXDict begin 19 18 bop 83 100 1120 4 v 1285 100 a Fo(InpMtx)25 │ │ │ │ │ +b Fj(:)37 b Fm(DRAFT)111 b Fj(F)-7 b(ebruary)26 b(18,)h(2025)p │ │ │ │ │ +2700 100 V 1120 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 │ │ │ │ │ @@ -7524,24 +7532,24 @@ │ │ │ │ │ Fp(is)j(the)g(\014le)g(that)h(holds)f(the)g Fo(Coords)e │ │ │ │ │ Fp(ob)5 b(ject)32 b(|)g(m)n(ust)g(b)r(e)h(of)f(the)h(form)e │ │ │ │ │ Fo(*.coordsf)e Fp(or)390 5278 y Fo(*.coordsb)p Fp(.)307 │ │ │ │ │ 5407 y Fn(\210)42 b Fp(The)28 b Fo(coordType)c Fp(determines)j(the)h │ │ │ │ │ (co)r(ordinate)f(t)n(yp)r(e)g(for)g(the)h Fo(InpMtx)e │ │ │ │ │ Fp(ob)5 b(ject.)p eop end │ │ │ │ │ %%Page: 20 20 │ │ │ │ │ -TeXDict begin 20 19 bop 0 100 a Fp(20)p 166 100 1137 │ │ │ │ │ -4 v 1302 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(Jan)n(uary)f(16,)g │ │ │ │ │ -(2024)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 │ │ │ │ │ +TeXDict begin 20 19 bop 0 100 a Fp(20)p 166 100 1120 │ │ │ │ │ +4 v 1284 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)28 b Fj(F)-7 │ │ │ │ │ +b(ebruary)26 b(18,)h(2025)p 2781 100 V 456 390 a Fi({)41 │ │ │ │ │ +b Fo(1)28 b Fp(|)f(storage)f(of)i(en)n(tries)f(b)n(y)g(ro)n(ws)456 │ │ │ │ │ +516 y Fi({)41 b Fo(2)28 b Fp(|)f(storage)f(of)i(en)n(tries)f(b)n(y)g │ │ │ │ │ +(columns)456 642 y Fi({)41 b Fo(3)28 b Fp(|)f(storage)f(of)i(en)n │ │ │ │ │ +(tries)f(b)n(y)g(c)n(hevrons)307 795 y Fn(\210)42 b Fp(The)28 │ │ │ │ │ +b Fo(seed)f Fp(parameter)f(is)i(used)g(as)f(a)h(random)f(n)n(um)n(b)r │ │ │ │ │ +(er)h(seed)g(to)f(determine)i(the)f(ro)n(w)f(and)g(column)h(p)r(erm)n │ │ │ │ │ +(u-)390 895 y(tations)f(for)g(the)h(matrix-v)n(ector)e(m)n(ultiply)-7 │ │ │ │ │ b(.)307 1047 y Fn(\210)42 b Fp(The)23 b Fo(outInpMtxFile)18 │ │ │ │ │ b Fp(parameter)j(is)i(the)g(output)h(\014le)f(for)f(the)h │ │ │ │ │ Fo(InpMtx)e Fp(ob)5 b(ject.)35 b(If)23 b Fo(outInpMtxFile)18 │ │ │ │ │ b Fp(is)23 b Fo(none)390 1147 y Fp(then)j(the)g Fo(InpMtx)e │ │ │ │ │ Fp(ob)5 b(ject)25 b(is)h(not)f(written)h(to)g(a)f(\014le.)36 │ │ │ │ │ b(Otherwise,)26 b(the)g Fo(InpMtx)p 2928 1147 27 4 v │ │ │ │ │ 29 w(writeToFile\(\))20 b Fp(metho)r(d)26 b(is)390 1246 │ │ │ │ │ @@ -7601,17 +7609,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 1137 4 v 1303 100 a Fo(InpMtx)25 │ │ │ │ │ -b Fj(:)37 b Fm(DRAFT)110 b Fj(Jan)n(uary)26 b(16,)g(2024)p │ │ │ │ │ -2682 100 V 1137 w Fp(21)1154 1747 y @beginspecial 47 │ │ │ │ │ +TeXDict begin 21 20 bop 83 100 1120 4 v 1285 100 a Fo(InpMtx)25 │ │ │ │ │ +b Fj(:)37 b Fm(DRAFT)111 b Fj(F)-7 b(ebruary)26 b(18,)h(2025)p │ │ │ │ │ +2700 100 V 1120 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 │ │ │ │ │ @@ -8016,36 +8024,37 @@ │ │ │ │ │ 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 1137 │ │ │ │ │ -4 v 1302 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(Jan)n(uary)f(16,)g │ │ │ │ │ -(2024)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 │ │ │ │ │ -b Fg(\002)h Fo(nrhs)25 b Fp(matrices,)h(and)g(all)g(are)g(\014lled)h │ │ │ │ │ -(with)208 823 y(random)33 b(n)n(um)n(b)r(ers.)58 b(It)35 │ │ │ │ │ -b(then)h(computes)e Fl(Y)54 b Fp(:=)34 b Fl(Y)42 b Fp(+)23 │ │ │ │ │ -b Fl(\013AX)7 b Fp(,)37 b Fl(Y)53 b Fp(:=)35 b Fl(Y)42 │ │ │ │ │ -b Fp(+)23 b Fl(\013A)2748 792 y Fk(T)2801 823 y Fl(X)41 │ │ │ │ │ -b Fp(or)34 b Fl(Y)53 b Fp(:=)35 b Fl(Y)42 b Fp(+)23 b │ │ │ │ │ -Fl(\013A)3537 792 y Fk(H)3600 823 y Fl(X)7 b Fp(.)58 │ │ │ │ │ -b(The)208 922 y(program's)25 b(output)j(is)g(a)f(\014le)g(whic)n(h)h │ │ │ │ │ -(when)g(sen)n(t)f(in)n(to)h(Matlab,)f(outputs)h(the)g(error)d(in)j(the) │ │ │ │ │ -g(computation.)307 1106 y Fn(\210)42 b Fp(The)19 b Fo(msglvl)e │ │ │ │ │ -Fp(parameter)g(determines)i(the)h(amoun)n(t)e(of)h(output)h(|)f(taking) │ │ │ │ │ -f Fo(msglvl)41 b(>=)i(3)19 b Fp(means)f(the)h Fo(InpMtx)390 │ │ │ │ │ +TeXDict begin 22 21 bop 0 100 a Fp(22)p 166 100 1120 │ │ │ │ │ +4 v 1284 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)28 b Fj(F)-7 │ │ │ │ │ +b(ebruary)26 b(18,)h(2025)p 2781 100 V 60 390 a Fp(12.)41 │ │ │ │ │ +b Fo(testMMM)f(msglvl)h(msgFile)g(dataType)f(symflag)h(coordType)f │ │ │ │ │ +(transpose)556 490 y(nrow)i(ncol)g(nitem)g(nrhs)g(seed)f(alphaReal)f │ │ │ │ │ +(alphaImag)208 623 y Fp(This)32 b(driv)n(er)f(program)f(tests)i(the)h │ │ │ │ │ +(matrix-matrix)e(m)n(ultiply)h(metho)r(ds.)52 b(This)32 │ │ │ │ │ +b(driv)n(er)f(program)f(generates)h Fl(A)p Fp(,)i(a)208 │ │ │ │ │ +723 y Fo(nrow)14 b Fg(\002)i Fo(ncol)25 b Fp(matrix)h(using)g │ │ │ │ │ +Fo(nitem)f Fp(input)i(en)n(tries,)f Fl(X)33 b Fp(and)26 │ │ │ │ │ +b Fl(Y)19 b Fp(,)27 b Fo(nrow)15 b Fg(\002)h Fo(nrhs)25 │ │ │ │ │ +b Fp(matrices,)h(and)g(all)g(are)g(\014lled)h(with)208 │ │ │ │ │ +823 y(random)33 b(n)n(um)n(b)r(ers.)58 b(It)35 b(then)h(computes)e │ │ │ │ │ +Fl(Y)54 b Fp(:=)34 b Fl(Y)42 b Fp(+)23 b Fl(\013AX)7 │ │ │ │ │ +b Fp(,)37 b Fl(Y)53 b Fp(:=)35 b Fl(Y)42 b Fp(+)23 b │ │ │ │ │ +Fl(\013A)2748 792 y Fk(T)2801 823 y Fl(X)41 b Fp(or)34 │ │ │ │ │ +b Fl(Y)53 b Fp(:=)35 b Fl(Y)42 b Fp(+)23 b Fl(\013A)3537 │ │ │ │ │ +792 y Fk(H)3600 823 y Fl(X)7 b Fp(.)58 b(The)208 922 │ │ │ │ │ +y(program's)25 b(output)j(is)g(a)f(\014le)g(whic)n(h)h(when)g(sen)n(t)f │ │ │ │ │ +(in)n(to)h(Matlab,)f(outputs)h(the)g(error)d(in)j(the)g(computation.) │ │ │ │ │ +307 1106 y Fn(\210)42 b Fp(The)19 b Fo(msglvl)e Fp(parameter)g │ │ │ │ │ +(determines)i(the)h(amoun)n(t)e(of)h(output)h(|)f(taking)f │ │ │ │ │ +Fo(msglvl)41 b(>=)i(3)19 b Fp(means)f(the)h Fo(InpMtx)390 │ │ │ │ │ 1206 y Fp(ob)5 b(ject)28 b(is)f(written)h(to)f(the)h(message)e(\014le.) │ │ │ │ │ 307 1339 y Fn(\210)42 b Fp(The)32 b Fo(msgFile)c Fp(parameter)i │ │ │ │ │ (determines)h(the)h(message)e(\014le)i(|)f(if)h Fo(msgFile)d │ │ │ │ │ Fp(is)i Fo(stdout)p Fp(,)f(then)i(the)g(message)390 1439 │ │ │ │ │ y(\014le)c(is)f Fm(stdout)p Fp(,)h(otherwise)e(a)i(\014le)f(is)h(op)r │ │ │ │ │ (ened)f(with)i Fm(app)l(end)g Fp(status)e(to)g(receiv)n(e)g(an)n(y)g │ │ │ │ │ (output)h(data.)307 1573 y Fn(\210)42 b Fo(dataType)25 │ │ │ │ │ @@ -8126,17 +8135,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 1137 4 v 1303 100 a Fo(InpMtx)25 │ │ │ │ │ -b Fj(:)37 b Fm(DRAFT)110 b Fj(Jan)n(uary)26 b(16,)g(2024)p │ │ │ │ │ -2682 100 V 1137 w Fp(23)307 390 y Fn(\210)42 b Fo(alphaReal)24 │ │ │ │ │ +TeXDict begin 23 22 bop 83 100 1120 4 v 1285 100 a Fo(InpMtx)25 │ │ │ │ │ +b Fj(:)37 b Fm(DRAFT)111 b Fj(F)-7 b(ebruary)26 b(18,)h(2025)p │ │ │ │ │ +2700 100 V 1120 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 │ │ │ │ │ @@ -8317,18 +8326,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 1137 4 v 1303 100 a Fo(InpMtx)25 │ │ │ │ │ -b Fj(:)37 b Fm(DRAFT)110 b Fj(Jan)n(uary)26 b(16,)g(2024)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 │ │ │ │ │ +TeXDict begin 25 24 bop 83 100 1120 4 v 1285 100 a Fo(InpMtx)25 │ │ │ │ │ +b Fj(:)37 b Fm(DRAFT)111 b Fj(F)-7 b(ebruary)26 b(18,)h(2025)p │ │ │ │ │ +2700 100 V 1120 w Fp(25)0 390 y Fo(InpMtx)p 269 390 27 │ │ │ │ │ +4 v 29 w(supportSymH\(\))p Fp(,)22 b(9)0 490 y Fo(InpMtx)p │ │ │ │ │ 269 490 V 29 w(sym)p 430 490 V 30 w(gmmm\(\))p Fp(,)j(11)0 │ │ │ │ │ 589 y Fo(InpMtx)p 269 589 V 29 w(sym)p 430 589 V 30 w(gmvm\(\))p │ │ │ │ │ Fp(,)g(11)0 689 y Fo(InpMtx)p 269 689 V 29 w(sym)p 430 │ │ │ │ │ 689 V 30 w(mmm\(\))p Fp(,)h(10)0 789 y Fo(InpMtx)p 269 │ │ │ │ │ 789 V 29 w(vecids\(\))p Fp(,)e(6)0 888 y Fo(InpMtx)p │ │ │ │ │ 269 888 V 29 w(vector\(\))p Fp(,)g(6)0 988 y Fo(InpMtx)p │ │ │ │ │ 269 988 V 29 w(writeForHumanEye)o(\(\))o Fp(,)e(15)0 │ │ │ │ │ ├── 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 16, 2024 │ │ │ │ │ │ + 2 InpMtx : DRAFT February 18, 2025 │ │ │ │ │ │ 6. Create a Graph object using the Graph init2() method and the IVL object as an input argument. │ │ │ │ │ │ A similar functionality exists for creating a Graph object from a linear combination of two InpMtx objects │ │ │ │ │ │ that contains the matrices A and B. The InpMtx fullAdjacency2() method returns an IVL object with │ │ │ │ │ │ the full adjacency of (A+B)+(A+B)T. These two methods are called by the DPencil fullAdjacency() │ │ │ │ │ │ methods to return the full adjacency of a matrix pencil. │ │ │ │ │ │ Here is a common sequence of events to use this object when we want to assemble the entries of a sparse │ │ │ │ │ │ matrix. │ │ │ │ │ │ @@ -68,15 +68,15 @@ │ │ │ │ │ │ j,j j,k k,j │ │ │ │ │ │ – INPMTX CUSTOM — custom coordinates. │ │ │ │ │ │ • int storageMode : mode of storage │ │ │ │ │ │ – INPMTX RAW DATA — data is raw pairs or triples, two coordinates and (optionally) one or two │ │ │ │ │ │ double precision values. │ │ │ │ │ │ – INPMTX SORTED — data is sorted and distinct triples, the primary key is the first coordinate, the │ │ │ │ │ │ secondary key is the second coordinate. │ │ │ │ │ │ - InpMtx : DRAFT January 16, 2024 3 │ │ │ │ │ │ + InpMtx : DRAFT February 18, 2025 3 │ │ │ │ │ │ – INPMTX BY VECTORS — data is sorted and distinct vectors. All entries in a vector share some- │ │ │ │ │ │ thing in common. For example, when coordType is INPMTX BY ROWS, INPMTX BY COLUMNS or │ │ │ │ │ │ INPMTX BY CHEVRONS, row vectors, column vectors, or chevron vectors are stored, respectively. │ │ │ │ │ │ WhencoordTypeis INPMTX CUSTOM, a custom type, entries in the same vector have something in │ │ │ │ │ │ common but it need not be a common row, column or chevron coordinate. │ │ │ │ │ │ • int inputMode : mode of data input │ │ │ │ │ │ – INPMTX INDICES ONLY — only indices are stored, not entries. │ │ │ │ │ │ @@ -106,15 +106,15 @@ │ │ │ │ │ │ • INPMTX IS BY COLUMNS(mtx) returns 1 if the entries are stored by columns, and 0 otherwise. │ │ │ │ │ │ • INPMTX IS BY CHEVRONS(mtx) returns 1 if the entries are stored by chevrons, and 0 otherwise. │ │ │ │ │ │ • INPMTX IS BY CUSTOM(mtx) returns 1 if the entries are stored by some custom coordinate, and 0 │ │ │ │ │ │ otherwise. │ │ │ │ │ │ • INPMTX IS RAW DATA(mtx) returns 1 if the entries are stored as unsorted pairs or triples, and 0 other- │ │ │ │ │ │ wise. │ │ │ │ │ │ • INPMTX IS SORTED(mtx) returns 1 if the entries are stored as sorted pairs or triples, and 0 otherwise. │ │ │ │ │ │ - 4 InpMtx : DRAFT January 16, 2024 │ │ │ │ │ │ + 4 InpMtx : DRAFT February 18, 2025 │ │ │ │ │ │ • INPMTX IS BY VECTORS(mtx) returns 1 if the entries are stored as vectors, and 0 otherwise. │ │ │ │ │ │ • INPMTX IS INDICES ONLY(mtx) returns 1 if the entries are not stored, and 0 otherwise. │ │ │ │ │ │ • INPMTX IS REAL ENTRIES(mtx) returns 1 if the entries are real, and 0 otherwise. │ │ │ │ │ │ • INPMTX IS COMPLEX ENTRIES(mtx) returns 1 if the entries are complex, and 0 otherwise. │ │ │ │ │ │ 1.2 Prototypes and descriptions of InpMtx methods │ │ │ │ │ │ This section contains brief descriptions including prototypes of all methods that belong to the InpMtx object. │ │ │ │ │ │ 1.2.1 Basic methods │ │ │ │ │ │ @@ -140,15 +140,15 @@ │ │ │ │ │ │ 1. int InpMtx_coordType ( InpMtx *inpmtx ) ; │ │ │ │ │ │ This method returns the coordinate type. │ │ │ │ │ │ • INPMTX NO TYPE – none specified │ │ │ │ │ │ • INPMTX BY ROWS – storage by row triples │ │ │ │ │ │ • INPMTX BY COLUMNS – storage by column triples │ │ │ │ │ │ • INPMTX BY CHEVRONS – storage by chevron triples │ │ │ │ │ │ • INPMTX CUSTOM – custom type │ │ │ │ │ │ - InpMtx : DRAFT January 16, 2024 5 │ │ │ │ │ │ + InpMtx : DRAFT February 18, 2025 5 │ │ │ │ │ │ Error checking: If inpmtx is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 2. int InpMtx_storageMode ( InpMtx *inpmtx ) ; │ │ │ │ │ │ This method returns the storage mode. │ │ │ │ │ │ • INPMTX NO MODE – none specified │ │ │ │ │ │ • INPMTX RAW DATA – raw triples │ │ │ │ │ │ • INPMTX SORTED – sorted and distinct triples │ │ │ │ │ │ • INPMTX BY VECTORS – vectors by the first coordinate │ │ │ │ │ │ @@ -176,15 +176,15 @@ │ │ │ │ │ │ Error checking: If inpmtx is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 9. int * InpMtx_ivec1 ( InpMtx *inpmtx ) ; │ │ │ │ │ │ This method returns the base address of the ivec1[] vector. │ │ │ │ │ │ Error checking: If inpmtx is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 10. int * InpMtx_ivec2 ( InpMtx *inpmtx ) ; │ │ │ │ │ │ This method returns the base address of the ivec2[] vector. │ │ │ │ │ │ Error checking: If inpmtx is NULL, an error message is printed and the program exits. │ │ │ │ │ │ - 6 InpMtx : DRAFT January 16, 2024 │ │ │ │ │ │ + 6 InpMtx : DRAFT February 18, 2025 │ │ │ │ │ │ 11. double * InpMtx_dvec ( InpMtx *inpmtx ) ; │ │ │ │ │ │ This method returns the base address of the dvec[] vector. │ │ │ │ │ │ Error checking: If inpmtx is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 12. int * InpMtx_vecids ( InpMtx *inpmtx ) ; │ │ │ │ │ │ This method returns the base address of the vecids[] vector. │ │ │ │ │ │ Error checking: If inpmtx is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 13. int * InpMtx_sizes ( InpMtx *inpmtx ) ; │ │ │ │ │ │ @@ -217,15 +217,15 @@ │ │ │ │ │ │ This method sets the maxinum number of entries in the indices and entries vectors. │ │ │ │ │ │ Error checking: If inpmtx is NULL, or if newmaxnent < 0, an error message is printed and the program │ │ │ │ │ │ exits. │ │ │ │ │ │ 18. void InpMtx_setNent ( InpMtx *inpmtx, int newnent ) ; │ │ │ │ │ │ This method sets the present number of entries in the indices and entries vectors. │ │ │ │ │ │ Error checking: If inpmtx is NULL, or if newnent < 0, an error message is printed and the program │ │ │ │ │ │ exits. │ │ │ │ │ │ - InpMtx : DRAFT January 16, 2024 7 │ │ │ │ │ │ + InpMtx : DRAFT February 18, 2025 7 │ │ │ │ │ │ 19. void InpMtx_setMaxnvector ( InpMtx *inpmtx, int newmaxnvector ) ; │ │ │ │ │ │ This method sets the maxinum number of vectors. │ │ │ │ │ │ Error checking: If inpmtx is NULL, or if newmaxnvector < 0, an error message is printed and the │ │ │ │ │ │ program exits. │ │ │ │ │ │ 20. void InpMtx_setNvector ( InpMtx *inpmtx, int newnvector ) ; │ │ │ │ │ │ This method sets the present number of vectors. │ │ │ │ │ │ Error checking: If inpmtx is NULL, or if newnvector < 0, an error message is printed and the program │ │ │ │ │ │ @@ -261,15 +261,15 @@ │ │ │ │ │ │ exits. │ │ │ │ │ │ 3. void InpMtx_changeStorageMode ( InpMtx *inpmtx, int newMode ) ; │ │ │ │ │ │ If storageMode = newMode, the method returns. Otherwise, a translation between the three valid │ │ │ │ │ │ modes is made by calling InpMtx sortAndCompress()and InpMtx convertToVectors(),as appropri- │ │ │ │ │ │ ate. │ │ │ │ │ │ Error checking: If inpmtx is NULL or newMode is invalid, an error message is printed and the program │ │ │ │ │ │ exits. │ │ │ │ │ │ - 8 InpMtx : DRAFT January 16, 2024 │ │ │ │ │ │ + 8 InpMtx : DRAFT February 18, 2025 │ │ │ │ │ │ 1.2.4 Input methods │ │ │ │ │ │ 1. void InpMtx_inputEntry ( InpMtx *inpmtx, int row, int col ) ; │ │ │ │ │ │ void InpMtx_inputRealEntry ( InpMtx *inpmtx, int row, int col, double value ) ; │ │ │ │ │ │ void InpMtx_inputComplexEntry ( InpMtx *inpmtx, int row, int col, │ │ │ │ │ │ double real, double imag ) ; │ │ │ │ │ │ This method places a single entry into the matrix object. The coordinate type of the object must be │ │ │ │ │ │ INPMTX BY ROWS, INPMTX BY COLUMNS or INPMTX BY CHEVRONS. The triple is formed and inserted into │ │ │ │ │ │ @@ -307,15 +307,15 @@ │ │ │ │ │ │ Error checking: If inpmtx is NULL, or chv or chvsize are negative, or chvind or chvent are NULL, an │ │ │ │ │ │ error message is printed and the program exits. │ │ │ │ │ │ 5. void InpMtx_inputMatrix ( InpMtx *inpmtx, int nrow, int col, │ │ │ │ │ │ int rowstride, int colstride, int rowind[], int colind[] ) ; │ │ │ │ │ │ void InpMtx_inputRealMatrix ( InpMtx *inpmtx, int nrow, int col, │ │ │ │ │ │ int rowstride, int colstride, int rowind[], int colind[], double mtxent[] ) ; │ │ │ │ │ │ void InpMtx_inputComplexMatrix ( InpMtx *inpmtx, int nrow, int col, │ │ │ │ │ │ - InpMtx : DRAFT January 16, 2024 9 │ │ │ │ │ │ + InpMtx : DRAFT February 18, 2025 9 │ │ │ │ │ │ int rowstride, int colstride, int rowind[], int colind[], double mtxent[] ) ; │ │ │ │ │ │ This method places a dense submatrix into the matrix object. The coordinate type of the object must │ │ │ │ │ │ be INPMTX BY ROWS, INPMTX BY COLUMNS or INPMTX BY CHEVRONS. The individual entries of the matrix │ │ │ │ │ │ are placed into the vector storage as triples, and the vectors are resized if necessary. │ │ │ │ │ │ Error checking: If inpmtx is NULL, or col or row are negative, or rowstride or colstride are less │ │ │ │ │ │ than 1, or rowind, colind or mtxent are NULL, an error message is printed and the program exits. │ │ │ │ │ │ 6. void InpMtx_inputTriples ( InpMtx *inpmtx, int ntriples, │ │ │ │ │ │ @@ -351,15 +351,15 @@ │ │ │ │ │ │ and A will contain only part of the larger global matrix A. Finding the row an column support enables │ │ │ │ │ │ one to construct local data structures for X and the product αAX. │ │ │ │ │ │ Error checking: If A or supIV is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 3. void InpMtx_mapEntries ( InpMtx *A, IV *rowmapIV, IV *colmapIV ) ; │ │ │ │ │ │ These methods are used to map a matrix from one numbering system to another. The primary use of │ │ │ │ │ │ this method is to map a part of a distributed matrix between the global and local numberings. │ │ │ │ │ │ Error checking: If A, rowmapIV or colmapIV is NULL, an error message is printed and the program exits. │ │ │ │ │ │ - 10 InpMtx : DRAFT January 16, 2024 │ │ │ │ │ │ + 10 InpMtx : DRAFT February 18, 2025 │ │ │ │ │ │ 4. void InpMtx_permute ( InpMtx *inpmtx, int rowOldToNew[], int colOldToNew[] ) ; │ │ │ │ │ │ This method permutes the rows and or columns of the matrix. If rowOldToNew and colOldToNew are │ │ │ │ │ │ both NULL, or if there are no entries in the matrix, the method returns. Note, either rowOldToNew or │ │ │ │ │ │ colOldToNew can be NULL. If coordType == INPMTX BY CHEVRONS, then the coordinates are changed │ │ │ │ │ │ to row coordinates. The coordinates are then mapped to their new values. The storageMode is set to │ │ │ │ │ │ 1, (raw triples). │ │ │ │ │ │ Error checking: If inpmtx is NULL, an error message is printed and the program exits. │ │ │ │ │ │ @@ -395,15 +395,15 @@ │ │ │ │ │ │ InpMtx nonsym mmm H() Y := Y +αA X nonsymmetric complex │ │ │ │ │ │ A, X and Y must all be real or all be complex. When A is real, then α = alpha[0]. When A is complex, │ │ │ │ │ │ then α = alpha[0] + i* alpha[1]. The values of α must be loaded into an array of length 1 or 2. │ │ │ │ │ │ Error checking: If A, Y or X are NULL, or if coordType is not INPMTX BY ROWS, INPMTX BY COLUMNS or │ │ │ │ │ │ INPMTX BY CHEVRONS,orifstorageModeisnotoneofINPMTX RAW DATA,INPMTX SORTEDorINPMTX BY VECTORS, │ │ │ │ │ │ or if inputModeis not SPOOLES REAL or SPOOLES COMPLEX,an error message is printed and the program │ │ │ │ │ │ exits. │ │ │ │ │ │ - InpMtx : DRAFT January 16, 2024 11 │ │ │ │ │ │ + InpMtx : DRAFT February 18, 2025 11 │ │ │ │ │ │ 2. void InpMtx_nonsym_mmmVector ( InpMtx *A, DenseMtx *Y, double alpha[], DenseMtx *X ) ; │ │ │ │ │ │ void InpMtx_sym_mmmVector ( InpMtx *A, DenseMtx *Y, double alpha[], DenseMtx *X ) ; │ │ │ │ │ │ void InpMtx_herm_mmmVector ( InpMtx *A, DenseMtx *Y, double alpha[], DenseMtx *X ) ; │ │ │ │ │ │ void InpMtx_nonsym_mmmVector_T ( InpMtx *A, DenseMtx *Y, double alpha[], DenseMtx *X ) ; │ │ │ │ │ │ void InpMtx_nonsym_mmmVector_H ( InpMtx *A, DenseMtx *Y, double alpha[], DenseMtx *X ) ; │ │ │ │ │ │ These five methods perform the following computations. │ │ │ │ │ │ InpMtx nonsym mmm() y := y +αAx nonsymmetric real or complex │ │ │ │ │ │ @@ -443,15 +443,15 @@ │ │ │ │ │ │ -1 A is NULL -9 alpha is NULL │ │ │ │ │ │ -2 type of A is invalid -10 X is NULL │ │ │ │ │ │ -3 indices of entries of A are NULL -11 type of X is invalid │ │ │ │ │ │ -4 beta is NULL -12 bad dimensions and strides for X │ │ │ │ │ │ -5 Y is NULL -13 entries of X are NULL │ │ │ │ │ │ -6 type of Y is invalid -14 types of A, X and Y are not identical │ │ │ │ │ │ -7 bad dimensions and strides for Y -15 number of columns in X and Y are not equal │ │ │ │ │ │ - 12 InpMtx : DRAFT January 16, 2024 │ │ │ │ │ │ + 12 InpMtx : DRAFT February 18, 2025 │ │ │ │ │ │ 4. int InpMtx_nonsym_gmvm ( InpMtx *A, double beta[], int ny, double y[], │ │ │ │ │ │ double alpha[], int nx, double x[] ) ; │ │ │ │ │ │ int InpMtx_sym_gmvm ( InpMtx *A, double beta[], int ny, double y[], │ │ │ │ │ │ double alpha[], int nx, double x[] ) ; │ │ │ │ │ │ int InpMtx_herm_gmvm ( InpMtx *A, double beta[], int ny, double y[], │ │ │ │ │ │ double alpha[], int nx, double x[] ) ; │ │ │ │ │ │ int InpMtx_nonsym_gmvm_T ( InpMtx *A, double beta[], int ny, double y[], │ │ │ │ │ │ @@ -492,15 +492,15 @@ │ │ │ │ │ │ Error checking: If inpmtxAisNULL,orifthecoordinatetypeisnotINPMTX BY ROWSorINPMTX BY COLUMNS, │ │ │ │ │ │ or if the storage mode is not INPMTX BY VECTORS, an error message is printed and the program exits. │ │ │ │ │ │ 3. IVL * InpMtx_adjForATA ( InpMtx *inpmtxA ) ; │ │ │ │ │ │ T │ │ │ │ │ │ This method creates and returns an IVL object that holds the full adjacency structure of A A, where │ │ │ │ │ │ inpmtxA contains the entries in A. │ │ │ │ │ │ Error checking: If inpmtxA is NULL, an error message is printed and the program exits. │ │ │ │ │ │ - InpMtx : DRAFT January 16, 2024 13 │ │ │ │ │ │ + InpMtx : DRAFT February 18, 2025 13 │ │ │ │ │ │ 1.2.8 Submatrix extraction method │ │ │ │ │ │ 1. int InpMtx_initFromSubmatrix ( InpMtx *B, InpMtx *A, IV *BrowsIV, │ │ │ │ │ │ IV *BcolsIV, int symmetryflag, int msglvl, FILE *msgFile ) ; │ │ │ │ │ │ This method fills B with the submatrix formed from the rows and columns of A found in BrowsIV and │ │ │ │ │ │ BcolsIV. The row and column indices in B are local with respect to BrowsIV and BcolsIV. │ │ │ │ │ │ Whensymmetryflagis SPOOLES SYMMETRICor SPOOLES HERMITIAN, then we assume that when i 6= j, │ │ │ │ │ │ A orA isstored, but not both. (A could be stored by rows of its upper triangle, or by columns of │ │ │ │ │ │ @@ -538,15 +538,15 @@ │ │ │ │ │ │ void InpMtx_mapToUpperTriangleH ( InpMtx *inpmtx ) ; │ │ │ │ │ │ If the InpMtxobject holds only the loweror upper triangle of a matrix (as when the matrix is symmetric │ │ │ │ │ │ or Hermitian), and is then permuted, it is not likely that the permuted object will only have entries in │ │ │ │ │ │ the lower or upper triangle. The first method moves a for i < j to a . The second method moves │ │ │ │ │ │ i,j j,i │ │ │ │ │ │ a for i > j to a , (If the matrix is Hermitian, the sign of the imaginary part of an entry is dealt with │ │ │ │ │ │ i,j j,i │ │ │ │ │ │ - 14 InpMtx : DRAFT January 16, 2024 │ │ │ │ │ │ + 14 InpMtx : DRAFT February 18, 2025 │ │ │ │ │ │ in the correct fashion.) In other words, using these methods will restore the lower or upper triangular │ │ │ │ │ │ structure after a permutation. │ │ │ │ │ │ Error checking: If inpmtx is NULL, or if coordType is invalid, an error message is printed and the │ │ │ │ │ │ program exits. │ │ │ │ │ │ 5. void InpMtx_log10profile ( InpMtx *inpmtx, int npts, DV *xDV, DV *yDV, │ │ │ │ │ │ double tausmall, double taubig, │ │ │ │ │ │ int *pnzero, int *pnsmall, int *pnbig ) ; │ │ │ │ │ │ @@ -582,15 +582,15 @@ │ │ │ │ │ │ returned. If nitem is not positive, -9 is returned. Otherwise, 1 is returned. │ │ │ │ │ │ Return codes: │ │ │ │ │ │ 1 normal return -5 nrow or ncol negative │ │ │ │ │ │ -1 inpmtx is NULL -6 symflag is invalid │ │ │ │ │ │ -2 inputMode invalid -7 (symflag,inputMode)invalid │ │ │ │ │ │ -3 coordType invalid -8 (symflag,nrow,ncol)invalid │ │ │ │ │ │ -4 storageMode invalid -9 nitem negative │ │ │ │ │ │ - InpMtx : DRAFT January 16, 2024 15 │ │ │ │ │ │ + InpMtx : DRAFT February 18, 2025 15 │ │ │ │ │ │ 1.2.10 IO methods │ │ │ │ │ │ There are the usual eight IO routines. The file structure of a InpMtx object is simple: The first en- │ │ │ │ │ │ tries in the file are coordType, storageMode, inputMode, nent and nvector. If nent > 0, then the │ │ │ │ │ │ ivec1IV and ivec2IV vectors follow, If nent > 0 and inputMode = SPOOLES REAL or SPOOLES COMPLEX, │ │ │ │ │ │ the dvecDVvectorfollows. If storageMode = INPMTX BY VECTORSand nvector > 0, the vecidsIV,sizesIV │ │ │ │ │ │ and offsetsIV vectors follow. │ │ │ │ │ │ 1. int InpMtx_readFromFile ( InpMtx *inpmtx, char *fn ) ; │ │ │ │ │ │ @@ -624,15 +624,15 @@ │ │ │ │ │ │ is returned. If an IO error is encountered from fwrite, zero is returned. │ │ │ │ │ │ Error checking: If inpmtx or fp is NULL, an error message is printed and the method returns zero. │ │ │ │ │ │ 7. int InpMtx_writeForHumanEye ( InpMtx *inpmtx, FILE *fp ) ; │ │ │ │ │ │ Thismethodwritestheobjecttoafilesuitableforreadingbyahuman. ThemethodInpMtx writeStats() │ │ │ │ │ │ is called to write out the header and statistics. The data is written out in the appropriate way, e.g., if │ │ │ │ │ │ the storage mode is by triples, triples are written out. The value 1 is returned. │ │ │ │ │ │ Error checking: If inpmtx or fp are NULL, an error message is printed and zero is returned. │ │ │ │ │ │ - 16 InpMtx : DRAFT January 16, 2024 │ │ │ │ │ │ + 16 InpMtx : DRAFT February 18, 2025 │ │ │ │ │ │ 8. int InpMtx_writeStats ( InpMtx *inpmtx, FILE *fp ) ; │ │ │ │ │ │ This method writes the statistics about the object to a file. human. The value 1 is returned. │ │ │ │ │ │ Error checking: If inpmtx or fp are NULL, an error message is printed and zero is returned. │ │ │ │ │ │ 9. void InpMtx_writeForMatlab ( InpMtx *mtx, char *mtxname, FILE *fp ) ; │ │ │ │ │ │ This method writes out a InpMtx object to a file in a Matlab format. A sample line is │ │ │ │ │ │ a(10,5) = -1.550328201511e-01 + 1.848033378871e+00*i ; │ │ │ │ │ │ for complex matrices, or │ │ │ │ │ │ @@ -663,15 +663,15 @@ │ │ │ │ │ │ to write the object to a formatted file (if outFile is of the form *.inpmtxf), or a binary file (if │ │ │ │ │ │ outFile is of the form *.inpmtxb). │ │ │ │ │ │ 2. testFullAdj msglvl msgFile nvtx nent seed │ │ │ │ │ │ This driver program tests the InpMtx fullAdjacency() method. If first generates a InpMtx object │ │ │ │ │ │ filled with random entries of a matrix A and then constructs an IVL object that contains the full │ │ │ │ │ │ adjacency structure of A +AT, diagonal edges included. │ │ │ │ │ │ 1http://math.nist.gov/mcsd/Staff/KRemington/harwell io/harwell io.html │ │ │ │ │ │ - InpMtx : DRAFT January 16, 2024 17 │ │ │ │ │ │ + InpMtx : DRAFT February 18, 2025 17 │ │ │ │ │ │ • Themsglvlparameterdeterminestheamountofoutput—takingmsglvl >= 3meanstheInpMtx │ │ │ │ │ │ object is written to the message file. │ │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the message │ │ │ │ │ │ file is stdout, otherwise a file is opened with append status to receive any output data. │ │ │ │ │ │ • The nvtx parameter is the number of rows and columns in A. │ │ │ │ │ │ • The nent parameter is an upper bound on the number of entries in A. (Since the locations of the │ │ │ │ │ │ entries are generated via random numbers, there may be duplicate entries.) │ │ │ │ │ │ @@ -707,15 +707,15 @@ │ │ │ │ │ │ • The outFile parameter is the output file for the InpMtx object. If outFile is none then the │ │ │ │ │ │ InpMtx object is not written to a file. Otherwise, the InpMtx writeToFile() method is called │ │ │ │ │ │ to write the object to a formatted file (if outFile is of the form *.inpmtxf), or a binary file (if │ │ │ │ │ │ outFile is of the form *.inpmtxb). │ │ │ │ │ │ 5. createGraphForATA msglvl msgFile inFile outFile │ │ │ │ │ │ This driver program reads in InpMtx object from the file inFile that holds a matrix A. It then creates │ │ │ │ │ │ a Graph object for B = ATA and writes it to the file outFile. │ │ │ │ │ │ - 18 InpMtx : DRAFT January 16, 2024 │ │ │ │ │ │ + 18 InpMtx : DRAFT February 18, 2025 │ │ │ │ │ │ • Themsglvlparameterdeterminestheamountofoutput—takingmsglvl >= 3meanstheInpMtx │ │ │ │ │ │ object is written to the message file. │ │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the message │ │ │ │ │ │ file is stdout, otherwise a file is opened with append status to receive any output data. │ │ │ │ │ │ • The inFile parameter is the input file for the InpMtx object. It must be of the form *.inpmtxf │ │ │ │ │ │ or *.inpmtxb. The InpMtx object is read from the file via the InpMtx readFromFile() method. │ │ │ │ │ │ • The outFile parameter is the output file for the InpMtx object. If outFile is none then the │ │ │ │ │ │ @@ -752,15 +752,15 @@ │ │ │ │ │ │ binary file (if outGraphFile is of the form *.graphb). │ │ │ │ │ │ • The flag parameter is used to specify whether the offsets and indices are 0-indexed (as in C) or │ │ │ │ │ │ 1-indexed (as in Fortran). If they are 1-indexed, the offsets and indices are decremented prior to │ │ │ │ │ │ loading into the InpMtx object. │ │ │ │ │ │ 7. weightedAdjToGraph msglvl msgFile inAdjacencyFile outGraphFile flag │ │ │ │ │ │ This driver program was used to generate a type 1 Graph object (weighted vertices, unit weight edges) │ │ │ │ │ │ from a file that contained the adjacency structure of a matrix in the following form. │ │ │ │ │ │ - InpMtx : DRAFT January 16, 2024 19 │ │ │ │ │ │ + InpMtx : DRAFT February 18, 2025 19 │ │ │ │ │ │ nvtx nadj │ │ │ │ │ │ vwghts[nvtx] │ │ │ │ │ │ offsets[nvtx+1] │ │ │ │ │ │ indices[nadj] │ │ │ │ │ │ There are nvtx vertices in the graph and the adjacency vector has nadj entries. It was not known │ │ │ │ │ │ whether the adjacency structure contained (v,v) entries or if it was only the upper or lower triangle. │ │ │ │ │ │ Our Graph object is symmetric with loops, i.e., (u,v) is present if and only if (v,u) is present, and │ │ │ │ │ │ @@ -798,15 +798,15 @@ │ │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the message │ │ │ │ │ │ file is stdout, otherwise a file is opened with append status to receive any message data. │ │ │ │ │ │ • The EGraphFile is the file that holds the EGraph object — must be of the form *.egraphf or │ │ │ │ │ │ *.egraphb. │ │ │ │ │ │ • The CoordsFile is the file that holds the Coords object — must be of the form *.coordsf or │ │ │ │ │ │ *.coordsb. │ │ │ │ │ │ • The coordType determines the coordinate type for the InpMtx object. │ │ │ │ │ │ - 20 InpMtx : DRAFT January 16, 2024 │ │ │ │ │ │ + 20 InpMtx : DRAFT February 18, 2025 │ │ │ │ │ │ – 1 — storage of entries by rows │ │ │ │ │ │ – 2 — storage of entries by columns │ │ │ │ │ │ – 3 — storage of entries by chevrons │ │ │ │ │ │ • The seed parameter is used as a random number seed to determine the row and column permu- │ │ │ │ │ │ tations for the matrix-vector multiply. │ │ │ │ │ │ • The outInpMtxFileparameteris the output file for the InpMtx object. If outInpMtxFileis none │ │ │ │ │ │ then the InpMtx object is not written to a file. Otherwise, the InpMtx writeToFile() method is │ │ │ │ │ │ @@ -839,15 +839,15 @@ │ │ │ │ │ │ profile plot. The message file will contain line of the form. │ │ │ │ │ │ data = [ ... │ │ │ │ │ │ x1 y1 │ │ │ │ │ │ ... │ │ │ │ │ │ xnpts ynpts ] ; │ │ │ │ │ │ which can be used to generate the following matlab plot. An example is given below for the bcsstk23 │ │ │ │ │ │ matrix, where npts = 200, tausmall = 1.e-10 and taubig = 1.e100. │ │ │ │ │ │ - InpMtx : DRAFT January 16, 2024 21 │ │ │ │ │ │ + InpMtx : DRAFT February 18, 2025 21 │ │ │ │ │ │ BCSSTK23: profile of magnitudes of matrix entries │ │ │ │ │ │ 1600 │ │ │ │ │ │ 1400 │ │ │ │ │ │ 1200 │ │ │ │ │ │ 1000 │ │ │ │ │ │ 800 │ │ │ │ │ │ # of entries │ │ │ │ │ │ @@ -883,15 +883,15 @@ │ │ │ │ │ │ • n1 is the number of points in the first direction. │ │ │ │ │ │ • n2 is the number of points in the second direction. │ │ │ │ │ │ • n3 is the number of points in the third direction. │ │ │ │ │ │ • Theseedparameterisarandomnumberseedusedtofillthematrixentrieswithrandomnumbers. │ │ │ │ │ │ • The outFile parameter is the output file for the InpMtx object that holds the matrix. It │ │ │ │ │ │ must be of the form *.inpmtxf or *.inpmtxb. The InpMtx object is written to the file via │ │ │ │ │ │ the InpMtx writeToFile() method. │ │ │ │ │ │ - 22 InpMtx : DRAFT January 16, 2024 │ │ │ │ │ │ + 22 InpMtx : DRAFT February 18, 2025 │ │ │ │ │ │ 12. testMMM msglvl msgFile dataType symflag coordType transpose │ │ │ │ │ │ nrow ncol nitem nrhs seed alphaReal alphaImag │ │ │ │ │ │ This driver program tests the matrix-matrix multiply methods. This driver program generates A, a │ │ │ │ │ │ nrow×ncol matrix using nitem input entries, X and Y, nrow×nrhs matrices, and all are filled with │ │ │ │ │ │ T H │ │ │ │ │ │ random numbers. It then computes Y := Y + αAX, Y := Y + αA X or Y := Y + αA X. The │ │ │ │ │ │ program’s output is a file which when sent into Matlab, outputs the error in the computation. │ │ │ │ │ │ @@ -930,15 +930,15 @@ │ │ │ │ │ │ T │ │ │ │ │ │ Y := βY +αA X. │ │ │ │ │ │ • nrowA is the number of rows in A │ │ │ │ │ │ • ncolA is the number of columns in A │ │ │ │ │ │ • nitem is the number of matrix entries that are assembled into the matrix. │ │ │ │ │ │ • nrhs is the number of columns in X and Y. │ │ │ │ │ │ • Theseedparameterisarandomnumberseedusedtofillthematrixentrieswithrandomnumbers. │ │ │ │ │ │ - InpMtx : DRAFT January 16, 2024 23 │ │ │ │ │ │ + InpMtx : DRAFT February 18, 2025 23 │ │ │ │ │ │ • alphaReal and alphaImag form the α scalar in the multiply. │ │ │ │ │ │ • betaReal and betaImag form the β scalar in the multiply. │ │ │ │ │ │ 14. testGMVM msglvl msgFile dataType symflag coordType transpose │ │ │ │ │ │ nrow ncol nitem seed alphaReal alphaImag betaReal betaImag │ │ │ │ │ │ Thisdriverprogramteststhegeneralizedmatrix-vectormultiplymethods. ItgeneratesA, anrow×ncol │ │ │ │ │ │ matrix using nitem input entries, x and y, and fills the matrices with random numbers. It then │ │ │ │ │ │ T H │ │ │ │ │ │ @@ -1013,15 +1013,15 @@ │ │ │ │ │ │ InpMtx inputRealTriples(), 9 InpMtx sortAndCompress(), 13 │ │ │ │ │ │ InpMtx inputRow(), 8 InpMtx storageMode(), 5 │ │ │ │ │ │ InpMtx inputTriples(), 9 InpMtx supportNonsym(), 9 │ │ │ │ │ │ InpMtx ivec1(), 5 InpMtx supportNonsymH(), 9 │ │ │ │ │ │ InpMtx ivec2(), 5 InpMtx supportNonsymT(), 9 │ │ │ │ │ │ InpMtx log10profile(), 13 InpMtx supportSym(), 9 │ │ │ │ │ │ 24 │ │ │ │ │ │ - InpMtx : DRAFT January 16, 2024 25 │ │ │ │ │ │ + InpMtx : DRAFT February 18, 2025 25 │ │ │ │ │ │ InpMtx supportSymH(), 9 │ │ │ │ │ │ InpMtx sym gmmm(), 11 │ │ │ │ │ │ InpMtx sym gmvm(), 11 │ │ │ │ │ │ InpMtx sym mmm(), 10 │ │ │ │ │ │ InpMtx vecids(), 6 │ │ │ │ │ │ InpMtx vector(), 6 │ │ │ │ │ │ InpMtx writeForHumanEye(), 15 │ │ │ ├── ./usr/share/doc/spooles-doc/LinSol.ps.gz │ │ │ │ ├── LinSol.ps │ │ │ │ │ @@ -7,15 +7,15 @@ │ │ │ │ │ %%BoundingBox: 0 0 612 792 │ │ │ │ │ %%DocumentFonts: CMR17 CMBX12 CMR12 CMR8 CMR6 CMR9 CMBX10 CMR10 CMTT10 │ │ │ │ │ %%DocumentPaperSizes: Letter │ │ │ │ │ %%EndComments │ │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ │ %DVIPSCommandLine: dvips main -o LinSol.ps │ │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ │ -%DVIPSSource: TeX output 2024.01.16:2047 │ │ │ │ │ +%DVIPSSource: TeX output 2025.02.18:0318 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -3431,25 +3431,26 @@ │ │ │ │ │ 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 52 /four put │ │ │ │ │ -dup 54 /six put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ +dup 56 /eight put │ │ │ │ │ dup 65 /A put │ │ │ │ │ dup 66 /B put │ │ │ │ │ dup 67 /C put │ │ │ │ │ +dup 70 /F put │ │ │ │ │ dup 71 /G put │ │ │ │ │ -dup 74 /J put │ │ │ │ │ dup 80 /P put │ │ │ │ │ dup 82 /R put │ │ │ │ │ dup 83 /S put │ │ │ │ │ dup 97 /a put │ │ │ │ │ +dup 98 /b put │ │ │ │ │ dup 99 /c put │ │ │ │ │ dup 100 /d put │ │ │ │ │ dup 101 /e put │ │ │ │ │ dup 102 /f put │ │ │ │ │ dup 103 /g put │ │ │ │ │ dup 104 /h put │ │ │ │ │ dup 105 /i put │ │ │ │ │ @@ -3641,193 +3642,200 @@ │ │ │ │ │ 82032FBD2FCB6E403D34B85ED4053A8CB619BDD4DE001F4C3007B1F317579651 │ │ │ │ │ E6D6662189CC2D95AB85D7473F65C5D7B4AC63B0FE928F3400035D5A9D443D0D │ │ │ │ │ F3532B99F3AC26CB25EA3CD64C341159061E02EFBC7C033C05CD919BBD827A6A │ │ │ │ │ BFCF3BD739E32E7FE909AEE068D50FAC33605FFF98C7D0115FB860178FD03DB9 │ │ │ │ │ 7985B78E0AC21F2EA065FA841F5928FB85163B2E2D8F850DC7EE313912C45C28 │ │ │ │ │ 2783F6762C67882EFEDDC7E7567F91C16B16FD8D5A1ABF35B5586307701B91AD │ │ │ │ │ 54984598F2AD46FEE3D68A2731BEAA754C8E730FE0E84952EF77930E4118F8D7 │ │ │ │ │ -2F3AD7547BA1B44C698428BA878986BAD1DA8368E8F5B3774FCBE3C72540A92C │ │ │ │ │ -7BA6298D386975A4FE6B5612A807D5C03EE4582DBD9DD9BF6A01C6C70A9A765A │ │ │ │ │ -38D20AB1B02DA94DEF94BF1A2CD76923DACC5566750775CD474EAA165C02262F │ │ │ │ │ -2A896898A8F67CBCBCE53648ABE9CC1CAC420AAD2B48D9054F2A27FDA27BF115 │ │ │ │ │ -23732B2C0353E3035E724B186BBDB27C03905EF40F67F69E3F63A93FBEBCA436 │ │ │ │ │ -7803AEC143D8163B0686A713DDA163148F362FA5348389E0F834ABD204D14CB7 │ │ │ │ │ -AB6DFBFF780676E89ED96284B58545408904AD53098EE76659405336A5207814 │ │ │ │ │ -3FC60F431CFAB56AE03ED36E18D5B577B68431D905734282B590DB1CC6353A26 │ │ │ │ │ -58BE5C97A55E92ADDCD8D653EB41C38D55CE9E13F294A872DDEC30183118927E │ │ │ │ │ -5A666B87BFF4B6C1FC47420CF7F5F09CD664C837EB47F8ABB08D781F54ABB8BC │ │ │ │ │ -3DB89F3DD85939EC795AE70B3FD0841E79C6A9291688C40D6EDAF8C3562541DA │ │ │ │ │ -77D93BB4A7F4A8A9AC2937BB52FB92ED00568E59303B7A7977B4072E84E7EDA0 │ │ │ │ │ -AE8C199A9F9B243C57388C0D51A21B1B7B1F9B0994749F1C5A5F330F4B1D4E16 │ │ │ │ │ -BD58DD423CFE6CABAC756A9C0525F72745F77C4E981B4B46A769C5C497C79E39 │ │ │ │ │ -347AFC48FE4F89D25EAD7F8BAB714D2CD4676B51C3F6162DECB3470DF8F57831 │ │ │ │ │ -000EBC4CDF111B0E1AD72837BD7652E657C0204E119D3AC89284EFB3704BCD33 │ │ │ │ │ -00E7B2ECD9F2795B1D9F0C1DBE655F2C133B211C5664D78EA5B79DEE550D2449 │ │ │ │ │ -3448F8DCA52684207FFA56E5948AB984769A02C4286A117443A109D58D99AE71 │ │ │ │ │ -31593442B7301CE5AD314018CAF5D33B950491C9E8AAA1CD2CB91AE617F2CA0C │ │ │ │ │ -7D35F28E4A6B71B79ABCB34FF91308E9692036CB34BE6D6C311145DBEA6BD5E3 │ │ │ │ │ -147A533199CF8C5325CB981F32B0F5EA95A2E8C701F69231B0120913C948FF7B │ │ │ │ │ -CE668E135DCFBBA0C5D0E7C4269AEDD11858F5F1D39C35C3EEA6D266AA69AFDF │ │ │ │ │ -DC0761D3CEEB0326EC37DBA90D46A9D54600278A0BB453C0BF43BCBBEEF52EAC │ │ │ │ │ -305EAA30354A4AC54626C9F7E85456CC78B71523917BCCB330A619758120C048 │ │ │ │ │ -9E0EEB4CF10741A493EB750C9518E797CEC7C60D8A410AA17ED6805EF7FB6D06 │ │ │ │ │ -F2A171FB6C9AE07521789B471F21361C5E1CBFB05058FFDA9ECFFC357BE2524D │ │ │ │ │ -C67DFA4A68FECA5AE1002D8C5E3B20E80B049874AC4DDE0796C3B9FC1F3AB170 │ │ │ │ │ -B3879DAF68CA02A4554CCAE48719B173AE1B5C8E75E0436E2DA4440BD00DE48F │ │ │ │ │ -5B9E97D43BB0BD680EDA46E4755B9149291C1CFC03A1289FE2A94B52505FF321 │ │ │ │ │ -7EC749F520C8AEA73D1EE778FDB1F8BA95C7C1CFC48DD894D4225CC61BD70E4D │ │ │ │ │ -05CB005B714D29210DC57C2FCDEBD5F086292CAE6111350E1EFD21F565431887 │ │ │ │ │ -6C7299D3F089201B4B57C96980E1B779B87781A5F4ABED1859C9392AFA2A9DF2 │ │ │ │ │ -F81815A4F451F3ADF3C370EB9D5B71003334039E4AA5486EAF0156F2C6436CAE │ │ │ │ │ -EEA6CBB95446EC499904AD3557660AEC2D603C3AAE34E5347A09C558782F7008 │ │ │ │ │ -C73B4D1EDB474E878E8C8AEFEB463507A229200C3FEA7CCE2D3E4200D70FE2B3 │ │ │ │ │ -D6CC3962385DF711C7C2F73169A62DAD1F4632CC4CD08A4B4F06BBD8BE793886 │ │ │ │ │ -6A90C322CD6524374A3990FEC664D4DB8D2B0484259F0A2C05A1763952F55AFC │ │ │ │ │ -4DEEDB12349B20C62E77A063E9DE2DAA38576E3CE0C0B88440B5791FB550F9AC │ │ │ │ │ -016EF39AE0144D419FB2E203A9E206CF91FC824ED246BA439CA241153E5D4D97 │ │ │ │ │ -AC60BE609B402250F1D2AE63994902EB0A7F161632B776F1956F8A67E7CF2B7B │ │ │ │ │ -7A4A4D0C7B952618AFE31023F9573651414BE945E826B26DE694DC40CDAAEF53 │ │ │ │ │ -0D284B108E4D0920EA8A05F1CF87B5529E99C562F5535C53C2966091A451252D │ │ │ │ │ -2814C9449C60432DFB05FF21742B34410E911427A4658B0E3371373F04A3E081 │ │ │ │ │ -C67AF2D7C2A119BEF4D5C75C12EACE71E0570C0112AEF06D4D1609252E2A36E5 │ │ │ │ │ -9C0521810EA1F7495921359400C866B823D59E56760F9987D166B19093E78B63 │ │ │ │ │ -1FB3C118C2BC7B3A45EEB420DE0297F60D0A6546BFA7809F9B7D0803C6FB5601 │ │ │ │ │ -1ADACD10B0B5AA20611F9F05EB79D4C4A681840A30150C9F571E70C9142401F7 │ │ │ │ │ -F69B8EB756BEAD233C9BD07EBA4F1F29FC2601394A8E5682126825819DB7DF6A │ │ │ │ │ -7898DB3A77576FBBF056211A77B6AAFB2BF573048E049E579BBFF3029B2F27BD │ │ │ │ │ -9A6E7BFC54F7730B8C3D3F9D34DBAAA8C501764E8F27BDE103A11391E4D1504E │ │ │ │ │ -D61BAF317C430DB5E8695829ADC419C83A2F66C8AE0402CE41D2A77F8BB6DDC8 │ │ │ │ │ -E28187D6EC6F9B4ECB974DB8BFAC1DC141198CBC7333BC22989E29BEB0A1221D │ │ │ │ │ -BD05AE30DE0BAE09A9B09DF0C7468873D6EB85C454E63179AEEA0DEADF174B15 │ │ │ │ │ -516DA35C6A5587675DE9C2EAECDFCE8E40B4964709DC66FA66D90DE4F27DD2B9 │ │ │ │ │ -8F96872C76607A49E628BB39574B50C1285DA93FF0223481AD7D4EA72AD8BE5D │ │ │ │ │ -1CA4D7BF3A3085C8A8FDB909EEA121B7B187761C726C1ED846865B3A3F6542CB │ │ │ │ │ -4243445C7748506B3930C864E0860EBB61481E86322056D9EE8315A210E2C312 │ │ │ │ │ -23BEE3DC26BAB1DFDDE30463B771C0FEE3042A5DDF5088EF2F71FD7379769AB3 │ │ │ │ │ -9B4F21534F8B139B18EE958A765CC003AE807EB6B99E93FAEB2085BBEB576962 │ │ │ │ │ -71A705254A27660EA98903F2EFF194F671958D862B7CD58267C73833FAF34C37 │ │ │ │ │ -2FF834069063D8F0924100F57D8AD3037B93CE85DCF48CFD09B524FE126AE7BF │ │ │ │ │ -9E21C574AD128152E3925A3D3460137CEE6E0247F9CB59DC4B0FEE8C93C4F37A │ │ │ │ │ -E967D7F1413DEA5329CD9E0123417D241C448613C2700640BA32C6DFDE497F16 │ │ │ │ │ -B897EC5503D2777ABD0B3E48CC6FF298F6DF1DEE4A64AA1173B14E70B0BBB54D │ │ │ │ │ -4C2746418F7A6C8C768150086DF60809C8D1E2692A9FD955FE5B72B9FF240A1B │ │ │ │ │ -A2045B7F65FBC30B2AE0843EADF87A641B5A47D10776BF3FEADF2422F07B86D7 │ │ │ │ │ -7ED3705CA024089E33095C4AB6241EDD5651BFF7B244D815653CC63A797400B7 │ │ │ │ │ -69F81CF07A0B9F9C208943663C4D8159FB9776094BFFE89B55C294CA7DCADD24 │ │ │ │ │ -4181F9F15AEB41BEAB383E5551F17EE6EE3C57E4DBA54B8498F299AB669EF718 │ │ │ │ │ -D50836AFD13D34E9887181C026567F692AE65E8F7A5814B93512A78B6B3A2ABF │ │ │ │ │ -2DA9F93D86C1A0DA6BA54BE8225C56043885F324064CB89AF704D0BFE768E081 │ │ │ │ │ -14749633B2FCA325DA3EE560FE3AEA71E9DBE38027836C9A1746DB7E2B4EF200 │ │ │ │ │ -1D0449E5F6D34E0980D6310FD4F32F3E030DDEFBD2DAAE5D3455C02AE02A4690 │ │ │ │ │ -8F05C9CF13C3648EC78B0AFFF19EF248FB7846F561FBF2D321DB5FC41F65EAE9 │ │ │ │ │ -236A7B73464C1590C440D88E50C0C577B5A74CB2D30958305B1CE7C3B24A46EC │ │ │ │ │ -304111DC21B9C7B54B232F6343A32AD012C2C0C1C17332A92393471EB8D97C82 │ │ │ │ │ -59D1E0823F970B443C54AF4B7D84142C97853ABC6D4D2C64DAC6D22EC26F9B27 │ │ │ │ │ -6146271F33B3D02907F752B0AFB0A9AAF4AB1AAC99FD16AC153A9B7D904801A0 │ │ │ │ │ -D6CA67A554B7EE540BA1356411A94C5E8D0ADE71EE904FC8E0BF38B1C05A8F6A │ │ │ │ │ -D31EB9FE90DCC76BBEFA744BD09CF3352651A74F16C8111582DC6DAC093F6753 │ │ │ │ │ -82AD0F86D150B01E037077FD65B28750F6856154E179B9905A0B65BE3DA4CC1A │ │ │ │ │ -BAB80D5896C6C0F64B5FF6907E75935AF3868EE166291AFA998FBB106D6EEA11 │ │ │ │ │ -75DFF6A2D647BE85B0746F03A829573CDC2ED81516A1D4F2D43D9DCBCBD838CA │ │ │ │ │ -F96FF79E5DB07E10C7CCA2B232F6EBA0C3B57ACE34913B060A5F0850B928D330 │ │ │ │ │ -F05A093CB82E3A84D94BD885D4AE9349848E2758C0A1285335EF843D92990833 │ │ │ │ │ -95FC7C07D8A6ADAF973DECBAD127AE8439863D7687C99EEBC089926D6A92C623 │ │ │ │ │ -4950C2799103BE5A2C968491730C6D2CFA28F8C8D0E19D4390187D0192129F8A │ │ │ │ │ -F040D0947A24E8326E177272533FDAEFD4085CB4899B3763994B78F94FBC8FFF │ │ │ │ │ -A3D5BEF0A3FCC2FCD7E9F471B1CA3385FEB243447C1BB0F2E8A032E16ECFFED7 │ │ │ │ │ -0834B25F1914DF91B827B9A1D6513C4360D64BFA77D6D46EE1180FD592F02B9F │ │ │ │ │ -2DDF825A95B741D26FA494D849C383D95C9F4E208A112DD2C30A719D751D6144 │ │ │ │ │ -792C5EB5F68377A82E6D360DA2B5FBD06C7B237F4A0F894605FC4EBB8CC7F2A9 │ │ │ │ │ -DC289069C3B91FAC1519F77D6AC1D36D822A2C414FDE418B65F000C69A4B9C3A │ │ │ │ │ -4F4D12DD10FA5721A7C9DA7A6E960F10D05E2297FA9AB47B85C34ED05B9048F2 │ │ │ │ │ -01EC86239655BB846F6DED92AC6717526025B8FE746B87225BB320B098F48215 │ │ │ │ │ -311431841DE818DB54F81ED07C9A50793734E0F7319CCB8B4BC0A4304C76259A │ │ │ │ │ -6105E0C4D3D316A79CEBB55AB5FFB98C81F79FACBAC7BFDA99C834A20CD1DE80 │ │ │ │ │ -E164A1C2CB1FA4CE4814039C01D67B602C26DF784F80DAF4553DDCE5E7D04FC9 │ │ │ │ │ -FB292FA7124020718B25D152A8919E2B5DA03F4FBF448F4FF944E4F49C0B2C07 │ │ │ │ │ -9AF9BE0689E164D36AB51EBCA46F6F332F8836C8D30D663AF233C201A2971A5F │ │ │ │ │ -E6C240B46EB4C7E460822D3330ADFD72EC16459705431193CEE09EDAEA5EE9DE │ │ │ │ │ -4BD6EE953A36541EE58A750133411C6EE3EF6E4DED192FFC42F35D71A2D38945 │ │ │ │ │ -E39AD6A4A52DEBD513034AD1CFED975EDA2B2A29D4DE168134303158000BD20B │ │ │ │ │ -465F55FCFB57680DB4FA577DBA3ADC7F2084BF0714E1000E10D505F339FAB746 │ │ │ │ │ -C376B8A4D04123D962FB12B100CD6F7C9D1FDE7B4714F2F1D30450FF152DBB92 │ │ │ │ │ -726C54E961CE7C2A1BE34006F882BDAAE8231EB67FD886F379C8B467FDE6EC0F │ │ │ │ │ -AEAA8826DB982306B4FEAC9144E46A4FAAC90B26886B819AFE75C9A221E992C7 │ │ │ │ │ -4C4B8A7CE4D337A323A139BB8F4E8F9378B8FCDEBA968663A4CB066187280DAF │ │ │ │ │ -1595115F6D9067D7D07EDA829ECAD3D05396FD63173AA36020301DAF248C57CB │ │ │ │ │ -602D4654DEB38E8E3400307978ECD24D95CB45598C96DDA6C9090BEE7CB421ED │ │ │ │ │ -598AFCBCAEEF050E36784B784E3744295FDC3262DE428A693FBAF37834137DBD │ │ │ │ │ -71C2DBF4F4C3235DB966EF626253540805939A7A9BBE97090E5A36CB6FB10F14 │ │ │ │ │ -F22772C6FB1B1FCF1E9B45C4E60B628F97EC6EB22C6A7FE6F06BB84E9695AC1E │ │ │ │ │ -2838C9610070DF43F727C3A899EF3DD714DD209A95AE5123DA247E89D381F743 │ │ │ │ │ -9623098B4123B6E74DA90289C2A4D7AE85D09DC21653F3E72C3CE84396058E39 │ │ │ │ │ -08679A14E5F6355EC58283DD7FABF57357268BD352B2E9B54765563149D4DB9C │ │ │ │ │ -5DEF381D04F175D450CB4774D6A692FF179A0CC70A07884561CC5688B64524CC │ │ │ │ │ -0A583E474D5B53367BAFB993B0056A456407370DD94FF813B62D6AE784D121EC │ │ │ │ │ -3FB5FB0BD4866CAB18A970196002A358D87F119030CAFA04173CA37742234AC3 │ │ │ │ │ -0164E91807C020298210DE20CC0BC43443DD48C390DC242A0C2384DF350669C9 │ │ │ │ │ -75336EEAF231511F183EB59FD003AEF9BAE28766E6C65C4DFE80895AE5B5AF44 │ │ │ │ │ -EC5CCC4D057EA4283B476FD81E37E77234FC7132D0930CB2DB997CE76B1F8720 │ │ │ │ │ -E0F3DCA1984903FE60936CF2C2601F314DF04047FF943E9AA8AD0E444AE6ECCF │ │ │ │ │ -7675E82882672943AE2BE69B41EADC1EB74805AC7EE645DCE876E505CC2365B3 │ │ │ │ │ -2C7DC4850DD70249EE1C3672A725938F34567A5EE9067046D4B66323D703446F │ │ │ │ │ -45D0E459CA7D5B61B934DB31DB115AE7FBD0C56CA6E6C07A83DA6C66374B7A0E │ │ │ │ │ -2C9055286348AAC5560B22DFC211D281AF236BD73BF26134ECDA7F3A2538CC60 │ │ │ │ │ -902535278A48A450E2960B8EB64BE0028F23C8785324E0E501E9231FEEE2041B │ │ │ │ │ -F69F7D4592A914D74C4DBE8021C430A80D205DF6143A61C7CE2FF6BA10CC8826 │ │ │ │ │ -2C1551CE5EB98E5524231E873197D0EF19D30B86A1250B6094CF42343FD28F6A │ │ │ │ │ -411BB26EDFCE82D8CDC5597A08B89BD943B49ABF542C7FB82EA90E40049CA912 │ │ │ │ │ -F9729DB242BA977860A697CDAB6E0D7560E35582A40083333CC5C884AE916FC8 │ │ │ │ │ -2A1E4E0B0017F3E3B06F610735B383F2AC8560802D9353869B2F6D9AD848FD99 │ │ │ │ │ -1FFA8C32601895B209369FF1B487C25520013A6A8645A81ACD9E7102C3748ECF │ │ │ │ │ -1058DBD6F589FAC387998D0783922D69E3D31B54CDC8106E47AC8F7E7E7A62D0 │ │ │ │ │ -E44F7F4224685ADE7B1F56D9FC82EE7F6887B862AD43F426FC2F6CE6A33B8672 │ │ │ │ │ -2BAF05F4A4CA504390A0C0CF7477440F58B8E2F0AAC0B98116FD2BAE7F37C420 │ │ │ │ │ -5FA3490DC89FD86DC54806ACD06BA4B6E888A561F8C337D9EF63F126A67CF4B0 │ │ │ │ │ -F29C916EF9A987794F8BCBDF3BE8D66EB32A0CFE5E98C2C5896F1E364EF637F8 │ │ │ │ │ -0B94164C623AE33952E0FCEF79818D83979AD33D6390D8CD608E55E5779E24B9 │ │ │ │ │ -FEAB22FCD5CF1E1A5BB1023C0ED402A40BEC56D458729A1B860E1085D81B2BAA │ │ │ │ │ -98C7DCF249977D970B0427C4C1D74ED6AF981475BD8705AB4A26D4BE65F60F8F │ │ │ │ │ -5D760F0B9F7629C714C6EFF45EFC5EC8A56B31D72CF555DAC66F65FBC23173B0 │ │ │ │ │ -3D27AB14DEA1B81C600C0D98084E0542AC4DCDF09857CA4004EEE34E4FFD89D4 │ │ │ │ │ -77B988ED7DA37CE4A21B2BC69F6322A491E3E41CE3604A9D676C71E3C69C77F4 │ │ │ │ │ -7AA36BF669F2EBF9CBE212559A2E61EC7CD0AA8C21C0F88DEA7E76941324E7E8 │ │ │ │ │ -3FC2F2492B6ECB21D684C77691278A7E4AC406F7D792022CF46F1FA5FEF85202 │ │ │ │ │ -D2374323EF7BD82DB5B06E7AD0D6B88119FCED0FB42BD60D095B373A4532637A │ │ │ │ │ -55F4E9C455F4B603AA44052471F86A610B6F5AFA5E48636C000705563D73B719 │ │ │ │ │ -732E98FD11F6391E32C7115CCEF1EEBE5577CD4CE0E58BC8EA0C0B8FF19F3D35 │ │ │ │ │ -13225F022075239CB034F73D5CCC3ADE8B345BB7408210B516E4CD16B4E27BC0 │ │ │ │ │ -9C487458DF20788EB6987A50303DEE39EEFFCB50036100DF36E4F8DF34C3BE84 │ │ │ │ │ -1ED480EE358D0975E3C5D851094CE59B30A8224F80DD8E59AE970922ED377982 │ │ │ │ │ -C652F0A870F553269DA6A13CD9A46172FDD4573094663C69745FC0E4111C0381 │ │ │ │ │ -9F36CF7CAE886208D2108815F292F0889F8BDB886F23B3DC2EFE0AE9C91FF34B │ │ │ │ │ -E41D6A4D1C12D6573745F08D1069F00BA6008BDD10A23AF5FD562A40A75CE8DE │ │ │ │ │ -9EFA634F241EADA64C8AC11B970C0C283B23A27CAED24414846892A37FAF5C81 │ │ │ │ │ -938093B9150C41A06BC43A7FF0920BA3901B3991D889664A8F3560A27A096FA5 │ │ │ │ │ -F6EA806C2BA5E99DE88272F1E730B8418DA23CB39B5E71BD67F66D1AC284124C │ │ │ │ │ -70857AF69B42AD57224108ED3708C50B91B7C8C5373CAFEE30B5AE68DE6D1411 │ │ │ │ │ -F07D8214359E40C5934FC764C781E8F0A7A8674C9E93F10621D0F05E9EE2415D │ │ │ │ │ -C0AAAE76136A9BC5FD01A5EE1F60F318179C386AC55D3BD6D588827C4C0F3BAB │ │ │ │ │ -5331E64461B0715D9054BB61147D2A88B3860E7376E14264766819EB3A83FE06 │ │ │ │ │ -F8410CE1C4956437F0ADFDB1CB9D72324383C494DEAD42B47C92DBB80183E13D │ │ │ │ │ -4344BE3B9FBDFF5000FDE3330D759D68CBE20B98AFDE51038CDEA4AB3B64C7A0 │ │ │ │ │ -DFCD591DFBEA3C42574846C33160239C18A091DEBB0897B97D21ADB851C63BBF │ │ │ │ │ -EC85C0E45307546D4AB4D1A011CA34C695D3223C410ED9A41857268036DB3FDA │ │ │ │ │ -C9C6BA96A505B97BB7F17D819DC1A3ABA3BEC0C9D580001F9BFDBEB2B52A667C │ │ │ │ │ -8F46F96835DD0D885E3FF3D824D6A6171232247776E9F219F01D0D118CA98224 │ │ │ │ │ -B7D89B1DBD7EA8C74089AB3626BBA3F1F7911580C3699C08D1773D48BF225088 │ │ │ │ │ -14E428FE113FFFBE1258F597B8ECA3C19B8CAB62696D8C8DAB2ACA8154A4ECF8 │ │ │ │ │ -6AAD0FF830821180EB275CA37F9EA47F96C48FF3E1403504AB6E13EA44317DFC │ │ │ │ │ -B508F758392A6D1C8124861F7F8ECF1A09AFB285C9E1FBF2EEF2BAE040ACE2D9 │ │ │ │ │ -33DA1E8ACC3588B7760DE8CFA2D9CE90F08B781F12F3C0ED99008E61988DB41A │ │ │ │ │ -7B705B2CE92FD3B65CEFDEB8BCF46452FE0C2E096AC6AA194A238417CE6C7162 │ │ │ │ │ -D4D790AB82D7A89A9F2A9AF0ACCC937D2EB375B6CCE967D1858A599CF741FAD8 │ │ │ │ │ -7CFAEBB3B1DCA76E5CF8FE238C340CEFAC8E96B9F044637EBE9E7FDB90C1634D │ │ │ │ │ -343AFDFC67399383E01B38BDC39BFCE34D227E8CD00B7955EB32093AF83D1DD9 │ │ │ │ │ -48E09F793C930E1ECA7C41975CBDA38C74B2AE2B49C0DA2886F352 │ │ │ │ │ +2F3AD7547A938FC886E8C75A1C5B000481ED278E71C9A5E5DD7257ACE6230334 │ │ │ │ │ +7835DFE50FE3765AB24388B291E0107BFC6D8ACECAE521390510E15E6FAE2219 │ │ │ │ │ +B300322E665A93F7014B43144FAD5C96BF1994B3BEC7E28FD0CB6B0EBDA5008F │ │ │ │ │ +4A3BE0F6F818098E94C08AF295C0FB8D894F091A2F7F2CA186DC70B5E26CCDBD │ │ │ │ │ +6BDD819620D9DF67BAE1837187E8461A764D476C2870B8745D73B364A75C250C │ │ │ │ │ +84A7ED5BEC022D6CA2B35064BD26FFE3F0F4D94AC3CFDE1FCA7E1E8097CEAA19 │ │ │ │ │ +8A0B407DC97E22BFE5C76FF6A04273D2484DDEEDF40732070347B91194A7F1C5 │ │ │ │ │ +3DB8F0AE83BE9D9053F91706110296BC2C636F627585437E03EBEF10D29F0C59 │ │ │ │ │ +7FF9F5DD72DD4C129821EED88AED614CEFD6F9DFB41F1E17FE33BA9C157D7D85 │ │ │ │ │ +6A3436AEF4104150AF949AD30FCB0B5B81F94C28C7643BF1BF33B56FB31F1D56 │ │ │ │ │ +B1FF3271B8B14A6550AA38C7A9491A38F5FD687C86A1814681CCF94D2A097111 │ │ │ │ │ +949A33ABF0556DDD1B61828F86111624AB4EA17AB321CD3CD520FB8B050932ED │ │ │ │ │ +5879967B14BC8D6D79E05969562B6F5081858BAAA7951B1E06CD6F7DC0611F32 │ │ │ │ │ +812B75E801E76BF9C44E99258C79411A5481756455FBE1769195FC7C62F1E15E │ │ │ │ │ +D46D3490C73710A3F41A52AD8A869AADF2CA03EB786238A092EB857CDC15A85E │ │ │ │ │ +B164924A37ADA32C6C295DE969E338EDCDD9479CEE01B099C41239D1ABA2508A │ │ │ │ │ +1A63D27E11B298BC478F399806C5140471AB7A69DF1D94553DDC2F86D92D993D │ │ │ │ │ +E08283DD7AB5AD9C311DFD1F1E7D08A98B0BAD254DF9F91EA1143BC0AD4C3933 │ │ │ │ │ +D971A5B58D8574F46F466A6FF539A6CBC1D9AF078A0B8173538F68BBDE8DD27E │ │ │ │ │ +A9D127274DC95441CFD55D86B7862840A288C40A0BF47F9A907F8B1D901BF81D │ │ │ │ │ +817464A680FE74D1D4AC05B67505885E9476E53387E3EB69B1E08E7901664481 │ │ │ │ │ +5A0D2CC7193FA7011B943B25BF11272E101AAA8A1FC6B635C4AA7FB38068C870 │ │ │ │ │ +994947F778F33593F8653CE17F4D7F4992C2EB6569AD87CE598FFF1EE4270619 │ │ │ │ │ +D945130DA406EFCD4C43217538CED9DBCC293410DD5C9C2BD0FA0AD84DEA4A3E │ │ │ │ │ +CC2EAE8C4550FDA0346D38D814E2F95124BD2A22EA503B10E8768853BFB4D3D7 │ │ │ │ │ +A272BEC1F9C6D06EDF4F93A50D12B78AF39A72C29C0B7A875CE9133A8395C04A │ │ │ │ │ +2682F8BFBCC3346AC6BABA395EC31A8718A914B73FF6A37FA72CD0ADA3593C2C │ │ │ │ │ +989C499782CD32B68D198C89EC4318C8DDC17E6B69DC9C79950BDF56B635434B │ │ │ │ │ +3F93D500F608F14EE41A2E7C216E69BD40BDE49443C3F5BB732D12B615786EDC │ │ │ │ │ +7A61A9611A49F724D7F721867436349F4A4DA8247EDEBD840F1758ED97E1F6C2 │ │ │ │ │ +5B80AFD492812E3225A79F4A22DFD1D98A7596B1FD93AAF111F256FF15504AF0 │ │ │ │ │ +3D406F9A7058A2E607BAAEC9A551688B6EA528F8ECD940FE9B9E7EB5E95F05AC │ │ │ │ │ +86C3C4E866E8A41B2B02D5174566727471852F6C1EE76E33DBD0E839B8C31FB4 │ │ │ │ │ +AC89038044347FD6A59AEE5F315E2F9DF77E67A1FF6AB13A05625B218506EFDF │ │ │ │ │ +5D793806F010912DE79826ECC12C6D9D68780DBD381277D6614F0A02A9867E55 │ │ │ │ │ +CBDC770F0A604E80A9E519EDE36114448327E04453A5169D8DE1B1065AC2C3B2 │ │ │ │ │ +43A27BDA1D4C009A654C6C5D4A52D2280C83009364F48011332368160B0622F9 │ │ │ │ │ +A2D61F8305D11B10F9F43151F4C975FF818253E68D4979A4CDB6546AA57AF19D │ │ │ │ │ +C964F1BFFC52CD262F9CB361A48974475C346F39E77288701CE68AE13EB374B9 │ │ │ │ │ +1D55547817E8AA75E3022ACA307AF905C087D4EF2DD8483AC20A6B4EA86AA2E3 │ │ │ │ │ +273DF0EFCB599EA128B1DD84D937AE41B098E3E630912E2F50D54C957747AFAE │ │ │ │ │ +96D84909C9429D2F2107244EF59ABDC2D911839B12E9816B115F47E8A93DE260 │ │ │ │ │ +3D25A9649FD0A0C09F19E90A090B3514239431E9397B394B10886A45D3828108 │ │ │ │ │ +A0180ACD7111E6A26061FD0EFF2E3909739BF70C347D9CB3BEC461FEB05B7E62 │ │ │ │ │ +F438316689FA370496F5E4FF7E66B4BB10ABBC2299CE91766EFEE4570D1AC83D │ │ │ │ │ +8A5A44AE89ADB6E4D90382F9726C0338D6243F0818C3070E48933D9BC746922A │ │ │ │ │ +E8214A57032CB6A1B712C216A100BCA13AFF3EA3CC5D0893049E66D6D25D38B2 │ │ │ │ │ +1E781EA8241B2C05B0395BD273F4EA1BCB572D7F33BD4346CA2451EFA427C76D │ │ │ │ │ +EC44B8F85D25A67E61C3612DB40FB0CCF660506E2D6B2A5D38966155A5C31EF5 │ │ │ │ │ +50B2C75E304114BF5C3849CA0F384F7A2320B00DE40E73CA3E897534F591C81A │ │ │ │ │ +34AB5181D2DFCA865A83FADF9307B1A330DB704F799AFC0FEC7833C79A7FB090 │ │ │ │ │ +8101DE369235655EEDA2A732B6CE46B5BFDF0438561E3E4E7624A806EAF480D6 │ │ │ │ │ +7F16B316CBB5076E377BBC7151818C757A4BA55C2CF43015954CA3572FEB629D │ │ │ │ │ +40AB120FF4854EC0A224AB5FFAEF7B0FC00C9618EBEE8B912A8495F0A3557B8C │ │ │ │ │ +8C385DDC6B9206C2BDDBE2C3243EC68240CA4CD6F3426BEDAEB4E87BF700D715 │ │ │ │ │ +BD50BC8D1C573F57F86CDE1A31A4A77EC55EA9A987186B11218600E5BF3C518A │ │ │ │ │ +2CEF592FA1CF25DBB9ACB63853865B426D706991ED2A65EE1327BCF2A141BAC1 │ │ │ │ │ +8606BD80D35A2A0711C5FB05666FEF9D50F90B25AB31841F3C643021F0D9C39C │ │ │ │ │ +1ECD15C2B3ADC37BDA56FAEF3CEAFD55145A08F2F02F17C0B8C6887D5C9BFEDA │ │ │ │ │ +1638CE52B6208213DF1E1C838BA49D02433407B372DE705C009A3FFAA202A77E │ │ │ │ │ +60C322869A51B7F299CE0E34632CB140790B7A0357AD0440874E90818A9152FF │ │ │ │ │ +566011235450F323CC9C3BF5425A0C466E43879DEECC4707D020ED0DC3284314 │ │ │ │ │ +E2CF3E6A2CE7F0AB66D0EC6DBA65A19AF2E014199E21DD2BD553D4E8D62F551F │ │ │ │ │ +426E56C89DD0D6585BB9BF9897C34E8FF04E3175EEA8D77A9AA78739871F61F4 │ │ │ │ │ +0EBB75EE8EF67F11D2384F0711E4B717618A2C0DACD143DC7C548934C3211A5C │ │ │ │ │ +70A58B2EB6CA83368DB57F377CBEAA39F8233385C8B7FE596D7A463F0CFFCFAD │ │ │ │ │ +57714D2552DBE442B497E9ADE470E43171C674ECF276D776CBEFE5FDFA782FE7 │ │ │ │ │ +C8A392D4F4FFD1BDA434A69D791E6D35D4D6872ED7B461E8D45272F535C54B0F │ │ │ │ │ +65BEFA0F7434E009E914FB6E95317EBA65B42D99CA9FD07AA385762E785525DD │ │ │ │ │ +D5C633D6EE19AA3104DC637FA96956CB70D31A34CEB859E84AC2DE32C48AAA84 │ │ │ │ │ +7457C241908B5C490A4A3F1FE58418B94C0AF32262D152D67E008922D17EB1AE │ │ │ │ │ +6CCD25B6213606EDAE5E48625A61B94970AC659B849B2438EBAC13B81EB5CB9F │ │ │ │ │ +1229D55D2724CBDB37319B8C68F8F7DCF3549589669CBEF35D4C1C093CE319B0 │ │ │ │ │ +BE7DA62D47962F2537F0ECEE98AD3D3E5A92C781C85D6CA6307DA29FDBD391AC │ │ │ │ │ +2B5F822862204D14D19766D3DAEE9446D673FBC809B629F26AE53F7CDB8812B7 │ │ │ │ │ +8BFA0B86E21C28EAA4632DD1AB67515C1D631266BFD86536B3505D46E7E26811 │ │ │ │ │ +A4712F78CAEC5A97FE73775062CFDDB7521BDE671DF945D6A930E2D518F232C2 │ │ │ │ │ +0325C05656898E2F7EF75D9A226D8B65CA706B1CD7A77B80F93FB33A261F7A46 │ │ │ │ │ +B0210AB0FAE4CAA7B9826C288D0DAEAE6F9F8F147178522B89BF632FCB8D2E8D │ │ │ │ │ +3896760214DA5B3488D38F70025971BBBE005F8CC2D571BFCE620D65D4086B3C │ │ │ │ │ +9CBC2C01F98DD0C80307E6D60F2E2FFE73F512EA88E2B046161F44CF075C1B61 │ │ │ │ │ +62BE696C841EF65227A4167B65151CC149C9222D7BE36DC7C26891BC97BFA7F3 │ │ │ │ │ +001A8472A8DEDAB0E7EE5D813BE2827A4F113BFABE98D81FC96B5C3D177B0F81 │ │ │ │ │ +6FD0FD72E85D9C44BF74E888136C47095EE80FDE7CBF3B3896FCA0063A86DBD5 │ │ │ │ │ +FE45098346BAC4619A19E79C0FE8D47727D38B9EE253F3B7AE17277637D84FC4 │ │ │ │ │ +96B568C130B11D33A9D009154D4FEC4C413DAAAC18A7CA716F8E72558EE6C481 │ │ │ │ │ +8341119427FC1BA926E7288E308730CFE06AA130916185B6ADFE59EDA1E113D3 │ │ │ │ │ +593ED3BBF099B1AF6F7DA1E844DA5FDD556B9E3F35D20D584FD5EF7FAD05BBEA │ │ │ │ │ +5D7B2D26512146F88F64635F79310CB19240CFE9B9700BAD4D3D02B7701AA8CE │ │ │ │ │ +4B5ED2A75004B3CC39DA6270DF092EF40C6A9F90D61F13BEFF16E7BEB00D8574 │ │ │ │ │ +A16B3A9DDB7F91494396ADF726E4720A3705821C6E39358A135B4D8EAE355A63 │ │ │ │ │ +7746EA60831D262FEDD7E535E97662B46AF1AA57332EAD1E2C458D1C3F1DB4C4 │ │ │ │ │ +AF4E4F01BB5671D27C0B14AA549E008AA077B5E6B07F93236B6C2F660A96CF38 │ │ │ │ │ +52D3EEE5B353BC6D9643E6EE2FB5B57A8154C5C1ADFD1CB8FF436B411DFD6A0F │ │ │ │ │ +FAF4F19B0FB15F8F84ECC505E5A9A9D16AF2761EBAB589EE67B34BC39C6E5D95 │ │ │ │ │ +632FAE56FBE8D0EC7AB26D586DD1F6DFC1A158459FEDB2168E42203BF250109B │ │ │ │ │ +0F2FE493ECEA73F6FA9821CB5FF5FA914BC458F3B9E97566E88317D84F3B5F1C │ │ │ │ │ +36EF3EFB4F605C0F034EF9A0ED7F9C39CF09A5C876184E3108FBAD4FDBBC6878 │ │ │ │ │ +3B63BADDD360F6EF8E8CF368835A311DD7D53FB31E915C7505C33950355A66AB │ │ │ │ │ +7B21A4613DBDCBCA5934E5AC168008E73AFF10A12FFB42F55576D7156FE318F3 │ │ │ │ │ +A22C205FDC7AC88641CDECD67B9176086852D0F53ED5B700E9217152236C4D4D │ │ │ │ │ +8DCDA921664D29F1687AC1714168C05D20773CFA731370F3A7EFE01A2646DB93 │ │ │ │ │ +A34C60589C7DDBDE76D05A525F8D653CA46FD11C2E7AD3BBC1899DA0EB041F9C │ │ │ │ │ +3D148A023A7B69FD3F3498A50C0F37742A4AD0870B3E0550013A39F1B308B93A │ │ │ │ │ +189DF82C5C15D9FEDB684FADD729CE49B6046F4A23414AEA03E53908302F2394 │ │ │ │ │ +D8B6D62A7F2D2A2F62571F56C0AF1BD7B9D8858250B9E18835E20EF1F3010BE6 │ │ │ │ │ +249C031E00E127498CBD78EDB263EE7A4E9ABC9FD6381113B69AE7ED68A9A5E4 │ │ │ │ │ +0C416F70933EF51E091BEACB8E7FFA03D58B21A53B3054207DFB9BDB6C7B617A │ │ │ │ │ +07424805689FC488FC490CD34A3BD6DAB7AE04EEE6E7DCC530646DE276A488EB │ │ │ │ │ +E394E3B15BFFE25CA2D96BC97A98E0B502CE65AFD5E2829C96598C5A5412E48D │ │ │ │ │ +0F079B943392322A447EA939F15AB434CEC5378DDA4420DC039B62DFDB04B6EE │ │ │ │ │ +13CBDCDBB5E32E4943FC643820719D1295BB56ED76A303637E0BCE5C28BE1E8E │ │ │ │ │ +B05B0CA84CC8011BD96E22809DFD0055E8D707851C26030DF96176820DFECE88 │ │ │ │ │ +4766C9DCBE43657EB97E1CE37FFF3FF25FBCEF9780C1F2DFAD65DFA617A48EDC │ │ │ │ │ +93A3CA44A97CF964871EB90EB789F9811260F150567D54AC0B178FD3918BF3DA │ │ │ │ │ +FC47C799EE1DC525628CB62B92AEC2999EFA2B992EC29C3E10F8605EBD4C8CBF │ │ │ │ │ +53A7FD78368CDE186FD0C86A7553C35464FA6E10AEF783482B20536BF50960D4 │ │ │ │ │ +E84DD56E72BBC25AF94CCBE1878B0013C505007C8DA97D88F9923CC7862834FC │ │ │ │ │ +C7C014DA07BB6F58FAF7693B8B25B48069FD6ED8440041B3864E99914B628814 │ │ │ │ │ +30651DB9A8ADF186A0EFA0A076BD48D99122D1979A1D47B0D3F569F6EA5F9ACE │ │ │ │ │ +8E1D0D40F8B39AD856A8FCE6D3CEBA223080F4C7EA00417FE03FA80C4481C8F0 │ │ │ │ │ +6AEA81F62C4FEC68C15175D7DFDD5818AE0BE4F1691EC6853A83E883AAC30462 │ │ │ │ │ +D96D1FF66F8D58F36E3DEA1A6577838D2ADA08F8CB6FF8E45FA06353DDFA9C87 │ │ │ │ │ +125EFB6C39DC9C233D10BD82CD9B89260BA46157E045281D746D3A0B59B22780 │ │ │ │ │ +3B573855B55DFCB1F8F3CFF28FB55798225FE011BA1A4E9437052D2B24F0A1C8 │ │ │ │ │ +D6378724E3ADBCE15BBD4711F0AF9B6A7806DBE81C178ECC7DD316D199E4C606 │ │ │ │ │ +98112FC42E19161D622ACDBA29F87A7CAD2B94BD3A23DC2C3812C9D216A2BB5B │ │ │ │ │ +C010143F5214C42F7D6D45D5375CABF0BA3318B09762AE71D6D4BE2A95B2322C │ │ │ │ │ +5018AD87C011C33E8EEA37A98BBA0DEE36B31A1F60A7CC74660678BF678EA8B1 │ │ │ │ │ +AD3F8799D658328669152EAF7C7A125A782A4755C32A384F7A6508382F9E39C1 │ │ │ │ │ +8BBE760F5A1B8A2C7443D67C04CD61149C521044BB5A01FD8F3049DC55FB89E7 │ │ │ │ │ +6E6779AEF2452D4C8F403A1C3C2065CD481FE6835F84AF1E69EF15413FC119BE │ │ │ │ │ +0D5E80764B7C8423B5FBF6A5D5B3ABD23A8FE775455EB83E6FFD92BEA078DDBC │ │ │ │ │ +74F7FABB9CDDCB5269571252A2DCBB501E53099AF0406835312318DD7F55027C │ │ │ │ │ +0B72DA810BCF55AE7FB20CC7C90037E08E680B601A3D6C83E3C6DC62A5F04CBD │ │ │ │ │ +C6F509883AC7DA33293115F15F44EE29AF813215B40BDADD6898ACBC5D18DDEC │ │ │ │ │ +529995E58502EF6A48B5CE87F3B1FF5B52EC646C4E430BE25FDDAC21D1656807 │ │ │ │ │ +C503BA667F6A71DB1FF5B50730AD794F8D32CEFEACB64BF46828A8FF599E76C1 │ │ │ │ │ +BC85931739742E111C01DBFF7FDB5EA46592BC68857819FC18E09AF5F1511067 │ │ │ │ │ +533C08CC037E7E52112AAF2271A07F71DE3FEE39FEAA59CCECC3FA9FBEA2B499 │ │ │ │ │ +52E4690D7D2230FB4C1D0FF78C4DBCCDE618D10F133AD68CB01B4B7894AE3512 │ │ │ │ │ +8344B23631F201B42C6FDD3F418B1C814287AC06CC61F2388D5425B2B8912E2C │ │ │ │ │ +21A15AE9CF9D5D9BB3541D0522656B9FA0CD958EB6CAE0A87687900ADEF2CF8F │ │ │ │ │ +FB57FC3E40EDA49A456574ABECC0619B80C2437C865B839D7E183BC697D78089 │ │ │ │ │ +73E1FF1C4A22909216D15A816CDB51CC155BB4FECA31A3C2646EF0CFE266AC60 │ │ │ │ │ +17620A76C6B052F9A51652F90059752F01AB3A5076715D4F6F844F5DECF89AC3 │ │ │ │ │ +9C7D3A5B7D232B8FF5239DFD24EBD344594ACE8B782924F0A45DB0F9285A734D │ │ │ │ │ +733E51753754F56D2F88958079B3DCE3A89BCC9FF8CD54B3DB005C9F7252F511 │ │ │ │ │ +46D49413428DE122248BCBDD3454E885B9BB18A23EECB7EB360A609B4D86CB1F │ │ │ │ │ +15E9BB246E3E44E72EC152CA89C43C32155FC7BEBBF53B0C45EE092BF8F0D898 │ │ │ │ │ +211C2C2836B074CF10923324AD0BAE03DE0116EB34BC4CAB8C31AE1CA583C912 │ │ │ │ │ +AF3809A2EEE15CD06B947AD53BF865FEB07C4E982930436976674020672AD597 │ │ │ │ │ +98109EFDBAB67ADB3CF6EF3B71F5B799A43015D9C970D05C717514E523E010C2 │ │ │ │ │ +C2EA8193AD7945219DFD508834A3B040BD342C0A863E03765EAE5D12196C7106 │ │ │ │ │ +F881340C09B81B05861858093AC66F4C329DFED0D691DAC95FB4D405C8DA4C8E │ │ │ │ │ +9564AD5BDD4720A35FB6216B3F65C56F2AF79B9E48324CFB38C9A0DD34A7DAAA │ │ │ │ │ +E76F65439D937F7A1F4AC5F1423A16D7B5C053F0CDC1EC7F93D5BF84E499EBE4 │ │ │ │ │ +9DA8FE5C9B6D8D78553F0FC479A8EA77AB757876749F6D8A0AA0EE4D6F811CBC │ │ │ │ │ +0E56E9B9630C5888373A4ED8A99FC8549CF18CE857358EFB6CC64F0DB21EE4B1 │ │ │ │ │ +56F50336A963F7F6C74C34246713CF90136180F37B8F4DE814503E556BE01FE3 │ │ │ │ │ +D2B18BD4C611069F27E46AC80BB379F4FE56617C03D527FB066E0F5A9D1E9F4A │ │ │ │ │ +FE348D879E680834BEE4F56A240692851B54EA48AF1E33E6C51D1396AC3E70F4 │ │ │ │ │ +5FC632C3C6CAABFDE6D8545A7E516998ACB3EBA20BC392CDFD7D2370C2B5824F │ │ │ │ │ +E6591C178C37D5A17CB40647BD3A3ABD08BCEF300612B93C0EE5F5D382A7ECED │ │ │ │ │ +6141BB7B564FE3B08B1706321E15DA352745777F4778DE1181733D1A47660AFA │ │ │ │ │ +C1DEB12E6FE19DCD84888FA10AAD55B944C178752DE1DC111A64B403C31B8F06 │ │ │ │ │ +77C6C5B58CBC0998937F297CB8F51BE5CD6AD70092304511DE103DBF688C1E46 │ │ │ │ │ +50DB58F08DD31FEB6F6A9BFBA3C056155D6910CFBEEBE3505A70A75D25A7C83B │ │ │ │ │ +56E097CED3FDA025244112D278EAC70CA74A7612AE66FE31118237B94B06D6A7 │ │ │ │ │ +6736ADE8E0DB077B9B239D7283A4AD532D3109BF3EA19CE88F1ABB87BDAA31AC │ │ │ │ │ +3F24319FF6F92E8686E0FAF0121A749CDBB900694A2B0FC77B9D2435BC06F95A │ │ │ │ │ +85405CE7BDBF74D4E4684B3F02F71E8D3157BF64DEBF65C776B59157CF7C881B │ │ │ │ │ +B8D43528663938C72F253917AD88036EEC3497D2D84B19F618A00A2AC258416D │ │ │ │ │ +8FA4B539DC9073AA8A879E95DD4A9C0C66B1AD9BEAF4EA13B3E75964113B3F5B │ │ │ │ │ +4088895392A420B1D5F139EB014D5FF44984D89D686C5FC34F67E122E05154EC │ │ │ │ │ +8D5BC00334263DCBC11574E30445AE1441B139BAD80BC723BAAF34F22E9568F3 │ │ │ │ │ +E4E9917960F71D1B248506E162E5A9EF7B0A94F1F8CA9FDC8C8F78667BEF71AE │ │ │ │ │ +593CCECF8B4B7786BE72314CABBE0B125B9482ECCB739B363F7795937239CAC5 │ │ │ │ │ +1A7D80451532AF499F26F27D1E15D80FD4FA63FCB7053BB827A1310711BA6164 │ │ │ │ │ +B052F1B3D79EC166F3DCF800A39715AA6209CF981F5503C4B78E77B77E9551E5 │ │ │ │ │ +0522A21F77C523CBF0691B8DBA96D495CB6EDA818DA9C42D0894A26DA4B58518 │ │ │ │ │ +B422B6292FBB088414759745FDB3536363A647EF703B3D71CCCCC3060CA516BD │ │ │ │ │ +F8AF056CC76CB1AC3E5FFE25D54A02AB485232DA484C7C27E683BC83B3B4550E │ │ │ │ │ +100C4386FDB71537C2FE0FD7F83C1866E297B487AC96D1F1613F5F0AB0C9403F │ │ │ │ │ +91865374AD20AA7E482C1CD977620F235E9E784BCEB26347FE5827D193662CB3 │ │ │ │ │ +B0B272C36B09702A0B2E63A2EB09AF18301E9AC706C61500 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -4253,17 +4261,17 @@ │ │ │ │ │ 42 53 46 13[53 2[65 72 2[57 2[36 3[63 3[72 13[48 1[48 │ │ │ │ │ 49[{}20 83.022 /CMBX10 rf /Fe 133[34 41 41 55 41 43 30 │ │ │ │ │ 30 30 1[43 38 43 64 21 2[21 43 38 23 34 43 34 43 38 9[79 │ │ │ │ │ 2[55 43 57 1[52 60 1[70 48 2[28 58 3[59 55 54 58 7[38 │ │ │ │ │ 38 38 38 38 38 38 38 38 38 1[21 26 21 44[{}50 74.7198 │ │ │ │ │ /CMR9 rf /Ff 205[30 30 49[{}2 49.8132 /CMR6 rf /Fg 205[35 │ │ │ │ │ 35 49[{}2 66.4176 /CMR8 rf /Fh 133[43 51 2[51 54 38 38 │ │ │ │ │ -38 1[54 49 54 1[27 2[27 54 49 30 43 54 43 1[49 13[54 │ │ │ │ │ -72 1[66 5[50 2[77 3[70 69 73 10[49 1[49 1[49 49 49 3[27 │ │ │ │ │ -44[{}33 99.6264 /CMR12 rf /Fi 172[90 2[110 121 2[97 6[106 │ │ │ │ │ +38 1[54 49 54 1[27 2[27 54 49 30 43 54 43 54 49 13[54 │ │ │ │ │ +72 1[66 8[77 64 2[70 69 73 8[49 2[49 2[49 49 49 3[27 │ │ │ │ │ +44[{}34 99.6264 /CMR12 rf /Fi 172[90 2[110 121 2[97 6[106 │ │ │ │ │ 69[{}5 143.462 /CMBX12 rf /Fj 134[70 2[70 73 51 52 51 │ │ │ │ │ 70 73 66 73 111 36 1[40 36 1[66 40 58 1[58 73 66 9[137 │ │ │ │ │ 3[73 3[103 2[83 6[90 18[66 3[36 46[{}27 143.462 /CMR17 │ │ │ │ │ rf end │ │ │ │ │ %%EndProlog │ │ │ │ │ %%BeginSetup │ │ │ │ │ %%Feature: *Resolution 600dpi │ │ │ │ │ @@ -4273,22 +4281,22 @@ │ │ │ │ │ { pop << /PageSize [612 792] >> setpagedevice } │ │ │ │ │ { /letter where { pop letter } if } │ │ │ │ │ ifelse │ │ │ │ │ %%EndPaperSize │ │ │ │ │ end │ │ │ │ │ %%EndSetup │ │ │ │ │ %%Page: 1 1 │ │ │ │ │ -TeXDict begin 1 0 bop 1103 1880 a Fj(W)-11 b(rapp)t(er)44 │ │ │ │ │ +TeXDict begin 1 0 bop 1103 1879 a Fj(W)-11 b(rapp)t(er)44 │ │ │ │ │ b(Ob)7 b(jects)43 b(for)g(Solving)1099 2062 y(a)g(Linear)g(System)g(of) │ │ │ │ │ g(Equations)1306 2245 y(using)g Fi(SPOOLES)g Fj(2.2)1052 │ │ │ │ │ 2635 y Fh(Clev)m(e)35 b(Ashcraft)699 2751 y(Bo)s(eing)e(Shared)g │ │ │ │ │ (Services)i(Group)1995 2715 y Fg(1)2483 2635 y Fh(P)m(eter)f(Sc)m │ │ │ │ │ (hartz)2342 2751 y(CSAR)f(Corp)s(oration)3162 2715 y │ │ │ │ │ -Fg(2)1586 3012 y Fh(Jan)m(uary)h(16,)e(2024)104 4919 │ │ │ │ │ -y Ff(1)138 4951 y Fe(P)-6 b(.)35 b(O.)g(Bo)n(x)f(24346,)39 │ │ │ │ │ +Fg(2)1566 3013 y Fh(F)-8 b(ebruary)33 b(18,)f(2025)104 │ │ │ │ │ +4919 y Ff(1)138 4951 y Fe(P)-6 b(.)35 b(O.)g(Bo)n(x)f(24346,)39 │ │ │ │ │ b(Mail)d(Stop)e(7L-21,)k(Seattle,)g(W)-6 b(ashington)34 │ │ │ │ │ b(98124.)64 b(This)35 b(researc)n(h)g(w)n(as)h(supp)r(orted)e(in)g │ │ │ │ │ (part)h(b)n(y)e(the)0 5042 y(D)n(ARP)-6 b(A)20 b(Con)n(tract)j(D)n │ │ │ │ │ (ABT63-95-C-0122)i(and)d(the)f(DoD)h(High)g(P)n(erformance)i(Computing) │ │ │ │ │ f(Mo)r(dernization)g(Program)h(Common)0 5133 y(HPC)i(Soft)n(w)n(are)h │ │ │ │ │ (Supp)r(ort)d(Initiativ)n(e.)104 5193 y Ff(2)138 5224 │ │ │ │ │ y Fe(28035)32 b(Doroth)n(y)e(Driv)n(e,)h(Agoura)g(Hills,)h(CA)e(91301.) │ │ │ │ │ ├── ps2ascii {} │ │ │ │ │ │ @@ -1,13 +1,13 @@ │ │ │ │ │ │ Wrapper Objects for Solving │ │ │ │ │ │ a Linear System of Equations │ │ │ │ │ │ using SPOOLES 2.2 │ │ │ │ │ │ Cleve Ashcraft Peter Schartz │ │ │ │ │ │ Boeing Shared Services Group1 CSARCorporation2 │ │ │ │ │ │ - January 16, 2024 │ │ │ │ │ │ + February 18, 2025 │ │ │ │ │ │ 1P. O. Box 24346, Mail Stop 7L-21, Seattle, Washington 98124. This research was supported in part by the │ │ │ │ │ │ DARPAContract DABT63-95-C-0122 and the DoD High Performance Computing Modernization Program Common │ │ │ │ │ │ HPCSoftware Support Initiative. │ │ │ │ │ │ 228035 Dorothy Drive, Agoura Hills, CA 91301. This research was supported in part by the DARPA Contract │ │ │ │ │ │ DABT63-95-C-0122 and the DoD High Performance Computing Modernization Program Common HPC Software │ │ │ │ │ │ Support Initiative. │ │ │ │ │ │ Abstract │ │ │ ├── ./usr/share/doc/spooles-doc/Lock.ps.gz │ │ │ │ ├── Lock.ps │ │ │ │ │ @@ -10,15 +10,15 @@ │ │ │ │ │ %%EndComments │ │ │ │ │ %%BeginDefaults │ │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ │ %%EndDefaults │ │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ │ %DVIPSCommandLine: dvips main -o Lock.ps │ │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ │ -%DVIPSSource: TeX output 2024.01.16:2047 │ │ │ │ │ +%DVIPSSource: TeX output 2025.02.18:0318 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -1515,20 +1515,21 @@ │ │ │ │ │ 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 52 /four put │ │ │ │ │ -dup 54 /six put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ +dup 56 /eight put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 74 /J put │ │ │ │ │ +dup 70 /F put │ │ │ │ │ dup 97 /a put │ │ │ │ │ -dup 110 /n put │ │ │ │ │ +dup 98 /b put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ dup 114 /r put │ │ │ │ │ dup 117 /u put │ │ │ │ │ dup 121 /y put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ @@ -1712,89 +1713,93 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ │ -C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ │ -6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ │ -11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ │ -1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ │ -A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ │ -F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ │ -EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ │ -033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ │ -A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ │ -468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8A71FF9C085003EBB4F4 │ │ │ │ │ -3D271F5B16B1AAD3EBDC391F534AA46E545E9D8659DD19B309C3B7625A8396FA │ │ │ │ │ -2519464539D46E43ACB72952313C8497315E0319C08628023E8FC54D7D3BAC29 │ │ │ │ │ -D5AD8EFDABF0C33C7AFB7151A6606C62A87F0F5F783569AC4C881A992E3FE420 │ │ │ │ │ -297F7BC5147F3B2FA98450D2F8B07F7D229BC8BE06729920CFEC22556740E1CB │ │ │ │ │ -3DE09AC763C6D4A20AD1599C368FABD07BC35C16683F2A0311A88983415A9140 │ │ │ │ │ -2EFC4BC1B10DCAD4B2B8A28510E5BD39D6616D2B9B079ED3CF9C315B7DEC29D9 │ │ │ │ │ -251DFD0194B34EC175964C23383F23FFB2E41B698C405815D65EAFF9E9DD1DDE │ │ │ │ │ -30F77924656C288B8DDB2E5B0E7B1FAA66791DE3848EE6DE63AD0E945E49C6C7 │ │ │ │ │ -9FCA16E01F027F9EF7ACB55F02F5B0136480802F789F6FE14B430879979BA04D │ │ │ │ │ -F481AD4CF47E6847936F377FB04869F9A80E597301BFCAB718D8764094673876 │ │ │ │ │ -BCEF8FA3701608C84B3A0399A11D2E6AD922CCB7D72AF9EBFB30F4648A37A123 │ │ │ │ │ -CB8FB14BDC351692CF0CCAA5CA9383C2B23BAAA38700327EB743FBBE9EE04041 │ │ │ │ │ -13F5CEF4B3881BBC051C33369A82B3505B1CFD7D91AEF2E43EA728EE48E2D854 │ │ │ │ │ -5A7E516998ACDD4FD835FA901C5A21810A56D51FE919B2E58408EEB4DAEB487F │ │ │ │ │ -BA7F1D292CED902DF3533566D96DAD918319EA650D4FC7D9E0170CDE620F755B │ │ │ │ │ -0E7AE02D9B118481B26F5FF7060FBCFA2A682B6826F00679BCDA68794C05286D │ │ │ │ │ -B616DD08372ACDE0AE6E7EF116F0D36F16241ED4F0E8CCD80377792E3BB1343C │ │ │ │ │ -EEB22CC77738F7CBCBA32CF6C3979F6DF7ED81A89AE8928FD7CC550F2730BA88 │ │ │ │ │ -1B51CEDC63F4C47F261AFCAB7AC3CED20B15C97E714A460A1A3B16436B4A5149 │ │ │ │ │ -8F91DA4BE0B9B648534CE5F442117036B602DC91E2852BEA62F55803B833FDF7 │ │ │ │ │ -9F901AB87489E703DDEED1091A79DC73B4440BBBF2C7592B441187C4A3562204 │ │ │ │ │ -859F08BA3CE2A8ECCD5AAD13C50FB806FE79A388F1822C5608837CBDE526A044 │ │ │ │ │ -12E5CDE4A066932AF2ACA7E8FC6BA4603640944718752975B7DA6E906BE1EA01 │ │ │ │ │ -46736FF5D1AA1CC682D011B6039CF98C35E36D4F14ABC84A38B7203CC9A17756 │ │ │ │ │ -B2B0345276798F1A88A54AD9FEA0853C6DDF28525ED4F0B7380D14147012C2A4 │ │ │ │ │ -5B02888C986C76497EA4C729B0B82EE73C1A1A8E8F1ABF401E341028E9C15AF9 │ │ │ │ │ -354706D8DC07492921AD0932A46736C0D1B066D00287DACCC068FAE6A796EC89 │ │ │ │ │ -54D1D73AA88F3A5912BA9D3FF70065C8D0D0DAD1CD846501E06694374EFDBEC6 │ │ │ │ │ -931F644D5E8494AFC742423AD9A487658E310E0682BE19B8475F4D450487A686 │ │ │ │ │ -2B94494DEAF1C0F59DE82F2CE64BEE5E97F942FCFA1187ED6AA5761E951A7BF7 │ │ │ │ │ -9F842E34A4656C58B35A9E99F7E6762CEE11E0CF59FFD75D7382C5EE6DBB43F1 │ │ │ │ │ -ED219071D3FB22DBA90977723BB467C0490D042684C0724F40DCA3E0D8F1F4E7 │ │ │ │ │ -3C4F9A67BE6528185EAAFDD415224F7E256A4EA00111C17C746CBD80BF569A27 │ │ │ │ │ -D81195D7F79C1CCEEF30ED00D49F48B63E4B8D7953403A3710AE953CC1B76F0F │ │ │ │ │ -F523D777A6A186F262A602543F94AF7471DBE25FEBC207DB42DAF7DC9A5781FB │ │ │ │ │ -2131AD42869D966A734AAE3466DF1CE9D1BCFA72409A558C0AEE6A8E2FEAACB6 │ │ │ │ │ -2CDABCC28433034848ACF9FB4465D272E4AFC48572647F05F41C7A293CC5B595 │ │ │ │ │ -AD31555FB708A72962707348BC7033A8224BD42EB9D75FDF3AE9E6A9C960B330 │ │ │ │ │ -5137DF59F8E2E0D535F41524ABDF070745A4FA25CD8DFD38A5FF30A95452B875 │ │ │ │ │ -6569E8812631300D79A942C563AF174AC05C9F2D09D7D5D3C605F5A6B7F21B34 │ │ │ │ │ -18F270A993B050838E701A17938D1C156CBA7CA4BAC7C562CE9D7B758EAB25A9 │ │ │ │ │ -A6DFFC71F65561341847B776DF34061CE3D439B87B857626987EC93B3B95B8E8 │ │ │ │ │ -76FFB16B263675333FA10414FEED707FF7C366BF8B20FF8577CDEBEBCF1A5BCE │ │ │ │ │ -258C09C90175A5278B7C444A623E3331FDE5A6387B3E389540ED1E7E883958F3 │ │ │ │ │ -3A5C89CCD62256FA069DF4A5090FB17C1F1757C9209DAFB8A1F47182BF3E88D9 │ │ │ │ │ -0B5376B59EE165A761902759C8ED7F5AD301E7EB8B49CC09AF921DB45B7F8002 │ │ │ │ │ -AB32E73AAE53942DE0F9175D8446017006C9C0B93EF39C13B7A879F2F6DDFF16 │ │ │ │ │ -204BB24F976847CF006FD29332FCCB255B5116F7077A44F7066C39C81DC4BAD2 │ │ │ │ │ -40DB2753626C0102E5D047522ABC38EA294A699B8DFD9CA0A7980561A1062E90 │ │ │ │ │ -AB11EE286A9C238D9F721D9980D0A1828C2814972622D948CEE8C812C19A9A03 │ │ │ │ │ -608ED0AC138A436FFBF8BE3D1E66C87793416AF38ED9BC5424568A175FBDAA9E │ │ │ │ │ -D6FC11A7021693819B051562B5A59F32629E2D6019D69DD329BE1894A2B295E1 │ │ │ │ │ -1DCE9683B29AE126C56F26E5C595BF1A8249BDE231DBE8B066F7F62EF149B975 │ │ │ │ │ -A863969A4690504A5EA064721DA909B8157C0B39FBF8228D95CB655E406161E1 │ │ │ │ │ -148610FAEED7C5509880223C06A66DA19E10F94DC2DB481B26 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004FD597ED │ │ │ │ │ +EFDBC64ABD9B79386FB2427D1A63522195B1239C09F8CB3F8BD7A245A6DD82E3 │ │ │ │ │ +260C3889587626DFC5F7978E55F5524ABD6A3319CDD3D3F40D040044D51DA4E1 │ │ │ │ │ +6797EEAC7AA07C77EC6DB0E6E182B545A8BEF63B14F3FC07BAC09E7CD5C17ED6 │ │ │ │ │ +10080704B0DA4E9BA12F968DF8A58458D17E9A5B1F14A83DC51F5B161ADEE1CC │ │ │ │ │ +0183D82ED92C6FC7203C289949EDF0284D9893029FF5408E421324625F17C3E5 │ │ │ │ │ +2437C8F75A9D68EE1AF9174FEA6FC6BF793C7D2E497EA90396CF1A645E283B69 │ │ │ │ │ +8425F47C323587DF91E1D596DCB1E3A787C955D9D965A5E3E26ADF58B62AD5F9 │ │ │ │ │ +0C9AC784DE479780606354111E3202F215650DBBE1063A46F3C10B9EBC974DDA │ │ │ │ │ +A1A28DBBD43E9E5BFF000B12C787D0427928078F8EC5FE90DED97E6C129E8DEA │ │ │ │ │ +51F66504DB83764E52B0BA68DF7BE684C8959CB1D3345CC48221A9A4683306C0 │ │ │ │ │ +62B634E0A539383F0C7A788D9711EFF414869CCC5659D78CEBE009BF2463F56A │ │ │ │ │ +0ADC993348FE96DF7C250E13ED6504AACFE8F8DCA2D2048D9D8CFA127D363EAC │ │ │ │ │ +1F0630E2D1B621E6954038195D965B91FD974FA3F1B8B29D200A16CEBA645E2F │ │ │ │ │ +CEEE6FD49FBBD49E38AE67D4BFFCE91F1FC422554EC4409C5FA18D40FCD6D9B3 │ │ │ │ │ +2185ED1E0F98106D4339F086B05CA36E56EC22C60E2CE23F9C4CC403ACAD3F94 │ │ │ │ │ +4086B4DF6DFA0B7B4716417263E7B558535566AED2F6C2F9846A16D71A7930A7 │ │ │ │ │ +49232D3D16C4A01CF1A1998A06F40062ED329179A85668537C55D0BC24FC0010 │ │ │ │ │ +54DA83E2FC66B2A5D428E6A9BFC983253668C0ECE6CA36DBF97C4B7659D50842 │ │ │ │ │ +C65B36604840EEDA399B57E2DEFAC3E7FB031634CE33D04238F9854D2AAAF448 │ │ │ │ │ +34DA5F3BCCED3166FEEE82BB0BBA0A397CC2F95865CB52AABFF454D93B425809 │ │ │ │ │ +A26AC459F321FD23E2262FE816D06BAAECF32AAF167F84799AF80F9F88388D07 │ │ │ │ │ +0DB5FD57AFEE2850A8DFE977E6AE39CB3DC16DB1A163A583C86C6F775CE33521 │ │ │ │ │ +0081C0BBBAD6D30D26C66B28B38CEAC78FEA5FB3CC5853656B67C6D9D80EB30E │ │ │ │ │ +397558C9179AF5920F34DAB3F578DFCF0DBB137AED17D6325C23883E69EE4621 │ │ │ │ │ +34355A70C19EA68891E1CA937376901C85CDEE109F1665943E29A216DC00937A │ │ │ │ │ +B983A729A4654AD09187C0242D52FA4ADD0853EF4888864914D7D81C56578DD4 │ │ │ │ │ +3B51907032022E6E412D4F114675DEDCA8A9E85DC03A0B583FECD84432D15F70 │ │ │ │ │ +01F627BD6EC91F9FCFDA01BF40E1229B5F164309DBB641AD50970503DA2048C1 │ │ │ │ │ +DF8F36E8D252EE113F0B46677D9BAF376BAE18D74CFB0DBBD0C7E9D0A58BA3ED │ │ │ │ │ +1E5099CAE073EB5638617760AB57849893764EA9735173CD1EAB66884CEA7EE3 │ │ │ │ │ +8843327B2E145BD6FBB49102776B82BC511D109F8BE9E7E99DADABABEDC3CFD9 │ │ │ │ │ +393578FFD85907DFF2849E4CDE6FA4DEC7E1C150EBE4047FFB650F9548BE6D11 │ │ │ │ │ +0C51226A5436F18BF20A02E0F888F46B6AC3A8E8D927ECD3B5E095933AD3859F │ │ │ │ │ +5167C41D832EFCC4093BD2AFA7101AB430E57DAFC3590F05D3CBABB32BC203A0 │ │ │ │ │ +467B23BDB830487C9AA5B85BAC065F8538871B4180F8C4732E637DB090CFDE5A │ │ │ │ │ +3F4F2B5BFAFB848BAAD1A17CB076B34159601639BD93ECAB1214ACABF2C67FE2 │ │ │ │ │ +0658AA20B08681070FF56F1CC52144ABA8765D6E124D1CEA9BBA102808CE1BB2 │ │ │ │ │ +5EDF46BC7BBC2A5B49EE6EC28F5797A3969B057B21FCDBBD0E60848FF14F6CA3 │ │ │ │ │ +70F3060BDBB019B22722C99C7691760F013763B7FBEB62830AE215F195BF9F01 │ │ │ │ │ +21BF4377397E89574CFA47D123AA506A570A77BA6EB4AAB0B237A26154880293 │ │ │ │ │ +3952F832F72ECCB024F02385E5EE8566B165904B594E30D0700D033C6B429F6F │ │ │ │ │ +2A20BC774F442BC9CE29FCC81807C2768A8BC927A215558FBF36DC53F477F04A │ │ │ │ │ +41DA66E1A85B659EB761230977EAD7DA0150513D3323B143D4E2A61BCF03334C │ │ │ │ │ +C0EE3E1B06CFAF58ECC910BD81F0352B75FF1594D6A4EF504232D442174BE766 │ │ │ │ │ +0F8E703F97E21D25D4CD097549C31FEE7017C3916EFB02E7BF869172889827B6 │ │ │ │ │ +A48465EB7612BA3DBC6A9436C7167F149A25CE9F8E3F4F8DE3B5ADF6C0986CB3 │ │ │ │ │ +3A7E2DAB44AB489796461536F5F713017F2620AD03295CAE9285F08974AE0DF8 │ │ │ │ │ +D739260929619B509491AFF09C4CAEF9E65C2CA69470C907ECBF3AB6C955360D │ │ │ │ │ +05ABAC306DB51122A1ADC7EF0DD70FA299A45C505A83727D4598C86319EE9C06 │ │ │ │ │ +7218EFD4F40388354BCF1B79593D5AD221DF955D081F99F880E5CED07321AB3E │ │ │ │ │ +A2FCB8B05D54807D8E15E65B78DCE12989B9276350080C905DBB74CE9AA7E246 │ │ │ │ │ +5D3BAED292C562D4CF54617FCC6654496C7996D1ECE1EFF9258716AB763A12E6 │ │ │ │ │ +316E4C5587351A6DB011F58F6A15BC28BEBDC3836E0CB892807FEC228DC1B380 │ │ │ │ │ +92F7F42279F08D60F13D6A4CB425543C3644461461CBF6F27B6603F613D1FCF8 │ │ │ │ │ +A8410AD82D1498166AEB35D4125D7E2ADEAAB18BC04806AED53513F066E5F154 │ │ │ │ │ +3E13E863C50B9814EE2FB978D0D24A03FAF650CB6E2CADF1E6BE6BAF699AFC03 │ │ │ │ │ +E1A0EEB207B3B9A689ED5B373FE86686AD230BE6C18E1673DDA50E224B343EC5 │ │ │ │ │ +903BA0C8041C13607B50D5852AC7970B15C244E6EBA7D54B3086312CF04761D6 │ │ │ │ │ +7D3D75D51F20C371494AB81AB4A9838B20B483B851D01FEF41EA5C0B4755B964 │ │ │ │ │ +EB6E9B178051C556A010994EB88EAE641F4C1A0D7E0F98D5267E18AEF1AEA7E7 │ │ │ │ │ +9030A97DF89AFF621981C33B645FFB5F3BB2065A7661D11B26E0999561DF3580 │ │ │ │ │ +4A76A05DFAF8085525F8D5C01936F03C32E26E72569371C9EA3B8916F9DFC5FC │ │ │ │ │ +6A6F25A0FFDB981BA8B896393D75774D50828E6ADE903C45406E354703A4BC56 │ │ │ │ │ +2C49A47FEAC970DC433E3050C49F7FB945A9705BD8852D2D65D935F244D3B423 │ │ │ │ │ +EFAB84AAAAB8FBAFF50AFF372A533BCCEB5FC273DBADCF715776DF02A5DCBA9A │ │ │ │ │ +FBF265FAB4745D6475B33611EEE1EA95E7584E0BEEC7CA789AA69C8D03D6F8C0 │ │ │ │ │ +5B6844E2B901ACA560C0433B053D134866E567425174E47173679AAD4486A2D3 │ │ │ │ │ +369C29E4DD2CD6ACA1BE80ED8FF0A9C58A616D26E758BD8E6342624EC83FB590 │ │ │ │ │ +BD354B52B60BB054FAFE9AC63E1564FBC721FE8F276B0413EC89A2C85E5ED1B0 │ │ │ │ │ +3A9D83BE62A4488ADE7CE69971A8AF7E5862A4290EEF6F00D4171C7FFB360065 │ │ │ │ │ +92E72BF02BE27161AE0BB5516572A0BDC4F316FFB24B38484AC8D1FD4CD86062 │ │ │ │ │ +A2B5D03CF28C3A679C039A6EFDD4C9DA7E463AD60234C9F6BBEE48D87DD94D85 │ │ │ │ │ +842F495F3E25723718682CE4D6224CBBF4456F03077EDF736D65B9DDAB09470E │ │ │ │ │ +17742D82011FFA96BFE86B96E858F9352FCD20C3D46B77DBDEE54336EC2249EA │ │ │ │ │ +211F6DFFF5BEA1E5192BE1BAC0BDD5EDDB3D56C6F7C6E543561A0B39E5C1B04F │ │ │ │ │ +C683A7516B6E69D682455386DDA709929D621FA434D403E895AA0A77DBE1DFD2 │ │ │ │ │ +0D060DF82378880147ED97C6E8149686FA048710B113760AC1DA4512FF8556B3 │ │ │ │ │ +16E2447485B8C3CD58D0469C4A45FFB4CB0322BB284C02 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -3006,16 +3011,16 @@ │ │ │ │ │ %%EndFont │ │ │ │ │ TeXDict begin 40258437 52099151 1000 600 600 (main.dvi) │ │ │ │ │ @start /Fa 133[50 59 4[44 44 46 2[56 62 93 31 2[31 62 │ │ │ │ │ 2[51 62 50 1[54 11[86 11[42 6[80 14[56 56 56 2[31 46[{}22 │ │ │ │ │ 99.6264 /CMBX12 rf /Fb 144[62 3[62 7[62 22[62 76[{}4 │ │ │ │ │ 119.552 /CMTT12 rf /Fc 141[38 2[46 51 2[42 1[28 46 42 │ │ │ │ │ 1[42 1[42 14[65 1[66 11[59 62 69 2[68 6[28 58[{}16 90.9091 │ │ │ │ │ -/CMTI10 rf /Fd 134[48 3[51 2[36 3[51 12[45 22[47 15[25 │ │ │ │ │ -3[45 1[45 1[45 45 45 3[25 44[{}13 90.9091 /CMSL10 rf │ │ │ │ │ +/CMTI10 rf /Fd 134[48 3[51 2[36 12[40 2[51 45 26[59 11[25 │ │ │ │ │ +1[45 2[45 2[45 45 45 3[25 44[{}14 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 │ │ │ │ │ @@ -3123,17 +3128,17 @@ │ │ │ │ │ Fg(mutex)p 1598 5055 V 33 w(t)47 b(*mutex)p Fh(.)227 │ │ │ │ │ 5231 y(F)-8 b(or)31 b(POSIX)f(threads)g(w)m(e)h(ha)m(v)m(e)g │ │ │ │ │ Fg(pthread)p 1714 5231 V 33 w(mutex)p 1987 5231 V 33 │ │ │ │ │ w(t)47 b(*mutex)p Fh(.)227 5407 y(F)-8 b(or)31 b(no)g(threads)f(w)m(e)g │ │ │ │ │ (ha)m(v)m(e)i Fg(void)47 b(*mutex)p Fh(.)1927 5656 y(1)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fh(2)p 136 100 1130 4 v │ │ │ │ │ -1312 w Fg(Lock)29 b Fd(:)41 b Fc(DRAFT)30 b Fd(Jan)m(uary)g(16,)i(2024) │ │ │ │ │ -p 2770 100 V 0 399 a Ff(1.2)135 b(Protot)l(yp)t(es)46 │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fh(2)p 136 100 1111 4 v │ │ │ │ │ +1293 w Fg(Lock)29 b Fd(:)41 b Fc(DRAFT)30 b Fd(F)-8 b(ebruary)30 │ │ │ │ │ +b(18,)i(2025)p 2789 100 V 0 399 a Ff(1.2)135 b(Protot)l(yp)t(es)46 │ │ │ │ │ b(and)f(descriptions)g(of)g Fb(Lock)e Ff(metho)t(ds)0 │ │ │ │ │ 628 y Fa(1.2.1)112 b(Basic)38 b(metho)s(ds)0 823 y Fh(As)d(usual,)h │ │ │ │ │ (there)f(are)g(four)f(basic)h(metho)s(ds)g(to)g(supp)s(ort)e(ob)5 │ │ │ │ │ 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 │ │ │ │ │ @@ -3191,17 +3196,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 1130 4 v 1312 100 a Fg(Lock)29 │ │ │ │ │ -b Fd(:)40 b Fc(DRAFT)122 b Fd(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2723 100 V 1130 w Fh(3)111 399 y(2.)46 b Fg(void)h(Lock_unlock)e(\()i │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1111 4 v 1292 100 a Fg(Lock)30 │ │ │ │ │ +b Fd(:)40 b Fc(DRAFT)121 b Fd(F)-8 b(ebruary)31 b(18,)g(2025)p │ │ │ │ │ +2742 100 V 1111 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 16, 2024 │ │ │ │ │ │ + 2 Lock : DRAFT February 18, 2025 │ │ │ │ │ │ 1.2 Prototypes and descriptions of Lock methods │ │ │ │ │ │ 1.2.1 Basic methods │ │ │ │ │ │ As usual, there are four basic methods to support object creation, setting default fields, clearing │ │ │ │ │ │ any allocated data, and free’ing the object. │ │ │ │ │ │ 1. Lock * Lock_new ( void ) ; │ │ │ │ │ │ This method simply allocates storage for the Lock structure and then sets the default fields │ │ │ │ │ │ by a call to Lock setDefaultFields(). │ │ │ │ │ │ @@ -53,15 +53,15 @@ │ │ │ │ │ │ thread package, lockflag != 0 means the lock will be initialized to synchronize only threads │ │ │ │ │ │ in this process. │ │ │ │ │ │ Error checking: If lock is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 1.2.3 Utility methods │ │ │ │ │ │ 1. void Lock_lock ( Lock *lock ) ; │ │ │ │ │ │ This method locks the lock. │ │ │ │ │ │ Error checking: If lock is NULL, an error message is printed and the program exits. │ │ │ │ │ │ - Lock : DRAFT January 16, 2024 3 │ │ │ │ │ │ + Lock : DRAFT February 18, 2025 3 │ │ │ │ │ │ 2. void Lock_unlock ( Lock *lock ) ; │ │ │ │ │ │ This method unlocks the lock. │ │ │ │ │ │ Error checking: If lock is NULL, an error message is printed and the program exits. │ │ │ │ │ │ Index │ │ │ │ │ │ Lock clearData(), 2 │ │ │ │ │ │ Lock free(), 2 │ │ │ │ │ │ Lock init(), 2 │ │ │ ├── ./usr/share/doc/spooles-doc/MPI.ps.gz │ │ │ │ ├── MPI.ps │ │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ │ %%EndComments │ │ │ │ │ %%BeginDefaults │ │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ │ %%EndDefaults │ │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ │ %DVIPSCommandLine: dvips main -o MPI.ps │ │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ │ -%DVIPSSource: TeX output 2024.01.16:2047 │ │ │ │ │ +%DVIPSSource: TeX output 2025.02.18:0318 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -1206,20 +1206,21 @@ │ │ │ │ │ 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 52 /four put │ │ │ │ │ -dup 54 /six put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ +dup 56 /eight put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 74 /J put │ │ │ │ │ +dup 70 /F put │ │ │ │ │ dup 97 /a put │ │ │ │ │ -dup 110 /n put │ │ │ │ │ +dup 98 /b put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ dup 114 /r put │ │ │ │ │ dup 117 /u put │ │ │ │ │ dup 121 /y put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ @@ -1403,89 +1404,93 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ │ -C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ │ -6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ │ -11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ │ -1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ │ -A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ │ -F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ │ -EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ │ -033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ │ -A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ │ -468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8A71FF9C085003EBB4F4 │ │ │ │ │ -3D271F5B16B1AAD3EBDC391F534AA46E545E9D8659DD19B309C3B7625A8396FA │ │ │ │ │ -2519464539D46E43ACB72952313C8497315E0319C08628023E8FC54D7D3BAC29 │ │ │ │ │ -D5AD8EFDABF0C33C7AFB7151A6606C62A87F0F5F783569AC4C881A992E3FE420 │ │ │ │ │ -297F7BC5147F3B2FA98450D2F8B07F7D229BC8BE06729920CFEC22556740E1CB │ │ │ │ │ -3DE09AC763C6D4A20AD1599C368FABD07BC35C16683F2A0311A88983415A9140 │ │ │ │ │ -2EFC4BC1B10DCAD4B2B8A28510E5BD39D6616D2B9B079ED3CF9C315B7DEC29D9 │ │ │ │ │ -251DFD0194B34EC175964C23383F23FFB2E41B698C405815D65EAFF9E9DD1DDE │ │ │ │ │ -30F77924656C288B8DDB2E5B0E7B1FAA66791DE3848EE6DE63AD0E945E49C6C7 │ │ │ │ │ -9FCA16E01F027F9EF7ACB55F02F5B0136480802F789F6FE14B430879979BA04D │ │ │ │ │ -F481AD4CF47E6847936F377FB04869F9A80E597301BFCAB718D8764094673876 │ │ │ │ │ -BCEF8FA3701608C84B3A0399A11D2E6AD922CCB7D72AF9EBFB30F4648A37A123 │ │ │ │ │ -CB8FB14BDC351692CF0CCAA5CA9383C2B23BAAA38700327EB743FBBE9EE04041 │ │ │ │ │ -13F5CEF4B3881BBC051C33369A82B3505B1CFD7D91AEF2E43EA728EE48E2D854 │ │ │ │ │ -5A7E516998ACDD4FD835FA901C5A21810A56D51FE919B2E58408EEB4DAEB487F │ │ │ │ │ -BA7F1D292CED902DF3533566D96DAD918319EA650D4FC7D9E0170CDE620F755B │ │ │ │ │ -0E7AE02D9B118481B26F5FF7060FBCFA2A682B6826F00679BCDA68794C05286D │ │ │ │ │ -B616DD08372ACDE0AE6E7EF116F0D36F16241ED4F0E8CCD80377792E3BB1343C │ │ │ │ │ -EEB22CC77738F7CBCBA32CF6C3979F6DF7ED81A89AE8928FD7CC550F2730BA88 │ │ │ │ │ -1B51CEDC63F4C47F261AFCAB7AC3CED20B15C97E714A460A1A3B16436B4A5149 │ │ │ │ │ -8F91DA4BE0B9B648534CE5F442117036B602DC91E2852BEA62F55803B833FDF7 │ │ │ │ │ -9F901AB87489E703DDEED1091A79DC73B4440BBBF2C7592B441187C4A3562204 │ │ │ │ │ -859F08BA3CE2A8ECCD5AAD13C50FB806FE79A388F1822C5608837CBDE526A044 │ │ │ │ │ -12E5CDE4A066932AF2ACA7E8FC6BA4603640944718752975B7DA6E906BE1EA01 │ │ │ │ │ -46736FF5D1AA1CC682D011B6039CF98C35E36D4F14ABC84A38B7203CC9A17756 │ │ │ │ │ -B2B0345276798F1A88A54AD9FEA0853C6DDF28525ED4F0B7380D14147012C2A4 │ │ │ │ │ -5B02888C986C76497EA4C729B0B82EE73C1A1A8E8F1ABF401E341028E9C15AF9 │ │ │ │ │ -354706D8DC07492921AD0932A46736C0D1B066D00287DACCC068FAE6A796EC89 │ │ │ │ │ -54D1D73AA88F3A5912BA9D3FF70065C8D0D0DAD1CD846501E06694374EFDBEC6 │ │ │ │ │ -931F644D5E8494AFC742423AD9A487658E310E0682BE19B8475F4D450487A686 │ │ │ │ │ -2B94494DEAF1C0F59DE82F2CE64BEE5E97F942FCFA1187ED6AA5761E951A7BF7 │ │ │ │ │ -9F842E34A4656C58B35A9E99F7E6762CEE11E0CF59FFD75D7382C5EE6DBB43F1 │ │ │ │ │ -ED219071D3FB22DBA90977723BB467C0490D042684C0724F40DCA3E0D8F1F4E7 │ │ │ │ │ -3C4F9A67BE6528185EAAFDD415224F7E256A4EA00111C17C746CBD80BF569A27 │ │ │ │ │ -D81195D7F79C1CCEEF30ED00D49F48B63E4B8D7953403A3710AE953CC1B76F0F │ │ │ │ │ -F523D777A6A186F262A602543F94AF7471DBE25FEBC207DB42DAF7DC9A5781FB │ │ │ │ │ -2131AD42869D966A734AAE3466DF1CE9D1BCFA72409A558C0AEE6A8E2FEAACB6 │ │ │ │ │ -2CDABCC28433034848ACF9FB4465D272E4AFC48572647F05F41C7A293CC5B595 │ │ │ │ │ -AD31555FB708A72962707348BC7033A8224BD42EB9D75FDF3AE9E6A9C960B330 │ │ │ │ │ -5137DF59F8E2E0D535F41524ABDF070745A4FA25CD8DFD38A5FF30A95452B875 │ │ │ │ │ -6569E8812631300D79A942C563AF174AC05C9F2D09D7D5D3C605F5A6B7F21B34 │ │ │ │ │ -18F270A993B050838E701A17938D1C156CBA7CA4BAC7C562CE9D7B758EAB25A9 │ │ │ │ │ -A6DFFC71F65561341847B776DF34061CE3D439B87B857626987EC93B3B95B8E8 │ │ │ │ │ -76FFB16B263675333FA10414FEED707FF7C366BF8B20FF8577CDEBEBCF1A5BCE │ │ │ │ │ -258C09C90175A5278B7C444A623E3331FDE5A6387B3E389540ED1E7E883958F3 │ │ │ │ │ -3A5C89CCD62256FA069DF4A5090FB17C1F1757C9209DAFB8A1F47182BF3E88D9 │ │ │ │ │ -0B5376B59EE165A761902759C8ED7F5AD301E7EB8B49CC09AF921DB45B7F8002 │ │ │ │ │ -AB32E73AAE53942DE0F9175D8446017006C9C0B93EF39C13B7A879F2F6DDFF16 │ │ │ │ │ -204BB24F976847CF006FD29332FCCB255B5116F7077A44F7066C39C81DC4BAD2 │ │ │ │ │ -40DB2753626C0102E5D047522ABC38EA294A699B8DFD9CA0A7980561A1062E90 │ │ │ │ │ -AB11EE286A9C238D9F721D9980D0A1828C2814972622D948CEE8C812C19A9A03 │ │ │ │ │ -608ED0AC138A436FFBF8BE3D1E66C87793416AF38ED9BC5424568A175FBDAA9E │ │ │ │ │ -D6FC11A7021693819B051562B5A59F32629E2D6019D69DD329BE1894A2B295E1 │ │ │ │ │ -1DCE9683B29AE126C56F26E5C595BF1A8249BDE231DBE8B066F7F62EF149B975 │ │ │ │ │ -A863969A4690504A5EA064721DA909B8157C0B39FBF8228D95CB655E406161E1 │ │ │ │ │ -148610FAEED7C5509880223C06A66DA19E10F94DC2DB481B26 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004FD597ED │ │ │ │ │ +EFDBC64ABD9B79386FB2427D1A63522195B1239C09F8CB3F8BD7A245A6DD82E3 │ │ │ │ │ +260C3889587626DFC5F7978E55F5524ABD6A3319CDD3D3F40D040044D51DA4E1 │ │ │ │ │ +6797EEAC7AA07C77EC6DB0E6E182B545A8BEF63B14F3FC07BAC09E7CD5C17ED6 │ │ │ │ │ +10080704B0DA4E9BA12F968DF8A58458D17E9A5B1F14A83DC51F5B161ADEE1CC │ │ │ │ │ +0183D82ED92C6FC7203C289949EDF0284D9893029FF5408E421324625F17C3E5 │ │ │ │ │ +2437C8F75A9D68EE1AF9174FEA6FC6BF793C7D2E497EA90396CF1A645E283B69 │ │ │ │ │ +8425F47C323587DF91E1D596DCB1E3A787C955D9D965A5E3E26ADF58B62AD5F9 │ │ │ │ │ +0C9AC784DE479780606354111E3202F215650DBBE1063A46F3C10B9EBC974DDA │ │ │ │ │ +A1A28DBBD43E9E5BFF000B12C787D0427928078F8EC5FE90DED97E6C129E8DEA │ │ │ │ │ +51F66504DB83764E52B0BA68DF7BE684C8959CB1D3345CC48221A9A4683306C0 │ │ │ │ │ +62B634E0A539383F0C7A788D9711EFF414869CCC5659D78CEBE009BF2463F56A │ │ │ │ │ +0ADC993348FE96DF7C250E13ED6504AACFE8F8DCA2D2048D9D8CFA127D363EAC │ │ │ │ │ +1F0630E2D1B621E6954038195D965B91FD974FA3F1B8B29D200A16CEBA645E2F │ │ │ │ │ +CEEE6FD49FBBD49E38AE67D4BFFCE91F1FC422554EC4409C5FA18D40FCD6D9B3 │ │ │ │ │ +2185ED1E0F98106D4339F086B05CA36E56EC22C60E2CE23F9C4CC403ACAD3F94 │ │ │ │ │ +4086B4DF6DFA0B7B4716417263E7B558535566AED2F6C2F9846A16D71A7930A7 │ │ │ │ │ +49232D3D16C4A01CF1A1998A06F40062ED329179A85668537C55D0BC24FC0010 │ │ │ │ │ +54DA83E2FC66B2A5D428E6A9BFC983253668C0ECE6CA36DBF97C4B7659D50842 │ │ │ │ │ +C65B36604840EEDA399B57E2DEFAC3E7FB031634CE33D04238F9854D2AAAF448 │ │ │ │ │ +34DA5F3BCCED3166FEEE82BB0BBA0A397CC2F95865CB52AABFF454D93B425809 │ │ │ │ │ +A26AC459F321FD23E2262FE816D06BAAECF32AAF167F84799AF80F9F88388D07 │ │ │ │ │ +0DB5FD57AFEE2850A8DFE977E6AE39CB3DC16DB1A163A583C86C6F775CE33521 │ │ │ │ │ +0081C0BBBAD6D30D26C66B28B38CEAC78FEA5FB3CC5853656B67C6D9D80EB30E │ │ │ │ │ +397558C9179AF5920F34DAB3F578DFCF0DBB137AED17D6325C23883E69EE4621 │ │ │ │ │ +34355A70C19EA68891E1CA937376901C85CDEE109F1665943E29A216DC00937A │ │ │ │ │ +B983A729A4654AD09187C0242D52FA4ADD0853EF4888864914D7D81C56578DD4 │ │ │ │ │ +3B51907032022E6E412D4F114675DEDCA8A9E85DC03A0B583FECD84432D15F70 │ │ │ │ │ +01F627BD6EC91F9FCFDA01BF40E1229B5F164309DBB641AD50970503DA2048C1 │ │ │ │ │ +DF8F36E8D252EE113F0B46677D9BAF376BAE18D74CFB0DBBD0C7E9D0A58BA3ED │ │ │ │ │ +1E5099CAE073EB5638617760AB57849893764EA9735173CD1EAB66884CEA7EE3 │ │ │ │ │ +8843327B2E145BD6FBB49102776B82BC511D109F8BE9E7E99DADABABEDC3CFD9 │ │ │ │ │ +393578FFD85907DFF2849E4CDE6FA4DEC7E1C150EBE4047FFB650F9548BE6D11 │ │ │ │ │ +0C51226A5436F18BF20A02E0F888F46B6AC3A8E8D927ECD3B5E095933AD3859F │ │ │ │ │ +5167C41D832EFCC4093BD2AFA7101AB430E57DAFC3590F05D3CBABB32BC203A0 │ │ │ │ │ +467B23BDB830487C9AA5B85BAC065F8538871B4180F8C4732E637DB090CFDE5A │ │ │ │ │ +3F4F2B5BFAFB848BAAD1A17CB076B34159601639BD93ECAB1214ACABF2C67FE2 │ │ │ │ │ +0658AA20B08681070FF56F1CC52144ABA8765D6E124D1CEA9BBA102808CE1BB2 │ │ │ │ │ +5EDF46BC7BBC2A5B49EE6EC28F5797A3969B057B21FCDBBD0E60848FF14F6CA3 │ │ │ │ │ +70F3060BDBB019B22722C99C7691760F013763B7FBEB62830AE215F195BF9F01 │ │ │ │ │ +21BF4377397E89574CFA47D123AA506A570A77BA6EB4AAB0B237A26154880293 │ │ │ │ │ +3952F832F72ECCB024F02385E5EE8566B165904B594E30D0700D033C6B429F6F │ │ │ │ │ +2A20BC774F442BC9CE29FCC81807C2768A8BC927A215558FBF36DC53F477F04A │ │ │ │ │ +41DA66E1A85B659EB761230977EAD7DA0150513D3323B143D4E2A61BCF03334C │ │ │ │ │ +C0EE3E1B06CFAF58ECC910BD81F0352B75FF1594D6A4EF504232D442174BE766 │ │ │ │ │ +0F8E703F97E21D25D4CD097549C31FEE7017C3916EFB02E7BF869172889827B6 │ │ │ │ │ +A48465EB7612BA3DBC6A9436C7167F149A25CE9F8E3F4F8DE3B5ADF6C0986CB3 │ │ │ │ │ +3A7E2DAB44AB489796461536F5F713017F2620AD03295CAE9285F08974AE0DF8 │ │ │ │ │ +D739260929619B509491AFF09C4CAEF9E65C2CA69470C907ECBF3AB6C955360D │ │ │ │ │ +05ABAC306DB51122A1ADC7EF0DD70FA299A45C505A83727D4598C86319EE9C06 │ │ │ │ │ +7218EFD4F40388354BCF1B79593D5AD221DF955D081F99F880E5CED07321AB3E │ │ │ │ │ +A2FCB8B05D54807D8E15E65B78DCE12989B9276350080C905DBB74CE9AA7E246 │ │ │ │ │ +5D3BAED292C562D4CF54617FCC6654496C7996D1ECE1EFF9258716AB763A12E6 │ │ │ │ │ +316E4C5587351A6DB011F58F6A15BC28BEBDC3836E0CB892807FEC228DC1B380 │ │ │ │ │ +92F7F42279F08D60F13D6A4CB425543C3644461461CBF6F27B6603F613D1FCF8 │ │ │ │ │ +A8410AD82D1498166AEB35D4125D7E2ADEAAB18BC04806AED53513F066E5F154 │ │ │ │ │ +3E13E863C50B9814EE2FB978D0D24A03FAF650CB6E2CADF1E6BE6BAF699AFC03 │ │ │ │ │ +E1A0EEB207B3B9A689ED5B373FE86686AD230BE6C18E1673DDA50E224B343EC5 │ │ │ │ │ +903BA0C8041C13607B50D5852AC7970B15C244E6EBA7D54B3086312CF04761D6 │ │ │ │ │ +7D3D75D51F20C371494AB81AB4A9838B20B483B851D01FEF41EA5C0B4755B964 │ │ │ │ │ +EB6E9B178051C556A010994EB88EAE641F4C1A0D7E0F98D5267E18AEF1AEA7E7 │ │ │ │ │ +9030A97DF89AFF621981C33B645FFB5F3BB2065A7661D11B26E0999561DF3580 │ │ │ │ │ +4A76A05DFAF8085525F8D5C01936F03C32E26E72569371C9EA3B8916F9DFC5FC │ │ │ │ │ +6A6F25A0FFDB981BA8B896393D75774D50828E6ADE903C45406E354703A4BC56 │ │ │ │ │ +2C49A47FEAC970DC433E3050C49F7FB945A9705BD8852D2D65D935F244D3B423 │ │ │ │ │ +EFAB84AAAAB8FBAFF50AFF372A533BCCEB5FC273DBADCF715776DF02A5DCBA9A │ │ │ │ │ +FBF265FAB4745D6475B33611EEE1EA95E7584E0BEEC7CA789AA69C8D03D6F8C0 │ │ │ │ │ +5B6844E2B901ACA560C0433B053D134866E567425174E47173679AAD4486A2D3 │ │ │ │ │ +369C29E4DD2CD6ACA1BE80ED8FF0A9C58A616D26E758BD8E6342624EC83FB590 │ │ │ │ │ +BD354B52B60BB054FAFE9AC63E1564FBC721FE8F276B0413EC89A2C85E5ED1B0 │ │ │ │ │ +3A9D83BE62A4488ADE7CE69971A8AF7E5862A4290EEF6F00D4171C7FFB360065 │ │ │ │ │ +92E72BF02BE27161AE0BB5516572A0BDC4F316FFB24B38484AC8D1FD4CD86062 │ │ │ │ │ +A2B5D03CF28C3A679C039A6EFDD4C9DA7E463AD60234C9F6BBEE48D87DD94D85 │ │ │ │ │ +842F495F3E25723718682CE4D6224CBBF4456F03077EDF736D65B9DDAB09470E │ │ │ │ │ +17742D82011FFA96BFE86B96E858F9352FCD20C3D46B77DBDEE54336EC2249EA │ │ │ │ │ +211F6DFFF5BEA1E5192BE1BAC0BDD5EDDB3D56C6F7C6E543561A0B39E5C1B04F │ │ │ │ │ +C683A7516B6E69D682455386DDA709929D621FA434D403E895AA0A77DBE1DFD2 │ │ │ │ │ +0D060DF82378880147ED97C6E8149686FA048710B113760AC1DA4512FF8556B3 │ │ │ │ │ +16E2447485B8C3CD58D0469C4A45FFB4CB0322BB284C02 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -4902,15 +4907,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 1[42 1[42 42 42 3[23 44[{}13 │ │ │ │ │ +12[37 2[46 42 26[54 11[23 1[42 2[42 2[42 42 42 3[23 44[{}14 │ │ │ │ │ 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 │ │ │ │ │ @@ -5060,25 +5065,26 @@ │ │ │ │ │ y Ff(\210)42 b Fl(symflag)24 b Fn(|)k(symmetry)f(\015ag)g(for)g │ │ │ │ │ Fh(A)301 5278 y Fe({)41 b Fn(0)27 b(\()p Fl(SPOOLES)p │ │ │ │ │ 804 5278 V 29 w(SYMMETRIC)p Fn(\))d({)k(symmetric)f(matrix)301 │ │ │ │ │ 5407 y Fe({)41 b Fn(1)27 b(\()p Fl(SPOOLES)p 804 5407 │ │ │ │ │ V 29 w(HERMITIAN)p Fn(\))d({)k(hermitian)f(matrix)1929 │ │ │ │ │ 5656 y(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fn(2)p 125 100 1228 4 v │ │ │ │ │ -1393 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(Jan)n(uary)f(16,)h(2024)p │ │ │ │ │ -2673 100 V 301 390 a Fe({)41 b Fn(2)27 b(\()p Fl(SPOOLES)p │ │ │ │ │ -804 390 27 4 v 29 w(NONSYMMETRIC)p Fn(\))c({)k(nonsymmetric)g(matrix) │ │ │ │ │ -125 559 y Ff(\210)42 b Fl(opflag)25 b Fn(|)i(op)r(eration)g(\015ag)g │ │ │ │ │ -(for)g(the)h(m)n(ultiply)301 728 y Fe({)41 b Fn(0)27 │ │ │ │ │ -b(\()p Fl(MMM)p 628 728 V 31 w(WITH)p 835 728 V 30 w(A)p │ │ │ │ │ -Fn(\))g(|)h(p)r(erform)f Fh(Y)42 b Fn(:=)22 b Fh(Y)37 │ │ │ │ │ -b Fn(+)18 b Fh(\013AX)301 862 y Fe({)41 b Fn(1)27 b(\()p │ │ │ │ │ -Fl(MMM)p 628 862 V 31 w(WITH)p 835 862 V 30 w(AT)p Fn(\))g(|)g(p)r │ │ │ │ │ -(erform)g Fh(Y)42 b Fn(:=)23 b Fh(Y)37 b Fn(+)18 b Fh(\013A)1915 │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fn(2)p 125 100 1210 4 v │ │ │ │ │ +1375 w Fl(MPI)27 b Fd(:)h Fm(DRAFT)f Fd(F)-7 b(ebruary)26 │ │ │ │ │ +b(18,)h(2025)p 2690 100 V 301 390 a Fe({)41 b Fn(2)27 │ │ │ │ │ +b(\()p Fl(SPOOLES)p 804 390 27 4 v 29 w(NONSYMMETRIC)p │ │ │ │ │ +Fn(\))c({)k(nonsymmetric)g(matrix)125 559 y Ff(\210)42 │ │ │ │ │ +b Fl(opflag)25 b Fn(|)i(op)r(eration)g(\015ag)g(for)g(the)h(m)n │ │ │ │ │ +(ultiply)301 728 y Fe({)41 b Fn(0)27 b(\()p Fl(MMM)p │ │ │ │ │ +628 728 V 31 w(WITH)p 835 728 V 30 w(A)p Fn(\))g(|)h(p)r(erform)f │ │ │ │ │ +Fh(Y)42 b Fn(:=)22 b Fh(Y)37 b Fn(+)18 b Fh(\013AX)301 │ │ │ │ │ +862 y Fe({)41 b Fn(1)27 b(\()p Fl(MMM)p 628 862 V 31 │ │ │ │ │ +w(WITH)p 835 862 V 30 w(AT)p Fn(\))g(|)g(p)r(erform)g │ │ │ │ │ +Fh(Y)42 b Fn(:=)23 b Fh(Y)37 b Fn(+)18 b Fh(\013A)1915 │ │ │ │ │ 832 y Fg(T)1968 862 y Fh(X)301 996 y Fe({)41 b Fn(2)27 │ │ │ │ │ b(\()p Fl(MMM)p 628 996 V 31 w(WITH)p 835 996 V 30 w(AH)p │ │ │ │ │ Fn(\))g(|)g(p)r(erform)g Fh(Y)42 b Fn(:=)23 b Fh(Y)37 │ │ │ │ │ b Fn(+)18 b Fh(\013A)1915 966 y Fg(H)1979 996 y Fh(X)125 │ │ │ │ │ 1165 y Ff(\210)42 b Fl(IV)g(*XownedIV)24 b Fn(|)k(list)g(of)f(ro)n(ws)f │ │ │ │ │ (of)i Fh(X)34 b Fn(that)28 b(are)e(o)n(wned)h(b)n(y)h(this)g(pro)r │ │ │ │ │ (cessor,)d(these)j(form)f(the)h(ro)n(ws)e(of)i Fh(X)3645 │ │ │ │ │ @@ -5150,17 +5156,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 1228 4 v 1393 100 a Fl(MPI)27 │ │ │ │ │ -b Fd(:)h Fm(DRAFT)110 b Fd(Jan)n(uary)25 b(16,)i(2024)p │ │ │ │ │ -2633 100 V 1228 w Fn(3)556 377 y Fl(stats[0])97 b Fn(|)i(#)28 │ │ │ │ │ +TeXDict begin 3 2 bop 83 100 1210 4 v 1376 100 a Fl(MPI)26 │ │ │ │ │ +b Fd(:)i Fm(DRAFT)110 b Fd(F)-7 b(ebruary)27 b(18,)g(2025)p │ │ │ │ │ +2651 100 V 1210 w Fn(3)556 377 y Fl(stats[0])97 b Fn(|)i(#)28 │ │ │ │ │ b(of)g(messages)e(sen)n(t)344 b Fl(stats[1])96 b Fn(|)k(#)28 │ │ │ │ │ b(of)f(b)n(ytes)g(sen)n(t)556 477 y Fl(stats[2])97 b │ │ │ │ │ Fn(|)i(#)28 b(of)g(messages)e(receiv)n(ed)198 b Fl(stats[3])96 │ │ │ │ │ b Fn(|)k(#)28 b(of)f(b)n(ytes)g(receiv)n(ed)208 711 y(Note,)g(the)h(v) │ │ │ │ │ -5 b(alues)27 b(in)h Fl(stats[])c Fn(are)j Fm(incr)l(emente)l(d)p │ │ │ │ │ Fn(,)g(i.e.,)h(the)g Fl(stats[])c Fn(v)n(ector)i(is)h(not)h(zero)r(ed)e │ │ │ │ │ (at)i(the)g(start)e(of)i(the)208 810 y(metho)r(d,)g(and)f(so)g(can)g(b) │ │ │ │ │ @@ -5258,27 +5264,28 @@ │ │ │ │ │ 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 1228 4 v │ │ │ │ │ -1393 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(Jan)n(uary)f(16,)h(2024)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 │ │ │ │ │ -731 y(error)25 b(message)h(is)i(prin)n(ted)f(and)h(the)g(program)d │ │ │ │ │ -(exits.)101 916 y(5.)42 b Fl(InpMtx)f(*)i(InpMtx_MPI_split)o(Fr)o(omG)o │ │ │ │ │ -(lo)o(ba)o(l)38 b(\()43 b(InpMtx)e(*Aglobal,)f(InpMtx)h(*Alocal,)1864 │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fn(4)p 125 100 1210 4 v │ │ │ │ │ +1375 w Fl(MPI)27 b Fd(:)h Fm(DRAFT)f Fd(F)-7 b(ebruary)26 │ │ │ │ │ +b(18,)h(2025)p 2690 100 V 208 390 a Fn(Note,)g(the)h(v)-5 │ │ │ │ │ +b(alues)27 b(in)h Fl(stats[])c Fn(are)j Fm(incr)l(emente)l(d)p │ │ │ │ │ +Fn(,)g(i.e.,)h(the)g Fl(stats[])c Fn(v)n(ector)i(is)h(not)h(zero)r(ed)e │ │ │ │ │ +(at)i(the)g(start)e(of)i(the)208 490 y(metho)r(d,)g(and)f(so)g(can)g(b) │ │ │ │ │ +r(e)h(used)g(to)f(accum)n(ulated)g(information)g(with)h(m)n(ultiple)h │ │ │ │ │ +(calls.)208 632 y Fm(Err)l(or)38 b(che)l(cking:)55 b │ │ │ │ │ +Fn(If)37 b Fl(firsttag)j(<)j(0)36 b Fn(or)f Fl(firsttag)40 │ │ │ │ │ +b(+)j(nproc)35 b Fn(is)g(larger)g(than)h(the)g(largest)f(a)n(v)-5 │ │ │ │ │ +b(ailable)35 b(tag,)i(an)208 731 y(error)25 b(message)h(is)i(prin)n │ │ │ │ │ +(ted)f(and)h(the)g(program)d(exits.)101 916 y(5.)42 b │ │ │ │ │ +Fl(InpMtx)f(*)i(InpMtx_MPI_split)o(Fr)o(omG)o(lo)o(ba)o(l)38 │ │ │ │ │ +b(\()43 b(InpMtx)e(*Aglobal,)f(InpMtx)h(*Alocal,)1864 │ │ │ │ │ 1015 y(IV)i(*mapIV,)d(int)j(root,)e(int)h(stats[],)f(int)h(msglvl,)1864 │ │ │ │ │ 1115 y(FILE)g(*msgFile,)e(int)i(firsttag,)e(MPI_Comm)g(comm)i(\))h(;) │ │ │ │ │ 208 1257 y Fn(This)30 b(metho)r(d)h(is)f(used)g(when)h(the)f │ │ │ │ │ Fl(Aglobal)e(InpMtx)g Fn(matrix)i(ob)5 b(ject)30 b(is)g(o)n(wned)g(b)n │ │ │ │ │ (y)g(pro)r(cessor)e Fl(root)h Fn(and)h(redis-)208 1357 │ │ │ │ │ y(tributed)e(to)f(the)h(other)f(pro)r(cessors.)208 1499 │ │ │ │ │ y Fl(Aglobal)20 b Fn(is)j(p)r(ertinen)n(t)h(only)f(to)g(pro)r(cessor)e │ │ │ │ │ @@ -5356,17 +5363,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 1228 4 v 1393 100 a Fl(MPI)27 │ │ │ │ │ -b Fd(:)h Fm(DRAFT)110 b Fd(Jan)n(uary)25 b(16,)i(2024)p │ │ │ │ │ -2633 100 V 1228 w Fn(5)0 390 y Fj(1.2.2)112 b(Gather)38 │ │ │ │ │ +TeXDict begin 5 4 bop 83 100 1210 4 v 1376 100 a Fl(MPI)26 │ │ │ │ │ +b Fd(:)i Fm(DRAFT)110 b Fd(F)-7 b(ebruary)27 b(18,)g(2025)p │ │ │ │ │ +2651 100 V 1210 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 │ │ │ │ │ @@ -5448,24 +5455,25 @@ │ │ │ │ │ 5108 y(FILE)g(*msgFile,)e(int)i(firsttag,)e(MPI_Comm)g(comm)i(\))h(;) │ │ │ │ │ 208 5208 y(IVL)f(*)h(SymbFac_MPI_init)o(Fro)o(mP)o(enc)o(il)37 │ │ │ │ │ b(\()43 b(ETree)f(*etree,)e(IV)j(*frontOwnersIV,)1733 │ │ │ │ │ 5308 y(Pencil)e(*pencil,)f(int)j(stats[],)d(int)i(msglvl,)1733 │ │ │ │ │ 5407 y(FILE)g(*msgFile,)e(int)i(firsttag,)e(MPI_Comm)g(comm)i(\))h(;)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 6 6 │ │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fn(6)p 125 100 1228 4 v │ │ │ │ │ -1393 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(Jan)n(uary)f(16,)h(2024)p │ │ │ │ │ -2673 100 V 208 390 a Fn(These)19 b(metho)r(ds)h(are)e(used)i(in)g │ │ │ │ │ -(place)f(of)h(the)g Fl(Symbfac)p 1907 390 27 4 v 28 w(initFrom)p │ │ │ │ │ -Fb(f)p Fl(InpMtx,P)o(en)o(cil)o Fb(g)p Fl(\()o(\))14 │ │ │ │ │ -b Fn(metho)r(ds)19 b(to)h(compute)g(the)208 490 y(sym)n(b)r(olic)27 │ │ │ │ │ -b(factorization.)37 b(The)28 b Fl(ETree)e Fn(ob)5 b(ject)28 │ │ │ │ │ -b(is)g(assumed)f(to)h(b)r(e)h(replicated)e(o)n(v)n(er)f(the)j(pro)r │ │ │ │ │ -(cesses.)36 b(The)28 b Fl(InpMtx)208 589 y Fn(and)i Fl(Pencil)e │ │ │ │ │ -Fn(ob)5 b(jects)30 b(are)f(partitioned)h(among)f(the)i(pro)r(cesses.)44 │ │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fn(6)p 125 100 1210 4 v │ │ │ │ │ +1375 w Fl(MPI)27 b Fd(:)h Fm(DRAFT)f Fd(F)-7 b(ebruary)26 │ │ │ │ │ +b(18,)h(2025)p 2690 100 V 208 390 a Fn(These)19 b(metho)r(ds)h(are)e │ │ │ │ │ +(used)i(in)g(place)f(of)h(the)g Fl(Symbfac)p 1907 390 │ │ │ │ │ +27 4 v 28 w(initFrom)p Fb(f)p Fl(InpMtx,P)o(en)o(cil)o │ │ │ │ │ +Fb(g)p Fl(\()o(\))14 b Fn(metho)r(ds)19 b(to)h(compute)g(the)208 │ │ │ │ │ +490 y(sym)n(b)r(olic)27 b(factorization.)37 b(The)28 │ │ │ │ │ +b Fl(ETree)e Fn(ob)5 b(ject)28 b(is)g(assumed)f(to)h(b)r(e)h │ │ │ │ │ +(replicated)e(o)n(v)n(er)f(the)j(pro)r(cesses.)36 b(The)28 │ │ │ │ │ +b Fl(InpMtx)208 589 y Fn(and)i Fl(Pencil)e Fn(ob)5 b(jects)30 │ │ │ │ │ +b(are)f(partitioned)h(among)f(the)i(pro)r(cesses.)44 │ │ │ │ │ b(Therefore,)30 b(to)g(compute)h(the)f Fl(IVL)g Fn(ob)5 │ │ │ │ │ b(ject)30 b(that)208 689 y(con)n(tains)g(the)h(sym)n(b)r(olic)g │ │ │ │ │ (factorization)f(is)h(a)g(distributed,)h(co)r(op)r(erativ)n(e)e(pro)r │ │ │ │ │ (cess.)46 b(A)n(t)32 b(the)f(end)h(of)f(the)h(sym)n(b)r(olic)208 │ │ │ │ │ 789 y(factorization,)c(eac)n(h)h(pro)r(cess)g(will)h(o)n(wn)f(a)g(p)r │ │ │ │ │ (ortion)g(of)h(the)g Fl(IVL)f Fn(ob)5 b(ject.)43 b(The)29 │ │ │ │ │ b Fl(IVL)g Fn(ob)5 b(ject)29 b(is)h(neither)g(replicated)208 │ │ │ │ │ @@ -5546,17 +5554,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 1228 4 v 1393 100 a Fl(MPI)27 │ │ │ │ │ -b Fd(:)h Fm(DRAFT)110 b Fd(Jan)n(uary)25 b(16,)i(2024)p │ │ │ │ │ -2633 100 V 1228 w Fn(7)208 390 y(On)g(return,)g(the)h │ │ │ │ │ +TeXDict begin 7 6 bop 83 100 1210 4 v 1376 100 a Fl(MPI)26 │ │ │ │ │ +b Fd(:)i Fm(DRAFT)110 b Fd(F)-7 b(ebruary)27 b(18,)g(2025)p │ │ │ │ │ +2651 100 V 1210 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 │ │ │ │ │ @@ -5638,45 +5646,45 @@ │ │ │ │ │ 5308 y Fn(After)19 b(a)g(factorization)f(with)i(piv)n(oting,)g(the)f │ │ │ │ │ Fl(frontsizesIV)c Fn(ob)5 b(ject)19 b(needs)g(to)g(b)r(e)h(made)f │ │ │ │ │ (global)f(on)h(eac)n(h)f(pro)r(cessor.)208 5407 y(This)26 │ │ │ │ │ b(metho)r(ds)h(tak)n(es)e(the)i(individual)f(en)n(tries)g(of)g(an)g │ │ │ │ │ Fl(IV)g Fn(ob)5 b(ject)26 b(whose)g(o)n(wners)f(are)g(sp)r(eci\014ed)h │ │ │ │ │ (b)n(y)h(the)f Fl(ownersIV)p eop end │ │ │ │ │ %%Page: 8 8 │ │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fn(8)p 125 100 1228 4 v │ │ │ │ │ -1393 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(Jan)n(uary)f(16,)h(2024)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 │ │ │ │ │ -Fl(NULL)p Fn(,)g(or)g(if)h Fl(firsttag)41 b(<)i(0)25 │ │ │ │ │ -b Fn(or)g Fl(firsttag)41 b(+)i(nproc)p Fn(,)24 b(is)i(larger)208 │ │ │ │ │ -840 y(than)h(the)g(largest)f(a)n(v)-5 b(ailable)26 b(tag,)h(or)f(if)h │ │ │ │ │ -Fl(msglvl)42 b(>)h(0)27 b Fn(and)g Fl(msgFile)d Fn(is)j │ │ │ │ │ -Fl(NULL)p Fn(,)e(an)i(error)e(message)h(is)h(prin)n(ted)g(and)208 │ │ │ │ │ -939 y(the)h(program)d(exits.)101 1141 y(4.)42 b Fl(void)f │ │ │ │ │ -(IVL_MPI_allgather)c(\()43 b(IVL)g(*ivl,)e(IV)i(*ownersIV,)c(int)k │ │ │ │ │ -(stats[],)d(int)i(msglvl,)1297 1241 y(FILE)g(*msgFile,)e(int)i │ │ │ │ │ -(firsttag,)e(MPI_Comm)g(comm)i(\))i(;)208 1391 y Fn(When)d(the)g │ │ │ │ │ -Fl(FrontMtx)d Fn(ob)5 b(ject)41 b(is)g(split)g(in)n(to)g(submatrices,)i │ │ │ │ │ -(eac)n(h)e(pro)r(cessor)d(accum)n(ulates)i(the)i(structure)e(of)208 │ │ │ │ │ -1491 y(the)34 b(blo)r(c)n(k)f(matrix)g(for)g(the)h(fron)n(ts)f(its)g(o) │ │ │ │ │ -n(wns.)55 b(This)33 b(structure)g(m)n(ust)h(b)r(e)g(global)e(to)i(all)f │ │ │ │ │ -(pro)r(cessors)e(b)r(efore)j(the)208 1591 y(submatrix)28 │ │ │ │ │ -b(map)h(can)f(b)r(e)h(computed.)41 b(This)29 b(metho)r(d)g(tak)n(es)f │ │ │ │ │ -(a)h Fm(p)l(artitione)l(d)h Fl(IVL)d Fn(ob)5 b(ject)29 │ │ │ │ │ -b(and)g(comm)n(unicates)f(the)208 1690 y(en)n(tries)33 │ │ │ │ │ -b(among)h(the)g(pro)r(cessors)e(un)n(til)j(the)g(global)e │ │ │ │ │ -Fl(IVL)g Fn(ob)5 b(ject)34 b(is)h(presen)n(t)f(on)g(eac)n(h.)56 │ │ │ │ │ -b(Whic)n(h)35 b(pro)r(cessor)d(o)n(wns)208 1790 y(what)e(lists)g(of)g │ │ │ │ │ -(the)g Fl(IVL)f Fn(ob)5 b(ject)30 b(is)g(giv)n(en)f(b)n(y)h(the)h │ │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fn(8)p 125 100 1210 4 v │ │ │ │ │ +1375 w Fl(MPI)27 b Fd(:)h Fm(DRAFT)f Fd(F)-7 b(ebruary)26 │ │ │ │ │ +b(18,)h(2025)p 2690 100 V 208 390 a Fn(ob)5 b(ject,)33 │ │ │ │ │ +b(and)g(comm)n(unicates)f(the)h(en)n(tries)f(around)g(the)h(pro)r │ │ │ │ │ +(cessors)e(un)n(til)i(the)g(global)f Fl(IV)g Fn(ob)5 │ │ │ │ │ +b(ject)33 b(is)f(presen)n(t)g(on)208 490 y(eac)n(h.)h(The)20 │ │ │ │ │ +b(messages)e(that)i(will)g(b)r(e)g(sen)n(t)f(require)g(at)g(most)h │ │ │ │ │ +Fl(nproc)d Fn(consecutiv)n(e)i(tags)g(|)h(the)g(\014rst)f(is)h(the)g │ │ │ │ │ +(parameter)208 589 y Fl(firsttag)p Fn(.)208 740 y Fm(Err)l(or)28 │ │ │ │ │ +b(che)l(cking:)38 b Fn(If)26 b Fl(iv)p Fn(,)g Fl(ownersIV)d │ │ │ │ │ +Fn(or)i Fl(stats)f Fn(is)h Fl(NULL)p Fn(,)g(or)g(if)h │ │ │ │ │ +Fl(firsttag)41 b(<)i(0)25 b Fn(or)g Fl(firsttag)41 b(+)i(nproc)p │ │ │ │ │ +Fn(,)24 b(is)i(larger)208 840 y(than)h(the)g(largest)f(a)n(v)-5 │ │ │ │ │ +b(ailable)26 b(tag,)h(or)f(if)h Fl(msglvl)42 b(>)h(0)27 │ │ │ │ │ +b Fn(and)g Fl(msgFile)d Fn(is)j Fl(NULL)p Fn(,)e(an)i(error)e(message)h │ │ │ │ │ +(is)h(prin)n(ted)g(and)208 939 y(the)h(program)d(exits.)101 │ │ │ │ │ +1141 y(4.)42 b Fl(void)f(IVL_MPI_allgather)c(\()43 b(IVL)g(*ivl,)e(IV)i │ │ │ │ │ +(*ownersIV,)c(int)k(stats[],)d(int)i(msglvl,)1297 1241 │ │ │ │ │ +y(FILE)g(*msgFile,)e(int)i(firsttag,)e(MPI_Comm)g(comm)i(\))i(;)208 │ │ │ │ │ +1391 y Fn(When)d(the)g Fl(FrontMtx)d Fn(ob)5 b(ject)41 │ │ │ │ │ +b(is)g(split)g(in)n(to)g(submatrices,)i(eac)n(h)e(pro)r(cessor)d(accum) │ │ │ │ │ +n(ulates)i(the)i(structure)e(of)208 1491 y(the)34 b(blo)r(c)n(k)f │ │ │ │ │ +(matrix)g(for)g(the)h(fron)n(ts)f(its)g(o)n(wns.)55 b(This)33 │ │ │ │ │ +b(structure)g(m)n(ust)h(b)r(e)g(global)e(to)i(all)f(pro)r(cessors)e(b)r │ │ │ │ │ +(efore)j(the)208 1591 y(submatrix)28 b(map)h(can)f(b)r(e)h(computed.)41 │ │ │ │ │ +b(This)29 b(metho)r(d)g(tak)n(es)f(a)h Fm(p)l(artitione)l(d)h │ │ │ │ │ +Fl(IVL)d Fn(ob)5 b(ject)29 b(and)g(comm)n(unicates)f(the)208 │ │ │ │ │ +1690 y(en)n(tries)33 b(among)h(the)g(pro)r(cessors)e(un)n(til)j(the)g │ │ │ │ │ +(global)e Fl(IVL)g Fn(ob)5 b(ject)34 b(is)h(presen)n(t)f(on)g(eac)n(h.) │ │ │ │ │ +56 b(Whic)n(h)35 b(pro)r(cessor)d(o)n(wns)208 1790 y(what)e(lists)g(of) │ │ │ │ │ +g(the)g Fl(IVL)f Fn(ob)5 b(ject)30 b(is)g(giv)n(en)f(b)n(y)h(the)h │ │ │ │ │ Fl(ownersIV)26 b Fn(ob)5 b(ject.)45 b(The)30 b(messages)e(that)i(will)h │ │ │ │ │ (b)r(e)f(sen)n(t)g(require)208 1890 y(at)d(most)g Fl(nproc)f │ │ │ │ │ Fn(consecutiv)n(e)h(tags)f(|)i(the)g(\014rst)f(is)h(the)g(parameter)e │ │ │ │ │ Fl(firsttag)p Fn(.)208 2040 y Fm(Err)l(or)f(che)l(cking:)37 │ │ │ │ │ b Fn(If)23 b Fl(ivl)p Fn(,)g Fl(ownersIV)c Fn(or)j Fl(stats)f │ │ │ │ │ Fn(is)i Fl(NULL)p Fn(,)e(or)h(if)h Fl(firsttag)40 b(<)k(0)22 │ │ │ │ │ b Fn(or)g Fl(firsttag)40 b(+)j(nproc)p Fn(,)22 b(is)h(larger)208 │ │ │ │ │ @@ -5724,17 +5732,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 1228 4 v 1393 100 a Fl(MPI)27 │ │ │ │ │ -b Fd(:)h Fm(DRAFT)110 b Fd(Jan)n(uary)25 b(16,)i(2024)p │ │ │ │ │ -2633 100 V 1228 w Fn(9)0 390 y Fj(1.2.7)112 b(Matrix-matrix)39 │ │ │ │ │ +TeXDict begin 9 8 bop 83 100 1210 4 v 1376 100 a Fl(MPI)26 │ │ │ │ │ +b Fd(:)i Fm(DRAFT)110 b Fd(F)-7 b(ebruary)27 b(18,)g(2025)p │ │ │ │ │ +2651 100 V 1210 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 │ │ │ │ │ @@ -5809,28 +5817,29 @@ │ │ │ │ │ (in)g(the)h Fl(info)e Fn(ob)5 b(ject.)50 b(These)32 b(are)f(serial)208 │ │ │ │ │ 5270 y(metho)r(ds,)c(p)r(erformed)h(indep)r(enden)n(tly)g(on)f(eac)n(h) │ │ │ │ │ g(pro)r(cessor.)208 5407 y Fm(Err)l(or)j(che)l(cking:)38 │ │ │ │ │ b Fn(If)28 b Fl(info)e Fn(or)h Fl(A)g Fn(is)h Fl(NULL)p │ │ │ │ │ Fn(,)e(an)h(error)f(message)g(is)i(prin)n(ted)f(and)h(the)g(program)d │ │ │ │ │ (exits.)p eop end │ │ │ │ │ %%Page: 10 10 │ │ │ │ │ -TeXDict begin 10 9 bop 0 100 a Fn(10)p 166 100 1207 4 │ │ │ │ │ -v 1372 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(Jan)n(uary)f(16,)g(2024)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 │ │ │ │ │ -723 y Fh(Y)k Fn(:=)28 b Fh(Y)39 b Fn(+)21 b Fh(\013A)706 │ │ │ │ │ -692 y Fg(H)769 723 y Fh(X)7 b Fn(,)31 b(dep)r(ending)g(on)g(ho)n(w)f │ │ │ │ │ -(the)h Fl(info)e Fn(ob)5 b(ject)30 b(w)n(as)g(set)h(up.)46 │ │ │ │ │ -b(NOTE:)30 b Fl(A)h Fn(m)n(ust)f(ha)n(v)n(e)g(lo)r(cal)g(indices,)208 │ │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fn(10)p 166 100 1190 4 │ │ │ │ │ +v 1354 w Fl(MPI)27 b Fd(:)g Fm(DRAFT)h Fd(F)-7 b(ebruary)26 │ │ │ │ │ +b(18,)h(2025)p 2711 100 V 101 390 a Fn(3.)42 b Fl(void)f │ │ │ │ │ +(MatMul_MPI_mmm)d(\()43 b(MatMulInfo)d(*info,)h(DenseMtx)f(*Yloc,)h │ │ │ │ │ +(double)g(alpha[],)g(InpMtx)g(*A,)600 490 y(DenseMtx)f(*Xloc,)h(int)i │ │ │ │ │ +(stats[],)d(int)i(msglvl,)f(FILE)h(*msgFile,)e(MPI_Comm)g(comm\))h(;) │ │ │ │ │ +208 623 y Fn(This)35 b(metho)r(d)g(computes)g(a)g(distributed)h │ │ │ │ │ +(matrix-matrix)e(m)n(ultiply)h Fh(Y)55 b Fn(:=)35 b Fh(Y)42 │ │ │ │ │ +b Fn(+)23 b Fh(\013AX)7 b Fn(,)37 b Fh(Y)55 b Fn(:=)35 │ │ │ │ │ +b Fh(Y)42 b Fn(+)23 b Fh(\013A)3662 593 y Fg(T)3715 623 │ │ │ │ │ +y Fh(X)42 b Fn(or)208 723 y Fh(Y)k Fn(:=)28 b Fh(Y)39 │ │ │ │ │ +b Fn(+)21 b Fh(\013A)706 692 y Fg(H)769 723 y Fh(X)7 │ │ │ │ │ +b Fn(,)31 b(dep)r(ending)g(on)g(ho)n(w)f(the)h Fl(info)e │ │ │ │ │ +Fn(ob)5 b(ject)30 b(w)n(as)g(set)h(up.)46 b(NOTE:)30 │ │ │ │ │ +b Fl(A)h Fn(m)n(ust)f(ha)n(v)n(e)g(lo)r(cal)g(indices,)208 │ │ │ │ │ 822 y(use)i Fl(MatMul)p 625 822 27 4 v 29 w(setLocalIndices\()o(\))27 │ │ │ │ │ b Fn(to)32 b(con)n(v)n(ert)f(from)i(global)e(to)i(lo)r(cal)f(indices.) │ │ │ │ │ 52 b Fl(Xloc)31 b Fn(and)i Fl(Yloc)e Fn(con)n(tain)h(the)208 │ │ │ │ │ 922 y(o)n(wned)27 b(ro)n(ws)f(of)h Fh(X)34 b Fn(and)28 │ │ │ │ │ b Fh(Y)18 b Fn(,)28 b(resp)r(ectiv)n(ely)-7 b(.)208 1055 │ │ │ │ │ y(On)27 b(return,)g(the)h(follo)n(wing)f(statistics)g(will)h(ha)n(v)n │ │ │ │ │ (e)e(b)r(een)i(added.)556 1249 y Fl(stats[0])97 b Fn(|)i(#)28 │ │ │ │ │ @@ -5899,17 +5908,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 1207 4 v 1373 100 a Fl(MPI)26 │ │ │ │ │ -b Fd(:)i Fm(DRAFT)110 b Fd(Jan)n(uary)26 b(16,)g(2024)p │ │ │ │ │ -2612 100 V 1207 w Fn(11)0 390 y Fj(1.2.9)112 b(Utilit)m(y)38 │ │ │ │ │ +TeXDict begin 11 10 bop 83 100 1190 4 v 1355 100 a Fl(MPI)27 │ │ │ │ │ +b Fd(:)g Fm(DRAFT)111 b Fd(F)-7 b(ebruary)26 b(18,)h(2025)p │ │ │ │ │ +2630 100 V 1190 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 │ │ │ │ │ @@ -5993,24 +6002,25 @@ │ │ │ │ │ y Fn(con)n(tains)c(the)i(lists)g(of)f(v)n(ertices)g(this)h(pro)r │ │ │ │ │ (cessor)d(m)n(ust)j(send)f(to)h(all)f(others.)208 5308 │ │ │ │ │ y(This)g(metho)r(d)i(uses)e(tags)g(in)i(the)f(range)e │ │ │ │ │ Fl([tag,tag+nproc-1\))o Fn(.)32 b(On)c(return,)f(the)i(follo)n(wing)e │ │ │ │ │ (statistics)g(will)h(ha)n(v)n(e)208 5407 y(b)r(een)g(added.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 12 12 │ │ │ │ │ -TeXDict begin 12 11 bop 0 100 a Fn(12)p 166 100 1207 │ │ │ │ │ -4 v 1372 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(Jan)n(uary)f(16,)g(2024)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 │ │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fn(12)p 166 100 1190 │ │ │ │ │ +4 v 1354 w Fl(MPI)27 b Fd(:)g Fm(DRAFT)h Fd(F)-7 b(ebruary)26 │ │ │ │ │ +b(18,)h(2025)p 2711 100 V 556 377 a Fl(stats[0])97 b │ │ │ │ │ +Fn(|)i(#)28 b(of)g(messages)e(sen)n(t)344 b Fl(stats[1])96 │ │ │ │ │ +b Fn(|)k(#)28 b(of)f(b)n(ytes)g(sen)n(t)556 477 y Fl(stats[2])97 │ │ │ │ │ +b Fn(|)i(#)28 b(of)g(messages)e(receiv)n(ed)198 b Fl(stats[3])96 │ │ │ │ │ +b Fn(|)k(#)28 b(of)f(b)n(ytes)g(receiv)n(ed)208 688 y(This)g(metho)r(d) │ │ │ │ │ +h(is)g Fm(safe)g Fn(in)g(the)g(sense)f(that)h(it)g(uses)f(only)h │ │ │ │ │ +Fl(MPI)p 2162 688 27 4 v 30 w(Sendrecv\(\))p Fn(.)208 │ │ │ │ │ +829 y Fm(Err)l(or)35 b(che)l(cking:)50 b Fn(If)34 b Fl(sendIVL)c │ │ │ │ │ +Fn(or)i Fl(stats)f Fn(is)j Fl(NULL)p Fn(,)d(or)i(if)g │ │ │ │ │ Fl(msglvl)41 b(>)j(0)33 b Fn(and)g Fl(msgFile)d Fn(is)j │ │ │ │ │ Fl(NULL)p Fn(,)f(or)g(if)i Fl(tag)42 b(<)h(0)208 928 │ │ │ │ │ y Fn(or)28 b Fl(tag)43 b(+)g(nproc)27 b Fn(is)j(larger)e(than)h(the)h │ │ │ │ │ (largest)f(a)n(v)-5 b(ailable)28 b(tag,)h(an)h(error)d(message)i(is)g │ │ │ │ │ (prin)n(ted)h(and)f(the)h(program)208 1028 y(exits.)101 │ │ │ │ │ 1210 y(5.)42 b Fl(void)f(*)j(makeSendRecvIVL)o(s)38 b(\()43 │ │ │ │ │ b(IV)g(*supportedIV,)38 b(IV)43 b(*globalmapIV,)38 b(IVL)k(*sendIVL,)e │ │ │ │ │ @@ -6072,17 +6082,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 1207 4 v 1373 100 a Fl(MPI)26 │ │ │ │ │ -b Fd(:)i Fm(DRAFT)110 b Fd(Jan)n(uary)26 b(16,)g(2024)p │ │ │ │ │ -2612 100 V 1207 w Fn(13)208 390 y(where)k Fl(neqns)g │ │ │ │ │ +TeXDict begin 13 12 bop 83 100 1190 4 v 1355 100 a Fl(MPI)27 │ │ │ │ │ +b Fd(:)g Fm(DRAFT)111 b Fd(F)-7 b(ebruary)26 b(18,)h(2025)p │ │ │ │ │ +2630 100 V 1190 w Fn(13)208 390 y(where)j Fl(neqns)g │ │ │ │ │ Fn(is)h(the)h(global)e(n)n(um)n(b)r(er)i(of)f(equations)g(and)g │ │ │ │ │ Fl(nent)f Fn(is)h(the)h(n)n(um)n(b)r(er)f(of)h(en)n(tries)e(in)i(this)g │ │ │ │ │ (\014le.)49 b(There)208 490 y(follo)n(ws)22 b Fl(nent)h │ │ │ │ │ Fn(lines,)h(eac)n(h)f(con)n(taining)g(a)g(ro)n(w)g(index,)i(a)e(column) │ │ │ │ │ h(index)g(and)f(one)h(or)f(t)n(w)n(o)g(\015oating)g(p)r(oin)n(t)h(n)n │ │ │ │ │ (um)n(b)r(ers,)208 589 y(one)j(if)h(real,)f(t)n(w)n(o)f(if)j(complex.) │ │ │ │ │ 36 b(The)28 b(format)f(for)g(the)h(righ)n(t)f(hand)g(side)h(\014le)f │ │ │ │ │ @@ -6157,27 +6167,27 @@ │ │ │ │ │ y Fl(nrow)i Fn(lines,)i(eac)n(h)f(con)n(taining)g(a)h(ro)n(w)f(index)h │ │ │ │ │ (and)g(either)g Fl(nrhs)e Fn(or)i Fl(2*nrhs)d Fn(\015oating)i(p)r(oin)n │ │ │ │ │ (t)i(n)n(um)n(b)r(ers,)e(the)i(\014rst)f(if)208 5407 │ │ │ │ │ y(real,)e(the)i(second)f(if)h(complex.)37 b(Use)27 b(the)h(script)g │ │ │ │ │ (\014le)f Fl(do)p 1997 5407 27 4 v 31 w(patchAndGo)d │ │ │ │ │ Fn(for)j(testing.)p eop end │ │ │ │ │ %%Page: 14 14 │ │ │ │ │ -TeXDict begin 14 13 bop 0 100 a Fn(14)p 166 100 1207 │ │ │ │ │ -4 v 1372 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(Jan)n(uary)f(16,)g(2024)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 │ │ │ │ │ -(output)h(data.)307 766 y Ff(\210)42 b Fn(The)28 b Fl(type)e │ │ │ │ │ -Fn(parameter)g(sp)r(eci\014es)h(a)h(real)e(or)h(complex)g(linear)g │ │ │ │ │ -(system.)456 904 y Fe({)41 b Fl(type)h(=)i(1)f(\(SPOOLES)p │ │ │ │ │ +TeXDict begin 14 13 bop 0 100 a Fn(14)p 166 100 1190 │ │ │ │ │ +4 v 1354 w Fl(MPI)27 b Fd(:)g Fm(DRAFT)h Fd(F)-7 b(ebruary)26 │ │ │ │ │ +b(18,)h(2025)p 2711 100 V 307 390 a Ff(\210)42 b Fn(The)23 │ │ │ │ │ +b Fl(msglvl)e Fn(parameter)g(determines)i(the)h(amoun)n(t)e(of)h │ │ │ │ │ +(output.)36 b(Use)23 b Fl(msglvl)41 b(=)i(1)23 b Fn(for)g(just)g │ │ │ │ │ +(timing)g(output.)307 528 y Ff(\210)42 b Fn(The)32 b │ │ │ │ │ +Fl(msgFile)c Fn(parameter)i(determines)h(the)h(message)e(\014le)i(|)f │ │ │ │ │ +(if)h Fl(msgFile)d Fn(is)i Fl(stdout)p Fn(,)f(then)i(the)g(message)390 │ │ │ │ │ +628 y(\014le)c(is)f Fm(stdout)p Fn(,)h(otherwise)e(a)i(\014le)f(is)h │ │ │ │ │ +(op)r(ened)f(with)i Fm(app)l(end)g Fn(status)e(to)g(receiv)n(e)g(an)n │ │ │ │ │ +(y)g(output)h(data.)307 766 y Ff(\210)42 b Fn(The)28 │ │ │ │ │ +b Fl(type)e Fn(parameter)g(sp)r(eci\014es)h(a)h(real)e(or)h(complex)g │ │ │ │ │ +(linear)g(system.)456 904 y Fe({)41 b Fl(type)h(=)i(1)f(\(SPOOLES)p │ │ │ │ │ 1295 904 27 4 v 28 w(REAL\))25 b Fn(for)i(real,)456 1023 │ │ │ │ │ y Fe({)41 b Fl(type)h(=)i(2)f(\(SPOOLES)p 1295 1023 V │ │ │ │ │ 28 w(COMPLEX\))24 b Fn(for)j(complex.)307 1161 y Ff(\210)42 │ │ │ │ │ b Fn(The)28 b Fl(symmetryflag)23 b Fn(parameter)j(sp)r(eci\014es)h(the) │ │ │ │ │ h(symmetry)f(of)h(the)g(matrix.)456 1299 y Fe({)41 b │ │ │ │ │ Fl(type)h(=)i(0)f(\(SPOOLES)p 1295 1299 V 28 w(SYMMETRIC\))23 │ │ │ │ │ b Fn(for)k Fh(A)h Fn(real)f(or)g(complex)g(symmetric,)456 │ │ │ │ │ @@ -6249,17 +6259,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 1207 4 v 1373 100 a Fl(MPI)26 │ │ │ │ │ -b Fd(:)i Fm(DRAFT)110 b Fd(Jan)n(uary)26 b(16,)g(2024)p │ │ │ │ │ -2612 100 V 1207 w Fn(15)101 390 y(4.)42 b Fl(testGraph_Bcast)37 │ │ │ │ │ +TeXDict begin 15 14 bop 83 100 1190 4 v 1355 100 a Fl(MPI)27 │ │ │ │ │ +b Fd(:)g Fm(DRAFT)111 b Fd(F)-7 b(ebruary)26 b(18,)h(2025)p │ │ │ │ │ +2630 100 V 1190 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 │ │ │ │ │ @@ -6351,34 +6361,35 @@ │ │ │ │ │ b Fn(The)29 b Fl(type)e Fn(parameter)g(sp)r(eci\014es)i(whether)g(the)g │ │ │ │ │ (linear)f(system)g(is)h(real)f(or)g(complex.)40 b(Use)28 │ │ │ │ │ b Fl(1)h Fn(for)f(real)g(and)g Fl(2)390 5270 y Fn(for)f(complex.)307 │ │ │ │ │ 5407 y Ff(\210)42 b Fn(The)28 b Fl(symmetryflag)23 b │ │ │ │ │ Fn(parameter)j(denotes)h(the)h(presence)f(or)f(absence)h(of)h(symmetry) │ │ │ │ │ -7 b(.)p eop end │ │ │ │ │ %%Page: 16 16 │ │ │ │ │ -TeXDict begin 16 15 bop 0 100 a Fn(16)p 166 100 1207 │ │ │ │ │ -4 v 1372 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(Jan)n(uary)f(16,)g(2024)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 │ │ │ │ │ -Fh(I)26 b Fn(+)18 b Fh(U)9 b Fn(\))28 b(factorization)e(is)i(computed.) │ │ │ │ │ -456 713 y Fe({)41 b Fn(Use)36 b Fl(2)f Fn(for)g(a)h(real)e(or)h │ │ │ │ │ -(complex)g(nonsymmetric)g(matrix)g Fh(A)p Fn(.)62 b(A)36 │ │ │ │ │ -b(\()p Fh(L)23 b Fn(+)g Fh(I)7 b Fn(\))p Fh(D)r Fn(\()p │ │ │ │ │ -Fh(I)32 b Fn(+)23 b Fh(U)9 b Fn(\))36 b(factorization)e(is)545 │ │ │ │ │ -812 y(computed.)307 936 y Ff(\210)42 b Fn(The)31 b Fl(sparsityflag)26 │ │ │ │ │ -b Fn(parameter)j(denotes)i(a)f(direct)g(or)g(appro)n(ximate)f │ │ │ │ │ -(factorization.)45 b(V)-7 b(alid)31 b(v)-5 b(alues)31 │ │ │ │ │ -b(are)e Fl(0)390 1035 y Fn(for)e(a)g(direct)h(factorization)e(and)i │ │ │ │ │ -Fl(1)f Fn(is)g(for)g(an)h(appro)n(ximate)e(factorization.)307 │ │ │ │ │ +TeXDict begin 16 15 bop 0 100 a Fn(16)p 166 100 1190 │ │ │ │ │ +4 v 1354 w Fl(MPI)27 b Fd(:)g Fm(DRAFT)h Fd(F)-7 b(ebruary)26 │ │ │ │ │ +b(18,)h(2025)p 2711 100 V 456 390 a Fe({)41 b Fn(Use)f │ │ │ │ │ +Fl(0)g Fn(for)f(a)g(real)g(or)g(complex)g(symmetric)g(matrix)g │ │ │ │ │ +Fh(A)p Fn(.)74 b(A)40 b(\()p Fh(U)2703 360 y Fg(T)2782 │ │ │ │ │ +390 y Fn(+)26 b Fh(I)7 b Fn(\))p Fh(D)r Fn(\()p Fh(I)34 │ │ │ │ │ +b Fn(+)26 b Fh(U)9 b Fn(\))40 b(factorization)e(is)545 │ │ │ │ │ +490 y(computed.)456 601 y Fe({)j Fn(Use)28 b Fl(1)f Fn(for)g(a)h │ │ │ │ │ +(complex)f(Hermitian)g(matrix)g Fh(A)p Fn(.)38 b(A)28 │ │ │ │ │ +b(\()p Fh(U)2273 571 y Fg(H)2354 601 y Fn(+)18 b Fh(I)7 │ │ │ │ │ +b Fn(\))p Fh(D)r Fn(\()p Fh(I)26 b Fn(+)18 b Fh(U)9 b │ │ │ │ │ +Fn(\))28 b(factorization)e(is)i(computed.)456 713 y Fe({)41 │ │ │ │ │ +b Fn(Use)36 b Fl(2)f Fn(for)g(a)h(real)e(or)h(complex)g(nonsymmetric)g │ │ │ │ │ +(matrix)g Fh(A)p Fn(.)62 b(A)36 b(\()p Fh(L)23 b Fn(+)g │ │ │ │ │ +Fh(I)7 b Fn(\))p Fh(D)r Fn(\()p Fh(I)32 b Fn(+)23 b Fh(U)9 │ │ │ │ │ +b Fn(\))36 b(factorization)e(is)545 812 y(computed.)307 │ │ │ │ │ +936 y Ff(\210)42 b Fn(The)31 b Fl(sparsityflag)26 b Fn(parameter)j │ │ │ │ │ +(denotes)i(a)f(direct)g(or)g(appro)n(ximate)f(factorization.)45 │ │ │ │ │ +b(V)-7 b(alid)31 b(v)-5 b(alues)31 b(are)e Fl(0)390 1035 │ │ │ │ │ +y Fn(for)e(a)g(direct)h(factorization)e(and)i Fl(1)f │ │ │ │ │ +Fn(is)g(for)g(an)h(appro)n(ximate)e(factorization.)307 │ │ │ │ │ 1158 y Ff(\210)42 b Fn(The)29 b Fl(pivotingflag)24 b │ │ │ │ │ Fn(parameter)j(denotes)i(whether)g(piv)n(oting)f(is)h(to)f(b)r(e)h │ │ │ │ │ (used)g(in)g(the)h(factorization.)39 b(V)-7 b(alid)390 │ │ │ │ │ 1258 y(v)i(alues)27 b(are)g Fl(0)g Fn(for)g(no)h(piv)n(oting)f(and)g │ │ │ │ │ Fl(1)g Fn(to)h(enable)f(piv)n(oting.)307 1381 y Ff(\210)42 │ │ │ │ │ b Fn(The)30 b Fl(tau)f Fn(parameter)g(is)g(used)h(when)h(piv)n(oting)e │ │ │ │ │ (is)h(enabled,)g(in)g(whic)n(h)g(case)f(it)i(is)f(an)f(upp)r(er)i(b)r │ │ │ │ │ @@ -6459,17 +6470,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 1207 4 v 1373 100 a Fl(MPI)26 │ │ │ │ │ -b Fd(:)i Fm(DRAFT)110 b Fd(Jan)n(uary)26 b(16,)g(2024)p │ │ │ │ │ -2612 100 V 1207 w Fn(17)307 390 y Ff(\210)42 b Fn(The)23 │ │ │ │ │ +TeXDict begin 17 16 bop 83 100 1190 4 v 1355 100 a Fl(MPI)27 │ │ │ │ │ +b Fd(:)g Fm(DRAFT)111 b Fd(F)-7 b(ebruary)26 b(18,)h(2025)p │ │ │ │ │ +2630 100 V 1190 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 │ │ │ │ │ @@ -6568,44 +6579,45 @@ │ │ │ │ │ y Ff(\210)42 b Fn(The)32 b Fl(msgFile)c Fn(parameter)i(determines)h │ │ │ │ │ (the)h(message)e(\014le)i(|)f(if)h Fl(msgFile)d Fn(is)i │ │ │ │ │ Fl(stdout)p Fn(,)f(then)i(the)g(message)390 5407 y(\014le)c(is)f │ │ │ │ │ Fm(stdout)p Fn(,)h(otherwise)e(a)i(\014le)f(is)h(op)r(ened)f(with)i │ │ │ │ │ Fm(app)l(end)g Fn(status)e(to)g(receiv)n(e)g(an)n(y)g(output)h(data.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 18 18 │ │ │ │ │ -TeXDict begin 18 17 bop 0 100 a Fn(18)p 166 100 1207 │ │ │ │ │ -4 v 1372 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(Jan)n(uary)f(16,)g(2024)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 │ │ │ │ │ -(of)h(ro)n(ws)e(in)i Fh(X)7 b Fn(.)307 926 y Ff(\210)42 │ │ │ │ │ -b Fn(The)24 b Fl(coordType)c Fn(parameter)i(de\014nes)i(the)g(co)r │ │ │ │ │ -(ordinate)e(t)n(yp)r(e)i(that)g(will)g(b)r(e)g(used)f(during)g(the)h │ │ │ │ │ -(redistribution.)390 1026 y(V)-7 b(alid)28 b(v)-5 b(alues)27 │ │ │ │ │ -b(are)g Fl(1)g Fn(for)g(ro)n(ws,)f Fl(2)i Fn(for)f(columns)g(and)g │ │ │ │ │ -Fl(3)h Fn(for)f(c)n(hevrons.)307 1160 y Ff(\210)42 b │ │ │ │ │ -Fn(The)26 b Fl(inputMode)d Fn(parameter)h(de\014nes)i(the)h(mo)r(de)f │ │ │ │ │ -(of)g(input.)37 b(V)-7 b(alid)26 b(v)-5 b(alues)26 b(are)f │ │ │ │ │ -Fl(1)g Fn(for)h(real)f(en)n(tries)g(and)h Fl(2)g Fn(for)390 │ │ │ │ │ -1260 y(complex)h(en)n(tries.)307 1394 y Ff(\210)42 b │ │ │ │ │ -Fn(The)c Fl(symflag)c Fn(parameter)i(sp)r(eci\014es)h(whether)h(the)f │ │ │ │ │ -(matrix)g(is)g(symmetric)g(\()p Fl(symflag)e Fn(=)i(0\),)j(Hermitian) │ │ │ │ │ -390 1493 y(\()p Fl(symflag)25 b Fn(=)j(1\))f(or)g(nonsymmetric)g(\()p │ │ │ │ │ -Fl(symflag)e Fn(=)i(2\))307 1627 y Ff(\210)42 b Fn(The)25 │ │ │ │ │ -b Fl(opflag)d Fn(parameter)h(sp)r(eci\014es)i(the)g(t)n(yp)r(e)g(of)g │ │ │ │ │ -(m)n(ultiply)-7 b(,)26 b Fl(0)e Fn(for)g Fh(Y)42 b Fn(:=)22 │ │ │ │ │ -b Fh(Y)32 b Fn(+)13 b Fh(\013AX)7 b Fn(,)24 b Fl(1)h │ │ │ │ │ -Fn(for)f Fh(Y)42 b Fn(:=)22 b Fh(Y)32 b Fn(+)13 b Fh(\013A)3773 │ │ │ │ │ -1597 y Fg(T)3825 1627 y Fh(X)390 1727 y Fn(or)27 b Fl(2)g │ │ │ │ │ -Fn(for)g Fh(Y)42 b Fn(:=)23 b Fh(Y)37 b Fn(+)18 b Fh(\013A)1174 │ │ │ │ │ +TeXDict begin 18 17 bop 0 100 a Fn(18)p 166 100 1190 │ │ │ │ │ +4 v 1354 w Fl(MPI)27 b Fd(:)g Fm(DRAFT)h Fd(F)-7 b(ebruary)26 │ │ │ │ │ +b(18,)h(2025)p 2711 100 V 307 390 a Ff(\210)42 b Fn(The)28 │ │ │ │ │ +b Fl(nrowA)d Fn(parameter)i(is)g(the)h(n)n(um)n(b)r(er)f(of)h(ro)n(ws)e │ │ │ │ │ +(in)i Fh(A)p Fn(.)307 524 y Ff(\210)42 b Fn(The)28 b │ │ │ │ │ +Fl(ncolA)d Fn(parameter)i(is)g(the)h(n)n(um)n(b)r(er)f(of)h(columns)f │ │ │ │ │ +(in)h Fh(A)p Fn(.)307 658 y Ff(\210)42 b Fn(The)28 b │ │ │ │ │ +Fl(nentA)d Fn(parameter)i(is)g(the)h(n)n(um)n(b)r(er)f(of)h(en)n(tries) │ │ │ │ │ +f(to)g(b)r(e)h(put)h(in)n(to)e Fh(A)p Fn(.)307 792 y │ │ │ │ │ +Ff(\210)42 b Fn(The)28 b Fl(nrowX)d Fn(parameter)i(is)g(the)h(n)n(um)n │ │ │ │ │ +(b)r(er)f(of)h(ro)n(ws)e(in)i Fh(X)7 b Fn(.)307 926 y │ │ │ │ │ +Ff(\210)42 b Fn(The)24 b Fl(coordType)c Fn(parameter)i(de\014nes)i(the) │ │ │ │ │ +g(co)r(ordinate)e(t)n(yp)r(e)i(that)g(will)g(b)r(e)g(used)f(during)g │ │ │ │ │ +(the)h(redistribution.)390 1026 y(V)-7 b(alid)28 b(v)-5 │ │ │ │ │ +b(alues)27 b(are)g Fl(1)g Fn(for)g(ro)n(ws,)f Fl(2)i │ │ │ │ │ +Fn(for)f(columns)g(and)g Fl(3)h Fn(for)f(c)n(hevrons.)307 │ │ │ │ │ +1160 y Ff(\210)42 b Fn(The)26 b Fl(inputMode)d Fn(parameter)h │ │ │ │ │ +(de\014nes)i(the)h(mo)r(de)f(of)g(input.)37 b(V)-7 b(alid)26 │ │ │ │ │ +b(v)-5 b(alues)26 b(are)f Fl(1)g Fn(for)h(real)f(en)n(tries)g(and)h │ │ │ │ │ +Fl(2)g Fn(for)390 1260 y(complex)h(en)n(tries.)307 1394 │ │ │ │ │ +y Ff(\210)42 b Fn(The)c Fl(symflag)c Fn(parameter)i(sp)r(eci\014es)h │ │ │ │ │ +(whether)h(the)f(matrix)g(is)g(symmetric)g(\()p Fl(symflag)e │ │ │ │ │ +Fn(=)i(0\),)j(Hermitian)390 1493 y(\()p Fl(symflag)25 │ │ │ │ │ +b Fn(=)j(1\))f(or)g(nonsymmetric)g(\()p Fl(symflag)e │ │ │ │ │ +Fn(=)i(2\))307 1627 y Ff(\210)42 b Fn(The)25 b Fl(opflag)d │ │ │ │ │ +Fn(parameter)h(sp)r(eci\014es)i(the)g(t)n(yp)r(e)g(of)g(m)n(ultiply)-7 │ │ │ │ │ +b(,)26 b Fl(0)e Fn(for)g Fh(Y)42 b Fn(:=)22 b Fh(Y)32 │ │ │ │ │ +b Fn(+)13 b Fh(\013AX)7 b Fn(,)24 b Fl(1)h Fn(for)f Fh(Y)42 │ │ │ │ │ +b Fn(:=)22 b Fh(Y)32 b Fn(+)13 b Fh(\013A)3773 1597 y │ │ │ │ │ +Fg(T)3825 1627 y Fh(X)390 1727 y Fn(or)27 b Fl(2)g Fn(for)g │ │ │ │ │ +Fh(Y)42 b Fn(:=)23 b Fh(Y)37 b Fn(+)18 b Fh(\013A)1174 │ │ │ │ │ 1697 y Fg(H)1237 1727 y Fh(X)7 b Fn(.)307 1861 y Ff(\210)42 │ │ │ │ │ b Fn(The)28 b Fl(seed)e Fn(parameter)g(is)h(a)h(random)e(n)n(um)n(b)r │ │ │ │ │ (er)i(seed.)307 1995 y Ff(\210)42 b Fn(The)28 b Fl(real)e │ │ │ │ │ Fn(parameter)g(is)h(the)h(real)f(part)g(of)h(the)g(scalar)e │ │ │ │ │ Fh(\013)p Fn(.)307 2129 y Ff(\210)42 b Fn(The)28 b Fl(imag)e │ │ │ │ │ Fn(parameter)g(is)h(the)h(imaginary)e(part)i(of)f(the)h(scalar)e │ │ │ │ │ Fh(\013)p Fn(,)i(ignored)f(for)g(real)f(en)n(tries.)60 │ │ │ │ │ @@ -6668,17 +6680,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 1207 4 v 1373 100 a Fl(MPI)26 │ │ │ │ │ -b Fd(:)i Fm(DRAFT)110 b Fd(Jan)n(uary)26 b(16,)g(2024)p │ │ │ │ │ -2612 100 V 1207 w Fn(19)307 390 y Ff(\210)42 b Fn(The)28 │ │ │ │ │ +TeXDict begin 19 18 bop 83 100 1190 4 v 1355 100 a Fl(MPI)27 │ │ │ │ │ +b Fd(:)g Fm(DRAFT)111 b Fd(F)-7 b(ebruary)26 b(18,)h(2025)p │ │ │ │ │ +2630 100 V 1190 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 │ │ │ │ │ @@ -6771,44 +6783,45 @@ │ │ │ │ │ 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 1207 │ │ │ │ │ -4 v 1372 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(Jan)n(uary)f(16,)g(2024)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 │ │ │ │ │ -689 y(then)i(compute)h(their)f(necessary)f(sym)n(b)r(olic)g │ │ │ │ │ -(factorizations)g(in)i(parallel.)47 b(F)-7 b(or)30 b(a)h(c)n(hec)n(k,)h │ │ │ │ │ -(they)f(compare)f(the)i(t)n(w)n(o)208 789 y(sym)n(b)r(olic)27 │ │ │ │ │ -b(factorizations)f(for)h(error.)35 b(Use)27 b(the)h(script)f(\014le)h │ │ │ │ │ -Fl(do)p 2190 789 V 31 w(symbfac)d Fn(for)i(testing.)307 │ │ │ │ │ -971 y Ff(\210)42 b Fn(The)23 b Fl(msglvl)e Fn(parameter)g(determines)i │ │ │ │ │ -(the)h(amoun)n(t)e(of)h(output.)36 b(Use)23 b Fl(msglvl)41 │ │ │ │ │ -b(=)i(1)23 b Fn(for)g(just)g(timing)g(output.)307 1104 │ │ │ │ │ -y Ff(\210)42 b Fn(The)32 b Fl(msgFile)c Fn(parameter)i(determines)h │ │ │ │ │ -(the)h(message)e(\014le)i(|)f(if)h Fl(msgFile)d Fn(is)i │ │ │ │ │ -Fl(stdout)p Fn(,)f(then)i(the)g(message)390 1204 y(\014le)c(is)f │ │ │ │ │ -Fm(stdout)p Fn(,)h(otherwise)e(a)i(\014le)f(is)h(op)r(ened)f(with)i │ │ │ │ │ -Fm(app)l(end)g Fn(status)e(to)g(receiv)n(e)g(an)n(y)g(output)h(data.) │ │ │ │ │ -307 1337 y Ff(\210)42 b Fn(The)28 b Fl(inGraphFile)23 │ │ │ │ │ -b Fn(parameter)j(is)i(the)g(input)g(\014le)g(for)f(the)h │ │ │ │ │ -Fl(Graph)d Fn(ob)5 b(ject.)307 1469 y Ff(\210)42 b Fn(The)28 │ │ │ │ │ -b Fl(inETreeFile)23 b Fn(parameter)j(is)i(the)g(input)g(\014le)g(for)f │ │ │ │ │ -(the)h Fl(ETree)d Fn(ob)5 b(ject.)307 1602 y Ff(\210)42 │ │ │ │ │ -b Fn(The)28 b Fl(seed)e Fn(parameter)g(is)h(a)h(random)e(n)n(um)n(b)r │ │ │ │ │ -(er)i(seed.)p eop end │ │ │ │ │ +TeXDict begin 20 19 bop 0 100 a Fn(20)p 166 100 1190 │ │ │ │ │ +4 v 1354 w Fl(MPI)27 b Fd(:)g Fm(DRAFT)h Fd(F)-7 b(ebruary)26 │ │ │ │ │ +b(18,)h(2025)p 2711 100 V 208 390 a Fn(from)j(the)i(structure)e(of)h │ │ │ │ │ +(the)h(graph)e(and)h(computes)f(a)h(global)f(sym)n(b)r(olic)h │ │ │ │ │ +(factorization)e(ob)5 b(ject)31 b(using)g(the)g(serial)208 │ │ │ │ │ +490 y Fl(SymbFac)p 521 490 27 4 v 28 w(initFromInpMtx\(\))23 │ │ │ │ │ +b Fn(metho)r(d.)43 b(The)30 b(pro)r(cessors)d(then)j(compute)f(a)h(map) │ │ │ │ │ +f(from)g(fron)n(ts)g(to)g(pro)r(cessors,)208 589 y(and)g(eac)n(h)f(pro) │ │ │ │ │ +r(cessor)f(thro)n(ws)h(a)n(w)n(a)n(y)f(the)i(uno)n(wned)g(matrix)g(en)n │ │ │ │ │ +(tries)f(from)h(the)g Fl(InpMtx)e Fn(ob)5 b(ject.)41 │ │ │ │ │ +b(The)29 b(pro)r(cessors)208 689 y(then)i(compute)h(their)f(necessary)f │ │ │ │ │ +(sym)n(b)r(olic)g(factorizations)g(in)i(parallel.)47 │ │ │ │ │ +b(F)-7 b(or)30 b(a)h(c)n(hec)n(k,)h(they)f(compare)f(the)i(t)n(w)n(o) │ │ │ │ │ +208 789 y(sym)n(b)r(olic)27 b(factorizations)f(for)h(error.)35 │ │ │ │ │ +b(Use)27 b(the)h(script)f(\014le)h Fl(do)p 2190 789 V │ │ │ │ │ +31 w(symbfac)d Fn(for)i(testing.)307 971 y Ff(\210)42 │ │ │ │ │ +b Fn(The)23 b Fl(msglvl)e Fn(parameter)g(determines)i(the)h(amoun)n(t)e │ │ │ │ │ +(of)h(output.)36 b(Use)23 b Fl(msglvl)41 b(=)i(1)23 b │ │ │ │ │ +Fn(for)g(just)g(timing)g(output.)307 1104 y Ff(\210)42 │ │ │ │ │ +b Fn(The)32 b Fl(msgFile)c Fn(parameter)i(determines)h(the)h(message)e │ │ │ │ │ +(\014le)i(|)f(if)h Fl(msgFile)d Fn(is)i Fl(stdout)p Fn(,)f(then)i(the)g │ │ │ │ │ +(message)390 1204 y(\014le)c(is)f Fm(stdout)p Fn(,)h(otherwise)e(a)i │ │ │ │ │ +(\014le)f(is)h(op)r(ened)f(with)i Fm(app)l(end)g Fn(status)e(to)g │ │ │ │ │ +(receiv)n(e)g(an)n(y)g(output)h(data.)307 1337 y Ff(\210)42 │ │ │ │ │ +b Fn(The)28 b Fl(inGraphFile)23 b Fn(parameter)j(is)i(the)g(input)g │ │ │ │ │ +(\014le)g(for)f(the)h Fl(Graph)d Fn(ob)5 b(ject.)307 │ │ │ │ │ +1469 y Ff(\210)42 b Fn(The)28 b Fl(inETreeFile)23 b Fn(parameter)j(is)i │ │ │ │ │ +(the)g(input)g(\014le)g(for)f(the)h Fl(ETree)d Fn(ob)5 │ │ │ │ │ +b(ject.)307 1602 y Ff(\210)42 b Fn(The)28 b Fl(seed)e │ │ │ │ │ +Fn(parameter)g(is)h(a)h(random)e(n)n(um)n(b)r(er)i(seed.)p │ │ │ │ │ +eop end │ │ │ │ │ %%Page: 21 21 │ │ │ │ │ TeXDict begin 21 20 bop 0 866 a Fo(Index)0 1281 y Fl(DenseMtx)p │ │ │ │ │ 357 1281 27 4 v 28 w(MPI)p 517 1281 V 30 w(gatherRows\(\))p │ │ │ │ │ Fn(,)23 b(5)0 1380 y Fl(DenseMtx)p 357 1380 V 28 w(MPI)p │ │ │ │ │ 517 1380 V 30 w(scatterAddRows\(\))p Fn(,)e(6)0 1480 │ │ │ │ │ y Fl(DenseMtx)p 357 1480 V 28 w(MPI)p 517 1480 V 30 w(splitByRows\(\))p │ │ │ │ │ Fn(,)i(3)0 1580 y Fl(DenseMtx)p 357 1580 V 28 w(MPI)p │ │ │ │ │ ├── ps2ascii {} │ │ │ │ │ │ @@ -31,15 +31,15 @@ │ │ │ │ │ │ scatter/added into Y. │ │ │ │ │ │ TheMatMulInfoobjectstoresallthenecessaryinformationtomakethishappen. ThereisoneMatMulInfo │ │ │ │ │ │ object per processor. It has the following fields. │ │ │ │ │ │ • symflag — symmetry flag for A │ │ │ │ │ │ – 0 (SPOOLES SYMMETRIC) – symmetric matrix │ │ │ │ │ │ – 1 (SPOOLES HERMITIAN) – hermitian matrix │ │ │ │ │ │ 1 │ │ │ │ │ │ - 2 MPI : DRAFT January 16, 2024 │ │ │ │ │ │ + 2 MPI : DRAFT February 18, 2025 │ │ │ │ │ │ – 2 (SPOOLES NONSYMMETRIC) – nonsymmetric matrix │ │ │ │ │ │ • opflag — operation flag for the multiply │ │ │ │ │ │ – 0 (MMM WITH A) — perform Y := Y +αAX │ │ │ │ │ │ – 1 (MMM WITH AT) — perform Y := Y +αATX │ │ │ │ │ │ – 2 (MMM WITH AH) — perform Y := Y +αAHX │ │ │ │ │ │ • IV *XownedIV — list of rows of X that are owned by this processor, these form the rows of Xq. │ │ │ │ │ │ • IV *XsupIV — list of rows of X that are accessed by this processor, these form the rows of Xq │ │ │ │ │ │ @@ -73,15 +73,15 @@ │ │ │ │ │ │ In a distributed environment, data must be distributed, and sometimes during a computation, data must be │ │ │ │ │ │ re-distributed. These methods split and redistribute four data objects. │ │ │ │ │ │ 1. void DenseMtx_MPI_splitByRows ( DenseMtx *mtx, IV *mapIV, int stats[], int msglvl, │ │ │ │ │ │ FILE *msgFile, int firsttag, MPI_Comm comm ) ; │ │ │ │ │ │ This method splits and redistributes the DenseMtx object based on the mapIV object that maps rows to │ │ │ │ │ │ processes. The messages that will be sent require nproc consecutive tags — the first is the parameter │ │ │ │ │ │ firsttag. On return, the stats[] vector contains the following information. │ │ │ │ │ │ - MPI : DRAFT January 16, 2024 3 │ │ │ │ │ │ + MPI : DRAFT February 18, 2025 3 │ │ │ │ │ │ stats[0] — #ofmessagessent stats[1] — #ofbytessent │ │ │ │ │ │ stats[2] — #ofmessagesreceived stats[3] — #ofbytesreceived │ │ │ │ │ │ Note, the values in stats[] are incremented, i.e., the stats[] vector is not zeroed at the start of the │ │ │ │ │ │ method, and so can be used to accumulated information with multiple calls. │ │ │ │ │ │ Error checking: If mtx or rowmapIV is NULL, or if msglvl > 0 and msgFile is NULL, or if firsttag < │ │ │ │ │ │ 0 or firsttag + nproc is larger than the largest available tag, an error message is printed and the │ │ │ │ │ │ program exits. │ │ │ │ │ │ @@ -117,15 +117,15 @@ │ │ │ │ │ │ use the chevron coordinate type to store the matrix entries. This method will redistribute a matrix │ │ │ │ │ │ by rows if the coordinate type is 1 (for rows) and mapIV is a row map. Similarly, this method will │ │ │ │ │ │ redistribute a matrix by columns if the coordinate type is 2 (for columns) and mapIV is a column map. │ │ │ │ │ │ See the InpMtx object for details. The messages that will be sent require nproc consecutive tags — the │ │ │ │ │ │ first is the parameter firsttag. On return, the stats[] vector contains the following information. │ │ │ │ │ │ stats[0] — #ofmessagessent stats[1] — #ofbytessent │ │ │ │ │ │ stats[2] — #ofmessagesreceived stats[3] — #ofbytesreceived │ │ │ │ │ │ - 4 MPI : DRAFT January 16, 2024 │ │ │ │ │ │ + 4 MPI : DRAFT February 18, 2025 │ │ │ │ │ │ Note, the values in stats[] are incremented, i.e., the stats[] vector is not zeroed at the start of the │ │ │ │ │ │ method, and so can be used to accumulated information with multiple calls. │ │ │ │ │ │ Error checking: If firsttag < 0 or firsttag + nproc is larger than the largest available tag, an │ │ │ │ │ │ error message is printed and the program exits. │ │ │ │ │ │ 5. InpMtx * InpMtx_MPI_splitFromGlobal ( InpMtx *Aglobal, InpMtx *Alocal, │ │ │ │ │ │ IV *mapIV, int root, int stats[], int msglvl, │ │ │ │ │ │ FILE *msgFile, int firsttag, MPI_Comm comm ) ; │ │ │ │ │ │ @@ -158,15 +158,15 @@ │ │ │ │ │ │ knownpriortoenteringthis method. Onreturn, the stats[]vectorcontainsthe followinginformation. │ │ │ │ │ │ stats[0] — #ofmessagessent stats[1] — #ofbytessent │ │ │ │ │ │ stats[2] — #ofmessagesreceived stats[3] — #ofbytesreceived │ │ │ │ │ │ Note, the values in stats[] are incremented, i.e., the stats[] vector is not zeroed at the start of the │ │ │ │ │ │ method, and so can be used to accumulated information with multiple calls. │ │ │ │ │ │ Error checking: If mtx or rowmapIV is NULL, or if msglvl > 0 and msgFile is NULL, or if firsttag < │ │ │ │ │ │ 0 is larger than the largest available tag, an error message is printed and the program exits. │ │ │ │ │ │ - MPI : DRAFT January 16, 2024 5 │ │ │ │ │ │ + MPI : DRAFT February 18, 2025 5 │ │ │ │ │ │ 1.2.2 Gather and scatter methods │ │ │ │ │ │ These method gather and scatter/add rows of DenseMtx objects. These operations are performed during the │ │ │ │ │ │ distributed matrix-matrixmultiply. ThegatheroperationXq ←XisperformedbyDenseMtx MPI gatherRows(), │ │ │ │ │ │ P supp │ │ │ │ │ │ while the scatter/add operation Y q := Y q + Yr is performed by DenseMtx MPI scatterAddRows(). │ │ │ │ │ │ r supp │ │ │ │ │ │ 1. void DenseMtx_MPI_gatherRows ( DenseMtx *Y, DenseMtx *X, IVL *sendIVL, │ │ │ │ │ │ @@ -202,15 +202,15 @@ │ │ │ │ │ │ 1.2.3 Symbolic Factorization methods │ │ │ │ │ │ 1. IVL * SymbFac_MPI_initFromInpMtx ( ETree *etree, IV *frontOwnersIV, │ │ │ │ │ │ InpMtx *inpmtx, int stats[], int msglvl, │ │ │ │ │ │ FILE *msgFile, int firsttag, MPI_Comm comm ) ; │ │ │ │ │ │ IVL * SymbFac_MPI_initFromPencil ( ETree *etree, IV *frontOwnersIV, │ │ │ │ │ │ Pencil *pencil, int stats[], int msglvl, │ │ │ │ │ │ FILE *msgFile, int firsttag, MPI_Comm comm ) ; │ │ │ │ │ │ - 6 MPI : DRAFT January 16, 2024 │ │ │ │ │ │ + 6 MPI : DRAFT February 18, 2025 │ │ │ │ │ │ ThesemethodsareusedinplaceoftheSymbfac initFrom{InpMtx,Pencil}()methodstocomputethe │ │ │ │ │ │ symbolic factorization. The ETree object is assumed to be replicated over the processes. The InpMtx │ │ │ │ │ │ and Pencil objects are partitioned among the processes. Therefore, to compute the IVL object that │ │ │ │ │ │ contains the symbolic factorization is a distributed, cooperative process. At the end of the symbolic │ │ │ │ │ │ factorization, each process will own a portion of the IVL object. The IVL object is neither replicated │ │ │ │ │ │ nor partitioned (except in trivial cases), but the IVL object on each process contains just a portion, │ │ │ │ │ │ usually not much more than what it needs to know for its part of the factorization and solves. │ │ │ │ │ │ @@ -247,15 +247,15 @@ │ │ │ │ │ │ cpus[0] – initialize fronts cpus[7] – extract postponed data │ │ │ │ │ │ cpus[1] – load original entries cpus[8] – store factor entries │ │ │ │ │ │ cpus[2] – update fronts cpus[9] – post initial receives │ │ │ │ │ │ cpus[3] – insert aggregate data cpus[10] – check for received messages │ │ │ │ │ │ cpus[4] – assemble aggregate data cpus[11] – post initial sends │ │ │ │ │ │ cpus[5] – assemble postponed data cpus[12] – check for sent messages │ │ │ │ │ │ cpus[6] – factor fronts │ │ │ │ │ │ - MPI : DRAFT January 16, 2024 7 │ │ │ │ │ │ + MPI : DRAFT February 18, 2025 7 │ │ │ │ │ │ Onreturn, the stats[] vector has the following information. │ │ │ │ │ │ stats[0] — #ofpivots │ │ │ │ │ │ stats[1] — #ofpivot tests │ │ │ │ │ │ stats[2] — #ofdelayed rows and columns │ │ │ │ │ │ stats[3] — #ofentries in D │ │ │ │ │ │ stats[4] — #ofentries in L │ │ │ │ │ │ stats[5] — #ofentries in U │ │ │ │ │ │ @@ -293,15 +293,15 @@ │ │ │ │ │ │ Error checking: If frontmtx, frontOwnersIV or stats is NULL, or if firsttag < 0 or firsttag + │ │ │ │ │ │ nproc, is larger than the largest available tag, or if msglvl > 0 and msgFile is NULL, an error message │ │ │ │ │ │ is printed and the program exits. │ │ │ │ │ │ 3. void IV_MPI_allgather ( IV *iv, IV *ownersIV, int stats[], int msglvl, │ │ │ │ │ │ FILE *msgFile, int firsttag, MPI_Comm comm ) ; │ │ │ │ │ │ After a factorization with pivoting, the frontsizesIVobject needs to be made globalon eachprocessor. │ │ │ │ │ │ This methods takes the individual entries of an IV object whose owners are specified by the ownersIV │ │ │ │ │ │ - 8 MPI : DRAFT January 16, 2024 │ │ │ │ │ │ + 8 MPI : DRAFT February 18, 2025 │ │ │ │ │ │ object, and communicates the entries around the processors until the global IV object is present on │ │ │ │ │ │ each. The messagesthat will be sent require at most nprocconsecutive tags — the first is the parameter │ │ │ │ │ │ firsttag. │ │ │ │ │ │ Error checking: If iv, ownersIV or stats is NULL, or if firsttag < 0 or firsttag + nproc, is larger │ │ │ │ │ │ than the largest available tag, or if msglvl > 0 and msgFile is NULL, an error message is printed and │ │ │ │ │ │ the program exits. │ │ │ │ │ │ 4. void IVL_MPI_allgather ( IVL *ivl, IV *ownersIV, int stats[], int msglvl, │ │ │ │ │ │ @@ -334,15 +334,15 @@ │ │ │ │ │ │ stats[4] — #ofsolution messages received │ │ │ │ │ │ stats[5] — #ofaggregatemessages received │ │ │ │ │ │ stats[6] — #ofsolution bytes received │ │ │ │ │ │ stats[7] — #ofaggregatebytes received │ │ │ │ │ │ Error checking: If frontmtx, mtxX,mtxB, mtxmanager,solvemap,cpusorstatsisNULL,oriffirsttag │ │ │ │ │ │ < 0 or firsttag + 2*nfront is larger than the largest available tag, or if msglvl > 0 and msgFile │ │ │ │ │ │ is NULL, an error message is printed and the program exits. │ │ │ │ │ │ - MPI : DRAFT January 16, 2024 9 │ │ │ │ │ │ + MPI : DRAFT February 18, 2025 9 │ │ │ │ │ │ 1.2.7 Matrix-matrix multiply methods │ │ │ │ │ │ The usual sequence of events is as follows. │ │ │ │ │ │ • Set up the data structure via a call to MatMul MPI setup(). │ │ │ │ │ │ • Convert the local Aq matrix to local indices via a call to MatMul setLocalIndices(). │ │ │ │ │ │ • Compute the matrix-matrix multiply with a call to MatMul MPI mmm(). Inside this method, the MPI │ │ │ │ │ │ methods DenseMtx MPI gatherRows()and DenseMtx MPI scatterAddRows()are called, along with a │ │ │ │ │ │ serial InpMtx matrix-matrix multiply method. │ │ │ │ │ │ @@ -371,15 +371,15 @@ │ │ │ │ │ │ 2. void MatMul_setLocalIndices ( MatMulInfo *info, InpMtx *A ) ; │ │ │ │ │ │ void MatMul_setGlobalIndices ( MatMulInfo *info, InpMtx *A ) ; │ │ │ │ │ │ The first method maps the indices of A (which are assumed to be global) into local indices. The second │ │ │ │ │ │ method maps the indices of A (which are assumed to be local) back into global indices. It uses the │ │ │ │ │ │ XmapIV, XsupIV YmapIV and YsupIV objects that are contained in the info object. These are serial │ │ │ │ │ │ methods, performed independently on each processor. │ │ │ │ │ │ Error checking: If info or A is NULL, an error message is printed and the program exits. │ │ │ │ │ │ - 10 MPI : DRAFT January 16, 2024 │ │ │ │ │ │ + 10 MPI : DRAFT February 18, 2025 │ │ │ │ │ │ 3. void MatMul_MPI_mmm ( MatMulInfo *info, DenseMtx *Yloc, double alpha[], InpMtx *A, │ │ │ │ │ │ DenseMtx *Xloc, int stats[], int msglvl, FILE *msgFile, MPI_Comm comm) ; │ │ │ │ │ │ This method computes a distributed matrix-matrix multiply Y := Y + αAX, Y := Y + αATX or │ │ │ │ │ │ H │ │ │ │ │ │ Y := Y +αA X, depending on how the info object was set up. NOTE: A must have local indices, │ │ │ │ │ │ use MatMul setLocalIndices() to convert from global to local indices. Xloc and Yloc contain the │ │ │ │ │ │ owned rows of X and Y, respectively. │ │ │ │ │ │ @@ -413,15 +413,15 @@ │ │ │ │ │ │ Error checking: None presently. │ │ │ │ │ │ 4. IV * IV_MPI_Bcast ( IV *obj, int root, │ │ │ │ │ │ int msglvl, FILE *msgFile, MPI_Comm comm ) ; │ │ │ │ │ │ This method is a broadcast method for an IV object. The root processor broadcasts its IV object to │ │ │ │ │ │ the other nodes and returns a pointer to its IV object. A node other than root, clears the data in its │ │ │ │ │ │ IV object, receives the IV object from the root and returns a pointer to it. │ │ │ │ │ │ Error checking: None presently. │ │ │ │ │ │ - MPI : DRAFT January 16, 2024 11 │ │ │ │ │ │ + MPI : DRAFT February 18, 2025 11 │ │ │ │ │ │ 1.2.9 Utility methods │ │ │ │ │ │ 1. IVL * InpMtx_MPI_fullAdjacency ( InpMtx *inpmtx, int stats[], │ │ │ │ │ │ int msglvl, FILE *msgFile, MPI_Comm comm ) ; │ │ │ │ │ │ IVL * Pencil_MPI_fullAdjacency ( Pencil *pencil, int stats[], │ │ │ │ │ │ int msglvl, FILE *msgFile, MPI_Comm comm ) ; │ │ │ │ │ │ These methods are used to return an IVL object that contains the full adjacency structure of the │ │ │ │ │ │ graph of the matrix or matrix pencil. The matrix or matrix pencil is distributed among the processes, │ │ │ │ │ │ @@ -458,15 +458,15 @@ │ │ │ │ │ │ IVL_MPI_alltoall ( IVL *sendIVL, IVL *recvIVL, int stats[], int msglvl, │ │ │ │ │ │ FILE *msgFile, int firsttag, MPI_Comm comm ) ; │ │ │ │ │ │ This method is used during the setup for matrix-vector multiplies. Each processor has computed │ │ │ │ │ │ the vertices it needs from other processors, these lists are contained in sendIVL. On return, recvIVL │ │ │ │ │ │ contains the lists of vertices this processor must send to all others. │ │ │ │ │ │ This method uses tags in the range [tag,tag+nproc-1). On return, the following statistics will have │ │ │ │ │ │ been added. │ │ │ │ │ │ - 12 MPI : DRAFT January 16, 2024 │ │ │ │ │ │ + 12 MPI : DRAFT February 18, 2025 │ │ │ │ │ │ stats[0] — #ofmessagessent stats[1] — #ofbytessent │ │ │ │ │ │ stats[2] — #ofmessagesreceived stats[3] — #ofbytesreceived │ │ │ │ │ │ This method is safe in the sense that it uses only MPI Sendrecv(). │ │ │ │ │ │ Error checking: If sendIVL or stats is NULL, or if msglvl > 0 and msgFile is NULL, or if tag < 0 │ │ │ │ │ │ or tag + nproc is larger than the largest available tag, an error message is printed and the program │ │ │ │ │ │ exits. │ │ │ │ │ │ 5. void * makeSendRecvIVLs ( IV *supportedIV, IV *globalmapIV, IVL *sendIVL, IVL *recvIVL, │ │ │ │ │ │ @@ -497,15 +497,15 @@ │ │ │ │ │ │ the matrix, factoring the matrix, and solving the system. Use the script file do AllInOne for testing. │ │ │ │ │ │ The files names for the matrix and right hand side entries are hardcoded. Processor q reads in matrix │ │ │ │ │ │ entries from file matrix.q.input and right hand side entries from file rhs.q.input. The format for │ │ │ │ │ │ the matrix files is as follows: │ │ │ │ │ │ neqns neqns nent │ │ │ │ │ │ irow jcol entry │ │ │ │ │ │ ... ... ... │ │ │ │ │ │ - MPI : DRAFT January 16, 2024 13 │ │ │ │ │ │ + MPI : DRAFT February 18, 2025 13 │ │ │ │ │ │ where neqns is the global number of equations and nent is the number of entries in this file. There │ │ │ │ │ │ follows nent lines, each containing a row index, a column index and one or two floating point numbers, │ │ │ │ │ │ one if real, two if complex. The format for the right hand side file is similar: │ │ │ │ │ │ nrow nrhs │ │ │ │ │ │ irow entry ... entry │ │ │ │ │ │ ... ... ... ... │ │ │ │ │ │ where nrow is the number of rows in this file and nrhs is the number of rigght and sides. There follows │ │ │ │ │ │ @@ -540,15 +540,15 @@ │ │ │ │ │ │ one if real, two if complex. The format for the right hand side file is similar: │ │ │ │ │ │ nrow nrhs │ │ │ │ │ │ irow entry ... entry │ │ │ │ │ │ ... ... ... ... │ │ │ │ │ │ where nrow is the number of rows in this file and nrhs is the number of rigght and sides. There follows │ │ │ │ │ │ nrow lines, each containing a row index and either nrhs or 2*nrhs floating point numbers, the first if │ │ │ │ │ │ real, the second if complex. Use the script file do patchAndGo for testing. │ │ │ │ │ │ - 14 MPI : DRAFT January 16, 2024 │ │ │ │ │ │ + 14 MPI : DRAFT February 18, 2025 │ │ │ │ │ │ • The msglvlparameterdetermines the amount of output. Use msglvl = 1 for just timing output. │ │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the message │ │ │ │ │ │ file is stdout, otherwise a file is opened with append status to receive any output data. │ │ │ │ │ │ • The type parameter specifies a real or complex linear system. │ │ │ │ │ │ – type = 1 (SPOOLES REAL) for real, │ │ │ │ │ │ – type = 2 (SPOOLES COMPLEX) for complex. │ │ │ │ │ │ • The symmetryflag parameter specifies the symmetry of the matrix. │ │ │ │ │ │ @@ -582,15 +582,15 @@ │ │ │ │ │ │ • The type parameter specifies whether the linear system is real (type = 1) or complex (type = │ │ │ │ │ │ 2). │ │ │ │ │ │ • nrow is the number of rows in X. │ │ │ │ │ │ • ncol is the number of columns in X. │ │ │ │ │ │ • inc1 is the row increment for X. │ │ │ │ │ │ • inc2 is the column increment for X. │ │ │ │ │ │ • The seed parameter is a random number seed. │ │ │ │ │ │ - MPI : DRAFT January 16, 2024 15 │ │ │ │ │ │ + MPI : DRAFT February 18, 2025 15 │ │ │ │ │ │ 4. testGraph_Bcast msglvl msgFile type nvtx nitem root seed │ │ │ │ │ │ This driver program tests the distributed Graph MPI Bcast() method. Processor root generates a │ │ │ │ │ │ random graph of type type (see the documentation for the Graph object in chapter ??) with nvtx │ │ │ │ │ │ vertices. The random graph is constructed via an InpMtx object using nitem edges. Processor root │ │ │ │ │ │ then sends its Graph object to the other processors. Each processor computes a checksum for its object, │ │ │ │ │ │ and the error are collected on processor 0. Use the script file do Graph Bcast for testing. │ │ │ │ │ │ • The msglvlparameterdetermines the amount of output. Use msglvl = 1 for just timing output. │ │ │ │ │ │ @@ -625,15 +625,15 @@ │ │ │ │ │ │ • The n3 parameter is the number of grid points in the third direction. │ │ │ │ │ │ • The maxzeros parameter is the maximum number of zero entries allowed in a front. │ │ │ │ │ │ • The maxsize parameter is the maximum number of internal rows and columns allowed in a front. │ │ │ │ │ │ • The seed parameter is a random number seed. │ │ │ │ │ │ • The type parameter specifies whether the linear system is real or complex. Use 1 for real and 2 │ │ │ │ │ │ for complex. │ │ │ │ │ │ • The symmetryflag parameter denotes the presence or absence of symmetry. │ │ │ │ │ │ - 16 MPI : DRAFT January 16, 2024 │ │ │ │ │ │ + 16 MPI : DRAFT February 18, 2025 │ │ │ │ │ │ – Use 0 for a real or complex symmetric matrix A. A (UT + I)D(I + U) factorization is │ │ │ │ │ │ computed. │ │ │ │ │ │ – Use 1 for a complex Hermitian matrix A. A (UH +I)D(I +U) factorization is computed. │ │ │ │ │ │ – Use 2 for a real or complex nonsymmetric matrix A. A (L + I)D(I + U) factorization is │ │ │ │ │ │ computed. │ │ │ │ │ │ • The sparsityflag parameter denotes a direct or approximate factorization. Valid values are 0 │ │ │ │ │ │ for a direct factorization and 1 is for an approximate factorization. │ │ │ │ │ │ @@ -671,15 +671,15 @@ │ │ │ │ │ │ IVL object with nproc lists. List iproc contains a set of ids of items that this processor will receive │ │ │ │ │ │ from processor iproc. The processors then call IVL MPI allgather to create their “send” IVL object, │ │ │ │ │ │ where list iproc contains a set of ids of items that this processor will send to processor iproc. The set │ │ │ │ │ │ of lists in all the “receive” IVL objects is exactly the same as the set of lists in all the “send” objects. │ │ │ │ │ │ This is an “all-to-all” scatter/gather operation. Had the lists be stored contiguously or at least in one │ │ │ │ │ │ block of storage, we could have used the MPI Alltoallv() method. │ │ │ │ │ │ Use the script file do IVL alltoall for testing. │ │ │ │ │ │ - MPI : DRAFT January 16, 2024 17 │ │ │ │ │ │ + MPI : DRAFT February 18, 2025 17 │ │ │ │ │ │ • The msglvlparameterdetermines the amount of output. Use msglvl = 1 for just timing output. │ │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the message │ │ │ │ │ │ file is stdout, otherwise a file is opened with append status to receive any output data. │ │ │ │ │ │ • The n parameter is an upper bound on list size and element value. │ │ │ │ │ │ • The seed parameter is a random number seed. │ │ │ │ │ │ 8. testIVL_allgather msglvl msgFile nlist seed │ │ │ │ │ │ This driver program tests the distributed IVL MPI allgather() method. Each processor generates │ │ │ │ │ │ @@ -716,15 +716,15 @@ │ │ │ │ │ │ local coordinates. The matrix-matrix multiply is computed, and then all the Yq local matrices are │ │ │ │ │ │ gathered onto processor zero into Y , which is then compared with Z that was computed using a serial │ │ │ │ │ │ matrix-matrix multiply. The error is written to the message file by processor zero. Use the script file │ │ │ │ │ │ do MMM for testing. │ │ │ │ │ │ • The msglvlparameterdetermines the amount of output. Use msglvl = 1 for just timing output. │ │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the message │ │ │ │ │ │ file is stdout, otherwise a file is opened with append status to receive any output data. │ │ │ │ │ │ - 18 MPI : DRAFT January 16, 2024 │ │ │ │ │ │ + 18 MPI : DRAFT February 18, 2025 │ │ │ │ │ │ • The nrowA parameter is the number of rows in A. │ │ │ │ │ │ • The ncolA parameter is the number of columns in A. │ │ │ │ │ │ • The nentA parameter is the number of entries to be put into A. │ │ │ │ │ │ • The nrowX parameter is the number of rows in X. │ │ │ │ │ │ • The coordTypeparameter defines the coordinate type that will be used during the redistribution. │ │ │ │ │ │ Valid values are 1 for rows, 2 for columns and 3 for chevrons. │ │ │ │ │ │ • The inputMode parameter defines the mode of input. Valid values are 1 for real entries and 2 for │ │ │ │ │ │ @@ -759,15 +759,15 @@ │ │ │ │ │ │ This driver program tests the distributed InpMtx MPI splitFromGlobal() method to split a InpMtx │ │ │ │ │ │ sparse matrix object. Process root reads in the InpMtx object. A random map is generated (the same │ │ │ │ │ │ maponall processes) and the object is scattered from processor root to the other processors. Use the │ │ │ │ │ │ script file do ScatterInpMtx for testing. │ │ │ │ │ │ • The msglvlparameterdetermines the amount of output. Use msglvl = 1 for just timing output. │ │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the message │ │ │ │ │ │ file is stdout, otherwise a file is opened with append status to receive any output data. │ │ │ │ │ │ - MPI : DRAFT January 16, 2024 19 │ │ │ │ │ │ + MPI : DRAFT February 18, 2025 19 │ │ │ │ │ │ • The neqns parameter is the number of equations for the matrix. │ │ │ │ │ │ • The seed parameter is a random number seed. │ │ │ │ │ │ • The coordTypeparameter defines the coordinate type that will be used during the redistribution. │ │ │ │ │ │ Valid values are 1 for rows, 2 for columns and 3 for chevrons. │ │ │ │ │ │ • The inputMode parameter defines the mode of input. Valid values are 0 for indices only, 1 for │ │ │ │ │ │ real entries and 2 for complex entries. │ │ │ │ │ │ • The inInpMtxFile parameter is the name of the file that contain the InpMtx object. │ │ │ │ │ │ @@ -802,15 +802,15 @@ │ │ │ │ │ │ • The inputMode parameter defines the mode of input. Valid values are 0 for indices only, 1 for │ │ │ │ │ │ real entries and 2 for complex entries. │ │ │ │ │ │ • The inInpMtxFile parameter is the name of the file that contain the InpMtx object. │ │ │ │ │ │ 15. testSymbFac msglvl msgFile inGraphFile inETreeFile seed │ │ │ │ │ │ This driver program tests the distributed SymbFac MPI initFromInpMtx() method that forms a IVL │ │ │ │ │ │ object that contains the necessary parts of a symbolic factorization for each processor. The pro- │ │ │ │ │ │ gram reads in the global Graph and ETree objects. Each processor creates a global InpMtx object │ │ │ │ │ │ - 20 MPI : DRAFT January 16, 2024 │ │ │ │ │ │ + 20 MPI : DRAFT February 18, 2025 │ │ │ │ │ │ from the structure of the graph and computes a global symbolic factorization object using the serial │ │ │ │ │ │ SymbFac initFromInpMtx() method. The processors then compute a map from fronts to processors, │ │ │ │ │ │ and each processor throws away the unowned matrix entries from the InpMtx object. The processors │ │ │ │ │ │ then compute their necessary symbolic factorizations in parallel. For a check, they compare the two │ │ │ │ │ │ symbolic factorizations for error. Use the script file do symbfac for testing. │ │ │ │ │ │ • The msglvlparameterdetermines the amount of output. Use msglvl = 1 for just timing output. │ │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the message │ │ │ ├── ./usr/share/doc/spooles-doc/MSMD.ps.gz │ │ │ │ ├── MSMD.ps │ │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ │ %%EndComments │ │ │ │ │ %%BeginDefaults │ │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ │ %%EndDefaults │ │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ │ %DVIPSCommandLine: dvips main -o MSMD.ps │ │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ │ -%DVIPSSource: TeX output 2024.01.16:2047 │ │ │ │ │ +%DVIPSSource: TeX output 2025.02.18:0318 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -1229,20 +1229,21 @@ │ │ │ │ │ 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 52 /four put │ │ │ │ │ -dup 54 /six put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ +dup 56 /eight put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 74 /J put │ │ │ │ │ +dup 70 /F put │ │ │ │ │ dup 97 /a put │ │ │ │ │ -dup 110 /n put │ │ │ │ │ +dup 98 /b put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ dup 114 /r put │ │ │ │ │ dup 117 /u put │ │ │ │ │ dup 121 /y put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ @@ -1426,89 +1427,93 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ │ -C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ │ -6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ │ -11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ │ -1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ │ -A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ │ -F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ │ -EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ │ -033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ │ -A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ │ -468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8A71FF9C085003EBB4F4 │ │ │ │ │ -3D271F5B16B1AAD3EBDC391F534AA46E545E9D8659DD19B309C3B7625A8396FA │ │ │ │ │ -2519464539D46E43ACB72952313C8497315E0319C08628023E8FC54D7D3BAC29 │ │ │ │ │ -D5AD8EFDABF0C33C7AFB7151A6606C62A87F0F5F783569AC4C881A992E3FE420 │ │ │ │ │ -297F7BC5147F3B2FA98450D2F8B07F7D229BC8BE06729920CFEC22556740E1CB │ │ │ │ │ -3DE09AC763C6D4A20AD1599C368FABD07BC35C16683F2A0311A88983415A9140 │ │ │ │ │ -2EFC4BC1B10DCAD4B2B8A28510E5BD39D6616D2B9B079ED3CF9C315B7DEC29D9 │ │ │ │ │ -251DFD0194B34EC175964C23383F23FFB2E41B698C405815D65EAFF9E9DD1DDE │ │ │ │ │ -30F77924656C288B8DDB2E5B0E7B1FAA66791DE3848EE6DE63AD0E945E49C6C7 │ │ │ │ │ -9FCA16E01F027F9EF7ACB55F02F5B0136480802F789F6FE14B430879979BA04D │ │ │ │ │ -F481AD4CF47E6847936F377FB04869F9A80E597301BFCAB718D8764094673876 │ │ │ │ │ -BCEF8FA3701608C84B3A0399A11D2E6AD922CCB7D72AF9EBFB30F4648A37A123 │ │ │ │ │ -CB8FB14BDC351692CF0CCAA5CA9383C2B23BAAA38700327EB743FBBE9EE04041 │ │ │ │ │ -13F5CEF4B3881BBC051C33369A82B3505B1CFD7D91AEF2E43EA728EE48E2D854 │ │ │ │ │ -5A7E516998ACDD4FD835FA901C5A21810A56D51FE919B2E58408EEB4DAEB487F │ │ │ │ │ -BA7F1D292CED902DF3533566D96DAD918319EA650D4FC7D9E0170CDE620F755B │ │ │ │ │ -0E7AE02D9B118481B26F5FF7060FBCFA2A682B6826F00679BCDA68794C05286D │ │ │ │ │ -B616DD08372ACDE0AE6E7EF116F0D36F16241ED4F0E8CCD80377792E3BB1343C │ │ │ │ │ -EEB22CC77738F7CBCBA32CF6C3979F6DF7ED81A89AE8928FD7CC550F2730BA88 │ │ │ │ │ -1B51CEDC63F4C47F261AFCAB7AC3CED20B15C97E714A460A1A3B16436B4A5149 │ │ │ │ │ -8F91DA4BE0B9B648534CE5F442117036B602DC91E2852BEA62F55803B833FDF7 │ │ │ │ │ -9F901AB87489E703DDEED1091A79DC73B4440BBBF2C7592B441187C4A3562204 │ │ │ │ │ -859F08BA3CE2A8ECCD5AAD13C50FB806FE79A388F1822C5608837CBDE526A044 │ │ │ │ │ -12E5CDE4A066932AF2ACA7E8FC6BA4603640944718752975B7DA6E906BE1EA01 │ │ │ │ │ -46736FF5D1AA1CC682D011B6039CF98C35E36D4F14ABC84A38B7203CC9A17756 │ │ │ │ │ -B2B0345276798F1A88A54AD9FEA0853C6DDF28525ED4F0B7380D14147012C2A4 │ │ │ │ │ -5B02888C986C76497EA4C729B0B82EE73C1A1A8E8F1ABF401E341028E9C15AF9 │ │ │ │ │ -354706D8DC07492921AD0932A46736C0D1B066D00287DACCC068FAE6A796EC89 │ │ │ │ │ -54D1D73AA88F3A5912BA9D3FF70065C8D0D0DAD1CD846501E06694374EFDBEC6 │ │ │ │ │ -931F644D5E8494AFC742423AD9A487658E310E0682BE19B8475F4D450487A686 │ │ │ │ │ -2B94494DEAF1C0F59DE82F2CE64BEE5E97F942FCFA1187ED6AA5761E951A7BF7 │ │ │ │ │ -9F842E34A4656C58B35A9E99F7E6762CEE11E0CF59FFD75D7382C5EE6DBB43F1 │ │ │ │ │ -ED219071D3FB22DBA90977723BB467C0490D042684C0724F40DCA3E0D8F1F4E7 │ │ │ │ │ -3C4F9A67BE6528185EAAFDD415224F7E256A4EA00111C17C746CBD80BF569A27 │ │ │ │ │ -D81195D7F79C1CCEEF30ED00D49F48B63E4B8D7953403A3710AE953CC1B76F0F │ │ │ │ │ -F523D777A6A186F262A602543F94AF7471DBE25FEBC207DB42DAF7DC9A5781FB │ │ │ │ │ -2131AD42869D966A734AAE3466DF1CE9D1BCFA72409A558C0AEE6A8E2FEAACB6 │ │ │ │ │ -2CDABCC28433034848ACF9FB4465D272E4AFC48572647F05F41C7A293CC5B595 │ │ │ │ │ -AD31555FB708A72962707348BC7033A8224BD42EB9D75FDF3AE9E6A9C960B330 │ │ │ │ │ -5137DF59F8E2E0D535F41524ABDF070745A4FA25CD8DFD38A5FF30A95452B875 │ │ │ │ │ -6569E8812631300D79A942C563AF174AC05C9F2D09D7D5D3C605F5A6B7F21B34 │ │ │ │ │ -18F270A993B050838E701A17938D1C156CBA7CA4BAC7C562CE9D7B758EAB25A9 │ │ │ │ │ -A6DFFC71F65561341847B776DF34061CE3D439B87B857626987EC93B3B95B8E8 │ │ │ │ │ -76FFB16B263675333FA10414FEED707FF7C366BF8B20FF8577CDEBEBCF1A5BCE │ │ │ │ │ -258C09C90175A5278B7C444A623E3331FDE5A6387B3E389540ED1E7E883958F3 │ │ │ │ │ -3A5C89CCD62256FA069DF4A5090FB17C1F1757C9209DAFB8A1F47182BF3E88D9 │ │ │ │ │ -0B5376B59EE165A761902759C8ED7F5AD301E7EB8B49CC09AF921DB45B7F8002 │ │ │ │ │ -AB32E73AAE53942DE0F9175D8446017006C9C0B93EF39C13B7A879F2F6DDFF16 │ │ │ │ │ -204BB24F976847CF006FD29332FCCB255B5116F7077A44F7066C39C81DC4BAD2 │ │ │ │ │ -40DB2753626C0102E5D047522ABC38EA294A699B8DFD9CA0A7980561A1062E90 │ │ │ │ │ -AB11EE286A9C238D9F721D9980D0A1828C2814972622D948CEE8C812C19A9A03 │ │ │ │ │ -608ED0AC138A436FFBF8BE3D1E66C87793416AF38ED9BC5424568A175FBDAA9E │ │ │ │ │ -D6FC11A7021693819B051562B5A59F32629E2D6019D69DD329BE1894A2B295E1 │ │ │ │ │ -1DCE9683B29AE126C56F26E5C595BF1A8249BDE231DBE8B066F7F62EF149B975 │ │ │ │ │ -A863969A4690504A5EA064721DA909B8157C0B39FBF8228D95CB655E406161E1 │ │ │ │ │ -148610FAEED7C5509880223C06A66DA19E10F94DC2DB481B26 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004FD597ED │ │ │ │ │ +EFDBC64ABD9B79386FB2427D1A63522195B1239C09F8CB3F8BD7A245A6DD82E3 │ │ │ │ │ +260C3889587626DFC5F7978E55F5524ABD6A3319CDD3D3F40D040044D51DA4E1 │ │ │ │ │ +6797EEAC7AA07C77EC6DB0E6E182B545A8BEF63B14F3FC07BAC09E7CD5C17ED6 │ │ │ │ │ +10080704B0DA4E9BA12F968DF8A58458D17E9A5B1F14A83DC51F5B161ADEE1CC │ │ │ │ │ +0183D82ED92C6FC7203C289949EDF0284D9893029FF5408E421324625F17C3E5 │ │ │ │ │ +2437C8F75A9D68EE1AF9174FEA6FC6BF793C7D2E497EA90396CF1A645E283B69 │ │ │ │ │ +8425F47C323587DF91E1D596DCB1E3A787C955D9D965A5E3E26ADF58B62AD5F9 │ │ │ │ │ +0C9AC784DE479780606354111E3202F215650DBBE1063A46F3C10B9EBC974DDA │ │ │ │ │ +A1A28DBBD43E9E5BFF000B12C787D0427928078F8EC5FE90DED97E6C129E8DEA │ │ │ │ │ +51F66504DB83764E52B0BA68DF7BE684C8959CB1D3345CC48221A9A4683306C0 │ │ │ │ │ +62B634E0A539383F0C7A788D9711EFF414869CCC5659D78CEBE009BF2463F56A │ │ │ │ │ +0ADC993348FE96DF7C250E13ED6504AACFE8F8DCA2D2048D9D8CFA127D363EAC │ │ │ │ │ +1F0630E2D1B621E6954038195D965B91FD974FA3F1B8B29D200A16CEBA645E2F │ │ │ │ │ +CEEE6FD49FBBD49E38AE67D4BFFCE91F1FC422554EC4409C5FA18D40FCD6D9B3 │ │ │ │ │ +2185ED1E0F98106D4339F086B05CA36E56EC22C60E2CE23F9C4CC403ACAD3F94 │ │ │ │ │ +4086B4DF6DFA0B7B4716417263E7B558535566AED2F6C2F9846A16D71A7930A7 │ │ │ │ │ +49232D3D16C4A01CF1A1998A06F40062ED329179A85668537C55D0BC24FC0010 │ │ │ │ │ +54DA83E2FC66B2A5D428E6A9BFC983253668C0ECE6CA36DBF97C4B7659D50842 │ │ │ │ │ +C65B36604840EEDA399B57E2DEFAC3E7FB031634CE33D04238F9854D2AAAF448 │ │ │ │ │ +34DA5F3BCCED3166FEEE82BB0BBA0A397CC2F95865CB52AABFF454D93B425809 │ │ │ │ │ +A26AC459F321FD23E2262FE816D06BAAECF32AAF167F84799AF80F9F88388D07 │ │ │ │ │ +0DB5FD57AFEE2850A8DFE977E6AE39CB3DC16DB1A163A583C86C6F775CE33521 │ │ │ │ │ +0081C0BBBAD6D30D26C66B28B38CEAC78FEA5FB3CC5853656B67C6D9D80EB30E │ │ │ │ │ +397558C9179AF5920F34DAB3F578DFCF0DBB137AED17D6325C23883E69EE4621 │ │ │ │ │ +34355A70C19EA68891E1CA937376901C85CDEE109F1665943E29A216DC00937A │ │ │ │ │ +B983A729A4654AD09187C0242D52FA4ADD0853EF4888864914D7D81C56578DD4 │ │ │ │ │ +3B51907032022E6E412D4F114675DEDCA8A9E85DC03A0B583FECD84432D15F70 │ │ │ │ │ +01F627BD6EC91F9FCFDA01BF40E1229B5F164309DBB641AD50970503DA2048C1 │ │ │ │ │ +DF8F36E8D252EE113F0B46677D9BAF376BAE18D74CFB0DBBD0C7E9D0A58BA3ED │ │ │ │ │ +1E5099CAE073EB5638617760AB57849893764EA9735173CD1EAB66884CEA7EE3 │ │ │ │ │ +8843327B2E145BD6FBB49102776B82BC511D109F8BE9E7E99DADABABEDC3CFD9 │ │ │ │ │ +393578FFD85907DFF2849E4CDE6FA4DEC7E1C150EBE4047FFB650F9548BE6D11 │ │ │ │ │ +0C51226A5436F18BF20A02E0F888F46B6AC3A8E8D927ECD3B5E095933AD3859F │ │ │ │ │ +5167C41D832EFCC4093BD2AFA7101AB430E57DAFC3590F05D3CBABB32BC203A0 │ │ │ │ │ +467B23BDB830487C9AA5B85BAC065F8538871B4180F8C4732E637DB090CFDE5A │ │ │ │ │ +3F4F2B5BFAFB848BAAD1A17CB076B34159601639BD93ECAB1214ACABF2C67FE2 │ │ │ │ │ +0658AA20B08681070FF56F1CC52144ABA8765D6E124D1CEA9BBA102808CE1BB2 │ │ │ │ │ +5EDF46BC7BBC2A5B49EE6EC28F5797A3969B057B21FCDBBD0E60848FF14F6CA3 │ │ │ │ │ +70F3060BDBB019B22722C99C7691760F013763B7FBEB62830AE215F195BF9F01 │ │ │ │ │ +21BF4377397E89574CFA47D123AA506A570A77BA6EB4AAB0B237A26154880293 │ │ │ │ │ +3952F832F72ECCB024F02385E5EE8566B165904B594E30D0700D033C6B429F6F │ │ │ │ │ +2A20BC774F442BC9CE29FCC81807C2768A8BC927A215558FBF36DC53F477F04A │ │ │ │ │ +41DA66E1A85B659EB761230977EAD7DA0150513D3323B143D4E2A61BCF03334C │ │ │ │ │ +C0EE3E1B06CFAF58ECC910BD81F0352B75FF1594D6A4EF504232D442174BE766 │ │ │ │ │ +0F8E703F97E21D25D4CD097549C31FEE7017C3916EFB02E7BF869172889827B6 │ │ │ │ │ +A48465EB7612BA3DBC6A9436C7167F149A25CE9F8E3F4F8DE3B5ADF6C0986CB3 │ │ │ │ │ +3A7E2DAB44AB489796461536F5F713017F2620AD03295CAE9285F08974AE0DF8 │ │ │ │ │ +D739260929619B509491AFF09C4CAEF9E65C2CA69470C907ECBF3AB6C955360D │ │ │ │ │ +05ABAC306DB51122A1ADC7EF0DD70FA299A45C505A83727D4598C86319EE9C06 │ │ │ │ │ +7218EFD4F40388354BCF1B79593D5AD221DF955D081F99F880E5CED07321AB3E │ │ │ │ │ +A2FCB8B05D54807D8E15E65B78DCE12989B9276350080C905DBB74CE9AA7E246 │ │ │ │ │ +5D3BAED292C562D4CF54617FCC6654496C7996D1ECE1EFF9258716AB763A12E6 │ │ │ │ │ +316E4C5587351A6DB011F58F6A15BC28BEBDC3836E0CB892807FEC228DC1B380 │ │ │ │ │ +92F7F42279F08D60F13D6A4CB425543C3644461461CBF6F27B6603F613D1FCF8 │ │ │ │ │ +A8410AD82D1498166AEB35D4125D7E2ADEAAB18BC04806AED53513F066E5F154 │ │ │ │ │ +3E13E863C50B9814EE2FB978D0D24A03FAF650CB6E2CADF1E6BE6BAF699AFC03 │ │ │ │ │ +E1A0EEB207B3B9A689ED5B373FE86686AD230BE6C18E1673DDA50E224B343EC5 │ │ │ │ │ +903BA0C8041C13607B50D5852AC7970B15C244E6EBA7D54B3086312CF04761D6 │ │ │ │ │ +7D3D75D51F20C371494AB81AB4A9838B20B483B851D01FEF41EA5C0B4755B964 │ │ │ │ │ +EB6E9B178051C556A010994EB88EAE641F4C1A0D7E0F98D5267E18AEF1AEA7E7 │ │ │ │ │ +9030A97DF89AFF621981C33B645FFB5F3BB2065A7661D11B26E0999561DF3580 │ │ │ │ │ +4A76A05DFAF8085525F8D5C01936F03C32E26E72569371C9EA3B8916F9DFC5FC │ │ │ │ │ +6A6F25A0FFDB981BA8B896393D75774D50828E6ADE903C45406E354703A4BC56 │ │ │ │ │ +2C49A47FEAC970DC433E3050C49F7FB945A9705BD8852D2D65D935F244D3B423 │ │ │ │ │ +EFAB84AAAAB8FBAFF50AFF372A533BCCEB5FC273DBADCF715776DF02A5DCBA9A │ │ │ │ │ +FBF265FAB4745D6475B33611EEE1EA95E7584E0BEEC7CA789AA69C8D03D6F8C0 │ │ │ │ │ +5B6844E2B901ACA560C0433B053D134866E567425174E47173679AAD4486A2D3 │ │ │ │ │ +369C29E4DD2CD6ACA1BE80ED8FF0A9C58A616D26E758BD8E6342624EC83FB590 │ │ │ │ │ +BD354B52B60BB054FAFE9AC63E1564FBC721FE8F276B0413EC89A2C85E5ED1B0 │ │ │ │ │ +3A9D83BE62A4488ADE7CE69971A8AF7E5862A4290EEF6F00D4171C7FFB360065 │ │ │ │ │ +92E72BF02BE27161AE0BB5516572A0BDC4F316FFB24B38484AC8D1FD4CD86062 │ │ │ │ │ +A2B5D03CF28C3A679C039A6EFDD4C9DA7E463AD60234C9F6BBEE48D87DD94D85 │ │ │ │ │ +842F495F3E25723718682CE4D6224CBBF4456F03077EDF736D65B9DDAB09470E │ │ │ │ │ +17742D82011FFA96BFE86B96E858F9352FCD20C3D46B77DBDEE54336EC2249EA │ │ │ │ │ +211F6DFFF5BEA1E5192BE1BAC0BDD5EDDB3D56C6F7C6E543561A0B39E5C1B04F │ │ │ │ │ +C683A7516B6E69D682455386DDA709929D621FA434D403E895AA0A77DBE1DFD2 │ │ │ │ │ +0D060DF82378880147ED97C6E8149686FA048710B113760AC1DA4512FF8556B3 │ │ │ │ │ +16E2447485B8C3CD58D0469C4A45FFB4CB0322BB284C02 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -5203,26 +5208,26 @@ │ │ │ │ │ 51 3[51 51 4[51 1[51 51 51 3[51 13[51 5[51 3[51 4[51 │ │ │ │ │ 68[{}15 99.6264 /CMTT12 rf /Fc 131[112 1[50 59 59 1[59 │ │ │ │ │ 62 44 44 46 1[62 56 62 93 31 1[34 31 62 56 34 51 62 50 │ │ │ │ │ 62 54 11[86 5[84 5[42 3[74 2[80 7[31 4[56 56 56 56 56 │ │ │ │ │ 2[31 33[62 12[{}37 99.6264 /CMBX12 rf /Fd 134[71 2[71 │ │ │ │ │ 75 52 53 55 1[75 67 75 112 2[41 37 75 67 41 61 75 60 │ │ │ │ │ 75 65 13[75 2[92 11[103 14[67 67 67 67 67 2[37 46[{}29 │ │ │ │ │ -119.552 /CMBX12 rf /Fe 134[48 3[51 2[36 3[51 12[45 22[47 │ │ │ │ │ -15[25 3[45 1[45 1[45 45 45 3[25 44[{}13 90.9091 /CMSL10 │ │ │ │ │ -rf /Ff 141[39 12[39 16[39 14[39 69[{}4 74.7198 /CMTT9 │ │ │ │ │ -rf /Fg 133[34 41 41 55 41 1[30 30 30 1[43 38 43 64 21 │ │ │ │ │ -41 23 21 43 1[23 34 43 34 43 38 12[55 37[21 1[21 31[43 │ │ │ │ │ -12[{}27 74.7198 /CMR9 rf /Fh 206[30 49[{}1 49.8132 /CMR6 │ │ │ │ │ -rf /Fi 132[52 6[41 4[52 58 46[49 63[{}5 90.9091 /CMBX10 │ │ │ │ │ -rf /Fj 148[47 6[47 100[{}2 90.9091 /CMMI10 rf /Fk 134[44 │ │ │ │ │ -2[42 49 30 37 38 1[46 46 51 1[23 42 28 28 46 42 1[42 │ │ │ │ │ -46 42 42 46 12[65 1[66 11[59 62 69 2[68 6[28 7[46 4[33 │ │ │ │ │ -45[{}29 90.9091 /CMTI10 rf /Fl 206[35 49[{}1 66.4176 │ │ │ │ │ -/CMR8 rf │ │ │ │ │ +119.552 /CMBX12 rf /Fe 134[48 3[51 2[36 12[40 2[51 45 │ │ │ │ │ +26[59 11[25 1[45 2[45 2[45 45 45 3[25 44[{}14 90.9091 │ │ │ │ │ +/CMSL10 rf /Ff 141[39 12[39 16[39 14[39 69[{}4 74.7198 │ │ │ │ │ +/CMTT9 rf /Fg 133[34 41 41 55 41 1[30 30 30 1[43 38 43 │ │ │ │ │ +64 21 41 23 21 43 1[23 34 43 34 43 38 12[55 37[21 1[21 │ │ │ │ │ +31[43 12[{}27 74.7198 /CMR9 rf /Fh 206[30 49[{}1 49.8132 │ │ │ │ │ +/CMR6 rf /Fi 132[52 6[41 4[52 58 46[49 63[{}5 90.9091 │ │ │ │ │ +/CMBX10 rf /Fj 148[47 6[47 100[{}2 90.9091 /CMMI10 rf │ │ │ │ │ +/Fk 134[44 2[42 49 30 37 38 1[46 46 51 1[23 42 28 28 │ │ │ │ │ +46 42 1[42 46 42 42 46 12[65 1[66 11[59 62 69 2[68 6[28 │ │ │ │ │ +7[46 4[33 45[{}29 90.9091 /CMTI10 rf /Fl 206[35 49[{}1 │ │ │ │ │ +66.4176 /CMR8 rf │ │ │ │ │ %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 │ │ │ │ │ @@ -5326,58 +5331,58 @@ │ │ │ │ │ 0 5230 1560 4 v 104 5284 a Fh(1)138 5316 y Fg(The)24 │ │ │ │ │ b Ff(ETree)g Fg(ob)t(ject)g(has)f(the)g Ff(Tree)h Fg(ob)t(ject)g(that)f │ │ │ │ │ (de\014nes)f(the)h(connectivit)n(y)g(of)h(the)e(fron)n(ts,)j(kno)n(ws)e │ │ │ │ │ (the)g(in)n(ternal)g(and)g(external)0 5407 y(size)k(of)f(eac)n(h)g │ │ │ │ │ (fron)n(t,)g(and)f(has)h(a)g(map)g(from)g(the)g(v)n(ertices)g(to)g(the) │ │ │ │ │ f(fron)n(ts.)1927 5656 y Fo(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fo(2)p 136 100 1135 4 v │ │ │ │ │ -1317 w Fn(MSMD)29 b Fe(:)i Fk(DRAFT)f Fe(Jan)m(uary)g(16,)h(2024)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 │ │ │ │ │ -(it)i(will)0 760 y(b)s(e)e(eliminated.)141 896 y(Presen)m(tly)40 │ │ │ │ │ -b(there)f(is)h(one)f(ordering)g(metho)s(d,)i Fn(MSMD)p │ │ │ │ │ -2001 896 29 4 v 33 w(order\(\))p Fo(.)65 b(It)40 b(orders)e(the)i(v)m │ │ │ │ │ -(ertices)h(b)m(y)e Fk(stages)p Fo(,)j(i.e.)0 1009 y(v)m(ertices)32 │ │ │ │ │ -b(in)f(stage)h Fj(k)i Fo(will)d(b)s(e)g(ordered)f(b)s(efore)g(v)m │ │ │ │ │ -(ertices)j(in)d(stage)i Fj(k)24 b Fo(+)c(1.)43 b(Inside)30 │ │ │ │ │ -b(eac)m(h)i Fk(stage)f Fo(the)g(v)m(ertices)i(are)0 1122 │ │ │ │ │ -y(ordered)28 b(b)m(y)g Fk(steps)p Fo(.)40 b(A)m(t)29 │ │ │ │ │ -b(eac)m(h)h(step)e(an)g(indep)s(enden)m(t)f(set)h(of)h(v)m(ertices)g │ │ │ │ │ -(is)f(eliminated,)i(and)e(the)g(c)m(hoice)i(is)e(based)0 │ │ │ │ │ -1235 y(on)35 b(their)h(priorities.)56 b(When)35 b(the)h(ordering)f(is)g │ │ │ │ │ -(\014nished)f(one)i(can)f(extract)i(p)s(erm)m(utation)f(v)m(ectors)h │ │ │ │ │ -(of)e(a)h(fron)m(t)0 1348 y(tree.)141 1484 y(Here)22 │ │ │ │ │ -b(are)f(three)h(examples)g(of)f(ho)m(w)g(stages)i(de\014ne)d(an)h │ │ │ │ │ -(ordering)g(metho)s(d.)37 b(\(These)22 b(metho)s(ds)e(are)i(supp)s │ │ │ │ │ -(orted)0 1596 y(b)m(y)30 b(the)h(presen)m(t)f Fn(MSMD)f │ │ │ │ │ -Fo(ob)5 b(ject\).)137 1797 y Fm(\210)45 b Fo(Set)d(the)g(stage)h(of)e │ │ │ │ │ -(eac)m(h)i(v)m(ertex)g(to)f(b)s(e)f(zero)h(and)f(w)m(e)h(ha)m(v)m(e)h │ │ │ │ │ -(a)e(simple)h(minim)m(um)f(degree)h(\(priorit)m(y\))227 │ │ │ │ │ -1910 y(ordering.)137 2094 y Fm(\210)j Fo(Giv)m(en)30 │ │ │ │ │ -b(a)g(domain/Sc)m(h)m(ur)f(complemen)m(t)i(partition)e(or)h(a)f │ │ │ │ │ -(domain/separator)i(tree,)f(w)m(e)g(can)f(\014nd)f(a)i(m)m(ul-)227 │ │ │ │ │ -2207 y(tisection)h(ordering)e(b)m(y)g(setting)h(the)f(stage)h(of)f(a)h │ │ │ │ │ -(v)m(ertex)g(to)g(b)s(e)e(zero)i(if)f(it)g(is)g(a)h(domain)f(or)f(one)i │ │ │ │ │ -(if)f(it)g(is)g(in)227 2320 y(a)i(separator.)137 2503 │ │ │ │ │ -y Fm(\210)45 b Fo(Giv)m(en)g(a)f(domain/separator)h(tree,)k(w)m(e)44 │ │ │ │ │ -b(can)g(\014nd)f(an)h(incomplete)h(nested)f(dissection)g(ordering)g(b)m │ │ │ │ │ -(y)227 2616 y(sp)s(ecifying)30 b(the)h(stage)h(of)e(a)h(v)m(ertex)h(to) │ │ │ │ │ -f(b)s(e)f(the)g(lev)m(el)i(of)f(the)f(separator)h(or)g(domain)f(that)h │ │ │ │ │ -(con)m(tains)g(it.)0 2817 y(Here)g(are)g(three)f(sligh)m(tly)i(more)e │ │ │ │ │ -(complicated)j(examples.)137 3018 y Fm(\210)45 b Fo(Order)34 │ │ │ │ │ -b(the)h(v)m(ertices)h(in)f(the)g(domains,)h(then)e(order)h(the)g(Sc)m │ │ │ │ │ -(h)m(ur)f(complemen)m(t)i(graph)e(b)s(oth)g(b)m(y)h(nested)227 │ │ │ │ │ -3131 y(dissection)27 b(and)f(minim)m(um)g(degree,)i(and)e(then)g │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fo(2)p 136 100 1116 4 v │ │ │ │ │ +1298 w Fn(MSMD)29 b Fe(:)i Fk(DRAFT)f Fe(F)-8 b(ebruary)30 │ │ │ │ │ +b(18,)i(2025)p 2784 100 V 0 399 a Fo(W)-8 b(e)32 b(in)m(tend)e(to)h │ │ │ │ │ +(add)f(more)g(priorities,)h(e.g.,)h(appro)m(ximate)g(de\014ciency)e │ │ │ │ │ +(from)g([)p Fi(?)q Fo(],)h([)p Fi(?)p Fo(])g(and)f([)p │ │ │ │ │ +Fi(?)p Fo(].)141 534 y(Cho)s(ose)37 b(a)h(priorit)m(y)-8 │ │ │ │ │ +b(,)40 b(then)d(sp)s(ecify)g(the)h(de\014nition)f(of)h(a)f │ │ │ │ │ +Fk(step)p Fo(,)j(ho)m(w)e(to)g(c)m(ho)s(ose)g(an)g(indep)s(enden)m(t)e │ │ │ │ │ +(set)i(of)0 647 y(v)m(ertices)32 b(to)g(eliminate)g(at)f(a)g(time.)42 │ │ │ │ │ +b(Then)29 b(pro)m(vide)i(a)g(map)f(from)g(eac)m(h)i(v)m(ertex)g(to)f │ │ │ │ │ +(the)g Fk(stage)g Fo(at)g(whic)m(h)f(it)i(will)0 760 │ │ │ │ │ +y(b)s(e)e(eliminated.)141 896 y(Presen)m(tly)40 b(there)f(is)h(one)f │ │ │ │ │ +(ordering)g(metho)s(d,)i Fn(MSMD)p 2001 896 29 4 v 33 │ │ │ │ │ +w(order\(\))p Fo(.)65 b(It)40 b(orders)e(the)i(v)m(ertices)h(b)m(y)e │ │ │ │ │ +Fk(stages)p Fo(,)j(i.e.)0 1009 y(v)m(ertices)32 b(in)f(stage)h │ │ │ │ │ +Fj(k)i Fo(will)d(b)s(e)g(ordered)f(b)s(efore)g(v)m(ertices)j(in)d │ │ │ │ │ +(stage)i Fj(k)24 b Fo(+)c(1.)43 b(Inside)30 b(eac)m(h)i │ │ │ │ │ +Fk(stage)f Fo(the)g(v)m(ertices)i(are)0 1122 y(ordered)28 │ │ │ │ │ +b(b)m(y)g Fk(steps)p Fo(.)40 b(A)m(t)29 b(eac)m(h)h(step)e(an)g(indep)s │ │ │ │ │ +(enden)m(t)f(set)h(of)h(v)m(ertices)g(is)f(eliminated,)i(and)e(the)g(c) │ │ │ │ │ +m(hoice)i(is)e(based)0 1235 y(on)35 b(their)h(priorities.)56 │ │ │ │ │ +b(When)35 b(the)h(ordering)f(is)g(\014nished)f(one)i(can)f(extract)i(p) │ │ │ │ │ +s(erm)m(utation)f(v)m(ectors)h(of)e(a)h(fron)m(t)0 1348 │ │ │ │ │ +y(tree.)141 1484 y(Here)22 b(are)f(three)h(examples)g(of)f(ho)m(w)g │ │ │ │ │ +(stages)i(de\014ne)d(an)h(ordering)g(metho)s(d.)37 b(\(These)22 │ │ │ │ │ +b(metho)s(ds)e(are)i(supp)s(orted)0 1596 y(b)m(y)30 b(the)h(presen)m(t) │ │ │ │ │ +f Fn(MSMD)f Fo(ob)5 b(ject\).)137 1797 y Fm(\210)45 b │ │ │ │ │ +Fo(Set)d(the)g(stage)h(of)e(eac)m(h)i(v)m(ertex)g(to)f(b)s(e)f(zero)h │ │ │ │ │ +(and)f(w)m(e)h(ha)m(v)m(e)h(a)e(simple)h(minim)m(um)f(degree)h │ │ │ │ │ +(\(priorit)m(y\))227 1910 y(ordering.)137 2094 y Fm(\210)j │ │ │ │ │ +Fo(Giv)m(en)30 b(a)g(domain/Sc)m(h)m(ur)f(complemen)m(t)i(partition)e │ │ │ │ │ +(or)h(a)f(domain/separator)i(tree,)f(w)m(e)g(can)f(\014nd)f(a)i(m)m │ │ │ │ │ +(ul-)227 2207 y(tisection)h(ordering)e(b)m(y)g(setting)h(the)f(stage)h │ │ │ │ │ +(of)f(a)h(v)m(ertex)g(to)g(b)s(e)e(zero)i(if)f(it)g(is)g(a)h(domain)f │ │ │ │ │ +(or)f(one)i(if)f(it)g(is)g(in)227 2320 y(a)i(separator.)137 │ │ │ │ │ +2503 y Fm(\210)45 b Fo(Giv)m(en)g(a)f(domain/separator)h(tree,)k(w)m(e) │ │ │ │ │ +44 b(can)g(\014nd)f(an)h(incomplete)h(nested)f(dissection)g(ordering)g │ │ │ │ │ +(b)m(y)227 2616 y(sp)s(ecifying)30 b(the)h(stage)h(of)e(a)h(v)m(ertex)h │ │ │ │ │ +(to)f(b)s(e)f(the)g(lev)m(el)i(of)f(the)f(separator)h(or)g(domain)f │ │ │ │ │ +(that)h(con)m(tains)g(it.)0 2817 y(Here)g(are)g(three)f(sligh)m(tly)i │ │ │ │ │ +(more)e(complicated)j(examples.)137 3018 y Fm(\210)45 │ │ │ │ │ +b Fo(Order)34 b(the)h(v)m(ertices)h(in)f(the)g(domains,)h(then)e(order) │ │ │ │ │ +h(the)g(Sc)m(h)m(ur)f(complemen)m(t)i(graph)e(b)s(oth)g(b)m(y)h(nested) │ │ │ │ │ +227 3131 y(dissection)27 b(and)f(minim)m(um)g(degree,)i(and)e(then)g │ │ │ │ │ (splice)h(the)f(b)s(etter)h(of)f(the)h(t)m(w)m(o)g(orderings)f │ │ │ │ │ (together)i(with)227 3244 y(the)j(ordering)f(of)g(the)h(domain)f(v)m │ │ │ │ │ (ertices.)137 3427 y Fm(\210)45 b Fo(Apply)30 b(the)h(ab)s(o)m(v)m(e)g │ │ │ │ │ (algorithm)h(to)f(the)f(Sc)m(h)m(ur)g(complemen)m(t)i(graph)d(recursiv) │ │ │ │ │ m(ely)-8 b(.)137 3611 y Fm(\210)45 b Fo(Since)31 b(m)m(ultisection)h │ │ │ │ │ (is)e(nothing)g(more)h(than)f(applying)g(minim)m(um)f(degree)i(to)h │ │ │ │ │ (the)e(Sc)m(h)m(ur)g(complemen)m(t)227 3724 y(graph,)e(randomly)e(p)s │ │ │ │ │ @@ -5397,17 +5402,17 @@ │ │ │ │ │ (ob)5 b(ject.)137 5294 y Fm(\210)45 b Fn(MSMDinfo)25 │ │ │ │ │ b Fo(:)39 b(an)27 b(ob)5 b(ject)28 b(that)f(comm)m(unicate)i(parameter) │ │ │ │ │ f(c)m(hoices)g(from)f(the)g(caller)h(to)g(the)f Fn(MSMD)f │ │ │ │ │ Fo(ob)5 b(ject)227 5407 y(and)30 b(information)h(and)e(statistics)k │ │ │ │ │ (from)d(the)g Fn(MSMD)f Fo(ob)5 b(ject)32 b(to)f(the)f(caller.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 3 3 │ │ │ │ │ -TeXDict begin 3 2 bop 91 100 1135 4 v 1317 100 a Fn(MSMD)29 │ │ │ │ │ -b Fe(:)h Fk(DRAFT)121 b Fe(Jan)m(uary)30 b(16,)i(2024)p │ │ │ │ │ -2718 100 V 1135 w Fo(3)137 399 y Fm(\210)45 b Fn(MSMDstageInfo)25 │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1116 4 v 1298 100 a Fn(MSMD)29 │ │ │ │ │ +b Fe(:)h Fk(DRAFT)121 b Fe(F)-8 b(ebruary)31 b(18,)g(2025)p │ │ │ │ │ +2737 100 V 1116 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 │ │ │ │ │ @@ -5467,22 +5472,22 @@ │ │ │ │ │ (ultiple)f(minim)m(um)e(degree.)330 5294 y Fi({)45 b │ │ │ │ │ Fn(stepType)h(>)h(1)22 b Fo(|)g(an)g(indep)s(enden)m(t)f(set)i(of)f(v)m │ │ │ │ │ (ertices)i(is)e(eliminated)i(whose)e(priorities)g(lie)h(b)s(et)m(w)m │ │ │ │ │ (een)427 5407 y(the)31 b(minim)m(um)e(priorit)m(y)i(and)f(the)h(minim)m │ │ │ │ │ (um)e(priorit)m(y)i(m)m(ultiplied)g(b)m(y)f Fn(stepType)p │ │ │ │ │ Fo(.)p eop end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fo(4)p 136 100 1135 4 v │ │ │ │ │ -1317 w Fn(MSMD)29 b Fe(:)i Fk(DRAFT)f Fe(Jan)m(uary)g(16,)h(2024)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 │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fo(4)p 136 100 1116 4 v │ │ │ │ │ +1298 w Fn(MSMD)29 b Fe(:)i Fk(DRAFT)f Fe(F)-8 b(ebruary)30 │ │ │ │ │ +b(18,)i(2025)p 2784 100 V 227 399 a Fo(The)e(default)h(v)-5 │ │ │ │ │ +b(alue)31 b(is)f Fn(1)p Fo(,)g(m)m(ultiple)h(elimination)h(of)f(v)m │ │ │ │ │ +(ertices)h(with)e(minim)m(um)f(priorit)m(y)-8 b(.)137 │ │ │ │ │ +625 y Fm(\210)45 b Fn(int)i(seed)26 b Fo(|)g(a)h(seed)g(used)f(for)h(a) │ │ │ │ │ +g(random)f(n)m(um)m(b)s(er)f(generator,)k(this)e(in)m(tro)s(duces)f(a)i │ │ │ │ │ +(necessary)f(random)227 738 y(elemen)m(t)32 b(to)f(the)g(ordering.)137 │ │ │ │ │ 964 y Fm(\210)45 b Fn(int)i(msglvl)33 b Fo({)i(message)g(lev)m(el)h │ │ │ │ │ (for)e(statistics,)k(diagnostics)e(and)d(monitoring.)54 │ │ │ │ │ b(The)33 b(default)i(v)-5 b(alue)35 b(is)227 1077 y(zero,)28 │ │ │ │ │ b(no)e(statistics.)41 b(Set)26 b Fn(msglvl)e Fo(to)j(one)f(and)f(get)i │ │ │ │ │ (elimination)g(monitoring.)40 b(Increase)26 b Fn(msglvl)e │ │ │ │ │ Fo(slo)m(wly)227 1190 y(to)31 b(get)h(more)e(mostly)h(debug)f │ │ │ │ │ (information.)137 1416 y Fm(\210)45 b Fn(FILE)i(*msgFile)28 │ │ │ │ │ @@ -5522,17 +5527,17 @@ │ │ │ │ │ Fo(ob)5 b(jects)31 b(that)g(represen)m(t)g(the)f(v)m(ertices.)137 │ │ │ │ │ 5181 y Fm(\210)45 b Fn(IV)i(ivtmpIV)29 b Fo({)i Fn(IV)e │ │ │ │ │ Fo(ob)5 b(ject)32 b(that)f(holds)e(an)i(in)m(teger)g(temp)s(orary)f(v)m │ │ │ │ │ (ector.)137 5407 y Fm(\210)45 b Fn(IV)i(reachIV)29 b │ │ │ │ │ Fo({)i Fn(IV)e Fo(ob)5 b(ject)32 b(that)f(holds)e(the)i(reac)m(h)g(v)m │ │ │ │ │ (ector.)p eop end │ │ │ │ │ %%Page: 5 5 │ │ │ │ │ -TeXDict begin 5 4 bop 91 100 1135 4 v 1317 100 a Fn(MSMD)29 │ │ │ │ │ -b Fe(:)h Fk(DRAFT)121 b Fe(Jan)m(uary)30 b(16,)i(2024)p │ │ │ │ │ -2718 100 V 1135 w Fo(5)0 399 y Fc(1.1.3)112 b Fb(MSMDstageInfo)41 │ │ │ │ │ +TeXDict begin 5 4 bop 91 100 1116 4 v 1298 100 a Fn(MSMD)29 │ │ │ │ │ +b Fe(:)h Fk(DRAFT)121 b Fe(F)-8 b(ebruary)31 b(18,)g(2025)p │ │ │ │ │ +2737 100 V 1116 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 │ │ │ │ │ @@ -5574,25 +5579,25 @@ │ │ │ │ │ h(\(priorit)m(y\))h(heap)330 5112 y Fi({)45 b Fn('R')30 │ │ │ │ │ b Fo({)h(v)m(ertex)g(on)f(reac)m(h)h(set)330 5260 y Fi({)45 │ │ │ │ │ b Fn('I')30 b Fo({)h(v)m(ertex)g(found)e(to)i(b)s(e)f │ │ │ │ │ (indistinguishable)g(to)h(another)330 5407 y Fi({)45 │ │ │ │ │ b Fn('B')30 b Fo({)h(b)s(oundary)d(v)m(ertex,)k(to)f(b)s(e)e │ │ │ │ │ (eliminated)j(in)e(another)h(stage)p eop end │ │ │ │ │ %%Page: 6 6 │ │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fo(6)p 136 100 1135 4 v │ │ │ │ │ -1317 w Fn(MSMD)29 b Fe(:)i Fk(DRAFT)f Fe(Jan)m(uary)g(16,)h(2024)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 │ │ │ │ │ -(ered)g(adjacen)m(t)g(edges;)h(for)227 1058 y(an)e(eliminated)g(v)m │ │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fo(6)p 136 100 1116 4 v │ │ │ │ │ +1298 w Fn(MSMD)29 b Fe(:)i Fk(DRAFT)f Fe(F)-8 b(ebruary)30 │ │ │ │ │ +b(18,)i(2025)p 2784 100 V 137 399 a Fm(\210)45 b Fn(int)i(stage)29 │ │ │ │ │ +b Fo(|)h(stage)i(of)f(the)f(v)m(ertex.)42 b(Stage)32 │ │ │ │ │ +b(0)e(no)s(des)g(are)h(eliminated)g(b)s(efore)f(stage)i(1)f(no)s(des,)e │ │ │ │ │ +(etc.)137 581 y Fm(\210)45 b Fn(int)i(wght)29 b Fo(|)i(w)m(eigh)m(t)g │ │ │ │ │ +(of)g(the)g(v)m(ertex)137 763 y Fm(\210)45 b Fn(int)i(nadj)29 │ │ │ │ │ +b Fo(|)i(size)g(of)f(the)h Fn(adj)e Fo(v)m(ector)137 │ │ │ │ │ +945 y Fm(\210)45 b Fn(int)i(*adj)27 b Fo(|)i(for)f(an)g(uneliminated)g │ │ │ │ │ +(v)m(ertex,)j Fn(adj)c Fo(p)s(oin)m(ts)h(to)h(a)g(list)g(of)g(unco)m(v) │ │ │ │ │ +m(ered)g(adjacen)m(t)g(edges;)h(for)227 1058 y(an)e(eliminated)g(v)m │ │ │ │ │ (ertex,)i Fn(adj)d Fo(p)s(oin)m(ts)g(p)s(oin)m(ts)g(to)i(a)f(list)g(of) │ │ │ │ │ g(its)f(b)s(oundary)f(v)m(ertices)j(\(only)f(v)-5 b(alid)28 │ │ │ │ │ b(when)f(the)227 1171 y(v)m(ertex)32 b(is)e(a)h(leaf)g(of)g(the)f │ │ │ │ │ (elimination)i(tree)f(or)f(a)h(ro)s(ot)g(of)f(a)h(subtree)f(of)h │ │ │ │ │ (uneliminated)f(v)m(ertices\).)137 1353 y Fm(\210)45 │ │ │ │ │ b Fn(int)i(bndwght)29 b Fo(|)h(for)g(an)g(eliminated)i(v)m(ertex,)f │ │ │ │ │ (the)g(w)m(eigh)m(t)h(of)e(the)h(v)m(ertices)h(on)e(its)h(b)s(oundary) │ │ │ │ │ @@ -5641,17 +5646,17 @@ │ │ │ │ │ (a)h(call)g(to)g Fn(MSMDinfo)p 2440 5147 V 32 w(clearData\(\))d │ │ │ │ │ Fo(then)i(free's)g(the)g(storage)227 5260 y(for)h(the)h(structure)f │ │ │ │ │ (with)g(a)h(call)g(to)g Fn(free\(\))p Fo(.)227 5407 y │ │ │ │ │ Fk(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fo(If)30 b Fn(info)g │ │ │ │ │ Fo(is)g Fn(NULL)p Fo(,)f(an)i(error)f(message)h(is)g(prin)m(ted)f(and)f │ │ │ │ │ (the)i(program)f(exits.)p eop end │ │ │ │ │ %%Page: 7 7 │ │ │ │ │ -TeXDict begin 7 6 bop 91 100 1135 4 v 1317 100 a Fn(MSMD)29 │ │ │ │ │ -b Fe(:)h Fk(DRAFT)121 b Fe(Jan)m(uary)30 b(16,)i(2024)p │ │ │ │ │ -2718 100 V 1135 w Fo(7)0 399 y Fc(1.2.2)112 b(Utilit)m(y)38 │ │ │ │ │ +TeXDict begin 7 6 bop 91 100 1116 4 v 1298 100 a Fn(MSMD)29 │ │ │ │ │ +b Fe(:)h Fk(DRAFT)121 b Fe(F)-8 b(ebruary)31 b(18,)g(2025)p │ │ │ │ │ +2737 100 V 1116 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 │ │ │ │ │ @@ -5704,25 +5709,25 @@ │ │ │ │ │ (a)g(call)i(to)e Fn(MSMD)p 2282 5143 V 34 w(clearData\(\))c │ │ │ │ │ Fo(then)k(free's)g(the)h(storage)g(for)227 5256 y(the)d(structure)f │ │ │ │ │ (with)g(a)h(call)g(to)g Fn(free\(\))p Fo(.)227 5407 y │ │ │ │ │ Fk(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fo(If)30 b Fn(msmd)g │ │ │ │ │ Fo(is)g Fn(NULL)p Fo(,)f(an)i(error)f(message)h(is)g(prin)m(ted)f(and)f │ │ │ │ │ (the)i(program)f(exits.)p eop end │ │ │ │ │ %%Page: 8 8 │ │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fo(8)p 136 100 1135 4 v │ │ │ │ │ -1317 w Fn(MSMD)29 b Fe(:)i Fk(DRAFT)f Fe(Jan)m(uary)g(16,)h(2024)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 │ │ │ │ │ -(tly)f(a)h Fk(private)g Fo(metho)s(d)e(for)h(the)h(ob)5 │ │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fo(8)p 136 100 1116 4 v │ │ │ │ │ +1298 w Fn(MSMD)29 b Fe(:)i Fk(DRAFT)f Fe(F)-8 b(ebruary)30 │ │ │ │ │ +b(18,)i(2025)p 2784 100 V 0 399 a Fc(1.3.2)112 b(Initialization)39 │ │ │ │ │ +b(metho)s(ds)f(|)g(public)0 595 y Fo(There)30 b(is)g(one)h │ │ │ │ │ +(initialization)i(metho)s(d.)111 834 y(1.)46 b Fn(void)h(MSMD_init)e │ │ │ │ │ +(\()j(MSMD)e(*msmd,)g(Graph)h(*graph,)f(int)g(stages[],)g(MSMD)g(*info) │ │ │ │ │ +h(\))g(;)227 985 y Fo(This)35 b(metho)s(d)h(initializes)i(the)e │ │ │ │ │ +Fn(MSMD)f Fo(ob)5 b(ject)37 b(prior)e(to)i(an)e(ordering.)58 │ │ │ │ │ +b(It)36 b(is)g(called)h(b)m(y)f Fn(MSMD)p 3539 985 29 │ │ │ │ │ +4 v 33 w(order\(\))227 1098 y Fo(metho)s(d,)25 b(and)f(so)h(it)f(is)h │ │ │ │ │ +(curren)m(tly)f(a)h Fk(private)g Fo(metho)s(d)e(for)h(the)h(ob)5 │ │ │ │ │ b(ject.)39 b(Ho)m(w)m(ev)m(er,)28 b(when)23 b(designing)i(more)227 │ │ │ │ │ 1211 y(complicated)34 b(ordering)e(metho)s(ds,)g(this)g(ob)5 │ │ │ │ │ b(ject)34 b(is)e(necessary)g(to)h(set)g(up)e(the)i(data)g(structures.) │ │ │ │ │ 45 b(There)227 1324 y(are)30 b(t)m(w)m(o)g(input)e(argumen)m(ts:)41 │ │ │ │ │ b Fn(graph)27 b Fo(is)i(a)h(p)s(oin)m(ter)f(to)h(a)f │ │ │ │ │ Fn(Graph)f Fo(ob)5 b(ject)30 b(that)g(holds)e(the)i(adjacency)f(lists) │ │ │ │ │ 227 1436 y(and)g(w)m(eigh)m(ts)h(of)g(the)f(v)m(ertices,)i(and)e │ │ │ │ │ @@ -5781,17 +5786,17 @@ │ │ │ │ │ Fo(,)e(this)h(metho)s(d)g(\014lls)g(the)g Fn(IV)f Fo(ob)5 │ │ │ │ │ b(ject)34 b(with)f(the)h(new-to-old)g(p)s(erm)m(utation)227 │ │ │ │ │ 5407 y(of)i(the)f(v)m(ertices,)j(resizing)e(the)f Fn(IV)g │ │ │ │ │ Fo(ob)5 b(ject)36 b(if)f(necessary)-8 b(.)56 b(If)34 │ │ │ │ │ b Fn(oldToNewIV)f Fo(is)i(not)g Fn(NULL)p Fo(,)f(this)h(metho)s(d)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 9 9 │ │ │ │ │ -TeXDict begin 9 8 bop 91 100 1135 4 v 1317 100 a Fn(MSMD)29 │ │ │ │ │ -b Fe(:)h Fk(DRAFT)121 b Fe(Jan)m(uary)30 b(16,)i(2024)p │ │ │ │ │ -2718 100 V 1135 w Fo(9)227 399 y(\014lls)i(the)h Fn(IV)f │ │ │ │ │ +TeXDict begin 9 8 bop 91 100 1116 4 v 1298 100 a Fn(MSMD)29 │ │ │ │ │ +b Fe(:)h Fk(DRAFT)121 b Fe(F)-8 b(ebruary)31 b(18,)g(2025)p │ │ │ │ │ +2737 100 V 1116 w Fo(9)227 399 y(\014lls)j(the)h Fn(IV)f │ │ │ │ │ Fo(ob)5 b(ject)35 b(with)f(the)g(old-to-new)i(p)s(erm)m(utation)e(of)h │ │ │ │ │ (the)f(v)m(ertices,)k(resizing)d(the)f Fn(IV)g Fo(ob)5 │ │ │ │ │ b(ject)35 b(if)227 511 y(necessary)-8 b(.)227 661 y Fk(Err)j(or)33 │ │ │ │ │ b(che)-5 b(cking:)40 b Fo(If)28 b Fn(msmd)g Fo(is)h Fn(NULL)p │ │ │ │ │ Fo(,)f(or)h(if)g Fn(newToOldIV)d Fo(and)j Fn(oldToNewIV)d │ │ │ │ │ Fo(is)j Fn(NULL)p Fo(,)f(an)h(error)g(message)227 774 │ │ │ │ │ y(is)i(prin)m(ted)f(and)f(the)i(program)f(exits.)111 │ │ │ │ │ @@ -5849,39 +5854,39 @@ │ │ │ │ │ 29 4 v 33 w(cleanSubtreeList\(\))37 b Fo(and)227 5258 │ │ │ │ │ y Fn(MSMD)p 425 5258 V 34 w(clearEdgeList\(\))p Fo(.)227 │ │ │ │ │ 5407 y Fk(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fo(If)30 │ │ │ │ │ b Fn(msmd)g Fo(or)g Fn(info)f Fo(is)i Fn(NULL)p Fo(,)e(an)h(error)g │ │ │ │ │ (message)i(is)e(prin)m(ted)g(and)g(the)g(program)h(exits.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 10 10 │ │ │ │ │ -TeXDict begin 10 9 bop 0 100 a Fo(10)p 182 100 1113 4 │ │ │ │ │ -v 1295 w Fn(MSMD)29 b Fe(:)i Fk(DRAFT)f Fe(Jan)m(uary)g(16,)h(2024)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 │ │ │ │ │ -(prin)m(ted)g(and)h(the)f(program)h(exits.)111 993 y(7.)46 │ │ │ │ │ -b Fn(void)h(MSMD_cleanEdgeList)c(\()k(MSMD)g(*msmd,)f(MSMDvtx)g(*v,)h │ │ │ │ │ -(MSMD)f(*info)h(\))g(;)227 1141 y Fo(This)29 b(metho)s(d)h(cleans)g │ │ │ │ │ -(the)g(list)h(of)f(unco)m(v)m(ered)g(edges)g(for)g(v)m(ertex)h │ │ │ │ │ -Fn(v)p Fo(,)f(remo)m(ving)g(an)m(y)h(edge)f Fn(\(v,w\))e │ │ │ │ │ -Fo(where)227 1254 y Fn(v)i Fo(and)g Fn(w)g Fo(share)g(a)h(common)g │ │ │ │ │ -(adjacen)m(t)g(subtree.)227 1403 y Fk(Err)-5 b(or)30 │ │ │ │ │ -b(che)-5 b(cking:)38 b Fo(If)25 b Fn(msmd)p Fo(,)h Fn(v)f │ │ │ │ │ -Fo(or)h Fn(info)e Fo(is)i Fn(NULL)p Fo(,)f(an)g(error)h(message)h(is)e │ │ │ │ │ -(prin)m(ted)g(and)h(the)f(program)h(exits.)111 1587 y(8.)46 │ │ │ │ │ -b Fn(void)h(MSMD_update)e(\()i(MSMD)g(*msmd,)f(MSMD)g(*info)h(\))g(;) │ │ │ │ │ -227 1735 y Fo(This)30 b(metho)s(d)g(up)s(dates)f(the)i(priorities)f(of) │ │ │ │ │ -h(all)g(no)s(des)f(in)g(the)g(reac)m(h)i(set.)227 1884 │ │ │ │ │ -y Fk(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fo(If)30 b │ │ │ │ │ -Fn(msmd)g Fo(or)g Fn(info)f Fo(is)i Fn(NULL)p Fo(,)e(an)h(error)g │ │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fo(10)p 182 100 1093 4 │ │ │ │ │ +v 1276 w Fn(MSMD)29 b Fe(:)h Fk(DRAFT)h Fe(F)-8 b(ebruary)30 │ │ │ │ │ +b(18,)h(2025)p 2807 100 V 111 399 a Fo(6.)46 b Fn(void)h │ │ │ │ │ +(MSMD_cleanSubtreeList)42 b(\()47 b(MSMD)g(*msmd,)f(MSMDvtx)g(*v,)h │ │ │ │ │ +(MSMD)f(*info)h(\))g(;)227 547 y Fo(This)34 b(metho)s(d)h(cleans)h(the) │ │ │ │ │ +f(list)h(of)f(subtrees)f(for)h(v)m(ertex)h Fn(v)p Fo(,)g(remo)m(ving)g │ │ │ │ │ +(an)m(y)f(no)s(de)g(whic)m(h)f(is)h(no)g(longer)227 660 │ │ │ │ │ +y(the)c(ro)s(ot)g(of)f(a)h(subtree)f(of)g(eliminated)i(no)s(des.)227 │ │ │ │ │ +809 y Fk(Err)-5 b(or)30 b(che)-5 b(cking:)38 b Fo(If)25 │ │ │ │ │ +b Fn(msmd)p Fo(,)h Fn(v)f Fo(or)h Fn(info)e Fo(is)i Fn(NULL)p │ │ │ │ │ +Fo(,)f(an)g(error)h(message)h(is)e(prin)m(ted)g(and)h(the)f(program)h │ │ │ │ │ +(exits.)111 993 y(7.)46 b Fn(void)h(MSMD_cleanEdgeList)c(\()k(MSMD)g │ │ │ │ │ +(*msmd,)f(MSMDvtx)g(*v,)h(MSMD)f(*info)h(\))g(;)227 1141 │ │ │ │ │ +y Fo(This)29 b(metho)s(d)h(cleans)g(the)g(list)h(of)f(unco)m(v)m(ered)g │ │ │ │ │ +(edges)g(for)g(v)m(ertex)h Fn(v)p Fo(,)f(remo)m(ving)g(an)m(y)h(edge)f │ │ │ │ │ +Fn(\(v,w\))e Fo(where)227 1254 y Fn(v)i Fo(and)g Fn(w)g │ │ │ │ │ +Fo(share)g(a)h(common)g(adjacen)m(t)g(subtree.)227 1403 │ │ │ │ │ +y Fk(Err)-5 b(or)30 b(che)-5 b(cking:)38 b Fo(If)25 b │ │ │ │ │ +Fn(msmd)p Fo(,)h Fn(v)f Fo(or)h Fn(info)e Fo(is)i Fn(NULL)p │ │ │ │ │ +Fo(,)f(an)g(error)h(message)h(is)e(prin)m(ted)g(and)h(the)f(program)h │ │ │ │ │ +(exits.)111 1587 y(8.)46 b Fn(void)h(MSMD_update)e(\()i(MSMD)g(*msmd,)f │ │ │ │ │ +(MSMD)g(*info)h(\))g(;)227 1735 y Fo(This)30 b(metho)s(d)g(up)s(dates)f │ │ │ │ │ +(the)i(priorities)f(of)h(all)g(no)s(des)f(in)g(the)g(reac)m(h)i(set.) │ │ │ │ │ +227 1884 y Fk(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fo(If)30 │ │ │ │ │ +b Fn(msmd)g Fo(or)g Fn(info)f Fo(is)i Fn(NULL)p Fo(,)e(an)h(error)g │ │ │ │ │ (message)i(is)e(prin)m(ted)g(and)g(the)g(program)h(exits.)111 │ │ │ │ │ 2068 y(9.)46 b Fn(int)h(MSMD_exactDegree2)c(\()48 b(MSMD)e(*msmd,)g │ │ │ │ │ (MSMDvtx)g(*v,)h(MSMD)g(*info)f(\))i(;)227 2217 y Fo(This)30 │ │ │ │ │ b(metho)s(d)g(computes)g(and)g(returns)f(the)i(exact)h(external)f │ │ │ │ │ (degree)g(for)f(v)m(ertex)i Fn(v)p Fo(.)227 2365 y Fk(Err)-5 │ │ │ │ │ b(or)30 b(che)-5 b(cking:)38 b Fo(If)25 b Fn(msmd)p Fo(,)h │ │ │ │ │ Fn(v)f Fo(or)h Fn(info)e Fo(is)i Fn(NULL)p Fo(,)f(an)g(error)h(message) │ │ │ │ │ @@ -5924,17 +5929,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 1113 4 v 1294 100 a Fn(MSMD)29 │ │ │ │ │ -b Fe(:)i Fk(DRAFT)121 b Fe(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2695 100 V 1113 w Fo(11)0 399 y Fd(1.5)135 b(Driv)l(er)46 │ │ │ │ │ +TeXDict begin 11 10 bop 91 100 1093 4 v 1275 100 a Fn(MSMD)29 │ │ │ │ │ +b Fe(:)i Fk(DRAFT)121 b Fe(F)-8 b(ebruary)30 b(18,)h(2025)p │ │ │ │ │ +2714 100 V 1093 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 │ │ │ │ │ @@ -5996,20 +6001,20 @@ │ │ │ │ │ Fn(IV)e Fo(ob)5 b(ject)40 b(that)f(con)m(tains)427 5294 │ │ │ │ │ y(the)34 b(old-to-new)h(p)s(erm)m(utation)f(v)m(ector.)52 │ │ │ │ │ b(If)34 b Fn(outOldToNewIVfile)29 b Fo(is)34 b Fn("none")p │ │ │ │ │ Fo(,)f(then)g(there)h(is)g(no)427 5407 y(output,)d(otherwise)f │ │ │ │ │ Fn(outOldToNewIVfile)c Fo(m)m(ust)k(b)s(e)g(of)g(the)h(form)f │ │ │ │ │ Fn(*.ivf)f Fo(or)h Fn(*.ivb)p Fo(.)p eop end │ │ │ │ │ %%Page: 12 12 │ │ │ │ │ -TeXDict begin 12 11 bop 0 100 a Fo(12)p 182 100 1113 │ │ │ │ │ -4 v 1295 w Fn(MSMD)29 b Fe(:)i Fk(DRAFT)f Fe(Jan)m(uary)g(16,)h(2024)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 │ │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fo(12)p 182 100 1093 │ │ │ │ │ +4 v 1276 w Fn(MSMD)29 b Fe(:)h Fk(DRAFT)h Fe(F)-8 b(ebruary)30 │ │ │ │ │ +b(18,)h(2025)p 2807 100 V 337 399 a Fm(\210)45 b Fo(The)38 │ │ │ │ │ +b Fn(outNewToOldIVfile)c Fo(parameter)39 b(is)f(the)h(output)f(\014le)h │ │ │ │ │ +(for)f(the)h Fn(IV)e Fo(ob)5 b(ject)40 b(that)f(con)m(tains)427 │ │ │ │ │ +511 y(the)34 b(new-to-old)h(p)s(erm)m(utation)f(v)m(ector.)52 │ │ │ │ │ b(If)34 b Fn(outNewToOldIVfile)29 b Fo(is)34 b Fn("none")p │ │ │ │ │ Fo(,)f(then)g(there)h(is)g(no)427 624 y(output,)d(otherwise)f │ │ │ │ │ Fn(outNewToOldIVfile)c Fo(m)m(ust)k(b)s(e)g(of)g(the)h(form)f │ │ │ │ │ Fn(*.ivf)f Fo(or)h Fn(*.ivb)p Fo(.)337 770 y Fm(\210)45 │ │ │ │ │ b Fo(The)33 b Fn(outETreeFile)d Fo(parameter)j(is)g(the)h(output)f │ │ │ │ │ (\014le)g(for)g(the)g Fn(ETree)f Fo(ob)5 b(ject)34 b(that)f(con)m │ │ │ │ │ (tains)i(the)427 883 y(fron)m(t)23 b(tree)g(for)f(the)g(ordering.)38 │ │ │ │ │ ├── ps2ascii {} │ │ │ │ │ │ @@ -21,15 +21,15 @@ │ │ │ │ │ │ • approximate external degree, (d from [?]) and [?], or │ │ │ │ │ │ ˜ │ │ │ │ │ │ • half external and half approximate, (d from [?]), or │ │ │ │ │ │ • a constant priority (to induce maximal independent set elimination). │ │ │ │ │ │ 1The ETree object has the Tree object that defines the connectivity of the fronts, knows the internal and external │ │ │ │ │ │ size of each front, and has a map from the vertices to the fronts. │ │ │ │ │ │ 1 │ │ │ │ │ │ - 2 MSMD : DRAFT January 16, 2024 │ │ │ │ │ │ + 2 MSMD : DRAFT February 18, 2025 │ │ │ │ │ │ We intend to add more priorities, e.g., approximate deficiency from [?], [?] and [?]. │ │ │ │ │ │ Choose a priority, then specify the definition of a step, how to choose an independent set of │ │ │ │ │ │ vertices to eliminate at a time. Then provide a map from each vertex to the stage at which it will │ │ │ │ │ │ be eliminated. │ │ │ │ │ │ Presently there is one ordering method, MSMD order(). It orders the vertices by stages, i.e. │ │ │ │ │ │ vertices in stage k will be ordered before vertices in stage k + 1. Inside each stage the vertices are │ │ │ │ │ │ ordered by steps. At each step an independent set of vertices is eliminated, and the choice is based │ │ │ │ │ │ @@ -57,15 +57,15 @@ │ │ │ │ │ │ The tools are largely written so any of these three algorithms can be prototyped in a small amount │ │ │ │ │ │ of time and effort. │ │ │ │ │ │ 1.1 Data Structure │ │ │ │ │ │ There are four typed objects. │ │ │ │ │ │ • MSMD : the main object. │ │ │ │ │ │ • MSMDinfo : an object that communicate parameter choices from the caller to the MSMD object │ │ │ │ │ │ and information and statistics from the MSMD object to the caller. │ │ │ │ │ │ - MSMD : DRAFT January 16, 2024 3 │ │ │ │ │ │ + MSMD : DRAFT February 18, 2025 3 │ │ │ │ │ │ • MSMDstageInfo : an object that contains statistics for a stage of elimination, e.g., number of │ │ │ │ │ │ steps, number of vertices eliminated, weight of vertices eliminated, etc. │ │ │ │ │ │ • MSMDvtx : an object that models a vertex. │ │ │ │ │ │ Auser needs to understand the MSMDinfo object, so this is where we will start our description. │ │ │ │ │ │ 1.1.1 MSMDinfo : define your algorithm │ │ │ │ │ │ • int compressFlag – define initial and subsequent compressions of the graph. │ │ │ │ │ │ Wecompress a graph using a checksum technique. At some point in the elimination, vertices │ │ │ │ │ │ @@ -93,15 +93,15 @@ │ │ │ │ │ │ • double stepType — define the elimination steps. │ │ │ │ │ │ – stepType == 0 — only one vertex of minimum priority is eliminated at each step, e.g., │ │ │ │ │ │ as used in SPARSPAK’s GENQMD, YSMP’s ordering, and AMD [?]. │ │ │ │ │ │ – stepType == 1 — an independent set of vertices of minimum priority is eliminated at │ │ │ │ │ │ each step, e.g., as used in GENMMD, multiple minimum degree. │ │ │ │ │ │ – stepType > 1—anindependentsetofvertices iseliminated whoseprioritieslie between │ │ │ │ │ │ the minimum priority and the minimum priority multiplied by stepType. │ │ │ │ │ │ - 4 MSMD : DRAFT January 16, 2024 │ │ │ │ │ │ + 4 MSMD : DRAFT February 18, 2025 │ │ │ │ │ │ The default value is 1, multiple elimination of vertices with minimum priority. │ │ │ │ │ │ • int seed — a seed used for a random number generator, this introduces a necessary random │ │ │ │ │ │ element to the ordering. │ │ │ │ │ │ • int msglvl – message level for statistics, diagnostics and monitoring. The default value is │ │ │ │ │ │ zero, no statistics. Set msglvl to one and get elimination monitoring. Increase msglvl slowly │ │ │ │ │ │ to get more mostly debug information. │ │ │ │ │ │ • FILE *msgFile – message file, default is stdout. │ │ │ │ │ │ @@ -119,15 +119,15 @@ │ │ │ │ │ │ • IIheap *heap – pointer to a IIheap object that maintains the priority queue. │ │ │ │ │ │ • IP *baseIP – pointer to the base IP objects, used to hold subtree lists │ │ │ │ │ │ • IP *freeIP – pointer to the list of free IP objects │ │ │ │ │ │ • int incrIP – integer that holds the increment factor for the IP objects. │ │ │ │ │ │ • MSMDvtx *vertices – pointer to vector of MSMDvtx objects that represent the vertices. │ │ │ │ │ │ • IV ivtmpIV – IV object that holds an integer temporary vector. │ │ │ │ │ │ • IV reachIV – IV object that holds the reach vector. │ │ │ │ │ │ - MSMD : DRAFT January 16, 2024 5 │ │ │ │ │ │ + MSMD : DRAFT February 18, 2025 5 │ │ │ │ │ │ 1.1.3 MSMDstageInfo : statistics object for a stage of the elimination │ │ │ │ │ │ This object stores information about the elimination process at a stage of the elimination. │ │ │ │ │ │ • int nstep — number of elimination steps in this stage │ │ │ │ │ │ • int nfront — number of fronts created at this stage │ │ │ │ │ │ • int welim — weight of the vertices eliminated at this stage │ │ │ │ │ │ • int nfind — number of front indices │ │ │ │ │ │ • int nzf — number of factor entries (for a Cholesky factorization) │ │ │ │ │ │ @@ -148,15 +148,15 @@ │ │ │ │ │ │ – ’L’ – eliminated leaf vertex │ │ │ │ │ │ – ’E’ – eliminated interior vertex │ │ │ │ │ │ – ’O’ – outmatched vertex │ │ │ │ │ │ – ’D’ – vertex on degree (priority) heap │ │ │ │ │ │ – ’R’ – vertex on reach set │ │ │ │ │ │ – ’I’ – vertex found to be indistinguishable to another │ │ │ │ │ │ – ’B’ – boundary vertex, to be eliminated in another stage │ │ │ │ │ │ - 6 MSMD : DRAFT January 16, 2024 │ │ │ │ │ │ + 6 MSMD : DRAFT February 18, 2025 │ │ │ │ │ │ • int stage — stage of the vertex. Stage 0 nodes are eliminated before stage 1 nodes, etc. │ │ │ │ │ │ • int wght — weight of the vertex │ │ │ │ │ │ • int nadj — size of the adj vector │ │ │ │ │ │ • int *adj — for an uneliminated vertex, adj points to a list of uncovered adjacent edges; for │ │ │ │ │ │ an eliminated vertex, adj points points to a list of its boundary vertices (only valid when the │ │ │ │ │ │ vertex is a leaf of the elimination tree or a root of a subtree of uneliminated vertices). │ │ │ │ │ │ • int bndwght — for an eliminated vertex, the weight of the vertices on its boundary. │ │ │ │ │ │ @@ -181,15 +181,15 @@ │ │ │ │ │ │ This method clears any data owned by the object and then sets the structure’s default fields │ │ │ │ │ │ with a call to MSMDinfo setDefaultFields(). │ │ │ │ │ │ Error checking: If info is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 4. void MSMDinfo_free ( MSMDinfo *info ) ; │ │ │ │ │ │ This method releases any storage by a call to MSMDinfo clearData() then free’s the storage │ │ │ │ │ │ for the structure with a call to free(). │ │ │ │ │ │ Error checking: If info is NULL, an error message is printed and the program exits. │ │ │ │ │ │ - MSMD : DRAFT January 16, 2024 7 │ │ │ │ │ │ + MSMD : DRAFT February 18, 2025 7 │ │ │ │ │ │ 1.2.2 Utility methods │ │ │ │ │ │ There are two utility methods, one to print the object, one to check to see if it is valid. │ │ │ │ │ │ 1. void MSMDinfo_print ( MSMDinfo *info, FILE *fp ) ; │ │ │ │ │ │ This method prints out the information to a file. │ │ │ │ │ │ Error checking: If info or fp is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 2. int MSMDinfo_isValid ( MSMDinfo *info ) ; │ │ │ │ │ │ This method checks that the object is valid. The return value is 1 for a valid object, 0 for an │ │ │ │ │ │ @@ -213,15 +213,15 @@ │ │ │ │ │ │ This method clears any data owned by the object, then sets the structure’s default fields with │ │ │ │ │ │ a call to MSMD setDefaultFields(). │ │ │ │ │ │ Error checking: If msmd is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 4. void MSMD_free ( MSMD *msmd ) ; │ │ │ │ │ │ This method releases any storage by a call to MSMD clearData() then free’s the storage for │ │ │ │ │ │ the structure with a call to free(). │ │ │ │ │ │ Error checking: If msmd is NULL, an error message is printed and the program exits. │ │ │ │ │ │ - 8 MSMD : DRAFT January 16, 2024 │ │ │ │ │ │ + 8 MSMD : DRAFT February 18, 2025 │ │ │ │ │ │ 1.3.2 Initialization methods — public │ │ │ │ │ │ There is one initialization method. │ │ │ │ │ │ 1. void MSMD_init ( MSMD *msmd, Graph *graph, int stages[], MSMD *info ) ; │ │ │ │ │ │ This method initializes the MSMD object prior to an ordering. It is called by MSMD order() │ │ │ │ │ │ method, and so it is currently a private method for the object. However, when designing more │ │ │ │ │ │ complicated ordering methods, this object is necessary to set up the data structures. There │ │ │ │ │ │ are two input arguments: graph is a pointer to a Graph object that holds the adjacency lists │ │ │ │ │ │ @@ -249,15 +249,15 @@ │ │ │ │ │ │ 1.3.4 Extraction methods — public │ │ │ │ │ │ There are two methods to extract the ordering. The first fills one or two IV objects with the │ │ │ │ │ │ permutation vector(s). The second returns an ETree object that holds the front tree for the │ │ │ │ │ │ ordering. │ │ │ │ │ │ 1. void MSMD_fillPerms ( MSMD *msmd, IV *newToOldIV, IV *oldToNewIV ) ; │ │ │ │ │ │ If newToOldIV is not NULL, this method fills the IV object with the new-to-old permutation │ │ │ │ │ │ of the vertices, resizing the IV object if necessary. If oldToNewIV is not NULL, this method │ │ │ │ │ │ - MSMD : DRAFT January 16, 2024 9 │ │ │ │ │ │ + MSMD : DRAFT February 18, 2025 9 │ │ │ │ │ │ fills the IV object with the old-to-new permutation of the vertices, resizing the IV object if │ │ │ │ │ │ necessary. │ │ │ │ │ │ Error checking: If msmd is NULL, or if newToOldIV and oldToNewIV is NULL, an error message │ │ │ │ │ │ is printed and the program exits. │ │ │ │ │ │ 2. ETree * MSMD_frontETree ( MSMD *msmd ) ; │ │ │ │ │ │ This method constructs and returns a ETree object that contains the front tree for the │ │ │ │ │ │ ordering. │ │ │ │ │ │ @@ -283,15 +283,15 @@ │ │ │ │ │ │ The order of the nodes in the reach set may be permuted, but any indistinguishable nodes in │ │ │ │ │ │ the reach set are not purged from the reach set. │ │ │ │ │ │ Error checking: If msmd or info is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 5. void MSMD_cleanReachSet ( MSMD *msmd, MSMD *info ) ; │ │ │ │ │ │ This method cleans the nodes in the reach set by calling MSMD cleanSubtreeList() and │ │ │ │ │ │ MSMD clearEdgeList(). │ │ │ │ │ │ Error checking: If msmd or info is NULL, an error message is printed and the program exits. │ │ │ │ │ │ - 10 MSMD : DRAFT January 16, 2024 │ │ │ │ │ │ + 10 MSMD : DRAFT February 18, 2025 │ │ │ │ │ │ 6. void MSMD_cleanSubtreeList ( MSMD *msmd, MSMDvtx *v, MSMD *info ) ; │ │ │ │ │ │ This method cleans the list of subtrees for vertex v, removing any node which is no longer │ │ │ │ │ │ the root of a subtree of eliminated nodes. │ │ │ │ │ │ Error checking: If msmd, v or info is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 7. void MSMD_cleanEdgeList ( MSMD *msmd, MSMDvtx *v, MSMD *info ) ; │ │ │ │ │ │ This method cleans the list of uncovered edges for vertex v, removing any edge (v,w) where │ │ │ │ │ │ v and w share a common adjacent subtree. │ │ │ │ │ │ @@ -317,15 +317,15 @@ │ │ │ │ │ │ the program exits. │ │ │ │ │ │ 1.4 Prototypes and descriptions of MSMDvtx methods │ │ │ │ │ │ TheMSMDvtxobject is private so would not normally be accessed by the user. There is one method │ │ │ │ │ │ to print out the object. │ │ │ │ │ │ 1. void MSMDvtx_print ( MSMDvtx *v, FILE *fp ) ; │ │ │ │ │ │ This method prints a human-readable representation of a vertex, used for debugging. │ │ │ │ │ │ Error checking: If v or fp is NULL, an error message is printed and the program exits. │ │ │ │ │ │ - MSMD : DRAFT January 16, 2024 11 │ │ │ │ │ │ + MSMD : DRAFT February 18, 2025 11 │ │ │ │ │ │ 1.5 Driver programs for the MSMD object │ │ │ │ │ │ This section contains brief descriptions of four driver programs. │ │ │ │ │ │ 1. orderViaMMD msglvl msgFile inGraphFile seed compressFlag prioType │ │ │ │ │ │ stepType outOldToNewIVfile outNewToOldIVfile outETreeFile │ │ │ │ │ │ This driver program orders a graph using the multiple minimum degree algorithm — exactly │ │ │ │ │ │ which algorithm is controlled by the input parameters. │ │ │ │ │ │ • The msglvl parameter determines the amount of output. │ │ │ │ │ │ @@ -355,15 +355,15 @@ │ │ │ │ │ │ SPARSPAK. │ │ │ │ │ │ – stepType == 1 — regular multiple elimination, e.g., GENMMD. │ │ │ │ │ │ – stepType > 1 — vertices whose priority lies between the minimum priority and │ │ │ │ │ │ stepType times the minimum priority are eligible for elimination at a step. │ │ │ │ │ │ • The outOldToNewIVfile parameter is the output file for the IV object that contains │ │ │ │ │ │ the old-to-new permutation vector. If outOldToNewIVfile is "none", then there is no │ │ │ │ │ │ output, otherwise outOldToNewIVfile must be of the form *.ivf or *.ivb. │ │ │ │ │ │ - 12 MSMD : DRAFT January 16, 2024 │ │ │ │ │ │ + 12 MSMD : DRAFT February 18, 2025 │ │ │ │ │ │ • The outNewToOldIVfile parameter is the output file for the IV object that contains │ │ │ │ │ │ the new-to-old permutation vector. If outNewToOldIVfile is "none", then there is no │ │ │ │ │ │ output, otherwise outNewToOldIVfile must be of the form *.ivf or *.ivb. │ │ │ │ │ │ • The outETreeFile parameter is the output file for the ETree object that contains the │ │ │ │ │ │ front tree for the ordering. If outETreeFileis "none", then there is no output, otherwise │ │ │ │ │ │ outETreeFile must be of the form *.etreef or *.etreeb. │ │ │ │ │ │ 2. orderViaND msglvl msgFile inGraphFile inDSTreeFile seed compressFlag │ │ │ ├── ./usr/share/doc/spooles-doc/MT.ps.gz │ │ │ │ ├── MT.ps │ │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ │ %%EndComments │ │ │ │ │ %%BeginDefaults │ │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ │ %%EndDefaults │ │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ │ %DVIPSCommandLine: dvips main -o MT.ps │ │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ │ -%DVIPSSource: TeX output 2024.01.16:2047 │ │ │ │ │ +%DVIPSSource: TeX output 2025.02.18:0318 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -1601,20 +1601,21 @@ │ │ │ │ │ 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 52 /four put │ │ │ │ │ -dup 54 /six put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ +dup 56 /eight put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 74 /J put │ │ │ │ │ +dup 70 /F put │ │ │ │ │ dup 97 /a put │ │ │ │ │ -dup 110 /n put │ │ │ │ │ +dup 98 /b put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ dup 114 /r put │ │ │ │ │ dup 117 /u put │ │ │ │ │ dup 121 /y put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ @@ -1798,89 +1799,93 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ │ -C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ │ -6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ │ -11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ │ -1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ │ -A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ │ -F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ │ -EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ │ -033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ │ -A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ │ -468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8A71FF9C085003EBB4F4 │ │ │ │ │ -3D271F5B16B1AAD3EBDC391F534AA46E545E9D8659DD19B309C3B7625A8396FA │ │ │ │ │ -2519464539D46E43ACB72952313C8497315E0319C08628023E8FC54D7D3BAC29 │ │ │ │ │ -D5AD8EFDABF0C33C7AFB7151A6606C62A87F0F5F783569AC4C881A992E3FE420 │ │ │ │ │ -297F7BC5147F3B2FA98450D2F8B07F7D229BC8BE06729920CFEC22556740E1CB │ │ │ │ │ -3DE09AC763C6D4A20AD1599C368FABD07BC35C16683F2A0311A88983415A9140 │ │ │ │ │ -2EFC4BC1B10DCAD4B2B8A28510E5BD39D6616D2B9B079ED3CF9C315B7DEC29D9 │ │ │ │ │ -251DFD0194B34EC175964C23383F23FFB2E41B698C405815D65EAFF9E9DD1DDE │ │ │ │ │ -30F77924656C288B8DDB2E5B0E7B1FAA66791DE3848EE6DE63AD0E945E49C6C7 │ │ │ │ │ -9FCA16E01F027F9EF7ACB55F02F5B0136480802F789F6FE14B430879979BA04D │ │ │ │ │ -F481AD4CF47E6847936F377FB04869F9A80E597301BFCAB718D8764094673876 │ │ │ │ │ -BCEF8FA3701608C84B3A0399A11D2E6AD922CCB7D72AF9EBFB30F4648A37A123 │ │ │ │ │ -CB8FB14BDC351692CF0CCAA5CA9383C2B23BAAA38700327EB743FBBE9EE04041 │ │ │ │ │ -13F5CEF4B3881BBC051C33369A82B3505B1CFD7D91AEF2E43EA728EE48E2D854 │ │ │ │ │ -5A7E516998ACDD4FD835FA901C5A21810A56D51FE919B2E58408EEB4DAEB487F │ │ │ │ │ -BA7F1D292CED902DF3533566D96DAD918319EA650D4FC7D9E0170CDE620F755B │ │ │ │ │ -0E7AE02D9B118481B26F5FF7060FBCFA2A682B6826F00679BCDA68794C05286D │ │ │ │ │ -B616DD08372ACDE0AE6E7EF116F0D36F16241ED4F0E8CCD80377792E3BB1343C │ │ │ │ │ -EEB22CC77738F7CBCBA32CF6C3979F6DF7ED81A89AE8928FD7CC550F2730BA88 │ │ │ │ │ -1B51CEDC63F4C47F261AFCAB7AC3CED20B15C97E714A460A1A3B16436B4A5149 │ │ │ │ │ -8F91DA4BE0B9B648534CE5F442117036B602DC91E2852BEA62F55803B833FDF7 │ │ │ │ │ -9F901AB87489E703DDEED1091A79DC73B4440BBBF2C7592B441187C4A3562204 │ │ │ │ │ -859F08BA3CE2A8ECCD5AAD13C50FB806FE79A388F1822C5608837CBDE526A044 │ │ │ │ │ -12E5CDE4A066932AF2ACA7E8FC6BA4603640944718752975B7DA6E906BE1EA01 │ │ │ │ │ -46736FF5D1AA1CC682D011B6039CF98C35E36D4F14ABC84A38B7203CC9A17756 │ │ │ │ │ -B2B0345276798F1A88A54AD9FEA0853C6DDF28525ED4F0B7380D14147012C2A4 │ │ │ │ │ -5B02888C986C76497EA4C729B0B82EE73C1A1A8E8F1ABF401E341028E9C15AF9 │ │ │ │ │ -354706D8DC07492921AD0932A46736C0D1B066D00287DACCC068FAE6A796EC89 │ │ │ │ │ -54D1D73AA88F3A5912BA9D3FF70065C8D0D0DAD1CD846501E06694374EFDBEC6 │ │ │ │ │ -931F644D5E8494AFC742423AD9A487658E310E0682BE19B8475F4D450487A686 │ │ │ │ │ -2B94494DEAF1C0F59DE82F2CE64BEE5E97F942FCFA1187ED6AA5761E951A7BF7 │ │ │ │ │ -9F842E34A4656C58B35A9E99F7E6762CEE11E0CF59FFD75D7382C5EE6DBB43F1 │ │ │ │ │ -ED219071D3FB22DBA90977723BB467C0490D042684C0724F40DCA3E0D8F1F4E7 │ │ │ │ │ -3C4F9A67BE6528185EAAFDD415224F7E256A4EA00111C17C746CBD80BF569A27 │ │ │ │ │ -D81195D7F79C1CCEEF30ED00D49F48B63E4B8D7953403A3710AE953CC1B76F0F │ │ │ │ │ -F523D777A6A186F262A602543F94AF7471DBE25FEBC207DB42DAF7DC9A5781FB │ │ │ │ │ -2131AD42869D966A734AAE3466DF1CE9D1BCFA72409A558C0AEE6A8E2FEAACB6 │ │ │ │ │ -2CDABCC28433034848ACF9FB4465D272E4AFC48572647F05F41C7A293CC5B595 │ │ │ │ │ -AD31555FB708A72962707348BC7033A8224BD42EB9D75FDF3AE9E6A9C960B330 │ │ │ │ │ -5137DF59F8E2E0D535F41524ABDF070745A4FA25CD8DFD38A5FF30A95452B875 │ │ │ │ │ -6569E8812631300D79A942C563AF174AC05C9F2D09D7D5D3C605F5A6B7F21B34 │ │ │ │ │ -18F270A993B050838E701A17938D1C156CBA7CA4BAC7C562CE9D7B758EAB25A9 │ │ │ │ │ -A6DFFC71F65561341847B776DF34061CE3D439B87B857626987EC93B3B95B8E8 │ │ │ │ │ -76FFB16B263675333FA10414FEED707FF7C366BF8B20FF8577CDEBEBCF1A5BCE │ │ │ │ │ -258C09C90175A5278B7C444A623E3331FDE5A6387B3E389540ED1E7E883958F3 │ │ │ │ │ -3A5C89CCD62256FA069DF4A5090FB17C1F1757C9209DAFB8A1F47182BF3E88D9 │ │ │ │ │ -0B5376B59EE165A761902759C8ED7F5AD301E7EB8B49CC09AF921DB45B7F8002 │ │ │ │ │ -AB32E73AAE53942DE0F9175D8446017006C9C0B93EF39C13B7A879F2F6DDFF16 │ │ │ │ │ -204BB24F976847CF006FD29332FCCB255B5116F7077A44F7066C39C81DC4BAD2 │ │ │ │ │ -40DB2753626C0102E5D047522ABC38EA294A699B8DFD9CA0A7980561A1062E90 │ │ │ │ │ -AB11EE286A9C238D9F721D9980D0A1828C2814972622D948CEE8C812C19A9A03 │ │ │ │ │ -608ED0AC138A436FFBF8BE3D1E66C87793416AF38ED9BC5424568A175FBDAA9E │ │ │ │ │ -D6FC11A7021693819B051562B5A59F32629E2D6019D69DD329BE1894A2B295E1 │ │ │ │ │ -1DCE9683B29AE126C56F26E5C595BF1A8249BDE231DBE8B066F7F62EF149B975 │ │ │ │ │ -A863969A4690504A5EA064721DA909B8157C0B39FBF8228D95CB655E406161E1 │ │ │ │ │ -148610FAEED7C5509880223C06A66DA19E10F94DC2DB481B26 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004FD597ED │ │ │ │ │ +EFDBC64ABD9B79386FB2427D1A63522195B1239C09F8CB3F8BD7A245A6DD82E3 │ │ │ │ │ +260C3889587626DFC5F7978E55F5524ABD6A3319CDD3D3F40D040044D51DA4E1 │ │ │ │ │ +6797EEAC7AA07C77EC6DB0E6E182B545A8BEF63B14F3FC07BAC09E7CD5C17ED6 │ │ │ │ │ +10080704B0DA4E9BA12F968DF8A58458D17E9A5B1F14A83DC51F5B161ADEE1CC │ │ │ │ │ +0183D82ED92C6FC7203C289949EDF0284D9893029FF5408E421324625F17C3E5 │ │ │ │ │ +2437C8F75A9D68EE1AF9174FEA6FC6BF793C7D2E497EA90396CF1A645E283B69 │ │ │ │ │ +8425F47C323587DF91E1D596DCB1E3A787C955D9D965A5E3E26ADF58B62AD5F9 │ │ │ │ │ +0C9AC784DE479780606354111E3202F215650DBBE1063A46F3C10B9EBC974DDA │ │ │ │ │ +A1A28DBBD43E9E5BFF000B12C787D0427928078F8EC5FE90DED97E6C129E8DEA │ │ │ │ │ +51F66504DB83764E52B0BA68DF7BE684C8959CB1D3345CC48221A9A4683306C0 │ │ │ │ │ +62B634E0A539383F0C7A788D9711EFF414869CCC5659D78CEBE009BF2463F56A │ │ │ │ │ +0ADC993348FE96DF7C250E13ED6504AACFE8F8DCA2D2048D9D8CFA127D363EAC │ │ │ │ │ +1F0630E2D1B621E6954038195D965B91FD974FA3F1B8B29D200A16CEBA645E2F │ │ │ │ │ +CEEE6FD49FBBD49E38AE67D4BFFCE91F1FC422554EC4409C5FA18D40FCD6D9B3 │ │ │ │ │ +2185ED1E0F98106D4339F086B05CA36E56EC22C60E2CE23F9C4CC403ACAD3F94 │ │ │ │ │ +4086B4DF6DFA0B7B4716417263E7B558535566AED2F6C2F9846A16D71A7930A7 │ │ │ │ │ +49232D3D16C4A01CF1A1998A06F40062ED329179A85668537C55D0BC24FC0010 │ │ │ │ │ +54DA83E2FC66B2A5D428E6A9BFC983253668C0ECE6CA36DBF97C4B7659D50842 │ │ │ │ │ +C65B36604840EEDA399B57E2DEFAC3E7FB031634CE33D04238F9854D2AAAF448 │ │ │ │ │ +34DA5F3BCCED3166FEEE82BB0BBA0A397CC2F95865CB52AABFF454D93B425809 │ │ │ │ │ +A26AC459F321FD23E2262FE816D06BAAECF32AAF167F84799AF80F9F88388D07 │ │ │ │ │ +0DB5FD57AFEE2850A8DFE977E6AE39CB3DC16DB1A163A583C86C6F775CE33521 │ │ │ │ │ +0081C0BBBAD6D30D26C66B28B38CEAC78FEA5FB3CC5853656B67C6D9D80EB30E │ │ │ │ │ +397558C9179AF5920F34DAB3F578DFCF0DBB137AED17D6325C23883E69EE4621 │ │ │ │ │ +34355A70C19EA68891E1CA937376901C85CDEE109F1665943E29A216DC00937A │ │ │ │ │ +B983A729A4654AD09187C0242D52FA4ADD0853EF4888864914D7D81C56578DD4 │ │ │ │ │ +3B51907032022E6E412D4F114675DEDCA8A9E85DC03A0B583FECD84432D15F70 │ │ │ │ │ +01F627BD6EC91F9FCFDA01BF40E1229B5F164309DBB641AD50970503DA2048C1 │ │ │ │ │ +DF8F36E8D252EE113F0B46677D9BAF376BAE18D74CFB0DBBD0C7E9D0A58BA3ED │ │ │ │ │ +1E5099CAE073EB5638617760AB57849893764EA9735173CD1EAB66884CEA7EE3 │ │ │ │ │ +8843327B2E145BD6FBB49102776B82BC511D109F8BE9E7E99DADABABEDC3CFD9 │ │ │ │ │ +393578FFD85907DFF2849E4CDE6FA4DEC7E1C150EBE4047FFB650F9548BE6D11 │ │ │ │ │ +0C51226A5436F18BF20A02E0F888F46B6AC3A8E8D927ECD3B5E095933AD3859F │ │ │ │ │ +5167C41D832EFCC4093BD2AFA7101AB430E57DAFC3590F05D3CBABB32BC203A0 │ │ │ │ │ +467B23BDB830487C9AA5B85BAC065F8538871B4180F8C4732E637DB090CFDE5A │ │ │ │ │ +3F4F2B5BFAFB848BAAD1A17CB076B34159601639BD93ECAB1214ACABF2C67FE2 │ │ │ │ │ +0658AA20B08681070FF56F1CC52144ABA8765D6E124D1CEA9BBA102808CE1BB2 │ │ │ │ │ +5EDF46BC7BBC2A5B49EE6EC28F5797A3969B057B21FCDBBD0E60848FF14F6CA3 │ │ │ │ │ +70F3060BDBB019B22722C99C7691760F013763B7FBEB62830AE215F195BF9F01 │ │ │ │ │ +21BF4377397E89574CFA47D123AA506A570A77BA6EB4AAB0B237A26154880293 │ │ │ │ │ +3952F832F72ECCB024F02385E5EE8566B165904B594E30D0700D033C6B429F6F │ │ │ │ │ +2A20BC774F442BC9CE29FCC81807C2768A8BC927A215558FBF36DC53F477F04A │ │ │ │ │ +41DA66E1A85B659EB761230977EAD7DA0150513D3323B143D4E2A61BCF03334C │ │ │ │ │ +C0EE3E1B06CFAF58ECC910BD81F0352B75FF1594D6A4EF504232D442174BE766 │ │ │ │ │ +0F8E703F97E21D25D4CD097549C31FEE7017C3916EFB02E7BF869172889827B6 │ │ │ │ │ +A48465EB7612BA3DBC6A9436C7167F149A25CE9F8E3F4F8DE3B5ADF6C0986CB3 │ │ │ │ │ +3A7E2DAB44AB489796461536F5F713017F2620AD03295CAE9285F08974AE0DF8 │ │ │ │ │ +D739260929619B509491AFF09C4CAEF9E65C2CA69470C907ECBF3AB6C955360D │ │ │ │ │ +05ABAC306DB51122A1ADC7EF0DD70FA299A45C505A83727D4598C86319EE9C06 │ │ │ │ │ +7218EFD4F40388354BCF1B79593D5AD221DF955D081F99F880E5CED07321AB3E │ │ │ │ │ +A2FCB8B05D54807D8E15E65B78DCE12989B9276350080C905DBB74CE9AA7E246 │ │ │ │ │ +5D3BAED292C562D4CF54617FCC6654496C7996D1ECE1EFF9258716AB763A12E6 │ │ │ │ │ +316E4C5587351A6DB011F58F6A15BC28BEBDC3836E0CB892807FEC228DC1B380 │ │ │ │ │ +92F7F42279F08D60F13D6A4CB425543C3644461461CBF6F27B6603F613D1FCF8 │ │ │ │ │ +A8410AD82D1498166AEB35D4125D7E2ADEAAB18BC04806AED53513F066E5F154 │ │ │ │ │ +3E13E863C50B9814EE2FB978D0D24A03FAF650CB6E2CADF1E6BE6BAF699AFC03 │ │ │ │ │ +E1A0EEB207B3B9A689ED5B373FE86686AD230BE6C18E1673DDA50E224B343EC5 │ │ │ │ │ +903BA0C8041C13607B50D5852AC7970B15C244E6EBA7D54B3086312CF04761D6 │ │ │ │ │ +7D3D75D51F20C371494AB81AB4A9838B20B483B851D01FEF41EA5C0B4755B964 │ │ │ │ │ +EB6E9B178051C556A010994EB88EAE641F4C1A0D7E0F98D5267E18AEF1AEA7E7 │ │ │ │ │ +9030A97DF89AFF621981C33B645FFB5F3BB2065A7661D11B26E0999561DF3580 │ │ │ │ │ +4A76A05DFAF8085525F8D5C01936F03C32E26E72569371C9EA3B8916F9DFC5FC │ │ │ │ │ +6A6F25A0FFDB981BA8B896393D75774D50828E6ADE903C45406E354703A4BC56 │ │ │ │ │ +2C49A47FEAC970DC433E3050C49F7FB945A9705BD8852D2D65D935F244D3B423 │ │ │ │ │ +EFAB84AAAAB8FBAFF50AFF372A533BCCEB5FC273DBADCF715776DF02A5DCBA9A │ │ │ │ │ +FBF265FAB4745D6475B33611EEE1EA95E7584E0BEEC7CA789AA69C8D03D6F8C0 │ │ │ │ │ +5B6844E2B901ACA560C0433B053D134866E567425174E47173679AAD4486A2D3 │ │ │ │ │ +369C29E4DD2CD6ACA1BE80ED8FF0A9C58A616D26E758BD8E6342624EC83FB590 │ │ │ │ │ +BD354B52B60BB054FAFE9AC63E1564FBC721FE8F276B0413EC89A2C85E5ED1B0 │ │ │ │ │ +3A9D83BE62A4488ADE7CE69971A8AF7E5862A4290EEF6F00D4171C7FFB360065 │ │ │ │ │ +92E72BF02BE27161AE0BB5516572A0BDC4F316FFB24B38484AC8D1FD4CD86062 │ │ │ │ │ +A2B5D03CF28C3A679C039A6EFDD4C9DA7E463AD60234C9F6BBEE48D87DD94D85 │ │ │ │ │ +842F495F3E25723718682CE4D6224CBBF4456F03077EDF736D65B9DDAB09470E │ │ │ │ │ +17742D82011FFA96BFE86B96E858F9352FCD20C3D46B77DBDEE54336EC2249EA │ │ │ │ │ +211F6DFFF5BEA1E5192BE1BAC0BDD5EDDB3D56C6F7C6E543561A0B39E5C1B04F │ │ │ │ │ +C683A7516B6E69D682455386DDA709929D621FA434D403E895AA0A77DBE1DFD2 │ │ │ │ │ +0D060DF82378880147ED97C6E8149686FA048710B113760AC1DA4512FF8556B3 │ │ │ │ │ +16E2447485B8C3CD58D0469C4A45FFB4CB0322BB284C02 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -5015,17 +5020,17 @@ │ │ │ │ │ %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 1[42 1[42 42 42 │ │ │ │ │ -3[23 44[{}13 83.022 /CMSL10 rf /Fh 136[55 1[45 28 34 │ │ │ │ │ -35 1[42 42 47 1[21 38 1[25 42 38 1[38 42 38 1[42 9[83 │ │ │ │ │ +3[46 2[33 12[37 2[46 42 26[54 11[23 1[42 2[42 2[42 42 │ │ │ │ │ +42 3[23 44[{}14 83.022 /CMSL10 rf /Fh 136[55 1[45 28 │ │ │ │ │ +34 35 1[42 42 47 1[21 38 1[25 42 38 1[38 42 38 1[42 9[83 │ │ │ │ │ 2[59 1[61 11[54 56 63 2[62 6[25 58[{}25 83.022 /CMTI10 │ │ │ │ │ rf /Fi 133[44 44 44 44 44 44 44 44 44 44 44 44 44 44 │ │ │ │ │ 44 44 44 44 44 44 44 44 44 44 44 44 1[44 1[44 1[44 1[44 │ │ │ │ │ 44 44 44 44 44 44 44 44 44 44 44 44 44 1[44 44 44 44 │ │ │ │ │ 44 44 44 44 44 44 2[44 44 1[44 1[44 44 44 44 44 44 44 │ │ │ │ │ 44 44 44 44 44 1[44 1[44 44 44 40[{}72 83.022 /CMTT10 │ │ │ │ │ rf /Fj 148[42 3[42 42 81[65 16[42 65 1[65{}7 83.022 /CMSY10 │ │ │ │ │ @@ -5148,19 +5153,19 @@ │ │ │ │ │ (ultithreaded)g(solv)n(e)f(metho)r(ds.)36 b(The)26 b(calling)f │ │ │ │ │ (sequences)g(b)r(et)n(w)n(een)0 5308 y(the)j(serial)f(and)g(m)n │ │ │ │ │ (ultithreaded)h(solv)n(es)e(di\013ers)i(b)n(y)f(one)h(parameter,)e(a)h │ │ │ │ │ Fi(SolveMap)e Fn(ob)5 b(ject)27 b(that)h(maps)g(the)g(submatrices)0 │ │ │ │ │ 5407 y(of)g(the)g(factor)e(matrix)h(to)h(the)g(threads)f(that)h(will)f │ │ │ │ │ (compute)h(with)g(them.)1929 5656 y(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fn(2)p 125 100 1005 4 v │ │ │ │ │ -1170 w Fi(Multithreaded)23 b Fg(:)37 b Fh(DRAFT)27 b │ │ │ │ │ -Fg(Jan)n(uary)e(16,)i(2024)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 │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fn(2)p 125 100 988 4 v │ │ │ │ │ +1153 w Fi(Multithreaded)22 b Fg(:)37 b Fh(DRAFT)27 b │ │ │ │ │ +Fg(F)-7 b(ebruary)27 b(18,)g(2025)p 2913 100 V 0 390 │ │ │ │ │ +a Ff(1.1)135 b(Data)46 b(Structure)0 597 y Fn(There)23 │ │ │ │ │ +b(are)g(no)g(m)n(ultithreaded)h(sp)r(eci\014c)f(data)h(structures.)34 │ │ │ │ │ b(See)24 b(the)g Fi(Lock)e Fn(ob)5 b(ject)23 b(whic)n(h)h(is)f(used)h │ │ │ │ │ (to)f(hide)h(the)g(particular)0 697 y(m)n(utual)k(exclusion)f(device)g │ │ │ │ │ (used)h(b)n(y)f(a)g(thread)g(library)-7 b(.)0 998 y Ff(1.2)135 │ │ │ │ │ b(Protot)l(yp)t(es)46 b(and)f(descriptions)g(of)g Fe(MT)f │ │ │ │ │ Ff(metho)t(ds)0 1205 y Fn(This)25 b(section)f(con)n(tains)g(brief)g │ │ │ │ │ (descriptions)g(including)h(protot)n(yp)r(es)f(of)g(all)h(metho)r(ds)g │ │ │ │ │ (found)g(in)g(the)g Fi(MT)f Fn(source)f(directory)-7 │ │ │ │ │ @@ -5266,19 +5271,19 @@ │ │ │ │ │ Fi(InpMtx)p 1939 5308 V 29 w(MT)p 2056 5308 V 31 w(nonsym)p │ │ │ │ │ 2351 5308 V 28 w(mmm\(A,)42 b(Y,)g(3.22,)g(X,)h(nthread,)d(msglvl,)208 │ │ │ │ │ 5407 y(msgFile\))p Fn(,)31 b(for)i(this)h(ma)n(y)f(result)g(in)h(a)f │ │ │ │ │ (segmen)n(tation)g(violation.)53 b(The)34 b(v)-5 b(alues)33 │ │ │ │ │ b(of)h Fm(\013)g Fn(m)n(ust)f(b)r(e)h(loaded)f(in)n(to)g(an)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 3 3 │ │ │ │ │ -TeXDict begin 3 2 bop 83 100 1005 4 v 1171 100 a Fi(Multithreaded)22 │ │ │ │ │ -b Fg(:)37 b Fh(DRAFT)110 b Fg(Jan)n(uary)26 b(16,)h(2024)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 │ │ │ │ │ +TeXDict begin 3 2 bop 83 100 988 4 v 1153 100 a Fi(Multithreaded)23 │ │ │ │ │ +b Fg(:)37 b Fh(DRAFT)110 b Fg(F)-7 b(ebruary)26 b(18,)h(2025)p │ │ │ │ │ +2873 100 V 988 w Fn(3)208 390 y(arra)n(y)d(of)i(length)h(1)f(or)f(2.)36 │ │ │ │ │ +b(The)27 b(n)n(um)n(b)r(er)f(of)g(threads)g(is)g(sp)r(eci\014ed)h(b)n │ │ │ │ │ +(y)f(the)h Fi(nthread)d Fn(parameter;)h(if,)i Fi(nthread)d │ │ │ │ │ Fn(is)i Fi(1)p Fn(,)208 490 y(the)k(serial)e(metho)r(d)i(is)g(called.) │ │ │ │ │ 43 b(The)30 b Fi(msglvl)d Fn(and)j Fi(msgFile)c Fn(parameters)i(are)h │ │ │ │ │ (used)h(for)f(diagnostics)f(during)i(the)208 589 y(creation)c(of)i(the) │ │ │ │ │ g(threads')f(individual)g(data)g(structures.)208 722 │ │ │ │ │ y Fh(Err)l(or)k(che)l(cking:)43 b Fn(If)30 b Fi(A)p Fn(,)f │ │ │ │ │ Fi(Y)g Fn(or)f Fi(X)h Fn(are)g Fi(NULL)p Fn(,)f(or)g(if)i │ │ │ │ │ Fi(coordType)c Fn(is)j(not)h Fi(INPMTX)p 2711 722 27 │ │ │ │ │ @@ -5376,19 +5381,19 @@ │ │ │ │ │ (assem)n(bling)f(aggregate)f(fron)n(ts.)307 5142 y Fc(\210)42 │ │ │ │ │ b Fi(cpus[5])25 b Fn(|)j(time)g(sp)r(en)n(t)g(assem)n(bling)e(p)r(ostp) │ │ │ │ │ r(oned)i(data.)307 5274 y Fc(\210)42 b Fi(cpus[6])25 │ │ │ │ │ b Fn(|)j(time)g(sp)r(en)n(t)g(to)f(factor)g(the)h(fron)n(ts.)307 │ │ │ │ │ 5407 y Fc(\210)42 b Fi(cpus[7])25 b Fn(|)j(time)g(sp)r(en)n(t)g(to)f │ │ │ │ │ (extract)g(p)r(ostp)r(oned)h(data.)p eop end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fn(4)p 125 100 1005 4 v │ │ │ │ │ -1170 w Fi(Multithreaded)23 b Fg(:)37 b Fh(DRAFT)27 b │ │ │ │ │ -Fg(Jan)n(uary)e(16,)i(2024)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 │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fn(4)p 125 100 988 4 v │ │ │ │ │ +1153 w Fi(Multithreaded)22 b Fg(:)37 b Fh(DRAFT)27 b │ │ │ │ │ +Fg(F)-7 b(ebruary)27 b(18,)g(2025)p 2913 100 V 307 390 │ │ │ │ │ +a Fc(\210)42 b Fi(cpus[8])25 b Fn(|)j(time)g(sp)r(en)n(t)g(to)f(store)g │ │ │ │ │ +(the)h(factor)e(en)n(tries.)307 524 y Fc(\210)42 b Fi(cpus[9])25 │ │ │ │ │ b Fn(|)j(miscellaneous)e(time.)208 691 y(On)h(return,)g(the)h │ │ │ │ │ Fi(stats[])d Fn(v)n(ector)h(is)i(\014lled)g(with)g(the)g(follo)n(wing)e │ │ │ │ │ (information.)307 859 y Fc(\210)42 b Fi(stats[0])25 b │ │ │ │ │ Fn(|)i(n)n(um)n(b)r(er)h(of)f(piv)n(ots.)307 993 y Fc(\210)42 │ │ │ │ │ b Fi(stats[1])25 b Fn(|)i(n)n(um)n(b)r(er)h(of)f(piv)n(ot)g(tests.)307 │ │ │ │ │ 1126 y Fc(\210)42 b Fi(stats[2])25 b Fn(|)i(n)n(um)n(b)r(er)h(of)f │ │ │ │ │ (dela)n(y)n(ed)g(ro)n(ws)f(and)h(columns.)307 1260 y │ │ │ │ │ @@ -5457,17 +5462,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 1005 4 v 1171 100 a Fi(Multithreaded)22 │ │ │ │ │ -b Fg(:)37 b Fh(DRAFT)110 b Fg(Jan)n(uary)26 b(16,)h(2024)p │ │ │ │ │ -2856 100 V 1005 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 988 4 v 1153 100 a Fi(Multithreaded)23 │ │ │ │ │ +b Fg(:)37 b Fh(DRAFT)110 b Fg(F)-7 b(ebruary)26 b(18,)h(2025)p │ │ │ │ │ +2873 100 V 988 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 │ │ │ │ │ @@ -5547,100 +5552,100 @@ │ │ │ │ │ b(matrix,)h(factors)e Fm(A)h Fn(and)g(solv)n(es)e(the)i(linear)f │ │ │ │ │ (system)h Fm(AX)40 b Fn(=)33 b Fm(B)38 b Fn(for)c Fm(X)40 │ │ │ │ │ b Fn(using)34 b(m)n(ultithreaded)f(factors)g(and)208 │ │ │ │ │ 5407 y(solv)n(es.)i(Use)28 b(the)g(script)f(\014le)h │ │ │ │ │ Fi(do)p 1237 5407 27 4 v 30 w(gridMT)d Fn(for)i(testing.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 6 6 │ │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fn(6)p 125 100 1005 4 v │ │ │ │ │ -1170 w Fi(Multithreaded)23 b Fg(:)37 b Fh(DRAFT)27 b │ │ │ │ │ -Fg(Jan)n(uary)e(16,)i(2024)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 │ │ │ │ │ -(receiv)n(e)g(an)n(y)g(output)h(data.)307 758 y Fc(\210)42 │ │ │ │ │ -b Fn(The)28 b Fi(type)e Fn(parameter)g(sp)r(eci\014es)h(a)h(real)e(or)h │ │ │ │ │ -(complex)g(linear)g(system.)456 892 y Fa({)41 b Fi(type)h(=)i(1)f │ │ │ │ │ -(\(SPOOLES)p 1295 892 27 4 v 28 w(REAL\))25 b Fn(for)i(real,)456 │ │ │ │ │ -1009 y Fa({)41 b Fi(type)h(=)i(2)f(\(SPOOLES)p 1295 1009 │ │ │ │ │ -V 28 w(COMPLEX\))24 b Fn(for)j(complex.)307 1143 y Fc(\210)42 │ │ │ │ │ -b Fn(The)28 b Fi(symmetryflag)23 b Fn(parameter)j(sp)r(eci\014es)h(the) │ │ │ │ │ -h(symmetry)f(of)h(the)g(matrix.)456 1278 y Fa({)41 b │ │ │ │ │ -Fi(type)h(=)i(0)f(\(SPOOLES)p 1295 1278 V 28 w(SYMMETRIC\))23 │ │ │ │ │ -b Fn(for)k Fm(A)h Fn(real)f(or)g(complex)g(symmetric,)456 │ │ │ │ │ -1394 y Fa({)41 b Fi(type)h(=)i(1)f(\(SPOOLES)p 1295 1394 │ │ │ │ │ -V 28 w(HERMITIAN\))23 b Fn(for)k Fm(A)h Fn(complex)g(Hermitian,)456 │ │ │ │ │ -1511 y Fa({)41 b Fi(type)h(=)i(2)f(\(SPOOLES)p 1295 1511 │ │ │ │ │ -V 28 w(NONSYMMETRIC\))390 1645 y Fn(for)27 b Fm(A)h Fn(real)f(or)g │ │ │ │ │ -(complex)g(nonsymmetric.)307 1780 y Fc(\210)42 b Fn(The)28 │ │ │ │ │ -b Fi(pivotingflag)23 b Fn(parameter)j(signals)g(whether)i(piv)n(oting)e │ │ │ │ │ -(for)i(stabilit)n(y)f(will)h(b)r(e)g(enabled)f(or)g(not.)456 │ │ │ │ │ -1914 y Fa({)41 b Fn(If)28 b Fi(pivotingflag)39 b(=)k(0)g(\(SPOOLES)p │ │ │ │ │ -1726 1914 V 29 w(NO)p 1843 1914 V 30 w(PIVOTING\))p Fn(,)24 │ │ │ │ │ -b(no)j(piv)n(oting)g(will)h(b)r(e)g(done.)456 2031 y │ │ │ │ │ -Fa({)41 b Fn(If)31 b Fi(pivotingflag)38 b(=)44 b(1)f(\(SPOOLES)p │ │ │ │ │ -1729 2031 V 28 w(PIVOTING\))p Fn(,)26 b(piv)n(oting)j(will)h(b)r(e)h │ │ │ │ │ -(done)e(to)h(ensure)f(that)h(all)g(en)n(tries)545 2130 │ │ │ │ │ -y(in)e Fm(U)37 b Fn(and)27 b Fm(L)g Fn(ha)n(v)n(e)g(magnitude)g(less)g │ │ │ │ │ -(than)h Fi(tau)p Fn(.)307 2264 y Fc(\210)42 b Fn(The)29 │ │ │ │ │ -b Fi(matrixFileName)23 b Fn(parameter)28 b(is)g(the)h(name)g(of)g(the)g │ │ │ │ │ -(\014les)g(where)f(the)h(matrix)f(en)n(tries)h(are)e(read)h(from.)390 │ │ │ │ │ -2364 y(The)g(\014le)g(has)f(the)h(follo)n(wing)e(structure.)390 │ │ │ │ │ -2515 y Fi(neqns)42 b(neqns)f(nent)390 2615 y(irow)h(jcol)g(entry)390 │ │ │ │ │ -2715 y(...)86 b(...)g(...)390 2866 y Fn(where)36 b Fi(neqns)e │ │ │ │ │ -Fn(is)i(the)g(global)f(n)n(um)n(b)r(er)h(of)g(equations)f(and)h │ │ │ │ │ -Fi(nent)f Fn(is)h(the)g(n)n(um)n(b)r(er)g(of)g(en)n(tries)f(in)h(this)h │ │ │ │ │ -(\014le.)390 2966 y(There)c(follo)n(ws)f Fi(nent)f Fn(lines,)j(eac)n(h) │ │ │ │ │ -f(con)n(taining)f(a)g(ro)n(w)g(index,)i(a)f(column)g(index)g(and)g(one) │ │ │ │ │ -g(or)f(t)n(w)n(o)g(\015oating)390 3065 y(p)r(oin)n(t)c(n)n(um)n(b)r │ │ │ │ │ -(ers,)f(one)g(if)h(real,)f(t)n(w)n(o)g(if)h(complex.)307 │ │ │ │ │ -3200 y Fc(\210)42 b Fn(The)32 b Fi(rhsFileName)27 b Fn(parameter)j(is)h │ │ │ │ │ -(the)h(name)g(of)f(the)h(\014les)g(where)f(the)h(righ)n(t)f(hand)g │ │ │ │ │ -(side)h(en)n(tries)e(are)h(read)390 3299 y(from.)37 b(The)27 │ │ │ │ │ -b(\014le)h(has)f(the)h(follo)n(wing)f(structure.)390 │ │ │ │ │ -3451 y Fi(nrow)42 b(nrhs)390 3550 y(irow)g(entry)g(...)g(entry)390 │ │ │ │ │ -3650 y(...)86 b(...)130 b(...)42 b(...)390 3801 y Fn(where)28 │ │ │ │ │ -b Fi(nrow)g Fn(is)g(the)i(n)n(um)n(b)r(er)e(of)h(ro)n(ws)e(in)i(this)g │ │ │ │ │ -(\014le)g(and)g Fi(nrhs)e Fn(is)i(the)g(n)n(um)n(b)r(er)g(of)f(riggh)n │ │ │ │ │ -(t)g(and)g(sides.)41 b(There)390 3901 y(follo)n(ws)23 │ │ │ │ │ -b Fi(nrow)f Fn(lines,)j(eac)n(h)e(con)n(taining)f(a)i(ro)n(w)e(index)i │ │ │ │ │ -(and)g(either)f Fi(nrhs)f Fn(or)h Fi(2*nrhs)f Fn(\015oating)h(p)r(oin)n │ │ │ │ │ -(t)h(n)n(um)n(b)r(ers,)390 4001 y(the)k(\014rst)g(if)g(real,)e(the)i │ │ │ │ │ -(second)f(if)h(complex.)307 4135 y Fc(\210)42 b Fn(The)28 │ │ │ │ │ -b Fi(seed)e Fn(parameter)g(is)h(a)h(random)e(n)n(um)n(b)r(er)i(seed.) │ │ │ │ │ -307 4269 y Fc(\210)42 b Fn(The)28 b Fi(nthread)d Fn(parameter)h(is)h │ │ │ │ │ -(the)h(n)n(um)n(b)r(er)g(of)f(threads.)101 4455 y(2.)42 │ │ │ │ │ -b Fi(patchAndGoMT)c(msglvl)j(msgFile)g(type)h(symmetryflag)d │ │ │ │ │ -(patchAndGoFlag)e(fudge)42 b(toosmall)774 4554 y(storeids)e │ │ │ │ │ -(storevalues)f(matrixFileName)f(rhsFileName)h(seed)j(nthread)208 │ │ │ │ │ -4689 y Fn(This)18 b(driv)n(er)g(program)e(is)j(used)f(to)h(test)g(the)g │ │ │ │ │ -(\\patc)n(h-and-go")c(functionalit)n(y)k(for)f(a)g(factorization)g │ │ │ │ │ -(without)h(piv)n(oting.)208 4788 y(When)j(small)f(diagonal)f(piv)n(ot)h │ │ │ │ │ -(elemen)n(ts)h(are)f(found,)i(one)e(of)h(three)f(actions)g(are)g(tak)n │ │ │ │ │ -(en.)34 b(See)22 b(the)g Fi(PatchAndGoInfo)208 4888 y │ │ │ │ │ -Fn(ob)5 b(ject)27 b(for)g(more)g(information.)208 5022 │ │ │ │ │ -y(The)33 b(program)e(reads)g(in)j(a)e(matrix)h Fm(A)g │ │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fn(6)p 125 100 988 4 v │ │ │ │ │ +1153 w Fi(Multithreaded)22 b Fg(:)37 b Fh(DRAFT)27 b │ │ │ │ │ +Fg(F)-7 b(ebruary)27 b(18,)g(2025)p 2913 100 V 307 390 │ │ │ │ │ +a Fc(\210)42 b Fn(The)23 b Fi(msglvl)e Fn(parameter)g(determines)i(the) │ │ │ │ │ +h(amoun)n(t)e(of)h(output.)36 b(Use)23 b Fi(msglvl)41 │ │ │ │ │ +b(=)i(1)23 b Fn(for)g(just)g(timing)g(output.)307 524 │ │ │ │ │ +y Fc(\210)42 b Fn(The)32 b Fi(msgFile)c Fn(parameter)i(determines)h │ │ │ │ │ +(the)h(message)e(\014le)i(|)f(if)h Fi(msgFile)d Fn(is)i │ │ │ │ │ +Fi(stdout)p Fn(,)f(then)i(the)g(message)390 624 y(\014le)c(is)f │ │ │ │ │ +Fh(stdout)p Fn(,)h(otherwise)e(a)i(\014le)f(is)h(op)r(ened)f(with)i │ │ │ │ │ +Fh(app)l(end)g Fn(status)e(to)g(receiv)n(e)g(an)n(y)g(output)h(data.) │ │ │ │ │ +307 758 y Fc(\210)42 b Fn(The)28 b Fi(type)e Fn(parameter)g(sp)r │ │ │ │ │ +(eci\014es)h(a)h(real)e(or)h(complex)g(linear)g(system.)456 │ │ │ │ │ +892 y Fa({)41 b Fi(type)h(=)i(1)f(\(SPOOLES)p 1295 892 │ │ │ │ │ +27 4 v 28 w(REAL\))25 b Fn(for)i(real,)456 1009 y Fa({)41 │ │ │ │ │ +b Fi(type)h(=)i(2)f(\(SPOOLES)p 1295 1009 V 28 w(COMPLEX\))24 │ │ │ │ │ +b Fn(for)j(complex.)307 1143 y Fc(\210)42 b Fn(The)28 │ │ │ │ │ +b Fi(symmetryflag)23 b Fn(parameter)j(sp)r(eci\014es)h(the)h(symmetry)f │ │ │ │ │ +(of)h(the)g(matrix.)456 1278 y Fa({)41 b Fi(type)h(=)i(0)f(\(SPOOLES)p │ │ │ │ │ +1295 1278 V 28 w(SYMMETRIC\))23 b Fn(for)k Fm(A)h Fn(real)f(or)g │ │ │ │ │ +(complex)g(symmetric,)456 1394 y Fa({)41 b Fi(type)h(=)i(1)f(\(SPOOLES) │ │ │ │ │ +p 1295 1394 V 28 w(HERMITIAN\))23 b Fn(for)k Fm(A)h Fn(complex)g │ │ │ │ │ +(Hermitian,)456 1511 y Fa({)41 b Fi(type)h(=)i(2)f(\(SPOOLES)p │ │ │ │ │ +1295 1511 V 28 w(NONSYMMETRIC\))390 1645 y Fn(for)27 │ │ │ │ │ +b Fm(A)h Fn(real)f(or)g(complex)g(nonsymmetric.)307 1780 │ │ │ │ │ +y Fc(\210)42 b Fn(The)28 b Fi(pivotingflag)23 b Fn(parameter)j(signals) │ │ │ │ │ +g(whether)i(piv)n(oting)e(for)i(stabilit)n(y)f(will)h(b)r(e)g(enabled)f │ │ │ │ │ +(or)g(not.)456 1914 y Fa({)41 b Fn(If)28 b Fi(pivotingflag)39 │ │ │ │ │ +b(=)k(0)g(\(SPOOLES)p 1726 1914 V 29 w(NO)p 1843 1914 │ │ │ │ │ +V 30 w(PIVOTING\))p Fn(,)24 b(no)j(piv)n(oting)g(will)h(b)r(e)g(done.) │ │ │ │ │ +456 2031 y Fa({)41 b Fn(If)31 b Fi(pivotingflag)38 b(=)44 │ │ │ │ │ +b(1)f(\(SPOOLES)p 1729 2031 V 28 w(PIVOTING\))p Fn(,)26 │ │ │ │ │ +b(piv)n(oting)j(will)h(b)r(e)h(done)e(to)h(ensure)f(that)h(all)g(en)n │ │ │ │ │ +(tries)545 2130 y(in)e Fm(U)37 b Fn(and)27 b Fm(L)g Fn(ha)n(v)n(e)g │ │ │ │ │ +(magnitude)g(less)g(than)h Fi(tau)p Fn(.)307 2264 y Fc(\210)42 │ │ │ │ │ +b Fn(The)29 b Fi(matrixFileName)23 b Fn(parameter)28 │ │ │ │ │ +b(is)g(the)h(name)g(of)g(the)g(\014les)g(where)f(the)h(matrix)f(en)n │ │ │ │ │ +(tries)h(are)e(read)h(from.)390 2364 y(The)g(\014le)g(has)f(the)h │ │ │ │ │ +(follo)n(wing)e(structure.)390 2515 y Fi(neqns)42 b(neqns)f(nent)390 │ │ │ │ │ +2615 y(irow)h(jcol)g(entry)390 2715 y(...)86 b(...)g(...)390 │ │ │ │ │ +2866 y Fn(where)36 b Fi(neqns)e Fn(is)i(the)g(global)f(n)n(um)n(b)r(er) │ │ │ │ │ +h(of)g(equations)f(and)h Fi(nent)f Fn(is)h(the)g(n)n(um)n(b)r(er)g(of)g │ │ │ │ │ +(en)n(tries)f(in)h(this)h(\014le.)390 2966 y(There)c(follo)n(ws)f │ │ │ │ │ +Fi(nent)f Fn(lines,)j(eac)n(h)f(con)n(taining)f(a)g(ro)n(w)g(index,)i │ │ │ │ │ +(a)f(column)g(index)g(and)g(one)g(or)f(t)n(w)n(o)g(\015oating)390 │ │ │ │ │ +3065 y(p)r(oin)n(t)c(n)n(um)n(b)r(ers,)f(one)g(if)h(real,)f(t)n(w)n(o)g │ │ │ │ │ +(if)h(complex.)307 3200 y Fc(\210)42 b Fn(The)32 b Fi(rhsFileName)27 │ │ │ │ │ +b Fn(parameter)j(is)h(the)h(name)g(of)f(the)h(\014les)g(where)f(the)h │ │ │ │ │ +(righ)n(t)f(hand)g(side)h(en)n(tries)e(are)h(read)390 │ │ │ │ │ +3299 y(from.)37 b(The)27 b(\014le)h(has)f(the)h(follo)n(wing)f │ │ │ │ │ +(structure.)390 3451 y Fi(nrow)42 b(nrhs)390 3550 y(irow)g(entry)g(...) │ │ │ │ │ +g(entry)390 3650 y(...)86 b(...)130 b(...)42 b(...)390 │ │ │ │ │ +3801 y Fn(where)28 b Fi(nrow)g Fn(is)g(the)i(n)n(um)n(b)r(er)e(of)h(ro) │ │ │ │ │ +n(ws)e(in)i(this)g(\014le)g(and)g Fi(nrhs)e Fn(is)i(the)g(n)n(um)n(b)r │ │ │ │ │ +(er)g(of)f(riggh)n(t)g(and)g(sides.)41 b(There)390 3901 │ │ │ │ │ +y(follo)n(ws)23 b Fi(nrow)f Fn(lines,)j(eac)n(h)e(con)n(taining)f(a)i │ │ │ │ │ +(ro)n(w)e(index)i(and)g(either)f Fi(nrhs)f Fn(or)h Fi(2*nrhs)f │ │ │ │ │ +Fn(\015oating)h(p)r(oin)n(t)h(n)n(um)n(b)r(ers,)390 4001 │ │ │ │ │ +y(the)k(\014rst)g(if)g(real,)e(the)i(second)f(if)h(complex.)307 │ │ │ │ │ +4135 y Fc(\210)42 b Fn(The)28 b Fi(seed)e Fn(parameter)g(is)h(a)h │ │ │ │ │ +(random)e(n)n(um)n(b)r(er)i(seed.)307 4269 y Fc(\210)42 │ │ │ │ │ +b Fn(The)28 b Fi(nthread)d Fn(parameter)h(is)h(the)h(n)n(um)n(b)r(er)g │ │ │ │ │ +(of)f(threads.)101 4455 y(2.)42 b Fi(patchAndGoMT)c(msglvl)j(msgFile)g │ │ │ │ │ +(type)h(symmetryflag)d(patchAndGoFlag)e(fudge)42 b(toosmall)774 │ │ │ │ │ +4554 y(storeids)e(storevalues)f(matrixFileName)f(rhsFileName)h(seed)j │ │ │ │ │ +(nthread)208 4689 y Fn(This)18 b(driv)n(er)g(program)e(is)j(used)f(to)h │ │ │ │ │ +(test)g(the)g(\\patc)n(h-and-go")c(functionalit)n(y)k(for)f(a)g │ │ │ │ │ +(factorization)g(without)h(piv)n(oting.)208 4788 y(When)j(small)f │ │ │ │ │ +(diagonal)f(piv)n(ot)h(elemen)n(ts)h(are)f(found,)i(one)e(of)h(three)f │ │ │ │ │ +(actions)g(are)g(tak)n(en.)34 b(See)22 b(the)g Fi(PatchAndGoInfo)208 │ │ │ │ │ +4888 y Fn(ob)5 b(ject)27 b(for)g(more)g(information.)208 │ │ │ │ │ +5022 y(The)33 b(program)e(reads)g(in)j(a)e(matrix)h Fm(A)g │ │ │ │ │ Fn(and)g(righ)n(t)f(hand)h(side)g Fm(B)t Fn(,)i(generates)c(the)j │ │ │ │ │ (graph)e(for)g Fm(A)h Fn(and)g(orders)f(the)208 5122 │ │ │ │ │ y(matrix,)27 b(factors)f Fm(A)i Fn(and)g(solv)n(es)e(the)i(linear)f │ │ │ │ │ (system)g Fm(AX)j Fn(=)23 b Fm(B)31 b Fn(for)d Fm(X)34 │ │ │ │ │ b Fn(using)27 b(m)n(ultithreaded)g(factors)g(and)g(solv)n(es.)208 │ │ │ │ │ 5221 y(Use)g(the)h(script)f(\014le)h Fi(do)p 968 5221 │ │ │ │ │ V 31 w(patchAndGo)23 b Fn(for)k(testing.)307 5407 y Fc(\210)42 │ │ │ │ │ b Fn(The)23 b Fi(msglvl)e Fn(parameter)g(determines)i(the)h(amoun)n(t)e │ │ │ │ │ (of)h(output.)36 b(Use)23 b Fi(msglvl)41 b(=)i(1)23 b │ │ │ │ │ Fn(for)g(just)g(timing)g(output.)p eop end │ │ │ │ │ %%Page: 7 7 │ │ │ │ │ -TeXDict begin 7 6 bop 83 100 1005 4 v 1171 100 a Fi(Multithreaded)22 │ │ │ │ │ -b Fg(:)37 b Fh(DRAFT)110 b Fg(Jan)n(uary)26 b(16,)h(2024)p │ │ │ │ │ -2856 100 V 1005 w Fn(7)307 390 y Fc(\210)42 b Fn(The)32 │ │ │ │ │ +TeXDict begin 7 6 bop 83 100 988 4 v 1153 100 a Fi(Multithreaded)23 │ │ │ │ │ +b Fg(:)37 b Fh(DRAFT)110 b Fg(F)-7 b(ebruary)26 b(18,)h(2025)p │ │ │ │ │ +2873 100 V 988 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 │ │ │ │ │ @@ -5717,22 +5722,22 @@ │ │ │ │ │ 5277 y Fl(T)3144 5308 y Fj(\003)g Fm(X)27 b Fn(or)19 │ │ │ │ │ b Fm(Y)24 b Fn(+)5 b Fm(\013)g Fj(\003)g Fm(A)3690 5277 │ │ │ │ │ y Fl(H)3756 5308 y Fj(\003)g Fm(X)i Fn(.)208 5407 y(The)27 │ │ │ │ │ b(program's)f(output)i(is)f(a)g(\014le)h(whic)n(h)g(when)f(sen)n(t)h │ │ │ │ │ (in)n(to)f(Matlab,)h(outputs)f(the)h(error)e(in)i(the)g(computation.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 8 8 │ │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fn(8)p 125 100 1005 4 v │ │ │ │ │ -1170 w Fi(Multithreaded)23 b Fg(:)37 b Fh(DRAFT)27 b │ │ │ │ │ -Fg(Jan)n(uary)e(16,)i(2024)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 │ │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fn(8)p 125 100 988 4 v │ │ │ │ │ +1153 w Fi(Multithreaded)22 b Fg(:)37 b Fh(DRAFT)27 b │ │ │ │ │ +Fg(F)-7 b(ebruary)27 b(18,)g(2025)p 2913 100 V 307 390 │ │ │ │ │ +a Fc(\210)42 b Fn(The)19 b Fi(msglvl)e Fn(parameter)g(determines)i(the) │ │ │ │ │ +h(amoun)n(t)e(of)h(output)h(|)f(taking)f Fi(msglvl)41 │ │ │ │ │ +b(>=)i(3)19 b Fn(means)f(the)h Fi(InpMtx)390 490 y Fn(ob)5 │ │ │ │ │ +b(ject)28 b(is)f(written)h(to)f(the)h(message)e(\014le.)307 │ │ │ │ │ +624 y Fc(\210)42 b Fn(The)32 b Fi(msgFile)c Fn(parameter)i(determines)h │ │ │ │ │ (the)h(message)e(\014le)i(|)f(if)h Fi(msgFile)d Fn(is)i │ │ │ │ │ Fi(stdout)p Fn(,)f(then)i(the)g(message)390 724 y(\014le)c(is)f │ │ │ │ │ Fh(stdout)p Fn(,)h(otherwise)e(a)i(\014le)f(is)h(op)r(ened)f(with)i │ │ │ │ │ Fh(app)l(end)g Fn(status)e(to)g(receiv)n(e)g(an)n(y)g(output)h(data.) │ │ │ │ │ 307 858 y Fc(\210)42 b Fi(dataType)25 b Fn(is)i(the)h(t)n(yp)r(e)g(of)f │ │ │ │ │ (en)n(tries,)g Fi(0)h Fn(for)f(real,)f Fi(1)i Fn(for)f(complex.)307 │ │ │ │ │ 993 y Fc(\210)42 b Fi(symflag)25 b Fn(is)i(the)h(symmetry)g(\015ag,)e │ │ │ │ │ @@ -5811,17 +5816,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 1005 4 v 1171 100 a Fi(Multithreaded)22 │ │ │ │ │ -b Fg(:)37 b Fh(DRAFT)110 b Fg(Jan)n(uary)26 b(16,)h(2024)p │ │ │ │ │ -2856 100 V 1005 w Fn(9)456 390 y Fa({)41 b Fi(sparsityflag)e(=)k(0)g │ │ │ │ │ +TeXDict begin 9 8 bop 83 100 988 4 v 1153 100 a Fi(Multithreaded)23 │ │ │ │ │ +b Fg(:)37 b Fh(DRAFT)110 b Fg(F)-7 b(ebruary)26 b(18,)h(2025)p │ │ │ │ │ +2873 100 V 988 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 │ │ │ │ │ @@ -5906,21 +5911,21 @@ │ │ │ │ │ b Fi(n1)27 b Fn(is)h(the)g(n)n(um)n(b)r(er)f(of)g(p)r(oin)n(ts)h(in)g │ │ │ │ │ (the)g(\014rst)f(grid)g(direction.)307 5273 y Fc(\210)42 │ │ │ │ │ b Fi(n2)27 b Fn(is)h(the)g(n)n(um)n(b)r(er)f(of)g(p)r(oin)n(ts)h(in)g │ │ │ │ │ (the)g(second)f(grid)g(direction.)307 5407 y Fc(\210)42 │ │ │ │ │ b Fi(n3)27 b Fn(is)h(the)g(n)n(um)n(b)r(er)f(of)g(p)r(oin)n(ts)h(in)g │ │ │ │ │ (the)g(third)g(grid)e(direction.)p eop end │ │ │ │ │ %%Page: 10 10 │ │ │ │ │ -TeXDict begin 10 9 bop 0 100 a Fn(10)p 166 100 984 4 │ │ │ │ │ -v 1149 w Fi(Multithreaded)22 b Fg(:)37 b Fh(DRAFT)28 │ │ │ │ │ -b Fg(Jan)n(uary)d(16,)i(2024)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 │ │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fn(10)p 166 100 967 4 │ │ │ │ │ +v 1132 w Fi(Multithreaded)22 b Fg(:)37 b Fh(DRAFT)27 │ │ │ │ │ +b Fg(F)-7 b(ebruary)27 b(18,)f(2025)p 2933 100 V 307 │ │ │ │ │ +390 a Fc(\210)42 b Fn(The)28 b Fi(seed)e Fn(parameter)g(is)h(a)h │ │ │ │ │ +(random)e(n)n(um)n(b)r(er)i(seed.)307 523 y Fc(\210)42 │ │ │ │ │ +b Fn(The)28 b Fi(nrhs)e Fn(parameter)g(is)h(the)h(n)n(um)n(b)r(er)g(of) │ │ │ │ │ +f(righ)n(t)g(hand)h(sides)f(to)h(solv)n(e)e(as)h(one)g(blo)r(c)n(k.)307 │ │ │ │ │ 656 y Fc(\210)42 b Fn(The)28 b Fi(type)e Fn(parameter)g(sp)r(eci\014es) │ │ │ │ │ h(a)h(real)e(or)h(complex)g(linear)g(system.)456 789 │ │ │ │ │ y Fa({)41 b Fi(type)h(=)i(1)f(\(SPOOLES)p 1295 789 27 │ │ │ │ │ 4 v 28 w(REAL\))25 b Fn(for)i(real,)456 905 y Fa({)41 │ │ │ │ │ b Fi(type)h(=)i(2)f(\(SPOOLES)p 1295 905 V 28 w(COMPLEX\))24 │ │ │ │ │ b Fn(for)j(complex.)307 1038 y Fc(\210)42 b Fn(The)28 │ │ │ │ │ b Fi(nthread)d Fn(parameter)h(is)h(the)h(n)n(um)n(b)r(er)g(of)f │ │ │ │ │ ├── ps2ascii {} │ │ │ │ │ │ @@ -35,15 +35,15 @@ │ │ │ │ │ │ by independent topological traversals of the front tree. It is the list and working storage data structures (the │ │ │ │ │ │ ChvList, ChvManager and SubMtxManager objects) that have locks. What is done is common code between │ │ │ │ │ │ the serial and multithreaded environments, it is the choreography, i.e., who does what, that differs. │ │ │ │ │ │ Most of these same comments apply to the multithreaded solve methods. The calling sequences between │ │ │ │ │ │ the serial and multithreaded solves differs by one parameter, a SolveMap object that maps the submatrices │ │ │ │ │ │ of the factor matrix to the threads that will compute with them. │ │ │ │ │ │ 1 │ │ │ │ │ │ - 2 Multithreaded : DRAFT January 16, 2024 │ │ │ │ │ │ + 2 Multithreaded : DRAFT February 18, 2025 │ │ │ │ │ │ 1.1 Data Structure │ │ │ │ │ │ There are no multithreaded specific data structures. See the Lock object which is used to hide the particular │ │ │ │ │ │ mutual exclusion device used by a thread library. │ │ │ │ │ │ 1.2 Prototypes and descriptions of MT methods │ │ │ │ │ │ This section contains brief descriptions including prototypes of all methods found in the MT source directory. │ │ │ │ │ │ 1.2.1 Matrix-matrix multiply methods │ │ │ │ │ │ Therearefivemethodstomultiplyavectortimesadensematrix. Thefirstthreemethods,calledInpMtx MT nonsym mmm*(), │ │ │ │ │ │ @@ -79,15 +79,15 @@ │ │ │ │ │ │ This method computes the matrix-vector product y := y+αA x, where y is found in the Y DenseMtx │ │ │ │ │ │ object, α is real or complex in alpha[], A is found in the A Inpmtx object, and x is found in the X │ │ │ │ │ │ DenseMtx object. If any of the input objects are NULL, an error message is printed and the program │ │ │ │ │ │ exits. A, X and Y must all be real or all be complex. When A is real, then α = alpha[0]. When A │ │ │ │ │ │ is complex, then α = alpha[0] + i* alpha[1]. This means that one cannot call the methods with │ │ │ │ │ │ a constant as the third parameter, e.g., InpMtx MT nonsym mmm(A, Y, 3.22, X, nthread, msglvl, │ │ │ │ │ │ msgFile), for this may result in a segmentation violation. The values of α must be loaded into an │ │ │ │ │ │ - Multithreaded : DRAFT January 16, 2024 3 │ │ │ │ │ │ + Multithreaded : DRAFT February 18, 2025 3 │ │ │ │ │ │ array of length 1 or 2. The number of threads is specified by the nthread parameter; if, nthread is 1, │ │ │ │ │ │ the serial method is called. The msglvl and msgFile parameters are used for diagnostics during the │ │ │ │ │ │ creation of the threads’ individual data structures. │ │ │ │ │ │ Error checking: If A, Y or X are NULL, or if coordType is not INPMTX BY ROWS, INPMTX BY COLUMNS or │ │ │ │ │ │ INPMTX BY CHEVRONS,orifstorageModeisnotoneofINPMTX RAW DATA,INPMTX SORTEDorINPMTX BY VECTORS, │ │ │ │ │ │ or if inputModeis not SPOOLES REAL or SPOOLES COMPLEX,an error message is printed and the program │ │ │ │ │ │ exits. │ │ │ │ │ │ @@ -124,15 +124,15 @@ │ │ │ │ │ │ • cpus[1] — time spent initializing the fronts and loading the original entries. │ │ │ │ │ │ • cpus[2] — time spent accumulating updates from descendents. │ │ │ │ │ │ • cpus[3] — time spent inserting aggregate fronts. │ │ │ │ │ │ • cpus[4] — time spent removing and assembling aggregate fronts. │ │ │ │ │ │ • cpus[5] — time spent assembling postponed data. │ │ │ │ │ │ • cpus[6] — time spent to factor the fronts. │ │ │ │ │ │ • cpus[7] — time spent to extract postponed data. │ │ │ │ │ │ - 4 Multithreaded : DRAFT January 16, 2024 │ │ │ │ │ │ + 4 Multithreaded : DRAFT February 18, 2025 │ │ │ │ │ │ • cpus[8] — time spent to store the factor entries. │ │ │ │ │ │ • cpus[9] — miscellaneous time. │ │ │ │ │ │ Onreturn, the stats[] vector is filled with the following information. │ │ │ │ │ │ • stats[0] — number of pivots. │ │ │ │ │ │ • stats[1] — number of pivot tests. │ │ │ │ │ │ • stats[2] — number of delayed rows and columns. │ │ │ │ │ │ • stats[3] — number of entries in D. │ │ │ │ │ │ @@ -164,15 +164,15 @@ │ │ │ │ │ │ an error message is printed and the program exits. │ │ │ │ │ │ 1.2.4 Multithreaded Solve method │ │ │ │ │ │ 1. void FrontMtx_MT_solve ( FrontMtx *frontmtx, DenseMtx *mtxX, DenseMtx *mtxB, │ │ │ │ │ │ SubMtxManager *mtxmanager, SolveMap *solvemap, │ │ │ │ │ │ double cpus[], int msglvl, FILE *msgFile ) ; │ │ │ │ │ │ This method is used to solve one of three linear systems of equations using a multithreaded solve — │ │ │ │ │ │ (UT +I)D(I +U)X =B, (UH +I)D(I +U)X =B or (L+I)D(I+U)X =B. Entries of B are read │ │ │ │ │ │ - Multithreaded : DRAFT January 16, 2024 5 │ │ │ │ │ │ + Multithreaded : DRAFT February 18, 2025 5 │ │ │ │ │ │ from mtxB and entries of X are written to mtxX. Therefore, mtxX and mtxB can be the same object. │ │ │ │ │ │ (Note, this does not hold true for an MPI factorization with pivoting.) The submatrix manager object │ │ │ │ │ │ manages the working storage. The solvemap object contains the map from submatrices to threads. │ │ │ │ │ │ The map from fronts to processes that own them is given in the ownersIV object. On return the │ │ │ │ │ │ cpus[] vector is filled with the following. The stats[] vector is not currently used. │ │ │ │ │ │ • cpus[0] — set up the solves │ │ │ │ │ │ • cpus[1] — fetch right hand side and store solution │ │ │ │ │ │ @@ -206,15 +206,15 @@ │ │ │ │ │ │ ¿ 0 and msgFile is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 1.3 Driver programs for the multithreaded functions │ │ │ │ │ │ 1. allInOneMT msglvl msgFile type symmetryflag pivotingflag │ │ │ │ │ │ matrixFileName rhsFileName seed nthread │ │ │ │ │ │ This driver program reads in a matrix A and right hand side B, generates the graph for A and orders │ │ │ │ │ │ the matrix, factors A and solves the linear system AX = B for X using multithreaded factors and │ │ │ │ │ │ solves. Use the script file do gridMT for testing. │ │ │ │ │ │ - 6 Multithreaded : DRAFT January 16, 2024 │ │ │ │ │ │ + 6 Multithreaded : DRAFT February 18, 2025 │ │ │ │ │ │ • The msglvlparameterdetermines the amount of output. Use msglvl = 1 for just timing output. │ │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the message │ │ │ │ │ │ file is stdout, otherwise a file is opened with append status to receive any output data. │ │ │ │ │ │ • The type parameter specifies a real or complex linear system. │ │ │ │ │ │ – type = 1 (SPOOLES REAL) for real, │ │ │ │ │ │ – type = 2 (SPOOLES COMPLEX) for complex. │ │ │ │ │ │ • The symmetryflag parameter specifies the symmetry of the matrix. │ │ │ │ │ │ @@ -249,15 +249,15 @@ │ │ │ │ │ │ Thisdriverprogramisusedtotestthe“patch-and-go”functionalityforafactorizationwithoutpivoting. │ │ │ │ │ │ Whensmalldiagonalpivotelements are found, one of three actions are taken. See the PatchAndGoInfo │ │ │ │ │ │ object for more information. │ │ │ │ │ │ The program reads in a matrix A and right hand side B, generates the graph for A and orders the │ │ │ │ │ │ matrix, factors A and solves the linear system AX = B for X using multithreaded factors and solves. │ │ │ │ │ │ Use the script file do patchAndGo for testing. │ │ │ │ │ │ • The msglvlparameterdetermines the amount of output. Use msglvl = 1 for just timing output. │ │ │ │ │ │ - Multithreaded : DRAFT January 16, 2024 7 │ │ │ │ │ │ + Multithreaded : DRAFT February 18, 2025 7 │ │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the message │ │ │ │ │ │ file is stdout, otherwise a file is opened with append status to receive any output data. │ │ │ │ │ │ • The type parameter specifies a real or complex linear system. │ │ │ │ │ │ – type = 1 (SPOOLES REAL) for real, │ │ │ │ │ │ – type = 2 (SPOOLES COMPLEX) for complex. │ │ │ │ │ │ • The symmetryflag parameter specifies the symmetry of the matrix. │ │ │ │ │ │ – type = 0 (SPOOLES SYMMETRIC) for A real or complex symmetric, │ │ │ │ │ │ @@ -294,15 +294,15 @@ │ │ │ │ │ │ • The nthread parameter is the number of threads. │ │ │ │ │ │ 3. testMMM msglvl msgFile dataType symflag storageMode transpose │ │ │ │ │ │ nrow ncol nitem nrhs seed alphaReal alphaImag nthread │ │ │ │ │ │ ThisdriverprogramgeneratesA, anrow×ncolmatrixusingniteminputentries,X andY,nrow×nrhs │ │ │ │ │ │ T H │ │ │ │ │ │ matrices, is filled with random numbers. It then computes Y +α∗A∗X,Y +α∗A ∗X orY +α∗A ∗X. │ │ │ │ │ │ The program’s output is a file which when sent into Matlab, outputs the error in the computation. │ │ │ │ │ │ - 8 Multithreaded : DRAFT January 16, 2024 │ │ │ │ │ │ + 8 Multithreaded : DRAFT February 18, 2025 │ │ │ │ │ │ • Themsglvlparameterdeterminestheamountofoutput—takingmsglvl >= 3meanstheInpMtx │ │ │ │ │ │ object is written to the message file. │ │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the message │ │ │ │ │ │ file is stdout, otherwise a file is opened with append status to receive any output data. │ │ │ │ │ │ • dataType is the type of entries, 0 for real, 1 for complex. │ │ │ │ │ │ • symflag is the symmetry flag, 0 for symmetric, 1 for Hermitian, 2 for nonsymmetric. │ │ │ │ │ │ • storageModeisthestoragemodefortheentries,1forbyrows,2forbycolumns, 3forbychevrons. │ │ │ │ │ │ @@ -336,15 +336,15 @@ │ │ │ │ │ │ – type = 2 (SPOOLES COMPLEX) for complex. │ │ │ │ │ │ • The symmetryflag parameter specifies the symmetry of the matrix. │ │ │ │ │ │ – type = 0 (SPOOLES SYMMETRIC) for A real or complex symmetric, │ │ │ │ │ │ – type = 1 (SPOOLES HERMITIAN) for A complex Hermitian, │ │ │ │ │ │ – type = 2 (SPOOLES NONSYMMETRIC) │ │ │ │ │ │ for A real or complex nonsymmetric. │ │ │ │ │ │ • The sparsityflag parameter signals a direct or approximate factorization. │ │ │ │ │ │ - Multithreaded : DRAFT January 16, 2024 9 │ │ │ │ │ │ + Multithreaded : DRAFT February 18, 2025 9 │ │ │ │ │ │ – sparsityflag = 0 (FRONTMTX DENSE FRONTS) implies a direct factorization, the fronts will │ │ │ │ │ │ be stored as dense submatrices. │ │ │ │ │ │ – sparsityflag = 1 (FRONTMTX SPARSE FRONTS) implies an approximate factorization. The │ │ │ │ │ │ fronts will be stored as sparse submatrices, where the entries in the triangular factors will be │ │ │ │ │ │ subjected to a drop tolerance test — if the magnitude of an entry is droptol or larger, it will │ │ │ │ │ │ be stored, otherwise it will be dropped. │ │ │ │ │ │ • The pivotingflag parameter signals whether pivoting for stability will be enabled or not. │ │ │ │ │ │ @@ -382,15 +382,15 @@ │ │ │ │ │ │ X F │ │ │ │ │ │ • The msglvlparameterdetermines the amount of output. Use msglvl = 1 for just timing output. │ │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the message │ │ │ │ │ │ file is stdout, otherwise a file is opened with append status to receive any output data. │ │ │ │ │ │ • n1 is the number of points in the first grid direction. │ │ │ │ │ │ • n2 is the number of points in the second grid direction. │ │ │ │ │ │ • n3 is the number of points in the third grid direction. │ │ │ │ │ │ - 10 Multithreaded : DRAFT January 16, 2024 │ │ │ │ │ │ + 10 Multithreaded : DRAFT February 18, 2025 │ │ │ │ │ │ • The seed parameter is a random number seed. │ │ │ │ │ │ • The nrhs parameter is the number of right hand sides to solve as one block. │ │ │ │ │ │ • The type parameter specifies a real or complex linear system. │ │ │ │ │ │ – type = 1 (SPOOLES REAL) for real, │ │ │ │ │ │ – type = 2 (SPOOLES COMPLEX) for complex. │ │ │ │ │ │ • The nthread parameter is the number of threads. │ │ │ │ │ │ • The maptype parameter determines the type of map from fronts to processes to be used during │ │ │ ├── ./usr/share/doc/spooles-doc/Network.ps.gz │ │ │ │ ├── Network.ps │ │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ │ %%EndComments │ │ │ │ │ %%BeginDefaults │ │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ │ %%EndDefaults │ │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ │ %DVIPSCommandLine: dvips main -o Network.ps │ │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ │ -%DVIPSSource: TeX output 2024.01.16:2047 │ │ │ │ │ +%DVIPSSource: TeX output 2025.02.18:0318 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -1543,20 +1543,21 @@ │ │ │ │ │ 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 52 /four put │ │ │ │ │ -dup 54 /six put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ +dup 56 /eight put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 74 /J put │ │ │ │ │ +dup 70 /F put │ │ │ │ │ dup 97 /a put │ │ │ │ │ -dup 110 /n put │ │ │ │ │ +dup 98 /b put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ dup 114 /r put │ │ │ │ │ dup 117 /u put │ │ │ │ │ dup 121 /y put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ @@ -1740,89 +1741,93 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ │ -C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ │ -6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ │ -11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ │ -1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ │ -A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ │ -F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ │ -EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ │ -033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ │ -A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ │ -468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8A71FF9C085003EBB4F4 │ │ │ │ │ -3D271F5B16B1AAD3EBDC391F534AA46E545E9D8659DD19B309C3B7625A8396FA │ │ │ │ │ -2519464539D46E43ACB72952313C8497315E0319C08628023E8FC54D7D3BAC29 │ │ │ │ │ -D5AD8EFDABF0C33C7AFB7151A6606C62A87F0F5F783569AC4C881A992E3FE420 │ │ │ │ │ -297F7BC5147F3B2FA98450D2F8B07F7D229BC8BE06729920CFEC22556740E1CB │ │ │ │ │ -3DE09AC763C6D4A20AD1599C368FABD07BC35C16683F2A0311A88983415A9140 │ │ │ │ │ -2EFC4BC1B10DCAD4B2B8A28510E5BD39D6616D2B9B079ED3CF9C315B7DEC29D9 │ │ │ │ │ -251DFD0194B34EC175964C23383F23FFB2E41B698C405815D65EAFF9E9DD1DDE │ │ │ │ │ -30F77924656C288B8DDB2E5B0E7B1FAA66791DE3848EE6DE63AD0E945E49C6C7 │ │ │ │ │ -9FCA16E01F027F9EF7ACB55F02F5B0136480802F789F6FE14B430879979BA04D │ │ │ │ │ -F481AD4CF47E6847936F377FB04869F9A80E597301BFCAB718D8764094673876 │ │ │ │ │ -BCEF8FA3701608C84B3A0399A11D2E6AD922CCB7D72AF9EBFB30F4648A37A123 │ │ │ │ │ -CB8FB14BDC351692CF0CCAA5CA9383C2B23BAAA38700327EB743FBBE9EE04041 │ │ │ │ │ -13F5CEF4B3881BBC051C33369A82B3505B1CFD7D91AEF2E43EA728EE48E2D854 │ │ │ │ │ -5A7E516998ACDD4FD835FA901C5A21810A56D51FE919B2E58408EEB4DAEB487F │ │ │ │ │ -BA7F1D292CED902DF3533566D96DAD918319EA650D4FC7D9E0170CDE620F755B │ │ │ │ │ -0E7AE02D9B118481B26F5FF7060FBCFA2A682B6826F00679BCDA68794C05286D │ │ │ │ │ -B616DD08372ACDE0AE6E7EF116F0D36F16241ED4F0E8CCD80377792E3BB1343C │ │ │ │ │ -EEB22CC77738F7CBCBA32CF6C3979F6DF7ED81A89AE8928FD7CC550F2730BA88 │ │ │ │ │ -1B51CEDC63F4C47F261AFCAB7AC3CED20B15C97E714A460A1A3B16436B4A5149 │ │ │ │ │ -8F91DA4BE0B9B648534CE5F442117036B602DC91E2852BEA62F55803B833FDF7 │ │ │ │ │ -9F901AB87489E703DDEED1091A79DC73B4440BBBF2C7592B441187C4A3562204 │ │ │ │ │ -859F08BA3CE2A8ECCD5AAD13C50FB806FE79A388F1822C5608837CBDE526A044 │ │ │ │ │ -12E5CDE4A066932AF2ACA7E8FC6BA4603640944718752975B7DA6E906BE1EA01 │ │ │ │ │ -46736FF5D1AA1CC682D011B6039CF98C35E36D4F14ABC84A38B7203CC9A17756 │ │ │ │ │ -B2B0345276798F1A88A54AD9FEA0853C6DDF28525ED4F0B7380D14147012C2A4 │ │ │ │ │ -5B02888C986C76497EA4C729B0B82EE73C1A1A8E8F1ABF401E341028E9C15AF9 │ │ │ │ │ -354706D8DC07492921AD0932A46736C0D1B066D00287DACCC068FAE6A796EC89 │ │ │ │ │ -54D1D73AA88F3A5912BA9D3FF70065C8D0D0DAD1CD846501E06694374EFDBEC6 │ │ │ │ │ -931F644D5E8494AFC742423AD9A487658E310E0682BE19B8475F4D450487A686 │ │ │ │ │ -2B94494DEAF1C0F59DE82F2CE64BEE5E97F942FCFA1187ED6AA5761E951A7BF7 │ │ │ │ │ -9F842E34A4656C58B35A9E99F7E6762CEE11E0CF59FFD75D7382C5EE6DBB43F1 │ │ │ │ │ -ED219071D3FB22DBA90977723BB467C0490D042684C0724F40DCA3E0D8F1F4E7 │ │ │ │ │ -3C4F9A67BE6528185EAAFDD415224F7E256A4EA00111C17C746CBD80BF569A27 │ │ │ │ │ -D81195D7F79C1CCEEF30ED00D49F48B63E4B8D7953403A3710AE953CC1B76F0F │ │ │ │ │ -F523D777A6A186F262A602543F94AF7471DBE25FEBC207DB42DAF7DC9A5781FB │ │ │ │ │ -2131AD42869D966A734AAE3466DF1CE9D1BCFA72409A558C0AEE6A8E2FEAACB6 │ │ │ │ │ -2CDABCC28433034848ACF9FB4465D272E4AFC48572647F05F41C7A293CC5B595 │ │ │ │ │ -AD31555FB708A72962707348BC7033A8224BD42EB9D75FDF3AE9E6A9C960B330 │ │ │ │ │ -5137DF59F8E2E0D535F41524ABDF070745A4FA25CD8DFD38A5FF30A95452B875 │ │ │ │ │ -6569E8812631300D79A942C563AF174AC05C9F2D09D7D5D3C605F5A6B7F21B34 │ │ │ │ │ -18F270A993B050838E701A17938D1C156CBA7CA4BAC7C562CE9D7B758EAB25A9 │ │ │ │ │ -A6DFFC71F65561341847B776DF34061CE3D439B87B857626987EC93B3B95B8E8 │ │ │ │ │ -76FFB16B263675333FA10414FEED707FF7C366BF8B20FF8577CDEBEBCF1A5BCE │ │ │ │ │ -258C09C90175A5278B7C444A623E3331FDE5A6387B3E389540ED1E7E883958F3 │ │ │ │ │ -3A5C89CCD62256FA069DF4A5090FB17C1F1757C9209DAFB8A1F47182BF3E88D9 │ │ │ │ │ -0B5376B59EE165A761902759C8ED7F5AD301E7EB8B49CC09AF921DB45B7F8002 │ │ │ │ │ -AB32E73AAE53942DE0F9175D8446017006C9C0B93EF39C13B7A879F2F6DDFF16 │ │ │ │ │ -204BB24F976847CF006FD29332FCCB255B5116F7077A44F7066C39C81DC4BAD2 │ │ │ │ │ -40DB2753626C0102E5D047522ABC38EA294A699B8DFD9CA0A7980561A1062E90 │ │ │ │ │ -AB11EE286A9C238D9F721D9980D0A1828C2814972622D948CEE8C812C19A9A03 │ │ │ │ │ -608ED0AC138A436FFBF8BE3D1E66C87793416AF38ED9BC5424568A175FBDAA9E │ │ │ │ │ -D6FC11A7021693819B051562B5A59F32629E2D6019D69DD329BE1894A2B295E1 │ │ │ │ │ -1DCE9683B29AE126C56F26E5C595BF1A8249BDE231DBE8B066F7F62EF149B975 │ │ │ │ │ -A863969A4690504A5EA064721DA909B8157C0B39FBF8228D95CB655E406161E1 │ │ │ │ │ -148610FAEED7C5509880223C06A66DA19E10F94DC2DB481B26 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004FD597ED │ │ │ │ │ +EFDBC64ABD9B79386FB2427D1A63522195B1239C09F8CB3F8BD7A245A6DD82E3 │ │ │ │ │ +260C3889587626DFC5F7978E55F5524ABD6A3319CDD3D3F40D040044D51DA4E1 │ │ │ │ │ +6797EEAC7AA07C77EC6DB0E6E182B545A8BEF63B14F3FC07BAC09E7CD5C17ED6 │ │ │ │ │ +10080704B0DA4E9BA12F968DF8A58458D17E9A5B1F14A83DC51F5B161ADEE1CC │ │ │ │ │ +0183D82ED92C6FC7203C289949EDF0284D9893029FF5408E421324625F17C3E5 │ │ │ │ │ +2437C8F75A9D68EE1AF9174FEA6FC6BF793C7D2E497EA90396CF1A645E283B69 │ │ │ │ │ +8425F47C323587DF91E1D596DCB1E3A787C955D9D965A5E3E26ADF58B62AD5F9 │ │ │ │ │ +0C9AC784DE479780606354111E3202F215650DBBE1063A46F3C10B9EBC974DDA │ │ │ │ │ +A1A28DBBD43E9E5BFF000B12C787D0427928078F8EC5FE90DED97E6C129E8DEA │ │ │ │ │ +51F66504DB83764E52B0BA68DF7BE684C8959CB1D3345CC48221A9A4683306C0 │ │ │ │ │ +62B634E0A539383F0C7A788D9711EFF414869CCC5659D78CEBE009BF2463F56A │ │ │ │ │ +0ADC993348FE96DF7C250E13ED6504AACFE8F8DCA2D2048D9D8CFA127D363EAC │ │ │ │ │ +1F0630E2D1B621E6954038195D965B91FD974FA3F1B8B29D200A16CEBA645E2F │ │ │ │ │ +CEEE6FD49FBBD49E38AE67D4BFFCE91F1FC422554EC4409C5FA18D40FCD6D9B3 │ │ │ │ │ +2185ED1E0F98106D4339F086B05CA36E56EC22C60E2CE23F9C4CC403ACAD3F94 │ │ │ │ │ +4086B4DF6DFA0B7B4716417263E7B558535566AED2F6C2F9846A16D71A7930A7 │ │ │ │ │ +49232D3D16C4A01CF1A1998A06F40062ED329179A85668537C55D0BC24FC0010 │ │ │ │ │ +54DA83E2FC66B2A5D428E6A9BFC983253668C0ECE6CA36DBF97C4B7659D50842 │ │ │ │ │ +C65B36604840EEDA399B57E2DEFAC3E7FB031634CE33D04238F9854D2AAAF448 │ │ │ │ │ +34DA5F3BCCED3166FEEE82BB0BBA0A397CC2F95865CB52AABFF454D93B425809 │ │ │ │ │ +A26AC459F321FD23E2262FE816D06BAAECF32AAF167F84799AF80F9F88388D07 │ │ │ │ │ +0DB5FD57AFEE2850A8DFE977E6AE39CB3DC16DB1A163A583C86C6F775CE33521 │ │ │ │ │ +0081C0BBBAD6D30D26C66B28B38CEAC78FEA5FB3CC5853656B67C6D9D80EB30E │ │ │ │ │ +397558C9179AF5920F34DAB3F578DFCF0DBB137AED17D6325C23883E69EE4621 │ │ │ │ │ +34355A70C19EA68891E1CA937376901C85CDEE109F1665943E29A216DC00937A │ │ │ │ │ +B983A729A4654AD09187C0242D52FA4ADD0853EF4888864914D7D81C56578DD4 │ │ │ │ │ +3B51907032022E6E412D4F114675DEDCA8A9E85DC03A0B583FECD84432D15F70 │ │ │ │ │ +01F627BD6EC91F9FCFDA01BF40E1229B5F164309DBB641AD50970503DA2048C1 │ │ │ │ │ +DF8F36E8D252EE113F0B46677D9BAF376BAE18D74CFB0DBBD0C7E9D0A58BA3ED │ │ │ │ │ +1E5099CAE073EB5638617760AB57849893764EA9735173CD1EAB66884CEA7EE3 │ │ │ │ │ +8843327B2E145BD6FBB49102776B82BC511D109F8BE9E7E99DADABABEDC3CFD9 │ │ │ │ │ +393578FFD85907DFF2849E4CDE6FA4DEC7E1C150EBE4047FFB650F9548BE6D11 │ │ │ │ │ +0C51226A5436F18BF20A02E0F888F46B6AC3A8E8D927ECD3B5E095933AD3859F │ │ │ │ │ +5167C41D832EFCC4093BD2AFA7101AB430E57DAFC3590F05D3CBABB32BC203A0 │ │ │ │ │ +467B23BDB830487C9AA5B85BAC065F8538871B4180F8C4732E637DB090CFDE5A │ │ │ │ │ +3F4F2B5BFAFB848BAAD1A17CB076B34159601639BD93ECAB1214ACABF2C67FE2 │ │ │ │ │ +0658AA20B08681070FF56F1CC52144ABA8765D6E124D1CEA9BBA102808CE1BB2 │ │ │ │ │ +5EDF46BC7BBC2A5B49EE6EC28F5797A3969B057B21FCDBBD0E60848FF14F6CA3 │ │ │ │ │ +70F3060BDBB019B22722C99C7691760F013763B7FBEB62830AE215F195BF9F01 │ │ │ │ │ +21BF4377397E89574CFA47D123AA506A570A77BA6EB4AAB0B237A26154880293 │ │ │ │ │ +3952F832F72ECCB024F02385E5EE8566B165904B594E30D0700D033C6B429F6F │ │ │ │ │ +2A20BC774F442BC9CE29FCC81807C2768A8BC927A215558FBF36DC53F477F04A │ │ │ │ │ +41DA66E1A85B659EB761230977EAD7DA0150513D3323B143D4E2A61BCF03334C │ │ │ │ │ +C0EE3E1B06CFAF58ECC910BD81F0352B75FF1594D6A4EF504232D442174BE766 │ │ │ │ │ +0F8E703F97E21D25D4CD097549C31FEE7017C3916EFB02E7BF869172889827B6 │ │ │ │ │ +A48465EB7612BA3DBC6A9436C7167F149A25CE9F8E3F4F8DE3B5ADF6C0986CB3 │ │ │ │ │ +3A7E2DAB44AB489796461536F5F713017F2620AD03295CAE9285F08974AE0DF8 │ │ │ │ │ +D739260929619B509491AFF09C4CAEF9E65C2CA69470C907ECBF3AB6C955360D │ │ │ │ │ +05ABAC306DB51122A1ADC7EF0DD70FA299A45C505A83727D4598C86319EE9C06 │ │ │ │ │ +7218EFD4F40388354BCF1B79593D5AD221DF955D081F99F880E5CED07321AB3E │ │ │ │ │ +A2FCB8B05D54807D8E15E65B78DCE12989B9276350080C905DBB74CE9AA7E246 │ │ │ │ │ +5D3BAED292C562D4CF54617FCC6654496C7996D1ECE1EFF9258716AB763A12E6 │ │ │ │ │ +316E4C5587351A6DB011F58F6A15BC28BEBDC3836E0CB892807FEC228DC1B380 │ │ │ │ │ +92F7F42279F08D60F13D6A4CB425543C3644461461CBF6F27B6603F613D1FCF8 │ │ │ │ │ +A8410AD82D1498166AEB35D4125D7E2ADEAAB18BC04806AED53513F066E5F154 │ │ │ │ │ +3E13E863C50B9814EE2FB978D0D24A03FAF650CB6E2CADF1E6BE6BAF699AFC03 │ │ │ │ │ +E1A0EEB207B3B9A689ED5B373FE86686AD230BE6C18E1673DDA50E224B343EC5 │ │ │ │ │ +903BA0C8041C13607B50D5852AC7970B15C244E6EBA7D54B3086312CF04761D6 │ │ │ │ │ +7D3D75D51F20C371494AB81AB4A9838B20B483B851D01FEF41EA5C0B4755B964 │ │ │ │ │ +EB6E9B178051C556A010994EB88EAE641F4C1A0D7E0F98D5267E18AEF1AEA7E7 │ │ │ │ │ +9030A97DF89AFF621981C33B645FFB5F3BB2065A7661D11B26E0999561DF3580 │ │ │ │ │ +4A76A05DFAF8085525F8D5C01936F03C32E26E72569371C9EA3B8916F9DFC5FC │ │ │ │ │ +6A6F25A0FFDB981BA8B896393D75774D50828E6ADE903C45406E354703A4BC56 │ │ │ │ │ +2C49A47FEAC970DC433E3050C49F7FB945A9705BD8852D2D65D935F244D3B423 │ │ │ │ │ +EFAB84AAAAB8FBAFF50AFF372A533BCCEB5FC273DBADCF715776DF02A5DCBA9A │ │ │ │ │ +FBF265FAB4745D6475B33611EEE1EA95E7584E0BEEC7CA789AA69C8D03D6F8C0 │ │ │ │ │ +5B6844E2B901ACA560C0433B053D134866E567425174E47173679AAD4486A2D3 │ │ │ │ │ +369C29E4DD2CD6ACA1BE80ED8FF0A9C58A616D26E758BD8E6342624EC83FB590 │ │ │ │ │ +BD354B52B60BB054FAFE9AC63E1564FBC721FE8F276B0413EC89A2C85E5ED1B0 │ │ │ │ │ +3A9D83BE62A4488ADE7CE69971A8AF7E5862A4290EEF6F00D4171C7FFB360065 │ │ │ │ │ +92E72BF02BE27161AE0BB5516572A0BDC4F316FFB24B38484AC8D1FD4CD86062 │ │ │ │ │ +A2B5D03CF28C3A679C039A6EFDD4C9DA7E463AD60234C9F6BBEE48D87DD94D85 │ │ │ │ │ +842F495F3E25723718682CE4D6224CBBF4456F03077EDF736D65B9DDAB09470E │ │ │ │ │ +17742D82011FFA96BFE86B96E858F9352FCD20C3D46B77DBDEE54336EC2249EA │ │ │ │ │ +211F6DFFF5BEA1E5192BE1BAC0BDD5EDDB3D56C6F7C6E543561A0B39E5C1B04F │ │ │ │ │ +C683A7516B6E69D682455386DDA709929D621FA434D403E895AA0A77DBE1DFD2 │ │ │ │ │ +0D060DF82378880147ED97C6E8149686FA048710B113760AC1DA4512FF8556B3 │ │ │ │ │ +16E2447485B8C3CD58D0469C4A45FFB4CB0322BB284C02 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -4684,16 +4689,16 @@ │ │ │ │ │ 2[51 62 50 1[54 11[86 5[84 5[42 6[80 13[56 56 56 56 2[31 │ │ │ │ │ 46[{}24 99.6264 /CMBX12 rf /Fb 136[62 2[62 1[62 2[62 │ │ │ │ │ 3[62 5[62 22[62 78[{}7 119.552 /CMTT12 rf /Fc 134[71 │ │ │ │ │ 3[75 52 53 55 1[75 67 75 112 3[37 75 1[41 61 75 60 1[65 │ │ │ │ │ 13[75 2[92 11[103 17[67 67 2[37 46[{}22 119.552 /CMBX12 │ │ │ │ │ rf /Fd 141[38 2[46 51 2[42 1[28 46 42 1[42 1[42 14[65 │ │ │ │ │ 1[66 11[59 62 69 2[68 6[28 58[{}16 90.9091 /CMTI10 rf │ │ │ │ │ -/Fe 134[48 3[51 2[36 3[51 12[45 22[47 15[25 3[45 1[45 │ │ │ │ │ -1[45 45 45 3[25 44[{}13 90.9091 /CMSL10 rf /Ff 212[55 │ │ │ │ │ +/Fe 134[48 3[51 2[36 12[40 2[51 45 26[59 11[25 1[45 2[45 │ │ │ │ │ +2[45 45 45 3[25 44[{}14 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 │ │ │ │ │ @@ -4825,62 +4830,62 @@ │ │ │ │ │ y Fn(and)j Fl(y)g Fk(2)d Fl(Y)1814 5308 y Fh(I)1886 5294 │ │ │ │ │ y Fn(b)s(ecomes)k(t)m(w)m(o)h(edges,)h(\()p Fl(x;)15 │ │ │ │ │ b(y)2871 5261 y Fg(\000)2930 5294 y Fn(\))33 b(and)g(\()p │ │ │ │ │ Fl(y)3261 5261 y Ff(+)3320 5294 y Fl(;)15 b(x)p Fn(\),)34 │ │ │ │ │ b(b)s(oth)e(with)227 5407 y(in\014nite)e(capacit)m(y)-8 │ │ │ │ │ b(.)1927 5656 y(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fn(2)p 136 100 1059 4 v │ │ │ │ │ -1240 w Fm(Network)29 b Fe(:)40 b Fd(DRAFT)31 b Fe(Jan)m(uary)f(16,)h │ │ │ │ │ -(2024)p 2842 100 V 137 399 a Fj(\210)45 b Fn(An)33 b(edge)g(\()p │ │ │ │ │ -Fl(y)s(;)15 b(z)t Fn(\))35 b(where)d Fl(y)g Fk(2)e Fl(Y)1313 │ │ │ │ │ -413 y Fh(I)1385 399 y Fn(and)i Fl(z)i Fk(2)29 b Fl(Y)1783 │ │ │ │ │ -413 y Fh(W)1897 399 y Fn(b)s(ecomes)k(t)m(w)m(o)h(edges,)h(\()p │ │ │ │ │ -Fl(y)2790 366 y Ff(+)2849 399 y Fl(;)15 b(z)t Fn(\))34 │ │ │ │ │ -b(and)e(\()p Fl(z)t(;)15 b(y)3352 366 y Fg(\000)3412 │ │ │ │ │ -399 y Fn(\),)34 b(b)s(oth)e(with)227 511 y(in\014nite)e(capacit)m(y)-8 │ │ │ │ │ -b(.)137 695 y Fj(\210)45 b Fn(An)27 b(edge)h(\()p Fl(x;)15 │ │ │ │ │ -b(y)s Fn(\))27 b(where)g Fl(x)e Fk(2)g Fl(Y)1290 709 │ │ │ │ │ -y Fh(I)1357 695 y Fn(and)h Fl(y)i Fk(2)d Fl(Y)1742 709 │ │ │ │ │ -y Fh(I)1809 695 y Fn(b)s(ecomes)i(t)m(w)m(o)h(edges,)h(\()p │ │ │ │ │ -Fl(x)2688 662 y Ff(+)2747 695 y Fl(;)15 b(y)2835 662 │ │ │ │ │ -y Fg(\000)2894 695 y Fn(\))28 b(and)e(\()p Fl(y)3213 │ │ │ │ │ -662 y Ff(+)3272 695 y Fl(;)15 b(x)3364 662 y Fg(\000)3424 │ │ │ │ │ -695 y Fn(\),)28 b(b)s(oth)e(with)227 808 y(in\014nite)k(capacit)m(y)-8 │ │ │ │ │ -b(.)141 1010 y(The)29 b Fm(Network)d Fn(ob)5 b(ject)30 │ │ │ │ │ -b(can)f(b)s(e)g(constructed)g(fairly)g(simply)-8 b(.)40 │ │ │ │ │ -b(It)29 b(is)g(initialized)i(b)m(y)d(sp)s(ecifying)h(the)g(n)m(um)m(b)s │ │ │ │ │ -(er)0 1123 y(of)36 b(no)s(des)e(in)i(the)f(net)m(w)m(ork,)j(including)d │ │ │ │ │ -(the)h(source)g(and)f(sink.)55 b(Arcs)36 b(can)g(b)s(e)e(added)h(one)h │ │ │ │ │ -(at)g(a)g(time)g(and)f(it)0 1236 y(is)f(not)h(necessary)g(to)g(kno)m(w) │ │ │ │ │ -f(the)h(total)h(n)m(um)m(b)s(er)d(of)h(arcs)h(ahead)f(of)h(time.)53 │ │ │ │ │ -b(T)-8 b(o)35 b(sp)s(ecify)f(an)g(arc)h(one)f(needs)g(to)0 │ │ │ │ │ -1348 y(pro)m(vide)c(the)h(\014rst)f(and)f(second)i(v)m(ertices,)h(the)f │ │ │ │ │ -(capacit)m(y)h(and)e(the)h(presen)m(t)f(\015o)m(w.)141 │ │ │ │ │ -1484 y(Once)25 b(w)m(e)h(ha)m(v)m(e)h(constructed)e(the)h(net)m(w)m │ │ │ │ │ -(ork,)h(w)m(e)f(solv)m(e)h(the)e(max)h(\015o)m(w)f(problem)g(in)g(a)h │ │ │ │ │ -(v)m(ery)f(simple)h(manner,)0 1597 y(basically)40 b(the)f(F)-8 │ │ │ │ │ -b(ord-F)g(ulk)m(erson)40 b(algorithm)g(that)f(generates)h(augmen)m │ │ │ │ │ -(ting)g(paths.)65 b(No)39 b(doubt)f(this)h(can)g(b)s(e)0 │ │ │ │ │ -1710 y(impro)m(v)m(ed,)27 b(and)e(it)h(w)m(ould)g(b)s(e)f(w)m(elcome)i │ │ │ │ │ -(b)s(ecause)e(for)h(large)g(three)g(dimensional)g(\014nite)f(elemen)m │ │ │ │ │ -(t)j(graphs,)e(up)e(to)0 1823 y(sixt)m(y)29 b(p)s(er)f(cen)m(t)h(of)g │ │ │ │ │ -(the)g(time)g(is)g(sp)s(en)m(t)f(smo)s(othing)g(the)h(separators,)h │ │ │ │ │ -(and)d(most)i(of)g(this)f(time)i(is)e(sp)s(en)m(t)g(solving)0 │ │ │ │ │ -1936 y(a)j(max)f(\015o)m(w)h(problem.)141 2072 y(Ho)m(w)m(ev)m(er,)i │ │ │ │ │ -(the)d(net)m(w)m(ork)i(w)m(e)e(generate)i(in)e(practice)i(ha)m(v)m(e)g │ │ │ │ │ -(t)m(w)m(o)f(sp)s(ecial)g(prop)s(erties:)137 2274 y Fj(\210)45 │ │ │ │ │ -b Fn(The)31 b(net)m(w)m(orks)h(are)g(v)m(ery)g(shallo)m(w,)g(i.e.,)h │ │ │ │ │ -(the)f(distance)g(from)f(the)h(source)f(to)h(the)g(sink)f(is)g │ │ │ │ │ -(generally)i(3-6)227 2386 y(in)d(practice.)42 b(This)30 │ │ │ │ │ -b(reduces)g(the)h(p)s(oten)m(tial)g(impro)m(v)m(emen)m(t)h(of)f(a)f │ │ │ │ │ -(pre-push)f(algorithm.)137 2570 y Fj(\210)45 b Fn(The)32 │ │ │ │ │ -b(maxim)m(um)g(capacit)m(y)i(of)f(an)f(edge)h(is)f(small,)i(usually)d │ │ │ │ │ -(6-12.)48 b(Therefore)32 b(scaling)i(algorithms)f(ha)m(v)m(e)227 │ │ │ │ │ -2683 y(little)f(applicabilit)m(y)-8 b(.)0 2885 y(Finding)33 │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fn(2)p 136 100 1040 4 v │ │ │ │ │ +1221 w Fm(Network)29 b Fe(:)40 b Fd(DRAFT)31 b Fe(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2861 100 V 137 399 a Fj(\210)45 │ │ │ │ │ +b Fn(An)33 b(edge)g(\()p Fl(y)s(;)15 b(z)t Fn(\))35 b(where)d │ │ │ │ │ +Fl(y)g Fk(2)e Fl(Y)1313 413 y Fh(I)1385 399 y Fn(and)i │ │ │ │ │ +Fl(z)i Fk(2)29 b Fl(Y)1783 413 y Fh(W)1897 399 y Fn(b)s(ecomes)k(t)m(w) │ │ │ │ │ +m(o)h(edges,)h(\()p Fl(y)2790 366 y Ff(+)2849 399 y Fl(;)15 │ │ │ │ │ +b(z)t Fn(\))34 b(and)e(\()p Fl(z)t(;)15 b(y)3352 366 │ │ │ │ │ +y Fg(\000)3412 399 y Fn(\),)34 b(b)s(oth)e(with)227 511 │ │ │ │ │ +y(in\014nite)e(capacit)m(y)-8 b(.)137 695 y Fj(\210)45 │ │ │ │ │ +b Fn(An)27 b(edge)h(\()p Fl(x;)15 b(y)s Fn(\))27 b(where)g │ │ │ │ │ +Fl(x)e Fk(2)g Fl(Y)1290 709 y Fh(I)1357 695 y Fn(and)h │ │ │ │ │ +Fl(y)i Fk(2)d Fl(Y)1742 709 y Fh(I)1809 695 y Fn(b)s(ecomes)i(t)m(w)m │ │ │ │ │ +(o)h(edges,)h(\()p Fl(x)2688 662 y Ff(+)2747 695 y Fl(;)15 │ │ │ │ │ +b(y)2835 662 y Fg(\000)2894 695 y Fn(\))28 b(and)e(\()p │ │ │ │ │ +Fl(y)3213 662 y Ff(+)3272 695 y Fl(;)15 b(x)3364 662 │ │ │ │ │ +y Fg(\000)3424 695 y Fn(\),)28 b(b)s(oth)e(with)227 808 │ │ │ │ │ +y(in\014nite)k(capacit)m(y)-8 b(.)141 1010 y(The)29 b │ │ │ │ │ +Fm(Network)d Fn(ob)5 b(ject)30 b(can)f(b)s(e)g(constructed)g(fairly)g │ │ │ │ │ +(simply)-8 b(.)40 b(It)29 b(is)g(initialized)i(b)m(y)d(sp)s(ecifying)h │ │ │ │ │ +(the)g(n)m(um)m(b)s(er)0 1123 y(of)36 b(no)s(des)e(in)i(the)f(net)m(w)m │ │ │ │ │ +(ork,)j(including)d(the)h(source)g(and)f(sink.)55 b(Arcs)36 │ │ │ │ │ +b(can)g(b)s(e)e(added)h(one)h(at)g(a)g(time)g(and)f(it)0 │ │ │ │ │ +1236 y(is)f(not)h(necessary)g(to)g(kno)m(w)f(the)h(total)h(n)m(um)m(b)s │ │ │ │ │ +(er)d(of)h(arcs)h(ahead)f(of)h(time.)53 b(T)-8 b(o)35 │ │ │ │ │ +b(sp)s(ecify)f(an)g(arc)h(one)f(needs)g(to)0 1348 y(pro)m(vide)c(the)h │ │ │ │ │ +(\014rst)f(and)f(second)i(v)m(ertices,)h(the)f(capacit)m(y)h(and)e(the) │ │ │ │ │ +h(presen)m(t)f(\015o)m(w.)141 1484 y(Once)25 b(w)m(e)h(ha)m(v)m(e)h │ │ │ │ │ +(constructed)e(the)h(net)m(w)m(ork,)h(w)m(e)f(solv)m(e)h(the)e(max)h │ │ │ │ │ +(\015o)m(w)f(problem)g(in)g(a)h(v)m(ery)f(simple)h(manner,)0 │ │ │ │ │ +1597 y(basically)40 b(the)f(F)-8 b(ord-F)g(ulk)m(erson)40 │ │ │ │ │ +b(algorithm)g(that)f(generates)h(augmen)m(ting)g(paths.)65 │ │ │ │ │ +b(No)39 b(doubt)f(this)h(can)g(b)s(e)0 1710 y(impro)m(v)m(ed,)27 │ │ │ │ │ +b(and)e(it)h(w)m(ould)g(b)s(e)f(w)m(elcome)i(b)s(ecause)e(for)h(large)g │ │ │ │ │ +(three)g(dimensional)g(\014nite)f(elemen)m(t)j(graphs,)e(up)e(to)0 │ │ │ │ │ +1823 y(sixt)m(y)29 b(p)s(er)f(cen)m(t)h(of)g(the)g(time)g(is)g(sp)s(en) │ │ │ │ │ +m(t)f(smo)s(othing)g(the)h(separators,)h(and)d(most)i(of)g(this)f(time) │ │ │ │ │ +i(is)e(sp)s(en)m(t)g(solving)0 1936 y(a)j(max)f(\015o)m(w)h(problem.) │ │ │ │ │ +141 2072 y(Ho)m(w)m(ev)m(er,)i(the)d(net)m(w)m(ork)i(w)m(e)e(generate)i │ │ │ │ │ +(in)e(practice)i(ha)m(v)m(e)g(t)m(w)m(o)f(sp)s(ecial)g(prop)s(erties:) │ │ │ │ │ +137 2274 y Fj(\210)45 b Fn(The)31 b(net)m(w)m(orks)h(are)g(v)m(ery)g │ │ │ │ │ +(shallo)m(w,)g(i.e.,)h(the)f(distance)g(from)f(the)h(source)f(to)h(the) │ │ │ │ │ +g(sink)f(is)g(generally)i(3-6)227 2386 y(in)d(practice.)42 │ │ │ │ │ +b(This)30 b(reduces)g(the)h(p)s(oten)m(tial)g(impro)m(v)m(emen)m(t)h │ │ │ │ │ +(of)f(a)f(pre-push)f(algorithm.)137 2570 y Fj(\210)45 │ │ │ │ │ +b Fn(The)32 b(maxim)m(um)g(capacit)m(y)i(of)f(an)f(edge)h(is)f(small,)i │ │ │ │ │ +(usually)d(6-12.)48 b(Therefore)32 b(scaling)i(algorithms)f(ha)m(v)m(e) │ │ │ │ │ +227 2683 y(little)f(applicabilit)m(y)-8 b(.)0 2885 y(Finding)33 │ │ │ │ │ b(a)h(minimal)g(separator)g(giv)m(es)h(rise)f(to)g(net)m(w)m(orks)g(of) │ │ │ │ │ g(a)g(sp)s(ecial)g(nature)f(and)g(that)h(ma)m(y)g(require)f(sp)s(e-)0 │ │ │ │ │ 2998 y(cialized)41 b(solution)f(tec)m(hniques.)67 b(In)38 │ │ │ │ │ b(fact,)43 b(there)c(is)g(a)h(more)f(straigh)m(tforw)m(ard)h(approac)m │ │ │ │ │ (h)f(that)h(generates)h(a)0 3111 y(net)m(w)m(ork)f(where)f(eac)m(h)i(v) │ │ │ │ │ m(ertex)f(in)f Fl(Y)60 b Fn(b)s(ecomes)39 b Fd(one)h │ │ │ │ │ Fn(no)s(de)f(in)g(the)g(net)m(w)m(ork)i(\(as)f(opp)s(osed)e(to)i(t)m(w) │ │ │ │ │ @@ -4910,17 +4915,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 1059 4 v 1240 100 a Fm(Network)28 │ │ │ │ │ -b Fe(:)41 b Fd(DRAFT)121 b Fe(Jan)m(uary)30 b(16,)i(2024)p │ │ │ │ │ -2795 100 V 1059 w Fn(3)137 399 y Fj(\210)45 b Fm(int)i(narc)29 │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1040 4 v 1221 100 a Fm(Network)28 │ │ │ │ │ +b Fe(:)41 b Fd(DRAFT)121 b Fe(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2814 100 V 1040 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 │ │ │ │ │ @@ -4965,27 +4970,27 @@ │ │ │ │ │ (h)m(unks.)0 5059 y Fc(1.2)135 b(Protot)l(yp)t(es)46 │ │ │ │ │ b(and)f(descriptions)g(of)g Fb(Network)d Fc(metho)t(ds)0 │ │ │ │ │ 5294 y Fn(This)f(section)j(con)m(tains)f(brief)f(descriptions)g │ │ │ │ │ (including)f(protot)m(yp)s(es)i(of)f(all)h(metho)s(ds)f(that)h(b)s │ │ │ │ │ (elong)f(to)h(the)0 5407 y Fm(Network)28 b Fn(ob)5 b(ject.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fn(4)p 136 100 1059 4 v │ │ │ │ │ -1240 w Fm(Network)29 b Fe(:)40 b Fd(DRAFT)31 b Fe(Jan)m(uary)f(16,)h │ │ │ │ │ -(2024)p 2842 100 V 0 399 a Fa(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ │ -589 y Fn(As)d(usual,)h(there)f(are)g(four)f(basic)h(metho)s(ds)g(to)g │ │ │ │ │ -(supp)s(ort)e(ob)5 b(ject)36 b(creation,)i(setting)e(default)f │ │ │ │ │ -(\014elds,)h(clearing)0 702 y(an)m(y)31 b(allo)s(cated)h(data,)f(and)f │ │ │ │ │ -(free'ing)h(the)g(ob)5 b(ject.)111 894 y(1.)46 b Fm(Network)g(*)i │ │ │ │ │ -(Network_new)c(\()k(void)e(\))i(;)227 1038 y Fn(This)39 │ │ │ │ │ -b(metho)s(d)f(simply)h(allo)s(cates)i(storage)g(for)e(the)g │ │ │ │ │ -Fm(Network)f Fn(structure)g(and)h(then)g(sets)g(the)h(default)227 │ │ │ │ │ -1151 y(\014elds)30 b(b)m(y)g(a)h(call)h(to)f Fm(Network)p │ │ │ │ │ -1282 1151 29 4 v 32 w(setDefaultFields\(\))p Fn(.)111 │ │ │ │ │ -1326 y(2.)46 b Fm(void)h(Network_setDefaultFields)41 │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fn(4)p 136 100 1040 4 v │ │ │ │ │ +1221 w Fm(Network)29 b Fe(:)40 b Fd(DRAFT)31 b Fe(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2861 100 V 0 399 a Fa(1.2.1)112 │ │ │ │ │ +b(Basic)38 b(metho)s(ds)0 589 y Fn(As)d(usual,)h(there)f(are)g(four)f │ │ │ │ │ +(basic)h(metho)s(ds)g(to)g(supp)s(ort)e(ob)5 b(ject)36 │ │ │ │ │ +b(creation,)i(setting)e(default)f(\014elds,)h(clearing)0 │ │ │ │ │ +702 y(an)m(y)31 b(allo)s(cated)h(data,)f(and)f(free'ing)h(the)g(ob)5 │ │ │ │ │ +b(ject.)111 894 y(1.)46 b Fm(Network)g(*)i(Network_new)c(\()k(void)e │ │ │ │ │ +(\))i(;)227 1038 y Fn(This)39 b(metho)s(d)f(simply)h(allo)s(cates)i │ │ │ │ │ +(storage)g(for)e(the)g Fm(Network)f Fn(structure)g(and)h(then)g(sets)g │ │ │ │ │ +(the)h(default)227 1151 y(\014elds)30 b(b)m(y)g(a)h(call)h(to)f │ │ │ │ │ +Fm(Network)p 1282 1151 29 4 v 32 w(setDefaultFields\(\))p │ │ │ │ │ +Fn(.)111 1326 y(2.)46 b Fm(void)h(Network_setDefaultFields)41 │ │ │ │ │ b(\()48 b(Network)d(*network)h(\))h(;)227 1470 y Fn(This)30 │ │ │ │ │ b(metho)s(d)g(sets)g(the)h(structure's)f(\014elds)g(to)h(default)g(v)-5 │ │ │ │ │ b(alues.)227 1614 y Fd(Err)g(or)34 b(che)-5 b(cking:)40 │ │ │ │ │ b Fn(If)30 b Fm(network)f Fn(is)h Fm(NULL)p Fn(,)g(an)g(error)g │ │ │ │ │ (message)h(is)g(prin)m(ted)f(and)f(the)i(program)f(exits.)111 │ │ │ │ │ 1789 y(3.)46 b Fm(void)h(Network_clearData)c(\()k(Network)f(*network)g │ │ │ │ │ (\))h(;)227 1933 y Fn(This)26 b(metho)s(d)g(releases)h(an)m(y)g │ │ │ │ │ @@ -5038,17 +5043,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 1059 4 v 1240 100 a Fm(Network)28 │ │ │ │ │ -b Fe(:)41 b Fd(DRAFT)121 b Fe(Jan)m(uary)30 b(16,)i(2024)p │ │ │ │ │ -2795 100 V 1059 w Fn(5)0 399 y Fa(1.2.3)112 b(Utilit)m(y)38 │ │ │ │ │ +TeXDict begin 5 4 bop 91 100 1040 4 v 1221 100 a Fm(Network)28 │ │ │ │ │ +b Fe(:)41 b Fd(DRAFT)121 b Fe(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2814 100 V 1040 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 │ │ │ │ │ @@ -5122,36 +5127,37 @@ │ │ │ │ │ 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 1059 4 v │ │ │ │ │ -1240 w Fm(Network)29 b Fe(:)40 b Fd(DRAFT)31 b Fe(Jan)m(uary)f(16,)h │ │ │ │ │ -(2024)p 2842 100 V 0 399 a Fa(1.2.4)112 b(IO)38 b(metho)s(ds)0 │ │ │ │ │ -595 y Fn(There)30 b(are)h(t)m(w)m(o)g(IO)f(routines)g(for)h(debugging)f │ │ │ │ │ -(purp)s(oses.)111 832 y(1.)46 b Fm(void)h(Network_writeForHumanEye)41 │ │ │ │ │ -b(\()48 b(Network)d(*network,)h(FILE)g(*fp)h(\))h(;)227 │ │ │ │ │ -983 y Fn(This)20 b(metho)s(d)f(writes)i(the)f(net)m(w)m(ork)h(to)g(a)g │ │ │ │ │ -(\014le)f(in)g(a)h(h)m(uman)e(readable)i(format.)38 b(The)20 │ │ │ │ │ -b(metho)s(d)f Fm(Network)p 3762 983 29 4 v 33 w(writeStats\(\))227 │ │ │ │ │ -1096 y Fn(is)29 b(called)h(to)f(write)g(out)g(the)f(header)h(and)f │ │ │ │ │ -(statistics.)42 b(Then)28 b(the)g(in-list)i(and)e(out-lists)h(for)g │ │ │ │ │ -(the)f(no)s(des)g(in)227 1209 y(the)j(net)m(w)m(ork)g(are)g(prin)m │ │ │ │ │ -(ted.)227 1359 y Fd(Err)-5 b(or)33 b(che)-5 b(cking:)40 │ │ │ │ │ -b Fn(If)28 b Fm(network)f Fn(or)i Fm(fp)g Fn(is)g Fm(NULL)p │ │ │ │ │ -Fn(,)f(an)h(error)g(message)h(is)f(prin)m(ted)f(and)h(the)g(program)g │ │ │ │ │ -(exits.)111 1546 y(2.)46 b Fm(void)h(Network_writeStats)c(\()k(Network) │ │ │ │ │ -f(*network,)f(FILE)i(*fp)g(\))g(;)227 1697 y Fn(This)30 │ │ │ │ │ -b(metho)s(d)g(writes)g(a)h(header)f(and)g(statistics)i(to)f(a)g │ │ │ │ │ -(\014le.)227 1847 y Fd(Err)-5 b(or)33 b(che)-5 b(cking:)40 │ │ │ │ │ -b Fn(If)28 b Fm(network)f Fn(or)i Fm(fp)g Fn(is)g Fm(NULL)p │ │ │ │ │ -Fn(,)f(an)h(error)g(message)h(is)f(prin)m(ted)f(and)h(the)g(program)g │ │ │ │ │ -(exits.)p eop end │ │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fn(6)p 136 100 1040 4 v │ │ │ │ │ +1221 w Fm(Network)29 b Fe(:)40 b Fd(DRAFT)31 b Fe(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2861 100 V 0 399 a Fa(1.2.4)112 │ │ │ │ │ +b(IO)38 b(metho)s(ds)0 595 y Fn(There)30 b(are)h(t)m(w)m(o)g(IO)f │ │ │ │ │ +(routines)g(for)h(debugging)f(purp)s(oses.)111 832 y(1.)46 │ │ │ │ │ +b Fm(void)h(Network_writeForHumanEye)41 b(\()48 b(Network)d(*network,)h │ │ │ │ │ +(FILE)g(*fp)h(\))h(;)227 983 y Fn(This)20 b(metho)s(d)f(writes)i(the)f │ │ │ │ │ +(net)m(w)m(ork)h(to)g(a)g(\014le)f(in)g(a)h(h)m(uman)e(readable)i │ │ │ │ │ +(format.)38 b(The)20 b(metho)s(d)f Fm(Network)p 3762 │ │ │ │ │ +983 29 4 v 33 w(writeStats\(\))227 1096 y Fn(is)29 b(called)h(to)f │ │ │ │ │ +(write)g(out)g(the)f(header)h(and)f(statistics.)42 b(Then)28 │ │ │ │ │ +b(the)g(in-list)i(and)e(out-lists)h(for)g(the)f(no)s(des)g(in)227 │ │ │ │ │ +1209 y(the)j(net)m(w)m(ork)g(are)g(prin)m(ted.)227 1359 │ │ │ │ │ +y Fd(Err)-5 b(or)33 b(che)-5 b(cking:)40 b Fn(If)28 b │ │ │ │ │ +Fm(network)f Fn(or)i Fm(fp)g Fn(is)g Fm(NULL)p Fn(,)f(an)h(error)g │ │ │ │ │ +(message)h(is)f(prin)m(ted)f(and)h(the)g(program)g(exits.)111 │ │ │ │ │ +1546 y(2.)46 b Fm(void)h(Network_writeStats)c(\()k(Network)f(*network,) │ │ │ │ │ +f(FILE)i(*fp)g(\))g(;)227 1697 y Fn(This)30 b(metho)s(d)g(writes)g(a)h │ │ │ │ │ +(header)f(and)g(statistics)i(to)f(a)g(\014le.)227 1847 │ │ │ │ │ +y Fd(Err)-5 b(or)33 b(che)-5 b(cking:)40 b Fn(If)28 b │ │ │ │ │ +Fm(network)f Fn(or)i Fm(fp)g Fn(is)g Fm(NULL)p Fn(,)f(an)h(error)g │ │ │ │ │ +(message)h(is)f(prin)m(ted)f(and)h(the)g(program)g(exits.)p │ │ │ │ │ +eop end │ │ │ │ │ %%Page: 7 7 │ │ │ │ │ TeXDict begin 7 6 bop 0 866 a Fo(Index)0 1289 y Fm(Network)p │ │ │ │ │ 342 1289 29 4 v 32 w(addArc\(\))p Fn(,)29 b(4)0 1402 │ │ │ │ │ y Fm(Network)p 342 1402 V 32 w(augmentPath\(\))p Fn(,)e(5)0 │ │ │ │ │ 1515 y Fm(Network)p 342 1515 V 32 w(clearData\(\))p Fn(,)h(4)0 │ │ │ │ │ 1628 y Fm(Network)p 342 1628 V 32 w(findAugmentingPath\(\))p │ │ │ │ │ Fn(,)e(5)0 1741 y Fm(Network)p 342 1741 V 32 w(findMaxFlow\(\))p │ │ │ │ │ ├── ps2ascii {} │ │ │ │ │ │ @@ -31,15 +31,15 @@ │ │ │ │ │ │ B B │ │ │ │ │ │ Similarly, an edge (x,y) where x ∈ Y and y ∈ Y is not found in the network. │ │ │ │ │ │ W W │ │ │ │ │ │ • An edge (x,y) where x ∈ Y and y ∈ Y becomes two edges, (x,y−) and (y+,x), both with │ │ │ │ │ │ B I │ │ │ │ │ │ infinite capacity. │ │ │ │ │ │ 1 │ │ │ │ │ │ - 2 Network : DRAFT January 16, 2024 │ │ │ │ │ │ + 2 Network : DRAFT February 18, 2025 │ │ │ │ │ │ • An edge (y,z) where y ∈ Y and z ∈ Y becomes two edges, (y+,z) and (z,y−), both with │ │ │ │ │ │ I W │ │ │ │ │ │ infinite capacity. │ │ │ │ │ │ + − + − │ │ │ │ │ │ • An edge (x,y) where x ∈ Y and y ∈ Y becomes two edges, (x ,y ) and (y ,x ), both with │ │ │ │ │ │ I I │ │ │ │ │ │ infinite capacity. │ │ │ │ │ │ @@ -71,15 +71,15 @@ │ │ │ │ │ │ • ArcChunk – a structure that holds the storage for a number of arcs. Since we do not require │ │ │ │ │ │ the number of arcs to be known in advance when initializing the Network object, we allo- │ │ │ │ │ │ cate chunks of space to hold the arcs as necessary. Each chunks holds space for nnode arc │ │ │ │ │ │ structures. │ │ │ │ │ │ The Network object has six fields. │ │ │ │ │ │ • int nnode — the number of nodes in the network, including the source (node 0) and the sink │ │ │ │ │ │ (node nnode-1). │ │ │ │ │ │ - Network : DRAFT January 16, 2024 3 │ │ │ │ │ │ + Network : DRAFT February 18, 2025 3 │ │ │ │ │ │ • int narc — the number of arcs in the network │ │ │ │ │ │ • int ntrav — the number of arc traversals that we made to find a max flow. │ │ │ │ │ │ • Arc **inheads — pointer to a vector of pointers to Arc, inheads[v] points to the first arc │ │ │ │ │ │ in the in-list for node v. │ │ │ │ │ │ • Arc **outheads — pointer to a vector of pointers to Arc, outheads[v] points to the first │ │ │ │ │ │ arc in the out-list for node v. │ │ │ │ │ │ • ArcChunk *chunk — pointer to the first ArcChunk structure. │ │ │ │ │ │ @@ -99,15 +99,15 @@ │ │ │ │ │ │ • int size — the total number of Arc structures in this chunk. │ │ │ │ │ │ • int inuse — the number of active Arc structures in this chunk. │ │ │ │ │ │ • Arc *base — pointer to the first Arc structure in this chunk. │ │ │ │ │ │ • ArcChunk *next — pointer to the next ArcChunk structure in the list of chunks. │ │ │ │ │ │ 1.2 Prototypes and descriptions of Network methods │ │ │ │ │ │ This section contains brief descriptions including prototypes of all methods that belong to the │ │ │ │ │ │ Network object. │ │ │ │ │ │ - 4 Network : DRAFT January 16, 2024 │ │ │ │ │ │ + 4 Network : DRAFT February 18, 2025 │ │ │ │ │ │ 1.2.1 Basic methods │ │ │ │ │ │ As usual, there are four basic methods to support object creation, setting default fields, clearing │ │ │ │ │ │ any allocated data, and free’ing the object. │ │ │ │ │ │ 1. Network * Network_new ( void ) ; │ │ │ │ │ │ This method simply allocates storage for the Network structure and then sets the default │ │ │ │ │ │ fields by a call to Network setDefaultFields(). │ │ │ │ │ │ 2. void Network_setDefaultFields ( Network *network ) ; │ │ │ │ │ │ @@ -135,15 +135,15 @@ │ │ │ │ │ │ 3. void Network_addArc ( Network *network, int firstNode, secondNode, │ │ │ │ │ │ int capacity, int flow ) ; │ │ │ │ │ │ This method adds an arc from firstNode to secondNode with flow flow and capacity │ │ │ │ │ │ capacity. The arc is inserted in the out-list for firstNode and the in-list for secondNode. │ │ │ │ │ │ Error checking: If network is NULL, or if nnode ≤ 0, or if firstNode ≤ 0, or if nnode ≤ │ │ │ │ │ │ firstNode, or if secondNode ≤ 0, or if nnode ≤ secondNode, or if capacity ≤ 0, an error │ │ │ │ │ │ message is printed and the program exits. │ │ │ │ │ │ - Network : DRAFT January 16, 2024 5 │ │ │ │ │ │ + Network : DRAFT February 18, 2025 5 │ │ │ │ │ │ 1.2.3 Utility methods │ │ │ │ │ │ 1. void Network_findMaxFlow ( Network *network ) ; │ │ │ │ │ │ This method finds a maximum flow over the network by repeatedly calling the method to │ │ │ │ │ │ find an augmenting path and then the method to augment the path. It uses an Ideq object │ │ │ │ │ │ to maintain a priority dequeue. │ │ │ │ │ │ Error checking: If network is NULL, or if nnode ≤ 0, an error message is printed and the │ │ │ │ │ │ program exits. │ │ │ │ │ │ @@ -172,15 +172,15 @@ │ │ │ │ │ │ and the program exits. │ │ │ │ │ │ 5. void Network_findMincutFromSink ( Network *network, Ideq deq, int mark[]) ; │ │ │ │ │ │ This method finds the min-cut closest to the sink by traversing a tree of flow-alternating │ │ │ │ │ │ paths into the sink. On return, mark[v] = 1 if the node v is in the component that contains │ │ │ │ │ │ the source. If the node v is in the component that contains the sink, then mark[v] = 2. │ │ │ │ │ │ Error checking: If network, deq or mark is NULL, or if nnode ≤ 0, an error message is printed │ │ │ │ │ │ and the program exits. │ │ │ │ │ │ - 6 Network : DRAFT January 16, 2024 │ │ │ │ │ │ + 6 Network : DRAFT February 18, 2025 │ │ │ │ │ │ 1.2.4 IO methods │ │ │ │ │ │ There are two IO routines for debugging purposes. │ │ │ │ │ │ 1. void Network_writeForHumanEye ( Network *network, FILE *fp ) ; │ │ │ │ │ │ Thismethodwritesthenetworktoafileinahumanreadableformat. ThemethodNetwork writeStats() │ │ │ │ │ │ is called to write out the header and statistics. Then the in-list and out-lists for the nodes in │ │ │ │ │ │ the network are printed. │ │ │ │ │ │ Error checking: If network or fp is NULL, an error message is printed and the program exits. │ │ │ ├── ./usr/share/doc/spooles-doc/PatchAndGoInfo.ps.gz │ │ │ │ ├── PatchAndGoInfo.ps │ │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ │ %%EndComments │ │ │ │ │ %%BeginDefaults │ │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ │ %%EndDefaults │ │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ │ %DVIPSCommandLine: dvips main -o PatchAndGoInfo.ps │ │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ │ -%DVIPSSource: TeX output 2024.01.16:2047 │ │ │ │ │ +%DVIPSSource: TeX output 2025.02.18:0318 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -2041,20 +2041,21 @@ │ │ │ │ │ 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 52 /four put │ │ │ │ │ -dup 54 /six put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ +dup 56 /eight put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 74 /J put │ │ │ │ │ +dup 70 /F put │ │ │ │ │ dup 97 /a put │ │ │ │ │ -dup 110 /n put │ │ │ │ │ +dup 98 /b put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ dup 114 /r put │ │ │ │ │ dup 117 /u put │ │ │ │ │ dup 121 /y put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ @@ -2238,89 +2239,93 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ │ -C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ │ -6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ │ -11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ │ -1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ │ -A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ │ -F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ │ -EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ │ -033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ │ -A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ │ -468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8A71FF9C085003EBB4F4 │ │ │ │ │ -3D271F5B16B1AAD3EBDC391F534AA46E545E9D8659DD19B309C3B7625A8396FA │ │ │ │ │ -2519464539D46E43ACB72952313C8497315E0319C08628023E8FC54D7D3BAC29 │ │ │ │ │ -D5AD8EFDABF0C33C7AFB7151A6606C62A87F0F5F783569AC4C881A992E3FE420 │ │ │ │ │ -297F7BC5147F3B2FA98450D2F8B07F7D229BC8BE06729920CFEC22556740E1CB │ │ │ │ │ -3DE09AC763C6D4A20AD1599C368FABD07BC35C16683F2A0311A88983415A9140 │ │ │ │ │ -2EFC4BC1B10DCAD4B2B8A28510E5BD39D6616D2B9B079ED3CF9C315B7DEC29D9 │ │ │ │ │ -251DFD0194B34EC175964C23383F23FFB2E41B698C405815D65EAFF9E9DD1DDE │ │ │ │ │ -30F77924656C288B8DDB2E5B0E7B1FAA66791DE3848EE6DE63AD0E945E49C6C7 │ │ │ │ │ -9FCA16E01F027F9EF7ACB55F02F5B0136480802F789F6FE14B430879979BA04D │ │ │ │ │ -F481AD4CF47E6847936F377FB04869F9A80E597301BFCAB718D8764094673876 │ │ │ │ │ -BCEF8FA3701608C84B3A0399A11D2E6AD922CCB7D72AF9EBFB30F4648A37A123 │ │ │ │ │ -CB8FB14BDC351692CF0CCAA5CA9383C2B23BAAA38700327EB743FBBE9EE04041 │ │ │ │ │ -13F5CEF4B3881BBC051C33369A82B3505B1CFD7D91AEF2E43EA728EE48E2D854 │ │ │ │ │ -5A7E516998ACDD4FD835FA901C5A21810A56D51FE919B2E58408EEB4DAEB487F │ │ │ │ │ -BA7F1D292CED902DF3533566D96DAD918319EA650D4FC7D9E0170CDE620F755B │ │ │ │ │ -0E7AE02D9B118481B26F5FF7060FBCFA2A682B6826F00679BCDA68794C05286D │ │ │ │ │ -B616DD08372ACDE0AE6E7EF116F0D36F16241ED4F0E8CCD80377792E3BB1343C │ │ │ │ │ -EEB22CC77738F7CBCBA32CF6C3979F6DF7ED81A89AE8928FD7CC550F2730BA88 │ │ │ │ │ -1B51CEDC63F4C47F261AFCAB7AC3CED20B15C97E714A460A1A3B16436B4A5149 │ │ │ │ │ -8F91DA4BE0B9B648534CE5F442117036B602DC91E2852BEA62F55803B833FDF7 │ │ │ │ │ -9F901AB87489E703DDEED1091A79DC73B4440BBBF2C7592B441187C4A3562204 │ │ │ │ │ -859F08BA3CE2A8ECCD5AAD13C50FB806FE79A388F1822C5608837CBDE526A044 │ │ │ │ │ -12E5CDE4A066932AF2ACA7E8FC6BA4603640944718752975B7DA6E906BE1EA01 │ │ │ │ │ -46736FF5D1AA1CC682D011B6039CF98C35E36D4F14ABC84A38B7203CC9A17756 │ │ │ │ │ -B2B0345276798F1A88A54AD9FEA0853C6DDF28525ED4F0B7380D14147012C2A4 │ │ │ │ │ -5B02888C986C76497EA4C729B0B82EE73C1A1A8E8F1ABF401E341028E9C15AF9 │ │ │ │ │ -354706D8DC07492921AD0932A46736C0D1B066D00287DACCC068FAE6A796EC89 │ │ │ │ │ -54D1D73AA88F3A5912BA9D3FF70065C8D0D0DAD1CD846501E06694374EFDBEC6 │ │ │ │ │ -931F644D5E8494AFC742423AD9A487658E310E0682BE19B8475F4D450487A686 │ │ │ │ │ -2B94494DEAF1C0F59DE82F2CE64BEE5E97F942FCFA1187ED6AA5761E951A7BF7 │ │ │ │ │ -9F842E34A4656C58B35A9E99F7E6762CEE11E0CF59FFD75D7382C5EE6DBB43F1 │ │ │ │ │ -ED219071D3FB22DBA90977723BB467C0490D042684C0724F40DCA3E0D8F1F4E7 │ │ │ │ │ -3C4F9A67BE6528185EAAFDD415224F7E256A4EA00111C17C746CBD80BF569A27 │ │ │ │ │ -D81195D7F79C1CCEEF30ED00D49F48B63E4B8D7953403A3710AE953CC1B76F0F │ │ │ │ │ -F523D777A6A186F262A602543F94AF7471DBE25FEBC207DB42DAF7DC9A5781FB │ │ │ │ │ -2131AD42869D966A734AAE3466DF1CE9D1BCFA72409A558C0AEE6A8E2FEAACB6 │ │ │ │ │ -2CDABCC28433034848ACF9FB4465D272E4AFC48572647F05F41C7A293CC5B595 │ │ │ │ │ -AD31555FB708A72962707348BC7033A8224BD42EB9D75FDF3AE9E6A9C960B330 │ │ │ │ │ -5137DF59F8E2E0D535F41524ABDF070745A4FA25CD8DFD38A5FF30A95452B875 │ │ │ │ │ -6569E8812631300D79A942C563AF174AC05C9F2D09D7D5D3C605F5A6B7F21B34 │ │ │ │ │ -18F270A993B050838E701A17938D1C156CBA7CA4BAC7C562CE9D7B758EAB25A9 │ │ │ │ │ -A6DFFC71F65561341847B776DF34061CE3D439B87B857626987EC93B3B95B8E8 │ │ │ │ │ -76FFB16B263675333FA10414FEED707FF7C366BF8B20FF8577CDEBEBCF1A5BCE │ │ │ │ │ -258C09C90175A5278B7C444A623E3331FDE5A6387B3E389540ED1E7E883958F3 │ │ │ │ │ -3A5C89CCD62256FA069DF4A5090FB17C1F1757C9209DAFB8A1F47182BF3E88D9 │ │ │ │ │ -0B5376B59EE165A761902759C8ED7F5AD301E7EB8B49CC09AF921DB45B7F8002 │ │ │ │ │ -AB32E73AAE53942DE0F9175D8446017006C9C0B93EF39C13B7A879F2F6DDFF16 │ │ │ │ │ -204BB24F976847CF006FD29332FCCB255B5116F7077A44F7066C39C81DC4BAD2 │ │ │ │ │ -40DB2753626C0102E5D047522ABC38EA294A699B8DFD9CA0A7980561A1062E90 │ │ │ │ │ -AB11EE286A9C238D9F721D9980D0A1828C2814972622D948CEE8C812C19A9A03 │ │ │ │ │ -608ED0AC138A436FFBF8BE3D1E66C87793416AF38ED9BC5424568A175FBDAA9E │ │ │ │ │ -D6FC11A7021693819B051562B5A59F32629E2D6019D69DD329BE1894A2B295E1 │ │ │ │ │ -1DCE9683B29AE126C56F26E5C595BF1A8249BDE231DBE8B066F7F62EF149B975 │ │ │ │ │ -A863969A4690504A5EA064721DA909B8157C0B39FBF8228D95CB655E406161E1 │ │ │ │ │ -148610FAEED7C5509880223C06A66DA19E10F94DC2DB481B26 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004FD597ED │ │ │ │ │ +EFDBC64ABD9B79386FB2427D1A63522195B1239C09F8CB3F8BD7A245A6DD82E3 │ │ │ │ │ +260C3889587626DFC5F7978E55F5524ABD6A3319CDD3D3F40D040044D51DA4E1 │ │ │ │ │ +6797EEAC7AA07C77EC6DB0E6E182B545A8BEF63B14F3FC07BAC09E7CD5C17ED6 │ │ │ │ │ +10080704B0DA4E9BA12F968DF8A58458D17E9A5B1F14A83DC51F5B161ADEE1CC │ │ │ │ │ +0183D82ED92C6FC7203C289949EDF0284D9893029FF5408E421324625F17C3E5 │ │ │ │ │ +2437C8F75A9D68EE1AF9174FEA6FC6BF793C7D2E497EA90396CF1A645E283B69 │ │ │ │ │ +8425F47C323587DF91E1D596DCB1E3A787C955D9D965A5E3E26ADF58B62AD5F9 │ │ │ │ │ +0C9AC784DE479780606354111E3202F215650DBBE1063A46F3C10B9EBC974DDA │ │ │ │ │ +A1A28DBBD43E9E5BFF000B12C787D0427928078F8EC5FE90DED97E6C129E8DEA │ │ │ │ │ +51F66504DB83764E52B0BA68DF7BE684C8959CB1D3345CC48221A9A4683306C0 │ │ │ │ │ +62B634E0A539383F0C7A788D9711EFF414869CCC5659D78CEBE009BF2463F56A │ │ │ │ │ +0ADC993348FE96DF7C250E13ED6504AACFE8F8DCA2D2048D9D8CFA127D363EAC │ │ │ │ │ +1F0630E2D1B621E6954038195D965B91FD974FA3F1B8B29D200A16CEBA645E2F │ │ │ │ │ +CEEE6FD49FBBD49E38AE67D4BFFCE91F1FC422554EC4409C5FA18D40FCD6D9B3 │ │ │ │ │ +2185ED1E0F98106D4339F086B05CA36E56EC22C60E2CE23F9C4CC403ACAD3F94 │ │ │ │ │ +4086B4DF6DFA0B7B4716417263E7B558535566AED2F6C2F9846A16D71A7930A7 │ │ │ │ │ +49232D3D16C4A01CF1A1998A06F40062ED329179A85668537C55D0BC24FC0010 │ │ │ │ │ +54DA83E2FC66B2A5D428E6A9BFC983253668C0ECE6CA36DBF97C4B7659D50842 │ │ │ │ │ +C65B36604840EEDA399B57E2DEFAC3E7FB031634CE33D04238F9854D2AAAF448 │ │ │ │ │ +34DA5F3BCCED3166FEEE82BB0BBA0A397CC2F95865CB52AABFF454D93B425809 │ │ │ │ │ +A26AC459F321FD23E2262FE816D06BAAECF32AAF167F84799AF80F9F88388D07 │ │ │ │ │ +0DB5FD57AFEE2850A8DFE977E6AE39CB3DC16DB1A163A583C86C6F775CE33521 │ │ │ │ │ +0081C0BBBAD6D30D26C66B28B38CEAC78FEA5FB3CC5853656B67C6D9D80EB30E │ │ │ │ │ +397558C9179AF5920F34DAB3F578DFCF0DBB137AED17D6325C23883E69EE4621 │ │ │ │ │ +34355A70C19EA68891E1CA937376901C85CDEE109F1665943E29A216DC00937A │ │ │ │ │ +B983A729A4654AD09187C0242D52FA4ADD0853EF4888864914D7D81C56578DD4 │ │ │ │ │ +3B51907032022E6E412D4F114675DEDCA8A9E85DC03A0B583FECD84432D15F70 │ │ │ │ │ +01F627BD6EC91F9FCFDA01BF40E1229B5F164309DBB641AD50970503DA2048C1 │ │ │ │ │ +DF8F36E8D252EE113F0B46677D9BAF376BAE18D74CFB0DBBD0C7E9D0A58BA3ED │ │ │ │ │ +1E5099CAE073EB5638617760AB57849893764EA9735173CD1EAB66884CEA7EE3 │ │ │ │ │ +8843327B2E145BD6FBB49102776B82BC511D109F8BE9E7E99DADABABEDC3CFD9 │ │ │ │ │ +393578FFD85907DFF2849E4CDE6FA4DEC7E1C150EBE4047FFB650F9548BE6D11 │ │ │ │ │ +0C51226A5436F18BF20A02E0F888F46B6AC3A8E8D927ECD3B5E095933AD3859F │ │ │ │ │ +5167C41D832EFCC4093BD2AFA7101AB430E57DAFC3590F05D3CBABB32BC203A0 │ │ │ │ │ +467B23BDB830487C9AA5B85BAC065F8538871B4180F8C4732E637DB090CFDE5A │ │ │ │ │ +3F4F2B5BFAFB848BAAD1A17CB076B34159601639BD93ECAB1214ACABF2C67FE2 │ │ │ │ │ +0658AA20B08681070FF56F1CC52144ABA8765D6E124D1CEA9BBA102808CE1BB2 │ │ │ │ │ +5EDF46BC7BBC2A5B49EE6EC28F5797A3969B057B21FCDBBD0E60848FF14F6CA3 │ │ │ │ │ +70F3060BDBB019B22722C99C7691760F013763B7FBEB62830AE215F195BF9F01 │ │ │ │ │ +21BF4377397E89574CFA47D123AA506A570A77BA6EB4AAB0B237A26154880293 │ │ │ │ │ +3952F832F72ECCB024F02385E5EE8566B165904B594E30D0700D033C6B429F6F │ │ │ │ │ +2A20BC774F442BC9CE29FCC81807C2768A8BC927A215558FBF36DC53F477F04A │ │ │ │ │ +41DA66E1A85B659EB761230977EAD7DA0150513D3323B143D4E2A61BCF03334C │ │ │ │ │ +C0EE3E1B06CFAF58ECC910BD81F0352B75FF1594D6A4EF504232D442174BE766 │ │ │ │ │ +0F8E703F97E21D25D4CD097549C31FEE7017C3916EFB02E7BF869172889827B6 │ │ │ │ │ +A48465EB7612BA3DBC6A9436C7167F149A25CE9F8E3F4F8DE3B5ADF6C0986CB3 │ │ │ │ │ +3A7E2DAB44AB489796461536F5F713017F2620AD03295CAE9285F08974AE0DF8 │ │ │ │ │ +D739260929619B509491AFF09C4CAEF9E65C2CA69470C907ECBF3AB6C955360D │ │ │ │ │ +05ABAC306DB51122A1ADC7EF0DD70FA299A45C505A83727D4598C86319EE9C06 │ │ │ │ │ +7218EFD4F40388354BCF1B79593D5AD221DF955D081F99F880E5CED07321AB3E │ │ │ │ │ +A2FCB8B05D54807D8E15E65B78DCE12989B9276350080C905DBB74CE9AA7E246 │ │ │ │ │ +5D3BAED292C562D4CF54617FCC6654496C7996D1ECE1EFF9258716AB763A12E6 │ │ │ │ │ +316E4C5587351A6DB011F58F6A15BC28BEBDC3836E0CB892807FEC228DC1B380 │ │ │ │ │ +92F7F42279F08D60F13D6A4CB425543C3644461461CBF6F27B6603F613D1FCF8 │ │ │ │ │ +A8410AD82D1498166AEB35D4125D7E2ADEAAB18BC04806AED53513F066E5F154 │ │ │ │ │ +3E13E863C50B9814EE2FB978D0D24A03FAF650CB6E2CADF1E6BE6BAF699AFC03 │ │ │ │ │ +E1A0EEB207B3B9A689ED5B373FE86686AD230BE6C18E1673DDA50E224B343EC5 │ │ │ │ │ +903BA0C8041C13607B50D5852AC7970B15C244E6EBA7D54B3086312CF04761D6 │ │ │ │ │ +7D3D75D51F20C371494AB81AB4A9838B20B483B851D01FEF41EA5C0B4755B964 │ │ │ │ │ +EB6E9B178051C556A010994EB88EAE641F4C1A0D7E0F98D5267E18AEF1AEA7E7 │ │ │ │ │ +9030A97DF89AFF621981C33B645FFB5F3BB2065A7661D11B26E0999561DF3580 │ │ │ │ │ +4A76A05DFAF8085525F8D5C01936F03C32E26E72569371C9EA3B8916F9DFC5FC │ │ │ │ │ +6A6F25A0FFDB981BA8B896393D75774D50828E6ADE903C45406E354703A4BC56 │ │ │ │ │ +2C49A47FEAC970DC433E3050C49F7FB945A9705BD8852D2D65D935F244D3B423 │ │ │ │ │ +EFAB84AAAAB8FBAFF50AFF372A533BCCEB5FC273DBADCF715776DF02A5DCBA9A │ │ │ │ │ +FBF265FAB4745D6475B33611EEE1EA95E7584E0BEEC7CA789AA69C8D03D6F8C0 │ │ │ │ │ +5B6844E2B901ACA560C0433B053D134866E567425174E47173679AAD4486A2D3 │ │ │ │ │ +369C29E4DD2CD6ACA1BE80ED8FF0A9C58A616D26E758BD8E6342624EC83FB590 │ │ │ │ │ +BD354B52B60BB054FAFE9AC63E1564FBC721FE8F276B0413EC89A2C85E5ED1B0 │ │ │ │ │ +3A9D83BE62A4488ADE7CE69971A8AF7E5862A4290EEF6F00D4171C7FFB360065 │ │ │ │ │ +92E72BF02BE27161AE0BB5516572A0BDC4F316FFB24B38484AC8D1FD4CD86062 │ │ │ │ │ +A2B5D03CF28C3A679C039A6EFDD4C9DA7E463AD60234C9F6BBEE48D87DD94D85 │ │ │ │ │ +842F495F3E25723718682CE4D6224CBBF4456F03077EDF736D65B9DDAB09470E │ │ │ │ │ +17742D82011FFA96BFE86B96E858F9352FCD20C3D46B77DBDEE54336EC2249EA │ │ │ │ │ +211F6DFFF5BEA1E5192BE1BAC0BDD5EDDB3D56C6F7C6E543561A0B39E5C1B04F │ │ │ │ │ +C683A7516B6E69D682455386DDA709929D621FA434D403E895AA0A77DBE1DFD2 │ │ │ │ │ +0D060DF82378880147ED97C6E8149686FA048710B113760AC1DA4512FF8556B3 │ │ │ │ │ +16E2447485B8C3CD58D0469C4A45FFB4CB0322BB284C02 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -4777,15 +4782,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 1[45 1[45 45 45 3[25 44[{}13 │ │ │ │ │ +12[40 2[51 45 26[59 11[25 1[45 2[45 2[45 45 45 3[25 44[{}14 │ │ │ │ │ 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 │ │ │ │ │ @@ -4915,24 +4920,24 @@ │ │ │ │ │ (is)f(to)h(not)f(use)g(piv)m(oting,)i(but)227 5294 y(to)38 │ │ │ │ │ b(c)m(hec)m(k)h(the)e(magnitude)g(of)g(the)g(diagonal)h(en)m(try)g(as)f │ │ │ │ │ (a)g(ro)m(w)g(and)g(column)g(is)g(to)g(b)s(e)g(eliminated.)61 │ │ │ │ │ b(If)227 5407 y(the)35 b(magnitude)g(is)g(smaller)g(than)f(a)i │ │ │ │ │ (user-supplied)d(parameter,)j(the)f(diagonal)h(en)m(try)f(is)g(set)g │ │ │ │ │ (to)h(some)1927 5656 y(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fo(2)p 136 100 892 4 v │ │ │ │ │ -1073 w Fn(PatchAndGoInfo)27 b Fg(:)40 b Ff(DRAFT)31 b │ │ │ │ │ -Fg(Jan)m(uary)f(16,)h(2024)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 │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fo(2)p 136 100 873 4 v │ │ │ │ │ +1054 w Fn(PatchAndGoInfo)27 b Fg(:)40 b Ff(DRAFT)31 b │ │ │ │ │ +Fg(F)-8 b(ebruary)30 b(18,)h(2025)p 3028 100 V 227 399 │ │ │ │ │ +a Fo(m)m(ultiple)c(of)f(the)h(largest)g(o\013diagonal)h(en)m(try)f(in)f │ │ │ │ │ +(that)g(ro)m(w)h(and)e(column)h(of)h(the)f(fron)m(t,)h(the)g(lo)s │ │ │ │ │ +(cation)h(and)227 511 y(p)s(erturbation)i(is)g(noted,)h(and)f(the)g │ │ │ │ │ +(factorization)j(pro)s(ceeds.)141 728 y(Other)27 b(strategies)h(can)f │ │ │ │ │ +(b)s(e)g(added)f(to)i(the)f Fn(PatchAndGoInfo)c Fo(ob)5 │ │ │ │ │ +b(ject.)40 b(F)-8 b(or)28 b(example,)g(if)f(a)g(matrix)g(is)g(b)s(eing) │ │ │ │ │ +0 841 y(factored)34 b(that)g(is)g(b)s(eliev)m(ed)g(to)g(b)s(e)f(p)s │ │ │ │ │ (ositiv)m(e)h(de\014nite,)g(and)f(a)h(negativ)m(e)i(v)-5 │ │ │ │ │ b(alue)33 b(is)h(found)e(in)h(a)h(piv)m(ot)g(elemen)m(t,)0 │ │ │ │ │ 954 y(one)d(could)f(ab)s(ort)g(the)h(factorization,)i(or)e(p)s(erturb)d │ │ │ │ │ (the)i(elemen)m(t)i(so)f(that)g(it)g(is)f(p)s(ositiv)m(e.)0 │ │ │ │ │ 1270 y Fe(1.1)135 b(Data)46 b(Structure)0 1500 y Fo(The)30 │ │ │ │ │ b Fn(PatchAndGoInfo)c Fo(structure)k(has)g(\014v)m(e)h(\014elds.)137 │ │ │ │ │ 1716 y Fm(\210)45 b Fn(int)i(strategy)28 b Fo(:)41 b(t)m(yp)s(e)30 │ │ │ │ │ @@ -4979,17 +4984,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 892 4 v 1073 100 a Fn(PatchAndGoInfo)26 │ │ │ │ │ -b Fg(:)41 b Ff(DRAFT)121 b Fg(Jan)m(uary)30 b(16,)i(2024)p │ │ │ │ │ -2962 100 V 892 w Fo(3)111 399 y(3.)46 b Fn(void)h │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 873 4 v 1054 100 a Fn(PatchAndGoInfo)26 │ │ │ │ │ +b Fg(:)41 b Ff(DRAFT)121 b Fg(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2981 100 V 873 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 16, 2024 │ │ │ │ │ │ + 2 PatchAndGoInfo : DRAFT February 18, 2025 │ │ │ │ │ │ multiple of the largest offdiagonal entry in that row and column of the front, the location and │ │ │ │ │ │ perturbation is noted, and the factorization proceeds. │ │ │ │ │ │ Other strategies can be added to the PatchAndGoInfo object. For example, if a matrix is being │ │ │ │ │ │ factored that is believed to be positive definite, and a negative value is found in a pivot element, │ │ │ │ │ │ one could abort the factorization, or perturb the element so that it is positive. │ │ │ │ │ │ 1.1 Data Structure │ │ │ │ │ │ The PatchAndGoInfo structure has five fields. │ │ │ │ │ │ @@ -58,15 +58,15 @@ │ │ │ │ │ │ 1. PatchAndGoInfo * PatchAndGoInfo_new ( void ) ; │ │ │ │ │ │ This method simply allocates storage for the PatchAndGoInfo structure and then sets the │ │ │ │ │ │ default fields by a call to PatchAndGoInfo setDefaultFields(). │ │ │ │ │ │ 2. void PatchAndGoInfo_setDefaultFields ( PatchAndGoInfo *info ) ; │ │ │ │ │ │ This method sets the structure’s fields to default values: strategy = -1, toosmall = fudge │ │ │ │ │ │ =0.0, and fudgeIV = fudgeDV = NULL . │ │ │ │ │ │ Error checking: If info is NULL, an error message is printed and the program exits. │ │ │ │ │ │ - PatchAndGoInfo : DRAFT January 16, 2024 3 │ │ │ │ │ │ + PatchAndGoInfo : DRAFT February 18, 2025 3 │ │ │ │ │ │ 3. void PatchAndGoInfo_clearData ( PatchAndGoInfo *info ) ; │ │ │ │ │ │ This method clears any data owned by the object. If fudgeIV is not NULL it is free’d by a │ │ │ │ │ │ call to IV free(). If fudgeDV is not NULL it is free’d by a call to DV free(). The structure’s │ │ │ │ │ │ default fields are then set with a call to PatchAndGoInfo setDefaultFields(). │ │ │ │ │ │ Error checking: If info is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 4. void PatchAndGoInfo_free ( PatchAndGoInfo *info ) ; │ │ │ │ │ │ This method releases any storage by a call to PatchAndGoInfo clearData() then free’s the │ │ │ ├── ./usr/share/doc/spooles-doc/Pencil.ps.gz │ │ │ │ ├── Pencil.ps │ │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ │ %%EndComments │ │ │ │ │ %%BeginDefaults │ │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ │ %%EndDefaults │ │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ │ %DVIPSCommandLine: dvips main -o Pencil.ps │ │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ │ -%DVIPSSource: TeX output 2024.01.16:2047 │ │ │ │ │ +%DVIPSSource: TeX output 2025.02.18:0318 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -1882,20 +1882,21 @@ │ │ │ │ │ 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 52 /four put │ │ │ │ │ -dup 54 /six put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ +dup 56 /eight put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 74 /J put │ │ │ │ │ +dup 70 /F put │ │ │ │ │ dup 97 /a put │ │ │ │ │ -dup 110 /n put │ │ │ │ │ +dup 98 /b put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ dup 114 /r put │ │ │ │ │ dup 117 /u put │ │ │ │ │ dup 121 /y put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ @@ -2079,89 +2080,93 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ │ -C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ │ -6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ │ -11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ │ -1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ │ -A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ │ -F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ │ -EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ │ -033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ │ -A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ │ -468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8A71FF9C085003EBB4F4 │ │ │ │ │ -3D271F5B16B1AAD3EBDC391F534AA46E545E9D8659DD19B309C3B7625A8396FA │ │ │ │ │ -2519464539D46E43ACB72952313C8497315E0319C08628023E8FC54D7D3BAC29 │ │ │ │ │ -D5AD8EFDABF0C33C7AFB7151A6606C62A87F0F5F783569AC4C881A992E3FE420 │ │ │ │ │ -297F7BC5147F3B2FA98450D2F8B07F7D229BC8BE06729920CFEC22556740E1CB │ │ │ │ │ -3DE09AC763C6D4A20AD1599C368FABD07BC35C16683F2A0311A88983415A9140 │ │ │ │ │ -2EFC4BC1B10DCAD4B2B8A28510E5BD39D6616D2B9B079ED3CF9C315B7DEC29D9 │ │ │ │ │ -251DFD0194B34EC175964C23383F23FFB2E41B698C405815D65EAFF9E9DD1DDE │ │ │ │ │ -30F77924656C288B8DDB2E5B0E7B1FAA66791DE3848EE6DE63AD0E945E49C6C7 │ │ │ │ │ -9FCA16E01F027F9EF7ACB55F02F5B0136480802F789F6FE14B430879979BA04D │ │ │ │ │ -F481AD4CF47E6847936F377FB04869F9A80E597301BFCAB718D8764094673876 │ │ │ │ │ -BCEF8FA3701608C84B3A0399A11D2E6AD922CCB7D72AF9EBFB30F4648A37A123 │ │ │ │ │ -CB8FB14BDC351692CF0CCAA5CA9383C2B23BAAA38700327EB743FBBE9EE04041 │ │ │ │ │ -13F5CEF4B3881BBC051C33369A82B3505B1CFD7D91AEF2E43EA728EE48E2D854 │ │ │ │ │ -5A7E516998ACDD4FD835FA901C5A21810A56D51FE919B2E58408EEB4DAEB487F │ │ │ │ │ -BA7F1D292CED902DF3533566D96DAD918319EA650D4FC7D9E0170CDE620F755B │ │ │ │ │ -0E7AE02D9B118481B26F5FF7060FBCFA2A682B6826F00679BCDA68794C05286D │ │ │ │ │ -B616DD08372ACDE0AE6E7EF116F0D36F16241ED4F0E8CCD80377792E3BB1343C │ │ │ │ │ -EEB22CC77738F7CBCBA32CF6C3979F6DF7ED81A89AE8928FD7CC550F2730BA88 │ │ │ │ │ -1B51CEDC63F4C47F261AFCAB7AC3CED20B15C97E714A460A1A3B16436B4A5149 │ │ │ │ │ -8F91DA4BE0B9B648534CE5F442117036B602DC91E2852BEA62F55803B833FDF7 │ │ │ │ │ -9F901AB87489E703DDEED1091A79DC73B4440BBBF2C7592B441187C4A3562204 │ │ │ │ │ -859F08BA3CE2A8ECCD5AAD13C50FB806FE79A388F1822C5608837CBDE526A044 │ │ │ │ │ -12E5CDE4A066932AF2ACA7E8FC6BA4603640944718752975B7DA6E906BE1EA01 │ │ │ │ │ -46736FF5D1AA1CC682D011B6039CF98C35E36D4F14ABC84A38B7203CC9A17756 │ │ │ │ │ -B2B0345276798F1A88A54AD9FEA0853C6DDF28525ED4F0B7380D14147012C2A4 │ │ │ │ │ -5B02888C986C76497EA4C729B0B82EE73C1A1A8E8F1ABF401E341028E9C15AF9 │ │ │ │ │ -354706D8DC07492921AD0932A46736C0D1B066D00287DACCC068FAE6A796EC89 │ │ │ │ │ -54D1D73AA88F3A5912BA9D3FF70065C8D0D0DAD1CD846501E06694374EFDBEC6 │ │ │ │ │ -931F644D5E8494AFC742423AD9A487658E310E0682BE19B8475F4D450487A686 │ │ │ │ │ -2B94494DEAF1C0F59DE82F2CE64BEE5E97F942FCFA1187ED6AA5761E951A7BF7 │ │ │ │ │ -9F842E34A4656C58B35A9E99F7E6762CEE11E0CF59FFD75D7382C5EE6DBB43F1 │ │ │ │ │ -ED219071D3FB22DBA90977723BB467C0490D042684C0724F40DCA3E0D8F1F4E7 │ │ │ │ │ -3C4F9A67BE6528185EAAFDD415224F7E256A4EA00111C17C746CBD80BF569A27 │ │ │ │ │ -D81195D7F79C1CCEEF30ED00D49F48B63E4B8D7953403A3710AE953CC1B76F0F │ │ │ │ │ -F523D777A6A186F262A602543F94AF7471DBE25FEBC207DB42DAF7DC9A5781FB │ │ │ │ │ -2131AD42869D966A734AAE3466DF1CE9D1BCFA72409A558C0AEE6A8E2FEAACB6 │ │ │ │ │ -2CDABCC28433034848ACF9FB4465D272E4AFC48572647F05F41C7A293CC5B595 │ │ │ │ │ -AD31555FB708A72962707348BC7033A8224BD42EB9D75FDF3AE9E6A9C960B330 │ │ │ │ │ -5137DF59F8E2E0D535F41524ABDF070745A4FA25CD8DFD38A5FF30A95452B875 │ │ │ │ │ -6569E8812631300D79A942C563AF174AC05C9F2D09D7D5D3C605F5A6B7F21B34 │ │ │ │ │ -18F270A993B050838E701A17938D1C156CBA7CA4BAC7C562CE9D7B758EAB25A9 │ │ │ │ │ -A6DFFC71F65561341847B776DF34061CE3D439B87B857626987EC93B3B95B8E8 │ │ │ │ │ -76FFB16B263675333FA10414FEED707FF7C366BF8B20FF8577CDEBEBCF1A5BCE │ │ │ │ │ -258C09C90175A5278B7C444A623E3331FDE5A6387B3E389540ED1E7E883958F3 │ │ │ │ │ -3A5C89CCD62256FA069DF4A5090FB17C1F1757C9209DAFB8A1F47182BF3E88D9 │ │ │ │ │ -0B5376B59EE165A761902759C8ED7F5AD301E7EB8B49CC09AF921DB45B7F8002 │ │ │ │ │ -AB32E73AAE53942DE0F9175D8446017006C9C0B93EF39C13B7A879F2F6DDFF16 │ │ │ │ │ -204BB24F976847CF006FD29332FCCB255B5116F7077A44F7066C39C81DC4BAD2 │ │ │ │ │ -40DB2753626C0102E5D047522ABC38EA294A699B8DFD9CA0A7980561A1062E90 │ │ │ │ │ -AB11EE286A9C238D9F721D9980D0A1828C2814972622D948CEE8C812C19A9A03 │ │ │ │ │ -608ED0AC138A436FFBF8BE3D1E66C87793416AF38ED9BC5424568A175FBDAA9E │ │ │ │ │ -D6FC11A7021693819B051562B5A59F32629E2D6019D69DD329BE1894A2B295E1 │ │ │ │ │ -1DCE9683B29AE126C56F26E5C595BF1A8249BDE231DBE8B066F7F62EF149B975 │ │ │ │ │ -A863969A4690504A5EA064721DA909B8157C0B39FBF8228D95CB655E406161E1 │ │ │ │ │ -148610FAEED7C5509880223C06A66DA19E10F94DC2DB481B26 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004FD597ED │ │ │ │ │ +EFDBC64ABD9B79386FB2427D1A63522195B1239C09F8CB3F8BD7A245A6DD82E3 │ │ │ │ │ +260C3889587626DFC5F7978E55F5524ABD6A3319CDD3D3F40D040044D51DA4E1 │ │ │ │ │ +6797EEAC7AA07C77EC6DB0E6E182B545A8BEF63B14F3FC07BAC09E7CD5C17ED6 │ │ │ │ │ +10080704B0DA4E9BA12F968DF8A58458D17E9A5B1F14A83DC51F5B161ADEE1CC │ │ │ │ │ +0183D82ED92C6FC7203C289949EDF0284D9893029FF5408E421324625F17C3E5 │ │ │ │ │ +2437C8F75A9D68EE1AF9174FEA6FC6BF793C7D2E497EA90396CF1A645E283B69 │ │ │ │ │ +8425F47C323587DF91E1D596DCB1E3A787C955D9D965A5E3E26ADF58B62AD5F9 │ │ │ │ │ +0C9AC784DE479780606354111E3202F215650DBBE1063A46F3C10B9EBC974DDA │ │ │ │ │ +A1A28DBBD43E9E5BFF000B12C787D0427928078F8EC5FE90DED97E6C129E8DEA │ │ │ │ │ +51F66504DB83764E52B0BA68DF7BE684C8959CB1D3345CC48221A9A4683306C0 │ │ │ │ │ +62B634E0A539383F0C7A788D9711EFF414869CCC5659D78CEBE009BF2463F56A │ │ │ │ │ +0ADC993348FE96DF7C250E13ED6504AACFE8F8DCA2D2048D9D8CFA127D363EAC │ │ │ │ │ +1F0630E2D1B621E6954038195D965B91FD974FA3F1B8B29D200A16CEBA645E2F │ │ │ │ │ +CEEE6FD49FBBD49E38AE67D4BFFCE91F1FC422554EC4409C5FA18D40FCD6D9B3 │ │ │ │ │ +2185ED1E0F98106D4339F086B05CA36E56EC22C60E2CE23F9C4CC403ACAD3F94 │ │ │ │ │ +4086B4DF6DFA0B7B4716417263E7B558535566AED2F6C2F9846A16D71A7930A7 │ │ │ │ │ +49232D3D16C4A01CF1A1998A06F40062ED329179A85668537C55D0BC24FC0010 │ │ │ │ │ +54DA83E2FC66B2A5D428E6A9BFC983253668C0ECE6CA36DBF97C4B7659D50842 │ │ │ │ │ +C65B36604840EEDA399B57E2DEFAC3E7FB031634CE33D04238F9854D2AAAF448 │ │ │ │ │ +34DA5F3BCCED3166FEEE82BB0BBA0A397CC2F95865CB52AABFF454D93B425809 │ │ │ │ │ +A26AC459F321FD23E2262FE816D06BAAECF32AAF167F84799AF80F9F88388D07 │ │ │ │ │ +0DB5FD57AFEE2850A8DFE977E6AE39CB3DC16DB1A163A583C86C6F775CE33521 │ │ │ │ │ +0081C0BBBAD6D30D26C66B28B38CEAC78FEA5FB3CC5853656B67C6D9D80EB30E │ │ │ │ │ +397558C9179AF5920F34DAB3F578DFCF0DBB137AED17D6325C23883E69EE4621 │ │ │ │ │ +34355A70C19EA68891E1CA937376901C85CDEE109F1665943E29A216DC00937A │ │ │ │ │ +B983A729A4654AD09187C0242D52FA4ADD0853EF4888864914D7D81C56578DD4 │ │ │ │ │ +3B51907032022E6E412D4F114675DEDCA8A9E85DC03A0B583FECD84432D15F70 │ │ │ │ │ +01F627BD6EC91F9FCFDA01BF40E1229B5F164309DBB641AD50970503DA2048C1 │ │ │ │ │ +DF8F36E8D252EE113F0B46677D9BAF376BAE18D74CFB0DBBD0C7E9D0A58BA3ED │ │ │ │ │ +1E5099CAE073EB5638617760AB57849893764EA9735173CD1EAB66884CEA7EE3 │ │ │ │ │ +8843327B2E145BD6FBB49102776B82BC511D109F8BE9E7E99DADABABEDC3CFD9 │ │ │ │ │ +393578FFD85907DFF2849E4CDE6FA4DEC7E1C150EBE4047FFB650F9548BE6D11 │ │ │ │ │ +0C51226A5436F18BF20A02E0F888F46B6AC3A8E8D927ECD3B5E095933AD3859F │ │ │ │ │ +5167C41D832EFCC4093BD2AFA7101AB430E57DAFC3590F05D3CBABB32BC203A0 │ │ │ │ │ +467B23BDB830487C9AA5B85BAC065F8538871B4180F8C4732E637DB090CFDE5A │ │ │ │ │ +3F4F2B5BFAFB848BAAD1A17CB076B34159601639BD93ECAB1214ACABF2C67FE2 │ │ │ │ │ +0658AA20B08681070FF56F1CC52144ABA8765D6E124D1CEA9BBA102808CE1BB2 │ │ │ │ │ +5EDF46BC7BBC2A5B49EE6EC28F5797A3969B057B21FCDBBD0E60848FF14F6CA3 │ │ │ │ │ +70F3060BDBB019B22722C99C7691760F013763B7FBEB62830AE215F195BF9F01 │ │ │ │ │ +21BF4377397E89574CFA47D123AA506A570A77BA6EB4AAB0B237A26154880293 │ │ │ │ │ +3952F832F72ECCB024F02385E5EE8566B165904B594E30D0700D033C6B429F6F │ │ │ │ │ +2A20BC774F442BC9CE29FCC81807C2768A8BC927A215558FBF36DC53F477F04A │ │ │ │ │ +41DA66E1A85B659EB761230977EAD7DA0150513D3323B143D4E2A61BCF03334C │ │ │ │ │ +C0EE3E1B06CFAF58ECC910BD81F0352B75FF1594D6A4EF504232D442174BE766 │ │ │ │ │ +0F8E703F97E21D25D4CD097549C31FEE7017C3916EFB02E7BF869172889827B6 │ │ │ │ │ +A48465EB7612BA3DBC6A9436C7167F149A25CE9F8E3F4F8DE3B5ADF6C0986CB3 │ │ │ │ │ +3A7E2DAB44AB489796461536F5F713017F2620AD03295CAE9285F08974AE0DF8 │ │ │ │ │ +D739260929619B509491AFF09C4CAEF9E65C2CA69470C907ECBF3AB6C955360D │ │ │ │ │ +05ABAC306DB51122A1ADC7EF0DD70FA299A45C505A83727D4598C86319EE9C06 │ │ │ │ │ +7218EFD4F40388354BCF1B79593D5AD221DF955D081F99F880E5CED07321AB3E │ │ │ │ │ +A2FCB8B05D54807D8E15E65B78DCE12989B9276350080C905DBB74CE9AA7E246 │ │ │ │ │ +5D3BAED292C562D4CF54617FCC6654496C7996D1ECE1EFF9258716AB763A12E6 │ │ │ │ │ +316E4C5587351A6DB011F58F6A15BC28BEBDC3836E0CB892807FEC228DC1B380 │ │ │ │ │ +92F7F42279F08D60F13D6A4CB425543C3644461461CBF6F27B6603F613D1FCF8 │ │ │ │ │ +A8410AD82D1498166AEB35D4125D7E2ADEAAB18BC04806AED53513F066E5F154 │ │ │ │ │ +3E13E863C50B9814EE2FB978D0D24A03FAF650CB6E2CADF1E6BE6BAF699AFC03 │ │ │ │ │ +E1A0EEB207B3B9A689ED5B373FE86686AD230BE6C18E1673DDA50E224B343EC5 │ │ │ │ │ +903BA0C8041C13607B50D5852AC7970B15C244E6EBA7D54B3086312CF04761D6 │ │ │ │ │ +7D3D75D51F20C371494AB81AB4A9838B20B483B851D01FEF41EA5C0B4755B964 │ │ │ │ │ +EB6E9B178051C556A010994EB88EAE641F4C1A0D7E0F98D5267E18AEF1AEA7E7 │ │ │ │ │ +9030A97DF89AFF621981C33B645FFB5F3BB2065A7661D11B26E0999561DF3580 │ │ │ │ │ +4A76A05DFAF8085525F8D5C01936F03C32E26E72569371C9EA3B8916F9DFC5FC │ │ │ │ │ +6A6F25A0FFDB981BA8B896393D75774D50828E6ADE903C45406E354703A4BC56 │ │ │ │ │ +2C49A47FEAC970DC433E3050C49F7FB945A9705BD8852D2D65D935F244D3B423 │ │ │ │ │ +EFAB84AAAAB8FBAFF50AFF372A533BCCEB5FC273DBADCF715776DF02A5DCBA9A │ │ │ │ │ +FBF265FAB4745D6475B33611EEE1EA95E7584E0BEEC7CA789AA69C8D03D6F8C0 │ │ │ │ │ +5B6844E2B901ACA560C0433B053D134866E567425174E47173679AAD4486A2D3 │ │ │ │ │ +369C29E4DD2CD6ACA1BE80ED8FF0A9C58A616D26E758BD8E6342624EC83FB590 │ │ │ │ │ +BD354B52B60BB054FAFE9AC63E1564FBC721FE8F276B0413EC89A2C85E5ED1B0 │ │ │ │ │ +3A9D83BE62A4488ADE7CE69971A8AF7E5862A4290EEF6F00D4171C7FFB360065 │ │ │ │ │ +92E72BF02BE27161AE0BB5516572A0BDC4F316FFB24B38484AC8D1FD4CD86062 │ │ │ │ │ +A2B5D03CF28C3A679C039A6EFDD4C9DA7E463AD60234C9F6BBEE48D87DD94D85 │ │ │ │ │ +842F495F3E25723718682CE4D6224CBBF4456F03077EDF736D65B9DDAB09470E │ │ │ │ │ +17742D82011FFA96BFE86B96E858F9352FCD20C3D46B77DBDEE54336EC2249EA │ │ │ │ │ +211F6DFFF5BEA1E5192BE1BAC0BDD5EDDB3D56C6F7C6E543561A0B39E5C1B04F │ │ │ │ │ +C683A7516B6E69D682455386DDA709929D621FA434D403E895AA0A77DBE1DFD2 │ │ │ │ │ +0D060DF82378880147ED97C6E8149686FA048710B113760AC1DA4512FF8556B3 │ │ │ │ │ +16E2447485B8C3CD58D0469C4A45FFB4CB0322BB284C02 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -4112,16 +4117,16 @@ │ │ │ │ │ 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 1[45 1[45 45 45 3[25 │ │ │ │ │ -44[{}13 90.9091 /CMSL10 rf /Ff 145[62 1[62 2[62 3[62 │ │ │ │ │ +2[36 12[40 2[51 45 26[59 11[25 1[45 2[45 2[45 45 45 3[25 │ │ │ │ │ +44[{}14 90.9091 /CMSL10 rf /Ff 145[62 1[62 2[62 3[62 │ │ │ │ │ 1[62 18[62 80[{}6 119.552 /CMTT12 rf /Fg 132[52 6[41 │ │ │ │ │ 4[52 9[48 22[82 19[29 58[{}6 90.9091 /CMBX10 rf │ │ │ │ │ %DVIPSBitmapFont: Fh tcrm1095 10.95 1 │ │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ │ /Dotaccent/cedilla/ogonek/quotesinglbase.ts1 4{/.notdef}repeat │ │ │ │ │ /quotedblbase.ts1/.notdef/.notdef/twelveudash/threequartersemdash │ │ │ │ │ /afii61664.cap/arrowleft/arrowright/tieaccentlowercase/tieaccentcapital │ │ │ │ │ @@ -4220,24 +4225,24 @@ │ │ │ │ │ (shift)f(v)-5 b(alue.)0 5061 y Fi(1.2)135 b(Protot)l(yp)t(es)46 │ │ │ │ │ b(and)f(descriptions)g(of)g Ff(Pencil)d Fi(metho)t(ds)0 │ │ │ │ │ 5294 y Fl(This)f(section)j(con)m(tains)f(brief)f(descriptions)g │ │ │ │ │ (including)f(protot)m(yp)s(es)i(of)f(all)h(metho)s(ds)f(that)h(b)s │ │ │ │ │ (elong)f(to)h(the)0 5407 y Fj(Pencil)29 b Fl(ob)5 b(ject.)1927 │ │ │ │ │ 5656 y(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fl(2)p 136 100 1154 4 v │ │ │ │ │ -1336 w Fj(Chv)29 b Fe(:)41 b Fd(DRAFT)30 b Fe(Jan)m(uary)g(16,)i(2024)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 │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fl(2)p 136 100 1135 4 v │ │ │ │ │ +1317 w Fj(Chv)29 b Fe(:)41 b Fd(DRAFT)30 b Fe(F)-8 b(ebruary)30 │ │ │ │ │ +b(18,)i(2025)p 2765 100 V 0 399 a Fc(1.2.1)112 b(Basic)38 │ │ │ │ │ +b(metho)s(ds)0 600 y Fl(As)d(usual,)h(there)f(are)g(four)f(basic)h │ │ │ │ │ +(metho)s(ds)g(to)g(supp)s(ort)e(ob)5 b(ject)36 b(creation,)i(setting)e │ │ │ │ │ +(default)f(\014elds,)h(clearing)0 712 y(an)m(y)31 b(allo)s(cated)h │ │ │ │ │ +(data,)f(and)f(free'ing)h(the)g(ob)5 b(ject.)111 962 │ │ │ │ │ +y(1.)46 b Fj(Pencil)g(*)i(Pencil_new)d(\()i(void)g(\))g(;)227 │ │ │ │ │ +1117 y Fl(This)25 b(metho)s(d)g(simply)f(allo)s(cates)k(storage)f(for)e │ │ │ │ │ +(the)h Fj(Pencil)d Fl(structure)i(and)g(then)g(sets)g(the)h(default)f │ │ │ │ │ (\014elds)227 1230 y(b)m(y)31 b(a)f(call)i(to)f Fj(Pencil)p │ │ │ │ │ 1001 1230 29 4 v 33 w(setDefaultFields\(\))p Fl(.)111 │ │ │ │ │ 1427 y(2.)46 b Fj(void)h(Pencil_setDefaultFields)41 b(\()48 │ │ │ │ │ b(Pencil)e(*pencil)g(\))h(;)227 1581 y Fl(The)35 b(structure's)h │ │ │ │ │ (\014elds)f(are)h(set)g(to)g(default)g(v)-5 b(alues:)52 │ │ │ │ │ b Fj(sigma[2])45 b(=)j Fb(f)p Fj(0,0)p Fb(g)p Fl(,)37 │ │ │ │ │ b Fj(type)d Fl(=)h Fj(SPOOLES)p 3657 1581 V 33 w(REAL)p │ │ │ │ │ @@ -4286,17 +4291,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 1154 4 v 1335 100 a Fj(Chv)30 │ │ │ │ │ -b Fe(:)41 b Fd(DRAFT)121 b Fe(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2699 100 V 1154 w Fl(3)111 399 y(3.)46 b Fj(void)h │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1135 4 v 1316 100 a Fj(Chv)30 │ │ │ │ │ +b Fe(:)40 b Fd(DRAFT)122 b Fe(F)-8 b(ebruary)30 b(18,)h(2025)p │ │ │ │ │ +2718 100 V 1135 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 │ │ │ │ │ @@ -4357,19 +4362,19 @@ │ │ │ │ │ 5294 y Fj(SPOOLES)p 569 5294 V 33 w(HERMITIAN)p Fl(,)38 │ │ │ │ │ b(en)m(tries)j(in)f(the)h(lo)m(w)m(er)g(triangle)h(are)f(dropp)s(ed.)68 │ │ │ │ │ b(If)40 b Fj(randomflag)e Fl(is)i(one,)k(the)227 5407 │ │ │ │ │ y(en)m(tries)31 b(are)g(\014lled)f(with)g(random)g(n)m(um)m(b)s(ers)f │ │ │ │ │ (using)h(the)g Fj(Drand)f Fl(random)h(n)m(um)m(b)s(er)f(generator)j │ │ │ │ │ Fj(drand)p Fl(.)p eop end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fl(4)p 136 100 1154 4 v │ │ │ │ │ -1336 w Fj(Chv)29 b Fe(:)41 b Fd(DRAFT)30 b Fe(Jan)m(uary)g(16,)i(2024)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 │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fl(4)p 136 100 1135 4 v │ │ │ │ │ +1317 w Fj(Chv)29 b Fe(:)41 b Fd(DRAFT)30 b Fe(F)-8 b(ebruary)30 │ │ │ │ │ +b(18,)i(2025)p 2765 100 V 227 399 a Fg(Note:)52 b Fl(this)36 │ │ │ │ │ +b(metho)s(d)g(w)m(as)g(created)i(for)e(an)g(MPI)g(application.)59 │ │ │ │ │ +b(If)36 b Fj(myid)f Fl(is)h(zero,)j(then)d(the)g(\014les)h(are)227 │ │ │ │ │ 511 y(read)30 b(in,)g(otherwise)h(just)e(stubs)g(are)h(created)h(for)f │ │ │ │ │ (the)g(in)m(ternal)h(matrix)f(ob)5 b(jects.)41 b(In)30 │ │ │ │ │ b(our)f(MPI)h(driv)m(ers,)227 624 y(pro)s(cess)d(zero)i(reads)e(in)g │ │ │ │ │ (the)h(matrices)g(and)f(then)g(starts)h(the)g(pro)s(cess)f(to)h │ │ │ │ │ (distribute)f(them)h(to)g(the)g(other)227 737 y(pro)s(cesses.)227 │ │ │ │ │ 888 y Fd(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fl(If)30 │ │ │ │ │ b Fj(pencil)f Fl(or)h Fj(fp)g Fl(are)h Fj(NULL)p Fl(,)e(an)i(error)f │ │ │ │ │ ├── ps2ascii {} │ │ │ │ │ │ @@ -16,15 +16,15 @@ │ │ │ │ │ │ • InpMtx *inpmtxB : pointer to the matrix object for B. If inpmtxB is NULL, then B is the │ │ │ │ │ │ identity matrix. │ │ │ │ │ │ • double sigma[2] : real or complex scalar shift value. │ │ │ │ │ │ 1.2 Prototypes and descriptions of Pencil methods │ │ │ │ │ │ This section contains brief descriptions including prototypes of all methods that belong to the │ │ │ │ │ │ Pencil object. │ │ │ │ │ │ 1 │ │ │ │ │ │ - 2 Chv : DRAFT January 16, 2024 │ │ │ │ │ │ + 2 Chv : DRAFT February 18, 2025 │ │ │ │ │ │ 1.2.1 Basic methods │ │ │ │ │ │ As usual, there are four basic methods to support object creation, setting default fields, clearing │ │ │ │ │ │ any allocated data, and free’ing the object. │ │ │ │ │ │ 1. Pencil * Pencil_new ( void ) ; │ │ │ │ │ │ This method simply allocates storage for the Pencil structure and then sets the default fields │ │ │ │ │ │ by a call to Pencil setDefaultFields(). │ │ │ │ │ │ 2. void Pencil_setDefaultFields ( Pencil *pencil ) ; │ │ │ │ │ │ @@ -48,15 +48,15 @@ │ │ │ │ │ │ 1. void Pencil_changeCoordType ( Pencil *pencil, int newType ) ; │ │ │ │ │ │ ThismethodsimplycallstheInpMtx changeCoordType()methodforeachofitstwomatrices. │ │ │ │ │ │ Error checking: If pencil is NULL, an error message is printed and zero is returned. │ │ │ │ │ │ 2. void Pencil_changeStorageMode ( Pencil *pencil, int newMode ) ; │ │ │ │ │ │ This method simply calls the InpMtx changeStorageMode() method for each of its two ma- │ │ │ │ │ │ trices. │ │ │ │ │ │ Error checking: If pencil is NULL, an error message is printed and zero is returned. │ │ │ │ │ │ - Chv : DRAFT January 16, 2024 3 │ │ │ │ │ │ + Chv : DRAFT February 18, 2025 3 │ │ │ │ │ │ 3. void Pencil_sortAndCompress ( Pencil *pencil ) ; │ │ │ │ │ │ ThismethodsimplycallstheInpMtx sortAndCompress()methodforeachofitstwomatrices. │ │ │ │ │ │ Error checking: If pencil is NULL, an error message is printed and zero is returned. │ │ │ │ │ │ 4. void Pencil_convertToVectors ( Pencil *pencil ) ; │ │ │ │ │ │ ThismethodsimplycallstheInpMtx sortAndCompress()methodforeachofitstwomatrices. │ │ │ │ │ │ Error checking: If pencil is NULL, an error message is printed and zero is returned. │ │ │ │ │ │ 5. void Pencil_mapToLowerTriangle ( Pencil *pencil ) ; │ │ │ │ │ │ @@ -83,15 +83,15 @@ │ │ │ │ │ │ 1. Pencil * Pencil_setup ( int myid, int symflag, char *inpmtxAfile, │ │ │ │ │ │ double sigma[], char *inpmtxBfile, int randomflag, Drand *drand, │ │ │ │ │ │ int msglvl, FILE *msgFile ) ; │ │ │ │ │ │ This method is used to read in the matrices from two files and initialize the objects. If │ │ │ │ │ │ the file name is “none”, then no matrix is read. If symflag is SPOOLES SYMMETRIC or │ │ │ │ │ │ SPOOLES HERMITIAN, entries in the lower triangle are dropped. If randomflag is one, the │ │ │ │ │ │ entries are filled with random numbers using the Drand random number generator drand. │ │ │ │ │ │ - 4 Chv : DRAFT January 16, 2024 │ │ │ │ │ │ + 4 Chv : DRAFT February 18, 2025 │ │ │ │ │ │ Note: this method was created for an MPI application. If myid is zero, then the files are │ │ │ │ │ │ read in, otherwise just stubs are created for the internal matrix objects. In our MPI drivers, │ │ │ │ │ │ process zero reads in the matrices and then starts the process to distribute them to the other │ │ │ │ │ │ processes. │ │ │ │ │ │ Error checking: If pencil or fp are NULL, an error message is printed and zero is returned. │ │ │ │ │ │ 2. int Pencil_readFromFiles ( Pencil *pencil, char *fnA, char *fnB ) ; │ │ │ │ │ │ This method reads the two InpMtx objects from two files. If fnA is “none”, then A is not │ │ │ ├── ./usr/share/doc/spooles-doc/Perm.ps.gz │ │ │ │ ├── Perm.ps │ │ │ │ │ @@ -10,15 +10,15 @@ │ │ │ │ │ %%EndComments │ │ │ │ │ %%BeginDefaults │ │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ │ %%EndDefaults │ │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ │ %DVIPSCommandLine: dvips main -o Perm.ps │ │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ │ -%DVIPSSource: TeX output 2024.01.16:2047 │ │ │ │ │ +%DVIPSSource: TeX output 2025.02.18:0318 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -1016,20 +1016,21 @@ │ │ │ │ │ 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 52 /four put │ │ │ │ │ -dup 54 /six put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ +dup 56 /eight put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 74 /J put │ │ │ │ │ +dup 70 /F put │ │ │ │ │ dup 97 /a put │ │ │ │ │ -dup 110 /n put │ │ │ │ │ +dup 98 /b put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ dup 114 /r put │ │ │ │ │ dup 117 /u put │ │ │ │ │ dup 121 /y put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ @@ -1213,89 +1214,93 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ │ -C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ │ -6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ │ -11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ │ -1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ │ -A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ │ -F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ │ -EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ │ -033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ │ -A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ │ -468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8A71FF9C085003EBB4F4 │ │ │ │ │ -3D271F5B16B1AAD3EBDC391F534AA46E545E9D8659DD19B309C3B7625A8396FA │ │ │ │ │ -2519464539D46E43ACB72952313C8497315E0319C08628023E8FC54D7D3BAC29 │ │ │ │ │ -D5AD8EFDABF0C33C7AFB7151A6606C62A87F0F5F783569AC4C881A992E3FE420 │ │ │ │ │ -297F7BC5147F3B2FA98450D2F8B07F7D229BC8BE06729920CFEC22556740E1CB │ │ │ │ │ -3DE09AC763C6D4A20AD1599C368FABD07BC35C16683F2A0311A88983415A9140 │ │ │ │ │ -2EFC4BC1B10DCAD4B2B8A28510E5BD39D6616D2B9B079ED3CF9C315B7DEC29D9 │ │ │ │ │ -251DFD0194B34EC175964C23383F23FFB2E41B698C405815D65EAFF9E9DD1DDE │ │ │ │ │ -30F77924656C288B8DDB2E5B0E7B1FAA66791DE3848EE6DE63AD0E945E49C6C7 │ │ │ │ │ -9FCA16E01F027F9EF7ACB55F02F5B0136480802F789F6FE14B430879979BA04D │ │ │ │ │ -F481AD4CF47E6847936F377FB04869F9A80E597301BFCAB718D8764094673876 │ │ │ │ │ -BCEF8FA3701608C84B3A0399A11D2E6AD922CCB7D72AF9EBFB30F4648A37A123 │ │ │ │ │ -CB8FB14BDC351692CF0CCAA5CA9383C2B23BAAA38700327EB743FBBE9EE04041 │ │ │ │ │ -13F5CEF4B3881BBC051C33369A82B3505B1CFD7D91AEF2E43EA728EE48E2D854 │ │ │ │ │ -5A7E516998ACDD4FD835FA901C5A21810A56D51FE919B2E58408EEB4DAEB487F │ │ │ │ │ -BA7F1D292CED902DF3533566D96DAD918319EA650D4FC7D9E0170CDE620F755B │ │ │ │ │ -0E7AE02D9B118481B26F5FF7060FBCFA2A682B6826F00679BCDA68794C05286D │ │ │ │ │ -B616DD08372ACDE0AE6E7EF116F0D36F16241ED4F0E8CCD80377792E3BB1343C │ │ │ │ │ -EEB22CC77738F7CBCBA32CF6C3979F6DF7ED81A89AE8928FD7CC550F2730BA88 │ │ │ │ │ -1B51CEDC63F4C47F261AFCAB7AC3CED20B15C97E714A460A1A3B16436B4A5149 │ │ │ │ │ -8F91DA4BE0B9B648534CE5F442117036B602DC91E2852BEA62F55803B833FDF7 │ │ │ │ │ -9F901AB87489E703DDEED1091A79DC73B4440BBBF2C7592B441187C4A3562204 │ │ │ │ │ -859F08BA3CE2A8ECCD5AAD13C50FB806FE79A388F1822C5608837CBDE526A044 │ │ │ │ │ -12E5CDE4A066932AF2ACA7E8FC6BA4603640944718752975B7DA6E906BE1EA01 │ │ │ │ │ -46736FF5D1AA1CC682D011B6039CF98C35E36D4F14ABC84A38B7203CC9A17756 │ │ │ │ │ -B2B0345276798F1A88A54AD9FEA0853C6DDF28525ED4F0B7380D14147012C2A4 │ │ │ │ │ -5B02888C986C76497EA4C729B0B82EE73C1A1A8E8F1ABF401E341028E9C15AF9 │ │ │ │ │ -354706D8DC07492921AD0932A46736C0D1B066D00287DACCC068FAE6A796EC89 │ │ │ │ │ -54D1D73AA88F3A5912BA9D3FF70065C8D0D0DAD1CD846501E06694374EFDBEC6 │ │ │ │ │ -931F644D5E8494AFC742423AD9A487658E310E0682BE19B8475F4D450487A686 │ │ │ │ │ -2B94494DEAF1C0F59DE82F2CE64BEE5E97F942FCFA1187ED6AA5761E951A7BF7 │ │ │ │ │ -9F842E34A4656C58B35A9E99F7E6762CEE11E0CF59FFD75D7382C5EE6DBB43F1 │ │ │ │ │ -ED219071D3FB22DBA90977723BB467C0490D042684C0724F40DCA3E0D8F1F4E7 │ │ │ │ │ -3C4F9A67BE6528185EAAFDD415224F7E256A4EA00111C17C746CBD80BF569A27 │ │ │ │ │ -D81195D7F79C1CCEEF30ED00D49F48B63E4B8D7953403A3710AE953CC1B76F0F │ │ │ │ │ -F523D777A6A186F262A602543F94AF7471DBE25FEBC207DB42DAF7DC9A5781FB │ │ │ │ │ -2131AD42869D966A734AAE3466DF1CE9D1BCFA72409A558C0AEE6A8E2FEAACB6 │ │ │ │ │ -2CDABCC28433034848ACF9FB4465D272E4AFC48572647F05F41C7A293CC5B595 │ │ │ │ │ -AD31555FB708A72962707348BC7033A8224BD42EB9D75FDF3AE9E6A9C960B330 │ │ │ │ │ -5137DF59F8E2E0D535F41524ABDF070745A4FA25CD8DFD38A5FF30A95452B875 │ │ │ │ │ -6569E8812631300D79A942C563AF174AC05C9F2D09D7D5D3C605F5A6B7F21B34 │ │ │ │ │ -18F270A993B050838E701A17938D1C156CBA7CA4BAC7C562CE9D7B758EAB25A9 │ │ │ │ │ -A6DFFC71F65561341847B776DF34061CE3D439B87B857626987EC93B3B95B8E8 │ │ │ │ │ -76FFB16B263675333FA10414FEED707FF7C366BF8B20FF8577CDEBEBCF1A5BCE │ │ │ │ │ -258C09C90175A5278B7C444A623E3331FDE5A6387B3E389540ED1E7E883958F3 │ │ │ │ │ -3A5C89CCD62256FA069DF4A5090FB17C1F1757C9209DAFB8A1F47182BF3E88D9 │ │ │ │ │ -0B5376B59EE165A761902759C8ED7F5AD301E7EB8B49CC09AF921DB45B7F8002 │ │ │ │ │ -AB32E73AAE53942DE0F9175D8446017006C9C0B93EF39C13B7A879F2F6DDFF16 │ │ │ │ │ -204BB24F976847CF006FD29332FCCB255B5116F7077A44F7066C39C81DC4BAD2 │ │ │ │ │ -40DB2753626C0102E5D047522ABC38EA294A699B8DFD9CA0A7980561A1062E90 │ │ │ │ │ -AB11EE286A9C238D9F721D9980D0A1828C2814972622D948CEE8C812C19A9A03 │ │ │ │ │ -608ED0AC138A436FFBF8BE3D1E66C87793416AF38ED9BC5424568A175FBDAA9E │ │ │ │ │ -D6FC11A7021693819B051562B5A59F32629E2D6019D69DD329BE1894A2B295E1 │ │ │ │ │ -1DCE9683B29AE126C56F26E5C595BF1A8249BDE231DBE8B066F7F62EF149B975 │ │ │ │ │ -A863969A4690504A5EA064721DA909B8157C0B39FBF8228D95CB655E406161E1 │ │ │ │ │ -148610FAEED7C5509880223C06A66DA19E10F94DC2DB481B26 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004FD597ED │ │ │ │ │ +EFDBC64ABD9B79386FB2427D1A63522195B1239C09F8CB3F8BD7A245A6DD82E3 │ │ │ │ │ +260C3889587626DFC5F7978E55F5524ABD6A3319CDD3D3F40D040044D51DA4E1 │ │ │ │ │ +6797EEAC7AA07C77EC6DB0E6E182B545A8BEF63B14F3FC07BAC09E7CD5C17ED6 │ │ │ │ │ +10080704B0DA4E9BA12F968DF8A58458D17E9A5B1F14A83DC51F5B161ADEE1CC │ │ │ │ │ +0183D82ED92C6FC7203C289949EDF0284D9893029FF5408E421324625F17C3E5 │ │ │ │ │ +2437C8F75A9D68EE1AF9174FEA6FC6BF793C7D2E497EA90396CF1A645E283B69 │ │ │ │ │ +8425F47C323587DF91E1D596DCB1E3A787C955D9D965A5E3E26ADF58B62AD5F9 │ │ │ │ │ +0C9AC784DE479780606354111E3202F215650DBBE1063A46F3C10B9EBC974DDA │ │ │ │ │ +A1A28DBBD43E9E5BFF000B12C787D0427928078F8EC5FE90DED97E6C129E8DEA │ │ │ │ │ +51F66504DB83764E52B0BA68DF7BE684C8959CB1D3345CC48221A9A4683306C0 │ │ │ │ │ +62B634E0A539383F0C7A788D9711EFF414869CCC5659D78CEBE009BF2463F56A │ │ │ │ │ +0ADC993348FE96DF7C250E13ED6504AACFE8F8DCA2D2048D9D8CFA127D363EAC │ │ │ │ │ +1F0630E2D1B621E6954038195D965B91FD974FA3F1B8B29D200A16CEBA645E2F │ │ │ │ │ +CEEE6FD49FBBD49E38AE67D4BFFCE91F1FC422554EC4409C5FA18D40FCD6D9B3 │ │ │ │ │ +2185ED1E0F98106D4339F086B05CA36E56EC22C60E2CE23F9C4CC403ACAD3F94 │ │ │ │ │ +4086B4DF6DFA0B7B4716417263E7B558535566AED2F6C2F9846A16D71A7930A7 │ │ │ │ │ +49232D3D16C4A01CF1A1998A06F40062ED329179A85668537C55D0BC24FC0010 │ │ │ │ │ +54DA83E2FC66B2A5D428E6A9BFC983253668C0ECE6CA36DBF97C4B7659D50842 │ │ │ │ │ +C65B36604840EEDA399B57E2DEFAC3E7FB031634CE33D04238F9854D2AAAF448 │ │ │ │ │ +34DA5F3BCCED3166FEEE82BB0BBA0A397CC2F95865CB52AABFF454D93B425809 │ │ │ │ │ +A26AC459F321FD23E2262FE816D06BAAECF32AAF167F84799AF80F9F88388D07 │ │ │ │ │ +0DB5FD57AFEE2850A8DFE977E6AE39CB3DC16DB1A163A583C86C6F775CE33521 │ │ │ │ │ +0081C0BBBAD6D30D26C66B28B38CEAC78FEA5FB3CC5853656B67C6D9D80EB30E │ │ │ │ │ +397558C9179AF5920F34DAB3F578DFCF0DBB137AED17D6325C23883E69EE4621 │ │ │ │ │ +34355A70C19EA68891E1CA937376901C85CDEE109F1665943E29A216DC00937A │ │ │ │ │ +B983A729A4654AD09187C0242D52FA4ADD0853EF4888864914D7D81C56578DD4 │ │ │ │ │ +3B51907032022E6E412D4F114675DEDCA8A9E85DC03A0B583FECD84432D15F70 │ │ │ │ │ +01F627BD6EC91F9FCFDA01BF40E1229B5F164309DBB641AD50970503DA2048C1 │ │ │ │ │ +DF8F36E8D252EE113F0B46677D9BAF376BAE18D74CFB0DBBD0C7E9D0A58BA3ED │ │ │ │ │ +1E5099CAE073EB5638617760AB57849893764EA9735173CD1EAB66884CEA7EE3 │ │ │ │ │ +8843327B2E145BD6FBB49102776B82BC511D109F8BE9E7E99DADABABEDC3CFD9 │ │ │ │ │ +393578FFD85907DFF2849E4CDE6FA4DEC7E1C150EBE4047FFB650F9548BE6D11 │ │ │ │ │ +0C51226A5436F18BF20A02E0F888F46B6AC3A8E8D927ECD3B5E095933AD3859F │ │ │ │ │ +5167C41D832EFCC4093BD2AFA7101AB430E57DAFC3590F05D3CBABB32BC203A0 │ │ │ │ │ +467B23BDB830487C9AA5B85BAC065F8538871B4180F8C4732E637DB090CFDE5A │ │ │ │ │ +3F4F2B5BFAFB848BAAD1A17CB076B34159601639BD93ECAB1214ACABF2C67FE2 │ │ │ │ │ +0658AA20B08681070FF56F1CC52144ABA8765D6E124D1CEA9BBA102808CE1BB2 │ │ │ │ │ +5EDF46BC7BBC2A5B49EE6EC28F5797A3969B057B21FCDBBD0E60848FF14F6CA3 │ │ │ │ │ +70F3060BDBB019B22722C99C7691760F013763B7FBEB62830AE215F195BF9F01 │ │ │ │ │ +21BF4377397E89574CFA47D123AA506A570A77BA6EB4AAB0B237A26154880293 │ │ │ │ │ +3952F832F72ECCB024F02385E5EE8566B165904B594E30D0700D033C6B429F6F │ │ │ │ │ +2A20BC774F442BC9CE29FCC81807C2768A8BC927A215558FBF36DC53F477F04A │ │ │ │ │ +41DA66E1A85B659EB761230977EAD7DA0150513D3323B143D4E2A61BCF03334C │ │ │ │ │ +C0EE3E1B06CFAF58ECC910BD81F0352B75FF1594D6A4EF504232D442174BE766 │ │ │ │ │ +0F8E703F97E21D25D4CD097549C31FEE7017C3916EFB02E7BF869172889827B6 │ │ │ │ │ +A48465EB7612BA3DBC6A9436C7167F149A25CE9F8E3F4F8DE3B5ADF6C0986CB3 │ │ │ │ │ +3A7E2DAB44AB489796461536F5F713017F2620AD03295CAE9285F08974AE0DF8 │ │ │ │ │ +D739260929619B509491AFF09C4CAEF9E65C2CA69470C907ECBF3AB6C955360D │ │ │ │ │ +05ABAC306DB51122A1ADC7EF0DD70FA299A45C505A83727D4598C86319EE9C06 │ │ │ │ │ +7218EFD4F40388354BCF1B79593D5AD221DF955D081F99F880E5CED07321AB3E │ │ │ │ │ +A2FCB8B05D54807D8E15E65B78DCE12989B9276350080C905DBB74CE9AA7E246 │ │ │ │ │ +5D3BAED292C562D4CF54617FCC6654496C7996D1ECE1EFF9258716AB763A12E6 │ │ │ │ │ +316E4C5587351A6DB011F58F6A15BC28BEBDC3836E0CB892807FEC228DC1B380 │ │ │ │ │ +92F7F42279F08D60F13D6A4CB425543C3644461461CBF6F27B6603F613D1FCF8 │ │ │ │ │ +A8410AD82D1498166AEB35D4125D7E2ADEAAB18BC04806AED53513F066E5F154 │ │ │ │ │ +3E13E863C50B9814EE2FB978D0D24A03FAF650CB6E2CADF1E6BE6BAF699AFC03 │ │ │ │ │ +E1A0EEB207B3B9A689ED5B373FE86686AD230BE6C18E1673DDA50E224B343EC5 │ │ │ │ │ +903BA0C8041C13607B50D5852AC7970B15C244E6EBA7D54B3086312CF04761D6 │ │ │ │ │ +7D3D75D51F20C371494AB81AB4A9838B20B483B851D01FEF41EA5C0B4755B964 │ │ │ │ │ +EB6E9B178051C556A010994EB88EAE641F4C1A0D7E0F98D5267E18AEF1AEA7E7 │ │ │ │ │ +9030A97DF89AFF621981C33B645FFB5F3BB2065A7661D11B26E0999561DF3580 │ │ │ │ │ +4A76A05DFAF8085525F8D5C01936F03C32E26E72569371C9EA3B8916F9DFC5FC │ │ │ │ │ +6A6F25A0FFDB981BA8B896393D75774D50828E6ADE903C45406E354703A4BC56 │ │ │ │ │ +2C49A47FEAC970DC433E3050C49F7FB945A9705BD8852D2D65D935F244D3B423 │ │ │ │ │ +EFAB84AAAAB8FBAFF50AFF372A533BCCEB5FC273DBADCF715776DF02A5DCBA9A │ │ │ │ │ +FBF265FAB4745D6475B33611EEE1EA95E7584E0BEEC7CA789AA69C8D03D6F8C0 │ │ │ │ │ +5B6844E2B901ACA560C0433B053D134866E567425174E47173679AAD4486A2D3 │ │ │ │ │ +369C29E4DD2CD6ACA1BE80ED8FF0A9C58A616D26E758BD8E6342624EC83FB590 │ │ │ │ │ +BD354B52B60BB054FAFE9AC63E1564FBC721FE8F276B0413EC89A2C85E5ED1B0 │ │ │ │ │ +3A9D83BE62A4488ADE7CE69971A8AF7E5862A4290EEF6F00D4171C7FFB360065 │ │ │ │ │ +92E72BF02BE27161AE0BB5516572A0BDC4F316FFB24B38484AC8D1FD4CD86062 │ │ │ │ │ +A2B5D03CF28C3A679C039A6EFDD4C9DA7E463AD60234C9F6BBEE48D87DD94D85 │ │ │ │ │ +842F495F3E25723718682CE4D6224CBBF4456F03077EDF736D65B9DDAB09470E │ │ │ │ │ +17742D82011FFA96BFE86B96E858F9352FCD20C3D46B77DBDEE54336EC2249EA │ │ │ │ │ +211F6DFFF5BEA1E5192BE1BAC0BDD5EDDB3D56C6F7C6E543561A0B39E5C1B04F │ │ │ │ │ +C683A7516B6E69D682455386DDA709929D621FA434D403E895AA0A77DBE1DFD2 │ │ │ │ │ +0D060DF82378880147ED97C6E8149686FA048710B113760AC1DA4512FF8556B3 │ │ │ │ │ +16E2447485B8C3CD58D0469C4A45FFB4CB0322BB284C02 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -3520,19 +3525,19 @@ │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ cleartomark │ │ │ │ │ {restore}if │ │ │ │ │ %%EndFont │ │ │ │ │ TeXDict begin 39158280 55380996 1000 600 600 (main.dvi) │ │ │ │ │ @start /Fa 133[50 59 4[44 44 46 2[56 62 93 31 2[31 62 │ │ │ │ │ 2[51 62 50 1[54 11[86 5[84 5[42 6[80 13[56 56 56 56 2[31 │ │ │ │ │ -46[{}24 99.6264 /CMBX12 rf /Fb 134[48 3[51 2[36 3[51 │ │ │ │ │ -12[45 22[47 15[25 3[45 1[45 1[45 45 45 3[25 44[{}13 90.9091 │ │ │ │ │ -/CMSL10 rf /Fc 141[62 4[62 7[62 20[62 80[{}4 119.552 │ │ │ │ │ -/CMTT12 rf /Fd 222[91 32[71{}2 90.9091 /CMSY10 rf /Fe │ │ │ │ │ -132[52 123[{}1 90.9091 /CMBX10 rf │ │ │ │ │ +46[{}24 99.6264 /CMBX12 rf /Fb 134[48 3[51 2[36 12[40 │ │ │ │ │ +2[51 45 26[59 11[25 1[45 2[45 2[45 45 45 3[25 44[{}14 │ │ │ │ │ +90.9091 /CMSL10 rf /Fc 141[62 4[62 7[62 20[62 80[{}4 │ │ │ │ │ +119.552 /CMTT12 rf /Fd 222[91 32[71{}2 90.9091 /CMSY10 │ │ │ │ │ +rf /Fe 132[52 123[{}1 90.9091 /CMBX10 rf │ │ │ │ │ %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 │ │ │ │ │ @@ -3624,45 +3629,45 @@ │ │ │ │ │ b(to)h(the)g(old-to-new)g(v)m(ector)0 5045 y Fh(1.2)135 │ │ │ │ │ b(Protot)l(yp)t(es)46 b(and)f(descriptions)g(of)g Fc(Perm)e │ │ │ │ │ Fh(metho)t(ds)0 5294 y Fj(This)25 b(section)h(con)m(tains)h(brief)e │ │ │ │ │ (descriptions)h(including)f(protot)m(yp)s(es)h(of)f(all)i(metho)s(ds)d │ │ │ │ │ (that)j(b)s(elong)e(to)h(the)g Fi(Perm)0 5407 y Fj(ob)5 │ │ │ │ │ b(ject.)1927 5656 y(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fj(2)p 136 100 1135 4 v │ │ │ │ │ -1317 w Fi(PERM)29 b Fb(:)i Fg(DRAFT)f Fb(Jan)m(uary)g(16,)h(2024)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) │ │ │ │ │ -227 1234 y(b)m(y)f(a)f(call)i(to)f Fi(Perm)p 905 1234 │ │ │ │ │ -29 4 v 33 w(setDefaultFields\(\))p Fj(.)111 1433 y(2.)46 │ │ │ │ │ -b Fi(void)h(Perm_setDefaultFields)42 b(\()47 b(Perm)g(*perm)f(\))i(;) │ │ │ │ │ -227 1589 y Fj(This)30 b(metho)s(d)g(sets)g(the)h(structure's)f │ │ │ │ │ -(\014elds)g(to)h(default)g(v)-5 b(alues.)227 1745 y Fg(Err)g(or)34 │ │ │ │ │ -b(che)-5 b(cking:)40 b Fj(If)30 b Fi(perm)g Fj(is)g Fi(NULL)p │ │ │ │ │ -Fj(,)f(an)i(error)f(message)h(is)g(prin)m(ted)f(and)f(the)i(program)f │ │ │ │ │ -(exits.)111 1944 y(3.)46 b Fi(void)h(Perm_clearData)d(\()j(Perm)g │ │ │ │ │ -(*perm)f(\))i(;)227 2100 y Fj(This)36 b(metho)s(d)g(clears)i(data)f(o)m │ │ │ │ │ -(wned)g(b)m(y)f(the)h(ob)5 b(ject.)61 b(If)36 b Fi(perm->newToOld)d │ │ │ │ │ -Fj(is)k(not)g Fi(NULL)p Fj(,)e(its)i(storage)227 2213 │ │ │ │ │ -y(is)21 b(free'd)g(with)f(a)h(call)h(to)g Fi(IVfree\(\))p │ │ │ │ │ -Fj(.)35 b(If)20 b Fi(perm->oldToNew)d Fj(is)k(not)g Fi(NULL)p │ │ │ │ │ -Fj(,)e(its)j(storage)g(is)f(free'd)f(with)h(a)g(call)227 │ │ │ │ │ -2326 y(to)g Fi(IVfree\(\))p Fj(.)35 b(The)20 b(structure's)g(default)h │ │ │ │ │ -(\014elds)e(are)i(then)f(set)h(with)f(a)g(call)i(to)f │ │ │ │ │ -Fi(Perm)p 3097 2326 V 33 w(setDefaultFields\(\))p Fj(.)227 │ │ │ │ │ -2482 y Fg(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fj(If)30 │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fj(2)p 136 100 1116 4 v │ │ │ │ │ +1298 w Fi(PERM)29 b Fb(:)i Fg(DRAFT)f Fb(F)-8 b(ebruary)30 │ │ │ │ │ +b(18,)i(2025)p 2784 100 V 0 399 a Fa(1.2.1)112 b(Basic)38 │ │ │ │ │ +b(metho)s(ds)0 601 y Fj(As)d(usual,)h(there)f(are)g(four)f(basic)h │ │ │ │ │ +(metho)s(ds)g(to)g(supp)s(ort)e(ob)5 b(ject)36 b(creation,)i(setting)e │ │ │ │ │ +(default)f(\014elds,)h(clearing)0 714 y(an)m(y)31 b(allo)s(cated)h │ │ │ │ │ +(data,)f(and)f(free'ing)h(the)g(ob)5 b(ject.)111 965 │ │ │ │ │ +y(1.)46 b Fi(Perm)h(*)g(Perm_new)f(\()h(void)g(\))g(;)227 │ │ │ │ │ +1121 y Fj(This)32 b(metho)s(d)f(simply)h(allo)s(cates)i(storage)g(for)e │ │ │ │ │ +(the)g Fi(Perm)f Fj(structure)h(and)f(then)h(sets)h(the)f(default)g │ │ │ │ │ +(\014elds)227 1234 y(b)m(y)f(a)f(call)i(to)f Fi(Perm)p │ │ │ │ │ +905 1234 29 4 v 33 w(setDefaultFields\(\))p Fj(.)111 │ │ │ │ │ +1433 y(2.)46 b Fi(void)h(Perm_setDefaultFields)42 b(\()47 │ │ │ │ │ +b(Perm)g(*perm)f(\))i(;)227 1589 y Fj(This)30 b(metho)s(d)g(sets)g(the) │ │ │ │ │ +h(structure's)f(\014elds)g(to)h(default)g(v)-5 b(alues.)227 │ │ │ │ │ +1745 y Fg(Err)g(or)34 b(che)-5 b(cking:)40 b Fj(If)30 │ │ │ │ │ b Fi(perm)g Fj(is)g Fi(NULL)p Fj(,)f(an)i(error)f(message)h(is)g(prin)m │ │ │ │ │ -(ted)f(and)f(the)i(program)f(exits.)111 2681 y(4.)46 │ │ │ │ │ -b Fi(void)h(Perm_free)e(\()j(Perm)e(*perm)h(\))g(;)227 │ │ │ │ │ +(ted)f(and)f(the)i(program)f(exits.)111 1944 y(3.)46 │ │ │ │ │ +b Fi(void)h(Perm_clearData)d(\()j(Perm)g(*perm)f(\))i(;)227 │ │ │ │ │ +2100 y Fj(This)36 b(metho)s(d)g(clears)i(data)f(o)m(wned)g(b)m(y)f(the) │ │ │ │ │ +h(ob)5 b(ject.)61 b(If)36 b Fi(perm->newToOld)d Fj(is)k(not)g │ │ │ │ │ +Fi(NULL)p Fj(,)e(its)i(storage)227 2213 y(is)21 b(free'd)g(with)f(a)h │ │ │ │ │ +(call)h(to)g Fi(IVfree\(\))p Fj(.)35 b(If)20 b Fi(perm->oldToNew)d │ │ │ │ │ +Fj(is)k(not)g Fi(NULL)p Fj(,)e(its)j(storage)g(is)f(free'd)f(with)h(a)g │ │ │ │ │ +(call)227 2326 y(to)g Fi(IVfree\(\))p Fj(.)35 b(The)20 │ │ │ │ │ +b(structure's)g(default)h(\014elds)e(are)i(then)f(set)h(with)f(a)g │ │ │ │ │ +(call)i(to)f Fi(Perm)p 3097 2326 V 33 w(setDefaultFields\(\))p │ │ │ │ │ +Fj(.)227 2482 y Fg(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ │ +b Fj(If)30 b Fi(perm)g Fj(is)g Fi(NULL)p Fj(,)f(an)i(error)f(message)h │ │ │ │ │ +(is)g(prin)m(ted)f(and)f(the)i(program)f(exits.)111 2681 │ │ │ │ │ +y(4.)46 b Fi(void)h(Perm_free)e(\()j(Perm)e(*perm)h(\))g(;)227 │ │ │ │ │ 2837 y Fj(This)32 b(metho)s(d)h(releases)h(an)m(y)f(storage)i(b)m(y)e │ │ │ │ │ (a)g(call)i(to)e Fi(Perm)p 2282 2837 V 34 w(clearData\(\))c │ │ │ │ │ Fj(then)k(free's)g(the)h(storage)g(for)227 2950 y(the)d(structure)f │ │ │ │ │ (with)g(a)h(call)g(to)g Fi(free\(\))p Fj(.)227 3106 y │ │ │ │ │ Fg(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fj(If)30 b Fi(perm)g │ │ │ │ │ Fj(is)g Fi(NULL)p Fj(,)f(an)i(error)f(message)h(is)g(prin)m(ted)f(and)f │ │ │ │ │ (the)i(program)f(exits.)0 3391 y Fa(1.2.2)112 b(Initializer)38 │ │ │ │ │ @@ -3689,17 +3694,17 @@ │ │ │ │ │ (*perm)f(\))i(;)227 5251 y Fj(This)30 b(metho)s(d)g(returns)f(the)h(n)m │ │ │ │ │ (um)m(b)s(er)f(of)i(b)m(ytes)g(tak)m(en)g(b)m(y)g(this)f(ob)5 │ │ │ │ │ b(ject.)227 5407 y Fg(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ │ b Fj(If)30 b Fi(perm)g Fj(is)g Fi(NULL)p Fj(,)f(an)i(error)f(message)h │ │ │ │ │ (is)g(prin)m(ted)f(and)f(the)i(program)f(exits.)p eop │ │ │ │ │ end │ │ │ │ │ %%Page: 3 3 │ │ │ │ │ -TeXDict begin 3 2 bop 91 100 1135 4 v 1317 100 a Fi(PERM)29 │ │ │ │ │ -b Fb(:)h Fg(DRAFT)121 b Fb(Jan)m(uary)30 b(16,)i(2024)p │ │ │ │ │ -2718 100 V 1135 w Fj(3)111 399 y(2.)46 b Fi(int)h(Perm_checkPerm)d(\()k │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1116 4 v 1298 100 a Fi(PERM)29 │ │ │ │ │ +b Fb(:)h Fg(DRAFT)121 b Fb(F)-8 b(ebruary)31 b(18,)g(2025)p │ │ │ │ │ +2737 100 V 1116 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 │ │ │ │ │ @@ -3759,38 +3764,39 @@ │ │ │ │ │ b(metho)s(ds)0 4952 y Fj(There)30 b(are)h(the)f(usual)g(eigh)m(t)i(IO)e │ │ │ │ │ (routines.)40 b(The)30 b(\014le)h(structure)f(of)g(a)h │ │ │ │ │ Fi(Perm)e Fj(ob)5 b(ject)31 b(is)g(simple:)0 5181 y Fi(isPresent)d │ │ │ │ │ (size)0 5294 y(oldToNew[size])e Fj(\(if)31 b(presen)m(t\))0 │ │ │ │ │ 5407 y Fi(newToOld[size])26 b Fj(\(if)31 b(presen)m(t\))p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fj(4)p 136 100 1135 4 v │ │ │ │ │ -1317 w Fi(PERM)29 b Fb(:)i Fg(DRAFT)f Fb(Jan)m(uary)g(16,)h(2024)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 │ │ │ │ │ -b(alue)31 b(returned)e(from)h(the)g(called)i(routine.)227 │ │ │ │ │ -931 y Fg(Err)-5 b(or)35 b(che)-5 b(cking:)43 b Fj(If)31 │ │ │ │ │ -b Fi(perm)f Fj(or)h Fi(fn)g Fj(are)h Fi(NULL)p Fj(,)e(or)i(if)f │ │ │ │ │ -Fi(fn)g Fj(is)h(not)f(of)h(the)g(form)e Fi(*.permf)g │ │ │ │ │ -Fj(\(for)i(a)f(formatted)227 1044 y(\014le\))g(or)f Fi(*.permb)f │ │ │ │ │ -Fj(\(for)h(a)h(binary)f(\014le\),)h(an)f(error)g(message)i(is)e(prin)m │ │ │ │ │ -(ted)g(and)g(the)g(metho)s(d)g(returns)f(zero.)111 1239 │ │ │ │ │ -y(2.)46 b Fi(int)h(Perm_readFromFormattedFil)o(e)42 b(\()47 │ │ │ │ │ -b(Perm)g(*perm,)f(FILE)h(*fp)g(\))g(;)227 1392 y Fj(This)33 │ │ │ │ │ -b(metho)s(d)g(reads)h(in)f(a)h Fi(Perm)f Fj(ob)5 b(ject)35 │ │ │ │ │ -b(from)e(a)h(formatted)g(\014le.)51 b(If)33 b(there)h(are)h(no)e │ │ │ │ │ -(errors)g(in)h(reading)227 1505 y(the)27 b(data,)h(the)f(v)-5 │ │ │ │ │ -b(alue)27 b Fi(1)g Fj(is)f(returned.)39 b(If)26 b(an)g(IO)h(error)f(is) │ │ │ │ │ -h(encoun)m(tered)g(from)f Fi(fscanf)p Fj(,)g(zero)h(is)g(returned.)227 │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fj(4)p 136 100 1116 4 v │ │ │ │ │ +1298 w Fi(PERM)29 b Fb(:)i Fg(DRAFT)f Fb(F)-8 b(ebruary)30 │ │ │ │ │ +b(18,)i(2025)p 2784 100 V 111 399 a Fj(1.)46 b Fi(int)h │ │ │ │ │ +(Perm_readFromFile)c(\()48 b(Perm)e(*perm,)g(char)h(*fn)g(\))g(;)227 │ │ │ │ │ +552 y Fj(This)29 b(metho)s(d)f(reads)h(a)g Fi(Perm)f │ │ │ │ │ +Fj(ob)5 b(ject)30 b(from)f(a)g(\014le.)41 b(It)29 b(tries)g(to)h(op)s │ │ │ │ │ +(en)e(the)i(\014le)f(and)f(if)h(it)h(is)f(successful,)g(it)227 │ │ │ │ │ +665 y(then)35 b(calls)i Fi(Perm)p 845 665 29 4 v 33 w │ │ │ │ │ +(readFromFormattedFile\(\))29 b Fj(or)36 b Fi(Perm)p │ │ │ │ │ +2320 665 V 33 w(readFromBinaryFile\(\))p Fj(,)c(closes)k(the)g(\014le) │ │ │ │ │ +227 778 y(and)30 b(returns)f(the)i(v)-5 b(alue)31 b(returned)e(from)h │ │ │ │ │ +(the)g(called)i(routine.)227 931 y Fg(Err)-5 b(or)35 │ │ │ │ │ +b(che)-5 b(cking:)43 b Fj(If)31 b Fi(perm)f Fj(or)h Fi(fn)g │ │ │ │ │ +Fj(are)h Fi(NULL)p Fj(,)e(or)i(if)f Fi(fn)g Fj(is)h(not)f(of)h(the)g │ │ │ │ │ +(form)e Fi(*.permf)g Fj(\(for)i(a)f(formatted)227 1044 │ │ │ │ │ +y(\014le\))g(or)f Fi(*.permb)f Fj(\(for)h(a)h(binary)f(\014le\),)h(an)f │ │ │ │ │ +(error)g(message)i(is)e(prin)m(ted)g(and)g(the)g(metho)s(d)g(returns)f │ │ │ │ │ +(zero.)111 1239 y(2.)46 b Fi(int)h(Perm_readFromFormattedFil)o(e)42 │ │ │ │ │ +b(\()47 b(Perm)g(*perm,)f(FILE)h(*fp)g(\))g(;)227 1392 │ │ │ │ │ +y Fj(This)33 b(metho)s(d)g(reads)h(in)f(a)h Fi(Perm)f │ │ │ │ │ +Fj(ob)5 b(ject)35 b(from)e(a)h(formatted)g(\014le.)51 │ │ │ │ │ +b(If)33 b(there)h(are)h(no)e(errors)g(in)h(reading)227 │ │ │ │ │ +1505 y(the)27 b(data,)h(the)f(v)-5 b(alue)27 b Fi(1)g │ │ │ │ │ +Fj(is)f(returned.)39 b(If)26 b(an)g(IO)h(error)f(is)h(encoun)m(tered)g │ │ │ │ │ +(from)f Fi(fscanf)p Fj(,)g(zero)h(is)g(returned.)227 │ │ │ │ │ 1618 y(Note,)36 b(if)d(the)g(p)s(erm)m(utation)g(v)m(ectors)h(are)g │ │ │ │ │ (one-based)f(\(as)h(for)f(F)-8 b(ortran\),)35 b(they)e(are)g(con)m(v)m │ │ │ │ │ (erted)i(to)f(zero-)227 1731 y(based)c(v)m(ectors.)227 │ │ │ │ │ 1884 y Fg(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fj(If)30 │ │ │ │ │ b Fi(perm)g Fj(or)g Fi(fp)g Fj(are)g Fi(NULL)p Fj(,)g(an)g(error)g │ │ │ │ │ (message)i(is)e(prin)m(ted)g(and)g(zero)h(is)f(returned.)111 │ │ │ │ │ 2079 y(3.)46 b Fi(int)h(Perm_readFromBinaryFile)42 b(\()47 │ │ │ │ │ @@ -3849,17 +3855,17 @@ │ │ │ │ │ 34 w(writeStats\(\))26 b Fj(is)k(called)h(to)f(write)g(out)h(the)f │ │ │ │ │ (header)f(and)g(statistics.)43 b(The)29 b(v)-5 b(alue)31 │ │ │ │ │ b Fi(1)e Fj(is)h(returned.)227 5407 y Fg(Err)-5 b(or)34 │ │ │ │ │ b(che)-5 b(cking:)40 b Fj(If)30 b Fi(perm)g Fj(or)g Fi(fp)g │ │ │ │ │ Fj(are)g Fi(NULL)p Fj(,)g(an)g(error)g(message)i(is)e(prin)m(ted)g(and) │ │ │ │ │ g(zero)h(is)f(returned.)p eop end │ │ │ │ │ %%Page: 5 5 │ │ │ │ │ -TeXDict begin 5 4 bop 91 100 1135 4 v 1317 100 a Fi(PERM)29 │ │ │ │ │ -b Fb(:)h Fg(DRAFT)121 b Fb(Jan)m(uary)30 b(16,)i(2024)p │ │ │ │ │ -2718 100 V 1135 w Fj(5)111 399 y(8.)46 b Fi(int)h(Perm_writeStats)d(\() │ │ │ │ │ +TeXDict begin 5 4 bop 91 100 1116 4 v 1298 100 a Fi(PERM)29 │ │ │ │ │ +b Fb(:)h Fg(DRAFT)121 b Fb(F)-8 b(ebruary)31 b(18,)g(2025)p │ │ │ │ │ +2737 100 V 1116 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 16, 2024 │ │ │ │ │ │ + 2 PERM : DRAFT February 18, 2025 │ │ │ │ │ │ 1.2.1 Basic methods │ │ │ │ │ │ As usual, there are four basic methods to support object creation, setting default fields, clearing │ │ │ │ │ │ any allocated data, and free’ing the object. │ │ │ │ │ │ 1. Perm * Perm_new ( void ) ; │ │ │ │ │ │ This method simply allocates storage for the Perm structure and then sets the default fields │ │ │ │ │ │ by a call to Perm setDefaultFields(). │ │ │ │ │ │ 2. void Perm_setDefaultFields ( Perm *perm ) ; │ │ │ │ │ │ @@ -46,15 +46,15 @@ │ │ │ │ │ │ isPresent == 3 then newToOld and newToOld are set with calls to IVinit(). │ │ │ │ │ │ Error checking: If perm is NULL, or if isPresent is invalid, or if size <= 0, an error message │ │ │ │ │ │ is printed and the program exits. │ │ │ │ │ │ 1.2.3 Utility methods │ │ │ │ │ │ 1. int Perm_sizeOf ( Perm *perm ) ; │ │ │ │ │ │ This method returns the number of bytes taken by this object. │ │ │ │ │ │ Error checking: If perm is NULL, an error message is printed and the program exits. │ │ │ │ │ │ - PERM : DRAFT January 16, 2024 3 │ │ │ │ │ │ + PERM : DRAFT February 18, 2025 3 │ │ │ │ │ │ 2. int Perm_checkPerm ( Perm *perm ) ; │ │ │ │ │ │ This method checks the validity of the Perm object. If oldToNew is present, it is checked │ │ │ │ │ │ to see that it is a true permutation vector, i.e., a one-one and onto map from [0,size) to │ │ │ │ │ │ [0,size), and similarly for newToOld if it is present. If the permutation vector(s) are valid, │ │ │ │ │ │ 1 is returned, otherwise 0 is returned. │ │ │ │ │ │ Error checking: If perm is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 3. void Perm_fillOldToNew ( Perm *perm ) ; │ │ │ │ │ │ @@ -80,15 +80,15 @@ │ │ │ │ │ │ compressed graph. │ │ │ │ │ │ Error checking: If perm or eqmapIV are NULL, an error message is printed and zero is returned. │ │ │ │ │ │ 1.2.4 IO methods │ │ │ │ │ │ There are the usual eight IO routines. The file structure of a Perm object is simple: │ │ │ │ │ │ isPresent size │ │ │ │ │ │ oldToNew[size] (if present) │ │ │ │ │ │ newToOld[size] (if present) │ │ │ │ │ │ - 4 PERM : DRAFT January 16, 2024 │ │ │ │ │ │ + 4 PERM : DRAFT February 18, 2025 │ │ │ │ │ │ 1. int Perm_readFromFile ( Perm *perm, char *fn ) ; │ │ │ │ │ │ This method reads a Perm object from a file. It tries to open the file and if it is successful, it │ │ │ │ │ │ then calls Perm readFromFormattedFile() or Perm readFromBinaryFile(), closes the file │ │ │ │ │ │ and returns the value returned from the called routine. │ │ │ │ │ │ Error checking: If perm or fn are NULL, or if fn is not of the form *.permf (for a formatted │ │ │ │ │ │ file) or *.permb (for a binary file), an error message is printed and the method returns zero. │ │ │ │ │ │ 2. int Perm_readFromFormattedFile ( Perm *perm, FILE *fp ) ; │ │ │ │ │ │ @@ -117,15 +117,15 @@ │ │ │ │ │ │ This method writes out a Perm object to a binary file. If there are no errors in writing the │ │ │ │ │ │ data, the value 1 is returned. If an IO error is encountered from fwrite, zero is returned. │ │ │ │ │ │ Error checking: If perm or fp are NULL, an error message is printed and zero is returned. │ │ │ │ │ │ 7. int Perm_writeForHumanEye ( Perm *perm, FILE *fp ) ; │ │ │ │ │ │ This method writes out a Perm object to a file in a human readable format. The method │ │ │ │ │ │ Perm writeStats() is called to write out the header and statistics. The value 1 is returned. │ │ │ │ │ │ Error checking: If perm or fp are NULL, an error message is printed and zero is returned. │ │ │ │ │ │ - PERM : DRAFT January 16, 2024 5 │ │ │ │ │ │ + PERM : DRAFT February 18, 2025 5 │ │ │ │ │ │ 8. int Perm_writeStats ( Perm *perm, FILE *fp ) ; │ │ │ │ │ │ This method writes out a header and statistics to a file. The value 1 is returned. │ │ │ │ │ │ Error checking: If perm or fp are NULL, an error message is printed and zero is returned. │ │ │ │ │ │ Index │ │ │ │ │ │ Perm checkPerm(), 4 │ │ │ │ │ │ Perm clearData(), 3 │ │ │ │ │ │ Perm compress(), 4 │ │ │ ├── ./usr/share/doc/spooles-doc/ReferenceManual.ps.gz │ │ │ │ ├── ReferenceManual.ps │ │ │ │ │ @@ -8,15 +8,15 @@ │ │ │ │ │ %%DocumentFonts: CMR17 CMBX12 CMR12 CMR8 CMR6 CMR9 CMTT9 CMBX10 CMR10 │ │ │ │ │ %%+ CMR7 CMBX8 │ │ │ │ │ %%DocumentPaperSizes: Letter │ │ │ │ │ %%EndComments │ │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ │ %DVIPSCommandLine: dvips main -o ReferenceManual.ps │ │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ │ -%DVIPSSource: TeX output 2024.01.16:2047 │ │ │ │ │ +%DVIPSSource: TeX output 2025.02.18:0318 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -3850,24 +3850,26 @@ │ │ │ │ │ /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 52 /four put │ │ │ │ │ -dup 54 /six put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ +dup 56 /eight put │ │ │ │ │ dup 65 /A put │ │ │ │ │ dup 67 /C put │ │ │ │ │ dup 68 /D put │ │ │ │ │ +dup 70 /F put │ │ │ │ │ dup 74 /J put │ │ │ │ │ dup 75 /K put │ │ │ │ │ dup 80 /P put │ │ │ │ │ dup 87 /W put │ │ │ │ │ dup 97 /a put │ │ │ │ │ +dup 98 /b put │ │ │ │ │ dup 99 /c put │ │ │ │ │ dup 100 /d put │ │ │ │ │ dup 101 /e put │ │ │ │ │ dup 102 /f put │ │ │ │ │ dup 104 /h put │ │ │ │ │ dup 105 /i put │ │ │ │ │ dup 108 /l put │ │ │ │ │ @@ -4061,175 +4063,187 @@ │ │ │ │ │ 34DE10D995ABCAF45FBB3B6B73E80D05F4C51F8C29D4B0F67C8A86432A6C5E86 │ │ │ │ │ F0126AB25A5CA2875B48C61CB8112A4CF9AA08F8B0157396CF63CBECDB8867CC │ │ │ │ │ AC10F060630C9BFBAD84B1FF01C814878F0C177F552BDC9BB181B14581C6E968 │ │ │ │ │ DAAAB2896FCFB745795C4D2C87CC15BAA041EF80C5BDC12EC1F5786BB41A5A21 │ │ │ │ │ 073EE0BC436B346E014DB4099EDC67BC432E470A4B779FD556341061CA3F2BE8 │ │ │ │ │ EFA332637AEC878C2BB189CA3267B2BE5B8178E6B7889A33771F86276E6F0B8E │ │ │ │ │ 8E93B816AC7005575762EF4DE45E2794B7322F9B6D8E634FB8FF250D638EB502 │ │ │ │ │ -818321B3C46DB51B8EC6C2EF1D05C716519A3BD6B12A67239898F8A010C81653 │ │ │ │ │ -19A494E9F860632F8CF5B097D6F0DA0CF175BBC872BFF3D3B1CDD560A14E9301 │ │ │ │ │ -F027CB0E089F935C70F9E792F112032582E7F3BFE28ADE72E1F70D6D09021AED │ │ │ │ │ -2A703E0A93C7BC4DEE245C1D5BB30481C4C69D5A4E7B27983B969B9AD6A7BD39 │ │ │ │ │ -6A4BC688D85E1D93DA559088886D36F26570743E54EC6E94FF66F61EE8299209 │ │ │ │ │ -075CB9127C1D59FE85EE7378CE553BD80F7A03B15FB710E091902C8368DFCF73 │ │ │ │ │ -7C682089968062C005EA19B482F1982A2AD23FA4A86963A7085E40F9942C261D │ │ │ │ │ -738A72D952319A2E36DF32527E5332FE0E385152E93FDD702972A27BFBB0FDA2 │ │ │ │ │ -331A1FEA6E3DFE3E22ABD325801EF12305C84EAD056C982C9CCC7070DFE65215 │ │ │ │ │ -ECC2F84735580E99B3583D4FC68EC52E79B7F8DBA2DD43705D2E274D06BE990E │ │ │ │ │ -C58F63543A9ECF987D0C770084FF2472215A2C3D14154BCFCCB17C80CFA71B09 │ │ │ │ │ -74A07FB9EFBEE5D4F89BFA97A5B98CB409EE48D23D69463718D06FFA1B3D11B5 │ │ │ │ │ -11B84A04B118AF107761FD995481A29F8E40044BC68A8A5864F382B9E334DF11 │ │ │ │ │ -2BABC1E496611192EDF9197CCC741F9091185D71B05DFB0D0B19D6E0D3CF3DE0 │ │ │ │ │ -6C43C239248F38ABA81BB9F77E4F58727DFAD86E223E8C384ED8386E49D5A391 │ │ │ │ │ -8A5BCF8D13A05B943C9BEE89598616A65D419732C0E1357C26660FCD6B9ACDEE │ │ │ │ │ -52BC7BE7CF749C83BEDAB386C9B188BAD5480A3D86DE7ABF644AF1CBA19ECE8F │ │ │ │ │ -06B6E761556C0B3F9E9C8CD496887364B12AD1EEC7A3725174D468C4A8B0D9F9 │ │ │ │ │ -8D7159898CC89B54260226CBD4C851A9A094AD277E607060115D3BB164338C9C │ │ │ │ │ -9FB453BB8115DC1D682835367C71ECFFA116B3A4ED388CB925ED66FE2FBA7F4C │ │ │ │ │ -8285A5D5F18E0A9FA9D1B238320D5788242B0FB4840CF482911615793A51CC50 │ │ │ │ │ -822E4CC5243E091E13E756DC69FB095C792A6094C9DE9E133AB8EB11551D48DC │ │ │ │ │ -9CD669B461254436CC92D2600E413AF5B19BC9034E3BACEA8C0B2122BDEB2BB5 │ │ │ │ │ -9C01367F830A8BE3A0F879AF88D2DAF5366D04D7696E01F138CEF65356981CCC │ │ │ │ │ -3333D99670F77020FB9F4CF884C086211E8D73D0DB900C5552221D0F359842B6 │ │ │ │ │ -41346775DF351AD5498ED51CB516219BC2A323100219B1CF3A1FB691BB407767 │ │ │ │ │ -FF9B66F02455850BE131601993C75871441DDE51135F830A1EB7BE53374699B9 │ │ │ │ │ -CFC7EC24C98E7BBCF50C9775313C8BC56F0416E58A5A2070CB788A103472EA72 │ │ │ │ │ -5AAD7A8CE0D42245D856153098BFB808E5AA661C15BC24E48487BD17D6133DAA │ │ │ │ │ -E5D770777971ED3D999B76BE990A198BE058FD44C87014CDCB71314FEA5E7E84 │ │ │ │ │ -81BA8080E6B76EF59B3A22220924115B8F7007B7E5835BFD1AF87515BE26BBAE │ │ │ │ │ -DE1CCB9F8DEBD2BF14D699E7F96CAE951024AFC97752D918DBB00E2CC7C5E324 │ │ │ │ │ -9678EAC4456B2BD46C6E19A00F73C6BB8EE5466494B8589E96F653761226D39A │ │ │ │ │ -41C389F13A817EC31BEEB3B0C249EE11CF346E2C145E2FEDB0038E048285CE4C │ │ │ │ │ -B547490268381EA47DB433325DACC26C962AEDF4E87476634A1DEF4CF2CD2713 │ │ │ │ │ -868122BE4AD5F721493233B6666E512C7B990A9483D8846DADC9A0B63BBC096C │ │ │ │ │ -D44910EF73B75E5C2BDE8597451A60E4077C81640735326ADA0533585130D7C0 │ │ │ │ │ -A8CF725D3D355A353C9A1A12E2B2CB8FD67EE802E06B1EF09C186EAC65E305DB │ │ │ │ │ -CA56FAFD7B1EA2E1599B00CD24F1E50099777505C666195A3FD9C0407B170FCF │ │ │ │ │ -F2442D72ABF854B84D588687F5FB1C1A47834299DD2A13176F151BED8C6CB404 │ │ │ │ │ -36047B3686E5335B5947CDFD75AEECA4B0D76E8C0DBACA9688BF4412EE3190EA │ │ │ │ │ -0FEBBA56AB1FB1BBCEE814C8F32F33A61886669AFB2A1F9027DF44C2CD70F8B5 │ │ │ │ │ -51DD783034A455047292010E4C93C08FCDA03BBF818187F3EDDF16016BFD5925 │ │ │ │ │ -AC611061C280FC4C95DC4FEC85E4A1567FAC390BED3FA2E897AD2A4E1FBA6E05 │ │ │ │ │ -6D685F8135AD11EAFEE363F695155053ED7A3F97061F3A729B78A0A63F32C7DB │ │ │ │ │ -36E4CE9CB898E491C90151AE1E7B5ACEE3C668796D49E344A569614AD9D1CFD9 │ │ │ │ │ -964DE0A63EE9E9970B09D1466D7B1A3933176B6D2F9F955BF3B089A4D0110D65 │ │ │ │ │ -4B85ED9BA2D889779EEC6EC45D45108EC1CBDA6C8234C068578B9BF74DE26E4C │ │ │ │ │ -679E4BB882FA73E2E1F15B59BC14DE7AEC82656C169B093AEDBA4B5D340CC7B0 │ │ │ │ │ -7E392FAD7DEF85FB6D2BCBA37D987B33100913AC80F8D86999F7BBAC0382C75C │ │ │ │ │ -3A49732BC78F6C45C8D01A982F6628CE107AFADAE4D5E15515876ABDDB40F1FC │ │ │ │ │ -6D56F8B26E4DD3C751E3FD6A17465CF9A4B07534DBB0EAE4823EFC7709BA6039 │ │ │ │ │ -D51D59B72A7FD170F0B8D749FACE18ACE8C6E7100958E8511F312F8E4041D6A9 │ │ │ │ │ -D1AF0DBA434AA3F9CC7ADA369135459F27B1C73BD0C7ADA778F6A81DF4D4AB2E │ │ │ │ │ -707D70ED740104BB2478638003A1A39FC6C68A79C286C7E94BE1D44BE7BB27E4 │ │ │ │ │ -A7595347F5553875098B7C72058BE8963BC62F3244B6A9E2D84318DA590203B7 │ │ │ │ │ -D00D67DEE6F86B9E495976CE143D7E2A1A29B4FAE3ACEE417A75ADDFF49C0E8A │ │ │ │ │ -CB7F8B1878538C473C01E9C8B8E9B3D682CF11D7BF62F15492266C719E18D68A │ │ │ │ │ -AD169362423B2015DC218BC0F0F68F98B06480F242E23BDFC318E7CD4CD00A92 │ │ │ │ │ -5A2C1DA014708D217A92BB2D45AE026C83051D8EEB99ADB19929688D44EA76D9 │ │ │ │ │ -E0A447B8DA1594E4C38007000AE6A2EE1DF2ABA1D2C46BAE0439DC5F2ACAFF5B │ │ │ │ │ -BFF63A33EF5A50C0397FD013623BE92180E431C10BB4D94A385A5A9366BA95A9 │ │ │ │ │ -C3F812CE39DF7099B7A3D5A8D557417BF261B521129A36A816B42AD9A3D3EB6E │ │ │ │ │ -0FDAF94EDA824044E8A831E7026E38F04EF10386FA4A424B7F23081754D4145E │ │ │ │ │ -DA11604F75960991409044C2D280F2B4FAA99E8EAB014EA2797F6565430C6381 │ │ │ │ │ -511EE3D78F86AE8C21C089ED4D054540D43BC6444C3704A0C0CE9CC8DEE45D49 │ │ │ │ │ -760842324A9C3BC7E9F58A36D208B94D700FB018BDAA73F3153797DF93CBA6EE │ │ │ │ │ -DDC129DCEA3CB6E0F0FDF3ADE93207CFC53FDA358AA7740EC3532FC2D5E5B810 │ │ │ │ │ -AC5223C4ECA70C31E7A3C09E87CB9F1E64F463B513BE2C70A95B1C0B995B5514 │ │ │ │ │ -96F914C8BC972E49F4AFE4B8F9466CEA5DFE5B7D18C80B3060A661BE5832186E │ │ │ │ │ -128DF73548708F37A8F644BB2445743C21E381C3F038DDCEEBACD48DFE02EC9D │ │ │ │ │ -7B5D412E1D4F9C0A35E732C017E295E4639458FFFE52705B1EC321288203F7BB │ │ │ │ │ -7B5C690C3450683856F51AA52F284ADDBDE92F628DA991BDC0D7BFE87C9764BD │ │ │ │ │ -C943F079C90E1F9E7A5D4773E6B585D71ACD7E1609D8DC4D7AF15AD00DCFF6D4 │ │ │ │ │ -56FB3F21E7DD2AC894A88FC795F4E8EFEE88F73B896F64B226F75BDE1B3933B4 │ │ │ │ │ -7D095CE431A296E02600FD0AF694B3720A490C2996359AF872F1F1DDD78A22D8 │ │ │ │ │ -99EEBBDE73AF5F7229AFF83C33EF1EE2EF5BF3CDBC27F761240BE47664182849 │ │ │ │ │ -D85C40BCC661FD6BD1453E512E457962A8E6EF06A4E36137F498E50E56C02FCC │ │ │ │ │ -E82567AF871C409BE650A0032DFB5636091615A3C2276E22D70378121449E436 │ │ │ │ │ -CAB356213399CEFE954BDB0913F2B142CCF0B68B210706C53E55E41EDA3D7C7A │ │ │ │ │ -9D4E273D4C77C25D008264A73E823B63953C86B69D77AF155E863FFF9EEF1867 │ │ │ │ │ -E9185BB54DCAA212799035BE7277342275BDEE3CC19565C115A13B8FF05CD2D2 │ │ │ │ │ -21ED79AE70C001DF32EC7A69B29772CA86DD7952726D88B6966C3F4D9F12C5F9 │ │ │ │ │ -D3FD4B30DC47EDA3BAE63853A0C9E6A5F58388DF0CB20EBA5A2E6D3B63CDC4B1 │ │ │ │ │ -1F8AC3918CD5EC98B6200ECCB702FC3D1D98B9BCCD0561003AE6B997095E841E │ │ │ │ │ -E1840AF72E1A7ADB4035A7D7E70A044CB7AD1A1C3ACBE85D6511B0668B6CC080 │ │ │ │ │ -ABF24129418CAF9FEEB88C7E17FBBB68AF1666457B4D6E6547704BFFDD07D5A0 │ │ │ │ │ -FD2550D6547AD2D9941EE538FDA568937C2892F4D421C99423E23B5220E73E07 │ │ │ │ │ -D9E219907D1776D72AFD43F42F9C586B4C6CCDC423F08F769A6A429AE085121D │ │ │ │ │ -33FEE76D295D061255D61DC15D35E1DA7A3503A291FFC170CBDE9ADAD03BE55A │ │ │ │ │ -D198A2A06C4F6F3D3309CD968DDC6839755C6FB88F27256AA8061C58BE536785 │ │ │ │ │ -742535F72C0D11703C8594B5EAD74C00554332EF344340A78DED6C6A59091B73 │ │ │ │ │ -79A6ADE91789C084CF6AE3DD65C0AA24F974177FA9DBFA48D2EC75A7B8588E70 │ │ │ │ │ -6A386220DF9BEA5910A9F677ADCE19DB5D821FF5569C73866C6C9684338C81EA │ │ │ │ │ -022D6C5EA9492E25EB54D6883225FA126DA4296B231993B9EEEF8DC018E388F3 │ │ │ │ │ -C9570EA040EA0081F893CFB115B23C657BD43E31585203591B192D4866626656 │ │ │ │ │ -D6223CCC1F3235153D54998ECD22A46FD2090970995795BCB541A821CFADD0FC │ │ │ │ │ -5AD44A91479B4628BDB23C140BE632E8030127BF3DF734FD06DBFE6BD155FF70 │ │ │ │ │ -51D54A611E5A8BA43F0A596C1291126B4AA4F721AD590BB8A873D03B15A0C391 │ │ │ │ │ -E244B38A319CA5E4500F7D0B7F8224B28E7FA66BD0333E00D22AC9A8DD8BF0C4 │ │ │ │ │ -7E160427CC6BDE166ACE4C324C256FCB809DB8CC2CA0CB4AFE637AA6804E3A86 │ │ │ │ │ -35D756F9DC207A44D4EECABD0C066644672EFA99B3BF1FC1812606D9A90EC0F3 │ │ │ │ │ -6F9DA344C624E13F76D8605343108D2F9005C8EC01804EB3B93207073FE392CE │ │ │ │ │ -899A5E40FA5B1DFBB682B0129513ECF582F9BC2FEB87B7C3BFA933C26CE65299 │ │ │ │ │ -CEC740039A3C31F8716FF24F944991897FC3512EE0C68A9159A50CB5867F6755 │ │ │ │ │ -A55FD6947F0F1D5685DCC0A86B3C73916CF33A9FB03E9FE97DB1BCC58FE93012 │ │ │ │ │ -A8FA166A68DADD8D15BBF8781A0DECCE2E00EA16905EE3276134983D9236E960 │ │ │ │ │ -2ED96C5227060CDBB7190AB4FDF43EEF88A7C0855ADF96006E8E206608669D66 │ │ │ │ │ -C2B31FAD8BDCC88093C2F6C55B4D291AEC2070D7F27A0B2ACF6585DB7D30C24B │ │ │ │ │ -C62DC7DF37068A2D13B35DF428EBDC48B67C82BF05D74ED786F3F136B1EE4399 │ │ │ │ │ -BDF7B5D3B11CF39528FF5916A8D688C05FCF04B6358DBDDD3B8C4F880C36BB6D │ │ │ │ │ -FDF44BB54018CDF491D07DA5C9CEE4EFB1E02597D6559BE09DFE29EF3A7723B6 │ │ │ │ │ -36C65478E8AD25F2C2A91550AED3EB069F35941B308D18C701A6FB258BB3D17D │ │ │ │ │ -DD3B2AD821CD8B459CDD3CA93FFA532058713987EBDFEBA0E9711DC5CB20E5C6 │ │ │ │ │ -3DE3268733B642C01C44E22658852DD0F4654A6AA06A286F59FC689CBA73693A │ │ │ │ │ -1643A2D52196E358F46B6E8E6979CD5145A7638DE6B786DBB0C851DF76E947F8 │ │ │ │ │ -05DA4982C9679B7F1237AB932A5372643C8F6425CD2E030993814C3FE572CB78 │ │ │ │ │ -6D0E27F5DADBB1AA64283B838B54856269E1EDA1076602A55F026B65E83AB8C5 │ │ │ │ │ -8991C4629A49A7E38082D31ADBDC0A1E1D8A9604DC6952023AE4B87ED47A7961 │ │ │ │ │ -30C2435C2B630B4FF6341994C47D82998446339991D515186FE68520C5197C8E │ │ │ │ │ -A0D7F46B0CCCDA5B871A2666BBE34BB18FF7E9BBC08BC4132D8BCC1B5AEC588A │ │ │ │ │ -DDBD16ADC538F68BDCB63DE8CF0674118AC0AA33610591231FB971505F0377D2 │ │ │ │ │ -A79FDB5015E8223D77F4B5FB09D700F19C6BD72E9272EF28B47F59B2FE83DEA3 │ │ │ │ │ -D22344909CAC4C79486D8AE9448315D2BF94EA3A85279DE1F4EAD4144C6C9ABE │ │ │ │ │ -968A30F63BF8A763B005D679DA2FB27526DC286E1D1765FA0617C0607C577DC5 │ │ │ │ │ -BA88F0C832AA2E215E30B5314501D536F744E63875A731A5E011E6FF163FAB0D │ │ │ │ │ -5E83DCB2C91ED9218B3560D76AFF15F6250A685245A9B977D703C0089D1C3B39 │ │ │ │ │ -3EFF5E2A11AD788896409CFE3914DEBA18F3A2A6FA2BF5A54A7FECC4A804B6C7 │ │ │ │ │ -5607B399804B492EA9518689075B2BFBFD3C7013B3C0C6466A51F107714D18DC │ │ │ │ │ -6D7084674A74C2D089372BC3316C2EA5678917E4535945DC074E29A7BD38AA5F │ │ │ │ │ -87C49F65372412681D764CEA827A7F71008F2AAE4FD051984EBB5645D17550FD │ │ │ │ │ -D8A9656C3706A3191B8B75E22B6FEC83EEEE0ECA2E76CB0F1D2413247D9B4C6C │ │ │ │ │ -FDC141D8BE79AC1FA7D1D396D8E3287532623F51CE32EF0D02F0A80EDD2644A4 │ │ │ │ │ -F871725C24DF162550DD81BC357C01A679511450F45F8667DCFA2B9EE93FF498 │ │ │ │ │ -222556710B3F4F192E0BD7936052D52B9CF601B09286937375C274C11BA15819 │ │ │ │ │ -C83F6C1601A4A16798BB130393BD6E2AE6B16E9F6C4FA408B4FE37F4C2037AE1 │ │ │ │ │ -436953FB5DF055DC5F1B091C75E7E528E1559B065861D71E2E50DEEB9DD5A09D │ │ │ │ │ -B1D8CDB3E7D1A94A301D3ABD608632810CCC4C7EA96C0A834C9E7BA35E6B464D │ │ │ │ │ -C7B132128523CC98A3B12FBA4657E45BB023C23609EB83C6B17FB646A9792F1F │ │ │ │ │ -C5087EC18ED240C9D51EE1C645E58B13A55388C6782506ECC56E6C0F771AB2EF │ │ │ │ │ -BB9B906C8729820FE2658E913EE027C4A7E1D7D6E3912EFBC0E2A64649CE5940 │ │ │ │ │ -4B32D8F127B6190DCE95DF49A0B5BA18D0D7F046AC4C39F2F5A936752C8A8BBD │ │ │ │ │ -1849FFF2E98658AFC6460333E2C6C0D3A48E6DBA9907D247AF187F5A919F2B4E │ │ │ │ │ -CA8CDF511D316C822BAC9A0C57D16DB0C0BC4DE7F18725893729118B8FA525A8 │ │ │ │ │ -F08E9AB59E3C906003D98F0F6A1C789C021ACECDFBBBD424E6AC1CFA95826EA4 │ │ │ │ │ -A0821A560CEC4960989E6B83422C6CFAF315474F34AE7858BC04D6A44B41B20B │ │ │ │ │ -AF6E8BE7A6034F0B77F30018D27C96F3605C3D60067D4B832E041C4741DF7892 │ │ │ │ │ -10BE2B9F250E7AA84FC3BFB38EFEA692FD8427DB1B245BC4C0A575897A4A5C18 │ │ │ │ │ -A5534E78C8F2F0EEDAF53223D25D040FD304FCFF63661B4226D44FF7A9310EB7 │ │ │ │ │ -31E70A6AFC924C6C0ABB233BAB9E22E82F945413BC688D78E79E65AA10B84D88 │ │ │ │ │ -7F2A07D53D89CB9C4EF8928692402879AC50A455543A5C9B30D86DE16FDCD981 │ │ │ │ │ -7EFC1AA37AB75DF5CAAFC32CC952A52EBE205040BFB2C69239C5D6F42DFD5AA0 │ │ │ │ │ -B965A39FD5F6696082CA84D0EE30FA9095CB031D9F89B2A94DF03B1E6BC28C82 │ │ │ │ │ -176523E5DF212028E8C0D9436AB4BF3A9AB9B7B20B1282B27D73AF7429910C98 │ │ │ │ │ -82A723B26F8530278D0D7B78EF99D7ACAC3384D01F80873A8D4D0ADBB2248583 │ │ │ │ │ -BB6F55E81F07384C6CF961BB25267709720D4506F123DD01822ECE7FEF34511C │ │ │ │ │ -009C1A45105694F8B05EA183BDF846EC572399B4824C9E526183BE27D14800F6 │ │ │ │ │ -1B3C45DC2964E7DDEA32ED4BB47AE96F11539D218199619B1BE7DCACFABEEDF9 │ │ │ │ │ -C38A197738C60D15B0BACA859A197220BDD49A3B24E4EBD9228CB243711AFEF8 │ │ │ │ │ -6186550369A194FC8AA566CBB6B0AE9473FDE6C57DE479A2C2A5953B7AF63618 │ │ │ │ │ -49C153789F74C6CC969C3B7645B142349B742F │ │ │ │ │ +818321B3C46DB51B8EC6C2EF1D05C716519A3BD6B12A67239898F8A010CAF3C4 │ │ │ │ │ +3CEC6D934FF98D62D4BAA24109EDFB293663642DD966E8BDE3644BC9E155CC43 │ │ │ │ │ +3014C67190B375C6901951D834CA0A7E60531A96E5C205A44CC40B89F955587D │ │ │ │ │ +33D2C91AC8E0D399A606847AFE4255AAF9CC6FC726AA4A78C9C7311ED298510E │ │ │ │ │ +9150388333B674867E1B4B328D7C05CFBCE86DEF0D53F2CD95F54BF755984453 │ │ │ │ │ +A57999FAA7B061FD0ADDC3E87095D1708474C3BD3B2416157D0F0ADBEC7392E1 │ │ │ │ │ +9D81F3F0A636A5F02AC9E6D3FA4FDEAFE2E5D356ADEFFFFE6332D1080FC5BC97 │ │ │ │ │ +21317E218817EDF3811105E7B7E45CDBD296DB2E2CFC161CE74C7B0DC9C32225 │ │ │ │ │ +9638ABFA8155B5DC8DA9439E599BCE6123ED6542A3AB9FBE960A5A13B43DFD5A │ │ │ │ │ +1E3E0787AA2F284065753ECD6E4A5882873F3B962CBD56C0E664C3D1DB660FE6 │ │ │ │ │ +E333AB1111FCE0B946E872C84135FC80278FDEFFECFD89F072638358736F9640 │ │ │ │ │ +DA0C898DBA9442A008B652568910CD69409F3A5DCC7808A4FA18AB36EC9396F8 │ │ │ │ │ +AEA9B9E3A838DF0A05419121AC3FE8339BDC77493032F9E9CE0C0EE56CAD0810 │ │ │ │ │ +D9CBFB322D60B6391362D0BC91B1979FE53C4863744ABEC4EE8ACAB58A90C873 │ │ │ │ │ +F2812263A0C6DB7132C3E6CF323BE652BF7BF8D7E663DF6AA53043098CF84CFB │ │ │ │ │ +63DEFBDBA65C65B6E23211FB43B33BC61EA5C06DF4F24B247FD3F6F9707DF9F3 │ │ │ │ │ +E5D658414712967E4FD41CDD60D653346389372E502B09B6445B5DA093359229 │ │ │ │ │ +3CBCE877F9B5E8CD33D9A766CE95D66F439FDD3CC6BD539A6A526F1E0FD2EFA0 │ │ │ │ │ +07E1A66343B3D22162AC5871B73ADF7312E17B690B10204BEB2664ACEFB06043 │ │ │ │ │ +679D072FB314A693973BAABC7D676347A564B74C5662CC3DB11C56B4A782929B │ │ │ │ │ +BCF8470DB502B20D0D85F12022E48A0702ED31F171387DB4635652D772077788 │ │ │ │ │ +797A243F0D341E57E61A3EC93D0377211E319EC28D533BFB1932165BD0822A4C │ │ │ │ │ +18EBCC25033B853399E8F830989AFC187A2A3C22F3E91FA22576B00610265A0D │ │ │ │ │ +1CBB1B396E1796C7E0FE2B6A68797096D8D341A7860448A4892D8C091224D84B │ │ │ │ │ +BCF549C7C8EDA3A4D67F097973F51261BFD8EDCDE721A4F710410646E029769D │ │ │ │ │ +8376E6B1F1AD7FC38A2C6703FEBD8EACF97ADA22999C6CF76A6391610E371F14 │ │ │ │ │ +6A7A30CFDA7E1831E31EC1617A84FA0A063A6726ED0BBDC9F51A7CFB004C9770 │ │ │ │ │ +758D7DEA7EDCDA0F6F7ECC76BF346F48AFCC45B962A67731C7D5D8A5DA09DFE8 │ │ │ │ │ +4E159594A2AEF4B480FFF8C79110A9ADB5763AE7C8027E2C6CFACBBAA2D1704B │ │ │ │ │ +A0D4384DCCCE0D8AA116040CB572228A8F588657B0B1398BEEEB3FFD01A41394 │ │ │ │ │ +2F8AE1A2D3439DF17C1DEEA185B6538F85A13E6E7C3DD57BD7733E47E70AF593 │ │ │ │ │ +0F3D370F676949D5B778814689323598C0638A5A40084C4096AAF04DB39B776E │ │ │ │ │ +DFB3B11C601C3DD2857F5B15211103E5C8CEE96180578B8F93DA2882BD9C7299 │ │ │ │ │ +BF5C0276A5A4ED3CC7AD8587F4EDE6A3B34F2A641EA742442F1A9D41C4E353C5 │ │ │ │ │ +14DF0C51240E4B4409CD4CEE54C21E6FC89148D1BF51D6A8014CCA89BC56EF30 │ │ │ │ │ +06D3A5CD5556649C0574AAABBCD412F55E98F24A3B3E5BA69F84589805E42394 │ │ │ │ │ +9C4A12999800B43F18AF1C008028401CB36BC05E3E140CCDD1CA8315267E3855 │ │ │ │ │ +D0619B995C6490E7704DFC5B03EC1D13330199DC42CD23B53B735297794E2D71 │ │ │ │ │ +EDA5EE48944ABCD291019F527105AF12E7F6EADABAA0B5BEB8771783EE57753F │ │ │ │ │ +3474DF93C15F20B0959E5405941FC5F85C754D51F84FD4D9B1DCA3893CB69D0D │ │ │ │ │ +5599BE09FFC87D97722BE0972851BA1F13AF936A4FE663F9BE80F26BB191642A │ │ │ │ │ +9E9BB23DF0FFEBC108184F507923367D35EA5E31D542AC28D2577927E64B8064 │ │ │ │ │ +843B33C56F55EC0621EF028B8794E91F79C6ABD7C7CB6C3E3C3A49D01E757123 │ │ │ │ │ +36F2B7F99A2ED9A570AC43A04A3466B4509C8A0CDC20B019884C0915A5849CB4 │ │ │ │ │ +888A35303E689D9F5207999294BAA6E89121D6F0EA1D922B623728DF5BB9DDA7 │ │ │ │ │ +AB3D71CB6C331BA426060C36E8C20C31A88FE408D52EC7ED9EFFC1BA3ECCDF65 │ │ │ │ │ +A53E7E1DA9C249817997276727008EB58DDD562ECDF57C2C2D6325F09E9408E9 │ │ │ │ │ +51097DF9B88DF0CCA760E47582FD7DC2FEC3D9A0A28B2F555F8257D759EA0917 │ │ │ │ │ +6C4B9AEC2DA6D2B291E6524594ACE99B54C318E90CFAB72DCADE4C26046FA555 │ │ │ │ │ +84E87660D2DB78CA42CF22F35D71CA5AD1B5C695513F64108FE011885FFD55C0 │ │ │ │ │ +6179CC2D3EC16E8EC42B6119757C5DF77F0F1896616DF7F833B44C62ECDBF500 │ │ │ │ │ +8ED9AC84CC5969C1FE44AC8487E559BEA52E3F2F8B392063E2B4A9625E12577D │ │ │ │ │ +FFEDE3F4F4ECF696D03ADCEC7B4BD5872087544CBCE58B0F1FC376B4C8700EE3 │ │ │ │ │ +83B2762D3A8E766827C1FCC22AF831712233AA964A52D745AB85ED8141AAA789 │ │ │ │ │ +CBDD43B9A8EA96595CFC0CE6E74429A504D04476438E59B95F27243703F85867 │ │ │ │ │ +671B43375D63BDCA5988792EDA0DE71654E2C315CE4699AC89558B62C446B13F │ │ │ │ │ +481F5FB9AE1C01F5CBC21FE7393D32160FF8F640935EE5836BD595C008EE4C6F │ │ │ │ │ +FF6395B48BC1711B5852B7C81E7918645156C908E486A0EEBF3C91DC2DB2D772 │ │ │ │ │ +DBED0575082F7BBA626674B80CCE4E612469F7E1C7C5982A93AC5D3E82F03605 │ │ │ │ │ +58DFB1081B3D12117C4FFCBDDAAF177E657C5DA91D6059B77335019EE23DACFE │ │ │ │ │ +842C68CBB6FC00BA229AA4CBC2F93C2E35750E3D4FAE9360A5EEE2FC0B552863 │ │ │ │ │ +EA3D6D52CF61EE0CF0847163F4D14A3630A063654D87619D0E2286117480D35D │ │ │ │ │ +73610D66AFC3B17AB3C818946823C83A8A989B9831C2E8767413FFFAD2EDF1E0 │ │ │ │ │ +62B16314E8FA97FBC11297E5D9834C055577B0E0014111C49A7A18543826230A │ │ │ │ │ +ABDC5B86395F92212D1504F7F2C18425725BED33DC7B1862DB9D2F5F49BA1E5C │ │ │ │ │ +A65F318C93278BC35E915A1A17537EFC09B5DC80D03C01B232EB6CA1DDF5E7B7 │ │ │ │ │ +AF0F0CCE51D10E883BC968A5E8D12B26C1574DB7EC5DEE5E184B86D3FF041687 │ │ │ │ │ +9B862D5381F61DB138F38A457E70D96B48A3FDD10A365C19308DDE88B2191A05 │ │ │ │ │ +8029AAB717D98287A417AE40C8FA53F1279F3A446D4D5B77E7A92FA731AA5C09 │ │ │ │ │ +410D228FE310744B1958C1EED8B7079FF4EDEDB75F77660FDFAB467BBE807C01 │ │ │ │ │ +01952C81BFEB803A906AAE5BDF4AA784DC7094AC14F133E3AA30DB946E408FB8 │ │ │ │ │ +547FBCF8B7EBA2898AA7BBA7279E36B34019A96580B05A82462BE1BF655D3592 │ │ │ │ │ +929EA89565E14A57D13D6EC466AED276BE439337E3B6EB26A6D68AFD651BA640 │ │ │ │ │ +DFB68AB39F63E47AD3199EA7567280CF6AA73C8B49A6F4B371CDCDC742A20AAE │ │ │ │ │ +4DD72C3497793942BED4870F69BE8579D501A6D60C72813FD720FB6D9E1D79C5 │ │ │ │ │ +4487FFFBD7617AA8CE7AA0D37B9E6A8E3081AE9CF68D5B164B801F8802774B8F │ │ │ │ │ +7CAFF61922BA54D78CB926BC37991AAF1F1CC92A59DEEDA6E023035DCDA76361 │ │ │ │ │ +BB8251BBF53E066AF16FD09CF4F321174A67502EF849B6499AE619E40089EAAA │ │ │ │ │ +58D9853A17A08C95661D07C9D05D39B871726C2B4C70DF478CFD2069E6493250 │ │ │ │ │ +7CF64836F65B5EBE0FB685E130FBF4EBBD48E7E0A3D872E69CAE0AA7D1BA22DD │ │ │ │ │ +469E3CAD1300414EBDE806F59F75DF3A7AF98B6DAADF1B460E4CF940AFC17BA3 │ │ │ │ │ +9223378C2DC9579AE4F6CCA4A7DEF931F9EDCE11F8153880C7B6570ADECEECA1 │ │ │ │ │ +9A7AD6B2D2BC6E3329E7F6B3DACB58975F460873EF7B0905D4BC897DE799B9A8 │ │ │ │ │ +5C953C18666B212245C567BEC51A1FD70B3FA1B3BBBA9B8CA084A332A95D25E5 │ │ │ │ │ +8F2451DE0BC0EE102E37EE5D1C5BF4C0CE97351EBBD3C7BE31427A2AA95F4B95 │ │ │ │ │ +D3C58C6CD62E7746612E5927AED1015923E20B190D3BD19E1A76CEBFDF010DAF │ │ │ │ │ +93243EB97582F332B98952DE93426F7AA6F64DFFE985E96D457F865773DB8E92 │ │ │ │ │ +F034638AF120BAFAAA3DE9916751064F2E9E895094B2A06E64F27B0BD043F391 │ │ │ │ │ +1E878C2BF1EBD79AC1E289EAAD387CCD4265B68E2B11E6AC7AC6CA1AEF3FA7D6 │ │ │ │ │ +37174260A2DF58036A0FB42B96DF70FA5B8F68B1AA94CB59355570AD524C35E9 │ │ │ │ │ +423004A17BA0060136D7C391D7AB2CF7EDF4B15BC4016FE1715061F5CEBA3200 │ │ │ │ │ +F9E3268C8DC956C4B59B170D8D80448177D5412C1EC8F885E31F15DDFF1EE259 │ │ │ │ │ +12286F7D6DAD6744F069712B14B4E32E6D8B03121781BE73DDD362FC1AC6E140 │ │ │ │ │ +699C4E6FA5997E0CC80C4453D3521F0D475C9FECB04B479EA63CCC96F446D5C8 │ │ │ │ │ +C6021F6E7A72E09628C2A8901384AFF0E692FF04CBAFFE621ECA38895D5439D7 │ │ │ │ │ +5295642493F2C5932273E3D6BFE96DD53A46D75019A0300C68D5CD5961F80624 │ │ │ │ │ +1BB795DBB7F7DF3ED1F11366255C41412E2B446CC680621089324DBA3554F968 │ │ │ │ │ +ACCD3A426B9C73E15543CC90E7C930DD34CB622A67D2F5A6F86FFB00EC5A72A6 │ │ │ │ │ +3608806CC84283B38C77C10ADDE66FCE8106CD1FAA03968DA1643E2F55739E96 │ │ │ │ │ +B231084B33E6B9734360B7AFE956565F11D36DC5FB6B3F9C088C9A7B0DD16770 │ │ │ │ │ +7847FE960006F9C6330AABE6E2AC371B25B0E2CD5CD28A9B0E49DD0A6B772A1E │ │ │ │ │ +4A330E3A85E0F2A3FCCB6F3C4C13D577B3A69AFD766FD1C5E3BE53C9D18C053A │ │ │ │ │ +112E873F3878B06C71482AE0F01C6A6C1F554FD4170AA81775B4D9A079859185 │ │ │ │ │ +B4CAEC0B2BBE05C797F71C4D4627CFA714C9D351835359D35DDBE9CFAC8119DE │ │ │ │ │ +C17184BC634C52D7A246F1030ECA5164E9E4158E8B61BB316CAA806CF1A14F2F │ │ │ │ │ +9FA272F6C896305FD001ADF0AE12A4758AD4B7284769802A795E479ED06610D2 │ │ │ │ │ +EBBC139D423E1441B49FD0C7637451A1D5694EBF5EA8703C0E35B8C4B1B2637B │ │ │ │ │ +E4D5FBD62F3CACBA6F6FAE63526D72A4122A2A3817E595444D82C4C25A4788F9 │ │ │ │ │ +F50E09AD0996BC643F88AB968CA18D1BA6F29345FCD1CA20563CFBA5779CA10D │ │ │ │ │ +883F3E6490B5227C31E509F4884AF0114978F87B511A99C7D142EECAFB461F1E │ │ │ │ │ +F9E924FDAACFACA247A008416EFA08B285664D1C64461E24EA0227C4129D2A3F │ │ │ │ │ +CF152BD34E12FD0F58372C5BFD824C4115017AD128D31B772245FF1BA412B8E4 │ │ │ │ │ +70F153986E66F141A3119D497C72EFFF4BD8253002509A6926C287A17CCE7573 │ │ │ │ │ +FDFCAB169C0A71AFF2339551AEE40FB99F7BC5996A27BA0258490B39FC8640B5 │ │ │ │ │ +C40CF76B76956051E2599F36A57EEAF6E4D23FD0948A307FCD1876E9C0984A52 │ │ │ │ │ +7C8399E14C8336382BA47CA78070A92FD9D6A970A16A425EB25D11C9EA834089 │ │ │ │ │ +F0B5769BF5CC38E61CA6D969A2DC86CD0A26EA200329832060BAB1FDE5E8E297 │ │ │ │ │ +23012C4A5A553726C3F0CE7D1CF38A0F93F8CDC35884123A3C8239C94F5CA74E │ │ │ │ │ +7EB32FBB0A48605CC79B7D7372D3BAE2481EB84BB2C53DBF6940437A1128189E │ │ │ │ │ +5CB0919C55F1186A7D582A8B82F5D09DEEB66125978E8B3578B9E5ED3FA05669 │ │ │ │ │ +EBEFF97C8EF3246A3908F5C230E344C6F961AF7E07D4C045A0E3F4A3548893E8 │ │ │ │ │ +900180C984E5C9833D1296ED9C8266F6B0F407371BE599C080DF551806B5F59A │ │ │ │ │ +E84B4DBD6C07AA1690EEF0B9849E01BD040386EDE56AD2CDD82E584099C2EC0F │ │ │ │ │ +04755E2169755DCBDDCA1A4CDAB273517D6F120FAF431A774E09B309645343DB │ │ │ │ │ +6EAE4A3734331E0A0BDF6FBF372799B24731FCB46B7A60431F5887548C816F37 │ │ │ │ │ +CC9E0240D05A62E776541B4F79EBA9D10791EA0BD5B7B731EDC58E8DF8DB6AA3 │ │ │ │ │ +8A07BD001E874EE1A79343060D79DC3EE65ED4E8E1CF194AC34EB3659B9F816D │ │ │ │ │ +352E411CEEC2226836B4301669675B8DD23A37E8ECDE6EFDF60AC926D4923912 │ │ │ │ │ +3441D7E80732C191C587E13686F297405E04176CEE1F60D573DFA3FE497B7773 │ │ │ │ │ +6A74AD41252AD59BC58C54C428E388BE7F8A3CC0AAB891E00943B3C9B3A5ED0A │ │ │ │ │ +37E216B6CAC11F894768629283DB26E09722FD68DF475DFAD0158A35FFC798CE │ │ │ │ │ +3E57EA1835990AFA714A99A734A237145881F4131954501042F72F4EA5148937 │ │ │ │ │ +9456DF47517C053EA2EF3B5F23FC694F0E0B16A9C31DE34FCE8BBCC01F92F819 │ │ │ │ │ +4EAF2224F0C87186BD358CD83E7FDC1F5BB1F847672CA788123F8A80178ECDFA │ │ │ │ │ +CB83EA58A4F104D09E20D2BA5CD2EA6AA341E328CA889F25D71D2586CD334A68 │ │ │ │ │ +1705761FD57ED45C50DF793FD988115138A1CE8F20EE082C4349DA1F6AF04D94 │ │ │ │ │ +27923DCCCB1B799B96B28C3F4582F486BF82F726230DA2FA676BC6A3194F88F7 │ │ │ │ │ +B00A087794729014B91C2F1A8D34B171387F784BAD49DC08BA414CA03E66EAAA │ │ │ │ │ +B787E18E401D5D2263CF7D7DEBB7F1C3C79DA5966F7A80ABDAAD26D8D82EB4FB │ │ │ │ │ +3F109B14FD5BBD7612BE3BB43B2132435EE01FF14DDB474B032299659865D614 │ │ │ │ │ +3461AC5897F00C60E2C6FE63100012413FC9CD76DCE68C373063E94461238515 │ │ │ │ │ +1F1E197CE200A2C94CC1EAC67FBFB130BCF5A8F2EB42217FA9971339E2A29BEB │ │ │ │ │ +B749F3B66A8161DE3469E386BF347F063DFF0F24585956A51EC711E37DAA957D │ │ │ │ │ +6C41B918F0F23BA3871FA5B557CE282E5ED91827D2D7BFEA5E271CAB80A31B1B │ │ │ │ │ +ED32722E3C2553A4594A0566E59F736A9CAF963D8F9573CD2710316A25A443A8 │ │ │ │ │ +0DF498133FC1E61911CDDBD002FDDE7D0B2590F013E69F31185DE64E7049C923 │ │ │ │ │ +045683D7635C3435EF980895B7E9089E011DC44AA8689FECF951D60721E1190F │ │ │ │ │ +516B1544225B50FB5BF7A9DDA614417BAD2EC2542FEF64100E9D631FD14AA443 │ │ │ │ │ +A9A34E2BE90E8737D76949FA5C26F6F918A438389EADAD42EA659C24098088BE │ │ │ │ │ +344112EEB76143189EBC301E431C9BD98C816624E1D283EC52AD86DC27C17F6B │ │ │ │ │ +CB597A36C0C26CB9C4F96389663AC09F92E5B3B24C3153CA5CB8F5C37871E588 │ │ │ │ │ +F99CFCF43E0562EA25820A0E01F3A78672690304D1BAEF96D626BEDD10B22949 │ │ │ │ │ +3B35F6193AD7A8A29C45499C405B8E8647E9DF5AB13208B6D77E267CE48D43A3 │ │ │ │ │ +3ACBBEED482B5F4769A133A191955EB0E29605D7B98FA096A344869302E70521 │ │ │ │ │ +817D47EA94E05F1C715CF0A5712FD9BD7AC548312E366C8DF4AFF05F674CE413 │ │ │ │ │ +CBBDFE7307EADDD7D1AC2FF7FE6B8FB72154898DB85A319933AEE7B897F10766 │ │ │ │ │ +2E12839B4AAEBDEFA606515FFE39B09C2BFE9A410833FE1E811AB7B45B285CFC │ │ │ │ │ +FA91FE857850A968B5048F8CE7741598CEB4A15DFC474982379ED85354D757E6 │ │ │ │ │ +7F10233EF0D6343DC60550D18512B7D40639BCB5FD884EC16265C279B4A172D8 │ │ │ │ │ +1A27799B72D0005775941FF3F85C7742609F4009101035582259462BCB6B3B99 │ │ │ │ │ +7CA2A77D0B2A88BF050BABD9AE6599099CAE6AD022C9EB1B385CFD79B8DD9DAC │ │ │ │ │ +7D98B6B1A4EEFD5CD4215A50F38F363DEB8EA71E2968C03F6D753804B1D00E91 │ │ │ │ │ +F6D4EEA5DA7318457F729D1D9512FED31B7CE5C8EDB9449FCA6B4F3435F50DFB │ │ │ │ │ +BFC564FAB9E6E802AEB016F8D9A2F7B50C6AB3F09CE9842C704BFF5775CB8509 │ │ │ │ │ +82F6088839C8EDAEB0B58776AC791CB347533EA7F279C4D3637419A11665518A │ │ │ │ │ +24AC265E4DEE8B57170293B5DE128F3EF0C6C18C151B9480049E5EEA711C6241 │ │ │ │ │ +03512EDDA3249B54B8B5522D7DEA2306BC87263BA2F1C7939B35B2E2B853911C │ │ │ │ │ +5B335FF4D1C69C5F2E5E15FCF19D5509A47EDA03D47C85987F0D8CB77F2840C8 │ │ │ │ │ +B282581FD2A6E894441C9076FC7BC0554EBFD6E6468B2528BE24136D0E7CBDD8 │ │ │ │ │ +73F8151BAC910DEF88B6591EA21264CB08022C9FCC7E309F620B895FFF45A2F1 │ │ │ │ │ +659A5AC355C8670EB659F2EA6FECEBBB700978701D760D3413BFE93504795116 │ │ │ │ │ +A41459D490797A5BAA16FE30CA98835FF24FE3CA1AB22A7F4E371CCB26438E2E │ │ │ │ │ +673D8040ABD8 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -4966,16 +4980,16 @@ │ │ │ │ │ 1[52 60 1[70 48 2[28 58 60 2[59 55 54 58 7[38 38 38 38 │ │ │ │ │ 38 38 38 38 38 38 1[21 26 21 44[{}51 74.7198 /CMR9 rf │ │ │ │ │ /Fg 203[30 30 30 30 49[{}4 49.8132 /CMR6 rf /Fh 133[31 │ │ │ │ │ 37 1[51 37 39 27 28 28 37 39 35 39 59 20 1[22 20 39 35 │ │ │ │ │ 22 31 39 31 39 35 12[51 39 52 1[48 2[65 3[25 53 3[54 │ │ │ │ │ 51 50 53 7[35 2[35 35 35 35 35 35 35 1[20 24 45[{}45 │ │ │ │ │ 66.4176 /CMR8 rf /Fi 134[51 2[51 54 38 38 38 2[49 54 │ │ │ │ │ -1[27 2[27 54 1[30 43 54 43 1[49 9[100 6[66 4[76 50 5[75 │ │ │ │ │ -70 1[73 10[49 1[49 1[49 49 49 1[27 1[27 44[{}30 99.6264 │ │ │ │ │ +1[27 2[27 54 1[30 43 54 43 54 49 9[100 6[66 4[76 50 3[64 │ │ │ │ │ +1[75 70 1[73 8[49 2[49 2[49 49 49 1[27 1[27 44[{}32 99.6264 │ │ │ │ │ /CMR12 rf /Fj 172[90 2[110 121 2[97 6[106 69[{}5 143.462 │ │ │ │ │ /CMBX12 rf /Fk 134[70 1[96 70 73 51 52 51 70 73 66 73 │ │ │ │ │ 111 36 1[40 36 73 66 40 58 73 58 73 66 12[96 73 98 2[103 │ │ │ │ │ 1[122 83 6[90 3[99 6[36 7[66 3[36 1[36 44[{}35 143.462 │ │ │ │ │ /CMR17 rf end │ │ │ │ │ %%EndProlog │ │ │ │ │ %%BeginSetup │ │ │ │ │ @@ -4993,18 +5007,18 @@ │ │ │ │ │ TeXDict begin 1 0 bop 407 1704 a Fk(The)44 b(Reference)g(Man)l(ual)f │ │ │ │ │ (for)g Fj(SPOOLES)p Fk(,)g(Release)g(2.2:)518 1886 y(An)h(Ob)7 │ │ │ │ │ b(ject)44 b(Orien)l(ted)h(Soft)l(w)l(are)e(Library)f(for)g(Solving)920 │ │ │ │ │ 2069 y(Sparse)h(Linear)g(Systems)f(of)h(Equations)375 │ │ │ │ │ 2459 y Fi(Clev)m(e)35 b(Ashcraft)1004 2423 y Fh(1)1297 │ │ │ │ │ 2459 y Fi(Daniel)d(Pierce)1864 2423 y Fh(2)2158 2459 │ │ │ │ │ y Fi(Da)m(vid)g(K.)h(W)-8 b(ah)2774 2423 y Fh(3)3066 │ │ │ │ │ -2459 y Fi(Jason)33 b(W)-8 b(u)3485 2423 y Fh(4)1586 2725 │ │ │ │ │ -y Fi(Jan)m(uary)34 b(16,)e(2024)104 4280 y Fg(1)138 4312 │ │ │ │ │ -y Ff(Bo)r(eing)70 b(Shared)d(Services)i(Group,)79 b(P)-6 │ │ │ │ │ -b(.)68 b(O.)g(Bo)n(x)g(24346,)81 b(Mail)70 b(Stop)d(7L-22,)80 │ │ │ │ │ +2459 y Fi(Jason)33 b(W)-8 b(u)3485 2423 y Fh(4)1566 2725 │ │ │ │ │ +y Fi(F)g(ebruary)33 b(18,)f(2025)104 4280 y Fg(1)138 │ │ │ │ │ +4312 y Ff(Bo)r(eing)70 b(Shared)d(Services)i(Group,)79 │ │ │ │ │ +b(P)-6 b(.)68 b(O.)g(Bo)n(x)g(24346,)81 b(Mail)70 b(Stop)d(7L-22,)80 │ │ │ │ │ b(Seattle,)f(W)-6 b(ashington)69 b(98124,)0 4403 y Fe │ │ │ │ │ (cleve.ashcraft@boeing.com)p Ff(.)64 b(This)34 b(researc)n(h)g(w)n(as)h │ │ │ │ │ (supp)r(orted)d(in)i(part)f(b)n(y)g(the)g(D)n(ARP)-6 │ │ │ │ │ b(A)31 b(Con)n(tract)k(D)n(ABT63-95-C-0122)0 4494 y(and)25 │ │ │ │ │ b(the)h(DoD)f(High)g(P)n(erformance)j(Computing)e(Mo)r(dernization)h │ │ │ │ │ (Program)g(Common)f(HPC)g(Soft)n(w)n(are)h(Supp)r(ort)e(Initiativ)n(e.) │ │ │ │ │ 104 4554 y Fg(2)138 4585 y Ff(Bo)r(eing)70 b(Shared)d(Services)i │ │ │ │ │ ├── ps2ascii {} │ │ │ │ │ │ @@ -1,13 +1,13 @@ │ │ │ │ │ │ The Reference Manual for SPOOLES, Release 2.2: │ │ │ │ │ │ An Object Oriented Software Library for Solving │ │ │ │ │ │ Sparse Linear Systems of Equations │ │ │ │ │ │ 1 2 3 4 │ │ │ │ │ │ Cleve Ashcraft Daniel Pierce David K. Wah Jason Wu │ │ │ │ │ │ - January 16, 2024 │ │ │ │ │ │ + February 18, 2025 │ │ │ │ │ │ 1Boeing Shared Services Group, P. O. Box 24346, Mail Stop 7L-22, Seattle, Washington 98124, │ │ │ │ │ │ cleve.ashcraft@boeing.com. This research was supported in part by the DARPA Contract DABT63-95-C-0122 │ │ │ │ │ │ and the DoD High Performance Computing Modernization Program Common HPC Software Support Initiative. │ │ │ │ │ │ 2Boeing Shared Services Group, P. O. Box 24346, Mail Stop 7L-22, Seattle, Washington 98124, │ │ │ │ │ │ dpierce@redwood.rt.cs.boeing.com. This research was supported in part by the DARPA Contract DABT63- │ │ │ │ │ │ 95-C-0122 and the DoD High Performance Computing Modernization Program Common HPC Software Support │ │ │ │ │ │ Initiative. │ │ │ ├── ./usr/share/doc/spooles-doc/SemiImplMtx.ps.gz │ │ │ │ ├── SemiImplMtx.ps │ │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ │ %%EndComments │ │ │ │ │ %%BeginDefaults │ │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ │ %%EndDefaults │ │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ │ %DVIPSCommandLine: dvips main -o SemiImplMtx.ps │ │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ │ -%DVIPSSource: TeX output 2024.01.16:2047 │ │ │ │ │ +%DVIPSSource: TeX output 2025.02.18:0318 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -1201,20 +1201,21 @@ │ │ │ │ │ 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 52 /four put │ │ │ │ │ -dup 54 /six put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ +dup 56 /eight put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 74 /J put │ │ │ │ │ +dup 70 /F put │ │ │ │ │ dup 97 /a put │ │ │ │ │ -dup 110 /n put │ │ │ │ │ +dup 98 /b put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ dup 114 /r put │ │ │ │ │ dup 117 /u put │ │ │ │ │ dup 121 /y put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ @@ -1398,89 +1399,93 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ │ -C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ │ -6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ │ -11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ │ -1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ │ -A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ │ -F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ │ -EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ │ -033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ │ -A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ │ -468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8A71FF9C085003EBB4F4 │ │ │ │ │ -3D271F5B16B1AAD3EBDC391F534AA46E545E9D8659DD19B309C3B7625A8396FA │ │ │ │ │ -2519464539D46E43ACB72952313C8497315E0319C08628023E8FC54D7D3BAC29 │ │ │ │ │ -D5AD8EFDABF0C33C7AFB7151A6606C62A87F0F5F783569AC4C881A992E3FE420 │ │ │ │ │ -297F7BC5147F3B2FA98450D2F8B07F7D229BC8BE06729920CFEC22556740E1CB │ │ │ │ │ -3DE09AC763C6D4A20AD1599C368FABD07BC35C16683F2A0311A88983415A9140 │ │ │ │ │ -2EFC4BC1B10DCAD4B2B8A28510E5BD39D6616D2B9B079ED3CF9C315B7DEC29D9 │ │ │ │ │ -251DFD0194B34EC175964C23383F23FFB2E41B698C405815D65EAFF9E9DD1DDE │ │ │ │ │ -30F77924656C288B8DDB2E5B0E7B1FAA66791DE3848EE6DE63AD0E945E49C6C7 │ │ │ │ │ -9FCA16E01F027F9EF7ACB55F02F5B0136480802F789F6FE14B430879979BA04D │ │ │ │ │ -F481AD4CF47E6847936F377FB04869F9A80E597301BFCAB718D8764094673876 │ │ │ │ │ -BCEF8FA3701608C84B3A0399A11D2E6AD922CCB7D72AF9EBFB30F4648A37A123 │ │ │ │ │ -CB8FB14BDC351692CF0CCAA5CA9383C2B23BAAA38700327EB743FBBE9EE04041 │ │ │ │ │ -13F5CEF4B3881BBC051C33369A82B3505B1CFD7D91AEF2E43EA728EE48E2D854 │ │ │ │ │ -5A7E516998ACDD4FD835FA901C5A21810A56D51FE919B2E58408EEB4DAEB487F │ │ │ │ │ -BA7F1D292CED902DF3533566D96DAD918319EA650D4FC7D9E0170CDE620F755B │ │ │ │ │ -0E7AE02D9B118481B26F5FF7060FBCFA2A682B6826F00679BCDA68794C05286D │ │ │ │ │ -B616DD08372ACDE0AE6E7EF116F0D36F16241ED4F0E8CCD80377792E3BB1343C │ │ │ │ │ -EEB22CC77738F7CBCBA32CF6C3979F6DF7ED81A89AE8928FD7CC550F2730BA88 │ │ │ │ │ -1B51CEDC63F4C47F261AFCAB7AC3CED20B15C97E714A460A1A3B16436B4A5149 │ │ │ │ │ -8F91DA4BE0B9B648534CE5F442117036B602DC91E2852BEA62F55803B833FDF7 │ │ │ │ │ -9F901AB87489E703DDEED1091A79DC73B4440BBBF2C7592B441187C4A3562204 │ │ │ │ │ -859F08BA3CE2A8ECCD5AAD13C50FB806FE79A388F1822C5608837CBDE526A044 │ │ │ │ │ -12E5CDE4A066932AF2ACA7E8FC6BA4603640944718752975B7DA6E906BE1EA01 │ │ │ │ │ -46736FF5D1AA1CC682D011B6039CF98C35E36D4F14ABC84A38B7203CC9A17756 │ │ │ │ │ -B2B0345276798F1A88A54AD9FEA0853C6DDF28525ED4F0B7380D14147012C2A4 │ │ │ │ │ -5B02888C986C76497EA4C729B0B82EE73C1A1A8E8F1ABF401E341028E9C15AF9 │ │ │ │ │ -354706D8DC07492921AD0932A46736C0D1B066D00287DACCC068FAE6A796EC89 │ │ │ │ │ -54D1D73AA88F3A5912BA9D3FF70065C8D0D0DAD1CD846501E06694374EFDBEC6 │ │ │ │ │ -931F644D5E8494AFC742423AD9A487658E310E0682BE19B8475F4D450487A686 │ │ │ │ │ -2B94494DEAF1C0F59DE82F2CE64BEE5E97F942FCFA1187ED6AA5761E951A7BF7 │ │ │ │ │ -9F842E34A4656C58B35A9E99F7E6762CEE11E0CF59FFD75D7382C5EE6DBB43F1 │ │ │ │ │ -ED219071D3FB22DBA90977723BB467C0490D042684C0724F40DCA3E0D8F1F4E7 │ │ │ │ │ -3C4F9A67BE6528185EAAFDD415224F7E256A4EA00111C17C746CBD80BF569A27 │ │ │ │ │ -D81195D7F79C1CCEEF30ED00D49F48B63E4B8D7953403A3710AE953CC1B76F0F │ │ │ │ │ -F523D777A6A186F262A602543F94AF7471DBE25FEBC207DB42DAF7DC9A5781FB │ │ │ │ │ -2131AD42869D966A734AAE3466DF1CE9D1BCFA72409A558C0AEE6A8E2FEAACB6 │ │ │ │ │ -2CDABCC28433034848ACF9FB4465D272E4AFC48572647F05F41C7A293CC5B595 │ │ │ │ │ -AD31555FB708A72962707348BC7033A8224BD42EB9D75FDF3AE9E6A9C960B330 │ │ │ │ │ -5137DF59F8E2E0D535F41524ABDF070745A4FA25CD8DFD38A5FF30A95452B875 │ │ │ │ │ -6569E8812631300D79A942C563AF174AC05C9F2D09D7D5D3C605F5A6B7F21B34 │ │ │ │ │ -18F270A993B050838E701A17938D1C156CBA7CA4BAC7C562CE9D7B758EAB25A9 │ │ │ │ │ -A6DFFC71F65561341847B776DF34061CE3D439B87B857626987EC93B3B95B8E8 │ │ │ │ │ -76FFB16B263675333FA10414FEED707FF7C366BF8B20FF8577CDEBEBCF1A5BCE │ │ │ │ │ -258C09C90175A5278B7C444A623E3331FDE5A6387B3E389540ED1E7E883958F3 │ │ │ │ │ -3A5C89CCD62256FA069DF4A5090FB17C1F1757C9209DAFB8A1F47182BF3E88D9 │ │ │ │ │ -0B5376B59EE165A761902759C8ED7F5AD301E7EB8B49CC09AF921DB45B7F8002 │ │ │ │ │ -AB32E73AAE53942DE0F9175D8446017006C9C0B93EF39C13B7A879F2F6DDFF16 │ │ │ │ │ -204BB24F976847CF006FD29332FCCB255B5116F7077A44F7066C39C81DC4BAD2 │ │ │ │ │ -40DB2753626C0102E5D047522ABC38EA294A699B8DFD9CA0A7980561A1062E90 │ │ │ │ │ -AB11EE286A9C238D9F721D9980D0A1828C2814972622D948CEE8C812C19A9A03 │ │ │ │ │ -608ED0AC138A436FFBF8BE3D1E66C87793416AF38ED9BC5424568A175FBDAA9E │ │ │ │ │ -D6FC11A7021693819B051562B5A59F32629E2D6019D69DD329BE1894A2B295E1 │ │ │ │ │ -1DCE9683B29AE126C56F26E5C595BF1A8249BDE231DBE8B066F7F62EF149B975 │ │ │ │ │ -A863969A4690504A5EA064721DA909B8157C0B39FBF8228D95CB655E406161E1 │ │ │ │ │ -148610FAEED7C5509880223C06A66DA19E10F94DC2DB481B26 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004FD597ED │ │ │ │ │ +EFDBC64ABD9B79386FB2427D1A63522195B1239C09F8CB3F8BD7A245A6DD82E3 │ │ │ │ │ +260C3889587626DFC5F7978E55F5524ABD6A3319CDD3D3F40D040044D51DA4E1 │ │ │ │ │ +6797EEAC7AA07C77EC6DB0E6E182B545A8BEF63B14F3FC07BAC09E7CD5C17ED6 │ │ │ │ │ +10080704B0DA4E9BA12F968DF8A58458D17E9A5B1F14A83DC51F5B161ADEE1CC │ │ │ │ │ +0183D82ED92C6FC7203C289949EDF0284D9893029FF5408E421324625F17C3E5 │ │ │ │ │ +2437C8F75A9D68EE1AF9174FEA6FC6BF793C7D2E497EA90396CF1A645E283B69 │ │ │ │ │ +8425F47C323587DF91E1D596DCB1E3A787C955D9D965A5E3E26ADF58B62AD5F9 │ │ │ │ │ +0C9AC784DE479780606354111E3202F215650DBBE1063A46F3C10B9EBC974DDA │ │ │ │ │ +A1A28DBBD43E9E5BFF000B12C787D0427928078F8EC5FE90DED97E6C129E8DEA │ │ │ │ │ +51F66504DB83764E52B0BA68DF7BE684C8959CB1D3345CC48221A9A4683306C0 │ │ │ │ │ +62B634E0A539383F0C7A788D9711EFF414869CCC5659D78CEBE009BF2463F56A │ │ │ │ │ +0ADC993348FE96DF7C250E13ED6504AACFE8F8DCA2D2048D9D8CFA127D363EAC │ │ │ │ │ +1F0630E2D1B621E6954038195D965B91FD974FA3F1B8B29D200A16CEBA645E2F │ │ │ │ │ +CEEE6FD49FBBD49E38AE67D4BFFCE91F1FC422554EC4409C5FA18D40FCD6D9B3 │ │ │ │ │ +2185ED1E0F98106D4339F086B05CA36E56EC22C60E2CE23F9C4CC403ACAD3F94 │ │ │ │ │ +4086B4DF6DFA0B7B4716417263E7B558535566AED2F6C2F9846A16D71A7930A7 │ │ │ │ │ +49232D3D16C4A01CF1A1998A06F40062ED329179A85668537C55D0BC24FC0010 │ │ │ │ │ +54DA83E2FC66B2A5D428E6A9BFC983253668C0ECE6CA36DBF97C4B7659D50842 │ │ │ │ │ +C65B36604840EEDA399B57E2DEFAC3E7FB031634CE33D04238F9854D2AAAF448 │ │ │ │ │ +34DA5F3BCCED3166FEEE82BB0BBA0A397CC2F95865CB52AABFF454D93B425809 │ │ │ │ │ +A26AC459F321FD23E2262FE816D06BAAECF32AAF167F84799AF80F9F88388D07 │ │ │ │ │ +0DB5FD57AFEE2850A8DFE977E6AE39CB3DC16DB1A163A583C86C6F775CE33521 │ │ │ │ │ +0081C0BBBAD6D30D26C66B28B38CEAC78FEA5FB3CC5853656B67C6D9D80EB30E │ │ │ │ │ +397558C9179AF5920F34DAB3F578DFCF0DBB137AED17D6325C23883E69EE4621 │ │ │ │ │ +34355A70C19EA68891E1CA937376901C85CDEE109F1665943E29A216DC00937A │ │ │ │ │ +B983A729A4654AD09187C0242D52FA4ADD0853EF4888864914D7D81C56578DD4 │ │ │ │ │ +3B51907032022E6E412D4F114675DEDCA8A9E85DC03A0B583FECD84432D15F70 │ │ │ │ │ +01F627BD6EC91F9FCFDA01BF40E1229B5F164309DBB641AD50970503DA2048C1 │ │ │ │ │ +DF8F36E8D252EE113F0B46677D9BAF376BAE18D74CFB0DBBD0C7E9D0A58BA3ED │ │ │ │ │ +1E5099CAE073EB5638617760AB57849893764EA9735173CD1EAB66884CEA7EE3 │ │ │ │ │ +8843327B2E145BD6FBB49102776B82BC511D109F8BE9E7E99DADABABEDC3CFD9 │ │ │ │ │ +393578FFD85907DFF2849E4CDE6FA4DEC7E1C150EBE4047FFB650F9548BE6D11 │ │ │ │ │ +0C51226A5436F18BF20A02E0F888F46B6AC3A8E8D927ECD3B5E095933AD3859F │ │ │ │ │ +5167C41D832EFCC4093BD2AFA7101AB430E57DAFC3590F05D3CBABB32BC203A0 │ │ │ │ │ +467B23BDB830487C9AA5B85BAC065F8538871B4180F8C4732E637DB090CFDE5A │ │ │ │ │ +3F4F2B5BFAFB848BAAD1A17CB076B34159601639BD93ECAB1214ACABF2C67FE2 │ │ │ │ │ +0658AA20B08681070FF56F1CC52144ABA8765D6E124D1CEA9BBA102808CE1BB2 │ │ │ │ │ +5EDF46BC7BBC2A5B49EE6EC28F5797A3969B057B21FCDBBD0E60848FF14F6CA3 │ │ │ │ │ +70F3060BDBB019B22722C99C7691760F013763B7FBEB62830AE215F195BF9F01 │ │ │ │ │ +21BF4377397E89574CFA47D123AA506A570A77BA6EB4AAB0B237A26154880293 │ │ │ │ │ +3952F832F72ECCB024F02385E5EE8566B165904B594E30D0700D033C6B429F6F │ │ │ │ │ +2A20BC774F442BC9CE29FCC81807C2768A8BC927A215558FBF36DC53F477F04A │ │ │ │ │ +41DA66E1A85B659EB761230977EAD7DA0150513D3323B143D4E2A61BCF03334C │ │ │ │ │ +C0EE3E1B06CFAF58ECC910BD81F0352B75FF1594D6A4EF504232D442174BE766 │ │ │ │ │ +0F8E703F97E21D25D4CD097549C31FEE7017C3916EFB02E7BF869172889827B6 │ │ │ │ │ +A48465EB7612BA3DBC6A9436C7167F149A25CE9F8E3F4F8DE3B5ADF6C0986CB3 │ │ │ │ │ +3A7E2DAB44AB489796461536F5F713017F2620AD03295CAE9285F08974AE0DF8 │ │ │ │ │ +D739260929619B509491AFF09C4CAEF9E65C2CA69470C907ECBF3AB6C955360D │ │ │ │ │ +05ABAC306DB51122A1ADC7EF0DD70FA299A45C505A83727D4598C86319EE9C06 │ │ │ │ │ +7218EFD4F40388354BCF1B79593D5AD221DF955D081F99F880E5CED07321AB3E │ │ │ │ │ +A2FCB8B05D54807D8E15E65B78DCE12989B9276350080C905DBB74CE9AA7E246 │ │ │ │ │ +5D3BAED292C562D4CF54617FCC6654496C7996D1ECE1EFF9258716AB763A12E6 │ │ │ │ │ +316E4C5587351A6DB011F58F6A15BC28BEBDC3836E0CB892807FEC228DC1B380 │ │ │ │ │ +92F7F42279F08D60F13D6A4CB425543C3644461461CBF6F27B6603F613D1FCF8 │ │ │ │ │ +A8410AD82D1498166AEB35D4125D7E2ADEAAB18BC04806AED53513F066E5F154 │ │ │ │ │ +3E13E863C50B9814EE2FB978D0D24A03FAF650CB6E2CADF1E6BE6BAF699AFC03 │ │ │ │ │ +E1A0EEB207B3B9A689ED5B373FE86686AD230BE6C18E1673DDA50E224B343EC5 │ │ │ │ │ +903BA0C8041C13607B50D5852AC7970B15C244E6EBA7D54B3086312CF04761D6 │ │ │ │ │ +7D3D75D51F20C371494AB81AB4A9838B20B483B851D01FEF41EA5C0B4755B964 │ │ │ │ │ +EB6E9B178051C556A010994EB88EAE641F4C1A0D7E0F98D5267E18AEF1AEA7E7 │ │ │ │ │ +9030A97DF89AFF621981C33B645FFB5F3BB2065A7661D11B26E0999561DF3580 │ │ │ │ │ +4A76A05DFAF8085525F8D5C01936F03C32E26E72569371C9EA3B8916F9DFC5FC │ │ │ │ │ +6A6F25A0FFDB981BA8B896393D75774D50828E6ADE903C45406E354703A4BC56 │ │ │ │ │ +2C49A47FEAC970DC433E3050C49F7FB945A9705BD8852D2D65D935F244D3B423 │ │ │ │ │ +EFAB84AAAAB8FBAFF50AFF372A533BCCEB5FC273DBADCF715776DF02A5DCBA9A │ │ │ │ │ +FBF265FAB4745D6475B33611EEE1EA95E7584E0BEEC7CA789AA69C8D03D6F8C0 │ │ │ │ │ +5B6844E2B901ACA560C0433B053D134866E567425174E47173679AAD4486A2D3 │ │ │ │ │ +369C29E4DD2CD6ACA1BE80ED8FF0A9C58A616D26E758BD8E6342624EC83FB590 │ │ │ │ │ +BD354B52B60BB054FAFE9AC63E1564FBC721FE8F276B0413EC89A2C85E5ED1B0 │ │ │ │ │ +3A9D83BE62A4488ADE7CE69971A8AF7E5862A4290EEF6F00D4171C7FFB360065 │ │ │ │ │ +92E72BF02BE27161AE0BB5516572A0BDC4F316FFB24B38484AC8D1FD4CD86062 │ │ │ │ │ +A2B5D03CF28C3A679C039A6EFDD4C9DA7E463AD60234C9F6BBEE48D87DD94D85 │ │ │ │ │ +842F495F3E25723718682CE4D6224CBBF4456F03077EDF736D65B9DDAB09470E │ │ │ │ │ +17742D82011FFA96BFE86B96E858F9352FCD20C3D46B77DBDEE54336EC2249EA │ │ │ │ │ +211F6DFFF5BEA1E5192BE1BAC0BDD5EDDB3D56C6F7C6E543561A0B39E5C1B04F │ │ │ │ │ +C683A7516B6E69D682455386DDA709929D621FA434D403E895AA0A77DBE1DFD2 │ │ │ │ │ +0D060DF82378880147ED97C6E8149686FA048710B113760AC1DA4512FF8556B3 │ │ │ │ │ +16E2447485B8C3CD58D0469C4A45FFB4CB0322BB284C02 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -4851,16 +4856,16 @@ │ │ │ │ │ @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 1[42 1[42 42 42 3[23 │ │ │ │ │ -44[{}13 83.022 /CMSL10 rf /Fe 137[38 45 28 34 35 1[42 │ │ │ │ │ +2[33 12[37 2[46 42 26[54 11[23 1[42 2[42 2[42 42 42 3[23 │ │ │ │ │ +44[{}14 83.022 /CMSL10 rf /Fe 137[38 45 28 34 35 1[42 │ │ │ │ │ 42 47 68 21 2[25 3[38 42 38 1[42 12[59 1[61 11[54 1[63 │ │ │ │ │ 2[62 6[25 12[30 45[{}22 83.022 /CMTI10 rf /Ff 149[23 │ │ │ │ │ 104[23 65{}3 83.022 /CMSY10 rf │ │ │ │ │ %DVIPSBitmapFont: Fg tcrm1000 10 1 │ │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ │ /Dotaccent/cedilla/ogonek/quotesinglbase.ts1 4{/.notdef}repeat │ │ │ │ │ /quotedblbase.ts1/.notdef/.notdef/twelveudash/threequartersemdash │ │ │ │ │ @@ -5045,25 +5050,25 @@ │ │ │ │ │ Fn(2)p Ff(j)p Fl(D)722 5419 y Fj(1)p Fi(;)p Fj(1)812 │ │ │ │ │ 5407 y Ff(j)g(\000)g(j)p Fl(A)1021 5419 y Fj(2)p Fi(;)p │ │ │ │ │ Fj(1)1112 5407 y Ff(j)g(\000)g(j)p Fl(A)1321 5419 y Fj(1)p │ │ │ │ │ Fi(;)p Fj(2)1412 5407 y Ff(j)p Fn(,)27 b(where)h Ff(j)18 │ │ │ │ │ b(\001)h(j)27 b Fn(denotes)h(the)g(n)n(um)n(b)r(er)f(of)g(nonzero)r(es) │ │ │ │ │ g(in)h(a)f(matrix.)1929 5656 y(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fn(2)p 125 100 1049 4 v │ │ │ │ │ -1214 w Fm(SemiImplMtx)23 b Fd(:)37 b Fe(DRAFT)27 b Fd(Jan)n(uary)f(16,) │ │ │ │ │ -h(2024)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 │ │ │ │ │ -b Fn(:)33 b(t)n(yp)r(e)18 b(of)h(matrix)e(symmetry)-7 │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fn(2)p 125 100 1031 4 v │ │ │ │ │ +1196 w Fm(SemiImplMtx)24 b Fd(:)37 b Fe(DRAFT)27 b Fd(F)-7 │ │ │ │ │ +b(ebruary)26 b(18,)h(2025)p 2869 100 V 0 390 a Fc(1.1)135 │ │ │ │ │ +b(Data)46 b(Structure)0 595 y Fn(The)28 b Fm(SemiImplMtx)23 │ │ │ │ │ +b Fn(structure)k(has)g(the)h(follo)n(wing)e(\014elds.)125 │ │ │ │ │ +776 y Fg(\210)42 b Fm(int)g(neqns)26 b Fn(:)36 b(n)n(um)n(b)r(er)28 │ │ │ │ │ +b(of)f(equations.)125 939 y Fg(\210)42 b Fm(int)g(type)26 │ │ │ │ │ +b Fn(:)37 b(t)n(yp)r(e)28 b(of)f(en)n(tries,)g Fm(SPOOLES)p │ │ │ │ │ +1527 939 27 4 v 29 w(REAL)f Fn(or)g Fm(SPOOLES)p 2167 │ │ │ │ │ +939 V 29 w(COMPLEX)p Fn(.)125 1101 y Fg(\210)42 b Fm(int)g │ │ │ │ │ +(symmetryflag)13 b Fn(:)33 b(t)n(yp)r(e)18 b(of)h(matrix)e(symmetry)-7 │ │ │ │ │ b(,)20 b Fm(SPOOLES)p 2212 1101 V 29 w(SYMMETRIC)p Fn(,)15 │ │ │ │ │ b Fm(SPOOLES)p 2983 1101 V 28 w(HERMITIAN)g Fn(or)i Fm(SPOOLES)p │ │ │ │ │ 3822 1101 V 29 w(NONSYMMETRIC)p Fn(.)125 1263 y Fg(\210)42 │ │ │ │ │ b Fm(int)g(ndomeqns)24 b Fn(:)37 b(n)n(um)n(b)r(er)28 │ │ │ │ │ b(of)f(equations)g(in)h(the)g(domains,)f(or)f(\(1,1\))i(blo)r(c)n(k.) │ │ │ │ │ 125 1425 y Fg(\210)42 b Fm(int)g(nschureqns)23 b Fn(:)37 │ │ │ │ │ b(n)n(um)n(b)r(er)28 b(of)f(equations)g(in)h(the)g(Sc)n(h)n(ur)f │ │ │ │ │ @@ -5129,17 +5134,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 1049 4 v 1214 100 a Fm(SemiImplMtx)24 │ │ │ │ │ -b Fd(:)36 b Fe(DRAFT)111 b Fd(Jan)n(uary)25 b(16,)i(2024)p │ │ │ │ │ -2812 100 V 1049 w Fn(3)101 390 y(4.)42 b Fm(int)g(SemiImplMtx_free)37 │ │ │ │ │ +TeXDict begin 3 2 bop 83 100 1031 4 v 1197 100 a Fm(SemiImplMtx)23 │ │ │ │ │ +b Fd(:)37 b Fe(DRAFT)110 b Fd(F)-7 b(ebruary)27 b(18,)g(2025)p │ │ │ │ │ +2830 100 V 1031 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 │ │ │ │ │ @@ -5233,22 +5238,22 @@ │ │ │ │ │ Fn(ob)5 b(jects)28 b(during)h(the)h(solv)n(e.)40 b(One)29 │ │ │ │ │ b(can)g(ha)n(v)n(e)f Fm(X)g Fn(and)h Fm(B)g Fn(p)r(oin)n(t)h(to)f(the)g │ │ │ │ │ (same)g(ob)5 b(ject,)29 b(for)g(en)n(tries)208 5407 y(are)d(read)h │ │ │ │ │ (from)g Fm(B)g Fn(and)h(written)g(to)f Fm(X)p Fn(.)g(On)h(return,)f │ │ │ │ │ (the)h Fm(cpus[])d Fn(v)n(ector)h(con)n(tains)h(the)h(follo)n(wing)f │ │ │ │ │ (information.)p eop end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fn(4)p 125 100 1049 4 v │ │ │ │ │ -1214 w Fm(SemiImplMtx)23 b Fd(:)37 b Fe(DRAFT)27 b Fd(Jan)n(uary)f(16,) │ │ │ │ │ -h(2024)p 2852 100 V 369 377 a Fm(cpus[0])97 b Fn(initialize)27 │ │ │ │ │ -b(w)n(orking)f(matrices)369 477 y Fm(cpus[1])97 b Fn(load)27 │ │ │ │ │ -b(righ)n(t)f(hand)i(side)369 576 y Fm(cpus[2])97 b Fn(\014rst)27 │ │ │ │ │ -b(solv)n(e)f(with)j(domains)369 676 y Fm(cpus[3])97 b │ │ │ │ │ -Fn(compute)27 b(Sc)n(h)n(ur)g(righ)n(t)g(hand)h(side)369 │ │ │ │ │ -775 y Fm(cpus[4])97 b Fn(Sc)n(h)n(ur)27 b(solv)n(e)2099 │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fn(4)p 125 100 1031 4 v │ │ │ │ │ +1196 w Fm(SemiImplMtx)24 b Fd(:)37 b Fe(DRAFT)27 b Fd(F)-7 │ │ │ │ │ +b(ebruary)26 b(18,)h(2025)p 2869 100 V 369 377 a Fm(cpus[0])97 │ │ │ │ │ +b Fn(initialize)27 b(w)n(orking)f(matrices)369 477 y │ │ │ │ │ +Fm(cpus[1])97 b Fn(load)27 b(righ)n(t)f(hand)i(side)369 │ │ │ │ │ +576 y Fm(cpus[2])97 b Fn(\014rst)27 b(solv)n(e)f(with)j(domains)369 │ │ │ │ │ +676 y Fm(cpus[3])97 b Fn(compute)27 b(Sc)n(h)n(ur)g(righ)n(t)g(hand)h │ │ │ │ │ +(side)369 775 y Fm(cpus[4])97 b Fn(Sc)n(h)n(ur)27 b(solv)n(e)2099 │ │ │ │ │ 377 y Fm(cpus[5])97 b Fn(compute)27 b(domains')g(righ)n(t)g(hand)h │ │ │ │ │ (side)2099 477 y Fm(cpus[6])97 b Fn(second)27 b(solv)n(e)f(with)i │ │ │ │ │ (domains)2099 576 y Fm(cpus[7])97 b Fn(store)26 b(solution)2099 │ │ │ │ │ 676 y Fm(cpus[8])97 b Fn(miscellaneous)26 b(time)2099 │ │ │ │ │ 775 y Fm(cpus[9])97 b Fn(total)27 b(time)208 972 y Fe(R)l(eturn)h(c)l │ │ │ │ │ (o)l(des:)1193 1150 y Fn(1)99 b(normal)26 b(return)1165 │ │ │ │ │ 1250 y(-1)99 b Fm(mtx)26 b Fn(is)i Fm(NULL)1165 1350 │ │ │ │ │ @@ -5306,17 +5311,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 1049 4 v 1214 100 a Fm(SemiImplMtx)24 │ │ │ │ │ -b Fd(:)36 b Fe(DRAFT)111 b Fd(Jan)n(uary)25 b(16,)i(2024)p │ │ │ │ │ -2812 100 V 1049 w Fn(5)307 390 y Fg(\210)42 b Fn(The)28 │ │ │ │ │ +TeXDict begin 5 4 bop 83 100 1031 4 v 1197 100 a Fm(SemiImplMtx)23 │ │ │ │ │ +b Fd(:)37 b Fe(DRAFT)110 b Fd(F)-7 b(ebruary)27 b(18,)g(2025)p │ │ │ │ │ +2830 100 V 1031 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 16, 2024 │ │ │ │ │ │ + 2 SemiImplMtx : DRAFT February 18, 2025 │ │ │ │ │ │ 1.1 Data Structure │ │ │ │ │ │ The SemiImplMtx structure has the following fields. │ │ │ │ │ │ • int neqns : number of equations. │ │ │ │ │ │ • int type : type of entries, SPOOLES REAL or SPOOLES COMPLEX. │ │ │ │ │ │ • int symmetryflag: typeofmatrixsymmetry,SPOOLES SYMMETRIC,SPOOLES HERMITIANorSPOOLES NONSYMMETRIC. │ │ │ │ │ │ • int ndomeqns : number of equations in the domains, or (1,1) block. │ │ │ │ │ │ • int nschureqns : number of equations in the Schur complement, or (2,2) block. │ │ │ │ │ │ @@ -95,15 +95,15 @@ │ │ │ │ │ │ Thismethodsetsthestructure’sfieldstodefaultvalues: neqns=0,type=SPOOLES REAL,symmetryflag │ │ │ │ │ │ =SPOOLES SYMMETRIC,ndomeqns=nschureqns=0,anddomainMtx,schurMtx,A21,A12,domRowsIV, │ │ │ │ │ │ schurRowsIV, domColumnsIV and schurColumnsIV are all set to NULL. │ │ │ │ │ │ Return codes: 1 means a normal return, -1 means mtx is NULL. │ │ │ │ │ │ 3. int SemiImplMtx_clearData ( SemiImplMtx *mtx ) ; │ │ │ │ │ │ This method releases all storage held by the object. │ │ │ │ │ │ Return codes: 1 means a normal return, -1 means mtx is NULL. │ │ │ │ │ │ - SemiImplMtx : DRAFT January 16, 2024 3 │ │ │ │ │ │ + SemiImplMtx : DRAFT February 18, 2025 3 │ │ │ │ │ │ 4. int SemiImplMtx_free ( SemiImplMtx *mtx ) ; │ │ │ │ │ │ This method releases all storage held by the object via a call to SemiImplMtx clearData(), then free’d │ │ │ │ │ │ the storage for the object. │ │ │ │ │ │ Return codes: 1 means a normal return, -1 means mtx is NULL. │ │ │ │ │ │ 1.2.2 Initialization Methods │ │ │ │ │ │ 1. int SemiImplMtx_initFromFrontMtx ( SemiImplMtx *semimtx, FrontMtx *frontmtx, │ │ │ │ │ │ InpMtx *inpmtx, IV *frontmapIV, int msglvl, FILE *msgFile) ; │ │ │ │ │ │ @@ -140,15 +140,15 @@ │ │ │ │ │ │ 1.2.3 Solve Methods │ │ │ │ │ │ 1. int SemiImplMtx_solve ( SemiImplMtx *mtx, DenseMtx *X, DenseMtx *B, │ │ │ │ │ │ SubMtxManager *mtxmanager, double cpus[], int msglvl, FILE *msgFile ) ; │ │ │ │ │ │ This methods solves a linear system (L + I)D(I + U)X = B, (UT + I)D(I + U)X = B or (UH + │ │ │ │ │ │ I)D(I + U)X = B, where X and B are DenseMtx objects. mtxmanager is an object to handle the │ │ │ │ │ │ working SubMtx objects during the solve. One can have X and B point to the same object, for entries │ │ │ │ │ │ are read from B and written to X. On return, the cpus[] vector contains the following information. │ │ │ │ │ │ - 4 SemiImplMtx : DRAFT January 16, 2024 │ │ │ │ │ │ + 4 SemiImplMtx : DRAFT February 18, 2025 │ │ │ │ │ │ cpus[0] initialize working matrices cpus[5] compute domains’ right hand side │ │ │ │ │ │ cpus[1] load right hand side cpus[6] second solve with domains │ │ │ │ │ │ cpus[2] first solve with domains cpus[7] store solution │ │ │ │ │ │ cpus[3] compute Schur right hand side cpus[8] miscellaneous time │ │ │ │ │ │ cpus[4] Schur solve cpus[9] total time │ │ │ │ │ │ Return codes: │ │ │ │ │ │ 1 normal return -3 B is NULL │ │ │ │ │ │ @@ -181,15 +181,15 @@ │ │ │ │ │ │ This section contains brief descriptions of the driver programs. │ │ │ │ │ │ 1. testGrid msglvl msgFile n1 n2 n3 maxzeros maxsize seed type symmetryflag │ │ │ │ │ │ sparsityflag pivotingflag tau droptol nrhs depth │ │ │ │ │ │ This driver program tests the SemiImplMtx creation and solve methods for a matrix from a regular │ │ │ │ │ │ 2-D or 3-D grid. The matrix can be real or complex and is loaded with random entries. The linear │ │ │ │ │ │ system AX =B is solved as follows. │ │ │ │ │ │ • First A is factored, and a FrontMtx object is created to hold the factorization. │ │ │ │ │ │ - SemiImplMtx : DRAFT January 16, 2024 5 │ │ │ │ │ │ + SemiImplMtx : DRAFT February 18, 2025 5 │ │ │ │ │ │ • The system is solved using the FrontMtx object. │ │ │ │ │ │ • A SemiImplMtx matrix object is constructed from the FrontMtx object and A. │ │ │ │ │ │ • The system is solved using the SemiImplMtx object. │ │ │ │ │ │ Various statistics and CPU timings are written to the message file to compare the two solution pro- │ │ │ │ │ │ cesses. Use the do grid shell script for testing. │ │ │ │ │ │ • The msglvl parameter determines the amount of output. │ │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the message │ │ │ ├── ./usr/share/doc/spooles-doc/SolveMap.ps.gz │ │ │ │ ├── SolveMap.ps │ │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ │ %%EndComments │ │ │ │ │ %%BeginDefaults │ │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ │ %%EndDefaults │ │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ │ %DVIPSCommandLine: dvips main -o SolveMap.ps │ │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ │ -%DVIPSSource: TeX output 2024.01.16:2047 │ │ │ │ │ +%DVIPSSource: TeX output 2025.02.18:0318 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -1440,20 +1440,21 @@ │ │ │ │ │ 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 52 /four put │ │ │ │ │ -dup 54 /six put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ +dup 56 /eight put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 74 /J put │ │ │ │ │ +dup 70 /F put │ │ │ │ │ dup 97 /a put │ │ │ │ │ -dup 110 /n put │ │ │ │ │ +dup 98 /b put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ dup 114 /r put │ │ │ │ │ dup 117 /u put │ │ │ │ │ dup 121 /y put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ @@ -1637,89 +1638,93 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ │ -C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ │ -6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ │ -11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ │ -1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ │ -A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ │ -F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ │ -EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ │ -033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ │ -A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ │ -468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8A71FF9C085003EBB4F4 │ │ │ │ │ -3D271F5B16B1AAD3EBDC391F534AA46E545E9D8659DD19B309C3B7625A8396FA │ │ │ │ │ -2519464539D46E43ACB72952313C8497315E0319C08628023E8FC54D7D3BAC29 │ │ │ │ │ -D5AD8EFDABF0C33C7AFB7151A6606C62A87F0F5F783569AC4C881A992E3FE420 │ │ │ │ │ -297F7BC5147F3B2FA98450D2F8B07F7D229BC8BE06729920CFEC22556740E1CB │ │ │ │ │ -3DE09AC763C6D4A20AD1599C368FABD07BC35C16683F2A0311A88983415A9140 │ │ │ │ │ -2EFC4BC1B10DCAD4B2B8A28510E5BD39D6616D2B9B079ED3CF9C315B7DEC29D9 │ │ │ │ │ -251DFD0194B34EC175964C23383F23FFB2E41B698C405815D65EAFF9E9DD1DDE │ │ │ │ │ -30F77924656C288B8DDB2E5B0E7B1FAA66791DE3848EE6DE63AD0E945E49C6C7 │ │ │ │ │ -9FCA16E01F027F9EF7ACB55F02F5B0136480802F789F6FE14B430879979BA04D │ │ │ │ │ -F481AD4CF47E6847936F377FB04869F9A80E597301BFCAB718D8764094673876 │ │ │ │ │ -BCEF8FA3701608C84B3A0399A11D2E6AD922CCB7D72AF9EBFB30F4648A37A123 │ │ │ │ │ -CB8FB14BDC351692CF0CCAA5CA9383C2B23BAAA38700327EB743FBBE9EE04041 │ │ │ │ │ -13F5CEF4B3881BBC051C33369A82B3505B1CFD7D91AEF2E43EA728EE48E2D854 │ │ │ │ │ -5A7E516998ACDD4FD835FA901C5A21810A56D51FE919B2E58408EEB4DAEB487F │ │ │ │ │ -BA7F1D292CED902DF3533566D96DAD918319EA650D4FC7D9E0170CDE620F755B │ │ │ │ │ -0E7AE02D9B118481B26F5FF7060FBCFA2A682B6826F00679BCDA68794C05286D │ │ │ │ │ -B616DD08372ACDE0AE6E7EF116F0D36F16241ED4F0E8CCD80377792E3BB1343C │ │ │ │ │ -EEB22CC77738F7CBCBA32CF6C3979F6DF7ED81A89AE8928FD7CC550F2730BA88 │ │ │ │ │ -1B51CEDC63F4C47F261AFCAB7AC3CED20B15C97E714A460A1A3B16436B4A5149 │ │ │ │ │ -8F91DA4BE0B9B648534CE5F442117036B602DC91E2852BEA62F55803B833FDF7 │ │ │ │ │ -9F901AB87489E703DDEED1091A79DC73B4440BBBF2C7592B441187C4A3562204 │ │ │ │ │ -859F08BA3CE2A8ECCD5AAD13C50FB806FE79A388F1822C5608837CBDE526A044 │ │ │ │ │ -12E5CDE4A066932AF2ACA7E8FC6BA4603640944718752975B7DA6E906BE1EA01 │ │ │ │ │ -46736FF5D1AA1CC682D011B6039CF98C35E36D4F14ABC84A38B7203CC9A17756 │ │ │ │ │ -B2B0345276798F1A88A54AD9FEA0853C6DDF28525ED4F0B7380D14147012C2A4 │ │ │ │ │ -5B02888C986C76497EA4C729B0B82EE73C1A1A8E8F1ABF401E341028E9C15AF9 │ │ │ │ │ -354706D8DC07492921AD0932A46736C0D1B066D00287DACCC068FAE6A796EC89 │ │ │ │ │ -54D1D73AA88F3A5912BA9D3FF70065C8D0D0DAD1CD846501E06694374EFDBEC6 │ │ │ │ │ -931F644D5E8494AFC742423AD9A487658E310E0682BE19B8475F4D450487A686 │ │ │ │ │ -2B94494DEAF1C0F59DE82F2CE64BEE5E97F942FCFA1187ED6AA5761E951A7BF7 │ │ │ │ │ -9F842E34A4656C58B35A9E99F7E6762CEE11E0CF59FFD75D7382C5EE6DBB43F1 │ │ │ │ │ -ED219071D3FB22DBA90977723BB467C0490D042684C0724F40DCA3E0D8F1F4E7 │ │ │ │ │ -3C4F9A67BE6528185EAAFDD415224F7E256A4EA00111C17C746CBD80BF569A27 │ │ │ │ │ -D81195D7F79C1CCEEF30ED00D49F48B63E4B8D7953403A3710AE953CC1B76F0F │ │ │ │ │ -F523D777A6A186F262A602543F94AF7471DBE25FEBC207DB42DAF7DC9A5781FB │ │ │ │ │ -2131AD42869D966A734AAE3466DF1CE9D1BCFA72409A558C0AEE6A8E2FEAACB6 │ │ │ │ │ -2CDABCC28433034848ACF9FB4465D272E4AFC48572647F05F41C7A293CC5B595 │ │ │ │ │ -AD31555FB708A72962707348BC7033A8224BD42EB9D75FDF3AE9E6A9C960B330 │ │ │ │ │ -5137DF59F8E2E0D535F41524ABDF070745A4FA25CD8DFD38A5FF30A95452B875 │ │ │ │ │ -6569E8812631300D79A942C563AF174AC05C9F2D09D7D5D3C605F5A6B7F21B34 │ │ │ │ │ -18F270A993B050838E701A17938D1C156CBA7CA4BAC7C562CE9D7B758EAB25A9 │ │ │ │ │ -A6DFFC71F65561341847B776DF34061CE3D439B87B857626987EC93B3B95B8E8 │ │ │ │ │ -76FFB16B263675333FA10414FEED707FF7C366BF8B20FF8577CDEBEBCF1A5BCE │ │ │ │ │ -258C09C90175A5278B7C444A623E3331FDE5A6387B3E389540ED1E7E883958F3 │ │ │ │ │ -3A5C89CCD62256FA069DF4A5090FB17C1F1757C9209DAFB8A1F47182BF3E88D9 │ │ │ │ │ -0B5376B59EE165A761902759C8ED7F5AD301E7EB8B49CC09AF921DB45B7F8002 │ │ │ │ │ -AB32E73AAE53942DE0F9175D8446017006C9C0B93EF39C13B7A879F2F6DDFF16 │ │ │ │ │ -204BB24F976847CF006FD29332FCCB255B5116F7077A44F7066C39C81DC4BAD2 │ │ │ │ │ -40DB2753626C0102E5D047522ABC38EA294A699B8DFD9CA0A7980561A1062E90 │ │ │ │ │ -AB11EE286A9C238D9F721D9980D0A1828C2814972622D948CEE8C812C19A9A03 │ │ │ │ │ -608ED0AC138A436FFBF8BE3D1E66C87793416AF38ED9BC5424568A175FBDAA9E │ │ │ │ │ -D6FC11A7021693819B051562B5A59F32629E2D6019D69DD329BE1894A2B295E1 │ │ │ │ │ -1DCE9683B29AE126C56F26E5C595BF1A8249BDE231DBE8B066F7F62EF149B975 │ │ │ │ │ -A863969A4690504A5EA064721DA909B8157C0B39FBF8228D95CB655E406161E1 │ │ │ │ │ -148610FAEED7C5509880223C06A66DA19E10F94DC2DB481B26 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004FD597ED │ │ │ │ │ +EFDBC64ABD9B79386FB2427D1A63522195B1239C09F8CB3F8BD7A245A6DD82E3 │ │ │ │ │ +260C3889587626DFC5F7978E55F5524ABD6A3319CDD3D3F40D040044D51DA4E1 │ │ │ │ │ +6797EEAC7AA07C77EC6DB0E6E182B545A8BEF63B14F3FC07BAC09E7CD5C17ED6 │ │ │ │ │ +10080704B0DA4E9BA12F968DF8A58458D17E9A5B1F14A83DC51F5B161ADEE1CC │ │ │ │ │ +0183D82ED92C6FC7203C289949EDF0284D9893029FF5408E421324625F17C3E5 │ │ │ │ │ +2437C8F75A9D68EE1AF9174FEA6FC6BF793C7D2E497EA90396CF1A645E283B69 │ │ │ │ │ +8425F47C323587DF91E1D596DCB1E3A787C955D9D965A5E3E26ADF58B62AD5F9 │ │ │ │ │ +0C9AC784DE479780606354111E3202F215650DBBE1063A46F3C10B9EBC974DDA │ │ │ │ │ +A1A28DBBD43E9E5BFF000B12C787D0427928078F8EC5FE90DED97E6C129E8DEA │ │ │ │ │ +51F66504DB83764E52B0BA68DF7BE684C8959CB1D3345CC48221A9A4683306C0 │ │ │ │ │ +62B634E0A539383F0C7A788D9711EFF414869CCC5659D78CEBE009BF2463F56A │ │ │ │ │ +0ADC993348FE96DF7C250E13ED6504AACFE8F8DCA2D2048D9D8CFA127D363EAC │ │ │ │ │ +1F0630E2D1B621E6954038195D965B91FD974FA3F1B8B29D200A16CEBA645E2F │ │ │ │ │ +CEEE6FD49FBBD49E38AE67D4BFFCE91F1FC422554EC4409C5FA18D40FCD6D9B3 │ │ │ │ │ +2185ED1E0F98106D4339F086B05CA36E56EC22C60E2CE23F9C4CC403ACAD3F94 │ │ │ │ │ +4086B4DF6DFA0B7B4716417263E7B558535566AED2F6C2F9846A16D71A7930A7 │ │ │ │ │ +49232D3D16C4A01CF1A1998A06F40062ED329179A85668537C55D0BC24FC0010 │ │ │ │ │ +54DA83E2FC66B2A5D428E6A9BFC983253668C0ECE6CA36DBF97C4B7659D50842 │ │ │ │ │ +C65B36604840EEDA399B57E2DEFAC3E7FB031634CE33D04238F9854D2AAAF448 │ │ │ │ │ +34DA5F3BCCED3166FEEE82BB0BBA0A397CC2F95865CB52AABFF454D93B425809 │ │ │ │ │ +A26AC459F321FD23E2262FE816D06BAAECF32AAF167F84799AF80F9F88388D07 │ │ │ │ │ +0DB5FD57AFEE2850A8DFE977E6AE39CB3DC16DB1A163A583C86C6F775CE33521 │ │ │ │ │ +0081C0BBBAD6D30D26C66B28B38CEAC78FEA5FB3CC5853656B67C6D9D80EB30E │ │ │ │ │ +397558C9179AF5920F34DAB3F578DFCF0DBB137AED17D6325C23883E69EE4621 │ │ │ │ │ +34355A70C19EA68891E1CA937376901C85CDEE109F1665943E29A216DC00937A │ │ │ │ │ +B983A729A4654AD09187C0242D52FA4ADD0853EF4888864914D7D81C56578DD4 │ │ │ │ │ +3B51907032022E6E412D4F114675DEDCA8A9E85DC03A0B583FECD84432D15F70 │ │ │ │ │ +01F627BD6EC91F9FCFDA01BF40E1229B5F164309DBB641AD50970503DA2048C1 │ │ │ │ │ +DF8F36E8D252EE113F0B46677D9BAF376BAE18D74CFB0DBBD0C7E9D0A58BA3ED │ │ │ │ │ +1E5099CAE073EB5638617760AB57849893764EA9735173CD1EAB66884CEA7EE3 │ │ │ │ │ +8843327B2E145BD6FBB49102776B82BC511D109F8BE9E7E99DADABABEDC3CFD9 │ │ │ │ │ +393578FFD85907DFF2849E4CDE6FA4DEC7E1C150EBE4047FFB650F9548BE6D11 │ │ │ │ │ +0C51226A5436F18BF20A02E0F888F46B6AC3A8E8D927ECD3B5E095933AD3859F │ │ │ │ │ +5167C41D832EFCC4093BD2AFA7101AB430E57DAFC3590F05D3CBABB32BC203A0 │ │ │ │ │ +467B23BDB830487C9AA5B85BAC065F8538871B4180F8C4732E637DB090CFDE5A │ │ │ │ │ +3F4F2B5BFAFB848BAAD1A17CB076B34159601639BD93ECAB1214ACABF2C67FE2 │ │ │ │ │ +0658AA20B08681070FF56F1CC52144ABA8765D6E124D1CEA9BBA102808CE1BB2 │ │ │ │ │ +5EDF46BC7BBC2A5B49EE6EC28F5797A3969B057B21FCDBBD0E60848FF14F6CA3 │ │ │ │ │ +70F3060BDBB019B22722C99C7691760F013763B7FBEB62830AE215F195BF9F01 │ │ │ │ │ +21BF4377397E89574CFA47D123AA506A570A77BA6EB4AAB0B237A26154880293 │ │ │ │ │ +3952F832F72ECCB024F02385E5EE8566B165904B594E30D0700D033C6B429F6F │ │ │ │ │ +2A20BC774F442BC9CE29FCC81807C2768A8BC927A215558FBF36DC53F477F04A │ │ │ │ │ +41DA66E1A85B659EB761230977EAD7DA0150513D3323B143D4E2A61BCF03334C │ │ │ │ │ +C0EE3E1B06CFAF58ECC910BD81F0352B75FF1594D6A4EF504232D442174BE766 │ │ │ │ │ +0F8E703F97E21D25D4CD097549C31FEE7017C3916EFB02E7BF869172889827B6 │ │ │ │ │ +A48465EB7612BA3DBC6A9436C7167F149A25CE9F8E3F4F8DE3B5ADF6C0986CB3 │ │ │ │ │ +3A7E2DAB44AB489796461536F5F713017F2620AD03295CAE9285F08974AE0DF8 │ │ │ │ │ +D739260929619B509491AFF09C4CAEF9E65C2CA69470C907ECBF3AB6C955360D │ │ │ │ │ +05ABAC306DB51122A1ADC7EF0DD70FA299A45C505A83727D4598C86319EE9C06 │ │ │ │ │ +7218EFD4F40388354BCF1B79593D5AD221DF955D081F99F880E5CED07321AB3E │ │ │ │ │ +A2FCB8B05D54807D8E15E65B78DCE12989B9276350080C905DBB74CE9AA7E246 │ │ │ │ │ +5D3BAED292C562D4CF54617FCC6654496C7996D1ECE1EFF9258716AB763A12E6 │ │ │ │ │ +316E4C5587351A6DB011F58F6A15BC28BEBDC3836E0CB892807FEC228DC1B380 │ │ │ │ │ +92F7F42279F08D60F13D6A4CB425543C3644461461CBF6F27B6603F613D1FCF8 │ │ │ │ │ +A8410AD82D1498166AEB35D4125D7E2ADEAAB18BC04806AED53513F066E5F154 │ │ │ │ │ +3E13E863C50B9814EE2FB978D0D24A03FAF650CB6E2CADF1E6BE6BAF699AFC03 │ │ │ │ │ +E1A0EEB207B3B9A689ED5B373FE86686AD230BE6C18E1673DDA50E224B343EC5 │ │ │ │ │ +903BA0C8041C13607B50D5852AC7970B15C244E6EBA7D54B3086312CF04761D6 │ │ │ │ │ +7D3D75D51F20C371494AB81AB4A9838B20B483B851D01FEF41EA5C0B4755B964 │ │ │ │ │ +EB6E9B178051C556A010994EB88EAE641F4C1A0D7E0F98D5267E18AEF1AEA7E7 │ │ │ │ │ +9030A97DF89AFF621981C33B645FFB5F3BB2065A7661D11B26E0999561DF3580 │ │ │ │ │ +4A76A05DFAF8085525F8D5C01936F03C32E26E72569371C9EA3B8916F9DFC5FC │ │ │ │ │ +6A6F25A0FFDB981BA8B896393D75774D50828E6ADE903C45406E354703A4BC56 │ │ │ │ │ +2C49A47FEAC970DC433E3050C49F7FB945A9705BD8852D2D65D935F244D3B423 │ │ │ │ │ +EFAB84AAAAB8FBAFF50AFF372A533BCCEB5FC273DBADCF715776DF02A5DCBA9A │ │ │ │ │ +FBF265FAB4745D6475B33611EEE1EA95E7584E0BEEC7CA789AA69C8D03D6F8C0 │ │ │ │ │ +5B6844E2B901ACA560C0433B053D134866E567425174E47173679AAD4486A2D3 │ │ │ │ │ +369C29E4DD2CD6ACA1BE80ED8FF0A9C58A616D26E758BD8E6342624EC83FB590 │ │ │ │ │ +BD354B52B60BB054FAFE9AC63E1564FBC721FE8F276B0413EC89A2C85E5ED1B0 │ │ │ │ │ +3A9D83BE62A4488ADE7CE69971A8AF7E5862A4290EEF6F00D4171C7FFB360065 │ │ │ │ │ +92E72BF02BE27161AE0BB5516572A0BDC4F316FFB24B38484AC8D1FD4CD86062 │ │ │ │ │ +A2B5D03CF28C3A679C039A6EFDD4C9DA7E463AD60234C9F6BBEE48D87DD94D85 │ │ │ │ │ +842F495F3E25723718682CE4D6224CBBF4456F03077EDF736D65B9DDAB09470E │ │ │ │ │ +17742D82011FFA96BFE86B96E858F9352FCD20C3D46B77DBDEE54336EC2249EA │ │ │ │ │ +211F6DFFF5BEA1E5192BE1BAC0BDD5EDDB3D56C6F7C6E543561A0B39E5C1B04F │ │ │ │ │ +C683A7516B6E69D682455386DDA709929D621FA434D403E895AA0A77DBE1DFD2 │ │ │ │ │ +0D060DF82378880147ED97C6E8149686FA048710B113760AC1DA4512FF8556B3 │ │ │ │ │ +16E2447485B8C3CD58D0469C4A45FFB4CB0322BB284C02 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -4349,16 +4354,16 @@ │ │ │ │ │ %%EndFont │ │ │ │ │ TeXDict begin 39158280 55380996 1000 600 600 (main.dvi) │ │ │ │ │ @start /Fa 234[71 21[{}1 90.9091 /CMSY10 rf /Fb 133[50 │ │ │ │ │ 59 2[59 62 44 44 46 1[62 56 62 93 31 2[31 62 2[51 62 │ │ │ │ │ 50 1[54 11[86 1[62 3[84 1[106 3[42 6[80 10[56 56 56 56 │ │ │ │ │ 56 56 56 2[31 46[{}32 99.6264 /CMBX12 rf /Fc 137[62 5[62 │ │ │ │ │ 62 2[62 6[62 3[62 13[62 5[62 77[{}8 119.552 /CMTT12 rf │ │ │ │ │ -/Fd 134[48 3[51 2[36 3[51 12[45 22[47 15[25 3[45 1[45 │ │ │ │ │ -1[45 45 45 3[25 44[{}13 90.9091 /CMSL10 rf /Fe 132[52 │ │ │ │ │ +/Fd 134[48 3[51 2[36 12[40 2[51 45 26[59 11[25 1[45 2[45 │ │ │ │ │ +2[45 45 45 3[25 44[{}14 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 │ │ │ │ │ @@ -4473,39 +4478,40 @@ │ │ │ │ │ b Fl(int)i(*rowidsUpper)27 b Fm({)k(v)m(ector)h(of)e(ro)m(w)h(ids)f │ │ │ │ │ (for)g(the)h(upp)s(er)d(triangle)137 5213 y Ff(\210)45 │ │ │ │ │ b Fl(int)i(*colidsUpper)27 b Fm({)k(v)m(ector)h(of)e(column)h(ids)f │ │ │ │ │ (for)g(the)g(upp)s(er)f(triangle)137 5407 y Ff(\210)45 │ │ │ │ │ b Fl(int)i(*mapUpper)28 b Fm({)j(map)f(from)g(submatrices)g(to)h │ │ │ │ │ (threads)f(or)g(pro)s(cesses)1927 5656 y(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fm(2)p 136 100 1035 4 v │ │ │ │ │ -1217 w Fl(SolveMap)28 b Fd(:)40 b Fk(DRAFT)31 b Fd(Jan)m(uary)f(16,)h │ │ │ │ │ -(2024)p 2866 100 V 137 399 a Ff(\210)45 b Fl(int)i(nblockLower)27 │ │ │ │ │ -b Fm({)k(n)m(um)m(b)s(er)e(of)i(submatrices)f(in)g(the)h(lo)m(w)m(er)g │ │ │ │ │ -(triangle)137 588 y Ff(\210)45 b Fl(int)i(*rowidsLower)27 │ │ │ │ │ -b Fm({)k(v)m(ector)h(of)e(ro)m(w)h(ids)f(for)g(the)h(lo)m(w)m(er)g │ │ │ │ │ -(triangle)137 778 y Ff(\210)45 b Fl(int)i(*colidsLower)27 │ │ │ │ │ -b Fm({)k(v)m(ector)h(of)e(column)h(ids)f(for)g(the)g(lo)m(w)m(er)i │ │ │ │ │ -(triangle)137 967 y Ff(\210)45 b Fl(int)i(*mapLower)28 │ │ │ │ │ -b Fm({)j(map)f(from)g(submatrices)g(to)h(threads)f(or)g(pro)s(cesses)h │ │ │ │ │ -(pro)s(cesses)0 1281 y Fg(1.2)135 b(Protot)l(yp)t(es)46 │ │ │ │ │ -b(and)f(descriptions)g(of)g Fc(SolveMap)c Fg(metho)t(ds)0 │ │ │ │ │ -1510 y Fm(This)g(section)j(con)m(tains)f(brief)f(descriptions)g │ │ │ │ │ -(including)f(protot)m(yp)s(es)i(of)f(all)h(metho)s(ds)f(that)h(b)s │ │ │ │ │ -(elong)f(to)h(the)0 1623 y Fl(SolveMap)28 b Fm(ob)5 b(ject.)0 │ │ │ │ │ -1894 y Fb(1.2.1)112 b(Basic)38 b(metho)s(ds)0 2092 y │ │ │ │ │ -Fm(As)d(usual,)h(there)f(are)g(four)f(basic)h(metho)s(ds)g(to)g(supp)s │ │ │ │ │ -(ort)e(ob)5 b(ject)36 b(creation,)i(setting)e(default)f(\014elds,)h │ │ │ │ │ -(clearing)0 2204 y(an)m(y)31 b(allo)s(cated)h(data,)f(and)f(free'ing)h │ │ │ │ │ -(the)g(ob)5 b(ject.)111 2444 y(1.)46 b Fl(SolveMap)g(*)h(SolveMap_new)e │ │ │ │ │ -(\()i(void)g(\))g(;)227 2596 y Fm(This)35 b(metho)s(d)g(simply)g(allo)s │ │ │ │ │ -(cates)j(storage)f(for)e(the)h Fl(SolveMap)d Fm(structure)i(and)g(then) │ │ │ │ │ -g(sets)h(the)g(default)227 2708 y(\014elds)30 b(b)m(y)g(a)h(call)h(to)f │ │ │ │ │ -Fl(SolveMap)p 1330 2708 29 4 v 32 w(setDefaultFields\(\))p │ │ │ │ │ -Fm(.)111 2898 y(2.)46 b Fl(void)h(SolveMap_setDefaultField)o(s)42 │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fm(2)p 136 100 1016 4 v │ │ │ │ │ +1197 w Fl(SolveMap)29 b Fd(:)40 b Fk(DRAFT)30 b Fd(F)-8 │ │ │ │ │ +b(ebruary)31 b(18,)g(2025)p 2885 100 V 137 399 a Ff(\210)45 │ │ │ │ │ +b Fl(int)i(nblockLower)27 b Fm({)k(n)m(um)m(b)s(er)e(of)i(submatrices)f │ │ │ │ │ +(in)g(the)h(lo)m(w)m(er)g(triangle)137 588 y Ff(\210)45 │ │ │ │ │ +b Fl(int)i(*rowidsLower)27 b Fm({)k(v)m(ector)h(of)e(ro)m(w)h(ids)f │ │ │ │ │ +(for)g(the)h(lo)m(w)m(er)g(triangle)137 778 y Ff(\210)45 │ │ │ │ │ +b Fl(int)i(*colidsLower)27 b Fm({)k(v)m(ector)h(of)e(column)h(ids)f │ │ │ │ │ +(for)g(the)g(lo)m(w)m(er)i(triangle)137 967 y Ff(\210)45 │ │ │ │ │ +b Fl(int)i(*mapLower)28 b Fm({)j(map)f(from)g(submatrices)g(to)h │ │ │ │ │ +(threads)f(or)g(pro)s(cesses)h(pro)s(cesses)0 1281 y │ │ │ │ │ +Fg(1.2)135 b(Protot)l(yp)t(es)46 b(and)f(descriptions)g(of)g │ │ │ │ │ +Fc(SolveMap)c Fg(metho)t(ds)0 1510 y Fm(This)g(section)j(con)m(tains)f │ │ │ │ │ +(brief)f(descriptions)g(including)f(protot)m(yp)s(es)i(of)f(all)h │ │ │ │ │ +(metho)s(ds)f(that)h(b)s(elong)f(to)h(the)0 1623 y Fl(SolveMap)28 │ │ │ │ │ +b Fm(ob)5 b(ject.)0 1894 y Fb(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ │ +2092 y Fm(As)d(usual,)h(there)f(are)g(four)f(basic)h(metho)s(ds)g(to)g │ │ │ │ │ +(supp)s(ort)e(ob)5 b(ject)36 b(creation,)i(setting)e(default)f │ │ │ │ │ +(\014elds,)h(clearing)0 2204 y(an)m(y)31 b(allo)s(cated)h(data,)f(and)f │ │ │ │ │ +(free'ing)h(the)g(ob)5 b(ject.)111 2444 y(1.)46 b Fl(SolveMap)g(*)h │ │ │ │ │ +(SolveMap_new)e(\()i(void)g(\))g(;)227 2596 y Fm(This)35 │ │ │ │ │ +b(metho)s(d)g(simply)g(allo)s(cates)j(storage)f(for)e(the)h │ │ │ │ │ +Fl(SolveMap)d Fm(structure)i(and)g(then)g(sets)h(the)g(default)227 │ │ │ │ │ +2708 y(\014elds)30 b(b)m(y)g(a)h(call)h(to)f Fl(SolveMap)p │ │ │ │ │ +1330 2708 29 4 v 32 w(setDefaultFields\(\))p Fm(.)111 │ │ │ │ │ +2898 y(2.)46 b Fl(void)h(SolveMap_setDefaultField)o(s)42 │ │ │ │ │ b(\()47 b(SolveMap)f(*solvemap)f(\))j(;)227 3049 y Fm(This)36 │ │ │ │ │ b(metho)s(d)h(sets)g(the)g(default)h(\014elds)e(of)h(the)g(ob)5 │ │ │ │ │ b(ject)38 b(|)f Fl(symmetryflag)44 b(=)k(SPOOLES)p 3419 │ │ │ │ │ 3049 V 32 w(SYMMETRIC)p Fm(,)227 3162 y Fl(nfront)p Fm(,)35 │ │ │ │ │ b Fl(nproc)p Fm(,)g Fl(nblockUpper)e Fm(and)h Fl(nblockLower)e │ │ │ │ │ Fm(are)k(set)g(to)g(zero,)h(and)e Fl(owners)p Fm(,)g │ │ │ │ │ Fl(rowidsUpper)p Fm(,)227 3275 y Fl(colidsUpper)p Fm(,)28 │ │ │ │ │ @@ -4535,17 +4541,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 1035 4 v 1216 100 a Fl(SolveMap)28 │ │ │ │ │ -b Fd(:)41 b Fk(DRAFT)121 b Fd(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2818 100 V 1035 w Fm(3)111 399 y(2.)46 b Fl(int)h(SolveMap_nfront)d(\() │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1016 4 v 1197 100 a Fl(SolveMap)28 │ │ │ │ │ +b Fd(:)41 b Fk(DRAFT)121 b Fd(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2838 100 V 1016 w Fm(3)111 399 y(2.)46 b Fl(int)h(SolveMap_nfront)d(\() │ │ │ │ │ j(SolveMap)f(*solvemap)f(\))j(;)227 552 y Fm(This)30 │ │ │ │ │ b(metho)s(d)g(returns)f Fl(nfront)p Fm(,)g(the)h(n)m(um)m(b)s(er)f(of)i │ │ │ │ │ (fron)m(ts.)227 706 y Fk(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ │ b Fm(If)30 b Fl(solvemap)e Fm(is)j Fl(NULL)p Fm(,)e(an)i(error)f │ │ │ │ │ (message)h(is)g(prin)m(ted)e(and)h(the)h(program)f(exits.)111 │ │ │ │ │ 901 y(3.)46 b Fl(int)h(SolveMap_nproc)d(\()k(SolveMap)d(*solvemap)g(\)) │ │ │ │ │ j(;)227 1055 y Fm(This)30 b(metho)s(d)g(returns)f Fl(nproc)p │ │ │ │ │ @@ -4601,52 +4607,53 @@ │ │ │ │ │ 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 1035 4 v │ │ │ │ │ -1217 w Fl(SolveMap)28 b Fd(:)40 b Fk(DRAFT)31 b Fd(Jan)m(uary)f(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ -b Fl(int)h(*)h(SolveMap_mapLower)43 b(\()k(SolveMap)f(*solvemap)f(\))i │ │ │ │ │ -(;)227 1241 y Fm(This)39 b(metho)s(d)g(returns)f Fl(mapLower)p │ │ │ │ │ -Fm(,)h(a)h(p)s(oin)m(ter)f(to)i(the)e(v)m(ector)i(that)f(maps)f(the)g │ │ │ │ │ -(submatrices)h(in)f(the)227 1354 y(upp)s(er)29 b(triangle)i(to)g │ │ │ │ │ -(threads)f(or)h(pro)s(cesses.)227 1522 y Fk(Err)-5 b(or)34 │ │ │ │ │ -b(che)-5 b(cking:)40 b Fm(If)30 b Fl(solvemap)e Fm(is)j │ │ │ │ │ -Fl(NULL)p Fm(,)e(an)i(error)f(message)h(is)g(prin)m(ted)e(and)h(the)h │ │ │ │ │ -(program)f(exits.)0 1843 y Fb(1.2.3)112 b(Initialization)39 │ │ │ │ │ -b(metho)s(d)111 2057 y Fm(1.)46 b Fl(void)h(SolveMap_init)d(\()k │ │ │ │ │ -(SolveMap)d(*solvemap,)g(int)i(symmetryflag,)d(int)j(nfront,)1230 │ │ │ │ │ -2170 y(int)f(nproc,)h(int)f(nblockUpper,)f(nblockLower)g(\))i(;)227 │ │ │ │ │ -2338 y Fm(An)m(y)33 b(previously)f(o)m(wned)g(data)h(is)f(cleared)i │ │ │ │ │ -(via)f(a)f(call)i(to)f Fl(SolveMap)p 2656 2338 29 4 v │ │ │ │ │ -32 w(clearData\(\))p Fm(.)44 b(The)31 b(\014v)m(e)i(scalars)227 │ │ │ │ │ -2451 y(are)e(then)f(set)h(and)f(the)g(v)m(ectors)i(are)f(allo)s(cated)h │ │ │ │ │ -(and)e(initialized.)227 2620 y Fk(Err)-5 b(or)38 b(che)-5 │ │ │ │ │ -b(cking:)48 b Fm(If)34 b Fl(solvemap)f Fm(is)h Fl(NULL)p │ │ │ │ │ -Fm(,)g(or)g Fl(symmetryflag)d Fm(is)k(in)m(v)-5 b(alid,)36 │ │ │ │ │ -b(or)f Fl(nfront)p Fm(,)f Fl(nblockUpper)p Fm(,)227 2733 │ │ │ │ │ -y Fl(nblockLower)28 b Fm(or)i Fl(nproc)f Fm(is)h(negativ)m(e,)j(an)d │ │ │ │ │ -(error)g(message)i(is)e(prin)m(ted)g(and)g(the)h(program)f(exits.)0 │ │ │ │ │ -3053 y Fb(1.2.4)112 b(Map)39 b(creation)e(metho)s(ds)111 │ │ │ │ │ -3267 y Fm(1.)46 b Fl(void)h(SolveMap_randomMap)c(\()k(SolveMap)f │ │ │ │ │ -(*solvemap,)f(int)i(symmetryflag,)1468 3380 y(IVL)g(*upperBlockIVL,)d │ │ │ │ │ -(IVL)j(*lowerBlockIVL,)c(int)k(nproc,)1468 3493 y(IV)g(*ownersIV,)e │ │ │ │ │ -(int)i(seed,)g(int)g(msglvl,)e(FILE)i(*msgFile\))e(;)227 │ │ │ │ │ -3661 y Fm(This)30 b(metho)s(d)g(maps)g(o\013diagonal)i(submatrices)e │ │ │ │ │ -(to)h(threads)f(or)g(pro)s(cesses)h(in)f(a)g(random)g(fashion.)227 │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fm(4)p 136 100 1016 4 v │ │ │ │ │ +1197 w Fl(SolveMap)29 b Fd(:)40 b Fk(DRAFT)30 b Fd(F)-8 │ │ │ │ │ +b(ebruary)31 b(18,)g(2025)p 2885 100 V 66 399 a Fm(11.)46 │ │ │ │ │ +b Fl(int)h(*)h(SolveMap_colidsLower)42 b(\()47 b(SolveMap)f(*solvemap)f │ │ │ │ │ +(\))j(;)227 567 y Fm(This)31 b(metho)s(d)g(returns)f │ │ │ │ │ +Fl(colidsLower)p Fm(,)f(a)j(p)s(oin)m(ter)f(to)h(the)g(v)m(ector)h(of)f │ │ │ │ │ +(column)f(ids)g(of)g(the)h(submatrices)227 680 y(in)e(the)h(upp)s(er)d │ │ │ │ │ +(triangle.)227 848 y Fk(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ │ +b Fm(If)30 b Fl(solvemap)e Fm(is)j Fl(NULL)p Fm(,)e(an)i(error)f │ │ │ │ │ +(message)h(is)g(prin)m(ted)e(and)h(the)h(program)f(exits.)66 │ │ │ │ │ +1072 y(12.)46 b Fl(int)h(*)h(SolveMap_mapLower)43 b(\()k(SolveMap)f │ │ │ │ │ +(*solvemap)f(\))i(;)227 1241 y Fm(This)39 b(metho)s(d)g(returns)f │ │ │ │ │ +Fl(mapLower)p Fm(,)h(a)h(p)s(oin)m(ter)f(to)i(the)e(v)m(ector)i(that)f │ │ │ │ │ +(maps)f(the)g(submatrices)h(in)f(the)227 1354 y(upp)s(er)29 │ │ │ │ │ +b(triangle)i(to)g(threads)f(or)h(pro)s(cesses.)227 1522 │ │ │ │ │ +y Fk(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fm(If)30 b │ │ │ │ │ +Fl(solvemap)e Fm(is)j Fl(NULL)p Fm(,)e(an)i(error)f(message)h(is)g │ │ │ │ │ +(prin)m(ted)e(and)h(the)h(program)f(exits.)0 1843 y Fb(1.2.3)112 │ │ │ │ │ +b(Initialization)39 b(metho)s(d)111 2057 y Fm(1.)46 b │ │ │ │ │ +Fl(void)h(SolveMap_init)d(\()k(SolveMap)d(*solvemap,)g(int)i │ │ │ │ │ +(symmetryflag,)d(int)j(nfront,)1230 2170 y(int)f(nproc,)h(int)f │ │ │ │ │ +(nblockUpper,)f(nblockLower)g(\))i(;)227 2338 y Fm(An)m(y)33 │ │ │ │ │ +b(previously)f(o)m(wned)g(data)h(is)f(cleared)i(via)f(a)f(call)i(to)f │ │ │ │ │ +Fl(SolveMap)p 2656 2338 29 4 v 32 w(clearData\(\))p Fm(.)44 │ │ │ │ │ +b(The)31 b(\014v)m(e)i(scalars)227 2451 y(are)e(then)f(set)h(and)f(the) │ │ │ │ │ +g(v)m(ectors)i(are)f(allo)s(cated)h(and)e(initialized.)227 │ │ │ │ │ +2620 y Fk(Err)-5 b(or)38 b(che)-5 b(cking:)48 b Fm(If)34 │ │ │ │ │ +b Fl(solvemap)f Fm(is)h Fl(NULL)p Fm(,)g(or)g Fl(symmetryflag)d │ │ │ │ │ +Fm(is)k(in)m(v)-5 b(alid,)36 b(or)f Fl(nfront)p Fm(,)f │ │ │ │ │ +Fl(nblockUpper)p Fm(,)227 2733 y Fl(nblockLower)28 b │ │ │ │ │ +Fm(or)i Fl(nproc)f Fm(is)h(negativ)m(e,)j(an)d(error)g(message)i(is)e │ │ │ │ │ +(prin)m(ted)g(and)g(the)h(program)f(exits.)0 3053 y Fb(1.2.4)112 │ │ │ │ │ +b(Map)39 b(creation)e(metho)s(ds)111 3267 y Fm(1.)46 │ │ │ │ │ +b Fl(void)h(SolveMap_randomMap)c(\()k(SolveMap)f(*solvemap,)f(int)i │ │ │ │ │ +(symmetryflag,)1468 3380 y(IVL)g(*upperBlockIVL,)d(IVL)j │ │ │ │ │ +(*lowerBlockIVL,)c(int)k(nproc,)1468 3493 y(IV)g(*ownersIV,)e(int)i │ │ │ │ │ +(seed,)g(int)g(msglvl,)e(FILE)i(*msgFile\))e(;)227 3661 │ │ │ │ │ +y Fm(This)30 b(metho)s(d)g(maps)g(o\013diagonal)i(submatrices)e(to)h │ │ │ │ │ +(threads)f(or)g(pro)s(cesses)h(in)f(a)g(random)g(fashion.)227 │ │ │ │ │ 3830 y Fk(Err)-5 b(or)43 b(che)-5 b(cking:)59 b Fm(If)39 │ │ │ │ │ b Fl(solvemap)p Fm(,)i Fl(upperBlockIVL)36 b Fm(or)k │ │ │ │ │ Fl(ownersIV)d Fm(is)j Fl(NULL)p Fm(,)f(or)h(if)f Fl(symmetryflag)e │ │ │ │ │ Fm(is)227 3943 y(in)m(v)-5 b(alid,)31 b(an)g(error)f(message)h(is)g │ │ │ │ │ (prin)m(ted)f(and)f(the)i(program)f(exits.)111 4167 y(2.)46 │ │ │ │ │ b Fl(void)h(SolveMap_ddMap)d(\()j(SolveMap)f(*solvemap,)f(int)i │ │ │ │ │ (symmetryflag,)1277 4280 y(IVL)g(*upperBlockIVL,)d(IVL)j │ │ │ │ │ @@ -4669,17 +4676,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 1035 4 v 1216 100 a Fl(SolveMap)28 │ │ │ │ │ -b Fd(:)41 b Fk(DRAFT)121 b Fd(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2818 100 V 1035 w Fm(5)0 399 y Fb(1.2.5)112 b(Solv)m(e)38 │ │ │ │ │ +TeXDict begin 5 4 bop 91 100 1016 4 v 1197 100 a Fl(SolveMap)28 │ │ │ │ │ +b Fd(:)41 b Fk(DRAFT)121 b Fd(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2838 100 V 1016 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 │ │ │ │ │ @@ -4747,29 +4754,29 @@ │ │ │ │ │ b(ject)35 b(that)f(con)m(tains)h(the)f(aggregate)i(coun)m(t)f(for)e(a)h │ │ │ │ │ (forw)m(ard)f(solv)m(e.)52 b(If)227 5407 y Fl(myid)32 │ │ │ │ │ b Fm(o)m(wns)g(fron)m(t)h Fl(J)p Fm(,)g(then)f(en)m(try)h │ │ │ │ │ Fl(J)f Fm(of)h(the)g(returned)f Fl(IV)g Fm(ob)5 b(ject)33 │ │ │ │ │ b(con)m(tains)h(the)f(n)m(um)m(b)s(er)e(of)i(pro)s(cesses)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 6 6 │ │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fm(6)p 136 100 1035 4 v │ │ │ │ │ -1217 w Fl(SolveMap)28 b Fd(:)40 b Fk(DRAFT)31 b Fd(Jan)m(uary)f(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ -Fl(solvemap)f Fm(is)i Fl(NULL)e Fm(or)i Fl(nlist)46 b(<)h(0)32 │ │ │ │ │ -b Fm(then)f(an)h(error)f(message)i(is)e(prin)m(ted)h(and)f(the)227 │ │ │ │ │ -778 y(program)f(exits.)0 1058 y Fb(1.2.7)112 b(IO)38 │ │ │ │ │ -b(metho)s(ds)0 1258 y Fm(There)20 b(are)g(the)h(usual)f(eigh)m(t)h(IO)f │ │ │ │ │ -(routines.)37 b(The)20 b(\014le)g(structure)g(of)h(a)f │ │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fm(6)p 136 100 1016 4 v │ │ │ │ │ +1197 w Fl(SolveMap)29 b Fd(:)40 b Fk(DRAFT)30 b Fd(F)-8 │ │ │ │ │ +b(ebruary)31 b(18,)g(2025)p 2885 100 V 227 399 a Fm(\(other)d(than)e │ │ │ │ │ +Fl(myid)p Fm(\))g(that)i(o)m(wn)f(an)f Fj(L)1522 413 │ │ │ │ │ +y Fi(J)p Fh(;)p Fi(I)1643 399 y Fm(submatrix,)h(\(or)h │ │ │ │ │ +Fj(U)2304 413 y Fi(I)p Fh(;)p Fi(J)2425 399 y Fm(submatrix)e(if)h │ │ │ │ │ +(symmetric)g(or)g(hermitian\))227 511 y(and)j(so)h(is)f(the)h(n)m(um)m │ │ │ │ │ +(b)s(er)e(of)h(incoming)h(aggregate)i(submatrices)e(pro)s(cess)f │ │ │ │ │ +Fl(myid)f Fm(exp)s(ects)i(for)f(fron)m(t)g Fl(J)p Fm(.)227 │ │ │ │ │ +665 y Fk(Err)-5 b(or)35 b(che)-5 b(cking:)43 b Fm(If)31 │ │ │ │ │ +b Fl(solvemap)f Fm(is)i Fl(NULL)e Fm(or)i Fl(nlist)46 │ │ │ │ │ +b(<)h(0)32 b Fm(then)f(an)h(error)f(message)i(is)e(prin)m(ted)h(and)f │ │ │ │ │ +(the)227 778 y(program)f(exits.)0 1058 y Fb(1.2.7)112 │ │ │ │ │ +b(IO)38 b(metho)s(ds)0 1258 y Fm(There)20 b(are)g(the)h(usual)f(eigh)m │ │ │ │ │ +(t)h(IO)f(routines.)37 b(The)20 b(\014le)g(structure)g(of)h(a)f │ │ │ │ │ Fl(SolveMap)e Fm(ob)5 b(ject)21 b(is)g(simple:)35 b Fl(symmetryflag)p │ │ │ │ │ Fm(,)0 1371 y Fl(nfront)p Fm(,)21 b Fl(nproc)p Fm(,)g │ │ │ │ │ Fl(nblockUpper)c Fm(and)j Fl(nblockLower)p Fm(,)f(follo)m(w)m(ed)j(b)m │ │ │ │ │ (y)e Fl(owners[*])p Fm(,)g Fl(rowidsUpper[*])p Fm(,)f │ │ │ │ │ Fl(colidsUpper[*])0 1484 y Fm(and)h Fl(mapidsUpper[*])p │ │ │ │ │ Fm(,)e(and)i(if)g Fl(symmetryflag)45 b(=)i(SPOOLES)p │ │ │ │ │ 2180 1484 29 4 v 33 w(NONSYMMETRIC)p Fm(,)17 b(follo)m(w)m(ed)22 │ │ │ │ │ @@ -4836,17 +4843,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 1035 4 v 1216 100 a Fl(SolveMap)28 │ │ │ │ │ -b Fd(:)41 b Fk(DRAFT)121 b Fd(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2818 100 V 1035 w Fm(7)111 399 y(6.)46 b Fl(int)h │ │ │ │ │ +TeXDict begin 7 6 bop 91 100 1016 4 v 1197 100 a Fl(SolveMap)28 │ │ │ │ │ +b Fd(:)41 b Fk(DRAFT)121 b Fd(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2838 100 V 1016 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 16, 2024 │ │ │ │ │ │ + 2 SolveMap : DRAFT February 18, 2025 │ │ │ │ │ │ • int nblockLower – number of submatrices in the lower triangle │ │ │ │ │ │ • int *rowidsLower – vector of row ids for the lower triangle │ │ │ │ │ │ • int *colidsLower – vector of column ids for the lower triangle │ │ │ │ │ │ • int *mapLower – map from submatrices to threads or processes processes │ │ │ │ │ │ 1.2 Prototypes and descriptions of SolveMap methods │ │ │ │ │ │ This section contains brief descriptions including prototypes of all methods that belong to the │ │ │ │ │ │ SolveMap object. │ │ │ │ │ │ @@ -50,15 +50,15 @@ │ │ │ │ │ │ This method releases any storage by a call to SolveMap clearData() then free’s the storage │ │ │ │ │ │ for the structure with a call to free(). │ │ │ │ │ │ Error checking: If solvemap is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 1.2.2 Instance methods │ │ │ │ │ │ 1. int SolveMap_symmetryflag ( SolveMap *solvemap ) ; │ │ │ │ │ │ This method returns symmetryflag, the symmetry flag. │ │ │ │ │ │ Error checking: If solvemap is NULL, an error message is printed and the program exits. │ │ │ │ │ │ - SolveMap : DRAFT January 16, 2024 3 │ │ │ │ │ │ + SolveMap : DRAFT February 18, 2025 3 │ │ │ │ │ │ 2. int SolveMap_nfront ( SolveMap *solvemap ) ; │ │ │ │ │ │ This method returns nfront, the number of fronts. │ │ │ │ │ │ Error checking: If solvemap is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 3. int SolveMap_nproc ( SolveMap *solvemap ) ; │ │ │ │ │ │ This method returns nproc, the number of threads or processes. │ │ │ │ │ │ Error checking: If solvemap is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 4. int SolveMap_nblockUpper ( SolveMap *solvemap ) ; │ │ │ │ │ │ @@ -84,15 +84,15 @@ │ │ │ │ │ │ This method returns mapUpper, a pointer to the vector that maps the submatrices in the │ │ │ │ │ │ upper triangle to threads or processes. │ │ │ │ │ │ Error checking: If solvemap is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 10. int * SolveMap_rowidsLower ( SolveMap *solvemap ) ; │ │ │ │ │ │ This method returns rowidsLower, a pointer to the vector of row ids of the submatrices in │ │ │ │ │ │ the lower triangle. │ │ │ │ │ │ Error checking: If solvemap is NULL, an error message is printed and the program exits. │ │ │ │ │ │ - 4 SolveMap : DRAFT January 16, 2024 │ │ │ │ │ │ + 4 SolveMap : DRAFT February 18, 2025 │ │ │ │ │ │ 11. int * SolveMap_colidsLower ( SolveMap *solvemap ) ; │ │ │ │ │ │ This method returns colidsLower, a pointer to the vector of column ids of the submatrices │ │ │ │ │ │ in the upper triangle. │ │ │ │ │ │ Error checking: If solvemap is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 12. int * SolveMap_mapLower ( SolveMap *solvemap ) ; │ │ │ │ │ │ This method returns mapLower, a pointer to the vector that maps the submatrices in the │ │ │ │ │ │ upper triangle to threads or processes. │ │ │ │ │ │ @@ -118,15 +118,15 @@ │ │ │ │ │ │ fashion. A domain is a subtree of fronts that are owned by the same thread or process. │ │ │ │ │ │ Furthermore, a domain is maximal, i.e., the parent of the root domain (if it exists) is owned │ │ │ │ │ │ by a different process. If J belongs to a domain, then for all K, LK,J and UJ,K are owned by │ │ │ │ │ │ the thread or process that owns the domain. All other submatrices are mapped to threads or │ │ │ │ │ │ processes in a random fashion. │ │ │ │ │ │ Error checking: If solvemap, upperBlockIVL or ownersIV is NULL, or if symmetryflag is │ │ │ │ │ │ invalid, an error message is printed and the program exits. │ │ │ │ │ │ - SolveMap : DRAFT January 16, 2024 5 │ │ │ │ │ │ + SolveMap : DRAFT February 18, 2025 5 │ │ │ │ │ │ 1.2.5 Solve setup methods │ │ │ │ │ │ 1. IP ** SolveMap_forwardSetup ( SolveMap *solvemap, int myid, │ │ │ │ │ │ int msglvl, FILE *msgFile ) ; │ │ │ │ │ │ IP ** SolveMap_backwardSetup ( SolveMap *solvemap, int myid, │ │ │ │ │ │ int msglvl, FILE *msgFile ) ; │ │ │ │ │ │ ThesetwomethodsreturnavectorofpointerstoIPobjectsthatcontainthelistofsubmatrices │ │ │ │ │ │ that thread or process myid will use during the forward or backward solves. │ │ │ │ │ │ @@ -157,15 +157,15 @@ │ │ │ │ │ │ submatrices process myid expects for front J. │ │ │ │ │ │ Error checking: If solvemap is NULL or nlist < 0 then an error message is printed and the │ │ │ │ │ │ program exits. │ │ │ │ │ │ 5. IV * SolveMap_lowerAggregateIV ( SolveMap *solvemap, int myid │ │ │ │ │ │ int msglvl, FILE *msgFile ) ; │ │ │ │ │ │ This method returns an IV object that contains the aggregate count for a forward solve. If │ │ │ │ │ │ myid owns front J, then entry J of the returned IV object contains the number of processes │ │ │ │ │ │ - 6 SolveMap : DRAFT January 16, 2024 │ │ │ │ │ │ + 6 SolveMap : DRAFT February 18, 2025 │ │ │ │ │ │ (other than myid) that own an L submatrix, (or U submatrix if symmetric or hermitian) │ │ │ │ │ │ J,I I,J │ │ │ │ │ │ and so is the number of incoming aggregate submatrices process myid expects for front J. │ │ │ │ │ │ Error checking: If solvemap is NULL or nlist < 0 then an error message is printed and the │ │ │ │ │ │ program exits. │ │ │ │ │ │ 1.2.7 IO methods │ │ │ │ │ │ TherearetheusualeightIOroutines. ThefilestructureofaSolveMapobjectissimple: symmetryflag, │ │ │ │ │ │ @@ -194,15 +194,15 @@ │ │ │ │ │ │ Error checking: If solvemap or fn are NULL, or if fn is not of the form *.solvemapf (for a │ │ │ │ │ │ formatted file) or *.solvemapb (for a binary file), an error message is printed and the method │ │ │ │ │ │ returns zero. │ │ │ │ │ │ 5. int SolveMap_writeToFormattedFile ( SolveMap *solvemap, FILE *fp ) ; │ │ │ │ │ │ This method writes an SolveMap object to a formatted file. If there are no errors in writing │ │ │ │ │ │ the data, the value 1 is returned. If an IO error is encountered from fprintf, zero is returned. │ │ │ │ │ │ Error checking: If solvemap or fp are NULL an error message is printed and zero is returned. │ │ │ │ │ │ - SolveMap : DRAFT January 16, 2024 7 │ │ │ │ │ │ + SolveMap : DRAFT February 18, 2025 7 │ │ │ │ │ │ 6. int SolveMap_writeToBinaryFile ( SolveMap *solvemap, FILE *fp ) ; │ │ │ │ │ │ This method writes an SolveMap object to a binary file. If there are no errors in writing the │ │ │ │ │ │ data, the value 1 is returned. If an IO error is encountered from fwrite, zero is returned. │ │ │ │ │ │ Error checking: If solvemap or fp are NULL an error message is printed and zero is returned. │ │ │ │ │ │ 7. int SolveMap_writeForHumanEye ( SolveMap *solvemap, FILE *fp ) ; │ │ │ │ │ │ This method writes an SolveMap object to a file in an easily readable format. The method │ │ │ │ │ │ SolveMap writeStats() is called to write out the header and statistics. The value 1 is │ │ │ ├── ./usr/share/doc/spooles-doc/SubMtx.ps.gz │ │ │ │ ├── SubMtx.ps │ │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ │ %%EndComments │ │ │ │ │ %%BeginDefaults │ │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ │ %%EndDefaults │ │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ │ %DVIPSCommandLine: dvips main -o SubMtx.ps │ │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ │ -%DVIPSSource: TeX output 2024.01.16:2047 │ │ │ │ │ +%DVIPSSource: TeX output 2025.02.18:0318 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -2120,20 +2120,21 @@ │ │ │ │ │ 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 52 /four put │ │ │ │ │ -dup 54 /six put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ +dup 56 /eight put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 74 /J put │ │ │ │ │ +dup 70 /F put │ │ │ │ │ dup 97 /a put │ │ │ │ │ -dup 110 /n put │ │ │ │ │ +dup 98 /b put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ dup 114 /r put │ │ │ │ │ dup 117 /u put │ │ │ │ │ dup 121 /y put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ @@ -2317,89 +2318,93 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ │ -C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ │ -6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ │ -11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ │ -1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ │ -A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ │ -F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ │ -EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ │ -033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ │ -A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ │ -468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8A71FF9C085003EBB4F4 │ │ │ │ │ -3D271F5B16B1AAD3EBDC391F534AA46E545E9D8659DD19B309C3B7625A8396FA │ │ │ │ │ -2519464539D46E43ACB72952313C8497315E0319C08628023E8FC54D7D3BAC29 │ │ │ │ │ -D5AD8EFDABF0C33C7AFB7151A6606C62A87F0F5F783569AC4C881A992E3FE420 │ │ │ │ │ -297F7BC5147F3B2FA98450D2F8B07F7D229BC8BE06729920CFEC22556740E1CB │ │ │ │ │ -3DE09AC763C6D4A20AD1599C368FABD07BC35C16683F2A0311A88983415A9140 │ │ │ │ │ -2EFC4BC1B10DCAD4B2B8A28510E5BD39D6616D2B9B079ED3CF9C315B7DEC29D9 │ │ │ │ │ -251DFD0194B34EC175964C23383F23FFB2E41B698C405815D65EAFF9E9DD1DDE │ │ │ │ │ -30F77924656C288B8DDB2E5B0E7B1FAA66791DE3848EE6DE63AD0E945E49C6C7 │ │ │ │ │ -9FCA16E01F027F9EF7ACB55F02F5B0136480802F789F6FE14B430879979BA04D │ │ │ │ │ -F481AD4CF47E6847936F377FB04869F9A80E597301BFCAB718D8764094673876 │ │ │ │ │ -BCEF8FA3701608C84B3A0399A11D2E6AD922CCB7D72AF9EBFB30F4648A37A123 │ │ │ │ │ -CB8FB14BDC351692CF0CCAA5CA9383C2B23BAAA38700327EB743FBBE9EE04041 │ │ │ │ │ -13F5CEF4B3881BBC051C33369A82B3505B1CFD7D91AEF2E43EA728EE48E2D854 │ │ │ │ │ -5A7E516998ACDD4FD835FA901C5A21810A56D51FE919B2E58408EEB4DAEB487F │ │ │ │ │ -BA7F1D292CED902DF3533566D96DAD918319EA650D4FC7D9E0170CDE620F755B │ │ │ │ │ -0E7AE02D9B118481B26F5FF7060FBCFA2A682B6826F00679BCDA68794C05286D │ │ │ │ │ -B616DD08372ACDE0AE6E7EF116F0D36F16241ED4F0E8CCD80377792E3BB1343C │ │ │ │ │ -EEB22CC77738F7CBCBA32CF6C3979F6DF7ED81A89AE8928FD7CC550F2730BA88 │ │ │ │ │ -1B51CEDC63F4C47F261AFCAB7AC3CED20B15C97E714A460A1A3B16436B4A5149 │ │ │ │ │ -8F91DA4BE0B9B648534CE5F442117036B602DC91E2852BEA62F55803B833FDF7 │ │ │ │ │ -9F901AB87489E703DDEED1091A79DC73B4440BBBF2C7592B441187C4A3562204 │ │ │ │ │ -859F08BA3CE2A8ECCD5AAD13C50FB806FE79A388F1822C5608837CBDE526A044 │ │ │ │ │ -12E5CDE4A066932AF2ACA7E8FC6BA4603640944718752975B7DA6E906BE1EA01 │ │ │ │ │ -46736FF5D1AA1CC682D011B6039CF98C35E36D4F14ABC84A38B7203CC9A17756 │ │ │ │ │ -B2B0345276798F1A88A54AD9FEA0853C6DDF28525ED4F0B7380D14147012C2A4 │ │ │ │ │ -5B02888C986C76497EA4C729B0B82EE73C1A1A8E8F1ABF401E341028E9C15AF9 │ │ │ │ │ -354706D8DC07492921AD0932A46736C0D1B066D00287DACCC068FAE6A796EC89 │ │ │ │ │ -54D1D73AA88F3A5912BA9D3FF70065C8D0D0DAD1CD846501E06694374EFDBEC6 │ │ │ │ │ -931F644D5E8494AFC742423AD9A487658E310E0682BE19B8475F4D450487A686 │ │ │ │ │ -2B94494DEAF1C0F59DE82F2CE64BEE5E97F942FCFA1187ED6AA5761E951A7BF7 │ │ │ │ │ -9F842E34A4656C58B35A9E99F7E6762CEE11E0CF59FFD75D7382C5EE6DBB43F1 │ │ │ │ │ -ED219071D3FB22DBA90977723BB467C0490D042684C0724F40DCA3E0D8F1F4E7 │ │ │ │ │ -3C4F9A67BE6528185EAAFDD415224F7E256A4EA00111C17C746CBD80BF569A27 │ │ │ │ │ -D81195D7F79C1CCEEF30ED00D49F48B63E4B8D7953403A3710AE953CC1B76F0F │ │ │ │ │ -F523D777A6A186F262A602543F94AF7471DBE25FEBC207DB42DAF7DC9A5781FB │ │ │ │ │ -2131AD42869D966A734AAE3466DF1CE9D1BCFA72409A558C0AEE6A8E2FEAACB6 │ │ │ │ │ -2CDABCC28433034848ACF9FB4465D272E4AFC48572647F05F41C7A293CC5B595 │ │ │ │ │ -AD31555FB708A72962707348BC7033A8224BD42EB9D75FDF3AE9E6A9C960B330 │ │ │ │ │ -5137DF59F8E2E0D535F41524ABDF070745A4FA25CD8DFD38A5FF30A95452B875 │ │ │ │ │ -6569E8812631300D79A942C563AF174AC05C9F2D09D7D5D3C605F5A6B7F21B34 │ │ │ │ │ -18F270A993B050838E701A17938D1C156CBA7CA4BAC7C562CE9D7B758EAB25A9 │ │ │ │ │ -A6DFFC71F65561341847B776DF34061CE3D439B87B857626987EC93B3B95B8E8 │ │ │ │ │ -76FFB16B263675333FA10414FEED707FF7C366BF8B20FF8577CDEBEBCF1A5BCE │ │ │ │ │ -258C09C90175A5278B7C444A623E3331FDE5A6387B3E389540ED1E7E883958F3 │ │ │ │ │ -3A5C89CCD62256FA069DF4A5090FB17C1F1757C9209DAFB8A1F47182BF3E88D9 │ │ │ │ │ -0B5376B59EE165A761902759C8ED7F5AD301E7EB8B49CC09AF921DB45B7F8002 │ │ │ │ │ -AB32E73AAE53942DE0F9175D8446017006C9C0B93EF39C13B7A879F2F6DDFF16 │ │ │ │ │ -204BB24F976847CF006FD29332FCCB255B5116F7077A44F7066C39C81DC4BAD2 │ │ │ │ │ -40DB2753626C0102E5D047522ABC38EA294A699B8DFD9CA0A7980561A1062E90 │ │ │ │ │ -AB11EE286A9C238D9F721D9980D0A1828C2814972622D948CEE8C812C19A9A03 │ │ │ │ │ -608ED0AC138A436FFBF8BE3D1E66C87793416AF38ED9BC5424568A175FBDAA9E │ │ │ │ │ -D6FC11A7021693819B051562B5A59F32629E2D6019D69DD329BE1894A2B295E1 │ │ │ │ │ -1DCE9683B29AE126C56F26E5C595BF1A8249BDE231DBE8B066F7F62EF149B975 │ │ │ │ │ -A863969A4690504A5EA064721DA909B8157C0B39FBF8228D95CB655E406161E1 │ │ │ │ │ -148610FAEED7C5509880223C06A66DA19E10F94DC2DB481B26 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004FD597ED │ │ │ │ │ +EFDBC64ABD9B79386FB2427D1A63522195B1239C09F8CB3F8BD7A245A6DD82E3 │ │ │ │ │ +260C3889587626DFC5F7978E55F5524ABD6A3319CDD3D3F40D040044D51DA4E1 │ │ │ │ │ +6797EEAC7AA07C77EC6DB0E6E182B545A8BEF63B14F3FC07BAC09E7CD5C17ED6 │ │ │ │ │ +10080704B0DA4E9BA12F968DF8A58458D17E9A5B1F14A83DC51F5B161ADEE1CC │ │ │ │ │ +0183D82ED92C6FC7203C289949EDF0284D9893029FF5408E421324625F17C3E5 │ │ │ │ │ +2437C8F75A9D68EE1AF9174FEA6FC6BF793C7D2E497EA90396CF1A645E283B69 │ │ │ │ │ +8425F47C323587DF91E1D596DCB1E3A787C955D9D965A5E3E26ADF58B62AD5F9 │ │ │ │ │ +0C9AC784DE479780606354111E3202F215650DBBE1063A46F3C10B9EBC974DDA │ │ │ │ │ +A1A28DBBD43E9E5BFF000B12C787D0427928078F8EC5FE90DED97E6C129E8DEA │ │ │ │ │ +51F66504DB83764E52B0BA68DF7BE684C8959CB1D3345CC48221A9A4683306C0 │ │ │ │ │ +62B634E0A539383F0C7A788D9711EFF414869CCC5659D78CEBE009BF2463F56A │ │ │ │ │ +0ADC993348FE96DF7C250E13ED6504AACFE8F8DCA2D2048D9D8CFA127D363EAC │ │ │ │ │ +1F0630E2D1B621E6954038195D965B91FD974FA3F1B8B29D200A16CEBA645E2F │ │ │ │ │ +CEEE6FD49FBBD49E38AE67D4BFFCE91F1FC422554EC4409C5FA18D40FCD6D9B3 │ │ │ │ │ +2185ED1E0F98106D4339F086B05CA36E56EC22C60E2CE23F9C4CC403ACAD3F94 │ │ │ │ │ +4086B4DF6DFA0B7B4716417263E7B558535566AED2F6C2F9846A16D71A7930A7 │ │ │ │ │ +49232D3D16C4A01CF1A1998A06F40062ED329179A85668537C55D0BC24FC0010 │ │ │ │ │ +54DA83E2FC66B2A5D428E6A9BFC983253668C0ECE6CA36DBF97C4B7659D50842 │ │ │ │ │ +C65B36604840EEDA399B57E2DEFAC3E7FB031634CE33D04238F9854D2AAAF448 │ │ │ │ │ +34DA5F3BCCED3166FEEE82BB0BBA0A397CC2F95865CB52AABFF454D93B425809 │ │ │ │ │ +A26AC459F321FD23E2262FE816D06BAAECF32AAF167F84799AF80F9F88388D07 │ │ │ │ │ +0DB5FD57AFEE2850A8DFE977E6AE39CB3DC16DB1A163A583C86C6F775CE33521 │ │ │ │ │ +0081C0BBBAD6D30D26C66B28B38CEAC78FEA5FB3CC5853656B67C6D9D80EB30E │ │ │ │ │ +397558C9179AF5920F34DAB3F578DFCF0DBB137AED17D6325C23883E69EE4621 │ │ │ │ │ +34355A70C19EA68891E1CA937376901C85CDEE109F1665943E29A216DC00937A │ │ │ │ │ +B983A729A4654AD09187C0242D52FA4ADD0853EF4888864914D7D81C56578DD4 │ │ │ │ │ +3B51907032022E6E412D4F114675DEDCA8A9E85DC03A0B583FECD84432D15F70 │ │ │ │ │ +01F627BD6EC91F9FCFDA01BF40E1229B5F164309DBB641AD50970503DA2048C1 │ │ │ │ │ +DF8F36E8D252EE113F0B46677D9BAF376BAE18D74CFB0DBBD0C7E9D0A58BA3ED │ │ │ │ │ +1E5099CAE073EB5638617760AB57849893764EA9735173CD1EAB66884CEA7EE3 │ │ │ │ │ +8843327B2E145BD6FBB49102776B82BC511D109F8BE9E7E99DADABABEDC3CFD9 │ │ │ │ │ +393578FFD85907DFF2849E4CDE6FA4DEC7E1C150EBE4047FFB650F9548BE6D11 │ │ │ │ │ +0C51226A5436F18BF20A02E0F888F46B6AC3A8E8D927ECD3B5E095933AD3859F │ │ │ │ │ +5167C41D832EFCC4093BD2AFA7101AB430E57DAFC3590F05D3CBABB32BC203A0 │ │ │ │ │ +467B23BDB830487C9AA5B85BAC065F8538871B4180F8C4732E637DB090CFDE5A │ │ │ │ │ +3F4F2B5BFAFB848BAAD1A17CB076B34159601639BD93ECAB1214ACABF2C67FE2 │ │ │ │ │ +0658AA20B08681070FF56F1CC52144ABA8765D6E124D1CEA9BBA102808CE1BB2 │ │ │ │ │ +5EDF46BC7BBC2A5B49EE6EC28F5797A3969B057B21FCDBBD0E60848FF14F6CA3 │ │ │ │ │ +70F3060BDBB019B22722C99C7691760F013763B7FBEB62830AE215F195BF9F01 │ │ │ │ │ +21BF4377397E89574CFA47D123AA506A570A77BA6EB4AAB0B237A26154880293 │ │ │ │ │ +3952F832F72ECCB024F02385E5EE8566B165904B594E30D0700D033C6B429F6F │ │ │ │ │ +2A20BC774F442BC9CE29FCC81807C2768A8BC927A215558FBF36DC53F477F04A │ │ │ │ │ +41DA66E1A85B659EB761230977EAD7DA0150513D3323B143D4E2A61BCF03334C │ │ │ │ │ +C0EE3E1B06CFAF58ECC910BD81F0352B75FF1594D6A4EF504232D442174BE766 │ │ │ │ │ +0F8E703F97E21D25D4CD097549C31FEE7017C3916EFB02E7BF869172889827B6 │ │ │ │ │ +A48465EB7612BA3DBC6A9436C7167F149A25CE9F8E3F4F8DE3B5ADF6C0986CB3 │ │ │ │ │ +3A7E2DAB44AB489796461536F5F713017F2620AD03295CAE9285F08974AE0DF8 │ │ │ │ │ +D739260929619B509491AFF09C4CAEF9E65C2CA69470C907ECBF3AB6C955360D │ │ │ │ │ +05ABAC306DB51122A1ADC7EF0DD70FA299A45C505A83727D4598C86319EE9C06 │ │ │ │ │ +7218EFD4F40388354BCF1B79593D5AD221DF955D081F99F880E5CED07321AB3E │ │ │ │ │ +A2FCB8B05D54807D8E15E65B78DCE12989B9276350080C905DBB74CE9AA7E246 │ │ │ │ │ +5D3BAED292C562D4CF54617FCC6654496C7996D1ECE1EFF9258716AB763A12E6 │ │ │ │ │ +316E4C5587351A6DB011F58F6A15BC28BEBDC3836E0CB892807FEC228DC1B380 │ │ │ │ │ +92F7F42279F08D60F13D6A4CB425543C3644461461CBF6F27B6603F613D1FCF8 │ │ │ │ │ +A8410AD82D1498166AEB35D4125D7E2ADEAAB18BC04806AED53513F066E5F154 │ │ │ │ │ +3E13E863C50B9814EE2FB978D0D24A03FAF650CB6E2CADF1E6BE6BAF699AFC03 │ │ │ │ │ +E1A0EEB207B3B9A689ED5B373FE86686AD230BE6C18E1673DDA50E224B343EC5 │ │ │ │ │ +903BA0C8041C13607B50D5852AC7970B15C244E6EBA7D54B3086312CF04761D6 │ │ │ │ │ +7D3D75D51F20C371494AB81AB4A9838B20B483B851D01FEF41EA5C0B4755B964 │ │ │ │ │ +EB6E9B178051C556A010994EB88EAE641F4C1A0D7E0F98D5267E18AEF1AEA7E7 │ │ │ │ │ +9030A97DF89AFF621981C33B645FFB5F3BB2065A7661D11B26E0999561DF3580 │ │ │ │ │ +4A76A05DFAF8085525F8D5C01936F03C32E26E72569371C9EA3B8916F9DFC5FC │ │ │ │ │ +6A6F25A0FFDB981BA8B896393D75774D50828E6ADE903C45406E354703A4BC56 │ │ │ │ │ +2C49A47FEAC970DC433E3050C49F7FB945A9705BD8852D2D65D935F244D3B423 │ │ │ │ │ +EFAB84AAAAB8FBAFF50AFF372A533BCCEB5FC273DBADCF715776DF02A5DCBA9A │ │ │ │ │ +FBF265FAB4745D6475B33611EEE1EA95E7584E0BEEC7CA789AA69C8D03D6F8C0 │ │ │ │ │ +5B6844E2B901ACA560C0433B053D134866E567425174E47173679AAD4486A2D3 │ │ │ │ │ +369C29E4DD2CD6ACA1BE80ED8FF0A9C58A616D26E758BD8E6342624EC83FB590 │ │ │ │ │ +BD354B52B60BB054FAFE9AC63E1564FBC721FE8F276B0413EC89A2C85E5ED1B0 │ │ │ │ │ +3A9D83BE62A4488ADE7CE69971A8AF7E5862A4290EEF6F00D4171C7FFB360065 │ │ │ │ │ +92E72BF02BE27161AE0BB5516572A0BDC4F316FFB24B38484AC8D1FD4CD86062 │ │ │ │ │ +A2B5D03CF28C3A679C039A6EFDD4C9DA7E463AD60234C9F6BBEE48D87DD94D85 │ │ │ │ │ +842F495F3E25723718682CE4D6224CBBF4456F03077EDF736D65B9DDAB09470E │ │ │ │ │ +17742D82011FFA96BFE86B96E858F9352FCD20C3D46B77DBDEE54336EC2249EA │ │ │ │ │ +211F6DFFF5BEA1E5192BE1BAC0BDD5EDDB3D56C6F7C6E543561A0B39E5C1B04F │ │ │ │ │ +C683A7516B6E69D682455386DDA709929D621FA434D403E895AA0A77DBE1DFD2 │ │ │ │ │ +0D060DF82378880147ED97C6E8149686FA048710B113760AC1DA4512FF8556B3 │ │ │ │ │ +16E2447485B8C3CD58D0469C4A45FFB4CB0322BB284C02 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -5244,17 +5249,18 @@ │ │ │ │ │ 86 1[62 3[84 5[42 6[80 10[56 56 56 56 56 56 56 2[31 46[{}31 │ │ │ │ │ 99.6264 /CMBX12 rf /Fd 135[62 2[62 62 4[62 4[62 4[62 │ │ │ │ │ 1[62 62 14[62 5[62 77[{}10 119.552 /CMTT12 rf /Fe 134[71 │ │ │ │ │ 2[71 75 52 53 55 1[75 67 75 112 3[37 75 67 41 61 75 60 │ │ │ │ │ 1[65 13[75 2[92 11[103 16[67 67 67 2[37 46[{}25 119.552 │ │ │ │ │ /CMBX12 rf /Ff 138[49 30 37 38 1[46 46 51 1[23 42 1[28 │ │ │ │ │ 46 42 1[42 46 42 1[46 12[65 1[66 11[59 62 69 2[68 6[28 │ │ │ │ │ -58[{}23 90.9091 /CMTI10 rf /Fg 134[48 3[51 2[36 3[51 │ │ │ │ │ -12[45 22[47 15[25 3[45 1[45 1[45 45 45 3[25 44[{}13 90.9091 │ │ │ │ │ -/CMSL10 rf /Fh 132[52 123[{}1 90.9091 /CMBX10 rf │ │ │ │ │ +58[{}23 90.9091 /CMTI10 rf /Fg 134[48 3[51 2[36 12[40 │ │ │ │ │ +2[51 45 26[59 11[25 1[45 2[45 2[45 45 45 3[25 44[{}14 │ │ │ │ │ +90.9091 /CMSL10 rf /Fh 132[52 123[{}1 90.9091 /CMBX10 │ │ │ │ │ +rf │ │ │ │ │ %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 │ │ │ │ │ @@ -5378,39 +5384,40 @@ │ │ │ │ │ y Fh({)45 b Fo(sparse)30 b(using)g(dense)g(sub)s(columns)330 │ │ │ │ │ 5111 y Fh({)45 b Fo(sparse)30 b(using)g(sparse)g(ro)m(ws)330 │ │ │ │ │ 5259 y Fh({)45 b Fo(sparse)30 b(using)g(sparse)g(columns)330 │ │ │ │ │ 5407 y Fh({)45 b Fo(sparse)30 b(using)g(\()p Fm(i;)15 │ │ │ │ │ b(j;)g(a)1170 5421 y Fl(i;j)1252 5407 y Fo(\))31 b(triples)1927 │ │ │ │ │ 5656 y(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fo(2)p 136 100 1082 4 v │ │ │ │ │ -1264 w Fn(SubMtx)29 b Fg(:)41 b Ff(DRAFT)30 b Fg(Jan)m(uary)g(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ -909 y(hermitian)31 b(inde\014nite)f(factorization.)137 │ │ │ │ │ -1092 y Fi(\210)45 b Fo(The)30 b Fn(SubMtx)e Fo(ob)5 b(ject)31 │ │ │ │ │ -b(can)f(b)s(e)g(self-con)m(tained,)i(in)d(the)i(sense)f(that)g(its)h │ │ │ │ │ -(structure)e(con)m(tains)i(a)g Fn(DV)e Fo(ob)5 b(ject)227 │ │ │ │ │ -1205 y(that)27 b(manages)f(a)g(con)m(tiguous)h(v)m(ector)h(of)e(w)m │ │ │ │ │ -(orkspace)g(that)h(is)f(used)f(to)h(store)g(all)h(information)f(ab)s │ │ │ │ │ -(out)g(the)227 1318 y Fn(SubMtx)31 b Fo(ob)5 b(ject)34 │ │ │ │ │ -b(|)e(its)h(scalar)g(parameters,)h(an)m(y)f(in)m(teger)h(index)e(or)g │ │ │ │ │ -(dimension)g(information,)i(and)e(all)227 1431 y(matrix)e(en)m(tries.) │ │ │ │ │ -41 b(In)29 b(a)g(distributed)g(en)m(vironmen)m(t,)h(this)f(allo)m(ws)i │ │ │ │ │ -(a)f Fn(SubMtx)d Fo(ob)5 b(ject)31 b(to)f(b)s(e)e(sen)m(t)i(b)s(et)m(w) │ │ │ │ │ -m(een)227 1544 y(pro)s(cessors)j(as)h(one)g(message,)i(no)d(cop)m(ying) │ │ │ │ │ -h(to)h(an)e(in)m(ternal)h(bu\013er)f(is)g(needed,)i(nor)e(an)m(y)g │ │ │ │ │ -(custom)h(data)227 1657 y(t)m(yp)s(e)e(needs)f(to)h(b)s(e)e(de\014ned)g │ │ │ │ │ -(as)i(for)f(MPI.)g(In)g(an)g(out-of-core)i(en)m(vironmen)m(t,)g(a)e │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fo(2)p 136 100 1063 4 v │ │ │ │ │ +1245 w Fn(SubMtx)29 b Fg(:)41 b Ff(DRAFT)30 b Fg(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2837 100 V 330 399 a Fh({)45 │ │ │ │ │ +b Fo(a)31 b(diagonal)h(matrix)330 541 y Fh({)45 b Fo(a)c(blo)s(c)m(k)g │ │ │ │ │ +(diagonal)g(symmetric)g(matrix)f(where)g(the)g(blo)s(c)m(ks)h(are)g(1) │ │ │ │ │ +27 b Fj(\002)f Fo(1)41 b(or)f(2)28 b Fj(\002)e Fo(2,)43 │ │ │ │ │ +b(used)d(in)g(the)427 654 y(symmetric)31 b(inde\014nite)f │ │ │ │ │ +(factorization.)330 796 y Fh({)45 b Fo(a)d(blo)s(c)m(k)f(diagonal)h │ │ │ │ │ +(Hermitian)g(matrix)f(where)f(the)h(blo)s(c)m(ks)h(are)f(1)27 │ │ │ │ │ +b Fj(\002)g Fo(1)42 b(or)e(2)28 b Fj(\002)f Fo(2,)44 │ │ │ │ │ +b(used)c(in)h(the)427 909 y(hermitian)31 b(inde\014nite)f │ │ │ │ │ +(factorization.)137 1092 y Fi(\210)45 b Fo(The)30 b Fn(SubMtx)e │ │ │ │ │ +Fo(ob)5 b(ject)31 b(can)f(b)s(e)g(self-con)m(tained,)i(in)d(the)i │ │ │ │ │ +(sense)f(that)g(its)h(structure)e(con)m(tains)i(a)g Fn(DV)e │ │ │ │ │ +Fo(ob)5 b(ject)227 1205 y(that)27 b(manages)f(a)g(con)m(tiguous)h(v)m │ │ │ │ │ +(ector)h(of)e(w)m(orkspace)g(that)h(is)f(used)f(to)h(store)g(all)h │ │ │ │ │ +(information)f(ab)s(out)g(the)227 1318 y Fn(SubMtx)31 │ │ │ │ │ +b Fo(ob)5 b(ject)34 b(|)e(its)h(scalar)g(parameters,)h(an)m(y)f(in)m │ │ │ │ │ +(teger)h(index)e(or)g(dimension)g(information,)i(and)e(all)227 │ │ │ │ │ +1431 y(matrix)e(en)m(tries.)41 b(In)29 b(a)g(distributed)g(en)m │ │ │ │ │ +(vironmen)m(t,)h(this)f(allo)m(ws)i(a)f Fn(SubMtx)d Fo(ob)5 │ │ │ │ │ +b(ject)31 b(to)f(b)s(e)e(sen)m(t)i(b)s(et)m(w)m(een)227 │ │ │ │ │ +1544 y(pro)s(cessors)j(as)h(one)g(message,)i(no)d(cop)m(ying)h(to)h(an) │ │ │ │ │ +e(in)m(ternal)h(bu\013er)f(is)g(needed,)i(nor)e(an)m(y)g(custom)h(data) │ │ │ │ │ +227 1657 y(t)m(yp)s(e)e(needs)f(to)h(b)s(e)e(de\014ned)g(as)i(for)f │ │ │ │ │ +(MPI.)g(In)g(an)g(out-of-core)i(en)m(vironmen)m(t,)g(a)e │ │ │ │ │ Fn(SubMtx)f Fo(ob)5 b(ject)32 b(can)g(b)s(e)227 1770 │ │ │ │ │ y(read)f(from)e(or)i(written)f(to)h(a)g(\014le)g(b)m(y)f(a)h(single)g │ │ │ │ │ (op)s(eration.)141 1970 y(The)k Fn(SubMtx)e Fo(ob)5 b(ject)35 │ │ │ │ │ b(is)g(a)h(sup)s(erset)d(of)i(the)h Fn(DenseMtx)c Fo(ob)5 │ │ │ │ │ b(ject)36 b(in)e(terms)h(of)g(data)h(structure)e(and)h(func-)0 │ │ │ │ │ 2083 y(tionalit)m(y)-8 b(.)42 b(If)27 b(w)m(e)g(w)m(ere)g(w)m(orking)g │ │ │ │ │ (in)g(a)g(language)h(that)f(supp)s(orts)e(inheritance,)k │ │ │ │ │ @@ -5459,17 +5466,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 1082 4 v 1264 100 a Fn(SubMtx)28 │ │ │ │ │ -b Fg(:)41 b Ff(DRAFT)121 b Fg(Jan)m(uary)30 b(16,)i(2024)p │ │ │ │ │ -2771 100 V 1082 w Fo(3)330 399 y Fh({)45 b Fn(SPOOLES)p │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1063 4 v 1245 100 a Fn(SubMtx)28 │ │ │ │ │ +b Fg(:)41 b Ff(DRAFT)121 b Fg(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2790 100 V 1063 w Fo(3)330 399 y Fh({)45 b Fn(SPOOLES)p │ │ │ │ │ 769 399 29 4 v 33 w(COMPLEX)28 b Fo(:)j(double)f(precision)g(complex)h │ │ │ │ │ (en)m(tries.)137 590 y Fi(\210)45 b Fn(int)i(mode)29 │ │ │ │ │ b Fo(:)41 b(storage)32 b(mo)s(de.)330 781 y Fh({)45 b │ │ │ │ │ Fn(SUBMTX)p 721 781 V 33 w(DENSE)p 994 781 V 33 w(ROWS)29 │ │ │ │ │ b Fo(:)i(dense,)f(storage)i(b)m(y)e(ro)m(ws.)330 929 │ │ │ │ │ y Fh({)45 b Fn(SUBMTX)p 721 929 V 33 w(DENSE)p 994 929 │ │ │ │ │ V 33 w(COLUMNS)28 b Fo(:)j(dense,)f(storage)i(b)m(y)e(columns.)330 │ │ │ │ │ @@ -5531,19 +5538,19 @@ │ │ │ │ │ g(storage)h(format,)f(and)f Fn(0)g Fo(other-)227 5103 │ │ │ │ │ y(wise.)137 5294 y Fi(\210)45 b Fn(SUBMTX)p 521 5294 │ │ │ │ │ V 33 w(IS)p 650 5294 V 34 w(SPARSE)p 972 5294 V 33 w(COLUMNS\(mtx\))25 │ │ │ │ │ b Fo(is)30 b Fn(1)e Fo(if)h Fn(mtx)g Fo(has)g(sparse)f(columns)h(as)h │ │ │ │ │ (its)f(storage)i(format,)f(and)e Fn(0)227 5407 y Fo(otherwise.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fo(4)p 136 100 1082 4 v │ │ │ │ │ -1264 w Fn(SubMtx)29 b Fg(:)41 b Ff(DRAFT)30 b Fg(Jan)m(uary)g(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fo(4)p 136 100 1063 4 v │ │ │ │ │ +1245 w Fn(SubMtx)29 b Fg(:)41 b Ff(DRAFT)30 b Fg(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2837 100 V 137 399 a Fi(\210)45 │ │ │ │ │ +b Fn(SUBMTX)p 521 399 29 4 v 33 w(IS)p 650 399 V 34 w(SPARSE)p │ │ │ │ │ +972 399 V 33 w(TRIPLES\(mtx\))24 b Fo(is)k Fn(1)g Fo(if)g │ │ │ │ │ Fn(mtx)f Fo(has)g(sparse)h(triples)g(as)g(its)g(storage)i(format,)f │ │ │ │ │ Fn(0)e Fo(other-)227 511 y(wise.)137 691 y Fi(\210)45 │ │ │ │ │ b Fn(SUBMTX)p 521 691 V 33 w(IS)p 650 691 V 34 w(DENSE)p │ │ │ │ │ 924 691 V 33 w(SUBROWS\(mtx\))25 b Fo(is)j Fn(1)g Fo(if)g │ │ │ │ │ Fn(mtx)g Fo(has)g(dense)g(subro)m(ws)f(as)i(its)f(storage)i(format,)f │ │ │ │ │ Fn(0)f Fo(other-)227 804 y(wise.)137 984 y Fi(\210)45 │ │ │ │ │ b Fn(SUBMTX)p 521 984 V 33 w(IS)p 650 984 V 34 w(DENSE)p │ │ │ │ │ @@ -5605,17 +5612,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 1082 4 v 1264 100 a Fn(SubMtx)28 │ │ │ │ │ -b Fg(:)41 b Ff(DRAFT)121 b Fg(Jan)m(uary)30 b(16,)i(2024)p │ │ │ │ │ -2771 100 V 1082 w Fo(5)0 399 y Fc(1.2.2)112 b(Instance)38 │ │ │ │ │ +TeXDict begin 5 4 bop 91 100 1063 4 v 1245 100 a Fn(SubMtx)28 │ │ │ │ │ +b Fg(:)41 b Ff(DRAFT)121 b Fg(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2790 100 V 1063 w Fo(5)0 399 y Fc(1.2.2)112 b(Instance)38 │ │ │ │ │ b(metho)s(ds)111 597 y Fo(1.)46 b Fn(void)h(SubMtx_ids)e(\()i(SubMtx)f │ │ │ │ │ (*mtx,)h(int)g(*prowid,)e(int)i(*pcolid)f(\))h(;)227 │ │ │ │ │ 748 y Fo(This)30 b(metho)s(d)g(\014lls)g Fn(*prowid)e │ │ │ │ │ Fo(with)i(the)h(ro)m(w)f(id)g(and)g Fn(*pcolid)f Fo(with)h(the)g │ │ │ │ │ (column)g(id)g(of)h(the)g(ob)5 b(ject.)227 900 y Ff(Err)-5 │ │ │ │ │ b(or)27 b(che)-5 b(cking:)36 b Fo(If)22 b Fn(mtx)p Fo(,)h │ │ │ │ │ Fn(prowid)e Fo(or)h Fn(pcolid)f Fo(is)h Fn(NULL)p Fo(,)g(an)g(error)g │ │ │ │ │ @@ -5683,21 +5690,21 @@ │ │ │ │ │ (address)f(of)i(the)227 5294 y Fn(sizes[nrow])24 b Fo(v)m(ector)k(that) │ │ │ │ │ g(con)m(tains)g(the)f(n)m(um)m(b)s(er)e(of)i(en)m(tries)h(in)e(eac)m(h) │ │ │ │ │ i(ro)m(w,)g Fn(*indices)c Fo(with)j(the)g(base)227 5407 │ │ │ │ │ y(address)41 b(of)g(the)h Fn(indices[nent])c Fo(v)m(ector)43 │ │ │ │ │ b(that)f(con)m(tains)g(the)g(column)f(index)g(for)g(eac)m(h)h(en)m(try) │ │ │ │ │ -8 b(,)46 b(and)p eop end │ │ │ │ │ %%Page: 6 6 │ │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fo(6)p 136 100 1082 4 v │ │ │ │ │ -1264 w Fn(SubMtx)29 b Fg(:)41 b Ff(DRAFT)30 b Fg(Jan)m(uary)g(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fo(6)p 136 100 1063 4 v │ │ │ │ │ +1245 w Fn(SubMtx)29 b Fg(:)41 b Ff(DRAFT)30 b Fg(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2837 100 V 227 399 a Fn(*pentries)g │ │ │ │ │ +Fo(with)i(the)g(base)g(address)f(of)i Fn(entries[nent])29 │ │ │ │ │ +b Fo(v)m(ector.)51 b(The)32 b(indices)h(and)g(en)m(tries)h(for)f(the) │ │ │ │ │ +227 511 y(ro)m(ws)e(are)f(stored)h(con)m(tiguously)-8 │ │ │ │ │ +b(.)227 662 y Ff(Err)j(or)28 b(che)-5 b(cking:)37 b Fo(If)24 │ │ │ │ │ b Fn(mtx)p Fo(,)h Fn(pnrow)p Fo(,)f Fn(pnent)p Fo(,)g │ │ │ │ │ Fn(psizes)p Fo(,)g Fn(pindices)d Fo(or)j Fn(pentries)e │ │ │ │ │ Fo(is)i Fn(NULL)p Fo(,)f(or)h(if)g(the)h(matrix)227 775 │ │ │ │ │ y(t)m(yp)s(e)31 b(is)f(not)h Fn(SUBMTX)p 979 775 29 4 │ │ │ │ │ v 33 w(SPARSE)p 1300 775 V 32 w(ROWS)p Fo(,)f(an)g(error)g(message)h │ │ │ │ │ (is)g(prin)m(ted)f(and)g(the)g(program)g(exits.)111 964 │ │ │ │ │ y(8.)46 b Fn(void)h(SubMtx_sparseColumnsInfo)41 b(\()48 │ │ │ │ │ @@ -5780,17 +5787,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 1082 4 v 1264 100 a Fn(SubMtx)28 │ │ │ │ │ -b Fg(:)41 b Ff(DRAFT)121 b Fg(Jan)m(uary)30 b(16,)i(2024)p │ │ │ │ │ -2771 100 V 1082 w Fo(7)227 399 y(column)38 b Fn(jcol)p │ │ │ │ │ +TeXDict begin 7 6 bop 91 100 1063 4 v 1245 100 a Fn(SubMtx)28 │ │ │ │ │ +b Fg(:)41 b Ff(DRAFT)121 b Fg(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2790 100 V 1063 w Fo(7)227 399 y(column)38 b Fn(jcol)p │ │ │ │ │ Fo(,)h(the)g(nonzero)f(en)m(tries)h(are)f(found)f(in)h(ro)m(ws)g │ │ │ │ │ Fn([firstlocs[jcol],lastlo)o(cs[j)o(col])o(])227 511 │ │ │ │ │ y Fo(when)32 b Fn(firstlocs[jcol])24 b Fj(\025)k Fo(0)33 │ │ │ │ │ b(and)f Fn(firstlocs[jcol])24 b Fj(\024)29 b Fn(lastlocs[jcol])l │ │ │ │ │ Fo(.)47 b(The)31 b(en)m(tries)j(for)e(the)227 624 y(columns)e(are)h │ │ │ │ │ (stored)g(con)m(tiguously)-8 b(.)227 787 y Ff(Err)j(or)32 │ │ │ │ │ b(che)-5 b(cking:)39 b Fo(If)28 b Fn(mtx)p Fo(,)g Fn(pnrow)p │ │ │ │ │ @@ -5865,21 +5872,21 @@ │ │ │ │ │ Fn(pReal)e Fo(or)i Fn(pImag)e Fo(is)i Fn(NULL)p Fo(,)f(or)h(if)g │ │ │ │ │ Fn(irow)e Fo(or)i Fn(jcol)f Fo(is)h(out)g(of)g(range,)h(an)e(error)227 │ │ │ │ │ 5082 y(message)g(is)e(prin)m(ted)g(and)g(the)g(program)h(exits.)66 │ │ │ │ │ 5294 y(16.)46 b Fn(void)95 b(SubMtx_locationOfRealEn)o(try)41 │ │ │ │ │ b(\()48 b(SubMtx)e(*mtx,)g(int)h(irow,)f(int)h(jcol,)1898 │ │ │ │ │ 5407 y(double)f(**ppValue)f(\))j(;)p eop end │ │ │ │ │ %%Page: 8 8 │ │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fo(8)p 136 100 1082 4 v │ │ │ │ │ -1264 w Fn(SubMtx)29 b Fg(:)41 b Ff(DRAFT)30 b Fg(Jan)m(uary)g(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fo(8)p 136 100 1063 4 v │ │ │ │ │ +1245 w Fn(SubMtx)29 b Fg(:)41 b Ff(DRAFT)30 b Fg(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2837 100 V 227 399 a Fo(If)i(the)g │ │ │ │ │ +Fn(\(irow,jcol\))d Fo(en)m(try)j(is)g(presen)m(t,)h(this)f(metho)s(d)g │ │ │ │ │ +(\014lls)g Fn(*ppValue)d Fo(with)j(a)h(p)s(oin)m(ter)f(to)g(the)h(en)m │ │ │ │ │ +(try)227 511 y(in)d(ro)m(w)f Fn(irow)g Fo(and)g(column)p │ │ │ │ │ +Fn(jcol)p Fo(.)41 b(Otherwise,)30 b Fn(*ppValue)f Fo(is)h(set)i(to)f │ │ │ │ │ Fn(NULL)p Fo(.)f(Note,)i Fn(irow)e Fo(and)g Fn(jcol)g │ │ │ │ │ Fo(are)227 624 y Ff(lo)-5 b(c)g(al)32 b Fo(indices,)f(i.e.,)h(0)26 │ │ │ │ │ b Fj(\024)f Fn(irow)f Fj(\024)h Fn(nrow)k Fo(and)h(0)25 │ │ │ │ │ b Fj(\024)g Fn(jcol)g Fj(\024)f Fn(ncol)o Fo(.)227 786 │ │ │ │ │ y Ff(Err)-5 b(or)29 b(che)-5 b(cking:)38 b Fo(If)24 b │ │ │ │ │ Fn(mtx)g Fo(or)h Fn(ppValue)e Fo(is)h Fn(NULL)p Fo(,)g(or)h(if)g │ │ │ │ │ Fn(irow)f Fo(or)g Fn(jcol)g Fo(is)h(out)g(of)g(range,)i(an)d(error)h │ │ │ │ │ @@ -5948,17 +5955,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 1082 4 v 1264 100 a Fn(SubMtx)28 │ │ │ │ │ -b Fg(:)41 b Ff(DRAFT)121 b Fg(Jan)m(uary)30 b(16,)i(2024)p │ │ │ │ │ -2771 100 V 1082 w Fo(9)111 399 y(4.)46 b Fn(void)h │ │ │ │ │ +TeXDict begin 9 8 bop 91 100 1063 4 v 1245 100 a Fn(SubMtx)28 │ │ │ │ │ +b Fg(:)41 b Ff(DRAFT)121 b Fg(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2790 100 V 1063 w Fo(9)111 399 y(4.)46 b Fn(void)h │ │ │ │ │ (SubMtx_initRandomLowerTr)o(iang)o(le)41 b(\()48 b(SubMtx)e(*mtx,)g │ │ │ │ │ (int)h(type,)g(int)g(mode,)370 511 y(int)g(rowid,)f(int)h(colid,)f(int) │ │ │ │ │ h(nrow,)g(int)g(ncol,)f(int)h(nent,)f(int)h(seed,)g(int)f(strict)h(\))g │ │ │ │ │ (;)227 624 y(void)g(SubMtx_initRandomUpperTr)o(iang)o(le)41 │ │ │ │ │ b(\()48 b(SubMtx)e(*mtx,)g(int)h(type,)g(int)g(mode,)370 │ │ │ │ │ 737 y(int)g(rowid,)f(int)h(colid,)f(int)h(nrow,)g(int)g(ncol,)f(int)h │ │ │ │ │ (nent,)f(int)h(seed,)g(int)f(strict)h(\))g(;)227 885 │ │ │ │ │ @@ -6040,19 +6047,19 @@ │ │ │ │ │ (er)e(triangular,)j(then)f Fn(mtxA)e Fo(m)m(ust)i(ha)m(v)m(e)h(dense)f │ │ │ │ │ (sub)s(columns)d(or)j(sparse)227 5260 y(columns.)227 │ │ │ │ │ 5407 y Ff(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fo(If)30 │ │ │ │ │ b Fn(mtxA)g Fo(or)g Fn(mtxB)f Fo(is)i Fn(NULL)p Fo(,)e(an)h(error)g │ │ │ │ │ (message)i(is)e(prin)m(ted)g(and)g(the)g(program)h(exits.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 10 10 │ │ │ │ │ -TeXDict begin 10 9 bop 0 100 a Fo(10)p 182 100 1060 4 │ │ │ │ │ -v 1242 w Fn(SubMtx)29 b Fg(:)40 b Ff(DRAFT)31 b Fg(Jan)m(uary)f(16,)h │ │ │ │ │ -(2024)p 2841 100 V 111 399 a Fo(2.)46 b Fn(void)h(SubMtx_solveH)d(\()k │ │ │ │ │ -(SubMtx)e(*mtxA,)g(SubMtx)g(*mtxB)g(\))i(;)227 547 y │ │ │ │ │ -Fo(This)24 b(metho)s(d)f(is)h(used)g(to)h(solv)m(e)g(\()p │ │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fo(10)p 182 100 1041 4 │ │ │ │ │ +v 1223 w Fn(SubMtx)29 b Fg(:)40 b Ff(DRAFT)30 b Fg(F)-8 │ │ │ │ │ +b(ebruary)31 b(18,)g(2025)p 2860 100 V 111 399 a Fo(2.)46 │ │ │ │ │ +b Fn(void)h(SubMtx_solveH)d(\()k(SubMtx)e(*mtxA,)g(SubMtx)g(*mtxB)g(\)) │ │ │ │ │ +i(;)227 547 y Fo(This)24 b(metho)s(d)f(is)h(used)g(to)h(solv)m(e)g(\()p │ │ │ │ │ Fm(I)15 b Fo(+)8 b Fm(A)1598 514 y Fl(H)1665 547 y Fo(\))p │ │ │ │ │ Fm(X)33 b Fo(=)25 b Fm(B)5 b Fo(,)26 b(where)d Fm(A)i │ │ │ │ │ Fo(is)f(strict)h(lo)m(w)m(er)g(or)f(upp)s(er)e(triangular.)39 │ │ │ │ │ b(The)227 660 y(solution)32 b Fm(X)38 b Fo(o)m(v)m(erwrites)32 │ │ │ │ │ b Fm(B)5 b Fo(,)31 b(and)f Fn(mtxB)g Fo(m)m(ust)g(ha)m(v)m(e)i(dense)f │ │ │ │ │ (columns.)42 b(If)30 b Fm(A)h Fo(is)g(strict)g(lo)m(w)m(er)h │ │ │ │ │ (triangular,)227 773 y(then)27 b Fn(mtxA)g Fo(m)m(ust)g(ha)m(v)m(e)i │ │ │ │ │ @@ -6123,17 +6130,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 1060 4 v 1241 100 a Fn(SubMtx)29 │ │ │ │ │ -b Fg(:)40 b Ff(DRAFT)122 b Fg(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2748 100 V 1060 w Fo(11)227 399 y Ff(Err)-5 b(or)34 b(che)-5 │ │ │ │ │ +TeXDict begin 11 10 bop 91 100 1041 4 v 1222 100 a Fn(SubMtx)29 │ │ │ │ │ +b Fg(:)40 b Ff(DRAFT)121 b Fg(F)-8 b(ebruary)31 b(18,)g(2025)p │ │ │ │ │ +2767 100 V 1041 w Fo(11)227 399 y Ff(Err)-5 b(or)34 b(che)-5 │ │ │ │ │ b(cking:)40 b Fo(If)30 b Fn(mtx)g Fo(is)g Fn(NULL)p Fo(,)g(an)g(error)g │ │ │ │ │ (message)h(is)g(prin)m(ted)f(and)g(the)g(program)g(exits.)111 │ │ │ │ │ 606 y(3.)46 b Fn(int)h(SubMtx_nbytesInWorkspace)41 b(\()48 │ │ │ │ │ b(SubMtx)e(*mtx)h(\))g(;)227 766 y Fo(This)30 b(metho)s(d)g(returns)f │ │ │ │ │ (the)h(n)m(um)m(b)s(er)f(of)i(b)m(ytes)g(in)f(the)g(w)m(orkspace)i(o)m │ │ │ │ │ (wned)e(b)m(y)g(this)g(ob)5 b(ject.)227 926 y Ff(Err)-5 │ │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fo(If)30 b Fn(mtx)g Fo(is)g │ │ │ │ │ @@ -6191,37 +6198,37 @@ │ │ │ │ │ Fo(of)j(the)f Fn(mtx)227 5134 y Fo(ob)5 b(ject)32 b(in)m(to)f(the)f │ │ │ │ │ Fn(colDV)f Fo(v)m(ector)j(ob)5 b(ject.)227 5294 y Ff(Err)-5 │ │ │ │ │ b(or)30 b(che)-5 b(cking:)38 b Fo(If)26 b Fn(mtx)f Fo(or)h │ │ │ │ │ Fn(colDV)e Fo(is)i Fn(NULL)p Fo(,)f(or)h(if)g Fn(jcol)f │ │ │ │ │ Fo(is)h(out)g(of)g(range,)i(an)e(error)f(message)i(is)f(prin)m(ted)227 │ │ │ │ │ 5407 y(and)k(the)h(program)f(exits.)p eop end │ │ │ │ │ %%Page: 12 12 │ │ │ │ │ -TeXDict begin 12 11 bop 0 100 a Fo(12)p 182 100 1060 │ │ │ │ │ -4 v 1242 w Fn(SubMtx)29 b Fg(:)40 b Ff(DRAFT)31 b Fg(Jan)m(uary)f(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ -Fn(irow)f Fo(is)h(out)g(of)g(range,)i(an)e(error)f(message)i(is)f(prin) │ │ │ │ │ -m(ted)227 929 y(and)k(the)h(program)f(exits.)66 1121 │ │ │ │ │ -y(12.)46 b Fn(void)h(SubMtx_fillColumnZV)42 b(\()48 b(SubMtx)e(*mtx,)g │ │ │ │ │ -(int)h(jcol,)g(ZV)g(*rowZV)f(\))h(;)227 1273 y Fo(This)26 │ │ │ │ │ -b(metho)s(d)g(is)g(used)g(for)g(complex)i(submatrices.)39 │ │ │ │ │ -b(It)26 b(copies)i(the)e(en)m(tries)i(in)e(column)g Fn(jcol)f │ │ │ │ │ -Fo(of)i(the)g Fn(mtx)227 1386 y Fo(ob)5 b(ject)32 b(in)m(to)f(the)f │ │ │ │ │ -Fn(colZV)f Fo(v)m(ector)j(ob)5 b(ject.)227 1538 y Ff(Err)-5 │ │ │ │ │ -b(or)30 b(che)-5 b(cking:)38 b Fo(If)26 b Fn(mtx)f Fo(or)h │ │ │ │ │ -Fn(colZV)e Fo(is)i Fn(NULL)p Fo(,)f(or)h(if)g Fn(jcol)f │ │ │ │ │ -Fo(is)h(out)g(of)g(range,)i(an)e(error)f(message)i(is)f(prin)m(ted)227 │ │ │ │ │ -1651 y(and)k(the)h(program)f(exits.)66 1843 y(13.)46 │ │ │ │ │ -b Fn(double)g(SubMtx_maxabs)f(\()i(SubMtx)f(*mtx)h(\))g(;)227 │ │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fo(12)p 182 100 1041 │ │ │ │ │ +4 v 1223 w Fn(SubMtx)29 b Fg(:)40 b Ff(DRAFT)30 b Fg(F)-8 │ │ │ │ │ +b(ebruary)31 b(18,)g(2025)p 2860 100 V 66 399 a Fo(11.)46 │ │ │ │ │ +b Fn(void)h(SubMtx_fillRowZV)c(\()48 b(SubMtx)e(*mtx,)g(int)h(irow,)f │ │ │ │ │ +(ZV)i(*rowZV)e(\))h(;)227 551 y Fo(This)35 b(metho)s(d)f(is)h(used)f │ │ │ │ │ +(for)h(complex)h(submatrices.)55 b(It)35 b(copies)h(the)f(en)m(tries)h │ │ │ │ │ +(in)e(ro)m(w)h Fn(irow)f Fo(of)i(the)f Fn(mtx)227 664 │ │ │ │ │ +y Fo(ob)5 b(ject)32 b(in)m(to)f(the)f Fn(rowZV)f Fo(v)m(ector)j(ob)5 │ │ │ │ │ +b(ject.)227 816 y Ff(Err)-5 b(or)30 b(che)-5 b(cking:)38 │ │ │ │ │ +b Fo(If)26 b Fn(mtx)f Fo(or)h Fn(rowZV)e Fo(is)i Fn(NULL)p │ │ │ │ │ +Fo(,)f(or)h(if)g Fn(irow)f Fo(is)h(out)g(of)g(range,)i(an)e(error)f │ │ │ │ │ +(message)i(is)f(prin)m(ted)227 929 y(and)k(the)h(program)f(exits.)66 │ │ │ │ │ +1121 y(12.)46 b Fn(void)h(SubMtx_fillColumnZV)42 b(\()48 │ │ │ │ │ +b(SubMtx)e(*mtx,)g(int)h(jcol,)g(ZV)g(*rowZV)f(\))h(;)227 │ │ │ │ │ +1273 y Fo(This)26 b(metho)s(d)g(is)g(used)g(for)g(complex)i │ │ │ │ │ +(submatrices.)39 b(It)26 b(copies)i(the)e(en)m(tries)i(in)e(column)g │ │ │ │ │ +Fn(jcol)f Fo(of)i(the)g Fn(mtx)227 1386 y Fo(ob)5 b(ject)32 │ │ │ │ │ +b(in)m(to)f(the)f Fn(colZV)f Fo(v)m(ector)j(ob)5 b(ject.)227 │ │ │ │ │ +1538 y Ff(Err)-5 b(or)30 b(che)-5 b(cking:)38 b Fo(If)26 │ │ │ │ │ +b Fn(mtx)f Fo(or)h Fn(colZV)e Fo(is)i Fn(NULL)p Fo(,)f(or)h(if)g │ │ │ │ │ +Fn(jcol)f Fo(is)h(out)g(of)g(range,)i(an)e(error)f(message)i(is)f(prin) │ │ │ │ │ +m(ted)227 1651 y(and)k(the)h(program)f(exits.)66 1843 │ │ │ │ │ +y(13.)46 b Fn(double)g(SubMtx_maxabs)f(\()i(SubMtx)f(*mtx)h(\))g(;)227 │ │ │ │ │ 1995 y Fo(This)27 b(metho)s(d)g(returns)f(the)h(magnitude)h(of)f(the)h │ │ │ │ │ (elemen)m(t)h(in)e(the)h(matrix)f(with)g(the)h(largest)h(magnitude.)227 │ │ │ │ │ 2147 y Ff(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fo(If)30 │ │ │ │ │ b Fn(mtx)g Fo(is)g Fn(NULL)p Fo(,)g(an)g(error)g(message)h(is)g(prin)m │ │ │ │ │ (ted)f(and)g(the)g(program)g(exits.)66 2339 y(14.)46 │ │ │ │ │ b Fn(void)h(SubMtx_zero)e(\()i(SubMtx)f(*mtx)h(\))g(;)227 │ │ │ │ │ 2491 y Fo(This)30 b(metho)s(d)g(zeros)h(the)f(en)m(tries)h(of)g(the)g │ │ │ │ │ @@ -6265,17 +6272,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 1060 4 v 1241 100 a Fn(SubMtx)29 │ │ │ │ │ -b Fg(:)40 b Ff(DRAFT)122 b Fg(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2748 100 V 1060 w Fo(13)227 399 y(Note,)40 b(if)c(the)g(m)m(txutation)i │ │ │ │ │ +TeXDict begin 13 12 bop 91 100 1041 4 v 1222 100 a Fn(SubMtx)29 │ │ │ │ │ +b Fg(:)40 b Ff(DRAFT)121 b Fg(F)-8 b(ebruary)31 b(18,)g(2025)p │ │ │ │ │ +2767 100 V 1041 w Fo(13)227 399 y(Note,)40 b(if)c(the)g(m)m(txutation)i │ │ │ │ │ (v)m(ectors)f(are)g(one-based)f(\(as)h(for)f(F)-8 b(ortran\),)39 │ │ │ │ │ b(they)e(are)f(con)m(v)m(erted)i(to)f(zero-)227 511 y(based)30 │ │ │ │ │ b(v)m(ectors.)227 660 y Ff(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ │ b Fo(If)30 b Fn(mtx)g Fo(or)g Fn(fp)g Fo(are)h Fn(NULL)p │ │ │ │ │ Fo(,)e(an)h(error)g(message)i(is)e(prin)m(ted)g(and)g(zero)h(is)g │ │ │ │ │ (returned.)111 843 y(4.)46 b Fn(int)h(SubMtx_writeToFile)c(\()k(SubMtx) │ │ │ │ │ g(*mtx,)f(char)h(*fn)f(\))i(;)227 991 y Fo(This)32 b(metho)s(d)g │ │ │ │ │ @@ -6344,20 +6351,20 @@ │ │ │ │ │ (follo)m(w)h(the)f(Matlab)h(and)e(F)m(OR)-8 b(TRAN)227 │ │ │ │ │ 5146 y(con)m(v)m(en)m(tion.)227 5294 y Ff(Err)j(or)45 │ │ │ │ │ b(che)-5 b(cking:)63 b Fo(If)42 b Fn(mtx)p Fo(,)i Fn(mtxname)c │ │ │ │ │ Fo(or)i Fn(fp)f Fo(are)h Fn(NULL)p Fo(,)f(an)h(error)f(message)i(is)f │ │ │ │ │ (prin)m(ted)g(and)f(zero)i(is)227 5407 y(returned.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 14 14 │ │ │ │ │ -TeXDict begin 14 13 bop 0 100 a Fo(14)p 182 100 1060 │ │ │ │ │ -4 v 1242 w Fn(SubMtx)29 b Fg(:)40 b Ff(DRAFT)31 b Fg(Jan)m(uary)f(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ +TeXDict begin 14 13 bop 0 100 a Fo(14)p 182 100 1041 │ │ │ │ │ +4 v 1223 w Fn(SubMtx)29 b Fg(:)40 b Ff(DRAFT)30 b Fg(F)-8 │ │ │ │ │ +b(ebruary)31 b(18,)g(2025)p 2860 100 V 0 399 a Fe(1.3)135 │ │ │ │ │ +b(Driv)l(er)46 b(programs)g(for)f(the)g Fd(SubMtx)58 │ │ │ │ │ +b(object)111 629 y Fo(1.)46 b Fn(testIO)g(msglvl)g(msgFile)g(inFile)g │ │ │ │ │ +(outFile)227 782 y Fo(This)c(driv)m(er)f(program)h(reads)g(in)g(a)g │ │ │ │ │ Fn(SubMtx)e Fo(ob)5 b(ject)43 b(from)f Fn(inFile)e Fo(and)i(writes)g │ │ │ │ │ (out)g(the)g(ob)5 b(ject)43 b(to)227 895 y Fn(outFile)337 │ │ │ │ │ 1114 y Fi(\210)i Fo(The)28 b Fn(msglvl)f Fo(parameter)i(determines)g │ │ │ │ │ (the)g(amoun)m(t)g(of)f(output)h(|)f(taking)i Fn(msglvl)46 │ │ │ │ │ b(>=)h(3)28 b Fo(means)427 1227 y(the)j Fn(SubMtx)e Fo(ob)5 │ │ │ │ │ b(ject)31 b(is)f(written)h(to)g(the)f(message)i(\014le.)337 │ │ │ │ │ 1376 y Fi(\210)45 b Fo(The)33 b Fn(msgFile)e Fo(parameter)j(determines) │ │ │ │ │ @@ -6421,17 +6428,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 1060 4 v 1241 100 a Fn(SubMtx)29 │ │ │ │ │ -b Fg(:)40 b Ff(DRAFT)122 b Fg(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2748 100 V 1060 w Fo(15)337 399 y Fi(\210)45 b Fo(The)33 │ │ │ │ │ +TeXDict begin 15 14 bop 91 100 1041 4 v 1222 100 a Fn(SubMtx)29 │ │ │ │ │ +b Fg(:)40 b Ff(DRAFT)121 b Fg(F)-8 b(ebruary)31 b(18,)g(2025)p │ │ │ │ │ +2767 100 V 1041 w Fo(15)337 399 y Fi(\210)45 b Fo(The)33 │ │ │ │ │ b Fn(msgFile)e Fo(parameter)j(determines)f(the)h(message)g(\014le)f(|)h │ │ │ │ │ (if)f Fn(msgFile)e Fo(is)i Fn(stdout)p Fo(,)g(then)g(the)427 │ │ │ │ │ 511 y(message)27 b(\014le)f(is)g Ff(stdout)p Fo(,)i(otherwise)e(a)h │ │ │ │ │ (\014le)f(is)f(op)s(ened)g(with)h Ff(app)-5 b(end)28 │ │ │ │ │ b Fo(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 624 │ │ │ │ │ y(data.)337 772 y Fi(\210)45 b Fo(The)30 b Fn(type)f │ │ │ │ │ Fo(parameter)i(m)m(ust)f(b)s(e)g(one)h(of)f(1)h(\()p │ │ │ │ │ @@ -6511,20 +6518,20 @@ │ │ │ │ │ b(When)35 b(the)g(output)f(\014le)h(is)227 5078 y(loaded)c(in)m(to)g │ │ │ │ │ (matlab,)h(the)e(last)i(lines)e(to)h(the)g(screen)f(con)m(tain)i(the)f │ │ │ │ │ (errors.)337 5294 y Fi(\210)45 b Fo(The)f Fn(msglvl)e │ │ │ │ │ Fo(parameter)j(determines)f(the)g(amoun)m(t)h(of)f(output.)82 │ │ │ │ │ b(Use)44 b Fn(msglvl)i(=)i(1)c Fo(for)g(just)427 5407 │ │ │ │ │ y(timing)31 b(output.)p eop end │ │ │ │ │ %%Page: 16 16 │ │ │ │ │ -TeXDict begin 16 15 bop 0 100 a Fo(16)p 182 100 1060 │ │ │ │ │ -4 v 1242 w Fn(SubMtx)29 b Fg(:)40 b Ff(DRAFT)31 b Fg(Jan)m(uary)f(16,)h │ │ │ │ │ -(2024)p 2841 100 V 337 399 a Fi(\210)45 b Fo(The)33 b │ │ │ │ │ -Fn(msgFile)e Fo(parameter)j(determines)f(the)h(message)g(\014le)f(|)h │ │ │ │ │ -(if)f Fn(msgFile)e Fo(is)i Fn(stdout)p Fo(,)g(then)g(the)427 │ │ │ │ │ -511 y(message)27 b(\014le)f(is)g Ff(stdout)p Fo(,)i(otherwise)e(a)h │ │ │ │ │ +TeXDict begin 16 15 bop 0 100 a Fo(16)p 182 100 1041 │ │ │ │ │ +4 v 1223 w Fn(SubMtx)29 b Fg(:)40 b Ff(DRAFT)30 b Fg(F)-8 │ │ │ │ │ +b(ebruary)31 b(18,)g(2025)p 2860 100 V 337 399 a Fi(\210)45 │ │ │ │ │ +b Fo(The)33 b Fn(msgFile)e Fo(parameter)j(determines)f(the)h(message)g │ │ │ │ │ +(\014le)f(|)h(if)f Fn(msgFile)e Fo(is)i Fn(stdout)p Fo(,)g(then)g(the) │ │ │ │ │ +427 511 y(message)27 b(\014le)f(is)g Ff(stdout)p Fo(,)i(otherwise)e(a)h │ │ │ │ │ (\014le)f(is)f(op)s(ened)g(with)h Ff(app)-5 b(end)28 │ │ │ │ │ b Fo(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 624 │ │ │ │ │ y(data.)337 767 y Fi(\210)45 b Fo(The)30 b Fn(type)f │ │ │ │ │ Fo(parameter)i(m)m(ust)f(b)s(e)g(one)h(of)f(1)h(\()p │ │ │ │ │ Fn(SPOOLES)p 2342 767 29 4 v 33 w(REAL)p Fo(\))f(or)g(2)h(\()p │ │ │ │ │ Fn(SPOOLES)p 3190 767 V 32 w(COMPLEX)p Fo(\).)337 910 │ │ │ │ │ y Fi(\210)45 b Fo(The)20 b Fn(mode)f Fo(parameter)i(m)m(ust)f(b)s(e)g │ │ │ │ │ @@ -6603,17 +6610,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 1060 4 v 1241 100 a Fn(SubMtx)29 │ │ │ │ │ -b Fg(:)40 b Ff(DRAFT)122 b Fg(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2748 100 V 1060 w Fo(17)337 399 y Fi(\210)45 b Fo(The)f │ │ │ │ │ +TeXDict begin 17 16 bop 91 100 1041 4 v 1222 100 a Fn(SubMtx)29 │ │ │ │ │ +b Fg(:)40 b Ff(DRAFT)121 b Fg(F)-8 b(ebruary)31 b(18,)g(2025)p │ │ │ │ │ +2767 100 V 1041 w Fo(17)337 399 y Fi(\210)45 b Fo(The)f │ │ │ │ │ Fn(msglvl)e Fo(parameter)j(determines)f(the)g(amoun)m(t)h(of)f(output.) │ │ │ │ │ 82 b(Use)44 b Fn(msglvl)i(=)i(1)c Fo(for)g(just)427 511 │ │ │ │ │ y(timing)31 b(output.)337 655 y Fi(\210)45 b Fo(The)33 │ │ │ │ │ b Fn(msgFile)e Fo(parameter)j(determines)f(the)h(message)g(\014le)f(|)h │ │ │ │ │ (if)f Fn(msgFile)e Fo(is)i Fn(stdout)p Fo(,)g(then)g(the)427 │ │ │ │ │ 767 y(message)27 b(\014le)f(is)g Ff(stdout)p Fo(,)i(otherwise)e(a)h │ │ │ │ │ (\014le)f(is)f(op)s(ened)g(with)h Ff(app)-5 b(end)28 │ │ │ │ │ @@ -6692,20 +6699,20 @@ │ │ │ │ │ (en)m(tries)g(in)f(the)h(submatrix,)g(when)e(appro-)427 │ │ │ │ │ 5121 y(priate.)337 5264 y Fi(\210)45 b Fo(The)30 b Fn(nrowX)f │ │ │ │ │ Fo(parameter)i(is)f(the)h(n)m(um)m(b)s(er)e(of)i(ro)m(ws)f(in)g │ │ │ │ │ Fm(X)7 b Fo(,)31 b Fn(nrowA)24 b Fj(\024)h Fn(nrowY)n │ │ │ │ │ Fo(.)337 5407 y Fi(\210)45 b Fo(The)30 b Fn(seed)f Fo(parameter)i(is)g │ │ │ │ │ (a)f(random)g(n)m(um)m(b)s(er)f(seed.)p eop end │ │ │ │ │ %%Page: 18 18 │ │ │ │ │ -TeXDict begin 18 17 bop 0 100 a Fo(18)p 182 100 1060 │ │ │ │ │ -4 v 1242 w Fn(SubMtx)29 b Fg(:)40 b Ff(DRAFT)31 b Fg(Jan)m(uary)f(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ +TeXDict begin 18 17 bop 0 100 a Fo(18)p 182 100 1041 │ │ │ │ │ +4 v 1223 w Fn(SubMtx)29 b Fg(:)40 b Ff(DRAFT)30 b Fg(F)-8 │ │ │ │ │ +b(ebruary)31 b(18,)g(2025)p 2860 100 V 111 399 a Fo(9.)46 │ │ │ │ │ +b Fn(test_sort)g(msglvl)g(msgFile)f(type)i(mode)g(nrowA)f(ncolA)g │ │ │ │ │ +(nentA)h(seed)227 549 y Fo(This)22 b(driv)m(er)h(program)f(tests)i(the) │ │ │ │ │ +f Fn(SubMtx)p 1688 549 29 4 v 32 w(sortRowsUp\(\))d Fo(and)i │ │ │ │ │ Fn(SubMtx)p 2773 549 V 33 w(sortColumnsUp\(\))c Fo(metho)s(ds.)227 │ │ │ │ │ 662 y(Use)34 b(the)g(script)f(\014le)h Fn(do)p 1073 662 │ │ │ │ │ V 33 w(sort)f Fo(for)g(testing.)51 b(When)33 b(the)h(output)f(\014le)g │ │ │ │ │ (is)h(loaded)g(in)m(to)g(matlab,)h(the)f(last)227 775 │ │ │ │ │ y(lines)d(to)g(the)g(screen)f(con)m(tain)i(the)e(errors.)337 │ │ │ │ │ 987 y Fi(\210)45 b Fo(The)f Fn(msglvl)e Fo(parameter)j(determines)f │ │ │ │ │ (the)g(amoun)m(t)h(of)f(output.)82 b(Use)44 b Fn(msglvl)i(=)i(1)c │ │ │ │ │ ├── ps2ascii {} │ │ │ │ │ │ @@ -23,15 +23,15 @@ │ │ │ │ │ │ – dense by columns, i.e., dense and column major │ │ │ │ │ │ – sparse using dense subrows │ │ │ │ │ │ – sparse using dense subcolumns │ │ │ │ │ │ – sparse using sparse rows │ │ │ │ │ │ – sparse using sparse columns │ │ │ │ │ │ – sparse using (i,j,ai,j) triples │ │ │ │ │ │ 1 │ │ │ │ │ │ - 2 SubMtx : DRAFT January 16, 2024 │ │ │ │ │ │ + 2 SubMtx : DRAFT February 18, 2025 │ │ │ │ │ │ – a diagonal matrix │ │ │ │ │ │ – a block diagonal symmetric matrix where the blocks are 1 × 1 or 2 × 2, used in the │ │ │ │ │ │ symmetric indefinite factorization. │ │ │ │ │ │ – a block diagonal Hermitian matrix where the blocks are 1 × 1 or 2 × 2, used in the │ │ │ │ │ │ hermitian indefinite factorization. │ │ │ │ │ │ • The SubMtx object can be self-contained, in the sense that its structure contains a DV object │ │ │ │ │ │ that manages a contiguous vector of workspace that is used to store all information about the │ │ │ │ │ │ @@ -60,15 +60,15 @@ │ │ │ │ │ │ information is better than using explicit structure fields. For example, if we want to extend the │ │ │ │ │ │ object by allowing another storage format, we do not need to increase the size of the structure at │ │ │ │ │ │ all — it is only necessary to provide one or more instance methods to return the new information. │ │ │ │ │ │ 1.1 Data Structure │ │ │ │ │ │ The SubMtx structure has the following fields. │ │ │ │ │ │ • int type : type of entries. │ │ │ │ │ │ – SPOOLES REAL : double precision real entries. │ │ │ │ │ │ - SubMtx : DRAFT January 16, 2024 3 │ │ │ │ │ │ + SubMtx : DRAFT February 18, 2025 3 │ │ │ │ │ │ – SPOOLES COMPLEX : double precision complex entries. │ │ │ │ │ │ • int mode : storage mode. │ │ │ │ │ │ – SUBMTX DENSE ROWS : dense, storage by rows. │ │ │ │ │ │ – SUBMTX DENSE COLUMNS : dense, storage by columns. │ │ │ │ │ │ – SUBMTX SPARSE ROWS : sparse, storage by rows. │ │ │ │ │ │ – SUBMTX SPARSE COLUMNS : sparse, storage by columns. │ │ │ │ │ │ – SUBMTX SPARSE TRIPLES : sparse, storage by (i,j,ai,j) triples. │ │ │ │ │ │ @@ -92,15 +92,15 @@ │ │ │ │ │ │ • SUBMTX IS DENSE ROWS(mtx)is 1 if mtx has dense rows as its storage format, and 0 otherwise. │ │ │ │ │ │ • SUBMTX IS DENSE COLUMNS(mtx) is 1 if mtx has dense columns as its storage format, and 0 │ │ │ │ │ │ otherwise. │ │ │ │ │ │ • SUBMTX IS SPARSE ROWS(mtx) is 1 if mtx has sparse rows as its storage format, and 0 other- │ │ │ │ │ │ wise. │ │ │ │ │ │ • SUBMTX IS SPARSE COLUMNS(mtx) is 1 if mtx has sparse columns as its storage format, and 0 │ │ │ │ │ │ otherwise. │ │ │ │ │ │ - 4 SubMtx : DRAFT January 16, 2024 │ │ │ │ │ │ + 4 SubMtx : DRAFT February 18, 2025 │ │ │ │ │ │ • SUBMTX IS SPARSE TRIPLES(mtx) is 1 if mtx has sparse triples as its storage format, 0 other- │ │ │ │ │ │ wise. │ │ │ │ │ │ • SUBMTX IS DENSE SUBROWS(mtx) is 1 if mtx has dense subrows as its storage format, 0 other- │ │ │ │ │ │ wise. │ │ │ │ │ │ • SUBMTX IS DENSE SUBCOLUMNS(mtx) is 1 if mtx has dense subcolumns as its storage format, │ │ │ │ │ │ 0 otherwise. │ │ │ │ │ │ • SUBMTX IS DIAGONAL(mtx) is 1 if mtx is diagonal, 0 otherwise. │ │ │ │ │ │ @@ -126,15 +126,15 @@ │ │ │ │ │ │ This method clears the object and free’s any owned data by invoking the clearData() │ │ │ │ │ │ methodsforitsinternal DVobject. Thereis a concluding call to SubMtx setDefaultFields(). │ │ │ │ │ │ Error checking: If mtx is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 4. void SubMtx_free ( SubMtx *mtx ) ; │ │ │ │ │ │ This method releases any storage by a call to SubMtx clearData() and then frees the space │ │ │ │ │ │ for mtx. │ │ │ │ │ │ Error checking: If mtx is NULL, an error message is printed and the program exits. │ │ │ │ │ │ - SubMtx : DRAFT January 16, 2024 5 │ │ │ │ │ │ + SubMtx : DRAFT February 18, 2025 5 │ │ │ │ │ │ 1.2.2 Instance methods │ │ │ │ │ │ 1. void SubMtx_ids ( SubMtx *mtx, int *prowid, int *pcolid ) ; │ │ │ │ │ │ This method fills *prowid with the row id and *pcolid with the column id of the object. │ │ │ │ │ │ Error checking: If mtx, prowid or pcolid is NULL, an error message is printed and the program │ │ │ │ │ │ exits. │ │ │ │ │ │ 2. void SubMtx_setIds ( SubMtx *mtx, int rowid, int colid ) ; │ │ │ │ │ │ This method sets the row and column id’s of the matrix. │ │ │ │ │ │ @@ -163,15 +163,15 @@ │ │ │ │ │ │ the program exits. │ │ │ │ │ │ 7. void SubMtx_sparseRowsInfo ( SubMtx *mtx, int *pnrow, int *pnent, │ │ │ │ │ │ int **psizes, int **pindices, double **pentries ) ; │ │ │ │ │ │ This method is used when the storage mode is sparse rows. It fills *pnrow with the number │ │ │ │ │ │ of rows, *pnent with the number of matrix entries, *psizes with the base address of the │ │ │ │ │ │ sizes[nrow]vector that contains the number of entries in each row, *indices with the base │ │ │ │ │ │ address of the indices[nent] vector that contains the column index for each entry, and │ │ │ │ │ │ - 6 SubMtx : DRAFT January 16, 2024 │ │ │ │ │ │ + 6 SubMtx : DRAFT February 18, 2025 │ │ │ │ │ │ *pentries with the base address of entries[nent] vector. The indices and entries for the │ │ │ │ │ │ rows are stored contiguously. │ │ │ │ │ │ Error checking: If mtx, pnrow, pnent, psizes, pindices or pentries is NULL, or if the matrix │ │ │ │ │ │ type is not SUBMTX SPARSE ROWS, an error message is printed and the program exits. │ │ │ │ │ │ 8. void SubMtx_sparseColumnsInfo ( SubMtx *mtx, int *pncol, int *pnent, │ │ │ │ │ │ int **psizes, int **pindices, double **pentries ) ; │ │ │ │ │ │ Thismethodisusedwhenthestoragemodeissparsecolumns. Itfills*pncolwiththenumber │ │ │ │ │ │ @@ -204,15 +204,15 @@ │ │ │ │ │ │ exits. │ │ │ │ │ │ 11. void SubMtx_denseSubcolumnsInfo ( SubMtx *mtx, int *pncol, int *pnent, │ │ │ │ │ │ int **pfirstlocs, int **plastlocs, double **pentries ) ; │ │ │ │ │ │ This method is used when the storage mode is dense subcolumns. It fills *pncol with │ │ │ │ │ │ the number of columns, *pnent with the number of matrix entries, *pfirstlocs with the │ │ │ │ │ │ base address of the firstlocs[ncol] vector, *plastlocs with the base address of the │ │ │ │ │ │ lastlocs[ncol]vector, and *pentries with the base address of entries[nent] vector. For │ │ │ │ │ │ - SubMtx : DRAFT January 16, 2024 7 │ │ │ │ │ │ + SubMtx : DRAFT February 18, 2025 7 │ │ │ │ │ │ column jcol, the nonzero entries are found in rows [firstlocs[jcol],lastlocs[jcol]] │ │ │ │ │ │ when firstlocs[jcol] ≥ 0 and firstlocs[jcol] ≤ lastlocs[jcol]. The entries for the │ │ │ │ │ │ columns are stored contiguously. │ │ │ │ │ │ Error checking: If mtx, pnrow, pnent, pfirstlocs, plastlocs or pentries is NULL, or if the │ │ │ │ │ │ matrix type is not SUBMTX DENSE SUBCOLUMNS, an error message is printed and the program │ │ │ │ │ │ exits. │ │ │ │ │ │ 12. void SubMtx_diagonalInfo ( SubMtx *mtx, int *pncol, double **pentries ) ; │ │ │ │ │ │ @@ -242,15 +242,15 @@ │ │ │ │ │ │ and 0 ≤ jcol ≤ ncol. If the (irow,jcol) entry is present, the return value is the offset │ │ │ │ │ │ from the start of the entries vector. (The offset is in terms of complex entries, not double │ │ │ │ │ │ entries.) Otherwise, -1 is returned. │ │ │ │ │ │ Error checking: If mtx, pReal or pImag is NULL, or if irow or jcol is out of range, an error │ │ │ │ │ │ message is printed and the program exits. │ │ │ │ │ │ 16. void SubMtx_locationOfRealEntry ( SubMtx *mtx, int irow, int jcol, │ │ │ │ │ │ double **ppValue ) ; │ │ │ │ │ │ - 8 SubMtx : DRAFT January 16, 2024 │ │ │ │ │ │ + 8 SubMtx : DRAFT February 18, 2025 │ │ │ │ │ │ If the (irow,jcol) entry is present, this method fills *ppValue with a pointer to the entry │ │ │ │ │ │ in row irow and columnjcol. Otherwise, *ppValue is set to NULL. Note, irow and jcol are │ │ │ │ │ │ local indices, i.e., 0 ≤ irow ≤ nrow and 0 ≤ jcol ≤ ncol. │ │ │ │ │ │ Error checking: If mtx or ppValue is NULL, or if irow or jcol is out of range, an error message │ │ │ │ │ │ is printed and the program exits. │ │ │ │ │ │ 17. void SubMtx_locationOfComplexEntry ( SubMtx *mtx, int irow, int jcol, │ │ │ │ │ │ double **ppReal, double **ppImag ) ; │ │ │ │ │ │ @@ -278,15 +278,15 @@ │ │ │ │ │ │ int nrow, int ncol, int nent, int seed ) ; │ │ │ │ │ │ This is used to initialize an object to have random entries and (possibly) random structure. │ │ │ │ │ │ The object is first initialized via a call to SubMtx init(). Its matrix entries are then filled │ │ │ │ │ │ with random numbers. If the matrix is sparse, its sparsity pattern is sparse and random, │ │ │ │ │ │ using nent when applicable. The row and column indices are ascending starting from zero. │ │ │ │ │ │ Error checking: If mtx is NULL, or if nrow, ncol, inc1 or inc2 is less than or equal to zero, │ │ │ │ │ │ or if neither inc1 nor inc2 are 1, an error message is printed and the program exits. │ │ │ │ │ │ - SubMtx : DRAFT January 16, 2024 9 │ │ │ │ │ │ + SubMtx : DRAFT February 18, 2025 9 │ │ │ │ │ │ 4. void SubMtx_initRandomLowerTriangle ( SubMtx *mtx, int type, int mode, │ │ │ │ │ │ int rowid, int colid, int nrow, int ncol, int nent, int seed, int strict ) ; │ │ │ │ │ │ void SubMtx_initRandomUpperTriangle ( SubMtx *mtx, int type, int mode, │ │ │ │ │ │ int rowid, int colid, int nrow, int ncol, int nent, int seed, int strict ) ; │ │ │ │ │ │ This is used to initialize an object to have random entries and (possibly) random struc- │ │ │ │ │ │ ture. The matrix type may not be diagonal, block diagonal, or triples. If strict = 1, the │ │ │ │ │ │ matrix will be strict lower or upper triangular. The object is first initialized via a call to │ │ │ │ │ │ @@ -317,15 +317,15 @@ │ │ │ │ │ │ 1. void SubMtx_solve ( SubMtx *mtxA, SubMtx *mtxB ) ; │ │ │ │ │ │ This method is used to solve (I + A)X = B (if A is strict lower or upper triangular) or │ │ │ │ │ │ AX =B (if A is diagonal or block diagonal). The solution X overwrites B, and mtxB must │ │ │ │ │ │ have dense columns. If A is strict lower triangular, then mtxA must have dense subrows or │ │ │ │ │ │ sparse rows. If A is strict upper triangular, then mtxA must have dense subcolumns or sparse │ │ │ │ │ │ columns. │ │ │ │ │ │ Error checking: If mtxA or mtxB is NULL, an error message is printed and the program exits. │ │ │ │ │ │ - 10 SubMtx : DRAFT January 16, 2024 │ │ │ │ │ │ + 10 SubMtx : DRAFT February 18, 2025 │ │ │ │ │ │ 2. void SubMtx_solveH ( SubMtx *mtxA, SubMtx *mtxB ) ; │ │ │ │ │ │ This method is used to solve (I+AH)X = B, where A is strict lower or upper triangular. The │ │ │ │ │ │ solution X overwrites B, and mtxB must have dense columns. If A is strict lower triangular, │ │ │ │ │ │ then mtxA must have dense subrows or sparse rows. If A is strict upper triangular, then mtxA │ │ │ │ │ │ must have dense subcolumns or sparse columns. │ │ │ │ │ │ Error checking: If mtxA or mtxB is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 3. void SubMtx_solveT ( SubMtx *mtxA, SubMtx *mtxB ) ; │ │ │ │ │ │ @@ -354,15 +354,15 @@ │ │ │ │ │ │ This method returns the number of bytes required to store the object’s information in its │ │ │ │ │ │ buffer. │ │ │ │ │ │ Error checking: If nrow or ncol is less than or equal to zero, or if nent is less than to zero, │ │ │ │ │ │ or if type is invalid, an error message is printed and the program exits. │ │ │ │ │ │ 2. int SubMtx_nbytesInUse ( SubMtx *mtx ) ; │ │ │ │ │ │ This method returns the actual number of bytes that are used in the workspace owned by │ │ │ │ │ │ this object. │ │ │ │ │ │ - SubMtx : DRAFT January 16, 2024 11 │ │ │ │ │ │ + SubMtx : DRAFT February 18, 2025 11 │ │ │ │ │ │ Error checking: If mtx is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 3. int SubMtx_nbytesInWorkspace ( SubMtx *mtx ) ; │ │ │ │ │ │ This method returns the number of bytes in the workspace owned by this object. │ │ │ │ │ │ Error checking: If mtx is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 4. void SubMtx_setNbytesInWorkspace ( SubMtx *mtx, int nbytes ) ; │ │ │ │ │ │ This method sets the number of bytes in the workspace of this object. If nbytes is less than │ │ │ │ │ │ the present number of bytes, the workspace is not resized. │ │ │ │ │ │ @@ -387,15 +387,15 @@ │ │ │ │ │ │ Error checking: If mtx or rowDV is NULL, or if irow is out of range, an error message is printed │ │ │ │ │ │ and the program exits. │ │ │ │ │ │ 10. void SubMtx_fillColumnDV ( SubMtx *mtx, int jcol, DV *rowDV ) ; │ │ │ │ │ │ This method is used for real submatrices. It copies the entries in column jcol of the mtx │ │ │ │ │ │ object into the colDV vector object. │ │ │ │ │ │ Error checking: If mtx or colDV is NULL, or if jcol is out of range, an error message is printed │ │ │ │ │ │ and the program exits. │ │ │ │ │ │ - 12 SubMtx : DRAFT January 16, 2024 │ │ │ │ │ │ + 12 SubMtx : DRAFT February 18, 2025 │ │ │ │ │ │ 11. void SubMtx_fillRowZV ( SubMtx *mtx, int irow, ZV *rowZV ) ; │ │ │ │ │ │ This method is used for complex submatrices. It copies the entries in row irow of the mtx │ │ │ │ │ │ object into the rowZV vector object. │ │ │ │ │ │ Error checking: If mtx or rowZV is NULL, or if irow is out of range, an error message is printed │ │ │ │ │ │ and the program exits. │ │ │ │ │ │ 12. void SubMtx_fillColumnZV ( SubMtx *mtx, int jcol, ZV *rowZV ) ; │ │ │ │ │ │ This method is used for complex submatrices. It copies the entries in column jcol of the mtx │ │ │ │ │ │ @@ -422,15 +422,15 @@ │ │ │ │ │ │ the data, the value 1 is returned. If an IO error is encountered from fscanf, zero is returned. │ │ │ │ │ │ Note, if the mtxutation vectors are one-based (as for Fortran), they are converted to zero- │ │ │ │ │ │ based vectors. │ │ │ │ │ │ Error checking: If mtx or fp are NULL, an error message is printed and zero is returned. │ │ │ │ │ │ 3. int SubMtx_readFromBinaryFile ( SubMtx *mtx, FILE *fp ) ; │ │ │ │ │ │ This method reads in a SubMtx object from a binary file. If there are no errors in reading │ │ │ │ │ │ the data, the value 1 is returned. If an IO error is encountered from fread, zero is returned. │ │ │ │ │ │ - SubMtx : DRAFT January 16, 2024 13 │ │ │ │ │ │ + SubMtx : DRAFT February 18, 2025 13 │ │ │ │ │ │ Note, if the mtxutation vectors are one-based (as for Fortran), they are converted to zero- │ │ │ │ │ │ based vectors. │ │ │ │ │ │ Error checking: If mtx or fp are NULL, an error message is printed and zero is returned. │ │ │ │ │ │ 4. int SubMtx_writeToFile ( SubMtx *mtx, char *fn ) ; │ │ │ │ │ │ This method writes a SubMtx object to a file. It tries to open the file and if it is successful, │ │ │ │ │ │ it then calls SubMtx writeFromFormattedFile()or SubMtx writeFromBinaryFile(),closes │ │ │ │ │ │ the file and returns the value returned from the called routine. │ │ │ │ │ │ @@ -457,15 +457,15 @@ │ │ │ │ │ │ for complex matrices, or │ │ │ │ │ │ a(10,5) = -1.550328201511e-01 ; │ │ │ │ │ │ for real matrices, where mtxname = "a". The matrix indices come from the rowind[] │ │ │ │ │ │ and colind[] vectors, and are incremented by one to follow the Matlab and FORTRAN │ │ │ │ │ │ convention. │ │ │ │ │ │ Error checking: If mtx, mtxname or fp are NULL, an error message is printed and zero is │ │ │ │ │ │ returned. │ │ │ │ │ │ - 14 SubMtx : DRAFT January 16, 2024 │ │ │ │ │ │ + 14 SubMtx : DRAFT February 18, 2025 │ │ │ │ │ │ 1.3 Driver programs for the SubMtx object │ │ │ │ │ │ 1. testIO msglvl msgFile inFile outFile │ │ │ │ │ │ This driver program reads in a SubMtx object from inFile and writes out the object to │ │ │ │ │ │ outFile │ │ │ │ │ │ • The msglvl parameter determines the amount of output — taking msglvl >= 3 means │ │ │ │ │ │ the SubMtx object is written to the message file. │ │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ │ @@ -494,15 +494,15 @@ │ │ │ │ │ │ 3. test_solve msglvl msgFile type mode nrowA nentA ncolB seed │ │ │ │ │ │ This driver program tests the SubMtx solve() method which tests the solve AX = B when │ │ │ │ │ │ A is diagonal or block diagonal, and (I + A)X = B otherwise (A is strict upper or lower │ │ │ │ │ │ triangular). Use the script file do solve for testing. When the output file is loaded into │ │ │ │ │ │ matlab, the last lines to the screen contain the errors. │ │ │ │ │ │ • The msglvl parameter determines the amount of output. Use msglvl = 1 for just │ │ │ │ │ │ timing output. │ │ │ │ │ │ - SubMtx : DRAFT January 16, 2024 15 │ │ │ │ │ │ + SubMtx : DRAFT February 18, 2025 15 │ │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ │ message file is stdout, otherwise a file is opened with append status to receive any output │ │ │ │ │ │ data. │ │ │ │ │ │ • The type parameter must be one of 1 (SPOOLES REAL) or 2 (SPOOLES COMPLEX). │ │ │ │ │ │ • Themodeparametermustbeoneof2(SUBMTX SPARSE ROWS),3(SUBMTX SPARSE COLUMNS), │ │ │ │ │ │ 5 (SUBMTX DENSE SUBROWS), 6 (SUBMTX DENSE SUBCOLUMNS), 7 (SUBMTX DIAGONAL), │ │ │ │ │ │ 8 (SUBMTX BLOCK DIAGONAL SYM) or 9 (SUBMTX BLOCK DIAGONAL HERM). │ │ │ │ │ │ @@ -534,15 +534,15 @@ │ │ │ │ │ │ T │ │ │ │ │ │ This driver program tests the SubMtx solve() method which tests the solve (I +A )X = B │ │ │ │ │ │ when A is strict upper or lower triangular and has dense subrows, dense subcolumns, sparse │ │ │ │ │ │ rows, or sparse columns. Use the script file do solveT for testing. When the output file is │ │ │ │ │ │ loaded into matlab, the last lines to the screen contain the errors. │ │ │ │ │ │ • The msglvl parameter determines the amount of output. Use msglvl = 1 for just │ │ │ │ │ │ timing output. │ │ │ │ │ │ - 16 SubMtx : DRAFT January 16, 2024 │ │ │ │ │ │ + 16 SubMtx : DRAFT February 18, 2025 │ │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ │ message file is stdout, otherwise a file is opened with append status to receive any output │ │ │ │ │ │ data. │ │ │ │ │ │ • The type parameter must be one of 1 (SPOOLES REAL) or 2 (SPOOLES COMPLEX). │ │ │ │ │ │ • Themodeparametermustbeoneof2(SUBMTX SPARSE ROWS),3(SUBMTX SPARSE COLUMNS), │ │ │ │ │ │ 5 (SUBMTX DENSE SUBROWS) or 6 (SUBMTX DENSE SUBCOLUMNS). │ │ │ │ │ │ • The nrowA parameter is the number of rows in the matrix. │ │ │ │ │ │ @@ -573,15 +573,15 @@ │ │ │ │ │ │ • The seed parameter is a random number seed. │ │ │ │ │ │ 7. test_solveupdH msglvl msgFile type mode nrowA nentA ncolB seed │ │ │ │ │ │ This driver program tests the SubMtx solveupd() method which tests the update Y := │ │ │ │ │ │ Y −AH ∗X, used in the forward solve of a hermitian factorization. X and Y have dense │ │ │ │ │ │ columns, and A has dense rows or columns or sparse rows or columns. Use the script file │ │ │ │ │ │ do solveupdH for testing. When the output file is loaded into matlab, the last lines to the │ │ │ │ │ │ screen contain the errors. │ │ │ │ │ │ - SubMtx : DRAFT January 16, 2024 17 │ │ │ │ │ │ + SubMtx : DRAFT February 18, 2025 17 │ │ │ │ │ │ • The msglvl parameter determines the amount of output. Use msglvl = 1 for just │ │ │ │ │ │ timing output. │ │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ │ message file is stdout, otherwise a file is opened with append status to receive any output │ │ │ │ │ │ data. │ │ │ │ │ │ • The type parameter must be 2 (SPOOLES COMPLEX). │ │ │ │ │ │ • Themodeparametermustbeoneof0(SUBMTX DENSE ROWS),1(SUBMTX DENSE COLUMNS), │ │ │ │ │ │ @@ -612,15 +612,15 @@ │ │ │ │ │ │ • The ncolY parameter is the number of columns in Y. │ │ │ │ │ │ • The nrowA parameter is the number of rows in A, nrowA ≤ nrowY. │ │ │ │ │ │ • The ncolA parameter is the number of columns in A, ncolA ≤ nrowX. │ │ │ │ │ │ • The nentA parameter is the number of nonzero entries in the submatrix, when appro- │ │ │ │ │ │ priate. │ │ │ │ │ │ • The nrowX parameter is the number of rows in X, nrowA ≤ nrowY. │ │ │ │ │ │ • The seed parameter is a random number seed. │ │ │ │ │ │ - 18 SubMtx : DRAFT January 16, 2024 │ │ │ │ │ │ + 18 SubMtx : DRAFT February 18, 2025 │ │ │ │ │ │ 9. test_sort msglvl msgFile type mode nrowA ncolA nentA seed │ │ │ │ │ │ Thisdriver program tests the SubMtx sortRowsUp()and SubMtx sortColumnsUp()methods. │ │ │ │ │ │ Use the script file do sort for testing. When the output file is loaded into matlab, the last │ │ │ │ │ │ lines to the screen contain the errors. │ │ │ │ │ │ • The msglvl parameter determines the amount of output. Use msglvl = 1 for just │ │ │ │ │ │ timing output. │ │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ ├── ./usr/share/doc/spooles-doc/SubMtxList.ps.gz │ │ │ │ ├── SubMtxList.ps │ │ │ │ │ @@ -10,15 +10,15 @@ │ │ │ │ │ %%EndComments │ │ │ │ │ %%BeginDefaults │ │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ │ %%EndDefaults │ │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ │ %DVIPSCommandLine: dvips main -o SubMtxList.ps │ │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ │ -%DVIPSSource: TeX output 2024.01.16:2047 │ │ │ │ │ +%DVIPSSource: TeX output 2025.02.18:0318 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -1778,20 +1778,21 @@ │ │ │ │ │ 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 52 /four put │ │ │ │ │ -dup 54 /six put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ +dup 56 /eight put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 74 /J put │ │ │ │ │ +dup 70 /F put │ │ │ │ │ dup 97 /a put │ │ │ │ │ -dup 110 /n put │ │ │ │ │ +dup 98 /b put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ dup 114 /r put │ │ │ │ │ dup 117 /u put │ │ │ │ │ dup 121 /y put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ @@ -1975,89 +1976,93 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ │ -C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ │ -6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ │ -11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ │ -1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ │ -A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ │ -F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ │ -EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ │ -033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ │ -A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ │ -468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8A71FF9C085003EBB4F4 │ │ │ │ │ -3D271F5B16B1AAD3EBDC391F534AA46E545E9D8659DD19B309C3B7625A8396FA │ │ │ │ │ -2519464539D46E43ACB72952313C8497315E0319C08628023E8FC54D7D3BAC29 │ │ │ │ │ -D5AD8EFDABF0C33C7AFB7151A6606C62A87F0F5F783569AC4C881A992E3FE420 │ │ │ │ │ -297F7BC5147F3B2FA98450D2F8B07F7D229BC8BE06729920CFEC22556740E1CB │ │ │ │ │ -3DE09AC763C6D4A20AD1599C368FABD07BC35C16683F2A0311A88983415A9140 │ │ │ │ │ -2EFC4BC1B10DCAD4B2B8A28510E5BD39D6616D2B9B079ED3CF9C315B7DEC29D9 │ │ │ │ │ -251DFD0194B34EC175964C23383F23FFB2E41B698C405815D65EAFF9E9DD1DDE │ │ │ │ │ -30F77924656C288B8DDB2E5B0E7B1FAA66791DE3848EE6DE63AD0E945E49C6C7 │ │ │ │ │ -9FCA16E01F027F9EF7ACB55F02F5B0136480802F789F6FE14B430879979BA04D │ │ │ │ │ -F481AD4CF47E6847936F377FB04869F9A80E597301BFCAB718D8764094673876 │ │ │ │ │ -BCEF8FA3701608C84B3A0399A11D2E6AD922CCB7D72AF9EBFB30F4648A37A123 │ │ │ │ │ -CB8FB14BDC351692CF0CCAA5CA9383C2B23BAAA38700327EB743FBBE9EE04041 │ │ │ │ │ -13F5CEF4B3881BBC051C33369A82B3505B1CFD7D91AEF2E43EA728EE48E2D854 │ │ │ │ │ -5A7E516998ACDD4FD835FA901C5A21810A56D51FE919B2E58408EEB4DAEB487F │ │ │ │ │ -BA7F1D292CED902DF3533566D96DAD918319EA650D4FC7D9E0170CDE620F755B │ │ │ │ │ -0E7AE02D9B118481B26F5FF7060FBCFA2A682B6826F00679BCDA68794C05286D │ │ │ │ │ -B616DD08372ACDE0AE6E7EF116F0D36F16241ED4F0E8CCD80377792E3BB1343C │ │ │ │ │ -EEB22CC77738F7CBCBA32CF6C3979F6DF7ED81A89AE8928FD7CC550F2730BA88 │ │ │ │ │ -1B51CEDC63F4C47F261AFCAB7AC3CED20B15C97E714A460A1A3B16436B4A5149 │ │ │ │ │ -8F91DA4BE0B9B648534CE5F442117036B602DC91E2852BEA62F55803B833FDF7 │ │ │ │ │ -9F901AB87489E703DDEED1091A79DC73B4440BBBF2C7592B441187C4A3562204 │ │ │ │ │ -859F08BA3CE2A8ECCD5AAD13C50FB806FE79A388F1822C5608837CBDE526A044 │ │ │ │ │ -12E5CDE4A066932AF2ACA7E8FC6BA4603640944718752975B7DA6E906BE1EA01 │ │ │ │ │ -46736FF5D1AA1CC682D011B6039CF98C35E36D4F14ABC84A38B7203CC9A17756 │ │ │ │ │ -B2B0345276798F1A88A54AD9FEA0853C6DDF28525ED4F0B7380D14147012C2A4 │ │ │ │ │ -5B02888C986C76497EA4C729B0B82EE73C1A1A8E8F1ABF401E341028E9C15AF9 │ │ │ │ │ -354706D8DC07492921AD0932A46736C0D1B066D00287DACCC068FAE6A796EC89 │ │ │ │ │ -54D1D73AA88F3A5912BA9D3FF70065C8D0D0DAD1CD846501E06694374EFDBEC6 │ │ │ │ │ -931F644D5E8494AFC742423AD9A487658E310E0682BE19B8475F4D450487A686 │ │ │ │ │ -2B94494DEAF1C0F59DE82F2CE64BEE5E97F942FCFA1187ED6AA5761E951A7BF7 │ │ │ │ │ -9F842E34A4656C58B35A9E99F7E6762CEE11E0CF59FFD75D7382C5EE6DBB43F1 │ │ │ │ │ -ED219071D3FB22DBA90977723BB467C0490D042684C0724F40DCA3E0D8F1F4E7 │ │ │ │ │ -3C4F9A67BE6528185EAAFDD415224F7E256A4EA00111C17C746CBD80BF569A27 │ │ │ │ │ -D81195D7F79C1CCEEF30ED00D49F48B63E4B8D7953403A3710AE953CC1B76F0F │ │ │ │ │ -F523D777A6A186F262A602543F94AF7471DBE25FEBC207DB42DAF7DC9A5781FB │ │ │ │ │ -2131AD42869D966A734AAE3466DF1CE9D1BCFA72409A558C0AEE6A8E2FEAACB6 │ │ │ │ │ -2CDABCC28433034848ACF9FB4465D272E4AFC48572647F05F41C7A293CC5B595 │ │ │ │ │ -AD31555FB708A72962707348BC7033A8224BD42EB9D75FDF3AE9E6A9C960B330 │ │ │ │ │ -5137DF59F8E2E0D535F41524ABDF070745A4FA25CD8DFD38A5FF30A95452B875 │ │ │ │ │ -6569E8812631300D79A942C563AF174AC05C9F2D09D7D5D3C605F5A6B7F21B34 │ │ │ │ │ -18F270A993B050838E701A17938D1C156CBA7CA4BAC7C562CE9D7B758EAB25A9 │ │ │ │ │ -A6DFFC71F65561341847B776DF34061CE3D439B87B857626987EC93B3B95B8E8 │ │ │ │ │ -76FFB16B263675333FA10414FEED707FF7C366BF8B20FF8577CDEBEBCF1A5BCE │ │ │ │ │ -258C09C90175A5278B7C444A623E3331FDE5A6387B3E389540ED1E7E883958F3 │ │ │ │ │ -3A5C89CCD62256FA069DF4A5090FB17C1F1757C9209DAFB8A1F47182BF3E88D9 │ │ │ │ │ -0B5376B59EE165A761902759C8ED7F5AD301E7EB8B49CC09AF921DB45B7F8002 │ │ │ │ │ -AB32E73AAE53942DE0F9175D8446017006C9C0B93EF39C13B7A879F2F6DDFF16 │ │ │ │ │ -204BB24F976847CF006FD29332FCCB255B5116F7077A44F7066C39C81DC4BAD2 │ │ │ │ │ -40DB2753626C0102E5D047522ABC38EA294A699B8DFD9CA0A7980561A1062E90 │ │ │ │ │ -AB11EE286A9C238D9F721D9980D0A1828C2814972622D948CEE8C812C19A9A03 │ │ │ │ │ -608ED0AC138A436FFBF8BE3D1E66C87793416AF38ED9BC5424568A175FBDAA9E │ │ │ │ │ -D6FC11A7021693819B051562B5A59F32629E2D6019D69DD329BE1894A2B295E1 │ │ │ │ │ -1DCE9683B29AE126C56F26E5C595BF1A8249BDE231DBE8B066F7F62EF149B975 │ │ │ │ │ -A863969A4690504A5EA064721DA909B8157C0B39FBF8228D95CB655E406161E1 │ │ │ │ │ -148610FAEED7C5509880223C06A66DA19E10F94DC2DB481B26 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004FD597ED │ │ │ │ │ +EFDBC64ABD9B79386FB2427D1A63522195B1239C09F8CB3F8BD7A245A6DD82E3 │ │ │ │ │ +260C3889587626DFC5F7978E55F5524ABD6A3319CDD3D3F40D040044D51DA4E1 │ │ │ │ │ +6797EEAC7AA07C77EC6DB0E6E182B545A8BEF63B14F3FC07BAC09E7CD5C17ED6 │ │ │ │ │ +10080704B0DA4E9BA12F968DF8A58458D17E9A5B1F14A83DC51F5B161ADEE1CC │ │ │ │ │ +0183D82ED92C6FC7203C289949EDF0284D9893029FF5408E421324625F17C3E5 │ │ │ │ │ +2437C8F75A9D68EE1AF9174FEA6FC6BF793C7D2E497EA90396CF1A645E283B69 │ │ │ │ │ +8425F47C323587DF91E1D596DCB1E3A787C955D9D965A5E3E26ADF58B62AD5F9 │ │ │ │ │ +0C9AC784DE479780606354111E3202F215650DBBE1063A46F3C10B9EBC974DDA │ │ │ │ │ +A1A28DBBD43E9E5BFF000B12C787D0427928078F8EC5FE90DED97E6C129E8DEA │ │ │ │ │ +51F66504DB83764E52B0BA68DF7BE684C8959CB1D3345CC48221A9A4683306C0 │ │ │ │ │ +62B634E0A539383F0C7A788D9711EFF414869CCC5659D78CEBE009BF2463F56A │ │ │ │ │ +0ADC993348FE96DF7C250E13ED6504AACFE8F8DCA2D2048D9D8CFA127D363EAC │ │ │ │ │ +1F0630E2D1B621E6954038195D965B91FD974FA3F1B8B29D200A16CEBA645E2F │ │ │ │ │ +CEEE6FD49FBBD49E38AE67D4BFFCE91F1FC422554EC4409C5FA18D40FCD6D9B3 │ │ │ │ │ +2185ED1E0F98106D4339F086B05CA36E56EC22C60E2CE23F9C4CC403ACAD3F94 │ │ │ │ │ +4086B4DF6DFA0B7B4716417263E7B558535566AED2F6C2F9846A16D71A7930A7 │ │ │ │ │ +49232D3D16C4A01CF1A1998A06F40062ED329179A85668537C55D0BC24FC0010 │ │ │ │ │ +54DA83E2FC66B2A5D428E6A9BFC983253668C0ECE6CA36DBF97C4B7659D50842 │ │ │ │ │ +C65B36604840EEDA399B57E2DEFAC3E7FB031634CE33D04238F9854D2AAAF448 │ │ │ │ │ +34DA5F3BCCED3166FEEE82BB0BBA0A397CC2F95865CB52AABFF454D93B425809 │ │ │ │ │ +A26AC459F321FD23E2262FE816D06BAAECF32AAF167F84799AF80F9F88388D07 │ │ │ │ │ +0DB5FD57AFEE2850A8DFE977E6AE39CB3DC16DB1A163A583C86C6F775CE33521 │ │ │ │ │ +0081C0BBBAD6D30D26C66B28B38CEAC78FEA5FB3CC5853656B67C6D9D80EB30E │ │ │ │ │ +397558C9179AF5920F34DAB3F578DFCF0DBB137AED17D6325C23883E69EE4621 │ │ │ │ │ +34355A70C19EA68891E1CA937376901C85CDEE109F1665943E29A216DC00937A │ │ │ │ │ +B983A729A4654AD09187C0242D52FA4ADD0853EF4888864914D7D81C56578DD4 │ │ │ │ │ +3B51907032022E6E412D4F114675DEDCA8A9E85DC03A0B583FECD84432D15F70 │ │ │ │ │ +01F627BD6EC91F9FCFDA01BF40E1229B5F164309DBB641AD50970503DA2048C1 │ │ │ │ │ +DF8F36E8D252EE113F0B46677D9BAF376BAE18D74CFB0DBBD0C7E9D0A58BA3ED │ │ │ │ │ +1E5099CAE073EB5638617760AB57849893764EA9735173CD1EAB66884CEA7EE3 │ │ │ │ │ +8843327B2E145BD6FBB49102776B82BC511D109F8BE9E7E99DADABABEDC3CFD9 │ │ │ │ │ +393578FFD85907DFF2849E4CDE6FA4DEC7E1C150EBE4047FFB650F9548BE6D11 │ │ │ │ │ +0C51226A5436F18BF20A02E0F888F46B6AC3A8E8D927ECD3B5E095933AD3859F │ │ │ │ │ +5167C41D832EFCC4093BD2AFA7101AB430E57DAFC3590F05D3CBABB32BC203A0 │ │ │ │ │ +467B23BDB830487C9AA5B85BAC065F8538871B4180F8C4732E637DB090CFDE5A │ │ │ │ │ +3F4F2B5BFAFB848BAAD1A17CB076B34159601639BD93ECAB1214ACABF2C67FE2 │ │ │ │ │ +0658AA20B08681070FF56F1CC52144ABA8765D6E124D1CEA9BBA102808CE1BB2 │ │ │ │ │ +5EDF46BC7BBC2A5B49EE6EC28F5797A3969B057B21FCDBBD0E60848FF14F6CA3 │ │ │ │ │ +70F3060BDBB019B22722C99C7691760F013763B7FBEB62830AE215F195BF9F01 │ │ │ │ │ +21BF4377397E89574CFA47D123AA506A570A77BA6EB4AAB0B237A26154880293 │ │ │ │ │ +3952F832F72ECCB024F02385E5EE8566B165904B594E30D0700D033C6B429F6F │ │ │ │ │ +2A20BC774F442BC9CE29FCC81807C2768A8BC927A215558FBF36DC53F477F04A │ │ │ │ │ +41DA66E1A85B659EB761230977EAD7DA0150513D3323B143D4E2A61BCF03334C │ │ │ │ │ +C0EE3E1B06CFAF58ECC910BD81F0352B75FF1594D6A4EF504232D442174BE766 │ │ │ │ │ +0F8E703F97E21D25D4CD097549C31FEE7017C3916EFB02E7BF869172889827B6 │ │ │ │ │ +A48465EB7612BA3DBC6A9436C7167F149A25CE9F8E3F4F8DE3B5ADF6C0986CB3 │ │ │ │ │ +3A7E2DAB44AB489796461536F5F713017F2620AD03295CAE9285F08974AE0DF8 │ │ │ │ │ +D739260929619B509491AFF09C4CAEF9E65C2CA69470C907ECBF3AB6C955360D │ │ │ │ │ +05ABAC306DB51122A1ADC7EF0DD70FA299A45C505A83727D4598C86319EE9C06 │ │ │ │ │ +7218EFD4F40388354BCF1B79593D5AD221DF955D081F99F880E5CED07321AB3E │ │ │ │ │ +A2FCB8B05D54807D8E15E65B78DCE12989B9276350080C905DBB74CE9AA7E246 │ │ │ │ │ +5D3BAED292C562D4CF54617FCC6654496C7996D1ECE1EFF9258716AB763A12E6 │ │ │ │ │ +316E4C5587351A6DB011F58F6A15BC28BEBDC3836E0CB892807FEC228DC1B380 │ │ │ │ │ +92F7F42279F08D60F13D6A4CB425543C3644461461CBF6F27B6603F613D1FCF8 │ │ │ │ │ +A8410AD82D1498166AEB35D4125D7E2ADEAAB18BC04806AED53513F066E5F154 │ │ │ │ │ +3E13E863C50B9814EE2FB978D0D24A03FAF650CB6E2CADF1E6BE6BAF699AFC03 │ │ │ │ │ +E1A0EEB207B3B9A689ED5B373FE86686AD230BE6C18E1673DDA50E224B343EC5 │ │ │ │ │ +903BA0C8041C13607B50D5852AC7970B15C244E6EBA7D54B3086312CF04761D6 │ │ │ │ │ +7D3D75D51F20C371494AB81AB4A9838B20B483B851D01FEF41EA5C0B4755B964 │ │ │ │ │ +EB6E9B178051C556A010994EB88EAE641F4C1A0D7E0F98D5267E18AEF1AEA7E7 │ │ │ │ │ +9030A97DF89AFF621981C33B645FFB5F3BB2065A7661D11B26E0999561DF3580 │ │ │ │ │ +4A76A05DFAF8085525F8D5C01936F03C32E26E72569371C9EA3B8916F9DFC5FC │ │ │ │ │ +6A6F25A0FFDB981BA8B896393D75774D50828E6ADE903C45406E354703A4BC56 │ │ │ │ │ +2C49A47FEAC970DC433E3050C49F7FB945A9705BD8852D2D65D935F244D3B423 │ │ │ │ │ +EFAB84AAAAB8FBAFF50AFF372A533BCCEB5FC273DBADCF715776DF02A5DCBA9A │ │ │ │ │ +FBF265FAB4745D6475B33611EEE1EA95E7584E0BEEC7CA789AA69C8D03D6F8C0 │ │ │ │ │ +5B6844E2B901ACA560C0433B053D134866E567425174E47173679AAD4486A2D3 │ │ │ │ │ +369C29E4DD2CD6ACA1BE80ED8FF0A9C58A616D26E758BD8E6342624EC83FB590 │ │ │ │ │ +BD354B52B60BB054FAFE9AC63E1564FBC721FE8F276B0413EC89A2C85E5ED1B0 │ │ │ │ │ +3A9D83BE62A4488ADE7CE69971A8AF7E5862A4290EEF6F00D4171C7FFB360065 │ │ │ │ │ +92E72BF02BE27161AE0BB5516572A0BDC4F316FFB24B38484AC8D1FD4CD86062 │ │ │ │ │ +A2B5D03CF28C3A679C039A6EFDD4C9DA7E463AD60234C9F6BBEE48D87DD94D85 │ │ │ │ │ +842F495F3E25723718682CE4D6224CBBF4456F03077EDF736D65B9DDAB09470E │ │ │ │ │ +17742D82011FFA96BFE86B96E858F9352FCD20C3D46B77DBDEE54336EC2249EA │ │ │ │ │ +211F6DFFF5BEA1E5192BE1BAC0BDD5EDDB3D56C6F7C6E543561A0B39E5C1B04F │ │ │ │ │ +C683A7516B6E69D682455386DDA709929D621FA434D403E895AA0A77DBE1DFD2 │ │ │ │ │ +0D060DF82378880147ED97C6E8149686FA048710B113760AC1DA4512FF8556B3 │ │ │ │ │ +16E2447485B8C3CD58D0469C4A45FFB4CB0322BB284C02 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -3324,15 +3329,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 1[45 1[45 45 45 3[25 44[{}13 │ │ │ │ │ +12[40 2[51 45 26[59 11[25 1[45 2[45 2[45 45 45 3[25 44[{}14 │ │ │ │ │ 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 │ │ │ │ │ @@ -3445,56 +3450,57 @@ │ │ │ │ │ (ciated)g(with)e(a)g Fh(SubMtxList)e Fi(ob)5 b(ject)36 │ │ │ │ │ b(is)g(optional,)i(for)d(example,)i(it)f(is)g(not)f(needed)0 │ │ │ │ │ 5407 y(during)22 b(a)i(serial)g(factorization)i(nor)d(a)h(MPI)f(solv)m │ │ │ │ │ (e.)40 b(In)23 b(the)g(latter)i(case)f(there)g(is)f(one)h │ │ │ │ │ Fh(SubMtxList)d Fi(p)s(er)h(pro)s(cess.)1927 5656 y(1)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fi(2)p 136 100 987 4 v │ │ │ │ │ -1169 w Fh(SubMtxList)27 b Ff(:)41 b Fe(DRAFT)30 b Ff(Jan)m(uary)g(16,)i │ │ │ │ │ -(2024)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 │ │ │ │ │ -(utual)h(exclusion)g(lo)s(c)m(k.)40 b(Presen)m(tly)27 │ │ │ │ │ -b(w)m(e)f(supp)s(ort)f(the)0 737 y(Solaris)32 b(and)g(POSIX)f(thread)h │ │ │ │ │ -(pac)m(k)-5 b(ages.)48 b(P)m(orting)33 b(the)g(m)m(ultithreaded)f(co)s │ │ │ │ │ -(des)g(to)h(another)g(platform)f(should)0 850 y(b)s(e)37 │ │ │ │ │ -b(simple)h(if)g(the)h(POSIX)e(thread)h(pac)m(k)-5 b(age)40 │ │ │ │ │ -b(is)e(presen)m(t.)64 b(Another)38 b(t)m(yp)s(e)g(of)g(thread)g(pac)m │ │ │ │ │ -(k)-5 b(age)40 b(will)e(require)0 963 y(some)31 b(mo)s(di\014cations)f │ │ │ │ │ -(to)h(the)g Fh(Lock)e Fi(ob)5 b(ject,)32 b(but)d(none)i(to)g(the)f │ │ │ │ │ -Fh(SubMtxList)e Fi(ob)5 b(jects.)0 1293 y Fd(1.1)135 │ │ │ │ │ -b(Data)46 b(Structure)0 1527 y Fi(The)30 b Fh(SubMtxList)d │ │ │ │ │ -Fi(structure)j(has)g(the)h(follo)m(wing)h(\014elds.)137 │ │ │ │ │ -1752 y Fg(\210)45 b Fh(int)i(nlist)29 b Fi(:)41 b(n)m(um)m(b)s(er)29 │ │ │ │ │ -b(of)h(lists.)137 1952 y Fg(\210)45 b Fh(SubMtx)h(**heads)29 │ │ │ │ │ -b Fi(:)40 b(v)m(ector)32 b(of)f(p)s(oin)m(ters)f(to)h(the)g(heads)f(of) │ │ │ │ │ -g(the)h(list)g(of)g Fh(SubMtx)d Fi(ob)5 b(jects.)137 │ │ │ │ │ -2152 y Fg(\210)45 b Fh(int)i(*counts)29 b Fi(:)40 b(v)m(ector)32 │ │ │ │ │ -b(of)f(incoming)g(coun)m(ts)f(for)h(the)f(lists.)137 │ │ │ │ │ -2353 y Fg(\210)45 b Fh(Lock)i(*lock)29 b Fi(:)41 b(m)m(utual)30 │ │ │ │ │ -b(exclusion)h(lo)s(c)m(k.)137 2553 y Fg(\210)45 b Fh(char)i(*flags)32 │ │ │ │ │ -b Fi(:)48 b(v)m(ector)36 b(of)e(lo)s(c)m(k)h(\015ags)f(for)g(the)g │ │ │ │ │ -(lists.)52 b(If)33 b Fh(flags[ilist])45 b(==)i('N')p │ │ │ │ │ -Fi(,)33 b(the)h(list)h(do)s(es)f(not)227 2666 y(need)27 │ │ │ │ │ -b(to)h(b)s(e)e(lo)s(c)m(k)m(ed.)41 b(If)27 b Fh(flags[ilist])44 │ │ │ │ │ -b(==)j('Y')p Fi(,)27 b(the)g(list)g(do)s(es)g(need)g(to)h(b)s(e)e(lo)s │ │ │ │ │ -(c)m(k)m(ed.)41 b(Used)27 b(only)g(when)227 2779 y Fh(lock)i │ │ │ │ │ -Fi(is)i(not)g Fh(NULL)p Fi(.)137 2979 y Fg(\210)45 b │ │ │ │ │ -Fh(int)i(nlocks)29 b Fi(:)41 b(total)32 b(n)m(um)m(b)s(er)d(of)h(lo)s │ │ │ │ │ -(c)m(ks)i(made)e(on)g(the)h(m)m(utual)f(exclusion)h(lo)s(c)m(k.)0 │ │ │ │ │ -3309 y Fd(1.2)135 b(Protot)l(yp)t(es)46 b(and)f(descriptions)g(of)g │ │ │ │ │ -Fc(SubMtxList)c Fd(metho)t(ds)0 3543 y Fi(This)g(section)j(con)m(tains) │ │ │ │ │ -f(brief)f(descriptions)g(including)f(protot)m(yp)s(es)i(of)f(all)h │ │ │ │ │ -(metho)s(ds)f(that)h(b)s(elong)f(to)h(the)0 3656 y Fh(SubMtxList)28 │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fi(2)p 136 100 968 4 v │ │ │ │ │ +1150 w Fh(SubMtxList)27 b Ff(:)41 b Fe(DRAFT)30 b Ff(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)i(2025)p 2933 100 V 0 399 a Fi(F)-8 │ │ │ │ │ +b(or)26 b(a)f(m)m(ultithreaded)h(solv)m(e)g(there)g(is)f(one)g │ │ │ │ │ +Fh(SubMtxList)e Fi(ob)5 b(ject)26 b(that)g(is)f(shared)f(b)m(y)h(all)h │ │ │ │ │ +(threads.)39 b(The)25 b(m)m(utual)0 511 y(exclusion)33 │ │ │ │ │ +b(lo)s(c)m(k)h(that)f(is)f(\(optionally\))j(em)m(b)s(edded)c(in)i(the)f │ │ │ │ │ +Fh(SubMtxList)e Fi(ob)5 b(ject)34 b(is)e(a)h Fh(Lock)f │ │ │ │ │ +Fi(ob)5 b(ject)33 b(from)f(this)0 624 y(library)-8 b(.)39 │ │ │ │ │ +b(It)27 b(is)f(inside)g(the)g Fh(Lock)f Fi(ob)5 b(ject)27 │ │ │ │ │ +b(that)g(w)m(e)f(ha)m(v)m(e)i(a)e(m)m(utual)h(exclusion)g(lo)s(c)m(k.) │ │ │ │ │ +40 b(Presen)m(tly)27 b(w)m(e)f(supp)s(ort)f(the)0 737 │ │ │ │ │ +y(Solaris)32 b(and)g(POSIX)f(thread)h(pac)m(k)-5 b(ages.)48 │ │ │ │ │ +b(P)m(orting)33 b(the)g(m)m(ultithreaded)f(co)s(des)g(to)h(another)g │ │ │ │ │ +(platform)f(should)0 850 y(b)s(e)37 b(simple)h(if)g(the)h(POSIX)e │ │ │ │ │ +(thread)h(pac)m(k)-5 b(age)40 b(is)e(presen)m(t.)64 b(Another)38 │ │ │ │ │ +b(t)m(yp)s(e)g(of)g(thread)g(pac)m(k)-5 b(age)40 b(will)e(require)0 │ │ │ │ │ +963 y(some)31 b(mo)s(di\014cations)f(to)h(the)g Fh(Lock)e │ │ │ │ │ +Fi(ob)5 b(ject,)32 b(but)d(none)i(to)g(the)f Fh(SubMtxList)e │ │ │ │ │ +Fi(ob)5 b(jects.)0 1293 y Fd(1.1)135 b(Data)46 b(Structure)0 │ │ │ │ │ +1527 y Fi(The)30 b Fh(SubMtxList)d Fi(structure)j(has)g(the)h(follo)m │ │ │ │ │ +(wing)h(\014elds.)137 1752 y Fg(\210)45 b Fh(int)i(nlist)29 │ │ │ │ │ +b Fi(:)41 b(n)m(um)m(b)s(er)29 b(of)h(lists.)137 1952 │ │ │ │ │ +y Fg(\210)45 b Fh(SubMtx)h(**heads)29 b Fi(:)40 b(v)m(ector)32 │ │ │ │ │ +b(of)f(p)s(oin)m(ters)f(to)h(the)g(heads)f(of)g(the)h(list)g(of)g │ │ │ │ │ +Fh(SubMtx)d Fi(ob)5 b(jects.)137 2152 y Fg(\210)45 b │ │ │ │ │ +Fh(int)i(*counts)29 b Fi(:)40 b(v)m(ector)32 b(of)f(incoming)g(coun)m │ │ │ │ │ +(ts)f(for)h(the)f(lists.)137 2353 y Fg(\210)45 b Fh(Lock)i(*lock)29 │ │ │ │ │ +b Fi(:)41 b(m)m(utual)30 b(exclusion)h(lo)s(c)m(k.)137 │ │ │ │ │ +2553 y Fg(\210)45 b Fh(char)i(*flags)32 b Fi(:)48 b(v)m(ector)36 │ │ │ │ │ +b(of)e(lo)s(c)m(k)h(\015ags)f(for)g(the)g(lists.)52 b(If)33 │ │ │ │ │ +b Fh(flags[ilist])45 b(==)i('N')p Fi(,)33 b(the)h(list)h(do)s(es)f(not) │ │ │ │ │ +227 2666 y(need)27 b(to)h(b)s(e)e(lo)s(c)m(k)m(ed.)41 │ │ │ │ │ +b(If)27 b Fh(flags[ilist])44 b(==)j('Y')p Fi(,)27 b(the)g(list)g(do)s │ │ │ │ │ +(es)g(need)g(to)h(b)s(e)e(lo)s(c)m(k)m(ed.)41 b(Used)27 │ │ │ │ │ +b(only)g(when)227 2779 y Fh(lock)i Fi(is)i(not)g Fh(NULL)p │ │ │ │ │ +Fi(.)137 2979 y Fg(\210)45 b Fh(int)i(nlocks)29 b Fi(:)41 │ │ │ │ │ +b(total)32 b(n)m(um)m(b)s(er)d(of)h(lo)s(c)m(ks)i(made)e(on)g(the)h(m)m │ │ │ │ │ +(utual)f(exclusion)h(lo)s(c)m(k.)0 3309 y Fd(1.2)135 │ │ │ │ │ +b(Protot)l(yp)t(es)46 b(and)f(descriptions)g(of)g Fc(SubMtxList)c │ │ │ │ │ +Fd(metho)t(ds)0 3543 y Fi(This)g(section)j(con)m(tains)f(brief)f │ │ │ │ │ +(descriptions)g(including)f(protot)m(yp)s(es)i(of)f(all)h(metho)s(ds)f │ │ │ │ │ +(that)h(b)s(elong)f(to)h(the)0 3656 y Fh(SubMtxList)28 │ │ │ │ │ b Fi(ob)5 b(ject.)0 3942 y Fb(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ │ 4145 y Fi(As)d(usual,)h(there)f(are)g(four)f(basic)h(metho)s(ds)g(to)g │ │ │ │ │ (supp)s(ort)e(ob)5 b(ject)36 b(creation,)i(setting)e(default)f │ │ │ │ │ (\014elds,)h(clearing)0 4258 y(an)m(y)31 b(allo)s(cated)h(data,)f(and)f │ │ │ │ │ (free'ing)h(the)g(ob)5 b(ject.)111 4511 y(1.)46 b Fh(SubMtxList)f(*)j │ │ │ │ │ (SubMtxList_new)c(\()j(void)g(\))g(;)227 4668 y Fi(This)28 │ │ │ │ │ b(metho)s(d)f(simply)h(allo)s(cates)i(storage)g(for)e(the)g │ │ │ │ │ @@ -3508,17 +3514,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 987 4 v 1168 100 a Fh(SubMtxList)28 │ │ │ │ │ -b Ff(:)41 b Fe(DRAFT)121 b Ff(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2866 100 V 987 w Fi(3)111 399 y(3.)46 b Fh(void)h(SubMtxList_clearData) │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 968 4 v 1149 100 a Fh(SubMtxList)28 │ │ │ │ │ +b Ff(:)41 b Fe(DRAFT)121 b Ff(F)-8 b(ebruary)30 b(18,)h(2025)p │ │ │ │ │ +2885 100 V 968 w Fi(3)111 399 y(3.)46 b Fh(void)h(SubMtxList_clearData) │ │ │ │ │ 42 b(\()48 b(SubMtxList)d(*list)h(\))h(;)227 555 y Fi(This)31 │ │ │ │ │ b(metho)s(d)f(clears)j(the)e(ob)5 b(ject)32 b(and)f(free's)h(an)m(y)f │ │ │ │ │ (o)m(wned)g(data)h(b)m(y)g(calling)g Fh(SubMtx)p 3241 │ │ │ │ │ 555 29 4 v 33 w(free\(\))e Fi(for)h(eac)m(h)227 668 y(ob)5 │ │ │ │ │ b(ject)30 b(on)e(the)h(free)g(list.)41 b(If)28 b Fh(heads)f │ │ │ │ │ Fi(is)i(not)g Fh(NULL)p Fi(,)f(it)h(is)g(free'd.)40 b(If)28 │ │ │ │ │ b Fh(counts)f Fi(is)i(not)g Fh(NULL)p Fi(,)f(it)h(is)g(free'd)f(via)227 │ │ │ │ │ @@ -3582,27 +3588,27 @@ │ │ │ │ │ (1.)44 b(Otherwise,)32 b(the)227 5138 y(metho)s(d)e(returns)f(0.)227 │ │ │ │ │ 5294 y Fe(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fi(If)29 │ │ │ │ │ b Fh(list)g Fi(is)h Fh(NULL)p Fi(,)f(or)h(if)g Fh(ilist)e │ │ │ │ │ Fi(is)i(not)h(in)e(the)h(range)h Fh([0,nlist\))p Fi(,)c(an)j(error)g │ │ │ │ │ (message)227 5407 y(is)h(prin)m(ted)f(and)f(zero)j(is)e(returned.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fi(4)p 136 100 987 4 v │ │ │ │ │ -1169 w Fh(SubMtxList)27 b Ff(:)41 b Fe(DRAFT)30 b Ff(Jan)m(uary)g(16,)i │ │ │ │ │ -(2024)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 │ │ │ │ │ -Fi(.)227 775 y(If)c(the)h(list)g(w)m(as)f(lo)s(c)m(k)m(ed,)j(the)d(n)m │ │ │ │ │ -(um)m(b)s(er)f(of)i(lo)s(c)m(ks)g(is)g(incremen)m(ted)f(and)g(the)h(lo) │ │ │ │ │ -s(c)m(k)g(unlo)s(c)m(k)m(ed.)47 b(The)32 b(sa)m(v)m(ed)227 │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fi(4)p 136 100 968 4 v │ │ │ │ │ +1150 w Fh(SubMtxList)27 b Ff(:)41 b Fe(DRAFT)30 b Ff(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)i(2025)p 2933 100 V 111 399 a Fi(3.)46 │ │ │ │ │ +b Fh(SubMtx)g(*)i(SubMtxList_getList)43 b(\()k(SubMtxList)e(*list,)h │ │ │ │ │ +(int)h(ilist)f(\))i(;)227 549 y Fi(If)28 b(list)h Fh(ilist)e │ │ │ │ │ +Fi(is)h(empt)m(y)-8 b(,)30 b(the)f(metho)s(d)f(returns)f │ │ │ │ │ +Fh(NULL)p Fi(.)g(Otherwise,)i(if)f(the)h(list)g(needs)f(to)h(b)s(e)e │ │ │ │ │ +(lo)s(c)m(k)m(ed,)k(the)227 662 y(lo)s(c)m(k)37 b(is)e(lo)s(c)m(k)m │ │ │ │ │ +(ed.)57 b(The)34 b(head)h(of)h(the)f(list)h(is)f(sa)m(v)m(ed)i(to)f(a)f │ │ │ │ │ +(p)s(oin)m(ter)h(and)e(then)h(the)h(head)f(is)g(set)h(to)g │ │ │ │ │ +Fh(NULL)p Fi(.)227 775 y(If)c(the)h(list)g(w)m(as)f(lo)s(c)m(k)m(ed,)j │ │ │ │ │ +(the)d(n)m(um)m(b)s(er)f(of)i(lo)s(c)m(ks)g(is)g(incremen)m(ted)f(and)g │ │ │ │ │ +(the)h(lo)s(c)m(k)g(unlo)s(c)m(k)m(ed.)47 b(The)32 b(sa)m(v)m(ed)227 │ │ │ │ │ 888 y(p)s(oin)m(ter)f(is)f(returned.)227 1038 y Fe(Err)-5 │ │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fi(If)29 b Fh(list)g Fi(is)h │ │ │ │ │ Fh(NULL)p Fi(,)f(or)h(if)g Fh(ilist)e Fi(is)i(not)h(in)e(the)h(range)h │ │ │ │ │ Fh([0,nlist\))p Fi(,)c(an)j(error)g(message)227 1151 │ │ │ │ │ y(is)h(prin)m(ted)f(and)f(zero)j(is)e(returned.)111 1338 │ │ │ │ │ y(4.)46 b Fh(void)h(SubMtxList_addObjectToLi)o(st)42 │ │ │ │ │ b(\()47 b(SubMtxList)e(*list,)1993 1451 y(SubMtx)h(*mtx,)h(int)g(ilist) │ │ │ │ │ ├── ps2ascii {} │ │ │ │ │ │ @@ -22,15 +22,15 @@ │ │ │ │ │ │ The first two operations are queries, and can be done without locking the list. The third operation │ │ │ │ │ │ needs a lock only when two or more threads will be inserting objects into the list. The fourth │ │ │ │ │ │ operation requires a lock only when one thread will add an object while another thread removes │ │ │ │ │ │ the object and the incoming count is not yet zero. │ │ │ │ │ │ Having a lock associated with a SubMtxList object is optional, for example, it is not needed │ │ │ │ │ │ during a serial factorization nor a MPI solve. In the latter case there is one SubMtxList per process. │ │ │ │ │ │ 1 │ │ │ │ │ │ - 2 SubMtxList : DRAFT January 16, 2024 │ │ │ │ │ │ + 2 SubMtxList : DRAFT February 18, 2025 │ │ │ │ │ │ For a multithreaded solve there is one SubMtxList object that is shared by all threads. The mutual │ │ │ │ │ │ exclusion lock that is (optionally) embedded in the SubMtxList object is a Lock object from this │ │ │ │ │ │ library. It is inside the Lock object that we have a mutual exclusion lock. Presently we support the │ │ │ │ │ │ Solaris and POSIX thread packages. Porting the multithreaded codes to another platform should │ │ │ │ │ │ be simple if the POSIX thread package is present. Another type of thread package will require │ │ │ │ │ │ some modifications to the Lock object, but none to the SubMtxList objects. │ │ │ │ │ │ 1.1 Data Structure │ │ │ │ │ │ @@ -52,15 +52,15 @@ │ │ │ │ │ │ 1. SubMtxList * SubMtxList_new ( void ) ; │ │ │ │ │ │ This method simply allocates storage for the SubMtxList structure and then sets the default │ │ │ │ │ │ fields by a call to SubMtxList setDefaultFields(). │ │ │ │ │ │ 2. void SubMtxList_setDefaultFields ( SubMtxList *list ) ; │ │ │ │ │ │ The structure’s fields are set to default values: nlist and nlocks set to zero, and heads, │ │ │ │ │ │ counts, lock and flags are set to NULL . │ │ │ │ │ │ Error checking: If list is NULL, an error message is printed and the program exits. │ │ │ │ │ │ - SubMtxList : DRAFT January 16, 2024 3 │ │ │ │ │ │ + SubMtxList : DRAFT February 18, 2025 3 │ │ │ │ │ │ 3. void SubMtxList_clearData ( SubMtxList *list ) ; │ │ │ │ │ │ This method clears the object and free’s any owned data by calling SubMtx free() for each │ │ │ │ │ │ object on the free list. If heads is not NULL, it is free’d. If counts is not NULL, it is free’d via │ │ │ │ │ │ a call to IVfree(). If flags is not NULL, it is free’d via a call to CVfree(). If the lock is not │ │ │ │ │ │ NULL, it is destroyed via a call to mutex destroy() and then free’d. There is a concluding │ │ │ │ │ │ call to SubMtxList setDefaultFields(). │ │ │ │ │ │ Error checking: If list is NULL, an error message is printed and the program exits. │ │ │ │ │ │ @@ -87,15 +87,15 @@ │ │ │ │ │ │ Error checking: If list is NULL, or if ilist is not in the range [0,nlist), an error message │ │ │ │ │ │ is printed and zero is returned. │ │ │ │ │ │ 2. int SubMtxList_isCountZero ( SubMtxList *list, int ilist ) ; │ │ │ │ │ │ If counts is NULL, or if counts[ilist] equal to zero, the method returns 1. Otherwise, the │ │ │ │ │ │ method returns 0. │ │ │ │ │ │ Error checking: If list is NULL, or if ilist is not in the range [0,nlist), an error message │ │ │ │ │ │ is printed and zero is returned. │ │ │ │ │ │ - 4 SubMtxList : DRAFT January 16, 2024 │ │ │ │ │ │ + 4 SubMtxList : DRAFT February 18, 2025 │ │ │ │ │ │ 3. SubMtx * SubMtxList_getList ( SubMtxList *list, int ilist ) ; │ │ │ │ │ │ If list ilist is empty, the method returns NULL. Otherwise, if the list needs to be locked, the │ │ │ │ │ │ lock is locked. The head of the list is saved to a pointer and then the head is set to NULL. │ │ │ │ │ │ If the list was locked, the number of locks is incremented and the lock unlocked. The saved │ │ │ │ │ │ pointer is returned. │ │ │ │ │ │ Error checking: If list is NULL, or if ilist is not in the range [0,nlist), an error message │ │ │ │ │ │ is printed and zero is returned. │ │ │ ├── ./usr/share/doc/spooles-doc/SubMtxManager.ps.gz │ │ │ │ ├── SubMtxManager.ps │ │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ │ %%EndComments │ │ │ │ │ %%BeginDefaults │ │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ │ %%EndDefaults │ │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ │ %DVIPSCommandLine: dvips main -o SubMtxManager.ps │ │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ │ -%DVIPSSource: TeX output 2024.01.16:2047 │ │ │ │ │ +%DVIPSSource: TeX output 2025.02.18:0318 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -1421,20 +1421,21 @@ │ │ │ │ │ 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 52 /four put │ │ │ │ │ -dup 54 /six put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ +dup 56 /eight put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 74 /J put │ │ │ │ │ +dup 70 /F put │ │ │ │ │ dup 97 /a put │ │ │ │ │ -dup 110 /n put │ │ │ │ │ +dup 98 /b put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ dup 114 /r put │ │ │ │ │ dup 117 /u put │ │ │ │ │ dup 121 /y put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ @@ -1618,89 +1619,93 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ │ -C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ │ -6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ │ -11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ │ -1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ │ -A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ │ -F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ │ -EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ │ -033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ │ -A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ │ -468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8A71FF9C085003EBB4F4 │ │ │ │ │ -3D271F5B16B1AAD3EBDC391F534AA46E545E9D8659DD19B309C3B7625A8396FA │ │ │ │ │ -2519464539D46E43ACB72952313C8497315E0319C08628023E8FC54D7D3BAC29 │ │ │ │ │ -D5AD8EFDABF0C33C7AFB7151A6606C62A87F0F5F783569AC4C881A992E3FE420 │ │ │ │ │ -297F7BC5147F3B2FA98450D2F8B07F7D229BC8BE06729920CFEC22556740E1CB │ │ │ │ │ -3DE09AC763C6D4A20AD1599C368FABD07BC35C16683F2A0311A88983415A9140 │ │ │ │ │ -2EFC4BC1B10DCAD4B2B8A28510E5BD39D6616D2B9B079ED3CF9C315B7DEC29D9 │ │ │ │ │ -251DFD0194B34EC175964C23383F23FFB2E41B698C405815D65EAFF9E9DD1DDE │ │ │ │ │ -30F77924656C288B8DDB2E5B0E7B1FAA66791DE3848EE6DE63AD0E945E49C6C7 │ │ │ │ │ -9FCA16E01F027F9EF7ACB55F02F5B0136480802F789F6FE14B430879979BA04D │ │ │ │ │ -F481AD4CF47E6847936F377FB04869F9A80E597301BFCAB718D8764094673876 │ │ │ │ │ -BCEF8FA3701608C84B3A0399A11D2E6AD922CCB7D72AF9EBFB30F4648A37A123 │ │ │ │ │ -CB8FB14BDC351692CF0CCAA5CA9383C2B23BAAA38700327EB743FBBE9EE04041 │ │ │ │ │ -13F5CEF4B3881BBC051C33369A82B3505B1CFD7D91AEF2E43EA728EE48E2D854 │ │ │ │ │ -5A7E516998ACDD4FD835FA901C5A21810A56D51FE919B2E58408EEB4DAEB487F │ │ │ │ │ -BA7F1D292CED902DF3533566D96DAD918319EA650D4FC7D9E0170CDE620F755B │ │ │ │ │ -0E7AE02D9B118481B26F5FF7060FBCFA2A682B6826F00679BCDA68794C05286D │ │ │ │ │ -B616DD08372ACDE0AE6E7EF116F0D36F16241ED4F0E8CCD80377792E3BB1343C │ │ │ │ │ -EEB22CC77738F7CBCBA32CF6C3979F6DF7ED81A89AE8928FD7CC550F2730BA88 │ │ │ │ │ -1B51CEDC63F4C47F261AFCAB7AC3CED20B15C97E714A460A1A3B16436B4A5149 │ │ │ │ │ -8F91DA4BE0B9B648534CE5F442117036B602DC91E2852BEA62F55803B833FDF7 │ │ │ │ │ -9F901AB87489E703DDEED1091A79DC73B4440BBBF2C7592B441187C4A3562204 │ │ │ │ │ -859F08BA3CE2A8ECCD5AAD13C50FB806FE79A388F1822C5608837CBDE526A044 │ │ │ │ │ -12E5CDE4A066932AF2ACA7E8FC6BA4603640944718752975B7DA6E906BE1EA01 │ │ │ │ │ -46736FF5D1AA1CC682D011B6039CF98C35E36D4F14ABC84A38B7203CC9A17756 │ │ │ │ │ -B2B0345276798F1A88A54AD9FEA0853C6DDF28525ED4F0B7380D14147012C2A4 │ │ │ │ │ -5B02888C986C76497EA4C729B0B82EE73C1A1A8E8F1ABF401E341028E9C15AF9 │ │ │ │ │ -354706D8DC07492921AD0932A46736C0D1B066D00287DACCC068FAE6A796EC89 │ │ │ │ │ -54D1D73AA88F3A5912BA9D3FF70065C8D0D0DAD1CD846501E06694374EFDBEC6 │ │ │ │ │ -931F644D5E8494AFC742423AD9A487658E310E0682BE19B8475F4D450487A686 │ │ │ │ │ -2B94494DEAF1C0F59DE82F2CE64BEE5E97F942FCFA1187ED6AA5761E951A7BF7 │ │ │ │ │ -9F842E34A4656C58B35A9E99F7E6762CEE11E0CF59FFD75D7382C5EE6DBB43F1 │ │ │ │ │ -ED219071D3FB22DBA90977723BB467C0490D042684C0724F40DCA3E0D8F1F4E7 │ │ │ │ │ -3C4F9A67BE6528185EAAFDD415224F7E256A4EA00111C17C746CBD80BF569A27 │ │ │ │ │ -D81195D7F79C1CCEEF30ED00D49F48B63E4B8D7953403A3710AE953CC1B76F0F │ │ │ │ │ -F523D777A6A186F262A602543F94AF7471DBE25FEBC207DB42DAF7DC9A5781FB │ │ │ │ │ -2131AD42869D966A734AAE3466DF1CE9D1BCFA72409A558C0AEE6A8E2FEAACB6 │ │ │ │ │ -2CDABCC28433034848ACF9FB4465D272E4AFC48572647F05F41C7A293CC5B595 │ │ │ │ │ -AD31555FB708A72962707348BC7033A8224BD42EB9D75FDF3AE9E6A9C960B330 │ │ │ │ │ -5137DF59F8E2E0D535F41524ABDF070745A4FA25CD8DFD38A5FF30A95452B875 │ │ │ │ │ -6569E8812631300D79A942C563AF174AC05C9F2D09D7D5D3C605F5A6B7F21B34 │ │ │ │ │ -18F270A993B050838E701A17938D1C156CBA7CA4BAC7C562CE9D7B758EAB25A9 │ │ │ │ │ -A6DFFC71F65561341847B776DF34061CE3D439B87B857626987EC93B3B95B8E8 │ │ │ │ │ -76FFB16B263675333FA10414FEED707FF7C366BF8B20FF8577CDEBEBCF1A5BCE │ │ │ │ │ -258C09C90175A5278B7C444A623E3331FDE5A6387B3E389540ED1E7E883958F3 │ │ │ │ │ -3A5C89CCD62256FA069DF4A5090FB17C1F1757C9209DAFB8A1F47182BF3E88D9 │ │ │ │ │ -0B5376B59EE165A761902759C8ED7F5AD301E7EB8B49CC09AF921DB45B7F8002 │ │ │ │ │ -AB32E73AAE53942DE0F9175D8446017006C9C0B93EF39C13B7A879F2F6DDFF16 │ │ │ │ │ -204BB24F976847CF006FD29332FCCB255B5116F7077A44F7066C39C81DC4BAD2 │ │ │ │ │ -40DB2753626C0102E5D047522ABC38EA294A699B8DFD9CA0A7980561A1062E90 │ │ │ │ │ -AB11EE286A9C238D9F721D9980D0A1828C2814972622D948CEE8C812C19A9A03 │ │ │ │ │ -608ED0AC138A436FFBF8BE3D1E66C87793416AF38ED9BC5424568A175FBDAA9E │ │ │ │ │ -D6FC11A7021693819B051562B5A59F32629E2D6019D69DD329BE1894A2B295E1 │ │ │ │ │ -1DCE9683B29AE126C56F26E5C595BF1A8249BDE231DBE8B066F7F62EF149B975 │ │ │ │ │ -A863969A4690504A5EA064721DA909B8157C0B39FBF8228D95CB655E406161E1 │ │ │ │ │ -148610FAEED7C5509880223C06A66DA19E10F94DC2DB481B26 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004FD597ED │ │ │ │ │ +EFDBC64ABD9B79386FB2427D1A63522195B1239C09F8CB3F8BD7A245A6DD82E3 │ │ │ │ │ +260C3889587626DFC5F7978E55F5524ABD6A3319CDD3D3F40D040044D51DA4E1 │ │ │ │ │ +6797EEAC7AA07C77EC6DB0E6E182B545A8BEF63B14F3FC07BAC09E7CD5C17ED6 │ │ │ │ │ +10080704B0DA4E9BA12F968DF8A58458D17E9A5B1F14A83DC51F5B161ADEE1CC │ │ │ │ │ +0183D82ED92C6FC7203C289949EDF0284D9893029FF5408E421324625F17C3E5 │ │ │ │ │ +2437C8F75A9D68EE1AF9174FEA6FC6BF793C7D2E497EA90396CF1A645E283B69 │ │ │ │ │ +8425F47C323587DF91E1D596DCB1E3A787C955D9D965A5E3E26ADF58B62AD5F9 │ │ │ │ │ +0C9AC784DE479780606354111E3202F215650DBBE1063A46F3C10B9EBC974DDA │ │ │ │ │ +A1A28DBBD43E9E5BFF000B12C787D0427928078F8EC5FE90DED97E6C129E8DEA │ │ │ │ │ +51F66504DB83764E52B0BA68DF7BE684C8959CB1D3345CC48221A9A4683306C0 │ │ │ │ │ +62B634E0A539383F0C7A788D9711EFF414869CCC5659D78CEBE009BF2463F56A │ │ │ │ │ +0ADC993348FE96DF7C250E13ED6504AACFE8F8DCA2D2048D9D8CFA127D363EAC │ │ │ │ │ +1F0630E2D1B621E6954038195D965B91FD974FA3F1B8B29D200A16CEBA645E2F │ │ │ │ │ +CEEE6FD49FBBD49E38AE67D4BFFCE91F1FC422554EC4409C5FA18D40FCD6D9B3 │ │ │ │ │ +2185ED1E0F98106D4339F086B05CA36E56EC22C60E2CE23F9C4CC403ACAD3F94 │ │ │ │ │ +4086B4DF6DFA0B7B4716417263E7B558535566AED2F6C2F9846A16D71A7930A7 │ │ │ │ │ +49232D3D16C4A01CF1A1998A06F40062ED329179A85668537C55D0BC24FC0010 │ │ │ │ │ +54DA83E2FC66B2A5D428E6A9BFC983253668C0ECE6CA36DBF97C4B7659D50842 │ │ │ │ │ +C65B36604840EEDA399B57E2DEFAC3E7FB031634CE33D04238F9854D2AAAF448 │ │ │ │ │ +34DA5F3BCCED3166FEEE82BB0BBA0A397CC2F95865CB52AABFF454D93B425809 │ │ │ │ │ +A26AC459F321FD23E2262FE816D06BAAECF32AAF167F84799AF80F9F88388D07 │ │ │ │ │ +0DB5FD57AFEE2850A8DFE977E6AE39CB3DC16DB1A163A583C86C6F775CE33521 │ │ │ │ │ +0081C0BBBAD6D30D26C66B28B38CEAC78FEA5FB3CC5853656B67C6D9D80EB30E │ │ │ │ │ +397558C9179AF5920F34DAB3F578DFCF0DBB137AED17D6325C23883E69EE4621 │ │ │ │ │ +34355A70C19EA68891E1CA937376901C85CDEE109F1665943E29A216DC00937A │ │ │ │ │ +B983A729A4654AD09187C0242D52FA4ADD0853EF4888864914D7D81C56578DD4 │ │ │ │ │ +3B51907032022E6E412D4F114675DEDCA8A9E85DC03A0B583FECD84432D15F70 │ │ │ │ │ +01F627BD6EC91F9FCFDA01BF40E1229B5F164309DBB641AD50970503DA2048C1 │ │ │ │ │ +DF8F36E8D252EE113F0B46677D9BAF376BAE18D74CFB0DBBD0C7E9D0A58BA3ED │ │ │ │ │ +1E5099CAE073EB5638617760AB57849893764EA9735173CD1EAB66884CEA7EE3 │ │ │ │ │ +8843327B2E145BD6FBB49102776B82BC511D109F8BE9E7E99DADABABEDC3CFD9 │ │ │ │ │ +393578FFD85907DFF2849E4CDE6FA4DEC7E1C150EBE4047FFB650F9548BE6D11 │ │ │ │ │ +0C51226A5436F18BF20A02E0F888F46B6AC3A8E8D927ECD3B5E095933AD3859F │ │ │ │ │ +5167C41D832EFCC4093BD2AFA7101AB430E57DAFC3590F05D3CBABB32BC203A0 │ │ │ │ │ +467B23BDB830487C9AA5B85BAC065F8538871B4180F8C4732E637DB090CFDE5A │ │ │ │ │ +3F4F2B5BFAFB848BAAD1A17CB076B34159601639BD93ECAB1214ACABF2C67FE2 │ │ │ │ │ +0658AA20B08681070FF56F1CC52144ABA8765D6E124D1CEA9BBA102808CE1BB2 │ │ │ │ │ +5EDF46BC7BBC2A5B49EE6EC28F5797A3969B057B21FCDBBD0E60848FF14F6CA3 │ │ │ │ │ +70F3060BDBB019B22722C99C7691760F013763B7FBEB62830AE215F195BF9F01 │ │ │ │ │ +21BF4377397E89574CFA47D123AA506A570A77BA6EB4AAB0B237A26154880293 │ │ │ │ │ +3952F832F72ECCB024F02385E5EE8566B165904B594E30D0700D033C6B429F6F │ │ │ │ │ +2A20BC774F442BC9CE29FCC81807C2768A8BC927A215558FBF36DC53F477F04A │ │ │ │ │ +41DA66E1A85B659EB761230977EAD7DA0150513D3323B143D4E2A61BCF03334C │ │ │ │ │ +C0EE3E1B06CFAF58ECC910BD81F0352B75FF1594D6A4EF504232D442174BE766 │ │ │ │ │ +0F8E703F97E21D25D4CD097549C31FEE7017C3916EFB02E7BF869172889827B6 │ │ │ │ │ +A48465EB7612BA3DBC6A9436C7167F149A25CE9F8E3F4F8DE3B5ADF6C0986CB3 │ │ │ │ │ +3A7E2DAB44AB489796461536F5F713017F2620AD03295CAE9285F08974AE0DF8 │ │ │ │ │ +D739260929619B509491AFF09C4CAEF9E65C2CA69470C907ECBF3AB6C955360D │ │ │ │ │ +05ABAC306DB51122A1ADC7EF0DD70FA299A45C505A83727D4598C86319EE9C06 │ │ │ │ │ +7218EFD4F40388354BCF1B79593D5AD221DF955D081F99F880E5CED07321AB3E │ │ │ │ │ +A2FCB8B05D54807D8E15E65B78DCE12989B9276350080C905DBB74CE9AA7E246 │ │ │ │ │ +5D3BAED292C562D4CF54617FCC6654496C7996D1ECE1EFF9258716AB763A12E6 │ │ │ │ │ +316E4C5587351A6DB011F58F6A15BC28BEBDC3836E0CB892807FEC228DC1B380 │ │ │ │ │ +92F7F42279F08D60F13D6A4CB425543C3644461461CBF6F27B6603F613D1FCF8 │ │ │ │ │ +A8410AD82D1498166AEB35D4125D7E2ADEAAB18BC04806AED53513F066E5F154 │ │ │ │ │ +3E13E863C50B9814EE2FB978D0D24A03FAF650CB6E2CADF1E6BE6BAF699AFC03 │ │ │ │ │ +E1A0EEB207B3B9A689ED5B373FE86686AD230BE6C18E1673DDA50E224B343EC5 │ │ │ │ │ +903BA0C8041C13607B50D5852AC7970B15C244E6EBA7D54B3086312CF04761D6 │ │ │ │ │ +7D3D75D51F20C371494AB81AB4A9838B20B483B851D01FEF41EA5C0B4755B964 │ │ │ │ │ +EB6E9B178051C556A010994EB88EAE641F4C1A0D7E0F98D5267E18AEF1AEA7E7 │ │ │ │ │ +9030A97DF89AFF621981C33B645FFB5F3BB2065A7661D11B26E0999561DF3580 │ │ │ │ │ +4A76A05DFAF8085525F8D5C01936F03C32E26E72569371C9EA3B8916F9DFC5FC │ │ │ │ │ +6A6F25A0FFDB981BA8B896393D75774D50828E6ADE903C45406E354703A4BC56 │ │ │ │ │ +2C49A47FEAC970DC433E3050C49F7FB945A9705BD8852D2D65D935F244D3B423 │ │ │ │ │ +EFAB84AAAAB8FBAFF50AFF372A533BCCEB5FC273DBADCF715776DF02A5DCBA9A │ │ │ │ │ +FBF265FAB4745D6475B33611EEE1EA95E7584E0BEEC7CA789AA69C8D03D6F8C0 │ │ │ │ │ +5B6844E2B901ACA560C0433B053D134866E567425174E47173679AAD4486A2D3 │ │ │ │ │ +369C29E4DD2CD6ACA1BE80ED8FF0A9C58A616D26E758BD8E6342624EC83FB590 │ │ │ │ │ +BD354B52B60BB054FAFE9AC63E1564FBC721FE8F276B0413EC89A2C85E5ED1B0 │ │ │ │ │ +3A9D83BE62A4488ADE7CE69971A8AF7E5862A4290EEF6F00D4171C7FFB360065 │ │ │ │ │ +92E72BF02BE27161AE0BB5516572A0BDC4F316FFB24B38484AC8D1FD4CD86062 │ │ │ │ │ +A2B5D03CF28C3A679C039A6EFDD4C9DA7E463AD60234C9F6BBEE48D87DD94D85 │ │ │ │ │ +842F495F3E25723718682CE4D6224CBBF4456F03077EDF736D65B9DDAB09470E │ │ │ │ │ +17742D82011FFA96BFE86B96E858F9352FCD20C3D46B77DBDEE54336EC2249EA │ │ │ │ │ +211F6DFFF5BEA1E5192BE1BAC0BDD5EDDB3D56C6F7C6E543561A0B39E5C1B04F │ │ │ │ │ +C683A7516B6E69D682455386DDA709929D621FA434D403E895AA0A77DBE1DFD2 │ │ │ │ │ +0D060DF82378880147ED97C6E8149686FA048710B113760AC1DA4512FF8556B3 │ │ │ │ │ +16E2447485B8C3CD58D0469C4A45FFB4CB0322BB284C02 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -3869,20 +3874,20 @@ │ │ │ │ │ @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 1[45 1[45 45 45 │ │ │ │ │ -3[25 44[{}13 90.9091 /CMSL10 rf /Ff 180[60 39 9[37 4[20 │ │ │ │ │ -59[{}4 66.4176 /CMMI8 rf /Fg 170[62 8[62 76[{}2 90.9091 │ │ │ │ │ -/CMMI10 rf /Fh 134[44 4[30 37 38 2[46 51 74 23 42 1[28 │ │ │ │ │ -46 42 1[42 46 42 1[46 12[65 1[66 11[59 62 69 2[68 6[28 │ │ │ │ │ -58[{}23 90.9091 /CMTI10 rf │ │ │ │ │ +3[51 2[36 12[40 2[51 45 26[59 11[25 1[45 2[45 2[45 45 │ │ │ │ │ +45 3[25 44[{}14 90.9091 /CMSL10 rf /Ff 180[60 39 9[37 │ │ │ │ │ +4[20 59[{}4 66.4176 /CMMI8 rf /Fg 170[62 8[62 76[{}2 │ │ │ │ │ +90.9091 /CMMI10 rf /Fh 134[44 4[30 37 38 2[46 51 74 23 │ │ │ │ │ +42 1[28 46 42 1[42 46 42 1[46 12[65 1[66 11[59 62 69 │ │ │ │ │ +2[68 6[28 58[{}23 90.9091 /CMTI10 rf │ │ │ │ │ %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 │ │ │ │ │ @@ -4013,26 +4018,26 @@ │ │ │ │ │ (utual)f(exclusion)h(lo)s(c)m(k.)63 b(This)36 b(is)i(not)0 │ │ │ │ │ 5294 y(necessary)33 b(for)g(a)g(serial)h(or)f(MPI)g(factorization)j(or) │ │ │ │ │ d(solv)m(e)h(\(where)f(there)g(is)g(one)g Fj(SubMtxManager)c │ │ │ │ │ Fk(ob)5 b(ject)34 b(for)0 5407 y(eac)m(h)e(pro)s(cessor\),)e(but)g(it)h │ │ │ │ │ (is)f(necessary)h(for)f(in)g(a)h(m)m(ultithreaded)f(en)m(vironmen)m(t.) │ │ │ │ │ 1927 5656 y(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fk(2)p 136 100 915 4 v │ │ │ │ │ -1097 w Fj(SubMtxManager)27 b Fe(:)41 b Fh(DRAFT)30 b │ │ │ │ │ -Fe(Jan)m(uary)g(16,)h(2024)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 │ │ │ │ │ -b Fj(SubMtxManager)d Fk(structure)j(has)g(the)g(follo)m(wing)i │ │ │ │ │ -(\014elds.)137 1407 y Fi(\210)45 b Fj(SubMtx)h(*head)29 │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fk(2)p 136 100 896 4 v │ │ │ │ │ +1078 w Fj(SubMtxManager)27 b Fe(:)41 b Fh(DRAFT)30 b │ │ │ │ │ +Fe(F)-8 b(ebruary)30 b(18,)h(2025)p 3004 100 V 141 399 │ │ │ │ │ +a Fk(Eac)m(h)21 b(manager)h(ob)5 b(ject)21 b(k)m(eeps)h(trac)m(k)g(of)e │ │ │ │ │ +(certain)i(statistics,)j(b)m(ytes)c(in)g(their)f(w)m(orkspaces,)k(the)d │ │ │ │ │ +(total)h(n)m(um)m(b)s(er)0 511 y(of)34 b(b)m(ytes)h(requested,)h(the)e │ │ │ │ │ +(n)m(um)m(b)s(er)f(of)i(requests)f(for)g(a)h Fj(SubMtx)d │ │ │ │ │ +Fk(ob)5 b(jects,)36 b(the)f(n)m(um)m(b)s(er)e(of)h(releases,)j(and)d │ │ │ │ │ +(the)0 624 y(n)m(um)m(b)s(er)29 b(of)i(lo)s(c)m(ks)g(and)f(unlo)s(c)m │ │ │ │ │ +(ks.)0 951 y Fd(1.1)135 b(Data)46 b(Structure)0 1184 │ │ │ │ │ +y Fk(The)30 b Fj(SubMtxManager)d Fk(structure)j(has)g(the)g(follo)m │ │ │ │ │ +(wing)i(\014elds.)137 1407 y Fi(\210)45 b Fj(SubMtx)h(*head)29 │ │ │ │ │ b Fk(:)41 b(head)30 b(of)h(the)f(free)h(list)g(of)f Fj(SubMtx)f │ │ │ │ │ Fk(ob)5 b(jects.)137 1606 y Fi(\210)45 b Fj(Lock)i(*lock)29 │ │ │ │ │ b Fk(:)41 b(m)m(utual)30 b(exclusion)h(lo)s(c)m(k.)137 │ │ │ │ │ 1804 y Fi(\210)45 b Fj(int)i(mode)19 b Fk(:)36 b(b)s(eha)m(vior)20 │ │ │ │ │ b(mo)s(de.)37 b(When)20 b Fj(mode)47 b(=)g(0)p Fk(,)23 │ │ │ │ │ b(the)d(ob)5 b(ject)21 b(calls)h Fj(SubMtx)p 2911 1804 │ │ │ │ │ 29 4 v 32 w(new\(\))d Fk(and)h Fj(SubMtx)p 3657 1804 │ │ │ │ │ @@ -4072,17 +4077,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 915 4 v 1097 100 a Fj(SubMtxManager)27 │ │ │ │ │ -b Fe(:)40 b Fh(DRAFT)121 b Fe(Jan)m(uary)30 b(16,)i(2024)p │ │ │ │ │ -2938 100 V 915 w Fk(3)111 399 y(2.)46 b Fj(void)h │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 896 4 v 1078 100 a Fj(SubMtxManager)26 │ │ │ │ │ +b Fe(:)41 b Fh(DRAFT)121 b Fe(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2957 100 V 896 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 │ │ │ │ │ @@ -4145,18 +4150,18 @@ │ │ │ │ │ Fj(mode)46 b(=)i(0)p Fk(\),)30 b(or)g(returning)f(it)i(to)g(the)227 │ │ │ │ │ 5247 y(free)g(list)g(\(if)f Fj(mode)47 b(=)h(1)p Fk(\).)227 │ │ │ │ │ 5407 y Fh(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fk(If)30 │ │ │ │ │ b Fj(manager)f Fk(or)h Fj(mtx)g Fk(is)g Fj(NULL)p Fk(,)f(an)i(error)f │ │ │ │ │ (message)h(is)g(prin)m(ted)f(and)f(zero)i(is)g(returned.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fk(4)p 136 100 915 4 v │ │ │ │ │ -1097 w Fj(SubMtxManager)27 b Fe(:)41 b Fh(DRAFT)30 b │ │ │ │ │ -Fe(Jan)m(uary)g(16,)h(2024)p 2985 100 V 111 399 a Fk(3.)46 │ │ │ │ │ -b Fj(void)h(SubMtxManager_releaseLis)o(tOfO)o(bje)o(cts)41 │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fk(4)p 136 100 896 4 v │ │ │ │ │ +1078 w Fj(SubMtxManager)27 b Fe(:)41 b Fh(DRAFT)30 b │ │ │ │ │ +Fe(F)-8 b(ebruary)30 b(18,)h(2025)p 3004 100 V 111 399 │ │ │ │ │ +a Fk(3.)46 b Fj(void)h(SubMtxManager_releaseLis)o(tOfO)o(bje)o(cts)41 │ │ │ │ │ b(\()48 b(SubMtxManager)c(*manager,)h(SubMtx)h(*first)g(\))i(;)227 │ │ │ │ │ 549 y Fk(This)35 b(metho)s(d)g(releases)h(a)g(list)g(of)f │ │ │ │ │ Fj(SubMtx)f Fk(ob)5 b(jects)36 b(whose)f(head)g(is)g │ │ │ │ │ Fj(first)p Fk(,)h(either)f(free'ing)h(them)g(\(if)227 │ │ │ │ │ 662 y Fj(mode)47 b(=)g(0)p Fk(\),)31 b(or)f(returning)g(them)g(to)h │ │ │ │ │ (the)g(free)f(list)h(\(if)g Fj(mode)47 b(=)g(1)p Fk(\).)227 │ │ │ │ │ 812 y Fh(Err)-5 b(or)32 b(che)-5 b(cking:)39 b Fk(If)28 │ │ │ │ │ ├── ps2ascii {} │ │ │ │ │ │ @@ -27,15 +27,15 @@ │ │ │ │ │ │ with sufficient work space, and returns a pointer to the object. When a SubMtx object is no longer │ │ │ │ │ │ necessary, it is released to the manager object, which then inserts it into the free list. A list of │ │ │ │ │ │ SubMtx objects can be released in one call. │ │ │ │ │ │ One can specify whether the object is to be locked via a mutual exclusion lock. This is not │ │ │ │ │ │ necessary for a serial or MPI factorization or solve (where there is one SubMtxManager object for │ │ │ │ │ │ each processor), but it is necessary for in a multithreaded environment. │ │ │ │ │ │ 1 │ │ │ │ │ │ - 2 SubMtxManager : DRAFT January 16, 2024 │ │ │ │ │ │ + 2 SubMtxManager : DRAFT February 18, 2025 │ │ │ │ │ │ Eachmanagerobjectkeepstrackofcertainstatistics, bytesintheirworkspaces, thetotal number │ │ │ │ │ │ of bytes requested, the number of requests for a SubMtx objects, the number of releases, and the │ │ │ │ │ │ number of locks and unlocks. │ │ │ │ │ │ 1.1 Data Structure │ │ │ │ │ │ The SubMtxManager structure has the following fields. │ │ │ │ │ │ • SubMtx *head : head of the free list of SubMtx objects. │ │ │ │ │ │ • Lock *lock : mutual exclusion lock. │ │ │ │ │ │ @@ -55,15 +55,15 @@ │ │ │ │ │ │ SubMtxManager object. │ │ │ │ │ │ 1.2.1 Basic methods │ │ │ │ │ │ As usual, there are four basic methods to support object creation, setting default fields, clearing │ │ │ │ │ │ any allocated data, and free’ing the object. │ │ │ │ │ │ 1. SubMtxManager * SubMtxManager_new ( void ) ; │ │ │ │ │ │ This method simply allocates storage for the SubMtxManager structure and then sets the │ │ │ │ │ │ default fields by a call to SubMtxManager setDefaultFields(). │ │ │ │ │ │ - SubMtxManager : DRAFT January 16, 2024 3 │ │ │ │ │ │ + SubMtxManager : DRAFT February 18, 2025 3 │ │ │ │ │ │ 2. void SubMtxManager_setDefaultFields ( SubMtxManager *manager ) ; │ │ │ │ │ │ Thestructure’sfieldsaresettodefaultvalues: mode,nactive,nbytesactive,nbytesrequested, │ │ │ │ │ │ nbytesalloc, nrequests, nreleases, nlocks and nunlocks are set to zero, and head and │ │ │ │ │ │ lock are set to NULL . │ │ │ │ │ │ Error checking: If manager is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 3. void SubMtxManager_clearData ( SubMtxManager *manager ) ; │ │ │ │ │ │ This method clears the object and free’s any owned data by calling SubMtx free() for each │ │ │ │ │ │ @@ -89,15 +89,15 @@ │ │ │ │ │ │ its workspace. │ │ │ │ │ │ Error checking: If manager is NULL, or if nbytesNeeded ≤ 0, an error message is printed and │ │ │ │ │ │ zero is returned. │ │ │ │ │ │ 2. void SubMtxManager_releaseObject ( SubMtxManager *manager, SubMtx *mtx ) ; │ │ │ │ │ │ This method releases the mtx instance, either free’ing it (if mode = 0), or returning it to the │ │ │ │ │ │ free list (if mode = 1). │ │ │ │ │ │ Error checking: If manager or mtx is NULL, an error message is printed and zero is returned. │ │ │ │ │ │ - 4 SubMtxManager : DRAFT January 16, 2024 │ │ │ │ │ │ + 4 SubMtxManager : DRAFT February 18, 2025 │ │ │ │ │ │ 3. void SubMtxManager_releaseListOfObjects ( SubMtxManager *manager, SubMtx *first ) ; │ │ │ │ │ │ This method releases a list of SubMtx objects whose head is first, either free’ing them (if │ │ │ │ │ │ mode = 0), or returning them to the free list (if mode = 1). │ │ │ │ │ │ Error checking: If manager or head is NULL, an error message is printed and zero is returned. │ │ │ │ │ │ 1.2.4 IO methods │ │ │ │ │ │ 1. void SubMtxManager_writeForHumanEye ( SubMtxManager *manager, FILE *fp ) ; │ │ │ │ │ │ This method writes a SubMtxManager object to a file in an easily readable format. │ │ │ ├── ./usr/share/doc/spooles-doc/SymbFac.ps.gz │ │ │ │ ├── SymbFac.ps │ │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ │ %%EndComments │ │ │ │ │ %%BeginDefaults │ │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ │ %%EndDefaults │ │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ │ %DVIPSCommandLine: dvips main -o SymbFac.ps │ │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ │ -%DVIPSSource: TeX output 2024.01.16:2047 │ │ │ │ │ +%DVIPSSource: TeX output 2025.02.18:0318 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -1008,20 +1008,21 @@ │ │ │ │ │ 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 52 /four put │ │ │ │ │ -dup 54 /six put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ +dup 56 /eight put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 74 /J put │ │ │ │ │ +dup 70 /F put │ │ │ │ │ dup 97 /a put │ │ │ │ │ -dup 110 /n put │ │ │ │ │ +dup 98 /b put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ dup 114 /r put │ │ │ │ │ dup 117 /u put │ │ │ │ │ dup 121 /y put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ @@ -1205,89 +1206,93 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ │ -C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ │ -6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ │ -11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ │ -1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ │ -A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ │ -F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ │ -EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ │ -033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ │ -A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ │ -468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8A71FF9C085003EBB4F4 │ │ │ │ │ -3D271F5B16B1AAD3EBDC391F534AA46E545E9D8659DD19B309C3B7625A8396FA │ │ │ │ │ -2519464539D46E43ACB72952313C8497315E0319C08628023E8FC54D7D3BAC29 │ │ │ │ │ -D5AD8EFDABF0C33C7AFB7151A6606C62A87F0F5F783569AC4C881A992E3FE420 │ │ │ │ │ -297F7BC5147F3B2FA98450D2F8B07F7D229BC8BE06729920CFEC22556740E1CB │ │ │ │ │ -3DE09AC763C6D4A20AD1599C368FABD07BC35C16683F2A0311A88983415A9140 │ │ │ │ │ -2EFC4BC1B10DCAD4B2B8A28510E5BD39D6616D2B9B079ED3CF9C315B7DEC29D9 │ │ │ │ │ -251DFD0194B34EC175964C23383F23FFB2E41B698C405815D65EAFF9E9DD1DDE │ │ │ │ │ -30F77924656C288B8DDB2E5B0E7B1FAA66791DE3848EE6DE63AD0E945E49C6C7 │ │ │ │ │ -9FCA16E01F027F9EF7ACB55F02F5B0136480802F789F6FE14B430879979BA04D │ │ │ │ │ -F481AD4CF47E6847936F377FB04869F9A80E597301BFCAB718D8764094673876 │ │ │ │ │ -BCEF8FA3701608C84B3A0399A11D2E6AD922CCB7D72AF9EBFB30F4648A37A123 │ │ │ │ │ -CB8FB14BDC351692CF0CCAA5CA9383C2B23BAAA38700327EB743FBBE9EE04041 │ │ │ │ │ -13F5CEF4B3881BBC051C33369A82B3505B1CFD7D91AEF2E43EA728EE48E2D854 │ │ │ │ │ -5A7E516998ACDD4FD835FA901C5A21810A56D51FE919B2E58408EEB4DAEB487F │ │ │ │ │ -BA7F1D292CED902DF3533566D96DAD918319EA650D4FC7D9E0170CDE620F755B │ │ │ │ │ -0E7AE02D9B118481B26F5FF7060FBCFA2A682B6826F00679BCDA68794C05286D │ │ │ │ │ -B616DD08372ACDE0AE6E7EF116F0D36F16241ED4F0E8CCD80377792E3BB1343C │ │ │ │ │ -EEB22CC77738F7CBCBA32CF6C3979F6DF7ED81A89AE8928FD7CC550F2730BA88 │ │ │ │ │ -1B51CEDC63F4C47F261AFCAB7AC3CED20B15C97E714A460A1A3B16436B4A5149 │ │ │ │ │ -8F91DA4BE0B9B648534CE5F442117036B602DC91E2852BEA62F55803B833FDF7 │ │ │ │ │ -9F901AB87489E703DDEED1091A79DC73B4440BBBF2C7592B441187C4A3562204 │ │ │ │ │ -859F08BA3CE2A8ECCD5AAD13C50FB806FE79A388F1822C5608837CBDE526A044 │ │ │ │ │ -12E5CDE4A066932AF2ACA7E8FC6BA4603640944718752975B7DA6E906BE1EA01 │ │ │ │ │ -46736FF5D1AA1CC682D011B6039CF98C35E36D4F14ABC84A38B7203CC9A17756 │ │ │ │ │ -B2B0345276798F1A88A54AD9FEA0853C6DDF28525ED4F0B7380D14147012C2A4 │ │ │ │ │ -5B02888C986C76497EA4C729B0B82EE73C1A1A8E8F1ABF401E341028E9C15AF9 │ │ │ │ │ -354706D8DC07492921AD0932A46736C0D1B066D00287DACCC068FAE6A796EC89 │ │ │ │ │ -54D1D73AA88F3A5912BA9D3FF70065C8D0D0DAD1CD846501E06694374EFDBEC6 │ │ │ │ │ -931F644D5E8494AFC742423AD9A487658E310E0682BE19B8475F4D450487A686 │ │ │ │ │ -2B94494DEAF1C0F59DE82F2CE64BEE5E97F942FCFA1187ED6AA5761E951A7BF7 │ │ │ │ │ -9F842E34A4656C58B35A9E99F7E6762CEE11E0CF59FFD75D7382C5EE6DBB43F1 │ │ │ │ │ -ED219071D3FB22DBA90977723BB467C0490D042684C0724F40DCA3E0D8F1F4E7 │ │ │ │ │ -3C4F9A67BE6528185EAAFDD415224F7E256A4EA00111C17C746CBD80BF569A27 │ │ │ │ │ -D81195D7F79C1CCEEF30ED00D49F48B63E4B8D7953403A3710AE953CC1B76F0F │ │ │ │ │ -F523D777A6A186F262A602543F94AF7471DBE25FEBC207DB42DAF7DC9A5781FB │ │ │ │ │ -2131AD42869D966A734AAE3466DF1CE9D1BCFA72409A558C0AEE6A8E2FEAACB6 │ │ │ │ │ -2CDABCC28433034848ACF9FB4465D272E4AFC48572647F05F41C7A293CC5B595 │ │ │ │ │ -AD31555FB708A72962707348BC7033A8224BD42EB9D75FDF3AE9E6A9C960B330 │ │ │ │ │ -5137DF59F8E2E0D535F41524ABDF070745A4FA25CD8DFD38A5FF30A95452B875 │ │ │ │ │ -6569E8812631300D79A942C563AF174AC05C9F2D09D7D5D3C605F5A6B7F21B34 │ │ │ │ │ -18F270A993B050838E701A17938D1C156CBA7CA4BAC7C562CE9D7B758EAB25A9 │ │ │ │ │ -A6DFFC71F65561341847B776DF34061CE3D439B87B857626987EC93B3B95B8E8 │ │ │ │ │ -76FFB16B263675333FA10414FEED707FF7C366BF8B20FF8577CDEBEBCF1A5BCE │ │ │ │ │ -258C09C90175A5278B7C444A623E3331FDE5A6387B3E389540ED1E7E883958F3 │ │ │ │ │ -3A5C89CCD62256FA069DF4A5090FB17C1F1757C9209DAFB8A1F47182BF3E88D9 │ │ │ │ │ -0B5376B59EE165A761902759C8ED7F5AD301E7EB8B49CC09AF921DB45B7F8002 │ │ │ │ │ -AB32E73AAE53942DE0F9175D8446017006C9C0B93EF39C13B7A879F2F6DDFF16 │ │ │ │ │ -204BB24F976847CF006FD29332FCCB255B5116F7077A44F7066C39C81DC4BAD2 │ │ │ │ │ -40DB2753626C0102E5D047522ABC38EA294A699B8DFD9CA0A7980561A1062E90 │ │ │ │ │ -AB11EE286A9C238D9F721D9980D0A1828C2814972622D948CEE8C812C19A9A03 │ │ │ │ │ -608ED0AC138A436FFBF8BE3D1E66C87793416AF38ED9BC5424568A175FBDAA9E │ │ │ │ │ -D6FC11A7021693819B051562B5A59F32629E2D6019D69DD329BE1894A2B295E1 │ │ │ │ │ -1DCE9683B29AE126C56F26E5C595BF1A8249BDE231DBE8B066F7F62EF149B975 │ │ │ │ │ -A863969A4690504A5EA064721DA909B8157C0B39FBF8228D95CB655E406161E1 │ │ │ │ │ -148610FAEED7C5509880223C06A66DA19E10F94DC2DB481B26 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004FD597ED │ │ │ │ │ +EFDBC64ABD9B79386FB2427D1A63522195B1239C09F8CB3F8BD7A245A6DD82E3 │ │ │ │ │ +260C3889587626DFC5F7978E55F5524ABD6A3319CDD3D3F40D040044D51DA4E1 │ │ │ │ │ +6797EEAC7AA07C77EC6DB0E6E182B545A8BEF63B14F3FC07BAC09E7CD5C17ED6 │ │ │ │ │ +10080704B0DA4E9BA12F968DF8A58458D17E9A5B1F14A83DC51F5B161ADEE1CC │ │ │ │ │ +0183D82ED92C6FC7203C289949EDF0284D9893029FF5408E421324625F17C3E5 │ │ │ │ │ +2437C8F75A9D68EE1AF9174FEA6FC6BF793C7D2E497EA90396CF1A645E283B69 │ │ │ │ │ +8425F47C323587DF91E1D596DCB1E3A787C955D9D965A5E3E26ADF58B62AD5F9 │ │ │ │ │ +0C9AC784DE479780606354111E3202F215650DBBE1063A46F3C10B9EBC974DDA │ │ │ │ │ +A1A28DBBD43E9E5BFF000B12C787D0427928078F8EC5FE90DED97E6C129E8DEA │ │ │ │ │ +51F66504DB83764E52B0BA68DF7BE684C8959CB1D3345CC48221A9A4683306C0 │ │ │ │ │ +62B634E0A539383F0C7A788D9711EFF414869CCC5659D78CEBE009BF2463F56A │ │ │ │ │ +0ADC993348FE96DF7C250E13ED6504AACFE8F8DCA2D2048D9D8CFA127D363EAC │ │ │ │ │ +1F0630E2D1B621E6954038195D965B91FD974FA3F1B8B29D200A16CEBA645E2F │ │ │ │ │ +CEEE6FD49FBBD49E38AE67D4BFFCE91F1FC422554EC4409C5FA18D40FCD6D9B3 │ │ │ │ │ +2185ED1E0F98106D4339F086B05CA36E56EC22C60E2CE23F9C4CC403ACAD3F94 │ │ │ │ │ +4086B4DF6DFA0B7B4716417263E7B558535566AED2F6C2F9846A16D71A7930A7 │ │ │ │ │ +49232D3D16C4A01CF1A1998A06F40062ED329179A85668537C55D0BC24FC0010 │ │ │ │ │ +54DA83E2FC66B2A5D428E6A9BFC983253668C0ECE6CA36DBF97C4B7659D50842 │ │ │ │ │ +C65B36604840EEDA399B57E2DEFAC3E7FB031634CE33D04238F9854D2AAAF448 │ │ │ │ │ +34DA5F3BCCED3166FEEE82BB0BBA0A397CC2F95865CB52AABFF454D93B425809 │ │ │ │ │ +A26AC459F321FD23E2262FE816D06BAAECF32AAF167F84799AF80F9F88388D07 │ │ │ │ │ +0DB5FD57AFEE2850A8DFE977E6AE39CB3DC16DB1A163A583C86C6F775CE33521 │ │ │ │ │ +0081C0BBBAD6D30D26C66B28B38CEAC78FEA5FB3CC5853656B67C6D9D80EB30E │ │ │ │ │ +397558C9179AF5920F34DAB3F578DFCF0DBB137AED17D6325C23883E69EE4621 │ │ │ │ │ +34355A70C19EA68891E1CA937376901C85CDEE109F1665943E29A216DC00937A │ │ │ │ │ +B983A729A4654AD09187C0242D52FA4ADD0853EF4888864914D7D81C56578DD4 │ │ │ │ │ +3B51907032022E6E412D4F114675DEDCA8A9E85DC03A0B583FECD84432D15F70 │ │ │ │ │ +01F627BD6EC91F9FCFDA01BF40E1229B5F164309DBB641AD50970503DA2048C1 │ │ │ │ │ +DF8F36E8D252EE113F0B46677D9BAF376BAE18D74CFB0DBBD0C7E9D0A58BA3ED │ │ │ │ │ +1E5099CAE073EB5638617760AB57849893764EA9735173CD1EAB66884CEA7EE3 │ │ │ │ │ +8843327B2E145BD6FBB49102776B82BC511D109F8BE9E7E99DADABABEDC3CFD9 │ │ │ │ │ +393578FFD85907DFF2849E4CDE6FA4DEC7E1C150EBE4047FFB650F9548BE6D11 │ │ │ │ │ +0C51226A5436F18BF20A02E0F888F46B6AC3A8E8D927ECD3B5E095933AD3859F │ │ │ │ │ +5167C41D832EFCC4093BD2AFA7101AB430E57DAFC3590F05D3CBABB32BC203A0 │ │ │ │ │ +467B23BDB830487C9AA5B85BAC065F8538871B4180F8C4732E637DB090CFDE5A │ │ │ │ │ +3F4F2B5BFAFB848BAAD1A17CB076B34159601639BD93ECAB1214ACABF2C67FE2 │ │ │ │ │ +0658AA20B08681070FF56F1CC52144ABA8765D6E124D1CEA9BBA102808CE1BB2 │ │ │ │ │ +5EDF46BC7BBC2A5B49EE6EC28F5797A3969B057B21FCDBBD0E60848FF14F6CA3 │ │ │ │ │ +70F3060BDBB019B22722C99C7691760F013763B7FBEB62830AE215F195BF9F01 │ │ │ │ │ +21BF4377397E89574CFA47D123AA506A570A77BA6EB4AAB0B237A26154880293 │ │ │ │ │ +3952F832F72ECCB024F02385E5EE8566B165904B594E30D0700D033C6B429F6F │ │ │ │ │ +2A20BC774F442BC9CE29FCC81807C2768A8BC927A215558FBF36DC53F477F04A │ │ │ │ │ +41DA66E1A85B659EB761230977EAD7DA0150513D3323B143D4E2A61BCF03334C │ │ │ │ │ +C0EE3E1B06CFAF58ECC910BD81F0352B75FF1594D6A4EF504232D442174BE766 │ │ │ │ │ +0F8E703F97E21D25D4CD097549C31FEE7017C3916EFB02E7BF869172889827B6 │ │ │ │ │ +A48465EB7612BA3DBC6A9436C7167F149A25CE9F8E3F4F8DE3B5ADF6C0986CB3 │ │ │ │ │ +3A7E2DAB44AB489796461536F5F713017F2620AD03295CAE9285F08974AE0DF8 │ │ │ │ │ +D739260929619B509491AFF09C4CAEF9E65C2CA69470C907ECBF3AB6C955360D │ │ │ │ │ +05ABAC306DB51122A1ADC7EF0DD70FA299A45C505A83727D4598C86319EE9C06 │ │ │ │ │ +7218EFD4F40388354BCF1B79593D5AD221DF955D081F99F880E5CED07321AB3E │ │ │ │ │ +A2FCB8B05D54807D8E15E65B78DCE12989B9276350080C905DBB74CE9AA7E246 │ │ │ │ │ +5D3BAED292C562D4CF54617FCC6654496C7996D1ECE1EFF9258716AB763A12E6 │ │ │ │ │ +316E4C5587351A6DB011F58F6A15BC28BEBDC3836E0CB892807FEC228DC1B380 │ │ │ │ │ +92F7F42279F08D60F13D6A4CB425543C3644461461CBF6F27B6603F613D1FCF8 │ │ │ │ │ +A8410AD82D1498166AEB35D4125D7E2ADEAAB18BC04806AED53513F066E5F154 │ │ │ │ │ +3E13E863C50B9814EE2FB978D0D24A03FAF650CB6E2CADF1E6BE6BAF699AFC03 │ │ │ │ │ +E1A0EEB207B3B9A689ED5B373FE86686AD230BE6C18E1673DDA50E224B343EC5 │ │ │ │ │ +903BA0C8041C13607B50D5852AC7970B15C244E6EBA7D54B3086312CF04761D6 │ │ │ │ │ +7D3D75D51F20C371494AB81AB4A9838B20B483B851D01FEF41EA5C0B4755B964 │ │ │ │ │ +EB6E9B178051C556A010994EB88EAE641F4C1A0D7E0F98D5267E18AEF1AEA7E7 │ │ │ │ │ +9030A97DF89AFF621981C33B645FFB5F3BB2065A7661D11B26E0999561DF3580 │ │ │ │ │ +4A76A05DFAF8085525F8D5C01936F03C32E26E72569371C9EA3B8916F9DFC5FC │ │ │ │ │ +6A6F25A0FFDB981BA8B896393D75774D50828E6ADE903C45406E354703A4BC56 │ │ │ │ │ +2C49A47FEAC970DC433E3050C49F7FB945A9705BD8852D2D65D935F244D3B423 │ │ │ │ │ +EFAB84AAAAB8FBAFF50AFF372A533BCCEB5FC273DBADCF715776DF02A5DCBA9A │ │ │ │ │ +FBF265FAB4745D6475B33611EEE1EA95E7584E0BEEC7CA789AA69C8D03D6F8C0 │ │ │ │ │ +5B6844E2B901ACA560C0433B053D134866E567425174E47173679AAD4486A2D3 │ │ │ │ │ +369C29E4DD2CD6ACA1BE80ED8FF0A9C58A616D26E758BD8E6342624EC83FB590 │ │ │ │ │ +BD354B52B60BB054FAFE9AC63E1564FBC721FE8F276B0413EC89A2C85E5ED1B0 │ │ │ │ │ +3A9D83BE62A4488ADE7CE69971A8AF7E5862A4290EEF6F00D4171C7FFB360065 │ │ │ │ │ +92E72BF02BE27161AE0BB5516572A0BDC4F316FFB24B38484AC8D1FD4CD86062 │ │ │ │ │ +A2B5D03CF28C3A679C039A6EFDD4C9DA7E463AD60234C9F6BBEE48D87DD94D85 │ │ │ │ │ +842F495F3E25723718682CE4D6224CBBF4456F03077EDF736D65B9DDAB09470E │ │ │ │ │ +17742D82011FFA96BFE86B96E858F9352FCD20C3D46B77DBDEE54336EC2249EA │ │ │ │ │ +211F6DFFF5BEA1E5192BE1BAC0BDD5EDDB3D56C6F7C6E543561A0B39E5C1B04F │ │ │ │ │ +C683A7516B6E69D682455386DDA709929D621FA434D403E895AA0A77DBE1DFD2 │ │ │ │ │ +0D060DF82378880147ED97C6E8149686FA048710B113760AC1DA4512FF8556B3 │ │ │ │ │ +16E2447485B8C3CD58D0469C4A45FFB4CB0322BB284C02 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -3969,16 +3974,16 @@ │ │ │ │ │ FFFE000FFFFFFC0007FFFFF80003FFFFF00000FFFFC000003FFF0000000FFC000022227B │ │ │ │ │ A72D>136 D E │ │ │ │ │ /Fa load 0 Fa currentfont 91.25 scalefont put/FMat X/FBB │ │ │ │ │ X/IEn X │ │ │ │ │ %EndDVIPSBitmapFont │ │ │ │ │ /Fb 133[50 59 4[44 44 46 2[56 62 93 31 2[31 62 1[34 51 │ │ │ │ │ 62 50 62 54 13[62 32[56 56 2[31 46[{}21 99.6264 /CMBX12 │ │ │ │ │ -rf /Fc 134[48 3[51 2[36 3[51 12[45 22[47 15[25 3[45 1[45 │ │ │ │ │ -1[45 45 45 3[25 44[{}13 90.9091 /CMSL10 rf /Fd 134[62 │ │ │ │ │ +rf /Fc 134[48 3[51 2[36 12[40 2[51 45 26[59 11[25 1[45 │ │ │ │ │ +2[45 2[45 45 45 3[25 44[{}14 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 │ │ │ │ │ @@ -4066,21 +4071,22 @@ │ │ │ │ │ (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 1059 4 v │ │ │ │ │ -1240 w Fj(SymbFac)29 b Fc(:)40 b Fi(DRAFT)31 b Fc(Jan)m(uary)f(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fk(2)p 136 100 1040 4 v │ │ │ │ │ +1221 w Fj(SymbFac)29 b Fc(:)40 b Fi(DRAFT)31 b Fc(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2861 100 V 0 399 a Fb(1.2.1)112 │ │ │ │ │ +b(Sym)m(b)s(olic)39 b(factorization)f(metho)s(ds)111 │ │ │ │ │ +596 y Fk(1.)46 b Fj(IVL)h(*)h(SymbFac_initFromGraph)42 │ │ │ │ │ +b(\()47 b(ETree)f(*etree,)g(Graph)h(*graph)f(\))h(;)227 │ │ │ │ │ +748 y Fk(This)33 b(sym)m(b)s(olic)h(factorization)i(metho)s(d)d(tak)m │ │ │ │ │ +(es)i(a)f Fj(Graph)e Fk(ob)5 b(ject)34 b(as)g(input.)49 │ │ │ │ │ b(This)33 b(metho)s(d)g(constructs)227 861 y(an)e Fj(IVL)f │ │ │ │ │ Fk(ob)5 b(ject)32 b(that)f(con)m(tains)h(one)g(list)f(p)s(er)f(fron)m │ │ │ │ │ (t.)42 b(List)31 b Fj(ilist)f Fk(con)m(tains)i(the)f(in)m(ternal)h(and) │ │ │ │ │ e(external)227 974 y(v)m(ertices)25 b(for)d(fron)m(t)h │ │ │ │ │ Fj(ilist)p Fk(.)36 b(If)22 b(the)h(input)f Fj(graph)f │ │ │ │ │ Fk(is)h(a)h(compressed)g(graph,)g(then)g(the)f(lists)i(of)e(compressed) │ │ │ │ │ 227 1087 y(v)m(ertices)39 b(mak)m(e)g(little)g(sense;)i(they)d(m)m(ust) │ │ │ │ │ @@ -4160,17 +4166,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 1059 4 v 1240 100 a Fj(SymbFac)28 │ │ │ │ │ -b Fc(:)41 b Fi(DRAFT)121 b Fc(Jan)m(uary)30 b(16,)i(2024)p │ │ │ │ │ -2795 100 V 1059 w Fk(3)337 399 y Fa(\210)45 b Fk(The)30 │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1040 4 v 1221 100 a Fj(SymbFac)28 │ │ │ │ │ +b Fc(:)41 b Fi(DRAFT)121 b Fc(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2814 100 V 1040 w Fk(3)337 399 y Fa(\210)45 b Fk(The)30 │ │ │ │ │ b Fj(msglvl)f Fk(parameter)i(determines)f(the)h(amoun)m(t)f(of)h │ │ │ │ │ (output.)337 557 y Fa(\210)45 b Fk(The)33 b Fj(msgFile)e │ │ │ │ │ Fk(parameter)j(determines)f(the)h(message)g(\014le)f(|)h(if)f │ │ │ │ │ Fj(msgFile)e Fk(is)i Fj(stdout)p Fk(,)g(then)g(the)427 │ │ │ │ │ 670 y(message)27 b(\014le)f(is)g Fi(stdout)p Fk(,)i(otherwise)e(a)h │ │ │ │ │ (\014le)f(is)f(op)s(ened)g(with)h Fi(app)-5 b(end)28 │ │ │ │ │ b Fk(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 783 │ │ │ │ │ @@ -4251,21 +4257,21 @@ │ │ │ │ │ (input)e(\014le)i(for)f(the)g Fj(Graph)f Fk(ob)5 b(ject.)39 │ │ │ │ │ b(It)24 b(m)m(ust)f(b)s(e)f(of)i(the)f(form)427 5294 │ │ │ │ │ y Fj(*.graphf)18 b Fk(or)j Fj(*.graphb)p Fk(.)35 b(The)19 │ │ │ │ │ b Fj(Graph)g Fk(ob)5 b(ject)21 b(is)g(read)f(from)g(the)g(\014le)h(via) │ │ │ │ │ f(the)h Fj(Graph)p 3368 5294 V 33 w(readFromFile\(\))427 │ │ │ │ │ 5407 y Fk(metho)s(d.)p eop end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fk(4)p 136 100 1059 4 v │ │ │ │ │ -1240 w Fj(SymbFac)29 b Fc(:)40 b Fi(DRAFT)31 b Fc(Jan)m(uary)f(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fk(4)p 136 100 1040 4 v │ │ │ │ │ +1221 w Fj(SymbFac)29 b Fc(:)40 b Fi(DRAFT)31 b Fc(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2861 100 V 337 399 a Fa(\210)45 │ │ │ │ │ +b Fk(The)24 b Fj(outETreeFile)d Fk(parameter)k(is)f(the)h(output)f │ │ │ │ │ +(\014le)g(for)g(the)h Fj(ETree)d Fk(ob)5 b(ject.)40 b(If)24 │ │ │ │ │ +b Fj(outETreeFile)d Fk(is)427 511 y Fj(none)g Fk(then)h(the)g │ │ │ │ │ +Fj(ETree)f Fk(ob)5 b(ject)22 b(is)g(not)h(written)f(to)g(a)h(\014le.)38 │ │ │ │ │ b(Otherwise,)23 b(the)g Fj(ETree)p 3253 511 29 4 v 33 │ │ │ │ │ w(writeToFile\(\))427 624 y Fk(metho)s(d)30 b(is)h(called)h(to)f(write) │ │ │ │ │ g(the)g(ob)5 b(ject)31 b(to)h(a)f(formatted)g(\014le)g(\(if)g │ │ │ │ │ Fj(outETreeFile)c Fk(is)k(of)g(the)f(form)427 737 y Fj(*.etreef)p │ │ │ │ │ Fk(\),)f(or)h(a)h(binary)f(\014le)g(\(if)h Fj(outETreeFile)c │ │ │ │ │ Fk(is)j(of)h(the)f(form)g Fj(*.etreeb)p Fk(\).)337 883 │ │ │ │ │ y Fa(\210)45 b Fk(The)h Fj(outIVfile)f Fk(parameter)i(is)g(the)f │ │ │ │ │ ├── ps2ascii {} │ │ │ │ │ │ @@ -22,15 +22,15 @@ │ │ │ │ │ │ to have chevron coordinate type and storage mode must be by vectors. │ │ │ │ │ │ 1.1 Data Structure │ │ │ │ │ │ There is no struct or data associated with the SymbFac object. │ │ │ │ │ │ 1.2 Prototypes and descriptions of SymbFac methods │ │ │ │ │ │ This section contains brief descriptions including prototypes of all methods that belong to the │ │ │ │ │ │ SymbFac object. │ │ │ │ │ │ 1 │ │ │ │ │ │ - 2 SymbFac : DRAFT January 16, 2024 │ │ │ │ │ │ + 2 SymbFac : DRAFT February 18, 2025 │ │ │ │ │ │ 1.2.1 Symbolic factorization methods │ │ │ │ │ │ 1. IVL * SymbFac_initFromGraph ( ETree *etree, Graph *graph ) ; │ │ │ │ │ │ This symbolic factorization method takes a Graph object as input. This method constructs │ │ │ │ │ │ an IVL object that contains one list per front. List ilist contains the internal and external │ │ │ │ │ │ vertices for front ilist. If the input graph is a compressed graph, then the lists of compressed │ │ │ │ │ │ vertices make little sense; they must be converted to original vertices. To do this, see the │ │ │ │ │ │ IVL expand() method. The nodwghtsIV and bndwghtsIV objects for the ETree object are │ │ │ │ │ │ @@ -61,15 +61,15 @@ │ │ │ │ │ │ 1. testSymbFacInpMtx msglvl msgFile inETreeFile inDInpMtxFile │ │ │ │ │ │ outETreeFile outIVfile outIVLfile │ │ │ │ │ │ This driver program reads in an ETree object and a InpMtx object and computes the symbolic │ │ │ │ │ │ factorization. The ETree object is updated (the front sizes and boundary sizes may change) │ │ │ │ │ │ andisoptionally written out to outETreeFile. The old-to-new IV object is optionally written │ │ │ │ │ │ to outIVfile. The IVL object that contains the symbolic factorization is optionally written │ │ │ │ │ │ to outIVLfile. │ │ │ │ │ │ - SymbFac : DRAFT January 16, 2024 3 │ │ │ │ │ │ + SymbFac : DRAFT February 18, 2025 3 │ │ │ │ │ │ • The msglvl parameter determines the amount of output. │ │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ │ message file is stdout, otherwise a file is opened with append status to receive any output │ │ │ │ │ │ data. │ │ │ │ │ │ • TheinETreeFileparameteristheinputfilefortheETreeobject. It mustbeof theform │ │ │ │ │ │ *.etreefor*.etreeb. TheETreeobjectisreadfromthefileviatheETree readFromFile() │ │ │ │ │ │ method. │ │ │ │ │ │ @@ -101,15 +101,15 @@ │ │ │ │ │ │ data. │ │ │ │ │ │ • TheinETreeFileparameteristheinputfilefortheETreeobject. It mustbeof theform │ │ │ │ │ │ *.etreefor*.etreeb. TheETreeobjectisreadfromthefileviatheETree readFromFile() │ │ │ │ │ │ method. │ │ │ │ │ │ • TheinGraphFileparameteristheinputfilefortheGraphobject. It mustbeof theform │ │ │ │ │ │ *.graphfor*.graphb. TheGraphobjectisreadfromthefileviatheGraph readFromFile() │ │ │ │ │ │ method. │ │ │ │ │ │ - 4 SymbFac : DRAFT January 16, 2024 │ │ │ │ │ │ + 4 SymbFac : DRAFT February 18, 2025 │ │ │ │ │ │ • TheoutETreeFileparameter is the output file for the ETree object. If outETreeFileis │ │ │ │ │ │ nonethentheETreeobjectisnotwrittentoafile. Otherwise,theETree writeToFile() │ │ │ │ │ │ method is called to write the object to a formatted file (if outETreeFile is of the form │ │ │ │ │ │ *.etreef), or a binary file (if outETreeFile is of the form *.etreeb). │ │ │ │ │ │ • The outIVfile parameter is the output file for the vertex-to-front map IV object. │ │ │ │ │ │ If outIVfile is none then the IV object is not written to a file. Otherwise, the │ │ │ │ │ │ IV writeToFile()methodis called to write the object to a formatted file (if outIVfile │ │ │ ├── ./usr/share/doc/spooles-doc/Tree.ps.gz │ │ │ │ ├── Tree.ps │ │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ │ %%EndComments │ │ │ │ │ %%BeginDefaults │ │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ │ %%EndDefaults │ │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ │ %DVIPSCommandLine: dvips main -o Tree.ps │ │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ │ -%DVIPSSource: TeX output 2024.01.16:2047 │ │ │ │ │ +%DVIPSSource: TeX output 2025.02.18:0318 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -2229,20 +2229,21 @@ │ │ │ │ │ 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 52 /four put │ │ │ │ │ -dup 54 /six put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ +dup 56 /eight put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 74 /J put │ │ │ │ │ +dup 70 /F put │ │ │ │ │ dup 97 /a put │ │ │ │ │ -dup 110 /n put │ │ │ │ │ +dup 98 /b put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ dup 114 /r put │ │ │ │ │ dup 117 /u put │ │ │ │ │ dup 121 /y put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ @@ -2426,89 +2427,93 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ │ -C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ │ -6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ │ -11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ │ -1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ │ -A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ │ -F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ │ -EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ │ -033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ │ -A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ │ -468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8A71FF9C085003EBB4F4 │ │ │ │ │ -3D271F5B16B1AAD3EBDC391F534AA46E545E9D8659DD19B309C3B7625A8396FA │ │ │ │ │ -2519464539D46E43ACB72952313C8497315E0319C08628023E8FC54D7D3BAC29 │ │ │ │ │ -D5AD8EFDABF0C33C7AFB7151A6606C62A87F0F5F783569AC4C881A992E3FE420 │ │ │ │ │ -297F7BC5147F3B2FA98450D2F8B07F7D229BC8BE06729920CFEC22556740E1CB │ │ │ │ │ -3DE09AC763C6D4A20AD1599C368FABD07BC35C16683F2A0311A88983415A9140 │ │ │ │ │ -2EFC4BC1B10DCAD4B2B8A28510E5BD39D6616D2B9B079ED3CF9C315B7DEC29D9 │ │ │ │ │ -251DFD0194B34EC175964C23383F23FFB2E41B698C405815D65EAFF9E9DD1DDE │ │ │ │ │ -30F77924656C288B8DDB2E5B0E7B1FAA66791DE3848EE6DE63AD0E945E49C6C7 │ │ │ │ │ -9FCA16E01F027F9EF7ACB55F02F5B0136480802F789F6FE14B430879979BA04D │ │ │ │ │ -F481AD4CF47E6847936F377FB04869F9A80E597301BFCAB718D8764094673876 │ │ │ │ │ -BCEF8FA3701608C84B3A0399A11D2E6AD922CCB7D72AF9EBFB30F4648A37A123 │ │ │ │ │ -CB8FB14BDC351692CF0CCAA5CA9383C2B23BAAA38700327EB743FBBE9EE04041 │ │ │ │ │ -13F5CEF4B3881BBC051C33369A82B3505B1CFD7D91AEF2E43EA728EE48E2D854 │ │ │ │ │ -5A7E516998ACDD4FD835FA901C5A21810A56D51FE919B2E58408EEB4DAEB487F │ │ │ │ │ -BA7F1D292CED902DF3533566D96DAD918319EA650D4FC7D9E0170CDE620F755B │ │ │ │ │ -0E7AE02D9B118481B26F5FF7060FBCFA2A682B6826F00679BCDA68794C05286D │ │ │ │ │ -B616DD08372ACDE0AE6E7EF116F0D36F16241ED4F0E8CCD80377792E3BB1343C │ │ │ │ │ -EEB22CC77738F7CBCBA32CF6C3979F6DF7ED81A89AE8928FD7CC550F2730BA88 │ │ │ │ │ -1B51CEDC63F4C47F261AFCAB7AC3CED20B15C97E714A460A1A3B16436B4A5149 │ │ │ │ │ -8F91DA4BE0B9B648534CE5F442117036B602DC91E2852BEA62F55803B833FDF7 │ │ │ │ │ -9F901AB87489E703DDEED1091A79DC73B4440BBBF2C7592B441187C4A3562204 │ │ │ │ │ -859F08BA3CE2A8ECCD5AAD13C50FB806FE79A388F1822C5608837CBDE526A044 │ │ │ │ │ -12E5CDE4A066932AF2ACA7E8FC6BA4603640944718752975B7DA6E906BE1EA01 │ │ │ │ │ -46736FF5D1AA1CC682D011B6039CF98C35E36D4F14ABC84A38B7203CC9A17756 │ │ │ │ │ -B2B0345276798F1A88A54AD9FEA0853C6DDF28525ED4F0B7380D14147012C2A4 │ │ │ │ │ -5B02888C986C76497EA4C729B0B82EE73C1A1A8E8F1ABF401E341028E9C15AF9 │ │ │ │ │ -354706D8DC07492921AD0932A46736C0D1B066D00287DACCC068FAE6A796EC89 │ │ │ │ │ -54D1D73AA88F3A5912BA9D3FF70065C8D0D0DAD1CD846501E06694374EFDBEC6 │ │ │ │ │ -931F644D5E8494AFC742423AD9A487658E310E0682BE19B8475F4D450487A686 │ │ │ │ │ -2B94494DEAF1C0F59DE82F2CE64BEE5E97F942FCFA1187ED6AA5761E951A7BF7 │ │ │ │ │ -9F842E34A4656C58B35A9E99F7E6762CEE11E0CF59FFD75D7382C5EE6DBB43F1 │ │ │ │ │ -ED219071D3FB22DBA90977723BB467C0490D042684C0724F40DCA3E0D8F1F4E7 │ │ │ │ │ -3C4F9A67BE6528185EAAFDD415224F7E256A4EA00111C17C746CBD80BF569A27 │ │ │ │ │ -D81195D7F79C1CCEEF30ED00D49F48B63E4B8D7953403A3710AE953CC1B76F0F │ │ │ │ │ -F523D777A6A186F262A602543F94AF7471DBE25FEBC207DB42DAF7DC9A5781FB │ │ │ │ │ -2131AD42869D966A734AAE3466DF1CE9D1BCFA72409A558C0AEE6A8E2FEAACB6 │ │ │ │ │ -2CDABCC28433034848ACF9FB4465D272E4AFC48572647F05F41C7A293CC5B595 │ │ │ │ │ -AD31555FB708A72962707348BC7033A8224BD42EB9D75FDF3AE9E6A9C960B330 │ │ │ │ │ -5137DF59F8E2E0D535F41524ABDF070745A4FA25CD8DFD38A5FF30A95452B875 │ │ │ │ │ -6569E8812631300D79A942C563AF174AC05C9F2D09D7D5D3C605F5A6B7F21B34 │ │ │ │ │ -18F270A993B050838E701A17938D1C156CBA7CA4BAC7C562CE9D7B758EAB25A9 │ │ │ │ │ -A6DFFC71F65561341847B776DF34061CE3D439B87B857626987EC93B3B95B8E8 │ │ │ │ │ -76FFB16B263675333FA10414FEED707FF7C366BF8B20FF8577CDEBEBCF1A5BCE │ │ │ │ │ -258C09C90175A5278B7C444A623E3331FDE5A6387B3E389540ED1E7E883958F3 │ │ │ │ │ -3A5C89CCD62256FA069DF4A5090FB17C1F1757C9209DAFB8A1F47182BF3E88D9 │ │ │ │ │ -0B5376B59EE165A761902759C8ED7F5AD301E7EB8B49CC09AF921DB45B7F8002 │ │ │ │ │ -AB32E73AAE53942DE0F9175D8446017006C9C0B93EF39C13B7A879F2F6DDFF16 │ │ │ │ │ -204BB24F976847CF006FD29332FCCB255B5116F7077A44F7066C39C81DC4BAD2 │ │ │ │ │ -40DB2753626C0102E5D047522ABC38EA294A699B8DFD9CA0A7980561A1062E90 │ │ │ │ │ -AB11EE286A9C238D9F721D9980D0A1828C2814972622D948CEE8C812C19A9A03 │ │ │ │ │ -608ED0AC138A436FFBF8BE3D1E66C87793416AF38ED9BC5424568A175FBDAA9E │ │ │ │ │ -D6FC11A7021693819B051562B5A59F32629E2D6019D69DD329BE1894A2B295E1 │ │ │ │ │ -1DCE9683B29AE126C56F26E5C595BF1A8249BDE231DBE8B066F7F62EF149B975 │ │ │ │ │ -A863969A4690504A5EA064721DA909B8157C0B39FBF8228D95CB655E406161E1 │ │ │ │ │ -148610FAEED7C5509880223C06A66DA19E10F94DC2DB481B26 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004FD597ED │ │ │ │ │ +EFDBC64ABD9B79386FB2427D1A63522195B1239C09F8CB3F8BD7A245A6DD82E3 │ │ │ │ │ +260C3889587626DFC5F7978E55F5524ABD6A3319CDD3D3F40D040044D51DA4E1 │ │ │ │ │ +6797EEAC7AA07C77EC6DB0E6E182B545A8BEF63B14F3FC07BAC09E7CD5C17ED6 │ │ │ │ │ +10080704B0DA4E9BA12F968DF8A58458D17E9A5B1F14A83DC51F5B161ADEE1CC │ │ │ │ │ +0183D82ED92C6FC7203C289949EDF0284D9893029FF5408E421324625F17C3E5 │ │ │ │ │ +2437C8F75A9D68EE1AF9174FEA6FC6BF793C7D2E497EA90396CF1A645E283B69 │ │ │ │ │ +8425F47C323587DF91E1D596DCB1E3A787C955D9D965A5E3E26ADF58B62AD5F9 │ │ │ │ │ +0C9AC784DE479780606354111E3202F215650DBBE1063A46F3C10B9EBC974DDA │ │ │ │ │ +A1A28DBBD43E9E5BFF000B12C787D0427928078F8EC5FE90DED97E6C129E8DEA │ │ │ │ │ +51F66504DB83764E52B0BA68DF7BE684C8959CB1D3345CC48221A9A4683306C0 │ │ │ │ │ +62B634E0A539383F0C7A788D9711EFF414869CCC5659D78CEBE009BF2463F56A │ │ │ │ │ +0ADC993348FE96DF7C250E13ED6504AACFE8F8DCA2D2048D9D8CFA127D363EAC │ │ │ │ │ +1F0630E2D1B621E6954038195D965B91FD974FA3F1B8B29D200A16CEBA645E2F │ │ │ │ │ +CEEE6FD49FBBD49E38AE67D4BFFCE91F1FC422554EC4409C5FA18D40FCD6D9B3 │ │ │ │ │ +2185ED1E0F98106D4339F086B05CA36E56EC22C60E2CE23F9C4CC403ACAD3F94 │ │ │ │ │ +4086B4DF6DFA0B7B4716417263E7B558535566AED2F6C2F9846A16D71A7930A7 │ │ │ │ │ +49232D3D16C4A01CF1A1998A06F40062ED329179A85668537C55D0BC24FC0010 │ │ │ │ │ +54DA83E2FC66B2A5D428E6A9BFC983253668C0ECE6CA36DBF97C4B7659D50842 │ │ │ │ │ +C65B36604840EEDA399B57E2DEFAC3E7FB031634CE33D04238F9854D2AAAF448 │ │ │ │ │ +34DA5F3BCCED3166FEEE82BB0BBA0A397CC2F95865CB52AABFF454D93B425809 │ │ │ │ │ +A26AC459F321FD23E2262FE816D06BAAECF32AAF167F84799AF80F9F88388D07 │ │ │ │ │ +0DB5FD57AFEE2850A8DFE977E6AE39CB3DC16DB1A163A583C86C6F775CE33521 │ │ │ │ │ +0081C0BBBAD6D30D26C66B28B38CEAC78FEA5FB3CC5853656B67C6D9D80EB30E │ │ │ │ │ +397558C9179AF5920F34DAB3F578DFCF0DBB137AED17D6325C23883E69EE4621 │ │ │ │ │ +34355A70C19EA68891E1CA937376901C85CDEE109F1665943E29A216DC00937A │ │ │ │ │ +B983A729A4654AD09187C0242D52FA4ADD0853EF4888864914D7D81C56578DD4 │ │ │ │ │ +3B51907032022E6E412D4F114675DEDCA8A9E85DC03A0B583FECD84432D15F70 │ │ │ │ │ +01F627BD6EC91F9FCFDA01BF40E1229B5F164309DBB641AD50970503DA2048C1 │ │ │ │ │ +DF8F36E8D252EE113F0B46677D9BAF376BAE18D74CFB0DBBD0C7E9D0A58BA3ED │ │ │ │ │ +1E5099CAE073EB5638617760AB57849893764EA9735173CD1EAB66884CEA7EE3 │ │ │ │ │ +8843327B2E145BD6FBB49102776B82BC511D109F8BE9E7E99DADABABEDC3CFD9 │ │ │ │ │ +393578FFD85907DFF2849E4CDE6FA4DEC7E1C150EBE4047FFB650F9548BE6D11 │ │ │ │ │ +0C51226A5436F18BF20A02E0F888F46B6AC3A8E8D927ECD3B5E095933AD3859F │ │ │ │ │ +5167C41D832EFCC4093BD2AFA7101AB430E57DAFC3590F05D3CBABB32BC203A0 │ │ │ │ │ +467B23BDB830487C9AA5B85BAC065F8538871B4180F8C4732E637DB090CFDE5A │ │ │ │ │ +3F4F2B5BFAFB848BAAD1A17CB076B34159601639BD93ECAB1214ACABF2C67FE2 │ │ │ │ │ +0658AA20B08681070FF56F1CC52144ABA8765D6E124D1CEA9BBA102808CE1BB2 │ │ │ │ │ +5EDF46BC7BBC2A5B49EE6EC28F5797A3969B057B21FCDBBD0E60848FF14F6CA3 │ │ │ │ │ +70F3060BDBB019B22722C99C7691760F013763B7FBEB62830AE215F195BF9F01 │ │ │ │ │ +21BF4377397E89574CFA47D123AA506A570A77BA6EB4AAB0B237A26154880293 │ │ │ │ │ +3952F832F72ECCB024F02385E5EE8566B165904B594E30D0700D033C6B429F6F │ │ │ │ │ +2A20BC774F442BC9CE29FCC81807C2768A8BC927A215558FBF36DC53F477F04A │ │ │ │ │ +41DA66E1A85B659EB761230977EAD7DA0150513D3323B143D4E2A61BCF03334C │ │ │ │ │ +C0EE3E1B06CFAF58ECC910BD81F0352B75FF1594D6A4EF504232D442174BE766 │ │ │ │ │ +0F8E703F97E21D25D4CD097549C31FEE7017C3916EFB02E7BF869172889827B6 │ │ │ │ │ +A48465EB7612BA3DBC6A9436C7167F149A25CE9F8E3F4F8DE3B5ADF6C0986CB3 │ │ │ │ │ +3A7E2DAB44AB489796461536F5F713017F2620AD03295CAE9285F08974AE0DF8 │ │ │ │ │ +D739260929619B509491AFF09C4CAEF9E65C2CA69470C907ECBF3AB6C955360D │ │ │ │ │ +05ABAC306DB51122A1ADC7EF0DD70FA299A45C505A83727D4598C86319EE9C06 │ │ │ │ │ +7218EFD4F40388354BCF1B79593D5AD221DF955D081F99F880E5CED07321AB3E │ │ │ │ │ +A2FCB8B05D54807D8E15E65B78DCE12989B9276350080C905DBB74CE9AA7E246 │ │ │ │ │ +5D3BAED292C562D4CF54617FCC6654496C7996D1ECE1EFF9258716AB763A12E6 │ │ │ │ │ +316E4C5587351A6DB011F58F6A15BC28BEBDC3836E0CB892807FEC228DC1B380 │ │ │ │ │ +92F7F42279F08D60F13D6A4CB425543C3644461461CBF6F27B6603F613D1FCF8 │ │ │ │ │ +A8410AD82D1498166AEB35D4125D7E2ADEAAB18BC04806AED53513F066E5F154 │ │ │ │ │ +3E13E863C50B9814EE2FB978D0D24A03FAF650CB6E2CADF1E6BE6BAF699AFC03 │ │ │ │ │ +E1A0EEB207B3B9A689ED5B373FE86686AD230BE6C18E1673DDA50E224B343EC5 │ │ │ │ │ +903BA0C8041C13607B50D5852AC7970B15C244E6EBA7D54B3086312CF04761D6 │ │ │ │ │ +7D3D75D51F20C371494AB81AB4A9838B20B483B851D01FEF41EA5C0B4755B964 │ │ │ │ │ +EB6E9B178051C556A010994EB88EAE641F4C1A0D7E0F98D5267E18AEF1AEA7E7 │ │ │ │ │ +9030A97DF89AFF621981C33B645FFB5F3BB2065A7661D11B26E0999561DF3580 │ │ │ │ │ +4A76A05DFAF8085525F8D5C01936F03C32E26E72569371C9EA3B8916F9DFC5FC │ │ │ │ │ +6A6F25A0FFDB981BA8B896393D75774D50828E6ADE903C45406E354703A4BC56 │ │ │ │ │ +2C49A47FEAC970DC433E3050C49F7FB945A9705BD8852D2D65D935F244D3B423 │ │ │ │ │ +EFAB84AAAAB8FBAFF50AFF372A533BCCEB5FC273DBADCF715776DF02A5DCBA9A │ │ │ │ │ +FBF265FAB4745D6475B33611EEE1EA95E7584E0BEEC7CA789AA69C8D03D6F8C0 │ │ │ │ │ +5B6844E2B901ACA560C0433B053D134866E567425174E47173679AAD4486A2D3 │ │ │ │ │ +369C29E4DD2CD6ACA1BE80ED8FF0A9C58A616D26E758BD8E6342624EC83FB590 │ │ │ │ │ +BD354B52B60BB054FAFE9AC63E1564FBC721FE8F276B0413EC89A2C85E5ED1B0 │ │ │ │ │ +3A9D83BE62A4488ADE7CE69971A8AF7E5862A4290EEF6F00D4171C7FFB360065 │ │ │ │ │ +92E72BF02BE27161AE0BB5516572A0BDC4F316FFB24B38484AC8D1FD4CD86062 │ │ │ │ │ +A2B5D03CF28C3A679C039A6EFDD4C9DA7E463AD60234C9F6BBEE48D87DD94D85 │ │ │ │ │ +842F495F3E25723718682CE4D6224CBBF4456F03077EDF736D65B9DDAB09470E │ │ │ │ │ +17742D82011FFA96BFE86B96E858F9352FCD20C3D46B77DBDEE54336EC2249EA │ │ │ │ │ +211F6DFFF5BEA1E5192BE1BAC0BDD5EDDB3D56C6F7C6E543561A0B39E5C1B04F │ │ │ │ │ +C683A7516B6E69D682455386DDA709929D621FA434D403E895AA0A77DBE1DFD2 │ │ │ │ │ +0D060DF82378880147ED97C6E8149686FA048710B113760AC1DA4512FF8556B3 │ │ │ │ │ +16E2447485B8C3CD58D0469C4A45FFB4CB0322BB284C02 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -4954,15 +4959,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 1[45 1[45 45 45 3[25 44[{}13 │ │ │ │ │ +12[40 2[51 45 26[59 11[25 1[45 2[45 2[45 45 45 3[25 44[{}14 │ │ │ │ │ 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 │ │ │ │ │ @@ -5085,17 +5090,17 @@ │ │ │ │ │ b(>)f Fn(0)31 b(then)f(w)m(e)h(assume)f(that)h(the)f(structure)0 │ │ │ │ │ 5294 y(w)m(as)e(in)m(tialized)i(correctly)f(and)e(that)h(the)g │ │ │ │ │ Fm(par)p Fn(,)g Fm(fch)f Fn(and)g Fm(sib)f Fn(\014elds)i(p)s(oin)m(t)f │ │ │ │ │ (to)i(storage)g(that)f(w)m(as)g(allo)s(cated)i(b)m(y)0 │ │ │ │ │ 5407 y(the)h(initializer)h(metho)s(d.)1927 5656 y(1)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fn(2)p 136 100 1130 4 v │ │ │ │ │ -1312 w Fm(Tree)29 b Fg(:)41 b Fl(DRAFT)30 b Fg(Jan)m(uary)g(16,)i(2024) │ │ │ │ │ -p 2770 100 V 0 399 a Fj(1.2)135 b(Protot)l(yp)t(es)46 │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fn(2)p 136 100 1111 4 v │ │ │ │ │ +1293 w Fm(Tree)29 b Fg(:)41 b Fl(DRAFT)30 b Fg(F)-8 b(ebruary)30 │ │ │ │ │ +b(18,)i(2025)p 2789 100 V 0 399 a Fj(1.2)135 b(Protot)l(yp)t(es)46 │ │ │ │ │ b(and)f(descriptions)g(of)g Ff(Tree)e Fj(metho)t(ds)0 │ │ │ │ │ 628 y Fn(This)25 b(section)h(con)m(tains)h(brief)e(descriptions)h │ │ │ │ │ (including)f(protot)m(yp)s(es)h(of)f(all)i(metho)s(ds)d(that)j(b)s │ │ │ │ │ (elong)e(to)h(the)g Fm(Tree)0 741 y Fn(ob)5 b(ject.)0 │ │ │ │ │ 1013 y Fe(1.2.1)112 b(Basic)38 b(metho)s(ds)0 1210 y │ │ │ │ │ Fn(As)d(usual,)h(there)f(are)g(four)f(basic)h(metho)s(ds)g(to)g(supp)s │ │ │ │ │ (ort)e(ob)5 b(ject)36 b(creation,)i(setting)e(default)f(\014elds,)h │ │ │ │ │ @@ -5144,17 +5149,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 1130 4 v 1312 100 a Fm(Tree)29 │ │ │ │ │ -b Fg(:)40 b Fl(DRAFT)122 b Fg(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2723 100 V 1130 w Fn(3)111 399 y(4.)46 b Fm(int)h(*)h(Tree_fch)d(\()j │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1111 4 v 1292 100 a Fm(Tree)30 │ │ │ │ │ +b Fg(:)40 b Fl(DRAFT)121 b Fg(F)-8 b(ebruary)31 b(18,)g(2025)p │ │ │ │ │ +2742 100 V 1111 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) │ │ │ │ │ @@ -5212,27 +5217,28 @@ │ │ │ │ │ 4996 y Fl(R)-5 b(eturn)34 b(c)-5 b(o)g(des:)1030 5193 │ │ │ │ │ y Fn(1)100 b(normal)31 b(return)1000 5306 y(-1)100 b │ │ │ │ │ Fm(subtree)29 b Fn(is)h Fm(NULL)1000 5419 y Fn(-2)100 │ │ │ │ │ b Fm(nodeidsIV)28 b Fn(is)i Fm(NULL)2138 5250 y Fn(-3)101 │ │ │ │ │ b Fm(tree)29 b Fn(is)h Fm(NULL)2138 5363 y Fn(-4)101 │ │ │ │ │ b Fm(nodeidsIV)27 b Fn(is)k(in)m(v)-5 b(alid)p eop end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fn(4)p 136 100 1130 4 v │ │ │ │ │ -1312 w Fm(Tree)29 b Fg(:)41 b Fl(DRAFT)30 b Fg(Jan)m(uary)g(16,)i(2024) │ │ │ │ │ -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 │ │ │ │ │ -(\))g(;)227 1172 y Fn(The)28 b(v)m(ertices)i(that)f(are)g(ro)s(ots)g │ │ │ │ │ -(in)f(the)h(tree)g(are)g(link)m(ed)g(b)m(y)f(their)g │ │ │ │ │ -Fm(sib[])g Fn(\014eld)g(and)f(the)i(ro)s(ot)g(of)g(the)f(tree)227 │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fn(4)p 136 100 1111 4 v │ │ │ │ │ +1293 w Fm(Tree)29 b Fg(:)41 b Fl(DRAFT)30 b Fg(F)-8 b(ebruary)30 │ │ │ │ │ +b(18,)i(2025)p 2789 100 V 111 399 a Fn(5.)46 b Fm(void)h │ │ │ │ │ +(Tree_setFchSibRoot)c(\()k(Tree)g(*tree)f(\))i(;)227 │ │ │ │ │ +553 y Fn(The)25 b(ro)s(ot)g(and)f(the)h(en)m(tries)h(in)e(the)h │ │ │ │ │ +Fm(fch[])e Fn(and)i Fm(sib[])e Fn(v)m(ectors)j(are)g(set)f(using)f(the) │ │ │ │ │ +h(en)m(tries)h(in)e(the)h Fm(par[])227 666 y Fn(v)m(ector.)227 │ │ │ │ │ +821 y Fl(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fn(If)30 │ │ │ │ │ +b Fm(tree)g Fn(is)g Fm(NULL)p Fn(,)f(an)i(error)f(message)h(is)g(prin)m │ │ │ │ │ +(ted)f(and)f(the)i(program)f(exits.)111 1017 y(6.)46 │ │ │ │ │ +b Fm(void)h(Tree_setRoot)d(\()k(Tree)e(*tree)h(\))g(;)227 │ │ │ │ │ +1172 y Fn(The)28 b(v)m(ertices)i(that)f(are)g(ro)s(ots)g(in)f(the)h │ │ │ │ │ +(tree)g(are)g(link)m(ed)g(b)m(y)f(their)g Fm(sib[])g │ │ │ │ │ +Fn(\014eld)g(and)f(the)i(ro)s(ot)g(of)g(the)f(tree)227 │ │ │ │ │ 1285 y(is)j(set)g(to)g(the)f(head)g(of)h(the)g(list.)227 │ │ │ │ │ 1440 y Fl(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fn(If)30 │ │ │ │ │ b Fm(tree)g Fn(is)g Fm(NULL)p Fn(,)f(an)i(error)f(message)h(is)g(prin)m │ │ │ │ │ (ted)f(and)f(the)i(program)f(exits.)0 1721 y Fe(1.2.4)112 │ │ │ │ │ b(Utilit)m(y)38 b(metho)s(ds)0 1922 y Fn(The)33 b(utilit)m(y)i(metho)s │ │ │ │ │ (ds)e(return)f(the)i(n)m(um)m(b)s(er)e(of)i(b)m(ytes)g(tak)m(en)h(b)m │ │ │ │ │ (y)e(the)h(ob)5 b(ject,)35 b(aid)f(in)f(p)s(erforming)g(pre-order)0 │ │ │ │ │ @@ -5277,17 +5283,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 1130 4 v 1312 100 a Fm(Tree)29 │ │ │ │ │ -b Fg(:)40 b Fl(DRAFT)122 b Fg(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2723 100 V 1130 w Fn(5)111 399 y(6.)46 b Fm(int)h(Tree_nleaves)e(\()i │ │ │ │ │ +TeXDict begin 5 4 bop 91 100 1111 4 v 1292 100 a Fm(Tree)30 │ │ │ │ │ +b Fg(:)40 b Fl(DRAFT)121 b Fg(F)-8 b(ebruary)31 b(18,)g(2025)p │ │ │ │ │ +2742 100 V 1111 w Fn(5)111 399 y(6.)46 b Fm(int)h(Tree_nleaves)e(\()i │ │ │ │ │ (Tree)g(*tree)f(\))i(;)227 569 y Fn(This)30 b(metho)s(d)g(returns)f │ │ │ │ │ (the)h(n)m(um)m(b)s(er)f(of)i(lea)m(v)m(es)i(of)d(the)h(tree.)227 │ │ │ │ │ 740 y Fl(Err)-5 b(or)45 b(che)-5 b(cking:)64 b Fn(If)41 │ │ │ │ │ b Fm(tree)g Fn(is)h Fm(NULL)p Fn(,)f(or)h(if)h Fm(tree->n)i(<)j(1)p │ │ │ │ │ Fn(,)d(an)d(error)f(message)j(is)e(prin)m(ted)f(and)h(the)227 │ │ │ │ │ 853 y(program)30 b(exits.)111 1082 y(7.)46 b Fm(int)h(Tree_nroots)e(\() │ │ │ │ │ i(Tree)g(*tree)f(\))i(;)227 1253 y Fn(This)30 b(metho)s(d)g(returns)f │ │ │ │ │ @@ -5336,27 +5342,27 @@ │ │ │ │ │ 5123 y(main/Sc)m(h)m(ur)30 b(complemen)m(t)i(partition)f(for)f(a)h │ │ │ │ │ (semi-implicit)h(factorization.)227 5294 y Fl(Err)-5 │ │ │ │ │ b(or)34 b(che)-5 b(cking:)41 b Fn(If)30 b Fm(tree)p Fn(,)g │ │ │ │ │ Fm(gainIV)f Fn(or)h Fm(ptotalgain)e Fn(is)j Fm(NULL)p │ │ │ │ │ Fn(,)f(an)g(error)g(message)i(is)f(prin)m(ted)f(and)g(the)227 │ │ │ │ │ 5407 y(program)g(exits.)p eop end │ │ │ │ │ %%Page: 6 6 │ │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fn(6)p 136 100 1130 4 v │ │ │ │ │ -1312 w Fm(Tree)29 b Fg(:)41 b Fl(DRAFT)30 b Fg(Jan)m(uary)g(16,)i(2024) │ │ │ │ │ -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 │ │ │ │ │ -(no)s(de.)69 b(Of)0 934 y(course,)30 b(a)g(w)m(eigh)m(t)h(could)e(b)s │ │ │ │ │ -(e)g(asso)s(ciated)i(with)e(eac)m(h)i(no)s(de,)e(so)h(the)g(heigh)m(t)g │ │ │ │ │ -(or)g(depth)e(b)s(ecomes)i(the)g(w)m(eigh)m(t)h(of)0 │ │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fn(6)p 136 100 1111 4 v │ │ │ │ │ +1293 w Fm(Tree)29 b Fg(:)41 b Fl(DRAFT)30 b Fg(F)-8 b(ebruary)30 │ │ │ │ │ +b(18,)i(2025)p 2789 100 V 0 399 a Fe(1.2.5)112 b(Metrics)38 │ │ │ │ │ +b(metho)s(ds)0 595 y Fn(Man)m(y)24 b(op)s(erations)h(need)e(to)i(kno)m │ │ │ │ │ +(w)e(some)i Fl(metric)f Fn(de\014ned)e(on)i(the)g(no)s(des)f(in)g(a)h │ │ │ │ │ +(tree.)40 b(Here)24 b(are)g(three)g(examples:)0 708 y(the)39 │ │ │ │ │ +b(heigh)m(t)h(of)f(a)g(no)s(de)f(\(the)i(minim)m(um)e(distance)h(from)g │ │ │ │ │ +(a)g(descendan)m(t)g(leaf)7 b(\),)43 b(the)c(depth)f(of)h(a)g(no)s(de)f │ │ │ │ │ +(\(the)0 821 y(distance)j(from)e(its)h(ro)s(ot)g(ancestor\),)k(or)c │ │ │ │ │ +(the)g(w)m(eigh)m(t)h(asso)s(ciated)h(with)d(a)i(subtree)e(ro)s(oted)h │ │ │ │ │ +(at)h(a)f(no)s(de.)69 b(Of)0 934 y(course,)30 b(a)g(w)m(eigh)m(t)h │ │ │ │ │ +(could)e(b)s(e)g(asso)s(ciated)i(with)e(eac)m(h)i(no)s(de,)e(so)h(the)g │ │ │ │ │ +(heigh)m(t)g(or)g(depth)e(b)s(ecomes)i(the)g(w)m(eigh)m(t)h(of)0 │ │ │ │ │ 1047 y(the)g(no)s(des)e(on)h(the)h(path.)141 1185 y(Metrics)h(can)f(b)s │ │ │ │ │ (e)f Fm(int)f Fn(or)i Fm(double)p Fn(.)40 b(Because)32 │ │ │ │ │ b(of)e(the)h(limitations)i(of)d(C,)h(w)m(e)g(need)f(t)m(w)m(o)i │ │ │ │ │ (separate)g(metho)s(ds)0 1298 y(for)f(eac)m(h)i(of)f(the)g(heigh)m(t,)h │ │ │ │ │ (depth)e(and)g(subtree)g(functions.)44 b(Eac)m(h)32 b(pair)g(of)g │ │ │ │ │ (metho)s(ds)f(di\013ers)g(only)h(in)f(the)h(t)m(yp)s(e)0 │ │ │ │ │ 1410 y(of)f(the)f(v)m(ector)i(ob)5 b(ject)31 b(argumen)m(t.)111 │ │ │ │ │ @@ -5405,17 +5411,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 1130 4 v 1312 100 a Fm(Tree)29 │ │ │ │ │ -b Fg(:)40 b Fl(DRAFT)122 b Fg(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2723 100 V 1130 w Fn(7)0 399 y Fe(1.2.6)112 b(Compression)39 │ │ │ │ │ +TeXDict begin 7 6 bop 91 100 1111 4 v 1292 100 a Fm(Tree)30 │ │ │ │ │ +b Fg(:)40 b Fl(DRAFT)121 b Fg(F)-8 b(ebruary)31 b(18,)g(2025)p │ │ │ │ │ +2742 100 V 1111 w Fn(7)0 399 y Fe(1.2.6)112 b(Compression)39 │ │ │ │ │ b(metho)s(ds)0 590 y Fn(F)-8 b(requen)m(tly)31 b(a)f(tree)g(will)g │ │ │ │ │ (need)g(to)g(b)s(e)f(compressed)g(in)h(some)g(manner.)39 │ │ │ │ │ b(Elimination)31 b(trees)f(usually)f(ha)m(v)m(e)i(long)0 │ │ │ │ │ 703 y(c)m(hains)i(of)f(no)s(des)g(at)h(the)f(higher)g(lev)m(els,)j │ │ │ │ │ (where)c(eac)m(h)j(c)m(hain)f(of)f(no)s(des)g(corresp)s(onds)e(to)j(a)g │ │ │ │ │ (sup)s(erno)s(de.)44 b(Liu's)0 816 y(generalized)27 b(ro)m(w)e(en)m(v)m │ │ │ │ │ (elop)s(e)i(metho)s(ds)d(partition)i(the)g(v)m(ertices)g(b)m(y)g │ │ │ │ │ @@ -5491,37 +5497,37 @@ │ │ │ │ │ b(.)47 b(If)32 b Fm(u)g Fn(and)g Fm(v)227 5294 y Fn(are)k(siblings,)g │ │ │ │ │ (and)f Fm(u)g Fn(comes)h(b)s(efore)f Fm(v)g Fn(in)g(a)g(p)s(ost-order)g │ │ │ │ │ (tra)m(v)m(ersal,)j(then)d(the)h(w)m(eigh)m(t)h(of)e(the)g(subtree)227 │ │ │ │ │ 5407 y(ro)s(oted)c(at)g Fm(u)f Fn(is)g(as)h(large)h(or)e(larger)h(than) │ │ │ │ │ f(the)h(w)m(eigh)m(t)h(of)e(the)h(subtree)f(ro)s(oted)g(at)h │ │ │ │ │ Fm(v)p Fn(.)p eop end │ │ │ │ │ %%Page: 8 8 │ │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fn(8)p 136 100 1130 4 v │ │ │ │ │ -1312 w Fm(Tree)29 b Fg(:)41 b Fl(DRAFT)30 b Fg(Jan)m(uary)g(16,)i(2024) │ │ │ │ │ -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 │ │ │ │ │ -(v)m(ersal)i(of)e(an)h(elimination)0 1086 y(tree)39 b(giv)m(es)i(an)d │ │ │ │ │ -(ordering)h(for)f(a)h(sparse)g(matrix.)66 b(On)37 b(other)i(o)s │ │ │ │ │ -(ccasions,)k(w)m(e)c(need)f(to)i(p)s(erm)m(ute)e(a)h(tree,)j(i.e.)0 │ │ │ │ │ -1199 y(re-lab)s(el)31 b(the)g(no)s(des.)111 1429 y(1.)46 │ │ │ │ │ -b Fm(void)h(Tree_fillNewToOldPerm)42 b(\()47 b(Tree)g(*tree,)f(int)h │ │ │ │ │ -(newToOld[])e(\))i(;)227 1542 y(void)g(Tree_fillOldToNewPerm)42 │ │ │ │ │ -b(\()47 b(Tree)g(*tree,)f(int)h(oldToNew[])e(\))i(;)227 │ │ │ │ │ -1655 y(void)g(Tree_fillBothPerms)c(\()k(Tree)g(*tree,)f(int)h │ │ │ │ │ -(newToOld[],)e(int)h(oldToNew[])f(\))j(;)227 1804 y Fn(If)35 │ │ │ │ │ -b Fm(tree)f Fn(is)h Fm(NULL)p Fn(,)g Fm(tree->n)46 b(<)h(1)35 │ │ │ │ │ -b Fn(or)g(a)h(p)s(erm)m(utation)f(v)m(ector)i(is)e Fm(NULL)p │ │ │ │ │ -Fn(,)g(an)g(error)g(message)h(is)f(prin)m(ted)227 1917 │ │ │ │ │ -y(and)29 b(the)g(program)g(exits.)41 b(Otherwise,)29 │ │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fn(8)p 136 100 1111 4 v │ │ │ │ │ +1293 w Fm(Tree)29 b Fg(:)41 b Fl(DRAFT)30 b Fg(F)-8 b(ebruary)30 │ │ │ │ │ +b(18,)i(2025)p 2789 100 V 227 399 a Fl(Err)-5 b(or)34 │ │ │ │ │ +b(che)-5 b(cking:)40 b Fn(If)30 b Fm(tree)f Fn(or)h Fm(metricIV)e │ │ │ │ │ +Fn(is)i Fm(NULL)p Fn(,)f(or)h(if)h Fm(n)47 b(<)g(1)p │ │ │ │ │ +Fn(,)31 b(or)f(if)g Fm(n)g Fn(is)g(not)g(the)h(size)g(of)f │ │ │ │ │ +Fm(metricIV)p Fn(,)227 511 y(an)h(error)f(message)h(is)f(prin)m(ted)g │ │ │ │ │ +(and)g(the)h(program)f(exits.)0 778 y Fe(1.2.8)112 b(P)m(erm)m(utation) │ │ │ │ │ +38 b(metho)s(ds)0 973 y Fn(Often)32 b(w)m(e)h(need)f(to)h(extract)g(a)g │ │ │ │ │ +(p)s(erm)m(utation)f(from)g(a)h(tree,)g(e.g.,)i(a)d(p)s(ost-order)g │ │ │ │ │ +(tra)m(v)m(ersal)i(of)e(an)h(elimination)0 1086 y(tree)39 │ │ │ │ │ +b(giv)m(es)i(an)d(ordering)h(for)f(a)h(sparse)g(matrix.)66 │ │ │ │ │ +b(On)37 b(other)i(o)s(ccasions,)k(w)m(e)c(need)f(to)i(p)s(erm)m(ute)e │ │ │ │ │ +(a)h(tree,)j(i.e.)0 1199 y(re-lab)s(el)31 b(the)g(no)s(des.)111 │ │ │ │ │ +1429 y(1.)46 b Fm(void)h(Tree_fillNewToOldPerm)42 b(\()47 │ │ │ │ │ +b(Tree)g(*tree,)f(int)h(newToOld[])e(\))i(;)227 1542 │ │ │ │ │ +y(void)g(Tree_fillOldToNewPerm)42 b(\()47 b(Tree)g(*tree,)f(int)h │ │ │ │ │ +(oldToNew[])e(\))i(;)227 1655 y(void)g(Tree_fillBothPerms)c(\()k(Tree)g │ │ │ │ │ +(*tree,)f(int)h(newToOld[],)e(int)h(oldToNew[])f(\))j(;)227 │ │ │ │ │ +1804 y Fn(If)35 b Fm(tree)f Fn(is)h Fm(NULL)p Fn(,)g │ │ │ │ │ +Fm(tree->n)46 b(<)h(1)35 b Fn(or)g(a)h(p)s(erm)m(utation)f(v)m(ector)i │ │ │ │ │ +(is)e Fm(NULL)p Fn(,)g(an)g(error)g(message)h(is)f(prin)m(ted)227 │ │ │ │ │ +1917 y(and)29 b(the)g(program)g(exits.)41 b(Otherwise,)29 │ │ │ │ │ b(the)g(p)s(erm)m(utation)h(v)m(ector\(s\))h(is)e(\(are\))h(\014lled)f │ │ │ │ │ (with)g(the)g(ordering)227 2030 y(of)i(the)f(no)s(des)g(in)g(a)h(p)s │ │ │ │ │ (ost-order)f(tra)m(v)m(ersal.)227 2179 y Fl(Err)-5 b(or)42 │ │ │ │ │ b(che)-5 b(cking:)57 b Fn(If)38 b Fm(tree)g Fn(or)h(a)g(p)s(erm)m │ │ │ │ │ (utation)g(v)m(ector)h(is)f Fm(NULL)p Fn(,)f(or)h(if)f │ │ │ │ │ Fm(n)48 b(<)f(1)p Fn(,)41 b(an)e(error)f(message)i(is)227 │ │ │ │ │ 2292 y(prin)m(ted)30 b(and)g(the)h(program)f(exits.)111 │ │ │ │ │ @@ -5562,17 +5568,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 1130 4 v 1312 100 a Fm(Tree)29 │ │ │ │ │ -b Fg(:)40 b Fl(DRAFT)122 b Fg(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2723 100 V 1130 w Fn(9)1230 399 y Fm(double)46 b(frame[],)f(double)h │ │ │ │ │ +TeXDict begin 9 8 bop 91 100 1111 4 v 1292 100 a Fm(Tree)30 │ │ │ │ │ +b Fg(:)40 b Fl(DRAFT)121 b Fg(F)-8 b(ebruary)31 b(18,)g(2025)p │ │ │ │ │ +2742 100 V 1111 w Fn(9)1230 399 y Fm(double)46 b(frame[],)f(double)h │ │ │ │ │ (bounds[])g(\))h(;)227 557 y Fn(This)24 b(metho)s(d)f(dra)m(ws)h(a)g │ │ │ │ │ (tree.)40 b(The)23 b(co)s(ordinates)i(of)f(the)h(no)s(des)e(are)h │ │ │ │ │ (found)f(in)h(the)g Fm(xDV)f Fn(and)h Fm(yDV)f Fn(v)m(ectors.)227 │ │ │ │ │ 715 y(The)29 b(no)s(des)f(will)h(ha)m(v)m(e)i(circles)f(of)f(constan)m │ │ │ │ │ (t)i(radius)d(\(if)h Fm(radiusDV)e Fn(is)i Fm(NULL)p │ │ │ │ │ Fn(\))f(or)h(eac)m(h)i(circle)f(can)f(ha)m(v)m(e)i(a)227 │ │ │ │ │ 828 y(di\013eren)m(t)g(radius)f(found)f(in)h Fm(radiusDV)e │ │ │ │ │ @@ -5645,19 +5651,19 @@ │ │ │ │ │ b(alue)27 b Fm(1)g Fn(is)f(returned.)39 b(If)26 b(an)g(IO)h(error)f(is) │ │ │ │ │ h(encoun)m(tered)g(from)f Fm(fscanf)p Fn(,)g(zero)h(is)g(returned.)227 │ │ │ │ │ 5407 y Fl(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fn(If)30 │ │ │ │ │ b Fm(tree)g Fn(or)g Fm(fp)g Fn(are)g Fm(NULL)p Fn(,)g(an)g(error)g │ │ │ │ │ (message)i(is)e(prin)m(ted)g(and)g(zero)h(is)f(returned.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 10 10 │ │ │ │ │ -TeXDict begin 10 9 bop 0 100 a Fn(10)p 182 100 1107 4 │ │ │ │ │ -v 1290 w Fm(Tree)29 b Fg(:)41 b Fl(DRAFT)30 b Fg(Jan)m(uary)g(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fn(10)p 182 100 1088 4 │ │ │ │ │ +v 1271 w Fm(Tree)29 b Fg(:)41 b Fl(DRAFT)30 b Fg(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2812 100 V 111 399 a Fn(3.)46 │ │ │ │ │ +b Fm(int)h(Tree_readFromBinaryFile)42 b(\()47 b(Tree)g(*tree,)f(FILE)g │ │ │ │ │ +(*fp)h(\))h(;)227 557 y Fn(This)32 b(metho)s(d)g(reads)g(in)h(a)g │ │ │ │ │ Fm(Perm)e Fn(ob)5 b(ject)33 b(from)f(a)h(binary)f(\014le.)48 │ │ │ │ │ b(If)32 b(there)g(are)h(no)g(errors)f(in)g(reading)h(the)227 │ │ │ │ │ 670 y(data,)f(the)e(v)-5 b(alue)31 b Fm(1)f Fn(is)g(returned.)40 │ │ │ │ │ b(If)30 b(an)g(IO)g(error)g(is)g(encoun)m(tered)h(from)f │ │ │ │ │ Fm(fread)p Fn(,)f(zero)i(is)g(returned.)227 828 y Fl(Err)-5 │ │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fn(If)30 b Fm(tree)g Fn(or)g │ │ │ │ │ Fm(fp)g Fn(are)g Fm(NULL)p Fn(,)g(an)g(error)g(message)i(is)e(prin)m │ │ │ │ │ @@ -5723,17 +5729,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 1107 4 v 1289 100 a Fm(Tree)29 │ │ │ │ │ -b Fg(:)41 b Fl(DRAFT)121 b Fg(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2700 100 V 1107 w Fn(11)337 399 y Fi(\210)45 b Fn(The)33 │ │ │ │ │ +TeXDict begin 11 10 bop 91 100 1088 4 v 1270 100 a Fm(Tree)29 │ │ │ │ │ +b Fg(:)41 b Fl(DRAFT)121 b Fg(F)-8 b(ebruary)30 b(18,)h(2025)p │ │ │ │ │ +2719 100 V 1088 w Fn(11)337 399 y Fi(\210)45 b Fn(The)33 │ │ │ │ │ b Fm(msgFile)e Fn(parameter)j(determines)f(the)h(message)g(\014le)f(|)h │ │ │ │ │ (if)f Fm(msgFile)e Fn(is)i Fm(stdout)p Fn(,)g(then)g(the)427 │ │ │ │ │ 511 y(output)c(\014le)h(is)f Fl(stdout)p Fn(,)i(otherwise)f(a)f(\014le) │ │ │ │ │ h(is)f(op)s(ened)g(with)g Fl(app)-5 b(end)31 b Fn(status)e(to)i(receiv) │ │ │ │ │ m(e)g(an)m(y)e(output)427 624 y(data.)337 770 y Fi(\210)45 │ │ │ │ │ b Fn(The)29 b Fm(inTreeFile)e Fn(parameter)j(is)g(the)f(input)g(\014le) │ │ │ │ │ g(for)h(the)f Fm(Tree)g Fn(ob)5 b(ject.)41 b(It)30 b(m)m(ust)f(b)s(e)g │ │ │ │ │ @@ -5781,23 +5787,24 @@ │ │ │ │ │ Fn(The)30 b Fm(fontsize)e Fn(parameter)j(is)g(the)f(size)h(of)g(the)f │ │ │ │ │ (fon)m(t)h(to)g(b)s(e)f(used)g(to)h(dra)m(w)f(the)g(no)s(de)g(lab)s │ │ │ │ │ (els.)227 3314 y(Use)g(the)h Fm(doDraw)d Fn(script)h(\014le)h(as)g(an)g │ │ │ │ │ (example.)41 b(F)-8 b(our)31 b(plots)f(of)g(a)g(tree)h(for)e(the)h │ │ │ │ │ Fm(R2D100)e Fn(matrix)j(ordered)227 3427 y(b)m(y)g(nested)f(dissection) │ │ │ │ │ h(are)g(found)e(b)s(elo)m(w.)p eop end │ │ │ │ │ %%Page: 12 12 │ │ │ │ │ -TeXDict begin 12 11 bop 0 100 a Fn(12)p 182 100 1107 │ │ │ │ │ -4 v 1290 w Fm(Tree)29 b Fg(:)41 b Fl(DRAFT)30 b Fg(Jan)m(uary)g(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fn(12)p 182 100 1088 │ │ │ │ │ +4 v 1271 w Fm(Tree)29 b Fg(:)41 b Fl(DRAFT)30 b Fg(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2812 100 V 0 571 a Fn(Figure)38 │ │ │ │ │ +b(1.1:)56 b Fa(R2D100)p Fn(:)f(domain/separator)39 b(tree.)62 │ │ │ │ │ +b(On)37 b(the)g(left)h Fm(heightflag)45 b(=)j('H')36 │ │ │ │ │ +b Fn(and)h Fm(coordflag)45 b(=)0 684 y('C')p Fn(,)30 │ │ │ │ │ +b(on)g(the)h(righ)m(t)g Fm(heightflag)45 b(=)i('D')29 │ │ │ │ │ +b Fn(and)h Fm(coordflag)45 b(=)j('C')p Fn(.)105 2612 │ │ │ │ │ +y @beginspecial 0 @llx 0 @lly 600 @urx 600 @ury 2159 │ │ │ │ │ +@rwi 2159 @rhi @setspecial │ │ │ │ │ %%BeginDocument: ../../Tree/doc/R2D100HC.eps │ │ │ │ │ %!PS-Adobe-2.0 EPSF-1.2 │ │ │ │ │ %%BoundingBox: 0 0 600 600 │ │ │ │ │ /CSH { │ │ │ │ │ % │ │ │ │ │ % center show a string │ │ │ │ │ % │ │ │ │ │ ├── ps2ascii {} │ │ │ │ │ │ @@ -20,15 +20,15 @@ │ │ │ │ │ │ • int *sib : pointer to sibling vector, size n, entries in the range [-1,n-1] │ │ │ │ │ │ The user should rarely if ever change these five fields. In particular, throughout the code we │ │ │ │ │ │ assume that the Tree object was correctly initialized using one of the three initializer methods. │ │ │ │ │ │ Inside almost every method we check to ensure n > 0. If n > 0 then we assume that the structure │ │ │ │ │ │ was intialized correctly and that the par, fch and sib fields point to storage that was allocated by │ │ │ │ │ │ the initializer method. │ │ │ │ │ │ 1 │ │ │ │ │ │ - 2 Tree : DRAFT January 16, 2024 │ │ │ │ │ │ + 2 Tree : DRAFT February 18, 2025 │ │ │ │ │ │ 1.2 Prototypes and descriptions of Tree methods │ │ │ │ │ │ This section contains brief descriptions including prototypes of all methods that belong to the Tree │ │ │ │ │ │ object. │ │ │ │ │ │ 1.2.1 Basic methods │ │ │ │ │ │ As usual, there are four basic methods to support object creation, setting default fields, clearing │ │ │ │ │ │ any allocated data, and free’ing the object. │ │ │ │ │ │ 1. Tree * Tree_new ( void ) ; │ │ │ │ │ │ @@ -52,15 +52,15 @@ │ │ │ │ │ │ Error checking: If tree is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 2. int Tree_root ( Tree *tree ) ; │ │ │ │ │ │ This method returns the root of the tree. │ │ │ │ │ │ Error checking: If tree is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 3. int * Tree_par ( Tree *tree ) ; │ │ │ │ │ │ This method returns a pointer to the parent vector. │ │ │ │ │ │ Error checking: If tree is NULL, an error message is printed and the program exits. │ │ │ │ │ │ - Tree : DRAFT January 16, 2024 3 │ │ │ │ │ │ + Tree : DRAFT February 18, 2025 3 │ │ │ │ │ │ 4. int * Tree_fch ( Tree *tree ) ; │ │ │ │ │ │ This method returns a pointer to the first child vector. │ │ │ │ │ │ Error checking: If tree is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 5. int * Tree_sib ( Tree *tree ) ; │ │ │ │ │ │ This method returns a pointer to the sibling vector. │ │ │ │ │ │ Error checking: If tree is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 1.2.3 Initializer methods │ │ │ │ │ │ @@ -88,15 +88,15 @@ │ │ │ │ │ │ The subtree object is initialized from the tree object, the nodes that are included are those │ │ │ │ │ │ found in nodeidsIV. A parent-child link in the subtree means that the two nodes have a │ │ │ │ │ │ parent-child link in the tree. │ │ │ │ │ │ Return codes: │ │ │ │ │ │ 1 normal return -3 tree is NULL │ │ │ │ │ │ -1 subtree is NULL -4 nodeidsIV is invalid │ │ │ │ │ │ -2 nodeidsIV is NULL │ │ │ │ │ │ - 4 Tree : DRAFT January 16, 2024 │ │ │ │ │ │ + 4 Tree : DRAFT February 18, 2025 │ │ │ │ │ │ 5. void Tree_setFchSibRoot ( Tree *tree ) ; │ │ │ │ │ │ Theroot and the entries in the fch[] and sib[] vectors are set using the entries in the par[] │ │ │ │ │ │ vector. │ │ │ │ │ │ Error checking: If tree is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 6. void Tree_setRoot ( Tree *tree ) ; │ │ │ │ │ │ The vertices that are roots in the tree are linked by their sib[] field and the root of the tree │ │ │ │ │ │ is set to the head of the list. │ │ │ │ │ │ @@ -122,15 +122,15 @@ │ │ │ │ │ │ This method returns the first node in a pre-order traversal. │ │ │ │ │ │ Error checking: If tree is NULL, or if tree->n < 1, an error message is printed and the │ │ │ │ │ │ program exits. │ │ │ │ │ │ 5. int Tree_preOTnext ( Tree *tree, int v ) ; │ │ │ │ │ │ This method returns the node that follows v in a pre-order traversal. │ │ │ │ │ │ Error checking: If tree is NULL, or if tree->n < 1, or v is not in [0,tree->n-1], an error │ │ │ │ │ │ message is printed and the program exits. │ │ │ │ │ │ - Tree : DRAFT January 16, 2024 5 │ │ │ │ │ │ + Tree : DRAFT February 18, 2025 5 │ │ │ │ │ │ 6. int Tree_nleaves ( Tree *tree ) ; │ │ │ │ │ │ This method returns the number of leaves of the tree. │ │ │ │ │ │ Error checking: If tree is NULL, or if tree->n < 1, an error message is printed and the │ │ │ │ │ │ program exits. │ │ │ │ │ │ 7. int Tree_nroots ( Tree *tree ) ; │ │ │ │ │ │ This method returns the number of roots of the tree (really a forest). │ │ │ │ │ │ Error checking: If tree is NULL, or if tree->n < 1, an error message is printed and the │ │ │ │ │ │ @@ -155,15 +155,15 @@ │ │ │ │ │ │ 12. IV * Tree_maximizeGainIV ( Tree *tree, IV *gainIV, int *ptotalgain, │ │ │ │ │ │ int msglvl, FILE *msgFile ) ; │ │ │ │ │ │ Given a gain value assigned to each node, find a set of nodes, no two in a child-ancestor │ │ │ │ │ │ relationship, that maximizes the total gain. This problem arises in finding the optimal do- │ │ │ │ │ │ main/Schur complement partition for a semi-implicit factorization. │ │ │ │ │ │ Error checking: If tree, gainIV or ptotalgain is NULL, an error message is printed and the │ │ │ │ │ │ program exits. │ │ │ │ │ │ - 6 Tree : DRAFT January 16, 2024 │ │ │ │ │ │ + 6 Tree : DRAFT February 18, 2025 │ │ │ │ │ │ 1.2.5 Metrics methods │ │ │ │ │ │ Manyoperations need to know some metric defined on the nodes in a tree. Here are three examples: │ │ │ │ │ │ the height of a node (the minimum distance from a descendant leaf), the depth of a node (the │ │ │ │ │ │ distance from its root ancestor), or the weight associated with a subtree rooted at a node. Of │ │ │ │ │ │ course, a weight could be associated with each node, so the height or depth becomes the weight of │ │ │ │ │ │ the nodes on the path. │ │ │ │ │ │ Metrics can be int or double. Because of the limitations of C, we need two separate methods │ │ │ │ │ │ @@ -191,15 +191,15 @@ │ │ │ │ │ │ These methods create and return IV or DV objects that contain height metrics using as input │ │ │ │ │ │ an IV or DV object that contains the metric for each of the nodes. If hmetric[] is the vector │ │ │ │ │ │ in the returned IV or DV object, then │ │ │ │ │ │ hmetric[v] = vmetric[v] if fch[v] == -1 │ │ │ │ │ │ = vmetric[v] + max_{par[u] = v} hmetric[par[v]] │ │ │ │ │ │ Error checking: If tree or vmetric{I,D}V is NULL, an error message is printed and the │ │ │ │ │ │ program exits. │ │ │ │ │ │ - Tree : DRAFT January 16, 2024 7 │ │ │ │ │ │ + Tree : DRAFT February 18, 2025 7 │ │ │ │ │ │ 1.2.6 Compression methods │ │ │ │ │ │ Frequently a tree will need to be compressed in some manner. Elimination trees usually have long │ │ │ │ │ │ chains of nodes at the higher levels, where each chain of nodes corresponds to a supernode. Liu’s │ │ │ │ │ │ generalized row envelope methods partition the vertices by longest chains [?]. In both cases, we can │ │ │ │ │ │ construct a map from each node to a set of nodes to define a smaller, more compact tree. Given │ │ │ │ │ │ such a map, we construct the smaller tree. │ │ │ │ │ │ Afundamental chain is a set of nodes v ,...,v such that (1) v is a leaf or has two or more │ │ │ │ │ │ @@ -232,15 +232,15 @@ │ │ │ │ │ │ Error checking: If tree or map is NULL, or if n < 1, an error message is printed and the │ │ │ │ │ │ program exits. │ │ │ │ │ │ 2. void Tree_leftJustifyI ( Tree *tree, IV *metricIV ) ; │ │ │ │ │ │ void Tree_leftJustifyD ( Tree *tree, DV *metricIV ) ; │ │ │ │ │ │ This method justifies the tree, reordering the children of each node as necessary. If u and v │ │ │ │ │ │ are siblings, and u comes before v in a post-order traversal, then the weight of the subtree │ │ │ │ │ │ rooted at u is as large or larger than the weight of the subtree rooted at v. │ │ │ │ │ │ - 8 Tree : DRAFT January 16, 2024 │ │ │ │ │ │ + 8 Tree : DRAFT February 18, 2025 │ │ │ │ │ │ Error checking: If tree or metricIV is NULL, or if n < 1, or if n is not the size of metricIV, │ │ │ │ │ │ an error message is printed and the program exits. │ │ │ │ │ │ 1.2.8 Permutation methods │ │ │ │ │ │ Often we need to extract a permutation from a tree, e.g., a post-order traversal of an elimination │ │ │ │ │ │ tree gives an ordering for a sparse matrix. On other occasions, we need to permute a tree, i.e. │ │ │ │ │ │ re-label the nodes. │ │ │ │ │ │ 1. void Tree_fillNewToOldPerm ( Tree *tree, int newToOld[] ) ; │ │ │ │ │ │ @@ -269,15 +269,15 @@ │ │ │ │ │ │ Return codes: │ │ │ │ │ │ 1 normal return -3 coordflag is invalid │ │ │ │ │ │ -1 tree is NULL -3 xDV is NULL │ │ │ │ │ │ -2 heightflag is invalid -4 yDV is NULL │ │ │ │ │ │ 2. int Tree_drawToEPS ( Tree *tree, FILE *filename, DV *xDV, DV *yDV, │ │ │ │ │ │ double rscale, DV *radiusDV, int labelflag, │ │ │ │ │ │ double fontscale, IV *labelsIV, double bbox[], │ │ │ │ │ │ - Tree : DRAFT January 16, 2024 9 │ │ │ │ │ │ + Tree : DRAFT February 18, 2025 9 │ │ │ │ │ │ double frame[], double bounds[] ) ; │ │ │ │ │ │ This method draws a tree. The coordinates of the nodes are found in the xDV and yDV vectors. │ │ │ │ │ │ The nodes will have circles of constant radius (if radiusDV is NULL) or each circle can have a │ │ │ │ │ │ different radius found in radiusDV when radiusDV is not NULL. The value rscale is used to │ │ │ │ │ │ scale all the radii. (If radiusDV is NULL, then all radii are equal to one point — there are 72 │ │ │ │ │ │ points to the inch.) │ │ │ │ │ │ If labelflag = 1, the nodes will have a numeric label. If labelsIV is NULL, then the label │ │ │ │ │ │ @@ -306,15 +306,15 @@ │ │ │ │ │ │ and returns the value returned from the called routine. │ │ │ │ │ │ Error checking: If tree or fn are NULL, or if fn is not of the form *.treef (for a formatted │ │ │ │ │ │ file) or *.treeb (for a binary file), an error message is printed and the method returns zero. │ │ │ │ │ │ 2. int Tree_readFromFormattedFile ( Tree *tree, FILE *fp ) ; │ │ │ │ │ │ This method reads in a Perm object from a formatted file. If there are no errors in reading │ │ │ │ │ │ the data, the value 1 is returned. If an IO error is encountered from fscanf, zero is returned. │ │ │ │ │ │ Error checking: If tree or fp are NULL, an error message is printed and zero is returned. │ │ │ │ │ │ - 10 Tree : DRAFT January 16, 2024 │ │ │ │ │ │ + 10 Tree : DRAFT February 18, 2025 │ │ │ │ │ │ 3. int Tree_readFromBinaryFile ( Tree *tree, FILE *fp ) ; │ │ │ │ │ │ This method reads in a Perm object from a binary file. If there are no errors in reading the │ │ │ │ │ │ data, the value 1 is returned. If an IO error is encountered from fread, zero is returned. │ │ │ │ │ │ Error checking: If tree or fp are NULL, an error message is printed and zero is returned. │ │ │ │ │ │ 4. int Tree_writeToFile ( Tree *tree, char *fn ) ; │ │ │ │ │ │ This method writes a Perm object to a file. It tries to open the file and if it is successful, │ │ │ │ │ │ it then calls Tree writeFromFormattedFile() or Tree writeFromBinaryFile(), closes the │ │ │ │ │ │ @@ -339,15 +339,15 @@ │ │ │ │ │ │ Error checking: If tree or fp are NULL, an error message is printed and zero is returned. │ │ │ │ │ │ 1.3 Driver programs for the Tree object │ │ │ │ │ │ 1. drawTree msglvl msgFile inTreeFile inTagsFile outEPSfile │ │ │ │ │ │ heightflag coordflag radius bbox[4] frame[4] tagflag fontsize │ │ │ │ │ │ This driver program reads in a Tree file and optionally a tags IV file and creates an EPS file │ │ │ │ │ │ with a simple picture of a tree. │ │ │ │ │ │ • The msglvl parameter determines the amount of output. │ │ │ │ │ │ - Tree : DRAFT January 16, 2024 11 │ │ │ │ │ │ + Tree : DRAFT February 18, 2025 11 │ │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ │ output file is stdout, otherwise a file is opened with append status to receive any output │ │ │ │ │ │ data. │ │ │ │ │ │ • The inTreeFile parameter is the input file for the Tree object. It must be of the form │ │ │ │ │ │ *.treefor*.treeb. TheTreeobjectisreadfromthefileviatheTree readFromFile() │ │ │ │ │ │ method. │ │ │ │ │ │ • The inTagsFile parameter is the input file for the IV vector object than holds the tags │ │ │ │ │ │ @@ -364,15 +364,15 @@ │ │ │ │ │ │ • The frame parameter a sequence of four numbers that form the frame of the plot within │ │ │ │ │ │ the bounding box: lower left x value, lower left y value, width and height. │ │ │ │ │ │ • When tagflag = 1, tags are drawn on the nodes. If tagsFile is NULL, then node ids │ │ │ │ │ │ will be drawn on the nodes. Otherwise, node ids will be taken from the tagsIV object. │ │ │ │ │ │ • The fontsize parameter is the size of the font to be used to draw the node labels. │ │ │ │ │ │ Use the doDraw script file as an example. Four plots of a tree for the R2D100 matrix ordered │ │ │ │ │ │ by nested dissection are found below. │ │ │ │ │ │ - 12 Tree : DRAFT January 16, 2024 │ │ │ │ │ │ + 12 Tree : DRAFT February 18, 2025 │ │ │ │ │ │ Figure 1.1: R2D100: domain/separator tree. On the left heightflag = ’H’ and coordflag = │ │ │ │ │ │ ’C’, on the right heightflag = ’D’ and coordflag = ’C’. │ │ │ │ │ │ 71 71 │ │ │ │ │ │ 70 70 32 │ │ │ │ │ │ 51 51 69 31 13 │ │ │ │ │ │ 40 32 50 40 61 68 22 30 8 12 │ │ │ │ │ │ 39 31 49 43 39 56 60 67 64 21 17 29 23 7 11 9 │ │ │ ├── ./usr/share/doc/spooles-doc/Utilities.ps.gz │ │ │ │ ├── Utilities.ps │ │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ │ %%EndComments │ │ │ │ │ %%BeginDefaults │ │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ │ %%EndDefaults │ │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ │ %DVIPSCommandLine: dvips main -o Utilities.ps │ │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ │ -%DVIPSSource: TeX output 2024.01.16:2047 │ │ │ │ │ +%DVIPSSource: TeX output 2025.02.18:0318 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -3359,20 +3359,21 @@ │ │ │ │ │ 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 52 /four put │ │ │ │ │ -dup 54 /six put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ +dup 56 /eight put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 74 /J put │ │ │ │ │ +dup 70 /F put │ │ │ │ │ dup 97 /a put │ │ │ │ │ -dup 110 /n put │ │ │ │ │ +dup 98 /b put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ dup 114 /r put │ │ │ │ │ dup 117 /u put │ │ │ │ │ dup 121 /y put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ @@ -3556,89 +3557,93 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ │ -C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ │ -6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ │ -11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ │ -1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ │ -A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ │ -F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ │ -EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ │ -033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ │ -A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ │ -468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8A71FF9C085003EBB4F4 │ │ │ │ │ -3D271F5B16B1AAD3EBDC391F534AA46E545E9D8659DD19B309C3B7625A8396FA │ │ │ │ │ -2519464539D46E43ACB72952313C8497315E0319C08628023E8FC54D7D3BAC29 │ │ │ │ │ -D5AD8EFDABF0C33C7AFB7151A6606C62A87F0F5F783569AC4C881A992E3FE420 │ │ │ │ │ -297F7BC5147F3B2FA98450D2F8B07F7D229BC8BE06729920CFEC22556740E1CB │ │ │ │ │ -3DE09AC763C6D4A20AD1599C368FABD07BC35C16683F2A0311A88983415A9140 │ │ │ │ │ -2EFC4BC1B10DCAD4B2B8A28510E5BD39D6616D2B9B079ED3CF9C315B7DEC29D9 │ │ │ │ │ -251DFD0194B34EC175964C23383F23FFB2E41B698C405815D65EAFF9E9DD1DDE │ │ │ │ │ -30F77924656C288B8DDB2E5B0E7B1FAA66791DE3848EE6DE63AD0E945E49C6C7 │ │ │ │ │ -9FCA16E01F027F9EF7ACB55F02F5B0136480802F789F6FE14B430879979BA04D │ │ │ │ │ -F481AD4CF47E6847936F377FB04869F9A80E597301BFCAB718D8764094673876 │ │ │ │ │ -BCEF8FA3701608C84B3A0399A11D2E6AD922CCB7D72AF9EBFB30F4648A37A123 │ │ │ │ │ -CB8FB14BDC351692CF0CCAA5CA9383C2B23BAAA38700327EB743FBBE9EE04041 │ │ │ │ │ -13F5CEF4B3881BBC051C33369A82B3505B1CFD7D91AEF2E43EA728EE48E2D854 │ │ │ │ │ -5A7E516998ACDD4FD835FA901C5A21810A56D51FE919B2E58408EEB4DAEB487F │ │ │ │ │ -BA7F1D292CED902DF3533566D96DAD918319EA650D4FC7D9E0170CDE620F755B │ │ │ │ │ -0E7AE02D9B118481B26F5FF7060FBCFA2A682B6826F00679BCDA68794C05286D │ │ │ │ │ -B616DD08372ACDE0AE6E7EF116F0D36F16241ED4F0E8CCD80377792E3BB1343C │ │ │ │ │ -EEB22CC77738F7CBCBA32CF6C3979F6DF7ED81A89AE8928FD7CC550F2730BA88 │ │ │ │ │ -1B51CEDC63F4C47F261AFCAB7AC3CED20B15C97E714A460A1A3B16436B4A5149 │ │ │ │ │ -8F91DA4BE0B9B648534CE5F442117036B602DC91E2852BEA62F55803B833FDF7 │ │ │ │ │ -9F901AB87489E703DDEED1091A79DC73B4440BBBF2C7592B441187C4A3562204 │ │ │ │ │ -859F08BA3CE2A8ECCD5AAD13C50FB806FE79A388F1822C5608837CBDE526A044 │ │ │ │ │ -12E5CDE4A066932AF2ACA7E8FC6BA4603640944718752975B7DA6E906BE1EA01 │ │ │ │ │ -46736FF5D1AA1CC682D011B6039CF98C35E36D4F14ABC84A38B7203CC9A17756 │ │ │ │ │ -B2B0345276798F1A88A54AD9FEA0853C6DDF28525ED4F0B7380D14147012C2A4 │ │ │ │ │ -5B02888C986C76497EA4C729B0B82EE73C1A1A8E8F1ABF401E341028E9C15AF9 │ │ │ │ │ -354706D8DC07492921AD0932A46736C0D1B066D00287DACCC068FAE6A796EC89 │ │ │ │ │ -54D1D73AA88F3A5912BA9D3FF70065C8D0D0DAD1CD846501E06694374EFDBEC6 │ │ │ │ │ -931F644D5E8494AFC742423AD9A487658E310E0682BE19B8475F4D450487A686 │ │ │ │ │ -2B94494DEAF1C0F59DE82F2CE64BEE5E97F942FCFA1187ED6AA5761E951A7BF7 │ │ │ │ │ -9F842E34A4656C58B35A9E99F7E6762CEE11E0CF59FFD75D7382C5EE6DBB43F1 │ │ │ │ │ -ED219071D3FB22DBA90977723BB467C0490D042684C0724F40DCA3E0D8F1F4E7 │ │ │ │ │ -3C4F9A67BE6528185EAAFDD415224F7E256A4EA00111C17C746CBD80BF569A27 │ │ │ │ │ -D81195D7F79C1CCEEF30ED00D49F48B63E4B8D7953403A3710AE953CC1B76F0F │ │ │ │ │ -F523D777A6A186F262A602543F94AF7471DBE25FEBC207DB42DAF7DC9A5781FB │ │ │ │ │ -2131AD42869D966A734AAE3466DF1CE9D1BCFA72409A558C0AEE6A8E2FEAACB6 │ │ │ │ │ -2CDABCC28433034848ACF9FB4465D272E4AFC48572647F05F41C7A293CC5B595 │ │ │ │ │ -AD31555FB708A72962707348BC7033A8224BD42EB9D75FDF3AE9E6A9C960B330 │ │ │ │ │ -5137DF59F8E2E0D535F41524ABDF070745A4FA25CD8DFD38A5FF30A95452B875 │ │ │ │ │ -6569E8812631300D79A942C563AF174AC05C9F2D09D7D5D3C605F5A6B7F21B34 │ │ │ │ │ -18F270A993B050838E701A17938D1C156CBA7CA4BAC7C562CE9D7B758EAB25A9 │ │ │ │ │ -A6DFFC71F65561341847B776DF34061CE3D439B87B857626987EC93B3B95B8E8 │ │ │ │ │ -76FFB16B263675333FA10414FEED707FF7C366BF8B20FF8577CDEBEBCF1A5BCE │ │ │ │ │ -258C09C90175A5278B7C444A623E3331FDE5A6387B3E389540ED1E7E883958F3 │ │ │ │ │ -3A5C89CCD62256FA069DF4A5090FB17C1F1757C9209DAFB8A1F47182BF3E88D9 │ │ │ │ │ -0B5376B59EE165A761902759C8ED7F5AD301E7EB8B49CC09AF921DB45B7F8002 │ │ │ │ │ -AB32E73AAE53942DE0F9175D8446017006C9C0B93EF39C13B7A879F2F6DDFF16 │ │ │ │ │ -204BB24F976847CF006FD29332FCCB255B5116F7077A44F7066C39C81DC4BAD2 │ │ │ │ │ -40DB2753626C0102E5D047522ABC38EA294A699B8DFD9CA0A7980561A1062E90 │ │ │ │ │ -AB11EE286A9C238D9F721D9980D0A1828C2814972622D948CEE8C812C19A9A03 │ │ │ │ │ -608ED0AC138A436FFBF8BE3D1E66C87793416AF38ED9BC5424568A175FBDAA9E │ │ │ │ │ -D6FC11A7021693819B051562B5A59F32629E2D6019D69DD329BE1894A2B295E1 │ │ │ │ │ -1DCE9683B29AE126C56F26E5C595BF1A8249BDE231DBE8B066F7F62EF149B975 │ │ │ │ │ -A863969A4690504A5EA064721DA909B8157C0B39FBF8228D95CB655E406161E1 │ │ │ │ │ -148610FAEED7C5509880223C06A66DA19E10F94DC2DB481B26 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004FD597ED │ │ │ │ │ +EFDBC64ABD9B79386FB2427D1A63522195B1239C09F8CB3F8BD7A245A6DD82E3 │ │ │ │ │ +260C3889587626DFC5F7978E55F5524ABD6A3319CDD3D3F40D040044D51DA4E1 │ │ │ │ │ +6797EEAC7AA07C77EC6DB0E6E182B545A8BEF63B14F3FC07BAC09E7CD5C17ED6 │ │ │ │ │ +10080704B0DA4E9BA12F968DF8A58458D17E9A5B1F14A83DC51F5B161ADEE1CC │ │ │ │ │ +0183D82ED92C6FC7203C289949EDF0284D9893029FF5408E421324625F17C3E5 │ │ │ │ │ +2437C8F75A9D68EE1AF9174FEA6FC6BF793C7D2E497EA90396CF1A645E283B69 │ │ │ │ │ +8425F47C323587DF91E1D596DCB1E3A787C955D9D965A5E3E26ADF58B62AD5F9 │ │ │ │ │ +0C9AC784DE479780606354111E3202F215650DBBE1063A46F3C10B9EBC974DDA │ │ │ │ │ +A1A28DBBD43E9E5BFF000B12C787D0427928078F8EC5FE90DED97E6C129E8DEA │ │ │ │ │ +51F66504DB83764E52B0BA68DF7BE684C8959CB1D3345CC48221A9A4683306C0 │ │ │ │ │ +62B634E0A539383F0C7A788D9711EFF414869CCC5659D78CEBE009BF2463F56A │ │ │ │ │ +0ADC993348FE96DF7C250E13ED6504AACFE8F8DCA2D2048D9D8CFA127D363EAC │ │ │ │ │ +1F0630E2D1B621E6954038195D965B91FD974FA3F1B8B29D200A16CEBA645E2F │ │ │ │ │ +CEEE6FD49FBBD49E38AE67D4BFFCE91F1FC422554EC4409C5FA18D40FCD6D9B3 │ │ │ │ │ +2185ED1E0F98106D4339F086B05CA36E56EC22C60E2CE23F9C4CC403ACAD3F94 │ │ │ │ │ +4086B4DF6DFA0B7B4716417263E7B558535566AED2F6C2F9846A16D71A7930A7 │ │ │ │ │ +49232D3D16C4A01CF1A1998A06F40062ED329179A85668537C55D0BC24FC0010 │ │ │ │ │ +54DA83E2FC66B2A5D428E6A9BFC983253668C0ECE6CA36DBF97C4B7659D50842 │ │ │ │ │ +C65B36604840EEDA399B57E2DEFAC3E7FB031634CE33D04238F9854D2AAAF448 │ │ │ │ │ +34DA5F3BCCED3166FEEE82BB0BBA0A397CC2F95865CB52AABFF454D93B425809 │ │ │ │ │ +A26AC459F321FD23E2262FE816D06BAAECF32AAF167F84799AF80F9F88388D07 │ │ │ │ │ +0DB5FD57AFEE2850A8DFE977E6AE39CB3DC16DB1A163A583C86C6F775CE33521 │ │ │ │ │ +0081C0BBBAD6D30D26C66B28B38CEAC78FEA5FB3CC5853656B67C6D9D80EB30E │ │ │ │ │ +397558C9179AF5920F34DAB3F578DFCF0DBB137AED17D6325C23883E69EE4621 │ │ │ │ │ +34355A70C19EA68891E1CA937376901C85CDEE109F1665943E29A216DC00937A │ │ │ │ │ +B983A729A4654AD09187C0242D52FA4ADD0853EF4888864914D7D81C56578DD4 │ │ │ │ │ +3B51907032022E6E412D4F114675DEDCA8A9E85DC03A0B583FECD84432D15F70 │ │ │ │ │ +01F627BD6EC91F9FCFDA01BF40E1229B5F164309DBB641AD50970503DA2048C1 │ │ │ │ │ +DF8F36E8D252EE113F0B46677D9BAF376BAE18D74CFB0DBBD0C7E9D0A58BA3ED │ │ │ │ │ +1E5099CAE073EB5638617760AB57849893764EA9735173CD1EAB66884CEA7EE3 │ │ │ │ │ +8843327B2E145BD6FBB49102776B82BC511D109F8BE9E7E99DADABABEDC3CFD9 │ │ │ │ │ +393578FFD85907DFF2849E4CDE6FA4DEC7E1C150EBE4047FFB650F9548BE6D11 │ │ │ │ │ +0C51226A5436F18BF20A02E0F888F46B6AC3A8E8D927ECD3B5E095933AD3859F │ │ │ │ │ +5167C41D832EFCC4093BD2AFA7101AB430E57DAFC3590F05D3CBABB32BC203A0 │ │ │ │ │ +467B23BDB830487C9AA5B85BAC065F8538871B4180F8C4732E637DB090CFDE5A │ │ │ │ │ +3F4F2B5BFAFB848BAAD1A17CB076B34159601639BD93ECAB1214ACABF2C67FE2 │ │ │ │ │ +0658AA20B08681070FF56F1CC52144ABA8765D6E124D1CEA9BBA102808CE1BB2 │ │ │ │ │ +5EDF46BC7BBC2A5B49EE6EC28F5797A3969B057B21FCDBBD0E60848FF14F6CA3 │ │ │ │ │ +70F3060BDBB019B22722C99C7691760F013763B7FBEB62830AE215F195BF9F01 │ │ │ │ │ +21BF4377397E89574CFA47D123AA506A570A77BA6EB4AAB0B237A26154880293 │ │ │ │ │ +3952F832F72ECCB024F02385E5EE8566B165904B594E30D0700D033C6B429F6F │ │ │ │ │ +2A20BC774F442BC9CE29FCC81807C2768A8BC927A215558FBF36DC53F477F04A │ │ │ │ │ +41DA66E1A85B659EB761230977EAD7DA0150513D3323B143D4E2A61BCF03334C │ │ │ │ │ +C0EE3E1B06CFAF58ECC910BD81F0352B75FF1594D6A4EF504232D442174BE766 │ │ │ │ │ +0F8E703F97E21D25D4CD097549C31FEE7017C3916EFB02E7BF869172889827B6 │ │ │ │ │ +A48465EB7612BA3DBC6A9436C7167F149A25CE9F8E3F4F8DE3B5ADF6C0986CB3 │ │ │ │ │ +3A7E2DAB44AB489796461536F5F713017F2620AD03295CAE9285F08974AE0DF8 │ │ │ │ │ +D739260929619B509491AFF09C4CAEF9E65C2CA69470C907ECBF3AB6C955360D │ │ │ │ │ +05ABAC306DB51122A1ADC7EF0DD70FA299A45C505A83727D4598C86319EE9C06 │ │ │ │ │ +7218EFD4F40388354BCF1B79593D5AD221DF955D081F99F880E5CED07321AB3E │ │ │ │ │ +A2FCB8B05D54807D8E15E65B78DCE12989B9276350080C905DBB74CE9AA7E246 │ │ │ │ │ +5D3BAED292C562D4CF54617FCC6654496C7996D1ECE1EFF9258716AB763A12E6 │ │ │ │ │ +316E4C5587351A6DB011F58F6A15BC28BEBDC3836E0CB892807FEC228DC1B380 │ │ │ │ │ +92F7F42279F08D60F13D6A4CB425543C3644461461CBF6F27B6603F613D1FCF8 │ │ │ │ │ +A8410AD82D1498166AEB35D4125D7E2ADEAAB18BC04806AED53513F066E5F154 │ │ │ │ │ +3E13E863C50B9814EE2FB978D0D24A03FAF650CB6E2CADF1E6BE6BAF699AFC03 │ │ │ │ │ +E1A0EEB207B3B9A689ED5B373FE86686AD230BE6C18E1673DDA50E224B343EC5 │ │ │ │ │ +903BA0C8041C13607B50D5852AC7970B15C244E6EBA7D54B3086312CF04761D6 │ │ │ │ │ +7D3D75D51F20C371494AB81AB4A9838B20B483B851D01FEF41EA5C0B4755B964 │ │ │ │ │ +EB6E9B178051C556A010994EB88EAE641F4C1A0D7E0F98D5267E18AEF1AEA7E7 │ │ │ │ │ +9030A97DF89AFF621981C33B645FFB5F3BB2065A7661D11B26E0999561DF3580 │ │ │ │ │ +4A76A05DFAF8085525F8D5C01936F03C32E26E72569371C9EA3B8916F9DFC5FC │ │ │ │ │ +6A6F25A0FFDB981BA8B896393D75774D50828E6ADE903C45406E354703A4BC56 │ │ │ │ │ +2C49A47FEAC970DC433E3050C49F7FB945A9705BD8852D2D65D935F244D3B423 │ │ │ │ │ +EFAB84AAAAB8FBAFF50AFF372A533BCCEB5FC273DBADCF715776DF02A5DCBA9A │ │ │ │ │ +FBF265FAB4745D6475B33611EEE1EA95E7584E0BEEC7CA789AA69C8D03D6F8C0 │ │ │ │ │ +5B6844E2B901ACA560C0433B053D134866E567425174E47173679AAD4486A2D3 │ │ │ │ │ +369C29E4DD2CD6ACA1BE80ED8FF0A9C58A616D26E758BD8E6342624EC83FB590 │ │ │ │ │ +BD354B52B60BB054FAFE9AC63E1564FBC721FE8F276B0413EC89A2C85E5ED1B0 │ │ │ │ │ +3A9D83BE62A4488ADE7CE69971A8AF7E5862A4290EEF6F00D4171C7FFB360065 │ │ │ │ │ +92E72BF02BE27161AE0BB5516572A0BDC4F316FFB24B38484AC8D1FD4CD86062 │ │ │ │ │ +A2B5D03CF28C3A679C039A6EFDD4C9DA7E463AD60234C9F6BBEE48D87DD94D85 │ │ │ │ │ +842F495F3E25723718682CE4D6224CBBF4456F03077EDF736D65B9DDAB09470E │ │ │ │ │ +17742D82011FFA96BFE86B96E858F9352FCD20C3D46B77DBDEE54336EC2249EA │ │ │ │ │ +211F6DFFF5BEA1E5192BE1BAC0BDD5EDDB3D56C6F7C6E543561A0B39E5C1B04F │ │ │ │ │ +C683A7516B6E69D682455386DDA709929D621FA434D403E895AA0A77DBE1DFD2 │ │ │ │ │ +0D060DF82378880147ED97C6E8149686FA048710B113760AC1DA4512FF8556B3 │ │ │ │ │ +16E2447485B8C3CD58D0469C4A45FFB4CB0322BB284C02 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -5504,16 +5509,16 @@ │ │ │ │ │ 51 16[51 5[51 1[51 51 51 40[{}31 99.6264 /CMTT12 rf /Fi │ │ │ │ │ 134[59 2[59 62 44 44 46 1[62 56 62 93 31 59 1[31 62 56 │ │ │ │ │ 1[51 62 50 1[54 13[62 24[31 56 56 56 56 56 56 56 56 56 │ │ │ │ │ 56 1[31 37 45[{}33 99.6264 /CMBX12 rf /Fj 139[62 62 6[62 │ │ │ │ │ 2[62 3[62 15[62 85[{}6 119.552 /CMTT12 rf /Fk 138[49 │ │ │ │ │ 30 37 38 1[46 46 51 2[42 1[28 46 42 1[42 46 42 1[46 12[65 │ │ │ │ │ 1[66 11[59 62 69 2[68 6[28 58[{}22 90.9091 /CMTI10 rf │ │ │ │ │ -/Fl 134[48 3[51 2[36 3[51 12[45 22[47 15[25 3[45 1[45 │ │ │ │ │ -1[45 45 45 3[25 44[{}13 90.9091 /CMSL10 rf │ │ │ │ │ +/Fl 134[48 3[51 2[36 12[40 2[51 45 26[59 11[25 1[45 2[45 │ │ │ │ │ +2[45 45 45 3[25 44[{}14 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 │ │ │ │ │ @@ -5612,46 +5617,46 @@ │ │ │ │ │ b Fq(data)h(\014elds.)558 4763 y Fp(typedef)45 b(struct)h(_I2OP)h(I2OP) │ │ │ │ │ f(;)558 4876 y(struct)g(_I2OP)g({)701 4989 y(int)190 │ │ │ │ │ b(value0)94 b(;)701 5101 y(int)190 b(value1)94 b(;)701 │ │ │ │ │ 5214 y(void)142 b(*value2)46 b(;)701 5327 y(I2OP)142 │ │ │ │ │ b(*next)g(;)558 5440 y(})47 b(;)1927 5656 y Fq(1)p eop │ │ │ │ │ end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fq(2)p 136 100 1011 4 v │ │ │ │ │ -1193 w Fp(Utilities)28 b Fl(:)40 b Fk(DRAFT)30 b Fl(Jan)m(uary)g(16,)i │ │ │ │ │ -(2024)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 │ │ │ │ │ -b(is)h(the)g(allo)s(cator)j(and)c(initializer)j(metho)s(d)d(for)h │ │ │ │ │ -Fp(char)f Fq(v)m(ectors.)49 b(Storage)35 b(for)d(an)h(arra)m(y)g(with)g │ │ │ │ │ -(size)227 1498 y Fp(n)d Fq(is)h(found)e(and)h(eac)m(h)h(en)m(try)g(is)f │ │ │ │ │ -(\014lled)g(with)g(c)m(haracter)i Fp(c)p Fq(.)41 b(A)30 │ │ │ │ │ -b(p)s(oin)m(ter)h(to)g(the)f(arra)m(y)h(is)g(returned.)111 │ │ │ │ │ -1697 y(2.)46 b Fp(char)h(*)g(CVinit2)f(\()i(int)f(n)g(\))g(;)227 │ │ │ │ │ -1852 y Fq(This)34 b(is)h(an)g(allo)s(cator)i(metho)s(d)e(for)g │ │ │ │ │ -Fp(char)e Fq(v)m(ectors.)56 b(Storage)36 b(for)f(an)g(arra)m(y)h(with)e │ │ │ │ │ -(size)i Fp(n)f Fq(is)g(found.)53 b(A)227 1965 y(p)s(oin)m(ter)31 │ │ │ │ │ -b(to)g(the)f(arra)m(y)h(is)g(returned.)39 b(Note,)32 │ │ │ │ │ -b(on)e(return,)g(there)g(will)h(lik)m(ely)h(b)s(e)e(garbage)h(in)g(the) │ │ │ │ │ -f(arra)m(y)-8 b(.)111 2163 y(3.)46 b Fp(void)h(CVfree)f(\()h(char)g │ │ │ │ │ -(cvec[])f(\))i(;)227 2319 y Fq(This)30 b(metho)s(d)g(releases)h(the)g │ │ │ │ │ -(storage)h(tak)m(en)f(b)m(y)f Fp(cvec[])p Fq(.)111 2517 │ │ │ │ │ -y(4.)46 b Fp(void)h(CVcopy)f(\()h(int)g(n,)h(char)e(y[],)h(char)f(x[])h │ │ │ │ │ -(\))h(;)227 2673 y Fq(This)30 b(metho)s(d)g(copies)h │ │ │ │ │ -Fp(n)f Fq(en)m(tries)h(from)f Fp(x[])f Fq(to)j Fp(y[])p │ │ │ │ │ -Fq(,)d(i.e.,)j Fp(y[i])47 b(=)g(x[i])29 b Fq(for)h Fp(0)48 │ │ │ │ │ -b(<=)f(i)h(<)f(n)p Fq(.)111 2871 y(5.)f Fp(void)h(CVfill)f(\()h(int)g │ │ │ │ │ -(n,)h(char)e(y[],)h(char)f(c)i(\))f(;)227 3027 y Fq(This)30 │ │ │ │ │ -b(metho)s(d)g(\014lls)g Fp(n)g Fq(en)m(tries)h(in)f Fp(y[])g │ │ │ │ │ -Fq(with)g(the)g(c)m(haracter)i Fp(c)p Fq(,)e(i.e.,)i │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fq(2)p 136 100 992 4 v │ │ │ │ │ +1174 w Fp(Utilities)27 b Fl(:)41 b Fk(DRAFT)30 b Fl(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)i(2025)p 2909 100 V 0 399 a Fn(1.2)135 │ │ │ │ │ +b(Protot)l(yp)t(es)46 b(and)f(descriptions)g(of)g Fj(Utilities)c │ │ │ │ │ +Fn(metho)t(ds)0 632 y Fq(This)g(section)j(con)m(tains)f(brief)f │ │ │ │ │ +(descriptions)g(including)f(protot)m(yp)s(es)i(of)f(all)h(metho)s(ds)f │ │ │ │ │ +(that)h(b)s(elong)f(to)h(the)0 744 y Fp(Utilities)28 │ │ │ │ │ +b Fq(directory)-8 b(.)0 1028 y Fi(1.2.1)112 b Fh(CV)38 │ │ │ │ │ +b Fi(:)g Fh(char)g Fi(v)m(ector)f(metho)s(ds)111 1230 │ │ │ │ │ +y Fq(1.)46 b Fp(char)h(*)g(CVinit)f(\()i(int)f(n,)g(char)g(c)g(\))h(;) │ │ │ │ │ +227 1385 y Fq(This)32 b(is)h(the)g(allo)s(cator)j(and)c(initializer)j │ │ │ │ │ +(metho)s(d)d(for)h Fp(char)f Fq(v)m(ectors.)49 b(Storage)35 │ │ │ │ │ +b(for)d(an)h(arra)m(y)g(with)g(size)227 1498 y Fp(n)d │ │ │ │ │ +Fq(is)h(found)e(and)h(eac)m(h)h(en)m(try)g(is)f(\014lled)g(with)g(c)m │ │ │ │ │ +(haracter)i Fp(c)p Fq(.)41 b(A)30 b(p)s(oin)m(ter)h(to)g(the)f(arra)m │ │ │ │ │ +(y)h(is)g(returned.)111 1697 y(2.)46 b Fp(char)h(*)g(CVinit2)f(\()i │ │ │ │ │ +(int)f(n)g(\))g(;)227 1852 y Fq(This)34 b(is)h(an)g(allo)s(cator)i │ │ │ │ │ +(metho)s(d)e(for)g Fp(char)e Fq(v)m(ectors.)56 b(Storage)36 │ │ │ │ │ +b(for)f(an)g(arra)m(y)h(with)e(size)i Fp(n)f Fq(is)g(found.)53 │ │ │ │ │ +b(A)227 1965 y(p)s(oin)m(ter)31 b(to)g(the)f(arra)m(y)h(is)g(returned.) │ │ │ │ │ +39 b(Note,)32 b(on)e(return,)g(there)g(will)h(lik)m(ely)h(b)s(e)e │ │ │ │ │ +(garbage)h(in)g(the)f(arra)m(y)-8 b(.)111 2163 y(3.)46 │ │ │ │ │ +b Fp(void)h(CVfree)f(\()h(char)g(cvec[])f(\))i(;)227 │ │ │ │ │ +2319 y Fq(This)30 b(metho)s(d)g(releases)h(the)g(storage)h(tak)m(en)f │ │ │ │ │ +(b)m(y)f Fp(cvec[])p Fq(.)111 2517 y(4.)46 b Fp(void)h(CVcopy)f(\()h │ │ │ │ │ +(int)g(n,)h(char)e(y[],)h(char)f(x[])h(\))h(;)227 2673 │ │ │ │ │ +y Fq(This)30 b(metho)s(d)g(copies)h Fp(n)f Fq(en)m(tries)h(from)f │ │ │ │ │ +Fp(x[])f Fq(to)j Fp(y[])p Fq(,)d(i.e.,)j Fp(y[i])47 b(=)g(x[i])29 │ │ │ │ │ +b Fq(for)h Fp(0)48 b(<=)f(i)h(<)f(n)p Fq(.)111 2871 y(5.)f │ │ │ │ │ +Fp(void)h(CVfill)f(\()h(int)g(n,)h(char)e(y[],)h(char)f(c)i(\))f(;)227 │ │ │ │ │ +3027 y Fq(This)30 b(metho)s(d)g(\014lls)g Fp(n)g Fq(en)m(tries)h(in)f │ │ │ │ │ +Fp(y[])g Fq(with)g(the)g(c)m(haracter)i Fp(c)p Fq(,)e(i.e.,)i │ │ │ │ │ Fp(y[i])47 b(=)g(c)30 b Fq(for)g Fp(0)48 b(<=)f(i)h(<)f(n)p │ │ │ │ │ Fq(.)111 3225 y(6.)f Fp(void)h(CVfprintf)e(\()j(FILE)e(*fp,)h(int)g(n,) │ │ │ │ │ g(char)g(y[])g(\))g(;)227 3381 y Fq(This)36 b(metho)s(d)f(prin)m(ts)h │ │ │ │ │ Fp(n)g Fq(en)m(tries)h(in)e Fp(y[])h Fq(to)h(\014le)f │ │ │ │ │ Fp(fp)p Fq(.)57 b(The)36 b(format)g(is)g(new)g(line)h(follo)m(w)m(ed)g │ │ │ │ │ (b)m(y)f(lines)h(of)227 3494 y(eigh)m(t)m(y)32 b(columns)f(of)f(single) │ │ │ │ │ h(c)m(haracters.)111 3692 y(7.)46 b Fp(int)h(CVfp80)f(\()i(FILE)e(*fp,) │ │ │ │ │ @@ -5678,17 +5683,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 1011 4 v 1192 100 a Fp(Utilities)28 │ │ │ │ │ -b Fl(:)41 b Fk(DRAFT)121 b Fl(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2842 100 V 1011 w Fq(3)111 399 y(2.)46 b Fp(double)g(*)i(DVinit2)e(\()h │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 992 4 v 1173 100 a Fp(Utilities)28 │ │ │ │ │ +b Fl(:)41 b Fk(DRAFT)121 b Fl(F)-8 b(ebruary)30 b(18,)h(2025)p │ │ │ │ │ +2861 100 V 992 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 │ │ │ │ │ @@ -5740,22 +5745,22 @@ │ │ │ │ │ (alpha[3])d(*)j(x1[])227 4945 y(y2[])f(=)g(y2[])g(+)g(alpha[4])f(*)h │ │ │ │ │ (x0[])g(+)h(alpha[5])d(*)j(x1[])66 5148 y Fq(11.)e Fp(void)h(DVaxpy31)e │ │ │ │ │ (\()j(int)f(n,)g(double)f(y0[],)g(double)h(y1[],)f(double)g(y2[],)991 │ │ │ │ │ 5261 y(double)g(alpha,)g(double)g(x0[],)h(double)f(x1[])g(\))i(;)227 │ │ │ │ │ 5407 y Fq(This)30 b(metho)s(d)g(computes)g(this)g(computation.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fq(4)p 136 100 1011 4 v │ │ │ │ │ -1193 w Fp(Utilities)28 b Fl(:)40 b Fk(DRAFT)30 b Fl(Jan)m(uary)g(16,)i │ │ │ │ │ -(2024)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 │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fq(4)p 136 100 992 4 v │ │ │ │ │ +1174 w Fp(Utilities)27 b Fl(:)41 b Fk(DRAFT)30 b Fl(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)i(2025)p 2909 100 V 227 399 a Fp(y0[])47 │ │ │ │ │ +b(=)g(y0[])g(+)g(alpha[0])f(*)h(x0[])227 511 y(y1[])g(=)g(y1[])g(+)g │ │ │ │ │ +(alpha[1])f(*)h(x0[])227 624 y(y2[])g(=)g(y2[])g(+)g(alpha[2])f(*)h │ │ │ │ │ +(x0[])66 850 y Fq(12.)f Fp(void)h(DVaxpy23)e(\()j(int)f(n,)g(double)f │ │ │ │ │ +(y0[],)g(double)h(y1[],)991 963 y(double)f(alpha,)g(double)g(x0[],)h │ │ │ │ │ +(double)f(x1[],)g(double)g(x2[])h(\))g(;)227 1114 y Fq(This)30 │ │ │ │ │ b(metho)s(d)g(computes)g(this)g(computation.)227 1340 │ │ │ │ │ y Fp(y0[])47 b(=)g(y0[])g(+)g(alpha[0])f(*)h(x0[])g(+)h(alpha[1])d(*)j │ │ │ │ │ (x1[])e(+)i(alpha[2])d(*)j(x2[])227 1453 y(y1[])f(=)g(y1[])g(+)g │ │ │ │ │ (alpha[3])f(*)h(x0[])g(+)h(alpha[4])d(*)j(x1[])e(+)i(alpha[5])d(*)j │ │ │ │ │ (x2[])66 1679 y Fq(13.)e Fp(void)h(DVaxpy22)e(\()j(int)f(n,)g(double)f │ │ │ │ │ (y0[],)g(double)h(y1[],)991 1792 y(double)f(alpha,)g(double)g(x0[],)h │ │ │ │ │ (double)f(x1[])g(\))i(;)227 1942 y Fq(This)30 b(metho)s(d)g(computes)g │ │ │ │ │ @@ -5784,17 +5789,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 1011 4 v 1192 100 a Fp(Utilities)28 │ │ │ │ │ -b Fl(:)41 b Fk(DRAFT)121 b Fl(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2842 100 V 1011 w Fq(5)66 399 y(19.)46 b Fp(void)h(DVcompress)e(\()i │ │ │ │ │ +TeXDict begin 5 4 bop 91 100 992 4 v 1173 100 a Fp(Utilities)28 │ │ │ │ │ +b Fl(:)41 b Fk(DRAFT)121 b Fl(F)-8 b(ebruary)30 b(18,)h(2025)p │ │ │ │ │ +2861 100 V 992 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 │ │ │ │ │ @@ -5884,20 +5889,21 @@ │ │ │ │ │ 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 1011 4 v │ │ │ │ │ -1193 w Fp(Utilities)28 b Fl(:)40 b Fk(DRAFT)30 b Fl(Jan)m(uary)g(16,)i │ │ │ │ │ -(2024)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 │ │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fq(6)p 136 100 992 4 v │ │ │ │ │ +1174 w Fp(Utilities)27 b Fl(:)41 b Fk(DRAFT)30 b Fl(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)i(2025)p 2909 100 V 66 399 a Fq(25.)46 │ │ │ │ │ +b Fp(int)h(DVdot23)f(\()h(int)g(n,)h(double)e(row0[],)f(double)i │ │ │ │ │ +(row1[],)895 511 y(double)g(col0[],)e(double)h(col1[],)g(double)g │ │ │ │ │ +(col2[],)g(double)g(sums[])g(\))i(;)227 667 y Fq(This)30 │ │ │ │ │ +b(metho)s(d)g(computes)g(six)h(dot)f(pro)s(ducts.)277 │ │ │ │ │ 891 y Fp(sums)p Fq([)p Fp(0)p Fq(])24 b(=)687 786 y Fe(n)p │ │ │ │ │ Fd(\000)p Fe(1)690 810 y Ff(X)687 989 y Fe(i)p Fc(=)p │ │ │ │ │ Fe(0)828 891 y Fp(row0)p Fq([)p Fp(i)p Fq(])19 b Fg(\003)i │ │ │ │ │ Fp(col0)p Fq([)p Fp(i)p Fq(])99 b Fp(sums)p Fq([)p Fp(1)p │ │ │ │ │ Fq(])24 b(=)2002 786 y Fe(n)p Fd(\000)p Fe(1)2005 810 │ │ │ │ │ y Ff(X)2002 989 y Fe(i)p Fc(=)p Fe(0)2143 891 y Fp(row0)p │ │ │ │ │ Fq([)p Fp(i)p Fq(])19 b Fg(\003)i Fp(col1)p Fq([)p Fp(i)p │ │ │ │ │ @@ -5974,17 +5980,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 1011 4 v 1192 100 a Fp(Utilities)28 │ │ │ │ │ -b Fl(:)41 b Fk(DRAFT)121 b Fl(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2842 100 V 1011 w Fq(7)66 399 y(31.)46 b Fp(int)h(DVdoti)f(\()i(int)f │ │ │ │ │ +TeXDict begin 7 6 bop 91 100 992 4 v 1173 100 a Fp(Utilities)28 │ │ │ │ │ +b Fl(:)41 b Fk(DRAFT)121 b Fl(F)-8 b(ebruary)30 b(18,)h(2025)p │ │ │ │ │ +2861 100 V 992 w Fq(7)66 399 y(31.)46 b Fp(int)h(DVdoti)f(\()i(int)f │ │ │ │ │ (n,)g(double)f(y[],)h(int)f(index[],)g(double)g(x[])h(\))g(;)227 │ │ │ │ │ 616 y Fq(This)30 b(metho)s(d)g(returns)f(the)h(indexed)g(dot)h(pro)s │ │ │ │ │ (duct)2075 510 y Fe(n)p Fd(\000)p Fe(1)2078 535 y Ff(X)2075 │ │ │ │ │ 714 y Fe(i)p Fc(=)p Fe(0)2216 616 y Fp(y)p Fq([)p Fp(index)p │ │ │ │ │ Fq([)p Fp(i)p Fq(]])19 b Fg(\003)i Fp(x)p Fq([)p Fp(i)p │ │ │ │ │ Fq(].)66 862 y(32.)46 b Fp(void)h(DVfill)f(\()h(int)g(n,)h(double)e │ │ │ │ │ (y[],)g(double)g(val)h(\))h(;)227 1009 y Fq(This)30 b(metho)s(d)g │ │ │ │ │ @@ -6038,21 +6044,21 @@ │ │ │ │ │ Fq(,)34 b Fp(start)227 5079 y(+)48 b(3*inc)p Fq(,)29 │ │ │ │ │ b(etc.)66 5260 y(43.)46 b Fp(void)h(DVscale)f(\()h(int)g(n,)g(double)f │ │ │ │ │ (y[],)h(double)f(alpha)g(\))i(;)227 5407 y Fq(This)30 │ │ │ │ │ b(metho)s(d)g(scales)h(a)g(v)m(ector)h Fp(y[])d Fq(b)m(y)i │ │ │ │ │ Fp(alpha)p Fq(,)e(i.e.,)j Fp(y[i])46 b(*=)h(alpha)p Fq(.)40 │ │ │ │ │ b(for)30 b Fp(0)47 b(<=)g(i)h(<)f(n)p Fq(.)p eop end │ │ │ │ │ %%Page: 8 8 │ │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fq(8)p 136 100 1011 4 v │ │ │ │ │ -1193 w Fp(Utilities)28 b Fl(:)40 b Fk(DRAFT)30 b Fl(Jan)m(uary)g(16,)i │ │ │ │ │ -(2024)p 2890 100 V 66 399 a Fq(44.)46 b Fp(void)h(DVscale2)e(\()j(int)f │ │ │ │ │ -(n,)g(double)f(x[],)h(double)f(y[],)991 511 y(double)g(a,)h(double)f │ │ │ │ │ -(b,)h(double)g(c,)g(double)f(d)h(\))h(;)227 668 y Fq(This)30 │ │ │ │ │ -b(metho)s(d)g(scales)h(t)m(w)m(o)h(v)m(ectors)g Fp(y[])d │ │ │ │ │ -Fq(b)m(y)h(a)h(2)21 b Fg(\002)f Fq(2)31 b(matrix,)g(i.e.,)881 │ │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fq(8)p 136 100 992 4 v │ │ │ │ │ +1174 w Fp(Utilities)27 b Fl(:)41 b Fk(DRAFT)30 b Fl(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)i(2025)p 2909 100 V 66 399 a Fq(44.)46 │ │ │ │ │ +b Fp(void)h(DVscale2)e(\()j(int)f(n,)g(double)f(x[],)h(double)f(y[],) │ │ │ │ │ +991 511 y(double)g(a,)h(double)f(b,)h(double)g(c,)g(double)f(d)h(\))h │ │ │ │ │ +(;)227 668 y Fq(This)30 b(metho)s(d)g(scales)h(t)m(w)m(o)h(v)m(ectors)g │ │ │ │ │ +Fp(y[])d Fq(b)m(y)h(a)h(2)21 b Fg(\002)f Fq(2)31 b(matrix,)g(i.e.,)881 │ │ │ │ │ 800 y Ff(")971 887 y Fp(x)p Fq([)p Fp(0)p Fq(])83 b Fb(:)15 │ │ │ │ │ b(:)g(:)84 b Fp(x)p Fq([)p Fp(n)20 b Fg(\000)g Fp(1)p │ │ │ │ │ Fq(])971 1000 y Fp(y)p Fq([)p Fp(0)p Fq(])83 b Fb(:)15 │ │ │ │ │ b(:)g(:)84 b Fp(y)p Fq([)p Fp(n)20 b Fg(\000)g Fp(1)p │ │ │ │ │ Fq(])1735 800 y Ff(#)1809 944 y Fq(:=)1930 800 y Ff(")2020 │ │ │ │ │ 887 y Fp(a)83 b(b)2020 1000 y(c)g(d)2240 800 y Ff(#)15 │ │ │ │ │ b(")2393 887 y Fp(x)p Fq([)p Fp(0)p Fq(])83 b Fb(:)15 │ │ │ │ │ @@ -6114,17 +6120,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 1011 4 v 1192 100 a Fp(Utilities)28 │ │ │ │ │ -b Fl(:)41 b Fk(DRAFT)121 b Fl(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2842 100 V 1011 w Fq(9)0 399 y Fi(1.2.3)112 b Fh(ZV)38 │ │ │ │ │ +TeXDict begin 9 8 bop 91 100 992 4 v 1173 100 a Fp(Utilities)28 │ │ │ │ │ +b Fl(:)41 b Fk(DRAFT)121 b Fl(F)-8 b(ebruary)30 b(18,)h(2025)p │ │ │ │ │ +2861 100 V 992 w Fq(9)0 399 y Fi(1.2.3)112 b Fh(ZV)38 │ │ │ │ │ b Fi(:)g Fh(double)53 b(complex)90 b Fi(v)m(ector)37 │ │ │ │ │ b(metho)s(ds)0 605 y Fq(A)22 b(double)g(precision)g(complex)g(v)m │ │ │ │ │ (ector)i(of)e(length)g Fp(n)g Fq(is)g(simply)f(a)i(double)e(precision)h │ │ │ │ │ (v)m(ector)i(of)e(length)g Fp(2n)p Fq(.)37 b(There)0 │ │ │ │ │ 718 y(is)28 b(a)h(separate)g Fp(ZVinit\(\))d Fq(allo)s(cator)31 │ │ │ │ │ b(and)c(initializer)j(metho)s(d,)f(since)f(it)h(requires)f(a)h(real)g │ │ │ │ │ (and)e(imaginary)i(part)0 831 y(to)g(\014ll)g(the)g(v)m(ector.)42 │ │ │ │ │ @@ -6191,38 +6197,39 @@ │ │ │ │ │ 5294 y Fq(This)33 b(metho)s(d)h(adds)f(a)h(scaled)g(m)m(ultiple)h(of)f │ │ │ │ │ (t)m(w)m(o)h(v)m(ectors)g Fp(x[])e Fq(and)h Fp(y[])f │ │ │ │ │ Fq(to)h(another)g(v)m(ector)i Fp(z[])p Fq(,)e(i.e.,)227 │ │ │ │ │ 5407 y(i.e.,)e Fp(z[i])47 b(+=)g(\(areal,aimag\))d(*)j(x[i])g(+)h │ │ │ │ │ (\(breal,bimag\))c(*)j(y[i])29 b Fq(for)h Fp(0)48 b(<=)f(i)h(<)f(n)p │ │ │ │ │ Fq(.)p eop end │ │ │ │ │ %%Page: 10 10 │ │ │ │ │ -TeXDict begin 10 9 bop 0 100 a Fq(10)p 182 100 988 4 │ │ │ │ │ -v 1170 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(Jan)m(uary)g(16,) │ │ │ │ │ -i(2024)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 │ │ │ │ │ -(alpha[16:17])e(*)i(x2[])111 1326 y Fq(9.)f Fp(void)h(ZVaxpy32)e(\()j │ │ │ │ │ -(int)f(n,)g(double)f(y0[],)g(double)h(y1[],)f(double)g(y2[],)991 │ │ │ │ │ -1439 y(double)g(alpha[],)g(double)g(x0[],)g(double)g(x1[])h(\))g(;)227 │ │ │ │ │ -1589 y Fq(This)30 b(metho)s(d)g(computes)g(the)h(follo)m(wing.)227 │ │ │ │ │ -1809 y Fp(y0[])47 b(=)g(y0[])g(+)g(alpha[0:1])e(*)j(x0[])f(+)g │ │ │ │ │ -(alpha[2:3])e(*)i(x1[])227 1921 y(y1[])g(=)g(y1[])g(+)g(alpha[4:5])e(*) │ │ │ │ │ -j(x0[])f(+)g(alpha[6:7])e(*)i(x1[])227 2034 y(y2[])g(=)g(y2[])g(+)g │ │ │ │ │ -(alpha[8:9])e(*)j(x0[])f(+)g(alpha[10:11])d(*)k(x1[])66 │ │ │ │ │ -2254 y Fq(10.)e Fp(void)h(ZVaxpy31)e(\()j(int)f(n,)g(double)f(y0[],)g │ │ │ │ │ -(double)h(y1[],)f(double)g(y2[],)991 2367 y(double)g(alpha[],)g(double) │ │ │ │ │ -g(x0[])g(\))i(;)227 2517 y Fq(This)30 b(metho)s(d)g(computes)g(the)h │ │ │ │ │ -(follo)m(wing.)227 2736 y Fp(y0[])47 b(=)g(y0[])g(+)g(alpha[0:1])e(*)j │ │ │ │ │ -(x0[])227 2849 y(y1[])f(=)g(y1[])g(+)g(alpha[2:3])e(*)j(x0[])227 │ │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fq(10)p 182 100 969 4 │ │ │ │ │ +v 1151 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)i(2025)p 2931 100 V 111 399 a Fq(8.)46 │ │ │ │ │ +b Fp(void)h(ZVaxpy33)e(\()j(int)f(n,)g(double)f(y0[],)g(double)h(y1[],) │ │ │ │ │ +f(double)g(y2[],)991 511 y(double)g(alpha[],)g(double)g(x0[],)g(double) │ │ │ │ │ +g(x1[],)g(double)h(x2[])f(\))i(;)227 661 y Fq(This)30 │ │ │ │ │ +b(metho)s(d)g(computes)g(the)h(follo)m(wing.)227 881 │ │ │ │ │ +y Fp(y0[])47 b(=)g(y0[])g(+)g(alpha[0:1])e(*)j(x0[])f(+)g(alpha[2:3])e │ │ │ │ │ +(*)i(x1[])g(+)h(alpha[4:5])d(*)i(x2[])227 994 y(y1[])g(=)g(y1[])g(+)g │ │ │ │ │ +(alpha[6:7])e(*)j(x0[])f(+)g(alpha[8:9])e(*)i(x1[])g(+)h(alpha[10:11])c │ │ │ │ │ +(*)j(x2[])227 1107 y(y2[])g(=)g(y2[])g(+)g(alpha[12:13])e(*)i(x0[])g(+) │ │ │ │ │ +g(alpha[14:15])e(*)i(x1[])g(+)g(alpha[16:17])e(*)i(x2[])111 │ │ │ │ │ +1326 y Fq(9.)f Fp(void)h(ZVaxpy32)e(\()j(int)f(n,)g(double)f(y0[],)g │ │ │ │ │ +(double)h(y1[],)f(double)g(y2[],)991 1439 y(double)g(alpha[],)g(double) │ │ │ │ │ +g(x0[],)g(double)g(x1[])h(\))g(;)227 1589 y Fq(This)30 │ │ │ │ │ +b(metho)s(d)g(computes)g(the)h(follo)m(wing.)227 1809 │ │ │ │ │ +y Fp(y0[])47 b(=)g(y0[])g(+)g(alpha[0:1])e(*)j(x0[])f(+)g(alpha[2:3])e │ │ │ │ │ +(*)i(x1[])227 1921 y(y1[])g(=)g(y1[])g(+)g(alpha[4:5])e(*)j(x0[])f(+)g │ │ │ │ │ +(alpha[6:7])e(*)i(x1[])227 2034 y(y2[])g(=)g(y2[])g(+)g(alpha[8:9])e(*) │ │ │ │ │ +j(x0[])f(+)g(alpha[10:11])d(*)k(x1[])66 2254 y Fq(10.)e │ │ │ │ │ +Fp(void)h(ZVaxpy31)e(\()j(int)f(n,)g(double)f(y0[],)g(double)h(y1[],)f │ │ │ │ │ +(double)g(y2[],)991 2367 y(double)g(alpha[],)g(double)g(x0[])g(\))i(;) │ │ │ │ │ +227 2517 y Fq(This)30 b(metho)s(d)g(computes)g(the)h(follo)m(wing.)227 │ │ │ │ │ +2736 y Fp(y0[])47 b(=)g(y0[])g(+)g(alpha[0:1])e(*)j(x0[])227 │ │ │ │ │ +2849 y(y1[])f(=)g(y1[])g(+)g(alpha[2:3])e(*)j(x0[])227 │ │ │ │ │ 2962 y(y2[])f(=)g(y2[])g(+)g(alpha[4:5])e(*)j(x0[])66 │ │ │ │ │ 3182 y Fq(11.)e Fp(void)h(ZVaxpy23)e(\()j(int)f(n,)g(double)f(y0[],)g │ │ │ │ │ (double)h(y1[],)991 3295 y(double)f(alpha[],)g(double)g(x0[],)g(double) │ │ │ │ │ g(x1[],)g(double)h(x2[])f(\))i(;)227 3444 y Fq(This)30 │ │ │ │ │ b(metho)s(d)g(computes)g(the)h(follo)m(wing.)227 3664 │ │ │ │ │ y Fp(y0[])47 b(=)g(y0[])g(+)g(alpha[0:1])e(*)j(x0[])f(+)g(alpha[2:3])e │ │ │ │ │ (*)i(x1[])g(+)h(alpha[4:5])d(*)i(x2[])227 3777 y(y1[])g(=)g(y1[])g(+)g │ │ │ │ │ @@ -6237,17 +6244,17 @@ │ │ │ │ │ (int)f(n,)g(double)f(y0[],)g(double)h(y1[],)991 4925 │ │ │ │ │ y(double)f(alpha[],)g(double)g(x0[])g(\))i(;)227 5074 │ │ │ │ │ y Fq(This)30 b(metho)s(d)g(computes)g(the)h(follo)m(wing.)227 │ │ │ │ │ 5294 y Fp(y0[])47 b(=)g(y0[])g(+)g(alpha[0:1])e(*)j(x0[])227 │ │ │ │ │ 5407 y(y1[])f(=)g(y1[])g(+)g(alpha[2:3])e(*)j(x0[])p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 11 11 │ │ │ │ │ -TeXDict begin 11 10 bop 91 100 988 4 v 1169 100 a Fp(Utilities)28 │ │ │ │ │ -b Fl(:)41 b Fk(DRAFT)121 b Fl(Jan)m(uary)30 b(16,)i(2024)p │ │ │ │ │ -2820 100 V 988 w Fq(11)66 399 y(14.)46 b Fp(void)h(ZVaxpy13)e(\()j(int) │ │ │ │ │ +TeXDict begin 11 10 bop 91 100 969 4 v 1150 100 a Fp(Utilities)28 │ │ │ │ │ +b Fl(:)41 b Fk(DRAFT)121 b Fl(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2839 100 V 969 w Fq(11)66 399 y(14.)46 b Fp(void)h(ZVaxpy13)e(\()j(int) │ │ │ │ │ f(n,)g(double)f(y0[],)991 511 y(double)g(alpha[],)g(double)g(x0[],)g │ │ │ │ │ (double)g(x1[],)g(double)h(x2[])f(\))i(;)227 667 y Fq(This)30 │ │ │ │ │ b(metho)s(d)g(computes)g(the)h(follo)m(wing.)227 907 │ │ │ │ │ y Fp(y0[])47 b(=)g(y0[])g(+)g(alpha[0:1])e(*)j(x0[])f(+)g(alpha[2:3])e │ │ │ │ │ (*)i(x1[])g(+)h(alpha[4:5])d(*)i(x2[])66 1146 y Fq(15.)f │ │ │ │ │ Fp(void)h(ZVaxpy12)e(\()j(int)f(n,)g(double)f(y0[],)g(double)h │ │ │ │ │ (alpha[],)e(double)h(x0[],)h(double)f(x1[])g(\))i(;)227 │ │ │ │ │ @@ -6294,36 +6301,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 988 4 │ │ │ │ │ -v 1170 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(Jan)m(uary)g(16,) │ │ │ │ │ -i(2024)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 │ │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fq(12)p 182 100 969 4 │ │ │ │ │ +v 1151 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)i(2025)p 2931 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 │ │ │ │ │ @@ -6405,17 +6412,17 @@ │ │ │ │ │ Fq(])19 b Fg(\003)i Fp(col1)p Fq([)p Fp(i)p Fq(])98 b │ │ │ │ │ Fp(sums)p Fq([)p Fp(10)24 b Fq(:)i Fp(11)p Fq(])f(=)2345 │ │ │ │ │ 5241 y Fe(n)p Fd(\000)p Fe(1)2347 5266 y Ff(X)2345 5445 │ │ │ │ │ y Fe(i)p Fc(=)p Fe(0)2485 5346 y Fp(row1)p Fq([)p Fp(i)p │ │ │ │ │ Fq(])20 b Fg(\003)g Fp(col2)p Fq([)p Fp(i)p Fq(])p eop │ │ │ │ │ end │ │ │ │ │ %%Page: 13 13 │ │ │ │ │ -TeXDict begin 13 12 bop 91 100 988 4 v 1169 100 a Fp(Utilities)28 │ │ │ │ │ -b Fl(:)41 b Fk(DRAFT)121 b Fl(Jan)m(uary)30 b(16,)i(2024)p │ │ │ │ │ -2820 100 V 988 w Fq(13)66 399 y(26.)46 b Fp(int)h(ZVdotU22)f(\()h(int)g │ │ │ │ │ +TeXDict begin 13 12 bop 91 100 969 4 v 1150 100 a Fp(Utilities)28 │ │ │ │ │ +b Fl(:)41 b Fk(DRAFT)121 b Fl(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2839 100 V 969 w Fq(13)66 399 y(26.)46 b Fp(int)h(ZVdotU22)f(\()h(int)g │ │ │ │ │ (n,)g(double)f(row0[],)g(double)g(row1[],)895 511 y(double)h(col0[],)e │ │ │ │ │ (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 │ │ │ │ │ @@ -6478,30 +6485,30 @@ │ │ │ │ │ Fq(])19 b Fg(\003)i Fp(col0)p Fq([)p Fp(i)p Fq(])66 5125 │ │ │ │ │ y(31.)46 b Fp(int)h(ZVdotC33)f(\()h(int)g(n,)g(double)f(row0[],)g │ │ │ │ │ (double)g(row1[],)g(double)g(row2[],)895 5238 y(double)h(col0[],)e │ │ │ │ │ (double)h(col1[],)g(double)g(col2[],)g(double)g(sums[])g(\))i(;)227 │ │ │ │ │ 5407 y Fq(This)30 b(metho)s(d)g(computes)g(nine)g(dot)h(pro)s(ducts.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 14 14 │ │ │ │ │ -TeXDict begin 14 13 bop 0 100 a Fq(14)p 182 100 988 4 │ │ │ │ │ -v 1170 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(Jan)m(uary)g(16,) │ │ │ │ │ -i(2024)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 │ │ │ │ │ +TeXDict begin 14 13 bop 0 100 a Fq(14)p 182 100 969 4 │ │ │ │ │ +v 1151 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)i(2025)p 2931 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 │ │ │ │ │ @@ -6594,17 +6601,17 @@ │ │ │ │ │ b Fg(\003)i Fp(col1)p Fq([)p Fp(i)p Fq(])98 b Fp(sums)p │ │ │ │ │ Fq([)p Fp(10)24 b Fq(:)i Fp(11)p Fq(])f(=)2345 5241 y │ │ │ │ │ Fe(n)p Fd(\000)p Fe(1)2347 5266 y Ff(X)2345 5445 y Fe(i)p │ │ │ │ │ Fc(=)p Fe(0)p 2485 5268 V 2485 5346 a Fp(row1)p Fq([)p │ │ │ │ │ Fp(i)p Fq(])20 b Fg(\003)g Fp(col2)p Fq([)p Fp(i)p Fq(])p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 15 15 │ │ │ │ │ -TeXDict begin 15 14 bop 91 100 988 4 v 1169 100 a Fp(Utilities)28 │ │ │ │ │ -b Fl(:)41 b Fk(DRAFT)121 b Fl(Jan)m(uary)30 b(16,)i(2024)p │ │ │ │ │ -2820 100 V 988 w Fq(15)66 399 y(35.)46 b Fp(int)h(ZVdotC22)f(\()h(int)g │ │ │ │ │ +TeXDict begin 15 14 bop 91 100 969 4 v 1150 100 a Fp(Utilities)28 │ │ │ │ │ +b Fl(:)41 b Fk(DRAFT)121 b Fl(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2839 100 V 969 w Fq(15)66 399 y(35.)46 b Fp(int)h(ZVdotC22)f(\()h(int)g │ │ │ │ │ (n,)g(double)f(row0[],)g(double)g(row1[],)895 511 y(double)h(col0[],)e │ │ │ │ │ (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 │ │ │ │ │ @@ -6672,40 +6679,40 @@ │ │ │ │ │ (y[],)h(double)f(x[],)g(int)h(index[])f(\))i(;)227 5047 │ │ │ │ │ y(y[i])f(=)g(x[index[i]])28 b Fq(for)i Fp(0)47 b(<=)g(i)h(<)f(n)p │ │ │ │ │ Fq(.)66 5249 y(41.)f Fp(double)g(ZVmaxabs)g(\()h(int)g(n,)g(double)g │ │ │ │ │ (y[])f(\))i(;)227 5407 y Fq(This)30 b(metho)s(d)g(returns)f(the)h │ │ │ │ │ (maxim)m(um)h(magnitude)f(of)h(en)m(tries)g(in)f Fp(y[0:n-1])p │ │ │ │ │ Fq(.)p eop end │ │ │ │ │ %%Page: 16 16 │ │ │ │ │ -TeXDict begin 16 15 bop 0 100 a Fq(16)p 182 100 988 4 │ │ │ │ │ -v 1170 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(Jan)m(uary)g(16,) │ │ │ │ │ -i(2024)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 │ │ │ │ │ +TeXDict begin 16 15 bop 0 100 a Fq(16)p 182 100 969 4 │ │ │ │ │ +v 1151 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)i(2025)p 2931 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 │ │ │ │ │ @@ -6739,17 +6746,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 988 4 v 1169 100 a Fp(Utilities)28 │ │ │ │ │ -b Fl(:)41 b Fk(DRAFT)121 b Fl(Jan)m(uary)30 b(16,)i(2024)p │ │ │ │ │ -2820 100 V 988 w Fq(17)111 399 y(5.)46 b Fp(int)h(IVfp80)f(\()i(FILE)e │ │ │ │ │ +TeXDict begin 17 16 bop 91 100 969 4 v 1150 100 a Fp(Utilities)28 │ │ │ │ │ +b Fl(:)41 b Fk(DRAFT)121 b Fl(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2839 100 V 969 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 │ │ │ │ │ @@ -6813,21 +6820,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 988 4 │ │ │ │ │ -v 1170 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(Jan)m(uary)g(16,) │ │ │ │ │ -i(2024)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 │ │ │ │ │ +TeXDict begin 18 17 bop 0 100 a Fq(18)p 182 100 969 4 │ │ │ │ │ +v 1151 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)i(2025)p 2931 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 │ │ │ │ │ @@ -6879,17 +6886,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 988 4 v 1169 100 a Fp(Utilities)28 │ │ │ │ │ -b Fl(:)41 b Fk(DRAFT)121 b Fl(Jan)m(uary)30 b(16,)i(2024)p │ │ │ │ │ -2820 100 V 988 w Fq(19)111 399 y(2.)46 b Fp(float)h(*)g(FVinit2)f(\()h │ │ │ │ │ +TeXDict begin 19 18 bop 91 100 969 4 v 1150 100 a Fp(Utilities)28 │ │ │ │ │ +b Fl(:)41 b Fk(DRAFT)121 b Fl(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2839 100 V 969 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 │ │ │ │ │ @@ -6949,29 +6956,29 @@ │ │ │ │ │ g(index[])f(\))h(;)227 5068 y(y[i])g(=)g(x[index[i]])28 │ │ │ │ │ b Fq(for)i Fp(0)47 b(<=)g(i)h(<)f(n)p Fq(.)66 5257 y(14.)f │ │ │ │ │ Fp(void)h(FVgatherAddZero)d(\()j(int)g(n,)g(float)f(y[],)h(float)f │ │ │ │ │ (x[],)h(int)g(index[])f(\))h(;)227 5407 y(y[i])g(+=)g(x[index[i]])27 │ │ │ │ │ b Fq(and)j Fp(x[index[i]])45 b(=)i(0)30 b Fq(for)g Fp(0)48 │ │ │ │ │ b(<=)f(i)h(<)f(n)p Fq(.)p eop end │ │ │ │ │ %%Page: 20 20 │ │ │ │ │ -TeXDict begin 20 19 bop 0 100 a Fq(20)p 182 100 988 4 │ │ │ │ │ -v 1170 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(Jan)m(uary)g(16,) │ │ │ │ │ -i(2024)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 │ │ │ │ │ +TeXDict begin 20 19 bop 0 100 a Fq(20)p 182 100 969 4 │ │ │ │ │ +v 1151 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)i(2025)p 2931 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 │ │ │ │ │ @@ -7014,17 +7021,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 988 4 v 1169 100 a Fp(Utilities)28 │ │ │ │ │ -b Fl(:)41 b Fk(DRAFT)121 b Fl(Jan)m(uary)30 b(16,)i(2024)p │ │ │ │ │ -2820 100 V 988 w Fq(21)66 399 y(27.)46 b Fp(void)h(FVsub)f(\()i(int)f │ │ │ │ │ +TeXDict begin 21 20 bop 91 100 969 4 v 1150 100 a Fp(Utilities)28 │ │ │ │ │ +b Fl(:)41 b Fk(DRAFT)121 b Fl(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2839 100 V 969 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 │ │ │ │ │ @@ -7087,25 +7094,26 @@ │ │ │ │ │ Fq(is)f(found)f(and)h(eac)m(h)h(en)m(try)g(is)f(\014lled)h(with)f │ │ │ │ │ Fp(NULL)p Fq(.)f(A)i(p)s(oin)m(ter)f(to)h(the)g(arra)m(y)g(is)f │ │ │ │ │ (returned.)111 5259 y(2.)46 b Fp(void)h(PDVfree)f(\()h(double)f │ │ │ │ │ (**p_vec)g(\))i(;)227 5407 y Fq(This)30 b(metho)s(d)g(releases)h(the)g │ │ │ │ │ (storage)h(tak)m(en)f(b)m(y)f Fp(p)p 1993 5407 V 34 w(vec[])p │ │ │ │ │ Fq(.)p eop end │ │ │ │ │ %%Page: 22 22 │ │ │ │ │ -TeXDict begin 22 21 bop 0 100 a Fq(22)p 182 100 988 4 │ │ │ │ │ -v 1170 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(Jan)m(uary)g(16,) │ │ │ │ │ -i(2024)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 │ │ │ │ │ +TeXDict begin 22 21 bop 0 100 a Fq(22)p 182 100 969 4 │ │ │ │ │ +v 1151 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)i(2025)p 2931 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 │ │ │ │ │ @@ -7155,17 +7163,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 988 4 v 1169 100 a Fp(Utilities)28 │ │ │ │ │ -b Fl(:)41 b Fk(DRAFT)121 b Fl(Jan)m(uary)30 b(16,)i(2024)p │ │ │ │ │ -2820 100 V 988 w Fq(23)0 399 y Fi(1.2.9)112 b(Sorting)38 │ │ │ │ │ +TeXDict begin 23 22 bop 91 100 969 4 v 1150 100 a Fp(Utilities)28 │ │ │ │ │ +b Fl(:)41 b Fk(DRAFT)121 b Fl(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2839 100 V 969 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 │ │ │ │ │ @@ -7215,35 +7223,36 @@ │ │ │ │ │ b(metho)s(ds)g(sort)g(the)h(arra)m(y)f Fp(ivec1[])e Fq(in)m(to)k │ │ │ │ │ (ascending)e(or)g(descending)g(order)g(using)g(an)g(insertion)227 │ │ │ │ │ 5294 y(sort)43 b(and)e(p)s(erm)m(utes)h(the)g(companion)h(arra)m(ys)f │ │ │ │ │ Fp(ivec2[])e Fq(and)i Fp(dvec[])f Fq(in)g(the)i(same)f(fashion.)76 │ │ │ │ │ b(The)227 5407 y Fp(dvec[])29 b Fq(arra)m(y)i(is)f(double)g(precision)h │ │ │ │ │ (complex.)p eop end │ │ │ │ │ %%Page: 24 24 │ │ │ │ │ -TeXDict begin 24 23 bop 0 100 a Fq(24)p 182 100 988 4 │ │ │ │ │ -v 1170 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(Jan)m(uary)g(16,) │ │ │ │ │ -i(2024)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 │ │ │ │ │ +TeXDict begin 24 23 bop 0 100 a Fq(24)p 182 100 969 4 │ │ │ │ │ +v 1151 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)i(2025)p 2931 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 │ │ │ │ │ @@ -7281,17 +7290,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 988 4 v 1169 100 a Fp(Utilities)28 │ │ │ │ │ -b Fl(:)41 b Fk(DRAFT)121 b Fl(Jan)m(uary)30 b(16,)i(2024)p │ │ │ │ │ -2820 100 V 988 w Fq(25)111 399 y(7.)46 b Fp(void)h(DVqsortUp)e(\()j │ │ │ │ │ +TeXDict begin 25 24 bop 91 100 969 4 v 1150 100 a Fp(Utilities)28 │ │ │ │ │ +b Fl(:)41 b Fk(DRAFT)121 b Fl(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2839 100 V 969 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 │ │ │ │ │ @@ -7357,43 +7366,44 @@ │ │ │ │ │ (stored)g(in)g(the)g(leading)h(lo)s(cations)g(of)f(the)g(v)m(ectors)h │ │ │ │ │ Fp(ivec1[])d Fq(and)i Fp(ivec2[])p Fq(.)227 5294 y Fk(Err)-5 │ │ │ │ │ b(or)37 b(che)-5 b(cking:)45 b Fq(If)33 b Fp(n)47 b(<)h(0)p │ │ │ │ │ Fq(,)33 b(or)g(if)g Fp(ivec1)f Fq(or)h Fp(ivec2)e Fq(is)i │ │ │ │ │ Fp(NULL)p Fq(,)f(an)h(error)g(message)h(is)f(prin)m(ted)f(and)h(the)227 │ │ │ │ │ 5407 y(program)d(exits.)p eop end │ │ │ │ │ %%Page: 26 26 │ │ │ │ │ -TeXDict begin 26 25 bop 0 100 a Fq(26)p 182 100 988 4 │ │ │ │ │ -v 1170 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(Jan)m(uary)g(16,) │ │ │ │ │ -i(2024)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 │ │ │ │ │ +TeXDict begin 26 25 bop 0 100 a Fq(26)p 182 100 969 4 │ │ │ │ │ +v 1151 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)i(2025)p 2931 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(;) │ │ │ │ │ @@ -7428,17 +7438,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 988 4 v 1169 100 a Fp(Utilities)28 │ │ │ │ │ -b Fl(:)41 b Fk(DRAFT)121 b Fl(Jan)m(uary)30 b(16,)i(2024)p │ │ │ │ │ -2820 100 V 988 w Fq(27)111 399 y(5.)46 b Fp(IP)h(*)h(IP_mergeUp)d(\()i │ │ │ │ │ +TeXDict begin 27 26 bop 91 100 969 4 v 1150 100 a Fp(Utilities)28 │ │ │ │ │ +b Fl(:)41 b Fk(DRAFT)121 b Fl(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2839 100 V 969 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 │ │ │ │ │ @@ -7496,23 +7506,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 988 4 │ │ │ │ │ -v 1170 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(Jan)m(uary)g(16,) │ │ │ │ │ -i(2024)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 │ │ │ │ │ +TeXDict begin 28 27 bop 0 100 a Fq(28)p 182 100 969 4 │ │ │ │ │ +v 1151 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)i(2025)p 2931 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 │ │ │ │ │ @@ -7556,17 +7566,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 988 4 v 1169 100 a Fp(Utilities)28 │ │ │ │ │ -b Fl(:)41 b Fk(DRAFT)121 b Fl(Jan)m(uary)30 b(16,)i(2024)p │ │ │ │ │ -2820 100 V 988 w Fq(29)337 399 y Fm(\210)45 b Fq(The)33 │ │ │ │ │ +TeXDict begin 29 28 bop 91 100 969 4 v 1150 100 a Fp(Utilities)28 │ │ │ │ │ +b Fl(:)41 b Fk(DRAFT)121 b Fl(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2839 100 V 969 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 │ │ │ │ │ @@ -7631,17 +7641,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 988 4 v 1169 100 a Fp(Utilities)28 │ │ │ │ │ -b Fl(:)41 b Fk(DRAFT)121 b Fl(Jan)m(uary)30 b(16,)i(2024)p │ │ │ │ │ -2820 100 V 988 w Fq(31)0 399 y Fp(FVfprintf\(\))p Fq(,)c(16)0 │ │ │ │ │ +TeXDict begin 31 30 bop 91 100 969 4 v 1150 100 a Fp(Utilities)28 │ │ │ │ │ +b Fl(:)41 b Fk(DRAFT)121 b Fl(F)-8 b(ebruary)30 b(18,)i(2025)p │ │ │ │ │ +2839 100 V 969 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 │ │ │ │ │ @@ -7700,19 +7710,19 @@ │ │ │ │ │ Fq(,)h(15)1992 4724 y Fp(IVscatter\(\))p Fq(,)f(15)1992 │ │ │ │ │ 4838 y Fp(IVshuffle\(\))p Fq(,)g(16)1992 4952 y Fp │ │ │ │ │ (IVsortUpAndCompress\(\))p Fq(,)d(22)1992 5066 y Fp(IVsum\(\))p │ │ │ │ │ Fq(,)k(15)1992 5180 y Fp(IVsumabs\(\))p Fq(,)f(15)1992 │ │ │ │ │ 5293 y Fp(IVswap\(\))p Fq(,)h(15)1992 5407 y Fp(IVzero\(\))p │ │ │ │ │ Fq(,)g(16)p eop end │ │ │ │ │ %%Page: 32 32 │ │ │ │ │ -TeXDict begin 32 31 bop 0 100 a Fq(32)p 182 100 988 4 │ │ │ │ │ -v 1170 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(Jan)m(uary)g(16,) │ │ │ │ │ -i(2024)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 │ │ │ │ │ +TeXDict begin 32 31 bop 0 100 a Fq(32)p 182 100 969 4 │ │ │ │ │ +v 1151 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)i(2025)p 2931 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 16, 2024 │ │ │ │ │ │ + 2 Utilities : DRAFT February 18, 2025 │ │ │ │ │ │ 1.2 Prototypes and descriptions of Utilities methods │ │ │ │ │ │ This section contains brief descriptions including prototypes of all methods that belong to the │ │ │ │ │ │ Utilities directory. │ │ │ │ │ │ 1.2.1 CV : char vector methods │ │ │ │ │ │ 1. char * CVinit ( int n, char c ) ; │ │ │ │ │ │ This is the allocator and initializer method for char vectors. Storage for an array with size │ │ │ │ │ │ n is found and each entry is filled with character c. A pointer to the array is returned. │ │ │ │ │ │ @@ -54,15 +54,15 @@ │ │ │ │ │ │ 8. int CVfscanf ( FILE *fp, int n, char y[] ) ; │ │ │ │ │ │ This method scans in characters from file fp and places them in the array y[]. It tries to │ │ │ │ │ │ read in n characters, and returns the number that were actually read. │ │ │ │ │ │ 1.2.2 DV : double vector methods │ │ │ │ │ │ 1. double * DVinit ( int n, double val ) ; │ │ │ │ │ │ This is the allocator and initializer method for double vectors. Storage for an array with size │ │ │ │ │ │ n is found and each entry is filled with val. A pointer to the array is returned. │ │ │ │ │ │ - Utilities : DRAFT January 16, 2024 3 │ │ │ │ │ │ + Utilities : DRAFT February 18, 2025 3 │ │ │ │ │ │ 2. double * DVinit2 ( int n ) ; │ │ │ │ │ │ This is an allocator method for double vectors. Storage for an array with size n is found. A │ │ │ │ │ │ pointer to the array is returned. Note, on return, there will likely be garbage in the array. │ │ │ │ │ │ 3. void DVfree ( int vec[] ) ; │ │ │ │ │ │ This method releases the storage taken by vec[]. │ │ │ │ │ │ 4. void DVfprintf ( FILE *fp, int n, double y[] ) ; │ │ │ │ │ │ This method prints n entries in y[] to file fp. The format is new line followed by lines of six │ │ │ │ │ │ @@ -90,15 +90,15 @@ │ │ │ │ │ │ This method computes this computation. │ │ │ │ │ │ y0[] = y0[] + alpha[0] * x0[] + alpha[1] * x1[] │ │ │ │ │ │ y1[] = y1[] + alpha[2] * x0[] + alpha[3] * x1[] │ │ │ │ │ │ y2[] = y2[] + alpha[4] * x0[] + alpha[5] * x1[] │ │ │ │ │ │ 11. void DVaxpy31 ( int n, double y0[], double y1[], double y2[], │ │ │ │ │ │ double alpha, double x0[], double x1[] ) ; │ │ │ │ │ │ This method computes this computation. │ │ │ │ │ │ - 4 Utilities : DRAFT January 16, 2024 │ │ │ │ │ │ + 4 Utilities : DRAFT February 18, 2025 │ │ │ │ │ │ y0[] = y0[] + alpha[0] * x0[] │ │ │ │ │ │ y1[] = y1[] + alpha[1] * x0[] │ │ │ │ │ │ y2[] = y2[] + alpha[2] * x0[] │ │ │ │ │ │ 12. void DVaxpy23 ( int n, double y0[], double y1[], │ │ │ │ │ │ double alpha, double x0[], double x1[], double x2[] ) ; │ │ │ │ │ │ This method computes this computation. │ │ │ │ │ │ y0[] = y0[] + alpha[0] * x0[] + alpha[1] * x1[] + alpha[2] * x2[] │ │ │ │ │ │ @@ -121,15 +121,15 @@ │ │ │ │ │ │ y0[] = y0[] + alpha[0] * x0[] + alpha[1] * x1[] │ │ │ │ │ │ 17. void DVaxpy11 ( int n, double y0[], double alpha, double x0[] ) ; │ │ │ │ │ │ This method computes this computation. │ │ │ │ │ │ y0[] = y0[] + alpha[0] * x0[] │ │ │ │ │ │ 18. void DVaxpyi ( int n, double y[], int index[], double alpha, double x[] ) ; │ │ │ │ │ │ This method scatteradds a scaled multiple of n entries from x[] into y[], i.e., y[index[i]] │ │ │ │ │ │ += alpha * x[i] for 0 <= i < n. │ │ │ │ │ │ - Utilities : DRAFT January 16, 2024 5 │ │ │ │ │ │ + Utilities : DRAFT February 18, 2025 5 │ │ │ │ │ │ 19. void DVcompress ( int n1, double x1[], double y1[], │ │ │ │ │ │ int n2, double x2[], double y2[] ) ; │ │ │ │ │ │ Given a pair of arrays x1[n1] and y1[n1], fill x2[n2] and y2[n2] with a subset of the │ │ │ │ │ │ (x1[j],y1[j] entries whose distribution is an approximation. │ │ │ │ │ │ 20. void DVcopy ( int n, double y[], double x[] ) ; │ │ │ │ │ │ This method copies n entries from x[] to y[], i.e., y[i] = x[i] for 0 <= i < n. │ │ │ │ │ │ 21. int DVdot ( int n, double y[], double x[] ) ; │ │ │ │ │ │ @@ -167,15 +167,15 @@ │ │ │ │ │ │ i=0 │ │ │ │ │ │ n−1 │ │ │ │ │ │ sums[1] = Xrow1[i]∗col0[i] │ │ │ │ │ │ i=0 │ │ │ │ │ │ n−1 │ │ │ │ │ │ sums[2] = Xrow2[i]∗col0[i] │ │ │ │ │ │ i=0 │ │ │ │ │ │ - 6 Utilities : DRAFT January 16, 2024 │ │ │ │ │ │ + 6 Utilities : DRAFT February 18, 2025 │ │ │ │ │ │ 25. int DVdot23 ( int n, double row0[], double row1[], │ │ │ │ │ │ double col0[], double col1[], double col2[], double sums[] ) ; │ │ │ │ │ │ This method computes six dot products. │ │ │ │ │ │ n−1 n−1 n−1 │ │ │ │ │ │ sums[0] = Xrow0[i]∗col0[i] sums[1] = Xrow0[i]∗col1[i] sums[2] = Xrow0[i]∗col2[i] │ │ │ │ │ │ i=0 i=0 i=0 │ │ │ │ │ │ n−1 n−1 n−1 │ │ │ │ │ │ @@ -212,15 +212,15 @@ │ │ │ │ │ │ sums[0] = Xrow0[i]∗col0[i] sums[1] = Xrow0[i]∗col1[i] │ │ │ │ │ │ i=0 i=0 │ │ │ │ │ │ 30. int DVdot11 ( int n, double row0[], double col0[], double sums[] ) ; │ │ │ │ │ │ This method computes one dot product. │ │ │ │ │ │ n−1 │ │ │ │ │ │ sums[0] = Xrow0[i]∗col0[i] │ │ │ │ │ │ i=0 │ │ │ │ │ │ - Utilities : DRAFT January 16, 2024 7 │ │ │ │ │ │ + Utilities : DRAFT February 18, 2025 7 │ │ │ │ │ │ 31. int DVdoti ( int n, double y[], int index[], double x[] ) ; │ │ │ │ │ │ n−1 │ │ │ │ │ │ This method returns the indexed dot product Xy[index[i]]∗x[i]. │ │ │ │ │ │ i=0 │ │ │ │ │ │ 32. void DVfill ( int n, double y[], double val ) ; │ │ │ │ │ │ This method fills n entries in y[] with val, i.e., y[i] = val for 0 <= i < n. │ │ │ │ │ │ 33. void DVgather ( int n, double y[], double x[], int index[] ) ; │ │ │ │ │ │ @@ -248,15 +248,15 @@ │ │ │ │ │ │ This method permutes the vector y as follows. i.e., y[i] := y[index[i]]. See DVinvPerm() │ │ │ │ │ │ for a similar function. │ │ │ │ │ │ 42. void DVramp ( int n, double y[], double start, double inc ) ; │ │ │ │ │ │ This method fills n entries in y[] with values start, start + inc, start + 2*inc, start │ │ │ │ │ │ + 3*inc, etc. │ │ │ │ │ │ 43. void DVscale ( int n, double y[], double alpha ) ; │ │ │ │ │ │ This method scales a vector y[] by alpha, i.e., y[i] *= alpha. for 0 <= i < n. │ │ │ │ │ │ - 8 Utilities : DRAFT January 16, 2024 │ │ │ │ │ │ + 8 Utilities : DRAFT February 18, 2025 │ │ │ │ │ │ 44. void DVscale2 ( int n, double x[], double y[], │ │ │ │ │ │ double a, double b, double c, double d ) ; │ │ │ │ │ │ This method scales two vectors y[] by a 2 ×2 matrix, i.e., │ │ │ │ │ │ " x[0] . . . x[n−1] # := " a b #" x[0] ... x[n−1] #. │ │ │ │ │ │ y[0] . . . y[n−1] c d y[0] . . . y[n−1] │ │ │ │ │ │ 45. void DVscatter ( int n, double y[], int index[], double x[] ) ; │ │ │ │ │ │ This method scatters n entries of x[] into y[] as follows, y[index[i]] = x[i] for 0 <= i │ │ │ │ │ │ @@ -284,15 +284,15 @@ │ │ │ │ │ │ This method swaps the x[] and y[] vectors as follows. i.e., y[i] := x[i] and x[i] := │ │ │ │ │ │ y[i] for 0 <= i < n. │ │ │ │ │ │ 53. void DVzero ( int n, double y[] ) ; │ │ │ │ │ │ This method zeroes n entries in y[], i.e., y[i] = 0 for 0 <= i < n. │ │ │ │ │ │ 54. void DVshuffle ( int n, double y[], int seed ) ; │ │ │ │ │ │ This method shuffles the first n entries in y[]. The value seed is the seed to a random number │ │ │ │ │ │ generator, and one can get repeatable behavior by repeating seed. │ │ │ │ │ │ - Utilities : DRAFT January 16, 2024 9 │ │ │ │ │ │ + Utilities : DRAFT February 18, 2025 9 │ │ │ │ │ │ 1.2.3 ZV : double complex vector methods │ │ │ │ │ │ Adoubleprecisioncomplexvector oflengthnissimplya doubleprecisionvector oflength2n. There │ │ │ │ │ │ is a separate ZVinit() allocator and initializer method, since it requires a real and imaginary part │ │ │ │ │ │ to fill the vector. However, there is no ZVinit2() method (which allocates without initializing the │ │ │ │ │ │ entries) nor a ZVfree() method to free the entries; the DVinit2() and DVfree() methods can be │ │ │ │ │ │ used. Similarly, there is no ZVfscanf() method, instead the DVfscanf() method can be used. │ │ │ │ │ │ 1. double * ZVinit ( int n, double real, double imag ) ; │ │ │ │ │ │ @@ -320,15 +320,15 @@ │ │ │ │ │ │ 6. void ZVaxpy ( int n, double y[], double areal, double aimag, double x[] ) ; │ │ │ │ │ │ Thismethodaddsascaledmultipleofnentriesfromx[]intoy[],i.e., y[i] += (areal,aimag) │ │ │ │ │ │ * x[i] for 0 <= i < n. │ │ │ │ │ │ 7. void ZVaxpy2 ( int n, double z[], double areal, double aimag, │ │ │ │ │ │ double x[], double breal, double bimag, double y[] ) ; │ │ │ │ │ │ This method adds a scaled multiple of two vectors x[] and y[] to another vector z[], i.e., │ │ │ │ │ │ i.e., z[i] += (areal,aimag) * x[i] + (breal,bimag) * y[i] for 0 <= i < n. │ │ │ │ │ │ - 10 Utilities : DRAFT January 16, 2024 │ │ │ │ │ │ + 10 Utilities : DRAFT February 18, 2025 │ │ │ │ │ │ 8. void ZVaxpy33 ( int n, double y0[], double y1[], double y2[], │ │ │ │ │ │ double alpha[], double x0[], double x1[], double x2[] ) ; │ │ │ │ │ │ This method computes the following. │ │ │ │ │ │ y0[] = y0[] + alpha[0:1] * x0[] + alpha[2:3] * x1[] + alpha[4:5] * x2[] │ │ │ │ │ │ y1[] = y1[] + alpha[6:7] * x0[] + alpha[8:9] * x1[] + alpha[10:11] * x2[] │ │ │ │ │ │ y2[] = y2[] + alpha[12:13] * x0[] + alpha[14:15] * x1[] + alpha[16:17] * x2[] │ │ │ │ │ │ 9. void ZVaxpy32 ( int n, double y0[], double y1[], double y2[], │ │ │ │ │ │ @@ -354,15 +354,15 @@ │ │ │ │ │ │ y0[] = y0[] + alpha[0:1] * x0[] + alpha[2:3] * x1[] │ │ │ │ │ │ y1[] = y1[] + alpha[4:5] * x0[] + alpha[6:7] * x1[] │ │ │ │ │ │ 13. void ZVaxpy21 ( int n, double y0[], double y1[], │ │ │ │ │ │ double alpha[], double x0[] ) ; │ │ │ │ │ │ This method computes the following. │ │ │ │ │ │ y0[] = y0[] + alpha[0:1] * x0[] │ │ │ │ │ │ y1[] = y1[] + alpha[2:3] * x0[] │ │ │ │ │ │ - Utilities : DRAFT January 16, 2024 11 │ │ │ │ │ │ + Utilities : DRAFT February 18, 2025 11 │ │ │ │ │ │ 14. void ZVaxpy13 ( int n, double y0[], │ │ │ │ │ │ double alpha[], double x0[], double x1[], double x2[] ) ; │ │ │ │ │ │ This method computes the following. │ │ │ │ │ │ y0[] = y0[] + alpha[0:1] * x0[] + alpha[2:3] * x1[] + alpha[4:5] * x2[] │ │ │ │ │ │ 15. void ZVaxpy12 ( int n, double y0[], double alpha[], double x0[], double x1[] ) ; │ │ │ │ │ │ This method computes the following. │ │ │ │ │ │ y0[] = y0[] + alpha[0:1] * x0[] + alpha[2:3] * x1[] │ │ │ │ │ │ @@ -389,15 +389,15 @@ │ │ │ │ │ │ This method fills *prdot and *pidot with the real and imaginary parts of the indexed dot │ │ │ │ │ │ n−1 │ │ │ │ │ │ product Xy[index[i]]∗x[i]. │ │ │ │ │ │ i=0 │ │ │ │ │ │ 22. int ZVdotU33 ( int n, double row0[], double row1[], double row2[], │ │ │ │ │ │ double col0[], double col1[], double col2[], double sums[] ) ; │ │ │ │ │ │ This method computes nine dot products. │ │ │ │ │ │ - 12 Utilities : DRAFT January 16, 2024 │ │ │ │ │ │ + 12 Utilities : DRAFT February 18, 2025 │ │ │ │ │ │ n−1 n−1 │ │ │ │ │ │ sums[0;1] = Xrow0[i]∗col0[i] sums[2 : 3] = Xrow0[i]∗col1[i] │ │ │ │ │ │ i=0 i=0 │ │ │ │ │ │ n−1 n−1 │ │ │ │ │ │ sums[4 : 5] = Xrow0[i]∗col2[i] sums[6 : 7] = Xrow1[i]∗col0[i] │ │ │ │ │ │ i=0 i=0 │ │ │ │ │ │ n−1 n−1 │ │ │ │ │ │ @@ -441,15 +441,15 @@ │ │ │ │ │ │ i=0 i=0 │ │ │ │ │ │ n−1 n−1 │ │ │ │ │ │ sums[4 : 5] = Xrow0[i]∗col2[i] sums[6 : 7] = Xrow1[i]∗col0[i] │ │ │ │ │ │ i=0 i=0 │ │ │ │ │ │ n−1 n−1 │ │ │ │ │ │ sums[8 : 9] = Xrow1[i]∗col1[i] sums[10 : 11] = Xrow1[i]∗col2[i] │ │ │ │ │ │ i=0 i=0 │ │ │ │ │ │ - Utilities : DRAFT January 16, 2024 13 │ │ │ │ │ │ + Utilities : DRAFT February 18, 2025 13 │ │ │ │ │ │ 26. int ZVdotU22 ( int n, double row0[], double row1[], │ │ │ │ │ │ double col0[], double col1[], double sums[] ) ; │ │ │ │ │ │ This method computes four dot products. │ │ │ │ │ │ n−1 n−1 │ │ │ │ │ │ sums[0 : 1] = Xrow0[i]∗col0[i] sums[2 : 3] = Xrow0[i]∗col1[i] │ │ │ │ │ │ i=0 i=0 │ │ │ │ │ │ n−1 n−1 │ │ │ │ │ │ @@ -483,15 +483,15 @@ │ │ │ │ │ │ This method computes one dot product. │ │ │ │ │ │ n−1 │ │ │ │ │ │ sums[0 : 1] = Xrow0[i]∗col0[i] │ │ │ │ │ │ i=0 │ │ │ │ │ │ 31. int ZVdotC33 ( int n, double row0[], double row1[], double row2[], │ │ │ │ │ │ double col0[], double col1[], double col2[], double sums[] ) ; │ │ │ │ │ │ This method computes nine dot products. │ │ │ │ │ │ - 14 Utilities : DRAFT January 16, 2024 │ │ │ │ │ │ + 14 Utilities : DRAFT February 18, 2025 │ │ │ │ │ │ n−1 n−1 │ │ │ │ │ │ sums[0;1] = Xrow0[i]∗col0[i] sums[2 : 3] = Xrow0[i]∗col1[i] │ │ │ │ │ │ i=0 i=0 │ │ │ │ │ │ n−1 n−1 │ │ │ │ │ │ sums[4 : 5] = Xrow0[i]∗col2[i] sums[6 : 7] = Xrow1[i]∗col0[i] │ │ │ │ │ │ i=0 i=0 │ │ │ │ │ │ n−1 n−1 │ │ │ │ │ │ @@ -535,15 +535,15 @@ │ │ │ │ │ │ i=0 i=0 │ │ │ │ │ │ n−1 n−1 │ │ │ │ │ │ sums[4 : 5] = Xrow0[i]∗col2[i] sums[6 : 7] = Xrow1[i]∗col0[i] │ │ │ │ │ │ i=0 i=0 │ │ │ │ │ │ n−1 n−1 │ │ │ │ │ │ sums[8 : 9] = Xrow1[i]∗col1[i] sums[10 : 11] = Xrow1[i]∗col2[i] │ │ │ │ │ │ i=0 i=0 │ │ │ │ │ │ - Utilities : DRAFT January 16, 2024 15 │ │ │ │ │ │ + Utilities : DRAFT February 18, 2025 15 │ │ │ │ │ │ 35. int ZVdotC22 ( int n, double row0[], double row1[], │ │ │ │ │ │ double col0[], double col1[], double sums[] ) ; │ │ │ │ │ │ This method computes four dot products. │ │ │ │ │ │ n−1 n−1 │ │ │ │ │ │ sums[0 : 1] = Xrow0[i]∗col0[i] sums[2 : 3] = Xrow0[i]∗col1[i] │ │ │ │ │ │ i=0 i=0 │ │ │ │ │ │ n−1 n−1 │ │ │ │ │ │ @@ -578,15 +578,15 @@ │ │ │ │ │ │ n−1 │ │ │ │ │ │ sums[0 : 1] = Xrow0[i]∗col0[i] │ │ │ │ │ │ i=0 │ │ │ │ │ │ 40. void ZVgather ( int n, double y[], double x[], int index[] ) ; │ │ │ │ │ │ y[i] = x[index[i]] for 0 <= i < n. │ │ │ │ │ │ 41. double ZVmaxabs ( int n, double y[] ) ; │ │ │ │ │ │ This method returns the maximum magnitude of entries in y[0:n-1]. │ │ │ │ │ │ - 16 Utilities : DRAFT January 16, 2024 │ │ │ │ │ │ + 16 Utilities : DRAFT February 18, 2025 │ │ │ │ │ │ 42. double ZVminabs ( int n, double y[] ) ; │ │ │ │ │ │ This method returns the minimum magnitude of entries in y[0:n-1]. │ │ │ │ │ │ 43. void ZVscale ( int n, double y[], double areal, double aimag ) ; │ │ │ │ │ │ This method scales a vector y[] by (areal,aimag), i.e., y[i] *= (areal,aimag). for 0 <= │ │ │ │ │ │ i < n. │ │ │ │ │ │ 44. void ZVscale2 ( int n, double x[], double y[], │ │ │ │ │ │ double areal, double aimag, double breal, double bimag, │ │ │ │ │ │ @@ -609,15 +609,15 @@ │ │ │ │ │ │ This is an allocator method for int vectors. Storage for an array with size n is found. A │ │ │ │ │ │ pointer to the array is returned. Note, on return, there will likely be garbage in the array. │ │ │ │ │ │ 3. void IVfree ( int vec[] ) ; │ │ │ │ │ │ This method releases the storage taken by vec[]. │ │ │ │ │ │ 4. void IVfprintf ( FILE *fp, int n, int y[] ) ; │ │ │ │ │ │ This method prints n entries in y[] to file fp. The format is new line followed by lines of five │ │ │ │ │ │ int’s in " %4d" format. │ │ │ │ │ │ - Utilities : DRAFT January 16, 2024 17 │ │ │ │ │ │ + Utilities : DRAFT February 18, 2025 17 │ │ │ │ │ │ 5. int IVfp80 ( FILE *fp, int n, int y[], int column, int *pierr ) ; │ │ │ │ │ │ Thismethodprintsnentriesiny[]tofilefp. Themethodsplicesvectorstogetherornaturally │ │ │ │ │ │ breaks the large vectors into lines. The column value is the present location. If the printed │ │ │ │ │ │ value of an array entry will not fit within the eighty columns of the present line, a newline │ │ │ │ │ │ character is written and the value starts a new line. The number of the present column in │ │ │ │ │ │ the line is returned. If *pierr < 0, an IO error has occured. │ │ │ │ │ │ 6. int IVfscanf ( FILE *fp, int n, int y[] ) ; │ │ │ │ │ │ @@ -645,15 +645,15 @@ │ │ │ │ │ │ returns a location where target is found. If target is not in y[], -1 is returned. │ │ │ │ │ │ 14. int IVmax ( int n, int y[], int *ploc ) ; │ │ │ │ │ │ This method returns the maximum entry in y[0:n-1] and puts the first location where it │ │ │ │ │ │ was found into the address ploc. │ │ │ │ │ │ 15. int IVmaxabs ( int n, int y[], int *ploc ) ; │ │ │ │ │ │ This method returns the maximum magnitude of entries in y[0:n-1] and puts the first │ │ │ │ │ │ location where it was found into the address ploc. │ │ │ │ │ │ - 18 Utilities : DRAFT January 16, 2024 │ │ │ │ │ │ + 18 Utilities : DRAFT February 18, 2025 │ │ │ │ │ │ 16. int IVmin ( int n, int y[], int *ploc ) ; │ │ │ │ │ │ This method returns the minimum entry in y[0:n-1] and puts the first location where it was │ │ │ │ │ │ found into the address ploc. │ │ │ │ │ │ 17. int IVminabs ( int n, int y[], int *ploc ) ; │ │ │ │ │ │ This method returns the minimum magnitude of entries in y[0:n-1] and puts the first loca- │ │ │ │ │ │ tion where it was found into the address ploc. │ │ │ │ │ │ 18. void IVperm ( int n, int y[], int index[] ) ; │ │ │ │ │ │ @@ -681,15 +681,15 @@ │ │ │ │ │ │ 25. void IVshuffle ( int n, int y[], int seed ) ; │ │ │ │ │ │ This method shuffles the first n entries in y[]. The value seed is the seed to a random number │ │ │ │ │ │ generator, and one can get repeatable behavior by repeating seed. │ │ │ │ │ │ 1.2.5 FV : float vector methods │ │ │ │ │ │ 1. float * FVinit ( int n, float val ) ; │ │ │ │ │ │ This is the allocator and initializer method for float vectors. Storage for an array with size │ │ │ │ │ │ n is found and each entry is filled with val. A pointer to the array is returned. │ │ │ │ │ │ - Utilities : DRAFT January 16, 2024 19 │ │ │ │ │ │ + Utilities : DRAFT February 18, 2025 19 │ │ │ │ │ │ 2. float * FVinit2 ( int n ) ; │ │ │ │ │ │ This is an allocator method for float vectors. Storage for an array with size n is found. A │ │ │ │ │ │ pointer to the array is returned. Note, on return, there will likely be garbage in the array. │ │ │ │ │ │ 3. void FVfree ( int vec[] ) ; │ │ │ │ │ │ This method releases the storage taken by vec[]. │ │ │ │ │ │ 4. void FVfprintf ( FILE *fp, int n, float y[] ) ; │ │ │ │ │ │ This method prints n entries in y[] to file fp. The format is new line followed by lines of six │ │ │ │ │ │ @@ -716,15 +716,15 @@ │ │ │ │ │ │ i=0 │ │ │ │ │ │ 12. void FVfill ( int n, float y[], float val ) ; │ │ │ │ │ │ This method fills n entries in y[] with val, i.e., y[i] = val for 0 <= i < n. │ │ │ │ │ │ 13. void FVgather ( int n, float y[], float x[], int index[] ) ; │ │ │ │ │ │ y[i] = x[index[i]] for 0 <= i < n. │ │ │ │ │ │ 14. void FVgatherAddZero ( int n, float y[], float x[], int index[] ) ; │ │ │ │ │ │ y[i] += x[index[i]] and x[index[i]] = 0 for 0 <= i < n. │ │ │ │ │ │ - 20 Utilities : DRAFT January 16, 2024 │ │ │ │ │ │ + 20 Utilities : DRAFT February 18, 2025 │ │ │ │ │ │ 15. void FVgatherZero ( int n, float y[], float x[], int index[] ) ; │ │ │ │ │ │ y[i] = x[index[i]] and x[index[i]] = 0 │ │ │ │ │ │ 16. void FVinvPerm ( int n, float y[], int index[] ) ; │ │ │ │ │ │ This method permutes the vector y as follows. i.e., y[index[i]] := y[i]. See FVperm() for │ │ │ │ │ │ a similar function. │ │ │ │ │ │ 17. float FVmax ( int n, float y[], int *ploc ) ; │ │ │ │ │ │ This method returns the maximum entry in y[0:n-1] and puts the first location where it │ │ │ │ │ │ @@ -751,15 +751,15 @@ │ │ │ │ │ │ < n. │ │ │ │ │ │ 25. void FVscatterAddZero ( int n, float y[], int index[], float x[] ) ; │ │ │ │ │ │ This method scatters/adds n entries of x[] into y[] as follows, y[index[i]] += x[i] and │ │ │ │ │ │ x[i] for 0 <= i < n. │ │ │ │ │ │ 26. void FVscatterZero ( int n, float y[], int index[], float x[] ) ; │ │ │ │ │ │ This method scatters n entries of x[] into y[] as follows, y[index[i]] = x[i] and x[i] for │ │ │ │ │ │ 0 <= i < n. │ │ │ │ │ │ - Utilities : DRAFT January 16, 2024 21 │ │ │ │ │ │ + Utilities : DRAFT February 18, 2025 21 │ │ │ │ │ │ 27. void FVsub ( int n, float y[], float x[] ) ; │ │ │ │ │ │ This method subtracts n entries from x[] to y[], i.e., y[i] -= x[i] for 0 <= i < n. │ │ │ │ │ │ 28. float FVsum ( int n, float y[] ) ; │ │ │ │ │ │ P │ │ │ │ │ │ This method returns the sum of the first n entries in the vector x[], i.e., return n−1x[i]. │ │ │ │ │ │ i=0 │ │ │ │ │ │ 29. float FVsumabs ( int n, float y[] ) ; │ │ │ │ │ │ @@ -787,15 +787,15 @@ │ │ │ │ │ │ i.e., p vec[0] = vec, and p vec[i] = p vec[i-1] + sizes[i-1] for 0 < i < n. │ │ │ │ │ │ 1.2.7 PDV : double * vector methods │ │ │ │ │ │ 1. double ** PDVinit ( int n ) ; │ │ │ │ │ │ This is the allocator and initializer method for double* vectors. Storage for an array with │ │ │ │ │ │ size n is found and each entry is filled with NULL. A pointer to the array is returned. │ │ │ │ │ │ 2. void PDVfree ( double **p_vec ) ; │ │ │ │ │ │ This method releases the storage taken by p vec[]. │ │ │ │ │ │ - 22 Utilities : DRAFT January 16, 2024 │ │ │ │ │ │ + 22 Utilities : DRAFT February 18, 2025 │ │ │ │ │ │ 3. void PDVcopy ( int n, double *p_y[], double *p_x[] ) ; │ │ │ │ │ │ This method copies n entries from p x[] to p y[], i.e., p y[i] = p x[i] for 0 <= i < n. │ │ │ │ │ │ 4. void PDVsetup ( int n, int sizes[], double vec[], double *p_vec[] ) ; │ │ │ │ │ │ This method sets the entries of p vec[] as pointers into vec[] given by the sizes[] vector, │ │ │ │ │ │ i.e., p vec[0] = vec, and p vec[i] = p vec[i-1] + sizes[i-1] for 0 < i < n. │ │ │ │ │ │ PIV : int * vector methods │ │ │ │ │ │ 1. int ** PIVinit ( int n ) ; │ │ │ │ │ │ @@ -815,15 +815,15 @@ │ │ │ │ │ │ 2. void PFVfree ( float **p_vec ) ; │ │ │ │ │ │ This method releases the storage taken by p vec[]. │ │ │ │ │ │ 3. void PFVcopy ( int n, float *p_y[], float *p_x[] ) ; │ │ │ │ │ │ This method copies n entries from p x[] to p y[], i.e., p y[i] = p x[i] for 0 <= i < n. │ │ │ │ │ │ 4. void PFVsetup ( int n, int sizes[], float vec[], float *p_vec[] ) ; │ │ │ │ │ │ This method sets the entries of p vec[] as pointers into vec[] given by the sizes[] vector, │ │ │ │ │ │ i.e., p vec[0] = vec, and p vec[i] = p vec[i-1] + sizes[i-1] for 0 < i < n. │ │ │ │ │ │ - Utilities : DRAFT January 16, 2024 23 │ │ │ │ │ │ + Utilities : DRAFT February 18, 2025 23 │ │ │ │ │ │ 1.2.9 Sorting routines │ │ │ │ │ │ Validation routines │ │ │ │ │ │ 1. int IVisascending ( int n, int ivec[] ) ; │ │ │ │ │ │ int IVisdescending ( int n, int ivec[] ) ; │ │ │ │ │ │ These methods returns 1 if the array ivec[] is in ascending or descending order and returns │ │ │ │ │ │ 0 otherwise. │ │ │ │ │ │ 2. int DVisascending ( int n, double dvec[] ) ; │ │ │ │ │ │ @@ -852,15 +852,15 @@ │ │ │ │ │ │ This sorts the array ivec[] into ascending or descending order using an insertion sort and │ │ │ │ │ │ permutes the double precision complex companion array dvec[] in the same fashion. │ │ │ │ │ │ 6. void IV2ZVisortUp ( int n, int ivec1[], int ivec2[], double dvec[] ) ; │ │ │ │ │ │ void IV2ZVisortDown ( int n, int ivec1[], int ivec2[], double dvec[] ) ; │ │ │ │ │ │ These methods sort the array ivec1[] into ascending or descending order using an insertion │ │ │ │ │ │ sort and permutes the companion arrays ivec2[] and dvec[] in the same fashion. The │ │ │ │ │ │ dvec[] array is double precision complex. │ │ │ │ │ │ - 24 Utilities : DRAFT January 16, 2024 │ │ │ │ │ │ + 24 Utilities : DRAFT February 18, 2025 │ │ │ │ │ │ 7. void DVisortUp ( int n, double dvec[] ) ; │ │ │ │ │ │ void DVisortDown ( int n, double dvec[] ) ; │ │ │ │ │ │ These methods sort a double array into ascending or descending order using an insertion │ │ │ │ │ │ sort. │ │ │ │ │ │ 8. void DV2isortUp ( int n, double dvec1[], double dvec2[] ) ; │ │ │ │ │ │ void DV2isortDown ( int n, double dvec1[], double dvec2[] ) ; │ │ │ │ │ │ These methods sort the array dvec1[] into ascending or descending order using an insertion │ │ │ │ │ │ @@ -890,15 +890,15 @@ │ │ │ │ │ │ These methods sort the array ivec[] into ascending or descending order using a quick sort │ │ │ │ │ │ and permutes the double precision complex companion array dvec[] in the same fashion. │ │ │ │ │ │ 6. void IV2ZVqsortUp ( int n, int ivec1[], int ivec2[], double dvec[] ) ; │ │ │ │ │ │ void IV2ZVqsortDown ( int n, int ivec1[], int ivec2[], double dvec[] ) ; │ │ │ │ │ │ These methods sort the array ivec1[] into ascending or descending order using a quick sort │ │ │ │ │ │ and permutes the companion arrays ivec2[] and dvec[] in the same fashion. The dvec[] │ │ │ │ │ │ array is double precision complex. │ │ │ │ │ │ - Utilities : DRAFT January 16, 2024 25 │ │ │ │ │ │ + Utilities : DRAFT February 18, 2025 25 │ │ │ │ │ │ 7. void DVqsortUp ( int n, double dvec[] ) ; │ │ │ │ │ │ void DVqsortDown ( int n, double dvec[] ) ; │ │ │ │ │ │ Thes methods sort a double array into ascending or descending order using a quick sort. │ │ │ │ │ │ 8. void DV2qsortUp ( int n, double dvec1[], double dvec2[] ) ; │ │ │ │ │ │ void DV2qsortDown ( int n, double dvec1[], double dvec2[] ) ; │ │ │ │ │ │ These methods sort the array dvec1[] into ascending or descending order using a quick sort │ │ │ │ │ │ and permutes the companion array dvec2[] in the same fashion. │ │ │ │ │ │ @@ -928,15 +928,15 @@ │ │ │ │ │ │ program exits. │ │ │ │ │ │ 4. int IV2sortUpAndCompress ( int n, int ivec1[], int ivec2[] ) ; │ │ │ │ │ │ This method sorts ivec1[] into ascending order with ivec2[] as a companion vector. It │ │ │ │ │ │ then compresses the pairs, dropping all but one of identical pairs. The return value is the │ │ │ │ │ │ number of unique entries stored in the leading locations of the vectors ivec1[] and ivec2[]. │ │ │ │ │ │ Error checking: If n < 0, or if ivec1 or ivec2 is NULL, an error message is printed and the │ │ │ │ │ │ program exits. │ │ │ │ │ │ - 26 Utilities : DRAFT January 16, 2024 │ │ │ │ │ │ + 26 Utilities : DRAFT February 18, 2025 │ │ │ │ │ │ 5. int IV2DVsortUpAndCompress ( int n, int ivec1[], int ivec2[], double dvec[] ) ; │ │ │ │ │ │ This method sorts ivec1[] into ascending order with ivec2[] and dvec[] as companion │ │ │ │ │ │ vectors. It then compresses the pairs, summing the dvec[] entries for identical (ivec1[], │ │ │ │ │ │ ivec2[]) pairs. The return value is the number of unique entries stored in the leading │ │ │ │ │ │ locations of the vectors ivec1[], ivec2[] and dvec[]. │ │ │ │ │ │ Error checking: If n < 0, or if ivec1, ivec2 or dvec is NULL, an error message is printed and │ │ │ │ │ │ the program exits. │ │ │ │ │ │ @@ -965,15 +965,15 @@ │ │ │ │ │ │ 2. void IP_free ( IP *ip ) ; │ │ │ │ │ │ This method releases the storage based at *ip. │ │ │ │ │ │ 3. void IP_fprintf ( FILE *fp, IP *ip ) ; │ │ │ │ │ │ This method prints the singly linked list that starts with ip. │ │ │ │ │ │ 4. int IP_fp80 ( FILE *fp, int n, int y[], int column, int *pierr ) ; │ │ │ │ │ │ This method prints the singly linked list that starts with ip. See IVfp80() for a description │ │ │ │ │ │ of how the entries are placed on a line. │ │ │ │ │ │ - Utilities : DRAFT January 16, 2024 27 │ │ │ │ │ │ + Utilities : DRAFT February 18, 2025 27 │ │ │ │ │ │ 5. IP * IP_mergeUp ( IP *ip1, IP *ip2 ) ; │ │ │ │ │ │ This method merges two singly linked lists into one. If the two lists are in ascending order, │ │ │ │ │ │ the new list is also in ascending order. The head of the new list is returned. │ │ │ │ │ │ 6. IP * IP_mergeSortUp ( IP *ip ) ; │ │ │ │ │ │ This method sorts a list into ascending order using a merge sort. │ │ │ │ │ │ 7. IP * IP_radixSortUp ( IP *ip ) ; │ │ │ │ │ │ This method sorts a list into ascending order using a radix sort. │ │ │ │ │ │ @@ -1002,15 +1002,15 @@ │ │ │ │ │ │ base[i].value1 = -1. The flag parameter determines how the next field is filled. │ │ │ │ │ │ • If flag = I2OP NULL, the elements are not linked, i.e., ips[i].next = NULL for 0 <= │ │ │ │ │ │ i < n. │ │ │ │ │ │ • If flag = I2OP FORWARD,the elements are linked in a forward manner, i.e., ips[i].next │ │ │ │ │ │ = &ips[i+1] for 0 <= i < n-1 and ips[n-1].next = NULL. │ │ │ │ │ │ • If flag = I2OP BACKWARD,theelementsarelinkedinabackwardmanner,i.e., ips[i].next │ │ │ │ │ │ = &ips[i-1] for 0 < i < n and ips[0].next = NULL. │ │ │ │ │ │ - 28 Utilities : DRAFT January 16, 2024 │ │ │ │ │ │ + 28 Utilities : DRAFT February 18, 2025 │ │ │ │ │ │ 3. void I2OP_free ( I2OP *i2op ) ; │ │ │ │ │ │ This method releases the storage based at *i2op. │ │ │ │ │ │ 4. void I2OP_fprintf ( FILE *fp, I2OP *i2op ) ; │ │ │ │ │ │ This method prints the singly linked list that starts with i2op. │ │ │ │ │ │ 1.3 Driver programs │ │ │ │ │ │ 1. test_sort msglvl msgFile target sortType n range mod seed │ │ │ │ │ │ This driver program tests the sort methods. Use the script file do test sort for testing. │ │ │ │ │ │ @@ -1038,15 +1038,15 @@ │ │ │ │ │ │ • Integer entries are of the form k mod mod, where k in [0,range]. │ │ │ │ │ │ • The seed parameter is a random number seed. │ │ │ │ │ │ 2. test_sortUpAndCompress msglvl msgFile target n range mod seed │ │ │ │ │ │ This driver program tests the “sort in ascending order and compress” methods. Use the script │ │ │ │ │ │ file do test sortUpAndCompress for testing. │ │ │ │ │ │ • The msglvl parameter determines the amount of output. Use msglvl = 1 for just │ │ │ │ │ │ timing output. │ │ │ │ │ │ - Utilities : DRAFT January 16, 2024 29 │ │ │ │ │ │ + Utilities : DRAFT February 18, 2025 29 │ │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ │ message file is stdout, otherwise a file is opened with append status to receive any output │ │ │ │ │ │ data. │ │ │ │ │ │ • The target parameter denotes the type of vector(s) to be sorted. │ │ │ │ │ │ – IV — int vector sort │ │ │ │ │ │ – IV2 — (int, int) vector sort │ │ │ │ │ │ – IVDV — (int, double) vector sort │ │ │ │ │ │ @@ -1091,15 +1091,15 @@ │ │ │ │ │ │ DVfree(), 3 FVaxpy(), 16 │ │ │ │ │ │ DVfscanf(), 3 FVaxpyi(), 16 │ │ │ │ │ │ DVgather(), 5 FVcompress(), 16 │ │ │ │ │ │ DVgatherAddZero(), 5 FVcopy(), 17 │ │ │ │ │ │ DVgatherZero(), 6 FVdot(), 17 │ │ │ │ │ │ DVinit(), 2 FVfill(), 17 │ │ │ │ │ │ 30 │ │ │ │ │ │ - Utilities : DRAFT January 16, 2024 31 │ │ │ │ │ │ + Utilities : DRAFT February 18, 2025 31 │ │ │ │ │ │ FVfprintf(), 16 IV2qsortDown(), 21 │ │ │ │ │ │ FVfree(), 16 IV2qsortUp(), 21 │ │ │ │ │ │ FVfscanf(), 16 IV2sortUpAndCompress(), 23 │ │ │ │ │ │ FVgather(), 17 IV2ZVisortDown(), 21 │ │ │ │ │ │ FVgatherAddZero(), 17 IV2ZVisortUp(), 21 │ │ │ │ │ │ FVgatherZero(), 17 IV2ZVqsortDown(), 22 │ │ │ │ │ │ FVinit(), 16 IV2ZVqsortUp(), 22 │ │ │ │ │ │ @@ -1137,15 +1137,15 @@ │ │ │ │ │ │ IV2DVisortDown(), 21 IVscatter(), 15 │ │ │ │ │ │ IV2DVisortUp(), 21 IVshuffle(), 16 │ │ │ │ │ │ IV2DVqsortDown(), 22 IVsortUpAndCompress(), 22 │ │ │ │ │ │ IV2DVqsortUp(), 22 IVsum(), 15 │ │ │ │ │ │ IV2DVsortUpAndCompress(), 23 IVsumabs(), 15 │ │ │ │ │ │ IV2isortDown(), 20 IVswap(), 15 │ │ │ │ │ │ IV2isortUp(), 20 IVzero(), 16 │ │ │ │ │ │ - 32 Utilities : DRAFT January 16, 2024 │ │ │ │ │ │ + 32 Utilities : DRAFT February 18, 2025 │ │ │ │ │ │ IVZVisortDown(), 21 ZVdotU23(), 10 │ │ │ │ │ │ IVZVisortUp(), 21 ZVdotU31(), 9 │ │ │ │ │ │ IVZVqsortDown(), 22 ZVdotU32(), 9 │ │ │ │ │ │ IVZVqsortUp(), 22 ZVdotU33(), 9 │ │ │ │ │ │ IVZVsortUpAndCompress(), 23 ZVfprintf(), 8 │ │ │ │ │ │ ZVgather(), 13 │ │ │ │ │ │ PCVcopy(), 19 ZVinit(), 7 │ │ │ ├── ./usr/share/doc/spooles-doc/ZV.ps.gz │ │ │ │ ├── ZV.ps │ │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ │ %%EndComments │ │ │ │ │ %%BeginDefaults │ │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ │ %%EndDefaults │ │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ │ %DVIPSCommandLine: dvips main -o ZV.ps │ │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ │ -%DVIPSSource: TeX output 2024.01.16:2047 │ │ │ │ │ +%DVIPSSource: TeX output 2025.02.18:0318 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -2352,20 +2352,21 @@ │ │ │ │ │ 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 52 /four put │ │ │ │ │ -dup 54 /six put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ +dup 56 /eight put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 74 /J put │ │ │ │ │ +dup 70 /F put │ │ │ │ │ dup 97 /a put │ │ │ │ │ -dup 110 /n put │ │ │ │ │ +dup 98 /b put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ dup 114 /r put │ │ │ │ │ dup 117 /u put │ │ │ │ │ dup 121 /y put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ @@ -2549,89 +2550,93 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ │ -C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ │ -6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ │ -11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ │ -1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ │ -A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ │ -F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ │ -EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ │ -033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ │ -A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ │ -468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8A71FF9C085003EBB4F4 │ │ │ │ │ -3D271F5B16B1AAD3EBDC391F534AA46E545E9D8659DD19B309C3B7625A8396FA │ │ │ │ │ -2519464539D46E43ACB72952313C8497315E0319C08628023E8FC54D7D3BAC29 │ │ │ │ │ -D5AD8EFDABF0C33C7AFB7151A6606C62A87F0F5F783569AC4C881A992E3FE420 │ │ │ │ │ -297F7BC5147F3B2FA98450D2F8B07F7D229BC8BE06729920CFEC22556740E1CB │ │ │ │ │ -3DE09AC763C6D4A20AD1599C368FABD07BC35C16683F2A0311A88983415A9140 │ │ │ │ │ -2EFC4BC1B10DCAD4B2B8A28510E5BD39D6616D2B9B079ED3CF9C315B7DEC29D9 │ │ │ │ │ -251DFD0194B34EC175964C23383F23FFB2E41B698C405815D65EAFF9E9DD1DDE │ │ │ │ │ -30F77924656C288B8DDB2E5B0E7B1FAA66791DE3848EE6DE63AD0E945E49C6C7 │ │ │ │ │ -9FCA16E01F027F9EF7ACB55F02F5B0136480802F789F6FE14B430879979BA04D │ │ │ │ │ -F481AD4CF47E6847936F377FB04869F9A80E597301BFCAB718D8764094673876 │ │ │ │ │ -BCEF8FA3701608C84B3A0399A11D2E6AD922CCB7D72AF9EBFB30F4648A37A123 │ │ │ │ │ -CB8FB14BDC351692CF0CCAA5CA9383C2B23BAAA38700327EB743FBBE9EE04041 │ │ │ │ │ -13F5CEF4B3881BBC051C33369A82B3505B1CFD7D91AEF2E43EA728EE48E2D854 │ │ │ │ │ -5A7E516998ACDD4FD835FA901C5A21810A56D51FE919B2E58408EEB4DAEB487F │ │ │ │ │ -BA7F1D292CED902DF3533566D96DAD918319EA650D4FC7D9E0170CDE620F755B │ │ │ │ │ -0E7AE02D9B118481B26F5FF7060FBCFA2A682B6826F00679BCDA68794C05286D │ │ │ │ │ -B616DD08372ACDE0AE6E7EF116F0D36F16241ED4F0E8CCD80377792E3BB1343C │ │ │ │ │ -EEB22CC77738F7CBCBA32CF6C3979F6DF7ED81A89AE8928FD7CC550F2730BA88 │ │ │ │ │ -1B51CEDC63F4C47F261AFCAB7AC3CED20B15C97E714A460A1A3B16436B4A5149 │ │ │ │ │ -8F91DA4BE0B9B648534CE5F442117036B602DC91E2852BEA62F55803B833FDF7 │ │ │ │ │ -9F901AB87489E703DDEED1091A79DC73B4440BBBF2C7592B441187C4A3562204 │ │ │ │ │ -859F08BA3CE2A8ECCD5AAD13C50FB806FE79A388F1822C5608837CBDE526A044 │ │ │ │ │ -12E5CDE4A066932AF2ACA7E8FC6BA4603640944718752975B7DA6E906BE1EA01 │ │ │ │ │ -46736FF5D1AA1CC682D011B6039CF98C35E36D4F14ABC84A38B7203CC9A17756 │ │ │ │ │ -B2B0345276798F1A88A54AD9FEA0853C6DDF28525ED4F0B7380D14147012C2A4 │ │ │ │ │ -5B02888C986C76497EA4C729B0B82EE73C1A1A8E8F1ABF401E341028E9C15AF9 │ │ │ │ │ -354706D8DC07492921AD0932A46736C0D1B066D00287DACCC068FAE6A796EC89 │ │ │ │ │ -54D1D73AA88F3A5912BA9D3FF70065C8D0D0DAD1CD846501E06694374EFDBEC6 │ │ │ │ │ -931F644D5E8494AFC742423AD9A487658E310E0682BE19B8475F4D450487A686 │ │ │ │ │ -2B94494DEAF1C0F59DE82F2CE64BEE5E97F942FCFA1187ED6AA5761E951A7BF7 │ │ │ │ │ -9F842E34A4656C58B35A9E99F7E6762CEE11E0CF59FFD75D7382C5EE6DBB43F1 │ │ │ │ │ -ED219071D3FB22DBA90977723BB467C0490D042684C0724F40DCA3E0D8F1F4E7 │ │ │ │ │ -3C4F9A67BE6528185EAAFDD415224F7E256A4EA00111C17C746CBD80BF569A27 │ │ │ │ │ -D81195D7F79C1CCEEF30ED00D49F48B63E4B8D7953403A3710AE953CC1B76F0F │ │ │ │ │ -F523D777A6A186F262A602543F94AF7471DBE25FEBC207DB42DAF7DC9A5781FB │ │ │ │ │ -2131AD42869D966A734AAE3466DF1CE9D1BCFA72409A558C0AEE6A8E2FEAACB6 │ │ │ │ │ -2CDABCC28433034848ACF9FB4465D272E4AFC48572647F05F41C7A293CC5B595 │ │ │ │ │ -AD31555FB708A72962707348BC7033A8224BD42EB9D75FDF3AE9E6A9C960B330 │ │ │ │ │ -5137DF59F8E2E0D535F41524ABDF070745A4FA25CD8DFD38A5FF30A95452B875 │ │ │ │ │ -6569E8812631300D79A942C563AF174AC05C9F2D09D7D5D3C605F5A6B7F21B34 │ │ │ │ │ -18F270A993B050838E701A17938D1C156CBA7CA4BAC7C562CE9D7B758EAB25A9 │ │ │ │ │ -A6DFFC71F65561341847B776DF34061CE3D439B87B857626987EC93B3B95B8E8 │ │ │ │ │ -76FFB16B263675333FA10414FEED707FF7C366BF8B20FF8577CDEBEBCF1A5BCE │ │ │ │ │ -258C09C90175A5278B7C444A623E3331FDE5A6387B3E389540ED1E7E883958F3 │ │ │ │ │ -3A5C89CCD62256FA069DF4A5090FB17C1F1757C9209DAFB8A1F47182BF3E88D9 │ │ │ │ │ -0B5376B59EE165A761902759C8ED7F5AD301E7EB8B49CC09AF921DB45B7F8002 │ │ │ │ │ -AB32E73AAE53942DE0F9175D8446017006C9C0B93EF39C13B7A879F2F6DDFF16 │ │ │ │ │ -204BB24F976847CF006FD29332FCCB255B5116F7077A44F7066C39C81DC4BAD2 │ │ │ │ │ -40DB2753626C0102E5D047522ABC38EA294A699B8DFD9CA0A7980561A1062E90 │ │ │ │ │ -AB11EE286A9C238D9F721D9980D0A1828C2814972622D948CEE8C812C19A9A03 │ │ │ │ │ -608ED0AC138A436FFBF8BE3D1E66C87793416AF38ED9BC5424568A175FBDAA9E │ │ │ │ │ -D6FC11A7021693819B051562B5A59F32629E2D6019D69DD329BE1894A2B295E1 │ │ │ │ │ -1DCE9683B29AE126C56F26E5C595BF1A8249BDE231DBE8B066F7F62EF149B975 │ │ │ │ │ -A863969A4690504A5EA064721DA909B8157C0B39FBF8228D95CB655E406161E1 │ │ │ │ │ -148610FAEED7C5509880223C06A66DA19E10F94DC2DB481B26 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004FD597ED │ │ │ │ │ +EFDBC64ABD9B79386FB2427D1A63522195B1239C09F8CB3F8BD7A245A6DD82E3 │ │ │ │ │ +260C3889587626DFC5F7978E55F5524ABD6A3319CDD3D3F40D040044D51DA4E1 │ │ │ │ │ +6797EEAC7AA07C77EC6DB0E6E182B545A8BEF63B14F3FC07BAC09E7CD5C17ED6 │ │ │ │ │ +10080704B0DA4E9BA12F968DF8A58458D17E9A5B1F14A83DC51F5B161ADEE1CC │ │ │ │ │ +0183D82ED92C6FC7203C289949EDF0284D9893029FF5408E421324625F17C3E5 │ │ │ │ │ +2437C8F75A9D68EE1AF9174FEA6FC6BF793C7D2E497EA90396CF1A645E283B69 │ │ │ │ │ +8425F47C323587DF91E1D596DCB1E3A787C955D9D965A5E3E26ADF58B62AD5F9 │ │ │ │ │ +0C9AC784DE479780606354111E3202F215650DBBE1063A46F3C10B9EBC974DDA │ │ │ │ │ +A1A28DBBD43E9E5BFF000B12C787D0427928078F8EC5FE90DED97E6C129E8DEA │ │ │ │ │ +51F66504DB83764E52B0BA68DF7BE684C8959CB1D3345CC48221A9A4683306C0 │ │ │ │ │ +62B634E0A539383F0C7A788D9711EFF414869CCC5659D78CEBE009BF2463F56A │ │ │ │ │ +0ADC993348FE96DF7C250E13ED6504AACFE8F8DCA2D2048D9D8CFA127D363EAC │ │ │ │ │ +1F0630E2D1B621E6954038195D965B91FD974FA3F1B8B29D200A16CEBA645E2F │ │ │ │ │ +CEEE6FD49FBBD49E38AE67D4BFFCE91F1FC422554EC4409C5FA18D40FCD6D9B3 │ │ │ │ │ +2185ED1E0F98106D4339F086B05CA36E56EC22C60E2CE23F9C4CC403ACAD3F94 │ │ │ │ │ +4086B4DF6DFA0B7B4716417263E7B558535566AED2F6C2F9846A16D71A7930A7 │ │ │ │ │ +49232D3D16C4A01CF1A1998A06F40062ED329179A85668537C55D0BC24FC0010 │ │ │ │ │ +54DA83E2FC66B2A5D428E6A9BFC983253668C0ECE6CA36DBF97C4B7659D50842 │ │ │ │ │ +C65B36604840EEDA399B57E2DEFAC3E7FB031634CE33D04238F9854D2AAAF448 │ │ │ │ │ +34DA5F3BCCED3166FEEE82BB0BBA0A397CC2F95865CB52AABFF454D93B425809 │ │ │ │ │ +A26AC459F321FD23E2262FE816D06BAAECF32AAF167F84799AF80F9F88388D07 │ │ │ │ │ +0DB5FD57AFEE2850A8DFE977E6AE39CB3DC16DB1A163A583C86C6F775CE33521 │ │ │ │ │ +0081C0BBBAD6D30D26C66B28B38CEAC78FEA5FB3CC5853656B67C6D9D80EB30E │ │ │ │ │ +397558C9179AF5920F34DAB3F578DFCF0DBB137AED17D6325C23883E69EE4621 │ │ │ │ │ +34355A70C19EA68891E1CA937376901C85CDEE109F1665943E29A216DC00937A │ │ │ │ │ +B983A729A4654AD09187C0242D52FA4ADD0853EF4888864914D7D81C56578DD4 │ │ │ │ │ +3B51907032022E6E412D4F114675DEDCA8A9E85DC03A0B583FECD84432D15F70 │ │ │ │ │ +01F627BD6EC91F9FCFDA01BF40E1229B5F164309DBB641AD50970503DA2048C1 │ │ │ │ │ +DF8F36E8D252EE113F0B46677D9BAF376BAE18D74CFB0DBBD0C7E9D0A58BA3ED │ │ │ │ │ +1E5099CAE073EB5638617760AB57849893764EA9735173CD1EAB66884CEA7EE3 │ │ │ │ │ +8843327B2E145BD6FBB49102776B82BC511D109F8BE9E7E99DADABABEDC3CFD9 │ │ │ │ │ +393578FFD85907DFF2849E4CDE6FA4DEC7E1C150EBE4047FFB650F9548BE6D11 │ │ │ │ │ +0C51226A5436F18BF20A02E0F888F46B6AC3A8E8D927ECD3B5E095933AD3859F │ │ │ │ │ +5167C41D832EFCC4093BD2AFA7101AB430E57DAFC3590F05D3CBABB32BC203A0 │ │ │ │ │ +467B23BDB830487C9AA5B85BAC065F8538871B4180F8C4732E637DB090CFDE5A │ │ │ │ │ +3F4F2B5BFAFB848BAAD1A17CB076B34159601639BD93ECAB1214ACABF2C67FE2 │ │ │ │ │ +0658AA20B08681070FF56F1CC52144ABA8765D6E124D1CEA9BBA102808CE1BB2 │ │ │ │ │ +5EDF46BC7BBC2A5B49EE6EC28F5797A3969B057B21FCDBBD0E60848FF14F6CA3 │ │ │ │ │ +70F3060BDBB019B22722C99C7691760F013763B7FBEB62830AE215F195BF9F01 │ │ │ │ │ +21BF4377397E89574CFA47D123AA506A570A77BA6EB4AAB0B237A26154880293 │ │ │ │ │ +3952F832F72ECCB024F02385E5EE8566B165904B594E30D0700D033C6B429F6F │ │ │ │ │ +2A20BC774F442BC9CE29FCC81807C2768A8BC927A215558FBF36DC53F477F04A │ │ │ │ │ +41DA66E1A85B659EB761230977EAD7DA0150513D3323B143D4E2A61BCF03334C │ │ │ │ │ +C0EE3E1B06CFAF58ECC910BD81F0352B75FF1594D6A4EF504232D442174BE766 │ │ │ │ │ +0F8E703F97E21D25D4CD097549C31FEE7017C3916EFB02E7BF869172889827B6 │ │ │ │ │ +A48465EB7612BA3DBC6A9436C7167F149A25CE9F8E3F4F8DE3B5ADF6C0986CB3 │ │ │ │ │ +3A7E2DAB44AB489796461536F5F713017F2620AD03295CAE9285F08974AE0DF8 │ │ │ │ │ +D739260929619B509491AFF09C4CAEF9E65C2CA69470C907ECBF3AB6C955360D │ │ │ │ │ +05ABAC306DB51122A1ADC7EF0DD70FA299A45C505A83727D4598C86319EE9C06 │ │ │ │ │ +7218EFD4F40388354BCF1B79593D5AD221DF955D081F99F880E5CED07321AB3E │ │ │ │ │ +A2FCB8B05D54807D8E15E65B78DCE12989B9276350080C905DBB74CE9AA7E246 │ │ │ │ │ +5D3BAED292C562D4CF54617FCC6654496C7996D1ECE1EFF9258716AB763A12E6 │ │ │ │ │ +316E4C5587351A6DB011F58F6A15BC28BEBDC3836E0CB892807FEC228DC1B380 │ │ │ │ │ +92F7F42279F08D60F13D6A4CB425543C3644461461CBF6F27B6603F613D1FCF8 │ │ │ │ │ +A8410AD82D1498166AEB35D4125D7E2ADEAAB18BC04806AED53513F066E5F154 │ │ │ │ │ +3E13E863C50B9814EE2FB978D0D24A03FAF650CB6E2CADF1E6BE6BAF699AFC03 │ │ │ │ │ +E1A0EEB207B3B9A689ED5B373FE86686AD230BE6C18E1673DDA50E224B343EC5 │ │ │ │ │ +903BA0C8041C13607B50D5852AC7970B15C244E6EBA7D54B3086312CF04761D6 │ │ │ │ │ +7D3D75D51F20C371494AB81AB4A9838B20B483B851D01FEF41EA5C0B4755B964 │ │ │ │ │ +EB6E9B178051C556A010994EB88EAE641F4C1A0D7E0F98D5267E18AEF1AEA7E7 │ │ │ │ │ +9030A97DF89AFF621981C33B645FFB5F3BB2065A7661D11B26E0999561DF3580 │ │ │ │ │ +4A76A05DFAF8085525F8D5C01936F03C32E26E72569371C9EA3B8916F9DFC5FC │ │ │ │ │ +6A6F25A0FFDB981BA8B896393D75774D50828E6ADE903C45406E354703A4BC56 │ │ │ │ │ +2C49A47FEAC970DC433E3050C49F7FB945A9705BD8852D2D65D935F244D3B423 │ │ │ │ │ +EFAB84AAAAB8FBAFF50AFF372A533BCCEB5FC273DBADCF715776DF02A5DCBA9A │ │ │ │ │ +FBF265FAB4745D6475B33611EEE1EA95E7584E0BEEC7CA789AA69C8D03D6F8C0 │ │ │ │ │ +5B6844E2B901ACA560C0433B053D134866E567425174E47173679AAD4486A2D3 │ │ │ │ │ +369C29E4DD2CD6ACA1BE80ED8FF0A9C58A616D26E758BD8E6342624EC83FB590 │ │ │ │ │ +BD354B52B60BB054FAFE9AC63E1564FBC721FE8F276B0413EC89A2C85E5ED1B0 │ │ │ │ │ +3A9D83BE62A4488ADE7CE69971A8AF7E5862A4290EEF6F00D4171C7FFB360065 │ │ │ │ │ +92E72BF02BE27161AE0BB5516572A0BDC4F316FFB24B38484AC8D1FD4CD86062 │ │ │ │ │ +A2B5D03CF28C3A679C039A6EFDD4C9DA7E463AD60234C9F6BBEE48D87DD94D85 │ │ │ │ │ +842F495F3E25723718682CE4D6224CBBF4456F03077EDF736D65B9DDAB09470E │ │ │ │ │ +17742D82011FFA96BFE86B96E858F9352FCD20C3D46B77DBDEE54336EC2249EA │ │ │ │ │ +211F6DFFF5BEA1E5192BE1BAC0BDD5EDDB3D56C6F7C6E543561A0B39E5C1B04F │ │ │ │ │ +C683A7516B6E69D682455386DDA709929D621FA434D403E895AA0A77DBE1DFD2 │ │ │ │ │ +0D060DF82378880147ED97C6E8149686FA048710B113760AC1DA4512FF8556B3 │ │ │ │ │ +16E2447485B8C3CD58D0469C4A45FFB4CB0322BB284C02 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -4014,19 +4019,19 @@ │ │ │ │ │ /Fb 235[71 20[{}1 90.9091 /CMSY10 rf /Fc 206[35 35 48[{}2 │ │ │ │ │ 66.4176 /CMR8 rf /Fd 133[50 59 4[44 44 46 2[56 62 93 │ │ │ │ │ 31 2[31 62 2[51 62 50 1[54 11[86 5[84 5[42 6[80 12[56 │ │ │ │ │ 56 56 56 56 2[31 46[{}25 99.6264 /CMBX12 rf /Fe 139[62 │ │ │ │ │ 4[62 4[62 4[62 1[62 62 7[62 3[62 86[{}8 119.552 /CMTT12 │ │ │ │ │ rf /Ff 138[49 30 37 38 1[46 46 51 74 23 42 1[28 46 42 │ │ │ │ │ 1[42 46 42 42 46 12[65 1[66 11[59 62 69 2[68 6[28 58[{}25 │ │ │ │ │ -90.9091 /CMTI10 rf /Fg 134[48 3[51 2[36 3[51 12[45 22[47 │ │ │ │ │ -15[25 3[45 1[45 1[45 45 45 3[25 44[{}13 90.9091 /CMSL10 │ │ │ │ │ -rf /Fh 134[71 2[71 75 52 53 55 1[75 67 75 112 3[37 75 │ │ │ │ │ -67 41 61 75 60 1[65 13[75 2[92 11[103 16[67 67 67 2[37 │ │ │ │ │ -46[{}25 119.552 /CMBX12 rf │ │ │ │ │ +90.9091 /CMTI10 rf /Fg 134[48 3[51 2[36 12[40 2[51 45 │ │ │ │ │ +26[59 11[25 1[45 2[45 2[45 45 45 3[25 44[{}14 90.9091 │ │ │ │ │ +/CMSL10 rf /Fh 134[71 2[71 75 52 53 55 1[75 67 75 112 │ │ │ │ │ +3[37 75 67 41 61 75 60 1[65 13[75 2[92 11[103 16[67 67 │ │ │ │ │ +67 2[37 46[{}25 119.552 /CMBX12 rf │ │ │ │ │ %DVIPSBitmapFont: Fi tcrm1095 10.95 2 │ │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ │ /Dotaccent/cedilla/ogonek/quotesinglbase.ts1 4{/.notdef}repeat │ │ │ │ │ /quotedblbase.ts1/.notdef/.notdef/twelveudash/threequartersemdash │ │ │ │ │ /afii61664.cap/arrowleft/arrowright/tieaccentlowercase/tieaccentcapital │ │ │ │ │ /tieaccentlowercase.new/tieaccentcapital.new/.notdef/afii61664.asc/uni2422 3 │ │ │ │ │ {/.notdef}repeat/dollar/.notdef/.notdef/quotesingle/.notdef/.notdef │ │ │ │ │ @@ -4142,18 +4147,18 @@ │ │ │ │ │ (oin)m(ter)g(to)h(the)g(base)f(arra)m(y)h(from)f(the)g │ │ │ │ │ Fj(ZV)g Fk(ob)5 b(ject.)41 b(On)29 b(the)g(other)h(hand,)e(the)i(con)m │ │ │ │ │ (v)m(enience)0 4867 y(mak)m(es)h(it)g(a)g(widely)f(used)g(ob)5 │ │ │ │ │ b(ject.)0 5179 y Fh(1.1)135 b(Data)46 b(Structure)0 5407 │ │ │ │ │ y Fk(The)30 b Fj(ZV)g Fk(structure)g(has)g(three)g(\014elds.)1927 │ │ │ │ │ 5656 y(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fk(2)p 136 100 1183 4 v │ │ │ │ │ -1365 w Fj(ZV)30 b Fg(:)g Ff(DRAFT)g Fg(Jan)m(uary)g(16,)i(2024)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 │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fk(2)p 136 100 1164 4 v │ │ │ │ │ +1346 w Fj(ZV)29 b Fg(:)i Ff(DRAFT)f Fg(F)-8 b(ebruary)30 │ │ │ │ │ +b(18,)i(2025)p 2737 100 V 137 399 a Fi(\210)45 b Fj(int)i(size)29 │ │ │ │ │ +b Fk(:)41 b(presen)m(t)30 b(size)i(of)e(the)h(v)m(ector.)137 │ │ │ │ │ 595 y Fi(\210)45 b Fj(int)i(maxsize)29 b Fk(:)40 b(maxim)m(um)30 │ │ │ │ │ b(size)i(of)e(the)h(v)m(ector.)137 791 y Fi(\210)45 b │ │ │ │ │ Fj(int)i(owned)27 b Fk(:)40 b(o)m(wner)28 b(\015ag)h(for)f(the)h(data.) │ │ │ │ │ 41 b(When)28 b Fj(owned)46 b(=)i(1)p Fk(,)28 b(storage)i(for)f │ │ │ │ │ Fj(owned)e(double)p Fk('s)f(has)j(b)s(een)227 904 y(allo)s(cated)k(b)m │ │ │ │ │ (y)d(this)h(ob)5 b(ject)31 b(and)f(can)h(b)s(e)f(free'd)g(b)m(y)h(the)f │ │ │ │ │ (ob)5 b(ject.)42 b(When)31 b Fj(owned)46 b(==)h(0)30 │ │ │ │ │ @@ -4207,17 +4212,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 1183 4 v 1364 100 a Fj(ZV)30 │ │ │ │ │ -b Fg(:)h Ff(DRAFT)121 b Fg(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2670 100 V 1183 w Fk(3)0 399 y Fd(1.2.2)112 b(Instance)38 │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1164 4 v 1345 100 a Fj(ZV)30 │ │ │ │ │ +b Fg(:)h Ff(DRAFT)121 b Fg(F)-8 b(ebruary)30 b(18,)h(2025)p │ │ │ │ │ +2689 100 V 1164 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 │ │ │ │ │ @@ -4281,19 +4286,19 @@ │ │ │ │ │ Fk(with)i(the)g(size)h(of)f(the)g(v)m(ector)h(and)e Fj(**pentries)e │ │ │ │ │ Fk(with)j(the)g(base)g(address)227 5148 y(of)e(the)f(v)m(ector.)227 │ │ │ │ │ 5294 y Ff(Err)-5 b(or)27 b(che)-5 b(cking:)36 b Fk(If)22 │ │ │ │ │ b Fj(zv)p Fk(,)i Fj(psize)d Fk(or)h Fj(pentries)e Fk(is)i │ │ │ │ │ Fj(NULL)p Fk(,)g(an)g(error)g(message)i(is)e(prin)m(ted)g(and)g(the)g │ │ │ │ │ (program)227 5407 y(exits.)p eop end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fk(4)p 136 100 1183 4 v │ │ │ │ │ -1365 w Fj(ZV)30 b Fg(:)g Ff(DRAFT)g Fg(Jan)m(uary)g(16,)i(2024)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 │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fk(4)p 136 100 1164 4 v │ │ │ │ │ +1346 w Fj(ZV)29 b Fg(:)i Ff(DRAFT)f Fg(F)-8 b(ebruary)30 │ │ │ │ │ +b(18,)i(2025)p 2737 100 V 111 399 a Fk(8.)46 b Fj(void)h(ZV_setEntry)e │ │ │ │ │ +(\()i(ZV)g(*zv,)g(int)g(loc,)f(double)h(real,)f(double)g(imag)h(\))g(;) │ │ │ │ │ +227 551 y Fk(This)30 b(metho)s(d)g(sets)g(the)h Fj(loc)p │ │ │ │ │ Fk('th)f(en)m(try)g(of)h(the)f(v)m(ector)i(to)f Fj(\(real,imag\))p │ │ │ │ │ Fk(.)227 704 y Ff(Err)-5 b(or)33 b(che)-5 b(cking:)40 │ │ │ │ │ b Fk(If)28 b Fj(zv)h Fk(is)g Fj(NULL)e Fk(or)j Fj(loc)46 │ │ │ │ │ b(<)i(0)p Fk(,)29 b(an)g(error)g(message)h(is)f(prin)m(ted)f(and)h(the) │ │ │ │ │ g(program)g(exits.)0 978 y Fd(1.2.3)112 b(Initializer)38 │ │ │ │ │ b(metho)s(ds)0 1177 y Fk(There)30 b(are)h(three)f(initializer)j(metho)s │ │ │ │ │ (ds.)111 1420 y(1.)46 b Fj(void)h(ZV_init)f(\()h(ZV)g(*zv,)g(int)g │ │ │ │ │ @@ -4367,17 +4372,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 1183 4 v 1364 100 a Fj(ZV)30 │ │ │ │ │ -b Fg(:)h Ff(DRAFT)121 b Fg(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2670 100 V 1183 w Fk(5)0 399 y Fd(1.2.4)112 b(Utilit)m(y)38 │ │ │ │ │ +TeXDict begin 5 4 bop 91 100 1164 4 v 1345 100 a Fj(ZV)30 │ │ │ │ │ +b Fg(:)h Ff(DRAFT)121 b Fg(F)-8 b(ebruary)30 b(18,)h(2025)p │ │ │ │ │ +2689 100 V 1164 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 │ │ │ │ │ @@ -4437,22 +4442,23 @@ │ │ │ │ │ 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 1183 4 v │ │ │ │ │ -1365 w Fj(ZV)30 b Fg(:)g Ff(DRAFT)g Fg(Jan)m(uary)g(16,)i(2024)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 │ │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fk(6)p 136 100 1164 4 v │ │ │ │ │ +1346 w Fj(ZV)29 b Fg(:)i Ff(DRAFT)f Fg(F)-8 b(ebruary)30 │ │ │ │ │ +b(18,)i(2025)p 2737 100 V 111 399 a Fk(8.)46 b Fj(void)h │ │ │ │ │ +(ZV_log10profile)d(\()j(ZV)g(*zv,)g(int)g(npts,)f(DV)h(*xDV,)g(DV)g │ │ │ │ │ +(*yDV,)f(double)g(tausmall,)1325 511 y(double)g(taubig,)g(int)h │ │ │ │ │ +(*pnzero,)e(int)i(*pnsmall,)f(int)g(*pnbig)h(\))g(;)227 │ │ │ │ │ +660 y Fk(This)34 b(metho)s(d)f(scans)i(the)f(en)m(tries)h(in)f(the)g │ │ │ │ │ +Fj(ZV)g Fk(ob)5 b(ject)35 b(and)f(\014lls)g Fj(xDV)f │ │ │ │ │ +Fk(and)h Fj(yDV)f Fk(with)h(data)h(that)g(allo)m(ws)227 │ │ │ │ │ 773 y(a)c(simple)f(log)703 795 y Fc(10)808 773 y Fk(distribution)f │ │ │ │ │ (plot.)41 b(Only)29 b(en)m(tries)i(whose)f(magnitudes)g(lie)h(in)e(the) │ │ │ │ │ h(range)h Fj([tausmall,)227 886 y(taubig])i Fk(con)m(tribute)j(to)g │ │ │ │ │ (the)g(distribution.)54 b(The)35 b(n)m(um)m(b)s(er)f(of)h(en)m(tries)h │ │ │ │ │ (whose)f(magnitudes)g(are)h(zero,)227 999 y(smaller)27 │ │ │ │ │ b(than)f Fj(tausmall)p Fk(,)f(or)i(larger)g(than)f Fj(taubig)f │ │ │ │ │ Fk(are)i(placed)f(in)m(to)i Fj(pnzero)p Fk(,)d Fj(*pnsmall)g │ │ │ │ │ @@ -4529,17 +4535,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 1183 4 v 1364 100 a Fj(ZV)30 │ │ │ │ │ -b Fg(:)h Ff(DRAFT)121 b Fg(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2670 100 V 1183 w Fk(7)111 399 y(6.)46 b Fj(int)h(ZV_writeToBinaryFile) │ │ │ │ │ +TeXDict begin 7 6 bop 91 100 1164 4 v 1345 100 a Fj(ZV)30 │ │ │ │ │ +b Fg(:)h Ff(DRAFT)121 b Fg(F)-8 b(ebruary)30 b(18,)h(2025)p │ │ │ │ │ +2689 100 V 1164 w Fk(7)111 399 y(6.)46 b Fj(int)h(ZV_writeToBinaryFile) │ │ │ │ │ 42 b(\()48 b(ZV)f(*zv,)g(FILE)f(*fp)h(\))h(;)227 557 │ │ │ │ │ y Fk(This)27 b(metho)s(d)f(writes)h(a)h Fj(ZV)e Fk(ob)5 │ │ │ │ │ b(ject)28 b(to)g(a)f(binary)g(\014le.)39 b(If)27 b(there)g(are)h(no)e │ │ │ │ │ (errors)h(in)g(writing)g(the)g(data,)i(the)227 670 y(v)-5 │ │ │ │ │ b(alue)31 b Fj(1)f Fk(is)h(returned.)39 b(If)30 b(an)g(IO)g(error)g(is) │ │ │ │ │ h(encoun)m(tered)f(from)g Fj(fwrite)p Fk(,)f(zero)i(is)g(returned.)227 │ │ │ │ │ 829 y Ff(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fk(If)30 │ │ │ │ │ @@ -4595,23 +4601,23 @@ │ │ │ │ │ 5140 y(data.)337 5294 y Fi(\210)45 b Fk(The)29 b Fj(inFile)f │ │ │ │ │ Fk(parameter)j(is)e(the)h(name)g(of)g(the)g(\014le)f(from)h(whic)m(h)f │ │ │ │ │ (to)h(read)g(in)f(the)h(ob)5 b(ject.)42 b Fj(inFile)427 │ │ │ │ │ 5407 y Fk(m)m(ust)31 b(b)s(e)e(of)i(the)f(form)g Fj(*.zvf)f │ │ │ │ │ Fk(for)h(a)h(formatted)g(\014le)g(or)f Fj(*.zvb)f Fk(for)h(a)h(binary)e │ │ │ │ │ (\014le.)p eop end │ │ │ │ │ %%Page: 8 8 │ │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fk(8)p 136 100 1183 4 v │ │ │ │ │ -1365 w Fj(ZV)30 b Fg(:)g Ff(DRAFT)g Fg(Jan)m(uary)g(16,)i(2024)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 │ │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fk(8)p 136 100 1164 4 v │ │ │ │ │ +1346 w Fj(ZV)29 b Fg(:)i Ff(DRAFT)f Fg(F)-8 b(ebruary)30 │ │ │ │ │ +b(18,)i(2025)p 2737 100 V 337 399 a Fi(\210)45 b Fk(The)40 │ │ │ │ │ +b Fj(outFile)f Fk(parameter)i(is)g(the)g(name)g(of)f(the)h(\014le)g(to) │ │ │ │ │ +g(whic)m(h)g(to)g(write)g(out)g(the)g(ob)5 b(ject.)72 │ │ │ │ │ +b(If)427 511 y Fj(outfile)28 b Fk(is)j(of)f(the)g(form)g │ │ │ │ │ +Fj(*.zvf)p Fk(,)f(the)h(ob)5 b(ject)31 b(is)f(written)g(to)h(a)f │ │ │ │ │ +(formatted)h(\014le.)41 b(If)30 b Fj(outfile)e Fk(is)i(of)427 │ │ │ │ │ +624 y(the)e(form)g Fj(*.zvb)p Fk(,)f(the)h(ob)5 b(ject)29 │ │ │ │ │ b(is)f(written)g(to)h(a)f(binary)f(\014le.)40 b(When)28 │ │ │ │ │ b Fj(outFile)e Fk(is)i Ff(not)h Fj("none")p Fk(,)e(the)427 │ │ │ │ │ 737 y(ob)5 b(ject)32 b(is)f(written)g(to)g(the)g(\014le)g(in)f(a)i(h)m │ │ │ │ │ (uman)e(readable)h(format.)42 b(When)31 b Fj(outFile)d │ │ │ │ │ Fk(is)j Fj("none")p Fk(,)f(the)427 850 y(ob)5 b(ject)32 │ │ │ │ │ b(is)e(not)h(written)f(out.)p eop end │ │ │ │ │ %%Page: 9 9 │ │ │ │ │ ├── ps2ascii {} │ │ │ │ │ │ @@ -22,15 +22,15 @@ │ │ │ │ │ │ Onemustchoose where to use this object. There is a substantial performance penalty for doing the │ │ │ │ │ │ simplest operations, and so when we need to manipulate an double vector inside a loop, we extract │ │ │ │ │ │ out the size and pointer to the base array from the ZV object. On the other hand, the convenience │ │ │ │ │ │ makes it a widely used object. │ │ │ │ │ │ 1.1 Data Structure │ │ │ │ │ │ The ZV structure has three fields. │ │ │ │ │ │ 1 │ │ │ │ │ │ - 2 ZV : DRAFT January 16, 2024 │ │ │ │ │ │ + 2 ZV : DRAFT February 18, 2025 │ │ │ │ │ │ • int size : present size of the vector. │ │ │ │ │ │ • int maxsize : maximum size of the vector. │ │ │ │ │ │ • int owned : owner flag for the data. When owned = 1, storage for owned double’s has been │ │ │ │ │ │ allocated by this object and can be free’d by the object. When owned == 0 but size > 0 , │ │ │ │ │ │ this object points to entries that have been allocated elsewhere, and these entries will not be │ │ │ │ │ │ free’d by this object. │ │ │ │ │ │ • double *vec : pointer to the base address of the double vector │ │ │ │ │ │ @@ -54,15 +54,15 @@ │ │ │ │ │ │ the storage for vec is free’d by a call to ZVfree(). The structure’s default fields are then set │ │ │ │ │ │ with a call to ZV setDefaultFields(). │ │ │ │ │ │ Error checking: If zv is NULL an error message is printed and the program exits. │ │ │ │ │ │ 4. void ZV_free ( ZV *zv ) ; │ │ │ │ │ │ This method releases any storage by a call to ZV clearData() then free’s the storage for the │ │ │ │ │ │ structure with a call to free(). │ │ │ │ │ │ Error checking: If zv is NULL an error message is printed and the program exits. │ │ │ │ │ │ - ZV : DRAFT January 16, 2024 3 │ │ │ │ │ │ + ZV : DRAFT February 18, 2025 3 │ │ │ │ │ │ 1.2.2 Instance methods │ │ │ │ │ │ These method allow access to information in the data fields without explicitly following pointers. │ │ │ │ │ │ There is overhead involved with these method due to the function call and error checking inside │ │ │ │ │ │ the methods. │ │ │ │ │ │ 1. int ZV_owned ( ZV *zv ) ; │ │ │ │ │ │ This method returns the value of owned. If owned > 0, then the object owns the data pointed │ │ │ │ │ │ to by vec and will free this data with a call to ZVfree() when its data is cleared by a call to │ │ │ │ │ │ @@ -91,15 +91,15 @@ │ │ │ │ │ │ This method returns vec, a pointer to the base address of the vector. │ │ │ │ │ │ Error checking: If zv is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 7. void ZV_sizeAndEntries ( ZV *zv, int *psize, double **pentries ) ; │ │ │ │ │ │ This method fills *psize with the size of the vector and **pentries with the base address │ │ │ │ │ │ of the vector. │ │ │ │ │ │ Error checking: If zv, psize or pentriesis NULL, an error message is printed and the program │ │ │ │ │ │ exits. │ │ │ │ │ │ - 4 ZV : DRAFT January 16, 2024 │ │ │ │ │ │ + 4 ZV : DRAFT February 18, 2025 │ │ │ │ │ │ 8. void ZV_setEntry ( ZV *zv, int loc, double real, double imag ) ; │ │ │ │ │ │ This method sets the loc’th entry of the vector to (real,imag). │ │ │ │ │ │ Error checking: If zv is NULL or loc < 0, an error message is printed and the program exits. │ │ │ │ │ │ 1.2.3 Initializer methods │ │ │ │ │ │ There are three initializer methods. │ │ │ │ │ │ 1. void ZV_init ( ZV *zv, int size, double *entries ) ; │ │ │ │ │ │ This method initializes the object given a size for the vector and a possible pointer to the │ │ │ │ │ │ @@ -128,15 +128,15 @@ │ │ │ │ │ │ Error checking: If zv is NULL or newmaxsize < 0, or if 0 < maxsize and owned == 0, an │ │ │ │ │ │ error message is printed and the program exits. │ │ │ │ │ │ 5. void ZV_setSize ( ZV *zv, int newsize ) ; │ │ │ │ │ │ This method sets the size of the vector. If newsize > maxsize, the length of the vector is │ │ │ │ │ │ increased with a call to ZV setMaxsize(). The size field is set to newsize. │ │ │ │ │ │ Error checking: If zv is NULL, or newsize < 0, or if 0 < maxsize < newsize and owned = │ │ │ │ │ │ 0, an error message is printed and the program exits. │ │ │ │ │ │ - ZV : DRAFT January 16, 2024 5 │ │ │ │ │ │ + ZV : DRAFT February 18, 2025 5 │ │ │ │ │ │ 1.2.4 Utility methods │ │ │ │ │ │ 1. void ZV_shiftBase ( ZV *zv, int offset ) ; │ │ │ │ │ │ This method shifts the base entries of the vector and decrements the present size and max- │ │ │ │ │ │ imum size of the vector by offset. This is a dangerous method to use because the state of │ │ │ │ │ │ the vector is lost, namely vec, the base of the entries, is corrupted. If the object owns its │ │ │ │ │ │ entries and ZV free(), ZV setSize() or ZV setMaxsize() is called before the base has been │ │ │ │ │ │ shifted back to its original position, a segmentation violation will likely result. This is a very │ │ │ │ │ │ @@ -162,15 +162,15 @@ │ │ │ │ │ │ This method fills the vector with zeros. │ │ │ │ │ │ Error checking: If zv is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 7. void ZV_copy ( ZV *zv1, ZV *zv2 ) ; │ │ │ │ │ │ This method fills the zv1 object with entries in the iv2 object. Note, this is a mapped copy, │ │ │ │ │ │ zv1 and zv2 need not have the same size. The number of entries that are copied is the smaller │ │ │ │ │ │ of the two sizes. │ │ │ │ │ │ Error checking: If zv1 or zv2 is NULL, an error message is printed and the program exits. │ │ │ │ │ │ - 6 ZV : DRAFT January 16, 2024 │ │ │ │ │ │ + 6 ZV : DRAFT February 18, 2025 │ │ │ │ │ │ 8. void ZV_log10profile ( ZV *zv, int npts, DV *xDV, DV *yDV, double tausmall, │ │ │ │ │ │ double taubig, int *pnzero, int *pnsmall, int *pnbig ) ; │ │ │ │ │ │ This method scans the entries in the ZV object and fills xDV and yDV with data that allows │ │ │ │ │ │ a simple log10 distribution plot. Only entries whose magnitudes lie in the range [tausmall, │ │ │ │ │ │ taubig] contribute to the distribution. The number of entries whose magnitudes are zero, │ │ │ │ │ │ smaller than tausmall, or larger than taubig are placed into pnzero, *pnsmall and *pnbig, │ │ │ │ │ │ respectively. On return, the size of the xDV and yDV objects is npts. │ │ │ │ │ │ @@ -199,15 +199,15 @@ │ │ │ │ │ │ and returns the value returned from the called routine. │ │ │ │ │ │ Error checking: If zv or fn are NULL, or if fn is not of the form *.zvf (for a formatted file) │ │ │ │ │ │ or *.zvb (for a binary file), an error message is printed and the method returns zero. │ │ │ │ │ │ 5. int ZV_writeToFormattedFile ( ZV *zv, FILE *fp ) ; │ │ │ │ │ │ This method writes a ZV object to a formatted file. If there are no errors in writing the data, │ │ │ │ │ │ the value 1 is returned. If an IO error is encountered from fprintf, zero is returned. │ │ │ │ │ │ Error checking: If zv or fp are NULL, an error message is printed and zero is returned. │ │ │ │ │ │ - ZV : DRAFT January 16, 2024 7 │ │ │ │ │ │ + ZV : DRAFT February 18, 2025 7 │ │ │ │ │ │ 6. int ZV_writeToBinaryFile ( ZV *zv, FILE *fp ) ; │ │ │ │ │ │ This method writes a ZV object to a binary file. If there are no errors in writing the data, the │ │ │ │ │ │ value 1 is returned. If an IO error is encountered from fwrite, zero is returned. │ │ │ │ │ │ Error checking: If zv or fp are NULL, an error message is printed and zero is returned. │ │ │ │ │ │ 7. int ZV_writeForHumanEye ( ZV *zv, FILE *fp ) ; │ │ │ │ │ │ This method writes a ZV object to a file in a human readable format. is called to write out │ │ │ │ │ │ the header and statistics. The entries of the vector then follow in eighty column format using │ │ │ │ │ │ @@ -232,15 +232,15 @@ │ │ │ │ │ │ • The msglvl parameter determines the amount of output. Use msglvl = 1 for just │ │ │ │ │ │ timing output. │ │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ │ message file is stdout, otherwise a file is opened with append status to receive any output │ │ │ │ │ │ data. │ │ │ │ │ │ • The inFile parameter is the name of the file from which to read in the object. inFile │ │ │ │ │ │ must be of the form *.zvf for a formatted file or *.zvb for a binary file. │ │ │ │ │ │ - 8 ZV : DRAFT January 16, 2024 │ │ │ │ │ │ + 8 ZV : DRAFT February 18, 2025 │ │ │ │ │ │ • The outFile parameter is the name of the file to which to write out the object. If │ │ │ │ │ │ outfile is of the form *.zvf, the object is written to a formatted file. If outfile is of │ │ │ │ │ │ the form *.zvb, the object is written to a binary file. When outFile is not "none", the │ │ │ │ │ │ object is written to the file in a human readable format. When outFile is "none", the │ │ │ │ │ │ object is not written out. │ │ │ │ │ │ Index │ │ │ │ │ │ ZV clearData(), 2 │ │ │ ├── ./usr/share/doc/spooles-doc/misc.ps.gz │ │ │ │ ├── misc.ps │ │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ │ %%EndComments │ │ │ │ │ %%BeginDefaults │ │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ │ %%EndDefaults │ │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ │ %DVIPSCommandLine: dvips main -o misc.ps │ │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ │ -%DVIPSSource: TeX output 2024.01.16:2047 │ │ │ │ │ +%DVIPSSource: TeX output 2025.02.18:0318 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -2252,20 +2252,21 @@ │ │ │ │ │ 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 52 /four put │ │ │ │ │ -dup 54 /six put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ +dup 56 /eight put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 74 /J put │ │ │ │ │ +dup 70 /F put │ │ │ │ │ dup 97 /a put │ │ │ │ │ -dup 110 /n put │ │ │ │ │ +dup 98 /b put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ dup 114 /r put │ │ │ │ │ dup 117 /u put │ │ │ │ │ dup 121 /y put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ @@ -2449,89 +2450,93 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004E075961 │ │ │ │ │ -88009C56E0A43A9F2C854AB15BE89F440EA595FC1B79E3B328B583C840EF718E │ │ │ │ │ -EA8EE6B6C64D7325289DCFFBDEE1D1D14B28E009E5ECBF7626D8440C676974C4 │ │ │ │ │ -1AFCC4688D674C01A6D8AC619A4A13B1259FC65826315E692F52273D5761C841 │ │ │ │ │ -B4D14DBE9F11DCC4AFF9A3309A4AEE4ABFCD80A3ED6EC056A499666D4E637044 │ │ │ │ │ -38E6795EACA5B1CCB1C87577CABB7247FFED46CE6ECE2330348701D7987E6B5A │ │ │ │ │ -C673340DE61033E7EBE83890DEFF32BCAE034D5CF098F16F768D9A1BD46465F3 │ │ │ │ │ -DAE58EA38E5B582263A7D86B9AD5A0AD75CA7A5A0017FF9530FF80EA907ED3CD │ │ │ │ │ -E05C9AB9209F8DC8447847C16AC02318B17AA985A38B2C77229F5E0E3DA8D1F3 │ │ │ │ │ -48D6A7F86D814CCBE85133B3A304AF0A4AA65CC750BACC5832EA38CBF518502A │ │ │ │ │ -C870C2C62A59B8E1C43ED26F67554DDA93D517BE7D02E2E2A7A1ED987B15CC66 │ │ │ │ │ -6EE748DC6D3D47C3140FEAA6B1F51F65F93F012979042C202AC1C5BFE6099F23 │ │ │ │ │ -11A368430D1E88B76FF2977CD6859CFF2A62EB3710FEFC5D94F33A6F92BB6407 │ │ │ │ │ -1C951C4DD719F45837007148345E618FEC7831D2FB2E065AD51E6486A3EACE14 │ │ │ │ │ -A9DB4EDE59F047B0A427B2D2727CA1DDD368515047DDB3F8DF1B641EAC906A5E │ │ │ │ │ -F0F90AD3D954ADBF727DC0F768139AF1B968686786BB1EEEF05D87F79CE677BE │ │ │ │ │ -EE9128D56339B7BE51E257D88D2566B2F56C2B68882D28C05BCB8669C2CC14D1 │ │ │ │ │ -033335086550B3D464A7594E63D0D49FE8CB42D48D30BCBF3F94E3900E791C66 │ │ │ │ │ -A4A7D132F329E749CA524649436C598A9134939CDF977EA3DDE10FF3107E893C │ │ │ │ │ -468410BE9B77F571043CE5F8AC8EB42E8D017930E25D8A71FF9C085003EBB4F4 │ │ │ │ │ -3D271F5B16B1AAD3EBDC391F534AA46E545E9D8659DD19B309C3B7625A8396FA │ │ │ │ │ -2519464539D46E43ACB72952313C8497315E0319C08628023E8FC54D7D3BAC29 │ │ │ │ │ -D5AD8EFDABF0C33C7AFB7151A6606C62A87F0F5F783569AC4C881A992E3FE420 │ │ │ │ │ -297F7BC5147F3B2FA98450D2F8B07F7D229BC8BE06729920CFEC22556740E1CB │ │ │ │ │ -3DE09AC763C6D4A20AD1599C368FABD07BC35C16683F2A0311A88983415A9140 │ │ │ │ │ -2EFC4BC1B10DCAD4B2B8A28510E5BD39D6616D2B9B079ED3CF9C315B7DEC29D9 │ │ │ │ │ -251DFD0194B34EC175964C23383F23FFB2E41B698C405815D65EAFF9E9DD1DDE │ │ │ │ │ -30F77924656C288B8DDB2E5B0E7B1FAA66791DE3848EE6DE63AD0E945E49C6C7 │ │ │ │ │ -9FCA16E01F027F9EF7ACB55F02F5B0136480802F789F6FE14B430879979BA04D │ │ │ │ │ -F481AD4CF47E6847936F377FB04869F9A80E597301BFCAB718D8764094673876 │ │ │ │ │ -BCEF8FA3701608C84B3A0399A11D2E6AD922CCB7D72AF9EBFB30F4648A37A123 │ │ │ │ │ -CB8FB14BDC351692CF0CCAA5CA9383C2B23BAAA38700327EB743FBBE9EE04041 │ │ │ │ │ -13F5CEF4B3881BBC051C33369A82B3505B1CFD7D91AEF2E43EA728EE48E2D854 │ │ │ │ │ -5A7E516998ACDD4FD835FA901C5A21810A56D51FE919B2E58408EEB4DAEB487F │ │ │ │ │ -BA7F1D292CED902DF3533566D96DAD918319EA650D4FC7D9E0170CDE620F755B │ │ │ │ │ -0E7AE02D9B118481B26F5FF7060FBCFA2A682B6826F00679BCDA68794C05286D │ │ │ │ │ -B616DD08372ACDE0AE6E7EF116F0D36F16241ED4F0E8CCD80377792E3BB1343C │ │ │ │ │ -EEB22CC77738F7CBCBA32CF6C3979F6DF7ED81A89AE8928FD7CC550F2730BA88 │ │ │ │ │ -1B51CEDC63F4C47F261AFCAB7AC3CED20B15C97E714A460A1A3B16436B4A5149 │ │ │ │ │ -8F91DA4BE0B9B648534CE5F442117036B602DC91E2852BEA62F55803B833FDF7 │ │ │ │ │ -9F901AB87489E703DDEED1091A79DC73B4440BBBF2C7592B441187C4A3562204 │ │ │ │ │ -859F08BA3CE2A8ECCD5AAD13C50FB806FE79A388F1822C5608837CBDE526A044 │ │ │ │ │ -12E5CDE4A066932AF2ACA7E8FC6BA4603640944718752975B7DA6E906BE1EA01 │ │ │ │ │ -46736FF5D1AA1CC682D011B6039CF98C35E36D4F14ABC84A38B7203CC9A17756 │ │ │ │ │ -B2B0345276798F1A88A54AD9FEA0853C6DDF28525ED4F0B7380D14147012C2A4 │ │ │ │ │ -5B02888C986C76497EA4C729B0B82EE73C1A1A8E8F1ABF401E341028E9C15AF9 │ │ │ │ │ -354706D8DC07492921AD0932A46736C0D1B066D00287DACCC068FAE6A796EC89 │ │ │ │ │ -54D1D73AA88F3A5912BA9D3FF70065C8D0D0DAD1CD846501E06694374EFDBEC6 │ │ │ │ │ -931F644D5E8494AFC742423AD9A487658E310E0682BE19B8475F4D450487A686 │ │ │ │ │ -2B94494DEAF1C0F59DE82F2CE64BEE5E97F942FCFA1187ED6AA5761E951A7BF7 │ │ │ │ │ -9F842E34A4656C58B35A9E99F7E6762CEE11E0CF59FFD75D7382C5EE6DBB43F1 │ │ │ │ │ -ED219071D3FB22DBA90977723BB467C0490D042684C0724F40DCA3E0D8F1F4E7 │ │ │ │ │ -3C4F9A67BE6528185EAAFDD415224F7E256A4EA00111C17C746CBD80BF569A27 │ │ │ │ │ -D81195D7F79C1CCEEF30ED00D49F48B63E4B8D7953403A3710AE953CC1B76F0F │ │ │ │ │ -F523D777A6A186F262A602543F94AF7471DBE25FEBC207DB42DAF7DC9A5781FB │ │ │ │ │ -2131AD42869D966A734AAE3466DF1CE9D1BCFA72409A558C0AEE6A8E2FEAACB6 │ │ │ │ │ -2CDABCC28433034848ACF9FB4465D272E4AFC48572647F05F41C7A293CC5B595 │ │ │ │ │ -AD31555FB708A72962707348BC7033A8224BD42EB9D75FDF3AE9E6A9C960B330 │ │ │ │ │ -5137DF59F8E2E0D535F41524ABDF070745A4FA25CD8DFD38A5FF30A95452B875 │ │ │ │ │ -6569E8812631300D79A942C563AF174AC05C9F2D09D7D5D3C605F5A6B7F21B34 │ │ │ │ │ -18F270A993B050838E701A17938D1C156CBA7CA4BAC7C562CE9D7B758EAB25A9 │ │ │ │ │ -A6DFFC71F65561341847B776DF34061CE3D439B87B857626987EC93B3B95B8E8 │ │ │ │ │ -76FFB16B263675333FA10414FEED707FF7C366BF8B20FF8577CDEBEBCF1A5BCE │ │ │ │ │ -258C09C90175A5278B7C444A623E3331FDE5A6387B3E389540ED1E7E883958F3 │ │ │ │ │ -3A5C89CCD62256FA069DF4A5090FB17C1F1757C9209DAFB8A1F47182BF3E88D9 │ │ │ │ │ -0B5376B59EE165A761902759C8ED7F5AD301E7EB8B49CC09AF921DB45B7F8002 │ │ │ │ │ -AB32E73AAE53942DE0F9175D8446017006C9C0B93EF39C13B7A879F2F6DDFF16 │ │ │ │ │ -204BB24F976847CF006FD29332FCCB255B5116F7077A44F7066C39C81DC4BAD2 │ │ │ │ │ -40DB2753626C0102E5D047522ABC38EA294A699B8DFD9CA0A7980561A1062E90 │ │ │ │ │ -AB11EE286A9C238D9F721D9980D0A1828C2814972622D948CEE8C812C19A9A03 │ │ │ │ │ -608ED0AC138A436FFBF8BE3D1E66C87793416AF38ED9BC5424568A175FBDAA9E │ │ │ │ │ -D6FC11A7021693819B051562B5A59F32629E2D6019D69DD329BE1894A2B295E1 │ │ │ │ │ -1DCE9683B29AE126C56F26E5C595BF1A8249BDE231DBE8B066F7F62EF149B975 │ │ │ │ │ -A863969A4690504A5EA064721DA909B8157C0B39FBF8228D95CB655E406161E1 │ │ │ │ │ -148610FAEED7C5509880223C06A66DA19E10F94DC2DB481B26 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004FD597ED │ │ │ │ │ +EFDBC64ABD9B79386FB2427D1A63522195B1239C09F8CB3F8BD7A245A6DD82E3 │ │ │ │ │ +260C3889587626DFC5F7978E55F5524ABD6A3319CDD3D3F40D040044D51DA4E1 │ │ │ │ │ +6797EEAC7AA07C77EC6DB0E6E182B545A8BEF63B14F3FC07BAC09E7CD5C17ED6 │ │ │ │ │ +10080704B0DA4E9BA12F968DF8A58458D17E9A5B1F14A83DC51F5B161ADEE1CC │ │ │ │ │ +0183D82ED92C6FC7203C289949EDF0284D9893029FF5408E421324625F17C3E5 │ │ │ │ │ +2437C8F75A9D68EE1AF9174FEA6FC6BF793C7D2E497EA90396CF1A645E283B69 │ │ │ │ │ +8425F47C323587DF91E1D596DCB1E3A787C955D9D965A5E3E26ADF58B62AD5F9 │ │ │ │ │ +0C9AC784DE479780606354111E3202F215650DBBE1063A46F3C10B9EBC974DDA │ │ │ │ │ +A1A28DBBD43E9E5BFF000B12C787D0427928078F8EC5FE90DED97E6C129E8DEA │ │ │ │ │ +51F66504DB83764E52B0BA68DF7BE684C8959CB1D3345CC48221A9A4683306C0 │ │ │ │ │ +62B634E0A539383F0C7A788D9711EFF414869CCC5659D78CEBE009BF2463F56A │ │ │ │ │ +0ADC993348FE96DF7C250E13ED6504AACFE8F8DCA2D2048D9D8CFA127D363EAC │ │ │ │ │ +1F0630E2D1B621E6954038195D965B91FD974FA3F1B8B29D200A16CEBA645E2F │ │ │ │ │ +CEEE6FD49FBBD49E38AE67D4BFFCE91F1FC422554EC4409C5FA18D40FCD6D9B3 │ │ │ │ │ +2185ED1E0F98106D4339F086B05CA36E56EC22C60E2CE23F9C4CC403ACAD3F94 │ │ │ │ │ +4086B4DF6DFA0B7B4716417263E7B558535566AED2F6C2F9846A16D71A7930A7 │ │ │ │ │ +49232D3D16C4A01CF1A1998A06F40062ED329179A85668537C55D0BC24FC0010 │ │ │ │ │ +54DA83E2FC66B2A5D428E6A9BFC983253668C0ECE6CA36DBF97C4B7659D50842 │ │ │ │ │ +C65B36604840EEDA399B57E2DEFAC3E7FB031634CE33D04238F9854D2AAAF448 │ │ │ │ │ +34DA5F3BCCED3166FEEE82BB0BBA0A397CC2F95865CB52AABFF454D93B425809 │ │ │ │ │ +A26AC459F321FD23E2262FE816D06BAAECF32AAF167F84799AF80F9F88388D07 │ │ │ │ │ +0DB5FD57AFEE2850A8DFE977E6AE39CB3DC16DB1A163A583C86C6F775CE33521 │ │ │ │ │ +0081C0BBBAD6D30D26C66B28B38CEAC78FEA5FB3CC5853656B67C6D9D80EB30E │ │ │ │ │ +397558C9179AF5920F34DAB3F578DFCF0DBB137AED17D6325C23883E69EE4621 │ │ │ │ │ +34355A70C19EA68891E1CA937376901C85CDEE109F1665943E29A216DC00937A │ │ │ │ │ +B983A729A4654AD09187C0242D52FA4ADD0853EF4888864914D7D81C56578DD4 │ │ │ │ │ +3B51907032022E6E412D4F114675DEDCA8A9E85DC03A0B583FECD84432D15F70 │ │ │ │ │ +01F627BD6EC91F9FCFDA01BF40E1229B5F164309DBB641AD50970503DA2048C1 │ │ │ │ │ +DF8F36E8D252EE113F0B46677D9BAF376BAE18D74CFB0DBBD0C7E9D0A58BA3ED │ │ │ │ │ +1E5099CAE073EB5638617760AB57849893764EA9735173CD1EAB66884CEA7EE3 │ │ │ │ │ +8843327B2E145BD6FBB49102776B82BC511D109F8BE9E7E99DADABABEDC3CFD9 │ │ │ │ │ +393578FFD85907DFF2849E4CDE6FA4DEC7E1C150EBE4047FFB650F9548BE6D11 │ │ │ │ │ +0C51226A5436F18BF20A02E0F888F46B6AC3A8E8D927ECD3B5E095933AD3859F │ │ │ │ │ +5167C41D832EFCC4093BD2AFA7101AB430E57DAFC3590F05D3CBABB32BC203A0 │ │ │ │ │ +467B23BDB830487C9AA5B85BAC065F8538871B4180F8C4732E637DB090CFDE5A │ │ │ │ │ +3F4F2B5BFAFB848BAAD1A17CB076B34159601639BD93ECAB1214ACABF2C67FE2 │ │ │ │ │ +0658AA20B08681070FF56F1CC52144ABA8765D6E124D1CEA9BBA102808CE1BB2 │ │ │ │ │ +5EDF46BC7BBC2A5B49EE6EC28F5797A3969B057B21FCDBBD0E60848FF14F6CA3 │ │ │ │ │ +70F3060BDBB019B22722C99C7691760F013763B7FBEB62830AE215F195BF9F01 │ │ │ │ │ +21BF4377397E89574CFA47D123AA506A570A77BA6EB4AAB0B237A26154880293 │ │ │ │ │ +3952F832F72ECCB024F02385E5EE8566B165904B594E30D0700D033C6B429F6F │ │ │ │ │ +2A20BC774F442BC9CE29FCC81807C2768A8BC927A215558FBF36DC53F477F04A │ │ │ │ │ +41DA66E1A85B659EB761230977EAD7DA0150513D3323B143D4E2A61BCF03334C │ │ │ │ │ +C0EE3E1B06CFAF58ECC910BD81F0352B75FF1594D6A4EF504232D442174BE766 │ │ │ │ │ +0F8E703F97E21D25D4CD097549C31FEE7017C3916EFB02E7BF869172889827B6 │ │ │ │ │ +A48465EB7612BA3DBC6A9436C7167F149A25CE9F8E3F4F8DE3B5ADF6C0986CB3 │ │ │ │ │ +3A7E2DAB44AB489796461536F5F713017F2620AD03295CAE9285F08974AE0DF8 │ │ │ │ │ +D739260929619B509491AFF09C4CAEF9E65C2CA69470C907ECBF3AB6C955360D │ │ │ │ │ +05ABAC306DB51122A1ADC7EF0DD70FA299A45C505A83727D4598C86319EE9C06 │ │ │ │ │ +7218EFD4F40388354BCF1B79593D5AD221DF955D081F99F880E5CED07321AB3E │ │ │ │ │ +A2FCB8B05D54807D8E15E65B78DCE12989B9276350080C905DBB74CE9AA7E246 │ │ │ │ │ +5D3BAED292C562D4CF54617FCC6654496C7996D1ECE1EFF9258716AB763A12E6 │ │ │ │ │ +316E4C5587351A6DB011F58F6A15BC28BEBDC3836E0CB892807FEC228DC1B380 │ │ │ │ │ +92F7F42279F08D60F13D6A4CB425543C3644461461CBF6F27B6603F613D1FCF8 │ │ │ │ │ +A8410AD82D1498166AEB35D4125D7E2ADEAAB18BC04806AED53513F066E5F154 │ │ │ │ │ +3E13E863C50B9814EE2FB978D0D24A03FAF650CB6E2CADF1E6BE6BAF699AFC03 │ │ │ │ │ +E1A0EEB207B3B9A689ED5B373FE86686AD230BE6C18E1673DDA50E224B343EC5 │ │ │ │ │ +903BA0C8041C13607B50D5852AC7970B15C244E6EBA7D54B3086312CF04761D6 │ │ │ │ │ +7D3D75D51F20C371494AB81AB4A9838B20B483B851D01FEF41EA5C0B4755B964 │ │ │ │ │ +EB6E9B178051C556A010994EB88EAE641F4C1A0D7E0F98D5267E18AEF1AEA7E7 │ │ │ │ │ +9030A97DF89AFF621981C33B645FFB5F3BB2065A7661D11B26E0999561DF3580 │ │ │ │ │ +4A76A05DFAF8085525F8D5C01936F03C32E26E72569371C9EA3B8916F9DFC5FC │ │ │ │ │ +6A6F25A0FFDB981BA8B896393D75774D50828E6ADE903C45406E354703A4BC56 │ │ │ │ │ +2C49A47FEAC970DC433E3050C49F7FB945A9705BD8852D2D65D935F244D3B423 │ │ │ │ │ +EFAB84AAAAB8FBAFF50AFF372A533BCCEB5FC273DBADCF715776DF02A5DCBA9A │ │ │ │ │ +FBF265FAB4745D6475B33611EEE1EA95E7584E0BEEC7CA789AA69C8D03D6F8C0 │ │ │ │ │ +5B6844E2B901ACA560C0433B053D134866E567425174E47173679AAD4486A2D3 │ │ │ │ │ +369C29E4DD2CD6ACA1BE80ED8FF0A9C58A616D26E758BD8E6342624EC83FB590 │ │ │ │ │ +BD354B52B60BB054FAFE9AC63E1564FBC721FE8F276B0413EC89A2C85E5ED1B0 │ │ │ │ │ +3A9D83BE62A4488ADE7CE69971A8AF7E5862A4290EEF6F00D4171C7FFB360065 │ │ │ │ │ +92E72BF02BE27161AE0BB5516572A0BDC4F316FFB24B38484AC8D1FD4CD86062 │ │ │ │ │ +A2B5D03CF28C3A679C039A6EFDD4C9DA7E463AD60234C9F6BBEE48D87DD94D85 │ │ │ │ │ +842F495F3E25723718682CE4D6224CBBF4456F03077EDF736D65B9DDAB09470E │ │ │ │ │ +17742D82011FFA96BFE86B96E858F9352FCD20C3D46B77DBDEE54336EC2249EA │ │ │ │ │ +211F6DFFF5BEA1E5192BE1BAC0BDD5EDDB3D56C6F7C6E543561A0B39E5C1B04F │ │ │ │ │ +C683A7516B6E69D682455386DDA709929D621FA434D403E895AA0A77DBE1DFD2 │ │ │ │ │ +0D060DF82378880147ED97C6E8149686FA048710B113760AC1DA4512FF8556B3 │ │ │ │ │ +16E2447485B8C3CD58D0469C4A45FFB4CB0322BB284C02 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -5639,40 +5644,41 @@ │ │ │ │ │ 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 1[45 1[45 45 45 │ │ │ │ │ -3[25 44[{}13 90.9091 /CMSL10 rf /Fi 234[71 71 17[71 1[71{}4 │ │ │ │ │ -90.9091 /CMSY10 rf /Fj 136[60 42 49 30 37 38 1[46 46 │ │ │ │ │ -51 74 23 42 1[28 46 42 1[42 46 42 42 46 12[65 1[66 3[68 │ │ │ │ │ -7[59 62 69 2[68 6[28 12[33 45[{}29 90.9091 /CMTI10 rf │ │ │ │ │ -/Fk 134[59 1[81 1[62 44 44 46 1[62 56 62 93 31 2[31 62 │ │ │ │ │ -56 1[51 62 50 1[54 12[78 5[88 106 67 4[88 18[56 56 56 │ │ │ │ │ -56 2[31 1[31 44[{}29 99.6264 /CMBX12 rf /Fl 130[48 1[48 │ │ │ │ │ -48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 │ │ │ │ │ -48 48 48 48 48 48 48 48 1[48 1[48 48 48 1[48 48 1[48 │ │ │ │ │ -48 48 48 48 48 48 48 48 48 48 2[48 48 48 48 48 48 48 │ │ │ │ │ -48 48 2[48 48 1[48 48 1[48 48 48 1[48 48 48 48 48 1[48 │ │ │ │ │ -48 48 48 48 48 48 48 5[48 33[{}75 90.9091 /CMTT10 rf │ │ │ │ │ -/Fm 140[62 9[62 5[62 21[62 77[{}4 119.552 /CMTT12 rf │ │ │ │ │ -/Fn 134[71 2[71 75 52 53 55 1[75 67 75 112 3[37 75 67 │ │ │ │ │ -41 61 75 60 1[65 16[92 11[103 17[67 67 2[37 46[{}23 119.552 │ │ │ │ │ -/CMBX12 rf /Fo 132[52 59[49 63[{}2 90.9091 /CMBX10 rf │ │ │ │ │ -/Fp 131[91 45 40 48 48 66 48 51 35 36 36 48 51 45 51 │ │ │ │ │ -76 25 48 28 25 51 45 28 40 51 40 51 45 3[25 45 25 3[93 │ │ │ │ │ -1[68 66 51 2[62 71 68 83 3[33 68 1[59 62 69 66 1[68 3[71 │ │ │ │ │ -1[25 25 45 45 45 45 45 45 45 45 45 45 1[25 30 25 2[35 │ │ │ │ │ -35 25 4[45 19[76 51 51 53 11[{}70 90.9091 /CMR10 rf /Fq │ │ │ │ │ -134[123 123 3[90 1[95 2[116 129 4[65 3[106 129 103 25[87 │ │ │ │ │ -73[{}11 206.559 /CMBX12 rf /Fr 140[106 9[106 5[106 21[106 │ │ │ │ │ -77[{}4 206.559 /CMTT12 rf /Fs 139[75 1[79 1[108 7[108 │ │ │ │ │ -2[88 3[94 29[140 17[97 49[{}8 172.188 /CMBX12 rf end │ │ │ │ │ +3[51 2[36 12[40 2[51 45 26[59 11[25 1[45 2[45 2[45 45 │ │ │ │ │ +45 3[25 44[{}14 90.9091 /CMSL10 rf /Fi 234[71 71 17[71 │ │ │ │ │ +1[71{}4 90.9091 /CMSY10 rf /Fj 136[60 42 49 30 37 38 │ │ │ │ │ +1[46 46 51 74 23 42 1[28 46 42 1[42 46 42 42 46 12[65 │ │ │ │ │ +1[66 3[68 7[59 62 69 2[68 6[28 12[33 45[{}29 90.9091 │ │ │ │ │ +/CMTI10 rf /Fk 134[59 1[81 1[62 44 44 46 1[62 56 62 93 │ │ │ │ │ +31 2[31 62 56 1[51 62 50 1[54 12[78 5[88 106 67 4[88 │ │ │ │ │ +18[56 56 56 56 2[31 1[31 44[{}29 99.6264 /CMBX12 rf /Fl │ │ │ │ │ +130[48 1[48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 │ │ │ │ │ +48 48 48 48 48 48 48 48 48 48 48 48 1[48 1[48 48 48 1[48 │ │ │ │ │ +48 1[48 48 48 48 48 48 48 48 48 48 48 2[48 48 48 48 48 │ │ │ │ │ +48 48 48 48 2[48 48 1[48 48 1[48 48 48 1[48 48 48 48 │ │ │ │ │ +48 1[48 48 48 48 48 48 48 48 5[48 33[{}75 90.9091 /CMTT10 │ │ │ │ │ +rf /Fm 140[62 9[62 5[62 21[62 77[{}4 119.552 /CMTT12 │ │ │ │ │ +rf /Fn 134[71 2[71 75 52 53 55 1[75 67 75 112 3[37 75 │ │ │ │ │ +67 41 61 75 60 1[65 16[92 11[103 17[67 67 2[37 46[{}23 │ │ │ │ │ +119.552 /CMBX12 rf /Fo 132[52 59[49 63[{}2 90.9091 /CMBX10 │ │ │ │ │ +rf /Fp 131[91 45 40 48 48 66 48 51 35 36 36 48 51 45 │ │ │ │ │ +51 76 25 48 28 25 51 45 28 40 51 40 51 45 3[25 45 25 │ │ │ │ │ +3[93 1[68 66 51 2[62 71 68 83 3[33 68 1[59 62 69 66 1[68 │ │ │ │ │ +3[71 1[25 25 45 45 45 45 45 45 45 45 45 45 1[25 30 25 │ │ │ │ │ +2[35 35 25 4[45 19[76 51 51 53 11[{}70 90.9091 /CMR10 │ │ │ │ │ +rf /Fq 134[123 123 3[90 1[95 2[116 129 4[65 3[106 129 │ │ │ │ │ +103 25[87 73[{}11 206.559 /CMBX12 rf /Fr 140[106 9[106 │ │ │ │ │ +5[106 21[106 77[{}4 206.559 /CMTT12 rf /Fs 139[75 1[79 │ │ │ │ │ +1[108 7[108 2[88 3[94 29[140 17[97 49[{}8 172.188 /CMBX12 │ │ │ │ │ +rf end │ │ │ │ │ %%EndProlog │ │ │ │ │ %%BeginSetup │ │ │ │ │ %%Feature: *Resolution 600dpi │ │ │ │ │ TeXDict begin │ │ │ │ │ %%BeginPaperSize: Letter │ │ │ │ │ /setpagedevice where │ │ │ │ │ { pop << /PageSize [612 792] >> setpagedevice } │ │ │ │ │ @@ -5723,46 +5729,47 @@ │ │ │ │ │ Fp(,)30 b Fl(south)g Fp(or)h Fl(bottom)e Fp(are)i(less)g(than)g(or)g │ │ │ │ │ (equal)g(to)h(zero,)g(of)f(if)g Fl(east)25 b Fi(\025)h │ │ │ │ │ Fl(n1)o Fp(,)32 b(of)f(if)g Fl(north)24 b Fi(\025)i Fl(n2)p │ │ │ │ │ Fp(,)31 b(of)g(if)227 5407 y Fl(top)25 b Fi(\025)g Fl(n3)o │ │ │ │ │ Fp(,)31 b(an)f(error)g(message)h(is)g(prin)m(ted)f(and)g(the)g(program) │ │ │ │ │ g(exits.)1927 5656 y(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fp(2)p 136 100 1130 4 v │ │ │ │ │ -1312 w Fl(Misc)29 b Fh(:)41 b Fj(DRAFT)30 b Fh(Jan)m(uary)g(16,)i(2024) │ │ │ │ │ -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 │ │ │ │ │ -b(is)g(one)h(imp)s(ortan)m(t)f(di\013erence)h(b)s(et)m(w)m(een)g(this)f │ │ │ │ │ -(metho)s(d)g(and)g Fl(mkNDperm\(\))d Fp(ab)s(o)m(v)m(e;)33 │ │ │ │ │ -b(this)e(metho)s(d)227 1255 y(\014nds)c Fj(double-wide)i │ │ │ │ │ -Fp(separators,)h(necessary)f(for)g(an)f(op)s(erator)h(with)g(more)f │ │ │ │ │ -(than)h(nearest)g(neigh)m(b)s(or)f(grid)227 1368 y(p)s(oin)m(t)k │ │ │ │ │ -(coupling.)45 b(The)31 b(metho)s(d)g(calls)i(itself)g(recursiv)m(ely)-8 │ │ │ │ │ -b(.)46 b(T)-8 b(o)32 b(\014nd)e(the)i(p)s(erm)m(utation)g(for)f(an)h │ │ │ │ │ -Fl(n1)47 b(x)h(n2)227 1480 y(x)g(n3)29 b Fp(grid,)i(call)227 │ │ │ │ │ -1667 y Fl(mkNDperm\(n1,)45 b(n2,)i(n3,)g(newToOld,)e(0,)i(n1-1,)f(0,)i │ │ │ │ │ -(n2-1,)e(0,)h(n3-1\))f(;)227 1854 y Fp(from)30 b(a)h(driv)m(er)f │ │ │ │ │ -(program.)227 1998 y Fj(Err)-5 b(or)39 b(che)-5 b(cking:)49 │ │ │ │ │ -b Fp(If)34 b Fl(n1)p Fp(,)i Fl(n2)e Fp(or)h Fl(n3)g Fp(are)g(less)g │ │ │ │ │ -(than)g(or)g(equal)h(to)f(zero,)i(or)e(if)g Fl(newToOld)e │ │ │ │ │ -Fp(is)i Fl(NULL)p Fp(,)f(or)h(if)227 2111 y Fl(west)p │ │ │ │ │ -Fp(,)30 b Fl(south)g Fp(or)h Fl(bottom)e Fp(are)i(less)g(than)g(or)g │ │ │ │ │ -(equal)g(to)h(zero,)g(of)f(if)g Fl(east)25 b Fi(\025)h │ │ │ │ │ -Fl(n1)o Fp(,)32 b(of)f(if)g Fl(north)24 b Fi(\025)i Fl(n2)p │ │ │ │ │ -Fp(,)31 b(of)g(if)227 2224 y Fl(top)25 b Fi(\025)g Fl(n3)o │ │ │ │ │ -Fp(,)31 b(an)f(error)g(message)h(is)g(prin)m(ted)f(and)g(the)g(program) │ │ │ │ │ -g(exits.)111 2399 y(3.)46 b Fl(void)h(localND2D)e(\()j(int)f(n1,)f(int) │ │ │ │ │ -h(n2,)g(int)g(p1,)g(int)g(p2,)1039 2511 y(int)g(dsizes1[],)e(int)h │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fp(2)p 136 100 1111 4 v │ │ │ │ │ +1293 w Fl(Misc)29 b Fh(:)41 b Fj(DRAFT)30 b Fh(F)-8 b(ebruary)30 │ │ │ │ │ +b(18,)i(2025)p 2789 100 V 111 399 a Fp(2.)46 b Fl(void)h(mkNDperm2)e │ │ │ │ │ +(\()j(int)f(n1,)f(int)h(n2,)g(int)g(n3,)g(int)g(newToOld[],)e(int)i │ │ │ │ │ +(west,)1039 511 y(int)g(east,)f(int)h(south,)f(int)h(north,)f(int)h │ │ │ │ │ +(bottom,)f(int)h(top)f(\))i(;)227 655 y Fp(This)c(metho)s(d)f(this)i(v) │ │ │ │ │ +m(ector)g(\014lls)f(a)h(p)s(erm)m(utation)f(v)m(ector)i(with)e(the)h │ │ │ │ │ +(nested)f(dissection)h(new-to-old)227 768 y(ordering)30 │ │ │ │ │ +b(of)h(the)f(v)m(ertices)j(for)d(the)g(subgrid)f(de\014ned)g(b)m(y)i │ │ │ │ │ +(no)s(des)e(whose)h(co)s(ordinates)h(lie)h(in)227 955 │ │ │ │ │ +y Fl([west,)46 b(east])h(x)g([south,)f(north])g(x)i([bottom,)d(top].) │ │ │ │ │ +227 1142 y Fp(There)31 b(is)g(one)h(imp)s(ortan)m(t)f(di\013erence)h(b) │ │ │ │ │ +s(et)m(w)m(een)g(this)f(metho)s(d)g(and)g Fl(mkNDperm\(\))d │ │ │ │ │ +Fp(ab)s(o)m(v)m(e;)33 b(this)e(metho)s(d)227 1255 y(\014nds)c │ │ │ │ │ +Fj(double-wide)i Fp(separators,)h(necessary)f(for)g(an)f(op)s(erator)h │ │ │ │ │ +(with)g(more)f(than)h(nearest)g(neigh)m(b)s(or)f(grid)227 │ │ │ │ │ +1368 y(p)s(oin)m(t)k(coupling.)45 b(The)31 b(metho)s(d)g(calls)i │ │ │ │ │ +(itself)g(recursiv)m(ely)-8 b(.)46 b(T)-8 b(o)32 b(\014nd)e(the)i(p)s │ │ │ │ │ +(erm)m(utation)g(for)f(an)h Fl(n1)47 b(x)h(n2)227 1480 │ │ │ │ │ +y(x)g(n3)29 b Fp(grid,)i(call)227 1667 y Fl(mkNDperm\(n1,)45 │ │ │ │ │ +b(n2,)i(n3,)g(newToOld,)e(0,)i(n1-1,)f(0,)i(n2-1,)e(0,)h(n3-1\))f(;)227 │ │ │ │ │ +1854 y Fp(from)30 b(a)h(driv)m(er)f(program.)227 1998 │ │ │ │ │ +y Fj(Err)-5 b(or)39 b(che)-5 b(cking:)49 b Fp(If)34 b │ │ │ │ │ +Fl(n1)p Fp(,)i Fl(n2)e Fp(or)h Fl(n3)g Fp(are)g(less)g(than)g(or)g │ │ │ │ │ +(equal)h(to)f(zero,)i(or)e(if)g Fl(newToOld)e Fp(is)i │ │ │ │ │ +Fl(NULL)p Fp(,)f(or)h(if)227 2111 y Fl(west)p Fp(,)30 │ │ │ │ │ +b Fl(south)g Fp(or)h Fl(bottom)e Fp(are)i(less)g(than)g(or)g(equal)g │ │ │ │ │ +(to)h(zero,)g(of)f(if)g Fl(east)25 b Fi(\025)h Fl(n1)o │ │ │ │ │ +Fp(,)32 b(of)f(if)g Fl(north)24 b Fi(\025)i Fl(n2)p Fp(,)31 │ │ │ │ │ +b(of)g(if)227 2224 y Fl(top)25 b Fi(\025)g Fl(n3)o Fp(,)31 │ │ │ │ │ +b(an)f(error)g(message)h(is)g(prin)m(ted)f(and)g(the)g(program)g │ │ │ │ │ +(exits.)111 2399 y(3.)46 b Fl(void)h(localND2D)e(\()j(int)f(n1,)f(int)h │ │ │ │ │ +(n2,)g(int)g(p1,)g(int)g(p2,)1039 2511 y(int)g(dsizes1[],)e(int)h │ │ │ │ │ (dsizes2[],)f(int)i(oldToNew[])e(\))j(;)227 2655 y Fp(This)31 │ │ │ │ │ b(metho)s(d)h(\014nds)e(a)i(lo)s(cal)i(nested)d(dissection)i(ordering)f │ │ │ │ │ ([)p Fo(?)p Fp(])g(for)g(an)g Fl(n1)47 b(x)h(n2)31 b │ │ │ │ │ Fp(2-D)i(grid.)45 b(There)32 b(are)227 2768 y Fl(p1)47 │ │ │ │ │ b(x)h(p2)24 b Fp(domains)g(in)h(the)g(grid.)38 b(The)25 │ │ │ │ │ b Fl(dsizes1[])d Fp(and)i Fl(dsizes2[])e Fp(v)m(ectors)k(are)g │ │ │ │ │ (optional;)i(they)c(allo)m(w)227 2881 y(the)34 b(user)f(to)i │ │ │ │ │ @@ -5820,17 +5827,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 1130 4 v 1312 100 a Fl(Misc)29 │ │ │ │ │ -b Fh(:)40 b Fj(DRAFT)122 b Fh(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2723 100 V 1130 w Fp(3)111 399 y(5.)46 b Fl(void)h(fp2DGrid)e(\()j(int) │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1111 4 v 1292 100 a Fl(Misc)30 │ │ │ │ │ +b Fh(:)40 b Fj(DRAFT)121 b Fh(F)-8 b(ebruary)31 b(18,)g(2025)p │ │ │ │ │ +2742 100 V 1111 w Fp(3)111 399 y(5.)46 b Fl(void)h(fp2DGrid)e(\()j(int) │ │ │ │ │ f(n1,)g(int)g(n2,)g(int)f(ivec[],)g(FILE)h(*fp)g(\))g(;)227 │ │ │ │ │ 562 y Fp(This)40 b(metho)s(d)f(writes)i(the)f Fl(ivec[])f │ │ │ │ │ Fp(v)m(ector)j(on)m(to)f(an)f Fl(n1)48 b(x)f(n2)40 b │ │ │ │ │ Fp(grid)g(to)h(\014le)f Fl(fp)p Fp(.)70 b(This)39 b(is)i(useful)e(to) │ │ │ │ │ 227 675 y(visualize)32 b(an)e(ordering)g(or)h(a)f(metric)h(on)g(a)g │ │ │ │ │ (grid.)227 838 y Fj(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ │ b Fp(If)29 b Fl(n1)g Fp(or)h Fl(n2)f Fp(are)h(less)g(than)g(or)g(equal) │ │ │ │ │ @@ -5902,20 +5909,20 @@ │ │ │ │ │ (amoun)m(ts)227 5131 y(of)31 b(output.)227 5294 y Fj(Err)-5 │ │ │ │ │ b(or)33 b(che)-5 b(cking:)40 b Fp(If)29 b Fl(graph)f │ │ │ │ │ Fp(is)h Fl(NULL)p Fp(,)g(or)g(if)h Fl(msglvl)46 b(>)h(0)29 │ │ │ │ │ b Fp(and)g Fl(msgFile)e Fp(is)j Fl(NULL)p Fp(,)e(an)h(error)g(message)i │ │ │ │ │ (is)227 5407 y(prin)m(ted)f(and)g(the)h(program)f(exits.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fp(4)p 136 100 1130 4 v │ │ │ │ │ -1312 w Fl(Misc)29 b Fh(:)41 b Fj(DRAFT)30 b Fh(Jan)m(uary)g(16,)i(2024) │ │ │ │ │ -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 │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fp(4)p 136 100 1111 4 v │ │ │ │ │ +1293 w Fl(Misc)29 b Fh(:)41 b Fj(DRAFT)30 b Fh(F)-8 b(ebruary)30 │ │ │ │ │ +b(18,)i(2025)p 2789 100 V 111 399 a Fp(2.)46 b Fl(ETree)h(*)g │ │ │ │ │ +(orderViaND)e(\()j(Graph)e(*graph,)g(int)h(maxdomainsize,)d(int)i │ │ │ │ │ +(seed,)1230 511 y(int)g(msglvl,)g(FILE)h(*msgFile)e(\))j(;)227 │ │ │ │ │ +664 y Fp(This)32 b(metho)s(d)g(returns)g(a)h(fron)m(t)g(tree)g │ │ │ │ │ Fl(ETree)f Fp(ob)5 b(ject)33 b(for)g(a)g(nested)g(dissection)g │ │ │ │ │ (ordering)g(of)g(the)f(graph)227 777 y Fl(graph)p Fp(.)45 │ │ │ │ │ b(If)32 b(a)g(subgraph)e(has)i(more)h(v)m(ertices)g(than)f(the)h │ │ │ │ │ Fl(maxdomainsize)28 b Fp(parameter,)33 b(it)g(is)f(split.)46 │ │ │ │ │ b(The)227 889 y Fl(seed)c Fp(parameter)i(is)f(a)g(random)f(n)m(um)m(b)s │ │ │ │ │ (er)g(seed.)78 b(The)43 b Fl(msglvl)e Fp(and)h Fl(msgFile)f │ │ │ │ │ Fp(parameters)j(go)m(v)m(ern)227 1002 y(the)36 b(diagnostics)g(output.) │ │ │ │ │ @@ -5990,17 +5997,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 1130 4 v 1312 100 a Fl(Misc)29 │ │ │ │ │ -b Fh(:)40 b Fj(DRAFT)122 b Fh(Jan)m(uary)30 b(16,)h(2024)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 │ │ │ │ │ +TeXDict begin 5 4 bop 91 100 1111 4 v 1292 100 a Fl(Misc)30 │ │ │ │ │ +b Fh(:)40 b Fj(DRAFT)121 b Fh(F)-8 b(ebruary)31 b(18,)g(2025)p │ │ │ │ │ +2742 100 V 1111 w Fp(5)227 399 y(dra)m(wn)h(b)s(et)m(w)m(een)h(t)m(w)m │ │ │ │ │ (o)h(v)m(ertices)h(adjacen)m(t)f(in)e(the)h(graph.)47 │ │ │ │ │ b(When)32 b Fl(tagsIV)f Fp(is)i(not)g Fl(NULL)p Fp(,)f(if)g(there)h(is) │ │ │ │ │ g(an)227 511 y(edge)g Fl(\(u,v\))f Fp(in)g(the)h(graph)f(and)f │ │ │ │ │ Fl(tags[u])46 b(=)i(tags[v])p Fp(,)31 b(then)h(the)h(edge)g(with)f │ │ │ │ │ (width)g Fl(linewidth1)e Fp(is)227 624 y(dra)m(wn.)54 │ │ │ │ │ b(F)-8 b(or)36 b(edges)f Fl(\(u,v\))f Fp(in)g(the)h(graph)g(and)f │ │ │ │ │ Fl(tags[u])46 b(!=)h(tags[v])p Fp(,)35 b(then)f(the)h(edge)h(with)f │ │ │ │ │ @@ -6083,27 +6090,28 @@ │ │ │ │ │ Fp(is)31 b(computed)g(as)g(the)g(pro)s(duct)f(of)i Fg(A)f │ │ │ │ │ Fp(with)f Fg(X)7 b Fp(.)44 b Fg(A)31 b Fp(can)g(b)s(e)g(real)g(\()p │ │ │ │ │ Fl(type)47 b(=)227 5407 y(1)p Fp(\))28 b(or)f(complex)i(\()p │ │ │ │ │ Fl(type)47 b(=)g(2)p Fp(\).)40 b(The)27 b(n)m(um)m(b)s(er)f(of)i │ │ │ │ │ (columns)g(of)f Fg(X)35 b Fp(is)28 b(giv)m(en)h(b)m(y)e │ │ │ │ │ Fl(nrhs)p Fp(.)39 b(The)27 b(linear)h(system)p eop end │ │ │ │ │ %%Page: 6 6 │ │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fp(6)p 136 100 1130 4 v │ │ │ │ │ -1312 w Fl(Misc)29 b Fh(:)41 b Fj(DRAFT)30 b Fh(Jan)m(uary)g(16,)i(2024) │ │ │ │ │ -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 │ │ │ │ │ -(brief)e(descriptions)g(of)g(the)h(driv)m(er)f(programs.)111 │ │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fp(6)p 136 100 1111 4 v │ │ │ │ │ +1293 w Fl(Misc)29 b Fh(:)41 b Fj(DRAFT)30 b Fh(F)-8 b(ebruary)30 │ │ │ │ │ +b(18,)i(2025)p 2789 100 V 227 399 a Fp(is)41 b(ordered)f(using)h │ │ │ │ │ +(theoretical)i(nested)e(dissection,)j(and)d(the)g(fron)m(t)g(tree)g(is) │ │ │ │ │ +g(transformed)f(using)h(the)227 511 y Fl(maxzeros)31 │ │ │ │ │ +b Fp(and)i Fl(maxsize)e Fp(parameters.)49 b(The)33 b(addresses)f(of)h │ │ │ │ │ +(the)h(fron)m(t)f(tree,)i(sym)m(b)s(olic)e(factorization,)227 │ │ │ │ │ +624 y(and)d(three)h(matrix)f(ob)5 b(jects)31 b(are)g(returned)e(in)h │ │ │ │ │ +(the)h(last)g(\014v)m(e)g(argumen)m(ts)g(of)f(the)h(calling)h │ │ │ │ │ +(sequence.)227 769 y Fj(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ │ +b Fp(None)31 b(presen)m(tly)-8 b(.)0 1071 y Fn(1.2)135 │ │ │ │ │ +b(Driv)l(er)46 b(programs)g(found)e(in)h(the)g Fm(Misc)e │ │ │ │ │ +Fn(directory)0 1294 y Fp(This)30 b(section)h(con)m(tains)h(brief)e │ │ │ │ │ +(descriptions)g(of)g(the)h(driv)m(er)f(programs.)111 │ │ │ │ │ 1495 y(1.)46 b Fl(testNDperm)f(msglvl)h(msgFile)g(n1)h(n2)h(n3)f │ │ │ │ │ (outPermFile)227 1641 y Fp(This)29 b(driv)m(er)h(program)g(generates)h │ │ │ │ │ (a)g Fl(Perm)d Fp(ob)5 b(ject)31 b(that)g(con)m(tains)g(a)f(nested)g │ │ │ │ │ (dissection)h(ordering)f(for)g(a)227 1753 y Fl(n1)47 │ │ │ │ │ b(x)h(n2)f(x)h(n3)29 b Fp(regular)i(grid.)337 1951 y │ │ │ │ │ Ff(\210)45 b Fp(The)28 b Fl(msglvl)f Fp(parameter)i(determines)g(the)g │ │ │ │ │ (amoun)m(t)g(of)f(output)h(|)f(taking)i Fl(msglvl)46 │ │ │ │ │ @@ -6160,17 +6168,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 1130 4 v 1312 100 a Fl(Misc)29 │ │ │ │ │ -b Fh(:)40 b Fj(DRAFT)122 b Fh(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2723 100 V 1130 w Fp(7)111 399 y(3.)46 b Fl(testOrderViaND)e(msglvl)i │ │ │ │ │ +TeXDict begin 7 6 bop 91 100 1111 4 v 1292 100 a Fl(Misc)30 │ │ │ │ │ +b Fh(:)40 b Fj(DRAFT)121 b Fh(F)-8 b(ebruary)31 b(18,)g(2025)p │ │ │ │ │ +2742 100 V 1111 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 │ │ │ │ │ @@ -6240,34 +6248,35 @@ │ │ │ │ │ Fp(is)j(of)g(the)f(form)427 5079 y Fl(*.etreef)p Fp(\),)29 │ │ │ │ │ b(or)h(a)h(binary)f(\014le)g(\(if)h Fl(ETreeFile)d Fp(is)i(of)h(the)f │ │ │ │ │ (form)g Fl(*.etreeb)p Fp(\).)111 5294 y(5.)46 b Fl(drawGraph)g(msglvl)g │ │ │ │ │ (msgFile)f(inGraphFile)g(inCoordsFile)g(inTagsIVfile)705 │ │ │ │ │ 5407 y(outEPSfile)g(linewidth1)g(linewidth2)g(bbox[4])g(rect[4])h │ │ │ │ │ (radius)p eop end │ │ │ │ │ %%Page: 8 8 │ │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fp(8)p 136 100 1130 4 v │ │ │ │ │ -1312 w Fl(Misc)29 b Fh(:)41 b Fj(DRAFT)30 b Fh(Jan)m(uary)g(16,)i(2024) │ │ │ │ │ -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 │ │ │ │ │ -(the)g(amoun)m(t)g(of)f(output)h(|)f(taking)i Fl(msglvl)46 │ │ │ │ │ -b(>=)h(3)28 b Fp(means)427 1091 y(that)j(all)h(ob)5 b(jects)31 │ │ │ │ │ -b(are)f(written)h(to)g(the)f(output)g(\014le.)337 1243 │ │ │ │ │ -y Ff(\210)45 b Fp(The)33 b Fl(msgFile)e Fp(parameter)j(determines)f │ │ │ │ │ -(the)h(message)g(\014le)f(|)h(if)f Fl(msgFile)e Fp(is)i │ │ │ │ │ -Fl(stdout)p Fp(,)g(then)g(the)427 1356 y(message)27 b(\014le)f(is)g │ │ │ │ │ -Fj(stdout)p Fp(,)i(otherwise)e(a)h(\014le)f(is)f(op)s(ened)g(with)h │ │ │ │ │ -Fj(app)-5 b(end)28 b Fp(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 │ │ │ │ │ -1469 y(data.)337 1620 y Ff(\210)45 b Fp(The)23 b Fl(inGraphFile)d │ │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fp(8)p 136 100 1111 4 v │ │ │ │ │ +1293 w Fl(Misc)29 b Fh(:)41 b Fj(DRAFT)30 b Fh(F)-8 b(ebruary)30 │ │ │ │ │ +b(18,)i(2025)p 2789 100 V 227 399 a Fp(This)41 b(driv)m(er)g(program)h │ │ │ │ │ +(generates)h(a)f(Encapsulated)f(P)m(ostscript)i(\014le)e │ │ │ │ │ +Fl(outEPSfile)e Fp(of)j(a)g(2-D)g(graph)227 511 y(using)29 │ │ │ │ │ +b(a)i Fl(Graph)d Fp(ob)5 b(ject,)31 b(a)f Fl(Coords)e │ │ │ │ │ +Fp(ob)5 b(ject)31 b(and)e(a)h(tags)h Fl(IV)e Fp(ob)5 │ │ │ │ │ +b(ject)30 b(that)h(con)m(tains)f(the)g(comp)s(onen)m(t)g(ids)227 │ │ │ │ │ +624 y(of)h(the)f(v)m(ertices.)227 780 y(See)h(the)f Fl(doDraw)f │ │ │ │ │ +Fp(script)h(\014le)h(in)f(this)g(directory)h(for)f(an)g(example)i │ │ │ │ │ +(calling)f(sequence.)337 978 y Ff(\210)45 b Fp(The)28 │ │ │ │ │ +b Fl(msglvl)f Fp(parameter)i(determines)g(the)g(amoun)m(t)g(of)f │ │ │ │ │ +(output)h(|)f(taking)i Fl(msglvl)46 b(>=)h(3)28 b Fp(means)427 │ │ │ │ │ +1091 y(that)j(all)h(ob)5 b(jects)31 b(are)f(written)h(to)g(the)f │ │ │ │ │ +(output)g(\014le.)337 1243 y Ff(\210)45 b Fp(The)33 b │ │ │ │ │ +Fl(msgFile)e Fp(parameter)j(determines)f(the)h(message)g(\014le)f(|)h │ │ │ │ │ +(if)f Fl(msgFile)e Fp(is)i Fl(stdout)p Fp(,)g(then)g(the)427 │ │ │ │ │ +1356 y(message)27 b(\014le)f(is)g Fj(stdout)p Fp(,)i(otherwise)e(a)h │ │ │ │ │ +(\014le)f(is)f(op)s(ened)g(with)h Fj(app)-5 b(end)28 │ │ │ │ │ +b Fp(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 1469 │ │ │ │ │ +y(data.)337 1620 y Ff(\210)45 b Fp(The)23 b Fl(inGraphFile)d │ │ │ │ │ Fp(parameter)k(is)f(the)h(input)e(\014le)i(for)f(the)g │ │ │ │ │ Fl(Graph)f Fp(ob)5 b(ject.)39 b(It)24 b(m)m(ust)f(b)s(e)f(of)i(the)f │ │ │ │ │ (form)427 1733 y Fl(*.graphf)18 b Fp(or)j Fl(*.graphb)p │ │ │ │ │ Fp(.)35 b(The)19 b Fl(Graph)g Fp(ob)5 b(ject)21 b(is)g(read)f(from)g │ │ │ │ │ (the)g(\014le)h(via)f(the)h Fl(Graph)p 3368 1733 29 4 │ │ │ │ │ v 33 w(readFromFile\(\))427 1846 y Fp(metho)s(d.)337 │ │ │ │ │ 1997 y Ff(\210)45 b Fp(The)c Fl(inCoordsFile)c Fp(parameter)k(is)g(the) │ │ │ │ │ @@ -6326,17 +6335,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 1130 4 v 1312 100 a Fl(Misc)29 │ │ │ │ │ -b Fh(:)40 b Fj(DRAFT)122 b Fh(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2723 100 V 1130 w Fp(9)1541 1617 y(Figure)g(1.1:)42 b │ │ │ │ │ +TeXDict begin 9 8 bop 91 100 1111 4 v 1292 100 a Fl(Misc)30 │ │ │ │ │ +b Fh(:)40 b Fj(DRAFT)121 b Fh(F)-8 b(ebruary)31 b(18,)g(2025)p │ │ │ │ │ +2742 100 V 1111 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 │ │ │ │ │ @@ -6741,19 +6750,20 @@ │ │ │ │ │ 348.123 444.374 () radius drawLabel │ │ │ │ │ grestore │ │ │ │ │ showpage │ │ │ │ │ │ │ │ │ │ %%EndDocument │ │ │ │ │ @endspecial eop end │ │ │ │ │ %%Page: 10 10 │ │ │ │ │ -TeXDict begin 10 9 bop 0 100 a Fp(10)p 182 100 1107 4 │ │ │ │ │ -v 1290 w Fl(Misc)29 b Fh(:)41 b Fj(DRAFT)30 b Fh(Jan)m(uary)g(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fp(10)p 182 100 1088 4 │ │ │ │ │ +v 1271 w Fl(Misc)29 b Fh(:)41 b Fj(DRAFT)30 b Fh(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2812 100 V 813 1617 a Fp(Figure)f(1.2:)42 │ │ │ │ │ +b Fb(R2D100:)k(fishnet)33 b(domain)h(decomposition)750 │ │ │ │ │ +4143 y @beginspecial 0 @llx 0 @lly 600 @urx 600 @ury │ │ │ │ │ +2880 @rwi 2880 @rhi @setspecial │ │ │ │ │ %%BeginDocument: ../../misc/doc/R2D100fishnet.eps │ │ │ │ │ %!PS-Adobe-2.0 EPSF-1.2 │ │ │ │ │ %%BoundingBox: 0.0 0.0 600.0 600.0 │ │ │ │ │ /radius 10.000 def │ │ │ │ │ /Helvetica findfont 12.500 scalefont setfont │ │ │ │ │ /M {moveto} def │ │ │ │ │ /L {lineto} def │ │ │ │ │ @@ -7160,17 +7170,17 @@ │ │ │ │ │ 348.123 444.374 (0) radius drawLabel │ │ │ │ │ grestore │ │ │ │ │ showpage │ │ │ │ │ │ │ │ │ │ %%EndDocument │ │ │ │ │ @endspecial eop end │ │ │ │ │ %%Page: 11 11 │ │ │ │ │ -TeXDict begin 11 10 bop 91 100 1107 4 v 1289 100 a Fl(Misc)29 │ │ │ │ │ -b Fh(:)41 b Fj(DRAFT)121 b Fh(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2700 100 V 1107 w Fp(11)227 399 y Fg(A)g Fp(is)f(factored)h(as)1106 │ │ │ │ │ +TeXDict begin 11 10 bop 91 100 1088 4 v 1270 100 a Fl(Misc)29 │ │ │ │ │ +b Fh(:)41 b Fj(DRAFT)121 b Fh(F)-8 b(ebruary)30 b(18,)h(2025)p │ │ │ │ │ +2719 100 V 1088 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 │ │ │ │ │ @@ -7279,20 +7289,20 @@ │ │ │ │ │ Fp(parameter)j(is)g(the)g(input)e(\014le)i(for)f(the)h │ │ │ │ │ Fl(Graph)e Fp(ob)5 b(ject.)41 b(It)30 b(m)m(ust)f(b)s(e)g(of)h(the)f │ │ │ │ │ (form)427 5294 y Fl(*.graphf)18 b Fp(or)j Fl(*.graphb)p │ │ │ │ │ Fp(.)35 b(The)19 b Fl(Graph)g Fp(ob)5 b(ject)21 b(is)g(read)f(from)g │ │ │ │ │ (the)g(\014le)h(via)f(the)h Fl(Graph)p 3368 5294 V 33 │ │ │ │ │ w(readFromFile\(\))427 5407 y Fp(metho)s(d.)p eop end │ │ │ │ │ %%Page: 12 12 │ │ │ │ │ -TeXDict begin 12 11 bop 0 100 a Fp(12)p 182 100 1107 │ │ │ │ │ -4 v 1290 w Fl(Misc)29 b Fh(:)41 b Fj(DRAFT)30 b Fh(Jan)m(uary)g(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fp(12)p 182 100 1088 │ │ │ │ │ +4 v 1271 w Fl(Misc)29 b Fh(:)41 b Fj(DRAFT)30 b Fh(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2812 100 V 337 399 a Ff(\210)45 │ │ │ │ │ +b Fp(The)29 b Fl(ETreeFile)e Fp(parameter)j(is)g(the)g(input)e(\014le)i │ │ │ │ │ +(for)f(the)h Fl(ETree)e Fp(ob)5 b(ject.)41 b(It)30 b(m)m(ust)f(b)s(e)g │ │ │ │ │ +(of)h(the)f(form)427 511 y Fl(*.etreef)18 b Fp(or)j Fl(*.etreeb)p │ │ │ │ │ Fp(.)35 b(The)19 b Fl(ETree)g Fp(ob)5 b(ject)21 b(is)g(read)f(from)g │ │ │ │ │ (the)g(\014le)h(via)f(the)h Fl(ETree)p 3368 511 29 4 │ │ │ │ │ v 33 w(readFromFile\(\))427 624 y Fp(metho)s(d.)337 769 │ │ │ │ │ y Ff(\210)45 b Fp(The)31 b Fl(mapFile)f Fp(parameter)i(is)g(the)g │ │ │ │ │ (input)e(\014le)i(for)f(the)h(map)f Fl(IV)g Fp(ob)5 b(ject.)46 │ │ │ │ │ b(It)31 b(m)m(ust)h(b)s(e)f(of)h(the)f(form)427 882 y │ │ │ │ │ Fl(*.ivf)24 b Fp(or)h Fl(*.ivb)p Fp(.)37 b(The)25 b Fl(IV)f │ │ │ │ │ @@ -7357,17 +7367,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 1107 4 v 1289 100 a Fl(Misc)29 │ │ │ │ │ -b Fh(:)41 b Fj(DRAFT)121 b Fh(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2700 100 V 1107 w Fp(13)427 399 y Fl(nrow)47 b(ncol)g(nent)427 │ │ │ │ │ +TeXDict begin 13 12 bop 91 100 1088 4 v 1270 100 a Fl(Misc)29 │ │ │ │ │ +b Fh(:)41 b Fj(DRAFT)121 b Fh(F)-8 b(ebruary)30 b(18,)h(2025)p │ │ │ │ │ +2719 100 V 1088 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) │ │ │ │ │ @@ -7423,42 +7433,43 @@ │ │ │ │ │ (\(SPOOLES)p 1417 5148 V 32 w(SYMMETRIC\))28 b Fp(for)i │ │ │ │ │ Fg(A)g Fp(real)h(or)g(complex)g(symmetric,)500 5278 y │ │ │ │ │ Fo({)45 b Fl(type)i(=)g(1)h(\(SPOOLES)p 1417 5278 V 32 │ │ │ │ │ w(HERMITIAN\))28 b Fp(for)i Fg(A)g Fp(complex)h(Hermitian,)500 │ │ │ │ │ 5407 y Fo({)45 b Fl(type)i(=)g(2)h(\(SPOOLES)p 1417 5407 │ │ │ │ │ V 32 w(NONSYMMETRIC\))p eop end │ │ │ │ │ %%Page: 14 14 │ │ │ │ │ -TeXDict begin 14 13 bop 0 100 a Fp(14)p 182 100 1107 │ │ │ │ │ -4 v 1290 w Fl(Misc)29 b Fh(:)41 b Fj(DRAFT)30 b Fh(Jan)m(uary)g(16,)h │ │ │ │ │ -(2024)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 │ │ │ │ │ -(the)f(diagonal)i(en)m(try)597 1033 y(to)e(1)g(and)f(the)g │ │ │ │ │ -(o\013diagonal)j(en)m(tries)e(to)g(zero.)500 1159 y Fo({)45 │ │ │ │ │ -b Fl(patchAndGoFlag)f(=)k(2)34 b Fp(|)h(if)g(a)h(small)f(or)h(zero)f │ │ │ │ │ -(piv)m(ot)h(is)g(detected,)h(p)s(erturb)c(the)j(diagonal)597 │ │ │ │ │ -1272 y(en)m(try)-8 b(.)337 1413 y Ff(\210)45 b Fp(The)30 │ │ │ │ │ -b Fl(fudge)f Fp(parameter)i(is)f(used)g(to)h(p)s(erturb)d(a)j(diagonal) │ │ │ │ │ -h(en)m(try)-8 b(.)337 1554 y Ff(\210)45 b Fp(The)30 b │ │ │ │ │ -Fl(toosmall)e Fp(parameter)j(is)g(judge)e(when)h(a)h(diagonal)g(en)m │ │ │ │ │ -(try)g(is)f(small.)337 1695 y Ff(\210)45 b Fp(If)30 b │ │ │ │ │ -Fl(storeids)46 b(=)h(1)p Fp(,)30 b(then)h(the)f(lo)s(cations)i(where)e │ │ │ │ │ -(action)i(w)m(as)e(tak)m(en)i(is)e(stored)h(in)f(an)g │ │ │ │ │ -Fl(IV)g Fp(ob)5 b(ject.)337 1835 y Ff(\210)45 b Fp(If)30 │ │ │ │ │ -b Fl(storevalues)45 b(=)i(1)p Fp(,)31 b(then)f(the)g(p)s(erturbations)f │ │ │ │ │ -(are)i(stored)g(in)f(an)g Fl(DV)g Fp(ob)5 b(ject.)337 │ │ │ │ │ -1976 y Ff(\210)45 b Fp(The)37 b Fl(matrixFileName)d Fp(parameter)k(is)f │ │ │ │ │ -(the)h(name)f(of)h(the)g(\014les)f(where)g(the)h(matrix)f(en)m(tries)i │ │ │ │ │ -(are)427 2089 y(read)31 b(from.)40 b(The)30 b(\014le)g(has)g(the)h │ │ │ │ │ -(follo)m(wing)h(structure.)427 2250 y Fl(neqns)47 b(neqns)f(nent)427 │ │ │ │ │ +TeXDict begin 14 13 bop 0 100 a Fp(14)p 182 100 1088 │ │ │ │ │ +4 v 1271 w Fl(Misc)29 b Fh(:)41 b Fj(DRAFT)30 b Fh(F)-8 │ │ │ │ │ +b(ebruary)30 b(18,)h(2025)p 2812 100 V 427 399 a Fp(for)f │ │ │ │ │ +Fg(A)h Fp(real)g(or)f(complex)h(nonsymmetric.)337 539 │ │ │ │ │ +y Ff(\210)45 b Fp(The)30 b Fl(patchAndGoFlag)d Fp(sp)s(eci\014es)j(the) │ │ │ │ │ +g(\\patc)m(h-and-go")j(strategy)-8 b(.)500 680 y Fo({)45 │ │ │ │ │ +b Fl(patchAndGoFlag)f(=)k(0)21 b Fp(|)g(if)g(a)h(zero)g(piv)m(ot)g(is)f │ │ │ │ │ +(detected,)k(stop)c(computing)h(the)f(factorization,)597 │ │ │ │ │ +793 y(set)31 b(the)g(error)f(\015ag)g(and)g(return.)500 │ │ │ │ │ +920 y Fo({)45 b Fl(patchAndGoFlag)f(=)k(1)30 b Fp(|)h(if)g(a)h(small)f │ │ │ │ │ +(or)h(zero)f(piv)m(ot)h(is)g(detected,)g(set)g(the)f(diagonal)i(en)m │ │ │ │ │ +(try)597 1033 y(to)e(1)g(and)f(the)g(o\013diagonal)j(en)m(tries)e(to)g │ │ │ │ │ +(zero.)500 1159 y Fo({)45 b Fl(patchAndGoFlag)f(=)k(2)34 │ │ │ │ │ +b Fp(|)h(if)g(a)h(small)f(or)h(zero)f(piv)m(ot)h(is)g(detected,)h(p)s │ │ │ │ │ +(erturb)c(the)j(diagonal)597 1272 y(en)m(try)-8 b(.)337 │ │ │ │ │ +1413 y Ff(\210)45 b Fp(The)30 b Fl(fudge)f Fp(parameter)i(is)f(used)g │ │ │ │ │ +(to)h(p)s(erturb)d(a)j(diagonal)h(en)m(try)-8 b(.)337 │ │ │ │ │ +1554 y Ff(\210)45 b Fp(The)30 b Fl(toosmall)e Fp(parameter)j(is)g │ │ │ │ │ +(judge)e(when)h(a)h(diagonal)g(en)m(try)g(is)f(small.)337 │ │ │ │ │ +1695 y Ff(\210)45 b Fp(If)30 b Fl(storeids)46 b(=)h(1)p │ │ │ │ │ +Fp(,)30 b(then)h(the)f(lo)s(cations)i(where)e(action)i(w)m(as)e(tak)m │ │ │ │ │ +(en)i(is)e(stored)h(in)f(an)g Fl(IV)g Fp(ob)5 b(ject.)337 │ │ │ │ │ +1835 y Ff(\210)45 b Fp(If)30 b Fl(storevalues)45 b(=)i(1)p │ │ │ │ │ +Fp(,)31 b(then)f(the)g(p)s(erturbations)f(are)i(stored)g(in)f(an)g │ │ │ │ │ +Fl(DV)g Fp(ob)5 b(ject.)337 1976 y Ff(\210)45 b Fp(The)37 │ │ │ │ │ +b Fl(matrixFileName)d Fp(parameter)k(is)f(the)h(name)f(of)h(the)g │ │ │ │ │ +(\014les)f(where)g(the)h(matrix)f(en)m(tries)i(are)427 │ │ │ │ │ +2089 y(read)31 b(from.)40 b(The)30 b(\014le)g(has)g(the)h(follo)m(wing) │ │ │ │ │ +h(structure.)427 2250 y Fl(neqns)47 b(neqns)f(nent)427 │ │ │ │ │ 2363 y(irow)h(jcol)g(entry)427 2476 y(...)95 b(...)g(...)427 │ │ │ │ │ 2638 y Fp(where)28 b Fl(neqns)e Fp(is)i(the)g(global)h(n)m(um)m(b)s(er) │ │ │ │ │ d(of)i(equations)h(and)e Fl(nent)g Fp(is)h(the)g(n)m(um)m(b)s(er)e(of)i │ │ │ │ │ (en)m(tries)h(in)e(this)427 2751 y(\014le.)49 b(There)32 │ │ │ │ │ b(follo)m(ws)i Fl(nent)e Fp(lines,)i(eac)m(h)g(con)m(taining)h(a)e(ro)m │ │ │ │ │ (w)g(index,)h(a)f(column)g(index)f(and)h(one)g(or)427 │ │ │ │ │ 2864 y(t)m(w)m(o)f(\015oating)f(p)s(oin)m(t)g(n)m(um)m(b)s(ers,)e(one)h │ │ │ │ │ @@ -7494,17 +7505,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 1107 4 v 1289 100 a Fl(Misc)29 │ │ │ │ │ -b Fh(:)41 b Fj(DRAFT)121 b Fh(Jan)m(uary)30 b(16,)h(2024)p │ │ │ │ │ -2700 100 V 1107 w Fp(15)337 399 y Ff(\210)45 b Fl(type)29 │ │ │ │ │ +TeXDict begin 15 14 bop 91 100 1088 4 v 1270 100 a Fl(Misc)29 │ │ │ │ │ +b Fh(:)41 b Fj(DRAFT)121 b Fh(F)-8 b(ebruary)30 b(18,)h(2025)p │ │ │ │ │ +2719 100 V 1088 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 16, 2024 │ │ │ │ │ │ + 2 Misc : DRAFT February 18, 2025 │ │ │ │ │ │ 2. void mkNDperm2 ( int n1, int n2, int n3, int newToOld[], int west, │ │ │ │ │ │ int east, int south, int north, int bottom, int top ) ; │ │ │ │ │ │ This method this vector fills a permutation vector with the nested dissection new-to-old │ │ │ │ │ │ ordering of the vertices for the subgrid defined by nodes whose coordinates lie in │ │ │ │ │ │ [west, east] x [south, north] x [bottom, top]. │ │ │ │ │ │ There is one important difference between this method and mkNDperm() above; this method │ │ │ │ │ │ finds double-wide separators, necessary for an operator with more than nearest neighbor grid │ │ │ │ │ │ @@ -58,15 +58,15 @@ │ │ │ │ │ │ tains a dsizes1[q1] x dsizes2[q2] x disizes3[q3] subgrid of points. │ │ │ │ │ │ Error checking: If n1, n2 or n3 are less than or equal to zero, or if p1, p2 or p3 are less than or │ │ │ │ │ │ equal to zero, or if 2p1−1 > n1, or if 2p2−1 > n2, or if 2p3−1 > n3, or if oldToNew is NULL, │ │ │ │ │ │ or if dsizes1[], disizes2[] and dsizes3[] are not NULL but have invalid entries (all entries │ │ │ │ │ │ must be positive, entries in dsizes1[] must sum to n1 - p1 + 1, entries in dsizes2[] must │ │ │ │ │ │ sum to n2 - p2 + 1, and entries in dsizes3[] must sum to n3 - p3 + 1, an error message │ │ │ │ │ │ is printed and the program exits. │ │ │ │ │ │ - Misc : DRAFT January 16, 2024 3 │ │ │ │ │ │ + Misc : DRAFT February 18, 2025 3 │ │ │ │ │ │ 5. void fp2DGrid ( int n1, int n2, int ivec[], FILE *fp ) ; │ │ │ │ │ │ This method writes the ivec[] vector onto an n1 x n2 grid to file fp. This is useful to │ │ │ │ │ │ visualize an ordering or a metric on a grid. │ │ │ │ │ │ Error checking: If n1 or n2 are less than or equal to zero, or if ivec or fp are NULL, an error │ │ │ │ │ │ message is printed and the program exits. │ │ │ │ │ │ 6. void fp3DGrid ( int n1, int n2, int n3, int ivec[], FILE *fp ) ; │ │ │ │ │ │ This method writes the ivec[] vector onto an n1 x n2 x n3 grid to file fp. This is useful │ │ │ │ │ │ @@ -96,15 +96,15 @@ │ │ │ │ │ │ This method returns a front tree ETree object for a multiple minimum degree ordering of │ │ │ │ │ │ the graph graph. The seed parameter is a random number seed. The msglvl and msgFile │ │ │ │ │ │ parameters govern the diagnostics output. Use msglvl = 0 for no output, msglvl = 1 for │ │ │ │ │ │ timings and scalar statistics, and use msglvl > 1 with care, for it can generate huge amounts │ │ │ │ │ │ of output. │ │ │ │ │ │ Error checking: If graph is NULL, or if msglvl > 0 and msgFile is NULL, an error message is │ │ │ │ │ │ printed and the program exits. │ │ │ │ │ │ - 4 Misc : DRAFT January 16, 2024 │ │ │ │ │ │ + 4 Misc : DRAFT February 18, 2025 │ │ │ │ │ │ 2. ETree * orderViaND ( Graph *graph, int maxdomainsize, int seed, │ │ │ │ │ │ int msglvl, FILE *msgFile ) ; │ │ │ │ │ │ This method returns a front tree ETree object for a nested dissection ordering of the graph │ │ │ │ │ │ graph. If a subgraph has more vertices than the maxdomainsize parameter, it is split. The │ │ │ │ │ │ seed parameter is a random number seed. The msglvl and msgFile parameters govern │ │ │ │ │ │ the diagnostics output. Use msglvl = 0 for no output, msglvl = 1 for timings and scalar │ │ │ │ │ │ statistics, and use msglvl > 1 with care, for it can generate huge amounts of output. │ │ │ │ │ │ @@ -136,15 +136,15 @@ │ │ │ │ │ │ double linewidth2, double radius, char *epsFileName, │ │ │ │ │ │ int msglvl, FILE *msgFile ) ; │ │ │ │ │ │ This method is used to create an EPS (Encapsulated Postscript) file that contains a picture │ │ │ │ │ │ of a graph in two dimensions. We use this to visualize separators and domain decompositions, │ │ │ │ │ │ mostly of regular grids and triangulations of a planar region. │ │ │ │ │ │ The graph object defines the connectivity of the vertices. The coords object defines the │ │ │ │ │ │ locations of the vertices. The tagsIV object is used to define whether or not an edge is │ │ │ │ │ │ - Misc : DRAFT January 16, 2024 5 │ │ │ │ │ │ + Misc : DRAFT February 18, 2025 5 │ │ │ │ │ │ drawn between two vertices adjacent in the graph. When tagsIV is not NULL, if there is an │ │ │ │ │ │ edge (u,v) in the graph and tags[u] = tags[v], then the edge with width linewidth1 is │ │ │ │ │ │ drawn. For edges (u,v) in the graph and tags[u] != tags[v], then the edge with width │ │ │ │ │ │ linewidth2is drawn, assuming linewidth2> 0. If tagsIV is NULL, than all edges are drawn │ │ │ │ │ │ with width linewidth1. Each vertex is draw with a filled circle with radius radius. │ │ │ │ │ │ The graph and its Coords object occupy a certain area in 2-D space. We try to plot the │ │ │ │ │ │ graph inside the area defined by the rect[] array in such a manner that the relative scales │ │ │ │ │ │ @@ -177,15 +177,15 @@ │ │ │ │ │ │ InpMtx **pmtxA, DenseMtx **pmtxX, DenseMtx **pmtxB ) ; │ │ │ │ │ │ This method creates a linear system AX = B for a natural factor formulation of a n1×n2×n3 │ │ │ │ │ │ grid. If n1, n2 and n3 are all greater than 1, the grid is formed of linear hexahedral elements │ │ │ │ │ │ andthematrixAhas8*n1*n2*n3rows. Ifoneofn1,n2andn3isequalto1,thegridisformed │ │ │ │ │ │ of linear quadrilateral elements and the matrix A has 4*n1*n2*n3 rows. The entries in A and │ │ │ │ │ │ X are random numbers, B is computed as the product of A with X. A can be real (type = │ │ │ │ │ │ 1) or complex (type = 2). The number of columns of X is given by nrhs. The linear system │ │ │ │ │ │ - 6 Misc : DRAFT January 16, 2024 │ │ │ │ │ │ + 6 Misc : DRAFT February 18, 2025 │ │ │ │ │ │ is ordered using theoretical nested dissection, and the front tree is transformed using the │ │ │ │ │ │ maxzeros and maxsize parameters. The addresses of the front tree, symbolic factorization, │ │ │ │ │ │ and three matrix objects are returned in the last five arguments of the calling sequence. │ │ │ │ │ │ Error checking: None presently. │ │ │ │ │ │ 1.2 Driver programs found in the Misc directory │ │ │ │ │ │ This section contains brief descriptions of the driver programs. │ │ │ │ │ │ 1. testNDperm msglvl msgFile n1 n2 n3 outPermFile │ │ │ │ │ │ @@ -215,15 +215,15 @@ │ │ │ │ │ │ *.graphfor*.graphb. TheGraphobjectisreadfromthefileviatheGraph readFromFile() │ │ │ │ │ │ method. │ │ │ │ │ │ • The seed parameter is a random number seed. │ │ │ │ │ │ • The ETreeFile parameter is the output file for the ETree object. If ETreeFile is none │ │ │ │ │ │ then the ETree object is not written to a file. Otherwise, the ETree writeToFile() │ │ │ │ │ │ method is called to write the object to a formatted file (if ETreeFile is of the form │ │ │ │ │ │ *.etreef), or a binary file (if ETreeFile is of the form *.etreeb). │ │ │ │ │ │ - Misc : DRAFT January 16, 2024 7 │ │ │ │ │ │ + Misc : DRAFT February 18, 2025 7 │ │ │ │ │ │ 3. testOrderViaND msglvl msgFile GraphFile maxdomainsize seed ETreeFile │ │ │ │ │ │ This program reads in a Graph object from a file and computes a generalized nested dissection │ │ │ │ │ │ ordering of the graph. │ │ │ │ │ │ • The msglvl parameter determines the amount of output — taking msglvl >= 3 means │ │ │ │ │ │ the Perm object is written to the output file. │ │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ │ message file is stdout, otherwise a file is opened with append status to receive any output │ │ │ │ │ │ @@ -254,15 +254,15 @@ │ │ │ │ │ │ • The seed parameter is a random number seed. │ │ │ │ │ │ • The ETreeFile parameter is the output file for the ETree object. If ETreeFile is none │ │ │ │ │ │ then the ETree object is not written to a file. Otherwise, the ETree writeToFile() │ │ │ │ │ │ method is called to write the object to a formatted file (if ETreeFile is of the form │ │ │ │ │ │ *.etreef), or a binary file (if ETreeFile is of the form *.etreeb). │ │ │ │ │ │ 5. drawGraph msglvl msgFile inGraphFile inCoordsFile inTagsIVfile │ │ │ │ │ │ outEPSfile linewidth1 linewidth2 bbox[4] rect[4] radius │ │ │ │ │ │ - 8 Misc : DRAFT January 16, 2024 │ │ │ │ │ │ + 8 Misc : DRAFT February 18, 2025 │ │ │ │ │ │ This driver program generates a Encapsulated Postscript file outEPSfile of a 2-D graph │ │ │ │ │ │ using a Graph object, a Coords object and a tags IV object that contains the component ids │ │ │ │ │ │ of the vertices. │ │ │ │ │ │ See the doDraw script file in this directory for an example calling sequence. │ │ │ │ │ │ • The msglvl parameter determines the amount of output — taking msglvl >= 3 means │ │ │ │ │ │ that all objects are written to the output file. │ │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ │ @@ -293,17 +293,17 @@ │ │ │ │ │ │ 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 16, 2024 9 │ │ │ │ │ │ + Misc : DRAFT February 18, 2025 9 │ │ │ │ │ │ Figure 1.1: R2D100 │ │ │ │ │ │ - 10 Misc : DRAFT January 16, 2024 │ │ │ │ │ │ + 10 Misc : DRAFT February 18, 2025 │ │ │ │ │ │ Figure 1.2: R2D100: fishnet domain decomposition │ │ │ │ │ │ 3 3 3 3 3 3 3 0 0 5 │ │ │ │ │ │ 3 │ │ │ │ │ │ 3 3 3 0 0 │ │ │ │ │ │ 3 3 │ │ │ │ │ │ 3 1 │ │ │ │ │ │ 0 0 1 1 │ │ │ │ │ │ @@ -326,15 +326,15 @@ │ │ │ │ │ │ 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 16, 2024 11 │ │ │ │ │ │ + Misc : DRAFT February 18, 2025 11 │ │ │ │ │ │ Ais factored as " # " #" # │ │ │ │ │ │ A A L 0 U U │ │ │ │ │ │ 0,0 0,1 = 0,0 0,0 0,1 , │ │ │ │ │ │ A A L L 0 U │ │ │ │ │ │ 1,0 1,1 1,0 1,1 1,1 │ │ │ │ │ │ and to solve AX = B, we do the following steps. │ │ │ │ │ │ • solve L Y =B │ │ │ │ │ │ @@ -378,15 +378,15 @@ │ │ │ │ │ │ • The msglvl parameter determines the amount of output. │ │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ │ message file is stdout, otherwise a file is opened with append status to receive any output │ │ │ │ │ │ data. │ │ │ │ │ │ • The GraphFile parameter is the input file for the Graph object. It must be of the form │ │ │ │ │ │ *.graphfor*.graphb. TheGraphobjectisreadfromthefileviatheGraph readFromFile() │ │ │ │ │ │ method. │ │ │ │ │ │ - 12 Misc : DRAFT January 16, 2024 │ │ │ │ │ │ + 12 Misc : DRAFT February 18, 2025 │ │ │ │ │ │ • The ETreeFile parameter is the input file for the ETree object. It must be of the form │ │ │ │ │ │ *.etreefor*.etreeb. TheETreeobjectisreadfromthefileviatheETree readFromFile() │ │ │ │ │ │ method. │ │ │ │ │ │ • The mapFile parameter is the input file for the map IV object. It must be of the form │ │ │ │ │ │ *.ivfor *.ivb. The IV object is read from the file via the IV readFromFile() method. │ │ │ │ │ │ 7. allInOne msglvl msgFile type symmetryflag pivotingflag │ │ │ │ │ │ matrixFileName rhsFileName seed │ │ │ │ │ │ @@ -418,15 +418,15 @@ │ │ │ │ │ │ ... │ │ │ │ │ │ irow jcol value │ │ │ │ │ │ ... │ │ │ │ │ │ where the first line has the number of rows, columns and entries. (Note, for this driver │ │ │ │ │ │ program nrow must be equal to ncol since we are factoring a square matrix.) Each of │ │ │ │ │ │ the nent following lines contain one nonzero entry. For a complex matrix, the file has │ │ │ │ │ │ this structure. │ │ │ │ │ │ - Misc : DRAFT January 16, 2024 13 │ │ │ │ │ │ + Misc : DRAFT February 18, 2025 13 │ │ │ │ │ │ nrow ncol nent │ │ │ │ │ │ ... │ │ │ │ │ │ irow jcol real_value imag_value │ │ │ │ │ │ ... │ │ │ │ │ │ For both real and complex entries, the entries need not be disjoint, i.e., entries with the │ │ │ │ │ │ same irow and jcol values are summed. │ │ │ │ │ │ • The rhsFileNameparameter is the name of the input file for the right hand side matrix. │ │ │ │ │ │ @@ -457,15 +457,15 @@ │ │ │ │ │ │ • The type parameter specifies a real or complex linear system. │ │ │ │ │ │ – type = 1 (SPOOLES REAL) for real, │ │ │ │ │ │ – type = 2 (SPOOLES COMPLEX) for complex. │ │ │ │ │ │ • The symmetryflag parameter specifies the symmetry of the matrix. │ │ │ │ │ │ – type = 0 (SPOOLES SYMMETRIC) for A real or complex symmetric, │ │ │ │ │ │ – type = 1 (SPOOLES HERMITIAN) for A complex Hermitian, │ │ │ │ │ │ – type = 2 (SPOOLES NONSYMMETRIC) │ │ │ │ │ │ - 14 Misc : DRAFT January 16, 2024 │ │ │ │ │ │ + 14 Misc : DRAFT February 18, 2025 │ │ │ │ │ │ for A real or complex nonsymmetric. │ │ │ │ │ │ • The patchAndGoFlag specifies the “patch-and-go” strategy. │ │ │ │ │ │ – patchAndGoFlag = 0—ifazeropivotisdetected, stopcomputingthefactorization, │ │ │ │ │ │ set the error flag and return. │ │ │ │ │ │ – patchAndGoFlag = 1 — if a small or zero pivot is detected, set the diagonal entry │ │ │ │ │ │ to 1 and the offdiagonal entries to zero. │ │ │ │ │ │ – patchAndGoFlag = 2 — if a small or zero pivot is detected, perturb the diagonal │ │ │ │ │ │ @@ -497,15 +497,15 @@ │ │ │ │ │ │ right hand side entries are read in from a file, and the system is solved. One input parameter │ │ │ │ │ │ specifies the type of system (real or complex). │ │ │ │ │ │ • The msglvl parameter determines the amount of output — taking msglvl >= 3 means │ │ │ │ │ │ the Perm object is written to the output file. │ │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ │ message file is stdout, otherwise a file is opened with append status to receive any output │ │ │ │ │ │ data. │ │ │ │ │ │ - Misc : DRAFT January 16, 2024 15 │ │ │ │ │ │ + Misc : DRAFT February 18, 2025 15 │ │ │ │ │ │ • type is the type of entries │ │ │ │ │ │ – 1 — (SPOOLES REAL) for real entries │ │ │ │ │ │ – 2 — (SPOOLES COMPLEX) for complex entries │ │ │ │ │ │ • The matrixFileName parameter is the name of the input file for the matrix entries. For │ │ │ │ │ │ a real matrix, this file must have the following form. │ │ │ │ │ │ nrow ncol nent │ │ │ │ │ │ ...