--- /srv/reproducible-results/rbuild-debian/r-b-build.ZOM3f20c/b1/spooles_2.2-14.1_arm64.changes +++ /srv/reproducible-results/rbuild-debian/r-b-build.ZOM3f20c/b2/spooles_2.2-14.1_arm64.changes ├── Files │ @@ -1,5 +1,5 @@ │ │ f0c1e2a2dcf0a882f93e7d45c2eaa22d 553616 libdevel optional libspooles-dev_2.2-14.1_arm64.deb │ a1722a92a51849b866316c106a1a6440 1345120 debug optional libspooles2.2t64-dbgsym_2.2-14.1_arm64.deb │ ecf1fefe97077a45b926ebcf3fcb520c 397860 libs optional libspooles2.2t64_2.2-14.1_arm64.deb │ - b382ffaade838abb7dbac150cf219c04 6760800 doc optional spooles-doc_2.2-14.1_all.deb │ + 6b10239c5f3918463e8af793f5ac5c9a 6770960 doc optional spooles-doc_2.2-14.1_all.deb ├── spooles-doc_2.2-14.1_all.deb │ ├── file list │ │ @@ -1,3 +1,3 @@ │ │ -rw-r--r-- 0 0 0 4 2024-02-29 17:18:08.000000 debian-binary │ │ --rw-r--r-- 0 0 0 1948 2024-02-29 17:18:08.000000 control.tar.xz │ │ --rw-r--r-- 0 0 0 6758660 2024-02-29 17:18:08.000000 data.tar.xz │ │ +-rw-r--r-- 0 0 0 1944 2024-02-29 17:18:08.000000 control.tar.xz │ │ +-rw-r--r-- 0 0 0 6768824 2024-02-29 17:18:08.000000 data.tar.xz │ ├── control.tar.xz │ │ ├── control.tar │ │ │ ├── ./control │ │ │ │ @@ -1,13 +1,13 @@ │ │ │ │ Package: spooles-doc │ │ │ │ Source: spooles │ │ │ │ Version: 2.2-14.1 │ │ │ │ Architecture: all │ │ │ │ Maintainer: Debian Science Maintainers │ │ │ │ -Installed-Size: 6857 │ │ │ │ +Installed-Size: 6858 │ │ │ │ Suggests: libspooles2.2-dev │ │ │ │ Section: doc │ │ │ │ Priority: optional │ │ │ │ Homepage: http://www.netlib.org/linalg/spooles/ │ │ │ │ Description: SPOOLES numerical simulation pre- and post-processor documentation │ │ │ │ SPOOLES is a library for solving sparse real and complex linear systems of │ │ │ │ equations, written in the C language using object oriented design. │ │ │ ├── ./md5sums │ │ │ │ ├── ./md5sums │ │ │ │ │┄ Files differ │ ├── data.tar.xz │ │ ├── data.tar │ │ │ ├── file list │ │ │ │ @@ -1,56 +1,56 @@ │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-02-29 17:18:08.000000 ./ │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-02-29 17:18:08.000000 ./usr/ │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-02-29 17:18:08.000000 ./usr/share/ │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-02-29 17:18:08.000000 ./usr/share/doc/ │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/ │ │ │ │ --rw-r--r-- 0 root (0) root (0) 151222 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/A2.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 151280 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/A2.ps.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 596035 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/ASHCRAFC.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 67485 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/AllInOne.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 127084 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/BKL.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 155319 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/BPG.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 189455 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/Chv.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 100169 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/ChvList.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 93869 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/ChvManager.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 120111 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/Coords.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 115108 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/DSTree.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 133224 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/DV.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 116907 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/DenseMtx.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 106857 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/Drand.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 120741 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/EGraph.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 220097 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/ETree.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 87537 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/Eigen.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 178902 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/FrontMtx.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 275425 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/FrontTrees.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 183688 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/GPart.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 189296 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/Graph.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 131338 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/I2Ohash.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 109129 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/IIheap.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 120900 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/IV.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 123851 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/IVL.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 94871 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/Ideq.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 204184 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/InpMtx.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 127541 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/LinSol.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 88652 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/Lock.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 175772 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/MPI.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 167993 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/MSMD.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 162725 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/MT.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 145732 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/Network.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 142774 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/PatchAndGoInfo.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 123919 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/Pencil.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 106536 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/Perm.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 149545 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/ReferenceManual.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 152261 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/SemiImplMtx.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 133872 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/SolveMap.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 175290 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/SubMtx.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 100828 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/SubMtxList.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 117028 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/SubMtxManager.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 120123 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/SymbFac.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 167238 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/Tree.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 189470 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/Utilities.ps.gz │ │ │ │ --rw-r--r-- 0 root (0) root (0) 127142 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/ZV.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 67186 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/AllInOne.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 127159 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/BKL.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 155424 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/BPG.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 189551 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/Chv.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 100285 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/ChvList.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 93976 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/ChvManager.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 120207 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/Coords.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 115177 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/DSTree.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 133344 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/DV.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 117024 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/DenseMtx.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 106927 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/Drand.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 120819 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/EGraph.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 220169 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/ETree.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 87232 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/Eigen.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 179048 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/FrontMtx.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 275025 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/FrontTrees.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 183876 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/GPart.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 189418 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/Graph.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 131429 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/I2Ohash.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 109198 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/IIheap.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 120986 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/IV.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 123934 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/IVL.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 94939 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/Ideq.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 204321 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/InpMtx.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 127281 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/LinSol.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 88740 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/Lock.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 175862 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/MPI.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 168078 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/MSMD.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 162790 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/MT.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 145797 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/Network.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 142833 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/PatchAndGoInfo.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 124020 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/Pencil.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 106591 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/Perm.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 149107 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/ReferenceManual.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 152374 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/SemiImplMtx.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 133945 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/SolveMap.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 175349 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/SubMtx.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 100942 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/SubMtxList.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 117118 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/SubMtxManager.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 120287 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/SymbFac.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 167320 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/Tree.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 189516 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/Utilities.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 127236 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/ZV.ps.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 760 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/changelog.Debian.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 378 2018-12-19 22:56:58.000000 ./usr/share/doc/spooles-doc/copyright │ │ │ │ --rw-r--r-- 0 root (0) root (0) 188243 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/misc.ps.gz │ │ │ │ +-rw-r--r-- 0 root (0) root (0) 188326 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/misc.ps.gz │ │ │ │ -rw-r--r-- 0 root (0) root (0) 9600 2024-02-29 17:18:08.000000 ./usr/share/doc/spooles-doc/spooles.2.2.html │ │ │ │ drwxr-xr-x 0 root (0) root (0) 0 2024-02-29 17:18:08.000000 ./usr/share/doc-base/ │ │ │ │ -rw-r--r-- 0 root (0) root (0) 430 2018-12-19 22:56:58.000000 ./usr/share/doc-base/spooles-doc.spooles │ │ │ ├── ./usr/share/doc/spooles-doc/A2.ps.gz │ │ │ │ ├── A2.ps │ │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ │ %%EndComments │ │ │ │ │ %%BeginDefaults │ │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ │ %%EndDefaults │ │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ │ %DVIPSCommandLine: dvips main -o A2.ps │ │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ │ -%DVIPSSource: TeX output 2024.05.01:0544 │ │ │ │ │ +%DVIPSSource: TeX output 2025.06.03:1221 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -2060,21 +2060,22 @@ │ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ │ /UnderlineThickness 50 def │ │ │ │ │ end readonly def │ │ │ │ │ /Encoding 256 array │ │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ │ dup 44 /comma put │ │ │ │ │ dup 48 /zero put │ │ │ │ │ -dup 49 /one put │ │ │ │ │ dup 50 /two put │ │ │ │ │ -dup 52 /four put │ │ │ │ │ +dup 51 /three put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 77 /M put │ │ │ │ │ -dup 97 /a put │ │ │ │ │ -dup 121 /y put │ │ │ │ │ +dup 74 /J put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ +dup 110 /n put │ │ │ │ │ +dup 117 /u put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ │ @@ -2255,68 +2256,70 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004ACD1870 │ │ │ │ │ -A5EA947858F5795870BFE1343AD803FB854BF8F5A4E794E8EC57BE41DB5B8734 │ │ │ │ │ -13E47950F29A81EA0C81EA798863883D7F41F78325CA190CBBFFE822AE494550 │ │ │ │ │ -4BE83703071FC9512D128927AF3F63CEF8F86ABE1E15D7B4DDD39576E7DFF45E │ │ │ │ │ -3CB4115AAB1830DE8647B915DB4BEBEB5235C281E098B899BAB951D8D5798F01 │ │ │ │ │ -7F7C47336D31438E5126738AFEAB29E9A7CBE06DE4DD604477B542D2620DFD58 │ │ │ │ │ -28FE34238572F23C5A8EB7ACEE1E154DA13FC1A5AA67A3BA8C5CDFB2B80312C9 │ │ │ │ │ -BC9FAE56D08DDFA9498E6EF0D0F6BD18B3923E0B670B0740528BC843610736CB │ │ │ │ │ -80228C105C2F72C3C22D610C3D8C268DEEA2AEEE3221E198E79FE2966487360C │ │ │ │ │ -84AE08AC326F48B21447652121B1EB68AF857B8628F27BB4ED00F273E0DD044A │ │ │ │ │ -7D11A5BFAAC0A82328444CC9DD90167681B07D55CE28655F40C21250A226DEAB │ │ │ │ │ -2D46FFB680CB9242BE192AC0E55A44D45709FA6DE638C130D92C4E9B07BC3D61 │ │ │ │ │ -25CC2F0A7ED4F3574242FFE4461272EB1401266EEF551E0E2B0EF51FA8F250EC │ │ │ │ │ -FD9AFB6F5A0CC442B566BC24400133E3E9B9A9FC801CEF284FD2B3ECA43421FA │ │ │ │ │ -51E5D1EFE7BEAA96658362C438A0A5A6DCBC664A85EF88037B42355195B9D19C │ │ │ │ │ -7961D5F63B123451B298CD52C144FCD4F3641A823FBA14605E2DFD845E89102C │ │ │ │ │ -4E345CFD80E3EE6F097095A84C941FFC91B234F3615E4EE4C5D564284656E364 │ │ │ │ │ -AB9C4D1DE05F8FD065CA6064893F0CF3A3A501D59EF6568D05D818A010D06518 │ │ │ │ │ -E2C20418ADD1E652867F265084A27A5FE0C32213C59FFC3A84EDC89382521E5B │ │ │ │ │ -8AF66D76601F83C5C33CC9CF968C77B66F1FA074AC3DAD8E453C9264D03969EF │ │ │ │ │ -9E387BB3BEAA4BF0A9D88BA2CE6094E8996A3752A657E322A57AF006444BF516 │ │ │ │ │ -501C43CAA1BA7F16A3B6E4D3EBDECCCC19564DF18FB68194C132238A5441A21A │ │ │ │ │ -F52285CA1CA94A4BEC61EB509FA35EA5E393D662D938F4291F37EB7C2D5815BE │ │ │ │ │ -446813E1CFD06FFFFF2C4355C9DAFA48E765F4CC5DE4B9E37CFFB75E7A0B6F4B │ │ │ │ │ -4E412496F9C27DF4BDD90A869F0EBD81A57AE0B84051450A5A3E06CB9930DB2C │ │ │ │ │ -7C2DDB774BE870AEFCC9F4F067BE243FF3FD4B5C71B96C607DC4975973AF2650 │ │ │ │ │ -E7DF2BE3523A370EEDD07B5456B96E372ED10510CE677C044E609F21E93652FD │ │ │ │ │ -33CE612F587530D12214A3719CDB170C315B5D8763D5D4C67B5CAE90309E77AC │ │ │ │ │ -B45EB356C13A7BDE0D7320A9849CA357E30D7CF1085FFD70071932C3180AFC28 │ │ │ │ │ -B093016BA3F49A3878C34BB4A8727A441EB6CFC1A73F2313A7BF8D32EDF27E62 │ │ │ │ │ -EBEBC058FBA80B136FD2DE05C673B66482224ECEC63EDFB519AC13B5CC6624A6 │ │ │ │ │ -B3FD79037DA3851E93A386115852DBA88B176F21EDDB5386DC7C993C4210B28F │ │ │ │ │ -438131A586E34A09724E7CE60139F8247BFF14D2674805B3BD454C134728A43E │ │ │ │ │ -139E0AF71A7AC5CE42041EC83FD454B00AD29959FCF007789FFAF2D3492DCA4B │ │ │ │ │ -566EAFE97591ABC51CD0CD9BCD64E285FB823E41AA817E96B2B224005DAA4E15 │ │ │ │ │ -2141DB436B9D3FBA4EE4C876FD19A2E5133106FE2B9F704CB9614FCDC91B7950 │ │ │ │ │ -57053F45A5ED993B48189AAFAD5289F97AE2B0AEB5606579F6BD75F743EDB5B6 │ │ │ │ │ -5AA8F8A64CE507A47325081B3A013DB1BD596CDD3A83D2F29B070D6F9C57496E │ │ │ │ │ -14DF3F0F731C3BB00F2CE3D4BBACF1320322195D1DEA7A545BB4725BD1C6EC3D │ │ │ │ │ -63250C72B897741F8599D9D9BD2FB50EC80EFF2ECD6CE6603E95AABB45462ACF │ │ │ │ │ -12B005EE5979B6B05BCE9B97061686102349142A3CCC26D57F2A3283DD8B6E2A │ │ │ │ │ -98885E48C0D4A1A5C9612EDCB3B3D265E9B8CCCCA5D99F07F96C15B27D6A161F │ │ │ │ │ -936599E503C2859927201CACC31581AB7AB84F9EC9FFADC239F01DCC55940AB7 │ │ │ │ │ -FA884AA1EB6494C8E53DAD66E75A317428ACF9D943A74683BF547958F67D9E36 │ │ │ │ │ -F985EED50DEBCF255756A821927CB73848DCF167E96E975E959DE27FE7BA4FBA │ │ │ │ │ -D0EFC003F019D87572D6F9C73FC5B880C3EEDB7EF98E5EC3D25D6FE0015A6590 │ │ │ │ │ -E3C6EE632D7F6558B914609A8829CD1DEAB83A3F1207D5C3AAC9EAEA9DE1B4F8 │ │ │ │ │ -2375C5D4F630BCE13475F941ED2324D2CD4DCF2285298EAA4FFF89433D853860 │ │ │ │ │ -A974A9FC0808580FBDE7D02EDBB3D8C65BD3109AE8B359E96BFB7E21C696F440 │ │ │ │ │ -312B0CCAD810BF070DF8FC281E8198EB20A7FF9C9BCD291D74BC75EE46799485 │ │ │ │ │ -1AB2AE36B7E525034D146A856AF3BD9057A0033C08B606B89DD130548950C93D │ │ │ │ │ -94A8C92C47A34A791B1C108D2F36E899B79358B8081CCFC3D1A2F0521E4E2AE4 │ │ │ │ │ -7F500D6F2A53E5393E44201287225912590ABC738E8726622B67C3425639CCFB │ │ │ │ │ -F450B78A4918 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004B9BA1CC │ │ │ │ │ +580D3C6BDA4DC1B80B4365F1C80512453FC5316EC2D928FB731C3D6403E3C18B │ │ │ │ │ +E8424D644DF5E9A2134229C5C91CA68DB8E85BA2BB40F538F585DA6FA4037718 │ │ │ │ │ +B8053EBBA1E765346BCD5BDAA6C38115D31611D8A87A2238C145F2DA2F92E4DF │ │ │ │ │ +3987BD9C4D2A3D460E8941A68B125BCD9EE4F9FD262C4C8A71F47A2C81975635 │ │ │ │ │ +F1B981C274C53FA2ACCDE4C9D0A7C62D6C1EFF91CFC6712CA6A9F333C9564FCB │ │ │ │ │ +2A70F0AD715A79B10A08AB069E2A3C93BC0AED19D0CA10134B8DDDE8AF548DB2 │ │ │ │ │ +3A4AAA9C29682CF135BB767DAA16169A127EB50A7EECEB6480CF56A7D0F8AC56 │ │ │ │ │ +4A5090B3D75A790372886AF568D94C8165975A05BFBFDF1FFBA45F70700BB9E0 │ │ │ │ │ +57F3249EF9E9C8AD9CBCF6E4FD592DC4CDD2D7864F7C8A3FA6FC44C25C0CE7E1 │ │ │ │ │ +299F8A90B32B75DEA28917531621E1E7E0ECEE9E01665DEE99FBCF3EC3F30686 │ │ │ │ │ +513D7CBA745E660502603865D5A3E82D24B3F94B2884B21DC53AED87F49380E0 │ │ │ │ │ +68EE79C580931308DA762670C1F86F07FFB479773CD9C5DE6F22980DEC973D1C │ │ │ │ │ +A1E162D73932561BAAB24DE51DC8708291B666B36BABCA1FEDB6DD9C22572914 │ │ │ │ │ +7194DA044319F362452D53DD4D9A59134838E540F1E23805CEF53FF4F7519385 │ │ │ │ │ +1FAE3061F94369FEB1232BDA2E2A281E6972FB4524EFA37A598E7CDC097683EA │ │ │ │ │ +1B609952AEC0799B4711AAAB22D6B1D5CC729DE70897FDDC48AF0A12E40FFE30 │ │ │ │ │ +6528C601E68E8CFA4BBF897CF89DB712DE108DD1F084EFD917BFD9A70A74EB8F │ │ │ │ │ +D0D5B43CCC30373A5E871F18A969D01C69C2B4377622A0C8C4D7C4C28DDE5586 │ │ │ │ │ +BD17D5D640A6F396BD41993BD1932EE10953847F82F7BB36480B67A4F69F0763 │ │ │ │ │ +69423D1803B7BB60594ABEEE9578076639B84D8323F56104438803D45402FEE3 │ │ │ │ │ +045DAB16C4459DA9BBE01D0385CC771FB8DABDD8A9D280C18553F92FE6591CFD │ │ │ │ │ +26B82F28E6673BD823598D3F6CE03BEE04D9A21ED908DFC4F640227C148F133D │ │ │ │ │ +D32113275297C16EBCC9028AFD9102DE50E9CF67E7CF8C42BB8E73D1DAF8A5E2 │ │ │ │ │ +EF5979426229664A990DEF980A7038D2F229789D4F6EDBE1FB81BEC1A1BB14D7 │ │ │ │ │ +882515C62660E8877BE942712D57B86A2E19995AF087DECB7FD5208583C020AE │ │ │ │ │ +FEC86A2826530AD855006225300E4655F443C9360A8BAC96B5B096DDC9B12EDF │ │ │ │ │ +C862215AD6C432CF345FE701757E4EBB8C65F46912CB0F4DEF53672F7298D8F7 │ │ │ │ │ +EE51A9C5DE689A8D36956B7F0410893C0998DB03B73B4024CB046F8F6B32E07F │ │ │ │ │ +CD28A68AFB7152E45F1021DCD520D8A429FCDCA4B8054BAF0B48C4443280F198 │ │ │ │ │ +3360B078E6DEC37772DA8B629CFFD1534E8AA10E26B0BC58E92B9BF280C8EE45 │ │ │ │ │ +618EECDE904249F5A2010DC55D1028DFF4F058260B2B0A46541D6157970F44BD │ │ │ │ │ +D7483802D56A81184119DDBC914E8E394CBEEB506B61BB1CE2A3465252E5D8A3 │ │ │ │ │ +6BDD2D067E69D4ECEFC7D5568378F5F8B38EAFF138014185FE19DF7358A7A780 │ │ │ │ │ +3BE0E2CCD1561113F2F2319BDB503230DD0866121604710CEBBAA659ABFC010B │ │ │ │ │ +5CC40E5807F461D87E75BDC6AD96BCEF62AF668D48D7A76D08B57650F35CF609 │ │ │ │ │ +C0F791AEBEB75E29FA69596BAB419804AECE0F0238AAE64A6C13A22EBF4E3EAC │ │ │ │ │ +3570DECE85F54064486B2364D63E94FEB7C16350CDA318510A45C8848DB470ED │ │ │ │ │ +BFAFD2365681D65CFF3E6C1B4B7C8AE3066F96E819D05B97F3A6C2BFF8A72978 │ │ │ │ │ +EEB7F632FF604AD003A3CCA5A0465D53033A646E8082D3491EDECA3DA1A0E1BB │ │ │ │ │ +64BF36946520438D2EE72FA9EB1CEEDF56510AADA55A8DE280E23C904E0810FA │ │ │ │ │ +A3177CF684F06A4042DE4CD4AB21E2F0616153BEEE58EBBD89911FA43BC52969 │ │ │ │ │ +230C8137DB34C13E147B06C7A3875A931E1AC127E7D3EA0DF8346B6971F80901 │ │ │ │ │ +DC37F2DE1A0B81FD93CA3B5EB9B29ECABA1492901B1BA261DAB872FB3431C718 │ │ │ │ │ +9C9CDA7864908CD773864908DEB44E343221C2C4C335341789A46325D94C767C │ │ │ │ │ +740E3B60CE6D452A3A665967F568671FD7DD460B404B9C3D2EDCD47A336AA2C7 │ │ │ │ │ +BB0B1AC3823978F610629EF7AB526098A7EE7076F50A146D8134BA2DEC1B8ACF │ │ │ │ │ +68A7E4A9B7BE17FB71480516F2D6A8866E56CFD7C7A41311F48DDDD9887DACB8 │ │ │ │ │ +73FDAF5F25E956AFB0A9D530DE2E1128F006AAC9A78715BA2F90C8FED3729BFA │ │ │ │ │ +BDDD4098F870A27A91A0CB540D166FF86A442E95C9C361FD23378A2A138EAFB8 │ │ │ │ │ +D7050B486E1CB95068D890BCCD669456F3385C8F1793CE545099421368FE0F46 │ │ │ │ │ +53137AD2B65030B19CE7FF6B1669DB7A3C440AEF27149780E36C7097B7A8B71B │ │ │ │ │ +8789EECFA9A70B1F9695BB5D94E9A7D341291C1CA1BDEF4BE3EFCB8234CE9FFD │ │ │ │ │ +E1C4963CF919780129FA60162FEAA8AE97328F4BA14D949057A3EE74214F2D29 │ │ │ │ │ +51E7BE584446F6702F39957AE455CF8AF0C36AADAA39B53553D923CA5E9D4988 │ │ │ │ │ +76701B4F77DAE5185AC29900 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -4604,20 +4607,20 @@ │ │ │ │ │ %%EndFont │ │ │ │ │ TeXDict begin 39158280 55380996 1000 600 600 (main.dvi) │ │ │ │ │ @start /Fa 205[33 33 49[{}2 58.1154 /CMR7 rf /Fb 255[65{}1 │ │ │ │ │ 83.022 /CMSY10 rf /Fc 149[27 21[39 11[54 72[{}3 58.1154 │ │ │ │ │ /CMMI7 rf /Fd 173[74 77 81[{}2 99.6264 /CMMI12 rf /Fe │ │ │ │ │ 133[50 59 3[62 44 44 46 2[56 62 93 31 2[31 62 1[34 51 │ │ │ │ │ 62 50 1[54 11[86 1[62 3[84 88 106 3[42 6[80 9[56 56 56 │ │ │ │ │ -56 56 56 56 56 2[31 46[{}33 99.6264 /CMBX12 rf /Ff 134[44 │ │ │ │ │ -23[42 19[76 18[23 5[42 1[42 42 42 3[23 44[{}9 83.022 │ │ │ │ │ -/CMSL10 rf /Fg 139[62 4[62 4[62 4[62 1[62 62 32[62 14[62 │ │ │ │ │ -50[{}8 119.552 /CMTT12 rf /Fh 136[55 1[45 28 34 35 1[42 │ │ │ │ │ -42 47 68 21 38 1[25 42 38 1[38 42 38 38 42 12[59 1[61 │ │ │ │ │ -11[54 56 63 2[62 6[25 58[{}26 83.022 /CMTI10 rf │ │ │ │ │ +56 56 56 56 56 2[31 46[{}33 99.6264 /CMBX12 rf /Ff 138[46 │ │ │ │ │ +6[46 8[37 26[43 15[23 4[42 1[42 42 1[42 3[23 44[{}10 │ │ │ │ │ +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 │ │ │ │ │ @@ -4738,17 +4741,17 @@ │ │ │ │ │ 2397 4912 V 31 w(BY)p 2516 4912 V 31 w(COLUMNS)p Fm(.)0 │ │ │ │ │ 5204 y Fj(1.2)135 b(Protot)l(yp)t(es)46 b(and)f(descriptions)g(of)g │ │ │ │ │ Fg(A2)f Fj(metho)t(ds)0 5407 y Fm(This)28 b(section)f(con)n(tains)f │ │ │ │ │ (brief)i(descriptions)f(including)h(protot)n(yp)r(es)e(of)i(all)f │ │ │ │ │ (metho)r(ds)h(that)g(b)r(elong)f(to)g(the)h Fl(A2)f Fm(ob)5 │ │ │ │ │ b(ject.)1929 5656 y(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fm(2)p 125 100 1332 4 v │ │ │ │ │ -1497 w Fl(A2)27 b Ff(:)37 b Fh(DRAFT)27 b Ff(Ma)n(y)g(1,)g(2024)p │ │ │ │ │ -2568 100 V 0 390 a Fe(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fm(2)p 125 100 1326 4 v │ │ │ │ │ +1491 w Fl(A2)27 b Ff(:)37 b Fh(DRAFT)27 b Ff(June)g(3,)h(2025)p │ │ │ │ │ +2575 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 │ │ │ │ │ @@ -4807,98 +4810,97 @@ │ │ │ │ │ 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 1332 4 v 1498 100 a Fl(A2)27 │ │ │ │ │ -b Ff(:)36 b Fh(DRAFT)111 b Ff(Ma)n(y)27 b(1,)g(2024)p │ │ │ │ │ -2529 100 V 1332 w Fm(3)101 390 y(6.)42 b Fl(double)f(*)i(A2_row)e(\()i │ │ │ │ │ -(A2)g(*mtx,)e(int)i(irow)f(\))h(;)208 541 y Fm(This)27 │ │ │ │ │ -b(metho)r(d)h(returns)f(a)g(p)r(oin)n(ter)g(to)h(the)g(leading)f │ │ │ │ │ -(elemen)n(t)h(of)f(ro)n(w)g Fl(irow)p Fm(.)208 691 y │ │ │ │ │ -Fh(Err)l(or)k(che)l(cking:)41 b Fm(If)29 b Fl(mtx)f Fm(or)g │ │ │ │ │ -Fl(entries)e Fm(is)j Fl(NULL)p Fm(,)e(or)h(if)i Fl(irow)d │ │ │ │ │ -Fm(is)i(not)f(in)i Fl([0,n1-1])p Fm(,)c(an)i(error)f(message)g(is)i │ │ │ │ │ -(prin)n(ted)208 791 y(and)e(the)h(program)e(exits.)101 │ │ │ │ │ -993 y(7.)42 b Fl(double)f(*)i(A2_column)d(\()j(A2)g(*mtx,)e(int)h(jcol) │ │ │ │ │ -g(\))i(;)208 1143 y Fm(This)27 b(metho)r(d)h(returns)f(a)g(p)r(oin)n │ │ │ │ │ -(ter)g(to)h(the)g(leading)f(elemen)n(t)h(of)f(column)h │ │ │ │ │ -Fl(jcol)p Fm(.)208 1294 y Fh(Err)l(or)j(che)l(cking:)41 │ │ │ │ │ +TeXDict begin 3 2 bop 83 100 1326 4 v 1491 100 a Fl(A2)27 │ │ │ │ │ +b Ff(:)37 b Fh(DRAFT)110 b Ff(June)28 b(3,)f(2025)p 2535 │ │ │ │ │ +100 V 1326 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(jcol)d Fm(is)i(not)f(in)i Fl([0,n2-1])p │ │ │ │ │ -Fm(,)c(an)i(error)f(message)g(is)i(prin)n(ted)208 1394 │ │ │ │ │ -y(and)e(the)h(program)e(exits.)101 1595 y(8.)42 b Fl(void)f │ │ │ │ │ -(A2_realEntry)e(\()k(A2)g(*mtx,)f(int)g(irow,)f(int)i(jcol,)e(double)g │ │ │ │ │ -(*pValue)g(\))i(;)208 1746 y Fm(This)27 b(metho)r(d)h(\014lls)g │ │ │ │ │ -Fl(*pValue)d Fm(with)j(the)g(en)n(try)f(in)h(lo)r(cation)f │ │ │ │ │ -Fl(\(irow,)41 b(jcol\))p Fm(.)208 1896 y Fh(Err)l(or)29 │ │ │ │ │ -b(che)l(cking:)37 b Fm(If)27 b Fl(mtx)e Fm(or)g Fl(pValue)f │ │ │ │ │ -Fm(is)i Fl(NULL)p Fm(,)f(or)g(if)i(the)g(matrix)e(is)h(not)h(real,)e │ │ │ │ │ -(or)h Fl(irow)e Fm(is)i(not)g(in)h Fl([0,n1-1])p Fm(,)c(or)j(if)208 │ │ │ │ │ -1996 y Fl(jcol)g 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)g(the)h(program)e(exits.)101 │ │ │ │ │ -2198 y(9.)42 b Fl(void)f(A2_complexEntry)d(\()43 b(A2)g(*mtx,)e(int)i │ │ │ │ │ -(irow,)e(int)i(jcol,)1210 2297 y(double)e(*pReal,)g(double)g(*pImag)g │ │ │ │ │ -(\))i(;)208 2448 y Fm(This)27 b(metho)r(d)h(\014lls)g │ │ │ │ │ -Fl(\(*pReal,*pImag\))21 b Fm(with)28 b(the)g(en)n(try)f(in)h(lo)r │ │ │ │ │ -(cation)f Fl(\(irow,)41 b(jcol\))p Fm(.)208 2599 y Fh(Err)l(or)c(che)l │ │ │ │ │ -(cking:)53 b Fm(If)36 b Fl(mtx)p Fm(,)f Fl(pReal)e Fm(or)i │ │ │ │ │ -Fl(pImag)e Fm(is)i Fl(NULL)p Fm(,)e(or)h(if)i(the)f(matrix)g(is)g(not)g │ │ │ │ │ -(complex,)h(or)e Fl(irow)g Fm(is)h(not)g(in)208 2698 │ │ │ │ │ -y Fl([0,n1-1])p Fm(,)24 b(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.)60 2900 y(10.)41 b Fl(void)g(A2_setRealEntry)d │ │ │ │ │ -(\()43 b(A2)g(*mtx,)e(int)i(irow,)e(int)i(jcol,)e(double)g(value)h(\))h │ │ │ │ │ -(;)208 3051 y Fm(This)27 b(metho)r(d)h(sets)g(en)n(try)f │ │ │ │ │ -Fl(\(irow,jcol\))c Fm(to)k Fl(value)p Fm(.)208 3201 y │ │ │ │ │ -Fh(Err)l(or)h(che)l(cking:)37 b Fm(If)26 b Fl(mtx)e Fm(is)i │ │ │ │ │ -Fl(NULL)p Fm(,)e(or)g(if)i(the)g(matrix)f(is)g(not)h(real,)f(or)f │ │ │ │ │ -Fl(irow)g Fm(is)h(not)h(in)f Fl([0,n1-1])d Fm(or)j(if)h │ │ │ │ │ -Fl(jcol)e Fm(is)h(not)208 3301 y(in)i Fl([0,n2-1])p Fm(,)e(an)i(error)f │ │ │ │ │ -(message)g(is)h(prin)n(ted)h(and)f(the)h(program)e(exits.)60 │ │ │ │ │ -3502 y(11.)41 b Fl(void)g(A2_setComplexEntr)o(y)d(\()43 │ │ │ │ │ -b(A2)g(*mtx,)e(int)h(irow,)g(int)g(jcol,)1341 3602 y(double)f(real,)g │ │ │ │ │ -(double)h(imag)f(\))j(;)208 3753 y Fm(This)27 b(metho)r(d)h(sets)g(en)n │ │ │ │ │ -(try)f Fl(\(irow,jcol\))c Fm(to)k Fl(\(real,imag\))p │ │ │ │ │ -Fm(.)208 3903 y Fh(Err)l(or)k(che)l(cking:)40 b Fm(If)29 │ │ │ │ │ -b Fl(mtx)e Fm(is)h Fl(NULL)p Fm(,)f(or)h(if)h(the)g(matrix)f(is)g(not)h │ │ │ │ │ -(complex,)f(or)f Fl(irow)g Fm(is)i(not)f(in)h Fl([0,n1-1])c │ │ │ │ │ -Fm(or)j(if)h Fl(jcol)208 4003 y Fm(is)e(not)h(in)f Fl([0,n2-1])p │ │ │ │ │ -Fm(,)e(an)i(error)f(message)g(is)i(prin)n(ted)f(and)g(the)h(program)e │ │ │ │ │ -(exits.)60 4205 y(12.)41 b Fl(void)g(A2_pointerToRealE)o(ntr)o(y)c(\() │ │ │ │ │ -44 b(A2)e(*mtx,)g(int)g(irow,)g(int)g(jcol,)g(double)f(**ppValue)f(\))j │ │ │ │ │ -(;)208 4355 y Fm(This)27 b(metho)r(d)h(sets)g Fl(*ppValue)c │ │ │ │ │ -Fm(to)j(the)h(p)r(oin)n(ter)g(of)f(the)h Fl(\(irow,jcol\))23 │ │ │ │ │ -b Fm(en)n(try)-7 b(.)208 4506 y Fh(Err)l(or)31 b(che)l(cking:)41 │ │ │ │ │ -b Fm(If)30 b Fl(mtx)d Fm(or)h Fl(ppValue)e Fm(is)j Fl(NULL)p │ │ │ │ │ -Fm(,)f(or)g(if)h(the)g(matrix)g(is)f(not)h(real,)g(or)f(if)h │ │ │ │ │ -Fl(irow)e Fm(is)i(not)g(in)g Fl([0,n1-1])p Fm(,)208 4605 │ │ │ │ │ -y(or)d(if)i Fl(jcol)e Fm(is)i(not)f(in)h Fl([0,n2-1])p │ │ │ │ │ -Fm(,)d(an)i(error)f(message)g(is)h(prin)n(ted)h(and)f(the)h(program)e │ │ │ │ │ -(exits.)60 4807 y(13.)41 b Fl(void)g(A2_pointerToCompl)o(exE)o(nt)o(ry) │ │ │ │ │ -c(\()43 b(A2)g(*mtx,)f(int)g(irow,)f(int)i(jcol,)1602 │ │ │ │ │ +Fm(,)e(or)h(if)i Fl(irow)d Fm(is)i(not)f(in)i Fl([0,n1-1])p │ │ │ │ │ +Fm(,)c(an)i(error)f(message)g(is)i(prin)n(ted)208 791 │ │ │ │ │ +y(and)e(the)h(program)e(exits.)101 993 y(7.)42 b Fl(double)f(*)i │ │ │ │ │ +(A2_column)d(\()j(A2)g(*mtx,)e(int)h(jcol)g(\))i(;)208 │ │ │ │ │ +1143 y Fm(This)27 b(metho)r(d)h(returns)f(a)g(p)r(oin)n(ter)g(to)h(the) │ │ │ │ │ +g(leading)f(elemen)n(t)h(of)f(column)h Fl(jcol)p Fm(.)208 │ │ │ │ │ +1294 y Fh(Err)l(or)j(che)l(cking:)41 b Fm(If)29 b Fl(mtx)f │ │ │ │ │ +Fm(or)g Fl(entries)e Fm(is)j Fl(NULL)p Fm(,)e(or)h(if)i │ │ │ │ │ +Fl(jcol)d Fm(is)i(not)f(in)i Fl([0,n2-1])p Fm(,)c(an)i(error)f(message) │ │ │ │ │ +g(is)i(prin)n(ted)208 1394 y(and)e(the)h(program)e(exits.)101 │ │ │ │ │ +1595 y(8.)42 b Fl(void)f(A2_realEntry)e(\()k(A2)g(*mtx,)f(int)g(irow,)f │ │ │ │ │ +(int)i(jcol,)e(double)g(*pValue)g(\))i(;)208 1746 y Fm(This)27 │ │ │ │ │ +b(metho)r(d)h(\014lls)g Fl(*pValue)d Fm(with)j(the)g(en)n(try)f(in)h │ │ │ │ │ +(lo)r(cation)f Fl(\(irow,)41 b(jcol\))p Fm(.)208 1896 │ │ │ │ │ +y Fh(Err)l(or)29 b(che)l(cking:)37 b Fm(If)27 b Fl(mtx)e │ │ │ │ │ +Fm(or)g Fl(pValue)f Fm(is)i Fl(NULL)p Fm(,)f(or)g(if)i(the)g(matrix)e │ │ │ │ │ +(is)h(not)h(real,)e(or)h Fl(irow)e Fm(is)i(not)g(in)h │ │ │ │ │ +Fl([0,n1-1])p Fm(,)c(or)j(if)208 1996 y Fl(jcol)g 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)g │ │ │ │ │ +(the)h(program)e(exits.)101 2198 y(9.)42 b Fl(void)f(A2_complexEntry)d │ │ │ │ │ +(\()43 b(A2)g(*mtx,)e(int)i(irow,)e(int)i(jcol,)1210 │ │ │ │ │ +2297 y(double)e(*pReal,)g(double)g(*pImag)g(\))i(;)208 │ │ │ │ │ +2448 y Fm(This)27 b(metho)r(d)h(\014lls)g Fl(\(*pReal,*pImag\))21 │ │ │ │ │ +b Fm(with)28 b(the)g(en)n(try)f(in)h(lo)r(cation)f Fl(\(irow,)41 │ │ │ │ │ +b(jcol\))p Fm(.)208 2599 y Fh(Err)l(or)c(che)l(cking:)53 │ │ │ │ │ +b Fm(If)36 b Fl(mtx)p Fm(,)f Fl(pReal)e Fm(or)i Fl(pImag)e │ │ │ │ │ +Fm(is)i Fl(NULL)p Fm(,)e(or)h(if)i(the)f(matrix)g(is)g(not)g(complex,)h │ │ │ │ │ +(or)e Fl(irow)g Fm(is)h(not)g(in)208 2698 y Fl([0,n1-1])p │ │ │ │ │ +Fm(,)24 b(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.)60 2900 y(10.)41 b Fl(void)g(A2_setRealEntry)d(\()43 │ │ │ │ │ +b(A2)g(*mtx,)e(int)i(irow,)e(int)i(jcol,)e(double)g(value)h(\))h(;)208 │ │ │ │ │ +3051 y Fm(This)27 b(metho)r(d)h(sets)g(en)n(try)f Fl(\(irow,jcol\))c │ │ │ │ │ +Fm(to)k Fl(value)p Fm(.)208 3201 y Fh(Err)l(or)h(che)l(cking:)37 │ │ │ │ │ +b Fm(If)26 b Fl(mtx)e Fm(is)i Fl(NULL)p Fm(,)e(or)g(if)i(the)g(matrix)f │ │ │ │ │ +(is)g(not)h(real,)f(or)f Fl(irow)g Fm(is)h(not)h(in)f │ │ │ │ │ +Fl([0,n1-1])d Fm(or)j(if)h Fl(jcol)e Fm(is)h(not)208 │ │ │ │ │ +3301 y(in)i Fl([0,n2-1])p Fm(,)e(an)i(error)f(message)g(is)h(prin)n │ │ │ │ │ +(ted)h(and)f(the)h(program)e(exits.)60 3502 y(11.)41 │ │ │ │ │ +b Fl(void)g(A2_setComplexEntr)o(y)d(\()43 b(A2)g(*mtx,)e(int)h(irow,)g │ │ │ │ │ +(int)g(jcol,)1341 3602 y(double)f(real,)g(double)h(imag)f(\))j(;)208 │ │ │ │ │ +3753 y Fm(This)27 b(metho)r(d)h(sets)g(en)n(try)f Fl(\(irow,jcol\))c │ │ │ │ │ +Fm(to)k Fl(\(real,imag\))p Fm(.)208 3903 y Fh(Err)l(or)k(che)l(cking:) │ │ │ │ │ +40 b Fm(If)29 b Fl(mtx)e Fm(is)h Fl(NULL)p Fm(,)f(or)h(if)h(the)g │ │ │ │ │ +(matrix)f(is)g(not)h(complex,)f(or)f Fl(irow)g Fm(is)i(not)f(in)h │ │ │ │ │ +Fl([0,n1-1])c Fm(or)j(if)h Fl(jcol)208 4003 y Fm(is)e(not)h(in)f │ │ │ │ │ +Fl([0,n2-1])p Fm(,)e(an)i(error)f(message)g(is)i(prin)n(ted)f(and)g │ │ │ │ │ +(the)h(program)e(exits.)60 4205 y(12.)41 b Fl(void)g(A2_pointerToRealE) │ │ │ │ │ +o(ntr)o(y)c(\()44 b(A2)e(*mtx,)g(int)g(irow,)g(int)g(jcol,)g(double)f │ │ │ │ │ +(**ppValue)f(\))j(;)208 4355 y Fm(This)27 b(metho)r(d)h(sets)g │ │ │ │ │ +Fl(*ppValue)c Fm(to)j(the)h(p)r(oin)n(ter)g(of)f(the)h │ │ │ │ │ +Fl(\(irow,jcol\))23 b Fm(en)n(try)-7 b(.)208 4506 y Fh(Err)l(or)31 │ │ │ │ │ +b(che)l(cking:)41 b Fm(If)30 b Fl(mtx)d Fm(or)h Fl(ppValue)e │ │ │ │ │ +Fm(is)j Fl(NULL)p Fm(,)f(or)g(if)h(the)g(matrix)g(is)f(not)h(real,)g │ │ │ │ │ +(or)f(if)h Fl(irow)e Fm(is)i(not)g(in)g Fl([0,n1-1])p │ │ │ │ │ +Fm(,)208 4605 y(or)d(if)i Fl(jcol)e Fm(is)i(not)f(in)h │ │ │ │ │ +Fl([0,n2-1])p Fm(,)d(an)i(error)f(message)g(is)h(prin)n(ted)h(and)f │ │ │ │ │ +(the)h(program)e(exits.)60 4807 y(13.)41 b Fl(void)g(A2_pointerToCompl) │ │ │ │ │ +o(exE)o(nt)o(ry)c(\()43 b(A2)g(*mtx,)f(int)g(irow,)f(int)i(jcol,)1602 │ │ │ │ │ 4907 y(double)e(**ppReal,)f(double)h(**ppImag)g(\))i(;)208 │ │ │ │ │ 5057 y Fm(This)26 b(metho)r(d)h(sets)f Fl(*ppReal)e Fm(to)i(the)h(p)r │ │ │ │ │ (oin)n(ter)g(to)f(the)h(real)e(part)h(of)h(the)g Fl(\(irow,jcol\))22 │ │ │ │ │ b Fm(en)n(try)-7 b(,)26 b(and)h(sets)f Fl(*ppImag)208 │ │ │ │ │ 5157 y Fm(to)h(the)h(p)r(oin)n(ter)f(to)h(the)g(imaginary)e(part)h(of)g │ │ │ │ │ (the)h Fl(\(irow,jcol\))23 b Fm(en)n(try)-7 b(.)208 5308 │ │ │ │ │ y Fh(Err)l(or)30 b(che)l(cking:)38 b Fm(If)28 b Fl(mtx)p │ │ │ │ │ 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 1332 4 v │ │ │ │ │ -1497 w Fl(A2)27 b Ff(:)37 b Fh(DRAFT)27 b Ff(Ma)n(y)g(1,)g(2024)p │ │ │ │ │ -2568 100 V 0 390 a Fe(1.2.3)112 b(Initialize)38 b(metho)s(ds)101 │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fm(4)p 125 100 1326 4 v │ │ │ │ │ +1491 w Fl(A2)27 b Ff(:)37 b Fh(DRAFT)27 b Ff(June)g(3,)h(2025)p │ │ │ │ │ +2575 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 │ │ │ │ │ @@ -4982,19 +4984,19 @@ │ │ │ │ │ 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 1332 4 v 1498 100 a Fl(A2)27 │ │ │ │ │ -b Ff(:)36 b Fh(DRAFT)111 b Ff(Ma)n(y)27 b(1,)g(2024)p │ │ │ │ │ -2529 100 V 1332 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 │ │ │ │ │ +TeXDict begin 5 4 bop 83 100 1326 4 v 1491 100 a Fl(A2)27 │ │ │ │ │ +b Ff(:)37 b Fh(DRAFT)110 b Ff(June)28 b(3,)f(2025)p 2535 │ │ │ │ │ +100 V 1326 w Fm(5)101 390 y(4.)42 b Fl(void)f(A2_applyQT)f(\()j(A2)g │ │ │ │ │ +(*Y,)f(A2)h(*A,)f(A2)h(*X,)f(DV)h(*workDV,)d(int)j(msglvl,)d(FILE)i │ │ │ │ │ +(*msgFile)f(\))i(;)208 522 y Fm(This)22 b(metho)r(d)h(computes)f │ │ │ │ │ Fk(Y)42 b Fm(=)22 b Fk(Q)1296 491 y Fc(T)1348 522 y Fk(X)29 │ │ │ │ │ b Fm(\(if)23 b(real\))f(or)f Fk(Y)42 b Fm(=)22 b Fk(Q)2077 │ │ │ │ │ 491 y Fc(H)2140 522 y Fk(X)29 b Fm(\(if)23 b(complex\),)g(where)f │ │ │ │ │ Fk(Q)g Fm(is)g(stored)g(in)g(Householder)208 621 y(v)n(ectors)d(inside) │ │ │ │ │ j Fk(A)p Fm(.)35 b(W)-7 b(e)21 b(assume)g(that)h Fk(A)p │ │ │ │ │ Fm(2)p 1533 621 25 4 v 29 w Fk(r)r(educe)p Fm(\(\))g(has)f(b)r(een)g │ │ │ │ │ (previously)f(called)h(with)h Fk(A)g Fm(as)e(an)h(argumen)n(t.)34 │ │ │ │ │ @@ -5060,17 +5062,17 @@ │ │ │ │ │ 5176 y Fm(This)27 b(metho)r(d)h(returns)f(the)h(one-norm)e(of)i(ro)n(w) │ │ │ │ │ e Fl(irow)g Fm(of)i(the)g(matrix.)208 5308 y Fh(Err)l(or)d(che)l │ │ │ │ │ (cking:)36 b Fm(If)22 b Fl(mtx)f Fm(is)h Fl(NULL)p Fm(,)e(or)i │ │ │ │ │ Fl(irow)e Fm(is)i(not)g(in)g Fl([0,n1-1])p Fm(,)e(an)i(error)e(message) │ │ │ │ │ h(is)h(prin)n(ted)g(and)g(the)g(program)208 5407 y(exits.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 6 6 │ │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fm(6)p 125 100 1332 4 v │ │ │ │ │ -1497 w Fl(A2)27 b Ff(:)37 b Fh(DRAFT)27 b Ff(Ma)n(y)g(1,)g(2024)p │ │ │ │ │ -2568 100 V 101 390 a Fm(9.)42 b Fl(double)f(A2_twoNormOfRow)c(\()43 │ │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fm(6)p 125 100 1326 4 v │ │ │ │ │ +1491 w Fl(A2)27 b Ff(:)37 b Fh(DRAFT)27 b Ff(June)g(3,)h(2025)p │ │ │ │ │ +2575 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 │ │ │ │ │ @@ -5143,17 +5145,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 1332 4 v 1498 100 a Fl(A2)27 │ │ │ │ │ -b Ff(:)36 b Fh(DRAFT)111 b Ff(Ma)n(y)27 b(1,)g(2024)p │ │ │ │ │ -2529 100 V 1332 w Fm(7)208 390 y Fh(Err)l(or)j(che)l(cking:)38 │ │ │ │ │ +TeXDict begin 7 6 bop 83 100 1326 4 v 1491 100 a Fl(A2)27 │ │ │ │ │ +b Ff(:)37 b Fh(DRAFT)110 b Ff(June)28 b(3,)f(2025)p 2535 │ │ │ │ │ +100 V 1326 w Fm(7)208 390 y Fh(Err)l(or)j(che)l(cking:)38 │ │ │ │ │ b Fm(If)28 b Fl(mtx)f Fm(is)g Fl(NULL)f Fm(an)i(error)d(message)h(is)i │ │ │ │ │ (prin)n(ted)f(and)h(the)g(program)d(exits.)101 551 y(3.)42 │ │ │ │ │ b Fl(int)g(A2_rowMajor)d(\()k(A2)g(*mtx)f(\))h(;)208 │ │ │ │ │ 682 y Fm(This)27 b(metho)r(d)h(returns)f(1)g(if)h(the)g(storage)e(is)i │ │ │ │ │ (ro)n(w)e(ma)5 b(jor,)26 b(otherwise)h(it)h(returns)f(zero.)208 │ │ │ │ │ 812 y Fh(Err)l(or)j(che)l(cking:)38 b Fm(If)28 b Fl(mtx)f │ │ │ │ │ Fm(is)g Fl(NULL)p Fm(,)f(an)i(error)d(message)i(is)g(prin)n(ted)h(and)f │ │ │ │ │ @@ -5227,17 +5229,17 @@ │ │ │ │ │ Fm(of)i(the)g(matrix)f(with)h(the)g(en)n(tries)f(in)h(the)g │ │ │ │ │ Fl(row[])d Fm(v)n(ector.)208 5308 y Fh(Err)l(or)k(che)l(cking:)39 │ │ │ │ │ b Fm(If)27 b Fl(mtx)p Fm(,)f Fl(entries)e Fm(or)j Fl(row[])e │ │ │ │ │ Fm(are)h Fl(NULL)p Fm(,)f(or)h(if)i Fl(irow)d Fm(is)i(not)g(in)h │ │ │ │ │ Fl([0,n1-1])p Fm(,)c(an)i(error)g(message)f(is)208 5407 │ │ │ │ │ y(prin)n(ted)i(and)g(the)h(program)e(exits.)p eop end │ │ │ │ │ %%Page: 8 8 │ │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fm(8)p 125 100 1332 4 v │ │ │ │ │ -1497 w Fl(A2)27 b Ff(:)37 b Fh(DRAFT)27 b Ff(Ma)n(y)g(1,)g(2024)p │ │ │ │ │ -2568 100 V 60 390 a Fm(13.)41 b Fl(void)g(A2_setRowDV)f(\()j(A2)f │ │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fm(8)p 125 100 1326 4 v │ │ │ │ │ +1491 w Fl(A2)27 b Ff(:)37 b Fh(DRAFT)27 b Ff(June)g(3,)h(2025)p │ │ │ │ │ +2575 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 │ │ │ │ │ @@ -5312,17 +5314,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 1332 4 v 1498 100 a Fl(A2)27 │ │ │ │ │ -b Ff(:)36 b Fh(DRAFT)111 b Ff(Ma)n(y)27 b(1,)g(2024)p │ │ │ │ │ -2529 100 V 1332 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 1326 4 v 1491 100 a Fl(A2)27 │ │ │ │ │ +b Ff(:)37 b Fh(DRAFT)110 b Ff(June)28 b(3,)f(2025)p 2535 │ │ │ │ │ +100 V 1326 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 │ │ │ │ │ @@ -5409,17 +5411,17 @@ │ │ │ │ │ (in)i(reading)208 5275 y(the)i(data,)f(the)h(v)-5 b(alue)27 │ │ │ │ │ b Fl(1)g Fm(is)h(returned.)36 b(If)28 b(an)g(IO)f(error)f(is)h(encoun)n │ │ │ │ │ (tered)g(from)g Fl(fread)p Fm(,)f(zero)g(is)i(returned.)208 │ │ │ │ │ 5407 y Fh(Err)l(or)i(che)l(cking:)38 b Fm(If)28 b Fl(mtx)f │ │ │ │ │ Fm(or)g Fl(fp)f Fm(are)h Fl(NULL)p Fm(,)f(an)h(error)f(message)g(is)i │ │ │ │ │ (prin)n(ted)f(and)h(zero)e(is)i(returned.)p eop end │ │ │ │ │ %%Page: 10 10 │ │ │ │ │ -TeXDict begin 10 9 bop 0 100 a Fm(10)p 166 100 1311 4 │ │ │ │ │ -v 1476 w Fl(A2)27 b Ff(:)37 b Fh(DRAFT)27 b Ff(Ma)n(y)g(1,)g(2024)p │ │ │ │ │ -2589 100 V 101 390 a Fm(4.)42 b Fl(int)g(A2_writeToFile)c(\()43 │ │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fm(10)p 166 100 1305 4 │ │ │ │ │ +v 1470 w Fl(A2)26 b Ff(:)37 b Fh(DRAFT)28 b Ff(June)f(3,)g(2025)p │ │ │ │ │ +2595 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 │ │ │ │ │ @@ -5496,19 +5498,19 @@ │ │ │ │ │ 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 1311 4 v 1477 100 a Fl(A2)27 │ │ │ │ │ -b Ff(:)37 b Fh(DRAFT)110 b Ff(Ma)n(y)27 b(1,)g(2024)p │ │ │ │ │ -2508 100 V 1311 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 │ │ │ │ │ +TeXDict begin 11 10 bop 83 100 1305 4 v 1471 100 a Fl(A2)26 │ │ │ │ │ +b Ff(:)37 b Fh(DRAFT)111 b Ff(June)27 b(3,)g(2025)p 2514 │ │ │ │ │ +100 V 1305 w Fm(11)307 390 y Fi(\210)42 b Fm(The)28 b │ │ │ │ │ +Fl(seed)e Fm(parameter)g(is)h(a)h(random)e(n)n(um)n(b)r(er)i(seed.)101 │ │ │ │ │ +573 y(2.)42 b Fl(test_QR)e(msglvl)h(msgFile)g(type)h(nrow)g(ncol)g │ │ │ │ │ (inc1)g(inc2)g(seed)208 706 y Fm(This)22 b(driv)n(er)g(program)e(tests) │ │ │ │ │ j(the)g Fl(A2)p 1376 706 27 4 v 30 w(QRreduce\(\))c Fm(and)k │ │ │ │ │ Fl(A2)p 2110 706 V 30 w(QRreduce2\(\))18 b Fm(metho)r(ds)23 │ │ │ │ │ b(whic)n(h)g(reduce)f Fk(A)h Fm(to)g Fk(QR)g Fm(via)208 │ │ │ │ │ 805 y(rank-1)g(and)i(rank-2)f(up)r(dates.)36 b(Use)25 │ │ │ │ │ b(the)h(script)f(\014le)h Fl(do)p 1979 805 V 30 w(QR)f │ │ │ │ │ Fm(for)f(testing.)37 b(When)25 b Fl(msglvl)41 b(>)j(1)p │ │ │ │ │ ├── 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 May 1, 2024 │ │ │ │ │ │ + 2 A2 : DRAFT June 3, 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 May 1, 2024 3 │ │ │ │ │ │ + A2 : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 4 A2 : DRAFT June 3, 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 May 1, 2024 5 │ │ │ │ │ │ + A2 : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 6 A2 : DRAFT June 3, 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 May 1, 2024 7 │ │ │ │ │ │ + A2 : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 8 A2 : DRAFT June 3, 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 May 1, 2024 9 │ │ │ │ │ │ + A2 : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 10 A2 : DRAFT June 3, 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 May 1, 2024 11 │ │ │ │ │ │ + A2 : DRAFT June 3, 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.05.01:0544 │ │ │ │ │ +%DVIPSSource: TeX output 2025.06.03:1221 │ │ │ │ │ %%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 │ │ │ │ │ @@ -1372,25 +1372,24 @@ │ │ │ │ │ /UnderlineThickness 50 def │ │ │ │ │ end readonly def │ │ │ │ │ /Encoding 256 array │ │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ │ dup 44 /comma put │ │ │ │ │ dup 46 /period put │ │ │ │ │ dup 48 /zero put │ │ │ │ │ -dup 49 /one put │ │ │ │ │ dup 50 /two put │ │ │ │ │ -dup 52 /four put │ │ │ │ │ +dup 51 /three put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ dup 65 /A put │ │ │ │ │ dup 66 /B put │ │ │ │ │ dup 67 /C put │ │ │ │ │ dup 68 /D put │ │ │ │ │ dup 71 /G put │ │ │ │ │ dup 74 /J put │ │ │ │ │ dup 75 /K put │ │ │ │ │ -dup 77 /M put │ │ │ │ │ dup 80 /P put │ │ │ │ │ dup 82 /R put │ │ │ │ │ dup 87 /W put │ │ │ │ │ dup 97 /a put │ │ │ │ │ dup 99 /c put │ │ │ │ │ dup 101 /e put │ │ │ │ │ dup 102 /f put │ │ │ │ │ @@ -1400,15 +1399,15 @@ │ │ │ │ │ dup 107 /k put │ │ │ │ │ dup 109 /m put │ │ │ │ │ dup 110 /n put │ │ │ │ │ dup 111 /o put │ │ │ │ │ dup 114 /r put │ │ │ │ │ dup 115 /s put │ │ │ │ │ dup 116 /t put │ │ │ │ │ -dup 121 /y put │ │ │ │ │ +dup 117 /u put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA │ │ │ │ │ 0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 │ │ │ │ │ 51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 │ │ │ │ │ 7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 │ │ │ │ │ @@ -1587,206 +1586,198 @@ │ │ │ │ │ 34DE10D995ABCAF45FBB3B6B73E80D05F4C51F8C29D4B0F67C8A86432A6C5E86 │ │ │ │ │ F0126AB25A5CA2875B48C61CB8112A4CF9AA08F8B0157396CF63CBECDB8867CC │ │ │ │ │ AC10F060630C9BFBAD84B1FF01C814878F0C177F552BDC9BB181B14581C6E968 │ │ │ │ │ DAAAB2896FCFB745795C4D2C87CC15BAA041EF80C5BDC12EC1F5786BB41A5A21 │ │ │ │ │ 073EE0BC436B346E014DB4099EDC67BC432E470A4B779FD556341061CA3F2BE8 │ │ │ │ │ EFA332637AEC878C2BB189CA3267B2BE5B8178E6B7889A33771F86276E6F0B8E │ │ │ │ │ 8E93B816AC7005575762EF4DE45E2794B7322F9B6D8E634FB8FF250D638EB502 │ │ │ │ │ -818321B3C46DB51B8EC6C2EF1D05C716519A3BD6B12A67239898F8A010CAF3C4 │ │ │ │ │ -3CEC6D934FF98D62D4BAA24109EDFB293663642DD966E8BDE3644BC9E155CC43 │ │ │ │ │ -3014C67190B375C6901951D834CA0A7E60531A96E5C205A44CC40B89F955587D │ │ │ │ │ -33D2C91AC8E0D399A606847AFE4255AAF9CC6FC726AA4A78C9C7311ED298510E │ │ │ │ │ -9150388333B674867E1B4B328D7C05CFBCE86DEF0D53F2CD95F54BF755984453 │ │ │ │ │ -A57999FAA7B061FD0ADDC3E87095D1708474C3BD3B2416157D0F0ADBEC7392E1 │ │ │ │ │ -9D81F3F0A636A5F02AC9E6D3FA4FDEAFE2E5D356ADEFFFFE6332D1080FC5BC97 │ │ │ │ │ -21317E218817EDF3811105E7B7E45CDBD296DB2E2CFC161CE74C7B0DC9C32225 │ │ │ │ │ -9638ABFA8155B5DC8DA9439E599BCE6123ED6542A3AB9FBE960A5A13B43DFD5A │ │ │ │ │ -1E3E0787AA2F284065753ECD6E4A5882873F3B962CBD56C0E664C3D1DB660FE6 │ │ │ │ │ -E333AB1111FCE0B946E872C84135FC80278FDEFFECFD89F072638358736F9640 │ │ │ │ │ -DA0C898DBA9442A008B652568910CD69409F3A5DCC7808A4FA18AB36EC9396F8 │ │ │ │ │ -AEA9B9E3A838DF0A05419121AC3FE8339BDC77493032F9E9CE0C0EE56CAD0810 │ │ │ │ │ -D9CBFB322D60B6391362D0BC91B1979FE53C4863744ABEC4EE8ACAB58A90C873 │ │ │ │ │ -F2812263A0C6DB7132C3E6CF323BE652BF7BF8D7E663DF6AA53043098CF84CFB │ │ │ │ │ -63DEFBDBA65C65B6E23211FB43B33BC61EA5C06DF4F24B247FD3F6F9707DF9F3 │ │ │ │ │ -E5D658414712967E4FD41CDD60D653346389372E502B09B6445B5DA093359229 │ │ │ │ │ -3CBCE877F9B5E8CD33D9A766CE95D66F439FDD3CC6BD539A6A526F1E0FD2EFA0 │ │ │ │ │ -07E1A66343B3D22162AC5871B73ADF7312E17B690B10204BEB2664ACEFB06043 │ │ │ │ │ -679D072FB314A693973BAABC7D676347A564B74C5662CC3DB11C56B4A782929B │ │ │ │ │ -BCF8470DB502B20D0D85F12022E48A0702ED31F17751ADE9DB95A09422A17124 │ │ │ │ │ -B098EB1DF952E80E66783E83B6257254453BFA53C3CB58C9AEC3B3D945D813A8 │ │ │ │ │ -9CDD37E445CB602EBD6B60C5418D22DAA917C07002EC7EDC180820AFD2182948 │ │ │ │ │ -99FB65D209A83500A15DD3143C2C07FD516EFA2B5606ABDED90E03A60F6D5DA7 │ │ │ │ │ -572EE486D09B1FF4082B7AF90D6A57F6B47D7C5833D3C6540353096BECD9DDDA │ │ │ │ │ -3A4459C4833141992543A064D8FC236C627BABC4737FC72F2E5AAFEB4E1B9796 │ │ │ │ │ -E89EE05B6470E9C44A457A33C72F02209480A3105FB81A2BC3F80D11A59BBAB9 │ │ │ │ │ -2D31D56177240C1D8DA624FFE0106EF8BED016218810D664B1E9A5DF42D13410 │ │ │ │ │ -03D0F16C3C05E67338E46ACB60980A73389ABDE74B5B7C44DD6A3CA750E999B7 │ │ │ │ │ -DE928C6FE9D76C28272AA35428780550C23DCE349E6E4775836C5EFBBEE58A4B │ │ │ │ │ -91B2C86C56E6EF8B5B46A4117EBB367DB3893B269B149E7F006628359D6E12BF │ │ │ │ │ -65FF5DD402E862DB180BC4043735D98266F904FD1821F39D881360D42B3F787D │ │ │ │ │ -97B4C237AFEA3B99707AD20267153A360C9C9400C9D590F09D6ED7CBDDA5BD6B │ │ │ │ │ -F5D7170D9EEA299E8FE56F98442750429B44E9D6F9602AE8332A59507E3682EE │ │ │ │ │ -C765AB098F362A107FFE501FFBD27DAF8D75A41D8E0237E9E8DB66468D1B3069 │ │ │ │ │ -A2CA8D0188CB7473261C237277152DE63EF8B6490F490D8346B7DC22F7262B3D │ │ │ │ │ -EEC2A15732003F94F03D88591A6A0ECACF7DE9CBCB2E6041D4125AF72E304FF2 │ │ │ │ │ -360D5035BBC540EEBDC2A3F8CB01CC4354474280B24D56622956A32218983088 │ │ │ │ │ -636D2D4499E5B9BCACF2542D4C136D51CC2D40311ED844906D24800879188F1E │ │ │ │ │ -693A1560CF5CF692F33EA23617FFDF0B653F0B39786E5F0E2863B7BE8FA9703B │ │ │ │ │ -76C9D951B0D7061333F3495CFCA00C26237C6D48CC869F0C49EAD2DB28D3AA2F │ │ │ │ │ -7DC1966E1DF610A38D9A02F053CA8B3E7C82673C9952DAEA937CC9CE6DCD93FF │ │ │ │ │ -DA80614E34139DA606494A54F23DC9EA4A725A33FA873829E574186BAD793EB7 │ │ │ │ │ -BE04E21F2110165080688A71A4B4B40A3C30CDF2DD19BCFD6D4DEEA412CFE2C2 │ │ │ │ │ -EA0A692B18170CCBBB2BC26B9DFDAF15BC045A42E3DCF37AA3E09BAF9A2FC7AE │ │ │ │ │ -A34766B61F45E5F1C2065E8AFB91120EE38010F116507431B6EB6C47AB8D96B6 │ │ │ │ │ -D33C97F739352CD8379E2938CAF9073EB6B25FD918EA1C5AE70ABEBAFE181B42 │ │ │ │ │ -CCCD4B10490A25377E10AEEA934C4115EDB80E57E583CCD886614876B33A4603 │ │ │ │ │ -D65268AB2526A5D3BE7FF971C98AC50E65FDDA79537C7F05CE35840838A3C3D5 │ │ │ │ │ -E83F591104706F91B788CCED2E4BB2ACE507D02FA502BA038885A1CA397F79A8 │ │ │ │ │ -D156E10C0A79DF39A246B420461015C9F917414DFBB3DE441D04B717DE17BCAF │ │ │ │ │ -6B9FE6CC4528F41FCED3DDB6D57945C5CC73B101753CD2F593C4A58B764DA101 │ │ │ │ │ -9DF1F8731C4A8E7AAAE5C6B0EA56507C3D9D04B463158D87B57548BB2F8D7D67 │ │ │ │ │ -56E0A892EA0A411BE94B9042E3BA58FE6EF07FCF7C5D12CD6D6C136046EDF22B │ │ │ │ │ -D403BC0678D4907E293AB0920013ED3CAAF3BED4EA4A673E64BACF482BEAAE40 │ │ │ │ │ -682BAA26F0F2BE52A6FCD0A4BFD95BA5BB1A0095CDB15A50D1D911E5507E438F │ │ │ │ │ -0A50DC96EBB3B9BE33A25EA98B0443B085AE092F0F40756999B5706B4F9C50E6 │ │ │ │ │ -5B249B7A07735A36CCC990815A9A96016A245763D41A60155188A352CB15790A │ │ │ │ │ -179AAB929710D12A62046888D897D723147F6B30FE2ACDE5EAB331EA91658111 │ │ │ │ │ -7A194EC54FF57A39D491C1385559C3A1E07750CC926A4607E0C629F8251F1BC1 │ │ │ │ │ -CF9AE2C78F254566106908C60B8F43F89C951538E01890B855CCA589521766B9 │ │ │ │ │ -26919D8AF47A3896D12AFB2EE35713B2577529AA803B010E687DC3C1D630D83D │ │ │ │ │ -39F5174D1BADC75467EFD8384754FC511D99D4CB6B7425DD7106A07C5189723A │ │ │ │ │ -8E6AB984A6DC557D2D994C8B3F4038401C8B6E10EC5FDD067EA914E28958F00E │ │ │ │ │ -DC4531D78442BCCB41029F394EDCA53A2B58A6E5106E2DC303FE7673F6360FAB │ │ │ │ │ -E6463FE60103A788BC3A06AC1796DD69F7BDC8065C3DDD6B2ECD4AB8C86B7251 │ │ │ │ │ -CC342824DD96779550B139F321A360859611BA84614B429DED1421C206DABAEE │ │ │ │ │ -75E571453D520A7409DEF4788553C8460D4159149CA28816FB2ABC6C2E2BF014 │ │ │ │ │ -AC6B3C3E4A714AF65A7B0F0CED6A64AF0D93BFB1AAF10806A5107ED2EF7F0408 │ │ │ │ │ -EA4BA5EF3B99E7836349E5E38037390A1F9011C524E4972FB4E857D39B2F1A13 │ │ │ │ │ -DBC34BCCCCD79F3B553F923822D649EB25E534AD1AF59A919D56B4B2C8510909 │ │ │ │ │ -0944485469064BF8901C00E1655BCB4FAD62CC4448584841C4331B6793B5AD4B │ │ │ │ │ -8BFC1E09B46C8DC793EDF55CAAA54028491081851DC111A6B5823720C0CF8882 │ │ │ │ │ -282AD8DEE8FF2492593BBC38F63E20D333C45B9F02D90E2F5562786CBE5878E0 │ │ │ │ │ -DBA97C8AA51CCEABC9D5278E2445348D5B0924EFA3BA3C76FAA78C376F8B44C0 │ │ │ │ │ -3F1E48F645B799A92B5873F3AC221797F5E2C6B1D251004B34763F251A2A37C6 │ │ │ │ │ -046B2BC24A6F3CAF7A345D35EE06FCDE24F4A92A88BA6FC2612ACA372D5EC437 │ │ │ │ │ -DE26F0DA6BA76CCD5C57FD2E120663E7ADE3DFD2FA436C77D6C6A4026F0829EF │ │ │ │ │ -7369D6CE8B7F1C3D51442568927D29F98FB956B115EB674B49A05A6062E64F21 │ │ │ │ │ -494304177E8BE0A8BDE777EF1E104D8B95ED40C73E32776DCB1C9CC99F785427 │ │ │ │ │ -6FCB182AEDE0D710C7FB2E0A640B2DC602C756B54665A56359D70229412C823F │ │ │ │ │ -4530224216DC35D8F7DD42BDCC2EAEC54268DC45E873FF4144632FA43260D741 │ │ │ │ │ -75EF934E5765A92B72E827AC94D22C583C7ADAD3ABD90B563F7F26DF60443686 │ │ │ │ │ -3FA33901F2FB39BD3D8C2C5A18643D7AA79C599E2D56CB0D9BFD0CDCCF0F331C │ │ │ │ │ -2E007127A9A5EE82F46F23A70E9E7C014D20FB67AE4BFDE086992F0E8EEAB456 │ │ │ │ │ -BB455E511FEF71C9D4B1B124236C19D31428239A1A19D87B30E04620A848E1AE │ │ │ │ │ -65DCAC68B556948C7F4F70EBE10E802DAD6B30F44CD04105E854502B951840F9 │ │ │ │ │ -A0903B218B87EFD373A5DB6BA5C85CAEC5E1B3B23597DCC668349DF1C340C1F5 │ │ │ │ │ -05471FD19540A5D9C08FB0839B03AC08E08A041297BEB8F280C068941DF37927 │ │ │ │ │ -BDDCFDF7553059E3A6EEC07D2A8821E815F27DE7D5399CE07269D0D4243F41E0 │ │ │ │ │ -4D51D0E04788A04EC50962E364F7B1AAD6F4C3A9ED6D668E5B16359B3A213296 │ │ │ │ │ -C2E99F15DE0520125FE6F270B7F2BD87E83BC2B200D81A5CBD672D9C0D8E408C │ │ │ │ │ -653D4849F29AF6F98C948935403E91F4021EB56CBB5D87F7ACBB59CB92C169A3 │ │ │ │ │ -FC57A0B037874025032D4B9317435D2E4B48803421EC3E5A3AEFD890907E6769 │ │ │ │ │ -D768F76E3AD18D432AB68E69317F98C78586EC847A63F58ABCDAE7AF2D38F6DE │ │ │ │ │ -A0BCAEB458C3A5BDB9FBD4BD93AD976F9E5F719ED7F10500129D68F71DA1749B │ │ │ │ │ -8E1AAFA54A0879442F79DD6C1AE6D65759254F32B8B2DD065A935CE8323AEAC2 │ │ │ │ │ -1F41945076001BD1C17E33DD8D5C661F7414B3222AAE6A7AB215769621444AE8 │ │ │ │ │ -ECE328ECE22326E28F2E32828DD743D784CEC3908AEFCAFC2C9DDF6112E42D9E │ │ │ │ │ -BCD4E1A5624FF2D04E2EFDB10AFB95E55BE33B6B3B7EE635BCB8FD6FBF523871 │ │ │ │ │ -2AED2A8FBB9DEF8B6AAC69E1596A6F7AD0CD7549D910F4E6A6C7256D97FC9BC5 │ │ │ │ │ -46F6EA493F968D8ADE9C4F98513C5CD19295C047F21D139B4E941A916A008B3F │ │ │ │ │ -4B5501F0B2293776C1348A18C8E9DA0639E88E6F4CD94CE7A3CADED7284E4A30 │ │ │ │ │ -1D364FB8F2F0EC1D5C31DCF1E94210A961109E814082E81A533E3E980D794F19 │ │ │ │ │ -39A70BC2C81185D99C2472876B54E4168060578FC1194E27B6D7793F6CE64C4E │ │ │ │ │ -A0F4E039B4441492BB895EA56D7C017B41C04AC3DDC9C8C2C76CE2FE745E8DFF │ │ │ │ │ -5F46BF4448657171C2FCE45C921DC9533053F169649E25BCEFB9641E55AA1D57 │ │ │ │ │ -DC7A0C5DC47231DB47DBF6170678C7E5308D3DF7AE8FE654FEC967C12D253EF1 │ │ │ │ │ -2785547266190EF533324FB7D355A08AD115C00EDC36BF3227FD6F17203ED860 │ │ │ │ │ -38D0D25BA797ADFFF71AC5367D36935F0D6DCB9E87A11C1590B3304968957C25 │ │ │ │ │ -136E05F72BBE0E200DC54711A3BEC174BF2F42BC9DF5BC3B141252B714B46CC7 │ │ │ │ │ -681F8221307DD911DF5558FF47457E72CC6997648E4F2C68D9161D9816C3588B │ │ │ │ │ -BD6EFBE78307E6F3103774070D5F7BC5174C77694532F8B25352045DB63344A4 │ │ │ │ │ -DBFCEC0DBAD9C250ED61AE0250A47ACC1B5F16C2DE1CC69E26522AA1DBE42732 │ │ │ │ │ -021EECB16C477C3284E344978EB5C86387AC496F2DDAC6ADBE380DB6E3CDF525 │ │ │ │ │ -82D15B707BC8B7BC22042AE0065C20BFEBE717609D07D4223915DCF63166E7B3 │ │ │ │ │ -B96AC38FAF07076DD74D39435DA59BD414B51069B78655A05B66494192FE5B08 │ │ │ │ │ -29798A752712372129C973CFACD5986104847F2B3D238012ED194F897D647E49 │ │ │ │ │ -C3E75EB604E1F04710B05F6F147909959F3E71FAC5FDD203F64F5B5E00AE3CA5 │ │ │ │ │ -E139921D61C5AB10C658C815052A8CF08FEEC08C4A5BF6399EB6EA6D59082F3C │ │ │ │ │ -E10AB8117E6F1AF963573E7D9C1F1208DB0592BDB5EDCD53D9B5CDA2E3DD4E72 │ │ │ │ │ -7FA3877DC40D6CB78E506EF5DD70EA9BC6FABBCAA333889808F7685F975DE342 │ │ │ │ │ -18A33E0262E7C6374EFCE2D3FF4A107849C3166C42EF0B444EB644B758639E20 │ │ │ │ │ -79EB80F5F8573FDCD3D3E05BCEF9FCACEC6EC392F74D3C1074578737563C4310 │ │ │ │ │ -93C85F7EC4228EEC6A3C978880597E6B536234C0D77598D50E990EA3F9CA21E4 │ │ │ │ │ -ADA279DCAB4D09011243CAAB9FCAE476643ABD63BCEDC8F943D12CBE83F7A11F │ │ │ │ │ -36EF005402F67ABA42A1D16FCD97DD46C9235F9D7FCCC21B6DD887BDE5745854 │ │ │ │ │ -E06726564545784A51C4FCC5165887C59BA3A46318E99234A0AEB42ABF4E8170 │ │ │ │ │ -4392814A5A30CE9319DCBC3FCB588FEADD4C8771A7584F8EEAF7C18F9DDD9388 │ │ │ │ │ -8ACA3026F6BA08B69DBA5194EB4612FCA55ADEF07C925D0503E9A4DA8804E1E4 │ │ │ │ │ -3E614599C87D77EBB8E51C7465C97F3CFFEECC1F4EFB8723DCDA5A53FF00AE1B │ │ │ │ │ -8507661C90B7F07F31D0A7E1FE360AD16750D4B415D8A99F440B589ECFFBC122 │ │ │ │ │ -6F346994E28872214505458D2EB4F2C1EDE48C6A2588B9C0C1101CBE099ECF33 │ │ │ │ │ -0F033A64FB0755B7E6E807F969AD6CF1D13ED9EBDDEB3C113F7D5A2FD85B8BCE │ │ │ │ │ -250CC5A16257140182EE6EFDD6F839DF6443D77722918E43A84BDCE4962E3F59 │ │ │ │ │ -ED669BF8F5942F5EEE956336E4A89D3BE2BC490C255340EB41E6904BE68F77AB │ │ │ │ │ -E00203A500DC910B557F55DDD69BB361AB58CB5FEB1DBA300092F17B80B8D4E2 │ │ │ │ │ -8A01F0F939A29CCB7E05896DE7063A558FEA6A355BE59FEC28463425D5E01CAF │ │ │ │ │ -4CF56BE465A71F94D970054B6E67E2ABA5580C87B1B579864D0791BC2A2EDE1E │ │ │ │ │ -4372803EB10AE455B253CC3E770B0D3A2B8D0021C2C1BD2C969D322B6D4FDD41 │ │ │ │ │ -5027F22355C5AAE26C4F1BD46D83AE597BD58F0CAAA7E24AEE0C20425A4C8F87 │ │ │ │ │ -257A802FA7FB75D64A2D4EE8146FAA551EBDD3A0C2B768DE3327406574BCB22F │ │ │ │ │ -16435B16EB8A0F05660CDB89A7F1822A845A7CB5FBB92ECA7C1F80E81C566B5C │ │ │ │ │ -1F6CF67405923E894BDB6597DBAA7F2E9443C54101DB0524372266A27DAE5741 │ │ │ │ │ -9D8F9F4A8EC2A9AB7FDF65A87872E9446FE56B1B5F91500CE134789EF202D3F1 │ │ │ │ │ -7BAAC92176BD752C240F0B43A48E9F2EA2A7EFBA1327EF547F51B9DB8530F6EB │ │ │ │ │ -1DD82657B2CD328B018E17FFCDEBE0982D4BA3EA014D4E0199228FE7EB158A44 │ │ │ │ │ -3EC1B5BCA56C1EDE86345D8177483E7163F1ED42FE113BB5F3C34E15E4C7BDF7 │ │ │ │ │ -2836D3CEC9C28861D4AED210CDD654361DB06B67EC5774F73857BB001AFCA96C │ │ │ │ │ -4D4127411DE237853229815F0D9049B35E216EAAC3EA4D960642A414A73BBD19 │ │ │ │ │ -D5531EDC8A5AB2E42DD312EBC0BC0C969ADB698C9BC6724028CA955F997AB237 │ │ │ │ │ -570D32CB26B59EA952B604948D4DE4E7328ECD68DED84261DA9F6F6909AF51D9 │ │ │ │ │ -5B1829E2D665B4BAA0CA20A8D710E4940BC76A36A39BD912E41A5761D660D9DE │ │ │ │ │ -F1322D0D56FABE23875D5108D653A1095228B40997ABB1C2948DB5D051ECB3CB │ │ │ │ │ -E8C92467BEB536F75BA2E6F45C0B6BEDD9DE1F35DA4350036CA89C0BD2F52AF7 │ │ │ │ │ -39DE51B45BAC49483D2CDE466297ACDF070745A4FA25CDC8503333C7DF4CE8D8 │ │ │ │ │ -B09E1739E1930A76037BAB1324A93ED03B99937E8C0661221D18795A89B48981 │ │ │ │ │ -FADCD980CD8F216C877D214644BD94F48BC77D5161B26A2F6869E191CDF7BC45 │ │ │ │ │ -374260C85A49C935CCFC5C909C04D530937D09711BF8D0ECAC3A32E81967FCC3 │ │ │ │ │ -DCD373544624ADE8168C9F1FB54A9EBA161B8038D3CE93A905BF113212C51A6E │ │ │ │ │ -D17E64DD3784EC6D1F414B8342DDB799EFA9382709574FDD6398FD87DBF46688 │ │ │ │ │ -40EF9BF824802FCDAADBAD54AD4B0EFC79A1D3C84FFE130FC6B35E8A776526DF │ │ │ │ │ -77151A370BA2D04D382F584A2DCBCB0988EA9C6490BD465DCEC0A2DCC1078922 │ │ │ │ │ -24634BF1E04243186F7F1043980A07AB6B734E93FE80680822AD2CF45B44B9A4 │ │ │ │ │ -27C71667D26273DF2FAB8EBCE896D98F2476AF90E1C2318C37CF1C63C0F3FA92 │ │ │ │ │ -FC6CEA1A05507921FD63CF0B5140B2BC83FF699CA8925CB3E6074D1955C7608B │ │ │ │ │ -9656856F1BB23A077E35976B1E765E3A769EE67A8E5F80C8EEF8B7C09455DA83 │ │ │ │ │ -019844FC8EFB68FD2DF68550A1BE09F070F15552CFFBD5606702D17A968D63C5 │ │ │ │ │ -63E905AB161FD5271CCF68ECF31C08D3F02D781C73A52111C2CFFCD317505A4B │ │ │ │ │ -AA976DF3C5CFC4023DCDE16DB6795910CB03F3F8806D57DD014EA7FFFF381D0D │ │ │ │ │ -E7F353C2655B0D17908500A68E69958656ABDC7B2D13DA9BDFD496F073A29BB7 │ │ │ │ │ -53077B6944ED4C575C5B9856CD0053165BF75291EF6E742EC8F486D1AC98FA39 │ │ │ │ │ -F3204C4D0573D381F4EAA28AB234BD7C4631AC4EFF6D5FD73056532F056C53FC │ │ │ │ │ -2FF841A800EFE607D5A340D8C1127A85E464ECE0D2AE1F454F952A864DE44C29 │ │ │ │ │ -6F11FA40ADD0B992183138B7388810655DB98E769E48CF480B6802C957DEBF8A │ │ │ │ │ -6F9681B0162F1F681285B7FA1C3D90E1AEF4E476CF2796DD9BEAAFA7FF595B4A │ │ │ │ │ -AFD761DA0FA23547E9BDB4AAAD6D64429F066794AF7F91C6DDCF70FF995C0652 │ │ │ │ │ -495FF3B0E1E86BDA8BDFF65D525147B9FE22855C62F6766FC43CF4EA691A94DB │ │ │ │ │ -C963FB1BA19747347DE02E41375F1D248986D02F9D7399767DF35EC285829E85 │ │ │ │ │ -1889E3CEC7634FB6F5EBD91FF60E3ED4DB12173D0BA573E8C58AEC2FA6698694 │ │ │ │ │ -B807BBD4AF1D668EFB1D785A6D2936717B7BD11C0391D6FDCA9CC7EC5EDDB104 │ │ │ │ │ -A48833B7ADDA86A3104E1503E98D0E5CFF5350A6D510CD2302265C44D0008DDD │ │ │ │ │ -6C50F7EF1A8580F9151C2D4686471A50B59FE27A383D524A842CCEAFA7F68E21 │ │ │ │ │ -1FA466034349D556A0E8DE8BD931A395146788193046590CBF93A0151C95ECFE │ │ │ │ │ -0D1A5CE93F92D1B3B150520C0E57D2FB81477112C4D7D51CBD9E11DCAABA7787 │ │ │ │ │ -5266A3C68C4454FE0F4A7110C3CCD2808C09A25E9C4FFB78795274F96D8CD0E0 │ │ │ │ │ -655D669EBC0C7735B52D6CEDA8984E0529992281AA088813E72FAE7A011C9D56 │ │ │ │ │ -39A4235086F9FB7FD827D0111A8709408B88C430FA5E0D339DF6A0224FE820E0 │ │ │ │ │ -F5761573BD772381451BA448BCD89711C150F1FA5209B8447E94D856936E96CC │ │ │ │ │ -743474E3E98D559F47D62B538AFA05133FD69C4A0A4572E12690FD8536CD9A10 │ │ │ │ │ -8C41593970460DDDDE8B2FB4130A4F26CEBFBC211FBE59720DE19917C7715373 │ │ │ │ │ -2F4DB45A │ │ │ │ │ +818321B3C46DB51B8EC6C2EF1D05C716519A3BD6B12A67239898F8A010CB8279 │ │ │ │ │ +86D2D942871606D4B8A274C720E46E43BE44C74224A8520232F7F6C96FC7D6D2 │ │ │ │ │ +EB817F578B294EC22FA123ED64613F3AE96DE23AA1833D2A527F282DC80C38CA │ │ │ │ │ +B5A9D66708ED2293AC1F832C82B70993055FCF9BDE6F5DEAECBE5345572E7D78 │ │ │ │ │ +71D938095EE457512DAABB5278FFBB263323B7FBDC84B52650114DC3DF9E57BB │ │ │ │ │ +C1835D2D17273F234A45642152EA125D909CA252173DAE4D0073D71DC3823955 │ │ │ │ │ +488FADCF5F3B1E500A3059C4E00DAECB29BCACE5456AE77DB22FB7F97E9B9BF2 │ │ │ │ │ +6D89F8080F41B03D402E59FFA3ED920D4DA409ECA9AAD57BAC91C3F1B51279EA │ │ │ │ │ +A3133501892E9E53F3F8A6BDA0FFF9456D027AE49BD31372050313BE55845B85 │ │ │ │ │ +F15380257D6687D5F609325220D553D0F5C384A88E22325B42E6A336A12560BE │ │ │ │ │ +70E273FE85B4E68DD94BD530295F6D981DF936B92F136DF95AEF560EB138CB11 │ │ │ │ │ +EC45F6D29743E46A4DDCB80283409F2C52FF83976BA136A4534307B3E6C8AD1A │ │ │ │ │ +59AED81A503AA8244A279BCB788DF7D2A1863404626CBEC7F122B3EFAC395A0B │ │ │ │ │ +1D514218CA020561041E4398BC1F8FBB74D3130DD0FDE7757DDB4BDC74D4CB0F │ │ │ │ │ +7EE03B5A2D23CD31816C1CD6BF51640ABE4CA02F0BAF2D19CDE2631107BAB24D │ │ │ │ │ +2A0C90021F19EC9CF2337E0C46D709D88BEC0C6160258D93A61D575348017132 │ │ │ │ │ +6896E96413DF24F4E4C56C6EC57274C9A85FDDD4AAB5A3594B5E508BA65A489B │ │ │ │ │ +D71D51212382376D622850FA729B9A51B51F3E19589F43012906B95FEE61139C │ │ │ │ │ +FE88263101C1C491BBE03B7C5E37C37DE5F824224D2D604F4CB61DDDA8999275 │ │ │ │ │ +E13C941B42BBB5F95E739E88C508B782FC6282254C8C2F0153094CCEC7732330 │ │ │ │ │ +6767253E54BEAD38E779080ECB33A482CB540FDCE3EBB31A8D6495442A394E80 │ │ │ │ │ +BCCB957FF4608D95FBD010F8717F9C61D98688993B319A02F34B36DC5E8DFF31 │ │ │ │ │ +562A0EA472768AB66BF774C7BC11AE449B76DE596A78507875E601E6C0BCACC6 │ │ │ │ │ +E655E3E933B0314E04C238F3E065EDA360178E82BF66DD326717A7F833A65B42 │ │ │ │ │ +12F204B0660E44C3D13DD6533173DBE82AFBCE6F33F155F74BF5209F6C9E4651 │ │ │ │ │ +DD75F38F6863185C8C2E8B5A55B17830D78460F14C658EBA0DEB2D9A0A62CB52 │ │ │ │ │ +DC330A7DD163B627E86A8D2DCC8AF063C98794BA4DAFF8C5991E9440567E3C4A │ │ │ │ │ +47B2E4C9C9C2A33E2C0C8CD6D4386F039F34E717B094908D4C7486992463E359 │ │ │ │ │ +7BB509967BDA5455A50AEF57F545CF9AC5BF52D1451CDD1027CCBBF9159E48CF │ │ │ │ │ +E699EBE12E3A56CFB36324822CF1C8E8E56264A3E5B9269DC3D81328C13085FE │ │ │ │ │ +C50B9A1D0FDF64E08591DFE0E7BB22EC5B2745659F82E731A8C1FD6B411A58FE │ │ │ │ │ +FC98CE8FE1FE780103B72F8539B918FBF6FCDE32798F8A8E5BD0521E46CAAF16 │ │ │ │ │ +097DBF29D4930484786240C57BFDE2FDAFE57E02C411C822E0924DDC247B1BE8 │ │ │ │ │ +C29E1C45D09909D9A098FF2C7D332AA9A0B3408B7B2F47AA2824792A9B6E1F85 │ │ │ │ │ +BBACAF57F7490AA2B8AAC9BB9B38E6187700D2EE93232FB56F1BCC1B63C5F4A3 │ │ │ │ │ +3A74953BA3C083739A282AF3090CD0C365262AD54E5471064FE5D3CB9D0853BB │ │ │ │ │ +83FCCEDAA06C54247BD18BC7C3D4B36A9534B3A5C454C3FB948A8CEE94C2FB7A │ │ │ │ │ +351857D700CECBED873E420A0FD8626EDD4C05B563CC351BE960BFE1E3073ECB │ │ │ │ │ +2F0087213C04B9A2B5C2C9903B7F05A4147161586F9C37D5A598E2105DD449E5 │ │ │ │ │ +30D8C5E21C3E343E99003497E92B9EBAD5C15081C5B1B027BF9B13738BD6CDA5 │ │ │ │ │ +D3C698C60FFFDA11842D74A955099CC306DFCD2B20AA5F2B1B2B694582DBC021 │ │ │ │ │ +CF2B074BFE4F82C8037A497490F9FC4681631B41106A6ED3D2D52A3ACD402FC1 │ │ │ │ │ +CFD37FA2A57D3439E7FEDC1A165447C77F4A459058F29DC3C55C734C1F66F622 │ │ │ │ │ +A3A173D97453F49D3153BABDF82956E2212A9911C94D0D63701AFCC6DFC56667 │ │ │ │ │ +D2130E76C9E026030DA0C631B2CFF13F9D088ED051C47BFD59154CCA97BC0AAE │ │ │ │ │ +742D254BA1D30CD3933AC8CA5DF66DDC798D4D6D31EF0E8F5D4982A1D599E422 │ │ │ │ │ +79ACD92B06FE249EB4D4BA9E891D2618952AFCB1A38F8A805EFD2346DA982799 │ │ │ │ │ +7A3423632DBBD4DE20F58B38F091125D69D6531F452723CCA8D8844B21C00950 │ │ │ │ │ +74BF3F90E2165A587DACA5FDCF4763E85290B6AB6B89B808CD06047D71E228B9 │ │ │ │ │ +E1E4945C392C88D3FD75BC4487AAB3E33AFAD299FDCAA89AA67619613A5AA98B │ │ │ │ │ +69E2E6315770BC13A96BFD2CF08D958167D54902FBF728A2C305A56EA8C6506E │ │ │ │ │ +96167D6897BF2DA53E0B910F9F3306752E5763259F8D5F43E4830F09639D338D │ │ │ │ │ +76A5893A9E0FC19929350CB514BAC045FE749C45C4B9A04379EFE3176CE00C57 │ │ │ │ │ +4676FA21FE4ECBDBD09B7C4318C639B25811CD1C72654CBB16F6F98DE0825B10 │ │ │ │ │ +8E405F45B5EFC9888EFA91E1C2FB08C5E6003FA8578D58835F8B39E12EB52762 │ │ │ │ │ +943B227A71A59BACA883AEA520FF39DA7D1A0D6672EF33508DF4BAE1F7069F11 │ │ │ │ │ +7EDC6C594CCBD796BB1557311879DDE9C36963EC5C80D3D8C28791522AB80059 │ │ │ │ │ +E9E64BF27E5C525B4AEC55B46F11B825020B57AD1550175F7B6EFEB3AC823929 │ │ │ │ │ +BECF8989F46A98BA97B4D74FF8BD037F8DF8C0E4B7A6FEBD0999D06106178095 │ │ │ │ │ +0CA145BB2C9558AF55824E72F5CAF4FBCF9EAF69ECEAA48AF4E68A9B9FA7B6F2 │ │ │ │ │ +E9C02DCFBEAA4F483979D72C9A0A18F8CCBCC1937BB6AF8CD69E25CB2C0BB3B0 │ │ │ │ │ +76919E173BB9D4E27C5DA76B762DC3F605D903C9A6BDF48604F12766B526E76B │ │ │ │ │ +C6301CEC972AA300DB80B589B9438AD5A3BD99FBF4A135FAC8640CA03A8B23CF │ │ │ │ │ +68C3CAA2955025E1DE1A8E98C7B5BC4470828680741B70396CBA5D081162A9CB │ │ │ │ │ +68B88A75E54B5643BF6DCD4191E0259AFE8777019223A1F29A883597B38A1A77 │ │ │ │ │ +BD4A9C0922D8DC278B255F758B353F3B62495FF42BC17A469583FD58E3C92296 │ │ │ │ │ +334F5667FC2CEF3A6AF3CC45A6E2467CFF54319CDB3135D6DDF2B4204BE388CC │ │ │ │ │ +4981FFA98F6882733DEC5035BB26C9BE2070F944151243FF91D025818C1704C3 │ │ │ │ │ +6D182A71A782F1B7D361060138AF3A4E9BE456D2019CA98EBC17EE38AA7D8364 │ │ │ │ │ +66808DCC3A48FCDE3DAB0DCD65E7B660E3688EAA2CE37AB95CCCF16F6C8C4F4C │ │ │ │ │ +8742BEA7134256587F0A76EF386087FC5088057DBAE06C3857CFC50AECE3A74A │ │ │ │ │ +6EDF03272C021122E962CD756D5A41925D2B5DCC884844211677E9EC987DCB5B │ │ │ │ │ +952DB3F0BAEC602C2D2C237F32F952E7AB05CD2C095C3BED4F091A2534EC5006 │ │ │ │ │ +736CA8420E9779D9E17E6222B47162CCC61108D9FE877DE286E7E0817A917A9A │ │ │ │ │ +06C13FBF9E6684AFDCD1FBA2F4C4A3302B6B86CFABDDCF454E325CDA6CF763FC │ │ │ │ │ +32E779967F24BB034A09B592709D613D75D60A45A993B2F0CC49141D04D42451 │ │ │ │ │ +CF53A51B3E64B944232EAE001CCC4CF8879A65088C733F472A2133E8E75FC9B9 │ │ │ │ │ +D1ACC9E8275BFD7AD0F2D4CFA73559EE3255CD5E1403F300A5D79F23DAE3432B │ │ │ │ │ +120CB11427B2CF7C09CF020FE8837316B73286D43282D874F87139A491813D64 │ │ │ │ │ +F22B57AAED600D7E5C32B6D547C377EF77A1C0CF8BB6D0B07D7DDC4B755B5C68 │ │ │ │ │ +7A79A9E0328AAD3A5E602756F15937D51978A560C89E619C96CD8E7862A06DB5 │ │ │ │ │ +2B9DD9D419F1171290C1588624196416E73098A31FD099E2AF106A61165FBA70 │ │ │ │ │ +4FC236A546FCE078DB3AA9F22EA0F8674C4A283D7252726305E9EEDD313B636A │ │ │ │ │ +23F8FA091C1AD4D6F475011B582950C280E153FBFED8168DC20C8DE4E917A2AF │ │ │ │ │ +DFF4E8BC5463F20AE2926BA07E58DB1FD06170AC5EE8F87399117271F728FDDC │ │ │ │ │ +E8BB08E144D5BA79394551CCED31D4E8915D310AAA0C231968F2514C7586ADA9 │ │ │ │ │ +98BEE406B672EBE95BEF8FDB0E7A342DC0AA2C6A448EADD40500CE1B8EE31856 │ │ │ │ │ +8CFF198671E7597A137137BDDA11458D252DF4CCE0AEF1A8880404E5F4D317E3 │ │ │ │ │ +078A87D45497A0CE46ECE2109443B502580B9C95E17E20CFC85725D8661B2638 │ │ │ │ │ +B56EB4D0465F13B9DC5CCEC56F357BC8F62A14B9D7B61284010CB3DC74705CE4 │ │ │ │ │ +27508A9B44325A3913DB3B3B44ACFDCBFFC3471593EB7B774FF434E8D79E3606 │ │ │ │ │ +F5F1C9B34FA1ED738362489A09429DE5C130A4990F47ECC4006A884B97D45F20 │ │ │ │ │ +CBB0EB4755D9B7ED6BBB3E01D71EA80467313D86190B9923499422027EFD3819 │ │ │ │ │ +60163B9BC79C0CC94519E14FEA7FC3A2190EBFFA3627E8546C0D871463B3472A │ │ │ │ │ +D3A0E31C61A71940A9822E4ADB9C22EE69151B40CAC6140DDC2EF956C5A59E4A │ │ │ │ │ +A081BE06965413B6E25FE851CEB11A5CE308710254AF41565B78C84BB2678BB6 │ │ │ │ │ +3390E638A2D4F1923CEF21B01FB8AA4D566F6B600EEB8AB9CC9BC9F7E5C8E587 │ │ │ │ │ +11B0909BC7C613EF153C5AB4D9D42DAB734DCF542C740C4EA2EFD0BD8282CDD8 │ │ │ │ │ +FEC7A6EC0C8C38467DDF4A744739E0269647264EA1D301EAAD8EDFDFAC2D20DA │ │ │ │ │ +A54C0A3E862756B42C097734290C95D10B8355896FC0F762D6120C28B6547F34 │ │ │ │ │ +14CE44A4D5ADA81C5EC47F374E629F295C58B3443C76234483C76FC8C6A874BA │ │ │ │ │ +7C4606781D30C645AC0920B40DC5AAABB354C4A2C5DB00A59FB6E64D224B5985 │ │ │ │ │ +778B514F136EA47AD35328977EF4B16150AD55029A0B6513897E4AE1AD22274A │ │ │ │ │ +276C7E7432A4C8030700BAE849DDBFDDF22DB06923A5A4A25D42ABA5B1CA619E │ │ │ │ │ +752EC190DA2FDCEE9DBDA0B8FE7A39174362D1C2C73FA09C49F477F6372CCE34 │ │ │ │ │ +F69EBC207D6EED1AE3F9CFC6120DE1C22D814A74663680DEFF100CF2128181C2 │ │ │ │ │ +FF83F2C2C0B2A25D8FC5FE3EB02F5FB31BCF93F10817B63F12BA7FEF396C6AC0 │ │ │ │ │ +B5F42790D10E8DDB0C47981BC9BE60E68B249F0617F57A7B60639664A1A72F21 │ │ │ │ │ +B630E2D0D5F8F73746E18A2EF5A9C619D0529448988429B093D7E03B43B18816 │ │ │ │ │ +83C7E4109B66F03835D12AE4E9C8C011FD81D2BBCF7C666E17A9FF4A7C668BB2 │ │ │ │ │ +D8D4431BE3953AE033072B167FE95F78E957061D39ABE55511CF925579A85543 │ │ │ │ │ +35F606ECEE3F0A94DABFD5839D3A46547C80370EDD9F45333AA183F3B29C5E8D │ │ │ │ │ +392FE1CCF1A9B86B9228A41A0EE7D16587FD0FBA0C0304209DA72FA6E3E01E3B │ │ │ │ │ +EB1B6951B43B612BD141B5A50A3F5E9A9DA21ABD9ED2C588032E7DD9AABF9C41 │ │ │ │ │ +A13B2D491CEBA593689AAA618C8A7F35A96510D0A587CB0C0D983029134B115E │ │ │ │ │ +C6334203CF6576FFDD8B21AF86AFE7ED24A0152483BC82C1F3CE8309BA13999B │ │ │ │ │ +94793F7F32CE43376D8C9A6F487123C7A4C0F386DE9668770A766A5A4ED65B82 │ │ │ │ │ +82C918100604493E755AE1D9071C6CB0EE50BDF3479FD8B6F85B335D12D15A4E │ │ │ │ │ +19BCCA7504B8A607314CA5757E0D775CCCE5DC497C4B2087452C90426BD5E357 │ │ │ │ │ +17ECDDCA67C11167D910B7A47E4C720AE514C361874BA8D21162784C72ED6DA3 │ │ │ │ │ +7C1E42B2D5B15BDA7FED8D47CB03715AB469E7EB9B790B8DCD561F7B0F3F741A │ │ │ │ │ +0001AF33FD15DB8CE6586B09F336147F8193617DA708B7A27EE1BA7C8CE0DAB2 │ │ │ │ │ +B9A5D4BB9C7456FB50034F4080271FD6C382938BD6BB7F7B5DB7B709655923E8 │ │ │ │ │ +E0D6BDB30C90F826DD042B34FFB1D30DA006CDDCB2B2871A7C5455BC9A1232C4 │ │ │ │ │ +42210A23ACB97B13B020746F494E102CA85CC9D1B3850EFCC59702A2E2B888E2 │ │ │ │ │ +8094014766736980D0565F3937671CBF974AC1459B16DF7D3CCE36DFC17F73CE │ │ │ │ │ +791848A83FED7EB194774A3B014E1176048028B6E4317633A254858F49C94C46 │ │ │ │ │ +E37B9E0A860C6C6E8807587C1E7B5CBFA19AD97F1619DC620042462CBE716BC0 │ │ │ │ │ +FDDD45DE730B0EFB100C9D80E434AE53D59892124481ABFFCA42065CD29CFC03 │ │ │ │ │ +F5FF651B7274B7847E996313688374147E781EA8A0D47902CEE30B691D9A0619 │ │ │ │ │ +EF49775648CAED05C5B4C2F3EDF1E764F2042EDD023BDC59329643ABD59A55B4 │ │ │ │ │ +BF206CDA5204738EFA6AF4545F43A56AF56A701F81706EBF0B48375D45179D0C │ │ │ │ │ +CFEAC83D32A368BD108AF8982FFD035BD3AC3C96658E8D61B3D6FA918AD8514D │ │ │ │ │ +F9B8DCD63DA681678A042551B0799A76EAE026C6D14555BF97A1E5E9AE42A459 │ │ │ │ │ +78949AA79ACFE0FCAA65D43432831AECF91E20C6DCF092A7C3344089A3C1453C │ │ │ │ │ +7B9F6016FF7EBFDDF1937951732DFD4939AFE53913288C2F5654027A8413B197 │ │ │ │ │ +2CC471E85FD8EDDF1A684EC3115F369DBAE874FBB35BF17871A8B801FC7B8963 │ │ │ │ │ +9BCB62A74D90259DA28CDC7EE8CBB1EBAB12A8112322D502D534B2D6B78E1027 │ │ │ │ │ +F8505BD8C287E15458A5BDD8EA6C43FAEA0C763A230CB70C179F21EF4598BD6F │ │ │ │ │ +6E0D519071717BCF5DC8C99CDF8F97905D4CAD7A0F6E28FEBD2BF53CAE62F459 │ │ │ │ │ +0EFB1923E9A059FBBBD2799D6D0108B0EC13721A5F5E56720F3E7DAB8456A71C │ │ │ │ │ +8DF13C61F9615C93E218219EA98A74974E00245233D1B5037B40CA2060D0B25E │ │ │ │ │ +3C834F74628BA64ABD81925EBD4C5CD903EC068FD56544BFAEE0DCE92A4D2AB4 │ │ │ │ │ +DE1D7019BA754EE07343443A889DB1AD255C74C5929237785DB10036B70B7FC7 │ │ │ │ │ +5311232D97C8CFB4567ECCF658F0ED624E51DC046C4BB675E5AE53B923EDBE17 │ │ │ │ │ +51CB5CC5330D6F0C2ED7402FF0E3F5A224C36BDB1E320CECC60E536538223854 │ │ │ │ │ +675CF54987C86B14FB7D67ADC1377CB042D4ADDA0B2860FEE4EEFB73DB2E9B66 │ │ │ │ │ +AFECDCD69C0AC0EF37EFAD1FAC5E2DBA9E17B2F3775E6584968279F12BF0F01B │ │ │ │ │ +EC428EA24CAA5333EEDBA434368A82CA63AE3C40F91692DB10DD75013D60C5A5 │ │ │ │ │ +0DC3A0A6E94FF62B05E4393DE76D749EFE097B339C85CB7421BAE88D9593108A │ │ │ │ │ +A211FEE8689AD9ADA5772D31159D5991FB90E449841E49A52A314173FA38D3C1 │ │ │ │ │ +1F1C241E2563CDF43DD17FD57DDFE3B041294C55F890EC1805945C5BB685247D │ │ │ │ │ +1C82BB82B2CB21B16C01A1C26A10EDE0881FD83BE3812F5CB8D82758A72F85BA │ │ │ │ │ +9D453317636397C149D0A13AA50D38A30DDC4775FECA3BB5BF0F02FA2D6308CE │ │ │ │ │ +ED60AED924871A9E262E56080DA462F2B82205965C42033B85EA035B27B3ACA9 │ │ │ │ │ +1E36966C09093474E74C18B77A0EF79043BE5A23734B233D0BDA22840C8ACEDB │ │ │ │ │ +7D4D899836890DFDE604092DA92DCC26850514211B2B08D0CA5EF1963BCCEE33 │ │ │ │ │ +A54D2D112C706AF0E05251CA1C02ACD5564A018B6E1ED4D168AEA2E7E23D4526 │ │ │ │ │ +F7D54218853B4132C1AE093B74A454F11A5B24D284511C75E9130F37C90593C6 │ │ │ │ │ +C23B325D16F66E4102D72DA1A1B3EEEB3BF4F630E292FB50F4C02931E5D5AD1E │ │ │ │ │ +01635B64D78340F943182775FAD1FBC25DBF3E1D5004FB95668A29DD6CD3F5A4 │ │ │ │ │ +E9C7B90399588458DBA30FB1940CF5CA9191F2A4C2ADFED37D1F7EA2543EF61A │ │ │ │ │ +3E08A206737357CC4DB8ACF58144023608C12677161C5C93C6BFBAC40830BE2C │ │ │ │ │ +CCE57577D53795F648D2DC18F2DBF39920FCF195B9F11A0921F29DFB02715357 │ │ │ │ │ +65D3589D99F85F5CFA9ADB61A57EE0AC6885A5DA55F5592C03273B066CC9002D │ │ │ │ │ +7815B045C482ADDC9CB336CE7A9F72CA039A85FF4C5599C57DA7865AC8D19D8A │ │ │ │ │ +7282E92EB4828609B039D042CE469524E9BD6CDCEFCE6B9FE29F72A73DE9C592 │ │ │ │ │ +C8FF85AA874D5706084DCE971C51CDB3A23676F2786D00CD2361E59B132CBC1F │ │ │ │ │ +A7EAF76F901DEDEAEEA5AFE155756453856F0164ADCD1130C76D48C23E1990EB │ │ │ │ │ +F2273A6171D629ED20FE759C9114D1EBAC7CD1C543393E568FA4A435F7EEA080 │ │ │ │ │ +DF21B07A6C5809D099B072D8B08AC229D300F16784C3705BD01272C3EE3D2E53 │ │ │ │ │ +385A2A5F371ECE8759E2AAC46B678D6CD3767CC454061D9832FDBD10CE6BA319 │ │ │ │ │ +8DAAB0BED28FC3B9887479FE955ECDA2CE21EC4D95F7ECC29BC78D81960CA0D1 │ │ │ │ │ +14D3927CBBA1DACCDFBBB34C6298E4EAEC008ED5B8FEF491290EA2CB2789EEBA │ │ │ │ │ +85BAD11E560633B4297495E96D669222246FFEBC9102B7F084861D157FF65FF4 │ │ │ │ │ +CA26FA44497FF0F560995B433A67C3B399FFEFF7D4C5B17085C784EFDEC97DA9 │ │ │ │ │ +B923322B85D3FB417E547F92AB825300EBEDF9E185CB2DEF837B610BA5FEA9EB │ │ │ │ │ +36B0EDDF288C9EE68A76F7D896C3BD012198B4D77861CA43F5F2FD7BA67EA9A5 │ │ │ │ │ +39AAD008BCB3C1148D9C9338D89E2EC2B11DECABE35717E0B1655C8D03880984 │ │ │ │ │ +06D3F447E26061F46A4E843610B133CC75A599B1CE00783B120C6890ADDA2D92 │ │ │ │ │ +48327763B1CE13C3F8A88530D69F4BB1EF04AEA1A10AEBCCB666968C3501824D │ │ │ │ │ +236167CDD809EB757A060E3826B685A853DD9F8707695ABA877DD266B224DA96 │ │ │ │ │ +6D3803F9D94C7C1DE8D6AA40C385813915FEE9AB3733E06DCAA64FEC2CAA4453 │ │ │ │ │ +3D029DA3978D6484BBC29551BC84BB67D659E6 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -2453,21 +2444,21 @@ │ │ │ │ │ /Fd 1 43 df<000C0000001E0000001E0000001E0000001E0000001E0000601E0180781E │ │ │ │ │ 0780FC0C0FC07F0C3F803F8C7F0007CCF80001FFE000007F8000001E0000007F800001FF │ │ │ │ │ E00007CCF8003F8C7F007F0C3F80FC0C0FC0781E0780601E0180001E0000001E0000001E │ │ │ │ │ 0000001E0000001E0000000C00001A1D7C9E23>42 D E │ │ │ │ │ /Fd load 0 Fd currentfont 66.6667 scalefont put/FMat │ │ │ │ │ X/FBB X/IEn X │ │ │ │ │ %EndDVIPSBitmapFont │ │ │ │ │ -/Fe 134[51 4[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 2[89 1[76 50 2[77 2[75 70 69 │ │ │ │ │ -73 12[49 1[49 49 49 1[27 1[27 44[{}32 99.6264 /CMR12 │ │ │ │ │ -rf /Ff 172[90 2[110 121 2[97 6[106 18[81 3[45 46[{}7 │ │ │ │ │ -143.462 /CMBX12 rf /Fg 134[70 2[70 73 51 52 51 2[66 73 │ │ │ │ │ -111 36 2[36 1[66 1[58 3[66 13[73 6[83 76[{}16 143.462 │ │ │ │ │ -/CMR17 rf end │ │ │ │ │ +/Fe 138[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 │ │ │ │ │ +11[49 1[49 49 1[49 1[27 1[27 44[{}31 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 } │ │ │ │ │ @@ -2477,17 +2468,17 @@ │ │ │ │ │ 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(*)1689 1340 y Fe(Ma)m(y)33 b(1,)f(2024)p 0 5173 │ │ │ │ │ -1560 4 v 92 5226 a Fc(*)127 5249 y Fb(P)-6 b(.)33 b(O.)g(Bo)n(x)h │ │ │ │ │ -(24346,)j(Mail)32 b(Stop)i(7L-22,)i(Seattle,)h(W)-6 b(ashington)36 │ │ │ │ │ +y Fd(*)1681 1340 y Fe(June)33 b(3,)g(2025)p 0 5173 1560 │ │ │ │ │ +4 v 92 5226 a Fc(*)127 5249 y Fb(P)-6 b(.)33 b(O.)g(Bo)n(x)h(24346,)j │ │ │ │ │ +(Mail)32 b(Stop)i(7L-22,)i(Seattle,)h(W)-6 b(ashington)36 │ │ │ │ │ b(98124.)62 b(This)32 b(researc)n(h)i(w)n(as)g(supp)r(orted)g(in)f │ │ │ │ │ (part)h(b)n(y)g(the)g(D)n(ARP)-6 b(A)0 5328 y(Con)n(tract)33 │ │ │ │ │ b(D)n(ABT63-95-C-0122)f(and)g(the)g(DoD)g(High)f(P)n(erformance)h │ │ │ │ │ (Computing)g(Mo)r(dernization)g(Program)f(Common)h(HPC)f(Soft)n(w)n │ │ │ │ │ (are)0 5407 y(Supp)r(ort)25 b(Initiativ)n(e.)1929 5656 │ │ │ │ │ y Fa(1)p eop end │ │ │ │ │ %%Trailer │ │ │ │ │ ├── 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∗ │ │ │ │ │ │ - May 1, 2024 │ │ │ │ │ │ + June 3, 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.05.01:0544 │ │ │ │ │ +%DVIPSSource: TeX output 2025.06.03:1221 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -2553,21 +2553,22 @@ │ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ │ /UnderlineThickness 50 def │ │ │ │ │ end readonly def │ │ │ │ │ /Encoding 256 array │ │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ │ dup 44 /comma put │ │ │ │ │ dup 48 /zero put │ │ │ │ │ -dup 49 /one put │ │ │ │ │ dup 50 /two put │ │ │ │ │ -dup 52 /four put │ │ │ │ │ +dup 51 /three put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 77 /M put │ │ │ │ │ -dup 97 /a put │ │ │ │ │ -dup 121 /y put │ │ │ │ │ +dup 74 /J put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ +dup 110 /n put │ │ │ │ │ +dup 117 /u put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ │ @@ -2748,68 +2749,70 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004ACD1870 │ │ │ │ │ -A5EA947858F5795870BFE1343AD803FB854BF8F5A4E794E8EC57BE41DB5B8734 │ │ │ │ │ -13E47950F29A81EA0C81EA798863883D7F41F78325CA190CBBFFE822AE494550 │ │ │ │ │ -4BE83703071FC9512D128927AF3F63CEF8F86ABE1E15D7B4DDD39576E7DFF45E │ │ │ │ │ -3CB4115AAB1830DE8647B915DB4BEBEB5235C281E098B899BAB951D8D5798F01 │ │ │ │ │ -7F7C47336D31438E5126738AFEAB29E9A7CBE06DE4DD604477B542D2620DFD58 │ │ │ │ │ -28FE34238572F23C5A8EB7ACEE1E154DA13FC1A5AA67A3BA8C5CDFB2B80312C9 │ │ │ │ │ -BC9FAE56D08DDFA9498E6EF0D0F6BD18B3923E0B670B0740528BC843610736CB │ │ │ │ │ -80228C105C2F72C3C22D610C3D8C268DEEA2AEEE3221E198E79FE2966487360C │ │ │ │ │ -84AE08AC326F48B21447652121B1EB68AF857B8628F27BB4ED00F273E0DD044A │ │ │ │ │ -7D11A5BFAAC0A82328444CC9DD90167681B07D55CE28655F40C21250A226DEAB │ │ │ │ │ -2D46FFB680CB9242BE192AC0E55A44D45709FA6DE638C130D92C4E9B07BC3D61 │ │ │ │ │ -25CC2F0A7ED4F3574242FFE4461272EB1401266EEF551E0E2B0EF51FA8F250EC │ │ │ │ │ -FD9AFB6F5A0CC442B566BC24400133E3E9B9A9FC801CEF284FD2B3ECA43421FA │ │ │ │ │ -51E5D1EFE7BEAA96658362C438A0A5A6DCBC664A85EF88037B42355195B9D19C │ │ │ │ │ -7961D5F63B123451B298CD52C144FCD4F3641A823FBA14605E2DFD845E89102C │ │ │ │ │ -4E345CFD80E3EE6F097095A84C941FFC91B234F3615E4EE4C5D564284656E364 │ │ │ │ │ -AB9C4D1DE05F8FD065CA6064893F0CF3A3A501D59EF6568D05D818A010D06518 │ │ │ │ │ -E2C20418ADD1E652867F265084A27A5FE0C32213C59FFC3A84EDC89382521E5B │ │ │ │ │ -8AF66D76601F83C5C33CC9CF968C77B66F1FA074AC3DAD8E453C9264D03969EF │ │ │ │ │ -9E387BB3BEAA4BF0A9D88BA2CE6094E8996A3752A657E322A57AF006444BF516 │ │ │ │ │ -501C43CAA1BA7F16A3B6E4D3EBDECCCC19564DF18FB68194C132238A5441A21A │ │ │ │ │ -F52285CA1CA94A4BEC61EB509FA35EA5E393D662D938F4291F37EB7C2D5815BE │ │ │ │ │ -446813E1CFD06FFFFF2C4355C9DAFA48E765F4CC5DE4B9E37CFFB75E7A0B6F4B │ │ │ │ │ -4E412496F9C27DF4BDD90A869F0EBD81A57AE0B84051450A5A3E06CB9930DB2C │ │ │ │ │ -7C2DDB774BE870AEFCC9F4F067BE243FF3FD4B5C71B96C607DC4975973AF2650 │ │ │ │ │ -E7DF2BE3523A370EEDD07B5456B96E372ED10510CE677C044E609F21E93652FD │ │ │ │ │ -33CE612F587530D12214A3719CDB170C315B5D8763D5D4C67B5CAE90309E77AC │ │ │ │ │ -B45EB356C13A7BDE0D7320A9849CA357E30D7CF1085FFD70071932C3180AFC28 │ │ │ │ │ -B093016BA3F49A3878C34BB4A8727A441EB6CFC1A73F2313A7BF8D32EDF27E62 │ │ │ │ │ -EBEBC058FBA80B136FD2DE05C673B66482224ECEC63EDFB519AC13B5CC6624A6 │ │ │ │ │ -B3FD79037DA3851E93A386115852DBA88B176F21EDDB5386DC7C993C4210B28F │ │ │ │ │ -438131A586E34A09724E7CE60139F8247BFF14D2674805B3BD454C134728A43E │ │ │ │ │ -139E0AF71A7AC5CE42041EC83FD454B00AD29959FCF007789FFAF2D3492DCA4B │ │ │ │ │ -566EAFE97591ABC51CD0CD9BCD64E285FB823E41AA817E96B2B224005DAA4E15 │ │ │ │ │ -2141DB436B9D3FBA4EE4C876FD19A2E5133106FE2B9F704CB9614FCDC91B7950 │ │ │ │ │ -57053F45A5ED993B48189AAFAD5289F97AE2B0AEB5606579F6BD75F743EDB5B6 │ │ │ │ │ -5AA8F8A64CE507A47325081B3A013DB1BD596CDD3A83D2F29B070D6F9C57496E │ │ │ │ │ -14DF3F0F731C3BB00F2CE3D4BBACF1320322195D1DEA7A545BB4725BD1C6EC3D │ │ │ │ │ -63250C72B897741F8599D9D9BD2FB50EC80EFF2ECD6CE6603E95AABB45462ACF │ │ │ │ │ -12B005EE5979B6B05BCE9B97061686102349142A3CCC26D57F2A3283DD8B6E2A │ │ │ │ │ -98885E48C0D4A1A5C9612EDCB3B3D265E9B8CCCCA5D99F07F96C15B27D6A161F │ │ │ │ │ -936599E503C2859927201CACC31581AB7AB84F9EC9FFADC239F01DCC55940AB7 │ │ │ │ │ -FA884AA1EB6494C8E53DAD66E75A317428ACF9D943A74683BF547958F67D9E36 │ │ │ │ │ -F985EED50DEBCF255756A821927CB73848DCF167E96E975E959DE27FE7BA4FBA │ │ │ │ │ -D0EFC003F019D87572D6F9C73FC5B880C3EEDB7EF98E5EC3D25D6FE0015A6590 │ │ │ │ │ -E3C6EE632D7F6558B914609A8829CD1DEAB83A3F1207D5C3AAC9EAEA9DE1B4F8 │ │ │ │ │ -2375C5D4F630BCE13475F941ED2324D2CD4DCF2285298EAA4FFF89433D853860 │ │ │ │ │ -A974A9FC0808580FBDE7D02EDBB3D8C65BD3109AE8B359E96BFB7E21C696F440 │ │ │ │ │ -312B0CCAD810BF070DF8FC281E8198EB20A7FF9C9BCD291D74BC75EE46799485 │ │ │ │ │ -1AB2AE36B7E525034D146A856AF3BD9057A0033C08B606B89DD130548950C93D │ │ │ │ │ -94A8C92C47A34A791B1C108D2F36E899B79358B8081CCFC3D1A2F0521E4E2AE4 │ │ │ │ │ -7F500D6F2A53E5393E44201287225912590ABC738E8726622B67C3425639CCFB │ │ │ │ │ -F450B78A4918 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004B9BA1CC │ │ │ │ │ +580D3C6BDA4DC1B80B4365F1C80512453FC5316EC2D928FB731C3D6403E3C18B │ │ │ │ │ +E8424D644DF5E9A2134229C5C91CA68DB8E85BA2BB40F538F585DA6FA4037718 │ │ │ │ │ +B8053EBBA1E765346BCD5BDAA6C38115D31611D8A87A2238C145F2DA2F92E4DF │ │ │ │ │ +3987BD9C4D2A3D460E8941A68B125BCD9EE4F9FD262C4C8A71F47A2C81975635 │ │ │ │ │ +F1B981C274C53FA2ACCDE4C9D0A7C62D6C1EFF91CFC6712CA6A9F333C9564FCB │ │ │ │ │ +2A70F0AD715A79B10A08AB069E2A3C93BC0AED19D0CA10134B8DDDE8AF548DB2 │ │ │ │ │ +3A4AAA9C29682CF135BB767DAA16169A127EB50A7EECEB6480CF56A7D0F8AC56 │ │ │ │ │ +4A5090B3D75A790372886AF568D94C8165975A05BFBFDF1FFBA45F70700BB9E0 │ │ │ │ │ +57F3249EF9E9C8AD9CBCF6E4FD592DC4CDD2D7864F7C8A3FA6FC44C25C0CE7E1 │ │ │ │ │ +299F8A90B32B75DEA28917531621E1E7E0ECEE9E01665DEE99FBCF3EC3F30686 │ │ │ │ │ +513D7CBA745E660502603865D5A3E82D24B3F94B2884B21DC53AED87F49380E0 │ │ │ │ │ +68EE79C580931308DA762670C1F86F07FFB479773CD9C5DE6F22980DEC973D1C │ │ │ │ │ +A1E162D73932561BAAB24DE51DC8708291B666B36BABCA1FEDB6DD9C22572914 │ │ │ │ │ +7194DA044319F362452D53DD4D9A59134838E540F1E23805CEF53FF4F7519385 │ │ │ │ │ +1FAE3061F94369FEB1232BDA2E2A281E6972FB4524EFA37A598E7CDC097683EA │ │ │ │ │ +1B609952AEC0799B4711AAAB22D6B1D5CC729DE70897FDDC48AF0A12E40FFE30 │ │ │ │ │ +6528C601E68E8CFA4BBF897CF89DB712DE108DD1F084EFD917BFD9A70A74EB8F │ │ │ │ │ +D0D5B43CCC30373A5E871F18A969D01C69C2B4377622A0C8C4D7C4C28DDE5586 │ │ │ │ │ +BD17D5D640A6F396BD41993BD1932EE10953847F82F7BB36480B67A4F69F0763 │ │ │ │ │ +69423D1803B7BB60594ABEEE9578076639B84D8323F56104438803D45402FEE3 │ │ │ │ │ +045DAB16C4459DA9BBE01D0385CC771FB8DABDD8A9D280C18553F92FE6591CFD │ │ │ │ │ +26B82F28E6673BD823598D3F6CE03BEE04D9A21ED908DFC4F640227C148F133D │ │ │ │ │ +D32113275297C16EBCC9028AFD9102DE50E9CF67E7CF8C42BB8E73D1DAF8A5E2 │ │ │ │ │ +EF5979426229664A990DEF980A7038D2F229789D4F6EDBE1FB81BEC1A1BB14D7 │ │ │ │ │ +882515C62660E8877BE942712D57B86A2E19995AF087DECB7FD5208583C020AE │ │ │ │ │ +FEC86A2826530AD855006225300E4655F443C9360A8BAC96B5B096DDC9B12EDF │ │ │ │ │ +C862215AD6C432CF345FE701757E4EBB8C65F46912CB0F4DEF53672F7298D8F7 │ │ │ │ │ +EE51A9C5DE689A8D36956B7F0410893C0998DB03B73B4024CB046F8F6B32E07F │ │ │ │ │ +CD28A68AFB7152E45F1021DCD520D8A429FCDCA4B8054BAF0B48C4443280F198 │ │ │ │ │ +3360B078E6DEC37772DA8B629CFFD1534E8AA10E26B0BC58E92B9BF280C8EE45 │ │ │ │ │ +618EECDE904249F5A2010DC55D1028DFF4F058260B2B0A46541D6157970F44BD │ │ │ │ │ +D7483802D56A81184119DDBC914E8E394CBEEB506B61BB1CE2A3465252E5D8A3 │ │ │ │ │ +6BDD2D067E69D4ECEFC7D5568378F5F8B38EAFF138014185FE19DF7358A7A780 │ │ │ │ │ +3BE0E2CCD1561113F2F2319BDB503230DD0866121604710CEBBAA659ABFC010B │ │ │ │ │ +5CC40E5807F461D87E75BDC6AD96BCEF62AF668D48D7A76D08B57650F35CF609 │ │ │ │ │ +C0F791AEBEB75E29FA69596BAB419804AECE0F0238AAE64A6C13A22EBF4E3EAC │ │ │ │ │ +3570DECE85F54064486B2364D63E94FEB7C16350CDA318510A45C8848DB470ED │ │ │ │ │ +BFAFD2365681D65CFF3E6C1B4B7C8AE3066F96E819D05B97F3A6C2BFF8A72978 │ │ │ │ │ +EEB7F632FF604AD003A3CCA5A0465D53033A646E8082D3491EDECA3DA1A0E1BB │ │ │ │ │ +64BF36946520438D2EE72FA9EB1CEEDF56510AADA55A8DE280E23C904E0810FA │ │ │ │ │ +A3177CF684F06A4042DE4CD4AB21E2F0616153BEEE58EBBD89911FA43BC52969 │ │ │ │ │ +230C8137DB34C13E147B06C7A3875A931E1AC127E7D3EA0DF8346B6971F80901 │ │ │ │ │ +DC37F2DE1A0B81FD93CA3B5EB9B29ECABA1492901B1BA261DAB872FB3431C718 │ │ │ │ │ +9C9CDA7864908CD773864908DEB44E343221C2C4C335341789A46325D94C767C │ │ │ │ │ +740E3B60CE6D452A3A665967F568671FD7DD460B404B9C3D2EDCD47A336AA2C7 │ │ │ │ │ +BB0B1AC3823978F610629EF7AB526098A7EE7076F50A146D8134BA2DEC1B8ACF │ │ │ │ │ +68A7E4A9B7BE17FB71480516F2D6A8866E56CFD7C7A41311F48DDDD9887DACB8 │ │ │ │ │ +73FDAF5F25E956AFB0A9D530DE2E1128F006AAC9A78715BA2F90C8FED3729BFA │ │ │ │ │ +BDDD4098F870A27A91A0CB540D166FF86A442E95C9C361FD23378A2A138EAFB8 │ │ │ │ │ +D7050B486E1CB95068D890BCCD669456F3385C8F1793CE545099421368FE0F46 │ │ │ │ │ +53137AD2B65030B19CE7FF6B1669DB7A3C440AEF27149780E36C7097B7A8B71B │ │ │ │ │ +8789EECFA9A70B1F9695BB5D94E9A7D341291C1CA1BDEF4BE3EFCB8234CE9FFD │ │ │ │ │ +E1C4963CF919780129FA60162FEAA8AE97328F4BA14D949057A3EE74214F2D29 │ │ │ │ │ +51E7BE584446F6702F39957AE455CF8AF0C36AADAA39B53553D923CA5E9D4988 │ │ │ │ │ +76701B4F77DAE5185AC29900 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -4099,15 +4102,15 @@ │ │ │ │ │ 2[25 47[58 11[{}6 90.9091 /CMMI10 rf /Fd 149[25 72[91 │ │ │ │ │ 29[45 2[71{}4 90.9091 /CMSY10 rf /Fe 133[50 59 2[59 62 │ │ │ │ │ 44 44 46 1[62 56 62 93 31 2[31 62 2[51 62 2[54 11[86 │ │ │ │ │ 4[77 6[42 20[56 56 56 56 2[31 46[{}25 99.6264 /CMBX12 │ │ │ │ │ rf /Ff 179[62 62 8[62 66[{}3 119.552 /CMTT12 rf /Fg 141[38 │ │ │ │ │ 2[46 51 1[23 42 1[28 46 42 1[42 1[42 1[46 12[65 1[66 │ │ │ │ │ 11[59 62 69 2[68 6[28 58[{}18 90.9091 /CMTI10 rf /Fh │ │ │ │ │ -134[48 23[45 19[83 18[25 5[45 1[45 45 45 3[25 44[{}9 │ │ │ │ │ +138[51 6[51 8[40 26[47 15[25 4[45 1[45 45 1[45 3[25 44[{}10 │ │ │ │ │ 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 │ │ │ │ │ @@ -4217,17 +4220,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 1255 4 v │ │ │ │ │ -1436 w Fk(BKL)30 b Fh(:)g Fg(DRAFT)h Fh(Ma)m(y)g(1,)g(2024)p │ │ │ │ │ -2646 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 1248 4 v │ │ │ │ │ +1429 w Fk(BKL)30 b Fh(:)g Fg(DRAFT)h Fh(June)e(3,)i(2025)p │ │ │ │ │ +2653 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 │ │ │ │ │ @@ -4272,17 +4275,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 1255 4 v 1436 100 a Fk(BKL)29 │ │ │ │ │ -b Fh(:)i Fg(DRAFT)121 b Fh(Ma)m(y)32 b(1,)f(2024)p 2599 │ │ │ │ │ -100 V 1255 w Fl(3)0 399 y Fe(1.3.1)112 b(Initializer)38 │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1248 4 v 1429 100 a Fk(BKL)29 │ │ │ │ │ +b Fh(:)i Fg(DRAFT)121 b Fh(June)30 b(3,)h(2025)p 2606 │ │ │ │ │ +100 V 1248 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 │ │ │ │ │ @@ -4346,17 +4349,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 1255 4 v │ │ │ │ │ -1436 w Fk(BKL)30 b Fh(:)g Fg(DRAFT)h Fh(Ma)m(y)g(1,)g(2024)p │ │ │ │ │ -2646 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 1248 4 v │ │ │ │ │ +1429 w Fk(BKL)30 b Fh(:)g Fg(DRAFT)h Fh(June)e(3,)i(2025)p │ │ │ │ │ +2653 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 │ │ │ │ │ @@ -4424,17 +4427,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 1255 4 v 1436 100 a Fk(BKL)29 │ │ │ │ │ -b Fh(:)i Fg(DRAFT)121 b Fh(Ma)m(y)32 b(1,)f(2024)p 2599 │ │ │ │ │ -100 V 1255 w Fl(5)111 399 y(3.)46 b Fk(float)h(BKL_eval)e(\()j(BKL)f │ │ │ │ │ +TeXDict begin 5 4 bop 91 100 1248 4 v 1429 100 a Fk(BKL)29 │ │ │ │ │ +b Fh(:)i Fg(DRAFT)121 b Fh(June)30 b(3,)h(2025)p 2606 │ │ │ │ │ +100 V 1248 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 May 1, 2024 │ │ │ │ │ │ + 2 BKL : DRAFT June 3, 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 May 1, 2024 3 │ │ │ │ │ │ + BKL : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 4 BKL : DRAFT June 3, 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 May 1, 2024 5 │ │ │ │ │ │ + BKL : DRAFT June 3, 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.05.01:0544 │ │ │ │ │ +%DVIPSSource: TeX output 2025.06.03:1221 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -1425,21 +1425,22 @@ │ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ │ /UnderlineThickness 50 def │ │ │ │ │ end readonly def │ │ │ │ │ /Encoding 256 array │ │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ │ dup 44 /comma put │ │ │ │ │ dup 48 /zero put │ │ │ │ │ -dup 49 /one put │ │ │ │ │ dup 50 /two put │ │ │ │ │ -dup 52 /four put │ │ │ │ │ +dup 51 /three put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 77 /M put │ │ │ │ │ -dup 97 /a put │ │ │ │ │ -dup 121 /y put │ │ │ │ │ +dup 74 /J put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ +dup 110 /n put │ │ │ │ │ +dup 117 /u put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ │ @@ -1620,68 +1621,70 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004ACD1870 │ │ │ │ │ -A5EA947858F5795870BFE1343AD803FB854BF8F5A4E794E8EC57BE41DB5B8734 │ │ │ │ │ -13E47950F29A81EA0C81EA798863883D7F41F78325CA190CBBFFE822AE494550 │ │ │ │ │ -4BE83703071FC9512D128927AF3F63CEF8F86ABE1E15D7B4DDD39576E7DFF45E │ │ │ │ │ -3CB4115AAB1830DE8647B915DB4BEBEB5235C281E098B899BAB951D8D5798F01 │ │ │ │ │ -7F7C47336D31438E5126738AFEAB29E9A7CBE06DE4DD604477B542D2620DFD58 │ │ │ │ │ -28FE34238572F23C5A8EB7ACEE1E154DA13FC1A5AA67A3BA8C5CDFB2B80312C9 │ │ │ │ │ -BC9FAE56D08DDFA9498E6EF0D0F6BD18B3923E0B670B0740528BC843610736CB │ │ │ │ │ -80228C105C2F72C3C22D610C3D8C268DEEA2AEEE3221E198E79FE2966487360C │ │ │ │ │ -84AE08AC326F48B21447652121B1EB68AF857B8628F27BB4ED00F273E0DD044A │ │ │ │ │ -7D11A5BFAAC0A82328444CC9DD90167681B07D55CE28655F40C21250A226DEAB │ │ │ │ │ -2D46FFB680CB9242BE192AC0E55A44D45709FA6DE638C130D92C4E9B07BC3D61 │ │ │ │ │ -25CC2F0A7ED4F3574242FFE4461272EB1401266EEF551E0E2B0EF51FA8F250EC │ │ │ │ │ -FD9AFB6F5A0CC442B566BC24400133E3E9B9A9FC801CEF284FD2B3ECA43421FA │ │ │ │ │ -51E5D1EFE7BEAA96658362C438A0A5A6DCBC664A85EF88037B42355195B9D19C │ │ │ │ │ -7961D5F63B123451B298CD52C144FCD4F3641A823FBA14605E2DFD845E89102C │ │ │ │ │ -4E345CFD80E3EE6F097095A84C941FFC91B234F3615E4EE4C5D564284656E364 │ │ │ │ │ -AB9C4D1DE05F8FD065CA6064893F0CF3A3A501D59EF6568D05D818A010D06518 │ │ │ │ │ -E2C20418ADD1E652867F265084A27A5FE0C32213C59FFC3A84EDC89382521E5B │ │ │ │ │ -8AF66D76601F83C5C33CC9CF968C77B66F1FA074AC3DAD8E453C9264D03969EF │ │ │ │ │ -9E387BB3BEAA4BF0A9D88BA2CE6094E8996A3752A657E322A57AF006444BF516 │ │ │ │ │ -501C43CAA1BA7F16A3B6E4D3EBDECCCC19564DF18FB68194C132238A5441A21A │ │ │ │ │ -F52285CA1CA94A4BEC61EB509FA35EA5E393D662D938F4291F37EB7C2D5815BE │ │ │ │ │ -446813E1CFD06FFFFF2C4355C9DAFA48E765F4CC5DE4B9E37CFFB75E7A0B6F4B │ │ │ │ │ -4E412496F9C27DF4BDD90A869F0EBD81A57AE0B84051450A5A3E06CB9930DB2C │ │ │ │ │ -7C2DDB774BE870AEFCC9F4F067BE243FF3FD4B5C71B96C607DC4975973AF2650 │ │ │ │ │ -E7DF2BE3523A370EEDD07B5456B96E372ED10510CE677C044E609F21E93652FD │ │ │ │ │ -33CE612F587530D12214A3719CDB170C315B5D8763D5D4C67B5CAE90309E77AC │ │ │ │ │ -B45EB356C13A7BDE0D7320A9849CA357E30D7CF1085FFD70071932C3180AFC28 │ │ │ │ │ -B093016BA3F49A3878C34BB4A8727A441EB6CFC1A73F2313A7BF8D32EDF27E62 │ │ │ │ │ -EBEBC058FBA80B136FD2DE05C673B66482224ECEC63EDFB519AC13B5CC6624A6 │ │ │ │ │ -B3FD79037DA3851E93A386115852DBA88B176F21EDDB5386DC7C993C4210B28F │ │ │ │ │ -438131A586E34A09724E7CE60139F8247BFF14D2674805B3BD454C134728A43E │ │ │ │ │ -139E0AF71A7AC5CE42041EC83FD454B00AD29959FCF007789FFAF2D3492DCA4B │ │ │ │ │ -566EAFE97591ABC51CD0CD9BCD64E285FB823E41AA817E96B2B224005DAA4E15 │ │ │ │ │ -2141DB436B9D3FBA4EE4C876FD19A2E5133106FE2B9F704CB9614FCDC91B7950 │ │ │ │ │ -57053F45A5ED993B48189AAFAD5289F97AE2B0AEB5606579F6BD75F743EDB5B6 │ │ │ │ │ -5AA8F8A64CE507A47325081B3A013DB1BD596CDD3A83D2F29B070D6F9C57496E │ │ │ │ │ -14DF3F0F731C3BB00F2CE3D4BBACF1320322195D1DEA7A545BB4725BD1C6EC3D │ │ │ │ │ -63250C72B897741F8599D9D9BD2FB50EC80EFF2ECD6CE6603E95AABB45462ACF │ │ │ │ │ -12B005EE5979B6B05BCE9B97061686102349142A3CCC26D57F2A3283DD8B6E2A │ │ │ │ │ -98885E48C0D4A1A5C9612EDCB3B3D265E9B8CCCCA5D99F07F96C15B27D6A161F │ │ │ │ │ -936599E503C2859927201CACC31581AB7AB84F9EC9FFADC239F01DCC55940AB7 │ │ │ │ │ -FA884AA1EB6494C8E53DAD66E75A317428ACF9D943A74683BF547958F67D9E36 │ │ │ │ │ -F985EED50DEBCF255756A821927CB73848DCF167E96E975E959DE27FE7BA4FBA │ │ │ │ │ -D0EFC003F019D87572D6F9C73FC5B880C3EEDB7EF98E5EC3D25D6FE0015A6590 │ │ │ │ │ -E3C6EE632D7F6558B914609A8829CD1DEAB83A3F1207D5C3AAC9EAEA9DE1B4F8 │ │ │ │ │ -2375C5D4F630BCE13475F941ED2324D2CD4DCF2285298EAA4FFF89433D853860 │ │ │ │ │ -A974A9FC0808580FBDE7D02EDBB3D8C65BD3109AE8B359E96BFB7E21C696F440 │ │ │ │ │ -312B0CCAD810BF070DF8FC281E8198EB20A7FF9C9BCD291D74BC75EE46799485 │ │ │ │ │ -1AB2AE36B7E525034D146A856AF3BD9057A0033C08B606B89DD130548950C93D │ │ │ │ │ -94A8C92C47A34A791B1C108D2F36E899B79358B8081CCFC3D1A2F0521E4E2AE4 │ │ │ │ │ -7F500D6F2A53E5393E44201287225912590ABC738E8726622B67C3425639CCFB │ │ │ │ │ -F450B78A4918 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004B9BA1CC │ │ │ │ │ +580D3C6BDA4DC1B80B4365F1C80512453FC5316EC2D928FB731C3D6403E3C18B │ │ │ │ │ +E8424D644DF5E9A2134229C5C91CA68DB8E85BA2BB40F538F585DA6FA4037718 │ │ │ │ │ +B8053EBBA1E765346BCD5BDAA6C38115D31611D8A87A2238C145F2DA2F92E4DF │ │ │ │ │ +3987BD9C4D2A3D460E8941A68B125BCD9EE4F9FD262C4C8A71F47A2C81975635 │ │ │ │ │ +F1B981C274C53FA2ACCDE4C9D0A7C62D6C1EFF91CFC6712CA6A9F333C9564FCB │ │ │ │ │ +2A70F0AD715A79B10A08AB069E2A3C93BC0AED19D0CA10134B8DDDE8AF548DB2 │ │ │ │ │ +3A4AAA9C29682CF135BB767DAA16169A127EB50A7EECEB6480CF56A7D0F8AC56 │ │ │ │ │ +4A5090B3D75A790372886AF568D94C8165975A05BFBFDF1FFBA45F70700BB9E0 │ │ │ │ │ +57F3249EF9E9C8AD9CBCF6E4FD592DC4CDD2D7864F7C8A3FA6FC44C25C0CE7E1 │ │ │ │ │ +299F8A90B32B75DEA28917531621E1E7E0ECEE9E01665DEE99FBCF3EC3F30686 │ │ │ │ │ +513D7CBA745E660502603865D5A3E82D24B3F94B2884B21DC53AED87F49380E0 │ │ │ │ │ +68EE79C580931308DA762670C1F86F07FFB479773CD9C5DE6F22980DEC973D1C │ │ │ │ │ +A1E162D73932561BAAB24DE51DC8708291B666B36BABCA1FEDB6DD9C22572914 │ │ │ │ │ +7194DA044319F362452D53DD4D9A59134838E540F1E23805CEF53FF4F7519385 │ │ │ │ │ +1FAE3061F94369FEB1232BDA2E2A281E6972FB4524EFA37A598E7CDC097683EA │ │ │ │ │ +1B609952AEC0799B4711AAAB22D6B1D5CC729DE70897FDDC48AF0A12E40FFE30 │ │ │ │ │ +6528C601E68E8CFA4BBF897CF89DB712DE108DD1F084EFD917BFD9A70A74EB8F │ │ │ │ │ +D0D5B43CCC30373A5E871F18A969D01C69C2B4377622A0C8C4D7C4C28DDE5586 │ │ │ │ │ +BD17D5D640A6F396BD41993BD1932EE10953847F82F7BB36480B67A4F69F0763 │ │ │ │ │ +69423D1803B7BB60594ABEEE9578076639B84D8323F56104438803D45402FEE3 │ │ │ │ │ +045DAB16C4459DA9BBE01D0385CC771FB8DABDD8A9D280C18553F92FE6591CFD │ │ │ │ │ +26B82F28E6673BD823598D3F6CE03BEE04D9A21ED908DFC4F640227C148F133D │ │ │ │ │ +D32113275297C16EBCC9028AFD9102DE50E9CF67E7CF8C42BB8E73D1DAF8A5E2 │ │ │ │ │ +EF5979426229664A990DEF980A7038D2F229789D4F6EDBE1FB81BEC1A1BB14D7 │ │ │ │ │ +882515C62660E8877BE942712D57B86A2E19995AF087DECB7FD5208583C020AE │ │ │ │ │ +FEC86A2826530AD855006225300E4655F443C9360A8BAC96B5B096DDC9B12EDF │ │ │ │ │ +C862215AD6C432CF345FE701757E4EBB8C65F46912CB0F4DEF53672F7298D8F7 │ │ │ │ │ +EE51A9C5DE689A8D36956B7F0410893C0998DB03B73B4024CB046F8F6B32E07F │ │ │ │ │ +CD28A68AFB7152E45F1021DCD520D8A429FCDCA4B8054BAF0B48C4443280F198 │ │ │ │ │ +3360B078E6DEC37772DA8B629CFFD1534E8AA10E26B0BC58E92B9BF280C8EE45 │ │ │ │ │ +618EECDE904249F5A2010DC55D1028DFF4F058260B2B0A46541D6157970F44BD │ │ │ │ │ +D7483802D56A81184119DDBC914E8E394CBEEB506B61BB1CE2A3465252E5D8A3 │ │ │ │ │ +6BDD2D067E69D4ECEFC7D5568378F5F8B38EAFF138014185FE19DF7358A7A780 │ │ │ │ │ +3BE0E2CCD1561113F2F2319BDB503230DD0866121604710CEBBAA659ABFC010B │ │ │ │ │ +5CC40E5807F461D87E75BDC6AD96BCEF62AF668D48D7A76D08B57650F35CF609 │ │ │ │ │ +C0F791AEBEB75E29FA69596BAB419804AECE0F0238AAE64A6C13A22EBF4E3EAC │ │ │ │ │ +3570DECE85F54064486B2364D63E94FEB7C16350CDA318510A45C8848DB470ED │ │ │ │ │ +BFAFD2365681D65CFF3E6C1B4B7C8AE3066F96E819D05B97F3A6C2BFF8A72978 │ │ │ │ │ +EEB7F632FF604AD003A3CCA5A0465D53033A646E8082D3491EDECA3DA1A0E1BB │ │ │ │ │ +64BF36946520438D2EE72FA9EB1CEEDF56510AADA55A8DE280E23C904E0810FA │ │ │ │ │ +A3177CF684F06A4042DE4CD4AB21E2F0616153BEEE58EBBD89911FA43BC52969 │ │ │ │ │ +230C8137DB34C13E147B06C7A3875A931E1AC127E7D3EA0DF8346B6971F80901 │ │ │ │ │ +DC37F2DE1A0B81FD93CA3B5EB9B29ECABA1492901B1BA261DAB872FB3431C718 │ │ │ │ │ +9C9CDA7864908CD773864908DEB44E343221C2C4C335341789A46325D94C767C │ │ │ │ │ +740E3B60CE6D452A3A665967F568671FD7DD460B404B9C3D2EDCD47A336AA2C7 │ │ │ │ │ +BB0B1AC3823978F610629EF7AB526098A7EE7076F50A146D8134BA2DEC1B8ACF │ │ │ │ │ +68A7E4A9B7BE17FB71480516F2D6A8866E56CFD7C7A41311F48DDDD9887DACB8 │ │ │ │ │ +73FDAF5F25E956AFB0A9D530DE2E1128F006AAC9A78715BA2F90C8FED3729BFA │ │ │ │ │ +BDDD4098F870A27A91A0CB540D166FF86A442E95C9C361FD23378A2A138EAFB8 │ │ │ │ │ +D7050B486E1CB95068D890BCCD669456F3385C8F1793CE545099421368FE0F46 │ │ │ │ │ +53137AD2B65030B19CE7FF6B1669DB7A3C440AEF27149780E36C7097B7A8B71B │ │ │ │ │ +8789EECFA9A70B1F9695BB5D94E9A7D341291C1CA1BDEF4BE3EFCB8234CE9FFD │ │ │ │ │ +E1C4963CF919780129FA60162FEAA8AE97328F4BA14D949057A3EE74214F2D29 │ │ │ │ │ +51E7BE584446F6702F39957AE455CF8AF0C36AADAA39B53553D923CA5E9D4988 │ │ │ │ │ +76701B4F77DAE5185AC29900 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -4725,18 +4728,18 @@ │ │ │ │ │ @start /Fa 173[50 8[29 3[49 69[{}3 58.1154 /CMMI7 rf │ │ │ │ │ /Fb 133[50 59 3[62 44 44 46 1[62 56 62 93 31 2[31 62 │ │ │ │ │ 56 1[51 62 50 1[54 11[86 5[84 1[106 3[42 1[88 2[86 1[80 │ │ │ │ │ 11[56 56 56 56 56 56 2[31 37 45[{}33 99.6264 /CMBX12 │ │ │ │ │ rf /Fc 175[62 8[62 4[62 66[{}3 119.552 /CMTT12 rf /Fd │ │ │ │ │ 134[71 2[71 75 52 53 55 1[75 67 75 112 2[41 37 75 67 │ │ │ │ │ 41 61 75 60 75 65 13[75 2[92 11[103 16[67 67 67 2[37 │ │ │ │ │ -46[{}27 119.552 /CMBX12 rf /Fe 134[44 23[42 19[76 18[23 │ │ │ │ │ -5[42 1[42 42 42 3[23 44[{}9 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 138[46 6[46 8[37 26[43 │ │ │ │ │ +15[23 4[42 1[42 42 1[42 3[23 44[{}10 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 │ │ │ │ │ @@ -4883,17 +4886,17 @@ │ │ │ │ │ y(Finding)27 b(the)g(Dulmage-Mendelsohn)g(decomp)r(osition)f(of)h(a)g │ │ │ │ │ (bipartite)g(graph)f(is)h(a)f(little)i(less)f(clear)f(cut.)37 │ │ │ │ │ b(When)28 b(the)0 5215 y(v)n(ertices)e(in)i(the)g(bipartite)g(graph)e │ │ │ │ │ (ha)n(v)n(e)h(unit)h(w)n(eigh)n(t,)f(the)h(pro)r(cess)e(is)i(straigh)n │ │ │ │ │ (tforw)n(ard.)125 5407 y Fh(\210)42 b Fm(Find)28 b(a)f(maxim)n(um)g │ │ │ │ │ (matc)n(hing.)1929 5656 y(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fm(2)p 125 100 1315 4 v │ │ │ │ │ -1480 w Fl(BPG)26 b Fe(:)i Fk(DRAFT)f Fe(Ma)n(y)g(1,)g(2024)p │ │ │ │ │ -2586 100 V 125 390 a Fh(\210)42 b Fm(Drop)27 b(an)g(alternating)g(lev)n │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fm(2)p 125 100 1309 4 v │ │ │ │ │ +1474 w Fl(BPG)26 b Fe(:)i Fk(DRAFT)f Fe(June)h(3,)f(2025)p │ │ │ │ │ +2592 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 │ │ │ │ │ @@ -5013,17 +5016,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 1315 4 v 1481 100 a Fl(BPG)26 │ │ │ │ │ -b Fe(:)i Fk(DRAFT)110 b Fe(Ma)n(y)27 b(1,)g(2024)p 2546 │ │ │ │ │ -100 V 1315 w Fm(3)0 390 y(la)n(y)n(ers)e(to)i(the)g(wide)g(separator,)e │ │ │ │ │ +TeXDict begin 3 2 bop 83 100 1309 4 v 1474 100 a Fl(BPG)27 │ │ │ │ │ +b Fe(:)g Fk(DRAFT)111 b Fe(June)27 b(3,)g(2025)p 2552 │ │ │ │ │ +100 V 1309 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 │ │ │ │ │ @@ -5084,17 +5087,17 @@ │ │ │ │ │ 5162 V 30 w(clearData\(\))c Fm(then)23 b(free's)f(the)h(storage)d(for)i │ │ │ │ │ (the)h(structure)208 5262 y(with)28 b(a)f(call)g(to)h │ │ │ │ │ Fl(free\(\))p Fm(.)208 5407 y Fk(Err)l(or)i(che)l(cking:)38 │ │ │ │ │ b Fm(If)28 b Fl(bpg)f Fm(is)g Fl(NULL)p Fm(,)f(an)i(error)d(message)i │ │ │ │ │ (is)g(prin)n(ted)h(and)f(the)h(program)e(exits.)p eop │ │ │ │ │ end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fm(4)p 125 100 1315 4 v │ │ │ │ │ -1480 w Fl(BPG)26 b Fe(:)i Fk(DRAFT)f Fe(Ma)n(y)g(1,)g(2024)p │ │ │ │ │ -2586 100 V 0 390 a Fb(1.2.2)112 b(Initializer)38 b(metho)s(ds)0 │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fm(4)p 125 100 1309 4 v │ │ │ │ │ +1474 w Fl(BPG)26 b Fe(:)i Fk(DRAFT)f Fe(June)h(3,)f(2025)p │ │ │ │ │ +2592 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 │ │ │ │ │ @@ -5178,17 +5181,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 1315 4 v 1481 100 a Fl(BPG)26 │ │ │ │ │ -b Fe(:)i Fk(DRAFT)110 b Fe(Ma)n(y)27 b(1,)g(2024)p 2546 │ │ │ │ │ -100 V 1315 w Fm(5)0 390 y Fb(1.2.5)112 b(Dulmage-Mendelsohn)42 │ │ │ │ │ +TeXDict begin 5 4 bop 83 100 1309 4 v 1474 100 a Fl(BPG)27 │ │ │ │ │ +b Fe(:)g Fk(DRAFT)111 b Fe(June)27 b(3,)g(2025)p 2552 │ │ │ │ │ +100 V 1309 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 │ │ │ │ │ @@ -5283,17 +5286,17 @@ │ │ │ │ │ 208 5280 y(v)-5 b(alue)27 b Fl(1)g Fm(is)h(returned.)36 │ │ │ │ │ b(If)28 b(an)g(IO)f(error)e(is)j(encoun)n(tered)f(from)g │ │ │ │ │ Fl(fscanf)p Fm(,)e(zero)i(is)g(returned.)208 5407 y Fk(Err)l(or)j(che)l │ │ │ │ │ (cking:)38 b Fm(If)28 b Fl(bpg)f Fm(or)g Fl(fp)f Fm(is)i │ │ │ │ │ Fl(NULL)e Fm(an)h(error)f(message)g(is)i(prin)n(ted)f(and)g(zero)g(is)g │ │ │ │ │ (returned.)p eop end │ │ │ │ │ %%Page: 6 6 │ │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fm(6)p 125 100 1315 4 v │ │ │ │ │ -1480 w Fl(BPG)26 b Fe(:)i Fk(DRAFT)f Fe(Ma)n(y)g(1,)g(2024)p │ │ │ │ │ -2586 100 V 101 390 a Fm(3.)42 b Fl(int)g(BPG_readFromBina)o(ry)o(Fil)o │ │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fm(6)p 125 100 1309 4 v │ │ │ │ │ +1474 w Fl(BPG)26 b Fe(:)i Fk(DRAFT)f Fe(June)h(3,)f(2025)p │ │ │ │ │ +2592 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 │ │ │ │ │ @@ -5376,17 +5379,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 1315 4 v 1481 100 a Fl(BPG)26 │ │ │ │ │ -b Fe(:)i Fk(DRAFT)110 b Fe(Ma)n(y)27 b(1,)g(2024)p 2546 │ │ │ │ │ -100 V 1315 w Fm(7)307 390 y Fh(\210)42 b Fm(The)33 b │ │ │ │ │ +TeXDict begin 7 6 bop 83 100 1309 4 v 1474 100 a Fl(BPG)27 │ │ │ │ │ +b Fe(:)g Fk(DRAFT)111 b Fe(June)27 b(3,)g(2025)p 2552 │ │ │ │ │ +100 V 1309 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 May 1, 2024 │ │ │ │ │ │ + 2 BPG : DRAFT June 3, 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 May 1, 2024 3 │ │ │ │ │ │ + BPG : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 4 BPG : DRAFT June 3, 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 May 1, 2024 5 │ │ │ │ │ │ + BPG : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 6 BPG : DRAFT June 3, 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 May 1, 2024 7 │ │ │ │ │ │ + BPG : DRAFT June 3, 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.05.01:0544 │ │ │ │ │ +%DVIPSSource: TeX output 2025.06.03:1221 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -2516,21 +2516,22 @@ │ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ │ /UnderlineThickness 50 def │ │ │ │ │ end readonly def │ │ │ │ │ /Encoding 256 array │ │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ │ dup 44 /comma put │ │ │ │ │ dup 48 /zero put │ │ │ │ │ -dup 49 /one put │ │ │ │ │ dup 50 /two put │ │ │ │ │ -dup 52 /four put │ │ │ │ │ +dup 51 /three put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 77 /M put │ │ │ │ │ -dup 97 /a put │ │ │ │ │ -dup 121 /y put │ │ │ │ │ +dup 74 /J put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ +dup 110 /n put │ │ │ │ │ +dup 117 /u put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ │ @@ -2711,68 +2712,70 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004ACD1870 │ │ │ │ │ -A5EA947858F5795870BFE1343AD803FB854BF8F5A4E794E8EC57BE41DB5B8734 │ │ │ │ │ -13E47950F29A81EA0C81EA798863883D7F41F78325CA190CBBFFE822AE494550 │ │ │ │ │ -4BE83703071FC9512D128927AF3F63CEF8F86ABE1E15D7B4DDD39576E7DFF45E │ │ │ │ │ -3CB4115AAB1830DE8647B915DB4BEBEB5235C281E098B899BAB951D8D5798F01 │ │ │ │ │ -7F7C47336D31438E5126738AFEAB29E9A7CBE06DE4DD604477B542D2620DFD58 │ │ │ │ │ -28FE34238572F23C5A8EB7ACEE1E154DA13FC1A5AA67A3BA8C5CDFB2B80312C9 │ │ │ │ │ -BC9FAE56D08DDFA9498E6EF0D0F6BD18B3923E0B670B0740528BC843610736CB │ │ │ │ │ -80228C105C2F72C3C22D610C3D8C268DEEA2AEEE3221E198E79FE2966487360C │ │ │ │ │ -84AE08AC326F48B21447652121B1EB68AF857B8628F27BB4ED00F273E0DD044A │ │ │ │ │ -7D11A5BFAAC0A82328444CC9DD90167681B07D55CE28655F40C21250A226DEAB │ │ │ │ │ -2D46FFB680CB9242BE192AC0E55A44D45709FA6DE638C130D92C4E9B07BC3D61 │ │ │ │ │ -25CC2F0A7ED4F3574242FFE4461272EB1401266EEF551E0E2B0EF51FA8F250EC │ │ │ │ │ -FD9AFB6F5A0CC442B566BC24400133E3E9B9A9FC801CEF284FD2B3ECA43421FA │ │ │ │ │ -51E5D1EFE7BEAA96658362C438A0A5A6DCBC664A85EF88037B42355195B9D19C │ │ │ │ │ -7961D5F63B123451B298CD52C144FCD4F3641A823FBA14605E2DFD845E89102C │ │ │ │ │ -4E345CFD80E3EE6F097095A84C941FFC91B234F3615E4EE4C5D564284656E364 │ │ │ │ │ -AB9C4D1DE05F8FD065CA6064893F0CF3A3A501D59EF6568D05D818A010D06518 │ │ │ │ │ -E2C20418ADD1E652867F265084A27A5FE0C32213C59FFC3A84EDC89382521E5B │ │ │ │ │ -8AF66D76601F83C5C33CC9CF968C77B66F1FA074AC3DAD8E453C9264D03969EF │ │ │ │ │ -9E387BB3BEAA4BF0A9D88BA2CE6094E8996A3752A657E322A57AF006444BF516 │ │ │ │ │ -501C43CAA1BA7F16A3B6E4D3EBDECCCC19564DF18FB68194C132238A5441A21A │ │ │ │ │ -F52285CA1CA94A4BEC61EB509FA35EA5E393D662D938F4291F37EB7C2D5815BE │ │ │ │ │ -446813E1CFD06FFFFF2C4355C9DAFA48E765F4CC5DE4B9E37CFFB75E7A0B6F4B │ │ │ │ │ -4E412496F9C27DF4BDD90A869F0EBD81A57AE0B84051450A5A3E06CB9930DB2C │ │ │ │ │ -7C2DDB774BE870AEFCC9F4F067BE243FF3FD4B5C71B96C607DC4975973AF2650 │ │ │ │ │ -E7DF2BE3523A370EEDD07B5456B96E372ED10510CE677C044E609F21E93652FD │ │ │ │ │ -33CE612F587530D12214A3719CDB170C315B5D8763D5D4C67B5CAE90309E77AC │ │ │ │ │ -B45EB356C13A7BDE0D7320A9849CA357E30D7CF1085FFD70071932C3180AFC28 │ │ │ │ │ -B093016BA3F49A3878C34BB4A8727A441EB6CFC1A73F2313A7BF8D32EDF27E62 │ │ │ │ │ -EBEBC058FBA80B136FD2DE05C673B66482224ECEC63EDFB519AC13B5CC6624A6 │ │ │ │ │ -B3FD79037DA3851E93A386115852DBA88B176F21EDDB5386DC7C993C4210B28F │ │ │ │ │ -438131A586E34A09724E7CE60139F8247BFF14D2674805B3BD454C134728A43E │ │ │ │ │ -139E0AF71A7AC5CE42041EC83FD454B00AD29959FCF007789FFAF2D3492DCA4B │ │ │ │ │ -566EAFE97591ABC51CD0CD9BCD64E285FB823E41AA817E96B2B224005DAA4E15 │ │ │ │ │ -2141DB436B9D3FBA4EE4C876FD19A2E5133106FE2B9F704CB9614FCDC91B7950 │ │ │ │ │ -57053F45A5ED993B48189AAFAD5289F97AE2B0AEB5606579F6BD75F743EDB5B6 │ │ │ │ │ -5AA8F8A64CE507A47325081B3A013DB1BD596CDD3A83D2F29B070D6F9C57496E │ │ │ │ │ -14DF3F0F731C3BB00F2CE3D4BBACF1320322195D1DEA7A545BB4725BD1C6EC3D │ │ │ │ │ -63250C72B897741F8599D9D9BD2FB50EC80EFF2ECD6CE6603E95AABB45462ACF │ │ │ │ │ -12B005EE5979B6B05BCE9B97061686102349142A3CCC26D57F2A3283DD8B6E2A │ │ │ │ │ -98885E48C0D4A1A5C9612EDCB3B3D265E9B8CCCCA5D99F07F96C15B27D6A161F │ │ │ │ │ -936599E503C2859927201CACC31581AB7AB84F9EC9FFADC239F01DCC55940AB7 │ │ │ │ │ -FA884AA1EB6494C8E53DAD66E75A317428ACF9D943A74683BF547958F67D9E36 │ │ │ │ │ -F985EED50DEBCF255756A821927CB73848DCF167E96E975E959DE27FE7BA4FBA │ │ │ │ │ -D0EFC003F019D87572D6F9C73FC5B880C3EEDB7EF98E5EC3D25D6FE0015A6590 │ │ │ │ │ -E3C6EE632D7F6558B914609A8829CD1DEAB83A3F1207D5C3AAC9EAEA9DE1B4F8 │ │ │ │ │ -2375C5D4F630BCE13475F941ED2324D2CD4DCF2285298EAA4FFF89433D853860 │ │ │ │ │ -A974A9FC0808580FBDE7D02EDBB3D8C65BD3109AE8B359E96BFB7E21C696F440 │ │ │ │ │ -312B0CCAD810BF070DF8FC281E8198EB20A7FF9C9BCD291D74BC75EE46799485 │ │ │ │ │ -1AB2AE36B7E525034D146A856AF3BD9057A0033C08B606B89DD130548950C93D │ │ │ │ │ -94A8C92C47A34A791B1C108D2F36E899B79358B8081CCFC3D1A2F0521E4E2AE4 │ │ │ │ │ -7F500D6F2A53E5393E44201287225912590ABC738E8726622B67C3425639CCFB │ │ │ │ │ -F450B78A4918 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004B9BA1CC │ │ │ │ │ +580D3C6BDA4DC1B80B4365F1C80512453FC5316EC2D928FB731C3D6403E3C18B │ │ │ │ │ +E8424D644DF5E9A2134229C5C91CA68DB8E85BA2BB40F538F585DA6FA4037718 │ │ │ │ │ +B8053EBBA1E765346BCD5BDAA6C38115D31611D8A87A2238C145F2DA2F92E4DF │ │ │ │ │ +3987BD9C4D2A3D460E8941A68B125BCD9EE4F9FD262C4C8A71F47A2C81975635 │ │ │ │ │ +F1B981C274C53FA2ACCDE4C9D0A7C62D6C1EFF91CFC6712CA6A9F333C9564FCB │ │ │ │ │ +2A70F0AD715A79B10A08AB069E2A3C93BC0AED19D0CA10134B8DDDE8AF548DB2 │ │ │ │ │ +3A4AAA9C29682CF135BB767DAA16169A127EB50A7EECEB6480CF56A7D0F8AC56 │ │ │ │ │ +4A5090B3D75A790372886AF568D94C8165975A05BFBFDF1FFBA45F70700BB9E0 │ │ │ │ │ +57F3249EF9E9C8AD9CBCF6E4FD592DC4CDD2D7864F7C8A3FA6FC44C25C0CE7E1 │ │ │ │ │ +299F8A90B32B75DEA28917531621E1E7E0ECEE9E01665DEE99FBCF3EC3F30686 │ │ │ │ │ +513D7CBA745E660502603865D5A3E82D24B3F94B2884B21DC53AED87F49380E0 │ │ │ │ │ +68EE79C580931308DA762670C1F86F07FFB479773CD9C5DE6F22980DEC973D1C │ │ │ │ │ +A1E162D73932561BAAB24DE51DC8708291B666B36BABCA1FEDB6DD9C22572914 │ │ │ │ │ +7194DA044319F362452D53DD4D9A59134838E540F1E23805CEF53FF4F7519385 │ │ │ │ │ +1FAE3061F94369FEB1232BDA2E2A281E6972FB4524EFA37A598E7CDC097683EA │ │ │ │ │ +1B609952AEC0799B4711AAAB22D6B1D5CC729DE70897FDDC48AF0A12E40FFE30 │ │ │ │ │ +6528C601E68E8CFA4BBF897CF89DB712DE108DD1F084EFD917BFD9A70A74EB8F │ │ │ │ │ +D0D5B43CCC30373A5E871F18A969D01C69C2B4377622A0C8C4D7C4C28DDE5586 │ │ │ │ │ +BD17D5D640A6F396BD41993BD1932EE10953847F82F7BB36480B67A4F69F0763 │ │ │ │ │ +69423D1803B7BB60594ABEEE9578076639B84D8323F56104438803D45402FEE3 │ │ │ │ │ +045DAB16C4459DA9BBE01D0385CC771FB8DABDD8A9D280C18553F92FE6591CFD │ │ │ │ │ +26B82F28E6673BD823598D3F6CE03BEE04D9A21ED908DFC4F640227C148F133D │ │ │ │ │ +D32113275297C16EBCC9028AFD9102DE50E9CF67E7CF8C42BB8E73D1DAF8A5E2 │ │ │ │ │ +EF5979426229664A990DEF980A7038D2F229789D4F6EDBE1FB81BEC1A1BB14D7 │ │ │ │ │ +882515C62660E8877BE942712D57B86A2E19995AF087DECB7FD5208583C020AE │ │ │ │ │ +FEC86A2826530AD855006225300E4655F443C9360A8BAC96B5B096DDC9B12EDF │ │ │ │ │ +C862215AD6C432CF345FE701757E4EBB8C65F46912CB0F4DEF53672F7298D8F7 │ │ │ │ │ +EE51A9C5DE689A8D36956B7F0410893C0998DB03B73B4024CB046F8F6B32E07F │ │ │ │ │ +CD28A68AFB7152E45F1021DCD520D8A429FCDCA4B8054BAF0B48C4443280F198 │ │ │ │ │ +3360B078E6DEC37772DA8B629CFFD1534E8AA10E26B0BC58E92B9BF280C8EE45 │ │ │ │ │ +618EECDE904249F5A2010DC55D1028DFF4F058260B2B0A46541D6157970F44BD │ │ │ │ │ +D7483802D56A81184119DDBC914E8E394CBEEB506B61BB1CE2A3465252E5D8A3 │ │ │ │ │ +6BDD2D067E69D4ECEFC7D5568378F5F8B38EAFF138014185FE19DF7358A7A780 │ │ │ │ │ +3BE0E2CCD1561113F2F2319BDB503230DD0866121604710CEBBAA659ABFC010B │ │ │ │ │ +5CC40E5807F461D87E75BDC6AD96BCEF62AF668D48D7A76D08B57650F35CF609 │ │ │ │ │ +C0F791AEBEB75E29FA69596BAB419804AECE0F0238AAE64A6C13A22EBF4E3EAC │ │ │ │ │ +3570DECE85F54064486B2364D63E94FEB7C16350CDA318510A45C8848DB470ED │ │ │ │ │ +BFAFD2365681D65CFF3E6C1B4B7C8AE3066F96E819D05B97F3A6C2BFF8A72978 │ │ │ │ │ +EEB7F632FF604AD003A3CCA5A0465D53033A646E8082D3491EDECA3DA1A0E1BB │ │ │ │ │ +64BF36946520438D2EE72FA9EB1CEEDF56510AADA55A8DE280E23C904E0810FA │ │ │ │ │ +A3177CF684F06A4042DE4CD4AB21E2F0616153BEEE58EBBD89911FA43BC52969 │ │ │ │ │ +230C8137DB34C13E147B06C7A3875A931E1AC127E7D3EA0DF8346B6971F80901 │ │ │ │ │ +DC37F2DE1A0B81FD93CA3B5EB9B29ECABA1492901B1BA261DAB872FB3431C718 │ │ │ │ │ +9C9CDA7864908CD773864908DEB44E343221C2C4C335341789A46325D94C767C │ │ │ │ │ +740E3B60CE6D452A3A665967F568671FD7DD460B404B9C3D2EDCD47A336AA2C7 │ │ │ │ │ +BB0B1AC3823978F610629EF7AB526098A7EE7076F50A146D8134BA2DEC1B8ACF │ │ │ │ │ +68A7E4A9B7BE17FB71480516F2D6A8866E56CFD7C7A41311F48DDDD9887DACB8 │ │ │ │ │ +73FDAF5F25E956AFB0A9D530DE2E1128F006AAC9A78715BA2F90C8FED3729BFA │ │ │ │ │ +BDDD4098F870A27A91A0CB540D166FF86A442E95C9C361FD23378A2A138EAFB8 │ │ │ │ │ +D7050B486E1CB95068D890BCCD669456F3385C8F1793CE545099421368FE0F46 │ │ │ │ │ +53137AD2B65030B19CE7FF6B1669DB7A3C440AEF27149780E36C7097B7A8B71B │ │ │ │ │ +8789EECFA9A70B1F9695BB5D94E9A7D341291C1CA1BDEF4BE3EFCB8234CE9FFD │ │ │ │ │ +E1C4963CF919780129FA60162FEAA8AE97328F4BA14D949057A3EE74214F2D29 │ │ │ │ │ +51E7BE584446F6702F39957AE455CF8AF0C36AADAA39B53553D923CA5E9D4988 │ │ │ │ │ +76701B4F77DAE5185AC29900 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -5361,17 +5364,17 @@ │ │ │ │ │ /Fe load 0 Fe currentfont 91.25 scalefont put/FMat X/FBB │ │ │ │ │ X/IEn X │ │ │ │ │ %EndDVIPSBitmapFont │ │ │ │ │ /Ff 134[71 2[71 75 52 53 55 1[75 67 75 112 3[37 75 67 │ │ │ │ │ 41 61 75 60 1[65 13[75 2[92 11[103 16[67 67 67 2[37 46[{}25 │ │ │ │ │ 119.552 /CMBX12 rf /Fg 132[52 8[43 1[58 52 58 10[46 99[{}6 │ │ │ │ │ 90.9091 /CMBX10 rf /Fh 149[25 2[45 45 60[91 19[71 71 │ │ │ │ │ -17[71 1[71{}8 90.9091 /CMSY10 rf /Fi 134[48 23[45 19[83 │ │ │ │ │ -18[25 5[45 1[45 45 45 3[25 44[{}9 90.9091 /CMSL10 rf │ │ │ │ │ -/Fj 138[56 1[42 55 1[51 2[68 47 58 4[49 51 1[54 1[56 │ │ │ │ │ +17[71 1[71{}8 90.9091 /CMSY10 rf /Fi 138[51 6[51 8[40 │ │ │ │ │ +26[47 15[25 4[45 1[45 45 1[45 3[25 44[{}10 90.9091 /CMSL10 │ │ │ │ │ +rf /Fj 138[56 1[42 55 1[51 2[68 47 58 4[49 51 1[54 1[56 │ │ │ │ │ 97[{}11 90.9091 /CMCSC10 rf /Fk 163[47 77[35 14[{}2 66.4176 │ │ │ │ │ /CMSY8 rf /Fl 134[44 42 2[49 30 37 38 42 46 46 51 74 │ │ │ │ │ 23 42 1[28 46 42 28 42 46 42 42 46 12[65 1[66 11[59 62 │ │ │ │ │ 69 2[68 6[28 44[53 1[56 11[{}31 90.9091 /CMTI10 rf /Fm │ │ │ │ │ 133[48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 │ │ │ │ │ 48 48 48 48 48 48 48 48 48 1[48 1[48 1[48 48 48 48 48 │ │ │ │ │ 48 48 48 48 48 1[48 48 48 48 48 1[48 48 48 48 48 48 48 │ │ │ │ │ @@ -5498,17 +5501,17 @@ │ │ │ │ │ (\(e.g.,)i Fj(umfp)-6 b(a)n(ck)34 b Fn(and)j Fj(superlu)p │ │ │ │ │ Fn(\),)f(then)h(w)m(e)g(can)g(mo)s(dify)0 5272 y(the)31 │ │ │ │ │ b Fm(Chv)e Fn(ob)5 b(ject)31 b(to)g(handle)f(unequal)g(ro)m(ws)h(and)e │ │ │ │ │ (columns.)141 5407 y(During)h(a)h(factorization,)i(a)e(fron)m(t)f(has)h │ │ │ │ │ (to)g(tak)m(e)h(part)e(in)g(four)g(distinct)g(op)s(erations.)1927 │ │ │ │ │ 5656 y(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fn(2)p 136 100 1250 4 v │ │ │ │ │ -1431 w Fm(Chv)30 b Fi(:)40 b Fl(DRAFT)31 b Fi(Ma)m(y)g(1,)g(2024)p │ │ │ │ │ -2651 100 V 111 399 a Fn(1.)46 b(Assem)m(ble)39 b(en)m(tries)g(from)f │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fn(2)p 136 100 1243 4 v │ │ │ │ │ +1424 w Fm(Chv)30 b Fi(:)41 b Fl(DRAFT)30 b Fi(June)f(3,)i(2025)p │ │ │ │ │ +2658 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 │ │ │ │ │ @@ -5691,17 +5694,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 1250 4 v 1431 100 a Fm(Chv)29 │ │ │ │ │ -b Fi(:)41 b Fl(DRAFT)121 b Fi(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2604 100 V 1250 w Fn(3)0 399 y(of)38 b(comm)m(unication.)63 │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1243 4 v 1424 100 a Fm(Chv)29 │ │ │ │ │ +b Fi(:)41 b Fl(DRAFT)121 b Fi(June)30 b(3,)h(2025)p 2611 │ │ │ │ │ +100 V 1243 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 │ │ │ │ │ @@ -5770,17 +5773,17 @@ │ │ │ │ │ b Fm(int)i(*colind)29 b Fn(:)40 b(p)s(oin)m(ter)31 b(to)g(the)f(base)h │ │ │ │ │ (address)e(of)i(the)f Fm(int)g Fn(v)m(ector)i(that)f(con)m(tains)g │ │ │ │ │ (column)g(indices.)137 5407 y Fe(\210)45 b Fm(double)h(*entries)22 │ │ │ │ │ b Fn(:)37 b(p)s(oin)m(ter)23 b(to)h(the)g(base)g(address)e(of)i(the)g │ │ │ │ │ Fm(double)d Fn(v)m(ector)k(that)g(con)m(tains)f(the)g(en)m(tries.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fn(4)p 136 100 1250 4 v │ │ │ │ │ -1431 w Fm(Chv)30 b Fi(:)40 b Fl(DRAFT)31 b Fi(Ma)m(y)g(1,)g(2024)p │ │ │ │ │ -2651 100 V 137 399 a Fe(\210)45 b Fm(DV)i(wrkDV)29 b │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fn(4)p 136 100 1243 4 v │ │ │ │ │ +1424 w Fm(Chv)30 b Fi(:)41 b Fl(DRAFT)30 b Fi(June)f(3,)i(2025)p │ │ │ │ │ +2658 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 │ │ │ │ │ @@ -5840,17 +5843,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 1250 4 v 1431 100 a Fm(Chv)29 │ │ │ │ │ -b Fi(:)41 b Fl(DRAFT)121 b Fi(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2604 100 V 1250 w Fn(5)0 399 y Fc(1.2.2)112 b(Instance)38 │ │ │ │ │ +TeXDict begin 5 4 bop 91 100 1243 4 v 1424 100 a Fm(Chv)29 │ │ │ │ │ +b Fi(:)41 b Fl(DRAFT)121 b Fi(June)30 b(3,)h(2025)p 2611 │ │ │ │ │ +100 V 1243 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 │ │ │ │ │ @@ -5910,17 +5913,17 @@ │ │ │ │ │ Fl(double)k(pr)-5 b(e)g(cision)32 b(c)-5 b(omplex)30 │ │ │ │ │ b Fn(en)m(tries,)g(equal)f(to)g(one)g(half)g(the)f(n)m(um)m(b)s(er)227 │ │ │ │ │ 5256 y(of)j(double)f(precision)g(en)m(tries)h(that)g(are)g(stored.)227 │ │ │ │ │ 5407 y Fl(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fn(If)30 │ │ │ │ │ b Fm(chv)g Fn(is)g Fm(NULL)p Fn(,)g(an)g(error)g(message)h(is)g(prin)m │ │ │ │ │ (ted)f(and)g(zero)h(is)f(returned.)p eop end │ │ │ │ │ %%Page: 6 6 │ │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fn(6)p 136 100 1250 4 v │ │ │ │ │ -1431 w Fm(Chv)30 b Fi(:)40 b Fl(DRAFT)31 b Fi(Ma)m(y)g(1,)g(2024)p │ │ │ │ │ -2651 100 V 111 399 a Fn(8.)46 b Fm(double)g(*)i(Chv_entries)d(\()i(Chv) │ │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fn(6)p 136 100 1243 4 v │ │ │ │ │ +1424 w Fm(Chv)30 b Fi(:)41 b Fl(DRAFT)30 b Fi(June)f(3,)i(2025)p │ │ │ │ │ +2658 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 │ │ │ │ │ @@ -6000,18 +6003,18 @@ │ │ │ │ │ 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 1250 4 v 1431 100 a Fm(Chv)29 │ │ │ │ │ -b Fi(:)41 b Fl(DRAFT)121 b Fi(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2604 100 V 1250 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 │ │ │ │ │ +TeXDict begin 7 6 bop 91 100 1243 4 v 1424 100 a Fm(Chv)29 │ │ │ │ │ +b Fi(:)41 b Fl(DRAFT)121 b Fi(June)30 b(3,)h(2025)p 2611 │ │ │ │ │ +100 V 1243 w Fn(7)66 399 y(15.)46 b Fm(Chv_locationOfComplexEntr)o(y)c │ │ │ │ │ +(\()47 b(Chv)g(*chv,)g(int)g(irow,)f(int)h(jcol,)1611 │ │ │ │ │ 511 y(double)f(**ppReal,)g(double)g(**ppImag)f(\))j(;)227 │ │ │ │ │ 666 y Fn(This)29 b(metho)s(d)g(\014lls)h Fm(*ppReal)e │ │ │ │ │ Fn(with)h(a)h(p)s(oin)m(ter)g(to)h(the)f(real)g(part)g(and)f │ │ │ │ │ Fm(*ppImag)f Fn(with)h(a)h(p)s(oin)m(ter)g(to)h(the)227 │ │ │ │ │ 779 y(imaginary)37 b(part)g(of)f(the)h(en)m(try)f(in)g(ro)m(w)h │ │ │ │ │ Fm(irow)e Fn(and)h(column)g Fm(jcol)p Fn(.)58 b(Note,)39 │ │ │ │ │ b Fm(irow)c Fn(and)h Fm(jcol)f Fn(are)i Fl(lo)-5 b(c)g(al)227 │ │ │ │ │ @@ -6083,17 +6086,17 @@ │ │ │ │ │ b(,)33 b(the)f(w)m(orkspace)h(bu\013er)e(o)m(wned)h(b)m(y)f(the)h │ │ │ │ │ Fm(Chv)f Fn(ob)5 b(ject)33 b(is)f(sen)m(t)h(and)227 5253 │ │ │ │ │ y(receiv)m(ed.)227 5407 y Fl(Err)-5 b(or)34 b(che)-5 │ │ │ │ │ b(cking:)40 b Fn(If)30 b Fm(chv)g Fn(is)g Fm(NULL)p Fn(,)g(an)g(error)g │ │ │ │ │ (message)h(is)g(prin)m(ted)f(and)g(zero)h(is)f(returned.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 8 8 │ │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fn(8)p 136 100 1250 4 v │ │ │ │ │ -1431 w Fm(Chv)30 b Fi(:)40 b Fl(DRAFT)31 b Fi(Ma)m(y)g(1,)g(2024)p │ │ │ │ │ -2651 100 V 0 399 a Fc(1.2.4)112 b(Searc)m(h)38 b(metho)s(ds)111 │ │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fn(8)p 136 100 1243 4 v │ │ │ │ │ +1424 w Fm(Chv)30 b Fi(:)41 b Fl(DRAFT)30 b Fi(June)f(3,)i(2025)p │ │ │ │ │ +2658 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 │ │ │ │ │ @@ -6161,18 +6164,18 @@ │ │ │ │ │ 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 1250 4 v 1431 100 a Fm(Chv)29 │ │ │ │ │ -b Fi(:)41 b Fl(DRAFT)121 b Fi(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2604 100 V 1250 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 │ │ │ │ │ +TeXDict begin 9 8 bop 91 100 1243 4 v 1424 100 a Fm(Chv)29 │ │ │ │ │ +b Fi(:)41 b Fl(DRAFT)121 b Fi(June)30 b(3,)h(2025)p 2611 │ │ │ │ │ +100 V 1243 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 │ │ │ │ │ 737 y(not)35 b(in)g(the)g(real)g(en)m(tries,)i(i.e.,)g(if)e │ │ │ │ │ @@ -6255,17 +6258,17 @@ │ │ │ │ │ (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 1227 4 │ │ │ │ │ -v 1409 w Fm(Chv)30 b Fi(:)40 b Fl(DRAFT)30 b Fi(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2674 100 V 227 399 a Fl(Err)-5 b(or)47 b(che)-5 b(cking:)67 │ │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fn(10)p 182 100 1220 4 │ │ │ │ │ +v 1402 w Fm(Chv)30 b Fi(:)40 b Fl(DRAFT)30 b Fi(June)g(3,)h(2025)p │ │ │ │ │ +2681 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 │ │ │ │ │ @@ -6362,53 +6365,53 @@ │ │ │ │ │ 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 1227 4 v 1408 100 a Fm(Chv)30 │ │ │ │ │ -b Fi(:)40 b Fl(DRAFT)121 b Fi(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2581 100 V 1227 w Fn(11)227 399 y(call)e(to)g(assem)m(ble)g(en)m(tries) │ │ │ │ │ -g(in)e Fb(A)h Fn(\(from)g(the)g(p)s(encil)g Fb(A)15 b │ │ │ │ │ -Fn(+)g Fb(\033)s(B)5 b Fn(\))28 b(w)m(ould)f(ha)m(v)m(e)i │ │ │ │ │ -Fm(alpha[])46 b(=)i(\(1.0,0.0\))p Fn(;)26 b(to)227 511 │ │ │ │ │ -y(assem)m(ble)32 b(en)m(tries)f(in)f Fb(B)35 b Fn(\(from)30 │ │ │ │ │ -b(the)g(p)s(encil)h Fb(A)20 b Fn(+)g Fb(\033)s(B)5 b │ │ │ │ │ -Fn(\))30 b(w)m(ould)g(ha)m(v)m(e)i Fm(alpha[])23 b Fn(=)i(\()p │ │ │ │ │ -Fb(R)q(eal)r Fn(\()p Fb(\033)s Fn(\))p Fb(;)15 b(I)7 │ │ │ │ │ -b(mag)s Fn(\()p Fb(\033)s Fn(\)\).)227 659 y Fl(Err)-5 │ │ │ │ │ -b(or)32 b(che)-5 b(cking:)39 b Fn(If)28 b Fm(chv)p Fn(,)g │ │ │ │ │ -Fm(chvind)p Fn(,)f Fm(chvent)f Fn(or)j Fm(alpha)d Fn(is)i │ │ │ │ │ -Fm(NULL)p Fn(,)g(or)g(if)g Fm(ichv)f Fn(or)h Fm(chvsize)e │ │ │ │ │ -Fn(are)j(less)f(than)227 772 y(zero,)k(an)e(error)g(message)h(is)g │ │ │ │ │ -(prin)m(ted)f(and)g(the)g(program)g(exits.)111 954 y(2.)46 │ │ │ │ │ -b Fm(void)h(Chv_assembleChv)d(\()j(Chv)g(*chvJ,)f(Chv)h(*chvI)f(\))i(;) │ │ │ │ │ -227 1102 y Fn(This)33 b(metho)s(d)f(is)i(used)e(to)i(assem)m(ble)g(en)m │ │ │ │ │ -(tries)g(from)f(one)h Fm(Chv)e Fn(ob)5 b(ject)34 b(in)m(to)g(another.) │ │ │ │ │ -50 b(The)33 b(application)227 1215 y(is)d(during)f(a)i(factorization)i │ │ │ │ │ -(with)d(piv)m(oting,)h(p)s(ostp)s(oned)e(en)m(tries)i(from)f(the)g(c)m │ │ │ │ │ -(hildren)g(are)h(stored)f(in)g(the)227 1328 y Fm(chvI)47 │ │ │ │ │ -b(Chv)23 b Fn(ob)5 b(ject)26 b(and)e(need)g(to)h(b)s(e)f(assem)m(bled)h │ │ │ │ │ -(in)m(to)g(the)g(\014nal)f(w)m(orking)h(fron)m(t,)h(along)f(with)g(all) │ │ │ │ │ -g(up)s(dates)227 1441 y(from)34 b(the)g(descenden)m(ts)g(\(whic)m(h)f │ │ │ │ │ -(are)i(stored)f(in)f(the)h Fm(chvJ)47 b(Chv)33 b Fn(ob)5 │ │ │ │ │ -b(ject.)52 b(Note,)36 b(the)e(ro)m(w)g(and)f(column)227 │ │ │ │ │ -1554 y(indices)e(of)f Fm(chvI)g Fl(must)j(nest)d Fn(with)g(those)h(of)g │ │ │ │ │ -Fm(chvJ)p Fn(.)227 1701 y Fl(Err)-5 b(or)35 b(che)-5 │ │ │ │ │ -b(cking:)41 b Fn(If)30 b Fm(chvI)g Fn(or)h Fm(chvJ)e │ │ │ │ │ -Fn(is)i Fm(NULL)p Fn(,)f(or)h(if)f(their)h Fm(symflag)e │ │ │ │ │ -Fn(\014elds)h(are)i(not)f(iden)m(tical,)i(an)d(error)227 │ │ │ │ │ -1814 y(message)i(is)e(prin)m(ted)g(and)g(the)g(program)h(exits.)111 │ │ │ │ │ -1997 y(3.)46 b Fm(int)h(Chv_assemblePostponedData)41 │ │ │ │ │ -b(\()48 b(Chv)e(*newchv,)g(Chv)h(*oldchv,)e(Chv)i(*firstchild)e(\))j(;) │ │ │ │ │ -227 2144 y Fn(This)28 b(metho)s(d)g(is)g(used)f(to)i(assem)m(ble)h(a)e │ │ │ │ │ -Fm(Chv)g Fn(ob)5 b(ject)29 b(for)f(a)h(fron)m(t)f(\()p │ │ │ │ │ -Fm(oldchv)p Fn(\))f(along)j(with)e(an)m(y)g(p)s(ostp)s(oned)227 │ │ │ │ │ -2257 y(data)34 b(from)f(the)g(c)m(hildren)g(\(ob)5 b(jects)34 │ │ │ │ │ +TeXDict begin 11 10 bop 91 100 1220 4 v 1401 100 a Fm(Chv)30 │ │ │ │ │ +b Fi(:)40 b Fl(DRAFT)121 b Fi(June)30 b(3,)h(2025)p 2588 │ │ │ │ │ +100 V 1220 w Fn(11)227 399 y(call)e(to)g(assem)m(ble)g(en)m(tries)g(in) │ │ │ │ │ +e Fb(A)h Fn(\(from)g(the)g(p)s(encil)g Fb(A)15 b Fn(+)g │ │ │ │ │ +Fb(\033)s(B)5 b Fn(\))28 b(w)m(ould)f(ha)m(v)m(e)i Fm(alpha[])46 │ │ │ │ │ +b(=)i(\(1.0,0.0\))p Fn(;)26 b(to)227 511 y(assem)m(ble)32 │ │ │ │ │ +b(en)m(tries)f(in)f Fb(B)35 b Fn(\(from)30 b(the)g(p)s(encil)h │ │ │ │ │ +Fb(A)20 b Fn(+)g Fb(\033)s(B)5 b Fn(\))30 b(w)m(ould)g(ha)m(v)m(e)i │ │ │ │ │ +Fm(alpha[])23 b Fn(=)i(\()p Fb(R)q(eal)r Fn(\()p Fb(\033)s │ │ │ │ │ +Fn(\))p Fb(;)15 b(I)7 b(mag)s Fn(\()p Fb(\033)s Fn(\)\).)227 │ │ │ │ │ +659 y Fl(Err)-5 b(or)32 b(che)-5 b(cking:)39 b Fn(If)28 │ │ │ │ │ +b Fm(chv)p Fn(,)g Fm(chvind)p Fn(,)f Fm(chvent)f Fn(or)j │ │ │ │ │ +Fm(alpha)d Fn(is)i Fm(NULL)p Fn(,)g(or)g(if)g Fm(ichv)f │ │ │ │ │ +Fn(or)h Fm(chvsize)e Fn(are)j(less)f(than)227 772 y(zero,)k(an)e(error) │ │ │ │ │ +g(message)h(is)g(prin)m(ted)f(and)g(the)g(program)g(exits.)111 │ │ │ │ │ +954 y(2.)46 b Fm(void)h(Chv_assembleChv)d(\()j(Chv)g(*chvJ,)f(Chv)h │ │ │ │ │ +(*chvI)f(\))i(;)227 1102 y Fn(This)33 b(metho)s(d)f(is)i(used)e(to)i │ │ │ │ │ +(assem)m(ble)g(en)m(tries)g(from)f(one)h Fm(Chv)e Fn(ob)5 │ │ │ │ │ +b(ject)34 b(in)m(to)g(another.)50 b(The)33 b(application)227 │ │ │ │ │ +1215 y(is)d(during)f(a)i(factorization)i(with)d(piv)m(oting,)h(p)s │ │ │ │ │ +(ostp)s(oned)e(en)m(tries)i(from)f(the)g(c)m(hildren)g(are)h(stored)f │ │ │ │ │ +(in)g(the)227 1328 y Fm(chvI)47 b(Chv)23 b Fn(ob)5 b(ject)26 │ │ │ │ │ +b(and)e(need)g(to)h(b)s(e)f(assem)m(bled)h(in)m(to)g(the)g(\014nal)f(w) │ │ │ │ │ +m(orking)h(fron)m(t,)h(along)f(with)g(all)g(up)s(dates)227 │ │ │ │ │ +1441 y(from)34 b(the)g(descenden)m(ts)g(\(whic)m(h)f(are)i(stored)f(in) │ │ │ │ │ +f(the)h Fm(chvJ)47 b(Chv)33 b Fn(ob)5 b(ject.)52 b(Note,)36 │ │ │ │ │ +b(the)e(ro)m(w)g(and)f(column)227 1554 y(indices)e(of)f │ │ │ │ │ +Fm(chvI)g Fl(must)j(nest)d Fn(with)g(those)h(of)g Fm(chvJ)p │ │ │ │ │ +Fn(.)227 1701 y Fl(Err)-5 b(or)35 b(che)-5 b(cking:)41 │ │ │ │ │ +b Fn(If)30 b Fm(chvI)g Fn(or)h Fm(chvJ)e Fn(is)i Fm(NULL)p │ │ │ │ │ +Fn(,)f(or)h(if)f(their)h Fm(symflag)e Fn(\014elds)h(are)i(not)f(iden)m │ │ │ │ │ +(tical,)i(an)d(error)227 1814 y(message)i(is)e(prin)m(ted)g(and)g(the)g │ │ │ │ │ +(program)h(exits.)111 1997 y(3.)46 b Fm(int)h │ │ │ │ │ +(Chv_assemblePostponedData)41 b(\()48 b(Chv)e(*newchv,)g(Chv)h │ │ │ │ │ +(*oldchv,)e(Chv)i(*firstchild)e(\))j(;)227 2144 y Fn(This)28 │ │ │ │ │ +b(metho)s(d)g(is)g(used)f(to)i(assem)m(ble)h(a)e Fm(Chv)g │ │ │ │ │ +Fn(ob)5 b(ject)29 b(for)f(a)h(fron)m(t)f(\()p Fm(oldchv)p │ │ │ │ │ +Fn(\))f(along)j(with)e(an)m(y)g(p)s(ostp)s(oned)227 2257 │ │ │ │ │ +y(data)34 b(from)f(the)g(c)m(hildren)g(\(ob)5 b(jects)34 │ │ │ │ │ b(are)f(held)g(in)f(a)i(list)f(where)g Fm(firstchild)d │ │ │ │ │ Fn(is)j(the)g(head\))g(in)m(to)h(a)g Fm(Chv)227 2370 │ │ │ │ │ y Fn(ob)5 b(ject)25 b Fm(newchv)p Fn(.)37 b(The)24 b(return)e(v)-5 │ │ │ │ │ b(alue)25 b(is)f(the)g(n)m(um)m(b)s(er)f(of)h(dela)m(y)m(ed)h(ro)m(ws)f │ │ │ │ │ (and)g(columns)f(from)h(the)g(c)m(hildren)227 2483 y(fron)m(ts)31 │ │ │ │ │ b(whic)m(h)f(are)g(found)g(in)g(the)g(leading)h(ro)m(ws)g(and)e │ │ │ │ │ (columns)h(of)h(the)g(c)m(hevron.)227 2631 y Fl(Err)-5 │ │ │ │ │ @@ -6460,17 +6463,17 @@ │ │ │ │ │ (functionalit)m(y)-8 b(,)33 b(where)d(if)h(a)g(small)g(or)g(zero)g(en)m │ │ │ │ │ (try)g(is)g(found)e(in)i(the)g(diagonal)g(elemen)m(t)227 │ │ │ │ │ 5294 y(that)45 b(is)f(to)h(b)s(e)f(eliminated,)49 b(some)c(action)h │ │ │ │ │ (can)e(b)s(e)g(tak)m(en.)83 b(The)44 b(return)f(v)-5 │ │ │ │ │ b(alue)45 b(is)f(the)h(n)m(um)m(b)s(er)e(of)227 5407 │ │ │ │ │ y(eliminated)32 b(ro)m(ws)e(and)g(columns.)p eop end │ │ │ │ │ %%Page: 12 12 │ │ │ │ │ -TeXDict begin 12 11 bop 0 100 a Fn(12)p 182 100 1227 │ │ │ │ │ -4 v 1409 w Fm(Chv)30 b Fi(:)40 b Fl(DRAFT)30 b Fi(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2674 100 V 227 399 a Fl(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fn(12)p 182 100 1220 │ │ │ │ │ +4 v 1402 w Fm(Chv)30 b Fi(:)40 b Fl(DRAFT)30 b Fi(June)g(3,)h(2025)p │ │ │ │ │ +2681 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 │ │ │ │ │ @@ -6538,17 +6541,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 1227 4 v 1408 100 a Fm(Chv)30 │ │ │ │ │ -b Fi(:)40 b Fl(DRAFT)121 b Fi(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2581 100 V 1227 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 1220 4 v 1401 100 a Fm(Chv)30 │ │ │ │ │ +b Fi(:)40 b Fl(DRAFT)121 b Fi(June)30 b(3,)h(2025)p 2588 │ │ │ │ │ +100 V 1220 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 │ │ │ │ │ @@ -6628,17 +6631,17 @@ │ │ │ │ │ b(che)-5 b(cking:)45 b Fn(If)32 b Fm(chv)g Fn(or)g Fm(dvec)g │ │ │ │ │ Fn(is)h Fm(NULL)e Fn(or)i(if)f Fm(length)f Fn(is)i(less)g(than)f(the)h │ │ │ │ │ (n)m(um)m(b)s(er)e(of)i(en)m(tries)g(to)h(b)s(e)227 5294 │ │ │ │ │ y(copied,)k(or)d(if)g Fm(copyflag)e Fn(or)j Fm(storeflag)c │ │ │ │ │ Fn(is)k(v)-5 b(alid,)37 b(an)e(error)g(message)i(is)e(prin)m(ted)g(and) │ │ │ │ │ g(the)g(program)227 5407 y(exits.)p eop end │ │ │ │ │ %%Page: 14 14 │ │ │ │ │ -TeXDict begin 14 13 bop 0 100 a Fn(14)p 182 100 1227 │ │ │ │ │ -4 v 1409 w Fm(Chv)30 b Fi(:)40 b Fl(DRAFT)30 b Fi(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2674 100 V 111 399 a Fn(4.)46 b Fm(int)h(Chv_copyBigEntriesToVecto)o(r) │ │ │ │ │ +TeXDict begin 14 13 bop 0 100 a Fn(14)p 182 100 1220 │ │ │ │ │ +4 v 1402 w Fm(Chv)30 b Fi(:)40 b Fl(DRAFT)30 b Fi(June)g(3,)h(2025)p │ │ │ │ │ +2681 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 │ │ │ │ │ @@ -6726,17 +6729,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 1227 4 v 1408 100 a Fm(Chv)30 │ │ │ │ │ -b Fi(:)40 b Fl(DRAFT)121 b Fi(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2581 100 V 1227 w Fn(15)227 399 y Fl(Err)-5 b(or)35 b(che)-5 │ │ │ │ │ +TeXDict begin 15 14 bop 91 100 1220 4 v 1401 100 a Fm(Chv)30 │ │ │ │ │ +b Fi(:)40 b Fl(DRAFT)121 b Fi(June)30 b(3,)h(2025)p 2588 │ │ │ │ │ +100 V 1220 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 │ │ │ │ │ @@ -6806,17 +6809,17 @@ │ │ │ │ │ Fn(is)i(p)s(ositiv)m(e,)k(the)41 b(\014rst)g Fm(shift)f │ │ │ │ │ Fn(c)m(hevrons)i(are)g(remo)m(v)m(ed)g(from)f(the)h(c)m(hevron.)75 │ │ │ │ │ b(If)41 b Fm(shift)f Fn(is)227 5407 y(negativ)m(e,)j(the)38 │ │ │ │ │ b Fm(shift)f Fn(previous)g(c)m(hevrons)h(are)h(prep)s(ended)d(to)i(the) │ │ │ │ │ h(c)m(hevron.)64 b(This)37 b(is)h(a)g(dangerous)p eop │ │ │ │ │ end │ │ │ │ │ %%Page: 16 16 │ │ │ │ │ -TeXDict begin 16 15 bop 0 100 a Fn(16)p 182 100 1227 │ │ │ │ │ -4 v 1409 w Fm(Chv)30 b Fi(:)40 b Fl(DRAFT)30 b Fi(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2674 100 V 227 399 a Fn(metho)s(d)j(as)h(it)g(c)m(hanges)h(the)e(state) │ │ │ │ │ +TeXDict begin 16 15 bop 0 100 a Fn(16)p 182 100 1220 │ │ │ │ │ +4 v 1402 w Fm(Chv)30 b Fi(:)40 b Fl(DRAFT)30 b Fi(June)g(3,)h(2025)p │ │ │ │ │ +2681 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 │ │ │ │ │ @@ -6870,21 +6873,21 @@ │ │ │ │ │ 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 1227 4 v 1408 100 a Fm(Chv)30 │ │ │ │ │ -b Fi(:)40 b Fl(DRAFT)121 b Fi(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2581 100 V 1227 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 │ │ │ │ │ +TeXDict begin 17 16 bop 91 100 1220 4 v 1401 100 a Fm(Chv)30 │ │ │ │ │ +b Fi(:)40 b Fl(DRAFT)121 b Fi(June)30 b(3,)h(2025)p 2588 │ │ │ │ │ +100 V 1220 w Fn(17)0 399 y Fc(1.2.12)113 b(IO)37 b(metho)s(ds)111 │ │ │ │ │ +592 y Fn(1.)46 b Fm(void)h(Chv_writeForHumanEye)42 b(\()48 │ │ │ │ │ +b(Chv)f(*chv,)f(FILE)h(*fp)f(\))i(;)227 739 y Fn(This)30 │ │ │ │ │ +b(metho)s(d)g(writes)g(a)h Fm(Chv)e Fn(ob)5 b(ject)32 │ │ │ │ │ +b(to)f(a)f(\014le)h(in)f(an)g(easily)i(readable)f(format.)227 │ │ │ │ │ 887 y Fl(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fn(If)30 │ │ │ │ │ b Fm(chv)g Fn(or)g Fm(fp)g Fn(are)h Fm(NULL)p Fn(,)e(an)h(error)g │ │ │ │ │ (message)i(is)e(prin)m(ted)g(and)g(zero)h(is)g(returned.)111 │ │ │ │ │ 1068 y(2.)46 b Fm(void)h(Chv_writeForMatlab)c(\()k(Chv)g(*chv,)f(char)h │ │ │ │ │ (*chvname,)e(FILE)i(*fp)g(\))g(;)227 1215 y Fn(This)33 │ │ │ │ │ b(metho)s(d)f(writes)i(a)f Fm(Chv)g Fn(ob)5 b(ject)34 │ │ │ │ │ b(to)g(a)f(\014le)h(in)f(a)g(matlab)h(format.)50 b(F)-8 │ │ │ │ │ @@ -6940,17 +6943,17 @@ │ │ │ │ │ Fn(is)h(\(1.0,0.0\),)j(when)c(w)m(e)h(are)g(just)g(loading)g(matrix)g │ │ │ │ │ (en)m(tries)h(in)m(to)g(a)427 5294 y(fron)m(t.)41 b(Ho)m(w)m(ev)m(er,) │ │ │ │ │ 33 b(when)c(w)m(e)i(factor)g Fb(A)20 b Fn(+)g Fb(\013B)5 │ │ │ │ │ b Fn(,)31 b(the)f(en)m(tries)h(of)g Fb(B)j Fn(will)d(b)s(e)f(loaded)h │ │ │ │ │ (with)f Fm(alpha)e Fn(set)427 5407 y(equal)j(to)g Fb(\013)p │ │ │ │ │ Fn([0)c(:)e(1].)p eop end │ │ │ │ │ %%Page: 18 18 │ │ │ │ │ -TeXDict begin 18 17 bop 0 100 a Fn(18)p 182 100 1227 │ │ │ │ │ -4 v 1409 w Fm(Chv)30 b Fi(:)40 b Fl(DRAFT)30 b Fi(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2674 100 V 111 399 a Fn(2.)46 b Fm(test_assmbChv)e(msglvl)j(msgFile)e │ │ │ │ │ +TeXDict begin 18 17 bop 0 100 a Fn(18)p 182 100 1220 │ │ │ │ │ +4 v 1402 w Fm(Chv)30 b Fi(:)40 b Fl(DRAFT)30 b Fi(June)g(3,)h(2025)p │ │ │ │ │ +2681 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) │ │ │ │ │ @@ -7027,18 +7030,18 @@ │ │ │ │ │ 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 1227 4 v 1408 100 a Fm(Chv)30 │ │ │ │ │ -b Fi(:)40 b Fl(DRAFT)121 b Fi(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2581 100 V 1227 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 │ │ │ │ │ +TeXDict begin 19 18 bop 91 100 1220 4 v 1401 100 a Fm(Chv)30 │ │ │ │ │ +b Fi(:)40 b Fl(DRAFT)121 b Fi(June)30 b(3,)h(2025)p 2588 │ │ │ │ │ +100 V 1220 w Fn(19)337 399 y Fe(\210)45 b Fn(The)35 b │ │ │ │ │ +Fm(storeflag)e Fn(parameter)j(is)g(the)g(storage)h(\015ag,)g(to)g │ │ │ │ │ (store)f(b)m(y)f(ro)m(ws,)i(use)f Fm(SPOOLES)p 3528 399 │ │ │ │ │ 29 4 v 32 w(BY)p 3656 399 V 34 w(ROWS)p Fn(,)427 511 │ │ │ │ │ y(to)31 b(store)g(b)m(y)g(columns,)f(use)g Fm(SPOOLES)p │ │ │ │ │ 1766 511 V 32 w(BY)p 1894 511 V 34 w(COLUMNS)p Fn(.)337 │ │ │ │ │ 651 y Fe(\210)45 b Fn(The)30 b Fm(seed)f Fn(parameter)i(is)g(a)f │ │ │ │ │ (random)g(n)m(um)m(b)s(er)f(seed.)111 853 y(4.)46 b Fm │ │ │ │ │ (test_copyBigEntriesToVect)o(or)c(msglvl)k(msgFile)g(nD)h(nU)g(type)g │ │ │ │ │ @@ -7113,17 +7116,17 @@ │ │ │ │ │ Fn(parameter)j(determines)f(the)h(message)g(\014le)f(|)h(if)f │ │ │ │ │ Fm(msgFile)e Fn(is)i Fm(stdout)p Fn(,)g(then)g(the)427 │ │ │ │ │ 5294 y(message)27 b(\014le)f(is)g Fl(stdout)p Fn(,)i(otherwise)e(a)h │ │ │ │ │ (\014le)f(is)f(op)s(ened)g(with)h Fl(app)-5 b(end)28 │ │ │ │ │ b Fn(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 5407 │ │ │ │ │ y(data.)p eop end │ │ │ │ │ %%Page: 20 20 │ │ │ │ │ -TeXDict begin 20 19 bop 0 100 a Fn(20)p 182 100 1227 │ │ │ │ │ -4 v 1409 w Fm(Chv)30 b Fi(:)40 b Fl(DRAFT)30 b Fi(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2674 100 V 337 399 a Fe(\210)45 b Fn(The)30 b Fm(nD)g │ │ │ │ │ +TeXDict begin 20 19 bop 0 100 a Fn(20)p 182 100 1220 │ │ │ │ │ +4 v 1402 w Fm(Chv)30 b Fi(:)40 b Fl(DRAFT)30 b Fi(June)g(3,)h(2025)p │ │ │ │ │ +2681 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 │ │ │ │ │ @@ -7195,18 +7198,18 @@ │ │ │ │ │ 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 1227 4 v 1408 100 a Fm(Chv)30 │ │ │ │ │ -b Fi(:)40 b Fl(DRAFT)121 b Fi(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2581 100 V 1227 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 │ │ │ │ │ +TeXDict begin 21 20 bop 91 100 1220 4 v 1401 100 a Fm(Chv)30 │ │ │ │ │ +b Fi(:)40 b Fl(DRAFT)121 b Fi(June)30 b(3,)h(2025)p 2588 │ │ │ │ │ +100 V 1220 w Fn(21)337 399 y Fe(\210)45 b Fn(The)33 b │ │ │ │ │ +Fm(msgFile)e Fn(parameter)j(determines)f(the)h(message)g(\014le)f(|)h │ │ │ │ │ (if)f Fm(msgFile)e Fn(is)i Fm(stdout)p Fn(,)g(then)g(the)427 │ │ │ │ │ 511 y(message)27 b(\014le)f(is)g Fl(stdout)p Fn(,)i(otherwise)e(a)h │ │ │ │ │ (\014le)f(is)f(op)s(ened)g(with)h Fl(app)-5 b(end)28 │ │ │ │ │ b Fn(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 624 │ │ │ │ │ y(data.)337 772 y Fe(\210)45 b Fn(The)30 b Fm(nD)g Fn(parameter)h(is)f │ │ │ │ │ (the)h(n)m(um)m(b)s(er)e(of)h(ro)m(ws)h(and)e(columns)h(in)h(the)f │ │ │ │ │ (\(1,1\))i(blo)s(c)m(k.)337 920 y Fe(\210)45 b Fn(The)30 │ │ │ │ │ @@ -7275,17 +7278,17 @@ │ │ │ │ │ (\(1,1\))i(blo)s(c)m(k.)337 5259 y Fe(\210)45 b Fn(The)30 │ │ │ │ │ b Fm(nU)g Fn(parameter)h(is)f(the)h(n)m(um)m(b)s(er)e(of)h(columns)g │ │ │ │ │ (in)g(the)h(\(1,2\))h(blo)s(c)m(k.)337 5407 y Fe(\210)45 │ │ │ │ │ b Fn(The)30 b Fm(type)f Fn(parameter)i(denotes)g(the)g(t)m(yp)s(e)f(of) │ │ │ │ │ h(en)m(tries)g(|)f Fm(SPOOLES)p 2818 5407 V 32 w(REAL)g │ │ │ │ │ Fn(or)g Fm(SPOOLES)p 3519 5407 V 32 w(COMPLEX)p eop end │ │ │ │ │ %%Page: 22 22 │ │ │ │ │ -TeXDict begin 22 21 bop 0 100 a Fn(22)p 182 100 1227 │ │ │ │ │ -4 v 1409 w Fm(Chv)30 b Fi(:)40 b Fl(DRAFT)30 b Fi(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2674 100 V 337 399 a Fe(\210)45 b Fn(The)20 b Fm(symflag)e │ │ │ │ │ +TeXDict begin 22 21 bop 0 100 a Fn(22)p 182 100 1220 │ │ │ │ │ +4 v 1402 w Fm(Chv)30 b Fi(:)40 b Fl(DRAFT)30 b Fi(June)g(3,)h(2025)p │ │ │ │ │ +2681 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 │ │ │ │ │ @@ -7360,18 +7363,18 @@ │ │ │ │ │ 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 1227 4 v 1408 100 a Fm(Chv)30 │ │ │ │ │ -b Fi(:)40 b Fl(DRAFT)121 b Fi(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2581 100 V 1227 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 │ │ │ │ │ +TeXDict begin 23 22 bop 91 100 1220 4 v 1401 100 a Fm(Chv)30 │ │ │ │ │ +b Fi(:)40 b Fl(DRAFT)121 b Fi(June)30 b(3,)h(2025)p 2588 │ │ │ │ │ +100 V 1220 w Fn(23)337 399 y Fe(\210)45 b Fn(The)30 b │ │ │ │ │ +Fm(ncolU)f Fn(parameter)i(is)f(the)h(n)m(um)m(b)s(er)e(of)i(columns)f │ │ │ │ │ (in)g Fb(U)10 b Fn(.)337 545 y Fe(\210)45 b Fn(The)30 │ │ │ │ │ b Fm(nrowD)f Fn(parameter)i(is)f(the)h(n)m(um)m(b)s(er)e(of)i(ro)m(ws)f │ │ │ │ │ (and)g(columns)g(in)g Fb(D)s Fn(.)337 691 y Fe(\210)45 │ │ │ │ │ b Fn(The)30 b Fm(nentU)f Fn(parameter)i(is)f(the)h(n)m(um)m(b)s(er)e │ │ │ │ │ (en)m(tries)i(in)f Fb(U)10 b Fn(,)31 b(ignored)f(if)h │ │ │ │ │ Fm(sparsityflag)44 b(=)j(0)p Fn(.)337 837 y Fe(\210)e │ │ │ │ │ Fn(The)30 b Fm(offset)f Fn(parameter)i(is)f(the)h(o\013set)g(of)g │ │ │ │ │ ├── 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 May 1, 2024 │ │ │ │ │ │ + 2 Chv : DRAFT June 3, 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 May 1, 2024 3 │ │ │ │ │ │ + Chv : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 4 Chv : DRAFT June 3, 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 May 1, 2024 5 │ │ │ │ │ │ + Chv : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 6 Chv : DRAFT June 3, 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 May 1, 2024 9 │ │ │ │ │ │ + Chv : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 10 Chv : DRAFT June 3, 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 May 1, 2024 11 │ │ │ │ │ │ + Chv : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 12 Chv : DRAFT June 3, 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 May 1, 2024 13 │ │ │ │ │ │ + Chv : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 14 Chv : DRAFT June 3, 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 May 1, 2024 15 │ │ │ │ │ │ + Chv : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 16 Chv : DRAFT June 3, 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 May 1, 2024 17 │ │ │ │ │ │ + Chv : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 18 Chv : DRAFT June 3, 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 May 1, 2024 19 │ │ │ │ │ │ + Chv : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 20 Chv : DRAFT June 3, 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 May 1, 2024 21 │ │ │ │ │ │ + Chv : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 22 Chv : DRAFT June 3, 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 May 1, 2024 23 │ │ │ │ │ │ + Chv : DRAFT June 3, 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.05.01:0544 │ │ │ │ │ +%DVIPSSource: TeX output 2025.06.03:1221 │ │ │ │ │ %%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,21 +1760,22 @@ │ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ │ /UnderlineThickness 50 def │ │ │ │ │ end readonly def │ │ │ │ │ /Encoding 256 array │ │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ │ dup 44 /comma put │ │ │ │ │ dup 48 /zero put │ │ │ │ │ -dup 49 /one put │ │ │ │ │ dup 50 /two put │ │ │ │ │ -dup 52 /four put │ │ │ │ │ +dup 51 /three put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 77 /M put │ │ │ │ │ -dup 97 /a put │ │ │ │ │ -dup 121 /y put │ │ │ │ │ +dup 74 /J put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ +dup 110 /n put │ │ │ │ │ +dup 117 /u put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ │ @@ -1955,68 +1956,70 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004ACD1870 │ │ │ │ │ -A5EA947858F5795870BFE1343AD803FB854BF8F5A4E794E8EC57BE41DB5B8734 │ │ │ │ │ -13E47950F29A81EA0C81EA798863883D7F41F78325CA190CBBFFE822AE494550 │ │ │ │ │ -4BE83703071FC9512D128927AF3F63CEF8F86ABE1E15D7B4DDD39576E7DFF45E │ │ │ │ │ -3CB4115AAB1830DE8647B915DB4BEBEB5235C281E098B899BAB951D8D5798F01 │ │ │ │ │ -7F7C47336D31438E5126738AFEAB29E9A7CBE06DE4DD604477B542D2620DFD58 │ │ │ │ │ -28FE34238572F23C5A8EB7ACEE1E154DA13FC1A5AA67A3BA8C5CDFB2B80312C9 │ │ │ │ │ -BC9FAE56D08DDFA9498E6EF0D0F6BD18B3923E0B670B0740528BC843610736CB │ │ │ │ │ -80228C105C2F72C3C22D610C3D8C268DEEA2AEEE3221E198E79FE2966487360C │ │ │ │ │ -84AE08AC326F48B21447652121B1EB68AF857B8628F27BB4ED00F273E0DD044A │ │ │ │ │ -7D11A5BFAAC0A82328444CC9DD90167681B07D55CE28655F40C21250A226DEAB │ │ │ │ │ -2D46FFB680CB9242BE192AC0E55A44D45709FA6DE638C130D92C4E9B07BC3D61 │ │ │ │ │ -25CC2F0A7ED4F3574242FFE4461272EB1401266EEF551E0E2B0EF51FA8F250EC │ │ │ │ │ -FD9AFB6F5A0CC442B566BC24400133E3E9B9A9FC801CEF284FD2B3ECA43421FA │ │ │ │ │ -51E5D1EFE7BEAA96658362C438A0A5A6DCBC664A85EF88037B42355195B9D19C │ │ │ │ │ -7961D5F63B123451B298CD52C144FCD4F3641A823FBA14605E2DFD845E89102C │ │ │ │ │ -4E345CFD80E3EE6F097095A84C941FFC91B234F3615E4EE4C5D564284656E364 │ │ │ │ │ -AB9C4D1DE05F8FD065CA6064893F0CF3A3A501D59EF6568D05D818A010D06518 │ │ │ │ │ -E2C20418ADD1E652867F265084A27A5FE0C32213C59FFC3A84EDC89382521E5B │ │ │ │ │ -8AF66D76601F83C5C33CC9CF968C77B66F1FA074AC3DAD8E453C9264D03969EF │ │ │ │ │ -9E387BB3BEAA4BF0A9D88BA2CE6094E8996A3752A657E322A57AF006444BF516 │ │ │ │ │ -501C43CAA1BA7F16A3B6E4D3EBDECCCC19564DF18FB68194C132238A5441A21A │ │ │ │ │ -F52285CA1CA94A4BEC61EB509FA35EA5E393D662D938F4291F37EB7C2D5815BE │ │ │ │ │ -446813E1CFD06FFFFF2C4355C9DAFA48E765F4CC5DE4B9E37CFFB75E7A0B6F4B │ │ │ │ │ -4E412496F9C27DF4BDD90A869F0EBD81A57AE0B84051450A5A3E06CB9930DB2C │ │ │ │ │ -7C2DDB774BE870AEFCC9F4F067BE243FF3FD4B5C71B96C607DC4975973AF2650 │ │ │ │ │ -E7DF2BE3523A370EEDD07B5456B96E372ED10510CE677C044E609F21E93652FD │ │ │ │ │ -33CE612F587530D12214A3719CDB170C315B5D8763D5D4C67B5CAE90309E77AC │ │ │ │ │ -B45EB356C13A7BDE0D7320A9849CA357E30D7CF1085FFD70071932C3180AFC28 │ │ │ │ │ -B093016BA3F49A3878C34BB4A8727A441EB6CFC1A73F2313A7BF8D32EDF27E62 │ │ │ │ │ -EBEBC058FBA80B136FD2DE05C673B66482224ECEC63EDFB519AC13B5CC6624A6 │ │ │ │ │ -B3FD79037DA3851E93A386115852DBA88B176F21EDDB5386DC7C993C4210B28F │ │ │ │ │ -438131A586E34A09724E7CE60139F8247BFF14D2674805B3BD454C134728A43E │ │ │ │ │ -139E0AF71A7AC5CE42041EC83FD454B00AD29959FCF007789FFAF2D3492DCA4B │ │ │ │ │ -566EAFE97591ABC51CD0CD9BCD64E285FB823E41AA817E96B2B224005DAA4E15 │ │ │ │ │ -2141DB436B9D3FBA4EE4C876FD19A2E5133106FE2B9F704CB9614FCDC91B7950 │ │ │ │ │ -57053F45A5ED993B48189AAFAD5289F97AE2B0AEB5606579F6BD75F743EDB5B6 │ │ │ │ │ -5AA8F8A64CE507A47325081B3A013DB1BD596CDD3A83D2F29B070D6F9C57496E │ │ │ │ │ -14DF3F0F731C3BB00F2CE3D4BBACF1320322195D1DEA7A545BB4725BD1C6EC3D │ │ │ │ │ -63250C72B897741F8599D9D9BD2FB50EC80EFF2ECD6CE6603E95AABB45462ACF │ │ │ │ │ -12B005EE5979B6B05BCE9B97061686102349142A3CCC26D57F2A3283DD8B6E2A │ │ │ │ │ -98885E48C0D4A1A5C9612EDCB3B3D265E9B8CCCCA5D99F07F96C15B27D6A161F │ │ │ │ │ -936599E503C2859927201CACC31581AB7AB84F9EC9FFADC239F01DCC55940AB7 │ │ │ │ │ -FA884AA1EB6494C8E53DAD66E75A317428ACF9D943A74683BF547958F67D9E36 │ │ │ │ │ -F985EED50DEBCF255756A821927CB73848DCF167E96E975E959DE27FE7BA4FBA │ │ │ │ │ -D0EFC003F019D87572D6F9C73FC5B880C3EEDB7EF98E5EC3D25D6FE0015A6590 │ │ │ │ │ -E3C6EE632D7F6558B914609A8829CD1DEAB83A3F1207D5C3AAC9EAEA9DE1B4F8 │ │ │ │ │ -2375C5D4F630BCE13475F941ED2324D2CD4DCF2285298EAA4FFF89433D853860 │ │ │ │ │ -A974A9FC0808580FBDE7D02EDBB3D8C65BD3109AE8B359E96BFB7E21C696F440 │ │ │ │ │ -312B0CCAD810BF070DF8FC281E8198EB20A7FF9C9BCD291D74BC75EE46799485 │ │ │ │ │ -1AB2AE36B7E525034D146A856AF3BD9057A0033C08B606B89DD130548950C93D │ │ │ │ │ -94A8C92C47A34A791B1C108D2F36E899B79358B8081CCFC3D1A2F0521E4E2AE4 │ │ │ │ │ -7F500D6F2A53E5393E44201287225912590ABC738E8726622B67C3425639CCFB │ │ │ │ │ -F450B78A4918 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004B9BA1CC │ │ │ │ │ +580D3C6BDA4DC1B80B4365F1C80512453FC5316EC2D928FB731C3D6403E3C18B │ │ │ │ │ +E8424D644DF5E9A2134229C5C91CA68DB8E85BA2BB40F538F585DA6FA4037718 │ │ │ │ │ +B8053EBBA1E765346BCD5BDAA6C38115D31611D8A87A2238C145F2DA2F92E4DF │ │ │ │ │ +3987BD9C4D2A3D460E8941A68B125BCD9EE4F9FD262C4C8A71F47A2C81975635 │ │ │ │ │ +F1B981C274C53FA2ACCDE4C9D0A7C62D6C1EFF91CFC6712CA6A9F333C9564FCB │ │ │ │ │ +2A70F0AD715A79B10A08AB069E2A3C93BC0AED19D0CA10134B8DDDE8AF548DB2 │ │ │ │ │ +3A4AAA9C29682CF135BB767DAA16169A127EB50A7EECEB6480CF56A7D0F8AC56 │ │ │ │ │ +4A5090B3D75A790372886AF568D94C8165975A05BFBFDF1FFBA45F70700BB9E0 │ │ │ │ │ +57F3249EF9E9C8AD9CBCF6E4FD592DC4CDD2D7864F7C8A3FA6FC44C25C0CE7E1 │ │ │ │ │ +299F8A90B32B75DEA28917531621E1E7E0ECEE9E01665DEE99FBCF3EC3F30686 │ │ │ │ │ +513D7CBA745E660502603865D5A3E82D24B3F94B2884B21DC53AED87F49380E0 │ │ │ │ │ +68EE79C580931308DA762670C1F86F07FFB479773CD9C5DE6F22980DEC973D1C │ │ │ │ │ +A1E162D73932561BAAB24DE51DC8708291B666B36BABCA1FEDB6DD9C22572914 │ │ │ │ │ +7194DA044319F362452D53DD4D9A59134838E540F1E23805CEF53FF4F7519385 │ │ │ │ │ +1FAE3061F94369FEB1232BDA2E2A281E6972FB4524EFA37A598E7CDC097683EA │ │ │ │ │ +1B609952AEC0799B4711AAAB22D6B1D5CC729DE70897FDDC48AF0A12E40FFE30 │ │ │ │ │ +6528C601E68E8CFA4BBF897CF89DB712DE108DD1F084EFD917BFD9A70A74EB8F │ │ │ │ │ +D0D5B43CCC30373A5E871F18A969D01C69C2B4377622A0C8C4D7C4C28DDE5586 │ │ │ │ │ +BD17D5D640A6F396BD41993BD1932EE10953847F82F7BB36480B67A4F69F0763 │ │ │ │ │ +69423D1803B7BB60594ABEEE9578076639B84D8323F56104438803D45402FEE3 │ │ │ │ │ +045DAB16C4459DA9BBE01D0385CC771FB8DABDD8A9D280C18553F92FE6591CFD │ │ │ │ │ +26B82F28E6673BD823598D3F6CE03BEE04D9A21ED908DFC4F640227C148F133D │ │ │ │ │ +D32113275297C16EBCC9028AFD9102DE50E9CF67E7CF8C42BB8E73D1DAF8A5E2 │ │ │ │ │ +EF5979426229664A990DEF980A7038D2F229789D4F6EDBE1FB81BEC1A1BB14D7 │ │ │ │ │ +882515C62660E8877BE942712D57B86A2E19995AF087DECB7FD5208583C020AE │ │ │ │ │ +FEC86A2826530AD855006225300E4655F443C9360A8BAC96B5B096DDC9B12EDF │ │ │ │ │ +C862215AD6C432CF345FE701757E4EBB8C65F46912CB0F4DEF53672F7298D8F7 │ │ │ │ │ +EE51A9C5DE689A8D36956B7F0410893C0998DB03B73B4024CB046F8F6B32E07F │ │ │ │ │ +CD28A68AFB7152E45F1021DCD520D8A429FCDCA4B8054BAF0B48C4443280F198 │ │ │ │ │ +3360B078E6DEC37772DA8B629CFFD1534E8AA10E26B0BC58E92B9BF280C8EE45 │ │ │ │ │ +618EECDE904249F5A2010DC55D1028DFF4F058260B2B0A46541D6157970F44BD │ │ │ │ │ +D7483802D56A81184119DDBC914E8E394CBEEB506B61BB1CE2A3465252E5D8A3 │ │ │ │ │ +6BDD2D067E69D4ECEFC7D5568378F5F8B38EAFF138014185FE19DF7358A7A780 │ │ │ │ │ +3BE0E2CCD1561113F2F2319BDB503230DD0866121604710CEBBAA659ABFC010B │ │ │ │ │ +5CC40E5807F461D87E75BDC6AD96BCEF62AF668D48D7A76D08B57650F35CF609 │ │ │ │ │ +C0F791AEBEB75E29FA69596BAB419804AECE0F0238AAE64A6C13A22EBF4E3EAC │ │ │ │ │ +3570DECE85F54064486B2364D63E94FEB7C16350CDA318510A45C8848DB470ED │ │ │ │ │ +BFAFD2365681D65CFF3E6C1B4B7C8AE3066F96E819D05B97F3A6C2BFF8A72978 │ │ │ │ │ +EEB7F632FF604AD003A3CCA5A0465D53033A646E8082D3491EDECA3DA1A0E1BB │ │ │ │ │ +64BF36946520438D2EE72FA9EB1CEEDF56510AADA55A8DE280E23C904E0810FA │ │ │ │ │ +A3177CF684F06A4042DE4CD4AB21E2F0616153BEEE58EBBD89911FA43BC52969 │ │ │ │ │ +230C8137DB34C13E147B06C7A3875A931E1AC127E7D3EA0DF8346B6971F80901 │ │ │ │ │ +DC37F2DE1A0B81FD93CA3B5EB9B29ECABA1492901B1BA261DAB872FB3431C718 │ │ │ │ │ +9C9CDA7864908CD773864908DEB44E343221C2C4C335341789A46325D94C767C │ │ │ │ │ +740E3B60CE6D452A3A665967F568671FD7DD460B404B9C3D2EDCD47A336AA2C7 │ │ │ │ │ +BB0B1AC3823978F610629EF7AB526098A7EE7076F50A146D8134BA2DEC1B8ACF │ │ │ │ │ +68A7E4A9B7BE17FB71480516F2D6A8866E56CFD7C7A41311F48DDDD9887DACB8 │ │ │ │ │ +73FDAF5F25E956AFB0A9D530DE2E1128F006AAC9A78715BA2F90C8FED3729BFA │ │ │ │ │ +BDDD4098F870A27A91A0CB540D166FF86A442E95C9C361FD23378A2A138EAFB8 │ │ │ │ │ +D7050B486E1CB95068D890BCCD669456F3385C8F1793CE545099421368FE0F46 │ │ │ │ │ +53137AD2B65030B19CE7FF6B1669DB7A3C440AEF27149780E36C7097B7A8B71B │ │ │ │ │ +8789EECFA9A70B1F9695BB5D94E9A7D341291C1CA1BDEF4BE3EFCB8234CE9FFD │ │ │ │ │ +E1C4963CF919780129FA60162FEAA8AE97328F4BA14D949057A3EE74214F2D29 │ │ │ │ │ +51E7BE584446F6702F39957AE455CF8AF0C36AADAA39B53553D923CA5E9D4988 │ │ │ │ │ +76701B4F77DAE5185AC29900 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -3282,16 +3285,16 @@ │ │ │ │ │ 59 4[44 44 3[56 62 93 31 2[31 62 2[51 62 50 1[54 11[86 │ │ │ │ │ 5[84 5[42 6[80 13[56 56 56 56 2[31 46[{}23 99.6264 /CMBX12 │ │ │ │ │ rf /Fc 137[62 1[62 62 9[62 62 27[62 8[62 67[{}7 119.552 │ │ │ │ │ /CMTT12 rf /Fd 134[71 3[75 52 53 55 1[75 67 75 112 3[37 │ │ │ │ │ 75 1[41 61 75 60 1[65 13[75 2[92 11[103 17[67 67 2[37 │ │ │ │ │ 46[{}22 119.552 /CMBX12 rf /Fe 141[38 2[46 51 2[42 1[28 │ │ │ │ │ 46 42 1[42 1[42 14[65 1[66 11[59 62 69 2[68 6[28 58[{}16 │ │ │ │ │ -90.9091 /CMTI10 rf /Ff 134[48 23[45 19[83 18[25 5[45 │ │ │ │ │ -1[45 45 45 3[25 44[{}9 90.9091 /CMSL10 rf │ │ │ │ │ +90.9091 /CMTI10 rf /Ff 138[51 6[51 8[40 26[47 15[25 4[45 │ │ │ │ │ +1[45 45 1[45 3[25 44[{}10 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 │ │ │ │ │ @@ -3402,17 +3405,17 @@ │ │ │ │ │ (not)h(y)m(et)h(zero.)141 5294 y(Ha)m(ving)27 b(a)g(lo)s(c)m(k)g(asso)s │ │ │ │ │ (ciated)g(with)f(a)h Fh(ChvList)d Fi(ob)5 b(ject)27 b(is)f(optional,)i │ │ │ │ │ (for)e(example,)i(it)e(is)g(not)g(needed)g(during)0 5407 │ │ │ │ │ y(a)31 b(serial)h(factorization)i(nor)c(a)i(MPI)f(factorization.)45 │ │ │ │ │ b(In)31 b(the)g(latter)h(case)g(there)g(is)f(one)g Fh(ChvList)e │ │ │ │ │ Fi(p)s(er)h(pro)s(cess.)1927 5656 y(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fi(2)p 136 100 1154 4 v │ │ │ │ │ -1336 w Fh(ChvList)28 b Ff(:)41 b Fe(DRAFT)30 b Ff(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2746 100 V 0 399 a Fi(F)-8 b(or)35 b(a)g(m)m(ultithreaded)g │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fi(2)p 136 100 1147 4 v │ │ │ │ │ +1329 w Fh(ChvList)28 b Ff(:)41 b Fe(DRAFT)30 b Ff(June)g(3,)h(2025)p │ │ │ │ │ +2753 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 │ │ │ │ │ @@ -3465,35 +3468,35 @@ │ │ │ │ │ (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 1154 4 v 1335 100 a Fh(ChvList)29 │ │ │ │ │ -b Ff(:)40 b Fe(DRAFT)122 b Ff(Ma)m(y)31 b(1,)g(2024)p │ │ │ │ │ -2699 100 V 1154 w Fi(3)111 399 y(3.)46 b Fh(void)h(ChvList_clearData)c │ │ │ │ │ -(\()k(ChvList)f(*list)h(\))g(;)227 555 y Fi(This)41 b(metho)s(d)g │ │ │ │ │ -(clears)h(the)g(ob)5 b(ject)42 b(and)f(free's)h(an)m(y)g(o)m(wned)f │ │ │ │ │ -(data)i(b)m(y)e(calling)i Fh(Chv)p 3220 555 29 4 v 34 │ │ │ │ │ -w(free\(\))c Fi(for)j(eac)m(h)227 668 y(ob)5 b(ject)36 │ │ │ │ │ -b(on)f(the)h(free)f(list.)56 b(If)35 b Fh(heads)f Fi(is)h(not)g │ │ │ │ │ -Fh(NULL)p Fi(,)g(it)g(is)h(free'd.)55 b(If)35 b Fh(counts)e │ │ │ │ │ -Fi(is)i(not)h Fh(NULL)p Fi(,)e(it)i(is)f(free'd)227 781 │ │ │ │ │ -y(via)43 b(a)f(call)h(to)g Fh(IVfree\(\))p Fi(.)73 b(If)41 │ │ │ │ │ -b Fh(flags)f Fi(is)i(not)g Fh(NULL)p Fi(,)f(it)i(is)e(free'd)h(via)h(a) │ │ │ │ │ -f(call)h(to)g Fh(CVfree\(\))p Fi(.)72 b(If)42 b(the)227 │ │ │ │ │ -894 y(lo)s(c)m(k)f(is)f(not)g Fh(NULL)p Fi(,)g(it)g(is)g(destro)m(y)m │ │ │ │ │ -(ed)h(via)g(a)f(call)h(to)g Fh(Lock)p 2312 894 V 33 w(free\(\))p │ │ │ │ │ -Fi(.)68 b(There)39 b(is)h(a)h(concluding)f(call)h(to)227 │ │ │ │ │ -1007 y Fh(ChvList)p 569 1007 V 33 w(setDefaultFields\(\))p │ │ │ │ │ -Fi(.)227 1164 y Fe(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ │ -b Fi(If)30 b Fh(list)g Fi(is)g Fh(NULL)p Fi(,)f(an)i(error)f(message)h │ │ │ │ │ -(is)g(prin)m(ted)f(and)f(the)i(program)f(exits.)111 1364 │ │ │ │ │ -y(4.)46 b Fh(void)h(ChvList_free)d(\()k(ChvList)e(*list)g(\))h(;)227 │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1147 4 v 1328 100 a Fh(ChvList)29 │ │ │ │ │ +b Ff(:)41 b Fe(DRAFT)121 b Ff(June)29 b(3,)i(2025)p 2706 │ │ │ │ │ +100 V 1147 w Fi(3)111 399 y(3.)46 b Fh(void)h(ChvList_clearData)c(\()k │ │ │ │ │ +(ChvList)f(*list)h(\))g(;)227 555 y Fi(This)41 b(metho)s(d)g(clears)h │ │ │ │ │ +(the)g(ob)5 b(ject)42 b(and)f(free's)h(an)m(y)g(o)m(wned)f(data)i(b)m │ │ │ │ │ +(y)e(calling)i Fh(Chv)p 3220 555 29 4 v 34 w(free\(\))c │ │ │ │ │ +Fi(for)j(eac)m(h)227 668 y(ob)5 b(ject)36 b(on)f(the)h(free)f(list.)56 │ │ │ │ │ +b(If)35 b Fh(heads)f Fi(is)h(not)g Fh(NULL)p Fi(,)g(it)g(is)h(free'd.) │ │ │ │ │ +55 b(If)35 b Fh(counts)e Fi(is)i(not)h Fh(NULL)p Fi(,)e(it)i(is)f │ │ │ │ │ +(free'd)227 781 y(via)43 b(a)f(call)h(to)g Fh(IVfree\(\))p │ │ │ │ │ +Fi(.)73 b(If)41 b Fh(flags)f Fi(is)i(not)g Fh(NULL)p │ │ │ │ │ +Fi(,)f(it)i(is)e(free'd)h(via)h(a)f(call)h(to)g Fh(CVfree\(\))p │ │ │ │ │ +Fi(.)72 b(If)42 b(the)227 894 y(lo)s(c)m(k)f(is)f(not)g │ │ │ │ │ +Fh(NULL)p Fi(,)g(it)g(is)g(destro)m(y)m(ed)h(via)g(a)f(call)h(to)g │ │ │ │ │ +Fh(Lock)p 2312 894 V 33 w(free\(\))p Fi(.)68 b(There)39 │ │ │ │ │ +b(is)h(a)h(concluding)f(call)h(to)227 1007 y Fh(ChvList)p │ │ │ │ │ +569 1007 V 33 w(setDefaultFields\(\))p Fi(.)227 1164 │ │ │ │ │ +y Fe(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fi(If)30 b │ │ │ │ │ +Fh(list)g Fi(is)g Fh(NULL)p Fi(,)f(an)i(error)f(message)h(is)g(prin)m │ │ │ │ │ +(ted)f(and)f(the)i(program)f(exits.)111 1364 y(4.)46 │ │ │ │ │ +b Fh(void)h(ChvList_free)d(\()k(ChvList)e(*list)g(\))h(;)227 │ │ │ │ │ 1521 y Fi(This)29 b(metho)s(d)g(releases)i(an)m(y)f(storage)h(b)m(y)e │ │ │ │ │ (a)h(call)h(to)f Fh(ChvList)p 2395 1521 V 32 w(clearData\(\))d │ │ │ │ │ Fi(and)i(then)g(free)h(the)f(space)227 1634 y(for)h Fh(list)p │ │ │ │ │ Fi(.)227 1791 y Fe(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ │ b Fi(If)30 b Fh(list)g Fi(is)g Fh(NULL)p Fi(,)f(an)i(error)f(message)h │ │ │ │ │ (is)g(prin)m(ted)f(and)f(the)i(program)f(exits.)0 2078 │ │ │ │ │ y Fb(1.2.2)112 b(Initialization)39 b(metho)s(ds)0 2281 │ │ │ │ │ @@ -3538,17 +3541,17 @@ │ │ │ │ │ 5138 y(metho)s(d)e(returns)f(0.)227 5294 y Fe(Err)-5 │ │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fi(If)29 b Fh(list)g Fi(is)h │ │ │ │ │ Fh(NULL)p Fi(,)f(or)h(if)g Fh(ilist)e Fi(is)i(not)h(in)e(the)h(range)h │ │ │ │ │ Fh([0,nlist\))p Fi(,)c(an)j(error)g(message)227 5407 │ │ │ │ │ y(is)h(prin)m(ted)f(and)f(zero)j(is)e(returned.)p eop │ │ │ │ │ end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fi(4)p 136 100 1154 4 v │ │ │ │ │ -1336 w Fh(ChvList)28 b Ff(:)41 b Fe(DRAFT)30 b Ff(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2746 100 V 111 399 a Fi(3.)46 b Fh(Chv)h(*)h(ChvList_getList)43 │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fi(4)p 136 100 1147 4 v │ │ │ │ │ +1329 w Fh(ChvList)28 b Ff(:)41 b Fe(DRAFT)30 b Ff(June)g(3,)h(2025)p │ │ │ │ │ +2753 100 V 111 399 a Fi(3.)46 b Fh(Chv)h(*)h(ChvList_getList)43 │ │ │ │ │ b(\()48 b(ChvList)e(*list,)g(int)h(ilist)f(\))h(;)227 │ │ │ │ │ 549 y Fi(If)28 b(list)h Fh(ilist)e Fi(is)h(empt)m(y)-8 │ │ │ │ │ b(,)30 b(the)f(metho)s(d)f(returns)f Fh(NULL)p Fi(.)g(Otherwise,)i(if)f │ │ │ │ │ (the)h(list)g(needs)f(to)h(b)s(e)e(lo)s(c)m(k)m(ed,)k(the)227 │ │ │ │ │ 662 y(lo)s(c)m(k)37 b(is)e(lo)s(c)m(k)m(ed.)57 b(The)34 │ │ │ │ │ b(head)h(of)h(the)f(list)h(is)f(sa)m(v)m(ed)i(to)f(a)f(p)s(oin)m(ter)h │ │ │ │ │ (and)e(then)h(the)h(head)f(is)g(set)h(to)g Fh(NULL)p │ │ │ │ │ ├── ps2ascii {} │ │ │ │ │ │ @@ -22,15 +22,15 @@ │ │ │ │ │ │ The first two operations are queries, and can be done without locking the list. The third operation │ │ │ │ │ │ needs a lock only when two or more threads will be inserting objects into the list. The fourth │ │ │ │ │ │ operation requires a lock only when one thread will add an object while another thread removes │ │ │ │ │ │ the object and the incoming count is not yet zero. │ │ │ │ │ │ Having a lock associated with a ChvList object is optional, for example, it is not needed during │ │ │ │ │ │ a serial factorization nor a MPI factorization. In the latter case there is one ChvList per process. │ │ │ │ │ │ 1 │ │ │ │ │ │ - 2 ChvList : DRAFT May 1, 2024 │ │ │ │ │ │ + 2 ChvList : DRAFT June 3, 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 May 1, 2024 3 │ │ │ │ │ │ + ChvList : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 4 ChvList : DRAFT June 3, 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.05.01:0544 │ │ │ │ │ +%DVIPSSource: TeX output 2025.06.03:1221 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -1157,21 +1157,22 @@ │ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ │ /UnderlineThickness 50 def │ │ │ │ │ end readonly def │ │ │ │ │ /Encoding 256 array │ │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ │ dup 44 /comma put │ │ │ │ │ dup 48 /zero put │ │ │ │ │ -dup 49 /one put │ │ │ │ │ dup 50 /two put │ │ │ │ │ -dup 52 /four put │ │ │ │ │ +dup 51 /three put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 77 /M put │ │ │ │ │ -dup 97 /a put │ │ │ │ │ -dup 121 /y put │ │ │ │ │ +dup 74 /J put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ +dup 110 /n put │ │ │ │ │ +dup 117 /u put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ │ @@ -1352,68 +1353,70 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004ACD1870 │ │ │ │ │ -A5EA947858F5795870BFE1343AD803FB854BF8F5A4E794E8EC57BE41DB5B8734 │ │ │ │ │ -13E47950F29A81EA0C81EA798863883D7F41F78325CA190CBBFFE822AE494550 │ │ │ │ │ -4BE83703071FC9512D128927AF3F63CEF8F86ABE1E15D7B4DDD39576E7DFF45E │ │ │ │ │ -3CB4115AAB1830DE8647B915DB4BEBEB5235C281E098B899BAB951D8D5798F01 │ │ │ │ │ -7F7C47336D31438E5126738AFEAB29E9A7CBE06DE4DD604477B542D2620DFD58 │ │ │ │ │ -28FE34238572F23C5A8EB7ACEE1E154DA13FC1A5AA67A3BA8C5CDFB2B80312C9 │ │ │ │ │ -BC9FAE56D08DDFA9498E6EF0D0F6BD18B3923E0B670B0740528BC843610736CB │ │ │ │ │ -80228C105C2F72C3C22D610C3D8C268DEEA2AEEE3221E198E79FE2966487360C │ │ │ │ │ -84AE08AC326F48B21447652121B1EB68AF857B8628F27BB4ED00F273E0DD044A │ │ │ │ │ -7D11A5BFAAC0A82328444CC9DD90167681B07D55CE28655F40C21250A226DEAB │ │ │ │ │ -2D46FFB680CB9242BE192AC0E55A44D45709FA6DE638C130D92C4E9B07BC3D61 │ │ │ │ │ -25CC2F0A7ED4F3574242FFE4461272EB1401266EEF551E0E2B0EF51FA8F250EC │ │ │ │ │ -FD9AFB6F5A0CC442B566BC24400133E3E9B9A9FC801CEF284FD2B3ECA43421FA │ │ │ │ │ -51E5D1EFE7BEAA96658362C438A0A5A6DCBC664A85EF88037B42355195B9D19C │ │ │ │ │ -7961D5F63B123451B298CD52C144FCD4F3641A823FBA14605E2DFD845E89102C │ │ │ │ │ -4E345CFD80E3EE6F097095A84C941FFC91B234F3615E4EE4C5D564284656E364 │ │ │ │ │ -AB9C4D1DE05F8FD065CA6064893F0CF3A3A501D59EF6568D05D818A010D06518 │ │ │ │ │ -E2C20418ADD1E652867F265084A27A5FE0C32213C59FFC3A84EDC89382521E5B │ │ │ │ │ -8AF66D76601F83C5C33CC9CF968C77B66F1FA074AC3DAD8E453C9264D03969EF │ │ │ │ │ -9E387BB3BEAA4BF0A9D88BA2CE6094E8996A3752A657E322A57AF006444BF516 │ │ │ │ │ -501C43CAA1BA7F16A3B6E4D3EBDECCCC19564DF18FB68194C132238A5441A21A │ │ │ │ │ -F52285CA1CA94A4BEC61EB509FA35EA5E393D662D938F4291F37EB7C2D5815BE │ │ │ │ │ -446813E1CFD06FFFFF2C4355C9DAFA48E765F4CC5DE4B9E37CFFB75E7A0B6F4B │ │ │ │ │ -4E412496F9C27DF4BDD90A869F0EBD81A57AE0B84051450A5A3E06CB9930DB2C │ │ │ │ │ -7C2DDB774BE870AEFCC9F4F067BE243FF3FD4B5C71B96C607DC4975973AF2650 │ │ │ │ │ -E7DF2BE3523A370EEDD07B5456B96E372ED10510CE677C044E609F21E93652FD │ │ │ │ │ -33CE612F587530D12214A3719CDB170C315B5D8763D5D4C67B5CAE90309E77AC │ │ │ │ │ -B45EB356C13A7BDE0D7320A9849CA357E30D7CF1085FFD70071932C3180AFC28 │ │ │ │ │ -B093016BA3F49A3878C34BB4A8727A441EB6CFC1A73F2313A7BF8D32EDF27E62 │ │ │ │ │ -EBEBC058FBA80B136FD2DE05C673B66482224ECEC63EDFB519AC13B5CC6624A6 │ │ │ │ │ -B3FD79037DA3851E93A386115852DBA88B176F21EDDB5386DC7C993C4210B28F │ │ │ │ │ -438131A586E34A09724E7CE60139F8247BFF14D2674805B3BD454C134728A43E │ │ │ │ │ -139E0AF71A7AC5CE42041EC83FD454B00AD29959FCF007789FFAF2D3492DCA4B │ │ │ │ │ -566EAFE97591ABC51CD0CD9BCD64E285FB823E41AA817E96B2B224005DAA4E15 │ │ │ │ │ -2141DB436B9D3FBA4EE4C876FD19A2E5133106FE2B9F704CB9614FCDC91B7950 │ │ │ │ │ -57053F45A5ED993B48189AAFAD5289F97AE2B0AEB5606579F6BD75F743EDB5B6 │ │ │ │ │ -5AA8F8A64CE507A47325081B3A013DB1BD596CDD3A83D2F29B070D6F9C57496E │ │ │ │ │ -14DF3F0F731C3BB00F2CE3D4BBACF1320322195D1DEA7A545BB4725BD1C6EC3D │ │ │ │ │ -63250C72B897741F8599D9D9BD2FB50EC80EFF2ECD6CE6603E95AABB45462ACF │ │ │ │ │ -12B005EE5979B6B05BCE9B97061686102349142A3CCC26D57F2A3283DD8B6E2A │ │ │ │ │ -98885E48C0D4A1A5C9612EDCB3B3D265E9B8CCCCA5D99F07F96C15B27D6A161F │ │ │ │ │ -936599E503C2859927201CACC31581AB7AB84F9EC9FFADC239F01DCC55940AB7 │ │ │ │ │ -FA884AA1EB6494C8E53DAD66E75A317428ACF9D943A74683BF547958F67D9E36 │ │ │ │ │ -F985EED50DEBCF255756A821927CB73848DCF167E96E975E959DE27FE7BA4FBA │ │ │ │ │ -D0EFC003F019D87572D6F9C73FC5B880C3EEDB7EF98E5EC3D25D6FE0015A6590 │ │ │ │ │ -E3C6EE632D7F6558B914609A8829CD1DEAB83A3F1207D5C3AAC9EAEA9DE1B4F8 │ │ │ │ │ -2375C5D4F630BCE13475F941ED2324D2CD4DCF2285298EAA4FFF89433D853860 │ │ │ │ │ -A974A9FC0808580FBDE7D02EDBB3D8C65BD3109AE8B359E96BFB7E21C696F440 │ │ │ │ │ -312B0CCAD810BF070DF8FC281E8198EB20A7FF9C9BCD291D74BC75EE46799485 │ │ │ │ │ -1AB2AE36B7E525034D146A856AF3BD9057A0033C08B606B89DD130548950C93D │ │ │ │ │ -94A8C92C47A34A791B1C108D2F36E899B79358B8081CCFC3D1A2F0521E4E2AE4 │ │ │ │ │ -7F500D6F2A53E5393E44201287225912590ABC738E8726622B67C3425639CCFB │ │ │ │ │ -F450B78A4918 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004B9BA1CC │ │ │ │ │ +580D3C6BDA4DC1B80B4365F1C80512453FC5316EC2D928FB731C3D6403E3C18B │ │ │ │ │ +E8424D644DF5E9A2134229C5C91CA68DB8E85BA2BB40F538F585DA6FA4037718 │ │ │ │ │ +B8053EBBA1E765346BCD5BDAA6C38115D31611D8A87A2238C145F2DA2F92E4DF │ │ │ │ │ +3987BD9C4D2A3D460E8941A68B125BCD9EE4F9FD262C4C8A71F47A2C81975635 │ │ │ │ │ +F1B981C274C53FA2ACCDE4C9D0A7C62D6C1EFF91CFC6712CA6A9F333C9564FCB │ │ │ │ │ +2A70F0AD715A79B10A08AB069E2A3C93BC0AED19D0CA10134B8DDDE8AF548DB2 │ │ │ │ │ +3A4AAA9C29682CF135BB767DAA16169A127EB50A7EECEB6480CF56A7D0F8AC56 │ │ │ │ │ +4A5090B3D75A790372886AF568D94C8165975A05BFBFDF1FFBA45F70700BB9E0 │ │ │ │ │ +57F3249EF9E9C8AD9CBCF6E4FD592DC4CDD2D7864F7C8A3FA6FC44C25C0CE7E1 │ │ │ │ │ +299F8A90B32B75DEA28917531621E1E7E0ECEE9E01665DEE99FBCF3EC3F30686 │ │ │ │ │ +513D7CBA745E660502603865D5A3E82D24B3F94B2884B21DC53AED87F49380E0 │ │ │ │ │ +68EE79C580931308DA762670C1F86F07FFB479773CD9C5DE6F22980DEC973D1C │ │ │ │ │ +A1E162D73932561BAAB24DE51DC8708291B666B36BABCA1FEDB6DD9C22572914 │ │ │ │ │ +7194DA044319F362452D53DD4D9A59134838E540F1E23805CEF53FF4F7519385 │ │ │ │ │ +1FAE3061F94369FEB1232BDA2E2A281E6972FB4524EFA37A598E7CDC097683EA │ │ │ │ │ +1B609952AEC0799B4711AAAB22D6B1D5CC729DE70897FDDC48AF0A12E40FFE30 │ │ │ │ │ +6528C601E68E8CFA4BBF897CF89DB712DE108DD1F084EFD917BFD9A70A74EB8F │ │ │ │ │ +D0D5B43CCC30373A5E871F18A969D01C69C2B4377622A0C8C4D7C4C28DDE5586 │ │ │ │ │ +BD17D5D640A6F396BD41993BD1932EE10953847F82F7BB36480B67A4F69F0763 │ │ │ │ │ +69423D1803B7BB60594ABEEE9578076639B84D8323F56104438803D45402FEE3 │ │ │ │ │ +045DAB16C4459DA9BBE01D0385CC771FB8DABDD8A9D280C18553F92FE6591CFD │ │ │ │ │ +26B82F28E6673BD823598D3F6CE03BEE04D9A21ED908DFC4F640227C148F133D │ │ │ │ │ +D32113275297C16EBCC9028AFD9102DE50E9CF67E7CF8C42BB8E73D1DAF8A5E2 │ │ │ │ │ +EF5979426229664A990DEF980A7038D2F229789D4F6EDBE1FB81BEC1A1BB14D7 │ │ │ │ │ +882515C62660E8877BE942712D57B86A2E19995AF087DECB7FD5208583C020AE │ │ │ │ │ +FEC86A2826530AD855006225300E4655F443C9360A8BAC96B5B096DDC9B12EDF │ │ │ │ │ +C862215AD6C432CF345FE701757E4EBB8C65F46912CB0F4DEF53672F7298D8F7 │ │ │ │ │ +EE51A9C5DE689A8D36956B7F0410893C0998DB03B73B4024CB046F8F6B32E07F │ │ │ │ │ +CD28A68AFB7152E45F1021DCD520D8A429FCDCA4B8054BAF0B48C4443280F198 │ │ │ │ │ +3360B078E6DEC37772DA8B629CFFD1534E8AA10E26B0BC58E92B9BF280C8EE45 │ │ │ │ │ +618EECDE904249F5A2010DC55D1028DFF4F058260B2B0A46541D6157970F44BD │ │ │ │ │ +D7483802D56A81184119DDBC914E8E394CBEEB506B61BB1CE2A3465252E5D8A3 │ │ │ │ │ +6BDD2D067E69D4ECEFC7D5568378F5F8B38EAFF138014185FE19DF7358A7A780 │ │ │ │ │ +3BE0E2CCD1561113F2F2319BDB503230DD0866121604710CEBBAA659ABFC010B │ │ │ │ │ +5CC40E5807F461D87E75BDC6AD96BCEF62AF668D48D7A76D08B57650F35CF609 │ │ │ │ │ +C0F791AEBEB75E29FA69596BAB419804AECE0F0238AAE64A6C13A22EBF4E3EAC │ │ │ │ │ +3570DECE85F54064486B2364D63E94FEB7C16350CDA318510A45C8848DB470ED │ │ │ │ │ +BFAFD2365681D65CFF3E6C1B4B7C8AE3066F96E819D05B97F3A6C2BFF8A72978 │ │ │ │ │ +EEB7F632FF604AD003A3CCA5A0465D53033A646E8082D3491EDECA3DA1A0E1BB │ │ │ │ │ +64BF36946520438D2EE72FA9EB1CEEDF56510AADA55A8DE280E23C904E0810FA │ │ │ │ │ +A3177CF684F06A4042DE4CD4AB21E2F0616153BEEE58EBBD89911FA43BC52969 │ │ │ │ │ +230C8137DB34C13E147B06C7A3875A931E1AC127E7D3EA0DF8346B6971F80901 │ │ │ │ │ +DC37F2DE1A0B81FD93CA3B5EB9B29ECABA1492901B1BA261DAB872FB3431C718 │ │ │ │ │ +9C9CDA7864908CD773864908DEB44E343221C2C4C335341789A46325D94C767C │ │ │ │ │ +740E3B60CE6D452A3A665967F568671FD7DD460B404B9C3D2EDCD47A336AA2C7 │ │ │ │ │ +BB0B1AC3823978F610629EF7AB526098A7EE7076F50A146D8134BA2DEC1B8ACF │ │ │ │ │ +68A7E4A9B7BE17FB71480516F2D6A8866E56CFD7C7A41311F48DDDD9887DACB8 │ │ │ │ │ +73FDAF5F25E956AFB0A9D530DE2E1128F006AAC9A78715BA2F90C8FED3729BFA │ │ │ │ │ +BDDD4098F870A27A91A0CB540D166FF86A442E95C9C361FD23378A2A138EAFB8 │ │ │ │ │ +D7050B486E1CB95068D890BCCD669456F3385C8F1793CE545099421368FE0F46 │ │ │ │ │ +53137AD2B65030B19CE7FF6B1669DB7A3C440AEF27149780E36C7097B7A8B71B │ │ │ │ │ +8789EECFA9A70B1F9695BB5D94E9A7D341291C1CA1BDEF4BE3EFCB8234CE9FFD │ │ │ │ │ +E1C4963CF919780129FA60162FEAA8AE97328F4BA14D949057A3EE74214F2D29 │ │ │ │ │ +51E7BE584446F6702F39957AE455CF8AF0C36AADAA39B53553D923CA5E9D4988 │ │ │ │ │ +76701B4F77DAE5185AC29900 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -3084,18 +3087,18 @@ │ │ │ │ │ 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 23[45 19[83 18[25 5[45 1[45 45 45 3[25 │ │ │ │ │ -44[{}9 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 │ │ │ │ │ +rf /Fd 138[51 6[51 8[40 26[47 15[25 4[45 1[45 45 1[45 │ │ │ │ │ +3[25 44[{}10 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 │ │ │ │ │ /afii61664.cap/arrowleft/arrowright/tieaccentlowercase/tieaccentcapital │ │ │ │ │ /tieaccentlowercase.new/tieaccentcapital.new/.notdef/afii61664.asc/uni2422 3 │ │ │ │ │ {/.notdef}repeat/dollar/.notdef/.notdef/quotesingle/.notdef/.notdef │ │ │ │ │ @@ -3212,17 +3215,17 @@ │ │ │ │ │ (recycling)i(mo)s(de.)141 5294 y(A)39 b(m)m(ultithreaded)g(en)m │ │ │ │ │ (vironmen)m(t)g(creates)h(some)f(di\016culties.)66 b(Should)37 │ │ │ │ │ b(there)i(b)s(e)f(one)h(manager)g(ob)5 b(ject)0 5407 │ │ │ │ │ y(p)s(er)30 b(thread,)h(or)g(should)e(all)j(the)f(threads)g(share)f │ │ │ │ │ (one)h(ob)5 b(ject?)43 b(W)-8 b(e)32 b(ha)m(v)m(e)g(c)m(hosen)f(the)g │ │ │ │ │ (latter)i(course,)e(but)f(this)1927 5656 y(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fh(2)p 136 100 1130 4 v │ │ │ │ │ -1312 w Fg(DChvList)28 b Fd(:)41 b Fe(DRAFT)30 b Fd(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2770 100 V 0 399 a Fh(requires)f(that)i(a)f(lo)s(c)m(k)h(b)s(e)e │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fh(2)p 136 100 1123 4 v │ │ │ │ │ +1305 w Fg(DChvList)28 b Fd(:)41 b Fe(DRAFT)30 b Fd(June)f(3,)i(2025)p │ │ │ │ │ +2777 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 │ │ │ │ │ @@ -3275,20 +3278,20 @@ │ │ │ │ │ (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 1130 4 v 1312 100 a Fg(DChvList)28 │ │ │ │ │ -b Fd(:)40 b Fe(DRAFT)121 b Fd(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2723 100 V 1130 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 │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1123 4 v 1305 100 a Fg(DChvList)28 │ │ │ │ │ +b Fd(:)40 b Fe(DRAFT)122 b Fd(June)29 b(3,)i(2025)p 2730 │ │ │ │ │ +100 V 1123 w Fh(3)111 399 y(2.)46 b Fg(void)h(ChvManager_setDefaultFie) │ │ │ │ │ +o(lds)41 b(\()48 b(ChvManager)d(*manager)g(\))j(;)227 │ │ │ │ │ +548 y Fh(The)20 b(structure's)g(\014elds)g(are)g(set)h(to)g(default)g │ │ │ │ │ +(v)-5 b(alues:)36 b Fg(mode)p Fh(,)21 b Fg(nactive)p │ │ │ │ │ Fh(,)g Fg(nbytesactive)p Fh(,)e Fg(nbytesrequested)p │ │ │ │ │ Fh(,)227 661 y Fg(nbytesalloc)p Fh(,)26 b Fg(nrequests)p │ │ │ │ │ Fh(,)h Fg(nreleases)p Fh(,)g Fg(nlocks)g Fh(and)h Fg(nunlocks)e │ │ │ │ │ Fh(set)j(to)h(zero,)g(and)e Fg(head)f Fh(and)h Fg(lock)227 │ │ │ │ │ 774 y Fh(are)j(set)g(to)g Fg(NULL)e Fh(.)227 924 y Fe(Err)-5 │ │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fh(If)30 b Fg(manager)f │ │ │ │ │ Fh(is)h Fg(NULL)p Fh(,)g(an)g(error)g(message)h(is)g(prin)m(ted)f(and)f │ │ │ │ │ @@ -3352,17 +3355,17 @@ │ │ │ │ │ Fg(Chv)f Fh(ob)5 b(jects)33 b(in)m(to)g(the)g(free)f(p)s(o)s(ol)g(of)g │ │ │ │ │ (ob)5 b(jects.)47 b(The)32 b(head)g(of)g(the)g(list)227 │ │ │ │ │ 5258 y(is)f(the)f Fg(chv)g Fh(instance.)227 5407 y Fe(Err)-5 │ │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fh(If)30 b Fg(manager)f │ │ │ │ │ Fh(is)h Fg(NULL)p Fh(,)g(an)g(error)g(message)h(is)g(prin)m(ted)f(and)f │ │ │ │ │ (zero)j(is)e(returned.)p eop end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fh(4)p 136 100 1130 4 v │ │ │ │ │ -1312 w Fg(DChvList)28 b Fd(:)41 b Fe(DRAFT)30 b Fd(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2770 100 V 0 399 a Fa(1.2.4)112 b(IO)38 b(metho)s(ds)111 │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fh(4)p 136 100 1123 4 v │ │ │ │ │ +1305 w Fg(DChvList)28 b Fd(:)41 b Fe(DRAFT)30 b Fd(June)f(3,)i(2025)p │ │ │ │ │ +2777 100 V 0 399 a Fa(1.2.4)112 b(IO)38 b(metho)s(ds)111 │ │ │ │ │ 595 y Fh(1.)46 b Fg(void)h(ChvManager_writeForHuman)o(Eye)41 │ │ │ │ │ b(\()48 b(ChvManager)d(*manager,)g(FILE)i(*fp)g(\))g(;)227 │ │ │ │ │ 745 y Fh(This)30 b(metho)s(d)g(writes)g(the)h(statistics)h(to)f(a)g │ │ │ │ │ (\014le)f(in)g(user)g(readable)h(form.)227 896 y Fe(Err)-5 │ │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fh(If)30 b Fg(manager)f │ │ │ │ │ Fh(or)h Fg(fp)g Fh(are)h Fg(NULL)p Fh(,)e(an)h(error)g(message)i(is)e │ │ │ │ │ (prin)m(ted)g(and)g(zero)h(is)g(returned.)p eop end │ │ │ │ │ ├── ps2ascii {} │ │ │ │ │ │ @@ -23,15 +23,15 @@ │ │ │ │ │ │ finds a smallest object of that size or larger.) If there is no object on the free pool of sufficient │ │ │ │ │ │ size, one is created and returned. When the user releases an object to the manager, the object │ │ │ │ │ │ is placed on the free pool. │ │ │ │ │ │ For the factorization, serial, multithreaded or MPI, we recommend using the recycling mode. │ │ │ │ │ │ A multithreaded environment creates some difficulties. Should there be one manager object │ │ │ │ │ │ per thread, or should all the threads share one object? We have chosen the latter course, but this │ │ │ │ │ │ 1 │ │ │ │ │ │ - 2 DChvList : DRAFT May 1, 2024 │ │ │ │ │ │ + 2 DChvList : DRAFT June 3, 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 May 1, 2024 3 │ │ │ │ │ │ + DChvList : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 4 DChvList : DRAFT June 3, 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.05.01:0544 │ │ │ │ │ +%DVIPSSource: TeX output 2025.06.03:1221 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -1236,21 +1236,22 @@ │ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ │ /UnderlineThickness 50 def │ │ │ │ │ end readonly def │ │ │ │ │ /Encoding 256 array │ │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ │ dup 44 /comma put │ │ │ │ │ dup 48 /zero put │ │ │ │ │ -dup 49 /one put │ │ │ │ │ dup 50 /two put │ │ │ │ │ -dup 52 /four put │ │ │ │ │ +dup 51 /three put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 77 /M put │ │ │ │ │ -dup 97 /a put │ │ │ │ │ -dup 121 /y put │ │ │ │ │ +dup 74 /J put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ +dup 110 /n put │ │ │ │ │ +dup 117 /u put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ │ @@ -1431,68 +1432,70 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004ACD1870 │ │ │ │ │ -A5EA947858F5795870BFE1343AD803FB854BF8F5A4E794E8EC57BE41DB5B8734 │ │ │ │ │ -13E47950F29A81EA0C81EA798863883D7F41F78325CA190CBBFFE822AE494550 │ │ │ │ │ -4BE83703071FC9512D128927AF3F63CEF8F86ABE1E15D7B4DDD39576E7DFF45E │ │ │ │ │ -3CB4115AAB1830DE8647B915DB4BEBEB5235C281E098B899BAB951D8D5798F01 │ │ │ │ │ -7F7C47336D31438E5126738AFEAB29E9A7CBE06DE4DD604477B542D2620DFD58 │ │ │ │ │ -28FE34238572F23C5A8EB7ACEE1E154DA13FC1A5AA67A3BA8C5CDFB2B80312C9 │ │ │ │ │ -BC9FAE56D08DDFA9498E6EF0D0F6BD18B3923E0B670B0740528BC843610736CB │ │ │ │ │ -80228C105C2F72C3C22D610C3D8C268DEEA2AEEE3221E198E79FE2966487360C │ │ │ │ │ -84AE08AC326F48B21447652121B1EB68AF857B8628F27BB4ED00F273E0DD044A │ │ │ │ │ -7D11A5BFAAC0A82328444CC9DD90167681B07D55CE28655F40C21250A226DEAB │ │ │ │ │ -2D46FFB680CB9242BE192AC0E55A44D45709FA6DE638C130D92C4E9B07BC3D61 │ │ │ │ │ -25CC2F0A7ED4F3574242FFE4461272EB1401266EEF551E0E2B0EF51FA8F250EC │ │ │ │ │ -FD9AFB6F5A0CC442B566BC24400133E3E9B9A9FC801CEF284FD2B3ECA43421FA │ │ │ │ │ -51E5D1EFE7BEAA96658362C438A0A5A6DCBC664A85EF88037B42355195B9D19C │ │ │ │ │ -7961D5F63B123451B298CD52C144FCD4F3641A823FBA14605E2DFD845E89102C │ │ │ │ │ -4E345CFD80E3EE6F097095A84C941FFC91B234F3615E4EE4C5D564284656E364 │ │ │ │ │ -AB9C4D1DE05F8FD065CA6064893F0CF3A3A501D59EF6568D05D818A010D06518 │ │ │ │ │ -E2C20418ADD1E652867F265084A27A5FE0C32213C59FFC3A84EDC89382521E5B │ │ │ │ │ -8AF66D76601F83C5C33CC9CF968C77B66F1FA074AC3DAD8E453C9264D03969EF │ │ │ │ │ -9E387BB3BEAA4BF0A9D88BA2CE6094E8996A3752A657E322A57AF006444BF516 │ │ │ │ │ -501C43CAA1BA7F16A3B6E4D3EBDECCCC19564DF18FB68194C132238A5441A21A │ │ │ │ │ -F52285CA1CA94A4BEC61EB509FA35EA5E393D662D938F4291F37EB7C2D5815BE │ │ │ │ │ -446813E1CFD06FFFFF2C4355C9DAFA48E765F4CC5DE4B9E37CFFB75E7A0B6F4B │ │ │ │ │ -4E412496F9C27DF4BDD90A869F0EBD81A57AE0B84051450A5A3E06CB9930DB2C │ │ │ │ │ -7C2DDB774BE870AEFCC9F4F067BE243FF3FD4B5C71B96C607DC4975973AF2650 │ │ │ │ │ -E7DF2BE3523A370EEDD07B5456B96E372ED10510CE677C044E609F21E93652FD │ │ │ │ │ -33CE612F587530D12214A3719CDB170C315B5D8763D5D4C67B5CAE90309E77AC │ │ │ │ │ -B45EB356C13A7BDE0D7320A9849CA357E30D7CF1085FFD70071932C3180AFC28 │ │ │ │ │ -B093016BA3F49A3878C34BB4A8727A441EB6CFC1A73F2313A7BF8D32EDF27E62 │ │ │ │ │ -EBEBC058FBA80B136FD2DE05C673B66482224ECEC63EDFB519AC13B5CC6624A6 │ │ │ │ │ -B3FD79037DA3851E93A386115852DBA88B176F21EDDB5386DC7C993C4210B28F │ │ │ │ │ -438131A586E34A09724E7CE60139F8247BFF14D2674805B3BD454C134728A43E │ │ │ │ │ -139E0AF71A7AC5CE42041EC83FD454B00AD29959FCF007789FFAF2D3492DCA4B │ │ │ │ │ -566EAFE97591ABC51CD0CD9BCD64E285FB823E41AA817E96B2B224005DAA4E15 │ │ │ │ │ -2141DB436B9D3FBA4EE4C876FD19A2E5133106FE2B9F704CB9614FCDC91B7950 │ │ │ │ │ -57053F45A5ED993B48189AAFAD5289F97AE2B0AEB5606579F6BD75F743EDB5B6 │ │ │ │ │ -5AA8F8A64CE507A47325081B3A013DB1BD596CDD3A83D2F29B070D6F9C57496E │ │ │ │ │ -14DF3F0F731C3BB00F2CE3D4BBACF1320322195D1DEA7A545BB4725BD1C6EC3D │ │ │ │ │ -63250C72B897741F8599D9D9BD2FB50EC80EFF2ECD6CE6603E95AABB45462ACF │ │ │ │ │ -12B005EE5979B6B05BCE9B97061686102349142A3CCC26D57F2A3283DD8B6E2A │ │ │ │ │ -98885E48C0D4A1A5C9612EDCB3B3D265E9B8CCCCA5D99F07F96C15B27D6A161F │ │ │ │ │ -936599E503C2859927201CACC31581AB7AB84F9EC9FFADC239F01DCC55940AB7 │ │ │ │ │ -FA884AA1EB6494C8E53DAD66E75A317428ACF9D943A74683BF547958F67D9E36 │ │ │ │ │ -F985EED50DEBCF255756A821927CB73848DCF167E96E975E959DE27FE7BA4FBA │ │ │ │ │ -D0EFC003F019D87572D6F9C73FC5B880C3EEDB7EF98E5EC3D25D6FE0015A6590 │ │ │ │ │ -E3C6EE632D7F6558B914609A8829CD1DEAB83A3F1207D5C3AAC9EAEA9DE1B4F8 │ │ │ │ │ -2375C5D4F630BCE13475F941ED2324D2CD4DCF2285298EAA4FFF89433D853860 │ │ │ │ │ -A974A9FC0808580FBDE7D02EDBB3D8C65BD3109AE8B359E96BFB7E21C696F440 │ │ │ │ │ -312B0CCAD810BF070DF8FC281E8198EB20A7FF9C9BCD291D74BC75EE46799485 │ │ │ │ │ -1AB2AE36B7E525034D146A856AF3BD9057A0033C08B606B89DD130548950C93D │ │ │ │ │ -94A8C92C47A34A791B1C108D2F36E899B79358B8081CCFC3D1A2F0521E4E2AE4 │ │ │ │ │ -7F500D6F2A53E5393E44201287225912590ABC738E8726622B67C3425639CCFB │ │ │ │ │ -F450B78A4918 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004B9BA1CC │ │ │ │ │ +580D3C6BDA4DC1B80B4365F1C80512453FC5316EC2D928FB731C3D6403E3C18B │ │ │ │ │ +E8424D644DF5E9A2134229C5C91CA68DB8E85BA2BB40F538F585DA6FA4037718 │ │ │ │ │ +B8053EBBA1E765346BCD5BDAA6C38115D31611D8A87A2238C145F2DA2F92E4DF │ │ │ │ │ +3987BD9C4D2A3D460E8941A68B125BCD9EE4F9FD262C4C8A71F47A2C81975635 │ │ │ │ │ +F1B981C274C53FA2ACCDE4C9D0A7C62D6C1EFF91CFC6712CA6A9F333C9564FCB │ │ │ │ │ +2A70F0AD715A79B10A08AB069E2A3C93BC0AED19D0CA10134B8DDDE8AF548DB2 │ │ │ │ │ +3A4AAA9C29682CF135BB767DAA16169A127EB50A7EECEB6480CF56A7D0F8AC56 │ │ │ │ │ +4A5090B3D75A790372886AF568D94C8165975A05BFBFDF1FFBA45F70700BB9E0 │ │ │ │ │ +57F3249EF9E9C8AD9CBCF6E4FD592DC4CDD2D7864F7C8A3FA6FC44C25C0CE7E1 │ │ │ │ │ +299F8A90B32B75DEA28917531621E1E7E0ECEE9E01665DEE99FBCF3EC3F30686 │ │ │ │ │ +513D7CBA745E660502603865D5A3E82D24B3F94B2884B21DC53AED87F49380E0 │ │ │ │ │ +68EE79C580931308DA762670C1F86F07FFB479773CD9C5DE6F22980DEC973D1C │ │ │ │ │ +A1E162D73932561BAAB24DE51DC8708291B666B36BABCA1FEDB6DD9C22572914 │ │ │ │ │ +7194DA044319F362452D53DD4D9A59134838E540F1E23805CEF53FF4F7519385 │ │ │ │ │ +1FAE3061F94369FEB1232BDA2E2A281E6972FB4524EFA37A598E7CDC097683EA │ │ │ │ │ +1B609952AEC0799B4711AAAB22D6B1D5CC729DE70897FDDC48AF0A12E40FFE30 │ │ │ │ │ +6528C601E68E8CFA4BBF897CF89DB712DE108DD1F084EFD917BFD9A70A74EB8F │ │ │ │ │ +D0D5B43CCC30373A5E871F18A969D01C69C2B4377622A0C8C4D7C4C28DDE5586 │ │ │ │ │ +BD17D5D640A6F396BD41993BD1932EE10953847F82F7BB36480B67A4F69F0763 │ │ │ │ │ +69423D1803B7BB60594ABEEE9578076639B84D8323F56104438803D45402FEE3 │ │ │ │ │ +045DAB16C4459DA9BBE01D0385CC771FB8DABDD8A9D280C18553F92FE6591CFD │ │ │ │ │ +26B82F28E6673BD823598D3F6CE03BEE04D9A21ED908DFC4F640227C148F133D │ │ │ │ │ +D32113275297C16EBCC9028AFD9102DE50E9CF67E7CF8C42BB8E73D1DAF8A5E2 │ │ │ │ │ +EF5979426229664A990DEF980A7038D2F229789D4F6EDBE1FB81BEC1A1BB14D7 │ │ │ │ │ +882515C62660E8877BE942712D57B86A2E19995AF087DECB7FD5208583C020AE │ │ │ │ │ +FEC86A2826530AD855006225300E4655F443C9360A8BAC96B5B096DDC9B12EDF │ │ │ │ │ +C862215AD6C432CF345FE701757E4EBB8C65F46912CB0F4DEF53672F7298D8F7 │ │ │ │ │ +EE51A9C5DE689A8D36956B7F0410893C0998DB03B73B4024CB046F8F6B32E07F │ │ │ │ │ +CD28A68AFB7152E45F1021DCD520D8A429FCDCA4B8054BAF0B48C4443280F198 │ │ │ │ │ +3360B078E6DEC37772DA8B629CFFD1534E8AA10E26B0BC58E92B9BF280C8EE45 │ │ │ │ │ +618EECDE904249F5A2010DC55D1028DFF4F058260B2B0A46541D6157970F44BD │ │ │ │ │ +D7483802D56A81184119DDBC914E8E394CBEEB506B61BB1CE2A3465252E5D8A3 │ │ │ │ │ +6BDD2D067E69D4ECEFC7D5568378F5F8B38EAFF138014185FE19DF7358A7A780 │ │ │ │ │ +3BE0E2CCD1561113F2F2319BDB503230DD0866121604710CEBBAA659ABFC010B │ │ │ │ │ +5CC40E5807F461D87E75BDC6AD96BCEF62AF668D48D7A76D08B57650F35CF609 │ │ │ │ │ +C0F791AEBEB75E29FA69596BAB419804AECE0F0238AAE64A6C13A22EBF4E3EAC │ │ │ │ │ +3570DECE85F54064486B2364D63E94FEB7C16350CDA318510A45C8848DB470ED │ │ │ │ │ +BFAFD2365681D65CFF3E6C1B4B7C8AE3066F96E819D05B97F3A6C2BFF8A72978 │ │ │ │ │ +EEB7F632FF604AD003A3CCA5A0465D53033A646E8082D3491EDECA3DA1A0E1BB │ │ │ │ │ +64BF36946520438D2EE72FA9EB1CEEDF56510AADA55A8DE280E23C904E0810FA │ │ │ │ │ +A3177CF684F06A4042DE4CD4AB21E2F0616153BEEE58EBBD89911FA43BC52969 │ │ │ │ │ +230C8137DB34C13E147B06C7A3875A931E1AC127E7D3EA0DF8346B6971F80901 │ │ │ │ │ +DC37F2DE1A0B81FD93CA3B5EB9B29ECABA1492901B1BA261DAB872FB3431C718 │ │ │ │ │ +9C9CDA7864908CD773864908DEB44E343221C2C4C335341789A46325D94C767C │ │ │ │ │ +740E3B60CE6D452A3A665967F568671FD7DD460B404B9C3D2EDCD47A336AA2C7 │ │ │ │ │ +BB0B1AC3823978F610629EF7AB526098A7EE7076F50A146D8134BA2DEC1B8ACF │ │ │ │ │ +68A7E4A9B7BE17FB71480516F2D6A8866E56CFD7C7A41311F48DDDD9887DACB8 │ │ │ │ │ +73FDAF5F25E956AFB0A9D530DE2E1128F006AAC9A78715BA2F90C8FED3729BFA │ │ │ │ │ +BDDD4098F870A27A91A0CB540D166FF86A442E95C9C361FD23378A2A138EAFB8 │ │ │ │ │ +D7050B486E1CB95068D890BCCD669456F3385C8F1793CE545099421368FE0F46 │ │ │ │ │ +53137AD2B65030B19CE7FF6B1669DB7A3C440AEF27149780E36C7097B7A8B71B │ │ │ │ │ +8789EECFA9A70B1F9695BB5D94E9A7D341291C1CA1BDEF4BE3EFCB8234CE9FFD │ │ │ │ │ +E1C4963CF919780129FA60162FEAA8AE97328F4BA14D949057A3EE74214F2D29 │ │ │ │ │ +51E7BE584446F6702F39957AE455CF8AF0C36AADAA39B53553D923CA5E9D4988 │ │ │ │ │ +76701B4F77DAE5185AC29900 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -3872,19 +3875,19 @@ │ │ │ │ │ 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 23[45 19[83 18[25 5[45 1[45 45 45 3[25 44[{}9 │ │ │ │ │ -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 │ │ │ │ │ +/Fc 138[51 6[51 8[40 26[47 15[25 4[45 1[45 45 1[45 3[25 │ │ │ │ │ +44[{}10 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 │ │ │ │ │ /quotedblbase.ts1/.notdef/.notdef/twelveudash/threequartersemdash │ │ │ │ │ /afii61664.cap/arrowleft/arrowright/tieaccentlowercase/tieaccentcapital │ │ │ │ │ /tieaccentlowercase.new/tieaccentcapital.new/.notdef/afii61664.asc/uni2422 3 │ │ │ │ │ @@ -3987,17 +3990,17 @@ │ │ │ │ │ (metho)s(ds)f(that)h(b)s(elong)f(to)h(the)0 4808 y Fj(Coords)29 │ │ │ │ │ b Fk(ob)5 b(ject.)0 5092 y Fd(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ │ 5294 y Fk(As)d(usual,)h(there)f(are)g(four)f(basic)h(metho)s(ds)g(to)g │ │ │ │ │ (supp)s(ort)e(ob)5 b(ject)36 b(creation,)i(setting)e(default)f │ │ │ │ │ (\014elds,)h(clearing)0 5407 y(an)m(y)31 b(allo)s(cated)h(data,)f(and)f │ │ │ │ │ (free'ing)h(the)g(ob)5 b(ject.)1927 5656 y(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fk(2)p 136 100 1178 4 v │ │ │ │ │ -1360 w Fj(Coords)28 b Fc(:)41 b Fb(DRAFT)30 b Fc(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2723 100 V 111 399 a Fk(1.)46 b Fj(Coords)g(*)i(Coords_new)d(\()i(void) │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fk(2)p 136 100 1171 4 v │ │ │ │ │ +1353 w Fj(Coords)28 b Fc(:)41 b Fb(DRAFT)30 b Fc(June)g(3,)h(2025)p │ │ │ │ │ +2729 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 │ │ │ │ │ @@ -4066,17 +4069,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 1178 4 v 1359 100 a Fj(Coords)29 │ │ │ │ │ -b Fc(:)41 b Fb(DRAFT)121 b Fc(Ma)m(y)31 b(1,)g(2024)p │ │ │ │ │ -2675 100 V 1178 w Fk(3)227 399 y(This)g(metho)s(d)g(initializes)i(a)f │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1171 4 v 1352 100 a Fj(Coords)29 │ │ │ │ │ +b Fc(:)41 b Fb(DRAFT)121 b Fc(June)29 b(3,)i(2025)p 2682 │ │ │ │ │ +100 V 1171 w Fk(3)227 399 y(This)g(metho)s(d)g(initializes)i(a)f │ │ │ │ │ Fj(Coords)e Fk(ob)5 b(ject)32 b(for)f(a)h(27-p)s(oin)m(t)h(op)s(erator) │ │ │ │ │ e(on)h(a)f Fj(n1)21 b Fa(\002)f Fj(n2)h Fa(\002)f Fj(n3)31 │ │ │ │ │ b Fk(grid)g(with)227 511 y Fj(ncomp)42 b Fk(degrees)j(of)e(freedom)h │ │ │ │ │ (at)g(a)g(grid)f(p)s(oin)m(t.)81 b(The)43 b(grid's)g(lo)s(cation)i(is)f │ │ │ │ │ (giv)m(en)h(b)m(y)e(the)h(b)s(ounding)227 624 y(b)s(o)m(x)34 │ │ │ │ │ b(v)m(ector,)i Fj(bbox[0])31 b Fk(=)i Fi(x)p Fk(-co)s(ordinate)i(of)f │ │ │ │ │ (the)f(south)m(w)m(est)i(p)s(oin)m(t,)f Fj(bbox[1])e │ │ │ │ │ @@ -4157,17 +4160,17 @@ │ │ │ │ │ Fk(2,)34 b Fj(Coords)p 3110 5294 V 32 w(setValue\(coords,)227 │ │ │ │ │ 5407 y(2,)47 b(16,)g(3.3\))30 b Fk(sets)g Fi(y)1005 5421 │ │ │ │ │ y Ff(16)1105 5407 y Fk(=)25 b(3)p Fi(:)p Fk(3,)32 b(and)d │ │ │ │ │ Fj(Coords)p 1843 5407 V 33 w(setValue\(coords,)43 b(3,)48 │ │ │ │ │ b(118,)e(0\))30 b Fk(sets)h Fi(z)3409 5421 y Ff(118)3544 │ │ │ │ │ 5407 y Fk(=)25 b(0.)p eop end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fk(4)p 136 100 1178 4 v │ │ │ │ │ -1360 w Fj(Coords)28 b Fc(:)41 b Fb(DRAFT)30 b Fc(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2723 100 V 227 399 a Fb(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fk(4)p 136 100 1171 4 v │ │ │ │ │ +1353 w Fj(Coords)28 b Fc(:)41 b Fb(DRAFT)30 b Fc(June)g(3,)h(2025)p │ │ │ │ │ +2729 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 │ │ │ │ │ @@ -4244,21 +4247,21 @@ │ │ │ │ │ 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 1178 4 v 1359 100 a Fj(Coords)29 │ │ │ │ │ -b Fc(:)41 b Fb(DRAFT)121 b Fc(Ma)m(y)31 b(1,)g(2024)p │ │ │ │ │ -2675 100 V 1178 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 │ │ │ │ │ +TeXDict begin 5 4 bop 91 100 1171 4 v 1352 100 a Fj(Coords)29 │ │ │ │ │ +b Fc(:)41 b Fb(DRAFT)121 b Fc(June)29 b(3,)i(2025)p 2682 │ │ │ │ │ +100 V 1171 w Fk(5)111 399 y(7.)46 b Fj(int)h(Coords_writeForHumanEye)42 │ │ │ │ │ +b(\()47 b(Coords)f(*coords,)g(FILE)g(*fp)h(\))h(;)227 │ │ │ │ │ +554 y Fk(This)43 b(metho)s(d)g(write)h(the)g Fj(Coords)e │ │ │ │ │ +Fk(ob)5 b(ject)45 b(to)f(a)g(\014le)g(in)g(an)f(easy)i(to)f(read)g │ │ │ │ │ +(fashion.)80 b(The)43 b(metho)s(d)227 667 y Fj(Coords)p │ │ │ │ │ 521 667 29 4 v 33 w(writeStats\(\))24 b Fk(is)k(called)h(to)f(write)g │ │ │ │ │ (out)g(the)g(header)g(and)f(statistics.)42 b(The)27 b │ │ │ │ │ Fj(coors[])f Fk(v)m(ector)j(is)227 780 y(then)h(prin)m(ted)g(out.)41 │ │ │ │ │ b(The)30 b(v)-5 b(alue)31 b Fj(1)f Fk(is)g(returned.)227 │ │ │ │ │ 936 y Fb(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fk(If)30 │ │ │ │ │ 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.)111 │ │ │ │ │ @@ -4318,17 +4321,17 @@ │ │ │ │ │ 5181 y Fg(\210)45 b Fk(The)33 b Fj(msgFile)e Fk(parameter)j(determines) │ │ │ │ │ f(the)h(message)g(\014le)f(|)h(if)f Fj(msgFile)e Fk(is)i │ │ │ │ │ Fj(stdout)p Fk(,)g(then)g(the)427 5294 y(message)24 b(\014le)e(is)h │ │ │ │ │ Fb(stdout)p Fk(,)i(otherwise)e(a)f(\014le)h(is)f(op)s(ened)g(with)g │ │ │ │ │ Fb(app)-5 b(end)24 b Fk(status)f(to)g(receiv)m(e)h(an)m(y)f(message)427 │ │ │ │ │ 5407 y(data.)p eop end │ │ │ │ │ %%Page: 6 6 │ │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fk(6)p 136 100 1178 4 v │ │ │ │ │ -1360 w Fj(Coords)28 b Fc(:)41 b Fb(DRAFT)30 b Fc(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2723 100 V 337 399 a Fg(\210)45 b Fk(The)20 b Fj(outCoordsFile)d │ │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fk(6)p 136 100 1171 4 v │ │ │ │ │ +1353 w Fj(Coords)28 b Fc(:)41 b Fb(DRAFT)30 b Fc(June)g(3,)h(2025)p │ │ │ │ │ +2729 100 V 337 399 a Fg(\210)45 b Fk(The)20 b Fj(outCoordsFile)d │ │ │ │ │ Fk(parameter)j(is)h(the)f(output)g(\014le)g(for)h(the)f │ │ │ │ │ Fj(Coords)f Fk(ob)5 b(ject.)38 b(If)20 b Fj(outCoordsFile)427 │ │ │ │ │ 511 y Fk(is)h Fj(none)e Fk(then)h(the)g Fj(Coords)f Fk(ob)5 │ │ │ │ │ b(ject)21 b(is)f(not)h(written)f(to)h(a)g(\014le.)37 │ │ │ │ │ b(Otherwise,)22 b(the)f Fj(Coords)p 3409 511 29 4 v 33 │ │ │ │ │ w(writeToFile\(\))427 624 y Fk(metho)s(d)27 b(is)h(called)h(to)f(write) │ │ │ │ │ g(the)g(ob)5 b(ject)29 b(to)f(a)g(formatted)g(\014le)g(\(if)g │ │ │ │ │ ├── ps2ascii {} │ │ │ │ │ │ @@ -18,15 +18,15 @@ │ │ │ │ │ │ 1.2 Prototypes and descriptions of Coords methods │ │ │ │ │ │ This section contains brief descriptions including prototypes of all methods that belong to the │ │ │ │ │ │ Coords object. │ │ │ │ │ │ 1.2.1 Basic methods │ │ │ │ │ │ As usual, there are four basic methods to support object creation, setting default fields, clearing │ │ │ │ │ │ any allocated data, and free’ing the object. │ │ │ │ │ │ 1 │ │ │ │ │ │ - 2 Coords : DRAFT May 1, 2024 │ │ │ │ │ │ + 2 Coords : DRAFT June 3, 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 May 1, 2024 3 │ │ │ │ │ │ + Coords : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 4 Coords : DRAFT June 3, 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 May 1, 2024 5 │ │ │ │ │ │ + Coords : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 6 Coords : DRAFT June 3, 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.05.01:0544 │ │ │ │ │ +%DVIPSSource: TeX output 2025.06.03:1221 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -1406,21 +1406,22 @@ │ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ │ /UnderlineThickness 50 def │ │ │ │ │ end readonly def │ │ │ │ │ /Encoding 256 array │ │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ │ dup 44 /comma put │ │ │ │ │ dup 48 /zero put │ │ │ │ │ -dup 49 /one put │ │ │ │ │ dup 50 /two put │ │ │ │ │ -dup 52 /four put │ │ │ │ │ +dup 51 /three put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 77 /M put │ │ │ │ │ -dup 97 /a put │ │ │ │ │ -dup 121 /y put │ │ │ │ │ +dup 74 /J put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ +dup 110 /n put │ │ │ │ │ +dup 117 /u put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ │ @@ -1601,68 +1602,70 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004ACD1870 │ │ │ │ │ -A5EA947858F5795870BFE1343AD803FB854BF8F5A4E794E8EC57BE41DB5B8734 │ │ │ │ │ -13E47950F29A81EA0C81EA798863883D7F41F78325CA190CBBFFE822AE494550 │ │ │ │ │ -4BE83703071FC9512D128927AF3F63CEF8F86ABE1E15D7B4DDD39576E7DFF45E │ │ │ │ │ -3CB4115AAB1830DE8647B915DB4BEBEB5235C281E098B899BAB951D8D5798F01 │ │ │ │ │ -7F7C47336D31438E5126738AFEAB29E9A7CBE06DE4DD604477B542D2620DFD58 │ │ │ │ │ -28FE34238572F23C5A8EB7ACEE1E154DA13FC1A5AA67A3BA8C5CDFB2B80312C9 │ │ │ │ │ -BC9FAE56D08DDFA9498E6EF0D0F6BD18B3923E0B670B0740528BC843610736CB │ │ │ │ │ -80228C105C2F72C3C22D610C3D8C268DEEA2AEEE3221E198E79FE2966487360C │ │ │ │ │ -84AE08AC326F48B21447652121B1EB68AF857B8628F27BB4ED00F273E0DD044A │ │ │ │ │ -7D11A5BFAAC0A82328444CC9DD90167681B07D55CE28655F40C21250A226DEAB │ │ │ │ │ -2D46FFB680CB9242BE192AC0E55A44D45709FA6DE638C130D92C4E9B07BC3D61 │ │ │ │ │ -25CC2F0A7ED4F3574242FFE4461272EB1401266EEF551E0E2B0EF51FA8F250EC │ │ │ │ │ -FD9AFB6F5A0CC442B566BC24400133E3E9B9A9FC801CEF284FD2B3ECA43421FA │ │ │ │ │ -51E5D1EFE7BEAA96658362C438A0A5A6DCBC664A85EF88037B42355195B9D19C │ │ │ │ │ -7961D5F63B123451B298CD52C144FCD4F3641A823FBA14605E2DFD845E89102C │ │ │ │ │ -4E345CFD80E3EE6F097095A84C941FFC91B234F3615E4EE4C5D564284656E364 │ │ │ │ │ -AB9C4D1DE05F8FD065CA6064893F0CF3A3A501D59EF6568D05D818A010D06518 │ │ │ │ │ -E2C20418ADD1E652867F265084A27A5FE0C32213C59FFC3A84EDC89382521E5B │ │ │ │ │ -8AF66D76601F83C5C33CC9CF968C77B66F1FA074AC3DAD8E453C9264D03969EF │ │ │ │ │ -9E387BB3BEAA4BF0A9D88BA2CE6094E8996A3752A657E322A57AF006444BF516 │ │ │ │ │ -501C43CAA1BA7F16A3B6E4D3EBDECCCC19564DF18FB68194C132238A5441A21A │ │ │ │ │ -F52285CA1CA94A4BEC61EB509FA35EA5E393D662D938F4291F37EB7C2D5815BE │ │ │ │ │ -446813E1CFD06FFFFF2C4355C9DAFA48E765F4CC5DE4B9E37CFFB75E7A0B6F4B │ │ │ │ │ -4E412496F9C27DF4BDD90A869F0EBD81A57AE0B84051450A5A3E06CB9930DB2C │ │ │ │ │ -7C2DDB774BE870AEFCC9F4F067BE243FF3FD4B5C71B96C607DC4975973AF2650 │ │ │ │ │ -E7DF2BE3523A370EEDD07B5456B96E372ED10510CE677C044E609F21E93652FD │ │ │ │ │ -33CE612F587530D12214A3719CDB170C315B5D8763D5D4C67B5CAE90309E77AC │ │ │ │ │ -B45EB356C13A7BDE0D7320A9849CA357E30D7CF1085FFD70071932C3180AFC28 │ │ │ │ │ -B093016BA3F49A3878C34BB4A8727A441EB6CFC1A73F2313A7BF8D32EDF27E62 │ │ │ │ │ -EBEBC058FBA80B136FD2DE05C673B66482224ECEC63EDFB519AC13B5CC6624A6 │ │ │ │ │ -B3FD79037DA3851E93A386115852DBA88B176F21EDDB5386DC7C993C4210B28F │ │ │ │ │ -438131A586E34A09724E7CE60139F8247BFF14D2674805B3BD454C134728A43E │ │ │ │ │ -139E0AF71A7AC5CE42041EC83FD454B00AD29959FCF007789FFAF2D3492DCA4B │ │ │ │ │ -566EAFE97591ABC51CD0CD9BCD64E285FB823E41AA817E96B2B224005DAA4E15 │ │ │ │ │ -2141DB436B9D3FBA4EE4C876FD19A2E5133106FE2B9F704CB9614FCDC91B7950 │ │ │ │ │ -57053F45A5ED993B48189AAFAD5289F97AE2B0AEB5606579F6BD75F743EDB5B6 │ │ │ │ │ -5AA8F8A64CE507A47325081B3A013DB1BD596CDD3A83D2F29B070D6F9C57496E │ │ │ │ │ -14DF3F0F731C3BB00F2CE3D4BBACF1320322195D1DEA7A545BB4725BD1C6EC3D │ │ │ │ │ -63250C72B897741F8599D9D9BD2FB50EC80EFF2ECD6CE6603E95AABB45462ACF │ │ │ │ │ -12B005EE5979B6B05BCE9B97061686102349142A3CCC26D57F2A3283DD8B6E2A │ │ │ │ │ -98885E48C0D4A1A5C9612EDCB3B3D265E9B8CCCCA5D99F07F96C15B27D6A161F │ │ │ │ │ -936599E503C2859927201CACC31581AB7AB84F9EC9FFADC239F01DCC55940AB7 │ │ │ │ │ -FA884AA1EB6494C8E53DAD66E75A317428ACF9D943A74683BF547958F67D9E36 │ │ │ │ │ -F985EED50DEBCF255756A821927CB73848DCF167E96E975E959DE27FE7BA4FBA │ │ │ │ │ -D0EFC003F019D87572D6F9C73FC5B880C3EEDB7EF98E5EC3D25D6FE0015A6590 │ │ │ │ │ -E3C6EE632D7F6558B914609A8829CD1DEAB83A3F1207D5C3AAC9EAEA9DE1B4F8 │ │ │ │ │ -2375C5D4F630BCE13475F941ED2324D2CD4DCF2285298EAA4FFF89433D853860 │ │ │ │ │ -A974A9FC0808580FBDE7D02EDBB3D8C65BD3109AE8B359E96BFB7E21C696F440 │ │ │ │ │ -312B0CCAD810BF070DF8FC281E8198EB20A7FF9C9BCD291D74BC75EE46799485 │ │ │ │ │ -1AB2AE36B7E525034D146A856AF3BD9057A0033C08B606B89DD130548950C93D │ │ │ │ │ -94A8C92C47A34A791B1C108D2F36E899B79358B8081CCFC3D1A2F0521E4E2AE4 │ │ │ │ │ -7F500D6F2A53E5393E44201287225912590ABC738E8726622B67C3425639CCFB │ │ │ │ │ -F450B78A4918 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004B9BA1CC │ │ │ │ │ +580D3C6BDA4DC1B80B4365F1C80512453FC5316EC2D928FB731C3D6403E3C18B │ │ │ │ │ +E8424D644DF5E9A2134229C5C91CA68DB8E85BA2BB40F538F585DA6FA4037718 │ │ │ │ │ +B8053EBBA1E765346BCD5BDAA6C38115D31611D8A87A2238C145F2DA2F92E4DF │ │ │ │ │ +3987BD9C4D2A3D460E8941A68B125BCD9EE4F9FD262C4C8A71F47A2C81975635 │ │ │ │ │ +F1B981C274C53FA2ACCDE4C9D0A7C62D6C1EFF91CFC6712CA6A9F333C9564FCB │ │ │ │ │ +2A70F0AD715A79B10A08AB069E2A3C93BC0AED19D0CA10134B8DDDE8AF548DB2 │ │ │ │ │ +3A4AAA9C29682CF135BB767DAA16169A127EB50A7EECEB6480CF56A7D0F8AC56 │ │ │ │ │ +4A5090B3D75A790372886AF568D94C8165975A05BFBFDF1FFBA45F70700BB9E0 │ │ │ │ │ +57F3249EF9E9C8AD9CBCF6E4FD592DC4CDD2D7864F7C8A3FA6FC44C25C0CE7E1 │ │ │ │ │ +299F8A90B32B75DEA28917531621E1E7E0ECEE9E01665DEE99FBCF3EC3F30686 │ │ │ │ │ +513D7CBA745E660502603865D5A3E82D24B3F94B2884B21DC53AED87F49380E0 │ │ │ │ │ +68EE79C580931308DA762670C1F86F07FFB479773CD9C5DE6F22980DEC973D1C │ │ │ │ │ +A1E162D73932561BAAB24DE51DC8708291B666B36BABCA1FEDB6DD9C22572914 │ │ │ │ │ +7194DA044319F362452D53DD4D9A59134838E540F1E23805CEF53FF4F7519385 │ │ │ │ │ +1FAE3061F94369FEB1232BDA2E2A281E6972FB4524EFA37A598E7CDC097683EA │ │ │ │ │ +1B609952AEC0799B4711AAAB22D6B1D5CC729DE70897FDDC48AF0A12E40FFE30 │ │ │ │ │ +6528C601E68E8CFA4BBF897CF89DB712DE108DD1F084EFD917BFD9A70A74EB8F │ │ │ │ │ +D0D5B43CCC30373A5E871F18A969D01C69C2B4377622A0C8C4D7C4C28DDE5586 │ │ │ │ │ +BD17D5D640A6F396BD41993BD1932EE10953847F82F7BB36480B67A4F69F0763 │ │ │ │ │ +69423D1803B7BB60594ABEEE9578076639B84D8323F56104438803D45402FEE3 │ │ │ │ │ +045DAB16C4459DA9BBE01D0385CC771FB8DABDD8A9D280C18553F92FE6591CFD │ │ │ │ │ +26B82F28E6673BD823598D3F6CE03BEE04D9A21ED908DFC4F640227C148F133D │ │ │ │ │ +D32113275297C16EBCC9028AFD9102DE50E9CF67E7CF8C42BB8E73D1DAF8A5E2 │ │ │ │ │ +EF5979426229664A990DEF980A7038D2F229789D4F6EDBE1FB81BEC1A1BB14D7 │ │ │ │ │ +882515C62660E8877BE942712D57B86A2E19995AF087DECB7FD5208583C020AE │ │ │ │ │ +FEC86A2826530AD855006225300E4655F443C9360A8BAC96B5B096DDC9B12EDF │ │ │ │ │ +C862215AD6C432CF345FE701757E4EBB8C65F46912CB0F4DEF53672F7298D8F7 │ │ │ │ │ +EE51A9C5DE689A8D36956B7F0410893C0998DB03B73B4024CB046F8F6B32E07F │ │ │ │ │ +CD28A68AFB7152E45F1021DCD520D8A429FCDCA4B8054BAF0B48C4443280F198 │ │ │ │ │ +3360B078E6DEC37772DA8B629CFFD1534E8AA10E26B0BC58E92B9BF280C8EE45 │ │ │ │ │ +618EECDE904249F5A2010DC55D1028DFF4F058260B2B0A46541D6157970F44BD │ │ │ │ │ +D7483802D56A81184119DDBC914E8E394CBEEB506B61BB1CE2A3465252E5D8A3 │ │ │ │ │ +6BDD2D067E69D4ECEFC7D5568378F5F8B38EAFF138014185FE19DF7358A7A780 │ │ │ │ │ +3BE0E2CCD1561113F2F2319BDB503230DD0866121604710CEBBAA659ABFC010B │ │ │ │ │ +5CC40E5807F461D87E75BDC6AD96BCEF62AF668D48D7A76D08B57650F35CF609 │ │ │ │ │ +C0F791AEBEB75E29FA69596BAB419804AECE0F0238AAE64A6C13A22EBF4E3EAC │ │ │ │ │ +3570DECE85F54064486B2364D63E94FEB7C16350CDA318510A45C8848DB470ED │ │ │ │ │ +BFAFD2365681D65CFF3E6C1B4B7C8AE3066F96E819D05B97F3A6C2BFF8A72978 │ │ │ │ │ +EEB7F632FF604AD003A3CCA5A0465D53033A646E8082D3491EDECA3DA1A0E1BB │ │ │ │ │ +64BF36946520438D2EE72FA9EB1CEEDF56510AADA55A8DE280E23C904E0810FA │ │ │ │ │ +A3177CF684F06A4042DE4CD4AB21E2F0616153BEEE58EBBD89911FA43BC52969 │ │ │ │ │ +230C8137DB34C13E147B06C7A3875A931E1AC127E7D3EA0DF8346B6971F80901 │ │ │ │ │ +DC37F2DE1A0B81FD93CA3B5EB9B29ECABA1492901B1BA261DAB872FB3431C718 │ │ │ │ │ +9C9CDA7864908CD773864908DEB44E343221C2C4C335341789A46325D94C767C │ │ │ │ │ +740E3B60CE6D452A3A665967F568671FD7DD460B404B9C3D2EDCD47A336AA2C7 │ │ │ │ │ +BB0B1AC3823978F610629EF7AB526098A7EE7076F50A146D8134BA2DEC1B8ACF │ │ │ │ │ +68A7E4A9B7BE17FB71480516F2D6A8866E56CFD7C7A41311F48DDDD9887DACB8 │ │ │ │ │ +73FDAF5F25E956AFB0A9D530DE2E1128F006AAC9A78715BA2F90C8FED3729BFA │ │ │ │ │ +BDDD4098F870A27A91A0CB540D166FF86A442E95C9C361FD23378A2A138EAFB8 │ │ │ │ │ +D7050B486E1CB95068D890BCCD669456F3385C8F1793CE545099421368FE0F46 │ │ │ │ │ +53137AD2B65030B19CE7FF6B1669DB7A3C440AEF27149780E36C7097B7A8B71B │ │ │ │ │ +8789EECFA9A70B1F9695BB5D94E9A7D341291C1CA1BDEF4BE3EFCB8234CE9FFD │ │ │ │ │ +E1C4963CF919780129FA60162FEAA8AE97328F4BA14D949057A3EE74214F2D29 │ │ │ │ │ +51E7BE584446F6702F39957AE455CF8AF0C36AADAA39B53553D923CA5E9D4988 │ │ │ │ │ +76701B4F77DAE5185AC29900 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -3635,16 +3638,16 @@ │ │ │ │ │ {restore}if │ │ │ │ │ %%EndFont │ │ │ │ │ TeXDict begin 39158280 55380996 1000 600 600 (main.dvi) │ │ │ │ │ @start /Fa 154[40 40 100[{}2 90.9091 /CMSY10 rf /Fb 133[50 │ │ │ │ │ 59 4[44 44 46 2[56 62 93 31 2[31 62 56 1[51 62 50 1[54 │ │ │ │ │ 11[86 1[62 3[84 5[42 6[80 11[56 56 56 56 56 56 2[31 46[{}28 │ │ │ │ │ 99.6264 /CMBX12 rf /Fc 141[62 12[62 16[62 62 14[62 68[{}5 │ │ │ │ │ -119.552 /CMTT12 rf /Fd 134[48 23[45 19[83 18[25 5[45 │ │ │ │ │ -1[45 45 45 3[25 44[{}9 90.9091 /CMSL10 rf │ │ │ │ │ +119.552 /CMTT12 rf /Fd 138[51 6[51 8[40 26[47 15[25 4[45 │ │ │ │ │ +1[45 45 1[45 3[25 44[{}10 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 │ │ │ │ │ @@ -3761,17 +3764,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 1226 4 v │ │ │ │ │ -1407 w Fi(Tree)30 b Fd(:)40 b Fh(DRAFT)31 b Fd(Ma)m(y)g(1,)g(2024)p │ │ │ │ │ -2675 100 V 0 399 a Ff(1.2)135 b(Protot)l(yp)t(es)46 b(and)f │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fj(2)p 136 100 1219 4 v │ │ │ │ │ +1401 w Fi(Tree)29 b Fd(:)40 b Fh(DRAFT)31 b Fd(June)e(3,)i(2025)p │ │ │ │ │ +2682 100 V 0 399 a Ff(1.2)135 b(Protot)l(yp)t(es)46 b(and)f │ │ │ │ │ (descriptions)g(of)g Fc(DSTree)d Ff(metho)t(ds)0 636 │ │ │ │ │ y Fj(This)f(section)j(con)m(tains)f(brief)f(descriptions)g(including)f │ │ │ │ │ (protot)m(yp)s(es)i(of)f(all)h(metho)s(ds)f(that)h(b)s(elong)f(to)h │ │ │ │ │ (the)0 749 y Fi(DSTree)29 b Fj(ob)5 b(ject.)0 1047 y │ │ │ │ │ Fb(1.2.1)112 b(Basic)38 b(metho)s(ds)0 1253 y Fj(As)d(usual,)h(there)f │ │ │ │ │ (are)g(four)f(basic)h(metho)s(ds)g(to)g(supp)s(ort)e(ob)5 │ │ │ │ │ b(ject)36 b(creation,)i(setting)e(default)f(\014elds,)h(clearing)0 │ │ │ │ │ @@ -3825,17 +3828,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 1226 4 v 1407 100 a Fi(Tree)29 │ │ │ │ │ -b Fd(:)41 b Fh(DRAFT)121 b Fd(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2628 100 V 1226 w Fj(3)0 399 y Fb(1.2.3)112 b(Initializer)38 │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1219 4 v 1400 100 a Fi(Tree)29 │ │ │ │ │ +b Fd(:)41 b Fh(DRAFT)121 b Fd(June)29 b(3,)i(2025)p 2634 │ │ │ │ │ +100 V 1219 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 │ │ │ │ │ @@ -3903,17 +3906,17 @@ │ │ │ │ │ (k,)f(its)f(stage)i(is)f Fa(d)p Fg(k)s(=)p Fj(2)p Fa(e)p │ │ │ │ │ Fj(.)227 5294 y Fh(Err)-5 b(or)34 b(che)-5 b(cking:)41 │ │ │ │ │ b Fj(If)29 b Fi(dstree)g Fj(is)i Fi(NULL)p Fj(,)e(or)h(if)h(the)f(ob)5 │ │ │ │ │ b(ject)32 b(has)e(not)g(b)s(een)g(initialized,)j(an)d(error)g(message) │ │ │ │ │ 227 5407 y(is)h(prin)m(ted)f(and)f(the)i(program)f(exits.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fj(4)p 136 100 1226 4 v │ │ │ │ │ -1407 w Fi(Tree)30 b Fd(:)40 b Fh(DRAFT)31 b Fd(Ma)m(y)g(1,)g(2024)p │ │ │ │ │ -2675 100 V 111 399 a Fj(3.)46 b Fi(IV)h(*)h(DSTree_MS2stages)43 │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fj(4)p 136 100 1219 4 v │ │ │ │ │ +1401 w Fi(Tree)29 b Fd(:)40 b Fh(DRAFT)31 b Fd(June)e(3,)i(2025)p │ │ │ │ │ +2682 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 │ │ │ │ │ @@ -3984,20 +3987,20 @@ │ │ │ │ │ (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 1226 4 v 1407 100 a Fi(Tree)29 │ │ │ │ │ -b Fd(:)41 b Fh(DRAFT)121 b Fd(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2628 100 V 1226 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 │ │ │ │ │ +TeXDict begin 5 4 bop 91 100 1219 4 v 1400 100 a Fi(Tree)29 │ │ │ │ │ +b Fd(:)41 b Fh(DRAFT)121 b Fd(June)29 b(3,)i(2025)p 2634 │ │ │ │ │ +100 V 1219 w Fj(5)111 399 y(3.)46 b Fi(int)h(DSTree_domainWeight)c(\()k │ │ │ │ │ +(DSTree)f(*dstree,)g(int)h(vwghts[])e(\))j(;)227 560 │ │ │ │ │ +y Fj(This)25 b(metho)s(d)g(returns)g(the)h(w)m(eigh)m(t)h(of)f(the)g(v) │ │ │ │ │ +m(ertices)h(in)f(the)g(domains.)38 b(If)26 b Fi(vwghts)e │ │ │ │ │ Fj(is)i Fi(NULL)p Fj(,)e(the)i(v)m(ertices)227 673 y(ha)m(v)m(e)32 │ │ │ │ │ b(unit)e(w)m(eigh)m(t.)227 834 y Fh(Err)-5 b(or)34 b(che)-5 │ │ │ │ │ b(cking:)40 b Fj(If)30 b Fi(dstree)f Fj(is)h Fi(NULL)p │ │ │ │ │ Fj(,)g(an)g(error)g(message)i(is)e(prin)m(ted)g(and)g(the)g(program)g │ │ │ │ │ (exits.)111 1043 y(4.)46 b Fi(int)h(DSTree_separatorWeight)42 │ │ │ │ │ b(\()47 b(DSTree)f(*dstree,)g(int)h(vwghts[])e(\))j(;)227 │ │ │ │ │ 1204 y Fj(This)40 b(metho)s(d)h(returns)f(the)h(w)m(eigh)m(t)h(of)g │ │ │ │ │ @@ -4061,17 +4064,17 @@ │ │ │ │ │ b Fi(dstree)e Fj(or)h Fi(fn)g Fj(are)i Fi(NULL)p Fj(,)d(or)i(if)g │ │ │ │ │ Fi(fn)f Fj(is)h(not)g(of)f(the)h(form)g Fi(*.dstreef)d │ │ │ │ │ Fj(\(for)j(a)227 5294 y(formatted)32 b(\014le\))g(or)f │ │ │ │ │ Fi(*.dstreeb)e Fj(\(for)j(a)f(binary)g(\014le\),)h(an)f(error)g │ │ │ │ │ (message)i(is)e(prin)m(ted)g(and)g(the)g(metho)s(d)227 │ │ │ │ │ 5407 y(returns)e(zero.)p eop end │ │ │ │ │ %%Page: 6 6 │ │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fj(6)p 136 100 1226 4 v │ │ │ │ │ -1407 w Fi(Tree)30 b Fd(:)40 b Fh(DRAFT)31 b Fd(Ma)m(y)g(1,)g(2024)p │ │ │ │ │ -2675 100 V 111 399 a Fj(5.)46 b Fi(int)h(DSTree_writeToFormattedFi)o │ │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fj(6)p 136 100 1219 4 v │ │ │ │ │ +1401 w Fi(Tree)29 b Fd(:)40 b Fh(DRAFT)31 b Fd(June)e(3,)i(2025)p │ │ │ │ │ +2682 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 │ │ │ │ │ @@ -4145,17 +4148,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 1226 4 v 1407 100 a Fi(Tree)29 │ │ │ │ │ -b Fd(:)41 b Fh(DRAFT)121 b Fd(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2628 100 V 1226 w Fj(7)111 399 y(2.)46 b Fi(writeStagesIV)e(msglvl)j │ │ │ │ │ +TeXDict begin 7 6 bop 91 100 1219 4 v 1400 100 a Fi(Tree)29 │ │ │ │ │ +b Fd(:)41 b Fh(DRAFT)121 b Fd(June)29 b(3,)i(2025)p 2634 │ │ │ │ │ +100 V 1219 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 May 1, 2024 │ │ │ │ │ │ + 2 Tree : DRAFT June 3, 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 May 1, 2024 3 │ │ │ │ │ │ + Tree : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 4 Tree : DRAFT June 3, 2025 │ │ │ │ │ │ 3. IV * DSTree_MS2stages ( DSTree *dstree ) ; │ │ │ │ │ │ This method returns the stages for the standard multisection ordering. The levels of the │ │ │ │ │ │ domains and separators are obtained via a call to Tree setHeightImetric(). A stagesIV │ │ │ │ │ │ IV object is created of size nvtx = mapIV->size, filled and then returned. If a vertex is │ │ │ │ │ │ found in a domain, its stage is zero. If a vertex is found in a separator, its stage is one. │ │ │ │ │ │ Error checking: If dstree is NULL, or if the object has not been initialized, an error message │ │ │ │ │ │ is printed and the program exits. │ │ │ │ │ │ @@ -125,15 +125,15 @@ │ │ │ │ │ │ If dstree is NULL, an error message is printed and the program exits. Otherwise, the number │ │ │ │ │ │ of bytes taken by this object is returned. │ │ │ │ │ │ Error checking: If dstree is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 2. void DSTree_renumberViaPostOT ( DSTree *dstree ) ; │ │ │ │ │ │ This method renumbers the fronts in the tree via a post-order traversal. │ │ │ │ │ │ Error checking: If dstree is NULL, or if the object has not been initialized, an error message │ │ │ │ │ │ is printed and the program exits. │ │ │ │ │ │ - Tree : DRAFT May 1, 2024 5 │ │ │ │ │ │ + Tree : DRAFT June 3, 2025 5 │ │ │ │ │ │ 3. int DSTree_domainWeight ( DSTree *dstree, int vwghts[] ) ; │ │ │ │ │ │ This method returns the weight of the vertices in the domains. If vwghts is NULL, the vertices │ │ │ │ │ │ have unit weight. │ │ │ │ │ │ Error checking: If dstree is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 4. int DSTree_separatorWeight ( DSTree *dstree, int vwghts[] ) ; │ │ │ │ │ │ This method returns the weight of the vertices in the separators. If vwghts is NULL, the │ │ │ │ │ │ vertices have unit weight. │ │ │ │ │ │ @@ -159,15 +159,15 @@ │ │ │ │ │ │ 4. int DSTree_writeToFile ( DSTree *dstree, char *fn ) ; │ │ │ │ │ │ This method writes a DSTree object to a file. It tries to open the file and if it is successful, │ │ │ │ │ │ it then calls DSTree writeFromFormattedFile()or DSTree writeFromBinaryFile(),closes │ │ │ │ │ │ the file and returns the value returned from the called routine. │ │ │ │ │ │ Error checking: If dstree or fn are NULL, or if fn is not of the form *.dstreef (for a │ │ │ │ │ │ formatted file) or *.dstreeb (for a binary file), an error message is printed and the method │ │ │ │ │ │ returns zero. │ │ │ │ │ │ - 6 Tree : DRAFT May 1, 2024 │ │ │ │ │ │ + 6 Tree : DRAFT June 3, 2025 │ │ │ │ │ │ 5. int DSTree_writeToFormattedFile ( DSTree *dstree, FILE *fp ) ; │ │ │ │ │ │ This method writes a DSTree object to a formatted file. If there are no errors in writing the │ │ │ │ │ │ data, the value 1 is returned. If an IO error is encountered from fprintf, zero is returned. │ │ │ │ │ │ Error checking: If dstree or fp is NULL, an error message is printed and zero is returned. │ │ │ │ │ │ 6. int DSTree_writeToBinaryFile ( DSTree *dstree, FILE *fp ) ; │ │ │ │ │ │ This method writes a DSTree object to a binary file. If there are no errors in writing the │ │ │ │ │ │ data, the value 1 is returned. If an IO error is encountered from fwrite, zero is returned. │ │ │ │ │ │ @@ -195,15 +195,15 @@ │ │ │ │ │ │ • The inFile parameter is the input file for the DSTree object. It must be of the │ │ │ │ │ │ form *.dinpmtxf or *.dinpmtxb. The DSTree object is read from the file via the │ │ │ │ │ │ DSTree readFromFile() method. │ │ │ │ │ │ • The outFileparameter is the output file for the DSTree object. If outFile is none then │ │ │ │ │ │ the DSTreeobject is not written to a file. Otherwise, the DSTree writeToFile()method │ │ │ │ │ │ is called to write the object to a formatted file (if outFile is of the form *.dinpmtxf), │ │ │ │ │ │ or a binary file (if outFile is of the form *.dinpmtxb). │ │ │ │ │ │ - Tree : DRAFT May 1, 2024 7 │ │ │ │ │ │ + Tree : DRAFT June 3, 2025 7 │ │ │ │ │ │ 2. writeStagesIV msglvl msgFile inFile type outFile │ │ │ │ │ │ This driver program reads in a DSTree from a file, creates a stages IV object and writes it to │ │ │ │ │ │ a file. │ │ │ │ │ │ • The msglvl parameter determines the amount of output — taking msglvl >= 3 means │ │ │ │ │ │ the DSTree object is written to the message file. │ │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ │ message file is stdout, otherwise a file is opened with append status to receive any output │ │ │ ├── ./usr/share/doc/spooles-doc/DV.ps.gz │ │ │ │ ├── DV.ps │ │ │ │ │ @@ -11,15 +11,15 @@ │ │ │ │ │ %%EndComments │ │ │ │ │ %%BeginDefaults │ │ │ │ │ %%ViewingOrientation: 1 0 0 1 │ │ │ │ │ %%EndDefaults │ │ │ │ │ %DVIPSWebPage: (www.radicaleye.com) │ │ │ │ │ %DVIPSCommandLine: dvips main -o DV.ps │ │ │ │ │ %DVIPSParameters: dpi=600 │ │ │ │ │ -%DVIPSSource: TeX output 2024.05.01:0544 │ │ │ │ │ +%DVIPSSource: TeX output 2025.06.03:1221 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -2350,21 +2350,22 @@ │ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ │ /UnderlineThickness 50 def │ │ │ │ │ end readonly def │ │ │ │ │ /Encoding 256 array │ │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ │ dup 44 /comma put │ │ │ │ │ dup 48 /zero put │ │ │ │ │ -dup 49 /one put │ │ │ │ │ dup 50 /two put │ │ │ │ │ -dup 52 /four put │ │ │ │ │ +dup 51 /three put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 77 /M put │ │ │ │ │ -dup 97 /a put │ │ │ │ │ -dup 121 /y put │ │ │ │ │ +dup 74 /J put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ +dup 110 /n put │ │ │ │ │ +dup 117 /u put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ │ @@ -2545,68 +2546,70 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004ACD1870 │ │ │ │ │ -A5EA947858F5795870BFE1343AD803FB854BF8F5A4E794E8EC57BE41DB5B8734 │ │ │ │ │ -13E47950F29A81EA0C81EA798863883D7F41F78325CA190CBBFFE822AE494550 │ │ │ │ │ -4BE83703071FC9512D128927AF3F63CEF8F86ABE1E15D7B4DDD39576E7DFF45E │ │ │ │ │ -3CB4115AAB1830DE8647B915DB4BEBEB5235C281E098B899BAB951D8D5798F01 │ │ │ │ │ -7F7C47336D31438E5126738AFEAB29E9A7CBE06DE4DD604477B542D2620DFD58 │ │ │ │ │ -28FE34238572F23C5A8EB7ACEE1E154DA13FC1A5AA67A3BA8C5CDFB2B80312C9 │ │ │ │ │ -BC9FAE56D08DDFA9498E6EF0D0F6BD18B3923E0B670B0740528BC843610736CB │ │ │ │ │ -80228C105C2F72C3C22D610C3D8C268DEEA2AEEE3221E198E79FE2966487360C │ │ │ │ │ -84AE08AC326F48B21447652121B1EB68AF857B8628F27BB4ED00F273E0DD044A │ │ │ │ │ -7D11A5BFAAC0A82328444CC9DD90167681B07D55CE28655F40C21250A226DEAB │ │ │ │ │ -2D46FFB680CB9242BE192AC0E55A44D45709FA6DE638C130D92C4E9B07BC3D61 │ │ │ │ │ -25CC2F0A7ED4F3574242FFE4461272EB1401266EEF551E0E2B0EF51FA8F250EC │ │ │ │ │ -FD9AFB6F5A0CC442B566BC24400133E3E9B9A9FC801CEF284FD2B3ECA43421FA │ │ │ │ │ -51E5D1EFE7BEAA96658362C438A0A5A6DCBC664A85EF88037B42355195B9D19C │ │ │ │ │ -7961D5F63B123451B298CD52C144FCD4F3641A823FBA14605E2DFD845E89102C │ │ │ │ │ -4E345CFD80E3EE6F097095A84C941FFC91B234F3615E4EE4C5D564284656E364 │ │ │ │ │ -AB9C4D1DE05F8FD065CA6064893F0CF3A3A501D59EF6568D05D818A010D06518 │ │ │ │ │ -E2C20418ADD1E652867F265084A27A5FE0C32213C59FFC3A84EDC89382521E5B │ │ │ │ │ -8AF66D76601F83C5C33CC9CF968C77B66F1FA074AC3DAD8E453C9264D03969EF │ │ │ │ │ -9E387BB3BEAA4BF0A9D88BA2CE6094E8996A3752A657E322A57AF006444BF516 │ │ │ │ │ -501C43CAA1BA7F16A3B6E4D3EBDECCCC19564DF18FB68194C132238A5441A21A │ │ │ │ │ -F52285CA1CA94A4BEC61EB509FA35EA5E393D662D938F4291F37EB7C2D5815BE │ │ │ │ │ -446813E1CFD06FFFFF2C4355C9DAFA48E765F4CC5DE4B9E37CFFB75E7A0B6F4B │ │ │ │ │ -4E412496F9C27DF4BDD90A869F0EBD81A57AE0B84051450A5A3E06CB9930DB2C │ │ │ │ │ -7C2DDB774BE870AEFCC9F4F067BE243FF3FD4B5C71B96C607DC4975973AF2650 │ │ │ │ │ -E7DF2BE3523A370EEDD07B5456B96E372ED10510CE677C044E609F21E93652FD │ │ │ │ │ -33CE612F587530D12214A3719CDB170C315B5D8763D5D4C67B5CAE90309E77AC │ │ │ │ │ -B45EB356C13A7BDE0D7320A9849CA357E30D7CF1085FFD70071932C3180AFC28 │ │ │ │ │ -B093016BA3F49A3878C34BB4A8727A441EB6CFC1A73F2313A7BF8D32EDF27E62 │ │ │ │ │ -EBEBC058FBA80B136FD2DE05C673B66482224ECEC63EDFB519AC13B5CC6624A6 │ │ │ │ │ -B3FD79037DA3851E93A386115852DBA88B176F21EDDB5386DC7C993C4210B28F │ │ │ │ │ -438131A586E34A09724E7CE60139F8247BFF14D2674805B3BD454C134728A43E │ │ │ │ │ -139E0AF71A7AC5CE42041EC83FD454B00AD29959FCF007789FFAF2D3492DCA4B │ │ │ │ │ -566EAFE97591ABC51CD0CD9BCD64E285FB823E41AA817E96B2B224005DAA4E15 │ │ │ │ │ -2141DB436B9D3FBA4EE4C876FD19A2E5133106FE2B9F704CB9614FCDC91B7950 │ │ │ │ │ -57053F45A5ED993B48189AAFAD5289F97AE2B0AEB5606579F6BD75F743EDB5B6 │ │ │ │ │ -5AA8F8A64CE507A47325081B3A013DB1BD596CDD3A83D2F29B070D6F9C57496E │ │ │ │ │ -14DF3F0F731C3BB00F2CE3D4BBACF1320322195D1DEA7A545BB4725BD1C6EC3D │ │ │ │ │ -63250C72B897741F8599D9D9BD2FB50EC80EFF2ECD6CE6603E95AABB45462ACF │ │ │ │ │ -12B005EE5979B6B05BCE9B97061686102349142A3CCC26D57F2A3283DD8B6E2A │ │ │ │ │ -98885E48C0D4A1A5C9612EDCB3B3D265E9B8CCCCA5D99F07F96C15B27D6A161F │ │ │ │ │ -936599E503C2859927201CACC31581AB7AB84F9EC9FFADC239F01DCC55940AB7 │ │ │ │ │ -FA884AA1EB6494C8E53DAD66E75A317428ACF9D943A74683BF547958F67D9E36 │ │ │ │ │ -F985EED50DEBCF255756A821927CB73848DCF167E96E975E959DE27FE7BA4FBA │ │ │ │ │ -D0EFC003F019D87572D6F9C73FC5B880C3EEDB7EF98E5EC3D25D6FE0015A6590 │ │ │ │ │ -E3C6EE632D7F6558B914609A8829CD1DEAB83A3F1207D5C3AAC9EAEA9DE1B4F8 │ │ │ │ │ -2375C5D4F630BCE13475F941ED2324D2CD4DCF2285298EAA4FFF89433D853860 │ │ │ │ │ -A974A9FC0808580FBDE7D02EDBB3D8C65BD3109AE8B359E96BFB7E21C696F440 │ │ │ │ │ -312B0CCAD810BF070DF8FC281E8198EB20A7FF9C9BCD291D74BC75EE46799485 │ │ │ │ │ -1AB2AE36B7E525034D146A856AF3BD9057A0033C08B606B89DD130548950C93D │ │ │ │ │ -94A8C92C47A34A791B1C108D2F36E899B79358B8081CCFC3D1A2F0521E4E2AE4 │ │ │ │ │ -7F500D6F2A53E5393E44201287225912590ABC738E8726622B67C3425639CCFB │ │ │ │ │ -F450B78A4918 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004B9BA1CC │ │ │ │ │ +580D3C6BDA4DC1B80B4365F1C80512453FC5316EC2D928FB731C3D6403E3C18B │ │ │ │ │ +E8424D644DF5E9A2134229C5C91CA68DB8E85BA2BB40F538F585DA6FA4037718 │ │ │ │ │ +B8053EBBA1E765346BCD5BDAA6C38115D31611D8A87A2238C145F2DA2F92E4DF │ │ │ │ │ +3987BD9C4D2A3D460E8941A68B125BCD9EE4F9FD262C4C8A71F47A2C81975635 │ │ │ │ │ +F1B981C274C53FA2ACCDE4C9D0A7C62D6C1EFF91CFC6712CA6A9F333C9564FCB │ │ │ │ │ +2A70F0AD715A79B10A08AB069E2A3C93BC0AED19D0CA10134B8DDDE8AF548DB2 │ │ │ │ │ +3A4AAA9C29682CF135BB767DAA16169A127EB50A7EECEB6480CF56A7D0F8AC56 │ │ │ │ │ +4A5090B3D75A790372886AF568D94C8165975A05BFBFDF1FFBA45F70700BB9E0 │ │ │ │ │ +57F3249EF9E9C8AD9CBCF6E4FD592DC4CDD2D7864F7C8A3FA6FC44C25C0CE7E1 │ │ │ │ │ +299F8A90B32B75DEA28917531621E1E7E0ECEE9E01665DEE99FBCF3EC3F30686 │ │ │ │ │ +513D7CBA745E660502603865D5A3E82D24B3F94B2884B21DC53AED87F49380E0 │ │ │ │ │ +68EE79C580931308DA762670C1F86F07FFB479773CD9C5DE6F22980DEC973D1C │ │ │ │ │ +A1E162D73932561BAAB24DE51DC8708291B666B36BABCA1FEDB6DD9C22572914 │ │ │ │ │ +7194DA044319F362452D53DD4D9A59134838E540F1E23805CEF53FF4F7519385 │ │ │ │ │ +1FAE3061F94369FEB1232BDA2E2A281E6972FB4524EFA37A598E7CDC097683EA │ │ │ │ │ +1B609952AEC0799B4711AAAB22D6B1D5CC729DE70897FDDC48AF0A12E40FFE30 │ │ │ │ │ +6528C601E68E8CFA4BBF897CF89DB712DE108DD1F084EFD917BFD9A70A74EB8F │ │ │ │ │ +D0D5B43CCC30373A5E871F18A969D01C69C2B4377622A0C8C4D7C4C28DDE5586 │ │ │ │ │ +BD17D5D640A6F396BD41993BD1932EE10953847F82F7BB36480B67A4F69F0763 │ │ │ │ │ +69423D1803B7BB60594ABEEE9578076639B84D8323F56104438803D45402FEE3 │ │ │ │ │ +045DAB16C4459DA9BBE01D0385CC771FB8DABDD8A9D280C18553F92FE6591CFD │ │ │ │ │ +26B82F28E6673BD823598D3F6CE03BEE04D9A21ED908DFC4F640227C148F133D │ │ │ │ │ +D32113275297C16EBCC9028AFD9102DE50E9CF67E7CF8C42BB8E73D1DAF8A5E2 │ │ │ │ │ +EF5979426229664A990DEF980A7038D2F229789D4F6EDBE1FB81BEC1A1BB14D7 │ │ │ │ │ +882515C62660E8877BE942712D57B86A2E19995AF087DECB7FD5208583C020AE │ │ │ │ │ +FEC86A2826530AD855006225300E4655F443C9360A8BAC96B5B096DDC9B12EDF │ │ │ │ │ +C862215AD6C432CF345FE701757E4EBB8C65F46912CB0F4DEF53672F7298D8F7 │ │ │ │ │ +EE51A9C5DE689A8D36956B7F0410893C0998DB03B73B4024CB046F8F6B32E07F │ │ │ │ │ +CD28A68AFB7152E45F1021DCD520D8A429FCDCA4B8054BAF0B48C4443280F198 │ │ │ │ │ +3360B078E6DEC37772DA8B629CFFD1534E8AA10E26B0BC58E92B9BF280C8EE45 │ │ │ │ │ +618EECDE904249F5A2010DC55D1028DFF4F058260B2B0A46541D6157970F44BD │ │ │ │ │ +D7483802D56A81184119DDBC914E8E394CBEEB506B61BB1CE2A3465252E5D8A3 │ │ │ │ │ +6BDD2D067E69D4ECEFC7D5568378F5F8B38EAFF138014185FE19DF7358A7A780 │ │ │ │ │ +3BE0E2CCD1561113F2F2319BDB503230DD0866121604710CEBBAA659ABFC010B │ │ │ │ │ +5CC40E5807F461D87E75BDC6AD96BCEF62AF668D48D7A76D08B57650F35CF609 │ │ │ │ │ +C0F791AEBEB75E29FA69596BAB419804AECE0F0238AAE64A6C13A22EBF4E3EAC │ │ │ │ │ +3570DECE85F54064486B2364D63E94FEB7C16350CDA318510A45C8848DB470ED │ │ │ │ │ +BFAFD2365681D65CFF3E6C1B4B7C8AE3066F96E819D05B97F3A6C2BFF8A72978 │ │ │ │ │ +EEB7F632FF604AD003A3CCA5A0465D53033A646E8082D3491EDECA3DA1A0E1BB │ │ │ │ │ +64BF36946520438D2EE72FA9EB1CEEDF56510AADA55A8DE280E23C904E0810FA │ │ │ │ │ +A3177CF684F06A4042DE4CD4AB21E2F0616153BEEE58EBBD89911FA43BC52969 │ │ │ │ │ +230C8137DB34C13E147B06C7A3875A931E1AC127E7D3EA0DF8346B6971F80901 │ │ │ │ │ +DC37F2DE1A0B81FD93CA3B5EB9B29ECABA1492901B1BA261DAB872FB3431C718 │ │ │ │ │ +9C9CDA7864908CD773864908DEB44E343221C2C4C335341789A46325D94C767C │ │ │ │ │ +740E3B60CE6D452A3A665967F568671FD7DD460B404B9C3D2EDCD47A336AA2C7 │ │ │ │ │ +BB0B1AC3823978F610629EF7AB526098A7EE7076F50A146D8134BA2DEC1B8ACF │ │ │ │ │ +68A7E4A9B7BE17FB71480516F2D6A8866E56CFD7C7A41311F48DDDD9887DACB8 │ │ │ │ │ +73FDAF5F25E956AFB0A9D530DE2E1128F006AAC9A78715BA2F90C8FED3729BFA │ │ │ │ │ +BDDD4098F870A27A91A0CB540D166FF86A442E95C9C361FD23378A2A138EAFB8 │ │ │ │ │ +D7050B486E1CB95068D890BCCD669456F3385C8F1793CE545099421368FE0F46 │ │ │ │ │ +53137AD2B65030B19CE7FF6B1669DB7A3C440AEF27149780E36C7097B7A8B71B │ │ │ │ │ +8789EECFA9A70B1F9695BB5D94E9A7D341291C1CA1BDEF4BE3EFCB8234CE9FFD │ │ │ │ │ +E1C4963CF919780129FA60162FEAA8AE97328F4BA14D949057A3EE74214F2D29 │ │ │ │ │ +51E7BE584446F6702F39957AE455CF8AF0C36AADAA39B53553D923CA5E9D4988 │ │ │ │ │ +76701B4F77DAE5185AC29900 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -4180,16 +4183,16 @@ │ │ │ │ │ /Fb 235[71 20[{}1 90.9091 /CMSY10 rf /Fc 206[35 35 48[{}2 │ │ │ │ │ 66.4176 /CMR8 rf /Fd 133[50 59 4[44 44 46 2[56 62 93 │ │ │ │ │ 31 2[31 62 2[51 62 50 1[54 11[86 5[84 5[42 6[80 12[56 │ │ │ │ │ 56 56 56 56 2[31 46[{}25 99.6264 /CMBX12 rf /Fe 139[62 │ │ │ │ │ 4[62 4[62 4[62 1[62 62 11[62 17[62 68[{}8 119.552 /CMTT12 │ │ │ │ │ rf /Ff 138[49 30 37 38 1[46 46 51 74 23 42 1[28 46 42 │ │ │ │ │ 1[42 46 42 42 46 12[65 1[66 11[59 62 69 2[68 6[28 58[{}25 │ │ │ │ │ -90.9091 /CMTI10 rf /Fg 134[48 23[45 19[83 18[25 5[45 │ │ │ │ │ -1[45 45 45 3[25 44[{}9 90.9091 /CMSL10 rf /Fh 134[71 │ │ │ │ │ +90.9091 /CMTI10 rf /Fg 138[51 6[51 8[40 26[47 15[25 4[45 │ │ │ │ │ +1[45 45 1[45 3[25 44[{}10 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 │ │ │ │ │ @@ -4307,17 +4310,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 1278 4 v │ │ │ │ │ -1460 w Fk(DV)30 b Fg(:)h Ff(DRAFT)f Fg(Ma)m(y)h(1,)g(2024)p │ │ │ │ │ -2622 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 1272 4 v │ │ │ │ │ +1453 w Fk(DV)30 b Fg(:)h Ff(DRAFT)f Fg(June)f(3,)i(2025)p │ │ │ │ │ +2629 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 │ │ │ │ │ @@ -4371,17 +4374,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 1278 4 v 1460 100 a Fk(DV)30 │ │ │ │ │ -b Fg(:)g Ff(DRAFT)121 b Fg(Ma)m(y)32 b(1,)f(2024)p 2575 │ │ │ │ │ -100 V 1278 w Fl(3)0 399 y Fd(1.2.2)112 b(Instance)38 │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1272 4 v 1453 100 a Fk(DV)30 │ │ │ │ │ +b Fg(:)g Ff(DRAFT)121 b Fg(June)30 b(3,)h(2025)p 2582 │ │ │ │ │ +100 V 1272 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 │ │ │ │ │ @@ -4435,17 +4438,17 @@ │ │ │ │ │ (double)h(value)f(\))h(;)227 5242 y Fl(This)30 b(metho)s(d)g(sets)g │ │ │ │ │ (the)h Fk(loc)p Fl('th)f(en)m(try)g(of)h(the)f(v)m(ector)i(to)f │ │ │ │ │ Fk(value)p Fl(.)227 5407 y Ff(Err)-5 b(or)33 b(che)-5 │ │ │ │ │ b(cking:)40 b Fl(If)28 b Fk(dv)h Fl(is)g Fk(NULL)e Fl(or)j │ │ │ │ │ Fk(loc)46 b(<)i(0)p Fl(,)29 b(an)g(error)g(message)h(is)f(prin)m(ted)f │ │ │ │ │ (and)h(the)g(program)g(exits.)p eop end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fl(4)p 136 100 1278 4 v │ │ │ │ │ -1460 w Fk(DV)30 b Fg(:)h Ff(DRAFT)f Fg(Ma)m(y)h(1,)g(2024)p │ │ │ │ │ -2622 100 V 0 399 a Fd(1.2.3)112 b(Initializer)38 b(metho)s(ds)0 │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fl(4)p 136 100 1272 4 v │ │ │ │ │ +1453 w Fk(DV)30 b Fg(:)h Ff(DRAFT)f Fg(June)f(3,)i(2025)p │ │ │ │ │ +2629 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 │ │ │ │ │ @@ -4521,17 +4524,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 1278 4 v 1460 100 a Fk(DV)30 │ │ │ │ │ -b Fg(:)g Ff(DRAFT)121 b Fg(Ma)m(y)32 b(1,)f(2024)p 2575 │ │ │ │ │ -100 V 1278 w Fl(5)227 399 y(the)37 b(v)m(ector)h(is)e(lost,)j(namely)e │ │ │ │ │ +TeXDict begin 5 4 bop 91 100 1272 4 v 1453 100 a Fk(DV)30 │ │ │ │ │ +b Fg(:)g Ff(DRAFT)121 b Fg(June)30 b(3,)h(2025)p 2582 │ │ │ │ │ +100 V 1272 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 │ │ │ │ │ @@ -4590,17 +4593,17 @@ │ │ │ │ │ 5088 y(7.)46 b Fk(int)h(DV_sizeOf)e(\()j(DV)f(*dv)g(\))g(;)227 │ │ │ │ │ 5247 y Fl(This)30 b(metho)s(d)g(returns)f(the)h(n)m(um)m(b)s(er)f(of)i │ │ │ │ │ (b)m(ytes)g(tak)m(en)g(b)m(y)g(the)f(ob)5 b(ject.)227 │ │ │ │ │ 5407 y Ff(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fl(If)30 │ │ │ │ │ b Fk(dv)g Fl(is)h Fk(NULL)e Fl(an)h(error)g(message)h(is)g(prin)m(ted)f │ │ │ │ │ (and)g(the)g(program)g(exits.)p eop end │ │ │ │ │ %%Page: 6 6 │ │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fl(6)p 136 100 1278 4 v │ │ │ │ │ -1460 w Fk(DV)30 b Fg(:)h Ff(DRAFT)f Fg(Ma)m(y)h(1,)g(2024)p │ │ │ │ │ -2622 100 V 111 399 a Fl(8.)46 b Fk(double)g(*)i(DV_first)d(\()j(DV)f │ │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fl(6)p 136 100 1272 4 v │ │ │ │ │ +1453 w Fk(DV)30 b Fg(:)h Ff(DRAFT)f Fg(June)f(3,)i(2025)p │ │ │ │ │ +2629 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 │ │ │ │ │ @@ -4660,17 +4663,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 1278 4 v 1460 100 a Fk(DV)30 │ │ │ │ │ -b Fg(:)g Ff(DRAFT)121 b Fg(Ma)m(y)32 b(1,)f(2024)p 2575 │ │ │ │ │ -100 V 1278 w Fl(7)111 399 y(1.)46 b Fk(int)h(DV_readFromFile)d(\()j(DV) │ │ │ │ │ +TeXDict begin 7 6 bop 91 100 1272 4 v 1453 100 a Fk(DV)30 │ │ │ │ │ +b Fg(:)g Ff(DRAFT)121 b Fg(June)30 b(3,)h(2025)p 2582 │ │ │ │ │ +100 V 1272 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 │ │ │ │ │ @@ -4751,17 +4754,17 @@ │ │ │ │ │ (\))h(;)227 5259 y Fl(This)30 b(metho)s(d)g(writes)g(the)h(header)f │ │ │ │ │ (and)g(statistics)i(to)f(a)g(\014le.)41 b(The)29 b(v)-5 │ │ │ │ │ b(alue)31 b Fk(1)f Fl(is)h(returned.)227 5407 y Ff(Err)-5 │ │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fl(If)30 b Fk(dv)g Fl(or)g │ │ │ │ │ Fk(fp)g Fl(are)h Fk(NULL)p Fl(,)e(an)i(error)f(message)h(is)g(prin)m │ │ │ │ │ (ted)f(and)f(zero)i(is)g(returned.)p eop end │ │ │ │ │ %%Page: 8 8 │ │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fl(8)p 136 100 1278 4 v │ │ │ │ │ -1460 w Fk(DV)30 b Fg(:)h Ff(DRAFT)f Fg(Ma)m(y)h(1,)g(2024)p │ │ │ │ │ -2622 100 V 111 399 a Fl(9.)46 b Fk(int)h(DV_writeForMatlab)c(\()48 │ │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fl(8)p 136 100 1272 4 v │ │ │ │ │ +1453 w Fk(DV)30 b Fg(:)h Ff(DRAFT)f Fg(June)f(3,)i(2025)p │ │ │ │ │ +2629 100 V 111 399 a Fl(9.)46 b Fk(int)h(DV_writeForMatlab)c(\()48 │ │ │ │ │ b(DV)f(*dv,)g(char)f(*name,)g(FILE)h(*fp)g(\))g(;)227 │ │ │ │ │ 549 y Fl(This)37 b(metho)s(d)h(writes)f(the)i(en)m(tries)f(of)g(the)g │ │ │ │ │ (v)m(ector)i(to)e(a)g(\014le)g(suitable)h(to)f(b)s(e)g(read)f(b)m(y)h │ │ │ │ │ (Matlab.)64 b(The)227 662 y(c)m(haracter)31 b(string)e │ │ │ │ │ Fk(name)f Fl(is)h(the)g(name)g(of)g(the)g(v)m(ector,)i(e.g,)g(if)e │ │ │ │ │ Fk(name)46 b(=)i("A")p Fl(,)28 b(then)h(w)m(e)g(ha)m(v)m(e)h(lines)g │ │ │ │ │ (of)f(the)227 775 y(form)227 1000 y Fk(A\(1\))47 b(=)g │ │ │ │ │ ├── ps2ascii {} │ │ │ │ │ │ @@ -22,15 +22,15 @@ │ │ │ │ │ │ simplest operations, and so when we need to manipulate an double vector inside a loop, we extract │ │ │ │ │ │ out the size and pointer to the base array from the DV object. On the other hand, the convenience │ │ │ │ │ │ makes it a widely used object. │ │ │ │ │ │ 1.1 Data Structure │ │ │ │ │ │ The DV structure has three fields. │ │ │ │ │ │ • int size : present size of the vector. │ │ │ │ │ │ 1 │ │ │ │ │ │ - 2 DV : DRAFT May 1, 2024 │ │ │ │ │ │ + 2 DV : DRAFT June 3, 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 May 1, 2024 3 │ │ │ │ │ │ + DV : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 4 DV : DRAFT June 3, 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 May 1, 2024 5 │ │ │ │ │ │ + DV : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 6 DV : DRAFT June 3, 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 May 1, 2024 7 │ │ │ │ │ │ + DV : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 8 DV : DRAFT June 3, 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.05.01:0544 │ │ │ │ │ +%DVIPSSource: TeX output 2025.06.03:1221 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -1621,21 +1621,22 @@ │ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ │ /UnderlineThickness 50 def │ │ │ │ │ end readonly def │ │ │ │ │ /Encoding 256 array │ │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ │ dup 44 /comma put │ │ │ │ │ dup 48 /zero put │ │ │ │ │ -dup 49 /one put │ │ │ │ │ dup 50 /two put │ │ │ │ │ -dup 52 /four put │ │ │ │ │ +dup 51 /three put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 77 /M put │ │ │ │ │ -dup 97 /a put │ │ │ │ │ -dup 121 /y put │ │ │ │ │ +dup 74 /J put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ +dup 110 /n put │ │ │ │ │ +dup 117 /u put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ │ @@ -1816,68 +1817,70 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004ACD1870 │ │ │ │ │ -A5EA947858F5795870BFE1343AD803FB854BF8F5A4E794E8EC57BE41DB5B8734 │ │ │ │ │ -13E47950F29A81EA0C81EA798863883D7F41F78325CA190CBBFFE822AE494550 │ │ │ │ │ -4BE83703071FC9512D128927AF3F63CEF8F86ABE1E15D7B4DDD39576E7DFF45E │ │ │ │ │ -3CB4115AAB1830DE8647B915DB4BEBEB5235C281E098B899BAB951D8D5798F01 │ │ │ │ │ -7F7C47336D31438E5126738AFEAB29E9A7CBE06DE4DD604477B542D2620DFD58 │ │ │ │ │ -28FE34238572F23C5A8EB7ACEE1E154DA13FC1A5AA67A3BA8C5CDFB2B80312C9 │ │ │ │ │ -BC9FAE56D08DDFA9498E6EF0D0F6BD18B3923E0B670B0740528BC843610736CB │ │ │ │ │ -80228C105C2F72C3C22D610C3D8C268DEEA2AEEE3221E198E79FE2966487360C │ │ │ │ │ -84AE08AC326F48B21447652121B1EB68AF857B8628F27BB4ED00F273E0DD044A │ │ │ │ │ -7D11A5BFAAC0A82328444CC9DD90167681B07D55CE28655F40C21250A226DEAB │ │ │ │ │ -2D46FFB680CB9242BE192AC0E55A44D45709FA6DE638C130D92C4E9B07BC3D61 │ │ │ │ │ -25CC2F0A7ED4F3574242FFE4461272EB1401266EEF551E0E2B0EF51FA8F250EC │ │ │ │ │ -FD9AFB6F5A0CC442B566BC24400133E3E9B9A9FC801CEF284FD2B3ECA43421FA │ │ │ │ │ -51E5D1EFE7BEAA96658362C438A0A5A6DCBC664A85EF88037B42355195B9D19C │ │ │ │ │ -7961D5F63B123451B298CD52C144FCD4F3641A823FBA14605E2DFD845E89102C │ │ │ │ │ -4E345CFD80E3EE6F097095A84C941FFC91B234F3615E4EE4C5D564284656E364 │ │ │ │ │ -AB9C4D1DE05F8FD065CA6064893F0CF3A3A501D59EF6568D05D818A010D06518 │ │ │ │ │ -E2C20418ADD1E652867F265084A27A5FE0C32213C59FFC3A84EDC89382521E5B │ │ │ │ │ -8AF66D76601F83C5C33CC9CF968C77B66F1FA074AC3DAD8E453C9264D03969EF │ │ │ │ │ -9E387BB3BEAA4BF0A9D88BA2CE6094E8996A3752A657E322A57AF006444BF516 │ │ │ │ │ -501C43CAA1BA7F16A3B6E4D3EBDECCCC19564DF18FB68194C132238A5441A21A │ │ │ │ │ -F52285CA1CA94A4BEC61EB509FA35EA5E393D662D938F4291F37EB7C2D5815BE │ │ │ │ │ -446813E1CFD06FFFFF2C4355C9DAFA48E765F4CC5DE4B9E37CFFB75E7A0B6F4B │ │ │ │ │ -4E412496F9C27DF4BDD90A869F0EBD81A57AE0B84051450A5A3E06CB9930DB2C │ │ │ │ │ -7C2DDB774BE870AEFCC9F4F067BE243FF3FD4B5C71B96C607DC4975973AF2650 │ │ │ │ │ -E7DF2BE3523A370EEDD07B5456B96E372ED10510CE677C044E609F21E93652FD │ │ │ │ │ -33CE612F587530D12214A3719CDB170C315B5D8763D5D4C67B5CAE90309E77AC │ │ │ │ │ -B45EB356C13A7BDE0D7320A9849CA357E30D7CF1085FFD70071932C3180AFC28 │ │ │ │ │ -B093016BA3F49A3878C34BB4A8727A441EB6CFC1A73F2313A7BF8D32EDF27E62 │ │ │ │ │ -EBEBC058FBA80B136FD2DE05C673B66482224ECEC63EDFB519AC13B5CC6624A6 │ │ │ │ │ -B3FD79037DA3851E93A386115852DBA88B176F21EDDB5386DC7C993C4210B28F │ │ │ │ │ -438131A586E34A09724E7CE60139F8247BFF14D2674805B3BD454C134728A43E │ │ │ │ │ -139E0AF71A7AC5CE42041EC83FD454B00AD29959FCF007789FFAF2D3492DCA4B │ │ │ │ │ -566EAFE97591ABC51CD0CD9BCD64E285FB823E41AA817E96B2B224005DAA4E15 │ │ │ │ │ -2141DB436B9D3FBA4EE4C876FD19A2E5133106FE2B9F704CB9614FCDC91B7950 │ │ │ │ │ -57053F45A5ED993B48189AAFAD5289F97AE2B0AEB5606579F6BD75F743EDB5B6 │ │ │ │ │ -5AA8F8A64CE507A47325081B3A013DB1BD596CDD3A83D2F29B070D6F9C57496E │ │ │ │ │ -14DF3F0F731C3BB00F2CE3D4BBACF1320322195D1DEA7A545BB4725BD1C6EC3D │ │ │ │ │ -63250C72B897741F8599D9D9BD2FB50EC80EFF2ECD6CE6603E95AABB45462ACF │ │ │ │ │ -12B005EE5979B6B05BCE9B97061686102349142A3CCC26D57F2A3283DD8B6E2A │ │ │ │ │ -98885E48C0D4A1A5C9612EDCB3B3D265E9B8CCCCA5D99F07F96C15B27D6A161F │ │ │ │ │ -936599E503C2859927201CACC31581AB7AB84F9EC9FFADC239F01DCC55940AB7 │ │ │ │ │ -FA884AA1EB6494C8E53DAD66E75A317428ACF9D943A74683BF547958F67D9E36 │ │ │ │ │ -F985EED50DEBCF255756A821927CB73848DCF167E96E975E959DE27FE7BA4FBA │ │ │ │ │ -D0EFC003F019D87572D6F9C73FC5B880C3EEDB7EF98E5EC3D25D6FE0015A6590 │ │ │ │ │ -E3C6EE632D7F6558B914609A8829CD1DEAB83A3F1207D5C3AAC9EAEA9DE1B4F8 │ │ │ │ │ -2375C5D4F630BCE13475F941ED2324D2CD4DCF2285298EAA4FFF89433D853860 │ │ │ │ │ -A974A9FC0808580FBDE7D02EDBB3D8C65BD3109AE8B359E96BFB7E21C696F440 │ │ │ │ │ -312B0CCAD810BF070DF8FC281E8198EB20A7FF9C9BCD291D74BC75EE46799485 │ │ │ │ │ -1AB2AE36B7E525034D146A856AF3BD9057A0033C08B606B89DD130548950C93D │ │ │ │ │ -94A8C92C47A34A791B1C108D2F36E899B79358B8081CCFC3D1A2F0521E4E2AE4 │ │ │ │ │ -7F500D6F2A53E5393E44201287225912590ABC738E8726622B67C3425639CCFB │ │ │ │ │ -F450B78A4918 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004B9BA1CC │ │ │ │ │ +580D3C6BDA4DC1B80B4365F1C80512453FC5316EC2D928FB731C3D6403E3C18B │ │ │ │ │ +E8424D644DF5E9A2134229C5C91CA68DB8E85BA2BB40F538F585DA6FA4037718 │ │ │ │ │ +B8053EBBA1E765346BCD5BDAA6C38115D31611D8A87A2238C145F2DA2F92E4DF │ │ │ │ │ +3987BD9C4D2A3D460E8941A68B125BCD9EE4F9FD262C4C8A71F47A2C81975635 │ │ │ │ │ +F1B981C274C53FA2ACCDE4C9D0A7C62D6C1EFF91CFC6712CA6A9F333C9564FCB │ │ │ │ │ +2A70F0AD715A79B10A08AB069E2A3C93BC0AED19D0CA10134B8DDDE8AF548DB2 │ │ │ │ │ +3A4AAA9C29682CF135BB767DAA16169A127EB50A7EECEB6480CF56A7D0F8AC56 │ │ │ │ │ +4A5090B3D75A790372886AF568D94C8165975A05BFBFDF1FFBA45F70700BB9E0 │ │ │ │ │ +57F3249EF9E9C8AD9CBCF6E4FD592DC4CDD2D7864F7C8A3FA6FC44C25C0CE7E1 │ │ │ │ │ +299F8A90B32B75DEA28917531621E1E7E0ECEE9E01665DEE99FBCF3EC3F30686 │ │ │ │ │ +513D7CBA745E660502603865D5A3E82D24B3F94B2884B21DC53AED87F49380E0 │ │ │ │ │ +68EE79C580931308DA762670C1F86F07FFB479773CD9C5DE6F22980DEC973D1C │ │ │ │ │ +A1E162D73932561BAAB24DE51DC8708291B666B36BABCA1FEDB6DD9C22572914 │ │ │ │ │ +7194DA044319F362452D53DD4D9A59134838E540F1E23805CEF53FF4F7519385 │ │ │ │ │ +1FAE3061F94369FEB1232BDA2E2A281E6972FB4524EFA37A598E7CDC097683EA │ │ │ │ │ +1B609952AEC0799B4711AAAB22D6B1D5CC729DE70897FDDC48AF0A12E40FFE30 │ │ │ │ │ +6528C601E68E8CFA4BBF897CF89DB712DE108DD1F084EFD917BFD9A70A74EB8F │ │ │ │ │ +D0D5B43CCC30373A5E871F18A969D01C69C2B4377622A0C8C4D7C4C28DDE5586 │ │ │ │ │ +BD17D5D640A6F396BD41993BD1932EE10953847F82F7BB36480B67A4F69F0763 │ │ │ │ │ +69423D1803B7BB60594ABEEE9578076639B84D8323F56104438803D45402FEE3 │ │ │ │ │ +045DAB16C4459DA9BBE01D0385CC771FB8DABDD8A9D280C18553F92FE6591CFD │ │ │ │ │ +26B82F28E6673BD823598D3F6CE03BEE04D9A21ED908DFC4F640227C148F133D │ │ │ │ │ +D32113275297C16EBCC9028AFD9102DE50E9CF67E7CF8C42BB8E73D1DAF8A5E2 │ │ │ │ │ +EF5979426229664A990DEF980A7038D2F229789D4F6EDBE1FB81BEC1A1BB14D7 │ │ │ │ │ +882515C62660E8877BE942712D57B86A2E19995AF087DECB7FD5208583C020AE │ │ │ │ │ +FEC86A2826530AD855006225300E4655F443C9360A8BAC96B5B096DDC9B12EDF │ │ │ │ │ +C862215AD6C432CF345FE701757E4EBB8C65F46912CB0F4DEF53672F7298D8F7 │ │ │ │ │ +EE51A9C5DE689A8D36956B7F0410893C0998DB03B73B4024CB046F8F6B32E07F │ │ │ │ │ +CD28A68AFB7152E45F1021DCD520D8A429FCDCA4B8054BAF0B48C4443280F198 │ │ │ │ │ +3360B078E6DEC37772DA8B629CFFD1534E8AA10E26B0BC58E92B9BF280C8EE45 │ │ │ │ │ +618EECDE904249F5A2010DC55D1028DFF4F058260B2B0A46541D6157970F44BD │ │ │ │ │ +D7483802D56A81184119DDBC914E8E394CBEEB506B61BB1CE2A3465252E5D8A3 │ │ │ │ │ +6BDD2D067E69D4ECEFC7D5568378F5F8B38EAFF138014185FE19DF7358A7A780 │ │ │ │ │ +3BE0E2CCD1561113F2F2319BDB503230DD0866121604710CEBBAA659ABFC010B │ │ │ │ │ +5CC40E5807F461D87E75BDC6AD96BCEF62AF668D48D7A76D08B57650F35CF609 │ │ │ │ │ +C0F791AEBEB75E29FA69596BAB419804AECE0F0238AAE64A6C13A22EBF4E3EAC │ │ │ │ │ +3570DECE85F54064486B2364D63E94FEB7C16350CDA318510A45C8848DB470ED │ │ │ │ │ +BFAFD2365681D65CFF3E6C1B4B7C8AE3066F96E819D05B97F3A6C2BFF8A72978 │ │ │ │ │ +EEB7F632FF604AD003A3CCA5A0465D53033A646E8082D3491EDECA3DA1A0E1BB │ │ │ │ │ +64BF36946520438D2EE72FA9EB1CEEDF56510AADA55A8DE280E23C904E0810FA │ │ │ │ │ +A3177CF684F06A4042DE4CD4AB21E2F0616153BEEE58EBBD89911FA43BC52969 │ │ │ │ │ +230C8137DB34C13E147B06C7A3875A931E1AC127E7D3EA0DF8346B6971F80901 │ │ │ │ │ +DC37F2DE1A0B81FD93CA3B5EB9B29ECABA1492901B1BA261DAB872FB3431C718 │ │ │ │ │ +9C9CDA7864908CD773864908DEB44E343221C2C4C335341789A46325D94C767C │ │ │ │ │ +740E3B60CE6D452A3A665967F568671FD7DD460B404B9C3D2EDCD47A336AA2C7 │ │ │ │ │ +BB0B1AC3823978F610629EF7AB526098A7EE7076F50A146D8134BA2DEC1B8ACF │ │ │ │ │ +68A7E4A9B7BE17FB71480516F2D6A8866E56CFD7C7A41311F48DDDD9887DACB8 │ │ │ │ │ +73FDAF5F25E956AFB0A9D530DE2E1128F006AAC9A78715BA2F90C8FED3729BFA │ │ │ │ │ +BDDD4098F870A27A91A0CB540D166FF86A442E95C9C361FD23378A2A138EAFB8 │ │ │ │ │ +D7050B486E1CB95068D890BCCD669456F3385C8F1793CE545099421368FE0F46 │ │ │ │ │ +53137AD2B65030B19CE7FF6B1669DB7A3C440AEF27149780E36C7097B7A8B71B │ │ │ │ │ +8789EECFA9A70B1F9695BB5D94E9A7D341291C1CA1BDEF4BE3EFCB8234CE9FFD │ │ │ │ │ +E1C4963CF919780129FA60162FEAA8AE97328F4BA14D949057A3EE74214F2D29 │ │ │ │ │ +51E7BE584446F6702F39957AE455CF8AF0C36AADAA39B53553D923CA5E9D4988 │ │ │ │ │ +76701B4F77DAE5185AC29900 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -3666,16 +3669,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 23[42 19[76 18[23 5[42 1[42 42 42 3[23 44[{}9 │ │ │ │ │ -83.022 /CMSL10 rf │ │ │ │ │ +/Fe 138[46 6[46 8[37 26[43 15[23 4[42 1[42 42 1[42 3[23 │ │ │ │ │ +44[{}10 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 │ │ │ │ │ @@ -3798,17 +3801,17 @@ │ │ │ │ │ b Fj(returns)j Fi(1)g Fj(if)h(the)g(matrix)f(has)g(real)g(en)n(tries,)g │ │ │ │ │ (and)h Fi(0)f Fj(otherwise.)125 5407 y Ff(\210)42 b Fi(DENSEMTX)p │ │ │ │ │ 565 5407 V 28 w(IS)p 681 5407 V 30 w(COMPLEX\(mtx\))23 │ │ │ │ │ b Fj(returns)k Fi(1)g Fj(if)h(the)g(matrix)f(has)g(complex)g(en)n │ │ │ │ │ (tries,)g(and)h Fi(0)f Fj(otherwise.)1929 5656 y(1)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fj(2)p 125 100 1201 4 v │ │ │ │ │ -1366 w Fi(DenseMtx)25 b Fe(:)37 b Fh(DRAFT)27 b Fe(Ma)n(y)g(1,)g(2024)p │ │ │ │ │ -2699 100 V 0 390 a Fg(1.2)135 b(Protot)l(yp)t(es)46 b(and)f │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fj(2)p 125 100 1195 4 v │ │ │ │ │ +1360 w Fi(DenseMtx)24 b Fe(:)37 b Fh(DRAFT)28 b Fe(June)f(3,)g(2025)p │ │ │ │ │ +2705 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) │ │ │ │ │ @@ -3872,19 +3875,19 @@ │ │ │ │ │ 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 1201 4 v 1367 100 a Fi(DenseMtx)24 │ │ │ │ │ -b Fe(:)37 b Fh(DRAFT)111 b Fe(Ma)n(y)26 b(1,)i(2024)p │ │ │ │ │ -2660 100 V 1201 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 │ │ │ │ │ +TeXDict begin 3 2 bop 83 100 1195 4 v 1361 100 a Fi(DenseMtx)24 │ │ │ │ │ +b Fe(:)37 b Fh(DRAFT)110 b Fe(June)28 b(3,)f(2025)p 2666 │ │ │ │ │ +100 V 1195 w Fj(3)101 390 y(5.)42 b Fi(int)g(DenseMtx_rowIncr)o(em)o │ │ │ │ │ +(ent)37 b(\()43 b(DenseMtx)d(*mtx)i(\))h(;)208 529 y │ │ │ │ │ +Fj(This)24 b(metho)r(d)g(returns)f(the)i(ro)n(w)e(incremen)n(t)g(of)h │ │ │ │ │ (the)h(ob)5 b(ject,)24 b(the)h(di\013erence)f(in)g(memory)f(lo)r │ │ │ │ │ (cations)h(of)g(t)n(w)n(o)f(en)n(tries)208 629 y(in)k(consecutiv)n(e)g │ │ │ │ │ (ro)n(ws)f(in)i(the)g(same)f(column.)208 767 y Fh(Err)l(or)j(che)l │ │ │ │ │ (cking:)38 b Fj(If)28 b Fi(mtx)f Fj(is)g Fi(NULL)p Fj(,)f(an)i(error)d │ │ │ │ │ (message)i(is)g(prin)n(ted)h(and)f(the)h(program)e(exits.)101 │ │ │ │ │ 945 y(6.)42 b Fi(void)f(DenseMtx_rowIndic)o(es)c(\()43 │ │ │ │ │ b(DenseMtx)e(*mtx,)g(int)i(*pnrow,)d(**prowind)g(\))j(;)208 │ │ │ │ │ @@ -3953,17 +3956,17 @@ │ │ │ │ │ Fi(jcol)f Fj(to)i(b)r(e)208 5169 y Fi(\(real,imag\))p │ │ │ │ │ Fj(.)208 5308 y Fh(Err)l(or)31 b(che)l(cking:)42 b Fj(If)29 │ │ │ │ │ b Fi(mtx)f Fj(is)h Fi(NULL)p Fj(,)e(or)h(if)i(the)f(matrix)g(is)g(not)g │ │ │ │ │ (complex,)g(or)f(if)h Fi(irow)f Fj(or)g Fi(jcol)f Fj(is)i(out)g(of)g │ │ │ │ │ (range,)f(an)208 5407 y(error)d(message)h(is)i(prin)n(ted)f(and)h(the)g │ │ │ │ │ (program)d(exits.)p eop end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fj(4)p 125 100 1201 4 v │ │ │ │ │ -1366 w Fi(DenseMtx)25 b Fe(:)37 b Fh(DRAFT)27 b Fe(Ma)n(y)g(1,)g(2024)p │ │ │ │ │ -2699 100 V 60 390 a Fj(14.)41 b Fi(int)h(DenseMtx_row)d(\()k(DenseMtx)d │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fj(4)p 125 100 1195 4 v │ │ │ │ │ +1360 w Fi(DenseMtx)24 b Fe(:)37 b Fh(DRAFT)28 b Fe(June)f(3,)g(2025)p │ │ │ │ │ +2705 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 │ │ │ │ │ @@ -4050,17 +4053,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 1201 4 v 1367 100 a Fi(DenseMtx)24 │ │ │ │ │ -b Fe(:)37 b Fh(DRAFT)111 b Fe(Ma)n(y)26 b(1,)i(2024)p │ │ │ │ │ -2660 100 V 1201 w Fj(5)0 390 y Fc(1.2.4)112 b(Utilit)m(y)38 │ │ │ │ │ +TeXDict begin 5 4 bop 83 100 1195 4 v 1361 100 a Fi(DenseMtx)24 │ │ │ │ │ +b Fe(:)37 b Fh(DRAFT)110 b Fe(June)28 b(3,)f(2025)p 2666 │ │ │ │ │ +100 V 1195 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 │ │ │ │ │ @@ -4139,17 +4142,17 @@ │ │ │ │ │ Fi(irowB)e Fj(is)h(out)h(of)f(range,)h(or)f(if)h Fi(mtxA)e │ │ │ │ │ Fj(is)h Fi(NULL)p Fj(,)f(or)h(if)h Fi(irowA)e Fj(is)h(out)h(of)208 │ │ │ │ │ 5308 y(range,)23 b(or)h(if)g(the)h(n)n(um)n(b)r(er)f(of)h(columns)f(in) │ │ │ │ │ g Fi(mtxB)f Fj(and)h Fi(mtxA)f Fj(are)g(not)h(the)h(same,)g(an)f(error) │ │ │ │ │ e(message)h(is)h(prin)n(ted)g(and)208 5407 y(the)k(program)d(exits.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 6 6 │ │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fj(6)p 125 100 1201 4 v │ │ │ │ │ -1366 w Fi(DenseMtx)25 b Fe(:)37 b Fh(DRAFT)27 b Fe(Ma)n(y)g(1,)g(2024)p │ │ │ │ │ -2699 100 V 101 390 a Fj(9.)42 b Fi(void)f(DenseMtx_addRow)d(\()43 │ │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fj(6)p 125 100 1195 4 v │ │ │ │ │ +1360 w Fi(DenseMtx)24 b Fe(:)37 b Fh(DRAFT)28 b Fe(June)f(3,)g(2025)p │ │ │ │ │ +2705 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 │ │ │ │ │ @@ -4222,17 +4225,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 1201 4 v 1367 100 a Fi(DenseMtx)24 │ │ │ │ │ -b Fe(:)37 b Fh(DRAFT)111 b Fe(Ma)n(y)26 b(1,)i(2024)p │ │ │ │ │ -2660 100 V 1201 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 1195 4 v 1361 100 a Fi(DenseMtx)24 │ │ │ │ │ +b Fe(:)37 b Fh(DRAFT)110 b Fe(June)28 b(3,)f(2025)p 2666 │ │ │ │ │ +100 V 1195 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 │ │ │ │ │ @@ -4319,17 +4322,17 @@ │ │ │ │ │ 5270 y Fj(This)27 b(metho)r(d)h(writes)f(a)h Fi(DenseMtx)c │ │ │ │ │ Fj(ob)5 b(ject)27 b(to)h(a)f(\014le)h(in)g(an)f(easily)g(readable)f │ │ │ │ │ (format.)208 5407 y Fh(Err)l(or)k(che)l(cking:)38 b Fj(If)28 │ │ │ │ │ b Fi(mtx)f Fj(or)g Fi(fp)f Fj(are)h Fi(NULL)p Fj(,)f(an)h(error)f │ │ │ │ │ (message)g(is)i(prin)n(ted)f(and)h(zero)e(is)i(returned.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 8 8 │ │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fj(8)p 125 100 1201 4 v │ │ │ │ │ -1366 w Fi(DenseMtx)25 b Fe(:)37 b Fh(DRAFT)27 b Fe(Ma)n(y)g(1,)g(2024)p │ │ │ │ │ -2699 100 V 101 390 a Fj(9.)42 b Fi(void)f(DenseMtx_writeFor)o(Mat)o(la) │ │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fj(8)p 125 100 1195 4 v │ │ │ │ │ +1360 w Fi(DenseMtx)24 b Fe(:)37 b Fh(DRAFT)28 b Fe(June)f(3,)g(2025)p │ │ │ │ │ +2705 100 V 101 390 a Fj(9.)42 b Fi(void)f(DenseMtx_writeFor)o(Mat)o(la) │ │ │ │ │ o(b)d(\()43 b(DenseMtx)d(*mtx,)i(char)f(*mtxname,)f(FILE)i(*fp)h(\))g │ │ │ │ │ (;)208 523 y Fj(This)27 b(metho)r(d)h(writes)f(out)h(a)f │ │ │ │ │ Fi(DenseMtx)e Fj(ob)5 b(ject)27 b(to)g(a)h(\014le)f(in)h(a)f(Matlab)h │ │ │ │ │ (format.)36 b(A)28 b(sample)f(line)h(is)208 722 y Fi(a\(10,5\))40 │ │ │ │ │ b(=)87 b(-1.550328201511e)o(-01)37 b(+)130 b(1.848033378871e+)o(00*)o │ │ │ │ │ (i)37 b(;)208 922 y Fj(for)27 b(complex)g(matrices,)g(or)208 │ │ │ │ │ 1121 y Fi(a\(10,5\))40 b(=)87 b(-1.550328201511e)o(-01)37 │ │ │ │ │ ├── ps2ascii {} │ │ │ │ │ │ @@ -22,15 +22,15 @@ │ │ │ │ │ │ • double *entries : pointer to the base address of the double vector that contains the entries. │ │ │ │ │ │ • DV wrkDV : object that manages the owned working storage. │ │ │ │ │ │ • DenseMtx *next : link to a next object in a singly linked list. │ │ │ │ │ │ One can query the type of entries via two macros. │ │ │ │ │ │ • DENSEMTX IS REAL(mtx) returns 1 if the matrix has real entries, and 0 otherwise. │ │ │ │ │ │ • DENSEMTX IS COMPLEX(mtx) returns 1 if the matrix has complex entries, and 0 otherwise. │ │ │ │ │ │ 1 │ │ │ │ │ │ - 2 DenseMtx : DRAFT May 1, 2024 │ │ │ │ │ │ + 2 DenseMtx : DRAFT June 3, 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 May1, 2024 3 │ │ │ │ │ │ + DenseMtx : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 4 DenseMtx : DRAFT June 3, 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 May1, 2024 5 │ │ │ │ │ │ + DenseMtx : DRAFT June 3, 2025 5 │ │ │ │ │ │ 1.2.4 Utility methods │ │ │ │ │ │ 1. int DenseMtx_nbytesNeeded ( int type, int nrow, int ncol ) ; │ │ │ │ │ │ This method returns the number of bytes required to store the object’s information in its buffer. │ │ │ │ │ │ Error checking: If type is neither SPOOLES REAL nor SPOOLES COMPLEX, or if nrow or ncol is less than │ │ │ │ │ │ zero, an error message is printed and the program exits. │ │ │ │ │ │ 2. int DenseMtx_nbytesInWorkspace ( DenseMtx *mtx ) ; │ │ │ │ │ │ This method returns the number of bytes in the workspace owned by this object. │ │ │ │ │ │ @@ -180,15 +180,15 @@ │ │ │ │ │ │ 8. void DenseMtx_copyRowAndIndex ( DenseMtx *mtxB, int irowB, │ │ │ │ │ │ DenseMtx *mtxA, int irowA ) ; │ │ │ │ │ │ This method copies row irowA from matrix mtxA into row irowB of matrix mtxB, and copies the index │ │ │ │ │ │ of row irowA of mtxA into location irowB of the row indices for mtxB. │ │ │ │ │ │ Error checking: If mtxB is NULL, or if irowB is out of range, or if mtxA is NULL, or if irowA is out of │ │ │ │ │ │ range, or if the number of columns in mtxB and mtxA are not the same, an error message is printed and │ │ │ │ │ │ the program exits. │ │ │ │ │ │ - 6 DenseMtx : DRAFT May 1, 2024 │ │ │ │ │ │ + 6 DenseMtx : DRAFT June 3, 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 May1, 2024 7 │ │ │ │ │ │ + DenseMtx : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 8 DenseMtx : DRAFT June 3, 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.05.01:0544 │ │ │ │ │ +%DVIPSSource: TeX output 2025.06.03:1221 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -1719,21 +1719,22 @@ │ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ │ /UnderlineThickness 50 def │ │ │ │ │ end readonly def │ │ │ │ │ /Encoding 256 array │ │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ │ dup 44 /comma put │ │ │ │ │ dup 48 /zero put │ │ │ │ │ -dup 49 /one put │ │ │ │ │ dup 50 /two put │ │ │ │ │ -dup 52 /four put │ │ │ │ │ +dup 51 /three put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 77 /M put │ │ │ │ │ -dup 97 /a put │ │ │ │ │ -dup 121 /y put │ │ │ │ │ +dup 74 /J put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ +dup 110 /n put │ │ │ │ │ +dup 117 /u put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ │ @@ -1914,68 +1915,70 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004ACD1870 │ │ │ │ │ -A5EA947858F5795870BFE1343AD803FB854BF8F5A4E794E8EC57BE41DB5B8734 │ │ │ │ │ -13E47950F29A81EA0C81EA798863883D7F41F78325CA190CBBFFE822AE494550 │ │ │ │ │ -4BE83703071FC9512D128927AF3F63CEF8F86ABE1E15D7B4DDD39576E7DFF45E │ │ │ │ │ -3CB4115AAB1830DE8647B915DB4BEBEB5235C281E098B899BAB951D8D5798F01 │ │ │ │ │ -7F7C47336D31438E5126738AFEAB29E9A7CBE06DE4DD604477B542D2620DFD58 │ │ │ │ │ -28FE34238572F23C5A8EB7ACEE1E154DA13FC1A5AA67A3BA8C5CDFB2B80312C9 │ │ │ │ │ -BC9FAE56D08DDFA9498E6EF0D0F6BD18B3923E0B670B0740528BC843610736CB │ │ │ │ │ -80228C105C2F72C3C22D610C3D8C268DEEA2AEEE3221E198E79FE2966487360C │ │ │ │ │ -84AE08AC326F48B21447652121B1EB68AF857B8628F27BB4ED00F273E0DD044A │ │ │ │ │ -7D11A5BFAAC0A82328444CC9DD90167681B07D55CE28655F40C21250A226DEAB │ │ │ │ │ -2D46FFB680CB9242BE192AC0E55A44D45709FA6DE638C130D92C4E9B07BC3D61 │ │ │ │ │ -25CC2F0A7ED4F3574242FFE4461272EB1401266EEF551E0E2B0EF51FA8F250EC │ │ │ │ │ -FD9AFB6F5A0CC442B566BC24400133E3E9B9A9FC801CEF284FD2B3ECA43421FA │ │ │ │ │ -51E5D1EFE7BEAA96658362C438A0A5A6DCBC664A85EF88037B42355195B9D19C │ │ │ │ │ -7961D5F63B123451B298CD52C144FCD4F3641A823FBA14605E2DFD845E89102C │ │ │ │ │ -4E345CFD80E3EE6F097095A84C941FFC91B234F3615E4EE4C5D564284656E364 │ │ │ │ │ -AB9C4D1DE05F8FD065CA6064893F0CF3A3A501D59EF6568D05D818A010D06518 │ │ │ │ │ -E2C20418ADD1E652867F265084A27A5FE0C32213C59FFC3A84EDC89382521E5B │ │ │ │ │ -8AF66D76601F83C5C33CC9CF968C77B66F1FA074AC3DAD8E453C9264D03969EF │ │ │ │ │ -9E387BB3BEAA4BF0A9D88BA2CE6094E8996A3752A657E322A57AF006444BF516 │ │ │ │ │ -501C43CAA1BA7F16A3B6E4D3EBDECCCC19564DF18FB68194C132238A5441A21A │ │ │ │ │ -F52285CA1CA94A4BEC61EB509FA35EA5E393D662D938F4291F37EB7C2D5815BE │ │ │ │ │ -446813E1CFD06FFFFF2C4355C9DAFA48E765F4CC5DE4B9E37CFFB75E7A0B6F4B │ │ │ │ │ -4E412496F9C27DF4BDD90A869F0EBD81A57AE0B84051450A5A3E06CB9930DB2C │ │ │ │ │ -7C2DDB774BE870AEFCC9F4F067BE243FF3FD4B5C71B96C607DC4975973AF2650 │ │ │ │ │ -E7DF2BE3523A370EEDD07B5456B96E372ED10510CE677C044E609F21E93652FD │ │ │ │ │ -33CE612F587530D12214A3719CDB170C315B5D8763D5D4C67B5CAE90309E77AC │ │ │ │ │ -B45EB356C13A7BDE0D7320A9849CA357E30D7CF1085FFD70071932C3180AFC28 │ │ │ │ │ -B093016BA3F49A3878C34BB4A8727A441EB6CFC1A73F2313A7BF8D32EDF27E62 │ │ │ │ │ -EBEBC058FBA80B136FD2DE05C673B66482224ECEC63EDFB519AC13B5CC6624A6 │ │ │ │ │ -B3FD79037DA3851E93A386115852DBA88B176F21EDDB5386DC7C993C4210B28F │ │ │ │ │ -438131A586E34A09724E7CE60139F8247BFF14D2674805B3BD454C134728A43E │ │ │ │ │ -139E0AF71A7AC5CE42041EC83FD454B00AD29959FCF007789FFAF2D3492DCA4B │ │ │ │ │ -566EAFE97591ABC51CD0CD9BCD64E285FB823E41AA817E96B2B224005DAA4E15 │ │ │ │ │ -2141DB436B9D3FBA4EE4C876FD19A2E5133106FE2B9F704CB9614FCDC91B7950 │ │ │ │ │ -57053F45A5ED993B48189AAFAD5289F97AE2B0AEB5606579F6BD75F743EDB5B6 │ │ │ │ │ -5AA8F8A64CE507A47325081B3A013DB1BD596CDD3A83D2F29B070D6F9C57496E │ │ │ │ │ -14DF3F0F731C3BB00F2CE3D4BBACF1320322195D1DEA7A545BB4725BD1C6EC3D │ │ │ │ │ -63250C72B897741F8599D9D9BD2FB50EC80EFF2ECD6CE6603E95AABB45462ACF │ │ │ │ │ -12B005EE5979B6B05BCE9B97061686102349142A3CCC26D57F2A3283DD8B6E2A │ │ │ │ │ -98885E48C0D4A1A5C9612EDCB3B3D265E9B8CCCCA5D99F07F96C15B27D6A161F │ │ │ │ │ -936599E503C2859927201CACC31581AB7AB84F9EC9FFADC239F01DCC55940AB7 │ │ │ │ │ -FA884AA1EB6494C8E53DAD66E75A317428ACF9D943A74683BF547958F67D9E36 │ │ │ │ │ -F985EED50DEBCF255756A821927CB73848DCF167E96E975E959DE27FE7BA4FBA │ │ │ │ │ -D0EFC003F019D87572D6F9C73FC5B880C3EEDB7EF98E5EC3D25D6FE0015A6590 │ │ │ │ │ -E3C6EE632D7F6558B914609A8829CD1DEAB83A3F1207D5C3AAC9EAEA9DE1B4F8 │ │ │ │ │ -2375C5D4F630BCE13475F941ED2324D2CD4DCF2285298EAA4FFF89433D853860 │ │ │ │ │ -A974A9FC0808580FBDE7D02EDBB3D8C65BD3109AE8B359E96BFB7E21C696F440 │ │ │ │ │ -312B0CCAD810BF070DF8FC281E8198EB20A7FF9C9BCD291D74BC75EE46799485 │ │ │ │ │ -1AB2AE36B7E525034D146A856AF3BD9057A0033C08B606B89DD130548950C93D │ │ │ │ │ -94A8C92C47A34A791B1C108D2F36E899B79358B8081CCFC3D1A2F0521E4E2AE4 │ │ │ │ │ -7F500D6F2A53E5393E44201287225912590ABC738E8726622B67C3425639CCFB │ │ │ │ │ -F450B78A4918 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004B9BA1CC │ │ │ │ │ +580D3C6BDA4DC1B80B4365F1C80512453FC5316EC2D928FB731C3D6403E3C18B │ │ │ │ │ +E8424D644DF5E9A2134229C5C91CA68DB8E85BA2BB40F538F585DA6FA4037718 │ │ │ │ │ +B8053EBBA1E765346BCD5BDAA6C38115D31611D8A87A2238C145F2DA2F92E4DF │ │ │ │ │ +3987BD9C4D2A3D460E8941A68B125BCD9EE4F9FD262C4C8A71F47A2C81975635 │ │ │ │ │ +F1B981C274C53FA2ACCDE4C9D0A7C62D6C1EFF91CFC6712CA6A9F333C9564FCB │ │ │ │ │ +2A70F0AD715A79B10A08AB069E2A3C93BC0AED19D0CA10134B8DDDE8AF548DB2 │ │ │ │ │ +3A4AAA9C29682CF135BB767DAA16169A127EB50A7EECEB6480CF56A7D0F8AC56 │ │ │ │ │ +4A5090B3D75A790372886AF568D94C8165975A05BFBFDF1FFBA45F70700BB9E0 │ │ │ │ │ +57F3249EF9E9C8AD9CBCF6E4FD592DC4CDD2D7864F7C8A3FA6FC44C25C0CE7E1 │ │ │ │ │ +299F8A90B32B75DEA28917531621E1E7E0ECEE9E01665DEE99FBCF3EC3F30686 │ │ │ │ │ +513D7CBA745E660502603865D5A3E82D24B3F94B2884B21DC53AED87F49380E0 │ │ │ │ │ +68EE79C580931308DA762670C1F86F07FFB479773CD9C5DE6F22980DEC973D1C │ │ │ │ │ +A1E162D73932561BAAB24DE51DC8708291B666B36BABCA1FEDB6DD9C22572914 │ │ │ │ │ +7194DA044319F362452D53DD4D9A59134838E540F1E23805CEF53FF4F7519385 │ │ │ │ │ +1FAE3061F94369FEB1232BDA2E2A281E6972FB4524EFA37A598E7CDC097683EA │ │ │ │ │ +1B609952AEC0799B4711AAAB22D6B1D5CC729DE70897FDDC48AF0A12E40FFE30 │ │ │ │ │ +6528C601E68E8CFA4BBF897CF89DB712DE108DD1F084EFD917BFD9A70A74EB8F │ │ │ │ │ +D0D5B43CCC30373A5E871F18A969D01C69C2B4377622A0C8C4D7C4C28DDE5586 │ │ │ │ │ +BD17D5D640A6F396BD41993BD1932EE10953847F82F7BB36480B67A4F69F0763 │ │ │ │ │ +69423D1803B7BB60594ABEEE9578076639B84D8323F56104438803D45402FEE3 │ │ │ │ │ +045DAB16C4459DA9BBE01D0385CC771FB8DABDD8A9D280C18553F92FE6591CFD │ │ │ │ │ +26B82F28E6673BD823598D3F6CE03BEE04D9A21ED908DFC4F640227C148F133D │ │ │ │ │ +D32113275297C16EBCC9028AFD9102DE50E9CF67E7CF8C42BB8E73D1DAF8A5E2 │ │ │ │ │ +EF5979426229664A990DEF980A7038D2F229789D4F6EDBE1FB81BEC1A1BB14D7 │ │ │ │ │ +882515C62660E8877BE942712D57B86A2E19995AF087DECB7FD5208583C020AE │ │ │ │ │ +FEC86A2826530AD855006225300E4655F443C9360A8BAC96B5B096DDC9B12EDF │ │ │ │ │ +C862215AD6C432CF345FE701757E4EBB8C65F46912CB0F4DEF53672F7298D8F7 │ │ │ │ │ +EE51A9C5DE689A8D36956B7F0410893C0998DB03B73B4024CB046F8F6B32E07F │ │ │ │ │ +CD28A68AFB7152E45F1021DCD520D8A429FCDCA4B8054BAF0B48C4443280F198 │ │ │ │ │ +3360B078E6DEC37772DA8B629CFFD1534E8AA10E26B0BC58E92B9BF280C8EE45 │ │ │ │ │ +618EECDE904249F5A2010DC55D1028DFF4F058260B2B0A46541D6157970F44BD │ │ │ │ │ +D7483802D56A81184119DDBC914E8E394CBEEB506B61BB1CE2A3465252E5D8A3 │ │ │ │ │ +6BDD2D067E69D4ECEFC7D5568378F5F8B38EAFF138014185FE19DF7358A7A780 │ │ │ │ │ +3BE0E2CCD1561113F2F2319BDB503230DD0866121604710CEBBAA659ABFC010B │ │ │ │ │ +5CC40E5807F461D87E75BDC6AD96BCEF62AF668D48D7A76D08B57650F35CF609 │ │ │ │ │ +C0F791AEBEB75E29FA69596BAB419804AECE0F0238AAE64A6C13A22EBF4E3EAC │ │ │ │ │ +3570DECE85F54064486B2364D63E94FEB7C16350CDA318510A45C8848DB470ED │ │ │ │ │ +BFAFD2365681D65CFF3E6C1B4B7C8AE3066F96E819D05B97F3A6C2BFF8A72978 │ │ │ │ │ +EEB7F632FF604AD003A3CCA5A0465D53033A646E8082D3491EDECA3DA1A0E1BB │ │ │ │ │ +64BF36946520438D2EE72FA9EB1CEEDF56510AADA55A8DE280E23C904E0810FA │ │ │ │ │ +A3177CF684F06A4042DE4CD4AB21E2F0616153BEEE58EBBD89911FA43BC52969 │ │ │ │ │ +230C8137DB34C13E147B06C7A3875A931E1AC127E7D3EA0DF8346B6971F80901 │ │ │ │ │ +DC37F2DE1A0B81FD93CA3B5EB9B29ECABA1492901B1BA261DAB872FB3431C718 │ │ │ │ │ +9C9CDA7864908CD773864908DEB44E343221C2C4C335341789A46325D94C767C │ │ │ │ │ +740E3B60CE6D452A3A665967F568671FD7DD460B404B9C3D2EDCD47A336AA2C7 │ │ │ │ │ +BB0B1AC3823978F610629EF7AB526098A7EE7076F50A146D8134BA2DEC1B8ACF │ │ │ │ │ +68A7E4A9B7BE17FB71480516F2D6A8866E56CFD7C7A41311F48DDDD9887DACB8 │ │ │ │ │ +73FDAF5F25E956AFB0A9D530DE2E1128F006AAC9A78715BA2F90C8FED3729BFA │ │ │ │ │ +BDDD4098F870A27A91A0CB540D166FF86A442E95C9C361FD23378A2A138EAFB8 │ │ │ │ │ +D7050B486E1CB95068D890BCCD669456F3385C8F1793CE545099421368FE0F46 │ │ │ │ │ +53137AD2B65030B19CE7FF6B1669DB7A3C440AEF27149780E36C7097B7A8B71B │ │ │ │ │ +8789EECFA9A70B1F9695BB5D94E9A7D341291C1CA1BDEF4BE3EFCB8234CE9FFD │ │ │ │ │ +E1C4963CF919780129FA60162FEAA8AE97328F4BA14D949057A3EE74214F2D29 │ │ │ │ │ +51E7BE584446F6702F39957AE455CF8AF0C36AADAA39B53553D923CA5E9D4988 │ │ │ │ │ +76701B4F77DAE5185AC29900 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -3586,17 +3589,17 @@ │ │ │ │ │ %%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 23[45 19[83 18[25 5[45 1[45 45 │ │ │ │ │ -45 3[25 44[{}9 90.9091 /CMSL10 rf /Fe 141[62 3[62 9[62 │ │ │ │ │ -2[62 28[62 68[{}5 119.552 /CMTT12 rf │ │ │ │ │ +/CMTI10 rf /Fd 138[51 6[51 8[40 26[47 15[25 4[45 1[45 │ │ │ │ │ +45 1[45 3[25 44[{}10 90.9091 /CMSL10 rf /Fe 141[62 3[62 │ │ │ │ │ +9[62 2[62 28[62 68[{}5 119.552 /CMTT12 rf │ │ │ │ │ %DVIPSBitmapFont: Ff tcrm1095 10.95 1 │ │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ │ /Dotaccent/cedilla/ogonek/quotesinglbase.ts1 4{/.notdef}repeat │ │ │ │ │ /quotedblbase.ts1/.notdef/.notdef/twelveudash/threequartersemdash │ │ │ │ │ /afii61664.cap/arrowleft/arrowright/tieaccentlowercase/tieaccentcapital │ │ │ │ │ /tieaccentlowercase.new/tieaccentcapital.new/.notdef/afii61664.asc/uni2422 3 │ │ │ │ │ {/.notdef}repeat/dollar/.notdef/.notdef/quotesingle/.notdef/.notdef │ │ │ │ │ @@ -3687,17 +3690,17 @@ │ │ │ │ │ b(ject,)31 b(uniform)e(is)i Fh(1)p Fj(,)f(normal)g(is)h │ │ │ │ │ Fh(2)0 5064 y Fg(1.2)135 b(Protot)l(yp)t(es)46 b(and)f(descriptions)g │ │ │ │ │ (of)g Fe(Drand)e Fg(metho)t(ds)0 5294 y Fj(This)e(section)j(con)m │ │ │ │ │ (tains)f(brief)f(descriptions)g(including)f(protot)m(yp)s(es)i(of)f │ │ │ │ │ (all)h(metho)s(ds)f(that)h(b)s(elong)f(to)h(the)0 5407 │ │ │ │ │ y Fh(Drand)29 b Fj(ob)5 b(ject.)1927 5656 y(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fj(2)p 136 100 1202 4 v │ │ │ │ │ -1384 w Fh(Drand)29 b Fd(:)40 b Fc(DRAFT)30 b Fd(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2699 100 V 0 399 a Fb(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fj(2)p 136 100 1195 4 v │ │ │ │ │ +1377 w Fh(Drand)29 b Fd(:)40 b Fc(DRAFT)30 b Fd(June)g(3,)h(2025)p │ │ │ │ │ +2706 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) │ │ │ │ │ @@ -3745,18 +3748,18 @@ │ │ │ │ │ (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 1202 4 v 1383 100 a Fh(Drand)29 │ │ │ │ │ -b Fd(:)41 b Fc(DRAFT)121 b Fd(Ma)m(y)31 b(1,)g(2024)p │ │ │ │ │ -2651 100 V 1202 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 │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1195 4 v 1376 100 a Fh(Drand)29 │ │ │ │ │ +b Fd(:)41 b Fc(DRAFT)121 b Fd(June)29 b(3,)i(2025)p 2658 │ │ │ │ │ +100 V 1195 w Fj(3)111 399 y(3.)46 b Fh(void)h(Drand_setSeeds)d(\()j │ │ │ │ │ +(Drand)g(*drand,)e(int)i(seed1,)f(int)h(seed2)g(\))g(;)227 │ │ │ │ │ 553 y Fj(This)30 b(metho)s(d)g(sets)g(the)h(random)f(n)m(um)m(b)s(er)f │ │ │ │ │ (seeds)h(using)g(t)m(w)m(o)i(input)d(seeds.)227 707 y │ │ │ │ │ Fc(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fj(If)30 b Fh(drand)f │ │ │ │ │ Fj(is)i Fh(NULL)p Fj(,)e(an)h(error)g(message)i(is)e(prin)m(ted)g(and)g │ │ │ │ │ (the)h(program)f(exits.)227 862 y Fc(Err)-5 b(or)33 b(che)-5 │ │ │ │ │ b(cking:)39 b Fj(If)29 b Fh(drand)e Fj(is)i Fh(NULL)p │ │ │ │ │ Fj(,)f(or)h(if)g Fh(seed1)24 b Fa(\024)h Fj(0,)k(or)g(if)g │ │ │ │ │ @@ -3810,17 +3813,17 @@ │ │ │ │ │ Fh(n)47 b(<)h(0)f Fj(,)35 b(an)f(error)f(message)i(is)e(prin)m(ted)h │ │ │ │ │ (and)f(the)227 4852 y(program)d(exits.)0 5175 y Fg(1.3)135 │ │ │ │ │ b(Driv)l(er)46 b(programs)g(for)f(the)g Fe(Drand)d Fg(ob)7 │ │ │ │ │ b(ject)0 5407 y Fj(This)30 b(section)h(con)m(tains)h(brief)e │ │ │ │ │ (descriptions)g(of)g(the)h(driv)m(er)f(programs.)p eop │ │ │ │ │ end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fj(4)p 136 100 1202 4 v │ │ │ │ │ -1384 w Fh(Drand)29 b Fd(:)40 b Fc(DRAFT)30 b Fd(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2699 100 V 111 399 a Fj(1.)46 b Fh(testDrand)g(msglvl)g(msgFile)f │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fj(4)p 136 100 1195 4 v │ │ │ │ │ +1377 w Fh(Drand)29 b Fd(:)40 b Fc(DRAFT)30 b Fd(June)g(3,)h(2025)p │ │ │ │ │ +2706 100 V 111 399 a Fj(1.)46 b Fh(testDrand)g(msglvl)g(msgFile)f │ │ │ │ │ (distribution)g(param1)h(param2)g(seed1)g(seed2)h(n)227 │ │ │ │ │ 549 y Fj(This)30 b(driv)m(er)g(program)g(test)h(the)g │ │ │ │ │ Fh(Drand)e Fj(random)g(n)m(um)m(b)s(er)h(generator.)337 │ │ │ │ │ 761 y Ff(\210)45 b Fj(The)30 b Fh(msglvl)f Fj(parameter)i(determines)f │ │ │ │ │ (the)h(amoun)m(t)f(of)h(output.)337 907 y Ff(\210)45 │ │ │ │ │ b Fj(The)33 b Fh(msgFile)e Fj(parameter)j(determines)f(the)h(message)g │ │ │ │ │ (\014le)f(|)h(if)f Fh(msgFile)e Fj(is)i Fh(stdout)p Fj(,)g(then)g(the) │ │ │ │ │ ├── ps2ascii {} │ │ │ │ │ │ @@ -15,15 +15,15 @@ │ │ │ │ │ │ • double mean : mean for a normal distribution │ │ │ │ │ │ • double sigma : variation for a normal distribution │ │ │ │ │ │ • int mode: mode of the object, uniform is 1, normal is 2 │ │ │ │ │ │ 1.2 Prototypes and descriptions of Drand methods │ │ │ │ │ │ This section contains brief descriptions including prototypes of all methods that belong to the │ │ │ │ │ │ Drand object. │ │ │ │ │ │ 1 │ │ │ │ │ │ - 2 Drand : DRAFT May 1, 2024 │ │ │ │ │ │ + 2 Drand : DRAFT June 3, 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 May 1, 2024 3 │ │ │ │ │ │ + Drand : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 4 Drand : DRAFT June 3, 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.05.01:0544 │ │ │ │ │ +%DVIPSSource: TeX output 2025.06.03:1221 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -1405,21 +1405,22 @@ │ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ │ /UnderlineThickness 50 def │ │ │ │ │ end readonly def │ │ │ │ │ /Encoding 256 array │ │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ │ dup 44 /comma put │ │ │ │ │ dup 48 /zero put │ │ │ │ │ -dup 49 /one put │ │ │ │ │ dup 50 /two put │ │ │ │ │ -dup 52 /four put │ │ │ │ │ +dup 51 /three put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 77 /M put │ │ │ │ │ -dup 97 /a put │ │ │ │ │ -dup 121 /y put │ │ │ │ │ +dup 74 /J put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ +dup 110 /n put │ │ │ │ │ +dup 117 /u put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ │ @@ -1600,68 +1601,70 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004ACD1870 │ │ │ │ │ -A5EA947858F5795870BFE1343AD803FB854BF8F5A4E794E8EC57BE41DB5B8734 │ │ │ │ │ -13E47950F29A81EA0C81EA798863883D7F41F78325CA190CBBFFE822AE494550 │ │ │ │ │ -4BE83703071FC9512D128927AF3F63CEF8F86ABE1E15D7B4DDD39576E7DFF45E │ │ │ │ │ -3CB4115AAB1830DE8647B915DB4BEBEB5235C281E098B899BAB951D8D5798F01 │ │ │ │ │ -7F7C47336D31438E5126738AFEAB29E9A7CBE06DE4DD604477B542D2620DFD58 │ │ │ │ │ -28FE34238572F23C5A8EB7ACEE1E154DA13FC1A5AA67A3BA8C5CDFB2B80312C9 │ │ │ │ │ -BC9FAE56D08DDFA9498E6EF0D0F6BD18B3923E0B670B0740528BC843610736CB │ │ │ │ │ -80228C105C2F72C3C22D610C3D8C268DEEA2AEEE3221E198E79FE2966487360C │ │ │ │ │ -84AE08AC326F48B21447652121B1EB68AF857B8628F27BB4ED00F273E0DD044A │ │ │ │ │ -7D11A5BFAAC0A82328444CC9DD90167681B07D55CE28655F40C21250A226DEAB │ │ │ │ │ -2D46FFB680CB9242BE192AC0E55A44D45709FA6DE638C130D92C4E9B07BC3D61 │ │ │ │ │ -25CC2F0A7ED4F3574242FFE4461272EB1401266EEF551E0E2B0EF51FA8F250EC │ │ │ │ │ -FD9AFB6F5A0CC442B566BC24400133E3E9B9A9FC801CEF284FD2B3ECA43421FA │ │ │ │ │ -51E5D1EFE7BEAA96658362C438A0A5A6DCBC664A85EF88037B42355195B9D19C │ │ │ │ │ -7961D5F63B123451B298CD52C144FCD4F3641A823FBA14605E2DFD845E89102C │ │ │ │ │ -4E345CFD80E3EE6F097095A84C941FFC91B234F3615E4EE4C5D564284656E364 │ │ │ │ │ -AB9C4D1DE05F8FD065CA6064893F0CF3A3A501D59EF6568D05D818A010D06518 │ │ │ │ │ -E2C20418ADD1E652867F265084A27A5FE0C32213C59FFC3A84EDC89382521E5B │ │ │ │ │ -8AF66D76601F83C5C33CC9CF968C77B66F1FA074AC3DAD8E453C9264D03969EF │ │ │ │ │ -9E387BB3BEAA4BF0A9D88BA2CE6094E8996A3752A657E322A57AF006444BF516 │ │ │ │ │ -501C43CAA1BA7F16A3B6E4D3EBDECCCC19564DF18FB68194C132238A5441A21A │ │ │ │ │ -F52285CA1CA94A4BEC61EB509FA35EA5E393D662D938F4291F37EB7C2D5815BE │ │ │ │ │ -446813E1CFD06FFFFF2C4355C9DAFA48E765F4CC5DE4B9E37CFFB75E7A0B6F4B │ │ │ │ │ -4E412496F9C27DF4BDD90A869F0EBD81A57AE0B84051450A5A3E06CB9930DB2C │ │ │ │ │ -7C2DDB774BE870AEFCC9F4F067BE243FF3FD4B5C71B96C607DC4975973AF2650 │ │ │ │ │ -E7DF2BE3523A370EEDD07B5456B96E372ED10510CE677C044E609F21E93652FD │ │ │ │ │ -33CE612F587530D12214A3719CDB170C315B5D8763D5D4C67B5CAE90309E77AC │ │ │ │ │ -B45EB356C13A7BDE0D7320A9849CA357E30D7CF1085FFD70071932C3180AFC28 │ │ │ │ │ -B093016BA3F49A3878C34BB4A8727A441EB6CFC1A73F2313A7BF8D32EDF27E62 │ │ │ │ │ -EBEBC058FBA80B136FD2DE05C673B66482224ECEC63EDFB519AC13B5CC6624A6 │ │ │ │ │ -B3FD79037DA3851E93A386115852DBA88B176F21EDDB5386DC7C993C4210B28F │ │ │ │ │ -438131A586E34A09724E7CE60139F8247BFF14D2674805B3BD454C134728A43E │ │ │ │ │ -139E0AF71A7AC5CE42041EC83FD454B00AD29959FCF007789FFAF2D3492DCA4B │ │ │ │ │ -566EAFE97591ABC51CD0CD9BCD64E285FB823E41AA817E96B2B224005DAA4E15 │ │ │ │ │ -2141DB436B9D3FBA4EE4C876FD19A2E5133106FE2B9F704CB9614FCDC91B7950 │ │ │ │ │ -57053F45A5ED993B48189AAFAD5289F97AE2B0AEB5606579F6BD75F743EDB5B6 │ │ │ │ │ -5AA8F8A64CE507A47325081B3A013DB1BD596CDD3A83D2F29B070D6F9C57496E │ │ │ │ │ -14DF3F0F731C3BB00F2CE3D4BBACF1320322195D1DEA7A545BB4725BD1C6EC3D │ │ │ │ │ -63250C72B897741F8599D9D9BD2FB50EC80EFF2ECD6CE6603E95AABB45462ACF │ │ │ │ │ -12B005EE5979B6B05BCE9B97061686102349142A3CCC26D57F2A3283DD8B6E2A │ │ │ │ │ -98885E48C0D4A1A5C9612EDCB3B3D265E9B8CCCCA5D99F07F96C15B27D6A161F │ │ │ │ │ -936599E503C2859927201CACC31581AB7AB84F9EC9FFADC239F01DCC55940AB7 │ │ │ │ │ -FA884AA1EB6494C8E53DAD66E75A317428ACF9D943A74683BF547958F67D9E36 │ │ │ │ │ -F985EED50DEBCF255756A821927CB73848DCF167E96E975E959DE27FE7BA4FBA │ │ │ │ │ -D0EFC003F019D87572D6F9C73FC5B880C3EEDB7EF98E5EC3D25D6FE0015A6590 │ │ │ │ │ -E3C6EE632D7F6558B914609A8829CD1DEAB83A3F1207D5C3AAC9EAEA9DE1B4F8 │ │ │ │ │ -2375C5D4F630BCE13475F941ED2324D2CD4DCF2285298EAA4FFF89433D853860 │ │ │ │ │ -A974A9FC0808580FBDE7D02EDBB3D8C65BD3109AE8B359E96BFB7E21C696F440 │ │ │ │ │ -312B0CCAD810BF070DF8FC281E8198EB20A7FF9C9BCD291D74BC75EE46799485 │ │ │ │ │ -1AB2AE36B7E525034D146A856AF3BD9057A0033C08B606B89DD130548950C93D │ │ │ │ │ -94A8C92C47A34A791B1C108D2F36E899B79358B8081CCFC3D1A2F0521E4E2AE4 │ │ │ │ │ -7F500D6F2A53E5393E44201287225912590ABC738E8726622B67C3425639CCFB │ │ │ │ │ -F450B78A4918 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004B9BA1CC │ │ │ │ │ +580D3C6BDA4DC1B80B4365F1C80512453FC5316EC2D928FB731C3D6403E3C18B │ │ │ │ │ +E8424D644DF5E9A2134229C5C91CA68DB8E85BA2BB40F538F585DA6FA4037718 │ │ │ │ │ +B8053EBBA1E765346BCD5BDAA6C38115D31611D8A87A2238C145F2DA2F92E4DF │ │ │ │ │ +3987BD9C4D2A3D460E8941A68B125BCD9EE4F9FD262C4C8A71F47A2C81975635 │ │ │ │ │ +F1B981C274C53FA2ACCDE4C9D0A7C62D6C1EFF91CFC6712CA6A9F333C9564FCB │ │ │ │ │ +2A70F0AD715A79B10A08AB069E2A3C93BC0AED19D0CA10134B8DDDE8AF548DB2 │ │ │ │ │ +3A4AAA9C29682CF135BB767DAA16169A127EB50A7EECEB6480CF56A7D0F8AC56 │ │ │ │ │ +4A5090B3D75A790372886AF568D94C8165975A05BFBFDF1FFBA45F70700BB9E0 │ │ │ │ │ +57F3249EF9E9C8AD9CBCF6E4FD592DC4CDD2D7864F7C8A3FA6FC44C25C0CE7E1 │ │ │ │ │ +299F8A90B32B75DEA28917531621E1E7E0ECEE9E01665DEE99FBCF3EC3F30686 │ │ │ │ │ +513D7CBA745E660502603865D5A3E82D24B3F94B2884B21DC53AED87F49380E0 │ │ │ │ │ +68EE79C580931308DA762670C1F86F07FFB479773CD9C5DE6F22980DEC973D1C │ │ │ │ │ +A1E162D73932561BAAB24DE51DC8708291B666B36BABCA1FEDB6DD9C22572914 │ │ │ │ │ +7194DA044319F362452D53DD4D9A59134838E540F1E23805CEF53FF4F7519385 │ │ │ │ │ +1FAE3061F94369FEB1232BDA2E2A281E6972FB4524EFA37A598E7CDC097683EA │ │ │ │ │ +1B609952AEC0799B4711AAAB22D6B1D5CC729DE70897FDDC48AF0A12E40FFE30 │ │ │ │ │ +6528C601E68E8CFA4BBF897CF89DB712DE108DD1F084EFD917BFD9A70A74EB8F │ │ │ │ │ +D0D5B43CCC30373A5E871F18A969D01C69C2B4377622A0C8C4D7C4C28DDE5586 │ │ │ │ │ +BD17D5D640A6F396BD41993BD1932EE10953847F82F7BB36480B67A4F69F0763 │ │ │ │ │ +69423D1803B7BB60594ABEEE9578076639B84D8323F56104438803D45402FEE3 │ │ │ │ │ +045DAB16C4459DA9BBE01D0385CC771FB8DABDD8A9D280C18553F92FE6591CFD │ │ │ │ │ +26B82F28E6673BD823598D3F6CE03BEE04D9A21ED908DFC4F640227C148F133D │ │ │ │ │ +D32113275297C16EBCC9028AFD9102DE50E9CF67E7CF8C42BB8E73D1DAF8A5E2 │ │ │ │ │ +EF5979426229664A990DEF980A7038D2F229789D4F6EDBE1FB81BEC1A1BB14D7 │ │ │ │ │ +882515C62660E8877BE942712D57B86A2E19995AF087DECB7FD5208583C020AE │ │ │ │ │ +FEC86A2826530AD855006225300E4655F443C9360A8BAC96B5B096DDC9B12EDF │ │ │ │ │ +C862215AD6C432CF345FE701757E4EBB8C65F46912CB0F4DEF53672F7298D8F7 │ │ │ │ │ +EE51A9C5DE689A8D36956B7F0410893C0998DB03B73B4024CB046F8F6B32E07F │ │ │ │ │ +CD28A68AFB7152E45F1021DCD520D8A429FCDCA4B8054BAF0B48C4443280F198 │ │ │ │ │ +3360B078E6DEC37772DA8B629CFFD1534E8AA10E26B0BC58E92B9BF280C8EE45 │ │ │ │ │ +618EECDE904249F5A2010DC55D1028DFF4F058260B2B0A46541D6157970F44BD │ │ │ │ │ +D7483802D56A81184119DDBC914E8E394CBEEB506B61BB1CE2A3465252E5D8A3 │ │ │ │ │ +6BDD2D067E69D4ECEFC7D5568378F5F8B38EAFF138014185FE19DF7358A7A780 │ │ │ │ │ +3BE0E2CCD1561113F2F2319BDB503230DD0866121604710CEBBAA659ABFC010B │ │ │ │ │ +5CC40E5807F461D87E75BDC6AD96BCEF62AF668D48D7A76D08B57650F35CF609 │ │ │ │ │ +C0F791AEBEB75E29FA69596BAB419804AECE0F0238AAE64A6C13A22EBF4E3EAC │ │ │ │ │ +3570DECE85F54064486B2364D63E94FEB7C16350CDA318510A45C8848DB470ED │ │ │ │ │ +BFAFD2365681D65CFF3E6C1B4B7C8AE3066F96E819D05B97F3A6C2BFF8A72978 │ │ │ │ │ +EEB7F632FF604AD003A3CCA5A0465D53033A646E8082D3491EDECA3DA1A0E1BB │ │ │ │ │ +64BF36946520438D2EE72FA9EB1CEEDF56510AADA55A8DE280E23C904E0810FA │ │ │ │ │ +A3177CF684F06A4042DE4CD4AB21E2F0616153BEEE58EBBD89911FA43BC52969 │ │ │ │ │ +230C8137DB34C13E147B06C7A3875A931E1AC127E7D3EA0DF8346B6971F80901 │ │ │ │ │ +DC37F2DE1A0B81FD93CA3B5EB9B29ECABA1492901B1BA261DAB872FB3431C718 │ │ │ │ │ +9C9CDA7864908CD773864908DEB44E343221C2C4C335341789A46325D94C767C │ │ │ │ │ +740E3B60CE6D452A3A665967F568671FD7DD460B404B9C3D2EDCD47A336AA2C7 │ │ │ │ │ +BB0B1AC3823978F610629EF7AB526098A7EE7076F50A146D8134BA2DEC1B8ACF │ │ │ │ │ +68A7E4A9B7BE17FB71480516F2D6A8866E56CFD7C7A41311F48DDDD9887DACB8 │ │ │ │ │ +73FDAF5F25E956AFB0A9D530DE2E1128F006AAC9A78715BA2F90C8FED3729BFA │ │ │ │ │ +BDDD4098F870A27A91A0CB540D166FF86A442E95C9C361FD23378A2A138EAFB8 │ │ │ │ │ +D7050B486E1CB95068D890BCCD669456F3385C8F1793CE545099421368FE0F46 │ │ │ │ │ +53137AD2B65030B19CE7FF6B1669DB7A3C440AEF27149780E36C7097B7A8B71B │ │ │ │ │ +8789EECFA9A70B1F9695BB5D94E9A7D341291C1CA1BDEF4BE3EFCB8234CE9FFD │ │ │ │ │ +E1C4963CF919780129FA60162FEAA8AE97328F4BA14D949057A3EE74214F2D29 │ │ │ │ │ +51E7BE584446F6702F39957AE455CF8AF0C36AADAA39B53553D923CA5E9D4988 │ │ │ │ │ +76701B4F77DAE5185AC29900 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -3881,16 +3884,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 23[45 19[83 18[25 5[45 1[45 45 │ │ │ │ │ -45 3[25 44[{}9 90.9091 /CMSL10 rf │ │ │ │ │ +/CMTT12 rf /Fd 138[51 6[51 8[40 26[47 15[25 4[45 1[45 │ │ │ │ │ +45 1[45 3[25 44[{}10 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 │ │ │ │ │ @@ -4010,17 +4013,17 @@ │ │ │ │ │ (ts.)0 5294 y(A)37 b(correctly)i(initialized)g(and)d(non)m(trivial)i │ │ │ │ │ Fj(EGraph)e Fk(ob)5 b(ject)38 b(will)f(ha)m(v)m(e)i(p)s(ositiv)m(e)f │ │ │ │ │ Fj(nelem)e Fk(and)g Fj(nvtx)g Fk(v)-5 b(alues,)40 b(a)0 │ │ │ │ │ 5407 y(v)-5 b(alid)31 b Fj(adjIVL)d Fk(\014eld.)41 b(If)30 │ │ │ │ │ b Fj(type)46 b(=)i(1)p Fk(,)30 b(the)h Fj(vwghts)d Fk(will)j(b)s(e)f │ │ │ │ │ (non-)p Fj(NULL)p Fk(.)1927 5656 y(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fk(2)p 136 100 1178 4 v │ │ │ │ │ -1360 w Fj(EGraph)28 b Fd(:)41 b Fg(DRAFT)30 b Fd(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2723 100 V 0 399 a Ff(1.2)135 b(Protot)l(yp)t(es)46 b(and)f │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fk(2)p 136 100 1171 4 v │ │ │ │ │ +1353 w Fj(EGraph)28 b Fd(:)41 b Fg(DRAFT)30 b Fd(June)g(3,)h(2025)p │ │ │ │ │ +2729 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 │ │ │ │ │ @@ -4080,17 +4083,17 @@ │ │ │ │ │ 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 1178 4 v 1359 100 a Fj(EGraph)29 │ │ │ │ │ -b Fd(:)41 b Fg(DRAFT)121 b Fd(Ma)m(y)31 b(1,)g(2024)p │ │ │ │ │ -2675 100 V 1178 w Fk(3)0 399 y Fb(1.2.3)112 b(Utilit)m(y)38 │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1171 4 v 1352 100 a Fj(EGraph)29 │ │ │ │ │ +b Fd(:)41 b Fg(DRAFT)121 b Fd(June)29 b(3,)i(2025)p 2682 │ │ │ │ │ +100 V 1171 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 │ │ │ │ │ @@ -4162,17 +4165,17 @@ │ │ │ │ │ 5261 y(the)d(data,)h(the)f(v)-5 b(alue)30 b Fj(1)f Fk(is)h(returned.)39 │ │ │ │ │ b(If)29 b(an)h(IO)f(error)g(is)h(encoun)m(tered)g(from)f │ │ │ │ │ Fj(fread)p Fk(,)g(zero)h(is)g(returned.)227 5407 y Fg(Err)-5 │ │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fk(If)30 b Fj(egraph)f │ │ │ │ │ Fk(or)h Fj(fp)g Fk(are)h Fj(NULL)e Fk(an)h(error)g(message)i(is)e(prin) │ │ │ │ │ m(ted)g(and)g(zero)h(is)g(returned.)p eop end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fk(4)p 136 100 1178 4 v │ │ │ │ │ -1360 w Fj(EGraph)28 b Fd(:)41 b Fg(DRAFT)30 b Fd(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2723 100 V 111 399 a Fk(4.)46 b Fj(int)h(EGraph_writeToFile)c(\()k │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fk(4)p 136 100 1171 4 v │ │ │ │ │ +1353 w Fj(EGraph)28 b Fd(:)41 b Fg(DRAFT)30 b Fd(June)g(3,)h(2025)p │ │ │ │ │ +2729 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 │ │ │ │ │ @@ -4243,18 +4246,18 @@ │ │ │ │ │ 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 1178 4 v 1359 100 a Fj(EGraph)29 │ │ │ │ │ -b Fd(:)41 b Fg(DRAFT)121 b Fd(Ma)m(y)31 b(1,)g(2024)p │ │ │ │ │ -2675 100 V 1178 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 │ │ │ │ │ +TeXDict begin 5 4 bop 91 100 1171 4 v 1352 100 a Fj(EGraph)29 │ │ │ │ │ +b Fd(:)41 b Fg(DRAFT)121 b Fd(June)29 b(3,)i(2025)p 2682 │ │ │ │ │ +100 V 1171 w Fk(5)337 399 y Fe(\210)45 b Fk(The)35 b │ │ │ │ │ +Fj(inFile)e Fk(parameter)i(is)g(the)h(input)e(\014le)h(for)f(the)h │ │ │ │ │ Fj(EGraph)f Fk(ob)5 b(ject.)55 b(It)35 b(m)m(ust)g(b)s(e)f(of)h(the)g │ │ │ │ │ (form)427 511 y Fj(*.egraphf)18 b Fk(or)i Fj(*.egraphb)p │ │ │ │ │ Fk(.)35 b(The)20 b Fj(EGraph)e Fk(ob)5 b(ject)22 b(is)e(read)g(from)g │ │ │ │ │ (the)g(\014le)h(via)g(the)f Fj(EGraph)p 3559 511 29 4 │ │ │ │ │ v 33 w(readFromFile\(\))427 624 y Fk(metho)s(d.)337 780 │ │ │ │ │ y Fe(\210)45 b Fk(The)25 b Fj(outFile)e Fk(parameter)j(is)f(the)h │ │ │ │ │ (output)f(\014le)g(for)g(the)g Fj(EGraph)f Fk(ob)5 b(ject.)40 │ │ │ │ │ @@ -4325,17 +4328,17 @@ │ │ │ │ │ (b)s(e)g(greater)i(than)f(or)g(equal)g(to)427 5139 y(one.)337 │ │ │ │ │ 5294 y Fe(\210)45 b Fj(ncomp)26 b Fk(is)g(the)h(n)m(um)m(b)s(er)f(of)h │ │ │ │ │ (comp)s(onen)m(ts)f(\(i.e.,)k(the)c(n)m(um)m(b)s(er)g(of)h(degrees)g │ │ │ │ │ (of)g(freedom\))g(at)g(eac)m(h)h(grid)427 5407 y(p)s(oin)m(t,)j(m)m │ │ │ │ │ (ust)f(b)s(e)g(greater)h(than)g(or)f(equal)h(to)g(one.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 6 6 │ │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fk(6)p 136 100 1178 4 v │ │ │ │ │ -1360 w Fj(EGraph)28 b Fd(:)41 b Fg(DRAFT)30 b Fd(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2723 100 V 337 399 a Fe(\210)45 b Fk(The)20 b Fj(outEGraphFile)d │ │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fk(6)p 136 100 1171 4 v │ │ │ │ │ +1353 w Fj(EGraph)28 b Fd(:)41 b Fg(DRAFT)30 b Fd(June)g(3,)h(2025)p │ │ │ │ │ +2729 100 V 337 399 a Fe(\210)45 b Fk(The)20 b Fj(outEGraphFile)d │ │ │ │ │ Fk(parameter)j(is)h(the)f(output)g(\014le)g(for)h(the)f │ │ │ │ │ Fj(EGraph)f Fk(ob)5 b(ject.)38 b(If)20 b Fj(outEGraphFile)427 │ │ │ │ │ 511 y Fk(is)h Fj(none)e Fk(then)h(the)g Fj(EGraph)f Fk(ob)5 │ │ │ │ │ b(ject)21 b(is)f(not)h(written)f(to)h(a)g(\014le.)37 │ │ │ │ │ b(Otherwise,)22 b(the)f Fj(EGraph)p 3409 511 29 4 v 33 │ │ │ │ │ w(writeToFile\(\))427 624 y Fk(metho)s(d)27 b(is)h(called)h(to)f(write) │ │ │ │ │ g(the)g(ob)5 b(ject)29 b(to)f(a)g(formatted)g(\014le)g(\(if)g │ │ │ │ │ ├── ps2ascii {} │ │ │ │ │ │ @@ -21,15 +21,15 @@ │ │ │ │ │ │ • int nvtx : number of vertices in the graph │ │ │ │ │ │ • IVL *adjIVL : pointer to a IVL structure that holds the vertex lists for the elements. │ │ │ │ │ │ • int *vwghts : when type = 1, vwghts points to an int vector of size nvtx that holds the │ │ │ │ │ │ node weights. │ │ │ │ │ │ A correctly initialized and nontrivial EGraph object will have positive nelem and nvtx values, a │ │ │ │ │ │ valid adjIVL field. If type = 1, the vwghts will be non-NULL. │ │ │ │ │ │ 1 │ │ │ │ │ │ - 2 EGraph : DRAFT May 1, 2024 │ │ │ │ │ │ + 2 EGraph : DRAFT June 3, 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 May 1, 2024 3 │ │ │ │ │ │ + EGraph : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 4 EGraph : DRAFT June 3, 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 May 1, 2024 5 │ │ │ │ │ │ + EGraph : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 6 EGraph : DRAFT June 3, 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.05.01:0544 │ │ │ │ │ +%DVIPSSource: TeX output 2025.06.03:1221 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -3605,21 +3605,22 @@ │ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ │ /UnderlineThickness 50 def │ │ │ │ │ end readonly def │ │ │ │ │ /Encoding 256 array │ │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ │ dup 44 /comma put │ │ │ │ │ dup 48 /zero put │ │ │ │ │ -dup 49 /one put │ │ │ │ │ dup 50 /two put │ │ │ │ │ -dup 52 /four put │ │ │ │ │ +dup 51 /three put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 77 /M put │ │ │ │ │ -dup 97 /a put │ │ │ │ │ -dup 121 /y put │ │ │ │ │ +dup 74 /J put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ +dup 110 /n put │ │ │ │ │ +dup 117 /u put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ │ @@ -3800,68 +3801,70 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004ACD1870 │ │ │ │ │ -A5EA947858F5795870BFE1343AD803FB854BF8F5A4E794E8EC57BE41DB5B8734 │ │ │ │ │ -13E47950F29A81EA0C81EA798863883D7F41F78325CA190CBBFFE822AE494550 │ │ │ │ │ -4BE83703071FC9512D128927AF3F63CEF8F86ABE1E15D7B4DDD39576E7DFF45E │ │ │ │ │ -3CB4115AAB1830DE8647B915DB4BEBEB5235C281E098B899BAB951D8D5798F01 │ │ │ │ │ -7F7C47336D31438E5126738AFEAB29E9A7CBE06DE4DD604477B542D2620DFD58 │ │ │ │ │ -28FE34238572F23C5A8EB7ACEE1E154DA13FC1A5AA67A3BA8C5CDFB2B80312C9 │ │ │ │ │ -BC9FAE56D08DDFA9498E6EF0D0F6BD18B3923E0B670B0740528BC843610736CB │ │ │ │ │ -80228C105C2F72C3C22D610C3D8C268DEEA2AEEE3221E198E79FE2966487360C │ │ │ │ │ -84AE08AC326F48B21447652121B1EB68AF857B8628F27BB4ED00F273E0DD044A │ │ │ │ │ -7D11A5BFAAC0A82328444CC9DD90167681B07D55CE28655F40C21250A226DEAB │ │ │ │ │ -2D46FFB680CB9242BE192AC0E55A44D45709FA6DE638C130D92C4E9B07BC3D61 │ │ │ │ │ -25CC2F0A7ED4F3574242FFE4461272EB1401266EEF551E0E2B0EF51FA8F250EC │ │ │ │ │ -FD9AFB6F5A0CC442B566BC24400133E3E9B9A9FC801CEF284FD2B3ECA43421FA │ │ │ │ │ -51E5D1EFE7BEAA96658362C438A0A5A6DCBC664A85EF88037B42355195B9D19C │ │ │ │ │ -7961D5F63B123451B298CD52C144FCD4F3641A823FBA14605E2DFD845E89102C │ │ │ │ │ -4E345CFD80E3EE6F097095A84C941FFC91B234F3615E4EE4C5D564284656E364 │ │ │ │ │ -AB9C4D1DE05F8FD065CA6064893F0CF3A3A501D59EF6568D05D818A010D06518 │ │ │ │ │ -E2C20418ADD1E652867F265084A27A5FE0C32213C59FFC3A84EDC89382521E5B │ │ │ │ │ -8AF66D76601F83C5C33CC9CF968C77B66F1FA074AC3DAD8E453C9264D03969EF │ │ │ │ │ -9E387BB3BEAA4BF0A9D88BA2CE6094E8996A3752A657E322A57AF006444BF516 │ │ │ │ │ -501C43CAA1BA7F16A3B6E4D3EBDECCCC19564DF18FB68194C132238A5441A21A │ │ │ │ │ -F52285CA1CA94A4BEC61EB509FA35EA5E393D662D938F4291F37EB7C2D5815BE │ │ │ │ │ -446813E1CFD06FFFFF2C4355C9DAFA48E765F4CC5DE4B9E37CFFB75E7A0B6F4B │ │ │ │ │ -4E412496F9C27DF4BDD90A869F0EBD81A57AE0B84051450A5A3E06CB9930DB2C │ │ │ │ │ -7C2DDB774BE870AEFCC9F4F067BE243FF3FD4B5C71B96C607DC4975973AF2650 │ │ │ │ │ -E7DF2BE3523A370EEDD07B5456B96E372ED10510CE677C044E609F21E93652FD │ │ │ │ │ -33CE612F587530D12214A3719CDB170C315B5D8763D5D4C67B5CAE90309E77AC │ │ │ │ │ -B45EB356C13A7BDE0D7320A9849CA357E30D7CF1085FFD70071932C3180AFC28 │ │ │ │ │ -B093016BA3F49A3878C34BB4A8727A441EB6CFC1A73F2313A7BF8D32EDF27E62 │ │ │ │ │ -EBEBC058FBA80B136FD2DE05C673B66482224ECEC63EDFB519AC13B5CC6624A6 │ │ │ │ │ -B3FD79037DA3851E93A386115852DBA88B176F21EDDB5386DC7C993C4210B28F │ │ │ │ │ -438131A586E34A09724E7CE60139F8247BFF14D2674805B3BD454C134728A43E │ │ │ │ │ -139E0AF71A7AC5CE42041EC83FD454B00AD29959FCF007789FFAF2D3492DCA4B │ │ │ │ │ -566EAFE97591ABC51CD0CD9BCD64E285FB823E41AA817E96B2B224005DAA4E15 │ │ │ │ │ -2141DB436B9D3FBA4EE4C876FD19A2E5133106FE2B9F704CB9614FCDC91B7950 │ │ │ │ │ -57053F45A5ED993B48189AAFAD5289F97AE2B0AEB5606579F6BD75F743EDB5B6 │ │ │ │ │ -5AA8F8A64CE507A47325081B3A013DB1BD596CDD3A83D2F29B070D6F9C57496E │ │ │ │ │ -14DF3F0F731C3BB00F2CE3D4BBACF1320322195D1DEA7A545BB4725BD1C6EC3D │ │ │ │ │ -63250C72B897741F8599D9D9BD2FB50EC80EFF2ECD6CE6603E95AABB45462ACF │ │ │ │ │ -12B005EE5979B6B05BCE9B97061686102349142A3CCC26D57F2A3283DD8B6E2A │ │ │ │ │ -98885E48C0D4A1A5C9612EDCB3B3D265E9B8CCCCA5D99F07F96C15B27D6A161F │ │ │ │ │ -936599E503C2859927201CACC31581AB7AB84F9EC9FFADC239F01DCC55940AB7 │ │ │ │ │ -FA884AA1EB6494C8E53DAD66E75A317428ACF9D943A74683BF547958F67D9E36 │ │ │ │ │ -F985EED50DEBCF255756A821927CB73848DCF167E96E975E959DE27FE7BA4FBA │ │ │ │ │ -D0EFC003F019D87572D6F9C73FC5B880C3EEDB7EF98E5EC3D25D6FE0015A6590 │ │ │ │ │ -E3C6EE632D7F6558B914609A8829CD1DEAB83A3F1207D5C3AAC9EAEA9DE1B4F8 │ │ │ │ │ -2375C5D4F630BCE13475F941ED2324D2CD4DCF2285298EAA4FFF89433D853860 │ │ │ │ │ -A974A9FC0808580FBDE7D02EDBB3D8C65BD3109AE8B359E96BFB7E21C696F440 │ │ │ │ │ -312B0CCAD810BF070DF8FC281E8198EB20A7FF9C9BCD291D74BC75EE46799485 │ │ │ │ │ -1AB2AE36B7E525034D146A856AF3BD9057A0033C08B606B89DD130548950C93D │ │ │ │ │ -94A8C92C47A34A791B1C108D2F36E899B79358B8081CCFC3D1A2F0521E4E2AE4 │ │ │ │ │ -7F500D6F2A53E5393E44201287225912590ABC738E8726622B67C3425639CCFB │ │ │ │ │ -F450B78A4918 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004B9BA1CC │ │ │ │ │ +580D3C6BDA4DC1B80B4365F1C80512453FC5316EC2D928FB731C3D6403E3C18B │ │ │ │ │ +E8424D644DF5E9A2134229C5C91CA68DB8E85BA2BB40F538F585DA6FA4037718 │ │ │ │ │ +B8053EBBA1E765346BCD5BDAA6C38115D31611D8A87A2238C145F2DA2F92E4DF │ │ │ │ │ +3987BD9C4D2A3D460E8941A68B125BCD9EE4F9FD262C4C8A71F47A2C81975635 │ │ │ │ │ +F1B981C274C53FA2ACCDE4C9D0A7C62D6C1EFF91CFC6712CA6A9F333C9564FCB │ │ │ │ │ +2A70F0AD715A79B10A08AB069E2A3C93BC0AED19D0CA10134B8DDDE8AF548DB2 │ │ │ │ │ +3A4AAA9C29682CF135BB767DAA16169A127EB50A7EECEB6480CF56A7D0F8AC56 │ │ │ │ │ +4A5090B3D75A790372886AF568D94C8165975A05BFBFDF1FFBA45F70700BB9E0 │ │ │ │ │ +57F3249EF9E9C8AD9CBCF6E4FD592DC4CDD2D7864F7C8A3FA6FC44C25C0CE7E1 │ │ │ │ │ +299F8A90B32B75DEA28917531621E1E7E0ECEE9E01665DEE99FBCF3EC3F30686 │ │ │ │ │ +513D7CBA745E660502603865D5A3E82D24B3F94B2884B21DC53AED87F49380E0 │ │ │ │ │ +68EE79C580931308DA762670C1F86F07FFB479773CD9C5DE6F22980DEC973D1C │ │ │ │ │ +A1E162D73932561BAAB24DE51DC8708291B666B36BABCA1FEDB6DD9C22572914 │ │ │ │ │ +7194DA044319F362452D53DD4D9A59134838E540F1E23805CEF53FF4F7519385 │ │ │ │ │ +1FAE3061F94369FEB1232BDA2E2A281E6972FB4524EFA37A598E7CDC097683EA │ │ │ │ │ +1B609952AEC0799B4711AAAB22D6B1D5CC729DE70897FDDC48AF0A12E40FFE30 │ │ │ │ │ +6528C601E68E8CFA4BBF897CF89DB712DE108DD1F084EFD917BFD9A70A74EB8F │ │ │ │ │ +D0D5B43CCC30373A5E871F18A969D01C69C2B4377622A0C8C4D7C4C28DDE5586 │ │ │ │ │ +BD17D5D640A6F396BD41993BD1932EE10953847F82F7BB36480B67A4F69F0763 │ │ │ │ │ +69423D1803B7BB60594ABEEE9578076639B84D8323F56104438803D45402FEE3 │ │ │ │ │ +045DAB16C4459DA9BBE01D0385CC771FB8DABDD8A9D280C18553F92FE6591CFD │ │ │ │ │ +26B82F28E6673BD823598D3F6CE03BEE04D9A21ED908DFC4F640227C148F133D │ │ │ │ │ +D32113275297C16EBCC9028AFD9102DE50E9CF67E7CF8C42BB8E73D1DAF8A5E2 │ │ │ │ │ +EF5979426229664A990DEF980A7038D2F229789D4F6EDBE1FB81BEC1A1BB14D7 │ │ │ │ │ +882515C62660E8877BE942712D57B86A2E19995AF087DECB7FD5208583C020AE │ │ │ │ │ +FEC86A2826530AD855006225300E4655F443C9360A8BAC96B5B096DDC9B12EDF │ │ │ │ │ +C862215AD6C432CF345FE701757E4EBB8C65F46912CB0F4DEF53672F7298D8F7 │ │ │ │ │ +EE51A9C5DE689A8D36956B7F0410893C0998DB03B73B4024CB046F8F6B32E07F │ │ │ │ │ +CD28A68AFB7152E45F1021DCD520D8A429FCDCA4B8054BAF0B48C4443280F198 │ │ │ │ │ +3360B078E6DEC37772DA8B629CFFD1534E8AA10E26B0BC58E92B9BF280C8EE45 │ │ │ │ │ +618EECDE904249F5A2010DC55D1028DFF4F058260B2B0A46541D6157970F44BD │ │ │ │ │ +D7483802D56A81184119DDBC914E8E394CBEEB506B61BB1CE2A3465252E5D8A3 │ │ │ │ │ +6BDD2D067E69D4ECEFC7D5568378F5F8B38EAFF138014185FE19DF7358A7A780 │ │ │ │ │ +3BE0E2CCD1561113F2F2319BDB503230DD0866121604710CEBBAA659ABFC010B │ │ │ │ │ +5CC40E5807F461D87E75BDC6AD96BCEF62AF668D48D7A76D08B57650F35CF609 │ │ │ │ │ +C0F791AEBEB75E29FA69596BAB419804AECE0F0238AAE64A6C13A22EBF4E3EAC │ │ │ │ │ +3570DECE85F54064486B2364D63E94FEB7C16350CDA318510A45C8848DB470ED │ │ │ │ │ +BFAFD2365681D65CFF3E6C1B4B7C8AE3066F96E819D05B97F3A6C2BFF8A72978 │ │ │ │ │ +EEB7F632FF604AD003A3CCA5A0465D53033A646E8082D3491EDECA3DA1A0E1BB │ │ │ │ │ +64BF36946520438D2EE72FA9EB1CEEDF56510AADA55A8DE280E23C904E0810FA │ │ │ │ │ +A3177CF684F06A4042DE4CD4AB21E2F0616153BEEE58EBBD89911FA43BC52969 │ │ │ │ │ +230C8137DB34C13E147B06C7A3875A931E1AC127E7D3EA0DF8346B6971F80901 │ │ │ │ │ +DC37F2DE1A0B81FD93CA3B5EB9B29ECABA1492901B1BA261DAB872FB3431C718 │ │ │ │ │ +9C9CDA7864908CD773864908DEB44E343221C2C4C335341789A46325D94C767C │ │ │ │ │ +740E3B60CE6D452A3A665967F568671FD7DD460B404B9C3D2EDCD47A336AA2C7 │ │ │ │ │ +BB0B1AC3823978F610629EF7AB526098A7EE7076F50A146D8134BA2DEC1B8ACF │ │ │ │ │ +68A7E4A9B7BE17FB71480516F2D6A8866E56CFD7C7A41311F48DDDD9887DACB8 │ │ │ │ │ +73FDAF5F25E956AFB0A9D530DE2E1128F006AAC9A78715BA2F90C8FED3729BFA │ │ │ │ │ +BDDD4098F870A27A91A0CB540D166FF86A442E95C9C361FD23378A2A138EAFB8 │ │ │ │ │ +D7050B486E1CB95068D890BCCD669456F3385C8F1793CE545099421368FE0F46 │ │ │ │ │ +53137AD2B65030B19CE7FF6B1669DB7A3C440AEF27149780E36C7097B7A8B71B │ │ │ │ │ +8789EECFA9A70B1F9695BB5D94E9A7D341291C1CA1BDEF4BE3EFCB8234CE9FFD │ │ │ │ │ +E1C4963CF919780129FA60162FEAA8AE97328F4BA14D949057A3EE74214F2D29 │ │ │ │ │ +51E7BE584446F6702F39957AE455CF8AF0C36AADAA39B53553D923CA5E9D4988 │ │ │ │ │ +76701B4F77DAE5185AC29900 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -5403,16 +5406,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 23[45 19[83 18[25 5[45 1[45 45 │ │ │ │ │ -45 3[25 44[{}9 90.9091 /CMSL10 rf │ │ │ │ │ +/CMTI10 rf /Fk 138[51 6[51 8[40 26[47 15[25 4[45 1[45 │ │ │ │ │ +45 1[45 3[25 44[{}10 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 │ │ │ │ │ @@ -5525,17 +5528,17 @@ │ │ │ │ │ b Fo(:)i(p)s(oin)m(ter)h(to)g(an)f Fn(IV)g Fo(ob)5 b(ject)31 │ │ │ │ │ b(to)g(hold)f(fron)m(t)h(w)m(eigh)m(ts,)h(size)f Fn(nfront)137 │ │ │ │ │ 5294 y Fl(\210)45 b Fn(IV)i(*bndwghtsIV)28 b Fo(:)i(p)s(oin)m(ter)h(to) │ │ │ │ │ g(an)f Fn(IV)g Fo(ob)5 b(ject)31 b(to)g(hold)f(the)h(w)m(eigh)m(ts)g │ │ │ │ │ (of)g(the)f(fron)m(ts')h(b)s(oundaries,)e(size)227 5407 │ │ │ │ │ y Fn(nfront)1927 5656 y Fo(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fo(2)p 136 100 1202 4 v │ │ │ │ │ -1384 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)30 b Fk(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2699 100 V 137 399 a Fl(\210)45 b Fn(IV)i(*vtxToFrontIV)35 │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fo(2)p 136 100 1195 4 v │ │ │ │ │ +1377 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)30 b Fk(June)g(3,)h(2025)p │ │ │ │ │ +2706 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 │ │ │ │ │ @@ -5588,20 +5591,20 @@ │ │ │ │ │ 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 1202 4 v 1383 100 a Fn(ETree)29 │ │ │ │ │ -b Fk(:)41 b Fj(DRAFT)121 b Fk(Ma)m(y)31 b(1,)g(2024)p │ │ │ │ │ -2651 100 V 1202 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 │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1195 4 v 1376 100 a Fn(ETree)29 │ │ │ │ │ +b Fk(:)41 b Fj(DRAFT)121 b Fk(June)29 b(3,)i(2025)p 2658 │ │ │ │ │ +100 V 1195 w Fo(3)111 399 y(2.)46 b Fn(int)h(ETree_nvtx)e(\()j(ETree)e │ │ │ │ │ +(*etree)g(\))i(;)227 556 y Fo(This)30 b(metho)s(d)g(returns)f(the)h(n)m │ │ │ │ │ +(um)m(b)s(er)f(of)i(v)m(ertices.)227 713 y Fj(Err)-5 │ │ │ │ │ +b(or)34 b(che)-5 b(cking:)40 b Fo(If)30 b Fn(etree)f │ │ │ │ │ Fo(is)i Fn(NULL)p Fo(,)e(an)h(error)g(message)i(is)e(prin)m(ted)g(and)g │ │ │ │ │ (the)h(program)f(exits.)111 915 y(3.)46 b Fn(Tree)h(*)g(ETree_tree)e │ │ │ │ │ (\()j(ETree)e(*etree)g(\))i(;)227 1072 y Fo(This)30 b(metho)s(d)g │ │ │ │ │ (returns)f(a)i(p)s(oin)m(ter)f(to)h(the)g Fn(Tree)e Fo(ob)5 │ │ │ │ │ b(ject.)227 1229 y Fj(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ │ b Fo(If)30 b Fn(etree)f Fo(is)i Fn(NULL)p Fo(,)e(an)h(error)g(message)i │ │ │ │ │ (is)e(prin)m(ted)g(and)g(the)h(program)f(exits.)111 1431 │ │ │ │ │ @@ -5646,17 +5649,17 @@ │ │ │ │ │ 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 1202 4 v │ │ │ │ │ -1384 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)30 b Fk(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2699 100 V 66 399 a Fo(11.)46 b Fn(int)h(*)h(ETree_bndwghts)c(\()j │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fo(4)p 136 100 1195 4 v │ │ │ │ │ +1377 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)30 b Fk(June)g(3,)h(2025)p │ │ │ │ │ +2706 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 │ │ │ │ │ @@ -5714,20 +5717,20 @@ │ │ │ │ │ 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 1202 4 v 1383 100 a Fn(ETree)29 │ │ │ │ │ -b Fk(:)41 b Fj(DRAFT)121 b Fk(Ma)m(y)31 b(1,)g(2024)p │ │ │ │ │ -2651 100 V 1202 w Fo(5)227 399 y(with)j(a)g(call)i(to)e │ │ │ │ │ -Fn(Tree)p 1000 399 29 4 v 34 w(init1\(\))p Fo(.)49 b(The)34 │ │ │ │ │ -b Fn(nodwghtsIV)p Fo(,)d Fn(bndwghtsIV)h Fo(and)h Fn(vtxToFrontIV)e │ │ │ │ │ -Fo(ob)5 b(jects)35 b(are)227 511 y(initialized)d(with)e(calls)h(to)g │ │ │ │ │ +TeXDict begin 5 4 bop 91 100 1195 4 v 1376 100 a Fn(ETree)29 │ │ │ │ │ +b Fk(:)41 b Fj(DRAFT)121 b Fk(June)29 b(3,)i(2025)p 2658 │ │ │ │ │ +100 V 1195 w Fo(5)227 399 y(with)j(a)g(call)i(to)e Fn(Tree)p │ │ │ │ │ +1000 399 29 4 v 34 w(init1\(\))p Fo(.)49 b(The)34 b Fn(nodwghtsIV)p │ │ │ │ │ +Fo(,)d Fn(bndwghtsIV)h Fo(and)h Fn(vtxToFrontIV)e Fo(ob)5 │ │ │ │ │ +b(jects)35 b(are)227 511 y(initialized)d(with)e(calls)h(to)g │ │ │ │ │ Fn(IV)p 1268 511 V 34 w(init\(\))p Fo(.)39 b(The)30 b(en)m(tries)h(in)f │ │ │ │ │ Fn(nodwghtsIV)d Fo(and)i Fn(bndwghtsIV)f Fo(are)i(set)h(to)g │ │ │ │ │ Fn(0)p Fo(,)227 624 y(while)g(the)f(en)m(tries)h(in)f │ │ │ │ │ Fn(vtxToFrontIV)d Fo(are)k(set)g(to)g Fn(-1)p Fo(.)227 │ │ │ │ │ 779 y Fj(Err)-5 b(or)43 b(che)-5 b(cking:)58 b Fo(If)39 │ │ │ │ │ b Fn(etree)f Fo(is)i Fn(NULL)p Fo(,)e(or)i(if)f Fn(nfront)f │ │ │ │ │ Fo(is)h(negativ)m(e,)45 b(or)39 b(if)h Fn(nvtx)46 b(<)i(nfront)p │ │ │ │ │ @@ -5802,17 +5805,17 @@ │ │ │ │ │ 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 1202 4 v │ │ │ │ │ -1384 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)30 b Fk(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2699 100 V 227 399 a Fj(R)-5 b(eturn)40 b(c)-5 b(o)g(de:)111 │ │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fo(6)p 136 100 1195 4 v │ │ │ │ │ +1377 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)30 b Fk(June)g(3,)h(2025)p │ │ │ │ │ +2706 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) │ │ │ │ │ @@ -5887,17 +5890,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 1202 4 v 1383 100 a Fn(ETree)29 │ │ │ │ │ -b Fk(:)41 b Fj(DRAFT)121 b Fk(Ma)m(y)31 b(1,)g(2024)p │ │ │ │ │ -2651 100 V 1202 w Fo(7)111 399 y(6.)46 b Fn(double)g │ │ │ │ │ +TeXDict begin 7 6 bop 91 100 1195 4 v 1376 100 a Fn(ETree)29 │ │ │ │ │ +b Fk(:)41 b Fj(DRAFT)121 b Fk(June)29 b(3,)i(2025)p 2658 │ │ │ │ │ +100 V 1195 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 │ │ │ │ │ @@ -5983,17 +5986,17 @@ │ │ │ │ │ 39 b(The)27 b(map)f(from)227 5138 y(compressed)k(v)m(ertices)i(to)f │ │ │ │ │ (uncompressed)f(v)m(ertices)i(is)e(found)f(in)h(the)h │ │ │ │ │ Fn(eqmapIV)d Fo(ob)5 b(ject.)227 5294 y Fj(Err)-5 b(or)39 │ │ │ │ │ b(che)-5 b(cking:)50 b Fo(If)34 b Fn(etree)g Fo(or)h │ │ │ │ │ Fn(eqmapIV)e Fo(is)j Fn(NULL)p Fo(,)e(an)h(error)g(message)h(is)f(prin) │ │ │ │ │ m(ted)g(and)g(the)g(program)227 5407 y(exits.)p eop end │ │ │ │ │ %%Page: 8 8 │ │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fo(8)p 136 100 1202 4 v │ │ │ │ │ -1384 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)30 b Fk(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2699 100 V 66 399 a Fo(12.)46 b Fn(ETree)h(*)g(ETree_spliceTwoEtrees)42 │ │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fo(8)p 136 100 1195 4 v │ │ │ │ │ +1377 w Fn(ETree)29 b Fk(:)40 b Fj(DRAFT)30 b Fk(June)g(3,)h(2025)p │ │ │ │ │ +2706 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 │ │ │ │ │ @@ -6061,17 +6064,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 1202 4 v 1383 100 a Fn(ETree)29 │ │ │ │ │ -b Fk(:)41 b Fj(DRAFT)121 b Fk(Ma)m(y)31 b(1,)g(2024)p │ │ │ │ │ -2651 100 V 1202 w Fo(9)0 399 y Fh(1.2.6)112 b(Compression)39 │ │ │ │ │ +TeXDict begin 9 8 bop 91 100 1195 4 v 1376 100 a Fn(ETree)29 │ │ │ │ │ +b Fk(:)41 b Fj(DRAFT)121 b Fk(June)29 b(3,)i(2025)p 2658 │ │ │ │ │ +100 V 1195 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 │ │ │ │ │ @@ -6139,17 +6142,17 @@ │ │ │ │ │ b(then)j(returned.)227 5294 y Fj(Err)-5 b(or)35 b(che)-5 │ │ │ │ │ b(cking:)41 b Fo(If)31 b Fn(etree)e Fo(or)i Fn(tree)f │ │ │ │ │ Fo(is)h Fn(NULL)p Fo(,)f(or)h(if)g Fn(nfront)24 b Fg(<)i │ │ │ │ │ Fo(1,)32 b(or)f(if)g Fn(nvtx)25 b Fg(<)h Fo(1,)31 b(an)g(error)g │ │ │ │ │ (message)227 5407 y(is)g(prin)m(ted)f(and)f(the)i(program)f(exits.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 10 10 │ │ │ │ │ -TeXDict begin 10 9 bop 0 100 a Fo(10)p 182 100 1179 4 │ │ │ │ │ -v 1361 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2721 100 V 111 399 a Fo(3.)46 b Fn(ETree)h(*)g(ETree_compress)d(\()j │ │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fo(10)p 182 100 1172 4 │ │ │ │ │ +v 1354 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(June)g(3,)h(2025)p │ │ │ │ │ +2728 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 │ │ │ │ │ @@ -6213,40 +6216,40 @@ │ │ │ │ │ (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 1179 4 v 1360 100 a Fn(ETree)29 │ │ │ │ │ -b Fk(:)41 b Fj(DRAFT)121 b Fk(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2629 100 V 1179 w Fo(11)111 399 y(2.)46 b Fn(IV)h(*)h │ │ │ │ │ -(ETree_newToOldVtxPerm)42 b(\()47 b(ETree)g(*etree)f(\))h(;)227 │ │ │ │ │ -511 y(IV)g(*)h(ETree_oldToNewVtxPerm)42 b(\()47 b(ETree)g(*etree)f(\))h │ │ │ │ │ -(;)227 663 y Fo(An)29 b Fn(IV)f Fo(ob)5 b(ject)30 b(is)g(created)g │ │ │ │ │ -(with)f(size)h Fn(nvtx)p Fo(.)39 b(First)29 b(w)m(e)h(\014nd)d(a)j │ │ │ │ │ -(new-to-old)g(p)s(erm)m(utation)f(of)g(the)h(fron)m(ts.)227 │ │ │ │ │ -776 y(Then)j(w)m(e)i(searc)m(h)f(o)m(v)m(er)h(the)g(fron)m(ts)f(in)f │ │ │ │ │ -(their)h(new)g(order)f(to)i(\014ll)f(the)g(v)m(ertex)h(new-to-old)g(p)s │ │ │ │ │ -(erm)m(utation)227 888 y(v)m(ector.)68 b(The)39 b(old-to-new)h(v)m │ │ │ │ │ -(ertex)g(p)s(erm)m(utation)f(v)m(ector)h(is)f(found)f(b)m(y)h(\014rst)f │ │ │ │ │ -(\014nding)g(the)h(new-to-old)227 1001 y(v)m(ertex)32 │ │ │ │ │ -b(p)s(erm)m(utation)e(v)m(ector,)i(then)f(in)m(v)m(erting)g(it.)227 │ │ │ │ │ -1153 y Fj(Err)-5 b(or)31 b(che)-5 b(cking:)38 b Fo(If)26 │ │ │ │ │ -b Fn(etree)e Fo(is)j Fn(NULL)p Fo(,)e(or)h(if)h Fn(nfront)c │ │ │ │ │ -Fg(<)i Fo(1,)j(or)e(if)h Fn(nvtx)d Fg(<)h Fo(1,)i(an)g(error)f(message) │ │ │ │ │ -h(is)f(prin)m(ted)227 1265 y(and)k(the)h(program)f(exits.)111 │ │ │ │ │ -1455 y(3.)46 b Fn(void)h(ETree_permuteVertices)42 b(\()47 │ │ │ │ │ -b(ETree)g(*etree,)f(IV)h(*vtxOldToNewIV)d(\))j(;)227 │ │ │ │ │ -1606 y Fo(This)32 b(metho)s(d)f(p)s(erm)m(utes)h(the)g(v)m(ertices)i(|) │ │ │ │ │ -f(the)f Fn(vtxToFrontIV)d Fo(map)j(is)g(up)s(dated)f(to)i(re\015ect)g │ │ │ │ │ -(the)f(new)227 1719 y(v)m(ertex)g(n)m(um)m(b)s(ering.)227 │ │ │ │ │ -1870 y Fj(Err)-5 b(or)44 b(che)-5 b(cking:)61 b Fo(If)41 │ │ │ │ │ -b Fn(etree)e Fo(or)i Fn(vtxOldToNewIV)d Fo(is)j Fn(NULL)p │ │ │ │ │ -Fo(,)f(or)h(if)g Fn(nvtx)g Fg(<)i Fo(1,)h(an)d(error)g(message)h(is)227 │ │ │ │ │ +TeXDict begin 11 10 bop 91 100 1172 4 v 1353 100 a Fn(ETree)29 │ │ │ │ │ +b Fk(:)41 b Fj(DRAFT)121 b Fk(June)30 b(3,)h(2025)p 2636 │ │ │ │ │ +100 V 1172 w Fo(11)111 399 y(2.)46 b Fn(IV)h(*)h(ETree_newToOldVtxPerm) │ │ │ │ │ +42 b(\()47 b(ETree)g(*etree)f(\))h(;)227 511 y(IV)g(*)h │ │ │ │ │ +(ETree_oldToNewVtxPerm)42 b(\()47 b(ETree)g(*etree)f(\))h(;)227 │ │ │ │ │ +663 y Fo(An)29 b Fn(IV)f Fo(ob)5 b(ject)30 b(is)g(created)g(with)f │ │ │ │ │ +(size)h Fn(nvtx)p Fo(.)39 b(First)29 b(w)m(e)h(\014nd)d(a)j(new-to-old) │ │ │ │ │ +g(p)s(erm)m(utation)f(of)g(the)h(fron)m(ts.)227 776 y(Then)j(w)m(e)i │ │ │ │ │ +(searc)m(h)f(o)m(v)m(er)h(the)g(fron)m(ts)f(in)f(their)h(new)g(order)f │ │ │ │ │ +(to)i(\014ll)f(the)g(v)m(ertex)h(new-to-old)g(p)s(erm)m(utation)227 │ │ │ │ │ +888 y(v)m(ector.)68 b(The)39 b(old-to-new)h(v)m(ertex)g(p)s(erm)m │ │ │ │ │ +(utation)f(v)m(ector)h(is)f(found)f(b)m(y)h(\014rst)f(\014nding)g(the)h │ │ │ │ │ +(new-to-old)227 1001 y(v)m(ertex)32 b(p)s(erm)m(utation)e(v)m(ector,)i │ │ │ │ │ +(then)f(in)m(v)m(erting)g(it.)227 1153 y Fj(Err)-5 b(or)31 │ │ │ │ │ +b(che)-5 b(cking:)38 b Fo(If)26 b Fn(etree)e Fo(is)j │ │ │ │ │ +Fn(NULL)p Fo(,)e(or)h(if)h Fn(nfront)c Fg(<)i Fo(1,)j(or)e(if)h │ │ │ │ │ +Fn(nvtx)d Fg(<)h Fo(1,)i(an)g(error)f(message)h(is)f(prin)m(ted)227 │ │ │ │ │ +1265 y(and)k(the)h(program)f(exits.)111 1455 y(3.)46 │ │ │ │ │ +b Fn(void)h(ETree_permuteVertices)42 b(\()47 b(ETree)g(*etree,)f(IV)h │ │ │ │ │ +(*vtxOldToNewIV)d(\))j(;)227 1606 y Fo(This)32 b(metho)s(d)f(p)s(erm)m │ │ │ │ │ +(utes)h(the)g(v)m(ertices)i(|)f(the)f Fn(vtxToFrontIV)d │ │ │ │ │ +Fo(map)j(is)g(up)s(dated)f(to)i(re\015ect)g(the)f(new)227 │ │ │ │ │ +1719 y(v)m(ertex)g(n)m(um)m(b)s(ering.)227 1870 y Fj(Err)-5 │ │ │ │ │ +b(or)44 b(che)-5 b(cking:)61 b Fo(If)41 b Fn(etree)e │ │ │ │ │ +Fo(or)i Fn(vtxOldToNewIV)d Fo(is)j Fn(NULL)p Fo(,)f(or)h(if)g │ │ │ │ │ +Fn(nvtx)g Fg(<)i Fo(1,)h(an)d(error)g(message)h(is)227 │ │ │ │ │ 1983 y(prin)m(ted)30 b(and)g(the)h(program)f(exits.)0 │ │ │ │ │ 2254 y Fh(1.2.9)112 b(Multisector)38 b(metho)s(ds)0 2452 │ │ │ │ │ y Fo(One)f(of)g(our)g(goals)h(is)g(to)f(impro)m(v)m(e)h(a)g(matrix)g │ │ │ │ │ (ordering)e(using)h(the)g(m)m(ultisection)i(ordering)e(algorithm.)62 │ │ │ │ │ b(T)-8 b(o)0 2565 y(do)31 b(this,)h(w)m(e)f(need)g(to)h(extract)h(a)e │ │ │ │ │ (m)m(ultisector)i(from)e(the)g(v)m(ertices,)i(i.e.,)g(a)f(set)f(of)h │ │ │ │ │ (no)s(des)e(that)i(when)e(remo)m(v)m(ed)0 2677 y(from)38 │ │ │ │ │ @@ -6295,19 +6298,19 @@ │ │ │ │ │ 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 1179 │ │ │ │ │ -4 v 1361 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(Ma)m(y)i(1,)f(2024) │ │ │ │ │ -p 2721 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 │ │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fo(12)p 182 100 1172 │ │ │ │ │ +4 v 1354 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(June)g(3,)h(2025)p │ │ │ │ │ +2728 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 │ │ │ │ │ @@ -6398,21 +6401,21 @@ │ │ │ │ │ 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 1179 4 v 1360 100 a Fn(ETree)29 │ │ │ │ │ -b Fk(:)41 b Fj(DRAFT)121 b Fk(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2629 100 V 1179 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 │ │ │ │ │ +TeXDict begin 13 12 bop 91 100 1172 4 v 1353 100 a Fn(ETree)29 │ │ │ │ │ +b Fk(:)41 b Fj(DRAFT)121 b Fk(June)30 b(3,)h(2025)p 2636 │ │ │ │ │ +100 V 1172 w Fo(13)0 399 y Fh(1.2.10)113 b(T)-9 b(ransformation)38 │ │ │ │ │ +b(metho)s(ds)0 592 y Fo(Often)g(the)h(elimination)h(tree)g(or)e(fron)m │ │ │ │ │ +(t)h(tree)g(that)h(w)m(e)f(obtain)g(from)f(an)h(ordering)f(of)h(the)g │ │ │ │ │ +(graph)f(is)h(not)g(as)0 705 y(appropriate)30 b(for)h(a)f │ │ │ │ │ +(factorization)j(as)e(w)m(e)g(w)m(ould)f(lik)m(e.)42 │ │ │ │ │ b(There)30 b(are)h(t)m(w)m(o)g(imp)s(ortan)m(t)g(cases.)137 │ │ │ │ │ 898 y Fl(\210)45 b Fo(Near)h(the)g(lea)m(v)m(es)i(of)d(the)h(tree)g │ │ │ │ │ (the)g(fron)m(ts)f(are)h(t)m(ypically)i(small)e(in)f(size.)87 │ │ │ │ │ b(There)45 b(is)g(an)h(o)m(v)m(erhead)227 1011 y(asso)s(ciated)36 │ │ │ │ │ b(with)d(eac)m(h)i(fron)m(t,)g(and)e(though)h(the)g(o)m(v)m(erhead)h(v) │ │ │ │ │ -5 b(aries)34 b(with)g(regard)g(to)g(the)g(factorization)227 │ │ │ │ │ 1123 y(algorithm,)28 b(it)e(can)g(b)s(e)g(b)s(ene\014cial)f(to)i(group) │ │ │ │ │ @@ -6497,19 +6500,19 @@ │ │ │ │ │ (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 1179 │ │ │ │ │ -4 v 1361 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(Ma)m(y)i(1,)f(2024) │ │ │ │ │ -p 2721 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 │ │ │ │ │ +TeXDict begin 14 13 bop 0 100 a Fo(14)p 182 100 1172 │ │ │ │ │ +4 v 1354 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(June)g(3,)h(2025)p │ │ │ │ │ +2728 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 │ │ │ │ │ @@ -6587,18 +6590,18 @@ │ │ │ │ │ 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 1179 4 v 1360 100 a Fn(ETree)29 │ │ │ │ │ -b Fk(:)41 b Fj(DRAFT)121 b Fk(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2629 100 V 1179 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 │ │ │ │ │ +TeXDict begin 15 14 bop 91 100 1172 4 v 1353 100 a Fn(ETree)29 │ │ │ │ │ +b Fk(:)41 b Fj(DRAFT)121 b Fk(June)30 b(3,)h(2025)p 2636 │ │ │ │ │ +100 V 1172 w Fo(15)227 399 y Fn(ETree)47 b(*)g(ETree_transform2)c(\()48 │ │ │ │ │ +b(ETree)e(*etree,)g(int)h(vwghts[],)e(int)i(maxzeros,)1516 │ │ │ │ │ 511 y(int)g(maxfrontsize,)d(int)j(seed)g(\))g(;)227 675 │ │ │ │ │ y Fo(These)37 b(metho)s(ds)g(returns)f(an)i Fn(ETree)e │ │ │ │ │ Fo(ob)5 b(ject)38 b(where)f(one)h(or)f(more)h(subtrees)e(that)i(con)m │ │ │ │ │ (tain)h(m)m(ultiple)227 788 y(fron)m(ts)28 b(ha)m(v)m(e)g(b)s(een)f │ │ │ │ │ (merged)h(in)m(to)g(single)g(fron)m(ts)g(and)f(where)g(one)g(or)h(more) │ │ │ │ │ f(large)i(fron)m(ts)e(ha)m(v)m(e)i(b)s(een)e(split)227 │ │ │ │ │ 901 y(in)m(to)38 b(smaller)g(fron)m(ts.)60 b(The)36 b(t)m(w)m(o)j │ │ │ │ │ @@ -6662,17 +6665,17 @@ │ │ │ │ │ 5181 y(assigned)i(to)f(all)h(pro)s(cessors.\))49 b(The)33 │ │ │ │ │ b(tree)h(is)f(then)g(visited)g(in)g(a)h(p)s(ost-order)e(tra)m(v)m │ │ │ │ │ (ersal,)k(and)d(eac)m(h)427 5294 y(fron)m(t)27 b(is)g(assigned)g(to)g │ │ │ │ │ (an)g(eligible)h(thread)e(or)h(pro)s(cessor)f(with)h(the)f(least)i(n)m │ │ │ │ │ (um)m(b)s(er)e(of)h(accum)m(ulated)427 5407 y(ops)j(so)h(far.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 16 16 │ │ │ │ │ -TeXDict begin 16 15 bop 0 100 a Fo(16)p 182 100 1179 │ │ │ │ │ -4 v 1361 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(Ma)m(y)i(1,)f(2024) │ │ │ │ │ -p 2721 100 V 337 399 a Fl(\210)45 b Fo(The)28 b Fj(domain)k(de)-5 │ │ │ │ │ +TeXDict begin 16 15 bop 0 100 a Fo(16)p 182 100 1172 │ │ │ │ │ +4 v 1354 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(June)g(3,)h(2025)p │ │ │ │ │ +2728 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 │ │ │ │ │ @@ -6740,25 +6743,25 @@ │ │ │ │ │ (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 1179 4 v 1360 100 a Fn(ETree)29 │ │ │ │ │ -b Fk(:)41 b Fj(DRAFT)121 b Fk(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2629 100 V 1179 w Fo(17)111 399 y(5.)46 b Fn(void)h │ │ │ │ │ -(ETree_backSolveProfile)42 b(\()47 b(ETree)f(*etree,)g(double)g(dvec[]) │ │ │ │ │ -g(\))i(;)227 555 y Fo(On)24 b(return,)g Fn(dvec[J])f │ │ │ │ │ -Fo(con)m(tains)i(the)g(amoun)m(t)g(of)f(stac)m(k)i(storage)g(to)f(solv) │ │ │ │ │ -m(e)h(for)e Fn(J)g Fo(using)g(the)g(m)m(ultifron)m(tal-)227 │ │ │ │ │ -668 y(based)30 b(bac)m(kw)m(ard)h(solv)m(e.)227 825 y │ │ │ │ │ -Fj(Err)-5 b(or)29 b(che)-5 b(cking:)38 b Fo(If)25 b Fn(etree)e │ │ │ │ │ -Fo(or)j Fn(dvec)d Fo(are)j Fn(NULL)p Fo(,)e(an)h(error)g(message)h(is)f │ │ │ │ │ -(prin)m(ted)g(and)g(the)g(program)g(exits.)0 1112 y Fh(1.2.13)113 │ │ │ │ │ +TeXDict begin 17 16 bop 91 100 1172 4 v 1353 100 a Fn(ETree)29 │ │ │ │ │ +b Fk(:)41 b Fj(DRAFT)121 b Fk(June)30 b(3,)h(2025)p 2636 │ │ │ │ │ +100 V 1172 w Fo(17)111 399 y(5.)46 b Fn(void)h(ETree_backSolveProfile) │ │ │ │ │ +42 b(\()47 b(ETree)f(*etree,)g(double)g(dvec[])g(\))i(;)227 │ │ │ │ │ +555 y Fo(On)24 b(return,)g Fn(dvec[J])f Fo(con)m(tains)i(the)g(amoun)m │ │ │ │ │ +(t)g(of)f(stac)m(k)i(storage)g(to)f(solv)m(e)h(for)e │ │ │ │ │ +Fn(J)g Fo(using)g(the)g(m)m(ultifron)m(tal-)227 668 y(based)30 │ │ │ │ │ +b(bac)m(kw)m(ard)h(solv)m(e.)227 825 y Fj(Err)-5 b(or)29 │ │ │ │ │ +b(che)-5 b(cking:)38 b Fo(If)25 b Fn(etree)e Fo(or)j │ │ │ │ │ +Fn(dvec)d Fo(are)j Fn(NULL)p Fo(,)e(an)h(error)g(message)h(is)f(prin)m │ │ │ │ │ +(ted)g(and)g(the)g(program)g(exits.)0 1112 y Fh(1.2.13)113 │ │ │ │ │ b(IO)37 b(metho)s(ds)0 1315 y Fo(There)31 b(are)h(the)f(usual)g(eigh)m │ │ │ │ │ (t)i(IO)e(routines.)43 b(The)31 b(\014le)g(structure)g(of)h(a)f(tree)h │ │ │ │ │ (ob)5 b(ject)33 b(is)e(simple:)43 b Fn(nfront)p Fo(,)30 │ │ │ │ │ b Fn(nvtx)p Fo(,)0 1428 y(a)h Fn(Tree)e Fo(ob)5 b(ject)31 │ │ │ │ │ b(follo)m(w)m(ed)h(b)m(y)e(the)h Fn(nodwghtsIV)p Fo(,)d │ │ │ │ │ Fn(bndwghtsIV)f Fo(and)j Fn(vtxToFrontIV)d Fo(ob)5 b(jects.)111 │ │ │ │ │ 1682 y(1.)46 b Fn(int)h(ETree_readFromFile)c(\()k(ETree)g(*etree,)f │ │ │ │ │ @@ -6824,17 +6827,17 @@ │ │ │ │ │ e(v)-5 b(alue)34 b Fn(1)e Fo(is)i(returned.)47 b(If)33 │ │ │ │ │ b(an)g(IO)f(error)h(is)227 5250 y(encoun)m(tered)e(from)f │ │ │ │ │ Fn(fprintf)p Fo(,)f(zero)i(is)f(returned.)227 5407 y │ │ │ │ │ Fj(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fo(If)30 b Fn(etree)f │ │ │ │ │ Fo(or)i Fn(fp)e Fo(are)i Fn(NULL)p Fo(,)f(an)g(error)g(message)h(is)g │ │ │ │ │ (prin)m(ted)f(and)f(zero)j(is)e(returned.)p eop end │ │ │ │ │ %%Page: 18 18 │ │ │ │ │ -TeXDict begin 18 17 bop 0 100 a Fo(18)p 182 100 1179 │ │ │ │ │ -4 v 1361 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(Ma)m(y)i(1,)f(2024) │ │ │ │ │ -p 2721 100 V 111 399 a Fo(6.)46 b Fn(int)h(ETree_writeToBinaryFile)42 │ │ │ │ │ +TeXDict begin 18 17 bop 0 100 a Fo(18)p 182 100 1172 │ │ │ │ │ +4 v 1354 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(June)g(3,)h(2025)p │ │ │ │ │ +2728 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 │ │ │ │ │ @@ -6904,18 +6907,18 @@ │ │ │ │ │ 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 1179 4 v 1360 100 a Fn(ETree)29 │ │ │ │ │ -b Fk(:)41 b Fj(DRAFT)121 b Fk(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2629 100 V 1179 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 │ │ │ │ │ +TeXDict begin 19 18 bop 91 100 1172 4 v 1353 100 a Fn(ETree)29 │ │ │ │ │ +b Fk(:)41 b Fj(DRAFT)121 b Fk(June)30 b(3,)h(2025)p 2636 │ │ │ │ │ +100 V 1172 w Fo(19)337 399 y Fl(\210)45 b Fo(The)24 b │ │ │ │ │ +Fn(outETreeFile)d Fo(parameter)k(is)f(the)h(output)f(\014le)g(for)g │ │ │ │ │ (the)h Fn(ETree)d Fo(ob)5 b(ject.)40 b(If)24 b Fn(outETreeFile)d │ │ │ │ │ Fo(is)427 511 y Fn(none)g Fo(then)h(the)g Fn(ETree)f │ │ │ │ │ Fo(ob)5 b(ject)22 b(is)g(not)h(written)f(to)g(a)h(\014le.)38 │ │ │ │ │ b(Otherwise,)23 b(the)g Fn(ETree)p 3253 511 29 4 v 33 │ │ │ │ │ w(writeToFile\(\))427 624 y Fo(metho)s(d)30 b(is)h(called)h(to)f(write) │ │ │ │ │ g(the)g(ob)5 b(ject)31 b(to)h(a)f(formatted)g(\014le)g(\(if)g │ │ │ │ │ Fn(outETreeFile)c Fo(is)k(of)g(the)f(form)427 737 y Fn(*.etreef)p │ │ │ │ │ @@ -6986,17 +6989,17 @@ │ │ │ │ │ b(39661)47 b(indices,)141 b(367237)46 b(|L|,)g(63215265)g(ops)275 │ │ │ │ │ 5294 y(merge2)142 b(:)g(511)47 b(fronts,)189 b(29525)47 │ │ │ │ │ b(indices,)141 b(373757)46 b(|L|,)g(63590185)g(ops)275 │ │ │ │ │ 5407 y(split)190 b(:)142 b(536)47 b(fronts,)189 b(34484)47 │ │ │ │ │ b(indices,)141 b(373757)46 b(|L|,)g(63590185)g(ops)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 20 20 │ │ │ │ │ -TeXDict begin 20 19 bop 0 100 a Fo(20)p 182 100 1179 │ │ │ │ │ -4 v 1361 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(Ma)m(y)i(1,)f(2024) │ │ │ │ │ -p 2721 100 V 337 399 a Fl(\210)45 b Fo(The)28 b Fn(msglvl)f │ │ │ │ │ +TeXDict begin 20 19 bop 0 100 a Fo(20)p 182 100 1172 │ │ │ │ │ +4 v 1354 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(June)g(3,)h(2025)p │ │ │ │ │ +2728 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 │ │ │ │ │ @@ -7066,18 +7069,18 @@ │ │ │ │ │ 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 1179 4 v 1360 100 a Fn(ETree)29 │ │ │ │ │ -b Fk(:)41 b Fj(DRAFT)121 b Fk(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2629 100 V 1179 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 │ │ │ │ │ +TeXDict begin 21 20 bop 91 100 1172 4 v 1353 100 a Fn(ETree)29 │ │ │ │ │ +b Fk(:)41 b Fj(DRAFT)121 b Fk(June)30 b(3,)h(2025)p 2636 │ │ │ │ │ +100 V 1172 w Fo(21)337 399 y Fl(\210)45 b Fo(The)30 b │ │ │ │ │ +Fn(maptype)f Fo(parameter)h(is)h(the)f(t)m(yp)s(e)h(of)f(map.)500 │ │ │ │ │ 540 y Fe({)45 b Fn(1)30 b Fo(|)h(wrap)e(map)500 667 y │ │ │ │ │ Fe({)45 b Fn(2)30 b Fo(|)h(balanced)f(map)500 794 y Fe({)45 │ │ │ │ │ b Fn(3)30 b Fo(|)h(subtree-subset)e(map)500 921 y Fe({)45 │ │ │ │ │ b Fn(4)30 b Fo(|)h(domain)f(decomp)s(osition)h(map)337 │ │ │ │ │ 1062 y Fl(\210)45 b Fo(The)d Fn(cutoff)e Fo(parameter)i(is)g(used)f(b)m │ │ │ │ │ (y)h(the)g(domain)g(decomp)s(osition)g(map)g(only)-8 │ │ │ │ │ b(.)75 b(T)-8 b(ry)42 b(setting)427 1175 y Fn(cutoff)k(=)i(1/nthread)28 │ │ │ │ │ @@ -7159,17 +7162,17 @@ │ │ │ │ │ b(Otherwise,)37 b(the)g Fn(IV)p 3252 5181 V 34 w(writeToFile\(\))427 │ │ │ │ │ 5294 y Fo(metho)s(d)i(is)h(called)h(to)f(write)g(the)g(ob)5 │ │ │ │ │ b(ject)40 b(to)g(a)g(formatted)h(\014le)e(\(if)h Fn(outIVFile)d │ │ │ │ │ Fo(is)j(of)g(the)f(form)427 5407 y Fn(*.ivf)p Fo(\),)30 │ │ │ │ │ b(or)g(a)h(binary)f(\014le)g(\(if)h Fn(outIVFile)d Fo(is)i(of)g(the)h │ │ │ │ │ (form)f Fn(*.ivb)p Fo(\).)p eop end │ │ │ │ │ %%Page: 22 22 │ │ │ │ │ -TeXDict begin 22 21 bop 0 100 a Fo(22)p 182 100 1179 │ │ │ │ │ -4 v 1361 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(Ma)m(y)i(1,)f(2024) │ │ │ │ │ -p 2721 100 V 111 399 a Fo(6.)46 b Fn(testExpand)f(msglvl)h(msgFile)g │ │ │ │ │ +TeXDict begin 22 21 bop 0 100 a Fo(22)p 182 100 1172 │ │ │ │ │ +4 v 1354 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(June)g(3,)h(2025)p │ │ │ │ │ +2728 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 │ │ │ │ │ @@ -7244,28 +7247,27 @@ │ │ │ │ │ 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 1179 4 v 1360 100 a Fn(ETree)29 │ │ │ │ │ -b Fk(:)41 b Fj(DRAFT)121 b Fk(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2629 100 V 1179 w Fo(23)0 453 y(Figure)26 b(1.1:)40 b │ │ │ │ │ -Fa(GRD7x7)p Fo(:)f(W)-8 b(orking)26 b(storage)i(for)d(the)h(forw)m(ard) │ │ │ │ │ -f(sparse)g(factorization)k(of)d(the)g(nested)f(dissection)0 │ │ │ │ │ -566 y(ordering.)40 b(On)28 b(the)h(left)h(is)e(the)h(storage)i │ │ │ │ │ -(required)d(to)i(factor)2159 540 y Fb(b)2137 566 y Fg(J)38 │ │ │ │ │ -b Fo(and)29 b(its)g(up)s(date)f(matrix.)40 b(On)28 b(the)h(righ)m(t)h │ │ │ │ │ -(is)f(the)0 679 y(storage)j(required)d(to)j(factor)f │ │ │ │ │ -Fg(J)39 b Fo(and)30 b(all)h(of)g(its)g(ancestors.)41 │ │ │ │ │ -b(Both)31 b(plots)g(ha)m(v)m(e)h(the)e(same)h(scale.)p │ │ │ │ │ -18 808 1918 4 v 18 2658 4 1850 v 76 2633 a @beginspecial │ │ │ │ │ -50 @llx 50 @lly 500 @urx 500 @ury 2160 @rwi 2160 @rhi │ │ │ │ │ -@setspecial │ │ │ │ │ +TeXDict begin 23 22 bop 91 100 1172 4 v 1353 100 a Fn(ETree)29 │ │ │ │ │ +b Fk(:)41 b Fj(DRAFT)121 b Fk(June)30 b(3,)h(2025)p 2636 │ │ │ │ │ +100 V 1172 w Fo(23)0 453 y(Figure)26 b(1.1:)40 b Fa(GRD7x7)p │ │ │ │ │ +Fo(:)f(W)-8 b(orking)26 b(storage)i(for)d(the)h(forw)m(ard)f(sparse)g │ │ │ │ │ +(factorization)k(of)d(the)g(nested)f(dissection)0 566 │ │ │ │ │ +y(ordering.)40 b(On)28 b(the)h(left)h(is)e(the)h(storage)i(required)d │ │ │ │ │ +(to)i(factor)2159 540 y Fb(b)2137 566 y Fg(J)38 b Fo(and)29 │ │ │ │ │ +b(its)g(up)s(date)f(matrix.)40 b(On)28 b(the)h(righ)m(t)h(is)f(the)0 │ │ │ │ │ +679 y(storage)j(required)d(to)j(factor)f Fg(J)39 b Fo(and)30 │ │ │ │ │ +b(all)h(of)g(its)g(ancestors.)41 b(Both)31 b(plots)g(ha)m(v)m(e)h(the)e │ │ │ │ │ +(same)h(scale.)p 18 808 1918 4 v 18 2658 4 1850 v 76 │ │ │ │ │ +2633 a @beginspecial 50 @llx 50 @lly 500 @urx 500 @ury │ │ │ │ │ +2160 @rwi 2160 @rhi @setspecial │ │ │ │ │ %%BeginDocument: ../../ETree/doc/FS1.eps │ │ │ │ │ %!PS-Adobe-2.0 EPSF-1.2 │ │ │ │ │ %%BoundingBox: 50 50 500 500 │ │ │ │ │ /CSH { │ │ │ │ │ % │ │ │ │ │ % center show a string │ │ │ │ │ % │ │ │ │ │ @@ -7653,17 +7655,17 @@ │ │ │ │ │ 5053 y(information)d(\(see)g(the)g Fn(ETree)p 1305 5053 │ │ │ │ │ V 33 w(writeStats\(\))c Fo(metho)s(d\).)337 5294 y Fl(\210)45 │ │ │ │ │ b Fo(The)28 b Fn(msglvl)f Fo(parameter)i(determines)g(the)g(amoun)m(t)g │ │ │ │ │ (of)f(output)h(|)f(taking)i Fn(msglvl)46 b(>=)h(3)28 │ │ │ │ │ b Fo(means)427 5407 y(the)j Fn(ETree)e Fo(ob)5 b(ject)31 │ │ │ │ │ b(is)f(written)h(to)g(the)g(message)g(\014le.)p eop end │ │ │ │ │ %%Page: 24 24 │ │ │ │ │ -TeXDict begin 24 23 bop 0 100 a Fo(24)p 182 100 1179 │ │ │ │ │ -4 v 1361 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(Ma)m(y)i(1,)f(2024) │ │ │ │ │ -p 2721 100 V 337 399 a Fl(\210)45 b Fo(The)33 b Fn(msgFile)e │ │ │ │ │ +TeXDict begin 24 23 bop 0 100 a Fo(24)p 182 100 1172 │ │ │ │ │ +4 v 1354 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(June)g(3,)h(2025)p │ │ │ │ │ +2728 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 │ │ │ │ │ @@ -7744,17 +7746,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 1179 4 v 1360 100 a Fn(ETree)29 │ │ │ │ │ -b Fk(:)41 b Fj(DRAFT)121 b Fk(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2629 100 V 1179 w Fo(25)227 399 y(the)h Fn(flag)e Fo(and)h │ │ │ │ │ +TeXDict begin 25 24 bop 91 100 1172 4 v 1353 100 a Fn(ETree)29 │ │ │ │ │ +b Fk(:)41 b Fj(DRAFT)121 b Fk(June)30 b(3,)h(2025)p 2636 │ │ │ │ │ +100 V 1172 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 │ │ │ │ │ @@ -7818,17 +7820,17 @@ │ │ │ │ │ (\014le.)40 b(Otherwise,)30 b(the)f Fn(IV)p 2832 5181 │ │ │ │ │ V 34 w(writeToFile\(\))c Fo(metho)s(d)k(is)427 5294 y(called)35 │ │ │ │ │ b(to)f(write)g(the)f(ob)5 b(ject)35 b(to)f(a)g(formatted)g(\014le)f │ │ │ │ │ (\(if)h Fn(outIVFile)d Fo(is)i(of)h(the)g(form)f Fn(*.ivf)p │ │ │ │ │ Fo(\),)g(or)h(a)427 5407 y(binary)c(\014le)g(\(if)h Fn(outIVFile)d │ │ │ │ │ Fo(is)i(of)h(the)f(form)g Fn(*.ivb)p Fo(\).)p eop end │ │ │ │ │ %%Page: 26 26 │ │ │ │ │ -TeXDict begin 26 25 bop 0 100 a Fo(26)p 182 100 1179 │ │ │ │ │ -4 v 1361 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(Ma)m(y)i(1,)f(2024) │ │ │ │ │ -p 2721 100 V 337 399 a Fl(\210)45 b Fo(The)30 b Fn(flag)f │ │ │ │ │ +TeXDict begin 26 25 bop 0 100 a Fo(26)p 182 100 1172 │ │ │ │ │ +4 v 1354 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(June)g(3,)h(2025)p │ │ │ │ │ +2728 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) │ │ │ │ │ @@ -7898,18 +7900,18 @@ │ │ │ │ │ (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 1179 4 v 1360 100 a Fn(ETree)29 │ │ │ │ │ -b Fk(:)41 b Fj(DRAFT)121 b Fk(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2629 100 V 1179 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 │ │ │ │ │ +TeXDict begin 27 26 bop 91 100 1172 4 v 1353 100 a Fn(ETree)29 │ │ │ │ │ +b Fk(:)41 b Fj(DRAFT)121 b Fk(June)30 b(3,)h(2025)p 2636 │ │ │ │ │ +100 V 1172 w Fo(27)337 399 y Fl(\210)45 b Fo(The)30 b │ │ │ │ │ +Fn(outEPSfile)e Fo(parameter)j(is)f(the)h(name)f(of)h(the)f(EPS)g │ │ │ │ │ (\014le)g(to)h(hold)f(the)h(tree.)337 542 y Fl(\210)45 │ │ │ │ │ b Fo(The)34 b Fn(metricType)e Fo(parameter)j(de\014nes)f(the)h(t)m(yp)s │ │ │ │ │ (e)g(of)g(metric)g(to)g(b)s(e)f(illustrated.)54 b(See)35 │ │ │ │ │ b(ab)s(o)m(v)m(e)h(for)427 655 y(v)-5 b(alues.)337 799 │ │ │ │ │ y Fl(\210)45 b Fo(F)-8 b(or)31 b(information)g(ab)s(out)f(the)h │ │ │ │ │ Fn(heightflag)c Fo(and)j Fn(coordflag)e Fo(parameters,)j(see)g(Section) │ │ │ │ │ g Fe(??)q Fo(.)337 943 y Fl(\210)45 b Fo(If)30 b Fn(labelflag)45 │ │ │ │ │ @@ -9711,17 +9713,17 @@ │ │ │ │ │ b Fj(Mer)-5 b(ging)31 b Fo(the)h(fron)m(t)g(tree)h(means)f(com)m │ │ │ │ │ (bining)g(fron)m(ts)g(together)h(that)227 5407 y(do)26 │ │ │ │ │ b(not)g(in)m(tro)s(duce)f(more)h(than)f Fn(maxzeros)e │ │ │ │ │ Fo(zero)k(en)m(tries)f(in)f(a)h(fron)m(t.)40 b(\(See)26 │ │ │ │ │ b([)p Fe(?)p Fo(])g(and)f([)p Fe(?)q Fo(])h(for)f(a)h(description)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 28 28 │ │ │ │ │ -TeXDict begin 28 27 bop 0 100 a Fo(28)p 182 100 1179 │ │ │ │ │ -4 v 1361 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(Ma)m(y)i(1,)f(2024) │ │ │ │ │ -p 2721 100 V 0 731 a Fo(Figure)c(1.2:)39 b Fa(GRD7x7x7)p │ │ │ │ │ +TeXDict begin 28 27 bop 0 100 a Fo(28)p 182 100 1172 │ │ │ │ │ +4 v 1354 w Fn(ETree)29 b Fk(:)41 b Fj(DRAFT)30 b Fk(June)g(3,)h(2025)p │ │ │ │ │ +2728 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 │ │ │ │ │ @@ -11992,17 +11994,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 1179 4 v 1360 100 a Fn(ETree)29 │ │ │ │ │ -b Fk(:)41 b Fj(DRAFT)121 b Fk(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2629 100 V 1179 w Fo(29)227 399 y(of)j(this)g(sup)s(erno)s(de)d │ │ │ │ │ +TeXDict begin 29 28 bop 91 100 1172 4 v 1353 100 a Fn(ETree)29 │ │ │ │ │ +b Fk(:)41 b Fj(DRAFT)121 b Fk(June)30 b(3,)h(2025)p 2636 │ │ │ │ │ +100 V 1172 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 │ │ │ │ │ @@ -12163,19 +12165,19 @@ │ │ │ │ │ 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 1179 4 v 1360 100 a Fn(ETree)29 │ │ │ │ │ -b Fk(:)41 b Fj(DRAFT)121 b Fk(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2629 100 V 1179 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 │ │ │ │ │ +TeXDict begin 31 30 bop 91 100 1172 4 v 1353 100 a Fn(ETree)29 │ │ │ │ │ +b Fk(:)41 b Fj(DRAFT)121 b Fk(June)30 b(3,)h(2025)p 2636 │ │ │ │ │ +100 V 1172 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 │ │ │ │ │ Fo(,)i(17)0 1189 y Fn(ETree)p 246 1189 V 33 w(writeToFormattedFile\(\)) │ │ │ │ │ p Fo(,)e(17)p eop end │ │ │ │ │ ├── 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 May 1, 2024 │ │ │ │ │ │ + 2 ETree : DRAFT June 3, 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 May 1, 2024 3 │ │ │ │ │ │ + ETree : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 4 ETree : DRAFT June 3, 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 May 1, 2024 5 │ │ │ │ │ │ + ETree : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 6 ETree : DRAFT June 3, 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 May 1, 2024 7 │ │ │ │ │ │ + ETree : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 8 ETree : DRAFT June 3, 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 May 1, 2024 9 │ │ │ │ │ │ + ETree : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 10 ETree : DRAFT June 3, 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 May 1, 2024 11 │ │ │ │ │ │ + ETree : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 12 ETree : DRAFT June 3, 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 May 1, 2024 13 │ │ │ │ │ │ + ETree : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 14 ETree : DRAFT June 3, 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 May 1, 2024 15 │ │ │ │ │ │ + ETree : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 16 ETree : DRAFT June 3, 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 May 1, 2024 17 │ │ │ │ │ │ + ETree : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 18 ETree : DRAFT June 3, 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 May 1, 2024 19 │ │ │ │ │ │ + ETree : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 20 ETree : DRAFT June 3, 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 May 1, 2024 21 │ │ │ │ │ │ + ETree : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 22 ETree : DRAFT June 3, 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 May 1, 2024 23 │ │ │ │ │ │ + ETree : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 24 ETree : DRAFT June 3, 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 May 1, 2024 25 │ │ │ │ │ │ + ETree : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 26 ETree : DRAFT June 3, 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 May 1, 2024 27 │ │ │ │ │ │ + ETree : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 28 ETree : DRAFT June 3, 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 May 1, 2024 29 │ │ │ │ │ │ + ETree : DRAFT June 3, 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 May 1, 2024 31 │ │ │ │ │ │ + ETree : DRAFT June 3, 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.05.01:0545 │ │ │ │ │ +%DVIPSSource: TeX output 2025.06.03:1221 │ │ │ │ │ %%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 │ │ │ │ │ @@ -2005,22 +2005,21 @@ │ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ │ /UnderlineThickness 50 def │ │ │ │ │ end readonly def │ │ │ │ │ /Encoding 256 array │ │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ │ dup 44 /comma put │ │ │ │ │ dup 48 /zero put │ │ │ │ │ -dup 49 /one put │ │ │ │ │ dup 50 /two put │ │ │ │ │ -dup 52 /four put │ │ │ │ │ +dup 51 /three put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ dup 65 /A put │ │ │ │ │ dup 66 /B put │ │ │ │ │ dup 67 /C put │ │ │ │ │ dup 74 /J put │ │ │ │ │ -dup 77 /M put │ │ │ │ │ dup 80 /P put │ │ │ │ │ dup 87 /W put │ │ │ │ │ dup 97 /a put │ │ │ │ │ dup 99 /c put │ │ │ │ │ dup 101 /e put │ │ │ │ │ dup 102 /f put │ │ │ │ │ dup 103 /g put │ │ │ │ │ @@ -2030,16 +2029,16 @@ │ │ │ │ │ dup 108 /l put │ │ │ │ │ dup 109 /m put │ │ │ │ │ dup 110 /n put │ │ │ │ │ dup 111 /o put │ │ │ │ │ dup 114 /r put │ │ │ │ │ dup 115 /s put │ │ │ │ │ dup 116 /t put │ │ │ │ │ +dup 117 /u put │ │ │ │ │ dup 118 /v put │ │ │ │ │ -dup 121 /y put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA │ │ │ │ │ 0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 │ │ │ │ │ 51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 │ │ │ │ │ 7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 │ │ │ │ │ @@ -2213,184 +2212,176 @@ │ │ │ │ │ 82032FBD2FCB6E403D34B85ED4053A8CB619BDD4DE001F4C3007B1F317579651 │ │ │ │ │ E6D6662189CC2D95AB85D7473F65C5D7B4AC63B0FE928F3400035D5A9D443D0D │ │ │ │ │ F3532B99F3AC26CB25EA3CD64C341159061E02EFBC7C033C05CD919BBD827A6A │ │ │ │ │ BFCF3BD739E32E7FE909AEE068D50FAC33605FFF98C7D0115FB860178FD03DB9 │ │ │ │ │ 7985B78E0AC21F2EA065FA841F5928FB85163B2E2D8F850DC7EE313912C45C28 │ │ │ │ │ 2783F6762C67882EFEDDC7E7567F91C16B16FD8D5A1ABF35B5586307701B91AD │ │ │ │ │ 54984598F2AD46FEE3D68A2731BEAA754C8E730FE0E84952EF77930E4118F8D7 │ │ │ │ │ -2F3AD7547F9B0793E20128D03B122C74288283D9B583378FBA48950DCBDF887D │ │ │ │ │ -0A4C231FE009050F8A0C02473587E1D076F0BDC5458931FB26937C4EF7A7AB76 │ │ │ │ │ -DF14BDA8C5E27BDD9EC959C6F3FCF0C55E52847705744EE3D80EF426B9760775 │ │ │ │ │ -F4BD72DF213B715BE0AB9CEF5A9038E3EED7AF454E08ACBBD037E6307A04F331 │ │ │ │ │ -224C39B55908AC9FA0B8E560F8E78D5027B8266331C62EDF750CC08C0E2EB573 │ │ │ │ │ -082BB774BD853932B7C0C88BBE5F6E5E9D985792FA21B3180EE9911F823439DE │ │ │ │ │ -C430774263982682D4B1B76C287D1856702887A9A99B2B5A466FE6CC5B0851DF │ │ │ │ │ -EFBE62D59C80A0B97E81D0EEF577494C78F03924465B9042C7C6C1FD732CA57D │ │ │ │ │ -099755095F57ED2389501E3BF0969584ECE08D55FD8D7E95F92B4A0D405E5D61 │ │ │ │ │ -D10A7CF6B540B64594532EF90FA00CF28271462CB7F96D210E554AE285907A38 │ │ │ │ │ -EF66F57A40E2302CA4D3864994EC113AA35017C6D9890D1F4990AED4E5E395BA │ │ │ │ │ -51A1FED7F0E799614AEEFBD6FA24180F06F18DAC1D48FCC97C637130FF5C49AB │ │ │ │ │ -65E3E993F2CF6A2ED14A5A5CB71EDDAC41F58897B17750F761C131E1951F0F61 │ │ │ │ │ -1F97660E665F72B8E5106D357D7F673A61FA9399DF549ED13478B0335D7E97DA │ │ │ │ │ -DB74852BFFEBA827ACFD99EAD434BC753CF4E821275943118CF97A260781E068 │ │ │ │ │ -B184EEDC5879DC8787E93AAF61C0A4D418A86C33B89A2B8AAF6F49094930434D │ │ │ │ │ -D0C2E3E47E4C849694F27DD241F3BE91C3DB064D79677FE30BB4275A02AB5703 │ │ │ │ │ -C2264DE0968934F25B5A855A153CFC062AA83B31F1C6E8FB1AFEB58A64A14B09 │ │ │ │ │ -67E7B6AF2DA17860B7543EEB6ADCDD16D4B7D4F18E6F194B786485B01BC1A3A9 │ │ │ │ │ -396EE80A882178E4C3644FF8AA702B5464748DFED0976C8BA16C832E799B239B │ │ │ │ │ -9099F3D4A5A68BDF2E3FE6443946500F31DE839C2A3BBA6577B8CF43DEB27DAB │ │ │ │ │ -C0A137B4720797D42486BF465D5B985A25E9032899A947682839EFEB2B8C88A4 │ │ │ │ │ -68C6CF3974C05F04622DA67A108D15E6FA0045E7DDB78CCA3D006E29DAFCE011 │ │ │ │ │ -145079AEAE711D809C2E273678FBB776D52D087A2188BC928D1402D701B15092 │ │ │ │ │ -5738B4443E74A65AE02C4003A26A7AB8B47EE43F90F9BF18B2ED0B49C7323D1A │ │ │ │ │ -B8260E303426756CCD9F58C35EE26DF93E3812B5AC37CE52B4CF91AFD4E35BAB │ │ │ │ │ -953B82F8605C48210430CF1BB40C08830D363012F6B799CEBD93E0F4471863C8 │ │ │ │ │ -757C7F2B98D93043226E39D08F33F2A4FD0A5ED47C649D4B436975FA06A55C50 │ │ │ │ │ -EF3B08AD7530027A0A39A0DA0100A0FECF5DE027A6A28A96D04B31398B2D83B0 │ │ │ │ │ -DCC54F437F821BD1A7A557E0C57880CCA7272CA5A57904CC4E9928D615251D0B │ │ │ │ │ -F3531E5E727AD0685FCC56379A638017555F0461CB993D5C1521CDAC0763C532 │ │ │ │ │ -97F184F8970D9684715E8795FA1D524DA2C34CD3A14A6B0040FECD322147BCDA │ │ │ │ │ -E3B077C05158FFB35462B1F76E0EA38924B4D11D7F1E33A27097C16B18DA9041 │ │ │ │ │ -73F04019FA0D2B8B44A29349DA31CF1623D7B4B2BA93B0EC0A77F6C83E00EA7A │ │ │ │ │ -068E3AEA228DE76A68DCAD7CE2EF84A1158AF71B91CEC37AA83B8D9475E08577 │ │ │ │ │ -57AC8D901BB47DE5D3C0012733E108B4E5DC9F6A2866288164F49A6A0326F071 │ │ │ │ │ -7CBB886F7926E350F0BC53722D07B13EAB8B2BB7BD45E3B200D263E36CF8B0D8 │ │ │ │ │ -14C0A96F3A7E9469803789D1985C88EC018B5B696AD7F7EF06E0A62E0078E96F │ │ │ │ │ -0A283CA24D5DAD82B27E2984E30E914AB13CFE88FC213C35EE5C0EBD817B22E5 │ │ │ │ │ -24FB5FBEE871C835A21153C990CB0BC59A486B70426ACAB0D72379FA133632E5 │ │ │ │ │ -2E7CCEDA4B0CA0C758D7B6DD891E8DF070F5A3E47424DA17E5F5A79FB44B80EE │ │ │ │ │ -9D502B785C5C5E21B278ADDD80861B51EECB67682DD2689FAE4D96FDE5DC5256 │ │ │ │ │ -1C61308451B5582737FF42E3484E5EBCB4B3EA3A6F4E6356853CA7ACDAB065DD │ │ │ │ │ -45F1FC4982A71C819632C03F2B916B4656E5A522E7B88E12B60607BA3D58BE35 │ │ │ │ │ -5C53399D38241BEA609E3E4DFCD5EFA03231ED6DE6752FE9B166346D35A32191 │ │ │ │ │ -BCACB49C079C30A5761500DB435D0928318BC283115FE393701AFBACF2CF805E │ │ │ │ │ -642B86DC52EADA85CD2FD9E299C194255BD83D37C885B6EA7A5520A1A95F842E │ │ │ │ │ -F87287B15AD3489D8EF1B041A3AC514EB8EF2FA642592DDFBC73A619B5734B9E │ │ │ │ │ -E213B4C855875C2E4B80CFB3D56B18DD82CEF6A507A7D94B74B5243C492B195F │ │ │ │ │ -1DCC5D0ABAEB182DBDBEE99AA522B10C825E1E43156AFA5D4038365A177C2025 │ │ │ │ │ -E987ED95F06EF9ADA0571DB1DC19C3974B814171A18BC6D20C3DF967262930AF │ │ │ │ │ -16FAA53A735BE912A7C7FA664E6F0F1A6D0BF8B9249897B74733DD256055F8C4 │ │ │ │ │ -22617BE29C1DBEABA40418AAADECC7D0A02E554F5DEE1194E50940527D0781AE │ │ │ │ │ -4C580D7DD1BAD3D30DF0329B87F53BD1270FDDD9E5A83E13AB73053FF8D17B9F │ │ │ │ │ -960D574A034ED9C1081FC6E0963677B86FEB0270305D52AA13F85B0A8325DBB9 │ │ │ │ │ -9E1E8870C82CC28BF908604E13B41C24E9C97E6196343F516892BFA2873C5158 │ │ │ │ │ -C2422D7C98AABBECA78DD21553DD35E5E416F73598DFD8A5968AEF3CC5B4BFFF │ │ │ │ │ -99E3672AFD0CD1E123EE90AEB35531D928892AFFED47B911C2C9BCC3241AB869 │ │ │ │ │ -1DD76A73590891441949807C976807E045CC51146537851D02CB6A824B12CDF4 │ │ │ │ │ -35A7213F7277DA46448B26B5687E97847CFADECF94E02A25590654FD9EDBE851 │ │ │ │ │ -06551565321740470797C9CE18E809986E3E68EB8BE946B7FED5E62109BAADED │ │ │ │ │ -D38BF3B61CC94F69901894572A331A1B82CAA9CB5C166C8196919ABDA75B6729 │ │ │ │ │ -E554CCC9735FC9F2E8BAC03C18F453F98E29DE99415C584854CAC4FF97768C1F │ │ │ │ │ -D06418B9AB16D58593AE5B1DB0625CE00EC4F5F92E0FACCD38E2361F7ADA59CC │ │ │ │ │ -D65F424FCBD5BFC10175BF6A8B5EE187C218CD4FDC6009F9E539F3B24C6717CD │ │ │ │ │ -96FC047A2FAB403E416EDEA8F7F4B7FC86AFE16C2EAD3D97A5DED0BF37ECC8BF │ │ │ │ │ -6364407EFE86DE971A498DF785E8855F9E3040C91D19155B001AF774F20007B2 │ │ │ │ │ -559A032838E66B747B81E870FB2AB5CA9D63E35BE3D53A3D7AF803E07D5B4BBD │ │ │ │ │ -D963251110C619AD84D8DCF8EE1FA6A4DEC83072F21AA1EBF58B8697CB10451B │ │ │ │ │ -1D8C73156231E4BB85F43C06C9A05495C408E31742D161DBAD38E3D0B3A10F72 │ │ │ │ │ -74112C79C45721875774369B98F5E5A7EDEC5F4B5289F639F07F1157181491AB │ │ │ │ │ -38327CFB9857D621BBEB45D53244C4FEE9E078BDD3994E60F6B790964C770431 │ │ │ │ │ -470C025FAD5EC19408DFDF3433378481C4E322949AE90392F22A87643983A0DA │ │ │ │ │ -6657ACC314AEE4F74E381DA84014DCF09AB1204F76958AEC653496E7F6A11F6C │ │ │ │ │ -C499F93EFDF884B231AA7E50907CBC653F211A00563F40CD392697A84C3B85F8 │ │ │ │ │ -B1333D456ADBA6FD252EF8389E6E93C4536ACD7B4AB18D17DBA9939E5F45FE13 │ │ │ │ │ -169A9B32C5FE538A8D539A7112D431A70FC1CA00F71B66784015DAFD67415B11 │ │ │ │ │ -51381BD481A9F7F3925C9A242F357C39CEC60E5907B9C7227755C7B25208D397 │ │ │ │ │ -226F6B73835F6C0333B39B170268E2A99BCB1DB76A852CBBC24E11163D363614 │ │ │ │ │ -1C9074BB87D2F2C61FF0EDAE1761830EC531BCD99839B5932C4588B22A426963 │ │ │ │ │ -C3E9A20EAE690E607F8918E72E35E5721ECC6A3A5E3D3F46345F658D987D44AB │ │ │ │ │ -8B669F226B0184EA113343B14999916C037242540EBA0CFC828CBB8190379FC0 │ │ │ │ │ -861D8D7EA502378E912AE89BD02E635A85D30A71E4F8822F940BF90528C193F5 │ │ │ │ │ -561EF92EC9B5C91410D8744052D6428580144C1C04E7566A19234308D24EA669 │ │ │ │ │ -849CD3A86763C827B9CAB4B557676FFE731CE322F0846A0DA0ECAEB7FA5A1355 │ │ │ │ │ -47F8B63F95B9BEAFD914CB2FF6C6AA092F535B1B4A66D911FDA96337CA62CBEA │ │ │ │ │ -5E22E6350F819A4CE99277A4E1F042A55CC7DCC6D52722F1213A583800D21547 │ │ │ │ │ -DE3C9FA2B759BA4F182006EE0CD6634B620D1B25B47183D1D0AEC6CAD5250F34 │ │ │ │ │ -7B17C6AE1C2E6711FCF66F414AA8E1E7B509544157ABEAB0F420843A8991A4E5 │ │ │ │ │ -4563E66815286B02D0DA211D213FBF880CC7EB7C79ACB216EF21C6CA50B98043 │ │ │ │ │ -438C94DB475402B8FAAA12CA5F4BD11A0B28D109E764DC40A263C62D3C0F706F │ │ │ │ │ -3C5AA794C6178D1206E453DA4DBD719792044837E4F3EDE21BBD7241A844B431 │ │ │ │ │ -6F9EA3B284CB90C028AC4C067DB08BC8456A9E590D79999A6C78B95488EC68DD │ │ │ │ │ -6E9B85F6AC64FE3AFA2C6281577D7D05836868C2AD5FE379480D51013BC94397 │ │ │ │ │ -3F3F9A3E309E95339F4EA1DC235BE00C67D41E00ABAEC3DBF13C99E9815543E4 │ │ │ │ │ -37E6FCD5C33BDCFE00EA6E18F6F5953B33A3D92248E53559CC1FFD92DBAEA92B │ │ │ │ │ -DAFBF7066DE81EBF022EE859125FEED3E9BD98B6356EF22A6F554DAD85C362F2 │ │ │ │ │ -AAECE995C428FE3AAD959BB76E7A553DCBF5B29608D184FED9B981A8ACDA024D │ │ │ │ │ -9C012800C4ECBEE68B8CFDC9CC98C16840B05D8FCE5D742EA072747C2FB804D2 │ │ │ │ │ -978B8C5A42CE29CC5A26C4EAB4270E4B56099B36B10BAF3E1EB64C88B2910BBF │ │ │ │ │ -14E844692F3BF6AF1C1F86DB2E9309B83EC045F2A72F2BE5DD01336FBEE3F852 │ │ │ │ │ -A17F0FB78FEBFED8DCFDA1CF32A9E980DCDE4A7588FFF4928759D5736D118165 │ │ │ │ │ -59C17F688862F795E91CDC42AC3D53FADA99FBE140BB8B7781267C2EDCD98888 │ │ │ │ │ -EDDD875C68A0538CAEABD26399D2E095693F6F35B7E58DDAE2825EE17179EE9D │ │ │ │ │ -0CCF43CCE72F15A99D76ADDFF5E5587F3124F1EEEEFD80A98860B140BDF794CB │ │ │ │ │ -3F1A739CB7239FD09D25B9D21BEB42B529DE5028C26DE2508F959496981B68C4 │ │ │ │ │ -C5DB716752087F4BBE712AE17F2667ACD5B4FC3BF8691EDEB31EE91631409C93 │ │ │ │ │ -7A599E90F242E49F4F067D46A2A879C962BBA61B87FBCCA1C942EC3A036C16EB │ │ │ │ │ -FA5E07747B76DBF14C3AB8E7C65D15C4E72E51DECDB82B998F1DA4AAFBD2DBFE │ │ │ │ │ -7499F8FED1C2DC00982C52901CA8E753E1E3B133675BFD52F50BB611ADDE763B │ │ │ │ │ -41D723BD169B40E74FA99078487DD5191E2813327300B60EB775BB26882CB850 │ │ │ │ │ -6C193B9F4E655B047E30244D443AE30C31C0EDC0A331EF147BF50F4270BF132B │ │ │ │ │ -31BF4D6313040CEF6B17C3779C1F1C037BF60D78F4FA80F77C3887DBA671D61F │ │ │ │ │ -1AF0041EA5F0577D67F8153F9D0804EC18E6D069D234381F8BC443E782E6702E │ │ │ │ │ -D350040FBA702323E48373DDFD3C560DC75C6C5CE7F23E44F303406A5AEEDE66 │ │ │ │ │ -AA549763563DB657E2467DC3A385936D1B2B1D46B3E7CA2E2552776CEEFA0ACE │ │ │ │ │ -1EE4B08720B80547BCEEB916D33E6099BB5B2F60FDD435342D38AD4FABC2C954 │ │ │ │ │ -A9251D7A3BA7F14BC3BEC459E0CE9048D92C2F66BC856C165BF75291EF6E7429 │ │ │ │ │ -CA18E02A0C927D3AAA94ADCF99CFE514F844384ED083B9CFBC671FEFA2EA9300 │ │ │ │ │ -DE5A20B3ECD28B79FEB16C2D5EF8F6D91D7F80E3C1AE92F1E58C19D6F9D01906 │ │ │ │ │ -FE30E0708B878CD5356BAB83D32DFB09ECD5BF00EC69E741224E7D4AA3C991B1 │ │ │ │ │ -5D60F991D9DD6E160BB4D6A5CCEFFD05FE7F1FA2FD77E90EFFE7F0839F35EF9E │ │ │ │ │ -A7339AD126FE941D516905532D05E07C31C338D42B27253613D4AD128EDAB120 │ │ │ │ │ -7BA361390D591F5638BCC8ECD7079C169716D11C02FE16DC1D9EC311A1DAEF1F │ │ │ │ │ -BBD1E90263F008877A038264D1750475A896AD0BE8C392F6E65FA6CE013B8AA3 │ │ │ │ │ -2A407F70B6E5E4700F5F5F3DE9512A20F68B0F886B594C7691D0EA0F618E686D │ │ │ │ │ -6ED0983D26C94B9C0C49DC94DC2C6BD86D1809420AFC014087CDBE6350E88330 │ │ │ │ │ -A521F387CDF2667D58AB8783E757EED0CE31C1FCF87453980D8071C31C495399 │ │ │ │ │ -E17BBF1D78B9B48F22A261BF8A9663DEF92BC8DB0F145DB3C5CB4A08A05CE37A │ │ │ │ │ -2C060E52950CFAA0CD06A37E282EF9941CA085E48BA3F03D622A04E68A6587B7 │ │ │ │ │ -9DC8167D7CBC9EDB1E04F6CD199ED8B1213BEA64858BCA0B81FDD4FEF814CF8E │ │ │ │ │ -349DA9E10BA40F1382655878E30A66E3CB39B7934CE026D03EBAA8AC6079BE32 │ │ │ │ │ -2237BCEE0696131D2BFEC443D5E7E9553FCD5734F0879F1B54B8D43BB57C39FF │ │ │ │ │ -ABC4CA03A9EBA7E3C4B6166F85D6DC957842D1B06275FAF1256C208548BD6876 │ │ │ │ │ -8F0440B300B10370B58EEBE3675B67C2F7EDBEB653FB076126746C5C3CD8BABE │ │ │ │ │ -4986A0C383A7DB08A8F653D204D5BB861E620E9DB70D763F941588987737C0D9 │ │ │ │ │ -FF066AAA3580DCCA3B100BDF61D64BFB868BC6B9EC555A021E18647349A2B0FF │ │ │ │ │ -D8D804E10A7110B77F06F32E6F96C8ECD56D2938D34B7CB1ECA32B278B6DCFAD │ │ │ │ │ -D0597F89E0ABAA5C28DFAA3D32E3EF32BEBA59948C4E38BA862BFFEC9C0FC380 │ │ │ │ │ -A6717A0966C3EFB268040D26DFA65D368A7CD6584857253275039D0BF6048E51 │ │ │ │ │ -2E8E6534B7BB790227E773A887059B273B3DA21688DC095A37CE6440B2D9BEAE │ │ │ │ │ -0CAA08B35C59C5F7ED6B1C48A8E951A2A988E5AC4F6BE057E0678F4D517B5B8A │ │ │ │ │ -ADB391A2C3C007977D0A3F696B2D6635CB58C485F25713F4987BA0839C34B787 │ │ │ │ │ -55022107A39ECF4DEDDD5187DA096589FE1CCD37C065428B7A35D5E1441B6D0E │ │ │ │ │ -B4EDA32D8F0E5B83D2CBBDD532601D5AEE425F772B8A724E1EC01B44B1CFAD75 │ │ │ │ │ -049E9FD157AD5B5F8076F59109547CC390E0DC0A4037F0B48C05B01393B14EA2 │ │ │ │ │ -FD7ED7BC464AB672AA1159A7A6D488F00CE203FE8F64A61D217DC4DABD9535BA │ │ │ │ │ -2BFCD4B356B98493EBB25AEF04DBAA5F88FFF219A5DF4267015B08DBFA36DABF │ │ │ │ │ -07651D615DB4DC68BADA43B1707198C97326230D71E4D4E1B2F4041D12B4D7D0 │ │ │ │ │ -4DC7811833F0C91A34EA3A0EF4D7CA63D0DDB3C1A2F9E74142768A1BBDEB3841 │ │ │ │ │ -1F7AB5D6050CC99C5900DFB7534BA3501E057A3451CE41EBF57F06A342892429 │ │ │ │ │ -434E6E669CF7747105E2DC506D3038220A06CDC0E7D44AEAC8A06010F8BB7A1C │ │ │ │ │ -ED996BC5B8B5F3420E9822C9E48D79DBD46DE950C04E4D6FC65ACA09A75D13CB │ │ │ │ │ -0500106B9E43EE6DF86C479E0B927DDB78C2BEA66176F63D6BAE7CE3E9B2B3A0 │ │ │ │ │ -1D0D0BEECA46EA4354E7139D1980B3251927BD0D813D29CCA5CFB3DBCC550B24 │ │ │ │ │ -367BA749E5716DF75C80F01812216531EEA6BE10FF61B2745602E2F61869DC74 │ │ │ │ │ -EF7008C95A7129034666736948B2CA8DD2AAB5FE34F0E2599FE0F86A189095C7 │ │ │ │ │ -3D68BEA9B8E70357F06E762046E46AF65BF98C9C2928525C7698765353A9DA56 │ │ │ │ │ -0BCE7F406ED6EC18323ED491B61D179AC9C7854A7839E5D2B8CDF933EB9F5C83 │ │ │ │ │ -FB23FA8BA6073AFEF7AE18923D4E4EF9B4D4A72E1A68480F3F24E21C2C7CBCA1 │ │ │ │ │ -1AED13FB47A994E759C010F4CF848B57464936C5E239A506E936B54C30494F1A │ │ │ │ │ -935E6DB761F8AAD8D27125D8CEC9A15A24D9FAAF87C534109BBFF98AD11BAF9F │ │ │ │ │ -2A2F76E8E6BADCC8D8A698517F8CA562DEE3FB9188424779D670EAFC464D0035 │ │ │ │ │ -11ED0761076A5BC06E1D21DE6EEE8F32EAEE3CC9C2F059B5FCBF195D250659CF │ │ │ │ │ -9AF3EC61A7F2295D0C8983144B64D6C916A3FA6EC3E20CAD2727DF731F526F26 │ │ │ │ │ -E4D1EC477F3E3420C98997193926AD92A3E05B8D8A789886A5C4E2BBF8455161 │ │ │ │ │ -A25B1F421CC2C73C7AFDB25B259BEA369B0DE45420B67110B8A8108203C84572 │ │ │ │ │ -12DE5B24F2AB13D54BDACF1B88496514CED7313FFBF3B376C7BD9454853859B0 │ │ │ │ │ -FAE838F3CAC4F6E1338C6605BD824CA2842D14B1B38AA9DA1264DB692C01F0E5 │ │ │ │ │ -765F89A6AE2367E71144 │ │ │ │ │ +2F3AD75524D5E58AE6AECB03D4CBFD830FB0F0780328B678652E55328E0BFCF2 │ │ │ │ │ +278479E7168F2FCE946A848E9AC0602F0FE1C9DF31A012574FB8B2ACC2214FCC │ │ │ │ │ +5F4B34C81506D94CC2B500B14544D2A74596A85B827C1376921947F8F10FC7A4 │ │ │ │ │ +61917FDA0AA725845222E69CC2397FAF8655A7B3FF11F1F6467697D4D57AC289 │ │ │ │ │ +7225E6E7ADBC2C3D433BD9276DAF1033717B95A323950A8822753CD8BD5B3014 │ │ │ │ │ +31F192BC693DEB1F6CF3704FB316C0BFFA4A058D7E0A250238D419CC48EA8950 │ │ │ │ │ +066E629626449751568F03E1436DFF3D88D3FC77C3A974843DBCF673317ABAC7 │ │ │ │ │ +FE23F77A341043CE4CB789A219DB882B9670AB79D70A3C8B6A0E582F66188923 │ │ │ │ │ +CA072E0E095303BA68DD66330552A146EF07CE7D511092B2997C9899966AC30D │ │ │ │ │ +044104601D767C0824234B3FBF4803CF3DC06C93373D49F57E07B8E66AA2F216 │ │ │ │ │ +F50DD9F2893D8D4BD1C3AC4DF7BD9151B7305B67CF807DC64905132F66CC0C47 │ │ │ │ │ +9F352E2FDDFB1A418D9B05F794358C8CB7B717949775A28411BCA2D2D414F96C │ │ │ │ │ +0F0FB2F57E2CCA56509F11AD49F3FA99CF5FCC6FE8B1770E7F92CE2FC319178A │ │ │ │ │ +51D2BB0815C9EB21277FEE4F29473F5BAD1A7096B7D213A6D617348CDF693EC1 │ │ │ │ │ +AD03233B543535E98147A949351308EAEADD346328AA555EF4942D3ABE30F61D │ │ │ │ │ +C856D1F0F735A0E45336614360C373287C399A829B1FAC18C72B4307F0E808D3 │ │ │ │ │ +1519EC64000E80A1F0D9D0B0C98DB190E72B361EF0EDF0476CC9BABE474AE3BE │ │ │ │ │ +0F91B5FE1CE385B2491A8240E3F34A60DB67FCF8E11D8DAA49ECD206538D9EFC │ │ │ │ │ +ADB02F899B2E8D46C3EA16DFE58B5A45D8936553331275A93FDB7790DDF87D31 │ │ │ │ │ +EF237A1BC4391DDB1788ACC5B16DBBEF8C0099A3DEAF2F4F48740A42FA338BE9 │ │ │ │ │ +D7D1F8B27D288E782C43F0A98AC775D0C62C44BAC3C817A122918F1555679FD6 │ │ │ │ │ +F2D26BF7AD8760A8C5D4534A466419D6C8C4BDBBF61DBEE73AFC8F3F59AEF97E │ │ │ │ │ +FF403A05B2AF1D7673DEDE5485C09D4B67E15255D02996187A448B093A9E41F4 │ │ │ │ │ +3E45251F046A6F6AADAD7DAD57528A3DDED1734D1612B3D842DF06E4FF2840E9 │ │ │ │ │ +88FDEE88570268A71E769CAA1334511EF57A428B536A4F0C4BE4B0B088BDAA6D │ │ │ │ │ +582FAA42C603FB2DBBFBA588C1DA00593E330EA755333AA9BF90EE3716757A3E │ │ │ │ │ +B011E176BA4BD74FFE0BE96EB8937DF1078EEE00973F2A7D7F152153C3585139 │ │ │ │ │ +F0509EB8DD1F6A8AF5B321D1550C15C0E40C5DAFD62D7C9AC7016260FA24AA3C │ │ │ │ │ +7345A0BAF89DA149E0274FE239694B50B63A95BD778F4BCCB91B891D8F7D44B0 │ │ │ │ │ +E057E0B0214FE875F9DF297CEA624984CDD770CBE45BCC0E435F8350551C7E70 │ │ │ │ │ +CEA7652A90EAB141051B1064CF569A259C896F7CE236D21673D0AF5C5B48457D │ │ │ │ │ +0B6C11832ED6D7443538971E9BDB1059A8893A113E1EE1D63A195C63F2C6677C │ │ │ │ │ +CCDE06BC0789BB56162AB9F75CA5DCFFB8E090BF6B83D4C5C4C9CBC3B746CE65 │ │ │ │ │ +5498B231DB3811CC21A44329CD05BB73CDF1FAB4473860D917CF8F08CB2B50C7 │ │ │ │ │ +9A39B6EF27EA837EDAF9DBBFC3BA772B007F1B71E2A7CE416FB5082D2AF2BD03 │ │ │ │ │ +6D81375636ADE57607DE72228665CE7FA2469940FB2D98BF0B525D35286766CD │ │ │ │ │ +BEFAB5BCA72D810050107D1193B3C752BF3A90513FF3A316108318D471BCE0D0 │ │ │ │ │ +A6CDB3B296EC986B4AB94EF89E042B62AA80294AA3347ABA341AF4CD5DB634B7 │ │ │ │ │ +5D1276A9AA2B3992BD1DEEADE2464D64451D7DABB607EFCC4AEDAF3DB3E40BE9 │ │ │ │ │ +E22DB99FD9C8B6369884FCD3930C6063C3BDF802EF881BF1731CC1561B901D0E │ │ │ │ │ +2EDFB32958CF055CA63523CEA0AF193C514ACE50EDC0789406C00EC899B7ECED │ │ │ │ │ +2A4456CE8F4AC619744892B9624D1B5DFED23EBC776F0333E9D115794580E984 │ │ │ │ │ +3C42D3B345CC4A3EA7EAF75133A943F978E4FB6B22356CFA0F9F24FF1C26214C │ │ │ │ │ +DD61EE4FAAA27EB1F644B174992DB8D542BE733B305E589EAC45E08F5A6B6D8B │ │ │ │ │ +A7349F0017A6F6258B9E5E674FFD6E794C6C7B8F1B3714C0D73570A9BEEC330F │ │ │ │ │ +4653393E325CEE605D9A74B1CDBEDA6613B2E806018D3FF611BA4CC5D436F15D │ │ │ │ │ +1648F6481877A4343D3EA8D1B0228B3D0B6145D364526E32FE68E6E2B5D6A24F │ │ │ │ │ +B4AD7E6EE3DE19828C53A1AC3F49B4BF3F3D17EA46D4291D822EBD077ECE013A │ │ │ │ │ +A22C166F6DAC8C065D35578279907B0E1CE05AD812F37F3D9F06B1406639F189 │ │ │ │ │ +35D0062FBEA389EBE55232096EE7D0655B75DF1937232B3EE92077A77FAEA45A │ │ │ │ │ +B2F0BC42B9E6755892364710E75F7A711A22C01BE767A4887F38BC76E6662CAA │ │ │ │ │ +9923926A1EB01E51A11D9B3270496E002E9EC287E34391CC02753268A2950729 │ │ │ │ │ +F91ACBFE3FFCCD8880D94044A7BC4B9A57B688260CCB709D198396525F1E7FAA │ │ │ │ │ +2C3501573E724018EEC3BF45F83594C841A985847BED06745E9BAF8FC376942B │ │ │ │ │ +89B651E917228844B7EA711774011FA2B7C8226F3ADED7694F1944D2B9A0CE34 │ │ │ │ │ +ACC9C9C91DE0C33F59926FA2C66599FB5BF9919E720661BF5ADDE5E71AAE28FC │ │ │ │ │ +A91D09CA9D888A864DBED19C7D1A11F392AB2473BB13E1D883DD8D7084D0B42A │ │ │ │ │ +EAC06BEE7D8959427A3D04B26C0BAAD28E7E69F834CC0BE41B5392482CEFA2AC │ │ │ │ │ +A9160FD2D070727312EC5687AF00A44CED6AFFAC97C0098D035DE5DEE0AA9617 │ │ │ │ │ +A804C14141D62C97372CBA567734D9A8F00A1CC0EDC9B9A5782D3D7B39DFDFCC │ │ │ │ │ +FE50FA2AE2BFF4CE54896EEFB9A98E7C5AFB9AB1090C54AFDC47148BFD714C93 │ │ │ │ │ +ED3293F64997F18A81889F0A6ACF50EA0B4B2FECCF49649D4C3C6249A1A93CE4 │ │ │ │ │ +B217AD7A03A5186E58E8BDB437186C1D4449BA94683D4CC208FD6927E948F61A │ │ │ │ │ +B5FB4C701ACE4F6E8D02D1049051D73EF6251ABB8E8266A8E2F7E08FF03A4075 │ │ │ │ │ +1BEFDCF68269E2D024BA1794DC845C3883BBBEFA21B6A74529BFE6B0E3BBE72B │ │ │ │ │ +1F59CF43C72708DE1427A37886D4F680B570400FD1391721535B2C0A237755DA │ │ │ │ │ +1C672462AF8625F760B787030DF77E2B63DDA49CB708F7C243A572C6BC484612 │ │ │ │ │ +28C7FB916B28A9D9343DDE321EDEF8A93D657A12710B8D0A4AA1A31031A192F2 │ │ │ │ │ +49C488C3AE6E61A97DD6D1340CD932FADC88E30C42D4BBB3F82CA54A34BACB46 │ │ │ │ │ +94D570B2CD769EF0BC5071ED0016D21CE2F8B0D022E7756E2A57C8DEF06A3A0F │ │ │ │ │ +F22F1E79564E3EECCB205E8D8ADB5FD549EE758C8D47C3AE3D3458534F8A7302 │ │ │ │ │ +351639064FC11840C9C8076A1C2E436B7B91E2939156F1BF83C4969A164FDDB7 │ │ │ │ │ +91A55F068F7ECF077326042BCA83C0AEFE726FD330318959F63CC687C8AD97E3 │ │ │ │ │ +62E39BC1BCD56FACB51662D71CEB6B93E0C40170B4357B6A11A1EFE45408EC24 │ │ │ │ │ +81F38DE95A812EB982CFCA70D9A4E0CC7CB34FD80D63B5A47CE088B7ECEA9E12 │ │ │ │ │ +47D4FF4C9CF0242C46590C0F398B04881AACAC3EAF2C77F0B580A3FFCC0DFEA2 │ │ │ │ │ +DF6C60CA9652D94D4166E58F0B82D4C0E326AF17775CC36716A55D2B4E511A63 │ │ │ │ │ +F4C0934BDE263A5D26010ECCAFBF8D17934B780AEEBE6C20C0539707F284D6C9 │ │ │ │ │ +492073EF592A459AC923A54A9646A2B520C86B981D06FF6185B9FF7BA8D020B2 │ │ │ │ │ +B5C0D6266C6F061F871DDCF0777F654E2B8D218F682AF7EA6D51D2B6D69450D5 │ │ │ │ │ +A2435B2E3F480F96BD22720A750C3D4F216908A237A4DB9A231B9252800680F3 │ │ │ │ │ +879BF6EC6DB6AF5FDB8FA4E81FAD16644EEED7E128CA79E696CCC57988D31ACE │ │ │ │ │ +8C332862E6EF240182D001410A8D18C7C120AB4FC087C2CDAE8F4E6E269DCCD7 │ │ │ │ │ +FB88ED6443472AC96C523FD2ECF4DEE3AE438E1692FDD49CE997CA6EB9E2EBA0 │ │ │ │ │ +3FD8FE1F6E6D715F2FA3726E2668EA5F8437B93A8BD4E71EBD93CA9E17DA1F0F │ │ │ │ │ +C7EC8372DBFEA79E93F4BD524E4FC905BEC929BE8A97E9755C04A62C336C06A5 │ │ │ │ │ +07BFA62B27EB3BD99D88C43FA6FB2D17206A5D8E77068C2E5C2BC47742C89ED7 │ │ │ │ │ +E358DA22D9590BD8013991B0BD0AE8FE5C678508D6DE5F6F27AC3ACEF7C94A1F │ │ │ │ │ +99FC0E31D15FAD9CFB4BD1F5D61D745B798015AABB560A5E1E5ACBA04F5B8A9B │ │ │ │ │ +7A42C154BA399A9D011C151CA1B15878B5C959C3398171FFCFEAF8457B10748D │ │ │ │ │ +AACD478B771B9EF9ACBDA3BD76BB2538098BD30B3B2B4ACA4C609D0CBBD1B043 │ │ │ │ │ +E691AFC3996DACF0A36AF05332863A34CE5FD30C669F89845D56C6755C9BDF82 │ │ │ │ │ +20817CD159F355777055DDD9139BF9918FE9CA140961D9AAFA214F740C81F5F6 │ │ │ │ │ +C61EC8209131F29C76FF1830E3DB0B2B7D9BFB5E1C887CF9C6853A0F00BAA568 │ │ │ │ │ +C9B3138B4D89EE436C0FAE7C99F349A37EAAE067A0E619B86AEF6056BB360C29 │ │ │ │ │ +C9D51ACBA1A7E55EF55C910E90873B273620F7F176D9CDDC8D65337CE6F2CBF5 │ │ │ │ │ +627FC4CD005122390DBF26BE38DC1F2A1ED0FC6FB0278110D397C7226FA97E60 │ │ │ │ │ +1F1157C118E9AC10D973F3C7F23CA7363FFDBF912B0CEA80552DFBD8607D1433 │ │ │ │ │ +C69D470B94D708B0855F84EFA2809C4CEBCC22CCBDDC9AD426047BECF11A9D0B │ │ │ │ │ +25B535D0453E234D55A52041C03B10ED4110A10E2B87180B3A846F546997F3F9 │ │ │ │ │ +3631FDFB38ECFEF765944F049CCE1796BD797CDB11803B404B4D9A8A5C91F991 │ │ │ │ │ +1561A1ADA6F692C08F7235B20714B72F2089CD7EBB7BC659ACB1B0C3D46B20E7 │ │ │ │ │ +31C2E726D7A142FD69302DFDA6001E1A3A208C3D6C567B84E9D4640FF3FCBF98 │ │ │ │ │ +45F1A89A1964BC5F0AE89A2D849DD2650889CE0ECE1048747CF8B6DEACFFF4EC │ │ │ │ │ +883D43820C41221D26824D32088B7E40DD5DC8E08807C3D21E3729294946536C │ │ │ │ │ +4973CAA83326CD66780359C77EEB549F9FDBC438C3B165761498F4488903B8BF │ │ │ │ │ +0CA72C6C0B29AB808A20FC71C998928054F24A01091D44EBBD45BB441DA4ECA6 │ │ │ │ │ +69556CEE9F2E3489FBACB85A5DC686042F8126E0733917646F45B9115FAB2029 │ │ │ │ │ +8C0442EAB8A911A4ABAF437DB5ECAE632A47F20B2E1AB8D2A4C9E12FCAAF3275 │ │ │ │ │ +1C84F14B0D15CE0347530030747FA7891DB2CD2ECCFB3D34E73BA1B524C334B9 │ │ │ │ │ +C6AB3CD74EACF809171B125252D468CCF773F3729DFF6625CEA65E160B0E24EE │ │ │ │ │ +1ED2219F873FF8CD1256437B98C5EBD483E2864B41C6A988632EA91DA2F32A16 │ │ │ │ │ +53A3F6D398BA9ABA009D3903233DA64C8C4FE493B3F7C14A9782D998F1385678 │ │ │ │ │ +B5072B0C8E56140C6EF8B18D64C3B418867A8A60A9DEADA8C40F8F1937214062 │ │ │ │ │ +CD154AEBB1D3B41B1F4F080BB581C4043CD08A18CC68A354883A00B0ED6ED91F │ │ │ │ │ +0063F68A354EDA11D7AA1034B3ED0462AA396E05A2739F001C86E23B71B989DC │ │ │ │ │ +5CD2F66FA5A3154FBD62C754932767BD9F712BE3138ADF65091D4359C21D6E13 │ │ │ │ │ +200FED8030B13E0D2491F18D405141F3396D56DF3D269A8AA835FA662E241250 │ │ │ │ │ +AEAD548B6FBD411E972A0E956C7B86DC1E804F75EAE46F08BDCA15D1080314DE │ │ │ │ │ +EB5AEE2C9F233BFCA9F69BA277DBECC9D46792BDD9912E412E83D014E98D70F0 │ │ │ │ │ +EC1D463AA79690059C97A610139E08B9E314B882D1DB644EFB666652315F74AD │ │ │ │ │ +EA9EE6815EDF6782510D46B63ED21EFD8FFBF9F845513B4DACF4F9D800AC9F60 │ │ │ │ │ +AC2E4287679320E89622A6A72F55E1B0139893B3F0A72CA252AF844DCF302E4C │ │ │ │ │ +CADC409CBAFEA38A5D98859DB95E63CDA6BC9676986023B3BCFAF95B681A4BA0 │ │ │ │ │ +CE4292189C8DD7B59F98F2A80C4D3BD17E607E82D68CCDAE9F91C02F7F2BA085 │ │ │ │ │ +485C421526992DC1C6D1A05AB1779CA9A6B1355C870273FAAE89C37126612B8C │ │ │ │ │ +A8D33DF13C48B5FD91088C69AD41EE2701A7F3D65BD2503E83EF72D02FD5BA72 │ │ │ │ │ +BE03A52637D8AD5A1D6EF7569F673A588C005C4D5EB0BA84CD047B9882537E5C │ │ │ │ │ +177B4A762449B222AE6D626991212D24E2EC5DEA8ADAA742ED41975101BCC462 │ │ │ │ │ +FDBCD78677FB6DE660A3BEED918C55EFFBA444F622594B30CF0ED19C755BA13B │ │ │ │ │ +4777C70D7D7DEB8854FDFCAFAB1F3627C4EB35F772C1F70ACAEF898F9A1F643D │ │ │ │ │ +54348F8829F2E42D41D5824F0C78383F2258D5B4A196E1984193537E08B1DD31 │ │ │ │ │ +95C0302CA9E26C5E3E13BD6052C61ADE5AB35EBA86A5A79005758C289604473B │ │ │ │ │ +154927749A117DEC371A2154B939E21A528E6419EB84CEE8C6BB2D50B534C8F2 │ │ │ │ │ +8864E208AA8612CFFA1C4E6087B3CCE2657D0FE7B514E39E009FD0DC58D58186 │ │ │ │ │ +CE21468FC4A4510EAA0D5640733089747DC58C99BE21C2EB3513E11B245C3F9F │ │ │ │ │ +CEB8B3F5F72EAD8B8F886B4DB06F076A209BD62C0906E6A1EB65F30D07E4B95E │ │ │ │ │ +4A8F15719A589897C33C0F2B8E030E1803C8B66724DC0F4EFDF527CBB997A93D │ │ │ │ │ +C706238F7CADDFFACFAAD3AAE5E45B0787FC3249C90EA23CA7F0A88B8FB25D49 │ │ │ │ │ +9DD17B5CC275023D5893C0D93B2247144F40839F54D20D52DAE49FAD3EF1EF72 │ │ │ │ │ +A663F4D6FD0EB0809247291C61C085EBE040F7ABD68065D4E3059FF8E6A020C9 │ │ │ │ │ +BC56324356EE28649F9A8FA432B9428AB27B0B8472EE396D74C5380F76300772 │ │ │ │ │ +2E9972958B0CCC4F6225E6D4F1E4D82A3AAF31E1DD14F64CBE0B705201CC7CB9 │ │ │ │ │ +E6368EFFA83FCDE2DA11867563D9B448932D27CBEAEA537280F17BB4F7023143 │ │ │ │ │ +5EEA824C1ADD12ED145B33FE61703A9D9E9089F7C630025390EDD9F99E916BC7 │ │ │ │ │ +1ED7FE587D76798C976E306B36A7A579C3799F295092130875611A4A2D5AF05E │ │ │ │ │ +A204EF16B2923BD40453A564ACFB3CE205B7F6F72B439B5B7B51A962F6D30DA4 │ │ │ │ │ +AB6CA4814F5EF5ACC2D181AE4CA6C0BC1ED49B185911D4DC6DB3EFF1068E02D3 │ │ │ │ │ +13E67D2EF8852D779ADC68E74BD87B5FA8F844247D979766737C59E650D9616A │ │ │ │ │ +A14FA38D0D6B9CACFA33634DE529642E1EA82A5C288D8FB921113F063B96D67E │ │ │ │ │ +BD848354CA3EE3546B8330967591CA53DAEF776E89951F9624BEAF32B0025175 │ │ │ │ │ +8BDF3034633653F2FC7A0B772E9F9AF076A1F64EAEAC2BB1A6225D313A51DED5 │ │ │ │ │ +41369691FDBBDD7B200C1074C276BF2EA2BBAB87209B30ED4693720814F1D21F │ │ │ │ │ +EE501D4002DDB70C3289043EEC8546B5EB183A228FAA0D6E4984D7C3866CB304 │ │ │ │ │ +FF0649C979D029472FDE03BDA3821427D3B5D7FA30590C35967A3430E6D1787D │ │ │ │ │ +50F9AAF53740BA1609D91EB59EFEDBEDA1E351D5367ED55F0304095E8C6CCF96 │ │ │ │ │ +50A89181DF75A2EB3CAA6426B5BA9763C192A80E42770E409C49AE417768AF70 │ │ │ │ │ +BD84C73A9C975D21F4651290770A8863C8FF68F219EEEE83F5437B833DB943A3 │ │ │ │ │ +C7278966CFB1AE9F8DBD6B6E0E1B4299CD46C5862CA6A3178695455490A1ED65 │ │ │ │ │ +970C1119D143A2342F9331C18D67F71FF35134CC5FA1780CAA8F3DD3FFE4D186 │ │ │ │ │ +A293439DE2C4F426A6758691D6D260705F367188653B597FCBFEDDC05427DD9B │ │ │ │ │ +79AA5B12F89737535CE26D286CA60F7866B71A0BC15DA6CDE4 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -3100,22 +3091,21 @@ │ │ │ │ │ @start /Fa 136[39 39 1[39 39 39 1[39 39 39 39 39 2[39 │ │ │ │ │ 39 39 39 39 39 39 39 39 32[39 17[39 46[{}21 74.7198 /CMTT9 │ │ │ │ │ rf /Fb 133[34 41 41 55 41 43 30 30 30 1[43 38 43 64 21 │ │ │ │ │ 2[21 43 38 23 34 43 34 43 38 9[79 2[55 43 57 1[52 60 │ │ │ │ │ 1[70 48 2[28 58 3[59 55 54 58 7[38 38 38 38 38 38 38 │ │ │ │ │ 38 38 38 1[21 26 21 44[{}50 74.7198 /CMR9 rf /Fc 205[30 │ │ │ │ │ 30 49[{}2 49.8132 /CMR6 rf /Fd 205[35 35 49[{}2 66.4176 │ │ │ │ │ -/CMR8 rf /Fe 134[51 2[51 1[38 38 38 2[49 54 81 27 51 │ │ │ │ │ -1[27 54 49 30 43 1[43 1[49 9[100 6[66 2[89 2[50 6[70 │ │ │ │ │ -69 73 12[49 1[49 49 49 3[27 44[{}29 99.6264 /CMR12 rf │ │ │ │ │ -/Ff 165[99 6[90 2[110 121 126 1[97 6[106 1[117 1[122 │ │ │ │ │ -65[{}9 143.462 /CMBX12 rf /Fg 133[58 70 2[70 1[51 52 │ │ │ │ │ -51 1[73 66 73 1[36 70 1[36 73 66 40 58 73 58 73 66 13[73 │ │ │ │ │ -6[83 2[47 3[90 2[94 99 14[66 3[36 43 45[{}29 143.462 │ │ │ │ │ -/CMR17 rf end │ │ │ │ │ +/CMR8 rf /Fe 137[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 11[49 │ │ │ │ │ +1[49 49 1[49 3[27 44[{}28 99.6264 /CMR12 rf /Ff 165[99 │ │ │ │ │ +6[90 2[110 121 126 1[97 6[106 1[117 1[122 65[{}9 143.462 │ │ │ │ │ +/CMBX12 rf /Fg 133[58 70 2[70 1[51 52 51 1[73 66 73 1[36 │ │ │ │ │ +70 1[36 73 66 40 58 73 58 73 66 13[73 6[83 2[47 3[90 │ │ │ │ │ +2[94 99 14[66 3[36 43 45[{}29 143.462 /CMR17 rf end │ │ │ │ │ %%EndProlog │ │ │ │ │ %%BeginSetup │ │ │ │ │ %%Feature: *Resolution 600dpi │ │ │ │ │ TeXDict begin │ │ │ │ │ %%BeginPaperSize: Letter │ │ │ │ │ /setpagedevice where │ │ │ │ │ { pop << /PageSize [612 792] >> setpagedevice } │ │ │ │ │ @@ -3127,16 +3117,16 @@ │ │ │ │ │ %%Page: 1 1 │ │ │ │ │ TeXDict begin 1 0 bop 109 1941 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)1689 │ │ │ │ │ -2890 y Fe(Ma)m(y)33 b(1,)f(2024)104 4919 y Fc(1)138 4951 │ │ │ │ │ +y(Bo)s(eing)f(Phan)m(tom)i(W)-8 b(orks)3123 2593 y Fd(2)1681 │ │ │ │ │ +2890 y Fe(June)33 b(3,)g(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 │ │ │ │ │ │ - May 1, 2024 │ │ │ │ │ │ + June 3, 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.05.01:0544 │ │ │ │ │ +%DVIPSSource: TeX output 2025.06.03:1221 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -1758,21 +1758,22 @@ │ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ │ /UnderlineThickness 50 def │ │ │ │ │ end readonly def │ │ │ │ │ /Encoding 256 array │ │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ │ dup 44 /comma put │ │ │ │ │ dup 48 /zero put │ │ │ │ │ -dup 49 /one put │ │ │ │ │ dup 50 /two put │ │ │ │ │ -dup 52 /four put │ │ │ │ │ +dup 51 /three put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 77 /M put │ │ │ │ │ -dup 97 /a put │ │ │ │ │ -dup 121 /y put │ │ │ │ │ +dup 74 /J put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ +dup 110 /n put │ │ │ │ │ +dup 117 /u put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ │ @@ -1953,68 +1954,70 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004ACD1870 │ │ │ │ │ -A5EA947858F5795870BFE1343AD803FB854BF8F5A4E794E8EC57BE41DB5B8734 │ │ │ │ │ -13E47950F29A81EA0C81EA798863883D7F41F78325CA190CBBFFE822AE494550 │ │ │ │ │ -4BE83703071FC9512D128927AF3F63CEF8F86ABE1E15D7B4DDD39576E7DFF45E │ │ │ │ │ -3CB4115AAB1830DE8647B915DB4BEBEB5235C281E098B899BAB951D8D5798F01 │ │ │ │ │ -7F7C47336D31438E5126738AFEAB29E9A7CBE06DE4DD604477B542D2620DFD58 │ │ │ │ │ -28FE34238572F23C5A8EB7ACEE1E154DA13FC1A5AA67A3BA8C5CDFB2B80312C9 │ │ │ │ │ -BC9FAE56D08DDFA9498E6EF0D0F6BD18B3923E0B670B0740528BC843610736CB │ │ │ │ │ -80228C105C2F72C3C22D610C3D8C268DEEA2AEEE3221E198E79FE2966487360C │ │ │ │ │ -84AE08AC326F48B21447652121B1EB68AF857B8628F27BB4ED00F273E0DD044A │ │ │ │ │ -7D11A5BFAAC0A82328444CC9DD90167681B07D55CE28655F40C21250A226DEAB │ │ │ │ │ -2D46FFB680CB9242BE192AC0E55A44D45709FA6DE638C130D92C4E9B07BC3D61 │ │ │ │ │ -25CC2F0A7ED4F3574242FFE4461272EB1401266EEF551E0E2B0EF51FA8F250EC │ │ │ │ │ -FD9AFB6F5A0CC442B566BC24400133E3E9B9A9FC801CEF284FD2B3ECA43421FA │ │ │ │ │ -51E5D1EFE7BEAA96658362C438A0A5A6DCBC664A85EF88037B42355195B9D19C │ │ │ │ │ -7961D5F63B123451B298CD52C144FCD4F3641A823FBA14605E2DFD845E89102C │ │ │ │ │ -4E345CFD80E3EE6F097095A84C941FFC91B234F3615E4EE4C5D564284656E364 │ │ │ │ │ -AB9C4D1DE05F8FD065CA6064893F0CF3A3A501D59EF6568D05D818A010D06518 │ │ │ │ │ -E2C20418ADD1E652867F265084A27A5FE0C32213C59FFC3A84EDC89382521E5B │ │ │ │ │ -8AF66D76601F83C5C33CC9CF968C77B66F1FA074AC3DAD8E453C9264D03969EF │ │ │ │ │ -9E387BB3BEAA4BF0A9D88BA2CE6094E8996A3752A657E322A57AF006444BF516 │ │ │ │ │ -501C43CAA1BA7F16A3B6E4D3EBDECCCC19564DF18FB68194C132238A5441A21A │ │ │ │ │ -F52285CA1CA94A4BEC61EB509FA35EA5E393D662D938F4291F37EB7C2D5815BE │ │ │ │ │ -446813E1CFD06FFFFF2C4355C9DAFA48E765F4CC5DE4B9E37CFFB75E7A0B6F4B │ │ │ │ │ -4E412496F9C27DF4BDD90A869F0EBD81A57AE0B84051450A5A3E06CB9930DB2C │ │ │ │ │ -7C2DDB774BE870AEFCC9F4F067BE243FF3FD4B5C71B96C607DC4975973AF2650 │ │ │ │ │ -E7DF2BE3523A370EEDD07B5456B96E372ED10510CE677C044E609F21E93652FD │ │ │ │ │ -33CE612F587530D12214A3719CDB170C315B5D8763D5D4C67B5CAE90309E77AC │ │ │ │ │ -B45EB356C13A7BDE0D7320A9849CA357E30D7CF1085FFD70071932C3180AFC28 │ │ │ │ │ -B093016BA3F49A3878C34BB4A8727A441EB6CFC1A73F2313A7BF8D32EDF27E62 │ │ │ │ │ -EBEBC058FBA80B136FD2DE05C673B66482224ECEC63EDFB519AC13B5CC6624A6 │ │ │ │ │ -B3FD79037DA3851E93A386115852DBA88B176F21EDDB5386DC7C993C4210B28F │ │ │ │ │ -438131A586E34A09724E7CE60139F8247BFF14D2674805B3BD454C134728A43E │ │ │ │ │ -139E0AF71A7AC5CE42041EC83FD454B00AD29959FCF007789FFAF2D3492DCA4B │ │ │ │ │ -566EAFE97591ABC51CD0CD9BCD64E285FB823E41AA817E96B2B224005DAA4E15 │ │ │ │ │ -2141DB436B9D3FBA4EE4C876FD19A2E5133106FE2B9F704CB9614FCDC91B7950 │ │ │ │ │ -57053F45A5ED993B48189AAFAD5289F97AE2B0AEB5606579F6BD75F743EDB5B6 │ │ │ │ │ -5AA8F8A64CE507A47325081B3A013DB1BD596CDD3A83D2F29B070D6F9C57496E │ │ │ │ │ -14DF3F0F731C3BB00F2CE3D4BBACF1320322195D1DEA7A545BB4725BD1C6EC3D │ │ │ │ │ -63250C72B897741F8599D9D9BD2FB50EC80EFF2ECD6CE6603E95AABB45462ACF │ │ │ │ │ -12B005EE5979B6B05BCE9B97061686102349142A3CCC26D57F2A3283DD8B6E2A │ │ │ │ │ -98885E48C0D4A1A5C9612EDCB3B3D265E9B8CCCCA5D99F07F96C15B27D6A161F │ │ │ │ │ -936599E503C2859927201CACC31581AB7AB84F9EC9FFADC239F01DCC55940AB7 │ │ │ │ │ -FA884AA1EB6494C8E53DAD66E75A317428ACF9D943A74683BF547958F67D9E36 │ │ │ │ │ -F985EED50DEBCF255756A821927CB73848DCF167E96E975E959DE27FE7BA4FBA │ │ │ │ │ -D0EFC003F019D87572D6F9C73FC5B880C3EEDB7EF98E5EC3D25D6FE0015A6590 │ │ │ │ │ -E3C6EE632D7F6558B914609A8829CD1DEAB83A3F1207D5C3AAC9EAEA9DE1B4F8 │ │ │ │ │ -2375C5D4F630BCE13475F941ED2324D2CD4DCF2285298EAA4FFF89433D853860 │ │ │ │ │ -A974A9FC0808580FBDE7D02EDBB3D8C65BD3109AE8B359E96BFB7E21C696F440 │ │ │ │ │ -312B0CCAD810BF070DF8FC281E8198EB20A7FF9C9BCD291D74BC75EE46799485 │ │ │ │ │ -1AB2AE36B7E525034D146A856AF3BD9057A0033C08B606B89DD130548950C93D │ │ │ │ │ -94A8C92C47A34A791B1C108D2F36E899B79358B8081CCFC3D1A2F0521E4E2AE4 │ │ │ │ │ -7F500D6F2A53E5393E44201287225912590ABC738E8726622B67C3425639CCFB │ │ │ │ │ -F450B78A4918 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004B9BA1CC │ │ │ │ │ +580D3C6BDA4DC1B80B4365F1C80512453FC5316EC2D928FB731C3D6403E3C18B │ │ │ │ │ +E8424D644DF5E9A2134229C5C91CA68DB8E85BA2BB40F538F585DA6FA4037718 │ │ │ │ │ +B8053EBBA1E765346BCD5BDAA6C38115D31611D8A87A2238C145F2DA2F92E4DF │ │ │ │ │ +3987BD9C4D2A3D460E8941A68B125BCD9EE4F9FD262C4C8A71F47A2C81975635 │ │ │ │ │ +F1B981C274C53FA2ACCDE4C9D0A7C62D6C1EFF91CFC6712CA6A9F333C9564FCB │ │ │ │ │ +2A70F0AD715A79B10A08AB069E2A3C93BC0AED19D0CA10134B8DDDE8AF548DB2 │ │ │ │ │ +3A4AAA9C29682CF135BB767DAA16169A127EB50A7EECEB6480CF56A7D0F8AC56 │ │ │ │ │ +4A5090B3D75A790372886AF568D94C8165975A05BFBFDF1FFBA45F70700BB9E0 │ │ │ │ │ +57F3249EF9E9C8AD9CBCF6E4FD592DC4CDD2D7864F7C8A3FA6FC44C25C0CE7E1 │ │ │ │ │ +299F8A90B32B75DEA28917531621E1E7E0ECEE9E01665DEE99FBCF3EC3F30686 │ │ │ │ │ +513D7CBA745E660502603865D5A3E82D24B3F94B2884B21DC53AED87F49380E0 │ │ │ │ │ +68EE79C580931308DA762670C1F86F07FFB479773CD9C5DE6F22980DEC973D1C │ │ │ │ │ +A1E162D73932561BAAB24DE51DC8708291B666B36BABCA1FEDB6DD9C22572914 │ │ │ │ │ +7194DA044319F362452D53DD4D9A59134838E540F1E23805CEF53FF4F7519385 │ │ │ │ │ +1FAE3061F94369FEB1232BDA2E2A281E6972FB4524EFA37A598E7CDC097683EA │ │ │ │ │ +1B609952AEC0799B4711AAAB22D6B1D5CC729DE70897FDDC48AF0A12E40FFE30 │ │ │ │ │ +6528C601E68E8CFA4BBF897CF89DB712DE108DD1F084EFD917BFD9A70A74EB8F │ │ │ │ │ +D0D5B43CCC30373A5E871F18A969D01C69C2B4377622A0C8C4D7C4C28DDE5586 │ │ │ │ │ +BD17D5D640A6F396BD41993BD1932EE10953847F82F7BB36480B67A4F69F0763 │ │ │ │ │ +69423D1803B7BB60594ABEEE9578076639B84D8323F56104438803D45402FEE3 │ │ │ │ │ +045DAB16C4459DA9BBE01D0385CC771FB8DABDD8A9D280C18553F92FE6591CFD │ │ │ │ │ +26B82F28E6673BD823598D3F6CE03BEE04D9A21ED908DFC4F640227C148F133D │ │ │ │ │ +D32113275297C16EBCC9028AFD9102DE50E9CF67E7CF8C42BB8E73D1DAF8A5E2 │ │ │ │ │ +EF5979426229664A990DEF980A7038D2F229789D4F6EDBE1FB81BEC1A1BB14D7 │ │ │ │ │ +882515C62660E8877BE942712D57B86A2E19995AF087DECB7FD5208583C020AE │ │ │ │ │ +FEC86A2826530AD855006225300E4655F443C9360A8BAC96B5B096DDC9B12EDF │ │ │ │ │ +C862215AD6C432CF345FE701757E4EBB8C65F46912CB0F4DEF53672F7298D8F7 │ │ │ │ │ +EE51A9C5DE689A8D36956B7F0410893C0998DB03B73B4024CB046F8F6B32E07F │ │ │ │ │ +CD28A68AFB7152E45F1021DCD520D8A429FCDCA4B8054BAF0B48C4443280F198 │ │ │ │ │ +3360B078E6DEC37772DA8B629CFFD1534E8AA10E26B0BC58E92B9BF280C8EE45 │ │ │ │ │ +618EECDE904249F5A2010DC55D1028DFF4F058260B2B0A46541D6157970F44BD │ │ │ │ │ +D7483802D56A81184119DDBC914E8E394CBEEB506B61BB1CE2A3465252E5D8A3 │ │ │ │ │ +6BDD2D067E69D4ECEFC7D5568378F5F8B38EAFF138014185FE19DF7358A7A780 │ │ │ │ │ +3BE0E2CCD1561113F2F2319BDB503230DD0866121604710CEBBAA659ABFC010B │ │ │ │ │ +5CC40E5807F461D87E75BDC6AD96BCEF62AF668D48D7A76D08B57650F35CF609 │ │ │ │ │ +C0F791AEBEB75E29FA69596BAB419804AECE0F0238AAE64A6C13A22EBF4E3EAC │ │ │ │ │ +3570DECE85F54064486B2364D63E94FEB7C16350CDA318510A45C8848DB470ED │ │ │ │ │ +BFAFD2365681D65CFF3E6C1B4B7C8AE3066F96E819D05B97F3A6C2BFF8A72978 │ │ │ │ │ +EEB7F632FF604AD003A3CCA5A0465D53033A646E8082D3491EDECA3DA1A0E1BB │ │ │ │ │ +64BF36946520438D2EE72FA9EB1CEEDF56510AADA55A8DE280E23C904E0810FA │ │ │ │ │ +A3177CF684F06A4042DE4CD4AB21E2F0616153BEEE58EBBD89911FA43BC52969 │ │ │ │ │ +230C8137DB34C13E147B06C7A3875A931E1AC127E7D3EA0DF8346B6971F80901 │ │ │ │ │ +DC37F2DE1A0B81FD93CA3B5EB9B29ECABA1492901B1BA261DAB872FB3431C718 │ │ │ │ │ +9C9CDA7864908CD773864908DEB44E343221C2C4C335341789A46325D94C767C │ │ │ │ │ +740E3B60CE6D452A3A665967F568671FD7DD460B404B9C3D2EDCD47A336AA2C7 │ │ │ │ │ +BB0B1AC3823978F610629EF7AB526098A7EE7076F50A146D8134BA2DEC1B8ACF │ │ │ │ │ +68A7E4A9B7BE17FB71480516F2D6A8866E56CFD7C7A41311F48DDDD9887DACB8 │ │ │ │ │ +73FDAF5F25E956AFB0A9D530DE2E1128F006AAC9A78715BA2F90C8FED3729BFA │ │ │ │ │ +BDDD4098F870A27A91A0CB540D166FF86A442E95C9C361FD23378A2A138EAFB8 │ │ │ │ │ +D7050B486E1CB95068D890BCCD669456F3385C8F1793CE545099421368FE0F46 │ │ │ │ │ +53137AD2B65030B19CE7FF6B1669DB7A3C440AEF27149780E36C7097B7A8B71B │ │ │ │ │ +8789EECFA9A70B1F9695BB5D94E9A7D341291C1CA1BDEF4BE3EFCB8234CE9FFD │ │ │ │ │ +E1C4963CF919780129FA60162FEAA8AE97328F4BA14D949057A3EE74214F2D29 │ │ │ │ │ +51E7BE584446F6702F39957AE455CF8AF0C36AADAA39B53553D923CA5E9D4988 │ │ │ │ │ +76701B4F77DAE5185AC29900 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -4981,15 +4984,15 @@ │ │ │ │ │ 62 50 1[54 11[86 1[62 84 84 77 84 5[42 2[70 3[80 8[56 │ │ │ │ │ 56 56 56 56 56 56 56 56 56 1[31 46[{}40 99.6264 /CMBX12 │ │ │ │ │ rf /Fc 135[62 3[62 1[62 2[62 62 32[62 6[62 1[62 68[{}8 │ │ │ │ │ 119.552 /CMTT12 rf /Fd 134[71 2[71 75 52 53 55 1[75 67 │ │ │ │ │ 75 112 2[41 37 75 67 41 61 75 60 75 65 13[75 2[92 11[103 │ │ │ │ │ 16[67 67 67 2[37 46[{}27 119.552 /CMBX12 rf /Fe 132[52 │ │ │ │ │ 39[58 2[71 79 2[63 6[69 69[{}6 90.9091 /CMBX10 rf /Ff │ │ │ │ │ -134[48 23[45 19[83 18[25 5[45 1[45 45 45 3[25 44[{}9 │ │ │ │ │ +138[51 6[51 8[40 26[47 15[25 4[45 1[45 45 1[45 3[25 44[{}10 │ │ │ │ │ 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 │ │ │ │ │ @@ -5126,17 +5129,17 @@ │ │ │ │ │ Fk(P)43 b Fm(and)30 b Fk(Q)g Fm(are)h(the)f(iden)m(tit)m(y)-8 │ │ │ │ │ b(.)111 5294 y(3.)46 b Fk(A)k Fm(=)e Fk(QR)e Fm(for)e(square)g(or)h │ │ │ │ │ (rectangular)h Fk(A)p Fm(.)84 b Fk(Q)44 b Fm(is)h(an)f(orthogonal)i │ │ │ │ │ (matrix)f(that)h(is)e(not)h(explicitly)227 5407 y(computed)30 │ │ │ │ │ b(or)h(stored.)41 b Fk(R)31 b Fm(is)f(upp)s(er)e(triangular.)1927 │ │ │ │ │ 5656 y(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fm(2)p 136 100 1130 4 v │ │ │ │ │ -1312 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2770 100 V 141 399 a Fm(The)44 b(factorization)j(is)d(p)s(erformed)f │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fm(2)p 136 100 1123 4 v │ │ │ │ │ +1305 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(June)f(3,)i(2025)p │ │ │ │ │ +2777 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 │ │ │ │ │ @@ -5220,20 +5223,20 @@ │ │ │ │ │ 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 1130 4 v 1312 100 a Fl(FrontMtx)28 │ │ │ │ │ -b Ff(:)40 b Fh(DRAFT)121 b Ff(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2723 100 V 1130 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 │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1123 4 v 1305 100 a Fl(FrontMtx)28 │ │ │ │ │ +b Ff(:)40 b Fh(DRAFT)122 b Ff(June)29 b(3,)i(2025)p 2730 │ │ │ │ │ +100 V 1123 w Fm(3)137 399 y Fi(\210)45 b Fm(An)35 b Fl(IVL)g │ │ │ │ │ +Fm(ob)5 b(ject)36 b(\()p Fl(I)p Fm(n)m(teger)g Fl(V)p │ │ │ │ │ +Fm(ector)h Fl(L)p Fm(ist\),)g(con)m(tains)f(the)g(sym)m(b)s(olic)g │ │ │ │ │ +(factorization.)58 b(F)-8 b(or)36 b(eac)m(h)g(fron)m(t,)h(it)227 │ │ │ │ │ 511 y(giv)m(es)31 b(the)g(list)f(of)g(in)m(ternal)h(and)e(external)i │ │ │ │ │ (ro)m(ws)f(and)f(columns,)h(used)f(to)h(initialize)j(a)d(fron)m(t)g │ │ │ │ │ (prior)f(to)i(its)227 624 y(factorization.)55 b(F)-8 │ │ │ │ │ b(or)35 b(a)f(factorization)j(without)d(piv)m(oting,)j(this)d(ob)5 │ │ │ │ │ b(ject)35 b(stores)g(the)f(index)g(information)227 737 │ │ │ │ │ y(for)i(the)g(factors,)i(and)d(so)h(is)g(used)f(during)g(the)h(forw)m │ │ │ │ │ (ard)f(and)g(bac)m(ksolv)m(es.)59 b(F)-8 b(or)37 b(a)f(factorization)i │ │ │ │ │ @@ -5314,17 +5317,17 @@ │ │ │ │ │ b(After)26 b(the)f(factorization)227 5181 y(is)45 b(complete,)50 │ │ │ │ │ b(the)45 b(data)h(structures)e(are)i(p)s(ostpro)s(cessed)e(to)h(yield)g │ │ │ │ │ (submatrices)g(that)h(con)m(tain)g(the)227 5294 y(coupling)34 │ │ │ │ │ b(b)s(et)m(w)m(een)g(fron)m(ts.)50 b(The)33 b(w)m(orking)h(storage)h │ │ │ │ │ (during)d(the)i(solv)m(es)g(is)g(also)g(managed)g(b)m(y)g │ │ │ │ │ Fl(SubMtx)227 5407 y Fm(ob)5 b(jects.)p eop end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fm(4)p 136 100 1130 4 v │ │ │ │ │ -1312 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2770 100 V 137 399 a Fi(\210)45 b Fm(Eac)m(h)25 b(submatrix)f(represen) │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fm(4)p 136 100 1123 4 v │ │ │ │ │ +1305 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(June)f(3,)i(2025)p │ │ │ │ │ +2777 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 │ │ │ │ │ @@ -5386,17 +5389,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 1130 4 v 1312 100 a Fl(FrontMtx)28 │ │ │ │ │ -b Ff(:)40 b Fh(DRAFT)121 b Ff(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2723 100 V 1130 w Fm(5)137 399 y Fi(\210)45 b Fl(int)i(dataMode)28 │ │ │ │ │ +TeXDict begin 5 4 bop 91 100 1123 4 v 1305 100 a Fl(FrontMtx)28 │ │ │ │ │ +b Ff(:)40 b Fh(DRAFT)122 b Ff(June)29 b(3,)i(2025)p 2730 │ │ │ │ │ +100 V 1123 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 │ │ │ │ │ @@ -5453,17 +5456,17 @@ │ │ │ │ │ (submatrices)g(in)g Fk(L)p Fm(,)i(used)d(during)227 5110 │ │ │ │ │ y(the)c(solv)m(es.)137 5294 y Fi(\210)45 b Fl(I2Ohash)h(*upperhash)33 │ │ │ │ │ b Fm(:)51 b(p)s(oin)m(ter)35 b(to)i(a)f Fl(I2Ohash)d │ │ │ │ │ Fm(hash)i(table)h(for)g(submatrices)f(in)g Fk(U)10 b │ │ │ │ │ Fm(,)37 b(used)e(during)227 5407 y(the)c(solv)m(es.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 6 6 │ │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fm(6)p 136 100 1130 4 v │ │ │ │ │ -1312 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2770 100 V 137 399 a Fi(\210)45 b Fl(SubMtxManager)f(*manager)30 │ │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fm(6)p 136 100 1123 4 v │ │ │ │ │ +1305 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(June)f(3,)i(2025)p │ │ │ │ │ +2777 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 │ │ │ │ │ @@ -5523,25 +5526,25 @@ │ │ │ │ │ (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 1130 4 v 1312 100 a Fl(FrontMtx)28 │ │ │ │ │ -b Ff(:)40 b Fh(DRAFT)121 b Ff(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2723 100 V 1130 w Fm(7)0 399 y Fb(1.2.1)112 b(Basic)38 │ │ │ │ │ -b(metho)s(ds)0 593 y Fm(As)d(usual,)h(there)f(are)g(four)f(basic)h │ │ │ │ │ -(metho)s(ds)g(to)g(supp)s(ort)e(ob)5 b(ject)36 b(creation,)i(setting)e │ │ │ │ │ -(default)f(\014elds,)h(clearing)0 706 y(an)m(y)31 b(allo)s(cated)h │ │ │ │ │ -(data,)f(and)f(free'ing)h(the)g(ob)5 b(ject.)111 930 │ │ │ │ │ -y(1.)46 b Fl(FrontMtx)g(*)h(FrontMtx_new)e(\()i(void)g(\))g(;)227 │ │ │ │ │ -1078 y Fm(This)35 b(metho)s(d)g(simply)g(allo)s(cates)j(storage)f(for)e │ │ │ │ │ -(the)h Fl(FrontMtx)d Fm(structure)i(and)g(then)g(sets)h(the)g(default) │ │ │ │ │ -227 1191 y(\014elds)30 b(b)m(y)g(a)h(call)h(to)f Fl(FrontMtx)p │ │ │ │ │ +TeXDict begin 7 6 bop 91 100 1123 4 v 1305 100 a Fl(FrontMtx)28 │ │ │ │ │ +b Ff(:)40 b Fh(DRAFT)122 b Ff(June)29 b(3,)i(2025)p 2730 │ │ │ │ │ +100 V 1123 w Fm(7)0 399 y Fb(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ │ +593 y Fm(As)d(usual,)h(there)f(are)g(four)f(basic)h(metho)s(ds)g(to)g │ │ │ │ │ +(supp)s(ort)e(ob)5 b(ject)36 b(creation,)i(setting)e(default)f │ │ │ │ │ +(\014elds,)h(clearing)0 706 y(an)m(y)31 b(allo)s(cated)h(data,)f(and)f │ │ │ │ │ +(free'ing)h(the)g(ob)5 b(ject.)111 930 y(1.)46 b Fl(FrontMtx)g(*)h │ │ │ │ │ +(FrontMtx_new)e(\()i(void)g(\))g(;)227 1078 y Fm(This)35 │ │ │ │ │ +b(metho)s(d)g(simply)g(allo)s(cates)j(storage)f(for)e(the)h │ │ │ │ │ +Fl(FrontMtx)d Fm(structure)i(and)g(then)g(sets)h(the)g(default)227 │ │ │ │ │ +1191 y(\014elds)30 b(b)m(y)g(a)h(call)h(to)f Fl(FrontMtx)p │ │ │ │ │ 1330 1191 29 4 v 32 w(setDefaultFields\(\))p Fm(.)111 │ │ │ │ │ 1374 y(2.)46 b Fl(void)h(FrontMtx_setDefaultField)o(s)42 │ │ │ │ │ b(\()47 b(FrontMtx)f(*frontmtx)f(\))j(;)227 1523 y Fm(The)40 │ │ │ │ │ b(structure's)g(\014elds)g(are)h(set)g(to)g(default)g(v)-5 │ │ │ │ │ b(alues:)61 b Fl(nfront)p Fm(,)41 b Fl(neqns)p Fm(,)h │ │ │ │ │ Fl(nentD)p Fm(,)d Fl(nentL)p Fm(,)h Fl(nentU)f Fm(and)227 │ │ │ │ │ 1636 y Fl(nlocks)29 b Fm(are)i(set)g(to)g(zero.)41 b(Fiv)m(e)32 │ │ │ │ │ @@ -5592,17 +5595,17 @@ │ │ │ │ │ (exits.)111 5111 y(2.)46 b Fl(int)h(FrontMtx_neqns)d(\()k(FrontMtx)d │ │ │ │ │ (*frontmtx)g(\))j(;)227 5259 y Fm(This)30 b(metho)s(d)g(returns)f(the)h │ │ │ │ │ (n)m(um)m(b)s(er)f(of)i(equations)g(in)f(the)h(matrix.)227 │ │ │ │ │ 5407 y Fh(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fm(If)30 │ │ │ │ │ b Fl(frontmtx)e Fm(is)j Fl(NULL)p Fm(,)e(an)i(error)f(message)h(is)g │ │ │ │ │ (prin)m(ted)e(and)h(the)h(program)f(exits.)p eop end │ │ │ │ │ %%Page: 8 8 │ │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fm(8)p 136 100 1130 4 v │ │ │ │ │ -1312 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2770 100 V 111 399 a Fm(3.)46 b Fl(Tree)h(*)g(FrontMtx_frontTree)c(\() │ │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fm(8)p 136 100 1123 4 v │ │ │ │ │ +1305 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(June)f(3,)i(2025)p │ │ │ │ │ +2777 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 │ │ │ │ │ @@ -5670,31 +5673,30 @@ │ │ │ │ │ (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 1130 4 v 1312 100 a Fl(FrontMtx)28 │ │ │ │ │ -b Ff(:)40 b Fh(DRAFT)121 b Ff(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2723 100 V 1130 w Fm(9)66 399 y(10.)46 b Fl(SubMtx)g(*)i │ │ │ │ │ -(FrontMtx_upperMtx)43 b(\()k(FrontMtx)f(*frontmtx,)f(int)i(J,)g(int)g │ │ │ │ │ -(K)g(\))h(;)227 554 y Fm(This)32 b(metho)s(d)h(returns)e(a)i(p)s(oin)m │ │ │ │ │ -(ter)g(to)h(the)f(ob)5 b(ject)33 b(that)h(con)m(tains)g(submatrix)e │ │ │ │ │ -Fk(U)3087 568 y Fj(J)n(;K)3212 554 y Fm(.)48 b(If)32 │ │ │ │ │ -b Fk(K)k Fm(=)29 b Fk(nf)10 b(r)s(ont)p Fm(,)227 667 │ │ │ │ │ -y(then)30 b(the)h(ob)5 b(ject)31 b(con)m(taining)h Fk(U)1370 │ │ │ │ │ -682 y Fj(J)n(;@)t(J)1547 667 y Fm(is)e(returned.)227 │ │ │ │ │ -823 y Fh(Err)-5 b(or)28 b(che)-5 b(cking:)37 b Fm(If)24 │ │ │ │ │ -b Fl(frontmtx)e Fm(is)i Fl(NULL)p Fm(,)f(or)h(if)g Fl(J)f │ │ │ │ │ -Fm(is)h(not)h(in)e Fl([0,nfront\))p Fm(,)g(or)h(if)g │ │ │ │ │ -Fl(K)g Fm(is)g(not)g(in)f Fl([0,nfront])p Fm(,)227 936 │ │ │ │ │ -y(an)31 b(error)f(message)h(is)f(prin)m(ted)g(and)g(the)h(program)f │ │ │ │ │ -(exits.)66 1134 y(11.)46 b Fl(SubMtx)g(*)i(FrontMtx_lowerMtx)43 │ │ │ │ │ -b(\()k(FrontMtx)f(*frontmtx,)f(int)i(K,)g(int)g(J)g(\))h(;)227 │ │ │ │ │ +TeXDict begin 9 8 bop 91 100 1123 4 v 1305 100 a Fl(FrontMtx)28 │ │ │ │ │ +b Ff(:)40 b Fh(DRAFT)122 b Ff(June)29 b(3,)i(2025)p 2730 │ │ │ │ │ +100 V 1123 w Fm(9)66 399 y(10.)46 b Fl(SubMtx)g(*)i(FrontMtx_upperMtx) │ │ │ │ │ +43 b(\()k(FrontMtx)f(*frontmtx,)f(int)i(J,)g(int)g(K)g(\))h(;)227 │ │ │ │ │ +554 y Fm(This)32 b(metho)s(d)h(returns)e(a)i(p)s(oin)m(ter)g(to)h(the)f │ │ │ │ │ +(ob)5 b(ject)33 b(that)h(con)m(tains)g(submatrix)e Fk(U)3087 │ │ │ │ │ +568 y Fj(J)n(;K)3212 554 y Fm(.)48 b(If)32 b Fk(K)k Fm(=)29 │ │ │ │ │ +b Fk(nf)10 b(r)s(ont)p Fm(,)227 667 y(then)30 b(the)h(ob)5 │ │ │ │ │ +b(ject)31 b(con)m(taining)h Fk(U)1370 682 y Fj(J)n(;@)t(J)1547 │ │ │ │ │ +667 y Fm(is)e(returned.)227 823 y Fh(Err)-5 b(or)28 b(che)-5 │ │ │ │ │ +b(cking:)37 b Fm(If)24 b Fl(frontmtx)e Fm(is)i Fl(NULL)p │ │ │ │ │ +Fm(,)f(or)h(if)g Fl(J)f Fm(is)h(not)h(in)e Fl([0,nfront\))p │ │ │ │ │ +Fm(,)g(or)h(if)g Fl(K)g Fm(is)g(not)g(in)f Fl([0,nfront])p │ │ │ │ │ +Fm(,)227 936 y(an)31 b(error)f(message)h(is)f(prin)m(ted)g(and)g(the)h │ │ │ │ │ +(program)f(exits.)66 1134 y(11.)46 b Fl(SubMtx)g(*)i(FrontMtx_lowerMtx) │ │ │ │ │ +43 b(\()k(FrontMtx)f(*frontmtx,)f(int)i(K,)g(int)g(J)g(\))h(;)227 │ │ │ │ │ 1290 y Fm(This)32 b(metho)s(d)g(returns)f(a)i(p)s(oin)m(ter)g(to)g(the) │ │ │ │ │ g(ob)5 b(ject)34 b(that)f(con)m(tains)h(submatrix)d Fk(L)3084 │ │ │ │ │ 1304 y Fj(K)q(;J)3213 1290 y Fm(.)47 b(If)33 b Fk(K)i │ │ │ │ │ Fm(=)29 b Fk(nf)10 b(r)s(ont)p Fm(,)227 1403 y(then)30 │ │ │ │ │ b(the)h(ob)5 b(ject)31 b(con)m(taining)h Fk(L)1370 1418 │ │ │ │ │ y Fj(@)t(J)6 b(;J)1555 1403 y Fm(is)30 b(returned.)227 │ │ │ │ │ 1558 y Fh(Err)-5 b(or)28 b(che)-5 b(cking:)37 b Fm(If)24 │ │ │ │ │ @@ -5752,39 +5754,39 @@ │ │ │ │ │ b(metho)s(d)g(returns)f(a)i(p)s(oin)m(ter)f(to)h(the)g │ │ │ │ │ Fl(IVL)e Fm(ob)5 b(ject)31 b(that)g(holds)f(the)h(lo)m(w)m(er)g(blo)s │ │ │ │ │ (c)m(ks.)227 5407 y Fh(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ │ b Fm(If)30 b Fl(frontmtx)e Fm(is)j Fl(NULL)p Fm(,)e(an)i(error)f │ │ │ │ │ (message)h(is)g(prin)m(ted)e(and)h(the)h(program)f(exits.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 10 10 │ │ │ │ │ -TeXDict begin 10 9 bop 0 100 a Fm(10)p 182 100 1107 4 │ │ │ │ │ -v 1290 w Fl(FrontMtx)28 b Ff(:)40 b Fh(DRAFT)31 b Ff(Ma)m(y)g(1,)g │ │ │ │ │ -(2024)p 2793 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 1101 4 │ │ │ │ │ +v 1283 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(June)f(3,)i(2025)p │ │ │ │ │ +2800 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 │ │ │ │ │ @@ -5830,37 +5832,37 @@ │ │ │ │ │ (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 1107 4 v 1289 100 a Fl(FrontMtx)28 │ │ │ │ │ -b Ff(:)41 b Fh(DRAFT)121 b Ff(Ma)m(y)31 b(1,)g(2024)p │ │ │ │ │ -2700 100 V 1107 w Fm(11)111 399 y(2.)46 b Fl(char)h │ │ │ │ │ -(FrontMtx_factorVisit)42 b(\()48 b(FrontMtx)d(*frontmtx,)g(Pencil)h │ │ │ │ │ -(*pencil,)g(int)h(J,)370 511 y(int)g(myid,)g(int)g(owners[],)e(Chv)i │ │ │ │ │ -(*fronts[],)e(int)i(lookahead,)e(double)h(tau,)370 624 │ │ │ │ │ -y(double)h(droptol,)e(char)i(status[],)e(IP)i(*heads[],)e(IV)j │ │ │ │ │ -(*pivotsizesIV,)c(DV)j(*workDV,)370 737 y(int)g(parent[],)f(ChvList)f │ │ │ │ │ -(*aggList,)h(ChvList)g(*postList,)f(ChvManager)g(*chvmanager,)370 │ │ │ │ │ -850 y(int)i(stats[],)f(double)g(cpus[],)g(int)h(msglvl,)f(FILE)g │ │ │ │ │ -(*msgFile)g(\))h(;)227 996 y Fm(This)32 b(metho)s(d)g(is)h(called)h │ │ │ │ │ -(during)e(the)h(serial,)h(m)m(ultithreaded)f(and)g(MPI)f │ │ │ │ │ -(factorizations)k(when)31 b(fron)m(t)i Fl(J)227 1109 │ │ │ │ │ -y Fm(is)e(visited)g(during)e(the)h(b)s(ottom-up)g(tra)m(v)m(ersal)j(of) │ │ │ │ │ -d(the)h(tree.)227 1254 y Fh(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ │ -b Fm(None)31 b(presen)m(tly)-8 b(.)111 1432 y(3.)46 b │ │ │ │ │ -Fl(Chv)h(*)h(FrontMtx_setupFront)42 b(\()48 b(FrontMtx)d(*frontmtx,)g │ │ │ │ │ -(Pencil)h(*pencil,)g(int)h(J,)1420 1545 y(int)g(myid,)g(int)g │ │ │ │ │ -(owners[],)e(ChvManager)g(*chvmanager,)1420 1658 y(double)i(cpus[],)e │ │ │ │ │ -(int)i(msglvl,)f(FILE)h(*msgFile)e(\))j(;)227 1804 y │ │ │ │ │ -Fm(This)24 b(metho)s(d)h(is)f(called)i(b)m(y)f Fl(FrontMtx)p │ │ │ │ │ -1603 1804 29 4 v 32 w(visitFront\(\))d Fm(to)j(initialize)i(the)e(fron) │ │ │ │ │ -m(t's)g Fl(Chv)f Fm(ob)5 b(ject)26 b(and)e(load)227 1917 │ │ │ │ │ +TeXDict begin 11 10 bop 91 100 1101 4 v 1282 100 a Fl(FrontMtx)28 │ │ │ │ │ +b Ff(:)41 b Fh(DRAFT)121 b Ff(June)29 b(3,)i(2025)p 2707 │ │ │ │ │ +100 V 1101 w Fm(11)111 399 y(2.)46 b Fl(char)h(FrontMtx_factorVisit)42 │ │ │ │ │ +b(\()48 b(FrontMtx)d(*frontmtx,)g(Pencil)h(*pencil,)g(int)h(J,)370 │ │ │ │ │ +511 y(int)g(myid,)g(int)g(owners[],)e(Chv)i(*fronts[],)e(int)i │ │ │ │ │ +(lookahead,)e(double)h(tau,)370 624 y(double)h(droptol,)e(char)i │ │ │ │ │ +(status[],)e(IP)i(*heads[],)e(IV)j(*pivotsizesIV,)c(DV)j(*workDV,)370 │ │ │ │ │ +737 y(int)g(parent[],)f(ChvList)f(*aggList,)h(ChvList)g(*postList,)f │ │ │ │ │ +(ChvManager)g(*chvmanager,)370 850 y(int)i(stats[],)f(double)g(cpus[],) │ │ │ │ │ +g(int)h(msglvl,)f(FILE)g(*msgFile)g(\))h(;)227 996 y │ │ │ │ │ +Fm(This)32 b(metho)s(d)g(is)h(called)h(during)e(the)h(serial,)h(m)m │ │ │ │ │ +(ultithreaded)f(and)g(MPI)f(factorizations)k(when)31 │ │ │ │ │ +b(fron)m(t)i Fl(J)227 1109 y Fm(is)e(visited)g(during)e(the)h(b)s │ │ │ │ │ +(ottom-up)g(tra)m(v)m(ersal)j(of)d(the)h(tree.)227 1254 │ │ │ │ │ +y Fh(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fm(None)31 │ │ │ │ │ +b(presen)m(tly)-8 b(.)111 1432 y(3.)46 b Fl(Chv)h(*)h │ │ │ │ │ +(FrontMtx_setupFront)42 b(\()48 b(FrontMtx)d(*frontmtx,)g(Pencil)h │ │ │ │ │ +(*pencil,)g(int)h(J,)1420 1545 y(int)g(myid,)g(int)g(owners[],)e │ │ │ │ │ +(ChvManager)g(*chvmanager,)1420 1658 y(double)i(cpus[],)e(int)i │ │ │ │ │ +(msglvl,)f(FILE)h(*msgFile)e(\))j(;)227 1804 y Fm(This)24 │ │ │ │ │ +b(metho)s(d)h(is)f(called)i(b)m(y)f Fl(FrontMtx)p 1603 │ │ │ │ │ +1804 29 4 v 32 w(visitFront\(\))d Fm(to)j(initialize)i(the)e(fron)m │ │ │ │ │ +(t's)g Fl(Chv)f Fm(ob)5 b(ject)26 b(and)e(load)227 1917 │ │ │ │ │ y(original)32 b(en)m(tries)f(if)f(applicable.)227 2062 │ │ │ │ │ y Fh(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fm(None)31 │ │ │ │ │ b(presen)m(tly)-8 b(.)111 2240 y(4.)46 b Fl(IP)h(**)h │ │ │ │ │ (FrontMtx_factorSetup)42 b(\()47 b(FrontMtx)f(*frontmtx,)f(IV)i │ │ │ │ │ (*frontOwnersIV,)1611 2353 y(int)g(myid,)g(int)g(msglvl,)e(FILE)i │ │ │ │ │ (*msgFile)f(\))h(;)227 2499 y Fm(This)21 b(metho)s(d)g(is)g(called)i(b) │ │ │ │ │ m(y)e(the)h(serial,)i(m)m(ultithreaded)e(and)e(MPI)i(factorizations)i │ │ │ │ │ @@ -5903,17 +5905,17 @@ │ │ │ │ │ (ultithreaded)g(and)f(MPI)h(factor)h(and)e(solv)m(e)i(metho)s(ds)f(to)g │ │ │ │ │ (load)h(the)227 5262 y(dequeue)30 b(with)g(the)h(activ)m(e)i(lea)m(v)m │ │ │ │ │ (es)f(in)e(the)h(fron)m(t)f(tree)h(with)f(resp)s(ect)h(to)g(the)f │ │ │ │ │ (thread)h(or)f(pro)s(cessor.)227 5407 y Fh(Err)-5 b(or)34 │ │ │ │ │ b(che)-5 b(cking:)40 b Fm(None)31 b(presen)m(tly)-8 b(.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 12 12 │ │ │ │ │ -TeXDict begin 12 11 bop 0 100 a Fm(12)p 182 100 1107 │ │ │ │ │ -4 v 1290 w Fl(FrontMtx)28 b Ff(:)40 b Fh(DRAFT)31 b Ff(Ma)m(y)g(1,)g │ │ │ │ │ -(2024)p 2793 100 V 111 399 a Fm(8.)46 b Fl(ChvList)g(*)i │ │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fm(12)p 182 100 1101 │ │ │ │ │ +4 v 1283 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(June)f(3,)i │ │ │ │ │ +(2025)p 2800 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 │ │ │ │ │ @@ -5981,19 +5983,19 @@ │ │ │ │ │ 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 1107 4 v 1289 100 a Fl(FrontMtx)28 │ │ │ │ │ -b Ff(:)41 b Fh(DRAFT)121 b Ff(Ma)m(y)31 b(1,)g(2024)p │ │ │ │ │ -2700 100 V 1107 w Fm(13)227 399 y(This)c(metho)s(d)f(is)h(used)g(to)h │ │ │ │ │ -(store)g(an)m(y)f(p)s(ostp)s(oned)f(ro)m(ws)h(and)f(columns)h(from)g │ │ │ │ │ -(the)g(curren)m(t)g(fron)m(t)h Fl(frontJ)227 511 y Fm(in)m(to)f(a)g │ │ │ │ │ +TeXDict begin 13 12 bop 91 100 1101 4 v 1282 100 a Fl(FrontMtx)28 │ │ │ │ │ +b Ff(:)41 b Fh(DRAFT)121 b Ff(June)29 b(3,)i(2025)p 2707 │ │ │ │ │ +100 V 1101 w Fm(13)227 399 y(This)c(metho)s(d)f(is)h(used)g(to)h(store) │ │ │ │ │ +g(an)m(y)f(p)s(ostp)s(oned)f(ro)m(ws)h(and)f(columns)h(from)g(the)g │ │ │ │ │ +(curren)m(t)g(fron)m(t)h Fl(frontJ)227 511 y Fm(in)m(to)f(a)g │ │ │ │ │ Fl(Chv)e Fm(ob)5 b(ject)27 b(obtained)f(from)f(the)i │ │ │ │ │ Fl(chvmanager)c Fm(ob)5 b(ject)27 b(and)e(place)i(it)f(in)m(to)h(the)g │ │ │ │ │ (list)f(of)g(p)s(ostp)s(oned)227 624 y(ob)5 b(jects)25 │ │ │ │ │ b(for)e Fl(K)p Fm(,)g(its)h(paren)m(t,)i(found)c(in)h(the)h │ │ │ │ │ Fl(postponedlist)c Fm(ob)5 b(ject.)39 b(The)23 b Fl(frontJ)f │ │ │ │ │ Fm(ob)5 b(ject)25 b(is)e(unc)m(hanged)227 737 y(b)m(y)31 │ │ │ │ │ b(this)f(metho)s(d.)227 891 y Fh(Err)-5 b(or)34 b(che)-5 │ │ │ │ │ @@ -6059,17 +6061,17 @@ │ │ │ │ │ (ulating)i(up)s(dates)d(from)h(descenden)m(ts.)337 5107 │ │ │ │ │ y Fi(\210)45 b Fl(cpus[3])29 b Fm(|)h(time)h(sp)s(en)m(t)f(assem)m │ │ │ │ │ (bling)h(p)s(ostp)s(oned)e(data.)337 5257 y Fi(\210)45 │ │ │ │ │ b Fl(cpus[4])29 b Fm(|)h(time)h(sp)s(en)m(t)f(to)h(factor)g(the)g(fron) │ │ │ │ │ m(ts.)337 5407 y Fi(\210)45 b Fl(cpus[5])29 b Fm(|)h(time)h(sp)s(en)m │ │ │ │ │ (t)f(to)h(extract)h(p)s(ostp)s(oned)d(data.)p eop end │ │ │ │ │ %%Page: 14 14 │ │ │ │ │ -TeXDict begin 14 13 bop 0 100 a Fm(14)p 182 100 1107 │ │ │ │ │ -4 v 1290 w Fl(FrontMtx)28 b Ff(:)40 b Fh(DRAFT)31 b Ff(Ma)m(y)g(1,)g │ │ │ │ │ -(2024)p 2793 100 V 337 399 a Fi(\210)45 b Fl(cpus[6])29 │ │ │ │ │ +TeXDict begin 14 13 bop 0 100 a Fm(14)p 182 100 1101 │ │ │ │ │ +4 v 1283 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(June)f(3,)i │ │ │ │ │ +(2025)p 2800 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 │ │ │ │ │ @@ -6131,19 +6133,19 @@ │ │ │ │ │ (*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 1107 4 v 1289 100 a Fl(FrontMtx)28 │ │ │ │ │ -b Ff(:)41 b Fh(DRAFT)121 b Ff(Ma)m(y)31 b(1,)g(2024)p │ │ │ │ │ -2700 100 V 1107 w Fm(15)227 399 y(and)c(up)s(date)g(matrices)h(are)g │ │ │ │ │ -(assem)m(bled)g(in)m(to)g(staircase)h(form,)f(so)g(no)f(subsequen)m(t)g │ │ │ │ │ -(p)s(erm)m(utations)g(of)h(the)227 511 y(ro)m(ws)j(is)f(necessary)-8 │ │ │ │ │ +TeXDict begin 15 14 bop 91 100 1101 4 v 1282 100 a Fl(FrontMtx)28 │ │ │ │ │ +b Ff(:)41 b Fh(DRAFT)121 b Ff(June)29 b(3,)i(2025)p 2707 │ │ │ │ │ +100 V 1101 w Fm(15)227 399 y(and)c(up)s(date)g(matrices)h(are)g(assem)m │ │ │ │ │ +(bled)g(in)m(to)g(staircase)h(form,)f(so)g(no)f(subsequen)m(t)g(p)s │ │ │ │ │ +(erm)m(utations)g(of)h(the)227 511 y(ro)m(ws)j(is)f(necessary)-8 │ │ │ │ │ b(.)227 660 y Fh(Err)j(or)28 b(che)-5 b(cking:)36 b Fm(If)23 │ │ │ │ │ b Fl(frontmtx)p Fm(,)f Fl(mtxA)p Fm(,)h Fl(rowsIVL)p │ │ │ │ │ Fm(,)e Fl(firstnz)p Fm(,)i Fl(colmap)e Fm(or)j Fl(workDV)d │ │ │ │ │ Fm(is)i Fl(NULL)p Fm(,)f(or)i(if)f Fl(msglvl)227 773 │ │ │ │ │ y(>)48 b(0)30 b Fm(and)g Fl(msgFile)e Fm(is)i Fl(NULL)p │ │ │ │ │ Fm(,)g(an)g(error)g(message)i(is)e(prin)m(ted)g(and)g(the)g(program)g │ │ │ │ │ (exits.)111 957 y(4.)46 b Fl(void)h(FrontMtx_QR_storeFront)42 │ │ │ │ │ @@ -6213,17 +6215,17 @@ │ │ │ │ │ h(the)g(factoriza-)227 5146 y(tion.)227 5294 y Fh(Err)-5 │ │ │ │ │ b(or)35 b(che)-5 b(cking:)41 b Fm(If)31 b Fl(frontmtx)p │ │ │ │ │ Fm(,)e Fl(frontJ)g Fm(or)i Fl(chvmanager)d Fm(is)j Fl(NULL)p │ │ │ │ │ Fm(,)f(or)h(if)g Fl(msglvl)46 b(>)i(0)31 b Fm(and)f Fl(msgFile)227 │ │ │ │ │ 5407 y Fm(is)h Fl(NULL)p Fm(,)e(an)h(error)g(message)i(is)e(prin)m(ted) │ │ │ │ │ g(and)g(the)h(program)f(exits.)p eop end │ │ │ │ │ %%Page: 16 16 │ │ │ │ │ -TeXDict begin 16 15 bop 0 100 a Fm(16)p 182 100 1107 │ │ │ │ │ -4 v 1290 w Fl(FrontMtx)28 b Ff(:)40 b Fh(DRAFT)31 b Ff(Ma)m(y)g(1,)g │ │ │ │ │ -(2024)p 2793 100 V 0 399 a Fb(1.2.8)112 b(P)m(ostpro)s(cessing)38 │ │ │ │ │ +TeXDict begin 16 15 bop 0 100 a Fm(16)p 182 100 1101 │ │ │ │ │ +4 v 1283 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(June)f(3,)i │ │ │ │ │ +(2025)p 2800 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 │ │ │ │ │ @@ -6293,17 +6295,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 1107 4 v 1289 100 a Fl(FrontMtx)28 │ │ │ │ │ -b Ff(:)41 b Fh(DRAFT)121 b Ff(Ma)m(y)31 b(1,)g(2024)p │ │ │ │ │ -2700 100 V 1107 w Fm(17)227 399 y(This)d(metho)s(d)g(creates)h(and)f │ │ │ │ │ +TeXDict begin 17 16 bop 91 100 1101 4 v 1282 100 a Fl(FrontMtx)28 │ │ │ │ │ +b Ff(:)41 b Fh(DRAFT)121 b Ff(June)29 b(3,)i(2025)p 2707 │ │ │ │ │ +100 V 1101 w Fm(17)227 399 y(This)d(metho)s(d)g(creates)h(and)f │ │ │ │ │ (returns)f(a)i(v)m(ector)h(of)f(p)s(oin)m(ters)f(to)h │ │ │ │ │ Fl(SubMtx)e Fm(ob)5 b(jects)29 b(that)g(hold)f(p)s(oin)m(ters)g(to)227 │ │ │ │ │ 511 y(the)j(righ)m(t)g(hand)e(side)h(submatrices)h(o)m(wned)f(b)m(y)g │ │ │ │ │ (the)h(thread)f(or)g(pro)s(cessor.)227 671 y Fh(Err)-5 │ │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fm(None)31 b(presen)m(tly)-8 │ │ │ │ │ b(.)111 878 y(2.)46 b Fl(void)h(FrontMtx_forwardVisit)42 │ │ │ │ │ b(\()47 b(FrontMtx)f(*frontmtx,)f(int)i(J,)g(int)g(nrhs,)370 │ │ │ │ │ @@ -6371,17 +6373,17 @@ │ │ │ │ │ 5261 y Fj(J)578 5247 y Fm(:=)c Fk(Z)762 5261 y Fj(J)831 │ │ │ │ │ 5247 y Fg(\000)20 b Fk(U)984 5261 y Fj(J)n(;K)1109 5247 │ │ │ │ │ y Fk(X)1184 5261 y Fj(K)1283 5247 y Fm(that)31 b(will)f(b)s(e)g(p)s │ │ │ │ │ (erformed)f(b)m(y)h(this)g(thread)h(or)f(pro)s(cessor.)227 │ │ │ │ │ 5407 y Fh(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fm(None)31 │ │ │ │ │ b(presen)m(tly)-8 b(.)p eop end │ │ │ │ │ %%Page: 18 18 │ │ │ │ │ -TeXDict begin 18 17 bop 0 100 a Fm(18)p 182 100 1107 │ │ │ │ │ -4 v 1290 w Fl(FrontMtx)28 b Ff(:)40 b Fh(DRAFT)31 b Ff(Ma)m(y)g(1,)g │ │ │ │ │ -(2024)p 2793 100 V 111 399 a Fm(8.)46 b Fl(void)h │ │ │ │ │ +TeXDict begin 18 17 bop 0 100 a Fm(18)p 182 100 1101 │ │ │ │ │ +4 v 1283 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(June)f(3,)i │ │ │ │ │ +(2025)p 2800 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 │ │ │ │ │ @@ -6454,17 +6456,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 1107 4 v 1289 100 a Fl(FrontMtx)28 │ │ │ │ │ -b Ff(:)41 b Fh(DRAFT)121 b Ff(Ma)m(y)31 b(1,)g(2024)p │ │ │ │ │ -2700 100 V 1107 w Fm(19)337 399 y Fi(\210)45 b Fl(cpus[4])29 │ │ │ │ │ +TeXDict begin 19 18 bop 91 100 1101 4 v 1282 100 a Fl(FrontMtx)28 │ │ │ │ │ +b Ff(:)41 b Fh(DRAFT)121 b Ff(June)29 b(3,)i(2025)p 2707 │ │ │ │ │ +100 V 1101 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 │ │ │ │ │ @@ -6526,17 +6528,17 @@ │ │ │ │ │ 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 1107 │ │ │ │ │ -4 v 1290 w Fl(FrontMtx)28 b Ff(:)40 b Fh(DRAFT)31 b Ff(Ma)m(y)g(1,)g │ │ │ │ │ -(2024)p 2793 100 V 227 399 a Fm(This)e(metho)s(d)g(computes)g(and)g │ │ │ │ │ +TeXDict begin 20 19 bop 0 100 a Fm(20)p 182 100 1101 │ │ │ │ │ +4 v 1283 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(June)f(3,)i │ │ │ │ │ +(2025)p 2800 100 V 227 399 a Fm(This)e(metho)s(d)g(computes)g(and)g │ │ │ │ │ (return)f(the)i(n)m(um)m(b)s(er)e(of)h(\015oating)i(p)s(oin)m(t)e(op)s │ │ │ │ │ (erations)h(for)f(a)h(solv)m(e)g(with)g(a)227 511 y(single)h(righ)m(t)g │ │ │ │ │ (hand)f(side.)227 664 y Fh(Err)-5 b(or)29 b(che)-5 b(cking:)37 │ │ │ │ │ b Fm(If)24 b Fl(frontmtx)e Fm(is)i Fl(NULL)p Fm(,)g(or)g(if)g │ │ │ │ │ Fl(type)f Fm(or)i Fl(symmetryflag)c Fm(are)j(in)m(v)-5 │ │ │ │ │ b(alid,)27 b(an)d(error)g(message)227 777 y(is)31 b(prin)m(ted)f(and)f │ │ │ │ │ (the)i(program)f(exits.)0 1053 y Fb(1.2.13)113 b(IO)37 │ │ │ │ │ @@ -6612,17 +6614,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 1107 4 v 1289 100 a Fl(FrontMtx)28 │ │ │ │ │ -b Ff(:)41 b Fh(DRAFT)121 b Ff(Ma)m(y)31 b(1,)g(2024)p │ │ │ │ │ -2700 100 V 1107 w Fm(21)111 399 y(7.)46 b Fl(int)h │ │ │ │ │ +TeXDict begin 21 20 bop 91 100 1101 4 v 1282 100 a Fl(FrontMtx)28 │ │ │ │ │ +b Ff(:)41 b Fh(DRAFT)121 b Ff(June)29 b(3,)i(2025)p 2707 │ │ │ │ │ +100 V 1101 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 │ │ │ │ │ @@ -6685,17 +6687,17 @@ │ │ │ │ │ 4980 y Fm(metho)s(d.)337 5122 y Fi(\210)45 b Fm(The)30 │ │ │ │ │ b Fl(seed)f Fm(parameter)i(is)g(a)f(random)g(n)m(um)m(b)s(er)f(seed.) │ │ │ │ │ 337 5265 y Fi(\210)45 b Fm(The)30 b Fl(type)f Fm(parameter)i(sp)s │ │ │ │ │ (eci\014es)f(a)h(real)g(or)f(complex)h(linear)g(system.)500 │ │ │ │ │ 5407 y Fe({)45 b Fl(type)i(=)g(1)h(\(SPOOLES)p 1417 5407 │ │ │ │ │ V 32 w(REAL\))29 b Fm(for)h(real,)p eop end │ │ │ │ │ %%Page: 22 22 │ │ │ │ │ -TeXDict begin 22 21 bop 0 100 a Fm(22)p 182 100 1107 │ │ │ │ │ -4 v 1290 w Fl(FrontMtx)28 b Ff(:)40 b Fh(DRAFT)31 b Ff(Ma)m(y)g(1,)g │ │ │ │ │ -(2024)p 2793 100 V 500 399 a Fe({)45 b Fl(type)i(=)g(2)h(\(SPOOLES)p │ │ │ │ │ +TeXDict begin 22 21 bop 0 100 a Fm(22)p 182 100 1101 │ │ │ │ │ +4 v 1283 w Fl(FrontMtx)28 b Ff(:)41 b Fh(DRAFT)30 b Ff(June)f(3,)i │ │ │ │ │ +(2025)p 2800 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 │ │ │ │ │ @@ -6765,18 +6767,18 @@ │ │ │ │ │ 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 1107 4 v 1289 100 a Fl(FrontMtx)28 │ │ │ │ │ -b Ff(:)41 b Fh(DRAFT)121 b Ff(Ma)m(y)31 b(1,)g(2024)p │ │ │ │ │ -2700 100 V 1107 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 │ │ │ │ │ +TeXDict begin 23 22 bop 91 100 1101 4 v 1282 100 a Fl(FrontMtx)28 │ │ │ │ │ +b Ff(:)41 b Fh(DRAFT)121 b Ff(June)29 b(3,)i(2025)p 2707 │ │ │ │ │ +100 V 1101 w Fm(23)337 399 y Fi(\210)45 b Fm(The)30 b │ │ │ │ │ +Fl(nrhs)f Fm(parameter)i(is)g(the)f(n)m(um)m(b)s(er)f(of)i(righ)m(t)g │ │ │ │ │ (hand)e(sides)h(to)h(solv)m(e)h(as)f(one)f(blo)s(c)m(k.)337 │ │ │ │ │ 545 y Fi(\210)45 b Fm(The)30 b Fl(type)f Fm(parameter)i(sp)s(eci\014es) │ │ │ │ │ f(a)h(real)g(or)f(complex)h(linear)g(system.)500 691 │ │ │ │ │ y Fe({)45 b Fl(type)i(=)g(1)h(\(SPOOLES)p 1417 691 29 │ │ │ │ │ 4 v 32 w(REAL\))29 b Fm(for)h(real,)500 820 y Fe({)45 │ │ │ │ │ b Fl(type)i(=)g(2)h(\(SPOOLES)p 1417 820 V 32 w(COMPLEX\))28 │ │ │ │ │ b Fm(for)i(complex.)p eop end │ │ │ │ │ @@ -6865,16 +6867,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 1107 4 v 1289 100 a Fl(FrontMtx)28 │ │ │ │ │ -b Ff(:)41 b Fh(DRAFT)121 b Ff(Ma)m(y)31 b(1,)g(2024)p │ │ │ │ │ -2700 100 V 1107 w Fm(25)0 399 y Fl(FrontMtx)p 390 399 │ │ │ │ │ -29 4 v 32 w(writeToFormattedFile\(\))p Fm(,)25 b(20)p │ │ │ │ │ -eop end │ │ │ │ │ +TeXDict begin 25 24 bop 91 100 1101 4 v 1282 100 a Fl(FrontMtx)28 │ │ │ │ │ +b Ff(:)41 b Fh(DRAFT)121 b Ff(June)29 b(3,)i(2025)p 2707 │ │ │ │ │ +100 V 1101 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 May 1, 2024 │ │ │ │ │ │ + 2 FrontMtx : DRAFT June 3, 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 May 1, 2024 3 │ │ │ │ │ │ + FrontMtx : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 4 FrontMtx : DRAFT June 3, 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 May 1, 2024 5 │ │ │ │ │ │ + FrontMtx : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 6 FrontMtx : DRAFT June 3, 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 May 1, 2024 7 │ │ │ │ │ │ + FrontMtx : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 8 FrontMtx : DRAFT June 3, 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 May 1, 2024 9 │ │ │ │ │ │ + FrontMtx : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 10 FrontMtx : DRAFT June 3, 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 May 1, 2024 11 │ │ │ │ │ │ + FrontMtx : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 12 FrontMtx : DRAFT June 3, 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 May 1, 2024 13 │ │ │ │ │ │ + FrontMtx : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 14 FrontMtx : DRAFT June 3, 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 May 1, 2024 15 │ │ │ │ │ │ + FrontMtx : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 16 FrontMtx : DRAFT June 3, 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 May 1, 2024 17 │ │ │ │ │ │ + FrontMtx : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 18 FrontMtx : DRAFT June 3, 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 May 1, 2024 19 │ │ │ │ │ │ + FrontMtx : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 20 FrontMtx : DRAFT June 3, 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 May 1, 2024 21 │ │ │ │ │ │ + FrontMtx : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 22 FrontMtx : DRAFT June 3, 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 May 1, 2024 23 │ │ │ │ │ │ + FrontMtx : DRAFT June 3, 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 May 1, 2024 25 │ │ │ │ │ │ + FrontMtx : DRAFT June 3, 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.05.01:0544 │ │ │ │ │ +%DVIPSSource: TeX output 2025.06.03:1221 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -3344,32 +3344,32 @@ │ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ │ /UnderlineThickness 50 def │ │ │ │ │ end readonly def │ │ │ │ │ /Encoding 256 array │ │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ │ dup 44 /comma put │ │ │ │ │ dup 48 /zero put │ │ │ │ │ -dup 49 /one put │ │ │ │ │ dup 50 /two put │ │ │ │ │ -dup 52 /four put │ │ │ │ │ +dup 51 /three put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ dup 70 /F put │ │ │ │ │ -dup 77 /M put │ │ │ │ │ +dup 74 /J put │ │ │ │ │ dup 79 /O put │ │ │ │ │ dup 84 /T put │ │ │ │ │ dup 97 /a put │ │ │ │ │ dup 100 /d put │ │ │ │ │ dup 101 /e put │ │ │ │ │ dup 103 /g put │ │ │ │ │ dup 105 /i put │ │ │ │ │ dup 110 /n put │ │ │ │ │ dup 111 /o put │ │ │ │ │ dup 114 /r put │ │ │ │ │ dup 115 /s put │ │ │ │ │ dup 116 /t put │ │ │ │ │ -dup 121 /y put │ │ │ │ │ +dup 117 /u put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ │ @@ -3554,125 +3554,121 @@ │ │ │ │ │ 80FD855F1733F58FB223DBBE8D1E7E062138E3F3554A7A07EB9C00BB1712A05D │ │ │ │ │ 624AB5E1D9A596177E566E14EC543AF373D6737BBA050C7478A65B851C2B285C │ │ │ │ │ 216A86A2C8607B03CEB9DED58C9BB5E9282CBFAA3CC2BA792FB5A4E3054FBFAF │ │ │ │ │ 8875C1396824B8E12C4B838BB34D41DB2DFC4C96F2237620EFA9C4FDFA969CCA │ │ │ │ │ 02CBC8203772884CB1652AA46485C52019D47B16F35F548035C0B263BDDB677A │ │ │ │ │ A51564759CBE2847EE0835D3BF4D8F63970B594574AE314938F4019D4A350E32 │ │ │ │ │ AB25DCCD4D43ECC7ABCFA07DBD7BBDFCEB8908AFBFC28E8F7517222B89C453A6 │ │ │ │ │ -89FDF47AC918C44F4AEE7607C5237DBB341B32032BD7B842E31461380A393E81 │ │ │ │ │ -A07DCCF0DE54B996C7C96EC2A7E0A009BF99F219EDCC6896B91753F1CF41CFD8 │ │ │ │ │ -F62A3D6F272A37A3BB0AC10FC5D496E6E009F7E5C87217014A781BB36C9F0C7E │ │ │ │ │ -4836AF26175095AF5EBF6840D82D776AF5616FDF2D2771CA098C797576278386 │ │ │ │ │ -986F2C9DA41D9F036E7A364065298141CB92544550AAED5E33BD170C3FAD93F6 │ │ │ │ │ -635BA8CB1A97A078424ED2E4DD4D426D9E4332D74B8368CC8AA7E61B8ABD5849 │ │ │ │ │ -D838101DB2851C254596F37FEB9AF5FC261B9517030678D221F4ED747B08FC88 │ │ │ │ │ -9D666232E23204D5D7BED72B39C25898647452ADE4453475CB943EE0F950CE56 │ │ │ │ │ -7076DB45E5E339C2223261D70852E28C9A2C920E33FECE5E9B568211FAD51C1B │ │ │ │ │ -B39EF902A771CE395B222AD02B209028A246ECD40D6574C0704E6ED97AB79441 │ │ │ │ │ -94525B9C7C77E2FDC76E6F0D0D706033788229C94F461C57D6ED44A9F7835282 │ │ │ │ │ -4393D7D7E45FD49474D98EFD7645BF14D59FB86FDF2169EE513CCBDCD479F446 │ │ │ │ │ -19BDF97C5F97E29A7E1AF0FCB5C51E41F37947F50A077335EABCE29A720A8D7E │ │ │ │ │ -0C01A2C5CC7089839BA1C441D0AA937CB4DD605F53D5C8BB065D6B4940869A3C │ │ │ │ │ -5E29B7EB60C43B9D28C1BA3CAF71D252E4A184BDF87B9F90D1D6E768201104E6 │ │ │ │ │ -AA5A4B0B7997268317CFA4DD23FC97450F92A3DF16E4FF43135A5C345029DD22 │ │ │ │ │ -A97F23BCA9D47F48A78075928605FB065033479851C24511E0FD5828AEB51DE5 │ │ │ │ │ -F1980633BE4D01B5472D15CBE96353ED99E04C0C49BE86D7A571546D909D2F72 │ │ │ │ │ -96B5F8FA78E2A878DF6F36216D8DD63AD78B29F6A4FF79F8A0FF792AC7E7F036 │ │ │ │ │ -DD6AFBE0E1DAE6DE2600DF2788B765CC9BF1E9E8681F00850834B28D794C6E71 │ │ │ │ │ -E1FCDC46E7820703C36A5397A2AEB50B5A47113246876F2DCDE2561FCA81DF59 │ │ │ │ │ -9DDE03A4CC38D25E309C464E77C155186C4E670AD095C7A1669E2B4B69B190A7 │ │ │ │ │ -08D64DC149680D173B8D9C9E04DC92431FCADBE9E3E382AC27439D7C9764DED0 │ │ │ │ │ -381449C4E914B637B3D8D3959AF1F3B26066A28CEE525F04B97CEB4E67D28D13 │ │ │ │ │ -6AA301B829B1FDF4FD3B02AF9ACAD359038DDF1871047B9C13EEF5004BED2280 │ │ │ │ │ -6DF4265CEDA414DCEDF97CFFFFB3F768D1646D3E1BD9732BF3307140930A7D1A │ │ │ │ │ -7DAED11643ABF9EC053B4CD596A6D3B29E4B98F5CE9E84FB70BA3EF640FDED69 │ │ │ │ │ -CC525AF1E7E9C5E3A1BB0C2D6363FF10E0D09B882D48157C6924EEBBAEDD677B │ │ │ │ │ -4D433578FEA490094D536FEFC666201B00BC86D5CEC9412D180556834034B290 │ │ │ │ │ -086969CF6AF4D95CEFBE270ACDC4B492EA63A23038CE1F4C06D1DC8DCD219F63 │ │ │ │ │ -A2E37B6E7E2C7DDE47CC1C1DA3A7216F96BA4081F9524647F207ADED7765E429 │ │ │ │ │ -237FBDF142F64334B0657F88ECFD1F902BC303A315BB868ACD305DC88E1B7D5F │ │ │ │ │ -230E088291191F13A07F7D9881D91814C47A0A3B07C7332C0A7E267E8AC4A0E2 │ │ │ │ │ -D134CB3DC93A40957F27D69BB8ACF81172AE94139BD004D7E22D979E4786A46C │ │ │ │ │ -4F82EA693ABFFCC030FB5D47032E878BA5CD61E9B6AD9F4FDCB9EFF2B38A7730 │ │ │ │ │ -383B07BC989682609B26DD7C61478DFF4D9D0AECE431D1D7F7425C9CEEA0887B │ │ │ │ │ -2F4F4DB3B043CE7AF83A8D6196F5935C427119F1DCAF73BBEF52E6A93732312B │ │ │ │ │ -259DE443E8DF2BC4BF8B6A5208DBC3AA9BC1A2B95EF5BE774FC96DB05DDF3B13 │ │ │ │ │ -96678C81A275038FD554E15B52AB2FED200920949AE34E5D1BB284B4F65E19D3 │ │ │ │ │ -DE3FCEB73A3E8D472B1D46B94F9A5CA983162B2958B77984CD394A178532B3E2 │ │ │ │ │ -D051E9EBAFCFE0DCADB337A0CA63916126879D4B9A1F3F3752CD27F462A0335D │ │ │ │ │ -F6E630BF619414D6B13448BBA701A7B2C38ED81BECF0C90784B849B431E5D9DA │ │ │ │ │ -2AF8B1D9700974297F819122055575C844D1FBC19BDD1D5F3AE202CB41C30CDA │ │ │ │ │ -2A89638348165E2E02412692914844239885CF988D634B76BA739E0AF02906F6 │ │ │ │ │ -EFA9AAB8949772C0CDA8EDEB6BB9CC3FB2E7E4346E5ED11C16A5976628F5CA4D │ │ │ │ │ -14312AF405D7632C3819D0D1FBFD1BD69374F4B48012271F48619A02EC307E96 │ │ │ │ │ -5F9FA4C498D73046E2F3D318A8CAE737A8F98FE01BB469BF41EE1839F1AB2E0E │ │ │ │ │ -AFE18145D311C1C6E3968E6B4621394C8ED78C2480F19E47698342F3F20494B3 │ │ │ │ │ -3012C9CE5F869BF2D9AA82E5AD2DE5EEA55321D2A8F018B7321BDC0511FA4177 │ │ │ │ │ -24DDF8032517D36329194466778125FC3200A61CCA5F767EB4D490844B03DE9B │ │ │ │ │ -D8437E200164329D427D1FEED40CBB9000824CBDED9C579A64F85EB98F59E37A │ │ │ │ │ -C37B092AD5BECD338B89043497E670F721B9BC99A12523B956F2988B989E88C7 │ │ │ │ │ -F147A30B9CF461B3B10BAFAF87E2B6F06E1384C1114F45B004CCA4C3C1E2E75C │ │ │ │ │ -3FF5A9D565E222FAB94016E15F70B8B27CA8924D5B18BB8891D982052ABA2FD1 │ │ │ │ │ -4A4D7E9EFC43A126DBDD2A3B3866F81CFB57A9F8070D627FB0C9E087821306F9 │ │ │ │ │ -03CB6E0E0423338B9703EB44DE2A5CE8E06457C850F424910E91BFB129E14165 │ │ │ │ │ -7C4826F27315280416581873166817EB98CE022620B768C8F22B1056CCA3DD98 │ │ │ │ │ -8AA09A63684DF4FF4B2FB014C1532DE7B779C00B4DBFC3EB3D80604323975744 │ │ │ │ │ -213C96EE73EE55AE3B90CFA45676B48DF6CD9CB2A4070AB1890B9B6223D0B787 │ │ │ │ │ -E6216F35398FE17EF1101A891E0632487D72C9BCF194D86BD36CA17617B2C76A │ │ │ │ │ -0DDF9DDCAD40AB6F1578DDBA39EC34B5C0BA1EDE8BDD3BB61BF1303293BB7E28 │ │ │ │ │ -BADD1B6200642256E45B8D72CD207B4A7E1C13CD731ABCDD117B0B32EF342C17 │ │ │ │ │ -D5ECF523D2989F1151E6FFD0D99C1E1E62D6A71C9C3D6D308635730578DEED6C │ │ │ │ │ -6EC75607BB6AD9AD806DB6978AE71D45C159C889A28D4E085A45B8B0C45BA67C │ │ │ │ │ -15B6DB6A76F9AE9C4F973AA0193848CA69418BC2AADF897EE79691E78F633FD1 │ │ │ │ │ -3BECBF6E883EDC3315D6EEA90EA0296D93EB191412042628EDCD86876B3D681E │ │ │ │ │ -0C28F9C871E3FBABFB864FD548D3A50F86C3C4450E27B394B0D02EFB578045EE │ │ │ │ │ -E985A27BB04A9A0D9B98BFC4FE691D55744E644C6EAA50930D1BB884786CE818 │ │ │ │ │ -5367F22EA46C6157787AB128AB8C1338F38C2C9FB3EEA17C55DEEE90499D40D8 │ │ │ │ │ -D0986D135905EC5805F9EE0CDC54B17EFD72469A0161B55E45963911377E8732 │ │ │ │ │ -0B6341B98EC38B930596BAA00A0775599F34697797B761D63BBE87E0ECED1036 │ │ │ │ │ -EBA89C9487295C79AB17E0EFECC41FE46C2BD86A0F8176B4F73527C5A9C142ED │ │ │ │ │ -54373A458EE08153AC6D04D7E684D3A194FB79589A3E62D63F9E364CC7D63E61 │ │ │ │ │ -AAB6FEF4B227AE2BB1C0CA7DD61D49D824BBC31BE346E734881C1158491C615C │ │ │ │ │ -E6DCB87485E4C297731DC76AEDCBDC6E08CDFF3EF7590B8FD5BEE9B903BF1B59 │ │ │ │ │ -E18D6E3F8B7AD37679FB64D9E066572DA8F6A480EFE7DBE8388C15719CF6D63D │ │ │ │ │ -BFDD9CD87C23F1FCD464636966BBCDD6E3B032B20BB1DDA00B1CF4EEF0002705 │ │ │ │ │ -C24163CA0F0DB2B69BFC30D814F608A9FFEC1D07B5C85DA8355A3B55F8B46D42 │ │ │ │ │ -C875466D8B761D1615CFE4CA903EECF2457F25F0407CFE3E31E89ADB2DD27C99 │ │ │ │ │ -676E94661C81DDDE7FD8262F9F6D4B46B0910BA9E173FDEE22DAE878240AD433 │ │ │ │ │ -CA39AB28D34DA6C73F4B5FCD932C4DA1973632A95A2E9FBD3AFC95F06B7EA27D │ │ │ │ │ -E7DB390FB2CC204678B2E4026586B21A2B2B5CFD9F8D7506F9006E8ADA60E279 │ │ │ │ │ -6C7737C8170C3AA2208291400F7C992AF59B3045EFA3AABEA0A532C6A25672E2 │ │ │ │ │ -9C5BBD154020E055D07CA9998BE79DBBC74D2D3956E03512FF7CDF9731654424 │ │ │ │ │ -3F5276B32D8C73636C8D98DE174C7FB9B89045616DD4762C80FFC40D467ACCE3 │ │ │ │ │ -FA359B8E1AFF4225336DBAD9854065A19AED83B1D52D6FF06BF983777D1E4745 │ │ │ │ │ -351148C1C65596CEBA3B9665C7C210C8D6E6A25EE784A5ECA2232E0A3A349342 │ │ │ │ │ -5399AD87C139F3D1B76C7410770EDCD630C2BE1799709EA44A32F15F314B3AF3 │ │ │ │ │ -4D756B7F46D0E72166CDABD155536755EDC3ABAB5D08EFE3097AE4E576CBD821 │ │ │ │ │ -1376BDA559D8CF2316B6FD81E9DE850E1F7E50D2B40055C2231F4B82F3E83105 │ │ │ │ │ -F61F5E180AC8BCA681BE5293DDAF2AA1B2938AC37E81F85B9E68205A0EAF2DE9 │ │ │ │ │ -A4860EDBEDCD27780503215B12F08EF0580DD38F099DEC50DE307C31AB8DF44E │ │ │ │ │ -5981AB2F589699B8C2F520DAC670807D3AE17ACF44F6CD85C34924600F41B99F │ │ │ │ │ -805CCE8344A51F0F8CC98F53F1E402DC8DED9101AAEB7F7FCF500116C71B70FD │ │ │ │ │ -8FE986911049F99696852107C336CD03C0D0CADFF58B6469C3596A6F74DADBC5 │ │ │ │ │ -4BA2FDB6EFB9AA0CCFD9F95702F376FD14D6DA0EA37A06485A0FBBA213FE5CC9 │ │ │ │ │ -C68A6BF60181006905337BC74A1EA90797525A6948FDB35AB5393A4247546AAF │ │ │ │ │ -19B726A5F97516C9846CB81F56173B955D258C5DDF97959C42A4C7E9457C0C41 │ │ │ │ │ -857BBA4969EEA4CDC20BCA69C9BD92A8A6EFB72F2F55774A57D31B43982B8EDA │ │ │ │ │ -16F8906A82D9215BC0E4E3A33D929A3EA9B56A3ECA4CF9CA9D44FE858CF9205C │ │ │ │ │ -0B11699EECDBBD2B602A8A64F9738DA9E0EF30E5FD6CF3901285A0AC7F8798C0 │ │ │ │ │ -FBB808B385A331195065F4592F7E36E151269E504E27428303EC8687BB72D931 │ │ │ │ │ -122A0B0194F00ED82FDB1B79C5EC33857CE70402821D0746E99DF255A541760F │ │ │ │ │ -243EABFDC93F3ED94BA330A49F63C948F46886AAA492AD7F7DF5FB4A4892BAFC │ │ │ │ │ -D544DD062EBAFD74C6E00895972D3BFC49BA282B5A3970BE3B34D6D07B252637 │ │ │ │ │ -3FCAAEE229B9A40C13687FF845F786A06578AF30E071E64CBABD2FAF52439DA9 │ │ │ │ │ -81935BB916EBD4672D8E3834521C39ACDBEFA4B1A7D02E6DF72F1243B2893067 │ │ │ │ │ -9554E5506A49B27F3A66521D61008DD0204001275FE17B80A94E55C9C416EEE3 │ │ │ │ │ -502958426CAC02F5C0878D201412FFBF2D2AFE0EE65C8E7247F9BE60D2BFC6FF │ │ │ │ │ -F364E38E410F5A9B6BDCE63A53EC32B0B162A4625C5DDA4EB4F832EA4A8EC96C │ │ │ │ │ -53DCC141DA8BF09BAF4439D2531280CA008E4B86B0FC7A41FA4C961BC3 │ │ │ │ │ +89FDF47AC918C44F4AEE7607C5237DBB341B32032BD7B842E3147A09F1D236BF │ │ │ │ │ +B36493E9849967F12ED58C4CFD280FE501E1B70FC0222A6D4CCAD56EF1C0BA7D │ │ │ │ │ +4021FEA4EBA2806EF25C397AF9DBE171332A8029FE5C5FF2A99FA9AE577CEDC6 │ │ │ │ │ +6221A4205DF59039F7393F53EA4A871176B5B4C28362293C4D7E83F65055A0B5 │ │ │ │ │ +F4B68C67E93B8E5D620F528409DC57D72616176C70C2DF1DB79A59171F7C8CF5 │ │ │ │ │ +56A7E9DF32C224D2A21920F40CC41C6C40D746C87E43ED4F9E185AFB50CE3B52 │ │ │ │ │ +CB1BC7B1CC62EBE43B473FEC1FB75A8424AFD1546B429E6A37A0033BEFC7AF99 │ │ │ │ │ +0307D1B3F84E3151E1DB1C6E152521758F6548B001D255A3825EF680C50CBC03 │ │ │ │ │ +8C0F3441AA4121F11EAF7FA06D93324FF117A1850928C186B209AB26B65190F2 │ │ │ │ │ +1B024D6A086042E9F972A0EE2EB01E633E74E447F514A1F0D9A16EE1DD435305 │ │ │ │ │ +4CD4B0F1F52FBEFE2B252417471583DC8D8F810F480799A729044024D45E93E6 │ │ │ │ │ +717A1BB3ED6CBC1CD68DF8D9476D07B6B02F1514E28C3DC631657503050A7851 │ │ │ │ │ +6A4D28461578669FFDBE3B2563A304F2704D9367231BC6D1B69EA719B19D2F31 │ │ │ │ │ +DB233778DC3BB1CF6511E346303027DD889D3A545971D70C5CB3B80904ADBBB5 │ │ │ │ │ +244F597FD97F3E7E442D781ABAE1BC8E97B035B543EFAA51C0C7F93B53CE880D │ │ │ │ │ +CCDB83E55290BD91214700F399448F69BF3E0618C8395CD56C68532EBA0B323E │ │ │ │ │ +9B63B49E5F7B8F20128631ED4F7B5ACD07C5CB42D353903F358DB7534DEB95AE │ │ │ │ │ +83F242E6DC77D56C86A5E7C7BEBB82E7101E7403A6AF0E237E2F599363F13AA2 │ │ │ │ │ +840E6B9A8C6E355CEDF374AE721DDFDC271A49F4D658184DDEE23E66A3FC8BD5 │ │ │ │ │ +888D4C109FCC2DF46F924BA1A5B406537D099E2E8860B91050F965DFFA94FC06 │ │ │ │ │ +D943D9C37D25D3B8D82115024B4FA928AA7A959C9DE5EDD884C1E0FE1EC1E710 │ │ │ │ │ +ECE539712F47B89020045B8A35C6D68A7D878B6767075711704913DF4FAF9000 │ │ │ │ │ +DB52DB417A2FAAABEF02A8F3FDCADE276AD1DC529F6633B7EEC86DD22FEF50CA │ │ │ │ │ +D1CDCE7EE5B580C43BD022D292246DA4AA906B06151027F49E5E6B843991E685 │ │ │ │ │ +3E2B871263C5C881B177CBB4EC543C61B4EE599C8DE76B9A215D757D29C3009C │ │ │ │ │ +75B17EEC88C20150EC544CA8AEF5FDA04AFE13F58D0A5B2A7C4ABC592806FF27 │ │ │ │ │ +5A364EFB015044B565A0D25EC9AA1E0128270C4F209635F4D6F637EE9C33B8C6 │ │ │ │ │ +43BEEB97A6F38122B95A2B0F35EDF5BDAAF4608A5F98D7E737879F600AFF32E6 │ │ │ │ │ +20327AE7B4EDD08E94CF92A8F63A90BABD94CD4B8C6FF9C6541BACA3FC054277 │ │ │ │ │ +E35CCE99C12CEC19ECD46F5BD478E9E06A09173EC7027704CEB0B36DCB7533A1 │ │ │ │ │ +03CEB2AE1087764A217B1E958146788CCDFE6F0396473A8864902B4E170E60A3 │ │ │ │ │ +ED9746289BF12BCD4FAD2773B8B2F7966812D4FB7777929DC67EF5681C466195 │ │ │ │ │ +D24F1321F96A6F84FE236E65B38D783CD0DC21A803BF9FB38A2C9362D59F1F83 │ │ │ │ │ +E84FCB6708F22014A1FE46DC95475FE0F9E88DF37A5FCC2A3EF65494CCCF2035 │ │ │ │ │ +FAA332AB7E122E8D00E0EF5619E32DB70D4FD8E6041E3B6588DFE25702EE7386 │ │ │ │ │ +268FFA63B0F7C8553F0FDB87EDC2C6BB8ADF119B4D0A4DA0349FF4B2E1A0EBC3 │ │ │ │ │ +83D307784F0CD8C9E711140E3B0264CA6D0555FA5A92D8E994D25C814C077785 │ │ │ │ │ +DB907BCEE9BC112EC42B7DCB1A35028CFA229B5C63B90455B48DFA5F3AD8381B │ │ │ │ │ +6D986FC5D3C5CD3B5E0513A58F7293F435D43ACE79A8A0A803A67204329456F2 │ │ │ │ │ +7696254055E74D85B41C0987990A67F4132FB99C2222C59CBD1FB8E366321820 │ │ │ │ │ +8E119D17A68C3EC804CFF0611A4529B392A8D650028A1DF9B5E1B83BE28A722D │ │ │ │ │ +2555803A8DBCF80F1D85F4042BEA1EF8A65C36EDC06737C623214E4D47D86F9E │ │ │ │ │ +5D206E9215FC6076CD8E99366F2E04FE664AFAEACC86D4D6E7BFDF66C4707C9C │ │ │ │ │ +C4090B72092428DF973C442336422A913B868DAF9CFCB46E8FC65687C6C30935 │ │ │ │ │ +82A1324DDF0A819F6AD75A26649397E664B45DB8D49CEC9F91A24D154A737C68 │ │ │ │ │ +1042470191DEE5355CF8B10EB957E1EB7FCE7DF3C747AC944360CB7B976CB0B8 │ │ │ │ │ +0EF569D24F373362F05288F10E449B9BDF707FC1B9852CA8BFE69AB37C87DE16 │ │ │ │ │ +788CE18F7ADDF088484EAFF7CB9DB1F3C0F9B9C87B681E623182BA01F258AF59 │ │ │ │ │ +1887AC3E0B44ADED5FF6B50FE4E2913C1887E170EB5A7C21CBB48188868E3C10 │ │ │ │ │ +393549D545C8A423BFF086D29865406FF00BA978E2F3E6F22E0019131C6D9EE7 │ │ │ │ │ +7EB3BF477F9BEA63806BA31F2D0620FA817D0B6044853C53468622B9B6A3F129 │ │ │ │ │ +439AC9281230369E2D6FD3BA2F404C27971283EEA9261963B1F46ABEE96B3264 │ │ │ │ │ +BB6A6CBBA416A488951DF8ADFFD3278652FD59CBD0CEFD7FD7F85F9D2A731AEA │ │ │ │ │ +BF0F10BCE24A5FEDD1DB009B6AB715FC68A5C43FC20A44B802BD7F45241CB603 │ │ │ │ │ +1E9BCE02A165652053FD5DE95B48275C0A945F3CA4B5B60FF0C3DD54A2541367 │ │ │ │ │ +89E82A58701D1389AE6EC68EF40B576D58DCD360D294B89C866A03461F67ABB8 │ │ │ │ │ +EC6BE48741923105A87D589F373407495A1EC074ED32B29A97200271394A360D │ │ │ │ │ +5E184725A28D58ACCD5EDDC75DEF46C25F5695F7DBC6AFFFF08C83DF5021C433 │ │ │ │ │ +0B3714A8BDE38B637EC76CA1D45F7D834DD073FAF57AC27F0AE459213ACFAC6E │ │ │ │ │ +888B933D294E5D939E9055A0A3425CC3E00567C235FAA01FE6B8F7ED2319F00E │ │ │ │ │ +282AEE2AE6398507B1AA568E2F5D23F0B84640B29E4107EBA34E55501A7A58FD │ │ │ │ │ +D2C9A988D4DDC307C2C0D68FD0EB1980DFB99B1C60863AC6556186E101B65126 │ │ │ │ │ +7C8B654EEB8C444FB7AD201F63198D70E614AA6D08AD728914DB836AAA304B4A │ │ │ │ │ +18B901BBBF2DC29FB2015DF2A29B9EB54A68FDED44F1B3A8BD333326B9FA7715 │ │ │ │ │ +014453523A44647549C8C6B82006F2F6A99B7FE461B2E680404985F0D7649A1A │ │ │ │ │ +3F0747B0C6769A3AC8BDB37156F031FB79D894AF8C99AB956A2B031BF5E0886D │ │ │ │ │ +6643DFA9C960E6505E4FE2DB451EDF5C52EF611324C86031982DDDFEEA23BA5C │ │ │ │ │ +EF8B63721F3E184B658EC883BD3DAEC04A98BF613A14050507BCD24CD00E0485 │ │ │ │ │ +38DDC25C2C415523E16CACEC68CF971D84BA9F8BDC4528DA7FBFA09F6A34BE0B │ │ │ │ │ +0F5BFA9979A4DCFBD5E54998FD64175045C7909D05B8DAFBAE94B4435941D6F9 │ │ │ │ │ +5AD18815E05A6402D66D41722D6F2A96B66F9B3DA40C6E52C24C91B034927A3E │ │ │ │ │ +CD2B6DD6BF29FC92FE59F41D5D0A6D2C424FCA08E5E22B1405C4CE1F1E13D137 │ │ │ │ │ +F80E86D4F7A4305BD133B35CE670B01C5FC922B1CBF7B2AFD951A38EF5F99F63 │ │ │ │ │ +2AE3C3FF42E36149CDAF43E42788C1F71AEC741E119A722119CB542D82113F49 │ │ │ │ │ +C5302926C7E621D138406E06B9E72D7D3FF268A5C2A2528FA7F46F1FE9A99297 │ │ │ │ │ +E7346744FF9F94A97A1AB9648F071FCD16DCDEE3BAE95D606B4BEE416F92C134 │ │ │ │ │ +880A1820F5248F2BF99FD070AA5533C3A5E6CDACD7C00AAF634C04E3D0B903A3 │ │ │ │ │ +2BDAE9193C041DD7E11F829CC621B332E3C5BADABA2A11F6A923AC55CF0C6AD9 │ │ │ │ │ +0DC822C06F1609F4306B858D28C5C81929F83583A3F6A4E0EA05BA860C1BB1E2 │ │ │ │ │ +FCCF422B059176512BB3A0E06A482BFB3D87461D9841C23B7DCDF19EF92A6EC1 │ │ │ │ │ +E0845F3AC1124E5899E2B549A8B65E6A4622D11F14B73E6FE6A98CA110FBD94C │ │ │ │ │ +3309A4B36CA6CB9A4F3DA802112F493FA3B34962526BBDEFCFA4E37585396275 │ │ │ │ │ +B603890B92DBC56B366A50EBB836A1C60D15B668F499A9D500FD8A5E3F86784C │ │ │ │ │ +CB93A14504627C9F2D0C38330E2D012FB14BA17ECEC2D6A66D2AAD24314EE3AB │ │ │ │ │ +744638E868FB58781AC5EB46CAF8171D6B8CF1F3BE8C39018D52821978C6E84E │ │ │ │ │ +92E5F853DB5476846BC5BEE6D3A583B117CE85231382A27CD428C481C3F0C768 │ │ │ │ │ +666521327B415C552C4C77E063FF8D9DA083F21B0248409CA1A8AF3BBB8C9BA9 │ │ │ │ │ +5B868BC00D349557D51BDCFBA8995B6D98A9CB9B2E13F80679AECC722C234F96 │ │ │ │ │ +2219BCCAC6DEF95DC287D17215CEE1050CCE39648027081B372731A630CD0F51 │ │ │ │ │ +F0913BA2E6E48CEE2A2732313E8D8C24434C9D1BD6A48A1439797A15892CF779 │ │ │ │ │ +B6C0A87199D8DDEADF51564FDE7F1BBA6D798207307A3102DE3F5EB4CB3215F1 │ │ │ │ │ +065F362C163AC1CF5375833095F6E03B19DAC9AF315457C83A22824DD42DE96E │ │ │ │ │ +B5855525D31184D7C590EB0683FD2A6135784CDD58F2DDF7CA15902EDEBA2D9B │ │ │ │ │ +C752388121943729E59753D0B758EDDFE4A32F62EEF46029785252376CF4E58C │ │ │ │ │ +6EBDD464644727B8F998AB4A8A4B7E0ECA1E330378039A16652D7C95A90FBA4E │ │ │ │ │ +ADAA14582F0EF0294824AD36B1145E4E44D2C864402F6CF04E2D5234CDCF50FD │ │ │ │ │ +8750C14ED5C9C8CAAEE1D82426A85BD886E8B623DC5AF743AE76CCB83194A828 │ │ │ │ │ +BC04262908FB91A993AFCFBB829866C7F7AB85CF40BC9346DFF0B54E0DF70732 │ │ │ │ │ +50FB67F06BD7BBF2244E10185F6D9CD795E3B43A01A87E4D3C01E218B3387BDF │ │ │ │ │ +A34C04B11C15C421B794BBCCC38D449D04AF2A795BFF10F99D7D1325CFCBA07F │ │ │ │ │ +430EC99513533C023FA5CF574D29B254306C8F4F4110AF1ECA53DBD56D1DF734 │ │ │ │ │ +63FBE838D86B9F63977A26F23D8CAD216179B6F7A2D13EB8CE97982A1E9DDB9E │ │ │ │ │ +308369ECAE42431FE6645316D9FCD80D5439139B328F1393CA21596CE8C53A88 │ │ │ │ │ +670E8E61A46DA04315F57C81666969D819394D9713ECFF4DD10A2E1640ADD3F9 │ │ │ │ │ +F274D1D03E556274672E448F6E7F8BDF69BF4ED938A558067D209F3697B5B193 │ │ │ │ │ +314B314B744016909D590F37B91AE979612411044710832489FBE9A61AC10F7A │ │ │ │ │ +8D02FE6FB107185CC1D3E474D0A784B8C8012068DCC6 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -6744,22 +6740,22 @@ │ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ │ /UnderlineThickness 50 def │ │ │ │ │ end readonly def │ │ │ │ │ /Encoding 256 array │ │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ │ dup 44 /comma put │ │ │ │ │ dup 48 /zero put │ │ │ │ │ -dup 49 /one put │ │ │ │ │ dup 50 /two put │ │ │ │ │ -dup 52 /four put │ │ │ │ │ +dup 51 /three put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ dup 65 /A put │ │ │ │ │ dup 66 /B put │ │ │ │ │ dup 67 /C put │ │ │ │ │ dup 71 /G put │ │ │ │ │ -dup 77 /M put │ │ │ │ │ +dup 74 /J put │ │ │ │ │ dup 83 /S put │ │ │ │ │ dup 97 /a put │ │ │ │ │ dup 99 /c put │ │ │ │ │ dup 100 /d put │ │ │ │ │ dup 101 /e put │ │ │ │ │ dup 102 /f put │ │ │ │ │ dup 103 /g put │ │ │ │ │ @@ -6770,15 +6766,14 @@ │ │ │ │ │ dup 111 /o put │ │ │ │ │ dup 112 /p put │ │ │ │ │ dup 114 /r put │ │ │ │ │ dup 115 /s put │ │ │ │ │ dup 116 /t put │ │ │ │ │ dup 117 /u put │ │ │ │ │ dup 118 /v put │ │ │ │ │ -dup 121 /y put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA │ │ │ │ │ 0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 │ │ │ │ │ 51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 │ │ │ │ │ 7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 │ │ │ │ │ @@ -6952,174 +6947,167 @@ │ │ │ │ │ 82032FBD2FCB6E403D34B85ED4053A8CB619BDD4DE001F4C3007B1F317579651 │ │ │ │ │ E6D6662189CC2D95AB85D7473F65C5D7B4AC63B0FE928F3400035D5A9D443D0D │ │ │ │ │ F3532B99F3AC26CB25EA3CD64C341159061E02EFBC7C033C05CD919BBD827A6A │ │ │ │ │ BFCF3BD739E32E7FE909AEE068D50FAC33605FFF98C7D0115FB860178FD03DB9 │ │ │ │ │ 7985B78E0AC21F2EA065FA841F5928FB85163B2E2D8F850DC7EE313912C45C28 │ │ │ │ │ 2783F6762C67882EFEDDC7E7567F91C16B16FD8D5A1ABF35B5586307701B91AD │ │ │ │ │ 54984598F2AD46FEE3D68A2731BEAA754C8E730FE0E84952EF77930E4118F8D7 │ │ │ │ │ -2F3AD7547F9B0793E20128D03B122C74288283D9B583378FBA48950DCBDF887D │ │ │ │ │ -0A4C231FE009050F8A0C02473587E1D076F0BDC5458931FB26937C4EF7A7AB76 │ │ │ │ │ -DF14BDA8C5E27BDD9EC959C6F3FCF0C55E52847705744EE3D80EF426B9760775 │ │ │ │ │ -F4BD72DF213B715BE0AB9CEF5A9038E3EED7AF454E08ACBBD037E6307A04F331 │ │ │ │ │ -224C39B55908AC9FA0B8E560F8E78D5027B8266331C62EDF750CC08C0E2EB573 │ │ │ │ │ -082BB774BD853932B7C0C88BBE5F6E5E9D985792FA21B3180EE9911F823439DE │ │ │ │ │ -C430774263982682D4B1B76C287D1856702887A9A99B2B5A466FE6CC5B0851DF │ │ │ │ │ -EFBE62D59C80A0B97E81D0EEF577494C78F03924465B9042C7C6C1FD732CA57D │ │ │ │ │ -099755095F57ED2389501E3BF0969584ECE08D55FD8D7E95F92B4A0D405E5D61 │ │ │ │ │ -D10A7CF6B540B64594532EF90FA00CF28271462CB7F96D210E554AE285907A38 │ │ │ │ │ -EF66F57A40E2302CA4D3864994EC113AA35017C6D9890D1F4990AED4E5E395BA │ │ │ │ │ -51A1FED7F0E799614AEEFBD6FA24180F06F18DAC1D48FCC97C637130FF5C49AB │ │ │ │ │ -65E3E993F2CF6A2ED14A5A5CB71EDDAC41F58897B17750F761C131E1951F0F61 │ │ │ │ │ -1F97660E665F72B8E5106D357D7F673A61FA9399DF549ED13478B0335D7E97DA │ │ │ │ │ -DB74852BFFEBA827ACFD99EAD434BC753CF4E821275943118CF97A260781E068 │ │ │ │ │ -B184EEDC5879DC8787E93AAF61C0A4D418A86C33B89A2B8AAF6F49094930434D │ │ │ │ │ -D0C2E3E47E4C849694F27DD241F3BE91C3DB064D79677FE30BB4275A02AB5703 │ │ │ │ │ -C2264DE0968934F25B5A855A153CFC062AA83B31F1C6E8FB1AFEB58A64A14B09 │ │ │ │ │ -67E7B6AF2DA17860B7543EEB6ADCDD16D4B7D4F18E6F194B786485B01BC1A3A9 │ │ │ │ │ -396EE80A882178E4C3644FF8AA702B5464748DFED0976C8BA16C832E799B239B │ │ │ │ │ -9099F3D4A5A68BDF2E3FE6443946500F31DE839C2A3BBA6577B8CF43DEB27DAB │ │ │ │ │ -C0A137B4720797D42486BF465D5B985A25E9032899A947682839EFEB2B8C88A4 │ │ │ │ │ -68C6CF3974C05F04622DA67A108D15E6FA0045E7DDB78CCA3D006E29DAFCE011 │ │ │ │ │ -145079AEAE711D809C2E273678FBB776D52D087A2188BC928D1402D701B15092 │ │ │ │ │ -5738B4443E74A65AE02C4003A26A7AB8B47EE43F90F9BF18B2ED0B49C7323D1A │ │ │ │ │ -B8260E303426756CCD9F58C35EE26DF93E3812B5AC37CE52B4CF91AFD4E35BAB │ │ │ │ │ -953B82F8605C48210430CF1BB40C08830D363012F6B799CEBD93E0F4471863C8 │ │ │ │ │ -757C7F2B98D93043226E39D08F33F2A4FD0A5ED47C649D4B436975FA06A55C50 │ │ │ │ │ -EF3B08AD7530027A0A39A0DA0100A0FECF5DE027A6A28A96D04B31398B2D83B0 │ │ │ │ │ -DCC54F437F821BD1A7A557E0C57880CCA7272CA5A57904CC4E9928D615251D0B │ │ │ │ │ -F3531E5E727AD0685FCC56379A638017555F0461CB993D5C1521CDAC0763C532 │ │ │ │ │ -97F184F8970D9684715E8795FA1D524DA2C34CD3A14A6B0040FECD322147BCDA │ │ │ │ │ -E3B077C05158FFB35462B1F76E0EA38924B4D11D7F1E33A27097C16B18DA9041 │ │ │ │ │ -73F04019FA0D2B8B44A29349DA31CF1623D7B4B2BA93B0EC0A77F6C83E00EA7A │ │ │ │ │ -068E3AEA228DE76A68DCAD7CE2EF84A1158AF71B91CEC37AA83B8D9475E08577 │ │ │ │ │ -57AC8D901BB47DE5D3C0012733E108B4E5DC9F6A2866288164F49A6A0326F071 │ │ │ │ │ -7CBB886F7926E350F0BC53722D07B13EAB8B2BB7BD45E3B200D263E36CF8B0D8 │ │ │ │ │ -14C0A96F3A7E9469803789D1985C88EC018B5B696AD7F7EF06E0A62E0078E96F │ │ │ │ │ -0A283CA24D5DAD82B27E2984E30E914AB13CFE88FC213C35EE5C0EBD817B22E5 │ │ │ │ │ -24FB5FBEE871C835A21153C990C6034DDA6E13EEDC75C8890DBE01222968D30B │ │ │ │ │ -BC331BF66F01120ACD64D6ED3EA805E5301AE6CF826F265ABFFE56E4204C7F06 │ │ │ │ │ -9444E01D00FC487E42A6E362907E919521012F8223C341A9A1E177EB5B7C75EC │ │ │ │ │ -C8DFEFF27E9C5C9978E2F55B2A637B64FF4AC072340D9B903D7ED33FCDCE4E84 │ │ │ │ │ -E731A78F61D11B8A8943EB40EFBEF64BCE9022BFE6E077AB24E43281A16A7782 │ │ │ │ │ -262D6DF9BB2C70784F7D122D6982AB98C1FFFCBD8809C7875CB4CBE5CC3D60DD │ │ │ │ │ -727341788798A973A623EFBD052BD7193E31B897F4919812B859038299798548 │ │ │ │ │ -CDE0F1C2FD164DEAC4F83628E491CCBFC85E0F8394990A3CE6EF9243CD5FB0AD │ │ │ │ │ -93CF22AFD1E761B44D5913108DBF0126C5FB38D9A4D5287F2A054C6AC13C0AC1 │ │ │ │ │ -FBBFC76A454310A5F10D950A298359EDB95B9F59E51533068A0ED8FD6B89AC1F │ │ │ │ │ -C7C392C9D68166A7460AB609050CCE6A32A38B9743357D1DD50D0D0A3C0182F3 │ │ │ │ │ -775A4B5CB09C186BADA1CF02A9F2D2D51F43EE04068D37A1DD6AAD3E74DAF16A │ │ │ │ │ -25025FE65A9A3C0B6E5E5EEFC9240E8AD4AF1448BF638814130EF28B5CDD7BA1 │ │ │ │ │ -4ED0711775148B6597D389599B3646D2E453E2241FCA2A166E0E149EF6488B8B │ │ │ │ │ -7167AB129E8322FA13F397C397A267D1031E6F4A2AFDD3AD1CCE0716DE3E5D20 │ │ │ │ │ -15FB30801BF3A6B6A72916F435447EEC10F78A657D007321EE5AACA5C8DF60AF │ │ │ │ │ -4DDCDBA296024E9E34824267DAFEDC4AD07C4299C7E929B005A64B35D4516C8E │ │ │ │ │ -347D143DB486C3279B761F5FA96E8E9C3F3E7C3C96516A5659527018AFAADBB9 │ │ │ │ │ -624B618B602BDDD580CD73B37FE80EA9C36B6D799A51DF4FE23E5BBB2E48D67E │ │ │ │ │ -C915CADE19A360A566FD764F91E94038F7425A25A7F42625FB8955F6C34366C3 │ │ │ │ │ -2E2D5635ADF0C234AEEBAFA73FDEE015BBA43D94E2B73F2531A0E0908FC83B34 │ │ │ │ │ -2EDA013BC731D5E7E27FAAC3482207A40FB5D592D05602A2234943DC1CDDE125 │ │ │ │ │ -E8F09B6EE4CAA4B92612A49D4ABEFA25652C13CFF294692BB1EA6D558EF8C0DB │ │ │ │ │ -5F19A97E366CAF413129DECEB2340A572F6C8947BA2E63627A82B7934460DF7B │ │ │ │ │ -AA9707BD2CC20CBDD7F68B0C9820324872ED52A9CD48C51C00B6D759521DF528 │ │ │ │ │ -EA3051837EBB05FF9BA2FFD890126153DA9E40232FD68F06C67E5341410DA7D9 │ │ │ │ │ -323AAC0E9102AA2B0DC46170DE855AA6666631BD64F017AE785459E1AE95D507 │ │ │ │ │ -C805A8E71B5A359C4A0929B381516162B9DDB2E94564598D01407A9519D33C6D │ │ │ │ │ -CF3E4AA9E608EC7EF7012A6EEE7EBE260CC65A2AF1A0BFBD8D31AD28AC94703C │ │ │ │ │ -CCFCD208431952A5539A9F791720447EF9A4BE5A215FA44FADB71277BE3623EC │ │ │ │ │ -0A2BD6DBBB0983774996F4F3C637A0ADF55E4BDFAC686456FF8FD5BAD3046857 │ │ │ │ │ -99C1FA04ABC51B7387B5FE3720C430F047B38004B0FD6A0B93A00CD7F89D21CB │ │ │ │ │ -D4FE14A57AAC20ADDED4ADD6FE6C40DBDD500277FE22CFBBF2E4DC2708DA9771 │ │ │ │ │ -FAD191F8118F71E335C10E75AB6C075A2E17A35A554E44A2EF4C3D1D09915390 │ │ │ │ │ -FFF8D610BF775B1045EA9C2CB0C3812313B21D1E9D172F3DDCB30F9D9CDACFC5 │ │ │ │ │ -05A3A4149689690DB655D418FC451CA79B95BA54721734BEBD193E23FE2647C4 │ │ │ │ │ -AC2955B7D3B1A7250F07F190EA699923FB56BE3E15CD7C86EE6FF8C699FC6505 │ │ │ │ │ -5054914A03F7657B326EA96A927D4930235D08AF901DBAA881A1CF2F66376589 │ │ │ │ │ -364CF46A3BF6EAD3A1B625AFF168EE45558AE1E82A8C8DDFBF1126D6D15462E0 │ │ │ │ │ -A617D49E691010FCEA8138BE82A0346CF10924F0AF6EA3DDF7EF30182C021C7C │ │ │ │ │ -CCBFB81DAE86C247C5310BC3B1C52A0F7867850A6F98C614ECB3A0591027B09E │ │ │ │ │ -E2971682F4545A054AEBB9166A99A57E6449233BCB1AF5616DB5578D7462718B │ │ │ │ │ -A8F57E423954F2BB6069CA578DD68705342F41DD085153AA9AD30699C81D92C2 │ │ │ │ │ -C6DCB268BF9E352E5B878EB7B3926CEA0DE5DB0EB19D278B64A1B9474B6383DA │ │ │ │ │ -605B57906C9D19039E44D4A8C323FD95B6098E2BBD4E31305F75053BF37A3780 │ │ │ │ │ -6EAE2C64A11900664ED4E6793B55FEDF9BBFD3E55D0D6C2A7B25813DEAFBECC0 │ │ │ │ │ -8D63F924034FAA34DBD78EC183FBE0EC89FF5D408EFCE23114FB024049F38061 │ │ │ │ │ -1AE683F18B83653B86ADA38A22A43C707F55403C72A95672B5BB6B4532C89C82 │ │ │ │ │ -F76EAC341672B5F42642E2E57A66833ECDCDA01D55C45CAE00FBC0F481582265 │ │ │ │ │ -F18D43EF18AD7D7595D96D225F11DD02ED7CCAC7A1FAB5256E0BE51A671151EF │ │ │ │ │ -2EBD6C671F3EA009D2923C35B4FD362E01025F5BCF763817923E373CBD3D3850 │ │ │ │ │ -9AF128E6FB66204C25E885AEC7B1F713A193184F554173B434768F465D51B9CB │ │ │ │ │ -5B942C9122C23484781D86226667B9339DB44709AC33F452D7B192F17EF43BFB │ │ │ │ │ -60ADCA6667A467A4CC4B22B1A8FF59B295799A09719CE715CD321AA0E08266A2 │ │ │ │ │ -B60C9CA9BCAC914C11B4AB21C64CA416404C3F38A9C5B37F85E0FC3632CA694E │ │ │ │ │ -893D626A575B8A2B3F87FEDE11C49D04858E26FDA02142E637F39CA5C5B6CDF0 │ │ │ │ │ -59EA95F4F5EC4206B3E05FD1856B37DDFC960FCE0A78A38E722406A5A34C5643 │ │ │ │ │ -D66667DC2E6809896B01B1540BB04C9ED7E59B5A9CF98E4A8D2D6552BB3BB13B │ │ │ │ │ -0244F3E13CA23E5AF124F392EC2F129C9E70236498C1B3842D8457F87F52EA1A │ │ │ │ │ -5309E753378FB0117509AB4CB3AEFE8064A79725E63C8E15B28090E6D7F428C2 │ │ │ │ │ -F64F6B5A2303616D7A333A7E3EF1BBE764E8CE88506C04E106C70A0970355498 │ │ │ │ │ -C6641F3BC8FF2D7268EC30E44EAE9B6260A167AC4F972D8C67033D47305220AB │ │ │ │ │ -24DFEEC722C1B842E246C491B7B1E09BD96639C2A72E01967D17F82FFD93A3B9 │ │ │ │ │ -61BC6C91A5CDFDDFACBEAACA1552D067C3C4DD00F2EF478EF6BE3EC593D7132F │ │ │ │ │ -C5C436892164FD577F080185570BD8849F8055FCEC5553F440925B517E97CB8A │ │ │ │ │ -F40B41AF0F3A67E1E6099C6363C653F790CD56ED30001709082CE9ED10D49135 │ │ │ │ │ -CB1E3F2F71B8E7BD44422CB99DFB6747F8A59DBD449531F4622F4C050FC73542 │ │ │ │ │ -7F5CC71AFA2DBFF92929290D78DFAB4F23D4F86C285AD95806E23EDCEE2103D2 │ │ │ │ │ -49ED3FD9262A3773E7987419C5610472E39EDBB8852D862DDD591E49D1039F0F │ │ │ │ │ -B18C99DE7DC53EE69C15BAF4C56D989C7DC19F7257254DC2A82405F45EF43A33 │ │ │ │ │ -7E0C0E2B60748F47EC4FF7978B3BAB4F2CF64DC41C065DCC58167420256F1B3B │ │ │ │ │ -11FB1056AC84F7FD5700D118B9CEBEA36714E93B54837CE91DC87BF69671B7F5 │ │ │ │ │ -FD9A6547B94182244D2E95BE3A66A3E0E56962DDAA4B206A71B8160C097AA2F7 │ │ │ │ │ -051D6BA62FFD5CFD35D8F423807B994D7D04EB5730F3807F1438D82AA423ABC0 │ │ │ │ │ -A510423B2DC711C1ED6F96A63E7607A0FA301C3B45B7D639234DC09E14A6F866 │ │ │ │ │ -D2729CFF0AD6BD46D5A2690647943BF7806B637C58D5918927167154AA643A26 │ │ │ │ │ -99B61450791B5676ED10861F1D48A4BD5EDA9646778A4F6BE8EC942BB1F3EA29 │ │ │ │ │ -10FF84957EF6A690A8506A01697C6CE6F8F92D29442EAC9A51281A0B38E42D49 │ │ │ │ │ -DF41332F95845744CC9528D7CAB2F722E910A94EBE7AA392D989038340FCEDBE │ │ │ │ │ -32C2532D8AD7729AFE53DBDB9716204C9D6FDC7AF06D1C15B5D25D435D419C77 │ │ │ │ │ -EBF96EEEB9B91984140780A965F7B88BC9B80F2607820C9EB165CD0DAD112FF7 │ │ │ │ │ -A9B45CCDE8EF28E6750D78A746A556C100C520F930458AD0FCB1933BD3C715E9 │ │ │ │ │ -CAFA58AA653E32BBCDD668CFBEA3DF9FA8F095C8269EE604F06C0C5DDB86DAE8 │ │ │ │ │ -9F5CA614C30217C0D62FD46EAA550689CD0A1557567FBCEEB1D2E386FA4A3A02 │ │ │ │ │ -5AFCA051CFC8EFA1E67A457134B86F4298FC393223C0E50681B6ED7814DC2839 │ │ │ │ │ -409928096B962230CC4B0A8276F6AECFD55AE5AA6BFDA1A417ABDC5992705AC3 │ │ │ │ │ -AB2AC3612C1B242F673B737FEF27840C9478DE5B0B26DCD835C04F7E4A216BF1 │ │ │ │ │ -9D74D546FB80A6204297E99BD93D359F2C0E55C8E3B426E334209EAAC961D31D │ │ │ │ │ -4A560C8FC5549742B7C53955141E1E59735F0F9A210121C4646B484F05B28ED2 │ │ │ │ │ -6F28B620C39B4D745C404E6D1BFC7513DBA000CB09772A7B45C85135CCC979BA │ │ │ │ │ -C50F78043EC1FC0AFCA9B99F9E16A2BB52BD3D195BDD22B310B27E09B0FA0E7F │ │ │ │ │ -345EFD992F2283AAD7D033094B744990C79D88CF5BF5CC82D153CC80366C70CF │ │ │ │ │ -8F25D8C645D32E3C90CC3E2DEC5C351BE6B51B00EEE7B102915D9F142490E4BA │ │ │ │ │ -52763329B88C66D5F13CD1B992AA91CD245521D9F909A70F0C35A34ADCBC8C51 │ │ │ │ │ -E39C764472551367CA745991F11945F23F72348B12AD5A34B23271B6BF874DAA │ │ │ │ │ -EFD161554F1822B98AFC6163F719CC7D1890EA51C086C980EB13EA82B7D0FE84 │ │ │ │ │ -521A47FD04BCF39D81DCB5C5EFC29C742733BD83070BECF4A08EB471F7D7E860 │ │ │ │ │ -3742D5161E29D8F48248671CA72A9058A5F33326C5291F25052620D19537208B │ │ │ │ │ -764B741119D3813B6A3E05A6DBB5435B95325D3898F37E8635027D11AA23D677 │ │ │ │ │ -311B683C7EECE6B18784A6C6C880904900D06A5F5032A3D01D76E7771689B5E5 │ │ │ │ │ -A86444D9A43016FDE2A91445EF7A57F4CF33C5549BF98F5440EAEE3BF1B2D4FB │ │ │ │ │ -101DB46014687DCDE5086678043BA1DFB5BEA62DA894EC09CC6F4A2F86B326FF │ │ │ │ │ -B9FF802135E8A516DED60D1627DEC26B8D170007336809BC166E203CFAF033FD │ │ │ │ │ -0331C608D2F674C1DAD8E9D9D04ADAADFF787087404732049698603739499663 │ │ │ │ │ -28C02EEFCF4530BFC8481CA0768DE602E374EB3B60C995D1F88493A822126024 │ │ │ │ │ -37E55D6DEA76804CE192449D5474B988D2CF03E18ECDA86152DCF03A6259D746 │ │ │ │ │ -7D909FB665AD92BD1200705347A8D2DD8AB870A14EAB298CFB0004470E068ACC │ │ │ │ │ -2458FA88317BDB1A1F1AAFED01824012630F62CBEA41C94400F4E149111D66FB │ │ │ │ │ -F3D6E80ACAA1B6BBD91C145AB8759936FEDCF6AAEF170CF83FA5DFA0DEC852DB │ │ │ │ │ -B8CF5C8D8132DDB906AE42BF582BD6F70C398F1A04199D69394A816B579E46BA │ │ │ │ │ -95E6C2484A0830EE372ABD907368CB6D42230045E7AAA9C5F52369C96503D554 │ │ │ │ │ -16CF6D9C24AEECBBCA68F8A71A2586F8D62536FADF1891C67AA72E3170B1079B │ │ │ │ │ -6CF444D02D136E4BE3F56FF948A91267F3984ECD4CFE8F42B15F76129CFB2501 │ │ │ │ │ -B7A57AE8AE05037113AF8190E85042DF7FE18AA6A083DA2A5B24C3EA23B3EAB7 │ │ │ │ │ -ADD098EE9D39CA775D1C2DA02C62DE391C5F3C248F21625F1A25406D94F90701 │ │ │ │ │ -D7492965C167235B6DEE6F8FD7301FF9A8124FA195F22FBFB958CB68BB64A9EA │ │ │ │ │ -BE4B9D35547F94BB3ACD6E10AD632C7F9704381E6A21C0F3D82E7D03A2221080 │ │ │ │ │ -4E39F4DE8B771FD11133EE78E1EDD47A7E917D1E68FC088203A4595F1EE507E0 │ │ │ │ │ -5CDE853FF985897A02FEA7810706BEB4F9F0BEB611725CFA2FECB18E16E93874 │ │ │ │ │ -CFB338EF2D434B69E2DF4719C2185E70041F970E456D8FD23221FC366533EEB5 │ │ │ │ │ -ADF5DAF9472F29BD9A506AE92CFFF790 │ │ │ │ │ +2F3AD75524D5E58AE6AECB03D4CBFD830FB0F0780328B678652E55328E0BFCF2 │ │ │ │ │ +278479E7168F2FCE946A848E9AC0602F0FE1C9DF31A012574FB8B2ACC2214FCC │ │ │ │ │ +5F4B34C81506D94CC2B500B14544D2A74596A85B827C1376921947F8F10FC7A4 │ │ │ │ │ +61917FDA0AA725845222E69CC2397FAF8655A7B3FF11F1F6467697D4D57AC289 │ │ │ │ │ +7225E6E7ADBC2C3D433BD9276DAF1033717B95A323950A8822753CD8BD5B3014 │ │ │ │ │ +31F192BC693DEB1F6CF3704FB316C0BFFA4A058D7E0A250238D419CC48EA8950 │ │ │ │ │ +066E629626449751568F03E1436DFF3D88D3FC77C3A974843DBCF673317ABAC7 │ │ │ │ │ +FE23F77A341043CE4CB789A219DB882B9670AB79D70A3C8B6A0E582F66188923 │ │ │ │ │ +CA072E0E095303BA68DD66330552A146EF07CE7D511092B2997C9899966AC30D │ │ │ │ │ +044104601D767C0824234B3FBF4803CF3DC06C93373D49F57E07B8E66AA2F216 │ │ │ │ │ +F50DD9F2893D8D4BD1C3AC4DF7BD9151B7305B67CF807DC64905132F66CC0C47 │ │ │ │ │ +9F352E2FDDFB1A418D9B05F794358C8CB7B717949775A28411BCA2D2D414F96C │ │ │ │ │ +0F0FB2F57E2CCA56509F11AD49F3FA99CF5FCC6FE8B1770E7F92CE2FC319178A │ │ │ │ │ +51D2BB0815C9EB21277FEE4F29473F5BAD1A7096B7D213A6D617348CDF693EC1 │ │ │ │ │ +AD03233B543535E98147A949351308EAEADD346328AA555EF4942D3ABE30F61D │ │ │ │ │ +C856D1F0F735A0E45336614360C373287C399A829B1FAC18C72B4307F0E808D3 │ │ │ │ │ +1519EC64000E80A1F0D9D0B0C98DB190E72B361EF0EDF0476CC9BABE474AE3BE │ │ │ │ │ +0F91B5FE1CE385B2491A8240E3F34A60DB67FCF8E11D8DAA49ECD206538D9EFC │ │ │ │ │ +ADB02F899B2E8D46C3EA16DFE58B5A45D8936553331275A93FDB7790DDF87D31 │ │ │ │ │ +EF237A1BC4391DDB1788ACC5B16DBBEF8C0099A3DEAF2F4F48740A42FA338BE9 │ │ │ │ │ +D7D1F8B27D288E782C43F0A98AC775D0C62C44BAC3C817A122918F1555679FD6 │ │ │ │ │ +F2D26BF7AD8760A8C5D4534A466419D6C8C4BDBBF61DBEE73AFC8F3F59AEF97E │ │ │ │ │ +FF403A05B2AF1D7673DEDE5485C09D4B67E15255D02996187A448B093A9E41F4 │ │ │ │ │ +3E45251F046A6F6AADAD7DAD57528A3DDED1734D1612B3D842DF06E4FF2840E9 │ │ │ │ │ +88FDEE88570268A71E769CAA1334511EF57A428B536A4F0C4BE4B0B088BDAA6D │ │ │ │ │ +582FAA42C603FB2DBBFBA588C1DA00593E330EA755333AA9BF90EE3716757A3E │ │ │ │ │ +B011E176BA4BD74FFE0BE96EB8937DF1078EEE00973F2A7D7F152153C3585139 │ │ │ │ │ +F0509EB8DD1F6A8AF5B321D1550C15C0E40C5DAFD62D7C9AC7016260FA24AA3C │ │ │ │ │ +7345A0BAF89DA149E0274FE239694B50B63A95BD778F4BCCB91B891D8F7D44B0 │ │ │ │ │ +E057E0B0214FE875F9DF297CEA624984CDD770CBE45BCC0E435F8350551C7E70 │ │ │ │ │ +CEA7652A90EAB141051B1064CF569A259C896F7CE236D21673D0AF5C5B48457D │ │ │ │ │ +0B6C11832ED6D7443538971E9BDB1059A8893A113E1EE1D63A195C63F2C6677C │ │ │ │ │ +CCDE06BC0789BB56162AB9F75CA5DCFFB8E090BF6B83D4C5C4C9CBC3B746CE65 │ │ │ │ │ +5498B231DB3811CC21A44329CD05BB73CDF1FAB4473860D917CF8F08CB2B50C7 │ │ │ │ │ +9A39B6EF27EA837EDAF9DBBFC3BA772B007F1B71E2A7CE416FB5082D2AF2BD03 │ │ │ │ │ +6D81375636ADE57607DE72228665CE7FA2469940FB2D98BF0B525D35286766CD │ │ │ │ │ +BEFAB5BCA72D810050107D1193B3C752BF3A90513FF3A316108318D471BCE0D0 │ │ │ │ │ +A6CDB3B296EC986B4AB94EF89E042B62AA80294AA3347ABA341AF4CD5DB634B7 │ │ │ │ │ +5D1276A9AA2B3992BD1DEEADE2464D64451D7DABB607EFCC4AEDAF3DB3E40BE9 │ │ │ │ │ +E22DB99FD9C8B6369884FCD3930C6063C3BDF802EF881BF1731CC1561B901D0E │ │ │ │ │ +2EDFB32958CF055CA63523CEA0AF193C514ACE50EDC0789406C00EC899B7ECED │ │ │ │ │ +2A4456CE8F4AC619744892B9624D1B5DFED23EBC776F0333E9D115794580E984 │ │ │ │ │ +3C42D3B345CC4A3EA7EAF75133A943F978E4FB6B22356CFA0F9F24FF1C26214C │ │ │ │ │ +DD61EE4FAAAFFA64B7369C437607321D3E4CDA40C121BE4DFBE76CE35FB46FE4 │ │ │ │ │ +675199A69C71BF7E9C7C078A12D322B706625A07AA2336D58D514528BCD27C44 │ │ │ │ │ +8B980BCDF4AFF450539556253510BF7204EBDADED443AE6D3B118704BF19DC46 │ │ │ │ │ +A5BAF98B133401E83E3CC6B4EB00C8DCD66848A16BB509C2BD1ED5CFF3D593E4 │ │ │ │ │ +CBA41A73D3A841BE06717E52EEC6FD0B5F4EE69BE309C0D26FC4F9FE0F63265B │ │ │ │ │ +91E8492F7647D404493276DE06D8F8A2BDEE2BCB04440CD2985341B1D5252A05 │ │ │ │ │ +6A4F2621A6954317C0D9644BE786332122FCC1437CCF8FEBD10EAD3DC7E264D9 │ │ │ │ │ +19685FEB7556FC691D15C19B0050E2A21B9C6841F22A978E9D6D51064B31AE52 │ │ │ │ │ +E5438CB504A7C0C0C9502E9928A8B9B3D4FDF91F07CB50545137D754AF21D3FE │ │ │ │ │ +AF87F3B242E4FD5B5DBDCAEFD0716AFC0A259B7AFC23B5E4117670459979D50E │ │ │ │ │ +A5CD6D58B013A1841E9DCC03ED177229E92277415ED70DA16B3EDC54AC680224 │ │ │ │ │ +8154A569D2F323F62AD6EDEF1EE56D2E25F1766D91D02DA951336995D2142F5B │ │ │ │ │ +91B9371CF8BDCB7A611D34A672BF65EBDEEA7CB447EC6182BF7654262C9CD4FF │ │ │ │ │ +5AE098E45B3278A71416929035BB5CF60889C193054F24A40F08B9F383B1AA0A │ │ │ │ │ +9B11F3C835B3049255892611C3BCA71EE2970A8435B5967CC7A116E097AA990B │ │ │ │ │ +9677F5D571551C4852ED570ECEBD74DC620FDCDCC732EEB97655C7CD925F180E │ │ │ │ │ +5EAD901F894FF6001F2152E5F167E6A88F53B249E4D7790907E579294E41379B │ │ │ │ │ +47F3B2F15350AFEAD7469906C91EE5A00FDBA2A6ADBE35BB80F84431FE65BC3B │ │ │ │ │ +CE6F639E78C46CCCD707C8021FA0E3D26C56EBDADAFF64ADD49513FC7A7D36DF │ │ │ │ │ +4B3E8ACABF946E5CDE59651438418756378248197947933A05E40C3B673D8E2B │ │ │ │ │ +6E1DDE9734D585F85EF695027F836854BC4C237A67AB11CA624F91E8A10121C1 │ │ │ │ │ +B46EC8A072D36494476AD63945C1BA960239637BCEA30F88A93E9A03A77FE81C │ │ │ │ │ +16C772447A8F0D873FD9CC69EED2D7B0E402A57E07DDE115DA454D289430225A │ │ │ │ │ +B243A1EFC227766C878EC705BA542A1C09BD8E89F50A87D4966CC4F3F02E3B87 │ │ │ │ │ +51E078F4F9C81EFB29A47380FA166757E4F3E7D6D93FDCF47790501E5200F7AE │ │ │ │ │ +5AD68108F1EE42E829C2EE62D9291E1F83C522C274CDA2FC2286C556E9F16015 │ │ │ │ │ +190374E3A617F757A11801F9532FE7A1EFCE32366AD78D1A79387A424BBDEFFE │ │ │ │ │ +7B9E2878F12C6E399F3CFAD85B4B5EBAB501BEA9809E05E9DD16DFBBD382DA92 │ │ │ │ │ +6EF66BF99BF4728CFCD4B2EF279AD3E92E542E8BA3964A60FFA5C6A18326F65A │ │ │ │ │ +EC0B1FFBE4B2D2B41DD40868F64D17D831785560D2E1DE0E9FB8A439F43D3ED4 │ │ │ │ │ +6B675906A601761E0FB78E9AEDF619623A52EF37B49F7A1B500EEA220077ACF1 │ │ │ │ │ +5A079619BEE17BF0F8FD5914B444B08C03647D096CB23866B756F40573722C3F │ │ │ │ │ +775BCBF9470AB8546840CB7D2264438660461696A55077C7300F05F110B8E22E │ │ │ │ │ +5ABC034DA99AA032027C6862DD374976E1477037FE7C0BC6FC1F3C240942FC37 │ │ │ │ │ +3DED96DEAA713C3A247873E7ED9B23E2021C48AE9C1CA9D208FFFDD559487BC6 │ │ │ │ │ +3EA90B28BA3C2A1B150765BA5359419A1DDA4B4874C37BCBCD5CC09823D645AC │ │ │ │ │ +C0377A1EA33994D449B9DBF0147D9DE9979634A81ECF5A229D2BB7C2FCDBDD1D │ │ │ │ │ +E66DFABA25B8102A2F85C5A414FF853B878818CE2BF870F55C9FEBC2B0EAD7F1 │ │ │ │ │ +729DF7519A40AA2BDE7D4040F33509A531B36DF7CA304CEAB3E2A1AB2AD9AE52 │ │ │ │ │ +5E0A01A0DFCD1C75361BEABE6BD7E751A9712C3C8997D9D105E810FC9014B41E │ │ │ │ │ +749DFB7101DABF7B53D82CED8A719F9AA7D5B451DB53DD7E1064B3A1BA2AF797 │ │ │ │ │ +646C52CEF17DBDC04E12DB35D372800E5041DFA748987F6E91711C71CF630078 │ │ │ │ │ +EA2FB74B87A9CC93AEDBCAD5A38DAF99522D69CB2EEA53B6A73206C2349172E1 │ │ │ │ │ +BA03F9774B4A21186B8FB2E13360896C9516A7C441AA14C45C8C8BADA7A2F649 │ │ │ │ │ +F9CCD770142269C82C2B19F7726847F50A32499FBD5E4938374970C3751A925A │ │ │ │ │ +4999EC151FBF56E6DE8AC06F4774DA398747A15281C84263D6F849C328F9447C │ │ │ │ │ +A797FABE7729075D3C66EC0ABBDC94E23A4A4CBE8BD0C882D845FC8986FBC74D │ │ │ │ │ +7DD6AA26539074125DE817EC3FCDB551FC1D738DA69146372D9E3271C6212D17 │ │ │ │ │ +669408FF35A1302110BC552EF2A3CDD4D14064489F54EB44865457FACC95C3AE │ │ │ │ │ +D4BF36E5AF30F49972C9F11037F9045CCD24CBE6CD47AA3C0B7BFC576A58111A │ │ │ │ │ +FBA81822F0F21F09C3A7F7F2835B9309A82CEA92576552117FE414932FAB1167 │ │ │ │ │ +90ECD29C12F16706D944DC43FC349EC804B3A739D40C9778B451C4AC8DA9DBF4 │ │ │ │ │ +772438568327B710F7BA7AF2122F3FDAAA904F0B8CA7AABC8E14586EBA105D63 │ │ │ │ │ +14D967D2AE941C449051CD44316B484C873D5D3F8A60A0CB9449057C6272C621 │ │ │ │ │ +3005430042F86F4A91D6209B36D669969D173CFD9F30EDF963F664196664014E │ │ │ │ │ +9AF06FBC36179E60C150054C94C64D82B744460D6117D67D0922A78D1553282E │ │ │ │ │ +3ED0D445BC901A26DACCCC98822299C678E74A909D0F4687E16ACFED890D4DA4 │ │ │ │ │ +5C02C9A90EDDB065A60D41669B9996682B19C3799784C139ED52F2A3AD3C541F │ │ │ │ │ +DD18EF0E64F1B497B85BEC60669DD79CFD05671B2F8217EC3EF5F32E1437E10C │ │ │ │ │ +73AA806B9C466BE1540436EF64CEB915C41C7FE38CCC7BA6CB58B890E8C20C4A │ │ │ │ │ +A8E1158D394AEAC82672F0CF63D84F7A36CD6C0CF3FAB3B71EE04CE56353F774 │ │ │ │ │ +8AC8A61A9D51A49DF157FA1A59EECD5A41D8383270D42D8E53AA2C8149B0FA58 │ │ │ │ │ +B4F6B77AE117079D2BBBC60B3C9BE6051708A0D813599167AB7B16BE4F6F66FC │ │ │ │ │ +76A446BE02725A26EA33D043E8C12ECCD3CA57F3581E25ECBDEE061ED17A8578 │ │ │ │ │ +411130C6ACF00A7FAB10D469A3CB8DBEA74DE3E95FFC585AC9FA032BB6DDCB72 │ │ │ │ │ +9DC57F48D6A55B612A67D2F5A6F86FFB0578F026D9D4D48CF039F2C140448547 │ │ │ │ │ +81387D5C6F85AC53299E6797E88A58803B2739B7A5035F91D705782977ADF4DE │ │ │ │ │ +7E3EBFE6D9DB2F954A6B8ECD30B37D6A6EB41D3EDECC941576CA36E1284C79CC │ │ │ │ │ +610CB056B14B086F972FCF795DEF11452FA2F6C1A3FB9D9331839B1FCBE4B80E │ │ │ │ │ +A95D54A1AF07977026E360CAE6E7ADCDFA0984DB4F6DB507A87D62808F335CD2 │ │ │ │ │ +66E0D6CEA173AB22FBE1C0BD3C36EA5A3841000CFD1E6DF345DAAB2FDDB6AB86 │ │ │ │ │ +79707E346513216DD6A9438172A63BA44E5CC96ABADCF8B4D38A3F80107A4372 │ │ │ │ │ +494C70B6520E59FAFB4F9C1213035CE06D62B07FFF35DC1772902DD98B38E85B │ │ │ │ │ +94B2B2DE6F852B9559C8BB28B571578E6AB65B9982438A125B7B50BB6D9874D7 │ │ │ │ │ +4B84B50E8CB2B8251B8B01B74ED71435594764AA16DB6A68A409C34B42BAA7D0 │ │ │ │ │ +AEFE2A94238BACC08EA9F18F3E02A25C12D4C5353F758851B06FB3204B792B43 │ │ │ │ │ +BD085D4A94BBB1BB4A3200B92FA3E486C6B515F5CBB78EFD80436D52B99A7F9B │ │ │ │ │ +565DCD821889FF561FCF38588D6FD4C250DFD5BA3EACDD7563B654579AC1F132 │ │ │ │ │ +768254E5A1FAAF61B5AEA873A92458E518AA8C95FB56648F31AE991C62DB35E6 │ │ │ │ │ +909D6FB8C3DA08C9C6DE8410A771DD2874582CD8720CE94B69EB33C0444A5BA9 │ │ │ │ │ +663563B493300E801F304E5795F730738A5CEFF7316C6255BBF85DD822F04332 │ │ │ │ │ +92F1A69B3D7758A336EB2BA373521464F7201C34A1A105D48A1F6205F4014E6A │ │ │ │ │ +C4195AFBA5AADBD8B22298DFBEC78BC36FDBD8D6D0343973F3B3AC2D725340B5 │ │ │ │ │ +4EEF328EC0A96BF469855BEBBFBCA504388C3357DEA51E6987CCD924EEC65222 │ │ │ │ │ +0454E9DE2EAB501706E14C9C2DD1F7A2B9CEC109F19E103AD5A0EB325AD7D0FF │ │ │ │ │ +D9683426411D114AD84A4A2148E2BE5E3C53C5BC5EB439B8E9B2D37E17EE58F0 │ │ │ │ │ +DA1162EF3AA7C134F79D83A8DEA53DEBAEFF5BD3D9FCF1F86E21ED7390F47D63 │ │ │ │ │ +203A876ACE023576D18D7889C843020887F3103F5A8FDEE4246379D7990C0AD6 │ │ │ │ │ +F156D77779C6CD71E783513C444B1076069E77BD1CAA12E0D68D259B2F7BA686 │ │ │ │ │ +96AC2129BB2B9C08A5C7982B96CC26F0143CA90D2B5FE28D2FF9CCED223BCFF9 │ │ │ │ │ +909FCCC22E84C74BF7CC5C16969E458C92ABFBF4DE4F5FE12F2CEA3243A688CA │ │ │ │ │ +27E116E750C56F9C600C9A0A53C9B13EF7F0D4A9274B0B37FFA5656628AD02E1 │ │ │ │ │ +52DD3F041DD782E6E8C81496573C877A92321161224BAC8620B978B3B9EBD78E │ │ │ │ │ +72623B4F22E72BD8FAE24C98353BDFA7D7306343CE95186FBC4AC7D5F84C2BCD │ │ │ │ │ +06B9C3CB8AB84D759E113EEFE472AFFCB5286DF3F501C05CB783B3093A0DF971 │ │ │ │ │ +93863B7B0091AF8221C08065246269D877439A4DDCADAA93BC09CF92225C679B │ │ │ │ │ +31A93D54F24714B08C3CAA9BA59411A33A0AD0BBC8A8C252B14D6A24B0E15E92 │ │ │ │ │ +D4A4D63EC9131A7B06963D4D26AF5DAA9BD010F92790A07975DC9964119489AA │ │ │ │ │ +3573649ACF0EA377B93CD9B4241CD0A452998BF19710F8C0DB99419C34CABC99 │ │ │ │ │ +017669040C7D4A1CD2668593D3F8C16E98D9403441C59B4564F0CE09BCCD4B95 │ │ │ │ │ +3E0EDE2713C5E00A477982FDB0B0DD7E16E2D16DC370BA3214759C2EEA32C544 │ │ │ │ │ +A0023788747A67CEFFEFE375FF2C9F70D6D9D4B4B9F2572EFCEE93CD5B85DD09 │ │ │ │ │ +E7620EFA2AFF48F7C644E583642AEC73AD50FDDFE478A1FC3A55CCD692108763 │ │ │ │ │ +F2B915F7C9C058941FC355F8DAAC198E5F66C16CB4D1235BA8467FFAC7DE8221 │ │ │ │ │ +486BFEC6A7C1F40EC3D654B53BD1F447FAC21B882AB54DEFA685DE426EA00E9E │ │ │ │ │ +0DF76DBE1A57F815B73CF7B89A375B3CF6DDB588BD23ED71679799A01DBF6486 │ │ │ │ │ +6538F87342A635770D7E2D6E9F63853E9AC846620D1A1D88D663D36EFA9A36A9 │ │ │ │ │ +308E125BC3430DBD215C6415A47B8729A6D78C8D4AB4F49E5632C5C64D2919CD │ │ │ │ │ +2E5CE6BE025C018EC8F9B27AB46AD1DA96CE4970478536CBEB3A4CFA0715BFAB │ │ │ │ │ +AE85095EB4E9734C21F5EDAF47173A4A649207DEB6E9064034 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -7531,18 +7519,18 @@ │ │ │ │ │ 44 44 44 44 44 44 44 44 44 44 44 1[44 1[44 1[44 3[44 │ │ │ │ │ 44 44 44 44 44 1[44 44 44 44 44 2[44 44 44 44 44 44 1[44 │ │ │ │ │ 44 2[44 44 1[44 44 44 44 44 44 44 44 44 44 44 44 44 44 │ │ │ │ │ 44 44 1[44 44 44 2[44 37[{}70 83.022 /CMTT10 rf /Fh 141[51 │ │ │ │ │ 1[51 7[51 6[51 25[51 71[{}5 99.6264 /CMTT12 rf /Fi 135[59 │ │ │ │ │ 2[62 44 44 46 1[62 56 62 93 31 1[34 31 62 56 34 51 62 │ │ │ │ │ 50 62 54 10[85 1[78 62 84 11[70 2[81 1[85 11[56 56 56 │ │ │ │ │ -56 56 2[31 46[{}33 99.6264 /CMBX12 rf /Fj 134[44 4[32 │ │ │ │ │ -33 33 2[42 46 4[23 1[42 1[37 46 2[42 12[60 4[65 1[76 │ │ │ │ │ -6[54 17[42 1[42 42 42 3[23 44[{}20 83.022 /CMSL10 rf │ │ │ │ │ -/Fk 133[31 37 37 51 37 39 27 28 28 1[39 35 39 59 20 2[20 │ │ │ │ │ +56 56 2[31 46[{}33 99.6264 /CMBX12 rf /Fj 138[46 32 33 │ │ │ │ │ +33 2[42 46 4[23 1[42 1[37 46 2[42 12[60 4[65 4[43 3[54 │ │ │ │ │ +16[42 1[42 42 1[42 3[23 44[{}20 83.022 /CMSL10 rf /Fk │ │ │ │ │ +133[31 37 37 51 37 39 27 28 28 1[39 35 39 59 20 2[20 │ │ │ │ │ 39 35 22 31 39 31 39 35 9[72 53 1[51 39 52 1[48 55 1[65 │ │ │ │ │ 44 2[25 53 3[54 51 50 53 3[55 3[35 35 35 35 35 35 35 │ │ │ │ │ 35 35 35 1[20 24 20 31[39 12[{}53 66.4176 /CMR8 rf │ │ │ │ │ %DVIPSBitmapFont: Fl tcrm0600 6 1 │ │ │ │ │ /EN0 load IEn S/IEn X FBB FMat/FMat[0.02 0 0 -0.02 0 │ │ │ │ │ 0]N/FBB[-11 -15 87 40]N │ │ │ │ │ /Fl 1 43 df<006000007000006000006000406020E06070F861F07E67E01FFF8007FE00 │ │ │ │ │ @@ -7572,17 +7560,17 @@ │ │ │ │ │ /Ft 1 43 df<000C0000001E0000001E0000001E0000001E0000001E0000601E0180781E │ │ │ │ │ 0780FC0C0FC07F0C3F803F8C7F0007CCF80001FFE000007F8000001E0000007F800001FF │ │ │ │ │ E00007CCF8003F8C7F007F0C3F80FC0C0FC0781E0780601E0180001E0000001E0000001E │ │ │ │ │ 0000001E0000001E0000000C00001A1D7C9E23>42 D E │ │ │ │ │ /Ft load 0 Ft currentfont 66.6667 scalefont put/FMat │ │ │ │ │ X/FBB X/IEn X │ │ │ │ │ %EndDVIPSBitmapFont │ │ │ │ │ -/Fu 134[51 2[51 54 38 38 38 1[54 49 54 1[27 2[27 54 49 │ │ │ │ │ -30 43 54 43 1[49 13[54 5[89 5[77 3[70 69 73 12[49 1[49 │ │ │ │ │ -49 49 3[27 44[{}29 99.6264 /CMR12 rf /Fv 139[51 52 51 │ │ │ │ │ +/Fu 137[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 11[49 1[49 49 │ │ │ │ │ +1[49 3[27 44[{}28 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 │ │ │ │ │ @@ -7593,15 +7581,15 @@ │ │ │ │ │ %%EndPaperSize │ │ │ │ │ end │ │ │ │ │ %%EndSetup │ │ │ │ │ %%Page: 1 1 │ │ │ │ │ TeXDict begin 1 0 bop 333 739 a Fv(Ordering)44 b(Sparse)f(Matrices)g │ │ │ │ │ (and)h(T)-11 b(ransforming)41 b(F)-11 b(ron)l(t)43 b(T)-11 │ │ │ │ │ b(rees)958 1023 y Fu(Clev)m(e)35 b(Ashcraft,)e(Bo)s(eing)f(Shared)i │ │ │ │ │ -(Services)g(Group)2942 987 y Ft(*)1689 1261 y Fu(Ma)m(y)f(1,)f(2024)0 │ │ │ │ │ +(Services)g(Group)2942 987 y Ft(*)1681 1261 y Fu(June)f(3,)g(2025)0 │ │ │ │ │ 1923 y Fs(1)135 b(In)l(tro)t(duction)0 2165 y Fr(If)38 │ │ │ │ │ b(the)g(ultimate)g(goal)f(is)g(to)h(solv)n(e)e(linear)h(systems)g(of)h │ │ │ │ │ (the)g(form)f Fq(AX)46 b Fr(=)40 b Fq(B)t Fr(,)g(one)d(m)n(ust)h │ │ │ │ │ (compute)g(an)f Fq(A)j Fr(=)g Fq(LD)r(U)9 b Fr(,)0 2264 │ │ │ │ │ y Fq(A)25 b Fr(=)e Fq(U)241 2234 y Fp(T)294 2264 y Fq(D)r(U)37 │ │ │ │ │ b Fr(or)27 b Fq(A)e Fr(=)f Fq(U)803 2234 y Fp(H)865 2264 │ │ │ │ │ y Fq(D)r(U)38 b Fr(factorization,)27 b(dep)r(ending)i(on)f(whether)g │ │ │ │ │ @@ -7681,16 +7669,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 1930 │ │ │ │ │ -4 v 2123 w(Ma)n(y)27 b(1,)g(2024)0 390 y Fs(2)135 b(Sparse)45 │ │ │ │ │ +b(and)h(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1442 100 1917 │ │ │ │ │ +4 v 2110 w(June)28 b(3,)f(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 │ │ │ │ │ @@ -7793,16 +7781,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(Ma)n(y)27 b(1,)g(2024)p │ │ │ │ │ -528 100 1958 4 v 2121 w(Orderings)f(and)i(F)-7 b(ron)n(t)27 │ │ │ │ │ +TeXDict begin 3 2 bop 0 100 a Fj(June)27 b(3,)h(2025)p │ │ │ │ │ +541 100 1945 4 v 2108 w(Orderings)e(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 │ │ │ │ │ @@ -7855,40 +7843,40 @@ │ │ │ │ │ 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 1930 │ │ │ │ │ -4 v 2123 w(Ma)n(y)27 b(1,)g(2024)125 390 y Ff(\210)42 │ │ │ │ │ -b Fr(generalized)26 b(nested)h(dissection,)125 571 y │ │ │ │ │ -Ff(\210)42 b Fr(m)n(ultisection,)27 b(and)125 752 y Ff(\210)42 │ │ │ │ │ -b Fr(the)28 b(b)r(etter)g(of)f(generalized)f(nested)i(dissection)f(and) │ │ │ │ │ -h(m)n(ultisection.)0 954 y(Minim)n(um)g(degree)f(tak)n(es)f(the)i │ │ │ │ │ -(least)f(amoun)n(t)h(of)f(CPU)h(time.)37 b(Generalized)27 │ │ │ │ │ -b(nested)g(dissection)h(and)f(m)n(ultisection)h(b)r(oth)0 │ │ │ │ │ -1054 y(require)c(the)i(a)e(partition)h(of)g(the)h(graph,)e(whic)n(h)i │ │ │ │ │ -(can)e(b)r(e)i(m)n(uc)n(h)f(more)f(exp)r(ensiv)n(e)h(to)g(compute)g │ │ │ │ │ -(than)h(a)e(minim)n(um)i(degree)0 1153 y(ordering.)34 │ │ │ │ │ -b(By)25 b(and)f(large,)g(for)g(larger)f(graphs)g(nested)i(dissection)f │ │ │ │ │ -(generates)f(b)r(etter)i(orderings)e(than)i(minim)n(um)g(degree,)0 │ │ │ │ │ -1253 y(and)j(the)g(di\013erence)f(in)h(qualit)n(y)f(increases)f(as)h │ │ │ │ │ -(the)i(graph)d(size)h(increases.)36 b(Multisection)28 │ │ │ │ │ -b(is)g(an)f(ordering)f(whic)n(h)i(almost)0 1353 y(all)34 │ │ │ │ │ -b(the)g(time)g(do)r(es)g(ab)r(out)g(as)f(w)n(ell)h(as)f(the)i(b)r │ │ │ │ │ -(etter)f(of)g(nested)g(dissection)g(and)f(minim)n(um)i(degree.)55 │ │ │ │ │ -b(The)34 b(user)f(should)0 1452 y(kno)n(w)27 b(their)g(problem)g(and)h │ │ │ │ │ -(c)n(ho)r(ose)e(the)i(ordering.)35 b(Here)28 b(are)e(some)h(rules)g(of) │ │ │ │ │ -h(th)n(um)n(b.)125 1654 y Ff(\210)42 b Fr(If)22 b(the)h(matrix)f(size)g │ │ │ │ │ -(is)g(small)g(to)g(mo)r(derate)f(in)i(size,)g(sa)n(y)e(up)i(to)f │ │ │ │ │ -(10,000)e(ro)n(ws)h(and)h(columns,)h(use)f(minim)n(um)h(degree.)208 │ │ │ │ │ -1754 y(The)34 b(extra)g(ordering)e(time)j(for)f(nested)h(dissection)f │ │ │ │ │ -(or)f(m)n(ultisection)i(ma)n(y)e(not)i(mak)n(e)e(up)i(for)f(an)n(y)g │ │ │ │ │ -(decrease)f(in)208 1854 y(factor)26 b(or)h(solv)n(e)f(time.)125 │ │ │ │ │ +b(and)h(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1442 100 1917 │ │ │ │ │ +4 v 2110 w(June)28 b(3,)f(2025)125 390 y Ff(\210)42 b │ │ │ │ │ +Fr(generalized)26 b(nested)h(dissection,)125 571 y Ff(\210)42 │ │ │ │ │ +b Fr(m)n(ultisection,)27 b(and)125 752 y Ff(\210)42 b │ │ │ │ │ +Fr(the)28 b(b)r(etter)g(of)f(generalized)f(nested)i(dissection)f(and)h │ │ │ │ │ +(m)n(ultisection.)0 954 y(Minim)n(um)g(degree)f(tak)n(es)f(the)i(least) │ │ │ │ │ +f(amoun)n(t)h(of)f(CPU)h(time.)37 b(Generalized)27 b(nested)g │ │ │ │ │ +(dissection)h(and)f(m)n(ultisection)h(b)r(oth)0 1054 │ │ │ │ │ +y(require)c(the)i(a)e(partition)h(of)g(the)h(graph,)e(whic)n(h)i(can)e │ │ │ │ │ +(b)r(e)i(m)n(uc)n(h)f(more)f(exp)r(ensiv)n(e)h(to)g(compute)g(than)h(a) │ │ │ │ │ +e(minim)n(um)i(degree)0 1153 y(ordering.)34 b(By)25 b(and)f(large,)g │ │ │ │ │ +(for)g(larger)f(graphs)g(nested)i(dissection)f(generates)f(b)r(etter)i │ │ │ │ │ +(orderings)e(than)i(minim)n(um)g(degree,)0 1253 y(and)j(the)g │ │ │ │ │ +(di\013erence)f(in)h(qualit)n(y)f(increases)f(as)h(the)i(graph)d(size)h │ │ │ │ │ +(increases.)36 b(Multisection)28 b(is)g(an)f(ordering)f(whic)n(h)i │ │ │ │ │ +(almost)0 1353 y(all)34 b(the)g(time)g(do)r(es)g(ab)r(out)g(as)f(w)n │ │ │ │ │ +(ell)h(as)f(the)i(b)r(etter)f(of)g(nested)g(dissection)g(and)f(minim)n │ │ │ │ │ +(um)i(degree.)55 b(The)34 b(user)f(should)0 1452 y(kno)n(w)27 │ │ │ │ │ +b(their)g(problem)g(and)h(c)n(ho)r(ose)e(the)i(ordering.)35 │ │ │ │ │ +b(Here)28 b(are)e(some)h(rules)g(of)h(th)n(um)n(b.)125 │ │ │ │ │ +1654 y Ff(\210)42 b Fr(If)22 b(the)h(matrix)f(size)g(is)g(small)g(to)g │ │ │ │ │ +(mo)r(derate)f(in)i(size,)g(sa)n(y)e(up)i(to)f(10,000)e(ro)n(ws)h(and)h │ │ │ │ │ +(columns,)h(use)f(minim)n(um)h(degree.)208 1754 y(The)34 │ │ │ │ │ +b(extra)g(ordering)e(time)j(for)f(nested)h(dissection)f(or)f(m)n │ │ │ │ │ +(ultisection)i(ma)n(y)e(not)i(mak)n(e)e(up)i(for)f(an)n(y)g(decrease)f │ │ │ │ │ +(in)208 1854 y(factor)26 b(or)h(solv)n(e)f(time.)125 │ │ │ │ │ 2035 y Ff(\210)42 b Fr(If)31 b(the)h(matrix)e(size)h(comes)g(from)g(a)f │ │ │ │ │ (partial)h(di\013eren)n(tial)g(equation)f(that)i(has)e(sev)n(eral)g │ │ │ │ │ (degrees)g(of)h(freedom)f(at)h(a)208 2134 y(grid)26 b(p)r(oin)n(t,)i │ │ │ │ │ (use)g(m)n(ultisection)f(or)g(nested)h(dissection,)f(no)g(matter)h(the) │ │ │ │ │ g(size.)125 2315 y Ff(\210)42 b Fr(If)28 b(the)g(target)e(is)i(a)f │ │ │ │ │ (parallel)f(factorization,)h(use)g(nested)h(dissection.)125 │ │ │ │ │ 2496 y Ff(\210)42 b Fr(F)-7 b(or)25 b(2-D)g(problems,)h(minim)n(um)g │ │ │ │ │ @@ -7935,16 +7923,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(Ma)n(y)27 b(1,)g(2024)p │ │ │ │ │ -528 100 1958 4 v 2121 w(Orderings)f(and)i(F)-7 b(ron)n(t)27 │ │ │ │ │ +TeXDict begin 5 4 bop 0 100 a Fj(June)27 b(3,)h(2025)p │ │ │ │ │ +541 100 1945 4 v 2108 w(Orderings)e(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 │ │ │ │ │ @@ -8015,20 +8003,20 @@ │ │ │ │ │ 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 1930 │ │ │ │ │ -4 v 2123 w(Ma)n(y)27 b(1,)g(2024)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(and)h(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1442 100 1917 │ │ │ │ │ +4 v 2110 w(June)28 b(3,)f(2025)125 390 y Fr(Let)33 b(us)g(no)n(w)f(lo)r │ │ │ │ │ +(ok)h(at)g(a)g(random)f(triangulation)g(of)h(a)g(unit)g(cub)r(e.)54 │ │ │ │ │ +b(This)34 b(matrix)e(has)h(13824)e(ro)n(ws)g(and)i(columns.)0 │ │ │ │ │ +490 y(Eac)n(h)28 b(face)h(of)g(the)h(cub)r(e)g(has)f(a)g(22)18 │ │ │ │ │ +b Fo(\002)h Fr(22)29 b(regular)e(grid)i(of)g(p)r(oin)n(ts.)42 │ │ │ │ │ b(The)29 b(remainder)g(of)g(the)h(v)n(ertices)e(are)g(placed)h(in)h │ │ │ │ │ (the)0 589 y(in)n(terior)c(using)i(quasi-random)d(p)r(oin)n(ts,)j(and)f │ │ │ │ │ (the)h(Delauney)g(triangulation)e(is)i(computed.)1189 │ │ │ │ │ 779 y(minim)n(um)g(degree)620 b(nested)28 b(dissection)673 │ │ │ │ │ 878 y(seed)100 b(CPU)f(#)28 b(en)n(tries)297 b(#)27 b(ops)99 │ │ │ │ │ b(CPU)h(#)28 b(en)n(tries)296 b(#)28 b(ops)618 978 y(10101)170 │ │ │ │ │ b(9.2)143 b(5783892)97 b(6119141542)126 b(27.8)142 b(3410222)96 │ │ │ │ │ @@ -8092,16 +8080,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(Ma)n(y)27 b(1,)g(2024)p │ │ │ │ │ -528 100 1958 4 v 2121 w(Orderings)f(and)i(F)-7 b(ron)n(t)27 │ │ │ │ │ +TeXDict begin 7 6 bop 0 100 a Fj(June)27 b(3,)h(2025)p │ │ │ │ │ +541 100 1945 4 v 2108 w(Orderings)e(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 │ │ │ │ │ @@ -8977,16 +8965,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 1930 │ │ │ │ │ -4 v 2123 w(Ma)n(y)27 b(1,)g(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 1917 │ │ │ │ │ +4 v 2110 w(June)28 b(3,)f(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 { │ │ │ │ │ @@ -9436,16 +9424,16 @@ │ │ │ │ │ grestore │ │ │ │ │ │ │ │ │ │ showpage │ │ │ │ │ │ │ │ │ │ %%EndDocument │ │ │ │ │ @endspecial eop end │ │ │ │ │ %%Page: 9 9 │ │ │ │ │ -TeXDict begin 9 8 bop 0 100 a Fj(Ma)n(y)27 b(1,)g(2024)p │ │ │ │ │ -528 100 1958 4 v 2121 w(Orderings)f(and)i(F)-7 b(ron)n(t)27 │ │ │ │ │ +TeXDict begin 9 8 bop 0 100 a Fj(June)27 b(3,)h(2025)p │ │ │ │ │ +541 100 1945 4 v 2108 w(Orderings)e(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 │ │ │ │ │ @@ -9524,21 +9512,21 @@ │ │ │ │ │ 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 1889 │ │ │ │ │ -4 v 2081 w(Ma)n(y)27 b(1,)g(2024)0 489 y Fr(Figure)22 │ │ │ │ │ -b(4:)35 b(T)-7 b(op:)34 b(v)n(ertex)22 b(elimination)h(tree)g(with)g │ │ │ │ │ -(the)h(v)n(ertices)e(mapp)r(ed)h(to)g(the)h(fundamen)n(tal)f(sup)r │ │ │ │ │ -(erno)r(de)g(that)g(con)n(tains)0 589 y(them.)37 b(Bottom:)g(fundamen)n │ │ │ │ │ -(tal)28 b(sup)r(erno)r(de)f(tree.)450 3696 y @beginspecial │ │ │ │ │ -0 @llx 0 @lly 600 @urx 600 @ury 3600 @rwi 3600 @rhi @setspecial │ │ │ │ │ +b(and)j(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1484 100 1876 │ │ │ │ │ +4 v 2068 w(June)28 b(3,)f(2025)0 489 y Fr(Figure)22 b(4:)35 │ │ │ │ │ +b(T)-7 b(op:)34 b(v)n(ertex)22 b(elimination)h(tree)g(with)g(the)h(v)n │ │ │ │ │ +(ertices)e(mapp)r(ed)h(to)g(the)h(fundamen)n(tal)f(sup)r(erno)r(de)g │ │ │ │ │ +(that)g(con)n(tains)0 589 y(them.)37 b(Bottom:)g(fundamen)n(tal)28 │ │ │ │ │ +b(sup)r(erno)r(de)f(tree.)450 3696 y @beginspecial 0 │ │ │ │ │ +@llx 0 @lly 600 @urx 600 @ury 3600 @rwi 3600 @rhi @setspecial │ │ │ │ │ %%BeginDocument: fsvtree.eps │ │ │ │ │ %!PS-Adobe-2.0 EPSF-1.2 │ │ │ │ │ %%BoundingBox: 0 0 600 600 │ │ │ │ │ /CSH { │ │ │ │ │ % │ │ │ │ │ % center show a string │ │ │ │ │ % │ │ │ │ │ @@ -10327,16 +10315,16 @@ │ │ │ │ │ grestore │ │ │ │ │ │ │ │ │ │ showpage │ │ │ │ │ │ │ │ │ │ %%EndDocument │ │ │ │ │ @endspecial eop end │ │ │ │ │ %%Page: 11 11 │ │ │ │ │ -TeXDict begin 11 10 bop 0 100 a Fj(Ma)n(y)27 b(1,)g(2024)p │ │ │ │ │ -528 100 1916 4 v 2080 w(Orderings)f(and)h(F)-7 b(ron)n(t)27 │ │ │ │ │ +TeXDict begin 11 10 bop 0 100 a Fj(June)27 b(3,)h(2025)p │ │ │ │ │ +541 100 1904 4 v 2067 w(Orderings)e(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 │ │ │ │ │ @@ -10680,22 +10668,22 @@ │ │ │ │ │ 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 1889 │ │ │ │ │ -4 v 2081 w(Ma)n(y)27 b(1,)g(2024)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 │ │ │ │ │ +b(and)j(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1484 100 1876 │ │ │ │ │ +4 v 2068 w(June)28 b(3,)f(2025)0 864 y Fr(Figure)33 b(6:)48 │ │ │ │ │ +b(T)-7 b(op:)49 b(fundamen)n(tal)33 b(sup)r(erno)r(de)g(tree)h(with)g │ │ │ │ │ +(the)f(sup)r(erno)r(des)g(mapp)r(ed)h(to)g(the)f(amalgamated)f(sup)r │ │ │ │ │ +(erno)r(de)0 964 y(that)c(con)n(tains)f(them.)37 b(Bottom:)g │ │ │ │ │ +(amalgamated)25 b(sup)r(erno)r(de)j(tree.)450 4071 y │ │ │ │ │ +@beginspecial 0 @llx 0 @lly 600 @urx 600 @ury 3600 @rwi │ │ │ │ │ +3600 @rhi @setspecial │ │ │ │ │ %%BeginDocument: amvtree.eps │ │ │ │ │ %!PS-Adobe-2.0 EPSF-1.2 │ │ │ │ │ %%BoundingBox: 0 0 600 600 │ │ │ │ │ /CSH { │ │ │ │ │ % │ │ │ │ │ % center show a string │ │ │ │ │ % │ │ │ │ │ @@ -11296,16 +11284,16 @@ │ │ │ │ │ grestore │ │ │ │ │ │ │ │ │ │ showpage │ │ │ │ │ │ │ │ │ │ %%EndDocument │ │ │ │ │ @endspecial eop end │ │ │ │ │ %%Page: 13 13 │ │ │ │ │ -TeXDict begin 13 12 bop 0 100 a Fj(Ma)n(y)27 b(1,)g(2024)p │ │ │ │ │ -528 100 1916 4 v 2080 w(Orderings)f(and)h(F)-7 b(ron)n(t)27 │ │ │ │ │ +TeXDict begin 13 12 bop 0 100 a Fj(June)27 b(3,)h(2025)p │ │ │ │ │ +541 100 1904 4 v 2067 w(Orderings)e(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 │ │ │ │ │ @@ -11603,17 +11591,17 @@ │ │ │ │ │ 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 1889 │ │ │ │ │ -4 v 2081 w(Ma)n(y)27 b(1,)g(2024)0 390 y Fr(The)k(data)f(structure)g │ │ │ │ │ -(for)g(a)h(top)f(lev)n(el)g(sup)r(erno)r(de)h(can)f(b)r(e)h(v)n(ery)f │ │ │ │ │ +b(and)j(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1484 100 1876 │ │ │ │ │ +4 v 2068 w(June)28 b(3,)f(2025)0 390 y Fr(The)k(data)f(structure)g(for) │ │ │ │ │ +g(a)h(top)f(lev)n(el)g(sup)r(erno)r(de)h(can)f(b)r(e)h(v)n(ery)f │ │ │ │ │ (large,)g(to)r(o)g(large)g(to)g(\014t)h(in)n(to)g(memory)-7 │ │ │ │ │ b(.)45 b(In)31 b(a)f(parallel)0 490 y(en)n(vironmen)n(t,)d(w)n(e)h │ │ │ │ │ (follo)n(w)g(the)g(con)n(v)n(en)n(tion)f(that)h(eac)n(h)g(no)r(de)g(in) │ │ │ │ │ g(the)h(tree)f(is)g(handled)g(b)n(y)g(one)g(pro)r(cess.)37 │ │ │ │ │ b(Ha)n(ving)27 b(a)h(v)n(ery)0 589 y(large)e(no)r(de)i(at)f(the)h(top)g │ │ │ │ │ (lev)n(els)f(of)g(the)h(tree)g(will)f(sev)n(erely)f(decrease)h(the)h │ │ │ │ │ (parallelism)e(a)n(v)-5 b(ailable)26 b(to)i(the)g(computations.)125 │ │ │ │ │ @@ -11702,16 +11690,16 @@ │ │ │ │ │ (an)i(fundamen)n(tal)f(sup)r(erno)r(de)h(tree)f(with)h(a)f(call)h(to)f │ │ │ │ │ Fg(ETree)p 2994 5208 27 4 v 29 w(mergeFrontsOne\(\))17 │ │ │ │ │ b Fr(with)208 5308 y Fg(maxzeros)40 b(=)j(0)p Fr(.)36 │ │ │ │ │ b(W)-7 b(e)26 b(see)g(that)g(the)h(n)n(um)n(b)r(er)e(of)h(fron)n(ts)g │ │ │ │ │ (decreases)e(b)n(y)i(one)f(and)h(the)g(n)n(um)n(b)r(er)g(of)g(en)n │ │ │ │ │ (tries)f(do)r(es)h(not)208 5407 y(c)n(hange.)p eop end │ │ │ │ │ %%Page: 15 15 │ │ │ │ │ -TeXDict begin 15 14 bop 0 100 a Fj(Ma)n(y)27 b(1,)g(2024)p │ │ │ │ │ -528 100 1916 4 v 2080 w(Orderings)f(and)h(F)-7 b(ron)n(t)27 │ │ │ │ │ +TeXDict begin 15 14 bop 0 100 a Fj(June)27 b(3,)h(2025)p │ │ │ │ │ +541 100 1904 4 v 2067 w(Orderings)e(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 │ │ │ │ │ @@ -12343,16 +12331,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 1889 │ │ │ │ │ -4 v 2081 w(Ma)n(y)27 b(1,)g(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 1876 │ │ │ │ │ +4 v 2068 w(June)28 b(3,)f(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 │ │ │ │ │ @@ -12672,16 +12660,16 @@ │ │ │ │ │ b(2021347776)692 4948 y(merge)26 b(an)n(y)p 1114 4978 │ │ │ │ │ V 99 w(0.012)279 b(597)232 b(85366)142 b(3753241)154 │ │ │ │ │ b(2035158539)692 5048 y(split)p 1114 5078 V 316 w(0.043)279 │ │ │ │ │ b(643)190 b(115139)142 b(3753241)154 b(2035158539)692 │ │ │ │ │ 5148 y(\014nal)p 1114 5177 V 316 w(0.423)279 b(643)190 │ │ │ │ │ b(115128)142 b(3752694)154 b(2034396840)p eop end │ │ │ │ │ %%Page: 17 17 │ │ │ │ │ -TeXDict begin 17 16 bop 0 100 a Fj(Ma)n(y)27 b(1,)g(2024)p │ │ │ │ │ -528 100 1916 4 v 2080 w(Orderings)f(and)h(F)-7 b(ron)n(t)27 │ │ │ │ │ +TeXDict begin 17 16 bop 0 100 a Fj(June)27 b(3,)h(2025)p │ │ │ │ │ +541 100 1904 4 v 2067 w(Orderings)e(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 │ │ │ │ │ @@ -12790,16 +12778,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 1889 │ │ │ │ │ -4 v 2081 w(Ma)n(y)27 b(1,)g(2024)0 390 y Fr(the)g(submatrices)e(that)i │ │ │ │ │ +b(and)j(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1484 100 1876 │ │ │ │ │ +4 v 2068 w(June)28 b(3,)f(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 │ │ │ │ │ @@ -12894,16 +12882,16 @@ │ │ │ │ │ b(of)f Fg(64)g Fr(is)h(what)f(w)n(e)g(customarily)g(use.)0 │ │ │ │ │ 5103 y Fs(References)42 5308 y Fr([1])41 b(P)-7 b(.)35 │ │ │ │ │ b(Amesto)n(y)-7 b(,)37 b(T.)f(Da)n(vis,)h(and)e(I.)h(Du\013.)62 │ │ │ │ │ b(An)36 b(appro)n(ximate)e(minim)n(um)i(degree)f(ordering)f(algorithm.) │ │ │ │ │ 59 b Fe(SIAM)37 b(J.)171 5407 y(Matrix)30 b(A)n(nal.)g(Appl.)p │ │ │ │ │ Fr(,)f(17:886{905,)23 b(1996.)p eop end │ │ │ │ │ %%Page: 19 19 │ │ │ │ │ -TeXDict begin 19 18 bop 0 100 a Fj(Ma)n(y)27 b(1,)g(2024)p │ │ │ │ │ -528 100 1916 4 v 2080 w(Orderings)f(and)h(F)-7 b(ron)n(t)27 │ │ │ │ │ +TeXDict begin 19 18 bop 0 100 a Fj(June)27 b(3,)h(2025)p │ │ │ │ │ +541 100 1904 4 v 2067 w(Orderings)e(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 │ │ │ │ │ @@ -12983,16 +12971,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 1889 │ │ │ │ │ -4 v 2081 w(Ma)n(y)27 b(1,)g(2024)0 390 y Fr([13])41 b(B.)24 │ │ │ │ │ +b(and)j(F)-7 b(ron)n(t)27 b(T)-7 b(rees)p 1484 100 1876 │ │ │ │ │ +4 v 2068 w(June)28 b(3,)f(2025)0 390 y Fr([13])41 b(B.)24 │ │ │ │ │ b(Hendric)n(kson)e(and)i(R.)g(Leland.)31 b(An)24 b(impro)n(v)n(ed)f(sp) │ │ │ │ │ r(ectral)g(graph)g(partitioning)g(algorithm)g(for)h(mapping)f(parallel) │ │ │ │ │ 171 490 y(computations.)28 b(T)-7 b(ec)n(hnical)23 b(Rep)r(ort)f │ │ │ │ │ (SAND92-1460,)g(Sandia)h(National)f(Lab)r(oratories,)g(Albuquerque,)h │ │ │ │ │ (NM,)h(1992.)0 656 y([14])41 b(B.)f(Hendric)n(kson)f(and)h(R.)g │ │ │ │ │ (Leland.)74 b(The)40 b(Chaco)f(user's)g(guide.)74 b(T)-7 │ │ │ │ │ b(ec)n(hnical)39 b(Rep)r(ort)h(SAND93-2339,)i(Sandia)171 │ │ │ │ │ ├── ps2ascii {} │ │ │ │ │ │ @@ -1,11 +1,11 @@ │ │ │ │ │ │ Ordering Sparse Matrices and Transforming Front Trees │ │ │ │ │ │ ∗ │ │ │ │ │ │ Cleve Ashcraft, Boeing Shared Services Group │ │ │ │ │ │ - May 1, 2024 │ │ │ │ │ │ + June 3, 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 May 1, 2024 │ │ │ │ │ │ + 2 Orderings and Front Trees June 3, 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) ; │ │ │ │ │ │ - May 1, 2024 Orderings and Front Trees 3 │ │ │ │ │ │ + June 3, 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 May 1, 2024 │ │ │ │ │ │ + 4 Orderings and Front Trees June 3, 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. │ │ │ │ │ │ - May 1, 2024 Orderings and Front Trees 5 │ │ │ │ │ │ + June 3, 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 May 1, 2024 │ │ │ │ │ │ + 6 Orderings and Front Trees June 3, 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. │ │ │ │ │ │ - May 1, 2024 Orderings and Front Trees 7 │ │ │ │ │ │ + June 3, 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 May 1, 2024 │ │ │ │ │ │ + 8 Orderings and Front Trees June 3, 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 │ │ │ │ │ │ - May 1, 2024 Orderings and Front Trees 9 │ │ │ │ │ │ + June 3, 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 May 1, 2024 │ │ │ │ │ │ + 10 Orderings and Front Trees June 3, 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 │ │ │ │ │ │ - May 1, 2024 Orderings and Front Trees 11 │ │ │ │ │ │ + June 3, 2025 Orderings and Front Trees 11 │ │ │ │ │ │ Figure 5: Block structure of L with the fundamental supernode partition. │ │ │ │ │ │ - 12 Orderings and Front Trees May 1, 2024 │ │ │ │ │ │ + 12 Orderings and Front Trees June 3, 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 │ │ │ │ │ │ - May 1, 2024 Orderings and Front Trees 13 │ │ │ │ │ │ + June 3, 2025 Orderings and Front Trees 13 │ │ │ │ │ │ Figure 7: Block structure of L with the amalgamated supernode partition. │ │ │ │ │ │ - 14 Orderings and Front Trees May 1, 2024 │ │ │ │ │ │ + 14 Orderings and Front Trees June 3, 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. │ │ │ │ │ │ - May 1, 2024 Orderings and Front Trees 15 │ │ │ │ │ │ + June 3, 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 May 1, 2024 │ │ │ │ │ │ + 16 Orderings and Front Trees June 3, 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 │ │ │ │ │ │ - May 1, 2024 Orderings and Front Trees 17 │ │ │ │ │ │ + June 3, 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 May 1, 2024 │ │ │ │ │ │ + 18 Orderings and Front Trees June 3, 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. │ │ │ │ │ │ - May 1, 2024 Orderings and Front Trees 19 │ │ │ │ │ │ + June 3, 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 May 1, 2024 │ │ │ │ │ │ + 20 Orderings and Front Trees June 3, 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.05.01:0544 │ │ │ │ │ +%DVIPSSource: TeX output 2025.06.03:1221 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -1788,21 +1788,22 @@ │ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ │ /UnderlineThickness 50 def │ │ │ │ │ end readonly def │ │ │ │ │ /Encoding 256 array │ │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ │ dup 44 /comma put │ │ │ │ │ dup 48 /zero put │ │ │ │ │ -dup 49 /one put │ │ │ │ │ dup 50 /two put │ │ │ │ │ -dup 52 /four put │ │ │ │ │ +dup 51 /three put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 77 /M put │ │ │ │ │ -dup 97 /a put │ │ │ │ │ -dup 121 /y put │ │ │ │ │ +dup 74 /J put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ +dup 110 /n put │ │ │ │ │ +dup 117 /u put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ │ @@ -1983,68 +1984,70 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004ACD1870 │ │ │ │ │ -A5EA947858F5795870BFE1343AD803FB854BF8F5A4E794E8EC57BE41DB5B8734 │ │ │ │ │ -13E47950F29A81EA0C81EA798863883D7F41F78325CA190CBBFFE822AE494550 │ │ │ │ │ -4BE83703071FC9512D128927AF3F63CEF8F86ABE1E15D7B4DDD39576E7DFF45E │ │ │ │ │ -3CB4115AAB1830DE8647B915DB4BEBEB5235C281E098B899BAB951D8D5798F01 │ │ │ │ │ -7F7C47336D31438E5126738AFEAB29E9A7CBE06DE4DD604477B542D2620DFD58 │ │ │ │ │ -28FE34238572F23C5A8EB7ACEE1E154DA13FC1A5AA67A3BA8C5CDFB2B80312C9 │ │ │ │ │ -BC9FAE56D08DDFA9498E6EF0D0F6BD18B3923E0B670B0740528BC843610736CB │ │ │ │ │ -80228C105C2F72C3C22D610C3D8C268DEEA2AEEE3221E198E79FE2966487360C │ │ │ │ │ -84AE08AC326F48B21447652121B1EB68AF857B8628F27BB4ED00F273E0DD044A │ │ │ │ │ -7D11A5BFAAC0A82328444CC9DD90167681B07D55CE28655F40C21250A226DEAB │ │ │ │ │ -2D46FFB680CB9242BE192AC0E55A44D45709FA6DE638C130D92C4E9B07BC3D61 │ │ │ │ │ -25CC2F0A7ED4F3574242FFE4461272EB1401266EEF551E0E2B0EF51FA8F250EC │ │ │ │ │ -FD9AFB6F5A0CC442B566BC24400133E3E9B9A9FC801CEF284FD2B3ECA43421FA │ │ │ │ │ -51E5D1EFE7BEAA96658362C438A0A5A6DCBC664A85EF88037B42355195B9D19C │ │ │ │ │ -7961D5F63B123451B298CD52C144FCD4F3641A823FBA14605E2DFD845E89102C │ │ │ │ │ -4E345CFD80E3EE6F097095A84C941FFC91B234F3615E4EE4C5D564284656E364 │ │ │ │ │ -AB9C4D1DE05F8FD065CA6064893F0CF3A3A501D59EF6568D05D818A010D06518 │ │ │ │ │ -E2C20418ADD1E652867F265084A27A5FE0C32213C59FFC3A84EDC89382521E5B │ │ │ │ │ -8AF66D76601F83C5C33CC9CF968C77B66F1FA074AC3DAD8E453C9264D03969EF │ │ │ │ │ -9E387BB3BEAA4BF0A9D88BA2CE6094E8996A3752A657E322A57AF006444BF516 │ │ │ │ │ -501C43CAA1BA7F16A3B6E4D3EBDECCCC19564DF18FB68194C132238A5441A21A │ │ │ │ │ -F52285CA1CA94A4BEC61EB509FA35EA5E393D662D938F4291F37EB7C2D5815BE │ │ │ │ │ -446813E1CFD06FFFFF2C4355C9DAFA48E765F4CC5DE4B9E37CFFB75E7A0B6F4B │ │ │ │ │ -4E412496F9C27DF4BDD90A869F0EBD81A57AE0B84051450A5A3E06CB9930DB2C │ │ │ │ │ -7C2DDB774BE870AEFCC9F4F067BE243FF3FD4B5C71B96C607DC4975973AF2650 │ │ │ │ │ -E7DF2BE3523A370EEDD07B5456B96E372ED10510CE677C044E609F21E93652FD │ │ │ │ │ -33CE612F587530D12214A3719CDB170C315B5D8763D5D4C67B5CAE90309E77AC │ │ │ │ │ -B45EB356C13A7BDE0D7320A9849CA357E30D7CF1085FFD70071932C3180AFC28 │ │ │ │ │ -B093016BA3F49A3878C34BB4A8727A441EB6CFC1A73F2313A7BF8D32EDF27E62 │ │ │ │ │ -EBEBC058FBA80B136FD2DE05C673B66482224ECEC63EDFB519AC13B5CC6624A6 │ │ │ │ │ -B3FD79037DA3851E93A386115852DBA88B176F21EDDB5386DC7C993C4210B28F │ │ │ │ │ -438131A586E34A09724E7CE60139F8247BFF14D2674805B3BD454C134728A43E │ │ │ │ │ -139E0AF71A7AC5CE42041EC83FD454B00AD29959FCF007789FFAF2D3492DCA4B │ │ │ │ │ -566EAFE97591ABC51CD0CD9BCD64E285FB823E41AA817E96B2B224005DAA4E15 │ │ │ │ │ -2141DB436B9D3FBA4EE4C876FD19A2E5133106FE2B9F704CB9614FCDC91B7950 │ │ │ │ │ -57053F45A5ED993B48189AAFAD5289F97AE2B0AEB5606579F6BD75F743EDB5B6 │ │ │ │ │ -5AA8F8A64CE507A47325081B3A013DB1BD596CDD3A83D2F29B070D6F9C57496E │ │ │ │ │ -14DF3F0F731C3BB00F2CE3D4BBACF1320322195D1DEA7A545BB4725BD1C6EC3D │ │ │ │ │ -63250C72B897741F8599D9D9BD2FB50EC80EFF2ECD6CE6603E95AABB45462ACF │ │ │ │ │ -12B005EE5979B6B05BCE9B97061686102349142A3CCC26D57F2A3283DD8B6E2A │ │ │ │ │ -98885E48C0D4A1A5C9612EDCB3B3D265E9B8CCCCA5D99F07F96C15B27D6A161F │ │ │ │ │ -936599E503C2859927201CACC31581AB7AB84F9EC9FFADC239F01DCC55940AB7 │ │ │ │ │ -FA884AA1EB6494C8E53DAD66E75A317428ACF9D943A74683BF547958F67D9E36 │ │ │ │ │ -F985EED50DEBCF255756A821927CB73848DCF167E96E975E959DE27FE7BA4FBA │ │ │ │ │ -D0EFC003F019D87572D6F9C73FC5B880C3EEDB7EF98E5EC3D25D6FE0015A6590 │ │ │ │ │ -E3C6EE632D7F6558B914609A8829CD1DEAB83A3F1207D5C3AAC9EAEA9DE1B4F8 │ │ │ │ │ -2375C5D4F630BCE13475F941ED2324D2CD4DCF2285298EAA4FFF89433D853860 │ │ │ │ │ -A974A9FC0808580FBDE7D02EDBB3D8C65BD3109AE8B359E96BFB7E21C696F440 │ │ │ │ │ -312B0CCAD810BF070DF8FC281E8198EB20A7FF9C9BCD291D74BC75EE46799485 │ │ │ │ │ -1AB2AE36B7E525034D146A856AF3BD9057A0033C08B606B89DD130548950C93D │ │ │ │ │ -94A8C92C47A34A791B1C108D2F36E899B79358B8081CCFC3D1A2F0521E4E2AE4 │ │ │ │ │ -7F500D6F2A53E5393E44201287225912590ABC738E8726622B67C3425639CCFB │ │ │ │ │ -F450B78A4918 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004B9BA1CC │ │ │ │ │ +580D3C6BDA4DC1B80B4365F1C80512453FC5316EC2D928FB731C3D6403E3C18B │ │ │ │ │ +E8424D644DF5E9A2134229C5C91CA68DB8E85BA2BB40F538F585DA6FA4037718 │ │ │ │ │ +B8053EBBA1E765346BCD5BDAA6C38115D31611D8A87A2238C145F2DA2F92E4DF │ │ │ │ │ +3987BD9C4D2A3D460E8941A68B125BCD9EE4F9FD262C4C8A71F47A2C81975635 │ │ │ │ │ +F1B981C274C53FA2ACCDE4C9D0A7C62D6C1EFF91CFC6712CA6A9F333C9564FCB │ │ │ │ │ +2A70F0AD715A79B10A08AB069E2A3C93BC0AED19D0CA10134B8DDDE8AF548DB2 │ │ │ │ │ +3A4AAA9C29682CF135BB767DAA16169A127EB50A7EECEB6480CF56A7D0F8AC56 │ │ │ │ │ +4A5090B3D75A790372886AF568D94C8165975A05BFBFDF1FFBA45F70700BB9E0 │ │ │ │ │ +57F3249EF9E9C8AD9CBCF6E4FD592DC4CDD2D7864F7C8A3FA6FC44C25C0CE7E1 │ │ │ │ │ +299F8A90B32B75DEA28917531621E1E7E0ECEE9E01665DEE99FBCF3EC3F30686 │ │ │ │ │ +513D7CBA745E660502603865D5A3E82D24B3F94B2884B21DC53AED87F49380E0 │ │ │ │ │ +68EE79C580931308DA762670C1F86F07FFB479773CD9C5DE6F22980DEC973D1C │ │ │ │ │ +A1E162D73932561BAAB24DE51DC8708291B666B36BABCA1FEDB6DD9C22572914 │ │ │ │ │ +7194DA044319F362452D53DD4D9A59134838E540F1E23805CEF53FF4F7519385 │ │ │ │ │ +1FAE3061F94369FEB1232BDA2E2A281E6972FB4524EFA37A598E7CDC097683EA │ │ │ │ │ +1B609952AEC0799B4711AAAB22D6B1D5CC729DE70897FDDC48AF0A12E40FFE30 │ │ │ │ │ +6528C601E68E8CFA4BBF897CF89DB712DE108DD1F084EFD917BFD9A70A74EB8F │ │ │ │ │ +D0D5B43CCC30373A5E871F18A969D01C69C2B4377622A0C8C4D7C4C28DDE5586 │ │ │ │ │ +BD17D5D640A6F396BD41993BD1932EE10953847F82F7BB36480B67A4F69F0763 │ │ │ │ │ +69423D1803B7BB60594ABEEE9578076639B84D8323F56104438803D45402FEE3 │ │ │ │ │ +045DAB16C4459DA9BBE01D0385CC771FB8DABDD8A9D280C18553F92FE6591CFD │ │ │ │ │ +26B82F28E6673BD823598D3F6CE03BEE04D9A21ED908DFC4F640227C148F133D │ │ │ │ │ +D32113275297C16EBCC9028AFD9102DE50E9CF67E7CF8C42BB8E73D1DAF8A5E2 │ │ │ │ │ +EF5979426229664A990DEF980A7038D2F229789D4F6EDBE1FB81BEC1A1BB14D7 │ │ │ │ │ +882515C62660E8877BE942712D57B86A2E19995AF087DECB7FD5208583C020AE │ │ │ │ │ +FEC86A2826530AD855006225300E4655F443C9360A8BAC96B5B096DDC9B12EDF │ │ │ │ │ +C862215AD6C432CF345FE701757E4EBB8C65F46912CB0F4DEF53672F7298D8F7 │ │ │ │ │ +EE51A9C5DE689A8D36956B7F0410893C0998DB03B73B4024CB046F8F6B32E07F │ │ │ │ │ +CD28A68AFB7152E45F1021DCD520D8A429FCDCA4B8054BAF0B48C4443280F198 │ │ │ │ │ +3360B078E6DEC37772DA8B629CFFD1534E8AA10E26B0BC58E92B9BF280C8EE45 │ │ │ │ │ +618EECDE904249F5A2010DC55D1028DFF4F058260B2B0A46541D6157970F44BD │ │ │ │ │ +D7483802D56A81184119DDBC914E8E394CBEEB506B61BB1CE2A3465252E5D8A3 │ │ │ │ │ +6BDD2D067E69D4ECEFC7D5568378F5F8B38EAFF138014185FE19DF7358A7A780 │ │ │ │ │ +3BE0E2CCD1561113F2F2319BDB503230DD0866121604710CEBBAA659ABFC010B │ │ │ │ │ +5CC40E5807F461D87E75BDC6AD96BCEF62AF668D48D7A76D08B57650F35CF609 │ │ │ │ │ +C0F791AEBEB75E29FA69596BAB419804AECE0F0238AAE64A6C13A22EBF4E3EAC │ │ │ │ │ +3570DECE85F54064486B2364D63E94FEB7C16350CDA318510A45C8848DB470ED │ │ │ │ │ +BFAFD2365681D65CFF3E6C1B4B7C8AE3066F96E819D05B97F3A6C2BFF8A72978 │ │ │ │ │ +EEB7F632FF604AD003A3CCA5A0465D53033A646E8082D3491EDECA3DA1A0E1BB │ │ │ │ │ +64BF36946520438D2EE72FA9EB1CEEDF56510AADA55A8DE280E23C904E0810FA │ │ │ │ │ +A3177CF684F06A4042DE4CD4AB21E2F0616153BEEE58EBBD89911FA43BC52969 │ │ │ │ │ +230C8137DB34C13E147B06C7A3875A931E1AC127E7D3EA0DF8346B6971F80901 │ │ │ │ │ +DC37F2DE1A0B81FD93CA3B5EB9B29ECABA1492901B1BA261DAB872FB3431C718 │ │ │ │ │ +9C9CDA7864908CD773864908DEB44E343221C2C4C335341789A46325D94C767C │ │ │ │ │ +740E3B60CE6D452A3A665967F568671FD7DD460B404B9C3D2EDCD47A336AA2C7 │ │ │ │ │ +BB0B1AC3823978F610629EF7AB526098A7EE7076F50A146D8134BA2DEC1B8ACF │ │ │ │ │ +68A7E4A9B7BE17FB71480516F2D6A8866E56CFD7C7A41311F48DDDD9887DACB8 │ │ │ │ │ +73FDAF5F25E956AFB0A9D530DE2E1128F006AAC9A78715BA2F90C8FED3729BFA │ │ │ │ │ +BDDD4098F870A27A91A0CB540D166FF86A442E95C9C361FD23378A2A138EAFB8 │ │ │ │ │ +D7050B486E1CB95068D890BCCD669456F3385C8F1793CE545099421368FE0F46 │ │ │ │ │ +53137AD2B65030B19CE7FF6B1669DB7A3C440AEF27149780E36C7097B7A8B71B │ │ │ │ │ +8789EECFA9A70B1F9695BB5D94E9A7D341291C1CA1BDEF4BE3EFCB8234CE9FFD │ │ │ │ │ +E1C4963CF919780129FA60162FEAA8AE97328F4BA14D949057A3EE74214F2D29 │ │ │ │ │ +51E7BE584446F6702F39957AE455CF8AF0C36AADAA39B53553D923CA5E9D4988 │ │ │ │ │ +76701B4F77DAE5185AC29900 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -5481,25 +5484,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 23[45 19[83 18[25 │ │ │ │ │ -5[45 1[45 45 45 3[25 44[{}9 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 138[51 6[51 8[40 26[47 │ │ │ │ │ +15[25 4[45 1[45 45 1[45 3[25 44[{}10 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 │ │ │ │ │ @@ -5640,17 +5644,17 @@ │ │ │ │ │ b Fl(Y)55 b Fp(that)35 b(has)g(minimal)g(w)m(eigh)m(t.)56 │ │ │ │ │ b(W)-8 b(e)36 b(examine)g(t)m(w)m(o)227 5294 y(\(p)s(ossibly\))j │ │ │ │ │ (di\013eren)m(t)h(min-cuts)g(and)e(ev)-5 b(aluate)41 │ │ │ │ │ b(the)f(partitions)g(induced)e(via)i(their)g(minimal)f(w)m(eigh)m(t)227 │ │ │ │ │ 5407 y(separators,)31 b(and)f(accept)i(a)f(b)s(etter)f(partition)h(if)g │ │ │ │ │ (presen)m(t.)1927 5656 y(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fp(2)p 136 100 1202 4 v │ │ │ │ │ -1384 w Fo(GPart)29 b Fg(:)40 b Fm(DRAFT)30 b Fg(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2699 100 V 0 399 a Fp(This)e(pro)s(cess)h(w)m(e)g(call)i │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fp(2)p 136 100 1195 4 v │ │ │ │ │ +1377 w Fo(GPart)29 b Fg(:)40 b Fm(DRAFT)30 b Fg(June)g(3,)h(2025)p │ │ │ │ │ +2706 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 │ │ │ │ │ @@ -5705,17 +5709,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 1202 4 v 1383 100 a Fo(GPart)29 │ │ │ │ │ -b Fg(:)41 b Fm(DRAFT)121 b Fg(Ma)m(y)31 b(1,)g(2024)p │ │ │ │ │ -2651 100 V 1202 w Fp(3)330 399 y Ff({)45 b Fo(int)i(minweight)p │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1195 4 v 1376 100 a Fo(GPart)29 │ │ │ │ │ +b Fg(:)41 b Fm(DRAFT)121 b Fg(June)29 b(3,)i(2025)p 2658 │ │ │ │ │ +100 V 1195 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 │ │ │ │ │ @@ -5779,17 +5783,17 @@ │ │ │ │ │ (ter)0 5068 y Fe(1.2)135 b(Protot)l(yp)t(es)46 b(and)f(descriptions)g │ │ │ │ │ (of)g Fc(GPart)e Fe(metho)t(ds)0 5294 y Fp(This)e(section)j(con)m │ │ │ │ │ (tains)f(brief)f(descriptions)g(including)f(protot)m(yp)s(es)i(of)f │ │ │ │ │ (all)h(metho)s(ds)f(that)h(b)s(elong)f(to)h(the)0 5407 │ │ │ │ │ y Fo(GPart)29 b Fp(ob)5 b(ject.)42 b(There)29 b(are)i(no)f(IO)g(metho)s │ │ │ │ │ (ds.)p eop end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fp(4)p 136 100 1202 4 v │ │ │ │ │ -1384 w Fo(GPart)29 b Fg(:)40 b Fm(DRAFT)30 b Fg(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2699 100 V 0 399 a Fb(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fp(4)p 136 100 1195 4 v │ │ │ │ │ +1377 w Fo(GPart)29 b Fg(:)40 b Fm(DRAFT)30 b Fg(June)g(3,)h(2025)p │ │ │ │ │ +2706 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) │ │ │ │ │ @@ -5849,17 +5853,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 1202 4 v 1383 100 a Fo(GPart)29 │ │ │ │ │ -b Fg(:)41 b Fm(DRAFT)121 b Fg(Ma)m(y)31 b(1,)g(2024)p │ │ │ │ │ -2651 100 V 1202 w Fp(5)0 399 y Fb(1.2.3)112 b(Utilit)m(y)38 │ │ │ │ │ +TeXDict begin 5 4 bop 91 100 1195 4 v 1376 100 a Fo(GPart)29 │ │ │ │ │ +b Fg(:)41 b Fm(DRAFT)121 b Fg(June)29 b(3,)i(2025)p 2658 │ │ │ │ │ +100 V 1195 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 │ │ │ │ │ @@ -5939,17 +5943,17 @@ │ │ │ │ │ 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 1202 4 v │ │ │ │ │ -1384 w Fo(GPart)29 b Fg(:)40 b Fm(DRAFT)30 b Fg(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2699 100 V 111 399 a Fp(6.)46 b Fo(IV)h(*)h(GPart_bndWeightsIV)43 │ │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fp(6)p 136 100 1195 4 v │ │ │ │ │ +1377 w Fo(GPart)29 b Fg(:)40 b Fm(DRAFT)30 b Fg(June)g(3,)h(2025)p │ │ │ │ │ +2706 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 │ │ │ │ │ @@ -6020,21 +6024,21 @@ │ │ │ │ │ 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 1202 4 v 1383 100 a Fo(GPart)29 │ │ │ │ │ -b Fg(:)41 b Fm(DRAFT)121 b Fg(Ma)m(y)31 b(1,)g(2024)p │ │ │ │ │ -2651 100 V 1202 w Fp(7)227 399 y(Kernighan-Lin)k(algorithm)h(to)g │ │ │ │ │ -(\014nd)e(an)h(\\edge")i(separator)e(formed)g(of)g(segmen)m(ts,)j(whic) │ │ │ │ │ -m(h)d(is)g(really)i(a)227 511 y(v)m(ertex)30 b(separator,)h(a)e(subset) │ │ │ │ │ -f(of)h(\010.)40 b(The)29 b Fo(alpha)e Fp(parameter)j(is)f(used)f(in)h │ │ │ │ │ -(the)g(cost)h(function)e(ev)-5 b(aluation)227 670 y(for)33 │ │ │ │ │ +TeXDict begin 7 6 bop 91 100 1195 4 v 1376 100 a Fo(GPart)29 │ │ │ │ │ +b Fg(:)41 b Fm(DRAFT)121 b Fg(June)29 b(3,)i(2025)p 2658 │ │ │ │ │ +100 V 1195 w Fp(7)227 399 y(Kernighan-Lin)k(algorithm)h(to)g(\014nd)e │ │ │ │ │ +(an)h(\\edge")i(separator)e(formed)g(of)g(segmen)m(ts,)j(whic)m(h)d(is) │ │ │ │ │ +g(really)i(a)227 511 y(v)m(ertex)30 b(separator,)h(a)e(subset)f(of)h │ │ │ │ │ +(\010.)40 b(The)29 b Fo(alpha)e Fp(parameter)j(is)f(used)f(in)h(the)g │ │ │ │ │ +(cost)h(function)e(ev)-5 b(aluation)227 670 y(for)33 │ │ │ │ │ b(the)f(partition,)i(cost)q(\([)p Fl(S;)15 b(B)5 b(;)15 │ │ │ │ │ b(W)e Fp(]\))30 b(=)f Fi(j)p Fl(S)5 b Fi(j)1776 551 y │ │ │ │ │ Fh(\022)1838 670 y Fp(1)20 b(+)g Fl(\013)2062 608 y Fp(max)q │ │ │ │ │ Fi(fj)p Fl(B)5 b Fi(j)p Fl(;)15 b Fi(j)p Fl(W)e Fi(jg)p │ │ │ │ │ 2062 649 574 4 v 2071 732 a Fp(min)p Fi(fj)p Fl(B)5 b │ │ │ │ │ Fi(j)p Fl(;)15 b Fi(j)p Fl(W)e Fi(jg)2646 551 y Fh(\023)2707 │ │ │ │ │ 670 y Fp(.)48 b(The)32 b Fo(seed)f Fp(parameter)i(is)g(used)227 │ │ │ │ │ @@ -6129,17 +6133,17 @@ │ │ │ │ │ Fp(\))p Fi(g)969 5407 y Fl(Y)1022 5421 y Fk(3)1144 5407 │ │ │ │ │ y Fp(=)83 b Fi(f)p Fl(y)28 b Fi(2)d Fl(Y)50 b Fi(j)31 │ │ │ │ │ b Fl(y)d Fi(2)d Fl(Ad)-10 b(j)5 b Fp(\()p Fl(B)26 b Fi(n)21 │ │ │ │ │ b Fl(Y)f Fp(\))30 b(and)g Fl(y)e Fi(2)d Fl(Ad)-10 b(j)5 │ │ │ │ │ b Fp(\()p Fl(W)34 b Fi(n)21 b Fl(Y)f Fp(\))p Fi(g)p eop │ │ │ │ │ end │ │ │ │ │ %%Page: 8 8 │ │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fp(8)p 136 100 1202 4 v │ │ │ │ │ -1384 w Fo(GPart)29 b Fg(:)40 b Fm(DRAFT)30 b Fg(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2699 100 V 227 399 a Fp(The)e Fo(YVmapIV)e Fp(ob)5 b(ject)30 │ │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fp(8)p 136 100 1195 4 v │ │ │ │ │ +1377 w Fo(GPart)29 b Fg(:)40 b Fm(DRAFT)30 b Fg(June)g(3,)h(2025)p │ │ │ │ │ +2706 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 │ │ │ │ │ @@ -6250,17 +6254,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 1202 4 v 1383 100 a Fo(GPart)29 │ │ │ │ │ -b Fg(:)41 b Fm(DRAFT)121 b Fg(Ma)m(y)31 b(1,)g(2024)p │ │ │ │ │ -2651 100 V 1202 w Fp(9)0 399 y Fb(1.2.7)112 b(Recursiv)m(e)38 │ │ │ │ │ +TeXDict begin 9 8 bop 91 100 1195 4 v 1376 100 a Fo(GPart)29 │ │ │ │ │ +b Fg(:)41 b Fm(DRAFT)121 b Fg(June)29 b(3,)i(2025)p 2658 │ │ │ │ │ +100 V 1195 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 │ │ │ │ │ @@ -6323,17 +6327,17 @@ │ │ │ │ │ (whether)e Fo(info)f Fp(is)i Fo(NULL)p Fp(.)f Fo(DDsepInfo)p │ │ │ │ │ 2663 5150 V 32 w(setDefaultFields\(\))c Fp(is)32 b(called)227 │ │ │ │ │ 5263 y(to)f(set)g(the)g(default)f(v)-5 b(alues.)227 5407 │ │ │ │ │ y Fm(Err)g(or)34 b(che)-5 b(cking:)40 b Fp(If)30 b Fo(info)g │ │ │ │ │ Fp(is)g Fo(NULL)p Fp(,)f(an)i(error)f(message)h(is)g(prin)m(ted)f(and)f │ │ │ │ │ (the)i(program)f(exits.)p eop end │ │ │ │ │ %%Page: 10 10 │ │ │ │ │ -TeXDict begin 10 9 bop 0 100 a Fp(10)p 182 100 1179 4 │ │ │ │ │ -v 1361 w Fo(GPart)29 b Fg(:)41 b Fm(DRAFT)30 b Fg(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2721 100 V 111 399 a Fp(4.)46 b Fo(void)h(DDsepInfo_free)d(\()j │ │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fp(10)p 182 100 1172 4 │ │ │ │ │ +v 1354 w Fo(GPart)29 b Fg(:)41 b Fm(DRAFT)30 b Fg(June)g(3,)h(2025)p │ │ │ │ │ +2728 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 │ │ │ │ │ @@ -6386,19 +6390,19 @@ │ │ │ │ │ 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 1179 4 v 1360 100 a Fo(GPart)29 │ │ │ │ │ -b Fg(:)41 b Fm(DRAFT)121 b Fg(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2629 100 V 1179 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 │ │ │ │ │ +TeXDict begin 11 10 bop 91 100 1172 4 v 1353 100 a Fo(GPart)29 │ │ │ │ │ +b Fg(:)41 b Fm(DRAFT)121 b Fg(June)30 b(3,)h(2025)p 2636 │ │ │ │ │ +100 V 1172 w Fp(11)337 399 y Fn(\210)45 b Fp(The)30 b │ │ │ │ │ +Fm(tar)-5 b(get)32 b Fp(minim)m(um)d(w)m(eigh)m(t)j(for)e(a)h(domain)f │ │ │ │ │ +(is)h Fo(minweight)p Fp(.)337 551 y Fn(\210)45 b Fp(The)30 │ │ │ │ │ b Fm(tar)-5 b(get)32 b Fp(maxim)m(um)e(w)m(eigh)m(t)i(for)e(a)h(domain) │ │ │ │ │ f(is)g Fo(maxweight)p Fp(.)337 703 y Fn(\210)45 b Fp(The)30 │ │ │ │ │ b Fo(seed)f Fp(parameter)i(is)g(a)f(random)g(n)m(um)m(b)s(er)f(seed.) │ │ │ │ │ 337 856 y Fn(\210)45 b Fp(The)39 b Fo(outIVfile)d Fp(parameter)k(is)f │ │ │ │ │ (the)g(output)f(\014le)h(for)g(the)g Fo(IV)g Fp(ob)5 │ │ │ │ │ b(ject)39 b(that)h(con)m(tains)g(the)f(map)427 969 y(from)25 │ │ │ │ │ b(v)m(ertices)j(to)e(comp)s(onen)m(ts.)39 b(If)25 b Fo(outIVfile)e │ │ │ │ │ @@ -6465,17 +6469,17 @@ │ │ │ │ │ 5181 y Fn(\210)45 b Fp(The)37 b Fo(msgFile)e Fp(parameter)j(determines) │ │ │ │ │ f(the)g(output)g(\014le)g(|)g(if)g Fo(msgFile)e Fp(is)j │ │ │ │ │ Fo(stdout)p Fp(,)f(then)g(the)427 5294 y(output)29 b(\014le)h(is)f │ │ │ │ │ Fm(stdout)p Fp(,)i(otherwise)f(a)f(\014le)h(is)f(op)s(ened)g(with)g │ │ │ │ │ Fm(app)-5 b(end)31 b Fp(status)e(to)i(receiv)m(e)g(an)m(y)e(output)427 │ │ │ │ │ 5407 y(data.)p eop end │ │ │ │ │ %%Page: 12 12 │ │ │ │ │ -TeXDict begin 12 11 bop 0 100 a Fp(12)p 182 100 1179 │ │ │ │ │ -4 v 1361 w Fo(GPart)29 b Fg(:)41 b Fm(DRAFT)30 b Fg(Ma)m(y)i(1,)f(2024) │ │ │ │ │ -p 2721 100 V 337 399 a Fn(\210)45 b Fp(The)23 b Fo(inGraphFile)d │ │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fp(12)p 182 100 1172 │ │ │ │ │ +4 v 1354 w Fo(GPart)29 b Fg(:)41 b Fm(DRAFT)30 b Fg(June)g(3,)h(2025)p │ │ │ │ │ +2728 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 │ │ │ │ │ @@ -6546,31 +6550,30 @@ │ │ │ │ │ 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 1179 4 v 1360 100 a Fo(GPart)29 │ │ │ │ │ -b Fg(:)41 b Fm(DRAFT)121 b Fg(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2629 100 V 1179 w Fp(13)337 399 y Fn(\210)45 b Fp(The)c │ │ │ │ │ -Fo(DDoption)e Fp(parameter)j(con)m(trols)h(the)f(initial)h │ │ │ │ │ -(domain/segmen)m(t)g(partition)f(on)f(eac)m(h)i(sub-)427 │ │ │ │ │ -511 y(graph.)60 b(When)37 b Fo(DDDoption)45 b(=)j(1)37 │ │ │ │ │ -b Fp(w)m(e)g(use)g(the)g(\014shnet)f(algorithm)i(for)f(eac)m(h)h │ │ │ │ │ -(subgraph.)59 b(When)427 624 y Fo(DDDoption)46 b(=)h(1)32 │ │ │ │ │ -b Fp(w)m(e)h(use)f(the)h(\014shnet)e(algorithm)j(once)f(for)f(the)g(en) │ │ │ │ │ -m(tire)i(graph)e(and)f(this)i(is)f(then)427 737 y(pro)5 │ │ │ │ │ -b(jected)31 b(do)m(wn)f(on)m(to)h(eac)m(h)h(subgraph.)337 │ │ │ │ │ -888 y Fn(\210)45 b Fp(The)27 b Fo(nlayer)f Fp(parameter)h(go)m(v)m │ │ │ │ │ -(erns)i(the)e(smo)s(othing)h(pro)s(cess)e(b)m(y)i(sp)s(ecifying)f(the)g │ │ │ │ │ -(t)m(yp)s(e)h(of)f(net)m(w)m(ork)427 1001 y(optimization)33 │ │ │ │ │ -b(problem)c(that)i(will)g(b)s(e)f(solv)m(ed.)500 1152 │ │ │ │ │ -y Ff({)45 b Fo(nlayer)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 │ │ │ │ │ +TeXDict begin 13 12 bop 91 100 1172 4 v 1353 100 a Fo(GPart)29 │ │ │ │ │ +b Fg(:)41 b Fm(DRAFT)121 b Fg(June)30 b(3,)h(2025)p 2636 │ │ │ │ │ +100 V 1172 w Fp(13)337 399 y Fn(\210)45 b Fp(The)c Fo(DDoption)e │ │ │ │ │ +Fp(parameter)j(con)m(trols)h(the)f(initial)h(domain/segmen)m(t)g │ │ │ │ │ +(partition)f(on)f(eac)m(h)i(sub-)427 511 y(graph.)60 │ │ │ │ │ +b(When)37 b Fo(DDDoption)45 b(=)j(1)37 b Fp(w)m(e)g(use)g(the)g │ │ │ │ │ +(\014shnet)f(algorithm)i(for)f(eac)m(h)h(subgraph.)59 │ │ │ │ │ +b(When)427 624 y Fo(DDDoption)46 b(=)h(1)32 b Fp(w)m(e)h(use)f(the)h │ │ │ │ │ +(\014shnet)e(algorithm)j(once)f(for)f(the)g(en)m(tire)i(graph)e(and)f │ │ │ │ │ +(this)i(is)f(then)427 737 y(pro)5 b(jected)31 b(do)m(wn)f(on)m(to)h │ │ │ │ │ +(eac)m(h)h(subgraph.)337 888 y Fn(\210)45 b Fp(The)27 │ │ │ │ │ +b Fo(nlayer)f Fp(parameter)h(go)m(v)m(erns)i(the)e(smo)s(othing)h(pro)s │ │ │ │ │ +(cess)e(b)m(y)i(sp)s(ecifying)f(the)g(t)m(yp)s(e)h(of)f(net)m(w)m(ork) │ │ │ │ │ +427 1001 y(optimization)33 b(problem)c(that)i(will)g(b)s(e)f(solv)m │ │ │ │ │ +(ed.)500 1152 y Ff({)45 b Fo(nlayer)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 │ │ │ │ │ 1283 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 1415 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.)111 │ │ │ │ │ 1639 y(5.)46 b Fo(mkDSTree)g(msglvl)g(msgFile)g(inGraphFile)e(seed)j │ │ │ │ │ (minweight)e(maxweight)657 1752 y(freeze)h(alpha)g(maxdomweight)f │ │ │ │ │ @@ -6626,17 +6629,17 @@ │ │ │ │ │ 5275 y Ff({)45 b Fo(nlayer)h(=)i(2)30 b Fp(|)g(eac)m(h)i(net)m(w)m(ork) │ │ │ │ │ f(has)f(t)m(w)m(o)i(la)m(y)m(ers)f(but)f(need)g(not)h(b)s(e)f │ │ │ │ │ (bipartite.)500 5407 y Ff({)45 b Fo(nlayer)h(>)i(2)30 │ │ │ │ │ b Fp(|)g(eac)m(h)i(net)m(w)m(ork)f(has)f Fo(option/2)e │ │ │ │ │ Fp(la)m(y)m(ers)k(on)e(eac)m(h)i(side)e(of)h(the)f(separator.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 14 14 │ │ │ │ │ -TeXDict begin 14 13 bop 0 100 a Fp(14)p 182 100 1179 │ │ │ │ │ -4 v 1361 w Fo(GPart)29 b Fg(:)41 b Fm(DRAFT)30 b Fg(Ma)m(y)i(1,)f(2024) │ │ │ │ │ -p 2721 100 V 337 399 a Fn(\210)45 b Fp(The)34 b Fo(outDSTreeFile)d │ │ │ │ │ +TeXDict begin 14 13 bop 0 100 a Fp(14)p 182 100 1172 │ │ │ │ │ +4 v 1354 w Fo(GPart)29 b Fg(:)41 b Fm(DRAFT)30 b Fg(June)g(3,)h(2025)p │ │ │ │ │ +2728 100 V 337 399 a Fn(\210)45 b Fp(The)34 b Fo(outDSTreeFile)d │ │ │ │ │ Fp(parameter)k(is)f(the)h(output)f(\014le)g(for)g(the)h │ │ │ │ │ Fo(DSTree)e Fp(ob)5 b(ject.)53 b(It)35 b(m)m(ust)f(b)s(e)g(of)427 │ │ │ │ │ 511 y(the)29 b(form)f Fo(*.dstreef)e Fp(or)j Fo(*.dstreeb)p │ │ │ │ │ Fp(.)37 b(If)29 b Fo(outDSTreeFile)24 b Fp(is)29 b(not)g │ │ │ │ │ Fo("none")p Fp(,)e(the)i Fo(DSTree)e Fp(ob)5 b(ject)427 │ │ │ │ │ 624 y(is)31 b(written)f(to)h(the)g(\014le)f(via)h(the)g │ │ │ │ │ Fo(DSTree)p 1851 624 29 4 v 33 w(writeToFile\(\))26 b │ │ │ │ │ ├── ps2ascii {} │ │ │ │ │ │ @@ -30,15 +30,15 @@ │ │ │ │ │ │ condensed into the source while the nodes in W \Y are condensed into the sink. The rest of │ │ │ │ │ │ the network is formed using the structure of the subgraph induced by Y. Given a min-cut of │ │ │ │ │ │ b │ │ │ │ │ │ the network we can identify a separator S ⊆ Y that has minimal weight. We examine two │ │ │ │ │ │ (possibly) different min-cuts and evaluate the partitions induced via their minimal weight │ │ │ │ │ │ separators, and accept a better partition if present. │ │ │ │ │ │ 1 │ │ │ │ │ │ - 2 GPart : DRAFT May 1, 2024 │ │ │ │ │ │ + 2 GPart : DRAFT June 3, 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 May 1, 2024 3 │ │ │ │ │ │ + GPart : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 4 GPart : DRAFT June 3, 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 May 1, 2024 5 │ │ │ │ │ │ + GPart : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 6 GPart : DRAFT June 3, 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 May 1, 2024 7 │ │ │ │ │ │ + GPart : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 8 GPart : DRAFT June 3, 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 May 1, 2024 9 │ │ │ │ │ │ + GPart : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 10 GPart : DRAFT June 3, 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 May 1, 2024 11 │ │ │ │ │ │ + GPart : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 12 GPart : DRAFT June 3, 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 May 1, 2024 13 │ │ │ │ │ │ + GPart : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 14 GPart : DRAFT June 3, 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.05.01:0544 │ │ │ │ │ +%DVIPSSource: TeX output 2025.06.03:1221 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -1202,21 +1202,22 @@ │ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ │ /UnderlineThickness 50 def │ │ │ │ │ end readonly def │ │ │ │ │ /Encoding 256 array │ │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ │ dup 44 /comma put │ │ │ │ │ dup 48 /zero put │ │ │ │ │ -dup 49 /one put │ │ │ │ │ dup 50 /two put │ │ │ │ │ -dup 52 /four put │ │ │ │ │ +dup 51 /three put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 77 /M put │ │ │ │ │ -dup 97 /a put │ │ │ │ │ -dup 121 /y put │ │ │ │ │ +dup 74 /J put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ +dup 110 /n put │ │ │ │ │ +dup 117 /u put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ │ @@ -1397,68 +1398,70 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004ACD1870 │ │ │ │ │ -A5EA947858F5795870BFE1343AD803FB854BF8F5A4E794E8EC57BE41DB5B8734 │ │ │ │ │ -13E47950F29A81EA0C81EA798863883D7F41F78325CA190CBBFFE822AE494550 │ │ │ │ │ -4BE83703071FC9512D128927AF3F63CEF8F86ABE1E15D7B4DDD39576E7DFF45E │ │ │ │ │ -3CB4115AAB1830DE8647B915DB4BEBEB5235C281E098B899BAB951D8D5798F01 │ │ │ │ │ -7F7C47336D31438E5126738AFEAB29E9A7CBE06DE4DD604477B542D2620DFD58 │ │ │ │ │ -28FE34238572F23C5A8EB7ACEE1E154DA13FC1A5AA67A3BA8C5CDFB2B80312C9 │ │ │ │ │ -BC9FAE56D08DDFA9498E6EF0D0F6BD18B3923E0B670B0740528BC843610736CB │ │ │ │ │ -80228C105C2F72C3C22D610C3D8C268DEEA2AEEE3221E198E79FE2966487360C │ │ │ │ │ -84AE08AC326F48B21447652121B1EB68AF857B8628F27BB4ED00F273E0DD044A │ │ │ │ │ -7D11A5BFAAC0A82328444CC9DD90167681B07D55CE28655F40C21250A226DEAB │ │ │ │ │ -2D46FFB680CB9242BE192AC0E55A44D45709FA6DE638C130D92C4E9B07BC3D61 │ │ │ │ │ -25CC2F0A7ED4F3574242FFE4461272EB1401266EEF551E0E2B0EF51FA8F250EC │ │ │ │ │ -FD9AFB6F5A0CC442B566BC24400133E3E9B9A9FC801CEF284FD2B3ECA43421FA │ │ │ │ │ -51E5D1EFE7BEAA96658362C438A0A5A6DCBC664A85EF88037B42355195B9D19C │ │ │ │ │ -7961D5F63B123451B298CD52C144FCD4F3641A823FBA14605E2DFD845E89102C │ │ │ │ │ -4E345CFD80E3EE6F097095A84C941FFC91B234F3615E4EE4C5D564284656E364 │ │ │ │ │ -AB9C4D1DE05F8FD065CA6064893F0CF3A3A501D59EF6568D05D818A010D06518 │ │ │ │ │ -E2C20418ADD1E652867F265084A27A5FE0C32213C59FFC3A84EDC89382521E5B │ │ │ │ │ -8AF66D76601F83C5C33CC9CF968C77B66F1FA074AC3DAD8E453C9264D03969EF │ │ │ │ │ -9E387BB3BEAA4BF0A9D88BA2CE6094E8996A3752A657E322A57AF006444BF516 │ │ │ │ │ -501C43CAA1BA7F16A3B6E4D3EBDECCCC19564DF18FB68194C132238A5441A21A │ │ │ │ │ -F52285CA1CA94A4BEC61EB509FA35EA5E393D662D938F4291F37EB7C2D5815BE │ │ │ │ │ -446813E1CFD06FFFFF2C4355C9DAFA48E765F4CC5DE4B9E37CFFB75E7A0B6F4B │ │ │ │ │ -4E412496F9C27DF4BDD90A869F0EBD81A57AE0B84051450A5A3E06CB9930DB2C │ │ │ │ │ -7C2DDB774BE870AEFCC9F4F067BE243FF3FD4B5C71B96C607DC4975973AF2650 │ │ │ │ │ -E7DF2BE3523A370EEDD07B5456B96E372ED10510CE677C044E609F21E93652FD │ │ │ │ │ -33CE612F587530D12214A3719CDB170C315B5D8763D5D4C67B5CAE90309E77AC │ │ │ │ │ -B45EB356C13A7BDE0D7320A9849CA357E30D7CF1085FFD70071932C3180AFC28 │ │ │ │ │ -B093016BA3F49A3878C34BB4A8727A441EB6CFC1A73F2313A7BF8D32EDF27E62 │ │ │ │ │ -EBEBC058FBA80B136FD2DE05C673B66482224ECEC63EDFB519AC13B5CC6624A6 │ │ │ │ │ -B3FD79037DA3851E93A386115852DBA88B176F21EDDB5386DC7C993C4210B28F │ │ │ │ │ -438131A586E34A09724E7CE60139F8247BFF14D2674805B3BD454C134728A43E │ │ │ │ │ -139E0AF71A7AC5CE42041EC83FD454B00AD29959FCF007789FFAF2D3492DCA4B │ │ │ │ │ -566EAFE97591ABC51CD0CD9BCD64E285FB823E41AA817E96B2B224005DAA4E15 │ │ │ │ │ -2141DB436B9D3FBA4EE4C876FD19A2E5133106FE2B9F704CB9614FCDC91B7950 │ │ │ │ │ -57053F45A5ED993B48189AAFAD5289F97AE2B0AEB5606579F6BD75F743EDB5B6 │ │ │ │ │ -5AA8F8A64CE507A47325081B3A013DB1BD596CDD3A83D2F29B070D6F9C57496E │ │ │ │ │ -14DF3F0F731C3BB00F2CE3D4BBACF1320322195D1DEA7A545BB4725BD1C6EC3D │ │ │ │ │ -63250C72B897741F8599D9D9BD2FB50EC80EFF2ECD6CE6603E95AABB45462ACF │ │ │ │ │ -12B005EE5979B6B05BCE9B97061686102349142A3CCC26D57F2A3283DD8B6E2A │ │ │ │ │ -98885E48C0D4A1A5C9612EDCB3B3D265E9B8CCCCA5D99F07F96C15B27D6A161F │ │ │ │ │ -936599E503C2859927201CACC31581AB7AB84F9EC9FFADC239F01DCC55940AB7 │ │ │ │ │ -FA884AA1EB6494C8E53DAD66E75A317428ACF9D943A74683BF547958F67D9E36 │ │ │ │ │ -F985EED50DEBCF255756A821927CB73848DCF167E96E975E959DE27FE7BA4FBA │ │ │ │ │ -D0EFC003F019D87572D6F9C73FC5B880C3EEDB7EF98E5EC3D25D6FE0015A6590 │ │ │ │ │ -E3C6EE632D7F6558B914609A8829CD1DEAB83A3F1207D5C3AAC9EAEA9DE1B4F8 │ │ │ │ │ -2375C5D4F630BCE13475F941ED2324D2CD4DCF2285298EAA4FFF89433D853860 │ │ │ │ │ -A974A9FC0808580FBDE7D02EDBB3D8C65BD3109AE8B359E96BFB7E21C696F440 │ │ │ │ │ -312B0CCAD810BF070DF8FC281E8198EB20A7FF9C9BCD291D74BC75EE46799485 │ │ │ │ │ -1AB2AE36B7E525034D146A856AF3BD9057A0033C08B606B89DD130548950C93D │ │ │ │ │ -94A8C92C47A34A791B1C108D2F36E899B79358B8081CCFC3D1A2F0521E4E2AE4 │ │ │ │ │ -7F500D6F2A53E5393E44201287225912590ABC738E8726622B67C3425639CCFB │ │ │ │ │ -F450B78A4918 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004B9BA1CC │ │ │ │ │ +580D3C6BDA4DC1B80B4365F1C80512453FC5316EC2D928FB731C3D6403E3C18B │ │ │ │ │ +E8424D644DF5E9A2134229C5C91CA68DB8E85BA2BB40F538F585DA6FA4037718 │ │ │ │ │ +B8053EBBA1E765346BCD5BDAA6C38115D31611D8A87A2238C145F2DA2F92E4DF │ │ │ │ │ +3987BD9C4D2A3D460E8941A68B125BCD9EE4F9FD262C4C8A71F47A2C81975635 │ │ │ │ │ +F1B981C274C53FA2ACCDE4C9D0A7C62D6C1EFF91CFC6712CA6A9F333C9564FCB │ │ │ │ │ +2A70F0AD715A79B10A08AB069E2A3C93BC0AED19D0CA10134B8DDDE8AF548DB2 │ │ │ │ │ +3A4AAA9C29682CF135BB767DAA16169A127EB50A7EECEB6480CF56A7D0F8AC56 │ │ │ │ │ +4A5090B3D75A790372886AF568D94C8165975A05BFBFDF1FFBA45F70700BB9E0 │ │ │ │ │ +57F3249EF9E9C8AD9CBCF6E4FD592DC4CDD2D7864F7C8A3FA6FC44C25C0CE7E1 │ │ │ │ │ +299F8A90B32B75DEA28917531621E1E7E0ECEE9E01665DEE99FBCF3EC3F30686 │ │ │ │ │ +513D7CBA745E660502603865D5A3E82D24B3F94B2884B21DC53AED87F49380E0 │ │ │ │ │ +68EE79C580931308DA762670C1F86F07FFB479773CD9C5DE6F22980DEC973D1C │ │ │ │ │ +A1E162D73932561BAAB24DE51DC8708291B666B36BABCA1FEDB6DD9C22572914 │ │ │ │ │ +7194DA044319F362452D53DD4D9A59134838E540F1E23805CEF53FF4F7519385 │ │ │ │ │ +1FAE3061F94369FEB1232BDA2E2A281E6972FB4524EFA37A598E7CDC097683EA │ │ │ │ │ +1B609952AEC0799B4711AAAB22D6B1D5CC729DE70897FDDC48AF0A12E40FFE30 │ │ │ │ │ +6528C601E68E8CFA4BBF897CF89DB712DE108DD1F084EFD917BFD9A70A74EB8F │ │ │ │ │ +D0D5B43CCC30373A5E871F18A969D01C69C2B4377622A0C8C4D7C4C28DDE5586 │ │ │ │ │ +BD17D5D640A6F396BD41993BD1932EE10953847F82F7BB36480B67A4F69F0763 │ │ │ │ │ +69423D1803B7BB60594ABEEE9578076639B84D8323F56104438803D45402FEE3 │ │ │ │ │ +045DAB16C4459DA9BBE01D0385CC771FB8DABDD8A9D280C18553F92FE6591CFD │ │ │ │ │ +26B82F28E6673BD823598D3F6CE03BEE04D9A21ED908DFC4F640227C148F133D │ │ │ │ │ +D32113275297C16EBCC9028AFD9102DE50E9CF67E7CF8C42BB8E73D1DAF8A5E2 │ │ │ │ │ +EF5979426229664A990DEF980A7038D2F229789D4F6EDBE1FB81BEC1A1BB14D7 │ │ │ │ │ +882515C62660E8877BE942712D57B86A2E19995AF087DECB7FD5208583C020AE │ │ │ │ │ +FEC86A2826530AD855006225300E4655F443C9360A8BAC96B5B096DDC9B12EDF │ │ │ │ │ +C862215AD6C432CF345FE701757E4EBB8C65F46912CB0F4DEF53672F7298D8F7 │ │ │ │ │ +EE51A9C5DE689A8D36956B7F0410893C0998DB03B73B4024CB046F8F6B32E07F │ │ │ │ │ +CD28A68AFB7152E45F1021DCD520D8A429FCDCA4B8054BAF0B48C4443280F198 │ │ │ │ │ +3360B078E6DEC37772DA8B629CFFD1534E8AA10E26B0BC58E92B9BF280C8EE45 │ │ │ │ │ +618EECDE904249F5A2010DC55D1028DFF4F058260B2B0A46541D6157970F44BD │ │ │ │ │ +D7483802D56A81184119DDBC914E8E394CBEEB506B61BB1CE2A3465252E5D8A3 │ │ │ │ │ +6BDD2D067E69D4ECEFC7D5568378F5F8B38EAFF138014185FE19DF7358A7A780 │ │ │ │ │ +3BE0E2CCD1561113F2F2319BDB503230DD0866121604710CEBBAA659ABFC010B │ │ │ │ │ +5CC40E5807F461D87E75BDC6AD96BCEF62AF668D48D7A76D08B57650F35CF609 │ │ │ │ │ +C0F791AEBEB75E29FA69596BAB419804AECE0F0238AAE64A6C13A22EBF4E3EAC │ │ │ │ │ +3570DECE85F54064486B2364D63E94FEB7C16350CDA318510A45C8848DB470ED │ │ │ │ │ +BFAFD2365681D65CFF3E6C1B4B7C8AE3066F96E819D05B97F3A6C2BFF8A72978 │ │ │ │ │ +EEB7F632FF604AD003A3CCA5A0465D53033A646E8082D3491EDECA3DA1A0E1BB │ │ │ │ │ +64BF36946520438D2EE72FA9EB1CEEDF56510AADA55A8DE280E23C904E0810FA │ │ │ │ │ +A3177CF684F06A4042DE4CD4AB21E2F0616153BEEE58EBBD89911FA43BC52969 │ │ │ │ │ +230C8137DB34C13E147B06C7A3875A931E1AC127E7D3EA0DF8346B6971F80901 │ │ │ │ │ +DC37F2DE1A0B81FD93CA3B5EB9B29ECABA1492901B1BA261DAB872FB3431C718 │ │ │ │ │ +9C9CDA7864908CD773864908DEB44E343221C2C4C335341789A46325D94C767C │ │ │ │ │ +740E3B60CE6D452A3A665967F568671FD7DD460B404B9C3D2EDCD47A336AA2C7 │ │ │ │ │ +BB0B1AC3823978F610629EF7AB526098A7EE7076F50A146D8134BA2DEC1B8ACF │ │ │ │ │ +68A7E4A9B7BE17FB71480516F2D6A8866E56CFD7C7A41311F48DDDD9887DACB8 │ │ │ │ │ +73FDAF5F25E956AFB0A9D530DE2E1128F006AAC9A78715BA2F90C8FED3729BFA │ │ │ │ │ +BDDD4098F870A27A91A0CB540D166FF86A442E95C9C361FD23378A2A138EAFB8 │ │ │ │ │ +D7050B486E1CB95068D890BCCD669456F3385C8F1793CE545099421368FE0F46 │ │ │ │ │ +53137AD2B65030B19CE7FF6B1669DB7A3C440AEF27149780E36C7097B7A8B71B │ │ │ │ │ +8789EECFA9A70B1F9695BB5D94E9A7D341291C1CA1BDEF4BE3EFCB8234CE9FFD │ │ │ │ │ +E1C4963CF919780129FA60162FEAA8AE97328F4BA14D949057A3EE74214F2D29 │ │ │ │ │ +51E7BE584446F6702F39957AE455CF8AF0C36AADAA39B53553D923CA5E9D4988 │ │ │ │ │ +76701B4F77DAE5185AC29900 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -5612,44 +5615,44 @@ │ │ │ │ │ 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 23[45 19[83 18[25 │ │ │ │ │ -5[45 1[45 45 45 3[25 44[{}9 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 62 69 2[68 6[28 │ │ │ │ │ -11[28 33 45[{}31 90.9091 /CMTI10 rf /Fm 206[35 49[{}1 │ │ │ │ │ -66.4176 /CMR8 rf /Fn 133[48 48 48 48 48 48 48 48 48 48 │ │ │ │ │ -48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 1[48 │ │ │ │ │ -1[48 1[48 3[48 48 48 48 48 2[48 48 48 48 48 48 1[48 48 │ │ │ │ │ -48 48 48 48 48 48 48 2[48 48 48 48 48 48 1[48 1[48 1[48 │ │ │ │ │ -48 48 48 48 48 48 48 48 48 48 48 2[48 37[{}70 90.9091 │ │ │ │ │ -/CMTT10 rf /Fo 131[91 1[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 68 68 66 51 2[62 71 68 1[57 2[33 68 71 59 │ │ │ │ │ -62 69 66 64 68 1[43 1[71 1[25 25 45 45 45 45 45 45 45 │ │ │ │ │ -45 45 45 1[25 30 25 2[35 35 25 4[45 20[51 51 53 11[{}72 │ │ │ │ │ -90.9091 /CMR10 rf /Fp 135[123 3[90 1[95 1[129 116 129 │ │ │ │ │ -3[71 1[129 2[106 129 103 129 113 23[87 1[183 5[175 6[65 │ │ │ │ │ -58[{}17 206.559 /CMBX12 rf /Fq 141[106 1[106 7[106 6[106 │ │ │ │ │ -25[106 71[{}5 206.559 /CMTT12 rf /Fr 139[75 1[79 1[108 │ │ │ │ │ -7[108 2[88 3[94 29[140 17[97 49[{}8 172.188 /CMBX12 rf │ │ │ │ │ -end │ │ │ │ │ +46[{}27 119.552 /CMBX12 rf /Fe 138[51 6[51 8[40 26[47 │ │ │ │ │ +15[25 4[45 1[45 45 1[45 3[25 44[{}10 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 │ │ │ │ │ +62 69 2[68 6[28 11[28 33 45[{}31 90.9091 /CMTI10 rf /Fm │ │ │ │ │ +206[35 49[{}1 66.4176 /CMR8 rf /Fn 133[48 48 48 48 48 │ │ │ │ │ +48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 │ │ │ │ │ +48 48 48 1[48 1[48 1[48 3[48 48 48 48 48 2[48 48 48 48 │ │ │ │ │ +48 48 1[48 48 48 48 48 48 48 48 48 2[48 48 48 48 48 48 │ │ │ │ │ +1[48 1[48 1[48 48 48 48 48 48 48 48 48 48 48 48 2[48 │ │ │ │ │ +37[{}70 90.9091 /CMTT10 rf /Fo 131[91 1[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 68 68 66 51 2[62 71 68 1[57 │ │ │ │ │ +2[33 68 71 59 62 69 66 64 68 1[43 1[71 1[25 25 45 45 │ │ │ │ │ +45 45 45 45 45 45 45 45 1[25 30 25 2[35 35 25 4[45 20[51 │ │ │ │ │ +51 53 11[{}72 90.9091 /CMR10 rf /Fp 135[123 3[90 1[95 │ │ │ │ │ +1[129 116 129 3[71 1[129 2[106 129 103 129 113 23[87 │ │ │ │ │ +1[183 5[175 6[65 58[{}17 206.559 /CMBX12 rf /Fq 141[106 │ │ │ │ │ +1[106 7[106 6[106 25[106 71[{}5 206.559 /CMTT12 rf /Fr │ │ │ │ │ +139[75 1[79 1[108 7[108 2[88 3[94 29[140 17[97 49[{}8 │ │ │ │ │ +172.188 /CMBX12 rf end │ │ │ │ │ %%EndProlog │ │ │ │ │ %%BeginSetup │ │ │ │ │ %%Feature: *Resolution 600dpi │ │ │ │ │ TeXDict begin │ │ │ │ │ %%BeginPaperSize: Letter │ │ │ │ │ /setpagedevice where │ │ │ │ │ { pop << /PageSize [612 792] >> setpagedevice } │ │ │ │ │ @@ -5741,17 +5744,17 @@ │ │ │ │ │ b(=)d Fj(w)r Fo(\()p Fk(u)p Fo(\))c Fi(\001)g Fj(w)r │ │ │ │ │ Fo(\()p Fk(v)q Fo(\))p 0 5322 1560 4 v 104 5375 a Fh(1)138 │ │ │ │ │ 5407 y Fg(The)26 b Ff(EGraph)h Fg(ob)t(ject)g(represen)n(ts)e(a)h │ │ │ │ │ (graph)g(of)h(the)e(matrix,)h(but)f(stores)h(a)g(list)h(of)f(co)n(v)n │ │ │ │ │ (ering)g(cliques)g(in)g(an)g Ff(IVL)g Fg(ob)t(ject.)1927 │ │ │ │ │ 5656 y Fo(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fo(2)p 136 100 1202 4 v │ │ │ │ │ -1384 w Fn(Graph)29 b Fe(:)40 b Fl(DRAFT)30 b Fe(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2699 100 V 0 399 a Fo(and)36 b(it)i(is)f(the)g(smallest)h(graph)e(with) │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fo(2)p 136 100 1195 4 v │ │ │ │ │ +1377 w Fn(Graph)29 b Fe(:)40 b Fl(DRAFT)30 b Fe(June)g(3,)h(2025)p │ │ │ │ │ +2706 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 │ │ │ │ │ @@ -5807,42 +5810,42 @@ │ │ │ │ │ (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 1202 4 v 1383 100 a Fn(Graph)29 │ │ │ │ │ -b Fe(:)41 b Fl(DRAFT)121 b Fe(Ma)m(y)31 b(1,)g(2024)p │ │ │ │ │ -2651 100 V 1202 w Fo(3)0 399 y Fa(1.2.1)112 b(Basic)38 │ │ │ │ │ -b(metho)s(ds)0 605 y Fo(As)d(usual,)h(there)f(are)g(four)f(basic)h │ │ │ │ │ -(metho)s(ds)g(to)g(supp)s(ort)e(ob)5 b(ject)36 b(creation,)i(setting)e │ │ │ │ │ -(default)f(\014elds,)h(clearing)0 718 y(an)m(y)31 b(allo)s(cated)h │ │ │ │ │ -(data,)f(and)f(free'ing)h(the)g(ob)5 b(ject.)111 982 │ │ │ │ │ -y(1.)46 b Fn(Graph)h(*)g(Graph_new)e(\()j(void)e(\))i(;)227 │ │ │ │ │ -1143 y Fo(This)28 b(metho)s(d)g(simply)h(allo)s(cates)i(storage)f(for)e │ │ │ │ │ -(the)h Fn(Graph)f Fo(structure)g(and)g(then)g(sets)i(the)f(default)f │ │ │ │ │ -(\014elds)227 1256 y(b)m(y)j(a)f(call)i(to)f Fn(Graph)p │ │ │ │ │ -953 1256 29 4 v 33 w(setDefaultFields\(\))p Fo(.)111 │ │ │ │ │ -1465 y(2.)46 b Fn(void)h(Graph_setDefaultFields)42 b(\()47 │ │ │ │ │ -b(Graph)f(*graph)h(\))g(;)227 1626 y Fo(This)24 b(metho)s(d)g(sets)h │ │ │ │ │ -(the)f(structure's)g(\014elds)g(to)h(default)g(v)-5 b(alues:)38 │ │ │ │ │ -b Fn(type)p Fo(,)25 b Fn(nvtx)p Fo(,)f Fn(nvbnd)p Fo(,)h │ │ │ │ │ -Fn(nedges)p Fo(,)f Fn(totwght)227 1739 y Fo(and)30 b │ │ │ │ │ -Fn(totewght)e Fo(are)j(all)g(zero,)h(and)d Fn(adjIVL)p │ │ │ │ │ -Fo(,)g Fn(vwghts)g Fo(and)h Fn(ewghtIVL)e Fo(are)j(all)g │ │ │ │ │ -Fn(NULL)p Fo(.)227 1900 y Fl(Err)-5 b(or)34 b(che)-5 │ │ │ │ │ -b(cking:)40 b Fo(If)30 b Fn(graph)f Fo(is)i Fn(NULL)p │ │ │ │ │ -Fo(,)e(an)h(error)g(message)i(is)e(prin)m(ted)g(and)g(the)h(program)f │ │ │ │ │ -(exits.)111 2109 y(3.)46 b Fn(void)h(Graph_clearData)d(\()j(Graph)f │ │ │ │ │ -(*graph)g(\))i(;)227 2269 y Fo(This)33 b(metho)s(d)f(clears)j(the)e │ │ │ │ │ -(data)h(for)f(the)h(ob)5 b(ject.)50 b(If)33 b Fn(adjIVL)e │ │ │ │ │ -Fo(is)j(not)f Fn(NULL)p Fo(,)g(then)g Fn(IVL)p 3300 2269 │ │ │ │ │ -V 33 w(free\(adjIVL\))227 2382 y Fo(is)46 b(called)i(to)e(free)h(the)f │ │ │ │ │ -Fn(IVL)f Fo(ob)5 b(ject.)89 b(If)45 b Fn(ewghtIVL)f Fo(is)i(not)g │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1195 4 v 1376 100 a Fn(Graph)29 │ │ │ │ │ +b Fe(:)41 b Fl(DRAFT)121 b Fe(June)29 b(3,)i(2025)p 2658 │ │ │ │ │ +100 V 1195 w Fo(3)0 399 y Fa(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ │ +605 y Fo(As)d(usual,)h(there)f(are)g(four)f(basic)h(metho)s(ds)g(to)g │ │ │ │ │ +(supp)s(ort)e(ob)5 b(ject)36 b(creation,)i(setting)e(default)f │ │ │ │ │ +(\014elds,)h(clearing)0 718 y(an)m(y)31 b(allo)s(cated)h(data,)f(and)f │ │ │ │ │ +(free'ing)h(the)g(ob)5 b(ject.)111 982 y(1.)46 b Fn(Graph)h(*)g │ │ │ │ │ +(Graph_new)e(\()j(void)e(\))i(;)227 1143 y Fo(This)28 │ │ │ │ │ +b(metho)s(d)g(simply)h(allo)s(cates)i(storage)f(for)e(the)h │ │ │ │ │ +Fn(Graph)f Fo(structure)g(and)g(then)g(sets)i(the)f(default)f(\014elds) │ │ │ │ │ +227 1256 y(b)m(y)j(a)f(call)i(to)f Fn(Graph)p 953 1256 │ │ │ │ │ +29 4 v 33 w(setDefaultFields\(\))p Fo(.)111 1465 y(2.)46 │ │ │ │ │ +b Fn(void)h(Graph_setDefaultFields)42 b(\()47 b(Graph)f(*graph)h(\))g │ │ │ │ │ +(;)227 1626 y Fo(This)24 b(metho)s(d)g(sets)h(the)f(structure's)g │ │ │ │ │ +(\014elds)g(to)h(default)g(v)-5 b(alues:)38 b Fn(type)p │ │ │ │ │ +Fo(,)25 b Fn(nvtx)p Fo(,)f Fn(nvbnd)p Fo(,)h Fn(nedges)p │ │ │ │ │ +Fo(,)f Fn(totwght)227 1739 y Fo(and)30 b Fn(totewght)e │ │ │ │ │ +Fo(are)j(all)g(zero,)h(and)d Fn(adjIVL)p Fo(,)g Fn(vwghts)g │ │ │ │ │ +Fo(and)h Fn(ewghtIVL)e Fo(are)j(all)g Fn(NULL)p Fo(.)227 │ │ │ │ │ +1900 y Fl(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fo(If)30 │ │ │ │ │ +b Fn(graph)f Fo(is)i Fn(NULL)p Fo(,)e(an)h(error)g(message)i(is)e(prin) │ │ │ │ │ +m(ted)g(and)g(the)h(program)f(exits.)111 2109 y(3.)46 │ │ │ │ │ +b Fn(void)h(Graph_clearData)d(\()j(Graph)f(*graph)g(\))i(;)227 │ │ │ │ │ +2269 y Fo(This)33 b(metho)s(d)f(clears)j(the)e(data)h(for)f(the)h(ob)5 │ │ │ │ │ +b(ject.)50 b(If)33 b Fn(adjIVL)e Fo(is)j(not)f Fn(NULL)p │ │ │ │ │ +Fo(,)g(then)g Fn(IVL)p 3300 2269 V 33 w(free\(adjIVL\))227 │ │ │ │ │ +2382 y Fo(is)46 b(called)i(to)e(free)h(the)f Fn(IVL)f │ │ │ │ │ +Fo(ob)5 b(ject.)89 b(If)45 b Fn(ewghtIVL)f Fo(is)i(not)g │ │ │ │ │ Fn(NULL)p Fo(,)f(then)h Fn(IVL)p 3097 2382 V 34 w(free\(ewghtIVL\))c │ │ │ │ │ Fo(is)227 2495 y(called)k(to)g(free)f(the)g Fn(IVL)f │ │ │ │ │ Fo(ob)5 b(ject.)85 b(If)45 b Fn(vwghts)e Fo(is)i(not)g │ │ │ │ │ Fn(NULL)p Fo(,)f(then)g Fn(IVfree\(vwghts\))d Fo(is)k(called)h(to)227 │ │ │ │ │ 2608 y(free)34 b(the)f Fn(int)f Fo(v)m(ector.)51 b(The)33 │ │ │ │ │ b(structure's)f(\014elds)h(are)h(then)f(set)g(to)h(their)f(default)h(v) │ │ │ │ │ -5 b(alues)33 b(with)g(a)h(call)g(to)227 2721 y Fn(Graph)p │ │ │ │ │ @@ -5884,17 +5887,17 @@ │ │ │ │ │ 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 1202 4 v │ │ │ │ │ -1384 w Fn(Graph)29 b Fe(:)40 b Fl(DRAFT)30 b Fe(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2699 100 V 111 399 a Fo(2.)46 b Fn(void)h(Graph_init2)e(\()i(Graph)f │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fo(4)p 136 100 1195 4 v │ │ │ │ │ +1377 w Fn(Graph)29 b Fe(:)40 b Fl(DRAFT)30 b Fe(June)g(3,)h(2025)p │ │ │ │ │ +2706 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 │ │ │ │ │ @@ -5974,17 +5977,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 1202 4 v 1383 100 a Fn(Graph)29 │ │ │ │ │ -b Fe(:)41 b Fl(DRAFT)121 b Fe(Ma)m(y)31 b(1,)g(2024)p │ │ │ │ │ -2651 100 V 1202 w Fo(5)227 399 y Fl(Err)-5 b(or)33 b(che)-5 │ │ │ │ │ +TeXDict begin 5 4 bop 91 100 1195 4 v 1376 100 a Fn(Graph)29 │ │ │ │ │ +b Fe(:)41 b Fl(DRAFT)121 b Fe(June)29 b(3,)i(2025)p 2658 │ │ │ │ │ +100 V 1195 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 │ │ │ │ │ @@ -6044,17 +6047,17 @@ │ │ │ │ │ 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 1202 4 v │ │ │ │ │ -1384 w Fn(Graph)29 b Fe(:)40 b Fl(DRAFT)30 b Fe(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2699 100 V 111 399 a Fo(3.)46 b Fn(int)h(Graph_adjAndSize)d(\()j(Graph) │ │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fo(6)p 136 100 1195 4 v │ │ │ │ │ +1377 w Fn(Graph)29 b Fe(:)40 b Fl(DRAFT)30 b Fe(June)g(3,)h(2025)p │ │ │ │ │ +2706 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 │ │ │ │ │ @@ -6140,17 +6143,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 1202 4 v 1383 100 a Fn(Graph)29 │ │ │ │ │ -b Fe(:)41 b Fl(DRAFT)121 b Fe(Ma)m(y)31 b(1,)g(2024)p │ │ │ │ │ -2651 100 V 1202 w Fo(7)227 399 y Fl(Err)-5 b(or)32 b(che)-5 │ │ │ │ │ +TeXDict begin 7 6 bop 91 100 1195 4 v 1376 100 a Fn(Graph)29 │ │ │ │ │ +b Fe(:)41 b Fl(DRAFT)121 b Fe(June)29 b(3,)i(2025)p 2658 │ │ │ │ │ +100 V 1195 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 │ │ │ │ │ @@ -6232,17 +6235,17 @@ │ │ │ │ │ b Fn(1)f Fo(is)g(returned.)40 b(If)30 b(an)g(IO)g(error)g(is)g(encoun)m │ │ │ │ │ (tered)h(from)f Fn(fprintf)p Fo(,)f(zero)i(is)f(returned.)227 │ │ │ │ │ 5407 y Fl(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fo(If)30 │ │ │ │ │ b Fn(graph)f Fo(or)i Fn(fp)e Fo(are)i Fn(NULL)e Fo(an)i(error)f │ │ │ │ │ (message)h(is)g(prin)m(ted)e(and)h(zero)h(is)g(returned.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 8 8 │ │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fo(8)p 136 100 1202 4 v │ │ │ │ │ -1384 w Fn(Graph)29 b Fe(:)40 b Fl(DRAFT)30 b Fe(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2699 100 V 111 399 a Fo(6.)46 b Fn(int)h(Graph_writeToBinaryFile)42 │ │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fo(8)p 136 100 1195 4 v │ │ │ │ │ +1377 w Fn(Graph)29 b Fe(:)40 b Fl(DRAFT)30 b Fe(June)g(3,)h(2025)p │ │ │ │ │ +2706 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 │ │ │ │ │ @@ -6305,19 +6308,19 @@ │ │ │ │ │ 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 1202 4 v 1383 100 a Fn(Graph)29 │ │ │ │ │ -b Fe(:)41 b Fl(DRAFT)121 b Fe(Ma)m(y)31 b(1,)g(2024)p │ │ │ │ │ -2651 100 V 1202 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 │ │ │ │ │ +TeXDict begin 9 8 bop 91 100 1195 4 v 1376 100 a Fn(Graph)29 │ │ │ │ │ +b Fe(:)41 b Fl(DRAFT)121 b Fe(June)29 b(3,)i(2025)p 2658 │ │ │ │ │ +100 V 1195 w Fo(9)337 399 y Fc(\210)45 b Fo(The)28 b │ │ │ │ │ +Fn(msglvl)f Fo(parameter)i(determines)g(the)g(amoun)m(t)g(of)f(output)h │ │ │ │ │ +(|)f(taking)i Fn(msglvl)46 b(>=)h(3)28 b Fo(means)427 │ │ │ │ │ 511 y(that)j(all)h(ob)5 b(jects)31 b(are)f(written)h(to)g(the)f │ │ │ │ │ (message)i(\014le.)337 660 y Fc(\210)45 b Fo(The)33 b │ │ │ │ │ Fn(msgFile)e Fo(parameter)j(determines)f(the)h(message)g(\014le)f(|)h │ │ │ │ │ (if)f Fn(msgFile)e Fo(is)i Fn(stdout)p Fo(,)g(then)g(the)427 │ │ │ │ │ 773 y(message)27 b(\014le)f(is)g Fl(stdout)p Fo(,)i(otherwise)e(a)h │ │ │ │ │ (\014le)f(is)f(op)s(ened)g(with)h Fl(app)-5 b(end)28 │ │ │ │ │ b Fo(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 886 │ │ │ │ │ @@ -6398,17 +6401,17 @@ │ │ │ │ │ g(graph)f(to)i(a)f(formatted)h(\014le)f(\(if)427 5101 │ │ │ │ │ y Fn(outGraphFile)24 b Fo(is)j(of)h(the)f(form)g Fn(*.graphf)p │ │ │ │ │ Fo(\),)f(or)h(a)h(binary)f(\014le)g(\(if)g Fn(outGraphFile)d │ │ │ │ │ Fo(is)k(of)f(the)g(form)427 5214 y Fn(*.graphb)p Fo(\).)111 │ │ │ │ │ 5407 y(4.)46 b Fn(mkGridGraph)f(msglvl)h(msgFile)g(stencil)g(n1)h(n2)g │ │ │ │ │ (n3)g(outFile)p eop end │ │ │ │ │ %%Page: 10 10 │ │ │ │ │ -TeXDict begin 10 9 bop 0 100 a Fo(10)p 182 100 1179 4 │ │ │ │ │ -v 1361 w Fn(Graph)29 b Fe(:)41 b Fl(DRAFT)30 b Fe(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2721 100 V 227 399 a Fo(This)d(driv)m(er)h(program)g(creates)h(a)f │ │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fo(10)p 182 100 1172 4 │ │ │ │ │ +v 1354 w Fn(Graph)29 b Fe(:)41 b Fl(DRAFT)30 b Fe(June)g(3,)h(2025)p │ │ │ │ │ +2728 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 │ │ │ │ │ @@ -6477,18 +6480,18 @@ │ │ │ │ │ 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 1179 4 v 1360 100 a Fn(Graph)29 │ │ │ │ │ -b Fe(:)41 b Fl(DRAFT)121 b Fe(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2629 100 V 1179 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 │ │ │ │ │ +TeXDict begin 11 10 bop 91 100 1172 4 v 1353 100 a Fn(Graph)29 │ │ │ │ │ +b Fe(:)41 b Fl(DRAFT)121 b Fe(June)30 b(3,)h(2025)p 2636 │ │ │ │ │ +100 V 1172 w Fo(11)337 399 y Fc(\210)45 b Fo(The)37 b │ │ │ │ │ +Fn(inFile)f Fo(parameter)i(is)g(the)g(input)e(\014le)i(for)f(the)h │ │ │ │ │ Fn(Graph)e Fo(ob)5 b(ject.)64 b(It)37 b(m)m(ust)h(b)s(e)f(of)h(the)f │ │ │ │ │ (form)427 511 y Fn(*.graphf)18 b Fo(or)j Fn(*.graphb)p │ │ │ │ │ Fo(.)35 b(The)19 b Fn(Graph)g Fo(ob)5 b(ject)21 b(is)g(read)f(from)g │ │ │ │ │ (the)g(\014le)h(via)f(the)h Fn(Graph)p 3368 511 29 4 │ │ │ │ │ v 33 w(readFromFile\(\))427 624 y Fo(metho)s(d.)111 1065 │ │ │ │ │ y(7.)46 b Fn(testWirebasket)e(msglvl)i(msgFile)g(inGraphFile)f │ │ │ │ │ (inStagesFile)943 1178 y(outStagesFile)f(radius)227 1419 │ │ │ │ │ @@ -6544,17 +6547,17 @@ │ │ │ │ │ Fo(15)29 b(grid.)40 b(They)27 b(sho)m(w)h(the)h(stages)227 │ │ │ │ │ 5294 y(for)36 b Fn(radius)46 b(=)i(1)36 b Fo(on)g(the)g(left)h(and)f │ │ │ │ │ Fn(radius)46 b(=)i(2)35 b Fo(on)i(the)f(righ)m(t.)59 │ │ │ │ │ b(The)36 b(domains)g(are)g(3)25 b Fi(\002)f Fo(3)36 b(subgrids)227 │ │ │ │ │ 5407 y(whose)30 b(v)m(ertices)i(ha)m(v)m(e)g(lab)s(els)f(equal)g(to)g │ │ │ │ │ (zero.)p eop end │ │ │ │ │ %%Page: 12 12 │ │ │ │ │ -TeXDict begin 12 11 bop 0 100 a Fo(12)p 182 100 1179 │ │ │ │ │ -4 v 1361 w Fn(Graph)29 b Fe(:)41 b Fl(DRAFT)30 b Fe(Ma)m(y)i(1,)f(2024) │ │ │ │ │ -p 2721 100 V 429 1927 a @beginspecial 0 @llx 0 @lly 600 │ │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fo(12)p 182 100 1172 │ │ │ │ │ +4 v 1354 w Fn(Graph)29 b Fe(:)41 b Fl(DRAFT)30 b Fe(June)g(3,)h(2025)p │ │ │ │ │ +2728 100 V 429 1927 a @beginspecial 0 @llx 0 @lly 600 │ │ │ │ │ @urx 600 @ury 1943 @rwi 1943 @rhi @setspecial │ │ │ │ │ %%BeginDocument: ../../Graph/doc/rad1.eps │ │ │ │ │ %!PS-Adobe-2.0 EPSF-1.2 │ │ │ │ │ %%BoundingBox: 0.0 0.0 600.0 600.0 │ │ │ │ │ /radius 15 def │ │ │ │ │ /Helvetica findfont 18.75 scalefont setfont │ │ │ │ │ /M {moveto} def │ │ │ │ │ ├── ps2ascii {} │ │ │ │ │ │ @@ -27,15 +27,15 @@ │ │ │ │ │ │ weight vertices in the weighted vertex. The weight of an edge is w(u,v), the number of (u,v) edges │ │ │ │ │ │ in the unit weight graph where u ∈ u and v ∈ v. │ │ │ │ │ │ Thenaturalcompressedgraph[?],[?]isveryimportantformanymatricesfromstructralanalysis │ │ │ │ │ │ and computational fluid mechanics. This type of graph has one special property: │ │ │ │ │ │ w(u,v) = w(u)·w(v) │ │ │ │ │ │ 1The EGraph object represents a graph of the matrix, but stores a list of covering cliques in an IVL object. │ │ │ │ │ │ 1 │ │ │ │ │ │ - 2 Graph : DRAFT May 1, 2024 │ │ │ │ │ │ + 2 Graph : DRAFT June 3, 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 May 1, 2024 3 │ │ │ │ │ │ + Graph : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 4 Graph : DRAFT June 3, 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 May 1, 2024 5 │ │ │ │ │ │ + Graph : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 6 Graph : DRAFT June 3, 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 May 1, 2024 7 │ │ │ │ │ │ + Graph : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 8 Graph : DRAFT June 3, 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 May 1, 2024 9 │ │ │ │ │ │ + Graph : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 10 Graph : DRAFT June 3, 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 May 1, 2024 11 │ │ │ │ │ │ + Graph : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 12 Graph : DRAFT June 3, 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.05.01:0544 │ │ │ │ │ +%DVIPSSource: TeX output 2025.06.03:1221 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -2423,21 +2423,22 @@ │ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ │ /UnderlineThickness 50 def │ │ │ │ │ end readonly def │ │ │ │ │ /Encoding 256 array │ │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ │ dup 44 /comma put │ │ │ │ │ dup 48 /zero put │ │ │ │ │ -dup 49 /one put │ │ │ │ │ dup 50 /two put │ │ │ │ │ -dup 52 /four put │ │ │ │ │ +dup 51 /three put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 77 /M put │ │ │ │ │ -dup 97 /a put │ │ │ │ │ -dup 121 /y put │ │ │ │ │ +dup 74 /J put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ +dup 110 /n put │ │ │ │ │ +dup 117 /u put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ │ @@ -2618,68 +2619,70 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004ACD1870 │ │ │ │ │ -A5EA947858F5795870BFE1343AD803FB854BF8F5A4E794E8EC57BE41DB5B8734 │ │ │ │ │ -13E47950F29A81EA0C81EA798863883D7F41F78325CA190CBBFFE822AE494550 │ │ │ │ │ -4BE83703071FC9512D128927AF3F63CEF8F86ABE1E15D7B4DDD39576E7DFF45E │ │ │ │ │ -3CB4115AAB1830DE8647B915DB4BEBEB5235C281E098B899BAB951D8D5798F01 │ │ │ │ │ -7F7C47336D31438E5126738AFEAB29E9A7CBE06DE4DD604477B542D2620DFD58 │ │ │ │ │ -28FE34238572F23C5A8EB7ACEE1E154DA13FC1A5AA67A3BA8C5CDFB2B80312C9 │ │ │ │ │ -BC9FAE56D08DDFA9498E6EF0D0F6BD18B3923E0B670B0740528BC843610736CB │ │ │ │ │ -80228C105C2F72C3C22D610C3D8C268DEEA2AEEE3221E198E79FE2966487360C │ │ │ │ │ -84AE08AC326F48B21447652121B1EB68AF857B8628F27BB4ED00F273E0DD044A │ │ │ │ │ -7D11A5BFAAC0A82328444CC9DD90167681B07D55CE28655F40C21250A226DEAB │ │ │ │ │ -2D46FFB680CB9242BE192AC0E55A44D45709FA6DE638C130D92C4E9B07BC3D61 │ │ │ │ │ -25CC2F0A7ED4F3574242FFE4461272EB1401266EEF551E0E2B0EF51FA8F250EC │ │ │ │ │ -FD9AFB6F5A0CC442B566BC24400133E3E9B9A9FC801CEF284FD2B3ECA43421FA │ │ │ │ │ -51E5D1EFE7BEAA96658362C438A0A5A6DCBC664A85EF88037B42355195B9D19C │ │ │ │ │ -7961D5F63B123451B298CD52C144FCD4F3641A823FBA14605E2DFD845E89102C │ │ │ │ │ -4E345CFD80E3EE6F097095A84C941FFC91B234F3615E4EE4C5D564284656E364 │ │ │ │ │ -AB9C4D1DE05F8FD065CA6064893F0CF3A3A501D59EF6568D05D818A010D06518 │ │ │ │ │ -E2C20418ADD1E652867F265084A27A5FE0C32213C59FFC3A84EDC89382521E5B │ │ │ │ │ -8AF66D76601F83C5C33CC9CF968C77B66F1FA074AC3DAD8E453C9264D03969EF │ │ │ │ │ -9E387BB3BEAA4BF0A9D88BA2CE6094E8996A3752A657E322A57AF006444BF516 │ │ │ │ │ -501C43CAA1BA7F16A3B6E4D3EBDECCCC19564DF18FB68194C132238A5441A21A │ │ │ │ │ -F52285CA1CA94A4BEC61EB509FA35EA5E393D662D938F4291F37EB7C2D5815BE │ │ │ │ │ -446813E1CFD06FFFFF2C4355C9DAFA48E765F4CC5DE4B9E37CFFB75E7A0B6F4B │ │ │ │ │ -4E412496F9C27DF4BDD90A869F0EBD81A57AE0B84051450A5A3E06CB9930DB2C │ │ │ │ │ -7C2DDB774BE870AEFCC9F4F067BE243FF3FD4B5C71B96C607DC4975973AF2650 │ │ │ │ │ -E7DF2BE3523A370EEDD07B5456B96E372ED10510CE677C044E609F21E93652FD │ │ │ │ │ -33CE612F587530D12214A3719CDB170C315B5D8763D5D4C67B5CAE90309E77AC │ │ │ │ │ -B45EB356C13A7BDE0D7320A9849CA357E30D7CF1085FFD70071932C3180AFC28 │ │ │ │ │ -B093016BA3F49A3878C34BB4A8727A441EB6CFC1A73F2313A7BF8D32EDF27E62 │ │ │ │ │ -EBEBC058FBA80B136FD2DE05C673B66482224ECEC63EDFB519AC13B5CC6624A6 │ │ │ │ │ -B3FD79037DA3851E93A386115852DBA88B176F21EDDB5386DC7C993C4210B28F │ │ │ │ │ -438131A586E34A09724E7CE60139F8247BFF14D2674805B3BD454C134728A43E │ │ │ │ │ -139E0AF71A7AC5CE42041EC83FD454B00AD29959FCF007789FFAF2D3492DCA4B │ │ │ │ │ -566EAFE97591ABC51CD0CD9BCD64E285FB823E41AA817E96B2B224005DAA4E15 │ │ │ │ │ -2141DB436B9D3FBA4EE4C876FD19A2E5133106FE2B9F704CB9614FCDC91B7950 │ │ │ │ │ -57053F45A5ED993B48189AAFAD5289F97AE2B0AEB5606579F6BD75F743EDB5B6 │ │ │ │ │ -5AA8F8A64CE507A47325081B3A013DB1BD596CDD3A83D2F29B070D6F9C57496E │ │ │ │ │ -14DF3F0F731C3BB00F2CE3D4BBACF1320322195D1DEA7A545BB4725BD1C6EC3D │ │ │ │ │ -63250C72B897741F8599D9D9BD2FB50EC80EFF2ECD6CE6603E95AABB45462ACF │ │ │ │ │ -12B005EE5979B6B05BCE9B97061686102349142A3CCC26D57F2A3283DD8B6E2A │ │ │ │ │ -98885E48C0D4A1A5C9612EDCB3B3D265E9B8CCCCA5D99F07F96C15B27D6A161F │ │ │ │ │ -936599E503C2859927201CACC31581AB7AB84F9EC9FFADC239F01DCC55940AB7 │ │ │ │ │ -FA884AA1EB6494C8E53DAD66E75A317428ACF9D943A74683BF547958F67D9E36 │ │ │ │ │ -F985EED50DEBCF255756A821927CB73848DCF167E96E975E959DE27FE7BA4FBA │ │ │ │ │ -D0EFC003F019D87572D6F9C73FC5B880C3EEDB7EF98E5EC3D25D6FE0015A6590 │ │ │ │ │ -E3C6EE632D7F6558B914609A8829CD1DEAB83A3F1207D5C3AAC9EAEA9DE1B4F8 │ │ │ │ │ -2375C5D4F630BCE13475F941ED2324D2CD4DCF2285298EAA4FFF89433D853860 │ │ │ │ │ -A974A9FC0808580FBDE7D02EDBB3D8C65BD3109AE8B359E96BFB7E21C696F440 │ │ │ │ │ -312B0CCAD810BF070DF8FC281E8198EB20A7FF9C9BCD291D74BC75EE46799485 │ │ │ │ │ -1AB2AE36B7E525034D146A856AF3BD9057A0033C08B606B89DD130548950C93D │ │ │ │ │ -94A8C92C47A34A791B1C108D2F36E899B79358B8081CCFC3D1A2F0521E4E2AE4 │ │ │ │ │ -7F500D6F2A53E5393E44201287225912590ABC738E8726622B67C3425639CCFB │ │ │ │ │ -F450B78A4918 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004B9BA1CC │ │ │ │ │ +580D3C6BDA4DC1B80B4365F1C80512453FC5316EC2D928FB731C3D6403E3C18B │ │ │ │ │ +E8424D644DF5E9A2134229C5C91CA68DB8E85BA2BB40F538F585DA6FA4037718 │ │ │ │ │ +B8053EBBA1E765346BCD5BDAA6C38115D31611D8A87A2238C145F2DA2F92E4DF │ │ │ │ │ +3987BD9C4D2A3D460E8941A68B125BCD9EE4F9FD262C4C8A71F47A2C81975635 │ │ │ │ │ +F1B981C274C53FA2ACCDE4C9D0A7C62D6C1EFF91CFC6712CA6A9F333C9564FCB │ │ │ │ │ +2A70F0AD715A79B10A08AB069E2A3C93BC0AED19D0CA10134B8DDDE8AF548DB2 │ │ │ │ │ +3A4AAA9C29682CF135BB767DAA16169A127EB50A7EECEB6480CF56A7D0F8AC56 │ │ │ │ │ +4A5090B3D75A790372886AF568D94C8165975A05BFBFDF1FFBA45F70700BB9E0 │ │ │ │ │ +57F3249EF9E9C8AD9CBCF6E4FD592DC4CDD2D7864F7C8A3FA6FC44C25C0CE7E1 │ │ │ │ │ +299F8A90B32B75DEA28917531621E1E7E0ECEE9E01665DEE99FBCF3EC3F30686 │ │ │ │ │ +513D7CBA745E660502603865D5A3E82D24B3F94B2884B21DC53AED87F49380E0 │ │ │ │ │ +68EE79C580931308DA762670C1F86F07FFB479773CD9C5DE6F22980DEC973D1C │ │ │ │ │ +A1E162D73932561BAAB24DE51DC8708291B666B36BABCA1FEDB6DD9C22572914 │ │ │ │ │ +7194DA044319F362452D53DD4D9A59134838E540F1E23805CEF53FF4F7519385 │ │ │ │ │ +1FAE3061F94369FEB1232BDA2E2A281E6972FB4524EFA37A598E7CDC097683EA │ │ │ │ │ +1B609952AEC0799B4711AAAB22D6B1D5CC729DE70897FDDC48AF0A12E40FFE30 │ │ │ │ │ +6528C601E68E8CFA4BBF897CF89DB712DE108DD1F084EFD917BFD9A70A74EB8F │ │ │ │ │ +D0D5B43CCC30373A5E871F18A969D01C69C2B4377622A0C8C4D7C4C28DDE5586 │ │ │ │ │ +BD17D5D640A6F396BD41993BD1932EE10953847F82F7BB36480B67A4F69F0763 │ │ │ │ │ +69423D1803B7BB60594ABEEE9578076639B84D8323F56104438803D45402FEE3 │ │ │ │ │ +045DAB16C4459DA9BBE01D0385CC771FB8DABDD8A9D280C18553F92FE6591CFD │ │ │ │ │ +26B82F28E6673BD823598D3F6CE03BEE04D9A21ED908DFC4F640227C148F133D │ │ │ │ │ +D32113275297C16EBCC9028AFD9102DE50E9CF67E7CF8C42BB8E73D1DAF8A5E2 │ │ │ │ │ +EF5979426229664A990DEF980A7038D2F229789D4F6EDBE1FB81BEC1A1BB14D7 │ │ │ │ │ +882515C62660E8877BE942712D57B86A2E19995AF087DECB7FD5208583C020AE │ │ │ │ │ +FEC86A2826530AD855006225300E4655F443C9360A8BAC96B5B096DDC9B12EDF │ │ │ │ │ +C862215AD6C432CF345FE701757E4EBB8C65F46912CB0F4DEF53672F7298D8F7 │ │ │ │ │ +EE51A9C5DE689A8D36956B7F0410893C0998DB03B73B4024CB046F8F6B32E07F │ │ │ │ │ +CD28A68AFB7152E45F1021DCD520D8A429FCDCA4B8054BAF0B48C4443280F198 │ │ │ │ │ +3360B078E6DEC37772DA8B629CFFD1534E8AA10E26B0BC58E92B9BF280C8EE45 │ │ │ │ │ +618EECDE904249F5A2010DC55D1028DFF4F058260B2B0A46541D6157970F44BD │ │ │ │ │ +D7483802D56A81184119DDBC914E8E394CBEEB506B61BB1CE2A3465252E5D8A3 │ │ │ │ │ +6BDD2D067E69D4ECEFC7D5568378F5F8B38EAFF138014185FE19DF7358A7A780 │ │ │ │ │ +3BE0E2CCD1561113F2F2319BDB503230DD0866121604710CEBBAA659ABFC010B │ │ │ │ │ +5CC40E5807F461D87E75BDC6AD96BCEF62AF668D48D7A76D08B57650F35CF609 │ │ │ │ │ +C0F791AEBEB75E29FA69596BAB419804AECE0F0238AAE64A6C13A22EBF4E3EAC │ │ │ │ │ +3570DECE85F54064486B2364D63E94FEB7C16350CDA318510A45C8848DB470ED │ │ │ │ │ +BFAFD2365681D65CFF3E6C1B4B7C8AE3066F96E819D05B97F3A6C2BFF8A72978 │ │ │ │ │ +EEB7F632FF604AD003A3CCA5A0465D53033A646E8082D3491EDECA3DA1A0E1BB │ │ │ │ │ +64BF36946520438D2EE72FA9EB1CEEDF56510AADA55A8DE280E23C904E0810FA │ │ │ │ │ +A3177CF684F06A4042DE4CD4AB21E2F0616153BEEE58EBBD89911FA43BC52969 │ │ │ │ │ +230C8137DB34C13E147B06C7A3875A931E1AC127E7D3EA0DF8346B6971F80901 │ │ │ │ │ +DC37F2DE1A0B81FD93CA3B5EB9B29ECABA1492901B1BA261DAB872FB3431C718 │ │ │ │ │ +9C9CDA7864908CD773864908DEB44E343221C2C4C335341789A46325D94C767C │ │ │ │ │ +740E3B60CE6D452A3A665967F568671FD7DD460B404B9C3D2EDCD47A336AA2C7 │ │ │ │ │ +BB0B1AC3823978F610629EF7AB526098A7EE7076F50A146D8134BA2DEC1B8ACF │ │ │ │ │ +68A7E4A9B7BE17FB71480516F2D6A8866E56CFD7C7A41311F48DDDD9887DACB8 │ │ │ │ │ +73FDAF5F25E956AFB0A9D530DE2E1128F006AAC9A78715BA2F90C8FED3729BFA │ │ │ │ │ +BDDD4098F870A27A91A0CB540D166FF86A442E95C9C361FD23378A2A138EAFB8 │ │ │ │ │ +D7050B486E1CB95068D890BCCD669456F3385C8F1793CE545099421368FE0F46 │ │ │ │ │ +53137AD2B65030B19CE7FF6B1669DB7A3C440AEF27149780E36C7097B7A8B71B │ │ │ │ │ +8789EECFA9A70B1F9695BB5D94E9A7D341291C1CA1BDEF4BE3EFCB8234CE9FFD │ │ │ │ │ +E1C4963CF919780129FA60162FEAA8AE97328F4BA14D949057A3EE74214F2D29 │ │ │ │ │ +51E7BE584446F6702F39957AE455CF8AF0C36AADAA39B53553D923CA5E9D4988 │ │ │ │ │ +76701B4F77DAE5185AC29900 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -4323,21 +4326,21 @@ │ │ │ │ │ @start /Fa 150[31 43[45 61[{}2 90.9091 /CMMI10 rf /Fb │ │ │ │ │ 205[35 50[{}1 66.4176 /CMR8 rf /Fc 150[24 105[{}1 66.4176 │ │ │ │ │ /CMMI8 rf /Fd 142[83 32[88 80[{}2 83.022 /CMEX10 rf /Fe │ │ │ │ │ 143[76 91[71 20[{}2 90.9091 /CMSY10 rf /Ff 133[50 59 │ │ │ │ │ 4[44 44 46 2[56 62 93 31 2[31 62 2[51 62 50 1[54 11[86 │ │ │ │ │ 5[84 5[42 6[80 13[56 56 56 56 2[31 46[{}24 99.6264 /CMBX12 │ │ │ │ │ rf /Fg 139[62 62 3[62 4[62 1[62 2[62 1[62 62 62 17[62 │ │ │ │ │ -5[62 22[62 50[{}12 119.552 /CMTT12 rf /Fh 134[48 23[45 │ │ │ │ │ -19[83 18[25 5[45 1[45 45 45 3[25 44[{}9 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 │ │ │ │ │ +5[62 22[62 50[{}12 119.552 /CMTT12 rf /Fh 138[51 6[51 │ │ │ │ │ +8[40 26[47 15[25 4[45 1[45 45 1[45 3[25 44[{}10 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 │ │ │ │ │ /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 │ │ │ │ │ @@ -4445,17 +4448,17 @@ │ │ │ │ │ b(n)m(um)m(b)s(er)29 b(of)h(items)h(in)f(the)h(hash)f(table.)137 │ │ │ │ │ 5294 y Fk(\210)45 b Fl(I2OP)i(*baseI2OP)35 b Fm(:)j(p)s(oin)m(ter)g(to) │ │ │ │ │ h(an)f Fl(I2OP)f Fm(ob)5 b(ject)39 b(that)f(k)m(eeps)h(trac)m(k)g(of)f │ │ │ │ │ (all)h(the)f Fl(I2OP)f Fm(ob)5 b(jects)38 b(that)227 │ │ │ │ │ 5407 y(ha)m(v)m(e)32 b(b)s(een)e(allo)s(cated)i(b)m(y)e(the)h(hash)e │ │ │ │ │ (table.)1927 5656 y(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fm(2)p 136 100 1154 4 v │ │ │ │ │ -1336 w Fl(I2Ohash)28 b Fh(:)41 b Fi(DRAFT)30 b Fh(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2746 100 V 137 399 a Fk(\210)45 b Fl(I2OP)i(*freeI2OP)28 │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fm(2)p 136 100 1147 4 v │ │ │ │ │ +1329 w Fl(I2Ohash)28 b Fh(:)41 b Fi(DRAFT)30 b Fh(June)g(3,)h(2025)p │ │ │ │ │ +2753 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 │ │ │ │ │ @@ -4505,17 +4508,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 1154 4 v 1335 100 a Fl(I2Ohash)29 │ │ │ │ │ -b Fh(:)40 b Fi(DRAFT)122 b Fh(Ma)m(y)31 b(1,)g(2024)p │ │ │ │ │ -2699 100 V 1154 w Fm(3)111 399 y(1.)46 b Fl(void)h(I2Ohash_init)d(\()k │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1147 4 v 1328 100 a Fl(I2Ohash)29 │ │ │ │ │ +b Fh(:)41 b Fi(DRAFT)121 b Fh(June)29 b(3,)i(2025)p 2706 │ │ │ │ │ +100 V 1147 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 │ │ │ │ │ @@ -4591,17 +4594,17 @@ │ │ │ │ │ (*hashtable,)g(FILE)i(*fp)g(\))g(;)227 5151 y Fm(This)30 │ │ │ │ │ b(metho)s(d)g(prin)m(ts)g(the)g(hash)g(table)h(in)f(a)h(h)m │ │ │ │ │ (uman-readable)f(format.)227 5294 y Fi(Err)-5 b(or)41 │ │ │ │ │ b(che)-5 b(cking:)56 b Fm(If)38 b Fl(hashtable)e Fm(or)i │ │ │ │ │ Fl(fp)f Fm(is)i Fl(NULL)p Fm(,)e(an)h(error)g(message)h(is)f(prin)m │ │ │ │ │ (ted)g(and)g(the)g(program)227 5407 y(exits.)p eop end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fm(4)p 136 100 1154 4 v │ │ │ │ │ -1336 w Fl(I2Ohash)28 b Fh(:)41 b Fi(DRAFT)30 b Fh(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2746 100 V 0 399 a Fj(1.3)135 b(Driv)l(er)46 b(programs)g(for)f(the)g │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fm(4)p 136 100 1147 4 v │ │ │ │ │ +1329 w Fl(I2Ohash)28 b Fh(:)41 b Fi(DRAFT)30 b Fh(June)g(3,)h(2025)p │ │ │ │ │ +2753 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 │ │ │ │ │ ├── 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 May 1, 2024 │ │ │ │ │ │ + 2 I2Ohash : DRAFT June 3, 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 May 1, 2024 3 │ │ │ │ │ │ + I2Ohash : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 4 I2Ohash : DRAFT June 3, 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.05.01:0544 │ │ │ │ │ +%DVIPSSource: TeX output 2025.06.03:1221 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -1276,21 +1276,22 @@ │ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ │ /UnderlineThickness 50 def │ │ │ │ │ end readonly def │ │ │ │ │ /Encoding 256 array │ │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ │ dup 44 /comma put │ │ │ │ │ dup 48 /zero put │ │ │ │ │ -dup 49 /one put │ │ │ │ │ dup 50 /two put │ │ │ │ │ -dup 52 /four put │ │ │ │ │ +dup 51 /three put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 77 /M put │ │ │ │ │ -dup 97 /a put │ │ │ │ │ -dup 121 /y put │ │ │ │ │ +dup 74 /J put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ +dup 110 /n put │ │ │ │ │ +dup 117 /u put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ │ @@ -1471,68 +1472,70 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004ACD1870 │ │ │ │ │ -A5EA947858F5795870BFE1343AD803FB854BF8F5A4E794E8EC57BE41DB5B8734 │ │ │ │ │ -13E47950F29A81EA0C81EA798863883D7F41F78325CA190CBBFFE822AE494550 │ │ │ │ │ -4BE83703071FC9512D128927AF3F63CEF8F86ABE1E15D7B4DDD39576E7DFF45E │ │ │ │ │ -3CB4115AAB1830DE8647B915DB4BEBEB5235C281E098B899BAB951D8D5798F01 │ │ │ │ │ -7F7C47336D31438E5126738AFEAB29E9A7CBE06DE4DD604477B542D2620DFD58 │ │ │ │ │ -28FE34238572F23C5A8EB7ACEE1E154DA13FC1A5AA67A3BA8C5CDFB2B80312C9 │ │ │ │ │ -BC9FAE56D08DDFA9498E6EF0D0F6BD18B3923E0B670B0740528BC843610736CB │ │ │ │ │ -80228C105C2F72C3C22D610C3D8C268DEEA2AEEE3221E198E79FE2966487360C │ │ │ │ │ -84AE08AC326F48B21447652121B1EB68AF857B8628F27BB4ED00F273E0DD044A │ │ │ │ │ -7D11A5BFAAC0A82328444CC9DD90167681B07D55CE28655F40C21250A226DEAB │ │ │ │ │ -2D46FFB680CB9242BE192AC0E55A44D45709FA6DE638C130D92C4E9B07BC3D61 │ │ │ │ │ -25CC2F0A7ED4F3574242FFE4461272EB1401266EEF551E0E2B0EF51FA8F250EC │ │ │ │ │ -FD9AFB6F5A0CC442B566BC24400133E3E9B9A9FC801CEF284FD2B3ECA43421FA │ │ │ │ │ -51E5D1EFE7BEAA96658362C438A0A5A6DCBC664A85EF88037B42355195B9D19C │ │ │ │ │ -7961D5F63B123451B298CD52C144FCD4F3641A823FBA14605E2DFD845E89102C │ │ │ │ │ -4E345CFD80E3EE6F097095A84C941FFC91B234F3615E4EE4C5D564284656E364 │ │ │ │ │ -AB9C4D1DE05F8FD065CA6064893F0CF3A3A501D59EF6568D05D818A010D06518 │ │ │ │ │ -E2C20418ADD1E652867F265084A27A5FE0C32213C59FFC3A84EDC89382521E5B │ │ │ │ │ -8AF66D76601F83C5C33CC9CF968C77B66F1FA074AC3DAD8E453C9264D03969EF │ │ │ │ │ -9E387BB3BEAA4BF0A9D88BA2CE6094E8996A3752A657E322A57AF006444BF516 │ │ │ │ │ -501C43CAA1BA7F16A3B6E4D3EBDECCCC19564DF18FB68194C132238A5441A21A │ │ │ │ │ -F52285CA1CA94A4BEC61EB509FA35EA5E393D662D938F4291F37EB7C2D5815BE │ │ │ │ │ -446813E1CFD06FFFFF2C4355C9DAFA48E765F4CC5DE4B9E37CFFB75E7A0B6F4B │ │ │ │ │ -4E412496F9C27DF4BDD90A869F0EBD81A57AE0B84051450A5A3E06CB9930DB2C │ │ │ │ │ -7C2DDB774BE870AEFCC9F4F067BE243FF3FD4B5C71B96C607DC4975973AF2650 │ │ │ │ │ -E7DF2BE3523A370EEDD07B5456B96E372ED10510CE677C044E609F21E93652FD │ │ │ │ │ -33CE612F587530D12214A3719CDB170C315B5D8763D5D4C67B5CAE90309E77AC │ │ │ │ │ -B45EB356C13A7BDE0D7320A9849CA357E30D7CF1085FFD70071932C3180AFC28 │ │ │ │ │ -B093016BA3F49A3878C34BB4A8727A441EB6CFC1A73F2313A7BF8D32EDF27E62 │ │ │ │ │ -EBEBC058FBA80B136FD2DE05C673B66482224ECEC63EDFB519AC13B5CC6624A6 │ │ │ │ │ -B3FD79037DA3851E93A386115852DBA88B176F21EDDB5386DC7C993C4210B28F │ │ │ │ │ -438131A586E34A09724E7CE60139F8247BFF14D2674805B3BD454C134728A43E │ │ │ │ │ -139E0AF71A7AC5CE42041EC83FD454B00AD29959FCF007789FFAF2D3492DCA4B │ │ │ │ │ -566EAFE97591ABC51CD0CD9BCD64E285FB823E41AA817E96B2B224005DAA4E15 │ │ │ │ │ -2141DB436B9D3FBA4EE4C876FD19A2E5133106FE2B9F704CB9614FCDC91B7950 │ │ │ │ │ -57053F45A5ED993B48189AAFAD5289F97AE2B0AEB5606579F6BD75F743EDB5B6 │ │ │ │ │ -5AA8F8A64CE507A47325081B3A013DB1BD596CDD3A83D2F29B070D6F9C57496E │ │ │ │ │ -14DF3F0F731C3BB00F2CE3D4BBACF1320322195D1DEA7A545BB4725BD1C6EC3D │ │ │ │ │ -63250C72B897741F8599D9D9BD2FB50EC80EFF2ECD6CE6603E95AABB45462ACF │ │ │ │ │ -12B005EE5979B6B05BCE9B97061686102349142A3CCC26D57F2A3283DD8B6E2A │ │ │ │ │ -98885E48C0D4A1A5C9612EDCB3B3D265E9B8CCCCA5D99F07F96C15B27D6A161F │ │ │ │ │ -936599E503C2859927201CACC31581AB7AB84F9EC9FFADC239F01DCC55940AB7 │ │ │ │ │ -FA884AA1EB6494C8E53DAD66E75A317428ACF9D943A74683BF547958F67D9E36 │ │ │ │ │ -F985EED50DEBCF255756A821927CB73848DCF167E96E975E959DE27FE7BA4FBA │ │ │ │ │ -D0EFC003F019D87572D6F9C73FC5B880C3EEDB7EF98E5EC3D25D6FE0015A6590 │ │ │ │ │ -E3C6EE632D7F6558B914609A8829CD1DEAB83A3F1207D5C3AAC9EAEA9DE1B4F8 │ │ │ │ │ -2375C5D4F630BCE13475F941ED2324D2CD4DCF2285298EAA4FFF89433D853860 │ │ │ │ │ -A974A9FC0808580FBDE7D02EDBB3D8C65BD3109AE8B359E96BFB7E21C696F440 │ │ │ │ │ -312B0CCAD810BF070DF8FC281E8198EB20A7FF9C9BCD291D74BC75EE46799485 │ │ │ │ │ -1AB2AE36B7E525034D146A856AF3BD9057A0033C08B606B89DD130548950C93D │ │ │ │ │ -94A8C92C47A34A791B1C108D2F36E899B79358B8081CCFC3D1A2F0521E4E2AE4 │ │ │ │ │ -7F500D6F2A53E5393E44201287225912590ABC738E8726622B67C3425639CCFB │ │ │ │ │ -F450B78A4918 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004B9BA1CC │ │ │ │ │ +580D3C6BDA4DC1B80B4365F1C80512453FC5316EC2D928FB731C3D6403E3C18B │ │ │ │ │ +E8424D644DF5E9A2134229C5C91CA68DB8E85BA2BB40F538F585DA6FA4037718 │ │ │ │ │ +B8053EBBA1E765346BCD5BDAA6C38115D31611D8A87A2238C145F2DA2F92E4DF │ │ │ │ │ +3987BD9C4D2A3D460E8941A68B125BCD9EE4F9FD262C4C8A71F47A2C81975635 │ │ │ │ │ +F1B981C274C53FA2ACCDE4C9D0A7C62D6C1EFF91CFC6712CA6A9F333C9564FCB │ │ │ │ │ +2A70F0AD715A79B10A08AB069E2A3C93BC0AED19D0CA10134B8DDDE8AF548DB2 │ │ │ │ │ +3A4AAA9C29682CF135BB767DAA16169A127EB50A7EECEB6480CF56A7D0F8AC56 │ │ │ │ │ +4A5090B3D75A790372886AF568D94C8165975A05BFBFDF1FFBA45F70700BB9E0 │ │ │ │ │ +57F3249EF9E9C8AD9CBCF6E4FD592DC4CDD2D7864F7C8A3FA6FC44C25C0CE7E1 │ │ │ │ │ +299F8A90B32B75DEA28917531621E1E7E0ECEE9E01665DEE99FBCF3EC3F30686 │ │ │ │ │ +513D7CBA745E660502603865D5A3E82D24B3F94B2884B21DC53AED87F49380E0 │ │ │ │ │ +68EE79C580931308DA762670C1F86F07FFB479773CD9C5DE6F22980DEC973D1C │ │ │ │ │ +A1E162D73932561BAAB24DE51DC8708291B666B36BABCA1FEDB6DD9C22572914 │ │ │ │ │ +7194DA044319F362452D53DD4D9A59134838E540F1E23805CEF53FF4F7519385 │ │ │ │ │ +1FAE3061F94369FEB1232BDA2E2A281E6972FB4524EFA37A598E7CDC097683EA │ │ │ │ │ +1B609952AEC0799B4711AAAB22D6B1D5CC729DE70897FDDC48AF0A12E40FFE30 │ │ │ │ │ +6528C601E68E8CFA4BBF897CF89DB712DE108DD1F084EFD917BFD9A70A74EB8F │ │ │ │ │ +D0D5B43CCC30373A5E871F18A969D01C69C2B4377622A0C8C4D7C4C28DDE5586 │ │ │ │ │ +BD17D5D640A6F396BD41993BD1932EE10953847F82F7BB36480B67A4F69F0763 │ │ │ │ │ +69423D1803B7BB60594ABEEE9578076639B84D8323F56104438803D45402FEE3 │ │ │ │ │ +045DAB16C4459DA9BBE01D0385CC771FB8DABDD8A9D280C18553F92FE6591CFD │ │ │ │ │ +26B82F28E6673BD823598D3F6CE03BEE04D9A21ED908DFC4F640227C148F133D │ │ │ │ │ +D32113275297C16EBCC9028AFD9102DE50E9CF67E7CF8C42BB8E73D1DAF8A5E2 │ │ │ │ │ +EF5979426229664A990DEF980A7038D2F229789D4F6EDBE1FB81BEC1A1BB14D7 │ │ │ │ │ +882515C62660E8877BE942712D57B86A2E19995AF087DECB7FD5208583C020AE │ │ │ │ │ +FEC86A2826530AD855006225300E4655F443C9360A8BAC96B5B096DDC9B12EDF │ │ │ │ │ +C862215AD6C432CF345FE701757E4EBB8C65F46912CB0F4DEF53672F7298D8F7 │ │ │ │ │ +EE51A9C5DE689A8D36956B7F0410893C0998DB03B73B4024CB046F8F6B32E07F │ │ │ │ │ +CD28A68AFB7152E45F1021DCD520D8A429FCDCA4B8054BAF0B48C4443280F198 │ │ │ │ │ +3360B078E6DEC37772DA8B629CFFD1534E8AA10E26B0BC58E92B9BF280C8EE45 │ │ │ │ │ +618EECDE904249F5A2010DC55D1028DFF4F058260B2B0A46541D6157970F44BD │ │ │ │ │ +D7483802D56A81184119DDBC914E8E394CBEEB506B61BB1CE2A3465252E5D8A3 │ │ │ │ │ +6BDD2D067E69D4ECEFC7D5568378F5F8B38EAFF138014185FE19DF7358A7A780 │ │ │ │ │ +3BE0E2CCD1561113F2F2319BDB503230DD0866121604710CEBBAA659ABFC010B │ │ │ │ │ +5CC40E5807F461D87E75BDC6AD96BCEF62AF668D48D7A76D08B57650F35CF609 │ │ │ │ │ +C0F791AEBEB75E29FA69596BAB419804AECE0F0238AAE64A6C13A22EBF4E3EAC │ │ │ │ │ +3570DECE85F54064486B2364D63E94FEB7C16350CDA318510A45C8848DB470ED │ │ │ │ │ +BFAFD2365681D65CFF3E6C1B4B7C8AE3066F96E819D05B97F3A6C2BFF8A72978 │ │ │ │ │ +EEB7F632FF604AD003A3CCA5A0465D53033A646E8082D3491EDECA3DA1A0E1BB │ │ │ │ │ +64BF36946520438D2EE72FA9EB1CEEDF56510AADA55A8DE280E23C904E0810FA │ │ │ │ │ +A3177CF684F06A4042DE4CD4AB21E2F0616153BEEE58EBBD89911FA43BC52969 │ │ │ │ │ +230C8137DB34C13E147B06C7A3875A931E1AC127E7D3EA0DF8346B6971F80901 │ │ │ │ │ +DC37F2DE1A0B81FD93CA3B5EB9B29ECABA1492901B1BA261DAB872FB3431C718 │ │ │ │ │ +9C9CDA7864908CD773864908DEB44E343221C2C4C335341789A46325D94C767C │ │ │ │ │ +740E3B60CE6D452A3A665967F568671FD7DD460B404B9C3D2EDCD47A336AA2C7 │ │ │ │ │ +BB0B1AC3823978F610629EF7AB526098A7EE7076F50A146D8134BA2DEC1B8ACF │ │ │ │ │ +68A7E4A9B7BE17FB71480516F2D6A8866E56CFD7C7A41311F48DDDD9887DACB8 │ │ │ │ │ +73FDAF5F25E956AFB0A9D530DE2E1128F006AAC9A78715BA2F90C8FED3729BFA │ │ │ │ │ +BDDD4098F870A27A91A0CB540D166FF86A442E95C9C361FD23378A2A138EAFB8 │ │ │ │ │ +D7050B486E1CB95068D890BCCD669456F3385C8F1793CE545099421368FE0F46 │ │ │ │ │ +53137AD2B65030B19CE7FF6B1669DB7A3C440AEF27149780E36C7097B7A8B71B │ │ │ │ │ +8789EECFA9A70B1F9695BB5D94E9A7D341291C1CA1BDEF4BE3EFCB8234CE9FFD │ │ │ │ │ +E1C4963CF919780129FA60162FEAA8AE97328F4BA14D949057A3EE74214F2D29 │ │ │ │ │ +51E7BE584446F6702F39957AE455CF8AF0C36AADAA39B53553D923CA5E9D4988 │ │ │ │ │ +76701B4F77DAE5185AC29900 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -3702,17 +3705,17 @@ │ │ │ │ │ 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 23[45 19[83 18[25 5[45 1[45 45 45 3[25 44[{}9 │ │ │ │ │ -90.9091 /CMSL10 rf /Fd 143[62 7[62 2[62 3[62 23[62 73[{}5 │ │ │ │ │ -119.552 /CMTT12 rf │ │ │ │ │ +/Fc 138[51 6[51 8[40 26[47 15[25 4[45 1[45 45 1[45 3[25 │ │ │ │ │ +44[{}10 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 │ │ │ │ │ {/.notdef}repeat/dollar/.notdef/.notdef/quotesingle/.notdef/.notdef │ │ │ │ │ @@ -3818,17 +3821,17 @@ │ │ │ │ │ 4724 y(maxsize)p Fk(.)0 5059 y Ff(1.2)135 b(Protot)l(yp)t(es)46 │ │ │ │ │ b(and)f(descriptions)g(of)g Fd(IIheap)d Ff(metho)t(ds)0 │ │ │ │ │ 5294 y Fk(This)f(section)j(con)m(tains)f(brief)f(descriptions)g │ │ │ │ │ (including)f(protot)m(yp)s(es)i(of)f(all)h(metho)s(ds)f(that)h(b)s │ │ │ │ │ (elong)f(to)h(the)0 5407 y Fj(IIheap)29 b Fk(ob)5 b(ject.)1927 │ │ │ │ │ 5656 y(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fk(2)p 136 100 1178 4 v │ │ │ │ │ -1360 w Fj(IIheap)28 b Fc(:)41 b Fi(DRAFT)30 b Fc(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2723 100 V 0 399 a Fb(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fk(2)p 136 100 1171 4 v │ │ │ │ │ +1353 w Fj(IIheap)28 b Fc(:)41 b Fi(DRAFT)30 b Fc(June)g(3,)h(2025)p │ │ │ │ │ +2729 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 │ │ │ │ │ @@ -3878,17 +3881,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 1178 4 v 1359 100 a Fj(IIheap)29 │ │ │ │ │ -b Fc(:)41 b Fi(DRAFT)121 b Fc(Ma)m(y)31 b(1,)g(2024)p │ │ │ │ │ -2675 100 V 1178 w Fk(3)111 399 y(2.)46 b Fj(void)h(IIheap_root)e(\()i │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1171 4 v 1352 100 a Fj(IIheap)29 │ │ │ │ │ +b Fc(:)41 b Fi(DRAFT)121 b Fc(June)29 b(3,)i(2025)p 2682 │ │ │ │ │ +100 V 1171 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 May 1, 2024 │ │ │ │ │ │ + 2 IIheap : DRAFT June 3, 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 May 1, 2024 3 │ │ │ │ │ │ + IIheap : DRAFT June 3, 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.05.01:0544 │ │ │ │ │ +%DVIPSSource: TeX output 2025.06.03:1221 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -1608,21 +1608,22 @@ │ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ │ /UnderlineThickness 50 def │ │ │ │ │ end readonly def │ │ │ │ │ /Encoding 256 array │ │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ │ dup 44 /comma put │ │ │ │ │ dup 48 /zero put │ │ │ │ │ -dup 49 /one put │ │ │ │ │ dup 50 /two put │ │ │ │ │ -dup 52 /four put │ │ │ │ │ +dup 51 /three put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 77 /M put │ │ │ │ │ -dup 97 /a put │ │ │ │ │ -dup 121 /y put │ │ │ │ │ +dup 74 /J put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ +dup 110 /n put │ │ │ │ │ +dup 117 /u put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ │ @@ -1803,68 +1804,70 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004ACD1870 │ │ │ │ │ -A5EA947858F5795870BFE1343AD803FB854BF8F5A4E794E8EC57BE41DB5B8734 │ │ │ │ │ -13E47950F29A81EA0C81EA798863883D7F41F78325CA190CBBFFE822AE494550 │ │ │ │ │ -4BE83703071FC9512D128927AF3F63CEF8F86ABE1E15D7B4DDD39576E7DFF45E │ │ │ │ │ -3CB4115AAB1830DE8647B915DB4BEBEB5235C281E098B899BAB951D8D5798F01 │ │ │ │ │ -7F7C47336D31438E5126738AFEAB29E9A7CBE06DE4DD604477B542D2620DFD58 │ │ │ │ │ -28FE34238572F23C5A8EB7ACEE1E154DA13FC1A5AA67A3BA8C5CDFB2B80312C9 │ │ │ │ │ -BC9FAE56D08DDFA9498E6EF0D0F6BD18B3923E0B670B0740528BC843610736CB │ │ │ │ │ -80228C105C2F72C3C22D610C3D8C268DEEA2AEEE3221E198E79FE2966487360C │ │ │ │ │ -84AE08AC326F48B21447652121B1EB68AF857B8628F27BB4ED00F273E0DD044A │ │ │ │ │ -7D11A5BFAAC0A82328444CC9DD90167681B07D55CE28655F40C21250A226DEAB │ │ │ │ │ -2D46FFB680CB9242BE192AC0E55A44D45709FA6DE638C130D92C4E9B07BC3D61 │ │ │ │ │ -25CC2F0A7ED4F3574242FFE4461272EB1401266EEF551E0E2B0EF51FA8F250EC │ │ │ │ │ -FD9AFB6F5A0CC442B566BC24400133E3E9B9A9FC801CEF284FD2B3ECA43421FA │ │ │ │ │ -51E5D1EFE7BEAA96658362C438A0A5A6DCBC664A85EF88037B42355195B9D19C │ │ │ │ │ -7961D5F63B123451B298CD52C144FCD4F3641A823FBA14605E2DFD845E89102C │ │ │ │ │ -4E345CFD80E3EE6F097095A84C941FFC91B234F3615E4EE4C5D564284656E364 │ │ │ │ │ -AB9C4D1DE05F8FD065CA6064893F0CF3A3A501D59EF6568D05D818A010D06518 │ │ │ │ │ -E2C20418ADD1E652867F265084A27A5FE0C32213C59FFC3A84EDC89382521E5B │ │ │ │ │ -8AF66D76601F83C5C33CC9CF968C77B66F1FA074AC3DAD8E453C9264D03969EF │ │ │ │ │ -9E387BB3BEAA4BF0A9D88BA2CE6094E8996A3752A657E322A57AF006444BF516 │ │ │ │ │ -501C43CAA1BA7F16A3B6E4D3EBDECCCC19564DF18FB68194C132238A5441A21A │ │ │ │ │ -F52285CA1CA94A4BEC61EB509FA35EA5E393D662D938F4291F37EB7C2D5815BE │ │ │ │ │ -446813E1CFD06FFFFF2C4355C9DAFA48E765F4CC5DE4B9E37CFFB75E7A0B6F4B │ │ │ │ │ -4E412496F9C27DF4BDD90A869F0EBD81A57AE0B84051450A5A3E06CB9930DB2C │ │ │ │ │ -7C2DDB774BE870AEFCC9F4F067BE243FF3FD4B5C71B96C607DC4975973AF2650 │ │ │ │ │ -E7DF2BE3523A370EEDD07B5456B96E372ED10510CE677C044E609F21E93652FD │ │ │ │ │ -33CE612F587530D12214A3719CDB170C315B5D8763D5D4C67B5CAE90309E77AC │ │ │ │ │ -B45EB356C13A7BDE0D7320A9849CA357E30D7CF1085FFD70071932C3180AFC28 │ │ │ │ │ -B093016BA3F49A3878C34BB4A8727A441EB6CFC1A73F2313A7BF8D32EDF27E62 │ │ │ │ │ -EBEBC058FBA80B136FD2DE05C673B66482224ECEC63EDFB519AC13B5CC6624A6 │ │ │ │ │ -B3FD79037DA3851E93A386115852DBA88B176F21EDDB5386DC7C993C4210B28F │ │ │ │ │ -438131A586E34A09724E7CE60139F8247BFF14D2674805B3BD454C134728A43E │ │ │ │ │ -139E0AF71A7AC5CE42041EC83FD454B00AD29959FCF007789FFAF2D3492DCA4B │ │ │ │ │ -566EAFE97591ABC51CD0CD9BCD64E285FB823E41AA817E96B2B224005DAA4E15 │ │ │ │ │ -2141DB436B9D3FBA4EE4C876FD19A2E5133106FE2B9F704CB9614FCDC91B7950 │ │ │ │ │ -57053F45A5ED993B48189AAFAD5289F97AE2B0AEB5606579F6BD75F743EDB5B6 │ │ │ │ │ -5AA8F8A64CE507A47325081B3A013DB1BD596CDD3A83D2F29B070D6F9C57496E │ │ │ │ │ -14DF3F0F731C3BB00F2CE3D4BBACF1320322195D1DEA7A545BB4725BD1C6EC3D │ │ │ │ │ -63250C72B897741F8599D9D9BD2FB50EC80EFF2ECD6CE6603E95AABB45462ACF │ │ │ │ │ -12B005EE5979B6B05BCE9B97061686102349142A3CCC26D57F2A3283DD8B6E2A │ │ │ │ │ -98885E48C0D4A1A5C9612EDCB3B3D265E9B8CCCCA5D99F07F96C15B27D6A161F │ │ │ │ │ -936599E503C2859927201CACC31581AB7AB84F9EC9FFADC239F01DCC55940AB7 │ │ │ │ │ -FA884AA1EB6494C8E53DAD66E75A317428ACF9D943A74683BF547958F67D9E36 │ │ │ │ │ -F985EED50DEBCF255756A821927CB73848DCF167E96E975E959DE27FE7BA4FBA │ │ │ │ │ -D0EFC003F019D87572D6F9C73FC5B880C3EEDB7EF98E5EC3D25D6FE0015A6590 │ │ │ │ │ -E3C6EE632D7F6558B914609A8829CD1DEAB83A3F1207D5C3AAC9EAEA9DE1B4F8 │ │ │ │ │ -2375C5D4F630BCE13475F941ED2324D2CD4DCF2285298EAA4FFF89433D853860 │ │ │ │ │ -A974A9FC0808580FBDE7D02EDBB3D8C65BD3109AE8B359E96BFB7E21C696F440 │ │ │ │ │ -312B0CCAD810BF070DF8FC281E8198EB20A7FF9C9BCD291D74BC75EE46799485 │ │ │ │ │ -1AB2AE36B7E525034D146A856AF3BD9057A0033C08B606B89DD130548950C93D │ │ │ │ │ -94A8C92C47A34A791B1C108D2F36E899B79358B8081CCFC3D1A2F0521E4E2AE4 │ │ │ │ │ -7F500D6F2A53E5393E44201287225912590ABC738E8726622B67C3425639CCFB │ │ │ │ │ -F450B78A4918 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004B9BA1CC │ │ │ │ │ +580D3C6BDA4DC1B80B4365F1C80512453FC5316EC2D928FB731C3D6403E3C18B │ │ │ │ │ +E8424D644DF5E9A2134229C5C91CA68DB8E85BA2BB40F538F585DA6FA4037718 │ │ │ │ │ +B8053EBBA1E765346BCD5BDAA6C38115D31611D8A87A2238C145F2DA2F92E4DF │ │ │ │ │ +3987BD9C4D2A3D460E8941A68B125BCD9EE4F9FD262C4C8A71F47A2C81975635 │ │ │ │ │ +F1B981C274C53FA2ACCDE4C9D0A7C62D6C1EFF91CFC6712CA6A9F333C9564FCB │ │ │ │ │ +2A70F0AD715A79B10A08AB069E2A3C93BC0AED19D0CA10134B8DDDE8AF548DB2 │ │ │ │ │ +3A4AAA9C29682CF135BB767DAA16169A127EB50A7EECEB6480CF56A7D0F8AC56 │ │ │ │ │ +4A5090B3D75A790372886AF568D94C8165975A05BFBFDF1FFBA45F70700BB9E0 │ │ │ │ │ +57F3249EF9E9C8AD9CBCF6E4FD592DC4CDD2D7864F7C8A3FA6FC44C25C0CE7E1 │ │ │ │ │ +299F8A90B32B75DEA28917531621E1E7E0ECEE9E01665DEE99FBCF3EC3F30686 │ │ │ │ │ +513D7CBA745E660502603865D5A3E82D24B3F94B2884B21DC53AED87F49380E0 │ │ │ │ │ +68EE79C580931308DA762670C1F86F07FFB479773CD9C5DE6F22980DEC973D1C │ │ │ │ │ +A1E162D73932561BAAB24DE51DC8708291B666B36BABCA1FEDB6DD9C22572914 │ │ │ │ │ +7194DA044319F362452D53DD4D9A59134838E540F1E23805CEF53FF4F7519385 │ │ │ │ │ +1FAE3061F94369FEB1232BDA2E2A281E6972FB4524EFA37A598E7CDC097683EA │ │ │ │ │ +1B609952AEC0799B4711AAAB22D6B1D5CC729DE70897FDDC48AF0A12E40FFE30 │ │ │ │ │ +6528C601E68E8CFA4BBF897CF89DB712DE108DD1F084EFD917BFD9A70A74EB8F │ │ │ │ │ +D0D5B43CCC30373A5E871F18A969D01C69C2B4377622A0C8C4D7C4C28DDE5586 │ │ │ │ │ +BD17D5D640A6F396BD41993BD1932EE10953847F82F7BB36480B67A4F69F0763 │ │ │ │ │ +69423D1803B7BB60594ABEEE9578076639B84D8323F56104438803D45402FEE3 │ │ │ │ │ +045DAB16C4459DA9BBE01D0385CC771FB8DABDD8A9D280C18553F92FE6591CFD │ │ │ │ │ +26B82F28E6673BD823598D3F6CE03BEE04D9A21ED908DFC4F640227C148F133D │ │ │ │ │ +D32113275297C16EBCC9028AFD9102DE50E9CF67E7CF8C42BB8E73D1DAF8A5E2 │ │ │ │ │ +EF5979426229664A990DEF980A7038D2F229789D4F6EDBE1FB81BEC1A1BB14D7 │ │ │ │ │ +882515C62660E8877BE942712D57B86A2E19995AF087DECB7FD5208583C020AE │ │ │ │ │ +FEC86A2826530AD855006225300E4655F443C9360A8BAC96B5B096DDC9B12EDF │ │ │ │ │ +C862215AD6C432CF345FE701757E4EBB8C65F46912CB0F4DEF53672F7298D8F7 │ │ │ │ │ +EE51A9C5DE689A8D36956B7F0410893C0998DB03B73B4024CB046F8F6B32E07F │ │ │ │ │ +CD28A68AFB7152E45F1021DCD520D8A429FCDCA4B8054BAF0B48C4443280F198 │ │ │ │ │ +3360B078E6DEC37772DA8B629CFFD1534E8AA10E26B0BC58E92B9BF280C8EE45 │ │ │ │ │ +618EECDE904249F5A2010DC55D1028DFF4F058260B2B0A46541D6157970F44BD │ │ │ │ │ +D7483802D56A81184119DDBC914E8E394CBEEB506B61BB1CE2A3465252E5D8A3 │ │ │ │ │ +6BDD2D067E69D4ECEFC7D5568378F5F8B38EAFF138014185FE19DF7358A7A780 │ │ │ │ │ +3BE0E2CCD1561113F2F2319BDB503230DD0866121604710CEBBAA659ABFC010B │ │ │ │ │ +5CC40E5807F461D87E75BDC6AD96BCEF62AF668D48D7A76D08B57650F35CF609 │ │ │ │ │ +C0F791AEBEB75E29FA69596BAB419804AECE0F0238AAE64A6C13A22EBF4E3EAC │ │ │ │ │ +3570DECE85F54064486B2364D63E94FEB7C16350CDA318510A45C8848DB470ED │ │ │ │ │ +BFAFD2365681D65CFF3E6C1B4B7C8AE3066F96E819D05B97F3A6C2BFF8A72978 │ │ │ │ │ +EEB7F632FF604AD003A3CCA5A0465D53033A646E8082D3491EDECA3DA1A0E1BB │ │ │ │ │ +64BF36946520438D2EE72FA9EB1CEEDF56510AADA55A8DE280E23C904E0810FA │ │ │ │ │ +A3177CF684F06A4042DE4CD4AB21E2F0616153BEEE58EBBD89911FA43BC52969 │ │ │ │ │ +230C8137DB34C13E147B06C7A3875A931E1AC127E7D3EA0DF8346B6971F80901 │ │ │ │ │ +DC37F2DE1A0B81FD93CA3B5EB9B29ECABA1492901B1BA261DAB872FB3431C718 │ │ │ │ │ +9C9CDA7864908CD773864908DEB44E343221C2C4C335341789A46325D94C767C │ │ │ │ │ +740E3B60CE6D452A3A665967F568671FD7DD460B404B9C3D2EDCD47A336AA2C7 │ │ │ │ │ +BB0B1AC3823978F610629EF7AB526098A7EE7076F50A146D8134BA2DEC1B8ACF │ │ │ │ │ +68A7E4A9B7BE17FB71480516F2D6A8866E56CFD7C7A41311F48DDDD9887DACB8 │ │ │ │ │ +73FDAF5F25E956AFB0A9D530DE2E1128F006AAC9A78715BA2F90C8FED3729BFA │ │ │ │ │ +BDDD4098F870A27A91A0CB540D166FF86A442E95C9C361FD23378A2A138EAFB8 │ │ │ │ │ +D7050B486E1CB95068D890BCCD669456F3385C8F1793CE545099421368FE0F46 │ │ │ │ │ +53137AD2B65030B19CE7FF6B1669DB7A3C440AEF27149780E36C7097B7A8B71B │ │ │ │ │ +8789EECFA9A70B1F9695BB5D94E9A7D341291C1CA1BDEF4BE3EFCB8234CE9FFD │ │ │ │ │ +E1C4963CF919780129FA60162FEAA8AE97328F4BA14D949057A3EE74214F2D29 │ │ │ │ │ +51E7BE584446F6702F39957AE455CF8AF0C36AADAA39B53553D923CA5E9D4988 │ │ │ │ │ +76701B4F77DAE5185AC29900 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -3737,17 +3740,17 @@ │ │ │ │ │ 2[51 62 50 1[54 11[86 5[84 5[42 6[80 12[56 56 56 56 56 │ │ │ │ │ 2[31 46[{}25 99.6264 /CMBX12 rf /Fb 139[62 4[62 4[62 │ │ │ │ │ 4[62 1[62 62 11[62 12[62 73[{}8 119.552 /CMTT12 rf /Fc │ │ │ │ │ 134[71 2[71 75 52 53 55 1[75 67 75 112 3[37 75 67 41 │ │ │ │ │ 61 75 60 1[65 13[75 2[92 11[103 16[67 67 67 2[37 46[{}25 │ │ │ │ │ 119.552 /CMBX12 rf /Fd 138[49 30 37 38 1[46 46 51 74 │ │ │ │ │ 1[42 1[28 46 42 1[42 46 42 1[46 12[65 1[66 11[59 62 69 │ │ │ │ │ -2[68 6[28 58[{}23 90.9091 /CMTI10 rf /Fe 134[48 23[45 │ │ │ │ │ -19[83 18[25 5[45 1[45 45 45 3[25 44[{}9 90.9091 /CMSL10 │ │ │ │ │ -rf /Ff 152[45 45 102[{}2 90.9091 /CMSY10 rf │ │ │ │ │ +2[68 6[28 58[{}23 90.9091 /CMTI10 rf /Fe 138[51 6[51 │ │ │ │ │ +8[40 26[47 15[25 4[45 1[45 45 1[45 3[25 44[{}10 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 │ │ │ │ │ {/.notdef}repeat/dollar/.notdef/.notdef/quotesingle/.notdef/.notdef │ │ │ │ │ @@ -3873,17 +3876,17 @@ │ │ │ │ │ (v)m(enience)0 5294 y(mak)m(es)i(it)g(a)g(widely)f(used)g(ob)5 │ │ │ │ │ b(ject.)44 b(Originally)32 b(its)g(use)f(w)m(as)g(restricted)h(to)h │ │ │ │ │ (reading)e(and)g(writing)g Fi(*.iv)p Ff(f)p Fi(f,b)p │ │ │ │ │ Ff(g)0 5407 y Fj(\014les,)g(but)e(no)m(w)i Fi(IV)e Fj(ob)5 │ │ │ │ │ b(jects)32 b(app)s(ear)d(m)m(uc)m(h)i(more)f(frequen)m(tly)h(in)f(new)g │ │ │ │ │ (dev)m(elopmen)m(t.)1927 5656 y(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fj(2)p 136 100 1278 4 v │ │ │ │ │ -1460 w Fi(IV)30 b Fe(:)h Fd(DRAFT)f Fe(Ma)m(y)h(1,)g(2024)p │ │ │ │ │ -2622 100 V 0 399 a Fc(1.1)135 b(Data)46 b(Structure)0 │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fj(2)p 136 100 1272 4 v │ │ │ │ │ +1453 w Fi(IV)30 b Fe(:)h Fd(DRAFT)f Fe(June)f(3,)i(2025)p │ │ │ │ │ +2629 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 │ │ │ │ │ @@ -3941,17 +3944,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 1278 4 v 1460 100 a Fi(IV)30 │ │ │ │ │ -b Fe(:)g Fd(DRAFT)121 b Fe(Ma)m(y)32 b(1,)f(2024)p 2575 │ │ │ │ │ -100 V 1278 w Fj(3)0 399 y Fa(1.2.2)112 b(Instance)38 │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1272 4 v 1453 100 a Fi(IV)30 │ │ │ │ │ +b Fe(:)g Fd(DRAFT)121 b Fe(June)30 b(3,)h(2025)p 2582 │ │ │ │ │ +100 V 1272 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 │ │ │ │ │ @@ -4007,17 +4010,17 @@ │ │ │ │ │ Fi(loc)p Fj('th)f(en)m(try)g(of)h(the)f(v)m(ector)i(to)f │ │ │ │ │ Fi(value)p Fj(.)227 5294 y Fd(Err)-5 b(or)32 b(che)-5 │ │ │ │ │ b(cking:)40 b Fj(If)27 b Fi(iv)p Fj(,)i Fi(loc)47 b(<)g(0)28 │ │ │ │ │ b Fj(or)g Fi(loc)47 b(>=)g(size)p Fj(,)28 b(or)g(if)h │ │ │ │ │ Fi(vec)e Fj(is)h Fi(NULL)g Fj(an)g(error)g(message)h(is)f(prin)m(ted) │ │ │ │ │ 227 5407 y(and)i(the)h(program)f(exits.)p eop end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fj(4)p 136 100 1278 4 v │ │ │ │ │ -1460 w Fi(IV)30 b Fe(:)h Fd(DRAFT)f Fe(Ma)m(y)h(1,)g(2024)p │ │ │ │ │ -2622 100 V 0 399 a Fa(1.2.3)112 b(Initializer)38 b(metho)s(ds)111 │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fj(4)p 136 100 1272 4 v │ │ │ │ │ +1453 w Fi(IV)30 b Fe(:)h Fd(DRAFT)f Fe(June)f(3,)i(2025)p │ │ │ │ │ +2629 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 │ │ │ │ │ @@ -4096,17 +4099,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 1278 4 v 1460 100 a Fi(IV)30 │ │ │ │ │ -b Fe(:)g Fd(DRAFT)121 b Fe(Ma)m(y)32 b(1,)f(2024)p 2575 │ │ │ │ │ -100 V 1278 w Fj(5)227 399 y(en)m(tries)e(and)e Fi(IV)p │ │ │ │ │ +TeXDict begin 5 4 bop 91 100 1272 4 v 1453 100 a Fi(IV)30 │ │ │ │ │ +b Fe(:)g Fd(DRAFT)121 b Fe(June)30 b(3,)h(2025)p 2582 │ │ │ │ │ +100 V 1272 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 │ │ │ │ │ @@ -4167,17 +4170,17 @@ │ │ │ │ │ (;)227 5294 y Fj(This)24 b(metho)s(d)f(examines)i(the)g(en)m(tries)g │ │ │ │ │ (in)f(the)g(v)m(ector.)40 b(Let)25 b Fi(k)f Fj(b)s(e)g(en)m(try)g │ │ │ │ │ Fi(i)g Fj(in)g(the)h(v)m(ector.)40 b(If)24 b Fi(tags[k])46 │ │ │ │ │ b(!=)227 5407 y(keepTag)p Fj(,)28 b(the)i(en)m(try)g(is)g(mo)m(v)m(ed)g │ │ │ │ │ (to)h(the)f(end)f(of)g(the)h(v)m(ector,)i(otherwise)e(it)g(is)g(mo)m(v) │ │ │ │ │ m(ed)g(to)h(the)f(b)s(eginning)p eop end │ │ │ │ │ %%Page: 6 6 │ │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fj(6)p 136 100 1278 4 v │ │ │ │ │ -1460 w Fi(IV)30 b Fe(:)h Fd(DRAFT)f Fe(Ma)m(y)h(1,)g(2024)p │ │ │ │ │ -2622 100 V 227 399 a Fj(of)f(the)g(v)m(ector.)42 b(The)29 │ │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fj(6)p 136 100 1272 4 v │ │ │ │ │ +1453 w Fi(IV)30 b Fe(:)h Fd(DRAFT)f Fe(June)f(3,)i(2025)p │ │ │ │ │ +2629 100 V 227 399 a Fj(of)f(the)g(v)m(ector.)42 b(The)29 │ │ │ │ │ b(size)h(of)g(the)g(v)m(ector)h(is)e(reset)i(to)f(b)s(e)f(the)g(n)m(um) │ │ │ │ │ m(b)s(er)g(of)g(tagged)i(en)m(tries)g(that)f(are)g(no)m(w)227 │ │ │ │ │ 511 y(in)g(the)h(leading)g(lo)s(cations.)227 660 y Fd(Err)-5 │ │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fj(If)30 b Fi(iv)g Fj(of)h │ │ │ │ │ Fi(tags)e Fj(is)h Fi(NULL)f Fj(an)i(error)f(message)h(is)g(prin)m(ted)f │ │ │ │ │ (and)f(the)i(program)f(exits.)111 844 y(9.)46 b Fi(void)h │ │ │ │ │ (IV_filterPurge)d(\()j(IV)g(*iv,)g(int)g(tags[],)f(int)h(purgeTag)e(\)) │ │ │ │ │ @@ -4236,17 +4239,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 1278 4 v 1460 100 a Fi(IV)30 │ │ │ │ │ -b Fe(:)g Fd(DRAFT)121 b Fe(Ma)m(y)32 b(1,)f(2024)p 2575 │ │ │ │ │ -100 V 1278 w Fj(7)66 399 y(15.)46 b Fi(int)h(IV_findValue)e(\()i(IV)g │ │ │ │ │ +TeXDict begin 7 6 bop 91 100 1272 4 v 1453 100 a Fi(IV)30 │ │ │ │ │ +b Fe(:)g Fd(DRAFT)121 b Fe(June)30 b(3,)h(2025)p 2582 │ │ │ │ │ +100 V 1272 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 │ │ │ │ │ @@ -4317,17 +4320,17 @@ │ │ │ │ │ 5294 y Fd(Err)-5 b(or)36 b(che)-5 b(cking:)43 b Fj(If)31 │ │ │ │ │ b Fi(iv)g Fj(or)h Fi(fn)f Fj(are)i Fi(NULL)p Fj(,)d(or)i(if)g │ │ │ │ │ Fi(fn)f Fj(is)h(not)g(of)g(the)g(form)g Fi(*.ivf)e Fj(\(for)i(a)g │ │ │ │ │ (formatted)g(\014le\))227 5407 y(or)f Fi(*.ivb)e Fj(\(for)h(a)h(binary) │ │ │ │ │ e(\014le\),)j(an)e(error)g(message)h(is)g(prin)m(ted)f(and)f(the)i │ │ │ │ │ (metho)s(d)f(returns)f(zero.)p eop end │ │ │ │ │ %%Page: 8 8 │ │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fj(8)p 136 100 1278 4 v │ │ │ │ │ -1460 w Fi(IV)30 b Fe(:)h Fd(DRAFT)f Fe(Ma)m(y)h(1,)g(2024)p │ │ │ │ │ -2622 100 V 111 399 a Fj(2.)46 b Fi(int)h(IV_readFromFormattedFile)41 │ │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fj(8)p 136 100 1272 4 v │ │ │ │ │ +1453 w Fi(IV)30 b Fe(:)h Fd(DRAFT)f Fe(June)f(3,)i(2025)p │ │ │ │ │ +2629 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 │ │ │ │ │ @@ -4405,17 +4408,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 1278 4 v 1460 100 a Fi(IV)30 │ │ │ │ │ -b Fe(:)g Fd(DRAFT)121 b Fe(Ma)m(y)32 b(1,)f(2024)p 2575 │ │ │ │ │ -100 V 1278 w Fj(9)66 399 y(10.)46 b Fi(int)h(IV_writeForMatlab)c(\()48 │ │ │ │ │ +TeXDict begin 9 8 bop 91 100 1272 4 v 1453 100 a Fi(IV)30 │ │ │ │ │ +b Fe(:)g Fd(DRAFT)121 b Fe(June)30 b(3,)h(2025)p 2582 │ │ │ │ │ +100 V 1272 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 May 1, 2024 │ │ │ │ │ │ + 2 IV : DRAFT June 3, 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 May 1, 2024 3 │ │ │ │ │ │ + IV : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 4 IV : DRAFT June 3, 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 May 1, 2024 5 │ │ │ │ │ │ + IV : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 6 IV : DRAFT June 3, 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 May 1, 2024 7 │ │ │ │ │ │ + IV : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 8 IV : DRAFT June 3, 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 May 1, 2024 9 │ │ │ │ │ │ + IV : DRAFT June 3, 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.05.01:0544 │ │ │ │ │ +%DVIPSSource: TeX output 2025.06.03:1221 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -1855,21 +1855,22 @@ │ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ │ /UnderlineThickness 50 def │ │ │ │ │ end readonly def │ │ │ │ │ /Encoding 256 array │ │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ │ dup 44 /comma put │ │ │ │ │ dup 48 /zero put │ │ │ │ │ -dup 49 /one put │ │ │ │ │ dup 50 /two put │ │ │ │ │ -dup 52 /four put │ │ │ │ │ +dup 51 /three put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 77 /M put │ │ │ │ │ -dup 97 /a put │ │ │ │ │ -dup 121 /y put │ │ │ │ │ +dup 74 /J put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ +dup 110 /n put │ │ │ │ │ +dup 117 /u put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ │ @@ -2050,68 +2051,70 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004ACD1870 │ │ │ │ │ -A5EA947858F5795870BFE1343AD803FB854BF8F5A4E794E8EC57BE41DB5B8734 │ │ │ │ │ -13E47950F29A81EA0C81EA798863883D7F41F78325CA190CBBFFE822AE494550 │ │ │ │ │ -4BE83703071FC9512D128927AF3F63CEF8F86ABE1E15D7B4DDD39576E7DFF45E │ │ │ │ │ -3CB4115AAB1830DE8647B915DB4BEBEB5235C281E098B899BAB951D8D5798F01 │ │ │ │ │ -7F7C47336D31438E5126738AFEAB29E9A7CBE06DE4DD604477B542D2620DFD58 │ │ │ │ │ -28FE34238572F23C5A8EB7ACEE1E154DA13FC1A5AA67A3BA8C5CDFB2B80312C9 │ │ │ │ │ -BC9FAE56D08DDFA9498E6EF0D0F6BD18B3923E0B670B0740528BC843610736CB │ │ │ │ │ -80228C105C2F72C3C22D610C3D8C268DEEA2AEEE3221E198E79FE2966487360C │ │ │ │ │ -84AE08AC326F48B21447652121B1EB68AF857B8628F27BB4ED00F273E0DD044A │ │ │ │ │ -7D11A5BFAAC0A82328444CC9DD90167681B07D55CE28655F40C21250A226DEAB │ │ │ │ │ -2D46FFB680CB9242BE192AC0E55A44D45709FA6DE638C130D92C4E9B07BC3D61 │ │ │ │ │ -25CC2F0A7ED4F3574242FFE4461272EB1401266EEF551E0E2B0EF51FA8F250EC │ │ │ │ │ -FD9AFB6F5A0CC442B566BC24400133E3E9B9A9FC801CEF284FD2B3ECA43421FA │ │ │ │ │ -51E5D1EFE7BEAA96658362C438A0A5A6DCBC664A85EF88037B42355195B9D19C │ │ │ │ │ -7961D5F63B123451B298CD52C144FCD4F3641A823FBA14605E2DFD845E89102C │ │ │ │ │ -4E345CFD80E3EE6F097095A84C941FFC91B234F3615E4EE4C5D564284656E364 │ │ │ │ │ -AB9C4D1DE05F8FD065CA6064893F0CF3A3A501D59EF6568D05D818A010D06518 │ │ │ │ │ -E2C20418ADD1E652867F265084A27A5FE0C32213C59FFC3A84EDC89382521E5B │ │ │ │ │ -8AF66D76601F83C5C33CC9CF968C77B66F1FA074AC3DAD8E453C9264D03969EF │ │ │ │ │ -9E387BB3BEAA4BF0A9D88BA2CE6094E8996A3752A657E322A57AF006444BF516 │ │ │ │ │ -501C43CAA1BA7F16A3B6E4D3EBDECCCC19564DF18FB68194C132238A5441A21A │ │ │ │ │ -F52285CA1CA94A4BEC61EB509FA35EA5E393D662D938F4291F37EB7C2D5815BE │ │ │ │ │ -446813E1CFD06FFFFF2C4355C9DAFA48E765F4CC5DE4B9E37CFFB75E7A0B6F4B │ │ │ │ │ -4E412496F9C27DF4BDD90A869F0EBD81A57AE0B84051450A5A3E06CB9930DB2C │ │ │ │ │ -7C2DDB774BE870AEFCC9F4F067BE243FF3FD4B5C71B96C607DC4975973AF2650 │ │ │ │ │ -E7DF2BE3523A370EEDD07B5456B96E372ED10510CE677C044E609F21E93652FD │ │ │ │ │ -33CE612F587530D12214A3719CDB170C315B5D8763D5D4C67B5CAE90309E77AC │ │ │ │ │ -B45EB356C13A7BDE0D7320A9849CA357E30D7CF1085FFD70071932C3180AFC28 │ │ │ │ │ -B093016BA3F49A3878C34BB4A8727A441EB6CFC1A73F2313A7BF8D32EDF27E62 │ │ │ │ │ -EBEBC058FBA80B136FD2DE05C673B66482224ECEC63EDFB519AC13B5CC6624A6 │ │ │ │ │ -B3FD79037DA3851E93A386115852DBA88B176F21EDDB5386DC7C993C4210B28F │ │ │ │ │ -438131A586E34A09724E7CE60139F8247BFF14D2674805B3BD454C134728A43E │ │ │ │ │ -139E0AF71A7AC5CE42041EC83FD454B00AD29959FCF007789FFAF2D3492DCA4B │ │ │ │ │ -566EAFE97591ABC51CD0CD9BCD64E285FB823E41AA817E96B2B224005DAA4E15 │ │ │ │ │ -2141DB436B9D3FBA4EE4C876FD19A2E5133106FE2B9F704CB9614FCDC91B7950 │ │ │ │ │ -57053F45A5ED993B48189AAFAD5289F97AE2B0AEB5606579F6BD75F743EDB5B6 │ │ │ │ │ -5AA8F8A64CE507A47325081B3A013DB1BD596CDD3A83D2F29B070D6F9C57496E │ │ │ │ │ -14DF3F0F731C3BB00F2CE3D4BBACF1320322195D1DEA7A545BB4725BD1C6EC3D │ │ │ │ │ -63250C72B897741F8599D9D9BD2FB50EC80EFF2ECD6CE6603E95AABB45462ACF │ │ │ │ │ -12B005EE5979B6B05BCE9B97061686102349142A3CCC26D57F2A3283DD8B6E2A │ │ │ │ │ -98885E48C0D4A1A5C9612EDCB3B3D265E9B8CCCCA5D99F07F96C15B27D6A161F │ │ │ │ │ -936599E503C2859927201CACC31581AB7AB84F9EC9FFADC239F01DCC55940AB7 │ │ │ │ │ -FA884AA1EB6494C8E53DAD66E75A317428ACF9D943A74683BF547958F67D9E36 │ │ │ │ │ -F985EED50DEBCF255756A821927CB73848DCF167E96E975E959DE27FE7BA4FBA │ │ │ │ │ -D0EFC003F019D87572D6F9C73FC5B880C3EEDB7EF98E5EC3D25D6FE0015A6590 │ │ │ │ │ -E3C6EE632D7F6558B914609A8829CD1DEAB83A3F1207D5C3AAC9EAEA9DE1B4F8 │ │ │ │ │ -2375C5D4F630BCE13475F941ED2324D2CD4DCF2285298EAA4FFF89433D853860 │ │ │ │ │ -A974A9FC0808580FBDE7D02EDBB3D8C65BD3109AE8B359E96BFB7E21C696F440 │ │ │ │ │ -312B0CCAD810BF070DF8FC281E8198EB20A7FF9C9BCD291D74BC75EE46799485 │ │ │ │ │ -1AB2AE36B7E525034D146A856AF3BD9057A0033C08B606B89DD130548950C93D │ │ │ │ │ -94A8C92C47A34A791B1C108D2F36E899B79358B8081CCFC3D1A2F0521E4E2AE4 │ │ │ │ │ -7F500D6F2A53E5393E44201287225912590ABC738E8726622B67C3425639CCFB │ │ │ │ │ -F450B78A4918 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004B9BA1CC │ │ │ │ │ +580D3C6BDA4DC1B80B4365F1C80512453FC5316EC2D928FB731C3D6403E3C18B │ │ │ │ │ +E8424D644DF5E9A2134229C5C91CA68DB8E85BA2BB40F538F585DA6FA4037718 │ │ │ │ │ +B8053EBBA1E765346BCD5BDAA6C38115D31611D8A87A2238C145F2DA2F92E4DF │ │ │ │ │ +3987BD9C4D2A3D460E8941A68B125BCD9EE4F9FD262C4C8A71F47A2C81975635 │ │ │ │ │ +F1B981C274C53FA2ACCDE4C9D0A7C62D6C1EFF91CFC6712CA6A9F333C9564FCB │ │ │ │ │ +2A70F0AD715A79B10A08AB069E2A3C93BC0AED19D0CA10134B8DDDE8AF548DB2 │ │ │ │ │ +3A4AAA9C29682CF135BB767DAA16169A127EB50A7EECEB6480CF56A7D0F8AC56 │ │ │ │ │ +4A5090B3D75A790372886AF568D94C8165975A05BFBFDF1FFBA45F70700BB9E0 │ │ │ │ │ +57F3249EF9E9C8AD9CBCF6E4FD592DC4CDD2D7864F7C8A3FA6FC44C25C0CE7E1 │ │ │ │ │ +299F8A90B32B75DEA28917531621E1E7E0ECEE9E01665DEE99FBCF3EC3F30686 │ │ │ │ │ +513D7CBA745E660502603865D5A3E82D24B3F94B2884B21DC53AED87F49380E0 │ │ │ │ │ +68EE79C580931308DA762670C1F86F07FFB479773CD9C5DE6F22980DEC973D1C │ │ │ │ │ +A1E162D73932561BAAB24DE51DC8708291B666B36BABCA1FEDB6DD9C22572914 │ │ │ │ │ +7194DA044319F362452D53DD4D9A59134838E540F1E23805CEF53FF4F7519385 │ │ │ │ │ +1FAE3061F94369FEB1232BDA2E2A281E6972FB4524EFA37A598E7CDC097683EA │ │ │ │ │ +1B609952AEC0799B4711AAAB22D6B1D5CC729DE70897FDDC48AF0A12E40FFE30 │ │ │ │ │ +6528C601E68E8CFA4BBF897CF89DB712DE108DD1F084EFD917BFD9A70A74EB8F │ │ │ │ │ +D0D5B43CCC30373A5E871F18A969D01C69C2B4377622A0C8C4D7C4C28DDE5586 │ │ │ │ │ +BD17D5D640A6F396BD41993BD1932EE10953847F82F7BB36480B67A4F69F0763 │ │ │ │ │ +69423D1803B7BB60594ABEEE9578076639B84D8323F56104438803D45402FEE3 │ │ │ │ │ +045DAB16C4459DA9BBE01D0385CC771FB8DABDD8A9D280C18553F92FE6591CFD │ │ │ │ │ +26B82F28E6673BD823598D3F6CE03BEE04D9A21ED908DFC4F640227C148F133D │ │ │ │ │ +D32113275297C16EBCC9028AFD9102DE50E9CF67E7CF8C42BB8E73D1DAF8A5E2 │ │ │ │ │ +EF5979426229664A990DEF980A7038D2F229789D4F6EDBE1FB81BEC1A1BB14D7 │ │ │ │ │ +882515C62660E8877BE942712D57B86A2E19995AF087DECB7FD5208583C020AE │ │ │ │ │ +FEC86A2826530AD855006225300E4655F443C9360A8BAC96B5B096DDC9B12EDF │ │ │ │ │ +C862215AD6C432CF345FE701757E4EBB8C65F46912CB0F4DEF53672F7298D8F7 │ │ │ │ │ +EE51A9C5DE689A8D36956B7F0410893C0998DB03B73B4024CB046F8F6B32E07F │ │ │ │ │ +CD28A68AFB7152E45F1021DCD520D8A429FCDCA4B8054BAF0B48C4443280F198 │ │ │ │ │ +3360B078E6DEC37772DA8B629CFFD1534E8AA10E26B0BC58E92B9BF280C8EE45 │ │ │ │ │ +618EECDE904249F5A2010DC55D1028DFF4F058260B2B0A46541D6157970F44BD │ │ │ │ │ +D7483802D56A81184119DDBC914E8E394CBEEB506B61BB1CE2A3465252E5D8A3 │ │ │ │ │ +6BDD2D067E69D4ECEFC7D5568378F5F8B38EAFF138014185FE19DF7358A7A780 │ │ │ │ │ +3BE0E2CCD1561113F2F2319BDB503230DD0866121604710CEBBAA659ABFC010B │ │ │ │ │ +5CC40E5807F461D87E75BDC6AD96BCEF62AF668D48D7A76D08B57650F35CF609 │ │ │ │ │ +C0F791AEBEB75E29FA69596BAB419804AECE0F0238AAE64A6C13A22EBF4E3EAC │ │ │ │ │ +3570DECE85F54064486B2364D63E94FEB7C16350CDA318510A45C8848DB470ED │ │ │ │ │ +BFAFD2365681D65CFF3E6C1B4B7C8AE3066F96E819D05B97F3A6C2BFF8A72978 │ │ │ │ │ +EEB7F632FF604AD003A3CCA5A0465D53033A646E8082D3491EDECA3DA1A0E1BB │ │ │ │ │ +64BF36946520438D2EE72FA9EB1CEEDF56510AADA55A8DE280E23C904E0810FA │ │ │ │ │ +A3177CF684F06A4042DE4CD4AB21E2F0616153BEEE58EBBD89911FA43BC52969 │ │ │ │ │ +230C8137DB34C13E147B06C7A3875A931E1AC127E7D3EA0DF8346B6971F80901 │ │ │ │ │ +DC37F2DE1A0B81FD93CA3B5EB9B29ECABA1492901B1BA261DAB872FB3431C718 │ │ │ │ │ +9C9CDA7864908CD773864908DEB44E343221C2C4C335341789A46325D94C767C │ │ │ │ │ +740E3B60CE6D452A3A665967F568671FD7DD460B404B9C3D2EDCD47A336AA2C7 │ │ │ │ │ +BB0B1AC3823978F610629EF7AB526098A7EE7076F50A146D8134BA2DEC1B8ACF │ │ │ │ │ +68A7E4A9B7BE17FB71480516F2D6A8866E56CFD7C7A41311F48DDDD9887DACB8 │ │ │ │ │ +73FDAF5F25E956AFB0A9D530DE2E1128F006AAC9A78715BA2F90C8FED3729BFA │ │ │ │ │ +BDDD4098F870A27A91A0CB540D166FF86A442E95C9C361FD23378A2A138EAFB8 │ │ │ │ │ +D7050B486E1CB95068D890BCCD669456F3385C8F1793CE545099421368FE0F46 │ │ │ │ │ +53137AD2B65030B19CE7FF6B1669DB7A3C440AEF27149780E36C7097B7A8B71B │ │ │ │ │ +8789EECFA9A70B1F9695BB5D94E9A7D341291C1CA1BDEF4BE3EFCB8234CE9FFD │ │ │ │ │ +E1C4963CF919780129FA60162FEAA8AE97328F4BA14D949057A3EE74214F2D29 │ │ │ │ │ +51E7BE584446F6702F39957AE455CF8AF0C36AADAA39B53553D923CA5E9D4988 │ │ │ │ │ +76701B4F77DAE5185AC29900 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -3799,16 +3802,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 23[45 19[83 18[25 5[45 1[45 45 45 3[25 44[{}9 │ │ │ │ │ -90.9091 /CMSL10 rf │ │ │ │ │ +/Fe 138[51 6[51 8[40 26[47 15[25 4[45 1[45 45 1[45 3[25 │ │ │ │ │ +44[{}10 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 │ │ │ │ │ @@ -3924,17 +3927,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 1255 4 v │ │ │ │ │ -1436 w Fi(IVL)30 b Fe(:)g Fd(DRAFT)h Fe(Ma)m(y)g(1,)g(2024)p │ │ │ │ │ -2646 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 1248 4 v │ │ │ │ │ +1429 w Fi(IVL)30 b Fe(:)g Fd(DRAFT)h Fe(June)e(3,)i(2025)p │ │ │ │ │ +2653 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 │ │ │ │ │ @@ -4001,17 +4004,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 1255 4 v 1436 100 a Fi(IVL)29 │ │ │ │ │ -b Fe(:)i Fd(DRAFT)121 b Fe(Ma)m(y)32 b(1,)f(2024)p 2599 │ │ │ │ │ -100 V 1255 w Fj(3)111 399 y(3.)46 b Fi(void)h(IVL_clearData)d(\()k(IVL) │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1248 4 v 1429 100 a Fi(IVL)29 │ │ │ │ │ +b Fe(:)i Fd(DRAFT)121 b Fe(June)30 b(3,)h(2025)p 2606 │ │ │ │ │ +100 V 1248 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 │ │ │ │ │ @@ -4059,17 +4062,17 @@ │ │ │ │ │ (int)g(incr)f(\))i(;)227 5126 y Fj(This)30 b(metho)s(d)g(sets)g(the)h │ │ │ │ │ (storage)h(incremen)m(t)f(to)g Fi(incr)p Fj(.)227 5294 │ │ │ │ │ y Fd(Err)-5 b(or)27 b(che)-5 b(cking:)36 b Fj(If)21 b │ │ │ │ │ Fi(ivl)g Fj(is)i Fi(NULL)e Fj(or)h Fi(incr)f Fj(is)h(negativ)m(e,)k(an) │ │ │ │ │ c(error)f(message)j(is)e(prin)m(ted)f(and)h(the)g(program)227 │ │ │ │ │ 5407 y(exits.)p eop end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fj(4)p 136 100 1255 4 v │ │ │ │ │ -1436 w Fi(IVL)30 b Fe(:)g Fd(DRAFT)h Fe(Ma)m(y)g(1,)g(2024)p │ │ │ │ │ -2646 100 V 0 399 a Fa(1.2.3)112 b(Initialization)39 b(and)f(resizing)g │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fj(4)p 136 100 1248 4 v │ │ │ │ │ +1429 w Fi(IVL)30 b Fe(:)g Fd(DRAFT)h Fe(June)e(3,)i(2025)p │ │ │ │ │ +2653 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 │ │ │ │ │ @@ -4148,17 +4151,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 1255 4 v 1436 100 a Fi(IVL)29 │ │ │ │ │ -b Fe(:)i Fd(DRAFT)121 b Fe(Ma)m(y)32 b(1,)f(2024)p 2599 │ │ │ │ │ -100 V 1255 w Fj(5)227 399 y(This)39 b(metho)s(d)f(is)h(used)g(to)g(c)m │ │ │ │ │ +TeXDict begin 5 4 bop 91 100 1248 4 v 1429 100 a Fi(IVL)29 │ │ │ │ │ +b Fe(:)i Fd(DRAFT)121 b Fe(June)30 b(3,)h(2025)p 2606 │ │ │ │ │ +100 V 1248 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 │ │ │ │ │ @@ -4201,17 +4204,17 @@ │ │ │ │ │ 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 1255 4 v │ │ │ │ │ -1436 w Fi(IVL)30 b Fe(:)g Fd(DRAFT)h Fe(Ma)m(y)g(1,)g(2024)p │ │ │ │ │ -2646 100 V 605 311 2918 4 v 605 2506 4 2196 v 663 414 │ │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fj(6)p 136 100 1248 4 v │ │ │ │ │ +1429 w Fi(IVL)30 b Fe(:)g Fd(DRAFT)h Fe(June)e(3,)i(2025)p │ │ │ │ │ +2653 100 V 605 311 2918 4 v 605 2506 4 2196 v 663 414 │ │ │ │ │ a Fj(if)g Fi(ilist)46 b(>=)h(maxnlist)28 b Fj(then)898 │ │ │ │ │ 527 y(the)j(n)m(um)m(b)s(er)e(of)h(lists)h(is)g(increased)f(via)h(a)g │ │ │ │ │ (call)h(to)f Fi(IVL)p 2816 527 29 4 v 33 w(setMaxnlist\(\))663 │ │ │ │ │ 640 y Fj(endif)663 753 y(if)g Fi(ilist)46 b(>=)h(nlist)29 │ │ │ │ │ b Fj(then)898 866 y Fi(nlist)g Fj(is)i(increased)663 │ │ │ │ │ 979 y(endif)663 1092 y(if)g Fi(isize)46 b(=)i(0)30 b │ │ │ │ │ Fj(then)898 1205 y(release)i(the)e(storage)i(for)f(that)f(list,)i │ │ │ │ │ @@ -4254,17 +4257,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 1255 4 v 1436 100 a Fi(IVL)29 │ │ │ │ │ -b Fe(:)i Fd(DRAFT)121 b Fe(Ma)m(y)32 b(1,)f(2024)p 2599 │ │ │ │ │ -100 V 1255 w Fj(7)111 399 y(3.)46 b Fi(int)h(IVL_sortUp)e(\()j(IVL)f │ │ │ │ │ +TeXDict begin 7 6 bop 91 100 1248 4 v 1429 100 a Fi(IVL)29 │ │ │ │ │ +b Fe(:)i Fd(DRAFT)121 b Fe(June)30 b(3,)h(2025)p 2606 │ │ │ │ │ +100 V 1248 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 │ │ │ │ │ @@ -4332,17 +4335,17 @@ │ │ │ │ │ b(so)227 5246 y(w)m(e)31 b(create)h(and)e(return)f(a)i(new)f │ │ │ │ │ Fi(IVL)f Fj(ob)5 b(ject)31 b(that)g(con)m(tains)h(en)m(tries)f(for)f │ │ │ │ │ (the)h(uncompressed)e(graph.)227 5407 y Fd(Err)-5 b(or)30 │ │ │ │ │ b(che)-5 b(cking:)38 b Fj(If)26 b Fi(ivl)f Fj(or)h Fi(eqmapIV)e │ │ │ │ │ Fj(is)i Fi(NULL)p Fj(,)f(an)h(error)f(message)i(is)f(prin)m(ted)g(and)f │ │ │ │ │ (the)h(program)g(exits.)p eop end │ │ │ │ │ %%Page: 8 8 │ │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fj(8)p 136 100 1255 4 v │ │ │ │ │ -1436 w Fi(IVL)30 b Fe(:)g Fd(DRAFT)h Fe(Ma)m(y)g(1,)g(2024)p │ │ │ │ │ -2646 100 V 0 399 a Fa(1.2.6)112 b(Miscellaneous)40 b(metho)s(ds)111 │ │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fj(8)p 136 100 1248 4 v │ │ │ │ │ +1429 w Fi(IVL)30 b Fe(:)g Fd(DRAFT)h Fe(June)e(3,)i(2025)p │ │ │ │ │ +2653 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 │ │ │ │ │ @@ -4406,17 +4409,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 1255 4 v 1436 100 a Fi(IVL)29 │ │ │ │ │ -b Fe(:)i Fd(DRAFT)121 b Fe(Ma)m(y)32 b(1,)f(2024)p 2599 │ │ │ │ │ -100 V 1255 w Fj(9)111 399 y(3.)46 b Fi(int)h(IVL_readFromBinaryFile)42 │ │ │ │ │ +TeXDict begin 9 8 bop 91 100 1248 4 v 1429 100 a Fi(IVL)29 │ │ │ │ │ +b Fe(:)i Fd(DRAFT)121 b Fe(June)30 b(3,)h(2025)p 2606 │ │ │ │ │ +100 V 1248 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 b(or)34 │ │ │ │ │ @@ -4482,17 +4485,17 @@ │ │ │ │ │ Fi(IVL)e Fj(ob)5 b(ject)29 b(from)e Fi(inFile)e Fj(and)i(writes)h(out)g │ │ │ │ │ (the)f(ob)5 b(ject)29 b(to)f Fi(outFile)337 5294 y Ff(\210)45 │ │ │ │ │ b Fj(The)28 b Fi(msglvl)f Fj(parameter)i(determines)g(the)g(amoun)m(t)g │ │ │ │ │ (of)f(output)h(|)f(taking)i Fi(msglvl)46 b(>=)h(3)28 │ │ │ │ │ b Fj(means)427 5407 y(the)j Fi(IVL)e Fj(ob)5 b(ject)32 │ │ │ │ │ b(is)e(written)g(to)i(the)e(message)i(\014le.)p eop end │ │ │ │ │ %%Page: 10 10 │ │ │ │ │ -TeXDict begin 10 9 bop 0 100 a Fj(10)p 182 100 1232 4 │ │ │ │ │ -v 1414 w Fi(IVL)30 b Fe(:)g Fd(DRAFT)g Fe(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2669 100 V 337 399 a Ff(\210)45 b Fj(The)33 b Fi(msgFile)e │ │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fj(10)p 182 100 1225 4 │ │ │ │ │ +v 1407 w Fi(IVL)30 b Fe(:)g Fd(DRAFT)g Fe(June)g(3,)h(2025)p │ │ │ │ │ +2676 100 V 337 399 a Ff(\210)45 b Fj(The)33 b Fi(msgFile)e │ │ │ │ │ Fj(parameter)j(determines)f(the)h(message)g(\014le)f(|)h(if)f │ │ │ │ │ Fi(msgFile)e Fj(is)i Fi(stdout)p Fj(,)g(then)g(the)427 │ │ │ │ │ 511 y(message)27 b(\014le)f(is)g Fd(stdout)p Fj(,)i(otherwise)e(a)h │ │ │ │ │ (\014le)f(is)f(op)s(ened)g(with)h Fd(app)-5 b(end)28 │ │ │ │ │ b Fj(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 624 │ │ │ │ │ y(data.)337 770 y Ff(\210)45 b Fj(The)25 b Fi(inFile)e │ │ │ │ │ Fj(parameter)i(is)g(the)g(input)f(\014le)g(for)h(the)g │ │ │ │ │ ├── ps2ascii {} │ │ │ │ │ │ @@ -22,15 +22,15 @@ │ │ │ │ │ │ Each list is allocated separately using the IVinit() function. When the IVL object is │ │ │ │ │ │ free’d, each list is free’d separately using the IVfree() function. │ │ │ │ │ │ – IVL UNKNOWN │ │ │ │ │ │ This storage mode is available for the cases where storage for a list is aliased to another │ │ │ │ │ │ location. Absolutely no free’ing of data is done when the IVL object is free’d. │ │ │ │ │ │ The storage management is handled by IVL setList() and IVL setPointerToList(). │ │ │ │ │ │ 1 │ │ │ │ │ │ - 2 IVL : DRAFT May 1, 2024 │ │ │ │ │ │ + 2 IVL : DRAFT June 3, 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 May 1, 2024 3 │ │ │ │ │ │ + IVL : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 4 IVL : DRAFT June 3, 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 May 1, 2024 5 │ │ │ │ │ │ + IVL : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 6 IVL : DRAFT June 3, 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 May 1, 2024 7 │ │ │ │ │ │ + IVL : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 8 IVL : DRAFT June 3, 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 May 1, 2024 9 │ │ │ │ │ │ + IVL : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 10 IVL : DRAFT June 3, 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.05.01:0544 │ │ │ │ │ +%DVIPSSource: TeX output 2025.06.03:1221 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -1255,21 +1255,22 @@ │ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ │ /UnderlineThickness 50 def │ │ │ │ │ end readonly def │ │ │ │ │ /Encoding 256 array │ │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ │ dup 44 /comma put │ │ │ │ │ dup 48 /zero put │ │ │ │ │ -dup 49 /one put │ │ │ │ │ dup 50 /two put │ │ │ │ │ -dup 52 /four put │ │ │ │ │ +dup 51 /three put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 77 /M put │ │ │ │ │ -dup 97 /a put │ │ │ │ │ -dup 121 /y put │ │ │ │ │ +dup 74 /J put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ +dup 110 /n put │ │ │ │ │ +dup 117 /u put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ │ @@ -1450,68 +1451,70 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004ACD1870 │ │ │ │ │ -A5EA947858F5795870BFE1343AD803FB854BF8F5A4E794E8EC57BE41DB5B8734 │ │ │ │ │ -13E47950F29A81EA0C81EA798863883D7F41F78325CA190CBBFFE822AE494550 │ │ │ │ │ -4BE83703071FC9512D128927AF3F63CEF8F86ABE1E15D7B4DDD39576E7DFF45E │ │ │ │ │ -3CB4115AAB1830DE8647B915DB4BEBEB5235C281E098B899BAB951D8D5798F01 │ │ │ │ │ -7F7C47336D31438E5126738AFEAB29E9A7CBE06DE4DD604477B542D2620DFD58 │ │ │ │ │ -28FE34238572F23C5A8EB7ACEE1E154DA13FC1A5AA67A3BA8C5CDFB2B80312C9 │ │ │ │ │ -BC9FAE56D08DDFA9498E6EF0D0F6BD18B3923E0B670B0740528BC843610736CB │ │ │ │ │ -80228C105C2F72C3C22D610C3D8C268DEEA2AEEE3221E198E79FE2966487360C │ │ │ │ │ -84AE08AC326F48B21447652121B1EB68AF857B8628F27BB4ED00F273E0DD044A │ │ │ │ │ -7D11A5BFAAC0A82328444CC9DD90167681B07D55CE28655F40C21250A226DEAB │ │ │ │ │ -2D46FFB680CB9242BE192AC0E55A44D45709FA6DE638C130D92C4E9B07BC3D61 │ │ │ │ │ -25CC2F0A7ED4F3574242FFE4461272EB1401266EEF551E0E2B0EF51FA8F250EC │ │ │ │ │ -FD9AFB6F5A0CC442B566BC24400133E3E9B9A9FC801CEF284FD2B3ECA43421FA │ │ │ │ │ -51E5D1EFE7BEAA96658362C438A0A5A6DCBC664A85EF88037B42355195B9D19C │ │ │ │ │ -7961D5F63B123451B298CD52C144FCD4F3641A823FBA14605E2DFD845E89102C │ │ │ │ │ -4E345CFD80E3EE6F097095A84C941FFC91B234F3615E4EE4C5D564284656E364 │ │ │ │ │ -AB9C4D1DE05F8FD065CA6064893F0CF3A3A501D59EF6568D05D818A010D06518 │ │ │ │ │ -E2C20418ADD1E652867F265084A27A5FE0C32213C59FFC3A84EDC89382521E5B │ │ │ │ │ -8AF66D76601F83C5C33CC9CF968C77B66F1FA074AC3DAD8E453C9264D03969EF │ │ │ │ │ -9E387BB3BEAA4BF0A9D88BA2CE6094E8996A3752A657E322A57AF006444BF516 │ │ │ │ │ -501C43CAA1BA7F16A3B6E4D3EBDECCCC19564DF18FB68194C132238A5441A21A │ │ │ │ │ -F52285CA1CA94A4BEC61EB509FA35EA5E393D662D938F4291F37EB7C2D5815BE │ │ │ │ │ -446813E1CFD06FFFFF2C4355C9DAFA48E765F4CC5DE4B9E37CFFB75E7A0B6F4B │ │ │ │ │ -4E412496F9C27DF4BDD90A869F0EBD81A57AE0B84051450A5A3E06CB9930DB2C │ │ │ │ │ -7C2DDB774BE870AEFCC9F4F067BE243FF3FD4B5C71B96C607DC4975973AF2650 │ │ │ │ │ -E7DF2BE3523A370EEDD07B5456B96E372ED10510CE677C044E609F21E93652FD │ │ │ │ │ -33CE612F587530D12214A3719CDB170C315B5D8763D5D4C67B5CAE90309E77AC │ │ │ │ │ -B45EB356C13A7BDE0D7320A9849CA357E30D7CF1085FFD70071932C3180AFC28 │ │ │ │ │ -B093016BA3F49A3878C34BB4A8727A441EB6CFC1A73F2313A7BF8D32EDF27E62 │ │ │ │ │ -EBEBC058FBA80B136FD2DE05C673B66482224ECEC63EDFB519AC13B5CC6624A6 │ │ │ │ │ -B3FD79037DA3851E93A386115852DBA88B176F21EDDB5386DC7C993C4210B28F │ │ │ │ │ -438131A586E34A09724E7CE60139F8247BFF14D2674805B3BD454C134728A43E │ │ │ │ │ -139E0AF71A7AC5CE42041EC83FD454B00AD29959FCF007789FFAF2D3492DCA4B │ │ │ │ │ -566EAFE97591ABC51CD0CD9BCD64E285FB823E41AA817E96B2B224005DAA4E15 │ │ │ │ │ -2141DB436B9D3FBA4EE4C876FD19A2E5133106FE2B9F704CB9614FCDC91B7950 │ │ │ │ │ -57053F45A5ED993B48189AAFAD5289F97AE2B0AEB5606579F6BD75F743EDB5B6 │ │ │ │ │ -5AA8F8A64CE507A47325081B3A013DB1BD596CDD3A83D2F29B070D6F9C57496E │ │ │ │ │ -14DF3F0F731C3BB00F2CE3D4BBACF1320322195D1DEA7A545BB4725BD1C6EC3D │ │ │ │ │ -63250C72B897741F8599D9D9BD2FB50EC80EFF2ECD6CE6603E95AABB45462ACF │ │ │ │ │ -12B005EE5979B6B05BCE9B97061686102349142A3CCC26D57F2A3283DD8B6E2A │ │ │ │ │ -98885E48C0D4A1A5C9612EDCB3B3D265E9B8CCCCA5D99F07F96C15B27D6A161F │ │ │ │ │ -936599E503C2859927201CACC31581AB7AB84F9EC9FFADC239F01DCC55940AB7 │ │ │ │ │ -FA884AA1EB6494C8E53DAD66E75A317428ACF9D943A74683BF547958F67D9E36 │ │ │ │ │ -F985EED50DEBCF255756A821927CB73848DCF167E96E975E959DE27FE7BA4FBA │ │ │ │ │ -D0EFC003F019D87572D6F9C73FC5B880C3EEDB7EF98E5EC3D25D6FE0015A6590 │ │ │ │ │ -E3C6EE632D7F6558B914609A8829CD1DEAB83A3F1207D5C3AAC9EAEA9DE1B4F8 │ │ │ │ │ -2375C5D4F630BCE13475F941ED2324D2CD4DCF2285298EAA4FFF89433D853860 │ │ │ │ │ -A974A9FC0808580FBDE7D02EDBB3D8C65BD3109AE8B359E96BFB7E21C696F440 │ │ │ │ │ -312B0CCAD810BF070DF8FC281E8198EB20A7FF9C9BCD291D74BC75EE46799485 │ │ │ │ │ -1AB2AE36B7E525034D146A856AF3BD9057A0033C08B606B89DD130548950C93D │ │ │ │ │ -94A8C92C47A34A791B1C108D2F36E899B79358B8081CCFC3D1A2F0521E4E2AE4 │ │ │ │ │ -7F500D6F2A53E5393E44201287225912590ABC738E8726622B67C3425639CCFB │ │ │ │ │ -F450B78A4918 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004B9BA1CC │ │ │ │ │ +580D3C6BDA4DC1B80B4365F1C80512453FC5316EC2D928FB731C3D6403E3C18B │ │ │ │ │ +E8424D644DF5E9A2134229C5C91CA68DB8E85BA2BB40F538F585DA6FA4037718 │ │ │ │ │ +B8053EBBA1E765346BCD5BDAA6C38115D31611D8A87A2238C145F2DA2F92E4DF │ │ │ │ │ +3987BD9C4D2A3D460E8941A68B125BCD9EE4F9FD262C4C8A71F47A2C81975635 │ │ │ │ │ +F1B981C274C53FA2ACCDE4C9D0A7C62D6C1EFF91CFC6712CA6A9F333C9564FCB │ │ │ │ │ +2A70F0AD715A79B10A08AB069E2A3C93BC0AED19D0CA10134B8DDDE8AF548DB2 │ │ │ │ │ +3A4AAA9C29682CF135BB767DAA16169A127EB50A7EECEB6480CF56A7D0F8AC56 │ │ │ │ │ +4A5090B3D75A790372886AF568D94C8165975A05BFBFDF1FFBA45F70700BB9E0 │ │ │ │ │ +57F3249EF9E9C8AD9CBCF6E4FD592DC4CDD2D7864F7C8A3FA6FC44C25C0CE7E1 │ │ │ │ │ +299F8A90B32B75DEA28917531621E1E7E0ECEE9E01665DEE99FBCF3EC3F30686 │ │ │ │ │ +513D7CBA745E660502603865D5A3E82D24B3F94B2884B21DC53AED87F49380E0 │ │ │ │ │ +68EE79C580931308DA762670C1F86F07FFB479773CD9C5DE6F22980DEC973D1C │ │ │ │ │ +A1E162D73932561BAAB24DE51DC8708291B666B36BABCA1FEDB6DD9C22572914 │ │ │ │ │ +7194DA044319F362452D53DD4D9A59134838E540F1E23805CEF53FF4F7519385 │ │ │ │ │ +1FAE3061F94369FEB1232BDA2E2A281E6972FB4524EFA37A598E7CDC097683EA │ │ │ │ │ +1B609952AEC0799B4711AAAB22D6B1D5CC729DE70897FDDC48AF0A12E40FFE30 │ │ │ │ │ +6528C601E68E8CFA4BBF897CF89DB712DE108DD1F084EFD917BFD9A70A74EB8F │ │ │ │ │ +D0D5B43CCC30373A5E871F18A969D01C69C2B4377622A0C8C4D7C4C28DDE5586 │ │ │ │ │ +BD17D5D640A6F396BD41993BD1932EE10953847F82F7BB36480B67A4F69F0763 │ │ │ │ │ +69423D1803B7BB60594ABEEE9578076639B84D8323F56104438803D45402FEE3 │ │ │ │ │ +045DAB16C4459DA9BBE01D0385CC771FB8DABDD8A9D280C18553F92FE6591CFD │ │ │ │ │ +26B82F28E6673BD823598D3F6CE03BEE04D9A21ED908DFC4F640227C148F133D │ │ │ │ │ +D32113275297C16EBCC9028AFD9102DE50E9CF67E7CF8C42BB8E73D1DAF8A5E2 │ │ │ │ │ +EF5979426229664A990DEF980A7038D2F229789D4F6EDBE1FB81BEC1A1BB14D7 │ │ │ │ │ +882515C62660E8877BE942712D57B86A2E19995AF087DECB7FD5208583C020AE │ │ │ │ │ +FEC86A2826530AD855006225300E4655F443C9360A8BAC96B5B096DDC9B12EDF │ │ │ │ │ +C862215AD6C432CF345FE701757E4EBB8C65F46912CB0F4DEF53672F7298D8F7 │ │ │ │ │ +EE51A9C5DE689A8D36956B7F0410893C0998DB03B73B4024CB046F8F6B32E07F │ │ │ │ │ +CD28A68AFB7152E45F1021DCD520D8A429FCDCA4B8054BAF0B48C4443280F198 │ │ │ │ │ +3360B078E6DEC37772DA8B629CFFD1534E8AA10E26B0BC58E92B9BF280C8EE45 │ │ │ │ │ +618EECDE904249F5A2010DC55D1028DFF4F058260B2B0A46541D6157970F44BD │ │ │ │ │ +D7483802D56A81184119DDBC914E8E394CBEEB506B61BB1CE2A3465252E5D8A3 │ │ │ │ │ +6BDD2D067E69D4ECEFC7D5568378F5F8B38EAFF138014185FE19DF7358A7A780 │ │ │ │ │ +3BE0E2CCD1561113F2F2319BDB503230DD0866121604710CEBBAA659ABFC010B │ │ │ │ │ +5CC40E5807F461D87E75BDC6AD96BCEF62AF668D48D7A76D08B57650F35CF609 │ │ │ │ │ +C0F791AEBEB75E29FA69596BAB419804AECE0F0238AAE64A6C13A22EBF4E3EAC │ │ │ │ │ +3570DECE85F54064486B2364D63E94FEB7C16350CDA318510A45C8848DB470ED │ │ │ │ │ +BFAFD2365681D65CFF3E6C1B4B7C8AE3066F96E819D05B97F3A6C2BFF8A72978 │ │ │ │ │ +EEB7F632FF604AD003A3CCA5A0465D53033A646E8082D3491EDECA3DA1A0E1BB │ │ │ │ │ +64BF36946520438D2EE72FA9EB1CEEDF56510AADA55A8DE280E23C904E0810FA │ │ │ │ │ +A3177CF684F06A4042DE4CD4AB21E2F0616153BEEE58EBBD89911FA43BC52969 │ │ │ │ │ +230C8137DB34C13E147B06C7A3875A931E1AC127E7D3EA0DF8346B6971F80901 │ │ │ │ │ +DC37F2DE1A0B81FD93CA3B5EB9B29ECABA1492901B1BA261DAB872FB3431C718 │ │ │ │ │ +9C9CDA7864908CD773864908DEB44E343221C2C4C335341789A46325D94C767C │ │ │ │ │ +740E3B60CE6D452A3A665967F568671FD7DD460B404B9C3D2EDCD47A336AA2C7 │ │ │ │ │ +BB0B1AC3823978F610629EF7AB526098A7EE7076F50A146D8134BA2DEC1B8ACF │ │ │ │ │ +68A7E4A9B7BE17FB71480516F2D6A8866E56CFD7C7A41311F48DDDD9887DACB8 │ │ │ │ │ +73FDAF5F25E956AFB0A9D530DE2E1128F006AAC9A78715BA2F90C8FED3729BFA │ │ │ │ │ +BDDD4098F870A27A91A0CB540D166FF86A442E95C9C361FD23378A2A138EAFB8 │ │ │ │ │ +D7050B486E1CB95068D890BCCD669456F3385C8F1793CE545099421368FE0F46 │ │ │ │ │ +53137AD2B65030B19CE7FF6B1669DB7A3C440AEF27149780E36C7097B7A8B71B │ │ │ │ │ +8789EECFA9A70B1F9695BB5D94E9A7D341291C1CA1BDEF4BE3EFCB8234CE9FFD │ │ │ │ │ +E1C4963CF919780129FA60162FEAA8AE97328F4BA14D949057A3EE74214F2D29 │ │ │ │ │ +51E7BE584446F6702F39957AE455CF8AF0C36AADAA39B53553D923CA5E9D4988 │ │ │ │ │ +76701B4F77DAE5185AC29900 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -3191,17 +3194,17 @@ │ │ │ │ │ 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 23[45 19[83 18[25 5[45 1[45 45 45 3[25 │ │ │ │ │ -44[{}9 90.9091 /CMSL10 rf /Fd 142[62 11[62 62 26[62 73[{}4 │ │ │ │ │ -119.552 /CMTT12 rf │ │ │ │ │ +rf /Fc 138[51 6[51 8[40 26[47 15[25 4[45 1[45 45 1[45 │ │ │ │ │ +3[25 44[{}10 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 │ │ │ │ │ {/.notdef}repeat/dollar/.notdef/.notdef/quotesingle/.notdef/.notdef │ │ │ │ │ @@ -3300,17 +3303,17 @@ │ │ │ │ │ b(,)31 b Fh(head)47 b(=)h(tail)e(=)i(-1)p Fi(.)0 5049 │ │ │ │ │ y Ff(1.2)135 b(Protot)l(yp)t(es)46 b(and)f(descriptions)g(of)g │ │ │ │ │ Fd(Ideq)e Ff(metho)t(ds)0 5294 y Fi(This)25 b(section)h(con)m(tains)h │ │ │ │ │ (brief)e(descriptions)h(including)f(protot)m(yp)s(es)h(of)f(all)i │ │ │ │ │ (metho)s(ds)d(that)j(b)s(elong)e(to)h(the)g Fh(Ideq)0 │ │ │ │ │ 5407 y Fi(ob)5 b(ject.)1927 5656 y(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fi(2)p 136 100 1226 4 v │ │ │ │ │ -1407 w Fh(Ideq)30 b Fc(:)40 b Fg(DRAFT)31 b Fc(Ma)m(y)g(1,)g(2024)p │ │ │ │ │ -2675 100 V 0 399 a Fb(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fi(2)p 136 100 1219 4 v │ │ │ │ │ +1401 w Fh(Ideq)29 b Fc(:)40 b Fg(DRAFT)31 b Fc(June)e(3,)i(2025)p │ │ │ │ │ +2682 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) │ │ │ │ │ @@ -3365,17 +3368,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 1226 4 v 1407 100 a Fh(Ideq)29 │ │ │ │ │ -b Fc(:)41 b Fg(DRAFT)121 b Fc(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2628 100 V 1226 w Fi(3)0 399 y Fb(1.2.3)112 b(Utilit)m(y)38 │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1219 4 v 1400 100 a Fh(Ideq)29 │ │ │ │ │ +b Fc(:)41 b Fg(DRAFT)121 b Fc(June)29 b(3,)i(2025)p 2634 │ │ │ │ │ +100 V 1219 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 │ │ │ │ │ @@ -3444,17 +3447,17 @@ │ │ │ │ │ 3130 5136 V 34 w(resize\(\))d Fi(metho)s(d.)227 5248 │ │ │ │ │ y(Otherwise,)f(the)f(item)h(is)g(placed)f(in)m(to)i(the)e(list)h(and)f │ │ │ │ │ Fh(1)g Fi(is)h(returned.)227 5407 y Fg(Err)-5 b(or)34 │ │ │ │ │ b(che)-5 b(cking:)40 b Fi(If)30 b Fh(deq)g Fi(is)g Fh(NULL)p │ │ │ │ │ Fi(,)g(an)g(error)g(message)h(is)g(prin)m(ted)f(and)g(the)g(program)g │ │ │ │ │ (exits.)p eop end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fi(4)p 136 100 1226 4 v │ │ │ │ │ -1407 w Fh(Ideq)30 b Fc(:)40 b Fg(DRAFT)31 b Fc(Ma)m(y)g(1,)g(2024)p │ │ │ │ │ -2675 100 V 0 399 a Fb(1.2.4)112 b(IO)38 b(metho)s(ds)111 │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fi(4)p 136 100 1219 4 v │ │ │ │ │ +1401 w Fh(Ideq)29 b Fc(:)40 b Fg(DRAFT)31 b Fc(June)e(3,)i(2025)p │ │ │ │ │ +2682 100 V 0 399 a Fb(1.2.4)112 b(IO)38 b(metho)s(ds)111 │ │ │ │ │ 595 y Fi(1.)46 b Fh(void)h(Ideq_writeForHumanEye)42 b(\()47 │ │ │ │ │ b(Ideq)g(*deq)g(\))g(;)227 745 y Fi(This)31 b(metho)s(d)g(write)h(the)f │ │ │ │ │ (state)i(of)f(the)f(ob)5 b(ject,)33 b(\(the)f(size,)h(head)f(and)e │ │ │ │ │ (tail\))k(and)c(the)i(list)g(of)g(en)m(tries)g(to)227 │ │ │ │ │ 858 y(a)f(\014le.)227 1008 y Fg(Err)-5 b(or)34 b(che)-5 │ │ │ │ │ b(cking:)40 b Fi(If)30 b Fh(deq)g Fi(or)g Fh(fp)g Fi(is)g │ │ │ │ │ Fh(NULL)p Fi(,)g(an)g(error)g(message)i(is)e(prin)m(ted)g(and)g(the)g │ │ │ │ │ ├── ps2ascii {} │ │ │ │ │ │ @@ -16,15 +16,15 @@ │ │ │ │ │ │ • IV iv : an IV object to hold the list vector. │ │ │ │ │ │ A correctly initialized and nontrivial Ideq object will have maxsize > 0. When the dequeue is │ │ │ │ │ │ empty, head = tail = -1. │ │ │ │ │ │ 1.2 Prototypes and descriptions of Ideq methods │ │ │ │ │ │ This section contains brief descriptions including prototypes of all methods that belong to the Ideq │ │ │ │ │ │ object. │ │ │ │ │ │ 1 │ │ │ │ │ │ - 2 Ideq : DRAFT May 1, 2024 │ │ │ │ │ │ + 2 Ideq : DRAFT June 3, 2025 │ │ │ │ │ │ 1.2.1 Basic methods │ │ │ │ │ │ As usual, there are four basic methods to support object creation, setting default fields, clearing │ │ │ │ │ │ any allocated data, and free’ing the object. │ │ │ │ │ │ 1. Ideq * Ideq_new ( void ) ; │ │ │ │ │ │ This method simply allocates storage for the Ideq structure and then sets the default fields │ │ │ │ │ │ by a call to Ideq setDefaultFields(). │ │ │ │ │ │ 2. void Ideq_setDefaultFields ( Ideq *deq ) ; │ │ │ │ │ │ @@ -47,15 +47,15 @@ │ │ │ │ │ │ initializer. │ │ │ │ │ │ If the present size of the list (the number of entries between head and tail inclusive) is larger │ │ │ │ │ │ than newsize, the method returns -1. Otherwise, a new int vector is allocated and filled │ │ │ │ │ │ with the entries in the list. The old int vector is free’d, the new vector is spliced into the IV │ │ │ │ │ │ object, and the head, tail and maxsize fields are set. The method then returns 1. │ │ │ │ │ │ Error checking: If deq is NULL, or if newsize < 0, an error message is printed and the program │ │ │ │ │ │ exits. │ │ │ │ │ │ - Ideq : DRAFT May 1, 2024 3 │ │ │ │ │ │ + Ideq : DRAFT June 3, 2025 3 │ │ │ │ │ │ 1.2.3 Utility methods │ │ │ │ │ │ 1. void Ideq_clear ( Ideq *deq ) ; │ │ │ │ │ │ This method clears the dequeue. The head and tail fields are set to -1. │ │ │ │ │ │ Error checking: If deq is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 2. int Ideq_head ( Ideq *deq ) ; │ │ │ │ │ │ This method returns the value at the head of the list without removing that value. If head │ │ │ │ │ │ == -1 then -1 is returned. Note, the list may be nonempty and the first value may be -1, so │ │ │ │ │ │ @@ -82,15 +82,15 @@ │ │ │ │ │ │ may signal an empty list or a terminating element. │ │ │ │ │ │ Error checking: If deq is NULL, an error message is printed and the program exits. │ │ │ │ │ │ 7. int Ideq_insertAtTail ( Ideq *deq, int val ) ; │ │ │ │ │ │ This method inserts a value val into the list at the tail of the list. If there is no room in │ │ │ │ │ │ the list, -1 is returned and the dequeue must be resized using the Ideq resize() method. │ │ │ │ │ │ Otherwise, the item is placed into the list and 1 is returned. │ │ │ │ │ │ Error checking: If deq is NULL, an error message is printed and the program exits. │ │ │ │ │ │ - 4 Ideq : DRAFT May 1, 2024 │ │ │ │ │ │ + 4 Ideq : DRAFT June 3, 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.05.01:0544 │ │ │ │ │ +%DVIPSSource: TeX output 2025.06.03:1221 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -2762,21 +2762,22 @@ │ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ │ /UnderlineThickness 50 def │ │ │ │ │ end readonly def │ │ │ │ │ /Encoding 256 array │ │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ │ dup 44 /comma put │ │ │ │ │ dup 48 /zero put │ │ │ │ │ -dup 49 /one put │ │ │ │ │ dup 50 /two put │ │ │ │ │ -dup 52 /four put │ │ │ │ │ +dup 51 /three put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 77 /M put │ │ │ │ │ -dup 97 /a put │ │ │ │ │ -dup 121 /y put │ │ │ │ │ +dup 74 /J put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ +dup 110 /n put │ │ │ │ │ +dup 117 /u put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ │ @@ -2957,68 +2958,70 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004ACD1870 │ │ │ │ │ -A5EA947858F5795870BFE1343AD803FB854BF8F5A4E794E8EC57BE41DB5B8734 │ │ │ │ │ -13E47950F29A81EA0C81EA798863883D7F41F78325CA190CBBFFE822AE494550 │ │ │ │ │ -4BE83703071FC9512D128927AF3F63CEF8F86ABE1E15D7B4DDD39576E7DFF45E │ │ │ │ │ -3CB4115AAB1830DE8647B915DB4BEBEB5235C281E098B899BAB951D8D5798F01 │ │ │ │ │ -7F7C47336D31438E5126738AFEAB29E9A7CBE06DE4DD604477B542D2620DFD58 │ │ │ │ │ -28FE34238572F23C5A8EB7ACEE1E154DA13FC1A5AA67A3BA8C5CDFB2B80312C9 │ │ │ │ │ -BC9FAE56D08DDFA9498E6EF0D0F6BD18B3923E0B670B0740528BC843610736CB │ │ │ │ │ -80228C105C2F72C3C22D610C3D8C268DEEA2AEEE3221E198E79FE2966487360C │ │ │ │ │ -84AE08AC326F48B21447652121B1EB68AF857B8628F27BB4ED00F273E0DD044A │ │ │ │ │ -7D11A5BFAAC0A82328444CC9DD90167681B07D55CE28655F40C21250A226DEAB │ │ │ │ │ -2D46FFB680CB9242BE192AC0E55A44D45709FA6DE638C130D92C4E9B07BC3D61 │ │ │ │ │ -25CC2F0A7ED4F3574242FFE4461272EB1401266EEF551E0E2B0EF51FA8F250EC │ │ │ │ │ -FD9AFB6F5A0CC442B566BC24400133E3E9B9A9FC801CEF284FD2B3ECA43421FA │ │ │ │ │ -51E5D1EFE7BEAA96658362C438A0A5A6DCBC664A85EF88037B42355195B9D19C │ │ │ │ │ -7961D5F63B123451B298CD52C144FCD4F3641A823FBA14605E2DFD845E89102C │ │ │ │ │ -4E345CFD80E3EE6F097095A84C941FFC91B234F3615E4EE4C5D564284656E364 │ │ │ │ │ -AB9C4D1DE05F8FD065CA6064893F0CF3A3A501D59EF6568D05D818A010D06518 │ │ │ │ │ -E2C20418ADD1E652867F265084A27A5FE0C32213C59FFC3A84EDC89382521E5B │ │ │ │ │ -8AF66D76601F83C5C33CC9CF968C77B66F1FA074AC3DAD8E453C9264D03969EF │ │ │ │ │ -9E387BB3BEAA4BF0A9D88BA2CE6094E8996A3752A657E322A57AF006444BF516 │ │ │ │ │ -501C43CAA1BA7F16A3B6E4D3EBDECCCC19564DF18FB68194C132238A5441A21A │ │ │ │ │ -F52285CA1CA94A4BEC61EB509FA35EA5E393D662D938F4291F37EB7C2D5815BE │ │ │ │ │ -446813E1CFD06FFFFF2C4355C9DAFA48E765F4CC5DE4B9E37CFFB75E7A0B6F4B │ │ │ │ │ -4E412496F9C27DF4BDD90A869F0EBD81A57AE0B84051450A5A3E06CB9930DB2C │ │ │ │ │ -7C2DDB774BE870AEFCC9F4F067BE243FF3FD4B5C71B96C607DC4975973AF2650 │ │ │ │ │ -E7DF2BE3523A370EEDD07B5456B96E372ED10510CE677C044E609F21E93652FD │ │ │ │ │ -33CE612F587530D12214A3719CDB170C315B5D8763D5D4C67B5CAE90309E77AC │ │ │ │ │ -B45EB356C13A7BDE0D7320A9849CA357E30D7CF1085FFD70071932C3180AFC28 │ │ │ │ │ -B093016BA3F49A3878C34BB4A8727A441EB6CFC1A73F2313A7BF8D32EDF27E62 │ │ │ │ │ -EBEBC058FBA80B136FD2DE05C673B66482224ECEC63EDFB519AC13B5CC6624A6 │ │ │ │ │ -B3FD79037DA3851E93A386115852DBA88B176F21EDDB5386DC7C993C4210B28F │ │ │ │ │ -438131A586E34A09724E7CE60139F8247BFF14D2674805B3BD454C134728A43E │ │ │ │ │ -139E0AF71A7AC5CE42041EC83FD454B00AD29959FCF007789FFAF2D3492DCA4B │ │ │ │ │ -566EAFE97591ABC51CD0CD9BCD64E285FB823E41AA817E96B2B224005DAA4E15 │ │ │ │ │ -2141DB436B9D3FBA4EE4C876FD19A2E5133106FE2B9F704CB9614FCDC91B7950 │ │ │ │ │ -57053F45A5ED993B48189AAFAD5289F97AE2B0AEB5606579F6BD75F743EDB5B6 │ │ │ │ │ -5AA8F8A64CE507A47325081B3A013DB1BD596CDD3A83D2F29B070D6F9C57496E │ │ │ │ │ -14DF3F0F731C3BB00F2CE3D4BBACF1320322195D1DEA7A545BB4725BD1C6EC3D │ │ │ │ │ -63250C72B897741F8599D9D9BD2FB50EC80EFF2ECD6CE6603E95AABB45462ACF │ │ │ │ │ -12B005EE5979B6B05BCE9B97061686102349142A3CCC26D57F2A3283DD8B6E2A │ │ │ │ │ -98885E48C0D4A1A5C9612EDCB3B3D265E9B8CCCCA5D99F07F96C15B27D6A161F │ │ │ │ │ -936599E503C2859927201CACC31581AB7AB84F9EC9FFADC239F01DCC55940AB7 │ │ │ │ │ -FA884AA1EB6494C8E53DAD66E75A317428ACF9D943A74683BF547958F67D9E36 │ │ │ │ │ -F985EED50DEBCF255756A821927CB73848DCF167E96E975E959DE27FE7BA4FBA │ │ │ │ │ -D0EFC003F019D87572D6F9C73FC5B880C3EEDB7EF98E5EC3D25D6FE0015A6590 │ │ │ │ │ -E3C6EE632D7F6558B914609A8829CD1DEAB83A3F1207D5C3AAC9EAEA9DE1B4F8 │ │ │ │ │ -2375C5D4F630BCE13475F941ED2324D2CD4DCF2285298EAA4FFF89433D853860 │ │ │ │ │ -A974A9FC0808580FBDE7D02EDBB3D8C65BD3109AE8B359E96BFB7E21C696F440 │ │ │ │ │ -312B0CCAD810BF070DF8FC281E8198EB20A7FF9C9BCD291D74BC75EE46799485 │ │ │ │ │ -1AB2AE36B7E525034D146A856AF3BD9057A0033C08B606B89DD130548950C93D │ │ │ │ │ -94A8C92C47A34A791B1C108D2F36E899B79358B8081CCFC3D1A2F0521E4E2AE4 │ │ │ │ │ -7F500D6F2A53E5393E44201287225912590ABC738E8726622B67C3425639CCFB │ │ │ │ │ -F450B78A4918 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004B9BA1CC │ │ │ │ │ +580D3C6BDA4DC1B80B4365F1C80512453FC5316EC2D928FB731C3D6403E3C18B │ │ │ │ │ +E8424D644DF5E9A2134229C5C91CA68DB8E85BA2BB40F538F585DA6FA4037718 │ │ │ │ │ +B8053EBBA1E765346BCD5BDAA6C38115D31611D8A87A2238C145F2DA2F92E4DF │ │ │ │ │ +3987BD9C4D2A3D460E8941A68B125BCD9EE4F9FD262C4C8A71F47A2C81975635 │ │ │ │ │ +F1B981C274C53FA2ACCDE4C9D0A7C62D6C1EFF91CFC6712CA6A9F333C9564FCB │ │ │ │ │ +2A70F0AD715A79B10A08AB069E2A3C93BC0AED19D0CA10134B8DDDE8AF548DB2 │ │ │ │ │ +3A4AAA9C29682CF135BB767DAA16169A127EB50A7EECEB6480CF56A7D0F8AC56 │ │ │ │ │ +4A5090B3D75A790372886AF568D94C8165975A05BFBFDF1FFBA45F70700BB9E0 │ │ │ │ │ +57F3249EF9E9C8AD9CBCF6E4FD592DC4CDD2D7864F7C8A3FA6FC44C25C0CE7E1 │ │ │ │ │ +299F8A90B32B75DEA28917531621E1E7E0ECEE9E01665DEE99FBCF3EC3F30686 │ │ │ │ │ +513D7CBA745E660502603865D5A3E82D24B3F94B2884B21DC53AED87F49380E0 │ │ │ │ │ +68EE79C580931308DA762670C1F86F07FFB479773CD9C5DE6F22980DEC973D1C │ │ │ │ │ +A1E162D73932561BAAB24DE51DC8708291B666B36BABCA1FEDB6DD9C22572914 │ │ │ │ │ +7194DA044319F362452D53DD4D9A59134838E540F1E23805CEF53FF4F7519385 │ │ │ │ │ +1FAE3061F94369FEB1232BDA2E2A281E6972FB4524EFA37A598E7CDC097683EA │ │ │ │ │ +1B609952AEC0799B4711AAAB22D6B1D5CC729DE70897FDDC48AF0A12E40FFE30 │ │ │ │ │ +6528C601E68E8CFA4BBF897CF89DB712DE108DD1F084EFD917BFD9A70A74EB8F │ │ │ │ │ +D0D5B43CCC30373A5E871F18A969D01C69C2B4377622A0C8C4D7C4C28DDE5586 │ │ │ │ │ +BD17D5D640A6F396BD41993BD1932EE10953847F82F7BB36480B67A4F69F0763 │ │ │ │ │ +69423D1803B7BB60594ABEEE9578076639B84D8323F56104438803D45402FEE3 │ │ │ │ │ +045DAB16C4459DA9BBE01D0385CC771FB8DABDD8A9D280C18553F92FE6591CFD │ │ │ │ │ +26B82F28E6673BD823598D3F6CE03BEE04D9A21ED908DFC4F640227C148F133D │ │ │ │ │ +D32113275297C16EBCC9028AFD9102DE50E9CF67E7CF8C42BB8E73D1DAF8A5E2 │ │ │ │ │ +EF5979426229664A990DEF980A7038D2F229789D4F6EDBE1FB81BEC1A1BB14D7 │ │ │ │ │ +882515C62660E8877BE942712D57B86A2E19995AF087DECB7FD5208583C020AE │ │ │ │ │ +FEC86A2826530AD855006225300E4655F443C9360A8BAC96B5B096DDC9B12EDF │ │ │ │ │ +C862215AD6C432CF345FE701757E4EBB8C65F46912CB0F4DEF53672F7298D8F7 │ │ │ │ │ +EE51A9C5DE689A8D36956B7F0410893C0998DB03B73B4024CB046F8F6B32E07F │ │ │ │ │ +CD28A68AFB7152E45F1021DCD520D8A429FCDCA4B8054BAF0B48C4443280F198 │ │ │ │ │ +3360B078E6DEC37772DA8B629CFFD1534E8AA10E26B0BC58E92B9BF280C8EE45 │ │ │ │ │ +618EECDE904249F5A2010DC55D1028DFF4F058260B2B0A46541D6157970F44BD │ │ │ │ │ +D7483802D56A81184119DDBC914E8E394CBEEB506B61BB1CE2A3465252E5D8A3 │ │ │ │ │ +6BDD2D067E69D4ECEFC7D5568378F5F8B38EAFF138014185FE19DF7358A7A780 │ │ │ │ │ +3BE0E2CCD1561113F2F2319BDB503230DD0866121604710CEBBAA659ABFC010B │ │ │ │ │ +5CC40E5807F461D87E75BDC6AD96BCEF62AF668D48D7A76D08B57650F35CF609 │ │ │ │ │ +C0F791AEBEB75E29FA69596BAB419804AECE0F0238AAE64A6C13A22EBF4E3EAC │ │ │ │ │ +3570DECE85F54064486B2364D63E94FEB7C16350CDA318510A45C8848DB470ED │ │ │ │ │ +BFAFD2365681D65CFF3E6C1B4B7C8AE3066F96E819D05B97F3A6C2BFF8A72978 │ │ │ │ │ +EEB7F632FF604AD003A3CCA5A0465D53033A646E8082D3491EDECA3DA1A0E1BB │ │ │ │ │ +64BF36946520438D2EE72FA9EB1CEEDF56510AADA55A8DE280E23C904E0810FA │ │ │ │ │ +A3177CF684F06A4042DE4CD4AB21E2F0616153BEEE58EBBD89911FA43BC52969 │ │ │ │ │ +230C8137DB34C13E147B06C7A3875A931E1AC127E7D3EA0DF8346B6971F80901 │ │ │ │ │ +DC37F2DE1A0B81FD93CA3B5EB9B29ECABA1492901B1BA261DAB872FB3431C718 │ │ │ │ │ +9C9CDA7864908CD773864908DEB44E343221C2C4C335341789A46325D94C767C │ │ │ │ │ +740E3B60CE6D452A3A665967F568671FD7DD460B404B9C3D2EDCD47A336AA2C7 │ │ │ │ │ +BB0B1AC3823978F610629EF7AB526098A7EE7076F50A146D8134BA2DEC1B8ACF │ │ │ │ │ +68A7E4A9B7BE17FB71480516F2D6A8866E56CFD7C7A41311F48DDDD9887DACB8 │ │ │ │ │ +73FDAF5F25E956AFB0A9D530DE2E1128F006AAC9A78715BA2F90C8FED3729BFA │ │ │ │ │ +BDDD4098F870A27A91A0CB540D166FF86A442E95C9C361FD23378A2A138EAFB8 │ │ │ │ │ +D7050B486E1CB95068D890BCCD669456F3385C8F1793CE545099421368FE0F46 │ │ │ │ │ +53137AD2B65030B19CE7FF6B1669DB7A3C440AEF27149780E36C7097B7A8B71B │ │ │ │ │ +8789EECFA9A70B1F9695BB5D94E9A7D341291C1CA1BDEF4BE3EFCB8234CE9FFD │ │ │ │ │ +E1C4963CF919780129FA60162FEAA8AE97328F4BA14D949057A3EE74214F2D29 │ │ │ │ │ +51E7BE584446F6702F39957AE455CF8AF0C36AADAA39B53553D923CA5E9D4988 │ │ │ │ │ +76701B4F77DAE5185AC29900 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -5586,22 +5589,22 @@ │ │ │ │ │ 62 50 62 54 11[86 1[62 2[77 84 1[106 3[42 1[88 4[80 8[56 │ │ │ │ │ 56 56 56 56 56 56 56 56 56 1[31 37 31 44[{}41 99.6264 │ │ │ │ │ /CMBX12 rf /Ff 135[62 3[62 3[62 1[62 32[62 3[62 73[{}6 │ │ │ │ │ 119.552 /CMTT12 rf /Fg 201[0 32[65 65 17[65 1[65{}5 83.022 │ │ │ │ │ /CMSY10 rf /Fh 134[71 2[71 75 52 53 55 1[75 67 75 112 │ │ │ │ │ 2[41 37 75 67 41 61 75 60 75 65 13[75 2[92 11[103 16[67 │ │ │ │ │ 67 67 2[37 46[{}27 119.552 /CMBX12 rf /Fi 132[48 38[66 │ │ │ │ │ -4[72 75 8[63 10[27 58[{}6 83.022 /CMBX10 rf /Fj 134[44 │ │ │ │ │ -23[42 19[76 18[23 5[42 1[42 42 42 3[23 44[{}9 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 │ │ │ │ │ +4[72 75 8[63 10[27 58[{}6 83.022 /CMBX10 rf /Fj 138[46 │ │ │ │ │ +6[46 8[37 26[43 15[23 4[42 1[42 42 1[42 3[23 44[{}10 │ │ │ │ │ +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 │ │ │ │ │ /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 │ │ │ │ │ @@ -5734,17 +5737,17 @@ │ │ │ │ │ Fo(InpMtx)p 1881 5140 V 28 w(changeStorageMode)o(\(\))p │ │ │ │ │ Fp(.)101 5308 y(5.)42 b(Create)18 b(an)h Fo(IVL)g Fp(ob)5 │ │ │ │ │ b(ject)19 b(that)h(con)n(tains)e(the)i(full)h(adjacency)d(of)i │ │ │ │ │ Fl(A)r Fp(+)r Fl(A)2384 5277 y Fk(T)2456 5308 y Fp(b)n(y)g(calling)e │ │ │ │ │ (the)i Fo(InpMtx)p 3222 5308 V 29 w(fullAdjacency\(\))208 │ │ │ │ │ 5407 y Fp(metho)r(d.)1929 5656 y(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fp(2)p 125 100 1245 4 v │ │ │ │ │ -1410 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(Ma)n(y)g(1,)g(2024)p │ │ │ │ │ -2656 100 V 101 390 a Fp(6.)42 b(Create)26 b(a)h Fo(Graph)f │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fp(2)p 125 100 1239 4 v │ │ │ │ │ +1404 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(June)h(3,)f(2025)p │ │ │ │ │ +2662 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 │ │ │ │ │ @@ -5834,33 +5837,32 @@ │ │ │ │ │ (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 1245 4 v 1411 100 a Fo(InpMtx)25 │ │ │ │ │ -b Fj(:)37 b Fm(DRAFT)110 b Fj(Ma)n(y)27 b(1,)g(2024)p │ │ │ │ │ -2616 100 V 1245 w Fp(3)301 390 y Fi({)41 b Fo(INPMTX)p │ │ │ │ │ -659 390 27 4 v 29 w(BY)p 776 390 V 31 w(VECTORS)32 b │ │ │ │ │ -Fp(|)i(data)h(is)f(sorted)g(and)h(distinct)g(v)n(ectors.)57 │ │ │ │ │ -b(All)35 b(en)n(tries)f(in)h(a)f(v)n(ector)f(share)h(some-)390 │ │ │ │ │ -490 y(thing)41 b(in)g(common.)75 b(F)-7 b(or)40 b(example,)k(when)d │ │ │ │ │ -Fo(coordType)c Fp(is)j Fo(INPMTX)p 2688 490 V 29 w(BY)p │ │ │ │ │ -2805 490 V 31 w(ROWS)p Fp(,)f Fo(INPMTX)p 3338 490 V │ │ │ │ │ -29 w(BY)p 3455 490 V 30 w(COLUMNS)f Fp(or)390 589 y Fo(INPMTX)p │ │ │ │ │ -659 589 V 29 w(BY)p 776 589 V 31 w(CHEVRONS)p Fp(,)33 │ │ │ │ │ -b(ro)n(w)i(v)n(ectors,)i(column)f(v)n(ectors,)h(or)e(c)n(hevron)g(v)n │ │ │ │ │ -(ectors)g(are)g(stored,)j(resp)r(ectiv)n(ely)-7 b(.)390 │ │ │ │ │ -689 y(When)26 b Fo(coordType)c Fp(is)k Fo(INPMTX)p 1399 │ │ │ │ │ -689 V 29 w(CUSTOM)p Fp(,)d(a)i(custom)h(t)n(yp)r(e,)g(en)n(tries)f(in)h │ │ │ │ │ -(the)g(same)f(v)n(ector)f(ha)n(v)n(e)h(something)g(in)390 │ │ │ │ │ -789 y(common)i(but)h(it)h(need)e(not)h(b)r(e)g(a)f(common)g(ro)n(w,)g │ │ │ │ │ -(column)g(or)g(c)n(hevron)f(co)r(ordinate.)125 954 y │ │ │ │ │ -Fn(\210)42 b Fo(int)g(inputMode)24 b Fp(:)37 b(mo)r(de)28 │ │ │ │ │ +TeXDict begin 3 2 bop 83 100 1239 4 v 1404 100 a Fo(InpMtx)25 │ │ │ │ │ +b Fj(:)37 b Fm(DRAFT)111 b Fj(June)27 b(3,)g(2025)p 2622 │ │ │ │ │ +100 V 1239 w Fp(3)301 390 y Fi({)41 b Fo(INPMTX)p 659 │ │ │ │ │ +390 27 4 v 29 w(BY)p 776 390 V 31 w(VECTORS)32 b Fp(|)i(data)h(is)f │ │ │ │ │ +(sorted)g(and)h(distinct)g(v)n(ectors.)57 b(All)35 b(en)n(tries)f(in)h │ │ │ │ │ +(a)f(v)n(ector)f(share)h(some-)390 490 y(thing)41 b(in)g(common.)75 │ │ │ │ │ +b(F)-7 b(or)40 b(example,)k(when)d Fo(coordType)c Fp(is)j │ │ │ │ │ +Fo(INPMTX)p 2688 490 V 29 w(BY)p 2805 490 V 31 w(ROWS)p │ │ │ │ │ +Fp(,)f Fo(INPMTX)p 3338 490 V 29 w(BY)p 3455 490 V 30 │ │ │ │ │ +w(COLUMNS)f Fp(or)390 589 y Fo(INPMTX)p 659 589 V 29 │ │ │ │ │ +w(BY)p 776 589 V 31 w(CHEVRONS)p Fp(,)33 b(ro)n(w)i(v)n(ectors,)i │ │ │ │ │ +(column)f(v)n(ectors,)h(or)e(c)n(hevron)g(v)n(ectors)g(are)g(stored,)j │ │ │ │ │ +(resp)r(ectiv)n(ely)-7 b(.)390 689 y(When)26 b Fo(coordType)c │ │ │ │ │ +Fp(is)k Fo(INPMTX)p 1399 689 V 29 w(CUSTOM)p Fp(,)d(a)i(custom)h(t)n │ │ │ │ │ +(yp)r(e,)g(en)n(tries)f(in)h(the)g(same)f(v)n(ector)f(ha)n(v)n(e)h │ │ │ │ │ +(something)g(in)390 789 y(common)i(but)h(it)h(need)e(not)h(b)r(e)g(a)f │ │ │ │ │ +(common)g(ro)n(w,)g(column)g(or)g(c)n(hevron)f(co)r(ordinate.)125 │ │ │ │ │ +954 y Fn(\210)42 b Fo(int)g(inputMode)24 b Fp(:)37 b(mo)r(de)28 │ │ │ │ │ b(of)f(data)g(input)301 1120 y Fi({)41 b Fo(INPMTX)p │ │ │ │ │ 659 1120 V 29 w(INDICES)p 996 1120 V 29 w(ONLY)26 b Fp(|)h(only)g │ │ │ │ │ (indices)h(are)f(stored,)g(not)g(en)n(tries.)301 1252 │ │ │ │ │ y Fi({)41 b Fo(SPOOLES)p 703 1252 V 29 w(REAL)26 b Fp(|)h(indices)h │ │ │ │ │ (and)f(real)g(en)n(tries)g(are)g(stored.)301 1384 y Fi({)41 │ │ │ │ │ b Fo(SPOOLES)p 703 1384 V 29 w(COMPLEX)24 b Fp(|)k(indices)g(and)f │ │ │ │ │ (complex)g(en)n(tries)g(are)g(stored.)125 1550 y Fn(\210)42 │ │ │ │ │ @@ -5940,17 +5942,17 @@ │ │ │ │ │ (stored)g(as)g(unsorted)g(pairs)g(or)h(triples,)g(and)f │ │ │ │ │ Fo(0)h Fp(other-)208 5242 y(wise.)125 5407 y Fn(\210)42 │ │ │ │ │ b Fo(INPMTX)p 477 5407 V 28 w(IS)p 593 5407 V 31 w(SORTED\(mtx\))23 │ │ │ │ │ b Fp(returns)k Fo(1)g Fp(if)h(the)g(en)n(tries)f(are)g(stored)g(as)g │ │ │ │ │ (sorted)f(pairs)h(or)g(triples,)g(and)h Fo(0)f Fp(otherwise.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fp(4)p 125 100 1245 4 v │ │ │ │ │ -1410 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(Ma)n(y)g(1,)g(2024)p │ │ │ │ │ -2656 100 V 125 390 a Fn(\210)42 b Fo(INPMTX)p 477 390 │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fp(4)p 125 100 1239 4 v │ │ │ │ │ +1404 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(June)h(3,)f(2025)p │ │ │ │ │ +2662 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 │ │ │ │ │ @@ -6015,17 +6017,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 1245 4 v 1411 100 a Fo(InpMtx)25 │ │ │ │ │ -b Fj(:)37 b Fm(DRAFT)110 b Fj(Ma)n(y)27 b(1,)g(2024)p │ │ │ │ │ -2616 100 V 1245 w Fp(5)208 390 y Fm(Err)l(or)j(che)l(cking:)38 │ │ │ │ │ +TeXDict begin 5 4 bop 83 100 1239 4 v 1404 100 a Fo(InpMtx)25 │ │ │ │ │ +b Fj(:)37 b Fm(DRAFT)111 b Fj(June)27 b(3,)g(2025)p 2622 │ │ │ │ │ +100 V 1239 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 │ │ │ │ │ @@ -6083,17 +6085,17 @@ │ │ │ │ │ (exits.)60 5139 y(10.)41 b Fo(int)h(*)h(InpMtx_ivec2)c(\()k(InpMtx)e │ │ │ │ │ (*inpmtx)g(\))i(;)208 5273 y Fp(This)27 b(metho)r(d)h(returns)f(the)h │ │ │ │ │ (base)f(address)f(of)i(the)g Fo(ivec2[])d Fp(v)n(ector.)208 │ │ │ │ │ 5407 y Fm(Err)l(or)30 b(che)l(cking:)38 b Fp(If)28 b │ │ │ │ │ Fo(inpmtx)e Fp(is)h Fo(NULL)p Fp(,)f(an)i(error)d(message)h(is)i(prin)n │ │ │ │ │ (ted)f(and)h(the)g(program)d(exits.)p eop end │ │ │ │ │ %%Page: 6 6 │ │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fp(6)p 125 100 1245 4 v │ │ │ │ │ -1410 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(Ma)n(y)g(1,)g(2024)p │ │ │ │ │ -2656 100 V 60 390 a Fp(11.)41 b Fo(double)g(*)i(InpMtx_dvec)c(\()k │ │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fp(6)p 125 100 1239 4 v │ │ │ │ │ +1404 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(June)h(3,)f(2025)p │ │ │ │ │ +2662 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 │ │ │ │ │ @@ -6162,20 +6164,20 @@ │ │ │ │ │ 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 1245 4 v 1411 100 a Fo(InpMtx)25 │ │ │ │ │ -b Fj(:)37 b Fm(DRAFT)110 b Fj(Ma)n(y)27 b(1,)g(2024)p │ │ │ │ │ -2616 100 V 1245 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 │ │ │ │ │ +TeXDict begin 7 6 bop 83 100 1239 4 v 1404 100 a Fo(InpMtx)25 │ │ │ │ │ +b Fj(:)37 b Fm(DRAFT)111 b Fj(June)27 b(3,)g(2025)p 2622 │ │ │ │ │ +100 V 1239 w Fp(7)60 390 y(19.)41 b Fo(void)g(InpMtx_setMaxnvec)o(tor)c │ │ │ │ │ +(\()43 b(InpMtx)e(*inpmtx,)f(int)j(newmaxnvector)38 b(\))43 │ │ │ │ │ +b(;)208 516 y Fp(This)27 b(metho)r(d)h(sets)g(the)g(maxin)n(um)f(n)n │ │ │ │ │ +(um)n(b)r(er)g(of)h(v)n(ectors.)208 641 y Fm(Err)l(or)38 │ │ │ │ │ b(che)l(cking:)58 b Fp(If)38 b Fo(inpmtx)c Fp(is)j Fo(NULL)p │ │ │ │ │ Fp(,)f(or)g(if)h Fo(newmaxnvector)d Fl(<)k Fp(0,)h(an)e(error)e │ │ │ │ │ (message)h(is)h(prin)n(ted)g(and)g(the)208 741 y(program)25 │ │ │ │ │ b(exits.)60 892 y(20.)41 b Fo(void)g(InpMtx_setNvector)c(\()43 │ │ │ │ │ b(InpMtx)e(*inpmtx,)g(int)h(newnvector)d(\))44 b(;)208 │ │ │ │ │ 1017 y Fp(This)27 b(metho)r(d)h(sets)g(the)g(presen)n(t)f(n)n(um)n(b)r │ │ │ │ │ (er)g(of)g(v)n(ectors.)208 1142 y Fm(Err)l(or)i(che)l(cking:)38 │ │ │ │ │ @@ -6257,17 +6259,17 @@ │ │ │ │ │ b Fp(and)23 b Fo(InpMtx)p 2609 5083 V 29 w(convertToVectors\()o(\))p │ │ │ │ │ Fp(,)18 b(as)23 b(appropri-)208 5182 y(ate.)208 5308 │ │ │ │ │ y Fm(Err)l(or)30 b(che)l(cking:)41 b Fp(If)28 b Fo(inpmtx)e │ │ │ │ │ Fp(is)j Fo(NULL)d Fp(or)i Fo(newMode)d Fp(is)k(in)n(v)-5 │ │ │ │ │ b(alid,)28 b(an)g(error)f(message)g(is)h(prin)n(ted)g(and)g(the)h │ │ │ │ │ (program)208 5407 y(exits.)p eop end │ │ │ │ │ %%Page: 8 8 │ │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fp(8)p 125 100 1245 4 v │ │ │ │ │ -1410 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(Ma)n(y)g(1,)g(2024)p │ │ │ │ │ -2656 100 V 0 390 a Fe(1.2.4)112 b(Input)38 b(metho)s(ds)101 │ │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fp(8)p 125 100 1239 4 v │ │ │ │ │ +1404 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(June)h(3,)f(2025)p │ │ │ │ │ +2662 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 │ │ │ │ │ @@ -6356,45 +6358,45 @@ │ │ │ │ │ (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 1245 4 v 1411 100 a Fo(InpMtx)25 │ │ │ │ │ -b Fj(:)37 b Fm(DRAFT)110 b Fj(Ma)n(y)27 b(1,)g(2024)p │ │ │ │ │ -2616 100 V 1245 w Fp(9)338 390 y Fo(int)43 b(rowstride,)c(int)j │ │ │ │ │ -(colstride,)e(int)i(rowind[],)e(int)i(colind[],)e(double)h(mtxent[])g │ │ │ │ │ -(\))i(;)208 526 y Fp(This)25 b(metho)r(d)h(places)f(a)g(dense)g │ │ │ │ │ -(submatrix)g(in)n(to)g(the)h(matrix)f(ob)5 b(ject.)36 │ │ │ │ │ -b(The)25 b(co)r(ordinate)g(t)n(yp)r(e)g(of)h(the)g(ob)5 │ │ │ │ │ -b(ject)25 b(m)n(ust)208 625 y(b)r(e)h Fo(INPMTX)p 588 │ │ │ │ │ -625 27 4 v 28 w(BY)p 704 625 V 31 w(ROWS)p Fp(,)e Fo(INPMTX)p │ │ │ │ │ -1222 625 V 29 w(BY)p 1339 625 V 31 w(COLUMNS)e Fp(or)j │ │ │ │ │ -Fo(INPMTX)p 2064 625 V 29 w(BY)p 2181 625 V 30 w(CHEVRONS)p │ │ │ │ │ -Fp(.)e(The)i(individual)h(en)n(tries)f(of)h(the)g(matrix)208 │ │ │ │ │ -725 y(are)g(placed)h(in)n(to)h(the)g(v)n(ector)e(storage)g(as)h │ │ │ │ │ -(triples,)g(and)h(the)g(v)n(ectors)e(are)g(resized)h(if)h(necessary)-7 │ │ │ │ │ -b(.)208 860 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 Fo(col)g │ │ │ │ │ -Fp(or)h Fo(row)f Fp(are)g(negativ)n(e,)i(or)e Fo(rowstride)d │ │ │ │ │ -Fp(or)k Fo(colstride)c Fp(are)k(less)208 960 y(than)27 │ │ │ │ │ -b Fo(1)p Fp(,)h(or)e Fo(rowind)p Fp(,)g Fo(colind)f Fp(or)h │ │ │ │ │ -Fo(mtxent)g Fp(are)g Fo(NULL)p Fp(,)g(an)i(error)d(message)h(is)i(prin) │ │ │ │ │ -n(ted)f(and)h(the)g(program)d(exits.)101 1131 y(6.)42 │ │ │ │ │ -b Fo(void)f(InpMtx_inputTripl)o(es)c(\()43 b(InpMtx)e(*inpmtx,)g(int)h │ │ │ │ │ -(ntriples,)861 1231 y(int)h(rowids[],)d(int)i(colids[]\))e(;)208 │ │ │ │ │ -1331 y(void)h(InpMtx_inputRealT)o(rip)o(le)o(s)d(\()43 │ │ │ │ │ -b(InpMtx)e(*inpmtx,)f(int)i(ntriples,)861 1430 y(int)h(rowids[],)d(int) │ │ │ │ │ -i(colids[],)e(double)h(entries[])f(\))j(;)208 1530 y(void)e │ │ │ │ │ -(InpMtx_inputCompl)o(exT)o(ri)o(ple)o(s)c(\()43 b(InpMtx)f(*inpmtx,)e │ │ │ │ │ -(int)i(ntriples,)861 1629 y(int)h(rowids[],)d(int)i(colids[],)e(double) │ │ │ │ │ -h(entries[])f(\))j(;)208 1765 y Fp(This)24 b(metho)r(d)i(places)e(a)g │ │ │ │ │ -(v)n(ector)g(of)g(\(ro)n(w,column,en)n(try\))g(triples)h(in)n(to)f(the) │ │ │ │ │ -h(matrix)g(ob)5 b(ject.)35 b(The)25 b(co)r(ordinate)f(t)n(yp)r(e)208 │ │ │ │ │ +TeXDict begin 9 8 bop 83 100 1239 4 v 1404 100 a Fo(InpMtx)25 │ │ │ │ │ +b Fj(:)37 b Fm(DRAFT)111 b Fj(June)27 b(3,)g(2025)p 2622 │ │ │ │ │ +100 V 1239 w Fp(9)338 390 y Fo(int)43 b(rowstride,)c(int)j(colstride,)e │ │ │ │ │ +(int)i(rowind[],)e(int)i(colind[],)e(double)h(mtxent[])g(\))i(;)208 │ │ │ │ │ +526 y Fp(This)25 b(metho)r(d)h(places)f(a)g(dense)g(submatrix)g(in)n │ │ │ │ │ +(to)g(the)h(matrix)f(ob)5 b(ject.)36 b(The)25 b(co)r(ordinate)g(t)n(yp) │ │ │ │ │ +r(e)g(of)h(the)g(ob)5 b(ject)25 b(m)n(ust)208 625 y(b)r(e)h │ │ │ │ │ +Fo(INPMTX)p 588 625 27 4 v 28 w(BY)p 704 625 V 31 w(ROWS)p │ │ │ │ │ +Fp(,)e Fo(INPMTX)p 1222 625 V 29 w(BY)p 1339 625 V 31 │ │ │ │ │ +w(COLUMNS)e Fp(or)j Fo(INPMTX)p 2064 625 V 29 w(BY)p │ │ │ │ │ +2181 625 V 30 w(CHEVRONS)p Fp(.)e(The)i(individual)h(en)n(tries)f(of)h │ │ │ │ │ +(the)g(matrix)208 725 y(are)g(placed)h(in)n(to)h(the)g(v)n(ector)e │ │ │ │ │ +(storage)g(as)h(triples,)g(and)h(the)g(v)n(ectors)e(are)g(resized)h(if) │ │ │ │ │ +h(necessary)-7 b(.)208 860 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 │ │ │ │ │ +Fo(col)g Fp(or)h Fo(row)f Fp(are)g(negativ)n(e,)i(or)e │ │ │ │ │ +Fo(rowstride)d Fp(or)k Fo(colstride)c Fp(are)k(less)208 │ │ │ │ │ +960 y(than)27 b Fo(1)p Fp(,)h(or)e Fo(rowind)p Fp(,)g │ │ │ │ │ +Fo(colind)f Fp(or)h Fo(mtxent)g Fp(are)g Fo(NULL)p Fp(,)g(an)i(error)d │ │ │ │ │ +(message)h(is)i(prin)n(ted)f(and)h(the)g(program)d(exits.)101 │ │ │ │ │ +1131 y(6.)42 b Fo(void)f(InpMtx_inputTripl)o(es)c(\()43 │ │ │ │ │ +b(InpMtx)e(*inpmtx,)g(int)h(ntriples,)861 1231 y(int)h(rowids[],)d(int) │ │ │ │ │ +i(colids[]\))e(;)208 1331 y(void)h(InpMtx_inputRealT)o(rip)o(le)o(s)d │ │ │ │ │ +(\()43 b(InpMtx)e(*inpmtx,)f(int)i(ntriples,)861 1430 │ │ │ │ │ +y(int)h(rowids[],)d(int)i(colids[],)e(double)h(entries[])f(\))j(;)208 │ │ │ │ │ +1530 y(void)e(InpMtx_inputCompl)o(exT)o(ri)o(ple)o(s)c(\()43 │ │ │ │ │ +b(InpMtx)f(*inpmtx,)e(int)i(ntriples,)861 1629 y(int)h(rowids[],)d(int) │ │ │ │ │ +i(colids[],)e(double)h(entries[])f(\))j(;)208 1765 y │ │ │ │ │ +Fp(This)24 b(metho)r(d)i(places)e(a)g(v)n(ector)g(of)g(\(ro)n │ │ │ │ │ +(w,column,en)n(try\))g(triples)h(in)n(to)f(the)h(matrix)g(ob)5 │ │ │ │ │ +b(ject.)35 b(The)25 b(co)r(ordinate)f(t)n(yp)r(e)208 │ │ │ │ │ 1865 y(of)j(the)h(ob)5 b(ject)27 b(m)n(ust)h(b)r(e)g │ │ │ │ │ Fo(INPMTX)p 1284 1865 V 29 w(BY)p 1401 1865 V 31 w(ROWS)p │ │ │ │ │ Fp(,)e Fo(INPMTX)p 1921 1865 V 29 w(BY)p 2038 1865 V │ │ │ │ │ 30 w(COLUMNS)f Fp(or)i Fo(INPMTX)p 2767 1865 V 29 w(BY)p │ │ │ │ │ 2884 1865 V 30 w(CHEVRONS)p Fp(.)208 2000 y Fm(Err)l(or)35 │ │ │ │ │ b(che)l(cking:)49 b Fp(If)33 b Fo(inpmtx)p Fp(,)f Fo(rowids)p │ │ │ │ │ Fp(,)g Fo(colids)e Fp(is)j Fo(NULL)p Fp(,)e(or)h Fo(ntriples)e │ │ │ │ │ @@ -6464,17 +6466,17 @@ │ │ │ │ │ (map)f(a)g(part)g(of)h(a)f(distributed)h(matrix)f(b)r(et)n(w)n(een)h │ │ │ │ │ (the)g(global)e(and)i(lo)r(cal)f(n)n(um)n(b)r(erings.)208 │ │ │ │ │ 5407 y Fm(Err)l(or)e(che)l(cking:)37 b Fp(If)23 b Fo(A)p │ │ │ │ │ Fp(,)f Fo(rowmapIV)e Fp(or)i Fo(colmapIV)d Fp(is)k Fo(NULL)p │ │ │ │ │ Fp(,)e(an)h(error)f(message)g(is)i(prin)n(ted)g(and)f(the)h(program)e │ │ │ │ │ (exits.)p eop end │ │ │ │ │ %%Page: 10 10 │ │ │ │ │ -TeXDict begin 10 9 bop 0 100 a Fp(10)p 166 100 1224 4 │ │ │ │ │ -v 1389 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(Ma)n(y)g(1,)g(2024)p │ │ │ │ │ -2676 100 V 101 390 a Fp(4.)42 b Fo(void)f(InpMtx_permute)d(\()43 │ │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fp(10)p 166 100 1218 4 │ │ │ │ │ +v 1382 w Fo(InpMtx)26 b Fj(:)37 b Fm(DRAFT)27 b Fj(June)g(3,)h(2025)p │ │ │ │ │ +2683 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 │ │ │ │ │ @@ -6576,25 +6578,25 @@ │ │ │ │ │ 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 1224 4 v 1390 100 a Fo(InpMtx)25 │ │ │ │ │ -b Fj(:)37 b Fm(DRAFT)110 b Fj(Ma)n(y)27 b(1,)g(2024)p │ │ │ │ │ -2595 100 V 1224 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(\() │ │ │ │ │ +TeXDict begin 11 10 bop 83 100 1218 4 v 1383 100 a Fo(InpMtx)26 │ │ │ │ │ +b Fj(:)37 b Fm(DRAFT)110 b Fj(June)27 b(3,)h(2025)p 2602 │ │ │ │ │ +100 V 1218 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 789 y(void)d(InpMtx_nonsym_mmm)o(Vec)o(to)o(r_H)c(\()43 │ │ │ │ │ +h(\))i(;)208 589 y(void)d(InpMtx_herm_mmmVe)o(cto)o(r)c(\()44 │ │ │ │ │ +b(InpMtx)d(*A,)h(DenseMtx)e(*Y,)j(double)e(alpha[],)f(DenseMtx)g(*X)j │ │ │ │ │ +(\))g(;)208 689 y(void)e(InpMtx_nonsym_mmm)o(Vec)o(to)o(r_T)c(\()43 │ │ │ │ │ +b(InpMtx)e(*A,)h(DenseMtx)f(*Y,)h(double)f(alpha[],)f(DenseMtx)h(*X)h │ │ │ │ │ +(\))i(;)208 789 y(void)d(InpMtx_nonsym_mmm)o(Vec)o(to)o(r_H)c(\()43 │ │ │ │ │ b(InpMtx)e(*A,)h(DenseMtx)f(*Y,)h(double)f(alpha[],)f(DenseMtx)h(*X)h │ │ │ │ │ (\))i(;)208 920 y Fp(These)27 b(\014v)n(e)g(metho)r(ds)h(p)r(erform)f │ │ │ │ │ (the)h(follo)n(wing)f(computations.)655 1109 y Fo(InpMtx)p │ │ │ │ │ 924 1109 27 4 v 29 w(nonsym)p 1217 1109 V 29 w(mmm\(\))172 │ │ │ │ │ b Fl(y)26 b Fp(:=)d Fl(y)e Fp(+)d Fl(\013Ax)164 b Fp(nonsymmetric)99 │ │ │ │ │ b(real)26 b(or)h(complex)655 1208 y Fo(InpMtx)p 924 1208 │ │ │ │ │ V 29 w(sym)p 1085 1208 V 30 w(mmm\(\))303 b Fl(y)26 b │ │ │ │ │ @@ -6688,20 +6690,20 @@ │ │ │ │ │ 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 1224 │ │ │ │ │ -4 v 1389 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(Ma)n(y)g(1,)g │ │ │ │ │ -(2024)p 2676 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 │ │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fp(12)p 166 100 1218 │ │ │ │ │ +4 v 1382 w Fo(InpMtx)26 b Fj(:)37 b Fm(DRAFT)27 b Fj(June)g(3,)h(2025)p │ │ │ │ │ +2683 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 │ │ │ │ │ @@ -6790,17 +6792,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 1224 4 v 1390 100 a Fo(InpMtx)25 │ │ │ │ │ -b Fj(:)37 b Fm(DRAFT)110 b Fj(Ma)n(y)27 b(1,)g(2024)p │ │ │ │ │ -2595 100 V 1224 w Fp(13)0 390 y Fe(1.2.8)112 b(Submatrix)39 │ │ │ │ │ +TeXDict begin 13 12 bop 83 100 1218 4 v 1383 100 a Fo(InpMtx)26 │ │ │ │ │ +b Fj(:)37 b Fm(DRAFT)110 b Fj(June)27 b(3,)h(2025)p 2602 │ │ │ │ │ +100 V 1218 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 │ │ │ │ │ @@ -6888,17 +6890,17 @@ │ │ │ │ │ Fp(to)29 b Fl(a)2795 5320 y Fk(j;i)2869 5308 y Fp(.)43 │ │ │ │ │ b(The)29 b(second)g(metho)r(d)g(mo)n(v)n(es)208 5407 │ │ │ │ │ y Fl(a)252 5419 y Fk(i;j)353 5407 y Fp(for)22 b Fl(i)h(>)g(j)28 │ │ │ │ │ b Fp(to)23 b Fl(a)818 5419 y Fk(j;i)892 5407 y Fp(,)i(\(If)f(the)f │ │ │ │ │ (matrix)g(is)g(Hermitian,)h(the)f(sign)g(of)g(the)h(imaginary)d(part)i │ │ │ │ │ (of)g(an)g(en)n(try)f(is)h(dealt)h(with)p eop end │ │ │ │ │ %%Page: 14 14 │ │ │ │ │ -TeXDict begin 14 13 bop 0 100 a Fp(14)p 166 100 1224 │ │ │ │ │ -4 v 1389 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(Ma)n(y)g(1,)g │ │ │ │ │ -(2024)p 2676 100 V 208 390 a Fp(in)g(the)g(correct)f(fashion.\))36 │ │ │ │ │ +TeXDict begin 14 13 bop 0 100 a Fp(14)p 166 100 1218 │ │ │ │ │ +4 v 1382 w Fo(InpMtx)26 b Fj(:)37 b Fm(DRAFT)27 b Fj(June)g(3,)h(2025)p │ │ │ │ │ +2683 100 V 208 390 a Fp(in)f(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 │ │ │ │ │ @@ -6991,28 +6993,28 @@ │ │ │ │ │ 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 1224 4 v 1390 100 a Fo(InpMtx)25 │ │ │ │ │ -b Fj(:)37 b Fm(DRAFT)110 b Fj(Ma)n(y)27 b(1,)g(2024)p │ │ │ │ │ -2595 100 V 1224 w Fp(15)0 390 y Fe(1.2.10)113 b(IO)37 │ │ │ │ │ -b(metho)s(ds)0 568 y Fp(There)k(are)f(the)i(usual)f(eigh)n(t)g(IO)g │ │ │ │ │ -(routines.)78 b(The)42 b(\014le)f(structure)g(of)g(a)g │ │ │ │ │ -Fo(InpMtx)e Fp(ob)5 b(ject)42 b(is)f(simple:)65 b(The)41 │ │ │ │ │ -b(\014rst)g(en-)0 667 y(tries)i(in)h(the)g(\014le)g(are)e │ │ │ │ │ -Fo(coordType)p Fp(,)i Fo(storageMode)p Fp(,)f Fo(inputMode)p │ │ │ │ │ -Fp(,)h Fo(nent)e Fp(and)h Fo(nvector)p Fp(.)82 b(If)44 │ │ │ │ │ -b Fo(nent)e(>)h(0)p Fp(,)48 b(then)c(the)0 767 y Fo(ivec1IV)33 │ │ │ │ │ -b Fp(and)i Fo(ivec2IV)d Fp(v)n(ectors)i(follo)n(w,)j(If)e │ │ │ │ │ -Fo(nent)42 b(>)h(0)35 b Fp(and)h Fo(inputMode)j(=)44 │ │ │ │ │ -b(SPOOLES)p 2893 767 27 4 v 28 w(REAL)34 b Fp(or)g Fo(SPOOLES)p │ │ │ │ │ -3548 767 V 29 w(COMPLEX)p Fp(,)0 867 y(the)21 b Fo(dvecDV)d │ │ │ │ │ +TeXDict begin 15 14 bop 83 100 1218 4 v 1383 100 a Fo(InpMtx)26 │ │ │ │ │ +b Fj(:)37 b Fm(DRAFT)110 b Fj(June)27 b(3,)h(2025)p 2602 │ │ │ │ │ +100 V 1218 w Fp(15)0 390 y Fe(1.2.10)113 b(IO)37 b(metho)s(ds)0 │ │ │ │ │ +568 y Fp(There)k(are)f(the)i(usual)f(eigh)n(t)g(IO)g(routines.)78 │ │ │ │ │ +b(The)42 b(\014le)f(structure)g(of)g(a)g Fo(InpMtx)e │ │ │ │ │ +Fp(ob)5 b(ject)42 b(is)f(simple:)65 b(The)41 b(\014rst)g(en-)0 │ │ │ │ │ +667 y(tries)i(in)h(the)g(\014le)g(are)e Fo(coordType)p │ │ │ │ │ +Fp(,)i Fo(storageMode)p Fp(,)f Fo(inputMode)p Fp(,)h │ │ │ │ │ +Fo(nent)e Fp(and)h Fo(nvector)p Fp(.)82 b(If)44 b Fo(nent)e(>)h(0)p │ │ │ │ │ +Fp(,)48 b(then)c(the)0 767 y Fo(ivec1IV)33 b Fp(and)i │ │ │ │ │ +Fo(ivec2IV)d Fp(v)n(ectors)i(follo)n(w,)j(If)e Fo(nent)42 │ │ │ │ │ +b(>)h(0)35 b Fp(and)h Fo(inputMode)j(=)44 b(SPOOLES)p │ │ │ │ │ +2893 767 27 4 v 28 w(REAL)34 b Fp(or)g Fo(SPOOLES)p 3548 │ │ │ │ │ +767 V 29 w(COMPLEX)p Fp(,)0 867 y(the)21 b Fo(dvecDV)d │ │ │ │ │ Fp(v)n(ector)i(follo)n(ws.)33 b(If)22 b Fo(storageMode)39 │ │ │ │ │ b(=)k(INPMTX)p 1919 867 V 29 w(BY)p 2036 867 V 30 w(VECTORS)18 │ │ │ │ │ b Fp(and)j Fo(nvector)40 b(>)j(0)p Fp(,)22 b(the)f Fo(vecidsIV)p │ │ │ │ │ Fp(,)d Fo(sizesIV)0 966 y Fp(and)27 b Fo(offsetsIV)d │ │ │ │ │ Fp(v)n(ectors)i(follo)n(w.)101 1171 y(1.)42 b Fo(int)g │ │ │ │ │ (InpMtx_readFromF)o(il)o(e)c(\()43 b(InpMtx)e(*inpmtx,)f(char)i(*fn)g │ │ │ │ │ (\))i(;)208 1303 y Fp(This)24 b(metho)r(d)h(reads)f(the)h(ob)5 │ │ │ │ │ @@ -7098,18 +7100,18 @@ │ │ │ │ │ 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 1224 │ │ │ │ │ -4 v 1389 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(Ma)n(y)g(1,)g │ │ │ │ │ -(2024)p 2676 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 │ │ │ │ │ +TeXDict begin 16 15 bop 0 100 a Fp(16)p 166 100 1218 │ │ │ │ │ +4 v 1382 w Fo(InpMtx)26 b Fj(:)37 b Fm(DRAFT)27 b Fj(June)g(3,)h(2025)p │ │ │ │ │ +2683 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 │ │ │ │ │ @@ -7188,19 +7190,19 @@ │ │ │ │ │ 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 1224 4 v 1390 100 a Fo(InpMtx)25 │ │ │ │ │ -b Fj(:)37 b Fm(DRAFT)110 b Fj(Ma)n(y)27 b(1,)g(2024)p │ │ │ │ │ -2595 100 V 1224 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 │ │ │ │ │ +TeXDict begin 17 16 bop 83 100 1218 4 v 1383 100 a Fo(InpMtx)26 │ │ │ │ │ +b Fj(:)37 b Fm(DRAFT)110 b Fj(June)27 b(3,)h(2025)p 2602 │ │ │ │ │ +100 V 1218 w Fp(17)307 390 y Fn(\210)42 b Fp(The)19 b │ │ │ │ │ +Fo(msglvl)e Fp(parameter)g(determines)i(the)h(amoun)n(t)e(of)h(output)h │ │ │ │ │ +(|)f(taking)f Fo(msglvl)41 b(>=)i(3)19 b Fp(means)f(the)h │ │ │ │ │ Fo(InpMtx)390 490 y Fp(ob)5 b(ject)28 b(is)f(written)h(to)f(the)h │ │ │ │ │ (message)e(\014le.)307 627 y Fn(\210)42 b Fp(The)32 b │ │ │ │ │ Fo(msgFile)c Fp(parameter)i(determines)h(the)h(message)e(\014le)i(|)f │ │ │ │ │ (if)h Fo(msgFile)d Fp(is)i Fo(stdout)p Fp(,)f(then)i(the)g(message)390 │ │ │ │ │ 727 y(\014le)c(is)f Fm(stdout)p Fp(,)h(otherwise)e(a)i(\014le)f(is)h │ │ │ │ │ (op)r(ened)f(with)i Fm(app)l(end)g Fp(status)e(to)g(receiv)n(e)g(an)n │ │ │ │ │ (y)g(output)h(data.)307 864 y Fn(\210)42 b Fp(The)28 │ │ │ │ │ @@ -7294,27 +7296,27 @@ │ │ │ │ │ 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 1224 │ │ │ │ │ -4 v 1389 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(Ma)n(y)g(1,)g │ │ │ │ │ -(2024)p 2676 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 │ │ │ │ │ +TeXDict begin 18 17 bop 0 100 a Fp(18)p 166 100 1218 │ │ │ │ │ +4 v 1382 w Fo(InpMtx)26 b Fj(:)37 b Fm(DRAFT)27 b Fj(June)g(3,)h(2025)p │ │ │ │ │ +2683 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 │ │ │ │ │ @@ -7397,22 +7399,22 @@ │ │ │ │ │ 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 1224 4 v 1390 100 a Fo(InpMtx)25 │ │ │ │ │ -b Fj(:)37 b Fm(DRAFT)110 b Fj(Ma)n(y)27 b(1,)g(2024)p │ │ │ │ │ -2595 100 V 1224 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 │ │ │ │ │ +TeXDict begin 19 18 bop 83 100 1218 4 v 1383 100 a Fo(InpMtx)26 │ │ │ │ │ +b Fj(:)37 b Fm(DRAFT)110 b Fj(June)27 b(3,)h(2025)p 2602 │ │ │ │ │ +100 V 1218 w Fp(19)469 390 y Fo(nvtx)42 b(nadj)469 490 │ │ │ │ │ +y(vwghts[nvtx])469 589 y(offsets[nvtx+1])469 689 y(indices[nadj])208 │ │ │ │ │ +878 y Fp(There)33 b(are)g Fo(nvtx)f Fp(v)n(ertices)h(in)h(the)g(graph)f │ │ │ │ │ +(and)g(the)i(adjacency)e(v)n(ector)f(has)i Fo(nadj)e │ │ │ │ │ +Fp(en)n(tries.)55 b(It)34 b(w)n(as)f(not)h(kno)n(wn)208 │ │ │ │ │ +978 y(whether)27 b(the)h(adjacency)f(structure)h(con)n(tained)f │ │ │ │ │ Fo(\(v,v\))e Fp(en)n(tries)i(or)g(if)i(it)f(w)n(as)f(only)g(the)h(upp)r │ │ │ │ │ (er)g(or)f(lo)n(w)n(er)f(triangle.)208 1078 y(Our)k Fo(Graph)f │ │ │ │ │ Fp(ob)5 b(ject)31 b(is)g(symmetric)f(with)i(lo)r(ops,)f(i.e.,)h │ │ │ │ │ Fo(\(u,v\))d Fp(is)i(presen)n(t)f(if)i(and)f(only)f(if)i │ │ │ │ │ Fo(\(v,u\))d Fp(is)i(presen)n(t,)g(and)208 1177 y Fo(\(v,v\))25 │ │ │ │ │ b Fp(is)j(presen)n(t.)208 1308 y(This)22 b(program)f(reads)h(in)h(the)g │ │ │ │ │ (adjacency)f(structure,)h(decremen)n(ts)f(the)h(o\013sets)g(and)f │ │ │ │ │ @@ -7497,18 +7499,18 @@ │ │ │ │ │ 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 1224 │ │ │ │ │ -4 v 1389 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(Ma)n(y)g(1,)g │ │ │ │ │ -(2024)p 2676 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 │ │ │ │ │ +TeXDict begin 20 19 bop 0 100 a Fp(20)p 166 100 1218 │ │ │ │ │ +4 v 1382 w Fo(InpMtx)26 b Fj(:)37 b Fm(DRAFT)27 b Fj(June)g(3,)h(2025)p │ │ │ │ │ +2683 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 │ │ │ │ │ @@ -7574,18 +7576,18 @@ │ │ │ │ │ 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 1224 4 v 1390 100 a Fo(InpMtx)25 │ │ │ │ │ -b Fj(:)37 b Fm(DRAFT)110 b Fj(Ma)n(y)27 b(1,)g(2024)p │ │ │ │ │ -2595 100 V 1224 w Fp(21)1154 1747 y @beginspecial 47 │ │ │ │ │ -@llx 197 @lly 550 @urx 604 @ury 2160 @rwi 1728 @rhi @setspecial │ │ │ │ │ +TeXDict begin 21 20 bop 83 100 1218 4 v 1383 100 a Fo(InpMtx)26 │ │ │ │ │ +b Fj(:)37 b Fm(DRAFT)110 b Fj(June)27 b(3,)h(2025)p 2602 │ │ │ │ │ +100 V 1218 w Fp(21)1154 1747 y @beginspecial 47 @llx │ │ │ │ │ +197 @lly 550 @urx 604 @ury 2160 @rwi 1728 @rhi @setspecial │ │ │ │ │ %%BeginDocument: ../../InpMtx/doc/BCSSTK23.eps │ │ │ │ │ %!PS-Adobe-2.0 EPSF-1.2 │ │ │ │ │ %%Creator: MATLAB, The Mathworks, Inc. │ │ │ │ │ %%Title: profile.eps │ │ │ │ │ %%CreationDate: 03/13/97 09:20:11 │ │ │ │ │ %%DocumentNeededFonts: Helvetica │ │ │ │ │ %%DocumentProcessColors: Cyan Magenta Yellow Black │ │ │ │ │ @@ -7989,17 +7991,17 @@ │ │ │ │ │ Fo(InpMtx)c Fp(ob)5 b(ject)43 b(that)g(holds)g(the)g(matrix.)83 │ │ │ │ │ b(It)390 5308 y(m)n(ust)40 b(b)r(e)f(of)h(the)f(form)g │ │ │ │ │ Fo(*.inpmtxf)d Fp(or)j Fo(*.inpmtxb)p Fp(.)68 b(The)39 │ │ │ │ │ b Fo(InpMtx)e Fp(ob)5 b(ject)39 b(is)h(written)f(to)g(the)h(\014le)g │ │ │ │ │ (via)390 5407 y(the)28 b Fo(InpMtx)p 802 5407 V 29 w(writeToFile\(\))22 │ │ │ │ │ b Fp(metho)r(d.)p eop end │ │ │ │ │ %%Page: 22 22 │ │ │ │ │ -TeXDict begin 22 21 bop 0 100 a Fp(22)p 166 100 1224 │ │ │ │ │ -4 v 1389 w Fo(InpMtx)25 b Fj(:)37 b Fm(DRAFT)27 b Fj(Ma)n(y)g(1,)g │ │ │ │ │ -(2024)p 2676 100 V 60 390 a Fp(12.)41 b Fo(testMMM)f(msglvl)h(msgFile)g │ │ │ │ │ +TeXDict begin 22 21 bop 0 100 a Fp(22)p 166 100 1218 │ │ │ │ │ +4 v 1382 w Fo(InpMtx)26 b Fj(:)37 b Fm(DRAFT)27 b Fj(June)g(3,)h(2025)p │ │ │ │ │ +2683 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 │ │ │ │ │ @@ -8099,17 +8101,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 1224 4 v 1390 100 a Fo(InpMtx)25 │ │ │ │ │ -b Fj(:)37 b Fm(DRAFT)110 b Fj(Ma)n(y)27 b(1,)g(2024)p │ │ │ │ │ -2595 100 V 1224 w Fp(23)307 390 y Fn(\210)42 b Fo(alphaReal)24 │ │ │ │ │ +TeXDict begin 23 22 bop 83 100 1218 4 v 1383 100 a Fo(InpMtx)26 │ │ │ │ │ +b Fj(:)37 b Fm(DRAFT)110 b Fj(June)27 b(3,)h(2025)p 2602 │ │ │ │ │ +100 V 1218 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 │ │ │ │ │ @@ -8290,18 +8292,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 1224 4 v 1390 100 a Fo(InpMtx)25 │ │ │ │ │ -b Fj(:)37 b Fm(DRAFT)110 b Fj(Ma)n(y)27 b(1,)g(2024)p │ │ │ │ │ -2595 100 V 1224 w Fp(25)0 390 y Fo(InpMtx)p 269 390 27 │ │ │ │ │ -4 v 29 w(supportSymH\(\))p Fp(,)22 b(9)0 490 y Fo(InpMtx)p │ │ │ │ │ +TeXDict begin 25 24 bop 83 100 1218 4 v 1383 100 a Fo(InpMtx)26 │ │ │ │ │ +b Fj(:)37 b Fm(DRAFT)110 b Fj(June)27 b(3,)h(2025)p 2602 │ │ │ │ │ +100 V 1218 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 May 1, 2024 │ │ │ │ │ │ + 2 InpMtx : DRAFT June 3, 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 May 1, 2024 3 │ │ │ │ │ │ + InpMtx : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 4 InpMtx : DRAFT June 3, 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 May 1, 2024 5 │ │ │ │ │ │ + InpMtx : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 6 InpMtx : DRAFT June 3, 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 May 1, 2024 7 │ │ │ │ │ │ + InpMtx : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 8 InpMtx : DRAFT June 3, 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 May 1, 2024 9 │ │ │ │ │ │ + InpMtx : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 10 InpMtx : DRAFT June 3, 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 May 1, 2024 11 │ │ │ │ │ │ + InpMtx : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 12 InpMtx : DRAFT June 3, 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 May 1, 2024 13 │ │ │ │ │ │ + InpMtx : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 14 InpMtx : DRAFT June 3, 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 May 1, 2024 15 │ │ │ │ │ │ + InpMtx : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 16 InpMtx : DRAFT June 3, 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 May 1, 2024 17 │ │ │ │ │ │ + InpMtx : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 18 InpMtx : DRAFT June 3, 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 May 1, 2024 19 │ │ │ │ │ │ + InpMtx : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 20 InpMtx : DRAFT June 3, 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 May 1, 2024 21 │ │ │ │ │ │ + InpMtx : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 22 InpMtx : DRAFT June 3, 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 May 1, 2024 23 │ │ │ │ │ │ + InpMtx : DRAFT June 3, 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 May 1, 2024 25 │ │ │ │ │ │ + InpMtx : DRAFT June 3, 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.05.01:0545 │ │ │ │ │ +%DVIPSSource: TeX output 2025.06.03:1221 │ │ │ │ │ %%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 │ │ │ │ │ @@ -3429,22 +3429,22 @@ │ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ │ /UnderlineThickness 50 def │ │ │ │ │ end readonly def │ │ │ │ │ /Encoding 256 array │ │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ │ dup 44 /comma put │ │ │ │ │ dup 48 /zero put │ │ │ │ │ -dup 49 /one put │ │ │ │ │ dup 50 /two put │ │ │ │ │ -dup 52 /four put │ │ │ │ │ +dup 51 /three put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ dup 65 /A put │ │ │ │ │ dup 66 /B put │ │ │ │ │ dup 67 /C put │ │ │ │ │ dup 71 /G put │ │ │ │ │ -dup 77 /M put │ │ │ │ │ +dup 74 /J put │ │ │ │ │ dup 80 /P put │ │ │ │ │ dup 82 /R put │ │ │ │ │ dup 83 /S put │ │ │ │ │ dup 97 /a put │ │ │ │ │ dup 99 /c put │ │ │ │ │ dup 100 /d put │ │ │ │ │ dup 101 /e put │ │ │ │ │ @@ -3457,15 +3457,14 @@ │ │ │ │ │ dup 111 /o put │ │ │ │ │ dup 112 /p put │ │ │ │ │ dup 114 /r put │ │ │ │ │ dup 115 /s put │ │ │ │ │ dup 116 /t put │ │ │ │ │ dup 117 /u put │ │ │ │ │ dup 118 /v put │ │ │ │ │ -dup 121 /y put │ │ │ │ │ dup 122 /z put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA │ │ │ │ │ 0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 │ │ │ │ │ 51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 │ │ │ │ │ @@ -3640,191 +3639,184 @@ │ │ │ │ │ 82032FBD2FCB6E403D34B85ED4053A8CB619BDD4DE001F4C3007B1F317579651 │ │ │ │ │ E6D6662189CC2D95AB85D7473F65C5D7B4AC63B0FE928F3400035D5A9D443D0D │ │ │ │ │ F3532B99F3AC26CB25EA3CD64C341159061E02EFBC7C033C05CD919BBD827A6A │ │ │ │ │ BFCF3BD739E32E7FE909AEE068D50FAC33605FFF98C7D0115FB860178FD03DB9 │ │ │ │ │ 7985B78E0AC21F2EA065FA841F5928FB85163B2E2D8F850DC7EE313912C45C28 │ │ │ │ │ 2783F6762C67882EFEDDC7E7567F91C16B16FD8D5A1ABF35B5586307701B91AD │ │ │ │ │ 54984598F2AD46FEE3D68A2731BEAA754C8E730FE0E84952EF77930E4118F8D7 │ │ │ │ │ -2F3AD7547C7083385FD3871F7D9D6AB0715C16A94E4064BAD18DE77DC47979ED │ │ │ │ │ -9ACBD9A9F110703EE62CB30935404C97B62408A2F6B8250BFC3E5BEF8D7B9424 │ │ │ │ │ -447E2145DFB3AA7C4D6665A67B4B1D771BE08109076CE86E7C4FF00B11C3750D │ │ │ │ │ -FDAD6EC03035CAE67CFE15E076F3005E035FDD653336D840574B6B04525D3FA1 │ │ │ │ │ -94630463A7A0A8200642283D1F10FA639022F74C4DDE6148069D909F3DA0A9D5 │ │ │ │ │ -93462CF91CA2CAB590EAF2310184A7866D593E5CEEE3E18CD95BADEFC0132F8A │ │ │ │ │ -A65AD5D3DE74250539F5CE66ECDD43CC7BB7CA82394752376DEBC71F860BE388 │ │ │ │ │ -EFA679BCE3CCACE2753F2D6E0E664F2EC078DCADC02A0358EB040A84E62C7334 │ │ │ │ │ -4205A796FE3B45DA1473F334D7B1F23B9C9FEA91AD3805BF4499CDB6790D84ED │ │ │ │ │ -9BC544829DC4B1ABD23F75A3823CA2B822E174659432CA5E4CBA59E6C2B1B312 │ │ │ │ │ -F675D5D68DAD6C1C9A9D92D41C28C8DB9532C89B689F6E1800FE946E4881A8A1 │ │ │ │ │ -F3923680FC9E9F1B2E0B69A5D608CB47181110FFE733E55494200F328DE47AAC │ │ │ │ │ -09E16DB5B2136E07E7F80C4235848AE8C2AADA5E78120A759C28583A386032ED │ │ │ │ │ -AC2B00BC90D22FFDAFF70DD031C649C52F0BC1444DFDC712742F52F7E59EBC9B │ │ │ │ │ -BE5E7CB184EA233D08DDBCB12F26FB0CEFBCDAD03FE844DE2E81B2994A0E082F │ │ │ │ │ -B66F9485940B6610E19624F236A567E5E4E7B6151592560305F5476DB1E8B9D9 │ │ │ │ │ -0C73675FED457770AB0AF092D834764757403C4AD653AAAFBB9075C7C7A3A8D6 │ │ │ │ │ -2D993EB4295772265D5388692E2280DD50595BDC1F2FC0D687D78B0E0DC83B0E │ │ │ │ │ -F0D98A3D077906829248F04E0CA4369D5CE37222CC4ACFD392A762669DCA948F │ │ │ │ │ -183413066E7A85137FC15A89173631BC6939D3A9F0BFF56CB8C6C0D44CC23F0B │ │ │ │ │ -816C1A9B48D9CB0418EF65FAD15150D0165A837505731EBFA220C90CD366C666 │ │ │ │ │ -DABC13D4103EBBB6EA21BB2FF802B5209C8DCEA1027F07D91763458B1763ECB5 │ │ │ │ │ -825713C297FF83BA4503B528309F593A63DA5A52A1BA99CC4C3DDC8F12D15FA6 │ │ │ │ │ -7D9A95386E9B115F63C1609BF3061F0B02F03C0CD7781B4461A3836EE122721E │ │ │ │ │ -378E9817F5A5A8E863A323EE7B7D776BC78E58A07432300E8B1C2B3A49746071 │ │ │ │ │ -43655F86D7AF6CC54552FCF562354949D43E2B67D3D4DEA02A7C80A30117812C │ │ │ │ │ -69731A5C52835AF9EC1673BD4D7F283E77B7F396F2998EBD6C097D7394F0D253 │ │ │ │ │ -86B788690C6E8EFE2CA3C29013B4C1CB18832202B9BDD497302C9DDA5C080F5F │ │ │ │ │ -0B405108985E93FB662DE82FB0604BC18E40B53EA86FA49C7BEDD5429A8F3D3D │ │ │ │ │ -36340BF02F5F04252152C751CC337DB8308146274BE0C8A28EFE5795906916E8 │ │ │ │ │ -CE5B6F2D95B7466D53F7020E3E8832BAA635ED3FDFADE2AD942D782FBCE91752 │ │ │ │ │ -7E237FA0042A81DDD5102B9E70B8F2B39EE9860291B6ADE7E64CF0F4B773EC93 │ │ │ │ │ -F703A3C1C07FD46AA329D1CA66C9E94C76453243A39B8FC7BAEE8FF4CF8D4FB7 │ │ │ │ │ -824FBF8CA849B4B2128CF57FCFAA2F0616D60D60ED37893D3ED71D2FA6E72094 │ │ │ │ │ -EB8C0EFA557BCAE4BF1D8954D0F7971AF4BE50508418EA997FD536EF1B0F54D6 │ │ │ │ │ -C15A8B28BE162717CB62DFA6723463E675E2E6D1B2C16F0844DD2E9FEBC77806 │ │ │ │ │ -769993EE501BD432C97496E5AED2AFFF3C961216F5792022333F1292C40A9A9C │ │ │ │ │ -5B45900573A75E1D33AF986C6B26A2B405FD2644831040B336E87C91C051E696 │ │ │ │ │ -D3D84516515FC8170865A14A6C069363775DB24AAFC8A3304726F819A11E5A51 │ │ │ │ │ -79BF24360D4D33255302227CE569E10AA354675E2578A9CD6E1C267AB7036B65 │ │ │ │ │ -C564BC1168AB7792F9B3C2B21CA7B8798D3EADC49EE861FED86A69B48FE240D9 │ │ │ │ │ -1161F973ED7592E10E1C0A0D5A8F21C6F0640A4AE37F310AA0D6FA094D858982 │ │ │ │ │ -04699728D3C55AE5D6A0A6D4928E49F016081541C2559A923A25865D1341CE8C │ │ │ │ │ -45AF66E05E940CEE3B19797ADF2E53276D9673393D09CD61F3CD9E556E04A931 │ │ │ │ │ -47C88EDEA8D2B5FE22F1A8C06C772C08C7B7E203E99881865CB4797AE36D5BB3 │ │ │ │ │ -6B6B09AB981ACB1B3CFA58CDDB1C387CA3161C4805B9981A6667A14872404F21 │ │ │ │ │ -FE841693A532F0AE1F58AE1F5CC0223D352060DA7A312A207A20BD6951FF86BC │ │ │ │ │ -C08B921D4F3F073413F21C44F7A6C59A3FDCE8F4FDCD6830E9BC9B9D74F3ECC3 │ │ │ │ │ -7F423F9BCB693358BFC8573D7B2B7F90D9F33181915FF475740C9827221D8D2C │ │ │ │ │ -0FE59913D81F91751338E6889CF890A94F22547ED0778987F6DC01C4FDF60B01 │ │ │ │ │ -B01B3953098F0D6733FE66B74123809A438416B138EDC9C6AE8788E766257826 │ │ │ │ │ -8121C305904629436AD9A13F92599D58C7F2A33C0578F07A82BE83F37E8F8F5D │ │ │ │ │ -1748D83BE32C7015922C9B1B5456F68E54747E3C978AB7A1F07A6980D849F9D4 │ │ │ │ │ -CD5CE945D2ED646B1A7B5AAC8F78FF749594737BCA36848790E8FB8457A217BD │ │ │ │ │ -7A0F49DBCA9B674B93C1BB8EEF71809736F0231696ECC443C2C5FAB8899D66A6 │ │ │ │ │ -E6A24525E875530965F64911852E7C08930D126490B9892B41AEA492040EAA4A │ │ │ │ │ -0DAE319B97ABF055EE7CE602BB720B2871D8E5886F880E3F4ACDFA53F76334C8 │ │ │ │ │ -91386C0B4A97A91161A9FE285ADDD2B9ACB5B6D17C6350EB62F4908F506D8B97 │ │ │ │ │ -B7BD6A667711F4B3DD74ACFA9C52CA753CA52CAE1321F3AB37E586BD4F65699C │ │ │ │ │ -C58BA4C7606E12CF347E45D9579CE7B083606FC6679FDEE56B7F8482106A3106 │ │ │ │ │ -41A5BB68B227B64939C7F7A36B20B21E290D43F4ABCC483B3D536890B81C9203 │ │ │ │ │ -BE3833181E9C150250C318E2E6F3930E5E4DE1F5A46F66E1D10759F8D48FA479 │ │ │ │ │ -CCF2D4798D9DD8A19D8A4F14F2E1D6B5A6A7D1D74F3C2226B24A7D551218A0F3 │ │ │ │ │ -BE2FA7B29639B3D732A28505EDB5861CADDAAC21C8CCB55640BA05B3C9B7D3E5 │ │ │ │ │ -C7B7D936A4BD15BF3C3297972EF8CBD824F1647423122D38B2FF6B033F5E4A07 │ │ │ │ │ -7DEEB4E5689BE5923F5E3536A566619B0021C51DC02EEFC7CDA5CD445CF3D315 │ │ │ │ │ -44D54978A448ADB5717287DF9C8D80741E8DF9A97BE5BB42EA1865AFEEC9A211 │ │ │ │ │ -6B8635596A6623D00C5B721F7C43C38D56AE03827B5672A08F779979AB28B208 │ │ │ │ │ -BDA669433A0ED5728CB5B63DCD64319DEF471D88070B828D8442FBAC2659304E │ │ │ │ │ -E3E9572F88C2089A36DF37DCA0A8FE7C56B74CC667435C1459C988459B6547EE │ │ │ │ │ -51ABA1ABAE7D39E9C7B7332F0E44773BBC39EAD0A9E492146B677FD9BC1017CD │ │ │ │ │ -456271641C5B561B51BBEBA8A450E0EA777A148BA0CB8423ECF1221037FFAF5A │ │ │ │ │ -6165F645F190AE9AA00EB4CA3F8B55B10CC4B8CA613175991B6693E410029435 │ │ │ │ │ -9BBAC48187DB7B1CECD3E8AFF28B302E1ECDF5BA5693644F28AC112BAFDE6E69 │ │ │ │ │ -81B67FE1A1DA6D92547A4F381DDB9DBE2A0A4A8350EE4ED4938BFC14D79FAD42 │ │ │ │ │ -9A30ADF5C61350890D76EA36BE92DAC0F111B6F184A31D4E6F366E624C79953B │ │ │ │ │ -CE72180479FB8C3F970CF2A1ECA0B246B9CADBF9CA76D6B29E70DFB281BF07CA │ │ │ │ │ -E982BCB599556953DC54793A35366B2C1A7957FAE66E2C506BABA3DD54703D11 │ │ │ │ │ -6C743F9DDB05060DF6FFDAAE591919958A43E071F24DC7E47F098DCBFF20D8BA │ │ │ │ │ -DF8A7D5DB9B293C972B552150EC250D69BD070D0EABCC89EB6E925556DC91B71 │ │ │ │ │ -02DF2B7AB4EEA99BC409989207D315F445037B08CBF10A686A8CC7A0130DDA9B │ │ │ │ │ -21123E8821031FEA757C6E6F7C9100CA59D0096A52A589AE6CBEE78EC627EE85 │ │ │ │ │ -C9077124988A13059A0426C719C774B5F6676F3F2D3F91720A2B2C935247012C │ │ │ │ │ -D7A5F9A0759498363FFA8BB0F930AA662E7D8CFF1DDD2998511AC43F3A71CBE7 │ │ │ │ │ -4FF1C1B8888DC2C79EA40B22E3ABBC82FF296E809A07F71569116216B172CF2A │ │ │ │ │ -DD7D2B71C79B2F918D8D53A07A3AD33BD2B767BA771BA93A2DE5D61A67A80052 │ │ │ │ │ -2007EFB358409ADFB6F644F346FDEB1E68223CAAF91C7B4820600884399601EA │ │ │ │ │ -35EE5DA548CD7B60A70B4F943DACF6B1243F20098B5569EEF0109C1AA679AAA4 │ │ │ │ │ -458039E8584CE7D8906CA8E9C18EB00478D8343075F34F63C258088951463703 │ │ │ │ │ -83A7B458A36176F30652D3315F2925993D74E7F4A164CE52009D97F8C2253422 │ │ │ │ │ -04E0523B0159DDCFC37EBD25FA26FFFE7BCA3739BAD66C0AD1BA031141502FE9 │ │ │ │ │ -7B7C239FDCFD19D32186B3A76FF9830212D73BF8E04C0F553675BE1726AEB6FC │ │ │ │ │ -3EE8548A45480CE3D956A36422C67F152CF9F800899D5467CB271E0CEDF119AE │ │ │ │ │ -FC1EE9261E757A4E006CD38EAD2E579A7A6A941C2791B4E556E0016302479B3E │ │ │ │ │ -716E35B25CE863E2B04CF4D68299470AA45D6B14DBEBB16D2337B23A5409F0A0 │ │ │ │ │ -C5675956FD2D4F5D3ADDF80C99D2733510DE371B95D12DE809A349942D0DCD16 │ │ │ │ │ -762E55CB21C5D631F13EC6836C38E74222400EDAAEA670246ED1632148F6E166 │ │ │ │ │ -F3C07AB2DEDA4246C1704197A972620F84CAD6EF160F6788C29E1099E777C86E │ │ │ │ │ -19216FF2A15CE4C193ADCF83974C5212F6B898F6240108DC075062921B404766 │ │ │ │ │ -2053A933815B96EDCB04BD0A614F3CA5D7EBFB64DC364A0A45FF4CD20751815E │ │ │ │ │ -CDE876816946839297629ED826EA59DFB1781C1981E3966985276EDA21B10937 │ │ │ │ │ -C51049BD3F49C02FB397577C8C87FCC1FA6C52457E9AE924141DED235B988DC1 │ │ │ │ │ -8127347F0A1A4D823D6A9B48187B7195077DE5D9C414F5CE6F5220769F334450 │ │ │ │ │ -90252D71D374D8D5024381D51D9C58019C3DFD2BE45936195CDAE3AA06BC6EDC │ │ │ │ │ -30902693B230058C4E57B2E1101420B89FA405450A49DF25ED5348FF7CCC9ABE │ │ │ │ │ -207F97B4015E41C16D170CCFD7D88B71C81B7E3265120652DE48E670BC9D83D0 │ │ │ │ │ -1BE43F746F105B8D55BDA07E57470968284D2A05B5C1F8295A67CAEE412566A8 │ │ │ │ │ -1D335AD3AE3A2E1E6D57044C9C56195B2A6F7FF01E6120DC34444658D7EB4258 │ │ │ │ │ -5000ECA1F12C22D04A1F53A83406B3DF0CC89A66E6176ECA37F06FF25CC9CDC7 │ │ │ │ │ -DDC1DDF130621528FC33C9D3BEA0254B93F8B7A2E3D6E294FA40CA9C6FB359CB │ │ │ │ │ -CB6CFF6987EFD0315F97AF9AE21C094241492790B5221C194BD4B6F7B683BC2A │ │ │ │ │ -A35F78EB9B6B29D36565EAF74A381F673A822BD558DBD525E64C8EF8474449F9 │ │ │ │ │ -E778603EFF3A437DE2604FF746F6EE3633E792CBB891EFE28BB8F87ECC3D5C52 │ │ │ │ │ -00DF0EB2AA7E6F886EF6F92E2E645801BA3ABD21A88CDA7A0FA5BA7A972B0387 │ │ │ │ │ -3172E9FF7FF712A593F7F4E9310C9C63A29C04851E82E7071E7668DD269EE937 │ │ │ │ │ -ABA0AD1A5A26DEC77103698D9F36F25A3966229367A91776AB03F9A3FC2CDBCD │ │ │ │ │ -DB5C7C1E3646D6525636AD5C6A710EB0A2E0B52E79FC44DEE8D19B53B68BB932 │ │ │ │ │ -862A993B696D80CBFCEA9728492326A4C9AA302A321EB837E0EDC575DEEA0C73 │ │ │ │ │ -C1336AB997ACEAE29F8396082F3A47294251CB8321D4C62A3B903B14D26F5DDE │ │ │ │ │ -3DC7CEF45ABF9715DB62F28A10E13D078ACEFE649E1D168D268535A5C50CD459 │ │ │ │ │ -77ABABC217AEDC682CC72F85814B235B2CC6B288678952CF9CE6538D9EB3B3F0 │ │ │ │ │ -9F8254F6F853255AC3CE51E83585AEDF4BCE11FAC5824F2819482C256EC682F8 │ │ │ │ │ -AEE03DFFD5961F2272BFA7572811C2AD8410D0D47AB16A8962C8B16E2BFFDF47 │ │ │ │ │ -AB361C09EA65C1EF3B134948FAB89EF52FCB1145254060F3E8E227819A73E38D │ │ │ │ │ -81E287D62BC63F3458859D28BD13F5E6E9CFAA5DA0BCC052546276EFAC81A988 │ │ │ │ │ -EC41673A72871E7564B26E44948924B6D49876BBE8EBA6BDF42DC3165907E990 │ │ │ │ │ -912A6FC7C272392AE2D22F5B176AEBB1D353E7BC054B782DFB75B6F2882FBA85 │ │ │ │ │ -A8AF4C5C38123AB31959880B4995B4E2B0DC835A6770D3E196F05B8A3E7A984A │ │ │ │ │ -0072D0525936D79E4D8FF8DF5ECFADE1A8D100A30ABEEBCF0DD309D0CB4C585B │ │ │ │ │ -7C69A2BF2A1A06F5D744DB970C75EBA72E8073C61C83CEA69E4CD1C4783498C1 │ │ │ │ │ -7A5AE5A50D3764D5DF93DE58A8604CD54E5020C91ADBE846BDAAA35EEC135E21 │ │ │ │ │ -34807CCB7DE15073B4DC920B5212C9B66A14B62A79C9284B0CC65144758AEA5D │ │ │ │ │ -7229F1245C0559045C91E1B847271EAA477FC87CD46A103F8A59CFA72E03120B │ │ │ │ │ -BEEF3DF91DD66453B08458E1664CCA9214BF864109C3F3B72171E5EFD82D4425 │ │ │ │ │ -DC9A86FE5019A59241B8A386E98F9E5C735348A1C9FCA090E8E2B57121771EE5 │ │ │ │ │ -158DC9F50DE32630C66635B1A32313F0D7294FD408B6F3B8B38935E77D267956 │ │ │ │ │ -7F3458A0F257D685E1E53856A38A39CFC1E89C652FC20AF35B3F15C261F8C94D │ │ │ │ │ -2F1D3CE41706CFDF00783BA5ECE5EC28310AD404DE0E1E992A8D116C758F361E │ │ │ │ │ -C07D06912B4A5F498A071D4F1397B4074E9E9A14F578F75036BC81608B4EC909 │ │ │ │ │ -50ECDC07051959B627582670BAB7B82A33C204B02AE4FD7374B3C6F13F4CDC92 │ │ │ │ │ -DF0F31B286BBDFC4E2F3AFE7FD981EACCC821BDD6F57231B40F90568EF4DFC6B │ │ │ │ │ -3A15DD6FB8D1685B97AF61B0D223DF7C33F617CD6253D6CFEB7E23186A01452F │ │ │ │ │ -BDAE19B45C45E7230C856D69AC16D13D0DC11A6A0F44BAEA552D5176B6405F27 │ │ │ │ │ -0D9916CEAAB2388B18A35A17080ADA886EDF537F0C18242F7F2B0DB6706D27A7 │ │ │ │ │ -066F097B493E2A826C1BDFD9C5728560FC6936875F69AAD4C71F2F039E48E685 │ │ │ │ │ -93AF0D99DB7EBC9B15D34D1CE61E623CB9EC4C41295F6AE503BF698D84F96944 │ │ │ │ │ -7D38F50839C4D7F36DA3A34C0FA1F1EF8E2F2285131488BC06A36E19171996C3 │ │ │ │ │ -A4E6A809A2297BEE88C88F02BD1BCC513756849744625462B21FA36392A5E1C7 │ │ │ │ │ -918A89A4ADD275AEBF740E31919ED9F7A8F84C73467CF2970EC5E971B2000639 │ │ │ │ │ -BCB4A86007BDB94919E1047075859216BBD62A3A32AD317C8A082E21E9D5B691 │ │ │ │ │ -51A0C08575D52E54AA82CFB3F3DB1A889E73212879151F2A34EACBAF2D45F65D │ │ │ │ │ -C9039A84D1B5CDB1C40AD881D8905B549E7B05BB5F200565E4F234170BBEB21E │ │ │ │ │ -BC7D87808196717789C157DFAC62062BCAC89707F19ECB29C49A5907AEF296C7 │ │ │ │ │ -A9189A9F16B3DEB040638EB6C673577C00964FB1611082DB0BFFCB6A29DB78A4 │ │ │ │ │ -FD2DBFAD103FE91B6256577ABA0988EB94D63B476B786E8985AC0C4D1B8049DB │ │ │ │ │ -1794CE4AA36BEB9C04633C5AB005D0085FEA5E49D5A67AA2A64695956C223DEA │ │ │ │ │ -E109CEFD9557BDCB1D1DDE89838557AB7E99B015461CDB1B9EC3B24432F7D29B │ │ │ │ │ -B503668A214EB03E5DB508C542B7EE25B9DB055D3A9BE46358CEC65E481A6D7C │ │ │ │ │ -B6262B64446E752EBA55F942C0112BEA0A6653E611915CAF2F63E7CC1B427FAE │ │ │ │ │ -7DF3A1900CB3DDB15FE262FA3AD3529B3985C153F38748D1046C5A1942A74C0D │ │ │ │ │ -3C4CB02F74828278C15737AD67F296410269B2CB3C66C5D36233FC7BB1954310 │ │ │ │ │ -732883CC0F1254CA270DC5B24CBEE7A99439ABC75EE28691E788A65067687206 │ │ │ │ │ -6CDF7EE2A9D11A895F6BCFF139FE8D1D6D75300F0ED7CF5972C5AA7591AA7267 │ │ │ │ │ -BC4A13FA084FA32F9CF94CB9A8576E5471402287AF3EFEFFD0382B9A3A6031C5 │ │ │ │ │ -0C56FF6378B98A039DC47546EE83A6E9790C1A5F03F05832D6B3A6CE8F001E81 │ │ │ │ │ -A27BF10426D7BDF5E9DE165E083910088A6BECD23E3BB62ABBCB934600A536E5 │ │ │ │ │ -0ABE76C00C1A59D084F4E27FE97226CBBF20EF4D73C3521FB817FB0EB1ED972A │ │ │ │ │ -54FFE1EFD2514A9506F8E5344750367D759C509B94260B1DCBEC32EA1B3755EC │ │ │ │ │ -5EEA99AA980B22BCFFB43A24B704E0A085EA5B0C06DE7E67D9CB6503B01A809F │ │ │ │ │ -F0D42123DC7444AE91406269766DB7BE281AF44E1B8BE8D4F80C4E787B6F0AFE │ │ │ │ │ -448B04F826097F486E5D9B581FFF65E8039A5DA246D11B291C3F374353BFA390 │ │ │ │ │ -90A6DED9A3220CC1DC9E33E58976AFDF5CB9F22D76BAD393CC5CF21B6210F1EF │ │ │ │ │ -89D89F36B080CE362B90A2D6ABD5EA7C990A9D385C393AA681349B7766B536DC │ │ │ │ │ -0B1C522B27CB6863417A81656A646B7D001D9394D087A87546E3CAA554D35095 │ │ │ │ │ -D0FC6486FCAA0F270414B5DAE0294BCB6652094B8BDE0B7DCBB21092A27EDEE0 │ │ │ │ │ -C5C217FEBCE57B187196E943231F9AC5693CFED5D9A53C012169C06BE3A0D749 │ │ │ │ │ -21B842D47EBB2D33B1C73E48 │ │ │ │ │ +2F3AD7547D3E54167FB0B315756753DC0DF935CC3D1CBB93A9A575EBF5BBB34F │ │ │ │ │ +2CBD38692849D484C11BB5CF75F095251A87F37EC4727933F21C3932EEE24157 │ │ │ │ │ +6C7AFD8361708C885FA63C37FCEC2057BBC47FBA727F94569921D2F4B8F0DB6A │ │ │ │ │ +2E398A672F4122E3B1E3B4EE28D0AB51662DAA00AC11C2A9FED18429ACED7465 │ │ │ │ │ +4F427E7965A7CAE7FDBE67EAAE97D91A082303BCADE1B1361D66DCB0CB8BFC7E │ │ │ │ │ +107366EB90AE246B2C8528DDBA2E621C4382FD8516E071B813A5BDE514EE30D4 │ │ │ │ │ +C647C8877BAD1BFDF9D6068AC5537C48EDC2B9D1BA2E90D4FC2D8B2B28547E0F │ │ │ │ │ +0CA3F834903BD3E34D8D041778BA8D03914A0FAD861C76BE8DADC6F2409E58ED │ │ │ │ │ +F00A13ED0D7A32B44DDD2E55068F610132BD988276F1B9FC6D87C0895E6F3F11 │ │ │ │ │ +470BCB2863BB76B4A2DEF9A4B0E84D2141C43C205C777F8AB1AD08D738B0B5DB │ │ │ │ │ +677A0E889A98A0FA33D9C380D1B5D3DEEF9B3697B1D207633BE95C3ED360929A │ │ │ │ │ +233CD0AB73CC2A8674AA86DE3E9E75781252B59E4C8A69D91A88CBCDAD3BA46E │ │ │ │ │ +F66CBE9CADB844A7A817BD4878D6B0259A579E7362101052F796A3E4572764C9 │ │ │ │ │ +EA7FFD253DAAF4365F588B5E15836E9A78C1D3F69B29F53BC5E34A57318E3627 │ │ │ │ │ +4644E0294B6CE43312A3E1C75B675B1E256B45723A2BCCDD3664C94848582E13 │ │ │ │ │ +54B1E789FE23DB285A6CC350DBE74425F634E75862E75446880F6E5EEDED342E │ │ │ │ │ +17C7AD496CAA7377BEDE678E079ED8D96FD9A5DFBD08F5A746537E4228CB4E50 │ │ │ │ │ +FFA37D2CB229FA4B6CC7EB01A5F388F0BBADF6142C8CCD13E1D4AEE8BC31DB8C │ │ │ │ │ +17BA27ADF4579BE0DB6D5ADE174D6424E585221751AB6E31041C1B618F765983 │ │ │ │ │ +6F7E3D45027AE41E8CCF13E9647020608C8DB0D6594F224CB6F96F4F1FE62847 │ │ │ │ │ +1A59B6189C5E484EA19FF24FA583F986B3C2C603D5118049BEFFC4449F8328B0 │ │ │ │ │ +C6BF8A6091FF7DDA36834C7B25A69DCA3F22015B85F567AEF052E5654FBC8AAF │ │ │ │ │ +F13710CBD90729353C243771BDD1871A6836CC22A2F6FC7DCC5C14669BB48700 │ │ │ │ │ +129CCC083932589DBDA5A8CFB57AEF24A66072A482BD4E28F70049DC39C6B097 │ │ │ │ │ +E52825B2120AD329C6DFC09571F7DFA6DC166885721F68467F6E9B9A68E723ED │ │ │ │ │ +42A16832D568601D638559C80C8311476E1209EB8340438EE73A09FC40CE3246 │ │ │ │ │ +711C2634B6E7C4E8558707E619385ADF42910B15B766502F70AE5B99E0A39F9D │ │ │ │ │ +26839DC9D1025DC834A1E8AB45FFE334538E1777380112916B1631D28F2AAF4D │ │ │ │ │ +74897274DF36079B3CD66DE8CA29B1C0A86CB58C3B86ACA2248DCA4717395A75 │ │ │ │ │ +FF9E241FB2B62A264F0DC54AF13B60D941AE8E52E445D60DB75F5A4626C56EC3 │ │ │ │ │ +8755504146B41097514A70F40638B9F09AC3951388488B90A551963D679F681E │ │ │ │ │ +172D897E2C5CB3062EC6DAFE1430E9F8482C1272DD91B29A7CA185533EDD6AA4 │ │ │ │ │ +46E6669CB3F162E29CCA4DEDFE29DA7632DAA06D0F32C2D14E8E65E02DF6A527 │ │ │ │ │ +90D0A00A22EC0ECC193C64A881F24635E60853A887D5CEFC0F8C3C60D74DE847 │ │ │ │ │ +64D9AA879DE95191E6BDA410AB7BA1B24B860F84CF53D82E647B4A2882C6920C │ │ │ │ │ +C82A19782EB0B257F1770ABE95BCC5C843C7DEFC9D8E71B696ABF08ED86695C8 │ │ │ │ │ +8A39063DE12EBB11BD07474B945B6AFBBE42CC68281B60B91278123E0BA1B784 │ │ │ │ │ +DC4BF3F6011F799F31A922D38D46A44C4F18C4141D21FE484DAC60EB0AF34198 │ │ │ │ │ +063D1C340ACFA268C719DBB07649DF956FB5698FE3C46D62E0F2370231D9EF10 │ │ │ │ │ +CE8B09A81F439D6C4CFBCF92098E454C8611D934835A43E84857805C3C0C1E5E │ │ │ │ │ +1B8819DAA5B9EBC620325D7A9DF2D51BBAECE5E80A60F4DB9D096EBA3D748324 │ │ │ │ │ +87E34284B0649C85F5E5831B151F786951E5A7AFA67A911D74ED06248001375F │ │ │ │ │ +139C3ED86FA8CB53F72CBD78C5CC6FFFA773C1CBC2176077398ACC0A61E1F2F6 │ │ │ │ │ +DF08E0EDA044A07ECC76DCBF4D6FA08D7289131CF8CF10C3E15CCD630A7112B7 │ │ │ │ │ +958E3CD59B6ACD6D8CA181AB484EB6E30551FC24C3C5B72840B440275526B3B7 │ │ │ │ │ +4B5606D45230FE118B61F92336264A5E33E3B0F75193B6D17956811252F72AAB │ │ │ │ │ +D44029CB7E562BD1D6A91F4123D476DAFA165DA576413469DE2502A8316922EE │ │ │ │ │ +01BAA20F4A7AF4A8978C3959FF50ED22863221D69416C182A5DBEA2AA4E4CAA8 │ │ │ │ │ +8F1214FF205E991F2D67BB9D7C3019D439673E3C36758510B56543A4A6C8C478 │ │ │ │ │ +16D369782D82663EDF214D894D2FCB46A1C3099E73D47297D6F2218A6E188D45 │ │ │ │ │ +B29C60DCC64CA9A41176B0E40B33E52644A44D90B6901457874416581E437555 │ │ │ │ │ +5E17E46A63ED56FB985398198A998503C4114CCB1F7D0C170CF44A4B8BE9E076 │ │ │ │ │ +0BB938D859940FAEFC02A4738BEF6A2DE5D48CEAB5417C4DD6F5847FCDCCCA90 │ │ │ │ │ +B0E5A07D6EE5895D36B986BE699EDDC39FB8BC7853157CE183A605EF8F7F03C9 │ │ │ │ │ +FE6689913E8E21D46DFABF143032228F40541A57CE42FFB593697B786E71D8B5 │ │ │ │ │ +C0E00347EA9A8E3C265A529C9EEC6599DCE57D8C32785E347C0D210433246F1D │ │ │ │ │ +F168239C19C1610A699851A0F077237F9E8E095241B508E98631575E3FB90725 │ │ │ │ │ +ECFC7796B5CB10F41A0D3FB8100707ADB9C922B2C6C5A58C748ADBA74A6AAD45 │ │ │ │ │ +F3556FA8BC07783467FCBA05938D30AB73A703E2A4EE9327CBC936050E7BBBF8 │ │ │ │ │ +D986EC9DD214026F61CAFC9DD20B0916F7DF5D1421D477C391E0134E382D868F │ │ │ │ │ +92B8459BCB9E4E3BB5D8A50D1887B76BED928838B8C0B8C200587BA7AB024077 │ │ │ │ │ +92F6CC4A8B08F87AF6EF5E72B8DB4A47DC126644E9ACD9E6945883F61CF570D5 │ │ │ │ │ +4DA0C1D20A73170DA4CA4AA96555533FB35A290952D7B723938D1FB28F17AE6E │ │ │ │ │ +34B52BDF81E44AB7D82A6BBB1D7D8341839139494D0FD9E027309F2CB3D67A94 │ │ │ │ │ +6E0CB5B02C46ACFFF3555276B15E77FFDA1B0B636EF5D30894CFF4D3A90B8F35 │ │ │ │ │ +D5C85C707AE5DE25729C6B0143DFF404C0A09A63E48C5588BC3A6CCC435BB6BE │ │ │ │ │ +685588643CA98D54FD78026223790AD219B2E31614D254076285F12866390030 │ │ │ │ │ +7B81E12ADEEA86559191B641A8BFEB7F50206CAE29458371FCC64A282F679DCE │ │ │ │ │ +A6832DD1109DF3A560988B2968A3E83FC0004338220AA68ACA2EB2D6D6E686EF │ │ │ │ │ +791B083B581E16EFFA1B8790242750B706EF21C4F8D6B2968204658AE8EF6625 │ │ │ │ │ +539E7361FC4CC8DB4022356E58E2A30C9D98AAB4E24175E9865735C5E66EAE47 │ │ │ │ │ +E0C1B605755A185A468E252737368E88868480B3CEFFE8D757ED246376801DF0 │ │ │ │ │ +F157D43917C78391E83EC812477E4FF488002872D10336BDF70E8A8D338CB199 │ │ │ │ │ +8638DEE68B1B708E42C311F93049BF7A67A7EBC20F381A5D35ECE9E3C66D890B │ │ │ │ │ +03D7E1715DEC59FFF5F1F3C5072F209895D48A0EE630FE2E7D513314C1ED7547 │ │ │ │ │ +E89D4D97555E41856D173C515CA84F7491D14F4E9B62231BAD3C5FCB7F800B49 │ │ │ │ │ +7196C066CBEDE4B3B688EE9026EE42E1E49F0C2F567CA6DB55F121A960BB1938 │ │ │ │ │ +415F4A92539E38A830F2234B530D7E38EEA6BDFAD232FAE47998AB03A2AC95DF │ │ │ │ │ +58C0161A25A2AB69DDC82C37CA21D759B4BD0A1B19BAD7D6637734FA8D25EE53 │ │ │ │ │ +28B5A16FD64C7AF40C525AFF8082A0C1E3CD4D24B8A009781751D21F07742286 │ │ │ │ │ +0980283767628ABC841FF3C0A2215E2156E0B20F41B614C43FFFCF2AC6C8C1AB │ │ │ │ │ +637073860DC21BA5DEDAE802DA7317E39D7D4704148002FD60EA7C352B5C7254 │ │ │ │ │ +32A1F32DF726987882556ADBB084B3F832CECAC0C7528A4DCCFB13B2246F50AB │ │ │ │ │ +8DEBAD67D473049A31156FF500AF404B61F0B64A09624E03007C06B0B77C603D │ │ │ │ │ +E9834F6B48019BB39CF3B4C6D28741C50A99F058DE70A36464173A1BF870BF12 │ │ │ │ │ +12EE4000B12A459AE02063C6BA16E250F832CE46E9638208A4F6A117B49B3743 │ │ │ │ │ +E4608E3AE592A0AD6236B835EFC8D9C8937DABFC29BB2AF558686D5E3D532B81 │ │ │ │ │ +7D9E6A08564387942DFCC5DFB419E2016CDC0EA97A2C11247FD2F997D891380F │ │ │ │ │ +D902AC217EAE3EC29CCBC1F7CAB3393B5025CBD9F425318BA7C9CFB47CB8CF92 │ │ │ │ │ +FD629FA19979DA97BD2015859B5C81A2C07FE04BF5537B9A98F5C279B13CAEBC │ │ │ │ │ +DBD8E86D85FD2E08F0BB979FD177B26D56C2DDC94AFBE98446D186CC612532F5 │ │ │ │ │ +583460CB925E3399B9367E7E7B4EA2FBC0877F3A218E943B1E87812C073D5878 │ │ │ │ │ +5A04B37F02E1B069CF3411F06156A9D4732CF03FFE56D93772693A66BFE9814D │ │ │ │ │ +8AD9689FFBFA09F05F787B2B565746C2B06A456525E790BF736F8008E37E0047 │ │ │ │ │ +EB94AA811C26F4F2E2AE3C7C43701BD47D3DB71B13BB45A9B5828F59E9BD6F7C │ │ │ │ │ +AAB3DF0DCC6EC24C5A26371158DD23B699BAB06E2BE94FF2F4CB7070240BD050 │ │ │ │ │ +1FF9F77ADA2AF6954A4479D88575518B3A647482AFF51FB42138C28418ED3D4D │ │ │ │ │ +8F7E7183BB1BFFA591450DF56088D29D9FF9E28568207ABBF8F7E4D00EC8B503 │ │ │ │ │ +42572D28834883F5A4EFFDF0DBECE74C207EC1D819750299264EE1BE2DFB5A0F │ │ │ │ │ +20F69441200BA69A157F2ADA719FBD249B1893C0A02FAD2168345D6793FE414D │ │ │ │ │ +756400B9B26451E0A7A612945B67967F64556122A3D7E843444BF8D82B5FFF6E │ │ │ │ │ +B2BA38776E9E4C2F286022A216FFB96CD34A5A3FABCDD2FEC79B2DC3C8CDF45E │ │ │ │ │ +7A547067D2EAD8B900CD2644E9E821EA3B597AB7511943E2AF2721DDA3B8AABB │ │ │ │ │ +402B340D8F549F587062A273BDB2AFC49AE3554BE559611C453EDB80AC637DA7 │ │ │ │ │ +389F35A33FE308A3D4E1FAAB75123340A6D8492E00026408367F4A6A1CB8EDC8 │ │ │ │ │ +FA3C2FE9ED06890F1044DFBC1468DC5E47C2C1C3D56296329DA2927DC04FB923 │ │ │ │ │ +A41CE2C595A65C7B610961A66D171CBBCE1854D430E79F82969427136619A29C │ │ │ │ │ +62616182BA65C64F62EBCEACE5CBEB2D338CDCC5AA2E0FD758555AF219564B2E │ │ │ │ │ +47839DC25AB563B40BE9DB862BB5B59D12903E9CBEA4E0B7815D2F2C84CCB510 │ │ │ │ │ +D30B2DFEF87A1DD53220284386B7BF6EB76FD2C8A92E9E222D6C53DAD3DEFE2C │ │ │ │ │ +94C6B6E31373BEBAE30CE3F9FA4CD47C8FA40BE93B80BCD7F347D505E6CF42CC │ │ │ │ │ +C432168408DC5B338C841D5ED62EE96B47C6EBF1CC8A94097BEEAE82D7638988 │ │ │ │ │ +5E384FF3E45A29DEFBB6FB681262E043BD89C979BBED1E020DB3279BF0F2C164 │ │ │ │ │ +520889DF47ED9195F0B50249DA66FD5E33E9577BF5A08695C95E61E88BE975E5 │ │ │ │ │ +78C893802DDF77718900E4F5A4B8EA163A0E44FC913619D46CBD7A463833D844 │ │ │ │ │ +A9A4F937AFAF5350FB80941E2850259D3072183C76D9A7F55561026077E6A90C │ │ │ │ │ +F8F094796C9A8BDCEDB79432815635C67634EA6FD66ACDFE8C62A447B970EC90 │ │ │ │ │ +6B55B437273CD7F9D0B8A9FDA67376B907E96A88085E341C95FF6095C5848A87 │ │ │ │ │ +71C0D218D6047DC8C0C02930BEDCFDC5AABD932DBC998B0EBF34F4C36F16400A │ │ │ │ │ +986F7FB7893E2E454995BE30C684788DB403E1E22ADF1889CEA8A43B5C2C6118 │ │ │ │ │ +E8A47C023E77D8477448FF6A143DAEF73CBCA85AF85BA7D30EA4BE4BE096D107 │ │ │ │ │ +420450DFC21F1F06CF4489B3210A4BD710E63C8797D050D4BB85FA605D1351B7 │ │ │ │ │ +1F926B4393A051AC761EF00577BE75C68993BE3C251AC96B43E9C3C90C56D214 │ │ │ │ │ +CC79E9ED2CE3590A2B262210EA739A2E9C68F288EAD3553D9DD33641B0E9DC1F │ │ │ │ │ +38AEECE18338B88DBDE06B71B9AA8B83655D70FBDF66BD0CC84D56933B753526 │ │ │ │ │ +71C8591A216A02F9D47E44A160895481F704ADE1732627E9FD5C7F9E655E825A │ │ │ │ │ +C0E4D19B9CF3939517E2794B2CB2FBDF4E9C97B130E552FF873ADA465603AC0D │ │ │ │ │ +9507D804DAC8CA7AE73AFCC351DB67898CFF151DA050F2B494E68EE358328F88 │ │ │ │ │ +CAADEC9111C1C2E17198CE3324D5BB5A4D3F9E8408810DB9EEFAF6FB97D6CECB │ │ │ │ │ +1AD2E3A44AE0590B5540CAAD47E86084A2C8A8EA0C42D55CDC1BECEFB66034B1 │ │ │ │ │ +A3E1DD54C94ECF26FFEE4F4CFDFDB804A45C8089FC23EBE1146A85DB6A77AB2A │ │ │ │ │ +D89AE17D71FD84308A04A09139DBA12AA8A956AC16032E2942DBAA49A5E902AD │ │ │ │ │ +A68941624450A71B6EBA2B158ABFBFE7A56EC96A2FE3144A70B856ABDB4CE6BE │ │ │ │ │ +4B5F977C9B45AF650D4D31EBC86DFC805DE107671942468AA0BE4A33FD10F47B │ │ │ │ │ +7A8FB1D29E36D38111EA1913FAF70F4F2CE9FA7C5C8C3623305818AF19A846D2 │ │ │ │ │ +65B2A4B290B03137DF480A169B339C8E8C0B9C189F74F8ED3B41FE4A59E03645 │ │ │ │ │ +576D277C89837B8523002E8FE052A7C51CB1C5BD9F463D51BEC6DBC73437CD22 │ │ │ │ │ +EBE7E087A96E32EEB02EFECC9ADBD541368E57977E1F11D0686F88C637ABB724 │ │ │ │ │ +95FB95CE1281A71394B7208B456D7CC184B69AAB37AD2444EF98D472D381BBC6 │ │ │ │ │ +9F2BC1FA11191A855565BF954CB8427D4B0248135AA8BD152B6FFA56E96D7EAE │ │ │ │ │ +A6FFFBB4A4247B66C2D37A859D94C64DEE9356B90211C857AAA4FDAB40C3CA3E │ │ │ │ │ +98F7F371EBFCABA1F4A89CC95E76E84D23CC04F667CF89C0A8D2CF9EDD30E72B │ │ │ │ │ +B1D0382CA0B6DD272A74EFA21337FD368118F13C525352767DA5AB01A61E98E7 │ │ │ │ │ +2999C9B0A18EBAC31B94F4E69FF485FC60F448A7F9720EFD2CF9061487314E79 │ │ │ │ │ +1065E0D6B5706557B8313442F537F55FD152CD40E6AAE9B4EFE8EC293F1C3A5B │ │ │ │ │ +02421F459CCE41F75511530B2503902EC7CA089261C7742E639450D72BD7F580 │ │ │ │ │ +300FB221153F1F7C3ACC8AC678D06D176FCC510DE0D6ACE673BD55BD071D9C2D │ │ │ │ │ +D04C589A78A91F8F75CC55607CBA540FFD0859478A62B7F8B039C48D4D8320B6 │ │ │ │ │ +4B2664E8AEE5CB0A1EAFA241C29293C956BDF37B219105217C3804BBDCBE11F6 │ │ │ │ │ +8263C848609D5A6A04D59F067087E5F3B08B4ED664AC07D97FA835EF748823C0 │ │ │ │ │ +C9A3FB8C8778A78EB3D803BF725E439B298E98AB125CA20226E17315895B5B85 │ │ │ │ │ +141D3CDB8803979F0DEB00421848D055B19B3EC9402E0996CBC6799ABA1C338F │ │ │ │ │ +15026FD1FF4FE1000E3F6E834E216EE276A7746E798EC6661CD2B2485F3D92AF │ │ │ │ │ +E8D1868B6CE190487FC8A14C8B64E36CCEF88D08562BF9F91C7EBE72EA021F2D │ │ │ │ │ +E79EF314331EAE0BE25D6738E216EB70B4BA08D715F65DD1ED20487D9C11513F │ │ │ │ │ +5D929958B5A7F9F3E4B94D7947B9EB0B75868764C09EC0A5E1F14E56B50AD718 │ │ │ │ │ +ED833BA2104384C8E26364CF1C79EC0F7533B606EAD4A4427A7823654F30A726 │ │ │ │ │ +442417F21DC8F2EA5E4306D1FDF5665BAC644E95818D08106FCF942DC782C4D5 │ │ │ │ │ +B80DDEACB5299CD796F65B99D0CDA4EB0655FED01E07D335D26484554D0C4558 │ │ │ │ │ +EC93F0B214512E13343B2F375C82E0B7AD9125BD2588B6C39D98E13099B4FA04 │ │ │ │ │ +001BB7E4CC74E82A68237BA969D7CB117191A62C6CBCC6E33EB5CBC390B371D4 │ │ │ │ │ +B5DF3CB117D7AE29D108D3AC4EE349C95C5E79825DB5EF39AD3BD62983D452F7 │ │ │ │ │ +C6481097023443174343D227D96B0C5AF630801EE313754A0D682C348AAF6525 │ │ │ │ │ +3252254129E1048E101F4D7B7BD27DCB09B44C7BCE69C0EB33BCF92CD52BE66F │ │ │ │ │ +7C48F3BFE693E91BAAC2E6CDEE8E5988D3E9708748627457EB6DD8AF5004DCC7 │ │ │ │ │ +F236C076CF7ED4E9E509193C2B2EBCFC9DDE1D92427EB5E57CE4C35F87A67225 │ │ │ │ │ +57F2EE691C0862F6E92866953DE3D443E7F768A4C2F95189D8DB4AFB22E2133F │ │ │ │ │ +D5B3EE674C90F22B7C9853C3DBEF6D0017A734EBF05FE0BEDBB2F8C923B2DCCC │ │ │ │ │ +DBD97FDC519B65301C93F4DE974AE5B2DF086D51BDB2741094EEFB7C8E9C9C6A │ │ │ │ │ +2627A5065C83329CF40820EC39A62D1D0C271BB2EB │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -4249,17 +4241,17 @@ │ │ │ │ │ 83.022 /CMR10 rf /Fd 138[53 37 38 39 2[48 53 4[27 4[53 │ │ │ │ │ 42 53 46 13[53 2[65 72 2[57 2[36 3[63 3[72 13[48 1[48 │ │ │ │ │ 49[{}20 83.022 /CMBX10 rf /Fe 133[34 41 41 55 41 43 30 │ │ │ │ │ 30 30 1[43 38 43 64 21 2[21 43 38 23 34 43 34 43 38 9[79 │ │ │ │ │ 2[55 43 57 1[52 60 1[70 48 2[28 58 3[59 55 54 58 7[38 │ │ │ │ │ 38 38 38 38 38 38 38 38 38 1[21 26 21 44[{}50 74.7198 │ │ │ │ │ /CMR9 rf /Ff 205[30 30 49[{}2 49.8132 /CMR6 rf /Fg 205[35 │ │ │ │ │ -35 49[{}2 66.4176 /CMR8 rf /Fh 133[43 51 2[51 54 38 38 │ │ │ │ │ -38 1[54 49 54 1[27 2[27 54 49 30 43 54 43 1[49 13[54 │ │ │ │ │ -72 1[66 2[89 5[77 3[70 69 73 12[49 1[49 49 49 3[27 44[{}32 │ │ │ │ │ +35 49[{}2 66.4176 /CMR8 rf /Fh 133[43 3[51 54 38 38 38 │ │ │ │ │ +1[54 49 54 1[27 2[27 54 49 30 43 54 43 1[49 13[54 72 │ │ │ │ │ +1[66 5[50 2[77 3[70 69 73 11[49 1[49 49 1[49 3[27 44[{}31 │ │ │ │ │ 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 │ │ │ │ │ @@ -4276,15 +4268,15 @@ │ │ │ │ │ %%Page: 1 1 │ │ │ │ │ TeXDict begin 1 0 bop 1103 1880 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)1689 3012 y Fh(Ma)m(y)g(1,)f(2024)104 4919 y Ff(1)138 │ │ │ │ │ +Fg(2)1681 3012 y Fh(June)g(3,)g(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 │ │ │ │ │ ├── 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 │ │ │ │ │ │ - May 1, 2024 │ │ │ │ │ │ + June 3, 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.05.01:0544 │ │ │ │ │ +%DVIPSSource: TeX output 2025.06.03:1221 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -1513,21 +1513,22 @@ │ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ │ /UnderlineThickness 50 def │ │ │ │ │ end readonly def │ │ │ │ │ /Encoding 256 array │ │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ │ dup 44 /comma put │ │ │ │ │ dup 48 /zero put │ │ │ │ │ -dup 49 /one put │ │ │ │ │ dup 50 /two put │ │ │ │ │ -dup 52 /four put │ │ │ │ │ +dup 51 /three put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 77 /M put │ │ │ │ │ -dup 97 /a put │ │ │ │ │ -dup 121 /y put │ │ │ │ │ +dup 74 /J put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ +dup 110 /n put │ │ │ │ │ +dup 117 /u put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ │ @@ -1708,68 +1709,70 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004ACD1870 │ │ │ │ │ -A5EA947858F5795870BFE1343AD803FB854BF8F5A4E794E8EC57BE41DB5B8734 │ │ │ │ │ -13E47950F29A81EA0C81EA798863883D7F41F78325CA190CBBFFE822AE494550 │ │ │ │ │ -4BE83703071FC9512D128927AF3F63CEF8F86ABE1E15D7B4DDD39576E7DFF45E │ │ │ │ │ -3CB4115AAB1830DE8647B915DB4BEBEB5235C281E098B899BAB951D8D5798F01 │ │ │ │ │ -7F7C47336D31438E5126738AFEAB29E9A7CBE06DE4DD604477B542D2620DFD58 │ │ │ │ │ -28FE34238572F23C5A8EB7ACEE1E154DA13FC1A5AA67A3BA8C5CDFB2B80312C9 │ │ │ │ │ -BC9FAE56D08DDFA9498E6EF0D0F6BD18B3923E0B670B0740528BC843610736CB │ │ │ │ │ -80228C105C2F72C3C22D610C3D8C268DEEA2AEEE3221E198E79FE2966487360C │ │ │ │ │ -84AE08AC326F48B21447652121B1EB68AF857B8628F27BB4ED00F273E0DD044A │ │ │ │ │ -7D11A5BFAAC0A82328444CC9DD90167681B07D55CE28655F40C21250A226DEAB │ │ │ │ │ -2D46FFB680CB9242BE192AC0E55A44D45709FA6DE638C130D92C4E9B07BC3D61 │ │ │ │ │ -25CC2F0A7ED4F3574242FFE4461272EB1401266EEF551E0E2B0EF51FA8F250EC │ │ │ │ │ -FD9AFB6F5A0CC442B566BC24400133E3E9B9A9FC801CEF284FD2B3ECA43421FA │ │ │ │ │ -51E5D1EFE7BEAA96658362C438A0A5A6DCBC664A85EF88037B42355195B9D19C │ │ │ │ │ -7961D5F63B123451B298CD52C144FCD4F3641A823FBA14605E2DFD845E89102C │ │ │ │ │ -4E345CFD80E3EE6F097095A84C941FFC91B234F3615E4EE4C5D564284656E364 │ │ │ │ │ -AB9C4D1DE05F8FD065CA6064893F0CF3A3A501D59EF6568D05D818A010D06518 │ │ │ │ │ -E2C20418ADD1E652867F265084A27A5FE0C32213C59FFC3A84EDC89382521E5B │ │ │ │ │ -8AF66D76601F83C5C33CC9CF968C77B66F1FA074AC3DAD8E453C9264D03969EF │ │ │ │ │ -9E387BB3BEAA4BF0A9D88BA2CE6094E8996A3752A657E322A57AF006444BF516 │ │ │ │ │ -501C43CAA1BA7F16A3B6E4D3EBDECCCC19564DF18FB68194C132238A5441A21A │ │ │ │ │ -F52285CA1CA94A4BEC61EB509FA35EA5E393D662D938F4291F37EB7C2D5815BE │ │ │ │ │ -446813E1CFD06FFFFF2C4355C9DAFA48E765F4CC5DE4B9E37CFFB75E7A0B6F4B │ │ │ │ │ -4E412496F9C27DF4BDD90A869F0EBD81A57AE0B84051450A5A3E06CB9930DB2C │ │ │ │ │ -7C2DDB774BE870AEFCC9F4F067BE243FF3FD4B5C71B96C607DC4975973AF2650 │ │ │ │ │ -E7DF2BE3523A370EEDD07B5456B96E372ED10510CE677C044E609F21E93652FD │ │ │ │ │ -33CE612F587530D12214A3719CDB170C315B5D8763D5D4C67B5CAE90309E77AC │ │ │ │ │ -B45EB356C13A7BDE0D7320A9849CA357E30D7CF1085FFD70071932C3180AFC28 │ │ │ │ │ -B093016BA3F49A3878C34BB4A8727A441EB6CFC1A73F2313A7BF8D32EDF27E62 │ │ │ │ │ -EBEBC058FBA80B136FD2DE05C673B66482224ECEC63EDFB519AC13B5CC6624A6 │ │ │ │ │ -B3FD79037DA3851E93A386115852DBA88B176F21EDDB5386DC7C993C4210B28F │ │ │ │ │ -438131A586E34A09724E7CE60139F8247BFF14D2674805B3BD454C134728A43E │ │ │ │ │ -139E0AF71A7AC5CE42041EC83FD454B00AD29959FCF007789FFAF2D3492DCA4B │ │ │ │ │ -566EAFE97591ABC51CD0CD9BCD64E285FB823E41AA817E96B2B224005DAA4E15 │ │ │ │ │ -2141DB436B9D3FBA4EE4C876FD19A2E5133106FE2B9F704CB9614FCDC91B7950 │ │ │ │ │ -57053F45A5ED993B48189AAFAD5289F97AE2B0AEB5606579F6BD75F743EDB5B6 │ │ │ │ │ -5AA8F8A64CE507A47325081B3A013DB1BD596CDD3A83D2F29B070D6F9C57496E │ │ │ │ │ -14DF3F0F731C3BB00F2CE3D4BBACF1320322195D1DEA7A545BB4725BD1C6EC3D │ │ │ │ │ -63250C72B897741F8599D9D9BD2FB50EC80EFF2ECD6CE6603E95AABB45462ACF │ │ │ │ │ -12B005EE5979B6B05BCE9B97061686102349142A3CCC26D57F2A3283DD8B6E2A │ │ │ │ │ -98885E48C0D4A1A5C9612EDCB3B3D265E9B8CCCCA5D99F07F96C15B27D6A161F │ │ │ │ │ -936599E503C2859927201CACC31581AB7AB84F9EC9FFADC239F01DCC55940AB7 │ │ │ │ │ -FA884AA1EB6494C8E53DAD66E75A317428ACF9D943A74683BF547958F67D9E36 │ │ │ │ │ -F985EED50DEBCF255756A821927CB73848DCF167E96E975E959DE27FE7BA4FBA │ │ │ │ │ -D0EFC003F019D87572D6F9C73FC5B880C3EEDB7EF98E5EC3D25D6FE0015A6590 │ │ │ │ │ -E3C6EE632D7F6558B914609A8829CD1DEAB83A3F1207D5C3AAC9EAEA9DE1B4F8 │ │ │ │ │ -2375C5D4F630BCE13475F941ED2324D2CD4DCF2285298EAA4FFF89433D853860 │ │ │ │ │ -A974A9FC0808580FBDE7D02EDBB3D8C65BD3109AE8B359E96BFB7E21C696F440 │ │ │ │ │ -312B0CCAD810BF070DF8FC281E8198EB20A7FF9C9BCD291D74BC75EE46799485 │ │ │ │ │ -1AB2AE36B7E525034D146A856AF3BD9057A0033C08B606B89DD130548950C93D │ │ │ │ │ -94A8C92C47A34A791B1C108D2F36E899B79358B8081CCFC3D1A2F0521E4E2AE4 │ │ │ │ │ -7F500D6F2A53E5393E44201287225912590ABC738E8726622B67C3425639CCFB │ │ │ │ │ -F450B78A4918 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004B9BA1CC │ │ │ │ │ +580D3C6BDA4DC1B80B4365F1C80512453FC5316EC2D928FB731C3D6403E3C18B │ │ │ │ │ +E8424D644DF5E9A2134229C5C91CA68DB8E85BA2BB40F538F585DA6FA4037718 │ │ │ │ │ +B8053EBBA1E765346BCD5BDAA6C38115D31611D8A87A2238C145F2DA2F92E4DF │ │ │ │ │ +3987BD9C4D2A3D460E8941A68B125BCD9EE4F9FD262C4C8A71F47A2C81975635 │ │ │ │ │ +F1B981C274C53FA2ACCDE4C9D0A7C62D6C1EFF91CFC6712CA6A9F333C9564FCB │ │ │ │ │ +2A70F0AD715A79B10A08AB069E2A3C93BC0AED19D0CA10134B8DDDE8AF548DB2 │ │ │ │ │ +3A4AAA9C29682CF135BB767DAA16169A127EB50A7EECEB6480CF56A7D0F8AC56 │ │ │ │ │ +4A5090B3D75A790372886AF568D94C8165975A05BFBFDF1FFBA45F70700BB9E0 │ │ │ │ │ +57F3249EF9E9C8AD9CBCF6E4FD592DC4CDD2D7864F7C8A3FA6FC44C25C0CE7E1 │ │ │ │ │ +299F8A90B32B75DEA28917531621E1E7E0ECEE9E01665DEE99FBCF3EC3F30686 │ │ │ │ │ +513D7CBA745E660502603865D5A3E82D24B3F94B2884B21DC53AED87F49380E0 │ │ │ │ │ +68EE79C580931308DA762670C1F86F07FFB479773CD9C5DE6F22980DEC973D1C │ │ │ │ │ +A1E162D73932561BAAB24DE51DC8708291B666B36BABCA1FEDB6DD9C22572914 │ │ │ │ │ +7194DA044319F362452D53DD4D9A59134838E540F1E23805CEF53FF4F7519385 │ │ │ │ │ +1FAE3061F94369FEB1232BDA2E2A281E6972FB4524EFA37A598E7CDC097683EA │ │ │ │ │ +1B609952AEC0799B4711AAAB22D6B1D5CC729DE70897FDDC48AF0A12E40FFE30 │ │ │ │ │ +6528C601E68E8CFA4BBF897CF89DB712DE108DD1F084EFD917BFD9A70A74EB8F │ │ │ │ │ +D0D5B43CCC30373A5E871F18A969D01C69C2B4377622A0C8C4D7C4C28DDE5586 │ │ │ │ │ +BD17D5D640A6F396BD41993BD1932EE10953847F82F7BB36480B67A4F69F0763 │ │ │ │ │ +69423D1803B7BB60594ABEEE9578076639B84D8323F56104438803D45402FEE3 │ │ │ │ │ +045DAB16C4459DA9BBE01D0385CC771FB8DABDD8A9D280C18553F92FE6591CFD │ │ │ │ │ +26B82F28E6673BD823598D3F6CE03BEE04D9A21ED908DFC4F640227C148F133D │ │ │ │ │ +D32113275297C16EBCC9028AFD9102DE50E9CF67E7CF8C42BB8E73D1DAF8A5E2 │ │ │ │ │ +EF5979426229664A990DEF980A7038D2F229789D4F6EDBE1FB81BEC1A1BB14D7 │ │ │ │ │ +882515C62660E8877BE942712D57B86A2E19995AF087DECB7FD5208583C020AE │ │ │ │ │ +FEC86A2826530AD855006225300E4655F443C9360A8BAC96B5B096DDC9B12EDF │ │ │ │ │ +C862215AD6C432CF345FE701757E4EBB8C65F46912CB0F4DEF53672F7298D8F7 │ │ │ │ │ +EE51A9C5DE689A8D36956B7F0410893C0998DB03B73B4024CB046F8F6B32E07F │ │ │ │ │ +CD28A68AFB7152E45F1021DCD520D8A429FCDCA4B8054BAF0B48C4443280F198 │ │ │ │ │ +3360B078E6DEC37772DA8B629CFFD1534E8AA10E26B0BC58E92B9BF280C8EE45 │ │ │ │ │ +618EECDE904249F5A2010DC55D1028DFF4F058260B2B0A46541D6157970F44BD │ │ │ │ │ +D7483802D56A81184119DDBC914E8E394CBEEB506B61BB1CE2A3465252E5D8A3 │ │ │ │ │ +6BDD2D067E69D4ECEFC7D5568378F5F8B38EAFF138014185FE19DF7358A7A780 │ │ │ │ │ +3BE0E2CCD1561113F2F2319BDB503230DD0866121604710CEBBAA659ABFC010B │ │ │ │ │ +5CC40E5807F461D87E75BDC6AD96BCEF62AF668D48D7A76D08B57650F35CF609 │ │ │ │ │ +C0F791AEBEB75E29FA69596BAB419804AECE0F0238AAE64A6C13A22EBF4E3EAC │ │ │ │ │ +3570DECE85F54064486B2364D63E94FEB7C16350CDA318510A45C8848DB470ED │ │ │ │ │ +BFAFD2365681D65CFF3E6C1B4B7C8AE3066F96E819D05B97F3A6C2BFF8A72978 │ │ │ │ │ +EEB7F632FF604AD003A3CCA5A0465D53033A646E8082D3491EDECA3DA1A0E1BB │ │ │ │ │ +64BF36946520438D2EE72FA9EB1CEEDF56510AADA55A8DE280E23C904E0810FA │ │ │ │ │ +A3177CF684F06A4042DE4CD4AB21E2F0616153BEEE58EBBD89911FA43BC52969 │ │ │ │ │ +230C8137DB34C13E147B06C7A3875A931E1AC127E7D3EA0DF8346B6971F80901 │ │ │ │ │ +DC37F2DE1A0B81FD93CA3B5EB9B29ECABA1492901B1BA261DAB872FB3431C718 │ │ │ │ │ +9C9CDA7864908CD773864908DEB44E343221C2C4C335341789A46325D94C767C │ │ │ │ │ +740E3B60CE6D452A3A665967F568671FD7DD460B404B9C3D2EDCD47A336AA2C7 │ │ │ │ │ +BB0B1AC3823978F610629EF7AB526098A7EE7076F50A146D8134BA2DEC1B8ACF │ │ │ │ │ +68A7E4A9B7BE17FB71480516F2D6A8866E56CFD7C7A41311F48DDDD9887DACB8 │ │ │ │ │ +73FDAF5F25E956AFB0A9D530DE2E1128F006AAC9A78715BA2F90C8FED3729BFA │ │ │ │ │ +BDDD4098F870A27A91A0CB540D166FF86A442E95C9C361FD23378A2A138EAFB8 │ │ │ │ │ +D7050B486E1CB95068D890BCCD669456F3385C8F1793CE545099421368FE0F46 │ │ │ │ │ +53137AD2B65030B19CE7FF6B1669DB7A3C440AEF27149780E36C7097B7A8B71B │ │ │ │ │ +8789EECFA9A70B1F9695BB5D94E9A7D341291C1CA1BDEF4BE3EFCB8234CE9FFD │ │ │ │ │ +E1C4963CF919780129FA60162FEAA8AE97328F4BA14D949057A3EE74214F2D29 │ │ │ │ │ +51E7BE584446F6702F39957AE455CF8AF0C36AADAA39B53553D923CA5E9D4988 │ │ │ │ │ +76701B4F77DAE5185AC29900 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -2981,16 +2984,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 23[45 19[83 18[25 5[45 1[45 45 │ │ │ │ │ -45 3[25 44[{}9 90.9091 /CMSL10 rf │ │ │ │ │ +/CMTI10 rf /Fd 138[51 6[51 8[40 26[47 15[25 4[45 1[45 │ │ │ │ │ +45 1[45 3[25 44[{}10 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 │ │ │ │ │ @@ -3098,17 +3101,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 1226 4 v │ │ │ │ │ -1407 w Fg(Lock)30 b Fd(:)40 b Fc(DRAFT)31 b Fd(Ma)m(y)g(1,)g(2024)p │ │ │ │ │ -2675 100 V 0 399 a Ff(1.2)135 b(Protot)l(yp)t(es)46 b(and)f │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fh(2)p 136 100 1219 4 v │ │ │ │ │ +1401 w Fg(Lock)29 b Fd(:)40 b Fc(DRAFT)31 b Fd(June)e(3,)i(2025)p │ │ │ │ │ +2682 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 │ │ │ │ │ @@ -3166,22 +3169,22 @@ │ │ │ │ │ b(metho)s(ds)111 5109 y Fh(1.)46 b Fg(void)h(Lock_lock)e(\()j(Lock)e │ │ │ │ │ (*lock)h(\))g(;)227 5258 y Fh(This)30 b(metho)s(d)g(lo)s(c)m(ks)h(the)f │ │ │ │ │ (lo)s(c)m(k.)227 5407 y Fc(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ │ b Fh(If)30 b Fg(lock)g Fh(is)g Fg(NULL)p Fh(,)f(an)i(error)f(message)h │ │ │ │ │ (is)g(prin)m(ted)f(and)f(the)i(program)f(exits.)p eop │ │ │ │ │ end │ │ │ │ │ %%Page: 3 3 │ │ │ │ │ -TeXDict begin 3 2 bop 91 100 1226 4 v 1407 100 a Fg(Lock)29 │ │ │ │ │ -b Fd(:)41 b Fc(DRAFT)121 b Fd(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2628 100 V 1226 w Fh(3)111 399 y(2.)46 b Fg(void)h(Lock_unlock)e(\()i │ │ │ │ │ -(Lock)g(*lock)f(\))i(;)227 549 y Fh(This)30 b(metho)s(d)g(unlo)s(c)m │ │ │ │ │ -(ks)g(the)g(lo)s(c)m(k.)227 699 y Fc(Err)-5 b(or)34 b(che)-5 │ │ │ │ │ -b(cking:)40 b Fh(If)30 b Fg(lock)g Fh(is)g Fg(NULL)p │ │ │ │ │ -Fh(,)f(an)i(error)f(message)h(is)g(prin)m(ted)f(and)f(the)i(program)f │ │ │ │ │ -(exits.)p eop end │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1219 4 v 1400 100 a Fg(Lock)29 │ │ │ │ │ +b Fd(:)41 b Fc(DRAFT)121 b Fd(June)29 b(3,)i(2025)p 2634 │ │ │ │ │ +100 V 1219 w Fh(3)111 399 y(2.)46 b Fg(void)h(Lock_unlock)e(\()i(Lock)g │ │ │ │ │ +(*lock)f(\))i(;)227 549 y Fh(This)30 b(metho)s(d)g(unlo)s(c)m(ks)g(the) │ │ │ │ │ +g(lo)s(c)m(k.)227 699 y Fc(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ │ +b Fh(If)30 b Fg(lock)g Fh(is)g Fg(NULL)p Fh(,)f(an)i(error)f(message)h │ │ │ │ │ +(is)g(prin)m(ted)f(and)f(the)i(program)f(exits.)p eop │ │ │ │ │ +end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ TeXDict begin 4 3 bop 0 866 a Fi(Index)0 1289 y Fg(Lock)p │ │ │ │ │ 198 1289 29 4 v 33 w(clearData\(\))p Fh(,)28 b(2)0 1402 │ │ │ │ │ y Fg(Lock)p 198 1402 V 33 w(free\(\))p Fh(,)h(2)0 1515 │ │ │ │ │ y Fg(Lock)p 198 1515 V 33 w(init\(\))p Fh(,)g(2)0 1628 │ │ │ │ │ y Fg(Lock)p 198 1628 V 33 w(lock\(\))p Fh(,)g(2)0 1741 │ │ │ │ │ y Fg(Lock)p 198 1741 V 33 w(new\(\))p Fh(,)g(2)0 1854 │ │ │ │ │ ├── ps2ascii {} │ │ │ │ │ │ @@ -19,15 +19,15 @@ │ │ │ │ │ │ • int nlocks : number of locks made. │ │ │ │ │ │ • int nunlocks : number of unlocks made. │ │ │ │ │ │ • the mutual exclusion lock │ │ │ │ │ │ For Solaris threads we have mutex t *mutex. │ │ │ │ │ │ For POSIX threads we have pthread mutex t *mutex. │ │ │ │ │ │ For no threads we have void *mutex. │ │ │ │ │ │ 1 │ │ │ │ │ │ - 2 Lock : DRAFT May 1, 2024 │ │ │ │ │ │ + 2 Lock : DRAFT June 3, 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 May 1, 2024 3 │ │ │ │ │ │ + Lock : DRAFT June 3, 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.05.01:0545 │ │ │ │ │ +%DVIPSSource: TeX output 2025.06.03:1221 │ │ │ │ │ %%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,21 +1204,22 @@ │ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ │ /UnderlineThickness 50 def │ │ │ │ │ end readonly def │ │ │ │ │ /Encoding 256 array │ │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ │ dup 44 /comma put │ │ │ │ │ dup 48 /zero put │ │ │ │ │ -dup 49 /one put │ │ │ │ │ dup 50 /two put │ │ │ │ │ -dup 52 /four put │ │ │ │ │ +dup 51 /three put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 77 /M put │ │ │ │ │ -dup 97 /a put │ │ │ │ │ -dup 121 /y put │ │ │ │ │ +dup 74 /J put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ +dup 110 /n put │ │ │ │ │ +dup 117 /u put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ │ @@ -1399,68 +1400,70 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004ACD1870 │ │ │ │ │ -A5EA947858F5795870BFE1343AD803FB854BF8F5A4E794E8EC57BE41DB5B8734 │ │ │ │ │ -13E47950F29A81EA0C81EA798863883D7F41F78325CA190CBBFFE822AE494550 │ │ │ │ │ -4BE83703071FC9512D128927AF3F63CEF8F86ABE1E15D7B4DDD39576E7DFF45E │ │ │ │ │ -3CB4115AAB1830DE8647B915DB4BEBEB5235C281E098B899BAB951D8D5798F01 │ │ │ │ │ -7F7C47336D31438E5126738AFEAB29E9A7CBE06DE4DD604477B542D2620DFD58 │ │ │ │ │ -28FE34238572F23C5A8EB7ACEE1E154DA13FC1A5AA67A3BA8C5CDFB2B80312C9 │ │ │ │ │ -BC9FAE56D08DDFA9498E6EF0D0F6BD18B3923E0B670B0740528BC843610736CB │ │ │ │ │ -80228C105C2F72C3C22D610C3D8C268DEEA2AEEE3221E198E79FE2966487360C │ │ │ │ │ -84AE08AC326F48B21447652121B1EB68AF857B8628F27BB4ED00F273E0DD044A │ │ │ │ │ -7D11A5BFAAC0A82328444CC9DD90167681B07D55CE28655F40C21250A226DEAB │ │ │ │ │ -2D46FFB680CB9242BE192AC0E55A44D45709FA6DE638C130D92C4E9B07BC3D61 │ │ │ │ │ -25CC2F0A7ED4F3574242FFE4461272EB1401266EEF551E0E2B0EF51FA8F250EC │ │ │ │ │ -FD9AFB6F5A0CC442B566BC24400133E3E9B9A9FC801CEF284FD2B3ECA43421FA │ │ │ │ │ -51E5D1EFE7BEAA96658362C438A0A5A6DCBC664A85EF88037B42355195B9D19C │ │ │ │ │ -7961D5F63B123451B298CD52C144FCD4F3641A823FBA14605E2DFD845E89102C │ │ │ │ │ -4E345CFD80E3EE6F097095A84C941FFC91B234F3615E4EE4C5D564284656E364 │ │ │ │ │ -AB9C4D1DE05F8FD065CA6064893F0CF3A3A501D59EF6568D05D818A010D06518 │ │ │ │ │ -E2C20418ADD1E652867F265084A27A5FE0C32213C59FFC3A84EDC89382521E5B │ │ │ │ │ -8AF66D76601F83C5C33CC9CF968C77B66F1FA074AC3DAD8E453C9264D03969EF │ │ │ │ │ -9E387BB3BEAA4BF0A9D88BA2CE6094E8996A3752A657E322A57AF006444BF516 │ │ │ │ │ -501C43CAA1BA7F16A3B6E4D3EBDECCCC19564DF18FB68194C132238A5441A21A │ │ │ │ │ -F52285CA1CA94A4BEC61EB509FA35EA5E393D662D938F4291F37EB7C2D5815BE │ │ │ │ │ -446813E1CFD06FFFFF2C4355C9DAFA48E765F4CC5DE4B9E37CFFB75E7A0B6F4B │ │ │ │ │ -4E412496F9C27DF4BDD90A869F0EBD81A57AE0B84051450A5A3E06CB9930DB2C │ │ │ │ │ -7C2DDB774BE870AEFCC9F4F067BE243FF3FD4B5C71B96C607DC4975973AF2650 │ │ │ │ │ -E7DF2BE3523A370EEDD07B5456B96E372ED10510CE677C044E609F21E93652FD │ │ │ │ │ -33CE612F587530D12214A3719CDB170C315B5D8763D5D4C67B5CAE90309E77AC │ │ │ │ │ -B45EB356C13A7BDE0D7320A9849CA357E30D7CF1085FFD70071932C3180AFC28 │ │ │ │ │ -B093016BA3F49A3878C34BB4A8727A441EB6CFC1A73F2313A7BF8D32EDF27E62 │ │ │ │ │ -EBEBC058FBA80B136FD2DE05C673B66482224ECEC63EDFB519AC13B5CC6624A6 │ │ │ │ │ -B3FD79037DA3851E93A386115852DBA88B176F21EDDB5386DC7C993C4210B28F │ │ │ │ │ -438131A586E34A09724E7CE60139F8247BFF14D2674805B3BD454C134728A43E │ │ │ │ │ -139E0AF71A7AC5CE42041EC83FD454B00AD29959FCF007789FFAF2D3492DCA4B │ │ │ │ │ -566EAFE97591ABC51CD0CD9BCD64E285FB823E41AA817E96B2B224005DAA4E15 │ │ │ │ │ -2141DB436B9D3FBA4EE4C876FD19A2E5133106FE2B9F704CB9614FCDC91B7950 │ │ │ │ │ -57053F45A5ED993B48189AAFAD5289F97AE2B0AEB5606579F6BD75F743EDB5B6 │ │ │ │ │ -5AA8F8A64CE507A47325081B3A013DB1BD596CDD3A83D2F29B070D6F9C57496E │ │ │ │ │ -14DF3F0F731C3BB00F2CE3D4BBACF1320322195D1DEA7A545BB4725BD1C6EC3D │ │ │ │ │ -63250C72B897741F8599D9D9BD2FB50EC80EFF2ECD6CE6603E95AABB45462ACF │ │ │ │ │ -12B005EE5979B6B05BCE9B97061686102349142A3CCC26D57F2A3283DD8B6E2A │ │ │ │ │ -98885E48C0D4A1A5C9612EDCB3B3D265E9B8CCCCA5D99F07F96C15B27D6A161F │ │ │ │ │ -936599E503C2859927201CACC31581AB7AB84F9EC9FFADC239F01DCC55940AB7 │ │ │ │ │ -FA884AA1EB6494C8E53DAD66E75A317428ACF9D943A74683BF547958F67D9E36 │ │ │ │ │ -F985EED50DEBCF255756A821927CB73848DCF167E96E975E959DE27FE7BA4FBA │ │ │ │ │ -D0EFC003F019D87572D6F9C73FC5B880C3EEDB7EF98E5EC3D25D6FE0015A6590 │ │ │ │ │ -E3C6EE632D7F6558B914609A8829CD1DEAB83A3F1207D5C3AAC9EAEA9DE1B4F8 │ │ │ │ │ -2375C5D4F630BCE13475F941ED2324D2CD4DCF2285298EAA4FFF89433D853860 │ │ │ │ │ -A974A9FC0808580FBDE7D02EDBB3D8C65BD3109AE8B359E96BFB7E21C696F440 │ │ │ │ │ -312B0CCAD810BF070DF8FC281E8198EB20A7FF9C9BCD291D74BC75EE46799485 │ │ │ │ │ -1AB2AE36B7E525034D146A856AF3BD9057A0033C08B606B89DD130548950C93D │ │ │ │ │ -94A8C92C47A34A791B1C108D2F36E899B79358B8081CCFC3D1A2F0521E4E2AE4 │ │ │ │ │ -7F500D6F2A53E5393E44201287225912590ABC738E8726622B67C3425639CCFB │ │ │ │ │ -F450B78A4918 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004B9BA1CC │ │ │ │ │ +580D3C6BDA4DC1B80B4365F1C80512453FC5316EC2D928FB731C3D6403E3C18B │ │ │ │ │ +E8424D644DF5E9A2134229C5C91CA68DB8E85BA2BB40F538F585DA6FA4037718 │ │ │ │ │ +B8053EBBA1E765346BCD5BDAA6C38115D31611D8A87A2238C145F2DA2F92E4DF │ │ │ │ │ +3987BD9C4D2A3D460E8941A68B125BCD9EE4F9FD262C4C8A71F47A2C81975635 │ │ │ │ │ +F1B981C274C53FA2ACCDE4C9D0A7C62D6C1EFF91CFC6712CA6A9F333C9564FCB │ │ │ │ │ +2A70F0AD715A79B10A08AB069E2A3C93BC0AED19D0CA10134B8DDDE8AF548DB2 │ │ │ │ │ +3A4AAA9C29682CF135BB767DAA16169A127EB50A7EECEB6480CF56A7D0F8AC56 │ │ │ │ │ +4A5090B3D75A790372886AF568D94C8165975A05BFBFDF1FFBA45F70700BB9E0 │ │ │ │ │ +57F3249EF9E9C8AD9CBCF6E4FD592DC4CDD2D7864F7C8A3FA6FC44C25C0CE7E1 │ │ │ │ │ +299F8A90B32B75DEA28917531621E1E7E0ECEE9E01665DEE99FBCF3EC3F30686 │ │ │ │ │ +513D7CBA745E660502603865D5A3E82D24B3F94B2884B21DC53AED87F49380E0 │ │ │ │ │ +68EE79C580931308DA762670C1F86F07FFB479773CD9C5DE6F22980DEC973D1C │ │ │ │ │ +A1E162D73932561BAAB24DE51DC8708291B666B36BABCA1FEDB6DD9C22572914 │ │ │ │ │ +7194DA044319F362452D53DD4D9A59134838E540F1E23805CEF53FF4F7519385 │ │ │ │ │ +1FAE3061F94369FEB1232BDA2E2A281E6972FB4524EFA37A598E7CDC097683EA │ │ │ │ │ +1B609952AEC0799B4711AAAB22D6B1D5CC729DE70897FDDC48AF0A12E40FFE30 │ │ │ │ │ +6528C601E68E8CFA4BBF897CF89DB712DE108DD1F084EFD917BFD9A70A74EB8F │ │ │ │ │ +D0D5B43CCC30373A5E871F18A969D01C69C2B4377622A0C8C4D7C4C28DDE5586 │ │ │ │ │ +BD17D5D640A6F396BD41993BD1932EE10953847F82F7BB36480B67A4F69F0763 │ │ │ │ │ +69423D1803B7BB60594ABEEE9578076639B84D8323F56104438803D45402FEE3 │ │ │ │ │ +045DAB16C4459DA9BBE01D0385CC771FB8DABDD8A9D280C18553F92FE6591CFD │ │ │ │ │ +26B82F28E6673BD823598D3F6CE03BEE04D9A21ED908DFC4F640227C148F133D │ │ │ │ │ +D32113275297C16EBCC9028AFD9102DE50E9CF67E7CF8C42BB8E73D1DAF8A5E2 │ │ │ │ │ +EF5979426229664A990DEF980A7038D2F229789D4F6EDBE1FB81BEC1A1BB14D7 │ │ │ │ │ +882515C62660E8877BE942712D57B86A2E19995AF087DECB7FD5208583C020AE │ │ │ │ │ +FEC86A2826530AD855006225300E4655F443C9360A8BAC96B5B096DDC9B12EDF │ │ │ │ │ +C862215AD6C432CF345FE701757E4EBB8C65F46912CB0F4DEF53672F7298D8F7 │ │ │ │ │ +EE51A9C5DE689A8D36956B7F0410893C0998DB03B73B4024CB046F8F6B32E07F │ │ │ │ │ +CD28A68AFB7152E45F1021DCD520D8A429FCDCA4B8054BAF0B48C4443280F198 │ │ │ │ │ +3360B078E6DEC37772DA8B629CFFD1534E8AA10E26B0BC58E92B9BF280C8EE45 │ │ │ │ │ +618EECDE904249F5A2010DC55D1028DFF4F058260B2B0A46541D6157970F44BD │ │ │ │ │ +D7483802D56A81184119DDBC914E8E394CBEEB506B61BB1CE2A3465252E5D8A3 │ │ │ │ │ +6BDD2D067E69D4ECEFC7D5568378F5F8B38EAFF138014185FE19DF7358A7A780 │ │ │ │ │ +3BE0E2CCD1561113F2F2319BDB503230DD0866121604710CEBBAA659ABFC010B │ │ │ │ │ +5CC40E5807F461D87E75BDC6AD96BCEF62AF668D48D7A76D08B57650F35CF609 │ │ │ │ │ +C0F791AEBEB75E29FA69596BAB419804AECE0F0238AAE64A6C13A22EBF4E3EAC │ │ │ │ │ +3570DECE85F54064486B2364D63E94FEB7C16350CDA318510A45C8848DB470ED │ │ │ │ │ +BFAFD2365681D65CFF3E6C1B4B7C8AE3066F96E819D05B97F3A6C2BFF8A72978 │ │ │ │ │ +EEB7F632FF604AD003A3CCA5A0465D53033A646E8082D3491EDECA3DA1A0E1BB │ │ │ │ │ +64BF36946520438D2EE72FA9EB1CEEDF56510AADA55A8DE280E23C904E0810FA │ │ │ │ │ +A3177CF684F06A4042DE4CD4AB21E2F0616153BEEE58EBBD89911FA43BC52969 │ │ │ │ │ +230C8137DB34C13E147B06C7A3875A931E1AC127E7D3EA0DF8346B6971F80901 │ │ │ │ │ +DC37F2DE1A0B81FD93CA3B5EB9B29ECABA1492901B1BA261DAB872FB3431C718 │ │ │ │ │ +9C9CDA7864908CD773864908DEB44E343221C2C4C335341789A46325D94C767C │ │ │ │ │ +740E3B60CE6D452A3A665967F568671FD7DD460B404B9C3D2EDCD47A336AA2C7 │ │ │ │ │ +BB0B1AC3823978F610629EF7AB526098A7EE7076F50A146D8134BA2DEC1B8ACF │ │ │ │ │ +68A7E4A9B7BE17FB71480516F2D6A8866E56CFD7C7A41311F48DDDD9887DACB8 │ │ │ │ │ +73FDAF5F25E956AFB0A9D530DE2E1128F006AAC9A78715BA2F90C8FED3729BFA │ │ │ │ │ +BDDD4098F870A27A91A0CB540D166FF86A442E95C9C361FD23378A2A138EAFB8 │ │ │ │ │ +D7050B486E1CB95068D890BCCD669456F3385C8F1793CE545099421368FE0F46 │ │ │ │ │ +53137AD2B65030B19CE7FF6B1669DB7A3C440AEF27149780E36C7097B7A8B71B │ │ │ │ │ +8789EECFA9A70B1F9695BB5D94E9A7D341291C1CA1BDEF4BE3EFCB8234CE9FFD │ │ │ │ │ +E1C4963CF919780129FA60162FEAA8AE97328F4BA14D949057A3EE74214F2D29 │ │ │ │ │ +51E7BE584446F6702F39957AE455CF8AF0C36AADAA39B53553D923CA5E9D4988 │ │ │ │ │ +76701B4F77DAE5185AC29900 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -4876,16 +4879,16 @@ │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ cleartomark │ │ │ │ │ {restore}if │ │ │ │ │ %%EndFont │ │ │ │ │ TeXDict begin 39158280 55380996 1000 600 600 (main.dvi) │ │ │ │ │ @start /Fa 175[88 80[{}1 83.022 /CMEX10 rf /Fb 152[42 │ │ │ │ │ 42 69[83 28[42 65 2[{}5 83.022 /CMSY10 rf /Fc 175[62 │ │ │ │ │ -2[62 3[62 73[{}3 119.552 /CMTT12 rf /Fd 134[44 23[42 │ │ │ │ │ -19[76 18[23 5[42 1[42 42 42 3[23 44[{}9 83.022 /CMSL10 │ │ │ │ │ +2[62 3[62 73[{}3 119.552 /CMTT12 rf /Fd 138[46 6[46 8[37 │ │ │ │ │ +26[43 15[23 4[42 1[42 42 1[42 3[23 44[{}10 83.022 /CMSL10 │ │ │ │ │ rf /Fe 132[48 59[45 63[{}2 83.022 /CMBX10 rf │ │ │ │ │ %DVIPSBitmapFont: Ff tcrm1000 10 1 │ │ │ │ │ [/Grave/Acute/Circumflex/Tilde/Dieresis/Hungarumlaut/Ring/Caron/Breve/Macron │ │ │ │ │ /Dotaccent/cedilla/ogonek/quotesinglbase.ts1 4{/.notdef}repeat │ │ │ │ │ /quotedblbase.ts1/.notdef/.notdef/twelveudash/threequartersemdash │ │ │ │ │ /afii61664.cap/arrowleft/arrowright/tieaccentlowercase/tieaccentcapital │ │ │ │ │ /tieaccentlowercase.new/tieaccentcapital.new/.notdef/afii61664.asc/uni2422 3 │ │ │ │ │ @@ -5034,17 +5037,17 @@ │ │ │ │ │ y Ff(\210)42 b Fl(symflag)24 b Fn(|)k(symmetry)f(\015ag)g(for)g │ │ │ │ │ Fh(A)301 5278 y Fe({)41 b Fn(0)27 b(\()p Fl(SPOOLES)p │ │ │ │ │ 804 5278 V 29 w(SYMMETRIC)p Fn(\))d({)k(symmetric)f(matrix)301 │ │ │ │ │ 5407 y Fe({)41 b Fn(1)27 b(\()p Fl(SPOOLES)p 804 5407 │ │ │ │ │ V 29 w(HERMITIAN)p Fn(\))d({)k(hermitian)f(matrix)1929 │ │ │ │ │ 5656 y(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fn(2)p 125 100 1315 4 v │ │ │ │ │ -1480 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(Ma)n(y)g(1,)g(2024)p │ │ │ │ │ -2586 100 V 301 390 a Fe({)41 b Fn(2)27 b(\()p Fl(SPOOLES)p │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fn(2)p 125 100 1309 4 v │ │ │ │ │ +1474 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(June)h(3,)f(2025)p │ │ │ │ │ +2592 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 │ │ │ │ │ @@ -5124,17 +5127,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 1315 4 v 1481 100 a Fl(MPI)26 │ │ │ │ │ -b Fd(:)i Fm(DRAFT)110 b Fd(Ma)n(y)27 b(1,)g(2024)p 2546 │ │ │ │ │ -100 V 1315 w Fn(3)556 377 y Fl(stats[0])97 b Fn(|)i(#)28 │ │ │ │ │ +TeXDict begin 3 2 bop 83 100 1309 4 v 1474 100 a Fl(MPI)27 │ │ │ │ │ +b Fd(:)g Fm(DRAFT)111 b Fd(June)27 b(3,)g(2025)p 2552 │ │ │ │ │ +100 V 1309 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) │ │ │ │ │ @@ -5232,17 +5235,17 @@ │ │ │ │ │ Fn(v)n(ector)j(con)n(tains)f(the)i(follo)n(wing)f(information.)556 │ │ │ │ │ 5319 y Fl(stats[0])97 b Fn(|)i(#)28 b(of)g(messages)e(sen)n(t)344 │ │ │ │ │ b Fl(stats[1])96 b Fn(|)k(#)28 b(of)f(b)n(ytes)g(sen)n(t)556 │ │ │ │ │ 5419 y Fl(stats[2])97 b Fn(|)i(#)28 b(of)g(messages)e(receiv)n(ed)198 │ │ │ │ │ b Fl(stats[3])96 b Fn(|)k(#)28 b(of)f(b)n(ytes)g(receiv)n(ed)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fn(4)p 125 100 1315 4 v │ │ │ │ │ -1480 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(Ma)n(y)g(1,)g(2024)p │ │ │ │ │ -2586 100 V 208 390 a Fn(Note,)g(the)h(v)-5 b(alues)27 │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fn(4)p 125 100 1309 4 v │ │ │ │ │ +1474 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(June)h(3,)f(2025)p │ │ │ │ │ +2592 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 │ │ │ │ │ @@ -5330,17 +5333,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 1315 4 v 1481 100 a Fl(MPI)26 │ │ │ │ │ -b Fd(:)i Fm(DRAFT)110 b Fd(Ma)n(y)27 b(1,)g(2024)p 2546 │ │ │ │ │ -100 V 1315 w Fn(5)0 390 y Fj(1.2.2)112 b(Gather)38 b(and)h(scatter)e │ │ │ │ │ +TeXDict begin 5 4 bop 83 100 1309 4 v 1474 100 a Fl(MPI)27 │ │ │ │ │ +b Fd(:)g Fm(DRAFT)111 b Fd(June)27 b(3,)g(2025)p 2552 │ │ │ │ │ +100 V 1309 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 │ │ │ │ │ @@ -5422,17 +5425,17 @@ │ │ │ │ │ 5108 y(FILE)g(*msgFile,)e(int)i(firsttag,)e(MPI_Comm)g(comm)i(\))h(;) │ │ │ │ │ 208 5208 y(IVL)f(*)h(SymbFac_MPI_init)o(Fro)o(mP)o(enc)o(il)37 │ │ │ │ │ b(\()43 b(ETree)f(*etree,)e(IV)j(*frontOwnersIV,)1733 │ │ │ │ │ 5308 y(Pencil)e(*pencil,)f(int)j(stats[],)d(int)i(msglvl,)1733 │ │ │ │ │ 5407 y(FILE)g(*msgFile,)e(int)i(firsttag,)e(MPI_Comm)g(comm)i(\))h(;)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 6 6 │ │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fn(6)p 125 100 1315 4 v │ │ │ │ │ -1480 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(Ma)n(y)g(1,)g(2024)p │ │ │ │ │ -2586 100 V 208 390 a Fn(These)19 b(metho)r(ds)h(are)e(used)i(in)g │ │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fn(6)p 125 100 1309 4 v │ │ │ │ │ +1474 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(June)h(3,)f(2025)p │ │ │ │ │ +2592 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 │ │ │ │ │ @@ -5520,17 +5523,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 1315 4 v 1481 100 a Fl(MPI)26 │ │ │ │ │ -b Fd(:)i Fm(DRAFT)110 b Fd(Ma)n(y)27 b(1,)g(2024)p 2546 │ │ │ │ │ -100 V 1315 w Fn(7)208 390 y(On)g(return,)g(the)h Fl(stats[])d │ │ │ │ │ +TeXDict begin 7 6 bop 83 100 1309 4 v 1474 100 a Fl(MPI)27 │ │ │ │ │ +b Fd(:)g Fm(DRAFT)111 b Fd(June)27 b(3,)g(2025)p 2552 │ │ │ │ │ +100 V 1309 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 │ │ │ │ │ @@ -5612,17 +5615,17 @@ │ │ │ │ │ 5308 y Fn(After)19 b(a)g(factorization)f(with)i(piv)n(oting,)g(the)f │ │ │ │ │ Fl(frontsizesIV)c Fn(ob)5 b(ject)19 b(needs)g(to)g(b)r(e)h(made)f │ │ │ │ │ (global)f(on)h(eac)n(h)f(pro)r(cessor.)208 5407 y(This)26 │ │ │ │ │ b(metho)r(ds)h(tak)n(es)e(the)i(individual)f(en)n(tries)g(of)g(an)g │ │ │ │ │ Fl(IV)g Fn(ob)5 b(ject)26 b(whose)g(o)n(wners)f(are)g(sp)r(eci\014ed)h │ │ │ │ │ (b)n(y)h(the)f Fl(ownersIV)p eop end │ │ │ │ │ %%Page: 8 8 │ │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fn(8)p 125 100 1315 4 v │ │ │ │ │ -1480 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(Ma)n(y)g(1,)g(2024)p │ │ │ │ │ -2586 100 V 208 390 a Fn(ob)5 b(ject,)33 b(and)g(comm)n(unicates)f(the)h │ │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fn(8)p 125 100 1309 4 v │ │ │ │ │ +1474 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(June)h(3,)f(2025)p │ │ │ │ │ +2592 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 │ │ │ │ │ @@ -5698,17 +5701,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 1315 4 v 1481 100 a Fl(MPI)26 │ │ │ │ │ -b Fd(:)i Fm(DRAFT)110 b Fd(Ma)n(y)27 b(1,)g(2024)p 2546 │ │ │ │ │ -100 V 1315 w Fn(9)0 390 y Fj(1.2.7)112 b(Matrix-matrix)39 │ │ │ │ │ +TeXDict begin 9 8 bop 83 100 1309 4 v 1474 100 a Fl(MPI)27 │ │ │ │ │ +b Fd(:)g Fm(DRAFT)111 b Fd(June)27 b(3,)g(2025)p 2552 │ │ │ │ │ +100 V 1309 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 │ │ │ │ │ @@ -5783,17 +5786,17 @@ │ │ │ │ │ (in)g(the)h Fl(info)e Fn(ob)5 b(ject.)50 b(These)32 b(are)f(serial)208 │ │ │ │ │ 5270 y(metho)r(ds,)c(p)r(erformed)h(indep)r(enden)n(tly)g(on)f(eac)n(h) │ │ │ │ │ g(pro)r(cessor.)208 5407 y Fm(Err)l(or)j(che)l(cking:)38 │ │ │ │ │ b Fn(If)28 b Fl(info)e Fn(or)h Fl(A)g Fn(is)h Fl(NULL)p │ │ │ │ │ Fn(,)e(an)h(error)f(message)g(is)i(prin)n(ted)f(and)h(the)g(program)d │ │ │ │ │ (exits.)p eop end │ │ │ │ │ %%Page: 10 10 │ │ │ │ │ -TeXDict begin 10 9 bop 0 100 a Fn(10)p 166 100 1294 4 │ │ │ │ │ -v 1459 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(Ma)n(y)g(1,)g(2024)p │ │ │ │ │ -2606 100 V 101 390 a Fn(3.)42 b Fl(void)f(MatMul_MPI_mmm)d(\()43 │ │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fn(10)p 166 100 1288 4 │ │ │ │ │ +v 1452 w Fl(MPI)27 b Fd(:)h Fm(DRAFT)f Fd(June)g(3,)h(2025)p │ │ │ │ │ +2613 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 │ │ │ │ │ @@ -5873,17 +5876,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 1294 4 v 1460 100 a Fl(MPI)26 │ │ │ │ │ -b Fd(:)i Fm(DRAFT)110 b Fd(Ma)n(y)27 b(1,)g(2024)p 2525 │ │ │ │ │ -100 V 1294 w Fn(11)0 390 y Fj(1.2.9)112 b(Utilit)m(y)38 │ │ │ │ │ +TeXDict begin 11 10 bop 83 100 1288 4 v 1453 100 a Fl(MPI)27 │ │ │ │ │ +b Fd(:)h Fm(DRAFT)110 b Fd(June)27 b(3,)h(2025)p 2532 │ │ │ │ │ +100 V 1288 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 │ │ │ │ │ @@ -5967,17 +5970,17 @@ │ │ │ │ │ y Fn(con)n(tains)c(the)i(lists)g(of)f(v)n(ertices)g(this)h(pro)r │ │ │ │ │ (cessor)d(m)n(ust)j(send)f(to)h(all)f(others.)208 5308 │ │ │ │ │ y(This)g(metho)r(d)i(uses)e(tags)g(in)i(the)f(range)e │ │ │ │ │ Fl([tag,tag+nproc-1\))o Fn(.)32 b(On)c(return,)f(the)i(follo)n(wing)e │ │ │ │ │ (statistics)g(will)h(ha)n(v)n(e)208 5407 y(b)r(een)g(added.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 12 12 │ │ │ │ │ -TeXDict begin 12 11 bop 0 100 a Fn(12)p 166 100 1294 │ │ │ │ │ -4 v 1459 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(Ma)n(y)g(1,)g(2024)p │ │ │ │ │ -2606 100 V 556 377 a Fl(stats[0])97 b Fn(|)i(#)28 b(of)g(messages)e │ │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fn(12)p 166 100 1288 │ │ │ │ │ +4 v 1452 w Fl(MPI)27 b Fd(:)h Fm(DRAFT)f Fd(June)g(3,)h(2025)p │ │ │ │ │ +2613 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 │ │ │ │ │ @@ -6046,17 +6049,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 1294 4 v 1460 100 a Fl(MPI)26 │ │ │ │ │ -b Fd(:)i Fm(DRAFT)110 b Fd(Ma)n(y)27 b(1,)g(2024)p 2525 │ │ │ │ │ -100 V 1294 w Fn(13)208 390 y(where)j Fl(neqns)g Fn(is)h(the)h(global)e │ │ │ │ │ +TeXDict begin 13 12 bop 83 100 1288 4 v 1453 100 a Fl(MPI)27 │ │ │ │ │ +b Fd(:)h Fm(DRAFT)110 b Fd(June)27 b(3,)h(2025)p 2532 │ │ │ │ │ +100 V 1288 w Fn(13)208 390 y(where)i 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(is)h │ │ │ │ │ @@ -6131,17 +6134,17 @@ │ │ │ │ │ y Fl(nrow)i Fn(lines,)i(eac)n(h)f(con)n(taining)g(a)h(ro)n(w)f(index)h │ │ │ │ │ (and)g(either)g Fl(nrhs)e Fn(or)i Fl(2*nrhs)d Fn(\015oating)i(p)r(oin)n │ │ │ │ │ (t)i(n)n(um)n(b)r(ers,)e(the)i(\014rst)f(if)208 5407 │ │ │ │ │ y(real,)e(the)i(second)f(if)h(complex.)37 b(Use)27 b(the)h(script)g │ │ │ │ │ (\014le)f Fl(do)p 1997 5407 27 4 v 31 w(patchAndGo)d │ │ │ │ │ Fn(for)j(testing.)p eop end │ │ │ │ │ %%Page: 14 14 │ │ │ │ │ -TeXDict begin 14 13 bop 0 100 a Fn(14)p 166 100 1294 │ │ │ │ │ -4 v 1459 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(Ma)n(y)g(1,)g(2024)p │ │ │ │ │ -2606 100 V 307 390 a Ff(\210)42 b Fn(The)23 b Fl(msglvl)e │ │ │ │ │ +TeXDict begin 14 13 bop 0 100 a Fn(14)p 166 100 1288 │ │ │ │ │ +4 v 1452 w Fl(MPI)27 b Fd(:)h Fm(DRAFT)f Fd(June)g(3,)h(2025)p │ │ │ │ │ +2613 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 │ │ │ │ │ @@ -6223,17 +6226,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 1294 4 v 1460 100 a Fl(MPI)26 │ │ │ │ │ -b Fd(:)i Fm(DRAFT)110 b Fd(Ma)n(y)27 b(1,)g(2024)p 2525 │ │ │ │ │ -100 V 1294 w Fn(15)101 390 y(4.)42 b Fl(testGraph_Bcast)37 │ │ │ │ │ +TeXDict begin 15 14 bop 83 100 1288 4 v 1453 100 a Fl(MPI)27 │ │ │ │ │ +b Fd(:)h Fm(DRAFT)110 b Fd(June)27 b(3,)h(2025)p 2532 │ │ │ │ │ +100 V 1288 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 │ │ │ │ │ @@ -6325,17 +6328,17 @@ │ │ │ │ │ b Fn(The)29 b Fl(type)e Fn(parameter)g(sp)r(eci\014es)i(whether)g(the)g │ │ │ │ │ (linear)f(system)g(is)h(real)f(or)g(complex.)40 b(Use)28 │ │ │ │ │ b Fl(1)h Fn(for)f(real)g(and)g Fl(2)390 5270 y Fn(for)f(complex.)307 │ │ │ │ │ 5407 y Ff(\210)42 b Fn(The)28 b Fl(symmetryflag)23 b │ │ │ │ │ Fn(parameter)j(denotes)h(the)h(presence)f(or)f(absence)h(of)h(symmetry) │ │ │ │ │ -7 b(.)p eop end │ │ │ │ │ %%Page: 16 16 │ │ │ │ │ -TeXDict begin 16 15 bop 0 100 a Fn(16)p 166 100 1294 │ │ │ │ │ -4 v 1459 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(Ma)n(y)g(1,)g(2024)p │ │ │ │ │ -2606 100 V 456 390 a Fe({)41 b Fn(Use)f Fl(0)g Fn(for)f(a)g(real)g(or)g │ │ │ │ │ +TeXDict begin 16 15 bop 0 100 a Fn(16)p 166 100 1288 │ │ │ │ │ +4 v 1452 w Fl(MPI)27 b Fd(:)h Fm(DRAFT)f Fd(June)g(3,)h(2025)p │ │ │ │ │ +2613 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 │ │ │ │ │ @@ -6433,17 +6436,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 1294 4 v 1460 100 a Fl(MPI)26 │ │ │ │ │ -b Fd(:)i Fm(DRAFT)110 b Fd(Ma)n(y)27 b(1,)g(2024)p 2525 │ │ │ │ │ -100 V 1294 w Fn(17)307 390 y Ff(\210)42 b Fn(The)23 b │ │ │ │ │ +TeXDict begin 17 16 bop 83 100 1288 4 v 1453 100 a Fl(MPI)27 │ │ │ │ │ +b Fd(:)h Fm(DRAFT)110 b Fd(June)27 b(3,)h(2025)p 2532 │ │ │ │ │ +100 V 1288 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 │ │ │ │ │ @@ -6542,17 +6545,17 @@ │ │ │ │ │ y Ff(\210)42 b Fn(The)32 b Fl(msgFile)c Fn(parameter)i(determines)h │ │ │ │ │ (the)h(message)e(\014le)i(|)f(if)h Fl(msgFile)d Fn(is)i │ │ │ │ │ Fl(stdout)p Fn(,)f(then)i(the)g(message)390 5407 y(\014le)c(is)f │ │ │ │ │ Fm(stdout)p Fn(,)h(otherwise)e(a)i(\014le)f(is)h(op)r(ened)f(with)i │ │ │ │ │ Fm(app)l(end)g Fn(status)e(to)g(receiv)n(e)g(an)n(y)g(output)h(data.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 18 18 │ │ │ │ │ -TeXDict begin 18 17 bop 0 100 a Fn(18)p 166 100 1294 │ │ │ │ │ -4 v 1459 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(Ma)n(y)g(1,)g(2024)p │ │ │ │ │ -2606 100 V 307 390 a Ff(\210)42 b Fn(The)28 b Fl(nrowA)d │ │ │ │ │ +TeXDict begin 18 17 bop 0 100 a Fn(18)p 166 100 1288 │ │ │ │ │ +4 v 1452 w Fl(MPI)27 b Fd(:)h Fm(DRAFT)f Fd(June)g(3,)h(2025)p │ │ │ │ │ +2613 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 │ │ │ │ │ @@ -6642,17 +6645,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 1294 4 v 1460 100 a Fl(MPI)26 │ │ │ │ │ -b Fd(:)i Fm(DRAFT)110 b Fd(Ma)n(y)27 b(1,)g(2024)p 2525 │ │ │ │ │ -100 V 1294 w Fn(19)307 390 y Ff(\210)42 b Fn(The)28 b │ │ │ │ │ +TeXDict begin 19 18 bop 83 100 1288 4 v 1453 100 a Fl(MPI)27 │ │ │ │ │ +b Fd(:)h Fm(DRAFT)110 b Fd(June)27 b(3,)h(2025)p 2532 │ │ │ │ │ +100 V 1288 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 Fn(for)g(ro)n(ws,)f │ │ │ │ │ @@ -6744,17 +6747,17 @@ │ │ │ │ │ g Fl(IVL)208 5308 y Fn(ob)5 b(ject)39 b(that)h(con)n(tains)f(the)h │ │ │ │ │ (necessary)e(parts)h(of)g(a)h(sym)n(b)r(olic)f(factorization)f(for)h │ │ │ │ │ (eac)n(h)g(pro)r(cessor.)71 b(The)40 b(pro-)208 5407 │ │ │ │ │ y(gram)34 b(reads)g(in)i(the)g(global)f Fl(Graph)e Fn(and)j │ │ │ │ │ Fl(ETree)d Fn(ob)5 b(jects.)60 b(Eac)n(h)35 b(pro)r(cessor)e(creates)i │ │ │ │ │ (a)g(global)f Fl(InpMtx)f Fn(ob)5 b(ject)p eop end │ │ │ │ │ %%Page: 20 20 │ │ │ │ │ -TeXDict begin 20 19 bop 0 100 a Fn(20)p 166 100 1294 │ │ │ │ │ -4 v 1459 w Fl(MPI)26 b Fd(:)i Fm(DRAFT)f Fd(Ma)n(y)g(1,)g(2024)p │ │ │ │ │ -2606 100 V 208 390 a Fn(from)j(the)i(structure)e(of)h(the)h(graph)e │ │ │ │ │ +TeXDict begin 20 19 bop 0 100 a Fn(20)p 166 100 1288 │ │ │ │ │ +4 v 1452 w Fl(MPI)27 b Fd(:)h Fm(DRAFT)f Fd(June)g(3,)h(2025)p │ │ │ │ │ +2613 100 V 208 390 a Fn(from)i(the)i(structure)e(of)h(the)h(graph)e │ │ │ │ │ (and)h(computes)f(a)h(global)f(sym)n(b)r(olic)h(factorization)e(ob)5 │ │ │ │ │ b(ject)31 b(using)g(the)g(serial)208 490 y Fl(SymbFac)p │ │ │ │ │ 521 490 27 4 v 28 w(initFromInpMtx\(\))23 b Fn(metho)r(d.)43 │ │ │ │ │ b(The)30 b(pro)r(cessors)d(then)j(compute)f(a)h(map)f(from)g(fron)n(ts) │ │ │ │ │ g(to)g(pro)r(cessors,)208 589 y(and)g(eac)n(h)f(pro)r(cessor)f(thro)n │ │ │ │ │ (ws)h(a)n(w)n(a)n(y)f(the)i(uno)n(wned)g(matrix)g(en)n(tries)f(from)h │ │ │ │ │ (the)g Fl(InpMtx)e Fn(ob)5 b(ject.)41 b(The)29 b(pro)r(cessors)208 │ │ │ │ │ ├── ps2ascii {} │ │ │ │ │ │ @@ -31,15 +31,15 @@ │ │ │ │ │ │ scatter/added into Y. │ │ │ │ │ │ TheMatMulInfoobjectstoresallthenecessaryinformationtomakethishappen. ThereisoneMatMulInfo │ │ │ │ │ │ object per processor. It has the following fields. │ │ │ │ │ │ • symflag — symmetry flag for A │ │ │ │ │ │ – 0 (SPOOLES SYMMETRIC) – symmetric matrix │ │ │ │ │ │ – 1 (SPOOLES HERMITIAN) – hermitian matrix │ │ │ │ │ │ 1 │ │ │ │ │ │ - 2 MPI : DRAFT May 1, 2024 │ │ │ │ │ │ + 2 MPI : DRAFT June 3, 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 May 1, 2024 3 │ │ │ │ │ │ + MPI : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 4 MPI : DRAFT June 3, 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 May 1, 2024 5 │ │ │ │ │ │ + MPI : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 6 MPI : DRAFT June 3, 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 May 1, 2024 7 │ │ │ │ │ │ + MPI : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 8 MPI : DRAFT June 3, 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 May 1, 2024 9 │ │ │ │ │ │ + MPI : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 10 MPI : DRAFT June 3, 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 May 1, 2024 11 │ │ │ │ │ │ + MPI : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 12 MPI : DRAFT June 3, 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 May 1, 2024 13 │ │ │ │ │ │ + MPI : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 14 MPI : DRAFT June 3, 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 May 1, 2024 15 │ │ │ │ │ │ + MPI : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 16 MPI : DRAFT June 3, 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 May 1, 2024 17 │ │ │ │ │ │ + MPI : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 18 MPI : DRAFT June 3, 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 May 1, 2024 19 │ │ │ │ │ │ + MPI : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 20 MPI : DRAFT June 3, 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.05.01:0544 │ │ │ │ │ +%DVIPSSource: TeX output 2025.06.03:1221 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -1227,21 +1227,22 @@ │ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ │ /UnderlineThickness 50 def │ │ │ │ │ end readonly def │ │ │ │ │ /Encoding 256 array │ │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ │ dup 44 /comma put │ │ │ │ │ dup 48 /zero put │ │ │ │ │ -dup 49 /one put │ │ │ │ │ dup 50 /two put │ │ │ │ │ -dup 52 /four put │ │ │ │ │ +dup 51 /three put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 77 /M put │ │ │ │ │ -dup 97 /a put │ │ │ │ │ -dup 121 /y put │ │ │ │ │ +dup 74 /J put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ +dup 110 /n put │ │ │ │ │ +dup 117 /u put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ │ @@ -1422,68 +1423,70 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004ACD1870 │ │ │ │ │ -A5EA947858F5795870BFE1343AD803FB854BF8F5A4E794E8EC57BE41DB5B8734 │ │ │ │ │ -13E47950F29A81EA0C81EA798863883D7F41F78325CA190CBBFFE822AE494550 │ │ │ │ │ -4BE83703071FC9512D128927AF3F63CEF8F86ABE1E15D7B4DDD39576E7DFF45E │ │ │ │ │ -3CB4115AAB1830DE8647B915DB4BEBEB5235C281E098B899BAB951D8D5798F01 │ │ │ │ │ -7F7C47336D31438E5126738AFEAB29E9A7CBE06DE4DD604477B542D2620DFD58 │ │ │ │ │ -28FE34238572F23C5A8EB7ACEE1E154DA13FC1A5AA67A3BA8C5CDFB2B80312C9 │ │ │ │ │ -BC9FAE56D08DDFA9498E6EF0D0F6BD18B3923E0B670B0740528BC843610736CB │ │ │ │ │ -80228C105C2F72C3C22D610C3D8C268DEEA2AEEE3221E198E79FE2966487360C │ │ │ │ │ -84AE08AC326F48B21447652121B1EB68AF857B8628F27BB4ED00F273E0DD044A │ │ │ │ │ -7D11A5BFAAC0A82328444CC9DD90167681B07D55CE28655F40C21250A226DEAB │ │ │ │ │ -2D46FFB680CB9242BE192AC0E55A44D45709FA6DE638C130D92C4E9B07BC3D61 │ │ │ │ │ -25CC2F0A7ED4F3574242FFE4461272EB1401266EEF551E0E2B0EF51FA8F250EC │ │ │ │ │ -FD9AFB6F5A0CC442B566BC24400133E3E9B9A9FC801CEF284FD2B3ECA43421FA │ │ │ │ │ -51E5D1EFE7BEAA96658362C438A0A5A6DCBC664A85EF88037B42355195B9D19C │ │ │ │ │ -7961D5F63B123451B298CD52C144FCD4F3641A823FBA14605E2DFD845E89102C │ │ │ │ │ -4E345CFD80E3EE6F097095A84C941FFC91B234F3615E4EE4C5D564284656E364 │ │ │ │ │ -AB9C4D1DE05F8FD065CA6064893F0CF3A3A501D59EF6568D05D818A010D06518 │ │ │ │ │ -E2C20418ADD1E652867F265084A27A5FE0C32213C59FFC3A84EDC89382521E5B │ │ │ │ │ -8AF66D76601F83C5C33CC9CF968C77B66F1FA074AC3DAD8E453C9264D03969EF │ │ │ │ │ -9E387BB3BEAA4BF0A9D88BA2CE6094E8996A3752A657E322A57AF006444BF516 │ │ │ │ │ -501C43CAA1BA7F16A3B6E4D3EBDECCCC19564DF18FB68194C132238A5441A21A │ │ │ │ │ -F52285CA1CA94A4BEC61EB509FA35EA5E393D662D938F4291F37EB7C2D5815BE │ │ │ │ │ -446813E1CFD06FFFFF2C4355C9DAFA48E765F4CC5DE4B9E37CFFB75E7A0B6F4B │ │ │ │ │ -4E412496F9C27DF4BDD90A869F0EBD81A57AE0B84051450A5A3E06CB9930DB2C │ │ │ │ │ -7C2DDB774BE870AEFCC9F4F067BE243FF3FD4B5C71B96C607DC4975973AF2650 │ │ │ │ │ -E7DF2BE3523A370EEDD07B5456B96E372ED10510CE677C044E609F21E93652FD │ │ │ │ │ -33CE612F587530D12214A3719CDB170C315B5D8763D5D4C67B5CAE90309E77AC │ │ │ │ │ -B45EB356C13A7BDE0D7320A9849CA357E30D7CF1085FFD70071932C3180AFC28 │ │ │ │ │ -B093016BA3F49A3878C34BB4A8727A441EB6CFC1A73F2313A7BF8D32EDF27E62 │ │ │ │ │ -EBEBC058FBA80B136FD2DE05C673B66482224ECEC63EDFB519AC13B5CC6624A6 │ │ │ │ │ -B3FD79037DA3851E93A386115852DBA88B176F21EDDB5386DC7C993C4210B28F │ │ │ │ │ -438131A586E34A09724E7CE60139F8247BFF14D2674805B3BD454C134728A43E │ │ │ │ │ -139E0AF71A7AC5CE42041EC83FD454B00AD29959FCF007789FFAF2D3492DCA4B │ │ │ │ │ -566EAFE97591ABC51CD0CD9BCD64E285FB823E41AA817E96B2B224005DAA4E15 │ │ │ │ │ -2141DB436B9D3FBA4EE4C876FD19A2E5133106FE2B9F704CB9614FCDC91B7950 │ │ │ │ │ -57053F45A5ED993B48189AAFAD5289F97AE2B0AEB5606579F6BD75F743EDB5B6 │ │ │ │ │ -5AA8F8A64CE507A47325081B3A013DB1BD596CDD3A83D2F29B070D6F9C57496E │ │ │ │ │ -14DF3F0F731C3BB00F2CE3D4BBACF1320322195D1DEA7A545BB4725BD1C6EC3D │ │ │ │ │ -63250C72B897741F8599D9D9BD2FB50EC80EFF2ECD6CE6603E95AABB45462ACF │ │ │ │ │ -12B005EE5979B6B05BCE9B97061686102349142A3CCC26D57F2A3283DD8B6E2A │ │ │ │ │ -98885E48C0D4A1A5C9612EDCB3B3D265E9B8CCCCA5D99F07F96C15B27D6A161F │ │ │ │ │ -936599E503C2859927201CACC31581AB7AB84F9EC9FFADC239F01DCC55940AB7 │ │ │ │ │ -FA884AA1EB6494C8E53DAD66E75A317428ACF9D943A74683BF547958F67D9E36 │ │ │ │ │ -F985EED50DEBCF255756A821927CB73848DCF167E96E975E959DE27FE7BA4FBA │ │ │ │ │ -D0EFC003F019D87572D6F9C73FC5B880C3EEDB7EF98E5EC3D25D6FE0015A6590 │ │ │ │ │ -E3C6EE632D7F6558B914609A8829CD1DEAB83A3F1207D5C3AAC9EAEA9DE1B4F8 │ │ │ │ │ -2375C5D4F630BCE13475F941ED2324D2CD4DCF2285298EAA4FFF89433D853860 │ │ │ │ │ -A974A9FC0808580FBDE7D02EDBB3D8C65BD3109AE8B359E96BFB7E21C696F440 │ │ │ │ │ -312B0CCAD810BF070DF8FC281E8198EB20A7FF9C9BCD291D74BC75EE46799485 │ │ │ │ │ -1AB2AE36B7E525034D146A856AF3BD9057A0033C08B606B89DD130548950C93D │ │ │ │ │ -94A8C92C47A34A791B1C108D2F36E899B79358B8081CCFC3D1A2F0521E4E2AE4 │ │ │ │ │ -7F500D6F2A53E5393E44201287225912590ABC738E8726622B67C3425639CCFB │ │ │ │ │ -F450B78A4918 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004B9BA1CC │ │ │ │ │ +580D3C6BDA4DC1B80B4365F1C80512453FC5316EC2D928FB731C3D6403E3C18B │ │ │ │ │ +E8424D644DF5E9A2134229C5C91CA68DB8E85BA2BB40F538F585DA6FA4037718 │ │ │ │ │ +B8053EBBA1E765346BCD5BDAA6C38115D31611D8A87A2238C145F2DA2F92E4DF │ │ │ │ │ +3987BD9C4D2A3D460E8941A68B125BCD9EE4F9FD262C4C8A71F47A2C81975635 │ │ │ │ │ +F1B981C274C53FA2ACCDE4C9D0A7C62D6C1EFF91CFC6712CA6A9F333C9564FCB │ │ │ │ │ +2A70F0AD715A79B10A08AB069E2A3C93BC0AED19D0CA10134B8DDDE8AF548DB2 │ │ │ │ │ +3A4AAA9C29682CF135BB767DAA16169A127EB50A7EECEB6480CF56A7D0F8AC56 │ │ │ │ │ +4A5090B3D75A790372886AF568D94C8165975A05BFBFDF1FFBA45F70700BB9E0 │ │ │ │ │ +57F3249EF9E9C8AD9CBCF6E4FD592DC4CDD2D7864F7C8A3FA6FC44C25C0CE7E1 │ │ │ │ │ +299F8A90B32B75DEA28917531621E1E7E0ECEE9E01665DEE99FBCF3EC3F30686 │ │ │ │ │ +513D7CBA745E660502603865D5A3E82D24B3F94B2884B21DC53AED87F49380E0 │ │ │ │ │ +68EE79C580931308DA762670C1F86F07FFB479773CD9C5DE6F22980DEC973D1C │ │ │ │ │ +A1E162D73932561BAAB24DE51DC8708291B666B36BABCA1FEDB6DD9C22572914 │ │ │ │ │ +7194DA044319F362452D53DD4D9A59134838E540F1E23805CEF53FF4F7519385 │ │ │ │ │ +1FAE3061F94369FEB1232BDA2E2A281E6972FB4524EFA37A598E7CDC097683EA │ │ │ │ │ +1B609952AEC0799B4711AAAB22D6B1D5CC729DE70897FDDC48AF0A12E40FFE30 │ │ │ │ │ +6528C601E68E8CFA4BBF897CF89DB712DE108DD1F084EFD917BFD9A70A74EB8F │ │ │ │ │ +D0D5B43CCC30373A5E871F18A969D01C69C2B4377622A0C8C4D7C4C28DDE5586 │ │ │ │ │ +BD17D5D640A6F396BD41993BD1932EE10953847F82F7BB36480B67A4F69F0763 │ │ │ │ │ +69423D1803B7BB60594ABEEE9578076639B84D8323F56104438803D45402FEE3 │ │ │ │ │ +045DAB16C4459DA9BBE01D0385CC771FB8DABDD8A9D280C18553F92FE6591CFD │ │ │ │ │ +26B82F28E6673BD823598D3F6CE03BEE04D9A21ED908DFC4F640227C148F133D │ │ │ │ │ +D32113275297C16EBCC9028AFD9102DE50E9CF67E7CF8C42BB8E73D1DAF8A5E2 │ │ │ │ │ +EF5979426229664A990DEF980A7038D2F229789D4F6EDBE1FB81BEC1A1BB14D7 │ │ │ │ │ +882515C62660E8877BE942712D57B86A2E19995AF087DECB7FD5208583C020AE │ │ │ │ │ +FEC86A2826530AD855006225300E4655F443C9360A8BAC96B5B096DDC9B12EDF │ │ │ │ │ +C862215AD6C432CF345FE701757E4EBB8C65F46912CB0F4DEF53672F7298D8F7 │ │ │ │ │ +EE51A9C5DE689A8D36956B7F0410893C0998DB03B73B4024CB046F8F6B32E07F │ │ │ │ │ +CD28A68AFB7152E45F1021DCD520D8A429FCDCA4B8054BAF0B48C4443280F198 │ │ │ │ │ +3360B078E6DEC37772DA8B629CFFD1534E8AA10E26B0BC58E92B9BF280C8EE45 │ │ │ │ │ +618EECDE904249F5A2010DC55D1028DFF4F058260B2B0A46541D6157970F44BD │ │ │ │ │ +D7483802D56A81184119DDBC914E8E394CBEEB506B61BB1CE2A3465252E5D8A3 │ │ │ │ │ +6BDD2D067E69D4ECEFC7D5568378F5F8B38EAFF138014185FE19DF7358A7A780 │ │ │ │ │ +3BE0E2CCD1561113F2F2319BDB503230DD0866121604710CEBBAA659ABFC010B │ │ │ │ │ +5CC40E5807F461D87E75BDC6AD96BCEF62AF668D48D7A76D08B57650F35CF609 │ │ │ │ │ +C0F791AEBEB75E29FA69596BAB419804AECE0F0238AAE64A6C13A22EBF4E3EAC │ │ │ │ │ +3570DECE85F54064486B2364D63E94FEB7C16350CDA318510A45C8848DB470ED │ │ │ │ │ +BFAFD2365681D65CFF3E6C1B4B7C8AE3066F96E819D05B97F3A6C2BFF8A72978 │ │ │ │ │ +EEB7F632FF604AD003A3CCA5A0465D53033A646E8082D3491EDECA3DA1A0E1BB │ │ │ │ │ +64BF36946520438D2EE72FA9EB1CEEDF56510AADA55A8DE280E23C904E0810FA │ │ │ │ │ +A3177CF684F06A4042DE4CD4AB21E2F0616153BEEE58EBBD89911FA43BC52969 │ │ │ │ │ +230C8137DB34C13E147B06C7A3875A931E1AC127E7D3EA0DF8346B6971F80901 │ │ │ │ │ +DC37F2DE1A0B81FD93CA3B5EB9B29ECABA1492901B1BA261DAB872FB3431C718 │ │ │ │ │ +9C9CDA7864908CD773864908DEB44E343221C2C4C335341789A46325D94C767C │ │ │ │ │ +740E3B60CE6D452A3A665967F568671FD7DD460B404B9C3D2EDCD47A336AA2C7 │ │ │ │ │ +BB0B1AC3823978F610629EF7AB526098A7EE7076F50A146D8134BA2DEC1B8ACF │ │ │ │ │ +68A7E4A9B7BE17FB71480516F2D6A8866E56CFD7C7A41311F48DDDD9887DACB8 │ │ │ │ │ +73FDAF5F25E956AFB0A9D530DE2E1128F006AAC9A78715BA2F90C8FED3729BFA │ │ │ │ │ +BDDD4098F870A27A91A0CB540D166FF86A442E95C9C361FD23378A2A138EAFB8 │ │ │ │ │ +D7050B486E1CB95068D890BCCD669456F3385C8F1793CE545099421368FE0F46 │ │ │ │ │ +53137AD2B65030B19CE7FF6B1669DB7A3C440AEF27149780E36C7097B7A8B71B │ │ │ │ │ +8789EECFA9A70B1F9695BB5D94E9A7D341291C1CA1BDEF4BE3EFCB8234CE9FFD │ │ │ │ │ +E1C4963CF919780129FA60162FEAA8AE97328F4BA14D949057A3EE74214F2D29 │ │ │ │ │ +51E7BE584446F6702F39957AE455CF8AF0C36AADAA39B53553D923CA5E9D4988 │ │ │ │ │ +76701B4F77DAE5185AC29900 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -5178,16 +5181,16 @@ │ │ │ │ │ 51 3[51 51 4[51 1[51 51 51 3[51 13[51 5[51 3[51 4[51 │ │ │ │ │ 68[{}15 99.6264 /CMTT12 rf /Fc 131[112 1[50 59 59 1[59 │ │ │ │ │ 62 44 44 46 1[62 56 62 93 31 1[34 31 62 56 34 51 62 50 │ │ │ │ │ 62 54 11[86 5[84 5[42 3[74 2[80 7[31 4[56 56 56 56 56 │ │ │ │ │ 2[31 33[62 12[{}37 99.6264 /CMBX12 rf /Fd 134[71 2[71 │ │ │ │ │ 75 52 53 55 1[75 67 75 112 2[41 37 75 67 41 61 75 60 │ │ │ │ │ 75 65 13[75 2[92 11[103 14[67 67 67 67 67 2[37 46[{}29 │ │ │ │ │ -119.552 /CMBX12 rf /Fe 134[48 23[45 19[83 18[25 5[45 │ │ │ │ │ -1[45 45 45 3[25 44[{}9 90.9091 /CMSL10 rf /Ff 141[39 │ │ │ │ │ +119.552 /CMBX12 rf /Fe 138[51 6[51 8[40 26[47 15[25 4[45 │ │ │ │ │ +1[45 45 1[45 3[25 44[{}10 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 │ │ │ │ │ @@ -5300,17 +5303,17 @@ │ │ │ │ │ 0 5230 1560 4 v 104 5284 a Fh(1)138 5316 y Fg(The)24 │ │ │ │ │ b Ff(ETree)g Fg(ob)t(ject)g(has)f(the)g Ff(Tree)h Fg(ob)t(ject)g(that)f │ │ │ │ │ (de\014nes)f(the)h(connectivit)n(y)g(of)h(the)e(fron)n(ts,)j(kno)n(ws)e │ │ │ │ │ (the)g(in)n(ternal)g(and)g(external)0 5407 y(size)k(of)f(eac)n(h)g │ │ │ │ │ (fron)n(t,)g(and)f(has)h(a)g(map)g(from)g(the)g(v)n(ertices)g(to)g(the) │ │ │ │ │ f(fron)n(ts.)1927 5656 y Fo(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fo(2)p 136 100 1231 4 v │ │ │ │ │ -1413 w Fn(MSMD)29 b Fe(:)h Fk(DRAFT)g Fe(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2670 100 V 0 399 a Fo(W)-8 b(e)32 b(in)m(tend)e(to)h(add)f(more)g │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fo(2)p 136 100 1224 4 v │ │ │ │ │ +1406 w Fn(MSMD)29 b Fe(:)h Fk(DRAFT)h Fe(June)e(3,)i(2025)p │ │ │ │ │ +2677 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 │ │ │ │ │ @@ -5371,17 +5374,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 1231 4 v 1412 100 a Fn(MSMD)29 │ │ │ │ │ -b Fe(:)i Fk(DRAFT)121 b Fe(Ma)m(y)31 b(1,)g(2024)p 2622 │ │ │ │ │ -100 V 1231 w Fo(3)137 399 y Fm(\210)45 b Fn(MSMDstageInfo)25 │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1224 4 v 1405 100 a Fn(MSMD)29 │ │ │ │ │ +b Fe(:)i Fk(DRAFT)121 b Fe(June)29 b(3,)i(2025)p 2629 │ │ │ │ │ +100 V 1224 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 │ │ │ │ │ @@ -5441,17 +5444,17 @@ │ │ │ │ │ (ultiple)f(minim)m(um)e(degree.)330 5294 y Fi({)45 b │ │ │ │ │ Fn(stepType)h(>)h(1)22 b Fo(|)g(an)g(indep)s(enden)m(t)f(set)i(of)f(v)m │ │ │ │ │ (ertices)i(is)e(eliminated)i(whose)e(priorities)g(lie)h(b)s(et)m(w)m │ │ │ │ │ (een)427 5407 y(the)31 b(minim)m(um)e(priorit)m(y)i(and)f(the)h(minim)m │ │ │ │ │ (um)e(priorit)m(y)i(m)m(ultiplied)g(b)m(y)f Fn(stepType)p │ │ │ │ │ Fo(.)p eop end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fo(4)p 136 100 1231 4 v │ │ │ │ │ -1413 w Fn(MSMD)29 b Fe(:)h Fk(DRAFT)g Fe(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2670 100 V 227 399 a Fo(The)f(default)h(v)-5 b(alue)31 │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fo(4)p 136 100 1224 4 v │ │ │ │ │ +1406 w Fn(MSMD)29 b Fe(:)h Fk(DRAFT)h Fe(June)e(3,)i(2025)p │ │ │ │ │ +2677 100 V 227 399 a Fo(The)f(default)h(v)-5 b(alue)31 │ │ │ │ │ b(is)f Fn(1)p Fo(,)g(m)m(ultiple)h(elimination)h(of)f(v)m(ertices)h │ │ │ │ │ (with)e(minim)m(um)f(priorit)m(y)-8 b(.)137 625 y Fm(\210)45 │ │ │ │ │ b Fn(int)i(seed)26 b Fo(|)g(a)h(seed)g(used)f(for)h(a)g(random)f(n)m │ │ │ │ │ (um)m(b)s(er)f(generator,)k(this)e(in)m(tro)s(duces)f(a)i(necessary)f │ │ │ │ │ (random)227 738 y(elemen)m(t)32 b(to)f(the)g(ordering.)137 │ │ │ │ │ 964 y Fm(\210)45 b Fn(int)i(msglvl)33 b Fo({)i(message)g(lev)m(el)h │ │ │ │ │ (for)e(statistics,)k(diagnostics)e(and)d(monitoring.)54 │ │ │ │ │ @@ -5496,17 +5499,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 1231 4 v 1412 100 a Fn(MSMD)29 │ │ │ │ │ -b Fe(:)i Fk(DRAFT)121 b Fe(Ma)m(y)31 b(1,)g(2024)p 2622 │ │ │ │ │ -100 V 1231 w Fo(5)0 399 y Fc(1.1.3)112 b Fb(MSMDstageInfo)41 │ │ │ │ │ +TeXDict begin 5 4 bop 91 100 1224 4 v 1405 100 a Fn(MSMD)29 │ │ │ │ │ +b Fe(:)i Fk(DRAFT)121 b Fe(June)29 b(3,)i(2025)p 2629 │ │ │ │ │ +100 V 1224 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 │ │ │ │ │ @@ -5548,17 +5551,17 @@ │ │ │ │ │ h(\(priorit)m(y\))h(heap)330 5112 y Fi({)45 b Fn('R')30 │ │ │ │ │ b Fo({)h(v)m(ertex)g(on)f(reac)m(h)h(set)330 5260 y Fi({)45 │ │ │ │ │ b Fn('I')30 b Fo({)h(v)m(ertex)g(found)e(to)i(b)s(e)f │ │ │ │ │ (indistinguishable)g(to)h(another)330 5407 y Fi({)45 │ │ │ │ │ b Fn('B')30 b Fo({)h(b)s(oundary)d(v)m(ertex,)k(to)f(b)s(e)e │ │ │ │ │ (eliminated)j(in)e(another)h(stage)p eop end │ │ │ │ │ %%Page: 6 6 │ │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fo(6)p 136 100 1231 4 v │ │ │ │ │ -1413 w Fn(MSMD)29 b Fe(:)h Fk(DRAFT)g Fe(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2670 100 V 137 399 a Fm(\210)45 b Fn(int)i(stage)29 b │ │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fo(6)p 136 100 1224 4 v │ │ │ │ │ +1406 w Fn(MSMD)29 b Fe(:)h Fk(DRAFT)h Fe(June)e(3,)i(2025)p │ │ │ │ │ +2677 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 │ │ │ │ │ @@ -5615,17 +5618,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 1231 4 v 1412 100 a Fn(MSMD)29 │ │ │ │ │ -b Fe(:)i Fk(DRAFT)121 b Fe(Ma)m(y)31 b(1,)g(2024)p 2622 │ │ │ │ │ -100 V 1231 w Fo(7)0 399 y Fc(1.2.2)112 b(Utilit)m(y)38 │ │ │ │ │ +TeXDict begin 7 6 bop 91 100 1224 4 v 1405 100 a Fn(MSMD)29 │ │ │ │ │ +b Fe(:)i Fk(DRAFT)121 b Fe(June)29 b(3,)i(2025)p 2629 │ │ │ │ │ +100 V 1224 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 │ │ │ │ │ @@ -5678,17 +5681,17 @@ │ │ │ │ │ (a)g(call)i(to)e Fn(MSMD)p 2282 5143 V 34 w(clearData\(\))c │ │ │ │ │ Fo(then)k(free's)g(the)h(storage)g(for)227 5256 y(the)d(structure)f │ │ │ │ │ (with)g(a)h(call)g(to)g Fn(free\(\))p Fo(.)227 5407 y │ │ │ │ │ Fk(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fo(If)30 b Fn(msmd)g │ │ │ │ │ Fo(is)g Fn(NULL)p Fo(,)f(an)i(error)f(message)h(is)g(prin)m(ted)f(and)f │ │ │ │ │ (the)i(program)f(exits.)p eop end │ │ │ │ │ %%Page: 8 8 │ │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fo(8)p 136 100 1231 4 v │ │ │ │ │ -1413 w Fn(MSMD)29 b Fe(:)h Fk(DRAFT)g Fe(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2670 100 V 0 399 a Fc(1.3.2)112 b(Initialization)39 b(metho)s(ds)f(|)g │ │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fo(8)p 136 100 1224 4 v │ │ │ │ │ +1406 w Fn(MSMD)29 b Fe(:)h Fk(DRAFT)h Fe(June)e(3,)i(2025)p │ │ │ │ │ +2677 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 │ │ │ │ │ @@ -5755,17 +5758,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 1231 4 v 1412 100 a Fn(MSMD)29 │ │ │ │ │ -b Fe(:)i Fk(DRAFT)121 b Fe(Ma)m(y)31 b(1,)g(2024)p 2622 │ │ │ │ │ -100 V 1231 w Fo(9)227 399 y(\014lls)j(the)h Fn(IV)f Fo(ob)5 │ │ │ │ │ +TeXDict begin 9 8 bop 91 100 1224 4 v 1405 100 a Fn(MSMD)29 │ │ │ │ │ +b Fe(:)i Fk(DRAFT)121 b Fe(June)29 b(3,)i(2025)p 2629 │ │ │ │ │ +100 V 1224 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 │ │ │ │ │ @@ -5823,17 +5826,17 @@ │ │ │ │ │ 29 4 v 33 w(cleanSubtreeList\(\))37 b Fo(and)227 5258 │ │ │ │ │ y Fn(MSMD)p 425 5258 V 34 w(clearEdgeList\(\))p Fo(.)227 │ │ │ │ │ 5407 y Fk(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fo(If)30 │ │ │ │ │ b Fn(msmd)g Fo(or)g Fn(info)f Fo(is)i Fn(NULL)p Fo(,)e(an)h(error)g │ │ │ │ │ (message)i(is)e(prin)m(ted)g(and)g(the)g(program)h(exits.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 10 10 │ │ │ │ │ -TeXDict begin 10 9 bop 0 100 a Fo(10)p 182 100 1208 4 │ │ │ │ │ -v 1390 w Fn(MSMD)29 b Fe(:)i Fk(DRAFT)f Fe(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2692 100 V 111 399 a Fo(6.)46 b Fn(void)h(MSMD_cleanSubtreeList)42 │ │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fo(10)p 182 100 1201 4 │ │ │ │ │ +v 1383 w Fn(MSMD)29 b Fe(:)i Fk(DRAFT)f Fe(June)g(3,)h(2025)p │ │ │ │ │ +2699 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 │ │ │ │ │ @@ -5898,17 +5901,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 1208 4 v 1389 100 a Fn(MSMD)30 │ │ │ │ │ -b Fe(:)g Fk(DRAFT)121 b Fe(Ma)m(y)32 b(1,)f(2024)p 2600 │ │ │ │ │ -100 V 1208 w Fo(11)0 399 y Fd(1.5)135 b(Driv)l(er)46 │ │ │ │ │ +TeXDict begin 11 10 bop 91 100 1201 4 v 1382 100 a Fn(MSMD)30 │ │ │ │ │ +b Fe(:)g Fk(DRAFT)121 b Fe(June)30 b(3,)h(2025)p 2607 │ │ │ │ │ +100 V 1201 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 │ │ │ │ │ @@ -5970,17 +5973,17 @@ │ │ │ │ │ Fn(IV)e Fo(ob)5 b(ject)40 b(that)f(con)m(tains)427 5294 │ │ │ │ │ y(the)34 b(old-to-new)h(p)s(erm)m(utation)f(v)m(ector.)52 │ │ │ │ │ b(If)34 b Fn(outOldToNewIVfile)29 b Fo(is)34 b Fn("none")p │ │ │ │ │ Fo(,)f(then)g(there)h(is)g(no)427 5407 y(output,)d(otherwise)f │ │ │ │ │ Fn(outOldToNewIVfile)c Fo(m)m(ust)k(b)s(e)g(of)g(the)h(form)f │ │ │ │ │ Fn(*.ivf)f Fo(or)h Fn(*.ivb)p Fo(.)p eop end │ │ │ │ │ %%Page: 12 12 │ │ │ │ │ -TeXDict begin 12 11 bop 0 100 a Fo(12)p 182 100 1208 │ │ │ │ │ -4 v 1390 w Fn(MSMD)29 b Fe(:)i Fk(DRAFT)f Fe(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2692 100 V 337 399 a Fm(\210)45 b Fo(The)38 b Fn(outNewToOldIVfile)c │ │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fo(12)p 182 100 1201 │ │ │ │ │ +4 v 1383 w Fn(MSMD)29 b Fe(:)i Fk(DRAFT)f Fe(June)g(3,)h(2025)p │ │ │ │ │ +2699 100 V 337 399 a Fm(\210)45 b Fo(The)38 b Fn(outNewToOldIVfile)c │ │ │ │ │ Fo(parameter)39 b(is)f(the)h(output)f(\014le)h(for)f(the)h │ │ │ │ │ Fn(IV)e Fo(ob)5 b(ject)40 b(that)f(con)m(tains)427 511 │ │ │ │ │ y(the)34 b(new-to-old)h(p)s(erm)m(utation)f(v)m(ector.)52 │ │ │ │ │ b(If)34 b Fn(outNewToOldIVfile)29 b Fo(is)34 b Fn("none")p │ │ │ │ │ Fo(,)f(then)g(there)h(is)g(no)427 624 y(output,)d(otherwise)f │ │ │ │ │ Fn(outNewToOldIVfile)c Fo(m)m(ust)k(b)s(e)g(of)g(the)h(form)f │ │ │ │ │ Fn(*.ivf)f Fo(or)h Fn(*.ivb)p Fo(.)337 770 y Fm(\210)45 │ │ │ │ │ ├── ps2ascii {} │ │ │ │ │ │ @@ -21,15 +21,15 @@ │ │ │ │ │ │ • approximate external degree, (d from [?]) and [?], or │ │ │ │ │ │ ˜ │ │ │ │ │ │ • half external and half approximate, (d from [?]), or │ │ │ │ │ │ • a constant priority (to induce maximal independent set elimination). │ │ │ │ │ │ 1The ETree object has the Tree object that defines the connectivity of the fronts, knows the internal and external │ │ │ │ │ │ size of each front, and has a map from the vertices to the fronts. │ │ │ │ │ │ 1 │ │ │ │ │ │ - 2 MSMD : DRAFT May 1, 2024 │ │ │ │ │ │ + 2 MSMD : DRAFT June 3, 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 May 1, 2024 3 │ │ │ │ │ │ + MSMD : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 4 MSMD : DRAFT June 3, 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 May 1, 2024 5 │ │ │ │ │ │ + MSMD : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 6 MSMD : DRAFT June 3, 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 May 1, 2024 7 │ │ │ │ │ │ + MSMD : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 8 MSMD : DRAFT June 3, 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 May 1, 2024 9 │ │ │ │ │ │ + MSMD : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 10 MSMD : DRAFT June 3, 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 May 1, 2024 11 │ │ │ │ │ │ + MSMD : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 12 MSMD : DRAFT June 3, 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.05.01:0545 │ │ │ │ │ +%DVIPSSource: TeX output 2025.06.03:1221 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -1599,21 +1599,22 @@ │ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ │ /UnderlineThickness 50 def │ │ │ │ │ end readonly def │ │ │ │ │ /Encoding 256 array │ │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ │ dup 44 /comma put │ │ │ │ │ dup 48 /zero put │ │ │ │ │ -dup 49 /one put │ │ │ │ │ dup 50 /two put │ │ │ │ │ -dup 52 /four put │ │ │ │ │ +dup 51 /three put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 77 /M put │ │ │ │ │ -dup 97 /a put │ │ │ │ │ -dup 121 /y put │ │ │ │ │ +dup 74 /J put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ +dup 110 /n put │ │ │ │ │ +dup 117 /u put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ │ @@ -1794,68 +1795,70 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004ACD1870 │ │ │ │ │ -A5EA947858F5795870BFE1343AD803FB854BF8F5A4E794E8EC57BE41DB5B8734 │ │ │ │ │ -13E47950F29A81EA0C81EA798863883D7F41F78325CA190CBBFFE822AE494550 │ │ │ │ │ -4BE83703071FC9512D128927AF3F63CEF8F86ABE1E15D7B4DDD39576E7DFF45E │ │ │ │ │ -3CB4115AAB1830DE8647B915DB4BEBEB5235C281E098B899BAB951D8D5798F01 │ │ │ │ │ -7F7C47336D31438E5126738AFEAB29E9A7CBE06DE4DD604477B542D2620DFD58 │ │ │ │ │ -28FE34238572F23C5A8EB7ACEE1E154DA13FC1A5AA67A3BA8C5CDFB2B80312C9 │ │ │ │ │ -BC9FAE56D08DDFA9498E6EF0D0F6BD18B3923E0B670B0740528BC843610736CB │ │ │ │ │ -80228C105C2F72C3C22D610C3D8C268DEEA2AEEE3221E198E79FE2966487360C │ │ │ │ │ -84AE08AC326F48B21447652121B1EB68AF857B8628F27BB4ED00F273E0DD044A │ │ │ │ │ -7D11A5BFAAC0A82328444CC9DD90167681B07D55CE28655F40C21250A226DEAB │ │ │ │ │ -2D46FFB680CB9242BE192AC0E55A44D45709FA6DE638C130D92C4E9B07BC3D61 │ │ │ │ │ -25CC2F0A7ED4F3574242FFE4461272EB1401266EEF551E0E2B0EF51FA8F250EC │ │ │ │ │ -FD9AFB6F5A0CC442B566BC24400133E3E9B9A9FC801CEF284FD2B3ECA43421FA │ │ │ │ │ -51E5D1EFE7BEAA96658362C438A0A5A6DCBC664A85EF88037B42355195B9D19C │ │ │ │ │ -7961D5F63B123451B298CD52C144FCD4F3641A823FBA14605E2DFD845E89102C │ │ │ │ │ -4E345CFD80E3EE6F097095A84C941FFC91B234F3615E4EE4C5D564284656E364 │ │ │ │ │ -AB9C4D1DE05F8FD065CA6064893F0CF3A3A501D59EF6568D05D818A010D06518 │ │ │ │ │ -E2C20418ADD1E652867F265084A27A5FE0C32213C59FFC3A84EDC89382521E5B │ │ │ │ │ -8AF66D76601F83C5C33CC9CF968C77B66F1FA074AC3DAD8E453C9264D03969EF │ │ │ │ │ -9E387BB3BEAA4BF0A9D88BA2CE6094E8996A3752A657E322A57AF006444BF516 │ │ │ │ │ -501C43CAA1BA7F16A3B6E4D3EBDECCCC19564DF18FB68194C132238A5441A21A │ │ │ │ │ -F52285CA1CA94A4BEC61EB509FA35EA5E393D662D938F4291F37EB7C2D5815BE │ │ │ │ │ -446813E1CFD06FFFFF2C4355C9DAFA48E765F4CC5DE4B9E37CFFB75E7A0B6F4B │ │ │ │ │ -4E412496F9C27DF4BDD90A869F0EBD81A57AE0B84051450A5A3E06CB9930DB2C │ │ │ │ │ -7C2DDB774BE870AEFCC9F4F067BE243FF3FD4B5C71B96C607DC4975973AF2650 │ │ │ │ │ -E7DF2BE3523A370EEDD07B5456B96E372ED10510CE677C044E609F21E93652FD │ │ │ │ │ -33CE612F587530D12214A3719CDB170C315B5D8763D5D4C67B5CAE90309E77AC │ │ │ │ │ -B45EB356C13A7BDE0D7320A9849CA357E30D7CF1085FFD70071932C3180AFC28 │ │ │ │ │ -B093016BA3F49A3878C34BB4A8727A441EB6CFC1A73F2313A7BF8D32EDF27E62 │ │ │ │ │ -EBEBC058FBA80B136FD2DE05C673B66482224ECEC63EDFB519AC13B5CC6624A6 │ │ │ │ │ -B3FD79037DA3851E93A386115852DBA88B176F21EDDB5386DC7C993C4210B28F │ │ │ │ │ -438131A586E34A09724E7CE60139F8247BFF14D2674805B3BD454C134728A43E │ │ │ │ │ -139E0AF71A7AC5CE42041EC83FD454B00AD29959FCF007789FFAF2D3492DCA4B │ │ │ │ │ -566EAFE97591ABC51CD0CD9BCD64E285FB823E41AA817E96B2B224005DAA4E15 │ │ │ │ │ -2141DB436B9D3FBA4EE4C876FD19A2E5133106FE2B9F704CB9614FCDC91B7950 │ │ │ │ │ -57053F45A5ED993B48189AAFAD5289F97AE2B0AEB5606579F6BD75F743EDB5B6 │ │ │ │ │ -5AA8F8A64CE507A47325081B3A013DB1BD596CDD3A83D2F29B070D6F9C57496E │ │ │ │ │ -14DF3F0F731C3BB00F2CE3D4BBACF1320322195D1DEA7A545BB4725BD1C6EC3D │ │ │ │ │ -63250C72B897741F8599D9D9BD2FB50EC80EFF2ECD6CE6603E95AABB45462ACF │ │ │ │ │ -12B005EE5979B6B05BCE9B97061686102349142A3CCC26D57F2A3283DD8B6E2A │ │ │ │ │ -98885E48C0D4A1A5C9612EDCB3B3D265E9B8CCCCA5D99F07F96C15B27D6A161F │ │ │ │ │ -936599E503C2859927201CACC31581AB7AB84F9EC9FFADC239F01DCC55940AB7 │ │ │ │ │ -FA884AA1EB6494C8E53DAD66E75A317428ACF9D943A74683BF547958F67D9E36 │ │ │ │ │ -F985EED50DEBCF255756A821927CB73848DCF167E96E975E959DE27FE7BA4FBA │ │ │ │ │ -D0EFC003F019D87572D6F9C73FC5B880C3EEDB7EF98E5EC3D25D6FE0015A6590 │ │ │ │ │ -E3C6EE632D7F6558B914609A8829CD1DEAB83A3F1207D5C3AAC9EAEA9DE1B4F8 │ │ │ │ │ -2375C5D4F630BCE13475F941ED2324D2CD4DCF2285298EAA4FFF89433D853860 │ │ │ │ │ -A974A9FC0808580FBDE7D02EDBB3D8C65BD3109AE8B359E96BFB7E21C696F440 │ │ │ │ │ -312B0CCAD810BF070DF8FC281E8198EB20A7FF9C9BCD291D74BC75EE46799485 │ │ │ │ │ -1AB2AE36B7E525034D146A856AF3BD9057A0033C08B606B89DD130548950C93D │ │ │ │ │ -94A8C92C47A34A791B1C108D2F36E899B79358B8081CCFC3D1A2F0521E4E2AE4 │ │ │ │ │ -7F500D6F2A53E5393E44201287225912590ABC738E8726622B67C3425639CCFB │ │ │ │ │ -F450B78A4918 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004B9BA1CC │ │ │ │ │ +580D3C6BDA4DC1B80B4365F1C80512453FC5316EC2D928FB731C3D6403E3C18B │ │ │ │ │ +E8424D644DF5E9A2134229C5C91CA68DB8E85BA2BB40F538F585DA6FA4037718 │ │ │ │ │ +B8053EBBA1E765346BCD5BDAA6C38115D31611D8A87A2238C145F2DA2F92E4DF │ │ │ │ │ +3987BD9C4D2A3D460E8941A68B125BCD9EE4F9FD262C4C8A71F47A2C81975635 │ │ │ │ │ +F1B981C274C53FA2ACCDE4C9D0A7C62D6C1EFF91CFC6712CA6A9F333C9564FCB │ │ │ │ │ +2A70F0AD715A79B10A08AB069E2A3C93BC0AED19D0CA10134B8DDDE8AF548DB2 │ │ │ │ │ +3A4AAA9C29682CF135BB767DAA16169A127EB50A7EECEB6480CF56A7D0F8AC56 │ │ │ │ │ +4A5090B3D75A790372886AF568D94C8165975A05BFBFDF1FFBA45F70700BB9E0 │ │ │ │ │ +57F3249EF9E9C8AD9CBCF6E4FD592DC4CDD2D7864F7C8A3FA6FC44C25C0CE7E1 │ │ │ │ │ +299F8A90B32B75DEA28917531621E1E7E0ECEE9E01665DEE99FBCF3EC3F30686 │ │ │ │ │ +513D7CBA745E660502603865D5A3E82D24B3F94B2884B21DC53AED87F49380E0 │ │ │ │ │ +68EE79C580931308DA762670C1F86F07FFB479773CD9C5DE6F22980DEC973D1C │ │ │ │ │ +A1E162D73932561BAAB24DE51DC8708291B666B36BABCA1FEDB6DD9C22572914 │ │ │ │ │ +7194DA044319F362452D53DD4D9A59134838E540F1E23805CEF53FF4F7519385 │ │ │ │ │ +1FAE3061F94369FEB1232BDA2E2A281E6972FB4524EFA37A598E7CDC097683EA │ │ │ │ │ +1B609952AEC0799B4711AAAB22D6B1D5CC729DE70897FDDC48AF0A12E40FFE30 │ │ │ │ │ +6528C601E68E8CFA4BBF897CF89DB712DE108DD1F084EFD917BFD9A70A74EB8F │ │ │ │ │ +D0D5B43CCC30373A5E871F18A969D01C69C2B4377622A0C8C4D7C4C28DDE5586 │ │ │ │ │ +BD17D5D640A6F396BD41993BD1932EE10953847F82F7BB36480B67A4F69F0763 │ │ │ │ │ +69423D1803B7BB60594ABEEE9578076639B84D8323F56104438803D45402FEE3 │ │ │ │ │ +045DAB16C4459DA9BBE01D0385CC771FB8DABDD8A9D280C18553F92FE6591CFD │ │ │ │ │ +26B82F28E6673BD823598D3F6CE03BEE04D9A21ED908DFC4F640227C148F133D │ │ │ │ │ +D32113275297C16EBCC9028AFD9102DE50E9CF67E7CF8C42BB8E73D1DAF8A5E2 │ │ │ │ │ +EF5979426229664A990DEF980A7038D2F229789D4F6EDBE1FB81BEC1A1BB14D7 │ │ │ │ │ +882515C62660E8877BE942712D57B86A2E19995AF087DECB7FD5208583C020AE │ │ │ │ │ +FEC86A2826530AD855006225300E4655F443C9360A8BAC96B5B096DDC9B12EDF │ │ │ │ │ +C862215AD6C432CF345FE701757E4EBB8C65F46912CB0F4DEF53672F7298D8F7 │ │ │ │ │ +EE51A9C5DE689A8D36956B7F0410893C0998DB03B73B4024CB046F8F6B32E07F │ │ │ │ │ +CD28A68AFB7152E45F1021DCD520D8A429FCDCA4B8054BAF0B48C4443280F198 │ │ │ │ │ +3360B078E6DEC37772DA8B629CFFD1534E8AA10E26B0BC58E92B9BF280C8EE45 │ │ │ │ │ +618EECDE904249F5A2010DC55D1028DFF4F058260B2B0A46541D6157970F44BD │ │ │ │ │ +D7483802D56A81184119DDBC914E8E394CBEEB506B61BB1CE2A3465252E5D8A3 │ │ │ │ │ +6BDD2D067E69D4ECEFC7D5568378F5F8B38EAFF138014185FE19DF7358A7A780 │ │ │ │ │ +3BE0E2CCD1561113F2F2319BDB503230DD0866121604710CEBBAA659ABFC010B │ │ │ │ │ +5CC40E5807F461D87E75BDC6AD96BCEF62AF668D48D7A76D08B57650F35CF609 │ │ │ │ │ +C0F791AEBEB75E29FA69596BAB419804AECE0F0238AAE64A6C13A22EBF4E3EAC │ │ │ │ │ +3570DECE85F54064486B2364D63E94FEB7C16350CDA318510A45C8848DB470ED │ │ │ │ │ +BFAFD2365681D65CFF3E6C1B4B7C8AE3066F96E819D05B97F3A6C2BFF8A72978 │ │ │ │ │ +EEB7F632FF604AD003A3CCA5A0465D53033A646E8082D3491EDECA3DA1A0E1BB │ │ │ │ │ +64BF36946520438D2EE72FA9EB1CEEDF56510AADA55A8DE280E23C904E0810FA │ │ │ │ │ +A3177CF684F06A4042DE4CD4AB21E2F0616153BEEE58EBBD89911FA43BC52969 │ │ │ │ │ +230C8137DB34C13E147B06C7A3875A931E1AC127E7D3EA0DF8346B6971F80901 │ │ │ │ │ +DC37F2DE1A0B81FD93CA3B5EB9B29ECABA1492901B1BA261DAB872FB3431C718 │ │ │ │ │ +9C9CDA7864908CD773864908DEB44E343221C2C4C335341789A46325D94C767C │ │ │ │ │ +740E3B60CE6D452A3A665967F568671FD7DD460B404B9C3D2EDCD47A336AA2C7 │ │ │ │ │ +BB0B1AC3823978F610629EF7AB526098A7EE7076F50A146D8134BA2DEC1B8ACF │ │ │ │ │ +68A7E4A9B7BE17FB71480516F2D6A8866E56CFD7C7A41311F48DDDD9887DACB8 │ │ │ │ │ +73FDAF5F25E956AFB0A9D530DE2E1128F006AAC9A78715BA2F90C8FED3729BFA │ │ │ │ │ +BDDD4098F870A27A91A0CB540D166FF86A442E95C9C361FD23378A2A138EAFB8 │ │ │ │ │ +D7050B486E1CB95068D890BCCD669456F3385C8F1793CE545099421368FE0F46 │ │ │ │ │ +53137AD2B65030B19CE7FF6B1669DB7A3C440AEF27149780E36C7097B7A8B71B │ │ │ │ │ +8789EECFA9A70B1F9695BB5D94E9A7D341291C1CA1BDEF4BE3EFCB8234CE9FFD │ │ │ │ │ +E1C4963CF919780129FA60162FEAA8AE97328F4BA14D949057A3EE74214F2D29 │ │ │ │ │ +51E7BE584446F6702F39957AE455CF8AF0C36AADAA39B53553D923CA5E9D4988 │ │ │ │ │ +76701B4F77DAE5185AC29900 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -4989,38 +4992,38 @@ │ │ │ │ │ X/FBB X/IEn X │ │ │ │ │ %EndDVIPSBitmapFont │ │ │ │ │ /Fd 133[50 59 59 1[59 62 44 44 46 1[62 56 62 93 31 2[31 │ │ │ │ │ 62 2[51 62 50 1[54 13[62 5[106 6[70 16[56 56 56 56 56 │ │ │ │ │ 2[31 37 45[{}29 99.6264 /CMBX12 rf /Fe 171[62 6[62 77[{}2 │ │ │ │ │ 119.552 /CMTT12 rf /Ff 134[71 2[71 75 52 53 55 1[75 67 │ │ │ │ │ 75 112 37 2[37 75 67 41 61 75 60 1[65 13[75 2[92 11[103 │ │ │ │ │ -16[67 67 67 2[37 46[{}26 119.552 /CMBX12 rf /Fg 134[44 │ │ │ │ │ -23[42 19[76 18[23 5[42 1[42 42 42 3[23 44[{}9 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 │ │ │ │ │ +16[67 67 67 2[37 46[{}26 119.552 /CMBX12 rf /Fg 138[46 │ │ │ │ │ +6[46 8[37 26[43 15[23 4[42 1[42 42 1[42 3[23 44[{}10 │ │ │ │ │ +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 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 rf /Fk 175[88 │ │ │ │ │ -80[{}1 83.022 /CMEX10 rf /Fl 142[30 24[54 3[39 11[54 │ │ │ │ │ -1[42 70[{}5 58.1154 /CMMI7 rf /Fm 134[41 47 6[37 23[48 │ │ │ │ │ -69 2[57 2[63 66 53 3[57 2[36 2[53 1[69 1[63 62 37[47 │ │ │ │ │ -15[53 11[{}17 83.022 /CMMI10 rf /Fn 131[83 42 37 44 44 │ │ │ │ │ -60 44 46 32 33 33 44 46 42 46 69 23 44 25 23 46 42 25 │ │ │ │ │ -37 46 37 46 42 4[42 4[85 1[62 60 46 2[57 65 62 76 52 │ │ │ │ │ -2[30 62 1[54 57 1[60 59 62 2[39 65 1[23 23 42 42 42 42 │ │ │ │ │ -42 42 42 42 42 42 1[23 28 23 65 42 32 32 23 4[42 20[46 │ │ │ │ │ -46 48 11[{}71 83.022 /CMR10 rf /Fo 134[123 123 3[90 1[95 │ │ │ │ │ -2[116 129 4[65 3[106 129 103 25[87 73[{}11 206.559 /CMBX12 │ │ │ │ │ -rf /Fp 171[106 6[106 77[{}2 206.559 /CMTT12 rf /Fq 139[75 │ │ │ │ │ -1[79 1[108 7[108 2[88 3[94 29[140 17[97 49[{}8 172.188 │ │ │ │ │ -/CMBX12 rf end │ │ │ │ │ +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 rf /Fk │ │ │ │ │ +175[88 80[{}1 83.022 /CMEX10 rf /Fl 142[30 24[54 3[39 │ │ │ │ │ +11[54 1[42 70[{}5 58.1154 /CMMI7 rf /Fm 134[41 47 6[37 │ │ │ │ │ +23[48 69 2[57 2[63 66 53 3[57 2[36 2[53 1[69 1[63 62 │ │ │ │ │ +37[47 15[53 11[{}17 83.022 /CMMI10 rf /Fn 131[83 42 37 │ │ │ │ │ +44 44 60 44 46 32 33 33 44 46 42 46 69 23 44 25 23 46 │ │ │ │ │ +42 25 37 46 37 46 42 4[42 4[85 1[62 60 46 2[57 65 62 │ │ │ │ │ +76 52 2[30 62 1[54 57 1[60 59 62 2[39 65 1[23 23 42 42 │ │ │ │ │ +42 42 42 42 42 42 42 42 1[23 28 23 65 42 32 32 23 4[42 │ │ │ │ │ +20[46 46 48 11[{}71 83.022 /CMR10 rf /Fo 134[123 123 │ │ │ │ │ +3[90 1[95 2[116 129 4[65 3[106 129 103 25[87 73[{}11 │ │ │ │ │ +206.559 /CMBX12 rf /Fp 171[106 6[106 77[{}2 206.559 /CMTT12 │ │ │ │ │ +rf /Fq 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: a4 │ │ │ │ │ /setpagedevice where │ │ │ │ │ { pop << /PageSize [595 842] >> setpagedevice } │ │ │ │ │ @@ -5123,30 +5126,30 @@ │ │ │ │ │ (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 1092 4 v │ │ │ │ │ -1257 w Fi(Multithreaded)23 b Fg(:)37 b Fh(DRAFT)27 b │ │ │ │ │ -Fg(Ma)n(y)g(1,)g(2024)p 2808 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 │ │ │ │ │ -b(.)0 1464 y Fd(1.2.1)112 b(Matrix-matrix)39 b(m)m(ultiply)f(metho)s │ │ │ │ │ -(ds)0 1643 y Fn(There)18 b(are)f(\014v)n(e)h(metho)r(ds)h(to)f(m)n │ │ │ │ │ -(ultiply)h(a)f(v)n(ector)f(times)i(a)f(dense)g(matrix.)33 │ │ │ │ │ -b(The)19 b(\014rst)f(three)g(metho)r(ds,)i(called)e Fi(InpMtx)p │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fn(2)p 125 100 1086 4 v │ │ │ │ │ +1251 w Fi(Multithreaded)22 b Fg(:)37 b Fh(DRAFT)28 b │ │ │ │ │ +Fg(June)f(3,)g(2025)p 2814 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 b(.)0 1464 y │ │ │ │ │ +Fd(1.2.1)112 b(Matrix-matrix)39 b(m)m(ultiply)f(metho)s(ds)0 │ │ │ │ │ +1643 y Fn(There)18 b(are)f(\014v)n(e)h(metho)r(ds)h(to)f(m)n(ultiply)h │ │ │ │ │ +(a)f(v)n(ector)f(times)i(a)f(dense)g(matrix.)33 b(The)19 │ │ │ │ │ +b(\014rst)f(three)g(metho)r(ds,)i(called)e Fi(InpMtx)p │ │ │ │ │ 3705 1643 27 4 v 29 w(MT)p 3822 1643 V 31 w(nonsym)p │ │ │ │ │ 4117 1643 V 29 w(mmm*\(\))p Fn(,)0 1742 y(are)24 b(straigh)n(tforw)n │ │ │ │ │ (ard,)e Fm(y)k Fn(:=)d Fm(y)15 b Fn(+)e Fm(\013Ax)p Fn(,)27 │ │ │ │ │ b(where)d Fm(A)h Fn(is)g(nonsymmetric,)g(and)f Fm(\013)i │ │ │ │ │ Fn(is)f(real)e(\(if)j Fm(A)f Fn(is)g(real\))f(and)h(complex)f(\(if)i │ │ │ │ │ Fm(A)f Fn(is)0 1842 y(complex\).)36 b(The)25 b(fourth)g(metho)r(d,)i │ │ │ │ │ Fi(InpMtx)p 1399 1842 V 29 w(MT)p 1516 1842 V 30 w(sym)p │ │ │ │ │ @@ -5241,19 +5244,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 1092 4 v 1258 100 a Fi(Multithreaded)22 │ │ │ │ │ -b Fg(:)37 b Fh(DRAFT)110 b Fg(Ma)n(y)27 b(1,)h(2024)p │ │ │ │ │ -2769 100 V 1092 w Fn(3)208 390 y(arra)n(y)c(of)i(length)h(1)f(or)f(2.) │ │ │ │ │ -36 b(The)27 b(n)n(um)n(b)r(er)f(of)g(threads)g(is)g(sp)r(eci\014ed)h(b) │ │ │ │ │ -n(y)f(the)h Fi(nthread)d Fn(parameter;)h(if,)i Fi(nthread)d │ │ │ │ │ +TeXDict begin 3 2 bop 83 100 1086 4 v 1252 100 a Fi(Multithreaded)22 │ │ │ │ │ +b Fg(:)37 b Fh(DRAFT)110 b Fg(June)28 b(3,)f(2025)p 2775 │ │ │ │ │ +100 V 1086 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 │ │ │ │ │ @@ -5351,17 +5354,17 @@ │ │ │ │ │ (assem)n(bling)f(aggregate)f(fron)n(ts.)307 5142 y Fc(\210)42 │ │ │ │ │ b Fi(cpus[5])25 b Fn(|)j(time)g(sp)r(en)n(t)g(assem)n(bling)e(p)r(ostp) │ │ │ │ │ r(oned)i(data.)307 5274 y Fc(\210)42 b Fi(cpus[6])25 │ │ │ │ │ b Fn(|)j(time)g(sp)r(en)n(t)g(to)f(factor)g(the)h(fron)n(ts.)307 │ │ │ │ │ 5407 y Fc(\210)42 b Fi(cpus[7])25 b Fn(|)j(time)g(sp)r(en)n(t)g(to)f │ │ │ │ │ (extract)g(p)r(ostp)r(oned)h(data.)p eop end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fn(4)p 125 100 1092 4 v │ │ │ │ │ -1257 w Fi(Multithreaded)23 b Fg(:)37 b Fh(DRAFT)27 b │ │ │ │ │ -Fg(Ma)n(y)g(1,)g(2024)p 2808 100 V 307 390 a Fc(\210)42 │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fn(4)p 125 100 1086 4 v │ │ │ │ │ +1251 w Fi(Multithreaded)22 b Fg(:)37 b Fh(DRAFT)28 b │ │ │ │ │ +Fg(June)f(3,)g(2025)p 2814 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 │ │ │ │ │ @@ -5432,22 +5435,22 @@ │ │ │ │ │ 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 1092 4 v 1258 100 a Fi(Multithreaded)22 │ │ │ │ │ -b Fg(:)37 b Fh(DRAFT)110 b Fg(Ma)n(y)27 b(1,)h(2024)p │ │ │ │ │ -2769 100 V 1092 w Fn(5)208 390 y(from)j Fi(mtxB)g Fn(and)h(en)n(tries)g │ │ │ │ │ -(of)g Fm(X)39 b Fn(are)31 b(written)i(to)f Fi(mtxX)p │ │ │ │ │ -Fn(.)e(Therefore,)j Fi(mtxX)d Fn(and)j Fi(mtxB)d Fn(can)i(b)r(e)h(the)g │ │ │ │ │ -(same)e(ob)5 b(ject.)208 490 y(\(Note,)25 b(this)h(do)r(es)e(not)h │ │ │ │ │ -(hold)g(true)g(for)f(an)h(MPI)f(factorization)g(with)h(piv)n(oting.\)) │ │ │ │ │ -36 b(The)25 b(submatrix)f(manager)f(ob)5 b(ject)208 589 │ │ │ │ │ +TeXDict begin 5 4 bop 83 100 1086 4 v 1252 100 a Fi(Multithreaded)22 │ │ │ │ │ +b Fg(:)37 b Fh(DRAFT)110 b Fg(June)28 b(3,)f(2025)p 2775 │ │ │ │ │ +100 V 1086 w Fn(5)208 390 y(from)k Fi(mtxB)g Fn(and)h(en)n(tries)g(of)g │ │ │ │ │ +Fm(X)39 b Fn(are)31 b(written)i(to)f Fi(mtxX)p Fn(.)e(Therefore,)j │ │ │ │ │ +Fi(mtxX)d Fn(and)j Fi(mtxB)d Fn(can)i(b)r(e)h(the)g(same)e(ob)5 │ │ │ │ │ +b(ject.)208 490 y(\(Note,)25 b(this)h(do)r(es)e(not)h(hold)g(true)g │ │ │ │ │ +(for)f(an)h(MPI)f(factorization)g(with)h(piv)n(oting.\))36 │ │ │ │ │ +b(The)25 b(submatrix)f(manager)f(ob)5 b(ject)208 589 │ │ │ │ │ y(manages)31 b(the)j(w)n(orking)d(storage.)51 b(The)33 │ │ │ │ │ b Fi(solvemap)d Fn(ob)5 b(ject)33 b(con)n(tains)f(the)h(map)g(from)g │ │ │ │ │ (submatrices)f(to)h(threads.)208 689 y(The)j(map)h(from)f(fron)n(ts)g │ │ │ │ │ (to)h(pro)r(cesses)e(that)i(o)n(wn)f(them)h(is)f(giv)n(en)g(in)h(the)g │ │ │ │ │ Fi(ownersIV)c Fn(ob)5 b(ject.)64 b(On)37 b(return)f(the)208 │ │ │ │ │ 789 y Fi(cpus[])25 b Fn(v)n(ector)h(is)i(\014lled)f(with)i(the)f(follo) │ │ │ │ │ n(wing.)35 b(The)28 b Fi(stats[])d Fn(v)n(ector)h(is)i(not)f(curren)n │ │ │ │ │ @@ -5522,17 +5525,17 @@ │ │ │ │ │ b(matrix,)h(factors)e Fm(A)h Fn(and)g(solv)n(es)e(the)i(linear)f │ │ │ │ │ (system)h Fm(AX)40 b Fn(=)33 b Fm(B)38 b Fn(for)c Fm(X)40 │ │ │ │ │ b Fn(using)34 b(m)n(ultithreaded)f(factors)g(and)208 │ │ │ │ │ 5407 y(solv)n(es.)i(Use)28 b(the)g(script)f(\014le)h │ │ │ │ │ Fi(do)p 1237 5407 27 4 v 30 w(gridMT)d Fn(for)i(testing.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 6 6 │ │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fn(6)p 125 100 1092 4 v │ │ │ │ │ -1257 w Fi(Multithreaded)23 b Fg(:)37 b Fh(DRAFT)27 b │ │ │ │ │ -Fg(Ma)n(y)g(1,)g(2024)p 2808 100 V 307 390 a Fc(\210)42 │ │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fn(6)p 125 100 1086 4 v │ │ │ │ │ +1251 w Fi(Multithreaded)22 b Fg(:)37 b Fh(DRAFT)28 b │ │ │ │ │ +Fg(June)f(3,)g(2025)p 2814 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 │ │ │ │ │ @@ -5605,18 +5608,18 @@ │ │ │ │ │ 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 1092 4 v 1258 100 a Fi(Multithreaded)22 │ │ │ │ │ -b Fg(:)37 b Fh(DRAFT)110 b Fg(Ma)n(y)27 b(1,)h(2024)p │ │ │ │ │ -2769 100 V 1092 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 │ │ │ │ │ +TeXDict begin 7 6 bop 83 100 1086 4 v 1252 100 a Fi(Multithreaded)22 │ │ │ │ │ +b Fg(:)37 b Fh(DRAFT)110 b Fg(June)28 b(3,)f(2025)p 2775 │ │ │ │ │ +100 V 1086 w Fn(7)307 390 y Fc(\210)42 b Fn(The)32 b │ │ │ │ │ +Fi(msgFile)c Fn(parameter)i(determines)h(the)h(message)e(\014le)i(|)f │ │ │ │ │ (if)h Fi(msgFile)d Fn(is)i Fi(stdout)p Fn(,)f(then)i(the)g(message)390 │ │ │ │ │ 490 y(\014le)c(is)f Fh(stdout)p Fn(,)h(otherwise)e(a)i(\014le)f(is)h │ │ │ │ │ (op)r(ened)f(with)i Fh(app)l(end)g Fn(status)e(to)g(receiv)n(e)g(an)n │ │ │ │ │ (y)g(output)h(data.)307 620 y Fc(\210)42 b Fn(The)28 │ │ │ │ │ b Fi(type)e Fn(parameter)g(sp)r(eci\014es)h(a)h(real)e(or)h(complex)g │ │ │ │ │ (linear)g(system.)456 750 y Fa({)41 b Fi(type)h(=)i(1)f(\(SPOOLES)p │ │ │ │ │ 1295 750 27 4 v 28 w(REAL\))25 b Fn(for)i(real,)456 865 │ │ │ │ │ @@ -5692,17 +5695,17 @@ │ │ │ │ │ 5277 y Fl(T)3144 5308 y Fj(\003)g Fm(X)27 b Fn(or)19 │ │ │ │ │ b Fm(Y)24 b Fn(+)5 b Fm(\013)g Fj(\003)g Fm(A)3690 5277 │ │ │ │ │ y Fl(H)3756 5308 y Fj(\003)g Fm(X)i Fn(.)208 5407 y(The)27 │ │ │ │ │ b(program's)f(output)i(is)f(a)g(\014le)h(whic)n(h)g(when)f(sen)n(t)h │ │ │ │ │ (in)n(to)f(Matlab,)h(outputs)f(the)h(error)e(in)i(the)g(computation.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 8 8 │ │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fn(8)p 125 100 1092 4 v │ │ │ │ │ -1257 w Fi(Multithreaded)23 b Fg(:)37 b Fh(DRAFT)27 b │ │ │ │ │ -Fg(Ma)n(y)g(1,)g(2024)p 2808 100 V 307 390 a Fc(\210)42 │ │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fn(8)p 125 100 1086 4 v │ │ │ │ │ +1251 w Fi(Multithreaded)22 b Fg(:)37 b Fh(DRAFT)28 b │ │ │ │ │ +Fg(June)f(3,)g(2025)p 2814 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 │ │ │ │ │ @@ -5786,17 +5789,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 1092 4 v 1258 100 a Fi(Multithreaded)22 │ │ │ │ │ -b Fg(:)37 b Fh(DRAFT)110 b Fg(Ma)n(y)27 b(1,)h(2024)p │ │ │ │ │ -2769 100 V 1092 w Fn(9)456 390 y Fa({)41 b Fi(sparsityflag)e(=)k(0)g │ │ │ │ │ +TeXDict begin 9 8 bop 83 100 1086 4 v 1252 100 a Fi(Multithreaded)22 │ │ │ │ │ +b Fg(:)37 b Fh(DRAFT)110 b Fg(June)28 b(3,)f(2025)p 2775 │ │ │ │ │ +100 V 1086 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 │ │ │ │ │ @@ -5881,17 +5884,17 @@ │ │ │ │ │ b Fi(n1)27 b Fn(is)h(the)g(n)n(um)n(b)r(er)f(of)g(p)r(oin)n(ts)h(in)g │ │ │ │ │ (the)g(\014rst)f(grid)g(direction.)307 5273 y Fc(\210)42 │ │ │ │ │ b Fi(n2)27 b Fn(is)h(the)g(n)n(um)n(b)r(er)f(of)g(p)r(oin)n(ts)h(in)g │ │ │ │ │ (the)g(second)f(grid)g(direction.)307 5407 y Fc(\210)42 │ │ │ │ │ b Fi(n3)27 b Fn(is)h(the)g(n)n(um)n(b)r(er)f(of)g(p)r(oin)n(ts)h(in)g │ │ │ │ │ (the)g(third)g(grid)e(direction.)p eop end │ │ │ │ │ %%Page: 10 10 │ │ │ │ │ -TeXDict begin 10 9 bop 0 100 a Fn(10)p 166 100 1072 4 │ │ │ │ │ -v 1236 w Fi(Multithreaded)23 b Fg(:)36 b Fh(DRAFT)28 │ │ │ │ │ -b Fg(Ma)n(y)f(1,)g(2024)p 2829 100 V 307 390 a Fc(\210)42 │ │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fn(10)p 166 100 1065 4 │ │ │ │ │ +v 1230 w Fi(Multithreaded)22 b Fg(:)37 b Fh(DRAFT)27 │ │ │ │ │ +b Fg(June)h(3,)f(2025)p 2835 100 V 307 390 a Fc(\210)42 │ │ │ │ │ b Fn(The)28 b Fi(seed)e Fn(parameter)g(is)h(a)h(random)e(n)n(um)n(b)r │ │ │ │ │ (er)i(seed.)307 523 y Fc(\210)42 b Fn(The)28 b Fi(nrhs)e │ │ │ │ │ Fn(parameter)g(is)h(the)h(n)n(um)n(b)r(er)g(of)f(righ)n(t)g(hand)h │ │ │ │ │ (sides)f(to)h(solv)n(e)e(as)h(one)g(blo)r(c)n(k.)307 │ │ │ │ │ 656 y Fc(\210)42 b Fn(The)28 b Fi(type)e Fn(parameter)g(sp)r(eci\014es) │ │ │ │ │ h(a)h(real)e(or)h(complex)g(linear)g(system.)456 789 │ │ │ │ │ y Fa({)41 b Fi(type)h(=)i(1)f(\(SPOOLES)p 1295 789 27 │ │ │ │ │ ├── ps2ascii {} │ │ │ │ │ │ @@ -35,15 +35,15 @@ │ │ │ │ │ │ by independent topological traversals of the front tree. It is the list and working storage data structures (the │ │ │ │ │ │ ChvList, ChvManager and SubMtxManager objects) that have locks. What is done is common code between │ │ │ │ │ │ the serial and multithreaded environments, it is the choreography, i.e., who does what, that differs. │ │ │ │ │ │ Most of these same comments apply to the multithreaded solve methods. The calling sequences between │ │ │ │ │ │ the serial and multithreaded solves differs by one parameter, a SolveMap object that maps the submatrices │ │ │ │ │ │ of the factor matrix to the threads that will compute with them. │ │ │ │ │ │ 1 │ │ │ │ │ │ - 2 Multithreaded : DRAFT May 1, 2024 │ │ │ │ │ │ + 2 Multithreaded : DRAFT June 3, 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 May 1, 2024 3 │ │ │ │ │ │ + Multithreaded : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 4 Multithreaded : DRAFT June 3, 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 May 1, 2024 5 │ │ │ │ │ │ + Multithreaded : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 6 Multithreaded : DRAFT June 3, 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 May 1, 2024 7 │ │ │ │ │ │ + Multithreaded : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 8 Multithreaded : DRAFT June 3, 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 May 1, 2024 9 │ │ │ │ │ │ + Multithreaded : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 10 Multithreaded : DRAFT June 3, 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.05.01:0544 │ │ │ │ │ +%DVIPSSource: TeX output 2025.06.03:1221 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -1541,21 +1541,22 @@ │ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ │ /UnderlineThickness 50 def │ │ │ │ │ end readonly def │ │ │ │ │ /Encoding 256 array │ │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ │ dup 44 /comma put │ │ │ │ │ dup 48 /zero put │ │ │ │ │ -dup 49 /one put │ │ │ │ │ dup 50 /two put │ │ │ │ │ -dup 52 /four put │ │ │ │ │ +dup 51 /three put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 77 /M put │ │ │ │ │ -dup 97 /a put │ │ │ │ │ -dup 121 /y put │ │ │ │ │ +dup 74 /J put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ +dup 110 /n put │ │ │ │ │ +dup 117 /u put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ │ @@ -1736,68 +1737,70 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004ACD1870 │ │ │ │ │ -A5EA947858F5795870BFE1343AD803FB854BF8F5A4E794E8EC57BE41DB5B8734 │ │ │ │ │ -13E47950F29A81EA0C81EA798863883D7F41F78325CA190CBBFFE822AE494550 │ │ │ │ │ -4BE83703071FC9512D128927AF3F63CEF8F86ABE1E15D7B4DDD39576E7DFF45E │ │ │ │ │ -3CB4115AAB1830DE8647B915DB4BEBEB5235C281E098B899BAB951D8D5798F01 │ │ │ │ │ -7F7C47336D31438E5126738AFEAB29E9A7CBE06DE4DD604477B542D2620DFD58 │ │ │ │ │ -28FE34238572F23C5A8EB7ACEE1E154DA13FC1A5AA67A3BA8C5CDFB2B80312C9 │ │ │ │ │ -BC9FAE56D08DDFA9498E6EF0D0F6BD18B3923E0B670B0740528BC843610736CB │ │ │ │ │ -80228C105C2F72C3C22D610C3D8C268DEEA2AEEE3221E198E79FE2966487360C │ │ │ │ │ -84AE08AC326F48B21447652121B1EB68AF857B8628F27BB4ED00F273E0DD044A │ │ │ │ │ -7D11A5BFAAC0A82328444CC9DD90167681B07D55CE28655F40C21250A226DEAB │ │ │ │ │ -2D46FFB680CB9242BE192AC0E55A44D45709FA6DE638C130D92C4E9B07BC3D61 │ │ │ │ │ -25CC2F0A7ED4F3574242FFE4461272EB1401266EEF551E0E2B0EF51FA8F250EC │ │ │ │ │ -FD9AFB6F5A0CC442B566BC24400133E3E9B9A9FC801CEF284FD2B3ECA43421FA │ │ │ │ │ -51E5D1EFE7BEAA96658362C438A0A5A6DCBC664A85EF88037B42355195B9D19C │ │ │ │ │ -7961D5F63B123451B298CD52C144FCD4F3641A823FBA14605E2DFD845E89102C │ │ │ │ │ -4E345CFD80E3EE6F097095A84C941FFC91B234F3615E4EE4C5D564284656E364 │ │ │ │ │ -AB9C4D1DE05F8FD065CA6064893F0CF3A3A501D59EF6568D05D818A010D06518 │ │ │ │ │ -E2C20418ADD1E652867F265084A27A5FE0C32213C59FFC3A84EDC89382521E5B │ │ │ │ │ -8AF66D76601F83C5C33CC9CF968C77B66F1FA074AC3DAD8E453C9264D03969EF │ │ │ │ │ -9E387BB3BEAA4BF0A9D88BA2CE6094E8996A3752A657E322A57AF006444BF516 │ │ │ │ │ -501C43CAA1BA7F16A3B6E4D3EBDECCCC19564DF18FB68194C132238A5441A21A │ │ │ │ │ -F52285CA1CA94A4BEC61EB509FA35EA5E393D662D938F4291F37EB7C2D5815BE │ │ │ │ │ -446813E1CFD06FFFFF2C4355C9DAFA48E765F4CC5DE4B9E37CFFB75E7A0B6F4B │ │ │ │ │ -4E412496F9C27DF4BDD90A869F0EBD81A57AE0B84051450A5A3E06CB9930DB2C │ │ │ │ │ -7C2DDB774BE870AEFCC9F4F067BE243FF3FD4B5C71B96C607DC4975973AF2650 │ │ │ │ │ -E7DF2BE3523A370EEDD07B5456B96E372ED10510CE677C044E609F21E93652FD │ │ │ │ │ -33CE612F587530D12214A3719CDB170C315B5D8763D5D4C67B5CAE90309E77AC │ │ │ │ │ -B45EB356C13A7BDE0D7320A9849CA357E30D7CF1085FFD70071932C3180AFC28 │ │ │ │ │ -B093016BA3F49A3878C34BB4A8727A441EB6CFC1A73F2313A7BF8D32EDF27E62 │ │ │ │ │ -EBEBC058FBA80B136FD2DE05C673B66482224ECEC63EDFB519AC13B5CC6624A6 │ │ │ │ │ -B3FD79037DA3851E93A386115852DBA88B176F21EDDB5386DC7C993C4210B28F │ │ │ │ │ -438131A586E34A09724E7CE60139F8247BFF14D2674805B3BD454C134728A43E │ │ │ │ │ -139E0AF71A7AC5CE42041EC83FD454B00AD29959FCF007789FFAF2D3492DCA4B │ │ │ │ │ -566EAFE97591ABC51CD0CD9BCD64E285FB823E41AA817E96B2B224005DAA4E15 │ │ │ │ │ -2141DB436B9D3FBA4EE4C876FD19A2E5133106FE2B9F704CB9614FCDC91B7950 │ │ │ │ │ -57053F45A5ED993B48189AAFAD5289F97AE2B0AEB5606579F6BD75F743EDB5B6 │ │ │ │ │ -5AA8F8A64CE507A47325081B3A013DB1BD596CDD3A83D2F29B070D6F9C57496E │ │ │ │ │ -14DF3F0F731C3BB00F2CE3D4BBACF1320322195D1DEA7A545BB4725BD1C6EC3D │ │ │ │ │ -63250C72B897741F8599D9D9BD2FB50EC80EFF2ECD6CE6603E95AABB45462ACF │ │ │ │ │ -12B005EE5979B6B05BCE9B97061686102349142A3CCC26D57F2A3283DD8B6E2A │ │ │ │ │ -98885E48C0D4A1A5C9612EDCB3B3D265E9B8CCCCA5D99F07F96C15B27D6A161F │ │ │ │ │ -936599E503C2859927201CACC31581AB7AB84F9EC9FFADC239F01DCC55940AB7 │ │ │ │ │ -FA884AA1EB6494C8E53DAD66E75A317428ACF9D943A74683BF547958F67D9E36 │ │ │ │ │ -F985EED50DEBCF255756A821927CB73848DCF167E96E975E959DE27FE7BA4FBA │ │ │ │ │ -D0EFC003F019D87572D6F9C73FC5B880C3EEDB7EF98E5EC3D25D6FE0015A6590 │ │ │ │ │ -E3C6EE632D7F6558B914609A8829CD1DEAB83A3F1207D5C3AAC9EAEA9DE1B4F8 │ │ │ │ │ -2375C5D4F630BCE13475F941ED2324D2CD4DCF2285298EAA4FFF89433D853860 │ │ │ │ │ -A974A9FC0808580FBDE7D02EDBB3D8C65BD3109AE8B359E96BFB7E21C696F440 │ │ │ │ │ -312B0CCAD810BF070DF8FC281E8198EB20A7FF9C9BCD291D74BC75EE46799485 │ │ │ │ │ -1AB2AE36B7E525034D146A856AF3BD9057A0033C08B606B89DD130548950C93D │ │ │ │ │ -94A8C92C47A34A791B1C108D2F36E899B79358B8081CCFC3D1A2F0521E4E2AE4 │ │ │ │ │ -7F500D6F2A53E5393E44201287225912590ABC738E8726622B67C3425639CCFB │ │ │ │ │ -F450B78A4918 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004B9BA1CC │ │ │ │ │ +580D3C6BDA4DC1B80B4365F1C80512453FC5316EC2D928FB731C3D6403E3C18B │ │ │ │ │ +E8424D644DF5E9A2134229C5C91CA68DB8E85BA2BB40F538F585DA6FA4037718 │ │ │ │ │ +B8053EBBA1E765346BCD5BDAA6C38115D31611D8A87A2238C145F2DA2F92E4DF │ │ │ │ │ +3987BD9C4D2A3D460E8941A68B125BCD9EE4F9FD262C4C8A71F47A2C81975635 │ │ │ │ │ +F1B981C274C53FA2ACCDE4C9D0A7C62D6C1EFF91CFC6712CA6A9F333C9564FCB │ │ │ │ │ +2A70F0AD715A79B10A08AB069E2A3C93BC0AED19D0CA10134B8DDDE8AF548DB2 │ │ │ │ │ +3A4AAA9C29682CF135BB767DAA16169A127EB50A7EECEB6480CF56A7D0F8AC56 │ │ │ │ │ +4A5090B3D75A790372886AF568D94C8165975A05BFBFDF1FFBA45F70700BB9E0 │ │ │ │ │ +57F3249EF9E9C8AD9CBCF6E4FD592DC4CDD2D7864F7C8A3FA6FC44C25C0CE7E1 │ │ │ │ │ +299F8A90B32B75DEA28917531621E1E7E0ECEE9E01665DEE99FBCF3EC3F30686 │ │ │ │ │ +513D7CBA745E660502603865D5A3E82D24B3F94B2884B21DC53AED87F49380E0 │ │ │ │ │ +68EE79C580931308DA762670C1F86F07FFB479773CD9C5DE6F22980DEC973D1C │ │ │ │ │ +A1E162D73932561BAAB24DE51DC8708291B666B36BABCA1FEDB6DD9C22572914 │ │ │ │ │ +7194DA044319F362452D53DD4D9A59134838E540F1E23805CEF53FF4F7519385 │ │ │ │ │ +1FAE3061F94369FEB1232BDA2E2A281E6972FB4524EFA37A598E7CDC097683EA │ │ │ │ │ +1B609952AEC0799B4711AAAB22D6B1D5CC729DE70897FDDC48AF0A12E40FFE30 │ │ │ │ │ +6528C601E68E8CFA4BBF897CF89DB712DE108DD1F084EFD917BFD9A70A74EB8F │ │ │ │ │ +D0D5B43CCC30373A5E871F18A969D01C69C2B4377622A0C8C4D7C4C28DDE5586 │ │ │ │ │ +BD17D5D640A6F396BD41993BD1932EE10953847F82F7BB36480B67A4F69F0763 │ │ │ │ │ +69423D1803B7BB60594ABEEE9578076639B84D8323F56104438803D45402FEE3 │ │ │ │ │ +045DAB16C4459DA9BBE01D0385CC771FB8DABDD8A9D280C18553F92FE6591CFD │ │ │ │ │ +26B82F28E6673BD823598D3F6CE03BEE04D9A21ED908DFC4F640227C148F133D │ │ │ │ │ +D32113275297C16EBCC9028AFD9102DE50E9CF67E7CF8C42BB8E73D1DAF8A5E2 │ │ │ │ │ +EF5979426229664A990DEF980A7038D2F229789D4F6EDBE1FB81BEC1A1BB14D7 │ │ │ │ │ +882515C62660E8877BE942712D57B86A2E19995AF087DECB7FD5208583C020AE │ │ │ │ │ +FEC86A2826530AD855006225300E4655F443C9360A8BAC96B5B096DDC9B12EDF │ │ │ │ │ +C862215AD6C432CF345FE701757E4EBB8C65F46912CB0F4DEF53672F7298D8F7 │ │ │ │ │ +EE51A9C5DE689A8D36956B7F0410893C0998DB03B73B4024CB046F8F6B32E07F │ │ │ │ │ +CD28A68AFB7152E45F1021DCD520D8A429FCDCA4B8054BAF0B48C4443280F198 │ │ │ │ │ +3360B078E6DEC37772DA8B629CFFD1534E8AA10E26B0BC58E92B9BF280C8EE45 │ │ │ │ │ +618EECDE904249F5A2010DC55D1028DFF4F058260B2B0A46541D6157970F44BD │ │ │ │ │ +D7483802D56A81184119DDBC914E8E394CBEEB506B61BB1CE2A3465252E5D8A3 │ │ │ │ │ +6BDD2D067E69D4ECEFC7D5568378F5F8B38EAFF138014185FE19DF7358A7A780 │ │ │ │ │ +3BE0E2CCD1561113F2F2319BDB503230DD0866121604710CEBBAA659ABFC010B │ │ │ │ │ +5CC40E5807F461D87E75BDC6AD96BCEF62AF668D48D7A76D08B57650F35CF609 │ │ │ │ │ +C0F791AEBEB75E29FA69596BAB419804AECE0F0238AAE64A6C13A22EBF4E3EAC │ │ │ │ │ +3570DECE85F54064486B2364D63E94FEB7C16350CDA318510A45C8848DB470ED │ │ │ │ │ +BFAFD2365681D65CFF3E6C1B4B7C8AE3066F96E819D05B97F3A6C2BFF8A72978 │ │ │ │ │ +EEB7F632FF604AD003A3CCA5A0465D53033A646E8082D3491EDECA3DA1A0E1BB │ │ │ │ │ +64BF36946520438D2EE72FA9EB1CEEDF56510AADA55A8DE280E23C904E0810FA │ │ │ │ │ +A3177CF684F06A4042DE4CD4AB21E2F0616153BEEE58EBBD89911FA43BC52969 │ │ │ │ │ +230C8137DB34C13E147B06C7A3875A931E1AC127E7D3EA0DF8346B6971F80901 │ │ │ │ │ +DC37F2DE1A0B81FD93CA3B5EB9B29ECABA1492901B1BA261DAB872FB3431C718 │ │ │ │ │ +9C9CDA7864908CD773864908DEB44E343221C2C4C335341789A46325D94C767C │ │ │ │ │ +740E3B60CE6D452A3A665967F568671FD7DD460B404B9C3D2EDCD47A336AA2C7 │ │ │ │ │ +BB0B1AC3823978F610629EF7AB526098A7EE7076F50A146D8134BA2DEC1B8ACF │ │ │ │ │ +68A7E4A9B7BE17FB71480516F2D6A8866E56CFD7C7A41311F48DDDD9887DACB8 │ │ │ │ │ +73FDAF5F25E956AFB0A9D530DE2E1128F006AAC9A78715BA2F90C8FED3729BFA │ │ │ │ │ +BDDD4098F870A27A91A0CB540D166FF86A442E95C9C361FD23378A2A138EAFB8 │ │ │ │ │ +D7050B486E1CB95068D890BCCD669456F3385C8F1793CE545099421368FE0F46 │ │ │ │ │ +53137AD2B65030B19CE7FF6B1669DB7A3C440AEF27149780E36C7097B7A8B71B │ │ │ │ │ +8789EECFA9A70B1F9695BB5D94E9A7D341291C1CA1BDEF4BE3EFCB8234CE9FFD │ │ │ │ │ +E1C4963CF919780129FA60162FEAA8AE97328F4BA14D949057A3EE74214F2D29 │ │ │ │ │ +51E7BE584446F6702F39957AE455CF8AF0C36AADAA39B53553D923CA5E9D4988 │ │ │ │ │ +76701B4F77DAE5185AC29900 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -4659,19 +4662,19 @@ │ │ │ │ │ 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 23[45 19[83 18[25 5[45 1[45 45 45 3[25 44[{}9 │ │ │ │ │ -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 │ │ │ │ │ +/Fe 138[51 6[51 8[40 26[47 15[25 4[45 1[45 45 1[45 3[25 │ │ │ │ │ +44[{}10 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 │ │ │ │ │ /afii61664.cap/arrowleft/arrowright/tieaccentlowercase/tieaccentcapital │ │ │ │ │ /tieaccentlowercase.new/tieaccentcapital.new/.notdef/afii61664.asc/uni2422 3 │ │ │ │ │ {/.notdef}repeat/dollar/.notdef/.notdef/quotesingle/.notdef/.notdef │ │ │ │ │ @@ -4800,17 +4803,17 @@ │ │ │ │ │ y Fn(and)j Fl(y)g Fk(2)d Fl(Y)1814 5308 y Fh(I)1886 5294 │ │ │ │ │ y Fn(b)s(ecomes)k(t)m(w)m(o)h(edges,)h(\()p Fl(x;)15 │ │ │ │ │ b(y)2871 5261 y Fg(\000)2930 5294 y Fn(\))33 b(and)g(\()p │ │ │ │ │ Fl(y)3261 5261 y Ff(+)3320 5294 y Fl(;)15 b(x)p Fn(\),)34 │ │ │ │ │ b(b)s(oth)e(with)227 5407 y(in\014nite)e(capacit)m(y)-8 │ │ │ │ │ b(.)1927 5656 y(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fn(2)p 136 100 1154 4 v │ │ │ │ │ -1336 w Fm(Network)28 b Fe(:)41 b Fd(DRAFT)30 b Fe(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2746 100 V 137 399 a Fj(\210)45 b Fn(An)33 b(edge)g(\()p │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fn(2)p 136 100 1147 4 v │ │ │ │ │ +1329 w Fm(Network)28 b Fe(:)41 b Fd(DRAFT)30 b Fe(June)g(3,)h(2025)p │ │ │ │ │ +2753 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 │ │ │ │ │ @@ -4885,17 +4888,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 1154 4 v 1335 100 a Fm(Network)29 │ │ │ │ │ -b Fe(:)40 b Fd(DRAFT)122 b Fe(Ma)m(y)31 b(1,)g(2024)p │ │ │ │ │ -2699 100 V 1154 w Fn(3)137 399 y Fj(\210)45 b Fm(int)i(narc)29 │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1147 4 v 1328 100 a Fm(Network)29 │ │ │ │ │ +b Fe(:)41 b Fd(DRAFT)121 b Fe(June)29 b(3,)i(2025)p 2706 │ │ │ │ │ +100 V 1147 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 │ │ │ │ │ @@ -4940,17 +4943,17 @@ │ │ │ │ │ (h)m(unks.)0 5059 y Fc(1.2)135 b(Protot)l(yp)t(es)46 │ │ │ │ │ b(and)f(descriptions)g(of)g Fb(Network)d Fc(metho)t(ds)0 │ │ │ │ │ 5294 y Fn(This)f(section)j(con)m(tains)f(brief)f(descriptions)g │ │ │ │ │ (including)f(protot)m(yp)s(es)i(of)f(all)h(metho)s(ds)f(that)h(b)s │ │ │ │ │ (elong)f(to)h(the)0 5407 y Fm(Network)28 b Fn(ob)5 b(ject.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fn(4)p 136 100 1154 4 v │ │ │ │ │ -1336 w Fm(Network)28 b Fe(:)41 b Fd(DRAFT)30 b Fe(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2746 100 V 0 399 a Fa(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fn(4)p 136 100 1147 4 v │ │ │ │ │ +1329 w Fm(Network)28 b Fe(:)41 b Fd(DRAFT)30 b Fe(June)g(3,)h(2025)p │ │ │ │ │ +2753 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 │ │ │ │ │ @@ -5013,17 +5016,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 1154 4 v 1335 100 a Fm(Network)29 │ │ │ │ │ -b Fe(:)40 b Fd(DRAFT)122 b Fe(Ma)m(y)31 b(1,)g(2024)p │ │ │ │ │ -2699 100 V 1154 w Fn(5)0 399 y Fa(1.2.3)112 b(Utilit)m(y)38 │ │ │ │ │ +TeXDict begin 5 4 bop 91 100 1147 4 v 1328 100 a Fm(Network)29 │ │ │ │ │ +b Fe(:)41 b Fd(DRAFT)121 b Fe(June)29 b(3,)i(2025)p 2706 │ │ │ │ │ +100 V 1147 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 │ │ │ │ │ @@ -5097,17 +5100,17 @@ │ │ │ │ │ Fn(is)g(in)g(the)h(comp)s(onen)m(t)g(that)g(con)m(tains)g(the)g(sink,)f │ │ │ │ │ (then)g Fm(mark[v])46 b(=)h(2)p Fn(.)227 5294 y Fd(Err)-5 │ │ │ │ │ b(or)32 b(che)-5 b(cking:)39 b Fn(If)28 b Fm(network)p │ │ │ │ │ Fn(,)f Fm(deq)g Fn(or)i Fm(mark)e Fn(is)h Fm(NULL)p Fn(,)f(or)i(if)f │ │ │ │ │ Fm(nnode)c Fk(\024)h Fn(0,)k(an)f(error)g(message)h(is)f(prin)m(ted)227 │ │ │ │ │ 5407 y(and)i(the)h(program)f(exits.)p eop end │ │ │ │ │ %%Page: 6 6 │ │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fn(6)p 136 100 1154 4 v │ │ │ │ │ -1336 w Fm(Network)28 b Fe(:)41 b Fd(DRAFT)30 b Fe(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2746 100 V 0 399 a Fa(1.2.4)112 b(IO)38 b(metho)s(ds)0 │ │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fn(6)p 136 100 1147 4 v │ │ │ │ │ +1329 w Fm(Network)28 b Fe(:)41 b Fd(DRAFT)30 b Fe(June)g(3,)h(2025)p │ │ │ │ │ +2753 100 V 0 399 a Fa(1.2.4)112 b(IO)38 b(metho)s(ds)0 │ │ │ │ │ 595 y Fn(There)30 b(are)h(t)m(w)m(o)g(IO)f(routines)g(for)h(debugging)f │ │ │ │ │ (purp)s(oses.)111 832 y(1.)46 b Fm(void)h(Network_writeForHumanEye)41 │ │ │ │ │ b(\()48 b(Network)d(*network,)h(FILE)g(*fp)h(\))h(;)227 │ │ │ │ │ 983 y Fn(This)20 b(metho)s(d)f(writes)i(the)f(net)m(w)m(ork)h(to)g(a)g │ │ │ │ │ (\014le)f(in)g(a)h(h)m(uman)e(readable)i(format.)38 b(The)20 │ │ │ │ │ b(metho)s(d)f Fm(Network)p 3762 983 29 4 v 33 w(writeStats\(\))227 │ │ │ │ │ 1096 y Fn(is)29 b(called)h(to)f(write)g(out)g(the)f(header)h(and)f │ │ │ │ │ ├── ps2ascii {} │ │ │ │ │ │ @@ -31,15 +31,15 @@ │ │ │ │ │ │ B B │ │ │ │ │ │ Similarly, an edge (x,y) where x ∈ Y and y ∈ Y is not found in the network. │ │ │ │ │ │ W W │ │ │ │ │ │ • An edge (x,y) where x ∈ Y and y ∈ Y becomes two edges, (x,y−) and (y+,x), both with │ │ │ │ │ │ B I │ │ │ │ │ │ infinite capacity. │ │ │ │ │ │ 1 │ │ │ │ │ │ - 2 Network : DRAFT May 1, 2024 │ │ │ │ │ │ + 2 Network : DRAFT June 3, 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 May 1, 2024 3 │ │ │ │ │ │ + Network : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 4 Network : DRAFT June 3, 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 May 1, 2024 5 │ │ │ │ │ │ + Network : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 6 Network : DRAFT June 3, 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.05.01:0544 │ │ │ │ │ +%DVIPSSource: TeX output 2025.06.03:1221 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -2039,21 +2039,22 @@ │ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ │ /UnderlineThickness 50 def │ │ │ │ │ end readonly def │ │ │ │ │ /Encoding 256 array │ │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ │ dup 44 /comma put │ │ │ │ │ dup 48 /zero put │ │ │ │ │ -dup 49 /one put │ │ │ │ │ dup 50 /two put │ │ │ │ │ -dup 52 /four put │ │ │ │ │ +dup 51 /three put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 77 /M put │ │ │ │ │ -dup 97 /a put │ │ │ │ │ -dup 121 /y put │ │ │ │ │ +dup 74 /J put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ +dup 110 /n put │ │ │ │ │ +dup 117 /u put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ │ @@ -2234,68 +2235,70 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004ACD1870 │ │ │ │ │ -A5EA947858F5795870BFE1343AD803FB854BF8F5A4E794E8EC57BE41DB5B8734 │ │ │ │ │ -13E47950F29A81EA0C81EA798863883D7F41F78325CA190CBBFFE822AE494550 │ │ │ │ │ -4BE83703071FC9512D128927AF3F63CEF8F86ABE1E15D7B4DDD39576E7DFF45E │ │ │ │ │ -3CB4115AAB1830DE8647B915DB4BEBEB5235C281E098B899BAB951D8D5798F01 │ │ │ │ │ -7F7C47336D31438E5126738AFEAB29E9A7CBE06DE4DD604477B542D2620DFD58 │ │ │ │ │ -28FE34238572F23C5A8EB7ACEE1E154DA13FC1A5AA67A3BA8C5CDFB2B80312C9 │ │ │ │ │ -BC9FAE56D08DDFA9498E6EF0D0F6BD18B3923E0B670B0740528BC843610736CB │ │ │ │ │ -80228C105C2F72C3C22D610C3D8C268DEEA2AEEE3221E198E79FE2966487360C │ │ │ │ │ -84AE08AC326F48B21447652121B1EB68AF857B8628F27BB4ED00F273E0DD044A │ │ │ │ │ -7D11A5BFAAC0A82328444CC9DD90167681B07D55CE28655F40C21250A226DEAB │ │ │ │ │ -2D46FFB680CB9242BE192AC0E55A44D45709FA6DE638C130D92C4E9B07BC3D61 │ │ │ │ │ -25CC2F0A7ED4F3574242FFE4461272EB1401266EEF551E0E2B0EF51FA8F250EC │ │ │ │ │ -FD9AFB6F5A0CC442B566BC24400133E3E9B9A9FC801CEF284FD2B3ECA43421FA │ │ │ │ │ -51E5D1EFE7BEAA96658362C438A0A5A6DCBC664A85EF88037B42355195B9D19C │ │ │ │ │ -7961D5F63B123451B298CD52C144FCD4F3641A823FBA14605E2DFD845E89102C │ │ │ │ │ -4E345CFD80E3EE6F097095A84C941FFC91B234F3615E4EE4C5D564284656E364 │ │ │ │ │ -AB9C4D1DE05F8FD065CA6064893F0CF3A3A501D59EF6568D05D818A010D06518 │ │ │ │ │ -E2C20418ADD1E652867F265084A27A5FE0C32213C59FFC3A84EDC89382521E5B │ │ │ │ │ -8AF66D76601F83C5C33CC9CF968C77B66F1FA074AC3DAD8E453C9264D03969EF │ │ │ │ │ -9E387BB3BEAA4BF0A9D88BA2CE6094E8996A3752A657E322A57AF006444BF516 │ │ │ │ │ -501C43CAA1BA7F16A3B6E4D3EBDECCCC19564DF18FB68194C132238A5441A21A │ │ │ │ │ -F52285CA1CA94A4BEC61EB509FA35EA5E393D662D938F4291F37EB7C2D5815BE │ │ │ │ │ -446813E1CFD06FFFFF2C4355C9DAFA48E765F4CC5DE4B9E37CFFB75E7A0B6F4B │ │ │ │ │ -4E412496F9C27DF4BDD90A869F0EBD81A57AE0B84051450A5A3E06CB9930DB2C │ │ │ │ │ -7C2DDB774BE870AEFCC9F4F067BE243FF3FD4B5C71B96C607DC4975973AF2650 │ │ │ │ │ -E7DF2BE3523A370EEDD07B5456B96E372ED10510CE677C044E609F21E93652FD │ │ │ │ │ -33CE612F587530D12214A3719CDB170C315B5D8763D5D4C67B5CAE90309E77AC │ │ │ │ │ -B45EB356C13A7BDE0D7320A9849CA357E30D7CF1085FFD70071932C3180AFC28 │ │ │ │ │ -B093016BA3F49A3878C34BB4A8727A441EB6CFC1A73F2313A7BF8D32EDF27E62 │ │ │ │ │ -EBEBC058FBA80B136FD2DE05C673B66482224ECEC63EDFB519AC13B5CC6624A6 │ │ │ │ │ -B3FD79037DA3851E93A386115852DBA88B176F21EDDB5386DC7C993C4210B28F │ │ │ │ │ -438131A586E34A09724E7CE60139F8247BFF14D2674805B3BD454C134728A43E │ │ │ │ │ -139E0AF71A7AC5CE42041EC83FD454B00AD29959FCF007789FFAF2D3492DCA4B │ │ │ │ │ -566EAFE97591ABC51CD0CD9BCD64E285FB823E41AA817E96B2B224005DAA4E15 │ │ │ │ │ -2141DB436B9D3FBA4EE4C876FD19A2E5133106FE2B9F704CB9614FCDC91B7950 │ │ │ │ │ -57053F45A5ED993B48189AAFAD5289F97AE2B0AEB5606579F6BD75F743EDB5B6 │ │ │ │ │ -5AA8F8A64CE507A47325081B3A013DB1BD596CDD3A83D2F29B070D6F9C57496E │ │ │ │ │ -14DF3F0F731C3BB00F2CE3D4BBACF1320322195D1DEA7A545BB4725BD1C6EC3D │ │ │ │ │ -63250C72B897741F8599D9D9BD2FB50EC80EFF2ECD6CE6603E95AABB45462ACF │ │ │ │ │ -12B005EE5979B6B05BCE9B97061686102349142A3CCC26D57F2A3283DD8B6E2A │ │ │ │ │ -98885E48C0D4A1A5C9612EDCB3B3D265E9B8CCCCA5D99F07F96C15B27D6A161F │ │ │ │ │ -936599E503C2859927201CACC31581AB7AB84F9EC9FFADC239F01DCC55940AB7 │ │ │ │ │ -FA884AA1EB6494C8E53DAD66E75A317428ACF9D943A74683BF547958F67D9E36 │ │ │ │ │ -F985EED50DEBCF255756A821927CB73848DCF167E96E975E959DE27FE7BA4FBA │ │ │ │ │ -D0EFC003F019D87572D6F9C73FC5B880C3EEDB7EF98E5EC3D25D6FE0015A6590 │ │ │ │ │ -E3C6EE632D7F6558B914609A8829CD1DEAB83A3F1207D5C3AAC9EAEA9DE1B4F8 │ │ │ │ │ -2375C5D4F630BCE13475F941ED2324D2CD4DCF2285298EAA4FFF89433D853860 │ │ │ │ │ -A974A9FC0808580FBDE7D02EDBB3D8C65BD3109AE8B359E96BFB7E21C696F440 │ │ │ │ │ -312B0CCAD810BF070DF8FC281E8198EB20A7FF9C9BCD291D74BC75EE46799485 │ │ │ │ │ -1AB2AE36B7E525034D146A856AF3BD9057A0033C08B606B89DD130548950C93D │ │ │ │ │ -94A8C92C47A34A791B1C108D2F36E899B79358B8081CCFC3D1A2F0521E4E2AE4 │ │ │ │ │ -7F500D6F2A53E5393E44201287225912590ABC738E8726622B67C3425639CCFB │ │ │ │ │ -F450B78A4918 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004B9BA1CC │ │ │ │ │ +580D3C6BDA4DC1B80B4365F1C80512453FC5316EC2D928FB731C3D6403E3C18B │ │ │ │ │ +E8424D644DF5E9A2134229C5C91CA68DB8E85BA2BB40F538F585DA6FA4037718 │ │ │ │ │ +B8053EBBA1E765346BCD5BDAA6C38115D31611D8A87A2238C145F2DA2F92E4DF │ │ │ │ │ +3987BD9C4D2A3D460E8941A68B125BCD9EE4F9FD262C4C8A71F47A2C81975635 │ │ │ │ │ +F1B981C274C53FA2ACCDE4C9D0A7C62D6C1EFF91CFC6712CA6A9F333C9564FCB │ │ │ │ │ +2A70F0AD715A79B10A08AB069E2A3C93BC0AED19D0CA10134B8DDDE8AF548DB2 │ │ │ │ │ +3A4AAA9C29682CF135BB767DAA16169A127EB50A7EECEB6480CF56A7D0F8AC56 │ │ │ │ │ +4A5090B3D75A790372886AF568D94C8165975A05BFBFDF1FFBA45F70700BB9E0 │ │ │ │ │ +57F3249EF9E9C8AD9CBCF6E4FD592DC4CDD2D7864F7C8A3FA6FC44C25C0CE7E1 │ │ │ │ │ +299F8A90B32B75DEA28917531621E1E7E0ECEE9E01665DEE99FBCF3EC3F30686 │ │ │ │ │ +513D7CBA745E660502603865D5A3E82D24B3F94B2884B21DC53AED87F49380E0 │ │ │ │ │ +68EE79C580931308DA762670C1F86F07FFB479773CD9C5DE6F22980DEC973D1C │ │ │ │ │ +A1E162D73932561BAAB24DE51DC8708291B666B36BABCA1FEDB6DD9C22572914 │ │ │ │ │ +7194DA044319F362452D53DD4D9A59134838E540F1E23805CEF53FF4F7519385 │ │ │ │ │ +1FAE3061F94369FEB1232BDA2E2A281E6972FB4524EFA37A598E7CDC097683EA │ │ │ │ │ +1B609952AEC0799B4711AAAB22D6B1D5CC729DE70897FDDC48AF0A12E40FFE30 │ │ │ │ │ +6528C601E68E8CFA4BBF897CF89DB712DE108DD1F084EFD917BFD9A70A74EB8F │ │ │ │ │ +D0D5B43CCC30373A5E871F18A969D01C69C2B4377622A0C8C4D7C4C28DDE5586 │ │ │ │ │ +BD17D5D640A6F396BD41993BD1932EE10953847F82F7BB36480B67A4F69F0763 │ │ │ │ │ +69423D1803B7BB60594ABEEE9578076639B84D8323F56104438803D45402FEE3 │ │ │ │ │ +045DAB16C4459DA9BBE01D0385CC771FB8DABDD8A9D280C18553F92FE6591CFD │ │ │ │ │ +26B82F28E6673BD823598D3F6CE03BEE04D9A21ED908DFC4F640227C148F133D │ │ │ │ │ +D32113275297C16EBCC9028AFD9102DE50E9CF67E7CF8C42BB8E73D1DAF8A5E2 │ │ │ │ │ +EF5979426229664A990DEF980A7038D2F229789D4F6EDBE1FB81BEC1A1BB14D7 │ │ │ │ │ +882515C62660E8877BE942712D57B86A2E19995AF087DECB7FD5208583C020AE │ │ │ │ │ +FEC86A2826530AD855006225300E4655F443C9360A8BAC96B5B096DDC9B12EDF │ │ │ │ │ +C862215AD6C432CF345FE701757E4EBB8C65F46912CB0F4DEF53672F7298D8F7 │ │ │ │ │ +EE51A9C5DE689A8D36956B7F0410893C0998DB03B73B4024CB046F8F6B32E07F │ │ │ │ │ +CD28A68AFB7152E45F1021DCD520D8A429FCDCA4B8054BAF0B48C4443280F198 │ │ │ │ │ +3360B078E6DEC37772DA8B629CFFD1534E8AA10E26B0BC58E92B9BF280C8EE45 │ │ │ │ │ +618EECDE904249F5A2010DC55D1028DFF4F058260B2B0A46541D6157970F44BD │ │ │ │ │ +D7483802D56A81184119DDBC914E8E394CBEEB506B61BB1CE2A3465252E5D8A3 │ │ │ │ │ +6BDD2D067E69D4ECEFC7D5568378F5F8B38EAFF138014185FE19DF7358A7A780 │ │ │ │ │ +3BE0E2CCD1561113F2F2319BDB503230DD0866121604710CEBBAA659ABFC010B │ │ │ │ │ +5CC40E5807F461D87E75BDC6AD96BCEF62AF668D48D7A76D08B57650F35CF609 │ │ │ │ │ +C0F791AEBEB75E29FA69596BAB419804AECE0F0238AAE64A6C13A22EBF4E3EAC │ │ │ │ │ +3570DECE85F54064486B2364D63E94FEB7C16350CDA318510A45C8848DB470ED │ │ │ │ │ +BFAFD2365681D65CFF3E6C1B4B7C8AE3066F96E819D05B97F3A6C2BFF8A72978 │ │ │ │ │ +EEB7F632FF604AD003A3CCA5A0465D53033A646E8082D3491EDECA3DA1A0E1BB │ │ │ │ │ +64BF36946520438D2EE72FA9EB1CEEDF56510AADA55A8DE280E23C904E0810FA │ │ │ │ │ +A3177CF684F06A4042DE4CD4AB21E2F0616153BEEE58EBBD89911FA43BC52969 │ │ │ │ │ +230C8137DB34C13E147B06C7A3875A931E1AC127E7D3EA0DF8346B6971F80901 │ │ │ │ │ +DC37F2DE1A0B81FD93CA3B5EB9B29ECABA1492901B1BA261DAB872FB3431C718 │ │ │ │ │ +9C9CDA7864908CD773864908DEB44E343221C2C4C335341789A46325D94C767C │ │ │ │ │ +740E3B60CE6D452A3A665967F568671FD7DD460B404B9C3D2EDCD47A336AA2C7 │ │ │ │ │ +BB0B1AC3823978F610629EF7AB526098A7EE7076F50A146D8134BA2DEC1B8ACF │ │ │ │ │ +68A7E4A9B7BE17FB71480516F2D6A8866E56CFD7C7A41311F48DDDD9887DACB8 │ │ │ │ │ +73FDAF5F25E956AFB0A9D530DE2E1128F006AAC9A78715BA2F90C8FED3729BFA │ │ │ │ │ +BDDD4098F870A27A91A0CB540D166FF86A442E95C9C361FD23378A2A138EAFB8 │ │ │ │ │ +D7050B486E1CB95068D890BCCD669456F3385C8F1793CE545099421368FE0F46 │ │ │ │ │ +53137AD2B65030B19CE7FF6B1669DB7A3C440AEF27149780E36C7097B7A8B71B │ │ │ │ │ +8789EECFA9A70B1F9695BB5D94E9A7D341291C1CA1BDEF4BE3EFCB8234CE9FFD │ │ │ │ │ +E1C4963CF919780129FA60162FEAA8AE97328F4BA14D949057A3EE74214F2D29 │ │ │ │ │ +51E7BE584446F6702F39957AE455CF8AF0C36AADAA39B53553D923CA5E9D4988 │ │ │ │ │ +76701B4F77DAE5185AC29900 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -4751,17 +4754,17 @@ │ │ │ │ │ rf /Fb 139[62 4[62 62 5[62 1[62 1[62 62 1[62 16[62 6[62 │ │ │ │ │ 1[62 5[62 65[{}12 119.552 /CMTT12 rf /Fc 149[25 2[45 │ │ │ │ │ 45 81[71 18[25 1[{}5 90.9091 /CMSY10 rf /Fd 132[52 123[{}1 │ │ │ │ │ 90.9091 /CMBX10 rf /Fe 134[71 3[75 52 53 55 1[75 67 75 │ │ │ │ │ 112 3[37 75 1[41 61 75 60 1[65 13[75 2[92 11[103 17[67 │ │ │ │ │ 67 2[37 46[{}22 119.552 /CMBX12 rf /Ff 141[38 2[46 51 │ │ │ │ │ 2[42 1[28 46 42 1[42 1[42 14[65 1[66 11[59 62 69 2[68 │ │ │ │ │ -6[28 58[{}16 90.9091 /CMTI10 rf /Fg 134[48 23[45 19[83 │ │ │ │ │ -18[25 5[45 1[45 45 45 3[25 44[{}9 90.9091 /CMSL10 rf │ │ │ │ │ -/Fh 255[55{}1 66.4176 /CMSY8 rf /Fi 220[48 48 34[{}2 │ │ │ │ │ +6[28 58[{}16 90.9091 /CMTI10 rf /Fg 138[51 6[51 8[40 │ │ │ │ │ +26[47 15[25 4[45 1[45 45 1[45 3[25 44[{}10 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 │ │ │ │ │ /Dotaccent/cedilla/ogonek/quotesinglbase.ts1 4{/.notdef}repeat │ │ │ │ │ @@ -4890,18 +4893,18 @@ │ │ │ │ │ (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 987 4 v │ │ │ │ │ -1169 w Fn(PatchAndGoInfo)26 b Fg(:)41 b Ff(DRAFT)30 b │ │ │ │ │ -Fg(Ma)m(y)i(1,)f(2024)p 2913 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 │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fo(2)p 136 100 980 4 v │ │ │ │ │ +1162 w Fn(PatchAndGoInfo)26 b Fg(:)41 b Ff(DRAFT)30 b │ │ │ │ │ +Fg(June)g(3,)h(2025)p 2920 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 │ │ │ │ │ @@ -4954,63 +4957,63 @@ │ │ │ │ │ (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 987 4 v 1168 100 a Fn(PatchAndGoInfo)27 │ │ │ │ │ -b Fg(:)40 b Ff(DRAFT)122 b Fg(Ma)m(y)31 b(1,)g(2024)p │ │ │ │ │ -2866 100 V 987 w Fo(3)111 399 y(3.)46 b Fn(void)h │ │ │ │ │ -(PatchAndGoInfo_clearData)41 b(\()48 b(PatchAndGoInfo)43 │ │ │ │ │ -b(*info)k(\))g(;)227 549 y Fo(This)35 b(metho)s(d)f(clears)i(an)m(y)g │ │ │ │ │ -(data)f(o)m(wned)g(b)m(y)g(the)h(ob)5 b(ject.)56 b(If)34 │ │ │ │ │ -b Fn(fudgeIV)f Fo(is)i(not)h Fn(NULL)e Fo(it)h(is)h(free'd)f(b)m(y)g(a) │ │ │ │ │ -227 662 y(call)c(to)f Fn(IV)p 605 662 29 4 v 34 w(free\(\))p │ │ │ │ │ -Fo(.)38 b(If)29 b Fn(fudgeDV)e Fo(is)i(not)h Fn(NULL)e │ │ │ │ │ -Fo(it)i(is)f(free'd)g(b)m(y)g(a)h(call)g(to)g Fn(DV)p │ │ │ │ │ -2914 662 V 34 w(free\(\))p Fo(.)39 b(The)28 b(structure's)227 │ │ │ │ │ -775 y(default)j(\014elds)f(are)g(then)g(set)h(with)f(a)h(call)h(to)f │ │ │ │ │ -Fn(PatchAndGoInfo)p 2505 775 V 31 w(setDefaultFields\(\))p │ │ │ │ │ -Fo(.)227 925 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.)111 1112 │ │ │ │ │ -y(4.)46 b Fn(void)h(PatchAndGoInfo_free)42 b(\()48 b(PatchAndGoInfo)c │ │ │ │ │ -(*info)i(\))i(;)227 1263 y Fo(This)31 b(metho)s(d)g(releases)h(an)m(y)g │ │ │ │ │ -(storage)h(b)m(y)e(a)h(call)h(to)f Fn(PatchAndGoInfo)p │ │ │ │ │ -2748 1263 V 31 w(clearData\(\))c Fo(then)j(free's)h(the)227 │ │ │ │ │ -1376 y(storage)g(for)e(the)h(structure)f(with)g(a)h(call)g(to)g │ │ │ │ │ -Fn(free\(\))p Fo(.)227 1526 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.)0 1794 y Fa(1.2.2)112 b(Initializer)38 b(metho)s(ds)111 │ │ │ │ │ -1991 y Fo(1.)46 b Fn(void)h(PatchAndGoInfo_init)42 b(\()48 │ │ │ │ │ -b(PatchAndGoInfo)c(*info,)i(int)h(strategy,)e(double)h(toosmall,)1516 │ │ │ │ │ -2104 y(double)g(fudge,)g(int)h(storeids,)e(int)i(storevalues)e(\))i(;) │ │ │ │ │ -227 2254 y Fo(This)36 b(metho)s(d)g(initializes)i(the)f(ob)5 │ │ │ │ │ -b(ject.)59 b(Presen)m(tly)-8 b(,)40 b(t)m(w)m(o)d(strategies)i(are)d │ │ │ │ │ -(supp)s(orted:)51 b Fn(strategy)46 b(=)h(1)227 2367 y │ │ │ │ │ -Fo(for)37 b(optimization)j(matrices)e(and)f Fn(strategy)46 │ │ │ │ │ -b(=)h(2)37 b Fo(for)g(structural)h(analysis)g(matrices.)63 │ │ │ │ │ -b Fn(toosmall)35 b Fo(is)227 2480 y(the)25 b(cuto\013)h(for)f(diagonal) │ │ │ │ │ -h(en)m(try)f(mo)s(di\014cation,)i(if)d(an)h(en)m(try)g(has)g(magnitude) │ │ │ │ │ -g(less)g(than)g Fn(toosmall)e Fo(some)227 2593 y(action)i(is)e(tak)m │ │ │ │ │ -(en.)40 b(F)-8 b(or)24 b(the)f(second)h(strategy)-8 b(,)26 │ │ │ │ │ -b(the)e Fn(fudge)e Fo(parameter)h(con)m(tributes)h(to)g(the)g(p)s │ │ │ │ │ -(erturbation.)227 2706 y(When)k Fn(storeids)d Fo(is)j(not)g(zero,)i │ │ │ │ │ -(the)e Fn(fudgeIV)e Fo(ob)5 b(ject)28 b(is)g(created)h(to)g(accum)m │ │ │ │ │ -(ulate)g(the)f(lo)s(cations)i(of)e(the)227 2819 y(p)s(erturbations.)43 │ │ │ │ │ -b(When)31 b Fn(storevalues)d Fo(is)j(not)h(zero,)g(the)g │ │ │ │ │ -Fn(fudgeDV)d Fo(ob)5 b(ject)32 b(is)g(created)g(to)g(accum)m(ulate)227 │ │ │ │ │ -2931 y(information)f(on)f(the)h(p)s(erturbations)e(themselv)m(es.)227 │ │ │ │ │ -3082 y Ff(Err)-5 b(or)31 b(che)-5 b(cking:)38 b Fo(If)26 │ │ │ │ │ -b Fn(info)f Fo(is)i Fn(NULL)e Fo(or)i Fn(strategy)d Fo(is)i(not)h(1)g │ │ │ │ │ -(or)f(2,)i(or)f Fn(toosmall)d Fo(or)i Fn(fudge)g Fo(are)g(less)h(than) │ │ │ │ │ -227 3195 y(zero,)32 b(an)e(error)g(message)h(is)g(prin)m(ted)f(and)g │ │ │ │ │ -(the)g(program)g(exits.)p eop end │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 980 4 v 1161 100 a Fn(PatchAndGoInfo)27 │ │ │ │ │ +b Fg(:)41 b Ff(DRAFT)121 b Fg(June)29 b(3,)i(2025)p 2873 │ │ │ │ │ +100 V 980 w Fo(3)111 399 y(3.)46 b Fn(void)h(PatchAndGoInfo_clearData) │ │ │ │ │ +41 b(\()48 b(PatchAndGoInfo)43 b(*info)k(\))g(;)227 549 │ │ │ │ │ +y Fo(This)35 b(metho)s(d)f(clears)i(an)m(y)g(data)f(o)m(wned)g(b)m(y)g │ │ │ │ │ +(the)h(ob)5 b(ject.)56 b(If)34 b Fn(fudgeIV)f Fo(is)i(not)h │ │ │ │ │ +Fn(NULL)e Fo(it)h(is)h(free'd)f(b)m(y)g(a)227 662 y(call)c(to)f │ │ │ │ │ +Fn(IV)p 605 662 29 4 v 34 w(free\(\))p Fo(.)38 b(If)29 │ │ │ │ │ +b Fn(fudgeDV)e Fo(is)i(not)h Fn(NULL)e Fo(it)i(is)f(free'd)g(b)m(y)g(a) │ │ │ │ │ +h(call)g(to)g Fn(DV)p 2914 662 V 34 w(free\(\))p Fo(.)39 │ │ │ │ │ +b(The)28 b(structure's)227 775 y(default)j(\014elds)f(are)g(then)g(set) │ │ │ │ │ +h(with)f(a)h(call)h(to)f Fn(PatchAndGoInfo)p 2505 775 │ │ │ │ │ +V 31 w(setDefaultFields\(\))p Fo(.)227 925 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.)111 1112 y(4.)46 b Fn(void)h(PatchAndGoInfo_free)42 │ │ │ │ │ +b(\()48 b(PatchAndGoInfo)c(*info)i(\))i(;)227 1263 y │ │ │ │ │ +Fo(This)31 b(metho)s(d)g(releases)h(an)m(y)g(storage)h(b)m(y)e(a)h │ │ │ │ │ +(call)h(to)f Fn(PatchAndGoInfo)p 2748 1263 V 31 w(clearData\(\))c │ │ │ │ │ +Fo(then)j(free's)h(the)227 1376 y(storage)g(for)e(the)h(structure)f │ │ │ │ │ +(with)g(a)h(call)g(to)g Fn(free\(\))p Fo(.)227 1526 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.)0 1794 y Fa(1.2.2)112 b(Initializer)38 │ │ │ │ │ +b(metho)s(ds)111 1991 y Fo(1.)46 b Fn(void)h(PatchAndGoInfo_init)42 │ │ │ │ │ +b(\()48 b(PatchAndGoInfo)c(*info,)i(int)h(strategy,)e(double)h │ │ │ │ │ +(toosmall,)1516 2104 y(double)g(fudge,)g(int)h(storeids,)e(int)i │ │ │ │ │ +(storevalues)e(\))i(;)227 2254 y Fo(This)36 b(metho)s(d)g(initializes)i │ │ │ │ │ +(the)f(ob)5 b(ject.)59 b(Presen)m(tly)-8 b(,)40 b(t)m(w)m(o)d │ │ │ │ │ +(strategies)i(are)d(supp)s(orted:)51 b Fn(strategy)46 │ │ │ │ │ +b(=)h(1)227 2367 y Fo(for)37 b(optimization)j(matrices)e(and)f │ │ │ │ │ +Fn(strategy)46 b(=)h(2)37 b Fo(for)g(structural)h(analysis)g(matrices.) │ │ │ │ │ +63 b Fn(toosmall)35 b Fo(is)227 2480 y(the)25 b(cuto\013)h(for)f │ │ │ │ │ +(diagonal)h(en)m(try)f(mo)s(di\014cation,)i(if)d(an)h(en)m(try)g(has)g │ │ │ │ │ +(magnitude)g(less)g(than)g Fn(toosmall)e Fo(some)227 │ │ │ │ │ +2593 y(action)i(is)e(tak)m(en.)40 b(F)-8 b(or)24 b(the)f(second)h │ │ │ │ │ +(strategy)-8 b(,)26 b(the)e Fn(fudge)e Fo(parameter)h(con)m(tributes)h │ │ │ │ │ +(to)g(the)g(p)s(erturbation.)227 2706 y(When)k Fn(storeids)d │ │ │ │ │ +Fo(is)j(not)g(zero,)i(the)e Fn(fudgeIV)e Fo(ob)5 b(ject)28 │ │ │ │ │ +b(is)g(created)h(to)g(accum)m(ulate)g(the)f(lo)s(cations)i(of)e(the)227 │ │ │ │ │ +2819 y(p)s(erturbations.)43 b(When)31 b Fn(storevalues)d │ │ │ │ │ +Fo(is)j(not)h(zero,)g(the)g Fn(fudgeDV)d Fo(ob)5 b(ject)32 │ │ │ │ │ +b(is)g(created)g(to)g(accum)m(ulate)227 2931 y(information)f(on)f(the)h │ │ │ │ │ +(p)s(erturbations)e(themselv)m(es.)227 3082 y Ff(Err)-5 │ │ │ │ │ +b(or)31 b(che)-5 b(cking:)38 b Fo(If)26 b Fn(info)f Fo(is)i │ │ │ │ │ +Fn(NULL)e Fo(or)i Fn(strategy)d Fo(is)i(not)h(1)g(or)f(2,)i(or)f │ │ │ │ │ +Fn(toosmall)d Fo(or)i Fn(fudge)g Fo(are)g(less)h(than)227 │ │ │ │ │ +3195 y(zero,)32 b(an)e(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 866 a Fp(Index)0 1289 y Fn(PatchAndGoInfo)p │ │ │ │ │ 678 1289 29 4 v 31 w(clearData\(\))p Fo(,)27 b(3)0 1402 │ │ │ │ │ y Fn(PatchAndGoInfo)p 678 1402 V 31 w(free\(\))p Fo(,)h(3)0 │ │ │ │ │ 1515 y Fn(PatchAndGoInfo)p 678 1515 V 31 w(init\(\))p │ │ │ │ │ Fo(,)g(3)0 1628 y Fn(PatchAndGoInfo)p 678 1628 V 31 w(new\(\))p │ │ │ │ │ Fo(,)h(2)0 1741 y Fn(PatchAndGoInfo)p 678 1741 V 31 w │ │ │ │ │ ├── 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 May 1, 2024 │ │ │ │ │ │ + 2 PatchAndGoInfo : DRAFT June 3, 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 May 1, 2024 3 │ │ │ │ │ │ + PatchAndGoInfo : DRAFT June 3, 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.05.01:0544 │ │ │ │ │ +%DVIPSSource: TeX output 2025.06.03:1221 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -1880,21 +1880,22 @@ │ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ │ /UnderlineThickness 50 def │ │ │ │ │ end readonly def │ │ │ │ │ /Encoding 256 array │ │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ │ dup 44 /comma put │ │ │ │ │ dup 48 /zero put │ │ │ │ │ -dup 49 /one put │ │ │ │ │ dup 50 /two put │ │ │ │ │ -dup 52 /four put │ │ │ │ │ +dup 51 /three put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 77 /M put │ │ │ │ │ -dup 97 /a put │ │ │ │ │ -dup 121 /y put │ │ │ │ │ +dup 74 /J put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ +dup 110 /n put │ │ │ │ │ +dup 117 /u put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ │ @@ -2075,68 +2076,70 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004ACD1870 │ │ │ │ │ -A5EA947858F5795870BFE1343AD803FB854BF8F5A4E794E8EC57BE41DB5B8734 │ │ │ │ │ -13E47950F29A81EA0C81EA798863883D7F41F78325CA190CBBFFE822AE494550 │ │ │ │ │ -4BE83703071FC9512D128927AF3F63CEF8F86ABE1E15D7B4DDD39576E7DFF45E │ │ │ │ │ -3CB4115AAB1830DE8647B915DB4BEBEB5235C281E098B899BAB951D8D5798F01 │ │ │ │ │ -7F7C47336D31438E5126738AFEAB29E9A7CBE06DE4DD604477B542D2620DFD58 │ │ │ │ │ -28FE34238572F23C5A8EB7ACEE1E154DA13FC1A5AA67A3BA8C5CDFB2B80312C9 │ │ │ │ │ -BC9FAE56D08DDFA9498E6EF0D0F6BD18B3923E0B670B0740528BC843610736CB │ │ │ │ │ -80228C105C2F72C3C22D610C3D8C268DEEA2AEEE3221E198E79FE2966487360C │ │ │ │ │ -84AE08AC326F48B21447652121B1EB68AF857B8628F27BB4ED00F273E0DD044A │ │ │ │ │ -7D11A5BFAAC0A82328444CC9DD90167681B07D55CE28655F40C21250A226DEAB │ │ │ │ │ -2D46FFB680CB9242BE192AC0E55A44D45709FA6DE638C130D92C4E9B07BC3D61 │ │ │ │ │ -25CC2F0A7ED4F3574242FFE4461272EB1401266EEF551E0E2B0EF51FA8F250EC │ │ │ │ │ -FD9AFB6F5A0CC442B566BC24400133E3E9B9A9FC801CEF284FD2B3ECA43421FA │ │ │ │ │ -51E5D1EFE7BEAA96658362C438A0A5A6DCBC664A85EF88037B42355195B9D19C │ │ │ │ │ -7961D5F63B123451B298CD52C144FCD4F3641A823FBA14605E2DFD845E89102C │ │ │ │ │ -4E345CFD80E3EE6F097095A84C941FFC91B234F3615E4EE4C5D564284656E364 │ │ │ │ │ -AB9C4D1DE05F8FD065CA6064893F0CF3A3A501D59EF6568D05D818A010D06518 │ │ │ │ │ -E2C20418ADD1E652867F265084A27A5FE0C32213C59FFC3A84EDC89382521E5B │ │ │ │ │ -8AF66D76601F83C5C33CC9CF968C77B66F1FA074AC3DAD8E453C9264D03969EF │ │ │ │ │ -9E387BB3BEAA4BF0A9D88BA2CE6094E8996A3752A657E322A57AF006444BF516 │ │ │ │ │ -501C43CAA1BA7F16A3B6E4D3EBDECCCC19564DF18FB68194C132238A5441A21A │ │ │ │ │ -F52285CA1CA94A4BEC61EB509FA35EA5E393D662D938F4291F37EB7C2D5815BE │ │ │ │ │ -446813E1CFD06FFFFF2C4355C9DAFA48E765F4CC5DE4B9E37CFFB75E7A0B6F4B │ │ │ │ │ -4E412496F9C27DF4BDD90A869F0EBD81A57AE0B84051450A5A3E06CB9930DB2C │ │ │ │ │ -7C2DDB774BE870AEFCC9F4F067BE243FF3FD4B5C71B96C607DC4975973AF2650 │ │ │ │ │ -E7DF2BE3523A370EEDD07B5456B96E372ED10510CE677C044E609F21E93652FD │ │ │ │ │ -33CE612F587530D12214A3719CDB170C315B5D8763D5D4C67B5CAE90309E77AC │ │ │ │ │ -B45EB356C13A7BDE0D7320A9849CA357E30D7CF1085FFD70071932C3180AFC28 │ │ │ │ │ -B093016BA3F49A3878C34BB4A8727A441EB6CFC1A73F2313A7BF8D32EDF27E62 │ │ │ │ │ -EBEBC058FBA80B136FD2DE05C673B66482224ECEC63EDFB519AC13B5CC6624A6 │ │ │ │ │ -B3FD79037DA3851E93A386115852DBA88B176F21EDDB5386DC7C993C4210B28F │ │ │ │ │ -438131A586E34A09724E7CE60139F8247BFF14D2674805B3BD454C134728A43E │ │ │ │ │ -139E0AF71A7AC5CE42041EC83FD454B00AD29959FCF007789FFAF2D3492DCA4B │ │ │ │ │ -566EAFE97591ABC51CD0CD9BCD64E285FB823E41AA817E96B2B224005DAA4E15 │ │ │ │ │ -2141DB436B9D3FBA4EE4C876FD19A2E5133106FE2B9F704CB9614FCDC91B7950 │ │ │ │ │ -57053F45A5ED993B48189AAFAD5289F97AE2B0AEB5606579F6BD75F743EDB5B6 │ │ │ │ │ -5AA8F8A64CE507A47325081B3A013DB1BD596CDD3A83D2F29B070D6F9C57496E │ │ │ │ │ -14DF3F0F731C3BB00F2CE3D4BBACF1320322195D1DEA7A545BB4725BD1C6EC3D │ │ │ │ │ -63250C72B897741F8599D9D9BD2FB50EC80EFF2ECD6CE6603E95AABB45462ACF │ │ │ │ │ -12B005EE5979B6B05BCE9B97061686102349142A3CCC26D57F2A3283DD8B6E2A │ │ │ │ │ -98885E48C0D4A1A5C9612EDCB3B3D265E9B8CCCCA5D99F07F96C15B27D6A161F │ │ │ │ │ -936599E503C2859927201CACC31581AB7AB84F9EC9FFADC239F01DCC55940AB7 │ │ │ │ │ -FA884AA1EB6494C8E53DAD66E75A317428ACF9D943A74683BF547958F67D9E36 │ │ │ │ │ -F985EED50DEBCF255756A821927CB73848DCF167E96E975E959DE27FE7BA4FBA │ │ │ │ │ -D0EFC003F019D87572D6F9C73FC5B880C3EEDB7EF98E5EC3D25D6FE0015A6590 │ │ │ │ │ -E3C6EE632D7F6558B914609A8829CD1DEAB83A3F1207D5C3AAC9EAEA9DE1B4F8 │ │ │ │ │ -2375C5D4F630BCE13475F941ED2324D2CD4DCF2285298EAA4FFF89433D853860 │ │ │ │ │ -A974A9FC0808580FBDE7D02EDBB3D8C65BD3109AE8B359E96BFB7E21C696F440 │ │ │ │ │ -312B0CCAD810BF070DF8FC281E8198EB20A7FF9C9BCD291D74BC75EE46799485 │ │ │ │ │ -1AB2AE36B7E525034D146A856AF3BD9057A0033C08B606B89DD130548950C93D │ │ │ │ │ -94A8C92C47A34A791B1C108D2F36E899B79358B8081CCFC3D1A2F0521E4E2AE4 │ │ │ │ │ -7F500D6F2A53E5393E44201287225912590ABC738E8726622B67C3425639CCFB │ │ │ │ │ -F450B78A4918 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004B9BA1CC │ │ │ │ │ +580D3C6BDA4DC1B80B4365F1C80512453FC5316EC2D928FB731C3D6403E3C18B │ │ │ │ │ +E8424D644DF5E9A2134229C5C91CA68DB8E85BA2BB40F538F585DA6FA4037718 │ │ │ │ │ +B8053EBBA1E765346BCD5BDAA6C38115D31611D8A87A2238C145F2DA2F92E4DF │ │ │ │ │ +3987BD9C4D2A3D460E8941A68B125BCD9EE4F9FD262C4C8A71F47A2C81975635 │ │ │ │ │ +F1B981C274C53FA2ACCDE4C9D0A7C62D6C1EFF91CFC6712CA6A9F333C9564FCB │ │ │ │ │ +2A70F0AD715A79B10A08AB069E2A3C93BC0AED19D0CA10134B8DDDE8AF548DB2 │ │ │ │ │ +3A4AAA9C29682CF135BB767DAA16169A127EB50A7EECEB6480CF56A7D0F8AC56 │ │ │ │ │ +4A5090B3D75A790372886AF568D94C8165975A05BFBFDF1FFBA45F70700BB9E0 │ │ │ │ │ +57F3249EF9E9C8AD9CBCF6E4FD592DC4CDD2D7864F7C8A3FA6FC44C25C0CE7E1 │ │ │ │ │ +299F8A90B32B75DEA28917531621E1E7E0ECEE9E01665DEE99FBCF3EC3F30686 │ │ │ │ │ +513D7CBA745E660502603865D5A3E82D24B3F94B2884B21DC53AED87F49380E0 │ │ │ │ │ +68EE79C580931308DA762670C1F86F07FFB479773CD9C5DE6F22980DEC973D1C │ │ │ │ │ +A1E162D73932561BAAB24DE51DC8708291B666B36BABCA1FEDB6DD9C22572914 │ │ │ │ │ +7194DA044319F362452D53DD4D9A59134838E540F1E23805CEF53FF4F7519385 │ │ │ │ │ +1FAE3061F94369FEB1232BDA2E2A281E6972FB4524EFA37A598E7CDC097683EA │ │ │ │ │ +1B609952AEC0799B4711AAAB22D6B1D5CC729DE70897FDDC48AF0A12E40FFE30 │ │ │ │ │ +6528C601E68E8CFA4BBF897CF89DB712DE108DD1F084EFD917BFD9A70A74EB8F │ │ │ │ │ +D0D5B43CCC30373A5E871F18A969D01C69C2B4377622A0C8C4D7C4C28DDE5586 │ │ │ │ │ +BD17D5D640A6F396BD41993BD1932EE10953847F82F7BB36480B67A4F69F0763 │ │ │ │ │ +69423D1803B7BB60594ABEEE9578076639B84D8323F56104438803D45402FEE3 │ │ │ │ │ +045DAB16C4459DA9BBE01D0385CC771FB8DABDD8A9D280C18553F92FE6591CFD │ │ │ │ │ +26B82F28E6673BD823598D3F6CE03BEE04D9A21ED908DFC4F640227C148F133D │ │ │ │ │ +D32113275297C16EBCC9028AFD9102DE50E9CF67E7CF8C42BB8E73D1DAF8A5E2 │ │ │ │ │ +EF5979426229664A990DEF980A7038D2F229789D4F6EDBE1FB81BEC1A1BB14D7 │ │ │ │ │ +882515C62660E8877BE942712D57B86A2E19995AF087DECB7FD5208583C020AE │ │ │ │ │ +FEC86A2826530AD855006225300E4655F443C9360A8BAC96B5B096DDC9B12EDF │ │ │ │ │ +C862215AD6C432CF345FE701757E4EBB8C65F46912CB0F4DEF53672F7298D8F7 │ │ │ │ │ +EE51A9C5DE689A8D36956B7F0410893C0998DB03B73B4024CB046F8F6B32E07F │ │ │ │ │ +CD28A68AFB7152E45F1021DCD520D8A429FCDCA4B8054BAF0B48C4443280F198 │ │ │ │ │ +3360B078E6DEC37772DA8B629CFFD1534E8AA10E26B0BC58E92B9BF280C8EE45 │ │ │ │ │ +618EECDE904249F5A2010DC55D1028DFF4F058260B2B0A46541D6157970F44BD │ │ │ │ │ +D7483802D56A81184119DDBC914E8E394CBEEB506B61BB1CE2A3465252E5D8A3 │ │ │ │ │ +6BDD2D067E69D4ECEFC7D5568378F5F8B38EAFF138014185FE19DF7358A7A780 │ │ │ │ │ +3BE0E2CCD1561113F2F2319BDB503230DD0866121604710CEBBAA659ABFC010B │ │ │ │ │ +5CC40E5807F461D87E75BDC6AD96BCEF62AF668D48D7A76D08B57650F35CF609 │ │ │ │ │ +C0F791AEBEB75E29FA69596BAB419804AECE0F0238AAE64A6C13A22EBF4E3EAC │ │ │ │ │ +3570DECE85F54064486B2364D63E94FEB7C16350CDA318510A45C8848DB470ED │ │ │ │ │ +BFAFD2365681D65CFF3E6C1B4B7C8AE3066F96E819D05B97F3A6C2BFF8A72978 │ │ │ │ │ +EEB7F632FF604AD003A3CCA5A0465D53033A646E8082D3491EDECA3DA1A0E1BB │ │ │ │ │ +64BF36946520438D2EE72FA9EB1CEEDF56510AADA55A8DE280E23C904E0810FA │ │ │ │ │ +A3177CF684F06A4042DE4CD4AB21E2F0616153BEEE58EBBD89911FA43BC52969 │ │ │ │ │ +230C8137DB34C13E147B06C7A3875A931E1AC127E7D3EA0DF8346B6971F80901 │ │ │ │ │ +DC37F2DE1A0B81FD93CA3B5EB9B29ECABA1492901B1BA261DAB872FB3431C718 │ │ │ │ │ +9C9CDA7864908CD773864908DEB44E343221C2C4C335341789A46325D94C767C │ │ │ │ │ +740E3B60CE6D452A3A665967F568671FD7DD460B404B9C3D2EDCD47A336AA2C7 │ │ │ │ │ +BB0B1AC3823978F610629EF7AB526098A7EE7076F50A146D8134BA2DEC1B8ACF │ │ │ │ │ +68A7E4A9B7BE17FB71480516F2D6A8866E56CFD7C7A41311F48DDDD9887DACB8 │ │ │ │ │ +73FDAF5F25E956AFB0A9D530DE2E1128F006AAC9A78715BA2F90C8FED3729BFA │ │ │ │ │ +BDDD4098F870A27A91A0CB540D166FF86A442E95C9C361FD23378A2A138EAFB8 │ │ │ │ │ +D7050B486E1CB95068D890BCCD669456F3385C8F1793CE545099421368FE0F46 │ │ │ │ │ +53137AD2B65030B19CE7FF6B1669DB7A3C440AEF27149780E36C7097B7A8B71B │ │ │ │ │ +8789EECFA9A70B1F9695BB5D94E9A7D341291C1CA1BDEF4BE3EFCB8234CE9FFD │ │ │ │ │ +E1C4963CF919780129FA60162FEAA8AE97328F4BA14D949057A3EE74214F2D29 │ │ │ │ │ +51E7BE584446F6702F39957AE455CF8AF0C36AADAA39B53553D923CA5E9D4988 │ │ │ │ │ +76701B4F77DAE5185AC29900 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -4086,19 +4089,19 @@ │ │ │ │ │ %%EndFont │ │ │ │ │ TeXDict begin 40258437 52099151 1000 600 600 (main.dvi) │ │ │ │ │ @start /Fa 171[41 84[{}1 66.4176 /CMMI8 rf /Fb 152[45 │ │ │ │ │ 45 102[{}2 90.9091 /CMSY10 rf /Fc 133[50 59 4[44 44 3[56 │ │ │ │ │ 62 93 31 2[31 62 2[51 62 50 1[54 11[86 5[84 5[42 6[80 │ │ │ │ │ 13[56 56 56 56 2[31 46[{}23 99.6264 /CMBX12 rf /Fd 141[38 │ │ │ │ │ 2[46 51 2[42 1[28 46 42 1[42 1[42 14[65 1[66 11[59 62 │ │ │ │ │ -69 2[68 6[28 58[{}16 90.9091 /CMTI10 rf /Fe 134[48 23[45 │ │ │ │ │ -19[83 18[25 5[45 1[45 45 45 3[25 44[{}9 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 │ │ │ │ │ +69 2[68 6[28 58[{}16 90.9091 /CMTI10 rf /Fe 138[51 6[51 │ │ │ │ │ +8[40 26[47 15[25 4[45 1[45 45 1[45 3[25 44[{}10 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 │ │ │ │ │ /tieaccentlowercase.new/tieaccentcapital.new/.notdef/afii61664.asc/uni2422 3 │ │ │ │ │ {/.notdef}repeat/dollar/.notdef/.notdef/quotesingle/.notdef/.notdef │ │ │ │ │ @@ -4195,17 +4198,17 @@ │ │ │ │ │ (shift)f(v)-5 b(alue.)0 5061 y Fi(1.2)135 b(Protot)l(yp)t(es)46 │ │ │ │ │ b(and)f(descriptions)g(of)g Ff(Pencil)d Fi(metho)t(ds)0 │ │ │ │ │ 5294 y Fl(This)f(section)j(con)m(tains)f(brief)f(descriptions)g │ │ │ │ │ (including)f(protot)m(yp)s(es)i(of)f(all)h(metho)s(ds)f(that)h(b)s │ │ │ │ │ (elong)f(to)h(the)0 5407 y Fj(Pencil)29 b Fl(ob)5 b(ject.)1927 │ │ │ │ │ 5656 y(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fl(2)p 136 100 1250 4 v │ │ │ │ │ -1431 w Fj(Chv)30 b Fe(:)40 b Fd(DRAFT)31 b Fe(Ma)m(y)g(1,)g(2024)p │ │ │ │ │ -2651 100 V 0 399 a Fc(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fl(2)p 136 100 1243 4 v │ │ │ │ │ +1424 w Fj(Chv)30 b Fe(:)41 b Fd(DRAFT)30 b Fe(June)f(3,)i(2025)p │ │ │ │ │ +2658 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 │ │ │ │ │ @@ -4261,26 +4264,26 @@ │ │ │ │ │ (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 1250 4 v 1431 100 a Fj(Chv)29 │ │ │ │ │ -b Fe(:)41 b Fd(DRAFT)121 b Fe(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2604 100 V 1250 w Fl(3)111 399 y(3.)46 b Fj(void)h │ │ │ │ │ -(Pencil_sortAndCompress)42 b(\()47 b(Pencil)f(*pencil)g(\))h(;)227 │ │ │ │ │ -554 y Fl(This)20 b(metho)s(d)h(simply)f(calls)i(the)f │ │ │ │ │ -Fj(InpMtx)p 1662 554 29 4 v 33 w(sortAndCompress\(\))16 │ │ │ │ │ -b Fl(metho)s(d)k(for)h(eac)m(h)h(of)f(its)g(t)m(w)m(o)i(matrices.)227 │ │ │ │ │ -709 y Fd(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fl(If)30 │ │ │ │ │ -b Fj(pencil)f Fl(is)h Fj(NULL)p Fl(,)g(an)g(error)g(message)i(is)e │ │ │ │ │ -(prin)m(ted)g(and)g(zero)h(is)f(returned.)111 906 y(4.)46 │ │ │ │ │ -b Fj(void)h(Pencil_convertToVectors)41 b(\()48 b(Pencil)e(*pencil)g(\)) │ │ │ │ │ -h(;)227 1061 y Fl(This)20 b(metho)s(d)h(simply)f(calls)i(the)f │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1243 4 v 1424 100 a Fj(Chv)29 │ │ │ │ │ +b Fe(:)41 b Fd(DRAFT)121 b Fe(June)30 b(3,)h(2025)p 2611 │ │ │ │ │ +100 V 1243 w Fl(3)111 399 y(3.)46 b Fj(void)h(Pencil_sortAndCompress)42 │ │ │ │ │ +b(\()47 b(Pencil)f(*pencil)g(\))h(;)227 554 y Fl(This)20 │ │ │ │ │ +b(metho)s(d)h(simply)f(calls)i(the)f Fj(InpMtx)p 1662 │ │ │ │ │ +554 29 4 v 33 w(sortAndCompress\(\))16 b Fl(metho)s(d)k(for)h(eac)m(h)h │ │ │ │ │ +(of)f(its)g(t)m(w)m(o)i(matrices.)227 709 y Fd(Err)-5 │ │ │ │ │ +b(or)34 b(che)-5 b(cking:)40 b Fl(If)30 b Fj(pencil)f │ │ │ │ │ +Fl(is)h Fj(NULL)p Fl(,)g(an)g(error)g(message)i(is)e(prin)m(ted)g(and)g │ │ │ │ │ +(zero)h(is)f(returned.)111 906 y(4.)46 b Fj(void)h │ │ │ │ │ +(Pencil_convertToVectors)41 b(\()48 b(Pencil)e(*pencil)g(\))h(;)227 │ │ │ │ │ +1061 y Fl(This)20 b(metho)s(d)h(simply)f(calls)i(the)f │ │ │ │ │ Fj(InpMtx)p 1662 1061 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 │ │ │ │ │ 1216 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 1413 y(5.)46 │ │ │ │ │ b Fj(void)h(Pencil_mapToLowerTriangl)o(e)42 b(\()47 b(Pencil)f(*pencil) │ │ │ │ │ g(\))i(;)227 1568 y Fl(This)42 b(metho)s(d)g(simply)g(calls)h(the)g │ │ │ │ │ @@ -4332,17 +4335,17 @@ │ │ │ │ │ 5294 y Fj(SPOOLES)p 569 5294 V 33 w(HERMITIAN)p Fl(,)38 │ │ │ │ │ b(en)m(tries)j(in)f(the)h(lo)m(w)m(er)g(triangle)h(are)f(dropp)s(ed.)68 │ │ │ │ │ b(If)40 b Fj(randomflag)e Fl(is)i(one,)k(the)227 5407 │ │ │ │ │ y(en)m(tries)31 b(are)g(\014lled)f(with)g(random)g(n)m(um)m(b)s(ers)f │ │ │ │ │ (using)h(the)g Fj(Drand)f Fl(random)h(n)m(um)m(b)s(er)f(generator)j │ │ │ │ │ Fj(drand)p Fl(.)p eop end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fl(4)p 136 100 1250 4 v │ │ │ │ │ -1431 w Fj(Chv)30 b Fe(:)40 b Fd(DRAFT)31 b Fe(Ma)m(y)g(1,)g(2024)p │ │ │ │ │ -2651 100 V 227 399 a Fg(Note:)52 b Fl(this)36 b(metho)s(d)g(w)m(as)g │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fl(4)p 136 100 1243 4 v │ │ │ │ │ +1424 w Fj(Chv)30 b Fe(:)41 b Fd(DRAFT)30 b Fe(June)f(3,)i(2025)p │ │ │ │ │ +2658 100 V 227 399 a Fg(Note:)52 b Fl(this)36 b(metho)s(d)g(w)m(as)g │ │ │ │ │ (created)i(for)e(an)g(MPI)g(application.)59 b(If)36 b │ │ │ │ │ Fj(myid)f Fl(is)h(zero,)j(then)d(the)g(\014les)h(are)227 │ │ │ │ │ 511 y(read)30 b(in,)g(otherwise)h(just)e(stubs)g(are)h(created)h(for)f │ │ │ │ │ (the)g(in)m(ternal)h(matrix)f(ob)5 b(jects.)41 b(In)30 │ │ │ │ │ b(our)f(MPI)h(driv)m(ers,)227 624 y(pro)s(cess)d(zero)i(reads)e(in)g │ │ │ │ │ (the)h(matrices)g(and)f(then)g(starts)h(the)g(pro)s(cess)f(to)h │ │ │ │ │ (distribute)f(them)h(to)g(the)g(other)227 737 y(pro)s(cesses.)227 │ │ │ │ │ ├── ps2ascii {} │ │ │ │ │ │ @@ -16,15 +16,15 @@ │ │ │ │ │ │ • InpMtx *inpmtxB : pointer to the matrix object for B. If inpmtxB is NULL, then B is the │ │ │ │ │ │ identity matrix. │ │ │ │ │ │ • double sigma[2] : real or complex scalar shift value. │ │ │ │ │ │ 1.2 Prototypes and descriptions of Pencil methods │ │ │ │ │ │ This section contains brief descriptions including prototypes of all methods that belong to the │ │ │ │ │ │ Pencil object. │ │ │ │ │ │ 1 │ │ │ │ │ │ - 2 Chv : DRAFT May 1, 2024 │ │ │ │ │ │ + 2 Chv : DRAFT June 3, 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 May 1, 2024 3 │ │ │ │ │ │ + Chv : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 4 Chv : DRAFT June 3, 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.05.01:0544 │ │ │ │ │ +%DVIPSSource: TeX output 2025.06.03:1221 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -1014,21 +1014,22 @@ │ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ │ /UnderlineThickness 50 def │ │ │ │ │ end readonly def │ │ │ │ │ /Encoding 256 array │ │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ │ dup 44 /comma put │ │ │ │ │ dup 48 /zero put │ │ │ │ │ -dup 49 /one put │ │ │ │ │ dup 50 /two put │ │ │ │ │ -dup 52 /four put │ │ │ │ │ +dup 51 /three put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 77 /M put │ │ │ │ │ -dup 97 /a put │ │ │ │ │ -dup 121 /y put │ │ │ │ │ +dup 74 /J put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ +dup 110 /n put │ │ │ │ │ +dup 117 /u put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ │ @@ -1209,68 +1210,70 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004ACD1870 │ │ │ │ │ -A5EA947858F5795870BFE1343AD803FB854BF8F5A4E794E8EC57BE41DB5B8734 │ │ │ │ │ -13E47950F29A81EA0C81EA798863883D7F41F78325CA190CBBFFE822AE494550 │ │ │ │ │ -4BE83703071FC9512D128927AF3F63CEF8F86ABE1E15D7B4DDD39576E7DFF45E │ │ │ │ │ -3CB4115AAB1830DE8647B915DB4BEBEB5235C281E098B899BAB951D8D5798F01 │ │ │ │ │ -7F7C47336D31438E5126738AFEAB29E9A7CBE06DE4DD604477B542D2620DFD58 │ │ │ │ │ -28FE34238572F23C5A8EB7ACEE1E154DA13FC1A5AA67A3BA8C5CDFB2B80312C9 │ │ │ │ │ -BC9FAE56D08DDFA9498E6EF0D0F6BD18B3923E0B670B0740528BC843610736CB │ │ │ │ │ -80228C105C2F72C3C22D610C3D8C268DEEA2AEEE3221E198E79FE2966487360C │ │ │ │ │ -84AE08AC326F48B21447652121B1EB68AF857B8628F27BB4ED00F273E0DD044A │ │ │ │ │ -7D11A5BFAAC0A82328444CC9DD90167681B07D55CE28655F40C21250A226DEAB │ │ │ │ │ -2D46FFB680CB9242BE192AC0E55A44D45709FA6DE638C130D92C4E9B07BC3D61 │ │ │ │ │ -25CC2F0A7ED4F3574242FFE4461272EB1401266EEF551E0E2B0EF51FA8F250EC │ │ │ │ │ -FD9AFB6F5A0CC442B566BC24400133E3E9B9A9FC801CEF284FD2B3ECA43421FA │ │ │ │ │ -51E5D1EFE7BEAA96658362C438A0A5A6DCBC664A85EF88037B42355195B9D19C │ │ │ │ │ -7961D5F63B123451B298CD52C144FCD4F3641A823FBA14605E2DFD845E89102C │ │ │ │ │ -4E345CFD80E3EE6F097095A84C941FFC91B234F3615E4EE4C5D564284656E364 │ │ │ │ │ -AB9C4D1DE05F8FD065CA6064893F0CF3A3A501D59EF6568D05D818A010D06518 │ │ │ │ │ -E2C20418ADD1E652867F265084A27A5FE0C32213C59FFC3A84EDC89382521E5B │ │ │ │ │ -8AF66D76601F83C5C33CC9CF968C77B66F1FA074AC3DAD8E453C9264D03969EF │ │ │ │ │ -9E387BB3BEAA4BF0A9D88BA2CE6094E8996A3752A657E322A57AF006444BF516 │ │ │ │ │ -501C43CAA1BA7F16A3B6E4D3EBDECCCC19564DF18FB68194C132238A5441A21A │ │ │ │ │ -F52285CA1CA94A4BEC61EB509FA35EA5E393D662D938F4291F37EB7C2D5815BE │ │ │ │ │ -446813E1CFD06FFFFF2C4355C9DAFA48E765F4CC5DE4B9E37CFFB75E7A0B6F4B │ │ │ │ │ -4E412496F9C27DF4BDD90A869F0EBD81A57AE0B84051450A5A3E06CB9930DB2C │ │ │ │ │ -7C2DDB774BE870AEFCC9F4F067BE243FF3FD4B5C71B96C607DC4975973AF2650 │ │ │ │ │ -E7DF2BE3523A370EEDD07B5456B96E372ED10510CE677C044E609F21E93652FD │ │ │ │ │ -33CE612F587530D12214A3719CDB170C315B5D8763D5D4C67B5CAE90309E77AC │ │ │ │ │ -B45EB356C13A7BDE0D7320A9849CA357E30D7CF1085FFD70071932C3180AFC28 │ │ │ │ │ -B093016BA3F49A3878C34BB4A8727A441EB6CFC1A73F2313A7BF8D32EDF27E62 │ │ │ │ │ -EBEBC058FBA80B136FD2DE05C673B66482224ECEC63EDFB519AC13B5CC6624A6 │ │ │ │ │ -B3FD79037DA3851E93A386115852DBA88B176F21EDDB5386DC7C993C4210B28F │ │ │ │ │ -438131A586E34A09724E7CE60139F8247BFF14D2674805B3BD454C134728A43E │ │ │ │ │ -139E0AF71A7AC5CE42041EC83FD454B00AD29959FCF007789FFAF2D3492DCA4B │ │ │ │ │ -566EAFE97591ABC51CD0CD9BCD64E285FB823E41AA817E96B2B224005DAA4E15 │ │ │ │ │ -2141DB436B9D3FBA4EE4C876FD19A2E5133106FE2B9F704CB9614FCDC91B7950 │ │ │ │ │ -57053F45A5ED993B48189AAFAD5289F97AE2B0AEB5606579F6BD75F743EDB5B6 │ │ │ │ │ -5AA8F8A64CE507A47325081B3A013DB1BD596CDD3A83D2F29B070D6F9C57496E │ │ │ │ │ -14DF3F0F731C3BB00F2CE3D4BBACF1320322195D1DEA7A545BB4725BD1C6EC3D │ │ │ │ │ -63250C72B897741F8599D9D9BD2FB50EC80EFF2ECD6CE6603E95AABB45462ACF │ │ │ │ │ -12B005EE5979B6B05BCE9B97061686102349142A3CCC26D57F2A3283DD8B6E2A │ │ │ │ │ -98885E48C0D4A1A5C9612EDCB3B3D265E9B8CCCCA5D99F07F96C15B27D6A161F │ │ │ │ │ -936599E503C2859927201CACC31581AB7AB84F9EC9FFADC239F01DCC55940AB7 │ │ │ │ │ -FA884AA1EB6494C8E53DAD66E75A317428ACF9D943A74683BF547958F67D9E36 │ │ │ │ │ -F985EED50DEBCF255756A821927CB73848DCF167E96E975E959DE27FE7BA4FBA │ │ │ │ │ -D0EFC003F019D87572D6F9C73FC5B880C3EEDB7EF98E5EC3D25D6FE0015A6590 │ │ │ │ │ -E3C6EE632D7F6558B914609A8829CD1DEAB83A3F1207D5C3AAC9EAEA9DE1B4F8 │ │ │ │ │ -2375C5D4F630BCE13475F941ED2324D2CD4DCF2285298EAA4FFF89433D853860 │ │ │ │ │ -A974A9FC0808580FBDE7D02EDBB3D8C65BD3109AE8B359E96BFB7E21C696F440 │ │ │ │ │ -312B0CCAD810BF070DF8FC281E8198EB20A7FF9C9BCD291D74BC75EE46799485 │ │ │ │ │ -1AB2AE36B7E525034D146A856AF3BD9057A0033C08B606B89DD130548950C93D │ │ │ │ │ -94A8C92C47A34A791B1C108D2F36E899B79358B8081CCFC3D1A2F0521E4E2AE4 │ │ │ │ │ -7F500D6F2A53E5393E44201287225912590ABC738E8726622B67C3425639CCFB │ │ │ │ │ -F450B78A4918 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004B9BA1CC │ │ │ │ │ +580D3C6BDA4DC1B80B4365F1C80512453FC5316EC2D928FB731C3D6403E3C18B │ │ │ │ │ +E8424D644DF5E9A2134229C5C91CA68DB8E85BA2BB40F538F585DA6FA4037718 │ │ │ │ │ +B8053EBBA1E765346BCD5BDAA6C38115D31611D8A87A2238C145F2DA2F92E4DF │ │ │ │ │ +3987BD9C4D2A3D460E8941A68B125BCD9EE4F9FD262C4C8A71F47A2C81975635 │ │ │ │ │ +F1B981C274C53FA2ACCDE4C9D0A7C62D6C1EFF91CFC6712CA6A9F333C9564FCB │ │ │ │ │ +2A70F0AD715A79B10A08AB069E2A3C93BC0AED19D0CA10134B8DDDE8AF548DB2 │ │ │ │ │ +3A4AAA9C29682CF135BB767DAA16169A127EB50A7EECEB6480CF56A7D0F8AC56 │ │ │ │ │ +4A5090B3D75A790372886AF568D94C8165975A05BFBFDF1FFBA45F70700BB9E0 │ │ │ │ │ +57F3249EF9E9C8AD9CBCF6E4FD592DC4CDD2D7864F7C8A3FA6FC44C25C0CE7E1 │ │ │ │ │ +299F8A90B32B75DEA28917531621E1E7E0ECEE9E01665DEE99FBCF3EC3F30686 │ │ │ │ │ +513D7CBA745E660502603865D5A3E82D24B3F94B2884B21DC53AED87F49380E0 │ │ │ │ │ +68EE79C580931308DA762670C1F86F07FFB479773CD9C5DE6F22980DEC973D1C │ │ │ │ │ +A1E162D73932561BAAB24DE51DC8708291B666B36BABCA1FEDB6DD9C22572914 │ │ │ │ │ +7194DA044319F362452D53DD4D9A59134838E540F1E23805CEF53FF4F7519385 │ │ │ │ │ +1FAE3061F94369FEB1232BDA2E2A281E6972FB4524EFA37A598E7CDC097683EA │ │ │ │ │ +1B609952AEC0799B4711AAAB22D6B1D5CC729DE70897FDDC48AF0A12E40FFE30 │ │ │ │ │ +6528C601E68E8CFA4BBF897CF89DB712DE108DD1F084EFD917BFD9A70A74EB8F │ │ │ │ │ +D0D5B43CCC30373A5E871F18A969D01C69C2B4377622A0C8C4D7C4C28DDE5586 │ │ │ │ │ +BD17D5D640A6F396BD41993BD1932EE10953847F82F7BB36480B67A4F69F0763 │ │ │ │ │ +69423D1803B7BB60594ABEEE9578076639B84D8323F56104438803D45402FEE3 │ │ │ │ │ +045DAB16C4459DA9BBE01D0385CC771FB8DABDD8A9D280C18553F92FE6591CFD │ │ │ │ │ +26B82F28E6673BD823598D3F6CE03BEE04D9A21ED908DFC4F640227C148F133D │ │ │ │ │ +D32113275297C16EBCC9028AFD9102DE50E9CF67E7CF8C42BB8E73D1DAF8A5E2 │ │ │ │ │ +EF5979426229664A990DEF980A7038D2F229789D4F6EDBE1FB81BEC1A1BB14D7 │ │ │ │ │ +882515C62660E8877BE942712D57B86A2E19995AF087DECB7FD5208583C020AE │ │ │ │ │ +FEC86A2826530AD855006225300E4655F443C9360A8BAC96B5B096DDC9B12EDF │ │ │ │ │ +C862215AD6C432CF345FE701757E4EBB8C65F46912CB0F4DEF53672F7298D8F7 │ │ │ │ │ +EE51A9C5DE689A8D36956B7F0410893C0998DB03B73B4024CB046F8F6B32E07F │ │ │ │ │ +CD28A68AFB7152E45F1021DCD520D8A429FCDCA4B8054BAF0B48C4443280F198 │ │ │ │ │ +3360B078E6DEC37772DA8B629CFFD1534E8AA10E26B0BC58E92B9BF280C8EE45 │ │ │ │ │ +618EECDE904249F5A2010DC55D1028DFF4F058260B2B0A46541D6157970F44BD │ │ │ │ │ +D7483802D56A81184119DDBC914E8E394CBEEB506B61BB1CE2A3465252E5D8A3 │ │ │ │ │ +6BDD2D067E69D4ECEFC7D5568378F5F8B38EAFF138014185FE19DF7358A7A780 │ │ │ │ │ +3BE0E2CCD1561113F2F2319BDB503230DD0866121604710CEBBAA659ABFC010B │ │ │ │ │ +5CC40E5807F461D87E75BDC6AD96BCEF62AF668D48D7A76D08B57650F35CF609 │ │ │ │ │ +C0F791AEBEB75E29FA69596BAB419804AECE0F0238AAE64A6C13A22EBF4E3EAC │ │ │ │ │ +3570DECE85F54064486B2364D63E94FEB7C16350CDA318510A45C8848DB470ED │ │ │ │ │ +BFAFD2365681D65CFF3E6C1B4B7C8AE3066F96E819D05B97F3A6C2BFF8A72978 │ │ │ │ │ +EEB7F632FF604AD003A3CCA5A0465D53033A646E8082D3491EDECA3DA1A0E1BB │ │ │ │ │ +64BF36946520438D2EE72FA9EB1CEEDF56510AADA55A8DE280E23C904E0810FA │ │ │ │ │ +A3177CF684F06A4042DE4CD4AB21E2F0616153BEEE58EBBD89911FA43BC52969 │ │ │ │ │ +230C8137DB34C13E147B06C7A3875A931E1AC127E7D3EA0DF8346B6971F80901 │ │ │ │ │ +DC37F2DE1A0B81FD93CA3B5EB9B29ECABA1492901B1BA261DAB872FB3431C718 │ │ │ │ │ +9C9CDA7864908CD773864908DEB44E343221C2C4C335341789A46325D94C767C │ │ │ │ │ +740E3B60CE6D452A3A665967F568671FD7DD460B404B9C3D2EDCD47A336AA2C7 │ │ │ │ │ +BB0B1AC3823978F610629EF7AB526098A7EE7076F50A146D8134BA2DEC1B8ACF │ │ │ │ │ +68A7E4A9B7BE17FB71480516F2D6A8866E56CFD7C7A41311F48DDDD9887DACB8 │ │ │ │ │ +73FDAF5F25E956AFB0A9D530DE2E1128F006AAC9A78715BA2F90C8FED3729BFA │ │ │ │ │ +BDDD4098F870A27A91A0CB540D166FF86A442E95C9C361FD23378A2A138EAFB8 │ │ │ │ │ +D7050B486E1CB95068D890BCCD669456F3385C8F1793CE545099421368FE0F46 │ │ │ │ │ +53137AD2B65030B19CE7FF6B1669DB7A3C440AEF27149780E36C7097B7A8B71B │ │ │ │ │ +8789EECFA9A70B1F9695BB5D94E9A7D341291C1CA1BDEF4BE3EFCB8234CE9FFD │ │ │ │ │ +E1C4963CF919780129FA60162FEAA8AE97328F4BA14D949057A3EE74214F2D29 │ │ │ │ │ +51E7BE584446F6702F39957AE455CF8AF0C36AADAA39B53553D923CA5E9D4988 │ │ │ │ │ +76701B4F77DAE5185AC29900 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -3495,19 +3498,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 23[45 19[83 18[25 │ │ │ │ │ -5[45 1[45 45 45 3[25 44[{}9 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 138[51 6[51 8[40 26[47 │ │ │ │ │ +15[25 4[45 1[45 45 1[45 3[25 44[{}10 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 │ │ │ │ │ @@ -3599,17 +3602,17 @@ │ │ │ │ │ b(to)h(the)g(old-to-new)g(v)m(ector)0 5045 y Fh(1.2)135 │ │ │ │ │ b(Protot)l(yp)t(es)46 b(and)f(descriptions)g(of)g Fc(Perm)e │ │ │ │ │ Fh(metho)t(ds)0 5294 y Fj(This)25 b(section)h(con)m(tains)h(brief)e │ │ │ │ │ (descriptions)h(including)f(protot)m(yp)s(es)h(of)f(all)i(metho)s(ds)d │ │ │ │ │ (that)j(b)s(elong)e(to)h(the)g Fi(Perm)0 5407 y Fj(ob)5 │ │ │ │ │ b(ject.)1927 5656 y(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fj(2)p 136 100 1231 4 v │ │ │ │ │ -1413 w Fi(PERM)29 b Fb(:)h Fg(DRAFT)g Fb(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2670 100 V 0 399 a Fa(1.2.1)112 b(Basic)38 b(metho)s(ds)0 │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fj(2)p 136 100 1224 4 v │ │ │ │ │ +1406 w Fi(PERM)29 b Fb(:)h Fg(DRAFT)h Fb(June)e(3,)i(2025)p │ │ │ │ │ +2677 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) │ │ │ │ │ @@ -3664,17 +3667,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 1231 4 v 1412 100 a Fi(PERM)29 │ │ │ │ │ -b Fb(:)i Fg(DRAFT)121 b Fb(Ma)m(y)31 b(1,)g(2024)p 2622 │ │ │ │ │ -100 V 1231 w Fj(3)111 399 y(2.)46 b Fi(int)h(Perm_checkPerm)d(\()k │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1224 4 v 1405 100 a Fi(PERM)29 │ │ │ │ │ +b Fb(:)i Fg(DRAFT)121 b Fb(June)29 b(3,)i(2025)p 2629 │ │ │ │ │ +100 V 1224 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 │ │ │ │ │ @@ -3734,17 +3737,17 @@ │ │ │ │ │ b(metho)s(ds)0 4952 y Fj(There)30 b(are)h(the)f(usual)g(eigh)m(t)i(IO)e │ │ │ │ │ (routines.)40 b(The)30 b(\014le)h(structure)f(of)g(a)h │ │ │ │ │ Fi(Perm)e Fj(ob)5 b(ject)31 b(is)g(simple:)0 5181 y Fi(isPresent)d │ │ │ │ │ (size)0 5294 y(oldToNew[size])e Fj(\(if)31 b(presen)m(t\))0 │ │ │ │ │ 5407 y Fi(newToOld[size])26 b Fj(\(if)31 b(presen)m(t\))p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fj(4)p 136 100 1231 4 v │ │ │ │ │ -1413 w Fi(PERM)29 b Fb(:)h Fg(DRAFT)g Fb(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2670 100 V 111 399 a Fj(1.)46 b Fi(int)h(Perm_readFromFile)c(\()48 │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fj(4)p 136 100 1224 4 v │ │ │ │ │ +1406 w Fi(PERM)29 b Fb(:)h Fg(DRAFT)h Fb(June)e(3,)i(2025)p │ │ │ │ │ +2677 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 │ │ │ │ │ @@ -3824,17 +3827,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 1231 4 v 1412 100 a Fi(PERM)29 │ │ │ │ │ -b Fb(:)i Fg(DRAFT)121 b Fb(Ma)m(y)31 b(1,)g(2024)p 2622 │ │ │ │ │ -100 V 1231 w Fj(5)111 399 y(8.)46 b Fi(int)h(Perm_writeStats)d(\()j │ │ │ │ │ +TeXDict begin 5 4 bop 91 100 1224 4 v 1405 100 a Fi(PERM)29 │ │ │ │ │ +b Fb(:)i Fg(DRAFT)121 b Fb(June)29 b(3,)i(2025)p 2629 │ │ │ │ │ +100 V 1224 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 May 1, 2024 │ │ │ │ │ │ + 2 PERM : DRAFT June 3, 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 May 1, 2024 3 │ │ │ │ │ │ + PERM : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 4 PERM : DRAFT June 3, 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 May 1, 2024 5 │ │ │ │ │ │ + PERM : DRAFT June 3, 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.05.01:0544 │ │ │ │ │ +%DVIPSSource: TeX output 2025.06.03:1221 │ │ │ │ │ %%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 │ │ │ │ │ @@ -3848,23 +3848,22 @@ │ │ │ │ │ /UnderlineThickness 50 def │ │ │ │ │ end readonly def │ │ │ │ │ /Encoding 256 array │ │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ │ dup 44 /comma put │ │ │ │ │ dup 46 /period put │ │ │ │ │ dup 48 /zero put │ │ │ │ │ -dup 49 /one put │ │ │ │ │ dup 50 /two put │ │ │ │ │ -dup 52 /four put │ │ │ │ │ +dup 51 /three put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ dup 65 /A put │ │ │ │ │ dup 67 /C put │ │ │ │ │ dup 68 /D put │ │ │ │ │ dup 74 /J put │ │ │ │ │ dup 75 /K put │ │ │ │ │ -dup 77 /M put │ │ │ │ │ dup 80 /P put │ │ │ │ │ dup 87 /W put │ │ │ │ │ dup 97 /a put │ │ │ │ │ dup 99 /c put │ │ │ │ │ dup 100 /d put │ │ │ │ │ dup 101 /e put │ │ │ │ │ dup 102 /f put │ │ │ │ │ @@ -3874,15 +3873,14 @@ │ │ │ │ │ dup 110 /n put │ │ │ │ │ dup 111 /o put │ │ │ │ │ dup 114 /r put │ │ │ │ │ dup 115 /s put │ │ │ │ │ dup 116 /t put │ │ │ │ │ dup 117 /u put │ │ │ │ │ dup 118 /v put │ │ │ │ │ -dup 121 /y put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA │ │ │ │ │ 0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 │ │ │ │ │ 51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 │ │ │ │ │ 7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 │ │ │ │ │ @@ -4061,177 +4059,166 @@ │ │ │ │ │ 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 │ │ │ │ │ -41346775DF351AD5498ED52E40C0F8F49B8D68433757F1C9052F978712176068 │ │ │ │ │ -553422B3BEFF2C4E4D1A07FC8453F5872490ED09C3FD5A251A2F2C38954A1FDE │ │ │ │ │ -B02F3ABE284471E72883AA4F96A404041065A75BDD5EC764EC43B6C6D4E8ECD6 │ │ │ │ │ -8B5D694D9C5DD7495A71532BD132001D3A900E22B34A20F294F219078601FB69 │ │ │ │ │ -BD32AF2F05672D0E99661A0019177112A9AA75ED4FC888FC78B192B0B5C810E5 │ │ │ │ │ -7158A6C7EA4462E29E8C6114A0D841D1663FE763DF5BA7E8B3A463D87F9B14A9 │ │ │ │ │ -0F98EFAB91149683934CD4A39F17FD13525ACB9B6AF0D1F8F8B0A94D643C710F │ │ │ │ │ -E2B1DD7BD015A4B64997FDF0CC740618BA5DCD67B3B766625D3D94B29A4460C6 │ │ │ │ │ -9F0BC7C48C7A30E32E912B2A63E5F8FBA0F4AFD5EDAC029A9D0AFF3EA9EAE970 │ │ │ │ │ -A84DBD503E71D7F4401362CA1A342E230FCF02AEC685951CB0E2FE8CFB2D876D │ │ │ │ │ -BA3B68EA8FF16D281AEC99CB13A3C9569422DE846B9AF8F3D09109E980D34867 │ │ │ │ │ -81C335CBBCDFBDDC1FA559D49C2AC9C1167F3600C898B57F78CEE4A830E9148B │ │ │ │ │ -0D99874FD892C4EBFDCB9F566C4A58294791DC1BC5D8B1035E30ED1236142119 │ │ │ │ │ -CD42EB12943EE7E62887BE6384F7B953C2EB9B3F2FE44458886619D089095EE9 │ │ │ │ │ -4B1427367BD8D605FF5D6774D762DF8C755A5F6AE2E4CDE461C76931FC4DB2BE │ │ │ │ │ -BC6C7393364EAFBE6E2696D8C697CDA34362E6D9063427E2D9CCC9FDE42F30EB │ │ │ │ │ -D4AC4E972CE87C5DEE7C1EFE3503FCF7558B423C6F5B168F89CB455EA1BC0A7C │ │ │ │ │ -DF7892DE96440401B0B28B3582A9A5CE5D771A25870BB68797457F784B1D2F9D │ │ │ │ │ -36821E380A39FDAC8423184E69E213D7957E949AFFE1FD99B9F7036F14C2BED5 │ │ │ │ │ -24FE4AA49D41F2F321706B037CC547B4181E6D7768FC7A575E0739618F235E84 │ │ │ │ │ -4D8491CB331C6BC5D2DBDA703275D0F2F20540F98F31E151718268DE4DDD9759 │ │ │ │ │ -40FD8B4066D08890AE3BA19D1052A0C646D75E8B27E7A195849FAD41D0982F8D │ │ │ │ │ -83C86BF71CE11DD7A48042238DEB49B2AFEE17CFB6B868372AC1365B0BC0DB02 │ │ │ │ │ -19D2A3A4A862929C15FB4F6CCFDEF32926CB73913B585C7EEF93490BDA33A4AA │ │ │ │ │ -FB70DB958A99C3E07956F96F34F68AC05E038277EDC9B546BE55C313C9D06BB3 │ │ │ │ │ -F12AAA408A83F577F2A26FF5F1F06AD159335D68BAC0EB94F0846EDAE39CDA71 │ │ │ │ │ -ED6B98DAAA0C64B67C91AEFFEDD3A5A82A3C6A1B54CE2D6CA25DFEF4F2C9E42C │ │ │ │ │ -7259D32FA01CC2E869A7D4B33647AF037178D18B45F5B2CF37F653B958BAA75E │ │ │ │ │ -043A9816AA613739FC3642ACD3CC2C1796FCD15E84D9C3F164986E36228A814E │ │ │ │ │ -61F771481AB2537154645531C57061A9813AA7CC694A4E73049BF3F5B2A94967 │ │ │ │ │ -44919505EF801635D4D4D2244AC42EA2A7BD1820E0BE1300492B67137C44FF1D │ │ │ │ │ -2D4ADA9E1BD3A55C4D59070F252EC058482F0E6668B52011763C153AF7EEF738 │ │ │ │ │ -431550B9009CB033F3F4DF15516F42639982A8BACB3706503C882ABFF542A0DE │ │ │ │ │ -DE7CA6E03DAB364D5086420582BFF1BBF0513D14735A975CD34A26E00B19EE6B │ │ │ │ │ -83A0209275B6EE9E38C0AC49B36D6073C621D9FFA47FC8E983B5136F91401678 │ │ │ │ │ -F1A4E338EC6951EB11F0A93234A59D2929002F37C12F9B9307890FE8AADDB114 │ │ │ │ │ -360586B6F38C45D3828FBDDF4BC797375F8F29F38B5225E00564FDDCB99F443A │ │ │ │ │ -D88C513273D63B35AD37368DC1117651680607856A9C0AB4CA08477665648EB9 │ │ │ │ │ -DB5B030861546DEB9A86844D76CCB455E7D71B01DA56DF8BB07066B3855C49CB │ │ │ │ │ -3D6289D1C6FA34FF3AFF4B0239F29C2E82B000B06B524BF4125AA9690DD6EBA1 │ │ │ │ │ -6E1D849B6CE163BE0EF86EACD2DDAA9E3C6D03161D87C1D1775307DE3B3D9D41 │ │ │ │ │ -AD9E3C7E8EA8FFCF48D9ECC488EAE6E8D4428DC87F385D1A9084255928B872E6 │ │ │ │ │ -1DB17FE04D4A872E47D7CA88BBA0871E23BAF986D4E0C091D3EB73474B7A651E │ │ │ │ │ -CA01AD94347CE801D408DB3D9517D1517F6EEA7BCEFC6A4680A7F43CC4CF8890 │ │ │ │ │ -6E5F595CADE6F1EDAF258BC4A06158590E5708305B166114214DAA95900900A4 │ │ │ │ │ -032E2069C11B2829333C62EDFD7E18F56D14D540543F9B37EB79F5222D458B56 │ │ │ │ │ -7881C0E1A949BEB18133123864AB66A7B80EFF98AEEDB6010E7BDA91E5DDEEB3 │ │ │ │ │ -753B9D6354DF4CCC42E73D5D4BB652BEA8BBA391A2E1CC6904BCF1870ADD2863 │ │ │ │ │ -629CE7E210CAA7EA3A5884385447A84C68589F3C2460D25AF4E141B26FF62C97 │ │ │ │ │ -AA79CABD134620569A16A4DC19E099B80772BAE4CB20AE72F71E9B840398B638 │ │ │ │ │ -7EF60637CC9C46F2CE0FD077402CB34E5D298D9ED516835958902A6CBEAEA5F0 │ │ │ │ │ -45C2CF94E9E69C5D12AA1F6303A74A74941A02E33712A7A4AC86EDA6FC639DB7 │ │ │ │ │ -FD45024FD7AD7F67256C5FBABC85BB2CD3B6565DE38A89DCAEB6FDF673F63C55 │ │ │ │ │ -300CCC30D25BCCAF6E8F790DFF74403D12065884E298368A37C59991898053E8 │ │ │ │ │ -C0153FF06BD9EFFD044CC41F8D974BC42473CDBE72904CD0E3915CA3CC63E62B │ │ │ │ │ -A8AD07630347B44327A12E3DB465DB8A5CB73EE522D9DF59BEC958089B3652DC │ │ │ │ │ -55D4204A764A612A009CCB69276529B650B6C0921F2C3B60106569AAABF11875 │ │ │ │ │ -C2DA36E99CEBD9630B9D87CC0D804C92197EA4AC68DA52BDD0B3611F416F5031 │ │ │ │ │ -08528A3C4E9867108C5F08A7EC81BB7E9DE89E3C3E68B81CFD3E1B241BB4F82C │ │ │ │ │ -5AFF42B6AC9B0D6607D6A10203D03263B1677D13197FDB6B847DB28E68285CD6 │ │ │ │ │ -D0779819C8E8195576DE1BBAD4053305A2F3A33CA7D7EDC60FF392D905CED44C │ │ │ │ │ -BA8D2CD64DEE9104C78272C232BF290545B06171034BF5DD0F5FB44B706DA53A │ │ │ │ │ -1317EDCB35074DA1D409DADBA6C3EA29FD9DC752A6296A629CA3F4C553580772 │ │ │ │ │ -2527191C335E7013E0EBA099CEFFDAE800CC1EABB58397CDCDB15DB2A601608F │ │ │ │ │ -B32195B0B38EDE0D98053AAFCE0341FC8ADC96F3388A7B9389F2D7F2D6B4F373 │ │ │ │ │ -E60EEE7394F355D2DCA70FA062F4D875FB4F16AFF5341F90CA56CE96B9D1774B │ │ │ │ │ -E957FFB8DC1C721336DEA64440DB419E9889D5684D95707674A918942E9B6E8D │ │ │ │ │ -4D5E19710FF41AC9369C5AB37098296435F6F08649C581FB7A3F293D5CD30213 │ │ │ │ │ -97C36F08EDABE22B162D0B2796CC9DAD2B33DC80071ED77F57FFCBE9E8701420 │ │ │ │ │ -3FC4403C42544C40CBFDF23D09F6F2EEE39A1ABE5068897AE9093CCB22309573 │ │ │ │ │ -94FEC9F37A5C0DE106A6B6B7692F49CE2D6902B87ECF3B6C3C7A678251D88AC2 │ │ │ │ │ -6C5B1171EA25435C4A3C17271333B47AA726FB98CDAFB2B23D69BB69ABF536C3 │ │ │ │ │ -B0B27E60FE31D24E54C0FF3AD3AC8795D20F461A56870782F8DE792DB61F9956 │ │ │ │ │ -193CEA5239B141187A983C30258251B74C445EF2328EF519C70E2CF4F9776F13 │ │ │ │ │ -C66D85E4709A265EA426069C45857A9079614E184DB12440BA220DFF66B2194F │ │ │ │ │ -760119C90C9201C0C878465C3A9DA49C420719AABEDDA92C4D8AFE1DA18E26BC │ │ │ │ │ -6DE32CE5CB1A2F06CDFEC57E0489CD5A445761797E78A29441ABF4A5B77680AE │ │ │ │ │ -2444923B9B55BCFEA3164A287A8C8C869C430F60A3574F0500A08170F27E3A8B │ │ │ │ │ -670C071901A1F834B8992F0984D9C6F75F65CD21DD0C29A9824E25A2586891CE │ │ │ │ │ -B0E3EA39F0CC8F43F45EF72830F8A6ACABA3734E56B9202FC863160F865C6A3D │ │ │ │ │ -DB3C5BBE9F710CAA8A320A0D4D9BC76F9F22F3646AC69024F18ADB19726A3A08 │ │ │ │ │ -AF20F3703DA3256E177AB8FC58BEE0E0ECB6DD240CCD89896D90C1B22B628B70 │ │ │ │ │ -CA2ECEEC835A92F120BF8FD6E6045ADC6C43A20E3CAFC0062A26B547941D477B │ │ │ │ │ -658BCF2B8FCB4DF37B991483A8898F051BC1B495DDD305A62AA007E5516A38FE │ │ │ │ │ -48CD6BE5583CE35E93E591AA3478E936ABAB917904525786ABC696A61F194E64 │ │ │ │ │ -563BDCD009DACEA03FDA5D63185A719ACB6777B296FA9206FD4A4A73012D8A97 │ │ │ │ │ -EE8CE70108359DE0CDC0C16614701BFC67D0BDCB3909D9C2895ED9CE9D0BB28A │ │ │ │ │ -84E01098DE1DD6CAD252C038E9B67F289E2EB608D05D20B64DA7E229C2EE57AA │ │ │ │ │ -2B6EFFFEBD85913111090A344F8602165ED051D38CDE37A930D51AB7EF64F3B8 │ │ │ │ │ -D99E2D43368D0E041584487C81813C981353211ECF2BBC0C7F7D32F35A01E84D │ │ │ │ │ -BEBB4628E99868220531C6DD494AA5FAD807C07A606BD72D11B0AF04B0B5ED78 │ │ │ │ │ -A9C1B597CC705A85753D71EA1C8A7DBED0407408617C4B33A4BEC21ACA2F26E8 │ │ │ │ │ -82D4FF6143BBF98D05E57B4C7EA5CEC39A22A5E5B29EF61E50EB9B445E4C271B │ │ │ │ │ -4A348763317AFDFA0C19B1383B45CFE8805E1F0BF39FAC46DE915664A9331B5C │ │ │ │ │ -A41617139929613E247ABC654CFE0FF687F370DC7EFC5F7B04C3243029FAF1E4 │ │ │ │ │ -6BBE45462FF39626E5CC5309CED88B6DA4B6C9D84D1602B70C9D2E446E790B04 │ │ │ │ │ -F00C496E9A72A067B85D9F0A7AD09AB997A49FEEA208CF9D9875089EE44A1944 │ │ │ │ │ -630D17BE2DD828BE7376609967D42350DB178B2B4EB51F93F585A1BCD85A6053 │ │ │ │ │ -A0F9D5999182CAB617A4D1C4E85A151CEEC1908DB95880511171EF9A30D8D63D │ │ │ │ │ -83FD0868FEFADFE69EE48FD4BF297B10019CC8B45FE38C1F6E724903FCBB6BC7 │ │ │ │ │ -97F51CC18F372F954DE91AFEAAB6D7D4316D32C9577B5A796DF66255E9FA4D0B │ │ │ │ │ -46486927F1AF5FD33B416926729C25D75652E702FC4125388C7F4ED419217343 │ │ │ │ │ -549F683F3BD38F3801C5397D3CAF0D0C0ACFFFB21E2D42D6C72B8FF53F8CF6F2 │ │ │ │ │ -67B3573969C0FBDFF690031CE06E1143C116733408C74DA7CF31064F507D7385 │ │ │ │ │ -DEBEFEFF8CE656BC16227105BC518AFF4AA14F231613724CFB7823063A67CE5A │ │ │ │ │ -CE40D64D478F8AF11C7139BEC8675E1C64B1E76F45FE3B6CA0743E78FC043545 │ │ │ │ │ -0096FD93BA39B71DCFA39EC4FE215C7C4C92278C65185FED35614CF31E2B4010 │ │ │ │ │ -BD4D9A255356783939CA57549C13ED51EE36A79418969B711CC211C9585FED8F │ │ │ │ │ -7F8B7866E6D30C63E54456D4C4DA6F2ECA2B9ADAADD716AB69655367D1E0D0A5 │ │ │ │ │ -AC20113971ED25BE2D32D69E5F28387FC5A6BAD79516184E2A1E5B030CB23618 │ │ │ │ │ -CED2056438E53EC1184F47591C872356C2CE499E4B05C92FEB5C68F52505F270 │ │ │ │ │ -7D43EA48B3AE9EFC881DDEF0BA0FBABE29CBB3F6E3731A4D11980FD87E277967 │ │ │ │ │ -645C0102CF47717717291C48FA3DB18EE68DF0D6A7427439845F8BBE100E064A │ │ │ │ │ -6D229C8ED3326898915ED044EC042664CE14680FA4B60300BC22BB4AF3728E4D │ │ │ │ │ -EF02FD3EC000C696EF0B96E3CE0ACD8EC2D4647FB4399882C3DAA59B7F534AA9 │ │ │ │ │ -F7D208D4F10A6612CEEE07771BB2DC06C8F1659D968332F975A8583851118A48 │ │ │ │ │ -CB24F87AE60CEC030687816711A47B0F633B137132E3BF1EF207A25776478D4D │ │ │ │ │ -E1F4CB03A2C3D762830AE215E5285C0B6724120CC5E432226F1DF824449C54B7 │ │ │ │ │ -6E9725E6D09B642E95616EE0291C6F01847E701CF3484C1CA1611642E8CD4647 │ │ │ │ │ -5B3F07EDA0396D5DDC36ECB8F522CAAB5C04062EE1D247A9712DD47020C26D51 │ │ │ │ │ -773B98B889AE01AE1DAA9DA9E7A79F5AE9A31EA0A283B8545015B407FD3C2225 │ │ │ │ │ -7A0449A1CC9D3D6EF1E55D6840B30A51FE61DE94D6FA4C4E75EF07070DCB38E5 │ │ │ │ │ -6DBA0215F1E9CA14CC2F677281A96CB2CE11BDBDC7C72F0964282C524985B3D4 │ │ │ │ │ -10A60C031AD55803BB5B123B7D8A0E3E37D9ABA27FDCAAB6D39FD26EDDBB3B2F │ │ │ │ │ -E22DBEA9FCCB80768B2E60EDAEA1E6C6798B6F066FA91120FF7F3060717EE6E0 │ │ │ │ │ -E20035CC7E43ABA06BB522D722127ED6896E2334FAB35A9A55A6FDE40C82E52B │ │ │ │ │ -8046A58E23CE6E44D21462639512B8FF46AB5B8EC6159B201D028710DEB0EFFF │ │ │ │ │ -5DC0F98AE7DF0974FE65313B16D54FC5689401A86D5EC1BB07C7092D37CE9C08 │ │ │ │ │ -2BF99D8E0968ACB855E46486D39AA020DE273E64A70D9B0F94BEB2722BDBCFE2 │ │ │ │ │ -135CD6F8C8D437CEE06D781EF6AAABD4FD2C46661D4AED6069DF9F214F678631 │ │ │ │ │ -9DDD84A010D0C75B24ADF2A780FE771143EE430446767156C96C62B162E6C456 │ │ │ │ │ -ADE2B19A52033AA159DD01BA101A4937D7AF3F6C94705B06454E5F8DB8656199 │ │ │ │ │ -DA3F315E601A08948C1E75B33C1B1CEFF46992974CCCCD00845D95ADDD109B85 │ │ │ │ │ -F4903016FE536330096630C1753EE8F3AF84799355AB2D76EC76D7A30026984C │ │ │ │ │ -CC99B75288A1D54D98332BE2D690E9C7EAD0D4B2FE7C415E8E02874E01818E39 │ │ │ │ │ -E50B127FE6631DBC4B586171AEDA530AB94C9B462E9E700015850DAC38A1E16A │ │ │ │ │ -A9B92CBCDB006037F0B456FF22DB1D89C64F8280DC3953810A7BDDEC46D6B3F5 │ │ │ │ │ -AD2769DD5CDFF56903084D20D42AC1BB86816D15846B3E8D9657 │ │ │ │ │ +818321B3C46DB51B8EC6C2EF1D05C716519A3BD6B12A67239898F8A011FE7C22 │ │ │ │ │ +A82DB7DB29D985A16C358F220F5F7427452F7B2EBC4D8214A6A0E8B94AF8DA3D │ │ │ │ │ +0BEA370810C63973A02358F72CD377813F35E8612F98D9EE77EFF4711A436795 │ │ │ │ │ +C785965B2AB1DFF9D2FA4E70CA7926FA65B7C55DC5E80393A240F20001E0C966 │ │ │ │ │ +EB4F25DAA321638FFF04D6FCD9BA6B4A9181AE3CE4ACFECCB964E88A2AEC43D7 │ │ │ │ │ +CF7B717FFB727CF2309CFC8D501F42951C592005D5D9889B618529F7CD8EA0D1 │ │ │ │ │ +91CC7AB1F2ADE8D9BAC2F8803FB779468D62BDC73E5A5B4CC4434CC6089D9CC6 │ │ │ │ │ +8152679D26CA6C147B843EE6D9F7BE69AD5A79F066F1A248E043980B106771F7 │ │ │ │ │ +026D7F1BA5857E63C71525DD006E80A0AE9F8FB983DEB77196C088D2077D8BF5 │ │ │ │ │ +E17C5D0C6F795D9048E90B0E47B8E42A03F783364FB82F5C859BDA314E226C34 │ │ │ │ │ +2A8900BE27424281CBD27FDC56AEEB419E4DF0613720B138AC34483EA86D6D5B │ │ │ │ │ +26C480B682BA660D04AFBBFC08A66967D8C57FF315B89247F84FF0A7278EE678 │ │ │ │ │ +2E326BA823EACA579847BC0461B8601D92E3C9F1A69F90C8D835539D08A18ADF │ │ │ │ │ +5246B9499ADEC580D9AFF5A0D6F89F3AD749FA33F35E2B7DDC8B6DD9F6A49FC9 │ │ │ │ │ +A5B066D20F1533CA328FBB38D75EE6CE32B83D37D5F7745AE675F24DEEBE14A4 │ │ │ │ │ +BC90277D706B677E2AE9C3C1669AD4352BC6279DF38D0A9E4D6674FEC17F7FB5 │ │ │ │ │ +8CA39F7A83172BCC514DD7787A476784ABAF39F282CAA2253FDC93CB79DD4760 │ │ │ │ │ +9975D8F42ACC3DCBE997B63A851EC00F493668EB1CF9451988E92BAC04805154 │ │ │ │ │ +0AB1E6D624FCF91F50CEEB5C547AFB907B91A1CFD2FEA157490952EC3AC3F580 │ │ │ │ │ +21C3060F1B65010F98CF27B1C25DEA8B292EA69E38A469DD2077DB3A0FFC73E4 │ │ │ │ │ +C7F5FC31E4B958A637746FBF0F12EAA2B9A4999F3229FBEED67C75CAE0D22FE8 │ │ │ │ │ +DB2D135BE28D8F0F291D53552E68457D5B3772F04C6FBED792E718B3602A57BA │ │ │ │ │ +A290D58F74FFE12443023DE87858DD96461BF7D4B6F46A2251C779DBF064283C │ │ │ │ │ +5A58FC3517A2031E51329BA1304562448365F693BAEA795F0DCEC95D9BC29838 │ │ │ │ │ +636A8B30C73070AAB90F2CDF09352E704EE8EA65EED6B3EBF3D824F873EED11B │ │ │ │ │ +AC0FC02590B6E1B900D4A3BDFE005633DC197198F23EC2398C4D6E032C11212F │ │ │ │ │ +6DDFBF9A313760F8C84E1146F6734C36515E77E37B7EE07456BAC8C064BB9823 │ │ │ │ │ +36D6B98F7161593F7EF1B6C912EA56396432ECD7B695BD77731B3A75921AF7E1 │ │ │ │ │ +C4780B0E077B19B2ADA2401875208479D9B098C0B69A029415C370BB48726D0D │ │ │ │ │ +058D40F453AE954A177B0724F860C766A0268482D8BFC95E3622A46919AA9BC1 │ │ │ │ │ +1CE9FEBC8728BA41FB51975F98F26BF6D67399858006CDCB58A448A0FB25FDAC │ │ │ │ │ +9DF1754729C8B5DCC4B5C3926A60CA51E8E179F3B41D4C422DD8A12445824E0C │ │ │ │ │ +5A0C67BFB0BF61258FBE87F63CF2792E7ED8DC6F28C3DBF02B236A082A0D83C9 │ │ │ │ │ +9F4884D32AEC7DC0781ED5C43D6664FF44EEA6F0902123F4107C3B709723244F │ │ │ │ │ +5C9C76376340F63CB73B95DEA0DBB419E6B2AE5E8A276CBC304DFFF44E0BAF85 │ │ │ │ │ +6AB276420AB434F92481F1CF62467E7E8FFC2839A5F213041C9F6EB9E5BA87DC │ │ │ │ │ +56DA2C86DF8E30B29769911FC385D01A75ABBAB487C2E63D669D4B369C5DD7F1 │ │ │ │ │ +237A87DEAF4AFAEB8D33D3426412D787F509CA05C189A121E4BEC2670AFBBE6C │ │ │ │ │ +11431AF786B8C75361E62D8D5ECAB53569B115D24CC44CDF45D3967C0D0077D1 │ │ │ │ │ +3F741294438D4CF023D5BBD0E5B2DB606FBCD13E630D05D88F5AC44346512F9B │ │ │ │ │ +A34F18FC09C5AA8288F758EE3676F23A77D1EB052861152024969817741A64E5 │ │ │ │ │ +C1E1F762DDD29E8291A6B9E18DA20F766840F1C7E165042120BCF851953DFB41 │ │ │ │ │ +47E1955B516F436EB8519DDD37A95D54F7B7F41C4E7359A8C0D5E972022EC111 │ │ │ │ │ +6FF1A83B20EECE3D13A70FF9B548FE66A95FDBC7F6D2BEC7381F641EAD25ACD5 │ │ │ │ │ +94ECDC7831367BA32B1D3223AC6CD52234C2AB2757FA114378C3831944967BAA │ │ │ │ │ +12F5A67E5C5680752DD8121C4AFBBEE0762F3FE87A72F7A3523D1E1D653B1DD5 │ │ │ │ │ +AA579541666567D5B26842B656170D9DC24122113EBC980E1C6672814BC33B3A │ │ │ │ │ +67C6CCA57F6056002735BBD40F5A2C035E711B26E95276A99177B1EF7CF84838 │ │ │ │ │ +8BA3AE958C6B8249A037B1943343A262E1EBDD110844E89FF581DECF3484EE13 │ │ │ │ │ +E796B22A9374EB22317E87D66654A6805B7F680B5671103CC2AF173535748DCC │ │ │ │ │ +DA29F0B637042B6A360F911027879410FAE9D1B231B50806A9DC06D2B15DE30E │ │ │ │ │ +AB88A7EA2AFA69F93E0F97BD5C203B45F3B0838DEF43391F5D40F89BCB2A3D1E │ │ │ │ │ +CD8CA4B666E6AFCB78EEA9BF3FB78A96B362B67CC46F517FA5E559FF5EC59F36 │ │ │ │ │ +5F90CAD07000D771B7F5DD68F55D95F839161DCA80736B50AE3FDA83583E1ADB │ │ │ │ │ +E8F49899075ED692BBCDB1624E739B48CA5205D0ECDDCECD256615AB0E1CB68D │ │ │ │ │ +C65E713EAC31903E2B3D3EF44FC57EA68C3DB667ADF744727B3D36AF476F0AFD │ │ │ │ │ +D218FD568CFAC319A2DC2E73EADC5FAF3A544CF0D5C0D0F1201D2B1EE7867B10 │ │ │ │ │ +7E4ACDD86EEF175D5FB891B060CF134F507A1461D2488C9301E2E9CA20A2E806 │ │ │ │ │ +C7747600F9C147805705A599FE6830C16063DBF0278315B7F27AB4FC199C8B69 │ │ │ │ │ +3389255A4EE7F37471F880C453FE1345DCA331D2D2E02739A87BD5C027444082 │ │ │ │ │ +4A9508C85CAF3B33F06288260167AF6996664A4349A5771B711F90430A3DE15C │ │ │ │ │ +9C44CF00865D000C082C6F90E1EEB51D00BB532B3165E8CA2B77A608F73FA398 │ │ │ │ │ +67EAF20806599682D0D21192761976AB108A3CD15D92DB3FC198494730B5E304 │ │ │ │ │ +CD235042A1EAA34224768A0948C1DB63CBED51B00A54502F4393B76AF9D5AFCB │ │ │ │ │ +BE2BFB77EC05C732E6A8BE21B34062FE533584E9B7CEA6E589BD5514FD433ED5 │ │ │ │ │ +ABED767540B21745BD882F696D3CF110C735412B555C822026D2C352DE4B99B9 │ │ │ │ │ +661C641F9B315E1CDB4450AA4196B869E02A52F02A98E7826F88A374B2276843 │ │ │ │ │ +B27CE8F9537AEBDC00381FDAC0505DFC04BF9AFF6743167114F5A6511708C0E0 │ │ │ │ │ +E195F3C9C42C135C0DA1E0EAF4C9BE84F53C4EFFD1C817FFD13B1D3FBE2CC1D4 │ │ │ │ │ +7C7E7A8C1E24D4D90921A97222960B255C8457857361EC4C94A993729AC4A8AB │ │ │ │ │ +556EF1920BCF5B4E3313687767880DF35B540D3EDF7068B29F84F763A562A481 │ │ │ │ │ +B29CB9A03CBB3199711D72FBE5282D08E5DD31E4A846B8D26034C45539F80164 │ │ │ │ │ +120750FF500F2B75600962A0E3222CD353DD126162E78389B96F3E7F0853C09A │ │ │ │ │ +24CE3769F35444A3C8DB6D2186322A71CD0CC5234E6116FC320631ED5DF8D764 │ │ │ │ │ +0035635A49EE202736F521F9EA5C06BEBB5914EC2A9E9646187B25F1B4A2FECF │ │ │ │ │ +D8B025C2CD9EE4683EC27892FD8EBCD96C7F61ACA3D029E6BA56A38130EDD8A8 │ │ │ │ │ +3A2CACE8315024C64433C21F98C5C18E0A6437E77B0640606F164383B3208A9F │ │ │ │ │ +7CF5A66B00D205F4897FFDA59470C26C5591A32C272280BBF47421CA137BA0E5 │ │ │ │ │ +3BCC04946896EBD8155CA7AC6651BDFFCCA21EFD68B4AB7A643B74713112BEB4 │ │ │ │ │ +AF4FAD93486BED14B11B4F500EDBB9A178E3759DD7D4C6B1F84D3472F42A9325 │ │ │ │ │ +7188FCFA0F92C15AAF3B317815A62E64AC6F0C6BD03ADB66C8E62159B4149433 │ │ │ │ │ +D664176953AEBBA39CF9F871F34B96018E926A7E07402315036B1320CB446F48 │ │ │ │ │ +0E3A969431E2799F209A72762AC2A7A230FE8CB398C5657DA1B3496AF9767C5E │ │ │ │ │ +BC16E9C7994274861BBB473944695698931BD22E5DDE25AB2E1B3CCC781AED73 │ │ │ │ │ +DB8A0F376D12E651A26A0CF1DBB35482652EAAB1600A8E375B9CAF0DB3AA3240 │ │ │ │ │ +CAA5803E0FD5E9B75C018DB3613824477C943D434A5AA4AC6F111CA80F783CDD │ │ │ │ │ +AEA8E7EE1F4DA88718E9C6BEC5A2A0C0BF18A01DF6B87AF98388528CC454D98F │ │ │ │ │ +0E42EA4FBDDCB7CFDA94C52807F81BDF6B175C424D2415909A01A941ECF35A8B │ │ │ │ │ +B6A5DB1F6ED4444492ABED4768EB71504E51A28F57E6EF65FAD48330066A4066 │ │ │ │ │ +146ECED4607A91673A3DF6292A3549700D2322D5032D9482D3AC6DB851D3E8A4 │ │ │ │ │ +7244A5962F8DD5E831ACF93E09EE53800C787D1E1AE890ED750F2ACC5A4D3B5D │ │ │ │ │ +461A09858DE3CE42FCB86B45E50B8F9B11E78D07945A5CDED33174CF19BB2230 │ │ │ │ │ +3C10C2AE2BE9B7B4DAC05C7F3A1F8699415424991B4406BF92D9B44A3821038E │ │ │ │ │ +3D8EEC84B76D3154BC8BE580C114787AA7AA9B882721AD13C4BA5E9B07AF45BA │ │ │ │ │ +69B3C93D7DC52E84EC426EED3B53629CEAA17E2CBC0EC2FEA907460B30F41149 │ │ │ │ │ +D3431110479CD1A212FB599B81001F1D4B54D9A478AA994E917A7AACCF7AC971 │ │ │ │ │ +11583512CB30D5928A59A8A791F23CC513F86DE35A93262EB7ECBB6C6599D795 │ │ │ │ │ +A77EFE2B3CF90EC13443C2C64D0C0A4E6B4AE7B613E7D464D31BA855405C7E2B │ │ │ │ │ +F699C69A40B6E98A5A991C2D20E13788E5C6CF49F7129F74020E0FFA52B1BA39 │ │ │ │ │ +9AE4DC325CED001BEE2722F0EB01B954E64EF365B979F35AD8CD8341C019CD6C │ │ │ │ │ +EABBB3D4EC78B590A49CCEDF522D94405CC69552A7C661C052536D1CF57CFA9D │ │ │ │ │ +CDF790A03541A516AB8D9894729F48AE5E0158192FCFD0AA6A17DE79F4D62881 │ │ │ │ │ +0185D2E1AF3AE5F2F69050E2A72F3027FBAFBEE0016937277AD85310FD600DD5 │ │ │ │ │ +D9A73FBA307AEB9B1B3029FB9012F13C5E718AFB3C1C258CEEA8CD6F574E660F │ │ │ │ │ +ABE945B9887DCEC0A3834E52C7C44EDA31C33B54F4723454614CDF3B3DF7FDB0 │ │ │ │ │ +CB0D749AE2AB5A7B130E254DF39B4DE51DDF8C4D11C63ADF054EECF8872CC7D3 │ │ │ │ │ +CF5724BBCC1BDEA8B84FBBF79E59CB955A243892A1EFF80C2DBF39D76DFFA073 │ │ │ │ │ +A6D76A81D4319A20BA320ED13E8A1F2FF73A5673844147A23158EEC4E6389A3D │ │ │ │ │ +CD735F7C3CF22506861A8AA38715FEE79AAF950454A822B5C11687536AE3516B │ │ │ │ │ +290FAC0BC6F180CA03BB508FA7E4006FBD7D82B1E979FBFCE7316ABBE88B01B6 │ │ │ │ │ +504EB4FD322AD5B5039E9004AF929D49EDD28E8BB1302D46BB375D66D9A9E6A5 │ │ │ │ │ +9A4B81C582EA4B72E7CF168B4A1BCB11ABF6277448A45E60BB2CDE9C5B7836FE │ │ │ │ │ +991BA3D7B82CEE26497443AD74B7847A4A8BC8DD8A671DDF6B305E076B2591AD │ │ │ │ │ +4C67F3EE4D176E0AEB32184F15977D4799D8AF40270FC6B6163EA25F121E3CFA │ │ │ │ │ +EDD12274A8D40BC1003820FA7E16AD59627353FA9B7D93636DE6A57A3F61D4B9 │ │ │ │ │ +EFD6968382115CB55E1D7ABF0978B079F1E0F9D77E440D79227A3191FAEA08DC │ │ │ │ │ +A90511959422AE8199EC487230E50600D1587208C22AB839D87AC0DE8317A864 │ │ │ │ │ +C3DC1F03C4DB862755C9E52CD4403E66A334767FFB69CB391F8F867FDADC1746 │ │ │ │ │ +4677047A51BDEC6CE273FCE627F060AC271D105C4A3F914AB1313045ACFE8298 │ │ │ │ │ +87877A5F1D6E66F5C634ECF8D7F18C4D3E275BB9CDDF270978FA29D7DD7738DE │ │ │ │ │ +7630AFE86FC07A1DB590A3FC705182A00A7F1C99B7A26C50764D81BB7F1A230F │ │ │ │ │ +038332BDD4139628677806E7E1D8C3075034077394F8731BDCAD13C71B5F0F1F │ │ │ │ │ +309419B9FE3D6BCB11CDD9B29965D30B0492107F8AC2878A87161B9151EE0FCD │ │ │ │ │ +6CE88514523A3024AD814F9B1F239DF12A53596DDF9C202367A454D88C2DA51D │ │ │ │ │ +F558E149E79FF5259F437B53ACB36763925212931DB59CB52CEB3C6AB6AF230B │ │ │ │ │ +69619CC424E0E1A922B96F79876B293E817980321EE770E58E20BE45E7CC75C6 │ │ │ │ │ +2B432FF640E9E4FB26CBF100E8C7C0662D1D4270533820526BF26455C6C9EE1D │ │ │ │ │ +F7E8FFF94CF1924EFF334551E5BDC61721E507BF94E358588A0C6982EC084BE6 │ │ │ │ │ +DB73D3A60A171CD4309D85E04294511EE9AA200A87FF1BCFCB9B0EBC09B79369 │ │ │ │ │ +741D1858EF35C72279815FEC4F4AF25832D2E276B5AFE3AFA5E9781BF7368F65 │ │ │ │ │ +B2F91CC77A447F0E25F62C34D1AC0315D242F82274BB82F3949D9EF5A9BB28BD │ │ │ │ │ +7FC8A78C58E81510FBDF39D1EA4FA2A3928E3459CBD9D4EE3B7CD175EB467BB9 │ │ │ │ │ +D308DA30086A90BB3A632975281FC13ADA99045FD1DCD1AEFD91AC140A787BCE │ │ │ │ │ +FF32D69FD79FE952AF2F8AD60BA928548E4C1E144563788FA2BABF816D4FF17D │ │ │ │ │ +D42379B620F75051897FBCD3CDBBD113DF1843CE6D91FC6A980F65ECE465EE57 │ │ │ │ │ +094142B472E5CD56CC4C3D4927CE7D20283B863A6EB6005FFC12473AEF75A1F5 │ │ │ │ │ +E6B3C957DB2144CAAC68D7F410EED44305FD29C37B21BC50F1DC602E4C97C7C1 │ │ │ │ │ +9CD0695F73BD235E2A12C9E0D8B6EFF29F2DE45455B1BF940AC04C0799F9593A │ │ │ │ │ +22A5BBA8591651C8A428B82544F0468F4697863B330F1AAA69E59F99BFECA8E5 │ │ │ │ │ +EA4BD57F4D51BC3DB58DE8E9118C45598CF60D6C1D4894B508B4ED303F35FE53 │ │ │ │ │ +059DC54B697811ABFB611710AA44DDBF2901E70851D9811390A21AC6C3655C1E │ │ │ │ │ +BEAF844E1456FE7449E19B0C23E13C9F8462812721127F85DAC97B860A8FD572 │ │ │ │ │ +2642D12BBC93F4E8D0284E843F83A5EBE4DD2E4ACA345B22BE5EF7A45714ECBD │ │ │ │ │ +BFA5A846C9D88C9518F55392B4D595D113CCDE0B1D35FBCCB8A5320E3E7F285D │ │ │ │ │ +EC4F734FD8269B02809236E693321CEF1112A4D83242C6CBD540B4508A3D386A │ │ │ │ │ +105D547BE07F060BF4731407997C042675BFF0B133BA55BE4ED8DA180795DD01 │ │ │ │ │ +E64A1087FE53A1166F9FA58F36CA2C1D6ACB54A9CAFC5F421F59465CF6512B94 │ │ │ │ │ +571FB6E93E9C10EFF99C3935B81DE02EB7DAB4FE0AB51C1178F4CDA4CB170956 │ │ │ │ │ +BF21914C94003E20B7B018A89787D4924AE786951F6377A24A9B72ACF023202E │ │ │ │ │ +596B7440948DD398D98FE1E70A523DCB46766DBF03ECDF885BA62BABFCE1CA47 │ │ │ │ │ +91111C60FE3D7ED1D5DFD01E220193CBFA565E53D1423BBDC2FA690376325B35 │ │ │ │ │ +EC3F33A64F40B230FE87376229 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -4967,22 +4954,22 @@ │ │ │ │ │ 43 64 21 2[21 43 38 23 34 43 34 43 38 9[79 2[55 43 57 │ │ │ │ │ 1[52 60 1[70 48 2[28 58 60 2[59 55 54 58 7[38 38 38 38 │ │ │ │ │ 38 38 38 38 38 38 1[21 26 21 44[{}51 74.7198 /CMR9 rf │ │ │ │ │ /Fg 203[30 30 30 30 49[{}4 49.8132 /CMR6 rf /Fh 133[31 │ │ │ │ │ 37 1[51 37 39 27 28 28 37 39 35 39 59 20 1[22 20 39 35 │ │ │ │ │ 22 31 39 31 39 35 12[51 39 52 1[48 2[65 3[25 53 3[54 │ │ │ │ │ 51 50 53 7[35 2[35 35 35 35 35 35 35 1[20 24 45[{}45 │ │ │ │ │ -66.4176 /CMR8 rf /Fi 134[51 2[51 54 38 38 38 2[49 54 │ │ │ │ │ -1[27 2[27 54 1[30 43 54 43 1[49 9[100 6[66 2[89 1[76 │ │ │ │ │ -50 5[75 70 1[73 12[49 1[49 49 49 1[27 1[27 44[{}30 99.6264 │ │ │ │ │ -/CMR12 rf /Fj 172[90 2[110 121 2[97 6[106 69[{}5 143.462 │ │ │ │ │ -/CMBX12 rf /Fk 134[70 1[96 70 73 51 52 51 70 73 66 73 │ │ │ │ │ -111 36 1[40 36 73 66 40 58 73 58 73 66 12[96 73 98 2[103 │ │ │ │ │ -1[122 83 6[90 3[99 6[36 7[66 3[36 1[36 44[{}35 143.462 │ │ │ │ │ -/CMR17 rf end │ │ │ │ │ +66.4176 /CMR8 rf /Fi 137[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 11[49 1[49 49 1[49 1[27 1[27 44[{}28 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 │ │ │ │ │ %%Feature: *Resolution 600dpi │ │ │ │ │ TeXDict begin │ │ │ │ │ %%BeginPaperSize: Letter │ │ │ │ │ /setpagedevice where │ │ │ │ │ { pop << /PageSize [612 792] >> setpagedevice } │ │ │ │ │ @@ -4995,30 +4982,29 @@ │ │ │ │ │ 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)1689 2725 │ │ │ │ │ -y Fi(Ma)m(y)33 b(1,)f(2024)104 4280 y Fg(1)138 4312 y │ │ │ │ │ -Ff(Bo)r(eing)70 b(Shared)d(Services)i(Group,)79 b(P)-6 │ │ │ │ │ -b(.)68 b(O.)g(Bo)n(x)g(24346,)81 b(Mail)70 b(Stop)d(7L-22,)80 │ │ │ │ │ -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 │ │ │ │ │ -(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 │ │ │ │ │ -4677 y Fe(dpierce@redwood.rt.cs.boeing.)q(com)p Ff(.)79 │ │ │ │ │ -b(This)39 b(researc)n(h)g(w)n(as)g(supp)r(orted)f(in)g(part)g(b)n(y)f │ │ │ │ │ -(the)h(D)n(ARP)-6 b(A)37 b(Con)n(tract)i(D)n(ABT63-)0 │ │ │ │ │ +2459 y Fi(Jason)33 b(W)-8 b(u)3485 2423 y Fh(4)1681 2725 │ │ │ │ │ +y Fi(June)33 b(3,)g(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(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 4677 y Fe(dpierce@redwood.rt.cs.boeing.)q(com)p │ │ │ │ │ +Ff(.)79 b(This)39 b(researc)n(h)g(w)n(as)g(supp)r(orted)f(in)g(part)g │ │ │ │ │ +(b)n(y)f(the)h(D)n(ARP)-6 b(A)37 b(Con)n(tract)i(D)n(ABT63-)0 │ │ │ │ │ 4768 y(95-C-0122)e(and)d(the)h(DoD)f(High)h(P)n(erformance)h(Computing) │ │ │ │ │ f(Mo)r(dernization)h(Program)g(Common)g(HPC)f(Soft)n(w)n(are)h(Supp)r │ │ │ │ │ (ort)0 4859 y(Initiativ)n(e.)104 4919 y Fg(3)138 4951 │ │ │ │ │ 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 5042 y Fe │ │ │ │ │ (david.wah@pss.boeing.com)p Ff(.)k(This)37 b(researc)n(h)g(w)n(as)g │ │ │ │ │ ├── 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 │ │ │ │ │ │ - May 1, 2024 │ │ │ │ │ │ + June 3, 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.05.01:0544 │ │ │ │ │ +%DVIPSSource: TeX output 2025.06.03:1221 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -1199,21 +1199,22 @@ │ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ │ /UnderlineThickness 50 def │ │ │ │ │ end readonly def │ │ │ │ │ /Encoding 256 array │ │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ │ dup 44 /comma put │ │ │ │ │ dup 48 /zero put │ │ │ │ │ -dup 49 /one put │ │ │ │ │ dup 50 /two put │ │ │ │ │ -dup 52 /four put │ │ │ │ │ +dup 51 /three put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 77 /M put │ │ │ │ │ -dup 97 /a put │ │ │ │ │ -dup 121 /y put │ │ │ │ │ +dup 74 /J put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ +dup 110 /n put │ │ │ │ │ +dup 117 /u put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ │ @@ -1394,68 +1395,70 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004ACD1870 │ │ │ │ │ -A5EA947858F5795870BFE1343AD803FB854BF8F5A4E794E8EC57BE41DB5B8734 │ │ │ │ │ -13E47950F29A81EA0C81EA798863883D7F41F78325CA190CBBFFE822AE494550 │ │ │ │ │ -4BE83703071FC9512D128927AF3F63CEF8F86ABE1E15D7B4DDD39576E7DFF45E │ │ │ │ │ -3CB4115AAB1830DE8647B915DB4BEBEB5235C281E098B899BAB951D8D5798F01 │ │ │ │ │ -7F7C47336D31438E5126738AFEAB29E9A7CBE06DE4DD604477B542D2620DFD58 │ │ │ │ │ -28FE34238572F23C5A8EB7ACEE1E154DA13FC1A5AA67A3BA8C5CDFB2B80312C9 │ │ │ │ │ -BC9FAE56D08DDFA9498E6EF0D0F6BD18B3923E0B670B0740528BC843610736CB │ │ │ │ │ -80228C105C2F72C3C22D610C3D8C268DEEA2AEEE3221E198E79FE2966487360C │ │ │ │ │ -84AE08AC326F48B21447652121B1EB68AF857B8628F27BB4ED00F273E0DD044A │ │ │ │ │ -7D11A5BFAAC0A82328444CC9DD90167681B07D55CE28655F40C21250A226DEAB │ │ │ │ │ -2D46FFB680CB9242BE192AC0E55A44D45709FA6DE638C130D92C4E9B07BC3D61 │ │ │ │ │ -25CC2F0A7ED4F3574242FFE4461272EB1401266EEF551E0E2B0EF51FA8F250EC │ │ │ │ │ -FD9AFB6F5A0CC442B566BC24400133E3E9B9A9FC801CEF284FD2B3ECA43421FA │ │ │ │ │ -51E5D1EFE7BEAA96658362C438A0A5A6DCBC664A85EF88037B42355195B9D19C │ │ │ │ │ -7961D5F63B123451B298CD52C144FCD4F3641A823FBA14605E2DFD845E89102C │ │ │ │ │ -4E345CFD80E3EE6F097095A84C941FFC91B234F3615E4EE4C5D564284656E364 │ │ │ │ │ -AB9C4D1DE05F8FD065CA6064893F0CF3A3A501D59EF6568D05D818A010D06518 │ │ │ │ │ -E2C20418ADD1E652867F265084A27A5FE0C32213C59FFC3A84EDC89382521E5B │ │ │ │ │ -8AF66D76601F83C5C33CC9CF968C77B66F1FA074AC3DAD8E453C9264D03969EF │ │ │ │ │ -9E387BB3BEAA4BF0A9D88BA2CE6094E8996A3752A657E322A57AF006444BF516 │ │ │ │ │ -501C43CAA1BA7F16A3B6E4D3EBDECCCC19564DF18FB68194C132238A5441A21A │ │ │ │ │ -F52285CA1CA94A4BEC61EB509FA35EA5E393D662D938F4291F37EB7C2D5815BE │ │ │ │ │ -446813E1CFD06FFFFF2C4355C9DAFA48E765F4CC5DE4B9E37CFFB75E7A0B6F4B │ │ │ │ │ -4E412496F9C27DF4BDD90A869F0EBD81A57AE0B84051450A5A3E06CB9930DB2C │ │ │ │ │ -7C2DDB774BE870AEFCC9F4F067BE243FF3FD4B5C71B96C607DC4975973AF2650 │ │ │ │ │ -E7DF2BE3523A370EEDD07B5456B96E372ED10510CE677C044E609F21E93652FD │ │ │ │ │ -33CE612F587530D12214A3719CDB170C315B5D8763D5D4C67B5CAE90309E77AC │ │ │ │ │ -B45EB356C13A7BDE0D7320A9849CA357E30D7CF1085FFD70071932C3180AFC28 │ │ │ │ │ -B093016BA3F49A3878C34BB4A8727A441EB6CFC1A73F2313A7BF8D32EDF27E62 │ │ │ │ │ -EBEBC058FBA80B136FD2DE05C673B66482224ECEC63EDFB519AC13B5CC6624A6 │ │ │ │ │ -B3FD79037DA3851E93A386115852DBA88B176F21EDDB5386DC7C993C4210B28F │ │ │ │ │ -438131A586E34A09724E7CE60139F8247BFF14D2674805B3BD454C134728A43E │ │ │ │ │ -139E0AF71A7AC5CE42041EC83FD454B00AD29959FCF007789FFAF2D3492DCA4B │ │ │ │ │ -566EAFE97591ABC51CD0CD9BCD64E285FB823E41AA817E96B2B224005DAA4E15 │ │ │ │ │ -2141DB436B9D3FBA4EE4C876FD19A2E5133106FE2B9F704CB9614FCDC91B7950 │ │ │ │ │ -57053F45A5ED993B48189AAFAD5289F97AE2B0AEB5606579F6BD75F743EDB5B6 │ │ │ │ │ -5AA8F8A64CE507A47325081B3A013DB1BD596CDD3A83D2F29B070D6F9C57496E │ │ │ │ │ -14DF3F0F731C3BB00F2CE3D4BBACF1320322195D1DEA7A545BB4725BD1C6EC3D │ │ │ │ │ -63250C72B897741F8599D9D9BD2FB50EC80EFF2ECD6CE6603E95AABB45462ACF │ │ │ │ │ -12B005EE5979B6B05BCE9B97061686102349142A3CCC26D57F2A3283DD8B6E2A │ │ │ │ │ -98885E48C0D4A1A5C9612EDCB3B3D265E9B8CCCCA5D99F07F96C15B27D6A161F │ │ │ │ │ -936599E503C2859927201CACC31581AB7AB84F9EC9FFADC239F01DCC55940AB7 │ │ │ │ │ -FA884AA1EB6494C8E53DAD66E75A317428ACF9D943A74683BF547958F67D9E36 │ │ │ │ │ -F985EED50DEBCF255756A821927CB73848DCF167E96E975E959DE27FE7BA4FBA │ │ │ │ │ -D0EFC003F019D87572D6F9C73FC5B880C3EEDB7EF98E5EC3D25D6FE0015A6590 │ │ │ │ │ -E3C6EE632D7F6558B914609A8829CD1DEAB83A3F1207D5C3AAC9EAEA9DE1B4F8 │ │ │ │ │ -2375C5D4F630BCE13475F941ED2324D2CD4DCF2285298EAA4FFF89433D853860 │ │ │ │ │ -A974A9FC0808580FBDE7D02EDBB3D8C65BD3109AE8B359E96BFB7E21C696F440 │ │ │ │ │ -312B0CCAD810BF070DF8FC281E8198EB20A7FF9C9BCD291D74BC75EE46799485 │ │ │ │ │ -1AB2AE36B7E525034D146A856AF3BD9057A0033C08B606B89DD130548950C93D │ │ │ │ │ -94A8C92C47A34A791B1C108D2F36E899B79358B8081CCFC3D1A2F0521E4E2AE4 │ │ │ │ │ -7F500D6F2A53E5393E44201287225912590ABC738E8726622B67C3425639CCFB │ │ │ │ │ -F450B78A4918 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004B9BA1CC │ │ │ │ │ +580D3C6BDA4DC1B80B4365F1C80512453FC5316EC2D928FB731C3D6403E3C18B │ │ │ │ │ +E8424D644DF5E9A2134229C5C91CA68DB8E85BA2BB40F538F585DA6FA4037718 │ │ │ │ │ +B8053EBBA1E765346BCD5BDAA6C38115D31611D8A87A2238C145F2DA2F92E4DF │ │ │ │ │ +3987BD9C4D2A3D460E8941A68B125BCD9EE4F9FD262C4C8A71F47A2C81975635 │ │ │ │ │ +F1B981C274C53FA2ACCDE4C9D0A7C62D6C1EFF91CFC6712CA6A9F333C9564FCB │ │ │ │ │ +2A70F0AD715A79B10A08AB069E2A3C93BC0AED19D0CA10134B8DDDE8AF548DB2 │ │ │ │ │ +3A4AAA9C29682CF135BB767DAA16169A127EB50A7EECEB6480CF56A7D0F8AC56 │ │ │ │ │ +4A5090B3D75A790372886AF568D94C8165975A05BFBFDF1FFBA45F70700BB9E0 │ │ │ │ │ +57F3249EF9E9C8AD9CBCF6E4FD592DC4CDD2D7864F7C8A3FA6FC44C25C0CE7E1 │ │ │ │ │ +299F8A90B32B75DEA28917531621E1E7E0ECEE9E01665DEE99FBCF3EC3F30686 │ │ │ │ │ +513D7CBA745E660502603865D5A3E82D24B3F94B2884B21DC53AED87F49380E0 │ │ │ │ │ +68EE79C580931308DA762670C1F86F07FFB479773CD9C5DE6F22980DEC973D1C │ │ │ │ │ +A1E162D73932561BAAB24DE51DC8708291B666B36BABCA1FEDB6DD9C22572914 │ │ │ │ │ +7194DA044319F362452D53DD4D9A59134838E540F1E23805CEF53FF4F7519385 │ │ │ │ │ +1FAE3061F94369FEB1232BDA2E2A281E6972FB4524EFA37A598E7CDC097683EA │ │ │ │ │ +1B609952AEC0799B4711AAAB22D6B1D5CC729DE70897FDDC48AF0A12E40FFE30 │ │ │ │ │ +6528C601E68E8CFA4BBF897CF89DB712DE108DD1F084EFD917BFD9A70A74EB8F │ │ │ │ │ +D0D5B43CCC30373A5E871F18A969D01C69C2B4377622A0C8C4D7C4C28DDE5586 │ │ │ │ │ +BD17D5D640A6F396BD41993BD1932EE10953847F82F7BB36480B67A4F69F0763 │ │ │ │ │ +69423D1803B7BB60594ABEEE9578076639B84D8323F56104438803D45402FEE3 │ │ │ │ │ +045DAB16C4459DA9BBE01D0385CC771FB8DABDD8A9D280C18553F92FE6591CFD │ │ │ │ │ +26B82F28E6673BD823598D3F6CE03BEE04D9A21ED908DFC4F640227C148F133D │ │ │ │ │ +D32113275297C16EBCC9028AFD9102DE50E9CF67E7CF8C42BB8E73D1DAF8A5E2 │ │ │ │ │ +EF5979426229664A990DEF980A7038D2F229789D4F6EDBE1FB81BEC1A1BB14D7 │ │ │ │ │ +882515C62660E8877BE942712D57B86A2E19995AF087DECB7FD5208583C020AE │ │ │ │ │ +FEC86A2826530AD855006225300E4655F443C9360A8BAC96B5B096DDC9B12EDF │ │ │ │ │ +C862215AD6C432CF345FE701757E4EBB8C65F46912CB0F4DEF53672F7298D8F7 │ │ │ │ │ +EE51A9C5DE689A8D36956B7F0410893C0998DB03B73B4024CB046F8F6B32E07F │ │ │ │ │ +CD28A68AFB7152E45F1021DCD520D8A429FCDCA4B8054BAF0B48C4443280F198 │ │ │ │ │ +3360B078E6DEC37772DA8B629CFFD1534E8AA10E26B0BC58E92B9BF280C8EE45 │ │ │ │ │ +618EECDE904249F5A2010DC55D1028DFF4F058260B2B0A46541D6157970F44BD │ │ │ │ │ +D7483802D56A81184119DDBC914E8E394CBEEB506B61BB1CE2A3465252E5D8A3 │ │ │ │ │ +6BDD2D067E69D4ECEFC7D5568378F5F8B38EAFF138014185FE19DF7358A7A780 │ │ │ │ │ +3BE0E2CCD1561113F2F2319BDB503230DD0866121604710CEBBAA659ABFC010B │ │ │ │ │ +5CC40E5807F461D87E75BDC6AD96BCEF62AF668D48D7A76D08B57650F35CF609 │ │ │ │ │ +C0F791AEBEB75E29FA69596BAB419804AECE0F0238AAE64A6C13A22EBF4E3EAC │ │ │ │ │ +3570DECE85F54064486B2364D63E94FEB7C16350CDA318510A45C8848DB470ED │ │ │ │ │ +BFAFD2365681D65CFF3E6C1B4B7C8AE3066F96E819D05B97F3A6C2BFF8A72978 │ │ │ │ │ +EEB7F632FF604AD003A3CCA5A0465D53033A646E8082D3491EDECA3DA1A0E1BB │ │ │ │ │ +64BF36946520438D2EE72FA9EB1CEEDF56510AADA55A8DE280E23C904E0810FA │ │ │ │ │ +A3177CF684F06A4042DE4CD4AB21E2F0616153BEEE58EBBD89911FA43BC52969 │ │ │ │ │ +230C8137DB34C13E147B06C7A3875A931E1AC127E7D3EA0DF8346B6971F80901 │ │ │ │ │ +DC37F2DE1A0B81FD93CA3B5EB9B29ECABA1492901B1BA261DAB872FB3431C718 │ │ │ │ │ +9C9CDA7864908CD773864908DEB44E343221C2C4C335341789A46325D94C767C │ │ │ │ │ +740E3B60CE6D452A3A665967F568671FD7DD460B404B9C3D2EDCD47A336AA2C7 │ │ │ │ │ +BB0B1AC3823978F610629EF7AB526098A7EE7076F50A146D8134BA2DEC1B8ACF │ │ │ │ │ +68A7E4A9B7BE17FB71480516F2D6A8866E56CFD7C7A41311F48DDDD9887DACB8 │ │ │ │ │ +73FDAF5F25E956AFB0A9D530DE2E1128F006AAC9A78715BA2F90C8FED3729BFA │ │ │ │ │ +BDDD4098F870A27A91A0CB540D166FF86A442E95C9C361FD23378A2A138EAFB8 │ │ │ │ │ +D7050B486E1CB95068D890BCCD669456F3385C8F1793CE545099421368FE0F46 │ │ │ │ │ +53137AD2B65030B19CE7FF6B1669DB7A3C440AEF27149780E36C7097B7A8B71B │ │ │ │ │ +8789EECFA9A70B1F9695BB5D94E9A7D341291C1CA1BDEF4BE3EFCB8234CE9FFD │ │ │ │ │ +E1C4963CF919780129FA60162FEAA8AE97328F4BA14D949057A3EE74214F2D29 │ │ │ │ │ +51E7BE584446F6702F39957AE455CF8AF0C36AADAA39B53553D923CA5E9D4988 │ │ │ │ │ +76701B4F77DAE5185AC29900 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -4825,20 +4828,20 @@ │ │ │ │ │ TeXDict begin 40258437 52099151 1000 600 600 (main.dvi) │ │ │ │ │ @start /Fa 133[50 59 2[59 1[44 44 3[56 62 93 31 2[31 │ │ │ │ │ 62 2[51 62 50 1[54 11[86 1[62 3[84 1[106 3[42 6[80 12[56 │ │ │ │ │ 56 56 56 56 2[31 46[{}27 99.6264 /CMBX12 rf /Fb 135[62 │ │ │ │ │ 3[62 3[62 2[62 62 2[62 3[62 17[62 5[62 3[62 73[{}10 119.552 │ │ │ │ │ /CMTT12 rf /Fc 134[71 2[71 75 52 53 55 1[75 67 75 112 │ │ │ │ │ 2[41 37 75 67 41 61 75 60 75 65 13[75 2[92 11[103 16[67 │ │ │ │ │ -67 67 2[37 46[{}27 119.552 /CMBX12 rf /Fd 134[44 23[42 │ │ │ │ │ -19[76 18[23 5[42 1[42 42 42 3[23 44[{}9 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 │ │ │ │ │ +67 67 2[37 46[{}27 119.552 /CMBX12 rf /Fd 138[46 6[46 │ │ │ │ │ +8[37 26[43 15[23 4[42 1[42 42 1[42 3[23 44[{}10 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 │ │ │ │ │ /afii61664.cap/arrowleft/arrowright/tieaccentlowercase/tieaccentcapital │ │ │ │ │ /tieaccentlowercase.new/tieaccentcapital.new/.notdef/afii61664.asc/uni2422 3 │ │ │ │ │ {/.notdef}repeat/dollar/.notdef/.notdef/quotesingle/.notdef/.notdef │ │ │ │ │ @@ -5020,17 +5023,17 @@ │ │ │ │ │ Fn(2)p Ff(j)p Fl(D)722 5419 y Fj(1)p Fi(;)p Fj(1)812 │ │ │ │ │ 5407 y Ff(j)g(\000)g(j)p Fl(A)1021 5419 y Fj(2)p Fi(;)p │ │ │ │ │ Fj(1)1112 5407 y Ff(j)g(\000)g(j)p Fl(A)1321 5419 y Fj(1)p │ │ │ │ │ Fi(;)p Fj(2)1412 5407 y Ff(j)p Fn(,)27 b(where)h Ff(j)18 │ │ │ │ │ b(\001)h(j)27 b Fn(denotes)h(the)g(n)n(um)n(b)r(er)f(of)g(nonzero)r(es) │ │ │ │ │ g(in)h(a)f(matrix.)1929 5656 y(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fn(2)p 125 100 1136 4 v │ │ │ │ │ -1301 w Fm(SemiImplMtx)23 b Fd(:)37 b Fe(DRAFT)27 b Fd(Ma)n(y)g(1,)g │ │ │ │ │ -(2024)p 2764 100 V 0 390 a Fc(1.1)135 b(Data)46 b(Structure)0 │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fn(2)p 125 100 1130 4 v │ │ │ │ │ +1295 w Fm(SemiImplMtx)23 b Fd(:)37 b Fe(DRAFT)27 b Fd(June)h(3,)f(2025) │ │ │ │ │ +p 2771 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 │ │ │ │ │ @@ -5104,17 +5107,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 1136 4 v 1302 100 a Fm(SemiImplMtx)23 │ │ │ │ │ -b Fd(:)37 b Fe(DRAFT)110 b Fd(Ma)n(y)27 b(1,)g(2024)p │ │ │ │ │ -2725 100 V 1136 w Fn(3)101 390 y(4.)42 b Fm(int)g(SemiImplMtx_free)37 │ │ │ │ │ +TeXDict begin 3 2 bop 83 100 1130 4 v 1295 100 a Fm(SemiImplMtx)23 │ │ │ │ │ +b Fd(:)37 b Fe(DRAFT)111 b Fd(June)27 b(3,)g(2025)p 2731 │ │ │ │ │ +100 V 1130 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 │ │ │ │ │ @@ -5208,17 +5211,17 @@ │ │ │ │ │ Fn(ob)5 b(jects)28 b(during)h(the)h(solv)n(e.)40 b(One)29 │ │ │ │ │ b(can)g(ha)n(v)n(e)f Fm(X)g Fn(and)h Fm(B)g Fn(p)r(oin)n(t)h(to)f(the)g │ │ │ │ │ (same)g(ob)5 b(ject,)29 b(for)g(en)n(tries)208 5407 y(are)d(read)h │ │ │ │ │ (from)g Fm(B)g Fn(and)h(written)g(to)f Fm(X)p Fn(.)g(On)h(return,)f │ │ │ │ │ (the)h Fm(cpus[])d Fn(v)n(ector)h(con)n(tains)h(the)h(follo)n(wing)f │ │ │ │ │ (information.)p eop end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fn(4)p 125 100 1136 4 v │ │ │ │ │ -1301 w Fm(SemiImplMtx)23 b Fd(:)37 b Fe(DRAFT)27 b Fd(Ma)n(y)g(1,)g │ │ │ │ │ -(2024)p 2764 100 V 369 377 a Fm(cpus[0])97 b Fn(initialize)27 │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fn(4)p 125 100 1130 4 v │ │ │ │ │ +1295 w Fm(SemiImplMtx)23 b Fd(:)37 b Fe(DRAFT)27 b Fd(June)h(3,)f(2025) │ │ │ │ │ +p 2771 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 │ │ │ │ │ @@ -5281,22 +5284,22 @@ │ │ │ │ │ (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 1136 4 v 1302 100 a Fm(SemiImplMtx)23 │ │ │ │ │ -b Fd(:)37 b Fe(DRAFT)110 b Fd(Ma)n(y)27 b(1,)g(2024)p │ │ │ │ │ -2725 100 V 1136 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 │ │ │ │ │ +TeXDict begin 5 4 bop 83 100 1130 4 v 1295 100 a Fm(SemiImplMtx)23 │ │ │ │ │ +b Fd(:)37 b Fe(DRAFT)111 b Fd(June)27 b(3,)g(2025)p 2731 │ │ │ │ │ +100 V 1130 w Fn(5)307 390 y Fg(\210)42 b Fn(The)28 b(system)f(is)h │ │ │ │ │ +(solv)n(ed)e(using)h(the)h Fm(FrontMtx)d Fn(ob)5 b(ject.)307 │ │ │ │ │ +523 y Fg(\210)42 b Fn(A)28 b Fm(SemiImplMtx)23 b Fn(matrix)k(ob)5 │ │ │ │ │ +b(ject)28 b(is)f(constructed)g(from)h(the)g Fm(FrontMtx)c │ │ │ │ │ +Fn(ob)5 b(ject)27 b(and)h Fl(A)p Fn(.)307 656 y Fg(\210)42 │ │ │ │ │ +b Fn(The)28 b(system)f(is)h(solv)n(ed)e(using)h(the)h │ │ │ │ │ Fm(SemiImplMtx)c Fn(ob)5 b(ject.)208 822 y(V)-7 b(arious)30 │ │ │ │ │ b(statistics)h(and)g(CPU)g(timings)g(are)g(written)g(to)g(the)h │ │ │ │ │ (message)e(\014le)h(to)g(compare)f(the)i(t)n(w)n(o)e(solution)h(pro-) │ │ │ │ │ 208 922 y(cesses.)k(Use)28 b(the)g Fm(do)p 872 922 27 │ │ │ │ │ 4 v 31 w(grid)e Fn(shell)h(script)g(for)h(testing.)307 │ │ │ │ │ 1104 y Fg(\210)42 b Fn(The)28 b Fm(msglvl)d Fn(parameter)h(determines)i │ │ │ │ │ (the)g(amoun)n(t)f(of)g(output.)307 1237 y Fg(\210)42 │ │ │ │ │ ├── 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 May 1, 2024 │ │ │ │ │ │ + 2 SemiImplMtx : DRAFT June 3, 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 May 1, 2024 3 │ │ │ │ │ │ + SemiImplMtx : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 4 SemiImplMtx : DRAFT June 3, 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 May 1, 2024 5 │ │ │ │ │ │ + SemiImplMtx : DRAFT June 3, 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.05.01:0545 │ │ │ │ │ +%DVIPSSource: TeX output 2025.06.03:1221 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -1438,21 +1438,22 @@ │ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ │ /UnderlineThickness 50 def │ │ │ │ │ end readonly def │ │ │ │ │ /Encoding 256 array │ │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ │ dup 44 /comma put │ │ │ │ │ dup 48 /zero put │ │ │ │ │ -dup 49 /one put │ │ │ │ │ dup 50 /two put │ │ │ │ │ -dup 52 /four put │ │ │ │ │ +dup 51 /three put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 77 /M put │ │ │ │ │ -dup 97 /a put │ │ │ │ │ -dup 121 /y put │ │ │ │ │ +dup 74 /J put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ +dup 110 /n put │ │ │ │ │ +dup 117 /u put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ │ @@ -1633,68 +1634,70 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004ACD1870 │ │ │ │ │ -A5EA947858F5795870BFE1343AD803FB854BF8F5A4E794E8EC57BE41DB5B8734 │ │ │ │ │ -13E47950F29A81EA0C81EA798863883D7F41F78325CA190CBBFFE822AE494550 │ │ │ │ │ -4BE83703071FC9512D128927AF3F63CEF8F86ABE1E15D7B4DDD39576E7DFF45E │ │ │ │ │ -3CB4115AAB1830DE8647B915DB4BEBEB5235C281E098B899BAB951D8D5798F01 │ │ │ │ │ -7F7C47336D31438E5126738AFEAB29E9A7CBE06DE4DD604477B542D2620DFD58 │ │ │ │ │ -28FE34238572F23C5A8EB7ACEE1E154DA13FC1A5AA67A3BA8C5CDFB2B80312C9 │ │ │ │ │ -BC9FAE56D08DDFA9498E6EF0D0F6BD18B3923E0B670B0740528BC843610736CB │ │ │ │ │ -80228C105C2F72C3C22D610C3D8C268DEEA2AEEE3221E198E79FE2966487360C │ │ │ │ │ -84AE08AC326F48B21447652121B1EB68AF857B8628F27BB4ED00F273E0DD044A │ │ │ │ │ -7D11A5BFAAC0A82328444CC9DD90167681B07D55CE28655F40C21250A226DEAB │ │ │ │ │ -2D46FFB680CB9242BE192AC0E55A44D45709FA6DE638C130D92C4E9B07BC3D61 │ │ │ │ │ -25CC2F0A7ED4F3574242FFE4461272EB1401266EEF551E0E2B0EF51FA8F250EC │ │ │ │ │ -FD9AFB6F5A0CC442B566BC24400133E3E9B9A9FC801CEF284FD2B3ECA43421FA │ │ │ │ │ -51E5D1EFE7BEAA96658362C438A0A5A6DCBC664A85EF88037B42355195B9D19C │ │ │ │ │ -7961D5F63B123451B298CD52C144FCD4F3641A823FBA14605E2DFD845E89102C │ │ │ │ │ -4E345CFD80E3EE6F097095A84C941FFC91B234F3615E4EE4C5D564284656E364 │ │ │ │ │ -AB9C4D1DE05F8FD065CA6064893F0CF3A3A501D59EF6568D05D818A010D06518 │ │ │ │ │ -E2C20418ADD1E652867F265084A27A5FE0C32213C59FFC3A84EDC89382521E5B │ │ │ │ │ -8AF66D76601F83C5C33CC9CF968C77B66F1FA074AC3DAD8E453C9264D03969EF │ │ │ │ │ -9E387BB3BEAA4BF0A9D88BA2CE6094E8996A3752A657E322A57AF006444BF516 │ │ │ │ │ -501C43CAA1BA7F16A3B6E4D3EBDECCCC19564DF18FB68194C132238A5441A21A │ │ │ │ │ -F52285CA1CA94A4BEC61EB509FA35EA5E393D662D938F4291F37EB7C2D5815BE │ │ │ │ │ -446813E1CFD06FFFFF2C4355C9DAFA48E765F4CC5DE4B9E37CFFB75E7A0B6F4B │ │ │ │ │ -4E412496F9C27DF4BDD90A869F0EBD81A57AE0B84051450A5A3E06CB9930DB2C │ │ │ │ │ -7C2DDB774BE870AEFCC9F4F067BE243FF3FD4B5C71B96C607DC4975973AF2650 │ │ │ │ │ -E7DF2BE3523A370EEDD07B5456B96E372ED10510CE677C044E609F21E93652FD │ │ │ │ │ -33CE612F587530D12214A3719CDB170C315B5D8763D5D4C67B5CAE90309E77AC │ │ │ │ │ -B45EB356C13A7BDE0D7320A9849CA357E30D7CF1085FFD70071932C3180AFC28 │ │ │ │ │ -B093016BA3F49A3878C34BB4A8727A441EB6CFC1A73F2313A7BF8D32EDF27E62 │ │ │ │ │ -EBEBC058FBA80B136FD2DE05C673B66482224ECEC63EDFB519AC13B5CC6624A6 │ │ │ │ │ -B3FD79037DA3851E93A386115852DBA88B176F21EDDB5386DC7C993C4210B28F │ │ │ │ │ -438131A586E34A09724E7CE60139F8247BFF14D2674805B3BD454C134728A43E │ │ │ │ │ -139E0AF71A7AC5CE42041EC83FD454B00AD29959FCF007789FFAF2D3492DCA4B │ │ │ │ │ -566EAFE97591ABC51CD0CD9BCD64E285FB823E41AA817E96B2B224005DAA4E15 │ │ │ │ │ -2141DB436B9D3FBA4EE4C876FD19A2E5133106FE2B9F704CB9614FCDC91B7950 │ │ │ │ │ -57053F45A5ED993B48189AAFAD5289F97AE2B0AEB5606579F6BD75F743EDB5B6 │ │ │ │ │ -5AA8F8A64CE507A47325081B3A013DB1BD596CDD3A83D2F29B070D6F9C57496E │ │ │ │ │ -14DF3F0F731C3BB00F2CE3D4BBACF1320322195D1DEA7A545BB4725BD1C6EC3D │ │ │ │ │ -63250C72B897741F8599D9D9BD2FB50EC80EFF2ECD6CE6603E95AABB45462ACF │ │ │ │ │ -12B005EE5979B6B05BCE9B97061686102349142A3CCC26D57F2A3283DD8B6E2A │ │ │ │ │ -98885E48C0D4A1A5C9612EDCB3B3D265E9B8CCCCA5D99F07F96C15B27D6A161F │ │ │ │ │ -936599E503C2859927201CACC31581AB7AB84F9EC9FFADC239F01DCC55940AB7 │ │ │ │ │ -FA884AA1EB6494C8E53DAD66E75A317428ACF9D943A74683BF547958F67D9E36 │ │ │ │ │ -F985EED50DEBCF255756A821927CB73848DCF167E96E975E959DE27FE7BA4FBA │ │ │ │ │ -D0EFC003F019D87572D6F9C73FC5B880C3EEDB7EF98E5EC3D25D6FE0015A6590 │ │ │ │ │ -E3C6EE632D7F6558B914609A8829CD1DEAB83A3F1207D5C3AAC9EAEA9DE1B4F8 │ │ │ │ │ -2375C5D4F630BCE13475F941ED2324D2CD4DCF2285298EAA4FFF89433D853860 │ │ │ │ │ -A974A9FC0808580FBDE7D02EDBB3D8C65BD3109AE8B359E96BFB7E21C696F440 │ │ │ │ │ -312B0CCAD810BF070DF8FC281E8198EB20A7FF9C9BCD291D74BC75EE46799485 │ │ │ │ │ -1AB2AE36B7E525034D146A856AF3BD9057A0033C08B606B89DD130548950C93D │ │ │ │ │ -94A8C92C47A34A791B1C108D2F36E899B79358B8081CCFC3D1A2F0521E4E2AE4 │ │ │ │ │ -7F500D6F2A53E5393E44201287225912590ABC738E8726622B67C3425639CCFB │ │ │ │ │ -F450B78A4918 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004B9BA1CC │ │ │ │ │ +580D3C6BDA4DC1B80B4365F1C80512453FC5316EC2D928FB731C3D6403E3C18B │ │ │ │ │ +E8424D644DF5E9A2134229C5C91CA68DB8E85BA2BB40F538F585DA6FA4037718 │ │ │ │ │ +B8053EBBA1E765346BCD5BDAA6C38115D31611D8A87A2238C145F2DA2F92E4DF │ │ │ │ │ +3987BD9C4D2A3D460E8941A68B125BCD9EE4F9FD262C4C8A71F47A2C81975635 │ │ │ │ │ +F1B981C274C53FA2ACCDE4C9D0A7C62D6C1EFF91CFC6712CA6A9F333C9564FCB │ │ │ │ │ +2A70F0AD715A79B10A08AB069E2A3C93BC0AED19D0CA10134B8DDDE8AF548DB2 │ │ │ │ │ +3A4AAA9C29682CF135BB767DAA16169A127EB50A7EECEB6480CF56A7D0F8AC56 │ │ │ │ │ +4A5090B3D75A790372886AF568D94C8165975A05BFBFDF1FFBA45F70700BB9E0 │ │ │ │ │ +57F3249EF9E9C8AD9CBCF6E4FD592DC4CDD2D7864F7C8A3FA6FC44C25C0CE7E1 │ │ │ │ │ +299F8A90B32B75DEA28917531621E1E7E0ECEE9E01665DEE99FBCF3EC3F30686 │ │ │ │ │ +513D7CBA745E660502603865D5A3E82D24B3F94B2884B21DC53AED87F49380E0 │ │ │ │ │ +68EE79C580931308DA762670C1F86F07FFB479773CD9C5DE6F22980DEC973D1C │ │ │ │ │ +A1E162D73932561BAAB24DE51DC8708291B666B36BABCA1FEDB6DD9C22572914 │ │ │ │ │ +7194DA044319F362452D53DD4D9A59134838E540F1E23805CEF53FF4F7519385 │ │ │ │ │ +1FAE3061F94369FEB1232BDA2E2A281E6972FB4524EFA37A598E7CDC097683EA │ │ │ │ │ +1B609952AEC0799B4711AAAB22D6B1D5CC729DE70897FDDC48AF0A12E40FFE30 │ │ │ │ │ +6528C601E68E8CFA4BBF897CF89DB712DE108DD1F084EFD917BFD9A70A74EB8F │ │ │ │ │ +D0D5B43CCC30373A5E871F18A969D01C69C2B4377622A0C8C4D7C4C28DDE5586 │ │ │ │ │ +BD17D5D640A6F396BD41993BD1932EE10953847F82F7BB36480B67A4F69F0763 │ │ │ │ │ +69423D1803B7BB60594ABEEE9578076639B84D8323F56104438803D45402FEE3 │ │ │ │ │ +045DAB16C4459DA9BBE01D0385CC771FB8DABDD8A9D280C18553F92FE6591CFD │ │ │ │ │ +26B82F28E6673BD823598D3F6CE03BEE04D9A21ED908DFC4F640227C148F133D │ │ │ │ │ +D32113275297C16EBCC9028AFD9102DE50E9CF67E7CF8C42BB8E73D1DAF8A5E2 │ │ │ │ │ +EF5979426229664A990DEF980A7038D2F229789D4F6EDBE1FB81BEC1A1BB14D7 │ │ │ │ │ +882515C62660E8877BE942712D57B86A2E19995AF087DECB7FD5208583C020AE │ │ │ │ │ +FEC86A2826530AD855006225300E4655F443C9360A8BAC96B5B096DDC9B12EDF │ │ │ │ │ +C862215AD6C432CF345FE701757E4EBB8C65F46912CB0F4DEF53672F7298D8F7 │ │ │ │ │ +EE51A9C5DE689A8D36956B7F0410893C0998DB03B73B4024CB046F8F6B32E07F │ │ │ │ │ +CD28A68AFB7152E45F1021DCD520D8A429FCDCA4B8054BAF0B48C4443280F198 │ │ │ │ │ +3360B078E6DEC37772DA8B629CFFD1534E8AA10E26B0BC58E92B9BF280C8EE45 │ │ │ │ │ +618EECDE904249F5A2010DC55D1028DFF4F058260B2B0A46541D6157970F44BD │ │ │ │ │ +D7483802D56A81184119DDBC914E8E394CBEEB506B61BB1CE2A3465252E5D8A3 │ │ │ │ │ +6BDD2D067E69D4ECEFC7D5568378F5F8B38EAFF138014185FE19DF7358A7A780 │ │ │ │ │ +3BE0E2CCD1561113F2F2319BDB503230DD0866121604710CEBBAA659ABFC010B │ │ │ │ │ +5CC40E5807F461D87E75BDC6AD96BCEF62AF668D48D7A76D08B57650F35CF609 │ │ │ │ │ +C0F791AEBEB75E29FA69596BAB419804AECE0F0238AAE64A6C13A22EBF4E3EAC │ │ │ │ │ +3570DECE85F54064486B2364D63E94FEB7C16350CDA318510A45C8848DB470ED │ │ │ │ │ +BFAFD2365681D65CFF3E6C1B4B7C8AE3066F96E819D05B97F3A6C2BFF8A72978 │ │ │ │ │ +EEB7F632FF604AD003A3CCA5A0465D53033A646E8082D3491EDECA3DA1A0E1BB │ │ │ │ │ +64BF36946520438D2EE72FA9EB1CEEDF56510AADA55A8DE280E23C904E0810FA │ │ │ │ │ +A3177CF684F06A4042DE4CD4AB21E2F0616153BEEE58EBBD89911FA43BC52969 │ │ │ │ │ +230C8137DB34C13E147B06C7A3875A931E1AC127E7D3EA0DF8346B6971F80901 │ │ │ │ │ +DC37F2DE1A0B81FD93CA3B5EB9B29ECABA1492901B1BA261DAB872FB3431C718 │ │ │ │ │ +9C9CDA7864908CD773864908DEB44E343221C2C4C335341789A46325D94C767C │ │ │ │ │ +740E3B60CE6D452A3A665967F568671FD7DD460B404B9C3D2EDCD47A336AA2C7 │ │ │ │ │ +BB0B1AC3823978F610629EF7AB526098A7EE7076F50A146D8134BA2DEC1B8ACF │ │ │ │ │ +68A7E4A9B7BE17FB71480516F2D6A8866E56CFD7C7A41311F48DDDD9887DACB8 │ │ │ │ │ +73FDAF5F25E956AFB0A9D530DE2E1128F006AAC9A78715BA2F90C8FED3729BFA │ │ │ │ │ +BDDD4098F870A27A91A0CB540D166FF86A442E95C9C361FD23378A2A138EAFB8 │ │ │ │ │ +D7050B486E1CB95068D890BCCD669456F3385C8F1793CE545099421368FE0F46 │ │ │ │ │ +53137AD2B65030B19CE7FF6B1669DB7A3C440AEF27149780E36C7097B7A8B71B │ │ │ │ │ +8789EECFA9A70B1F9695BB5D94E9A7D341291C1CA1BDEF4BE3EFCB8234CE9FFD │ │ │ │ │ +E1C4963CF919780129FA60162FEAA8AE97328F4BA14D949057A3EE74214F2D29 │ │ │ │ │ +51E7BE584446F6702F39957AE455CF8AF0C36AADAA39B53553D923CA5E9D4988 │ │ │ │ │ +76701B4F77DAE5185AC29900 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -4324,17 +4327,17 @@ │ │ │ │ │ %%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 23[45 19[83 18[25 5[45 1[45 45 45 3[25 44[{}9 │ │ │ │ │ -90.9091 /CMSL10 rf /Fe 132[52 123[{}1 90.9091 /CMBX10 │ │ │ │ │ -rf │ │ │ │ │ +/Fd 138[51 6[51 8[40 26[47 15[25 4[45 1[45 45 1[45 3[25 │ │ │ │ │ +44[{}10 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 │ │ │ │ │ {/.notdef}repeat/dollar/.notdef/.notdef/quotesingle/.notdef/.notdef │ │ │ │ │ @@ -4448,17 +4451,17 @@ │ │ │ │ │ b Fl(int)i(*rowidsUpper)27 b Fm({)k(v)m(ector)h(of)e(ro)m(w)h(ids)f │ │ │ │ │ (for)g(the)h(upp)s(er)d(triangle)137 5213 y Ff(\210)45 │ │ │ │ │ b Fl(int)i(*colidsUpper)27 b Fm({)k(v)m(ector)h(of)e(column)h(ids)f │ │ │ │ │ (for)g(the)g(upp)s(er)f(triangle)137 5407 y Ff(\210)45 │ │ │ │ │ b Fl(int)i(*mapUpper)28 b Fm({)j(map)f(from)g(submatrices)g(to)h │ │ │ │ │ (threads)f(or)g(pro)s(cesses)1927 5656 y(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fm(2)p 136 100 1130 4 v │ │ │ │ │ -1312 w Fl(SolveMap)28 b Fd(:)41 b Fk(DRAFT)30 b Fd(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2770 100 V 137 399 a Ff(\210)45 b Fl(int)i(nblockLower)27 │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fm(2)p 136 100 1123 4 v │ │ │ │ │ +1305 w Fl(SolveMap)28 b Fd(:)41 b Fk(DRAFT)30 b Fd(June)f(3,)i(2025)p │ │ │ │ │ +2777 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 │ │ │ │ │ @@ -4510,24 +4513,24 @@ │ │ │ │ │ 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 1130 4 v 1312 100 a Fl(SolveMap)28 │ │ │ │ │ -b Fd(:)40 b Fk(DRAFT)121 b Fd(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2723 100 V 1130 w Fm(3)111 399 y(2.)46 b Fl(int)h(SolveMap_nfront)d(\() │ │ │ │ │ -j(SolveMap)f(*solvemap)f(\))j(;)227 552 y Fm(This)30 │ │ │ │ │ -b(metho)s(d)g(returns)f Fl(nfront)p Fm(,)g(the)h(n)m(um)m(b)s(er)f(of)i │ │ │ │ │ -(fron)m(ts.)227 706 y Fk(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ │ -b Fm(If)30 b Fl(solvemap)e Fm(is)j Fl(NULL)p Fm(,)e(an)i(error)f │ │ │ │ │ -(message)h(is)g(prin)m(ted)e(and)h(the)h(program)f(exits.)111 │ │ │ │ │ -901 y(3.)46 b Fl(int)h(SolveMap_nproc)d(\()k(SolveMap)d(*solvemap)g(\)) │ │ │ │ │ -j(;)227 1055 y Fm(This)30 b(metho)s(d)g(returns)f Fl(nproc)p │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1123 4 v 1305 100 a Fl(SolveMap)28 │ │ │ │ │ +b Fd(:)40 b Fk(DRAFT)122 b Fd(June)29 b(3,)i(2025)p 2730 │ │ │ │ │ +100 V 1123 w Fm(3)111 399 y(2.)46 b Fl(int)h(SolveMap_nfront)d(\()j │ │ │ │ │ +(SolveMap)f(*solvemap)f(\))j(;)227 552 y Fm(This)30 b(metho)s(d)g │ │ │ │ │ +(returns)f Fl(nfront)p Fm(,)g(the)h(n)m(um)m(b)s(er)f(of)i(fron)m(ts.) │ │ │ │ │ +227 706 y Fk(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fm(If)30 │ │ │ │ │ +b Fl(solvemap)e Fm(is)j Fl(NULL)p Fm(,)e(an)i(error)f(message)h(is)g │ │ │ │ │ +(prin)m(ted)e(and)h(the)h(program)f(exits.)111 901 y(3.)46 │ │ │ │ │ +b Fl(int)h(SolveMap_nproc)d(\()k(SolveMap)d(*solvemap)g(\))j(;)227 │ │ │ │ │ +1055 y Fm(This)30 b(metho)s(d)g(returns)f Fl(nproc)p │ │ │ │ │ Fm(,)g(the)i(n)m(um)m(b)s(er)e(of)h(threads)g(or)h(pro)s(cesses.)227 │ │ │ │ │ 1209 y Fk(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fm(If)30 │ │ │ │ │ b Fl(solvemap)e Fm(is)j Fl(NULL)p Fm(,)e(an)i(error)f(message)h(is)g │ │ │ │ │ (prin)m(ted)e(and)h(the)h(program)f(exits.)111 1404 y(4.)46 │ │ │ │ │ b Fl(int)h(SolveMap_nblockUpper)42 b(\()48 b(SolveMap)d(*solvemap)h(\)) │ │ │ │ │ h(;)227 1558 y Fm(This)d(metho)s(d)g(returns)g Fl(nblockUpper)p │ │ │ │ │ Fm(,)i(the)f(n)m(um)m(b)s(er)e(of)i(o\013-diagonal)i(submatrices)e(in)f │ │ │ │ │ @@ -4576,17 +4579,17 @@ │ │ │ │ │ Fl(rowidsLower)p Fm(,)g(a)i(p)s(oin)m(ter)g(to)h(the)f(v)m(ector)h(of)f │ │ │ │ │ (ro)m(w)g(ids)f(of)h(the)h(submatrices)e(in)227 5253 │ │ │ │ │ y(the)e(lo)m(w)m(er)g(triangle.)227 5407 y Fk(Err)-5 │ │ │ │ │ b(or)34 b(che)-5 b(cking:)40 b Fm(If)30 b Fl(solvemap)e │ │ │ │ │ Fm(is)j Fl(NULL)p Fm(,)e(an)i(error)f(message)h(is)g(prin)m(ted)e(and)h │ │ │ │ │ (the)h(program)f(exits.)p eop end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fm(4)p 136 100 1130 4 v │ │ │ │ │ -1312 w Fl(SolveMap)28 b Fd(:)41 b Fk(DRAFT)30 b Fd(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2770 100 V 66 399 a Fm(11.)46 b Fl(int)h(*)h(SolveMap_colidsLower)42 │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fm(4)p 136 100 1123 4 v │ │ │ │ │ +1305 w Fl(SolveMap)28 b Fd(:)41 b Fk(DRAFT)30 b Fd(June)f(3,)i(2025)p │ │ │ │ │ +2777 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 │ │ │ │ │ @@ -4644,17 +4647,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 1130 4 v 1312 100 a Fl(SolveMap)28 │ │ │ │ │ -b Fd(:)40 b Fk(DRAFT)121 b Fd(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2723 100 V 1130 w Fm(5)0 399 y Fb(1.2.5)112 b(Solv)m(e)38 │ │ │ │ │ +TeXDict begin 5 4 bop 91 100 1123 4 v 1305 100 a Fl(SolveMap)28 │ │ │ │ │ +b Fd(:)40 b Fk(DRAFT)122 b Fd(June)29 b(3,)i(2025)p 2730 │ │ │ │ │ +100 V 1123 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 │ │ │ │ │ @@ -4722,17 +4725,17 @@ │ │ │ │ │ b(ject)35 b(that)f(con)m(tains)h(the)f(aggregate)i(coun)m(t)f(for)e(a)h │ │ │ │ │ (forw)m(ard)f(solv)m(e.)52 b(If)227 5407 y Fl(myid)32 │ │ │ │ │ b Fm(o)m(wns)g(fron)m(t)h Fl(J)p Fm(,)g(then)f(en)m(try)h │ │ │ │ │ Fl(J)f Fm(of)h(the)g(returned)f Fl(IV)g Fm(ob)5 b(ject)33 │ │ │ │ │ b(con)m(tains)h(the)f(n)m(um)m(b)s(er)e(of)i(pro)s(cesses)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 6 6 │ │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fm(6)p 136 100 1130 4 v │ │ │ │ │ -1312 w Fl(SolveMap)28 b Fd(:)41 b Fk(DRAFT)30 b Fd(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2770 100 V 227 399 a Fm(\(other)d(than)e Fl(myid)p Fm(\))g(that)i(o)m │ │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fm(6)p 136 100 1123 4 v │ │ │ │ │ +1305 w Fl(SolveMap)28 b Fd(:)41 b Fk(DRAFT)30 b Fd(June)f(3,)i(2025)p │ │ │ │ │ +2777 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 │ │ │ │ │ @@ -4811,21 +4814,21 @@ │ │ │ │ │ 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 1130 4 v 1312 100 a Fl(SolveMap)28 │ │ │ │ │ -b Fd(:)40 b Fk(DRAFT)121 b Fd(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2723 100 V 1130 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 │ │ │ │ │ +TeXDict begin 7 6 bop 91 100 1123 4 v 1305 100 a Fl(SolveMap)28 │ │ │ │ │ +b Fd(:)40 b Fk(DRAFT)122 b Fd(June)29 b(3,)i(2025)p 2730 │ │ │ │ │ +100 V 1123 w Fm(7)111 399 y(6.)46 b Fl(int)h(SolveMap_writeToBinaryFil) │ │ │ │ │ +o(e)42 b(\()47 b(SolveMap)f(*solvemap,)f(FILE)h(*fp)h(\))h(;)227 │ │ │ │ │ +549 y Fm(This)29 b(metho)s(d)h(writes)g(an)f Fl(SolveMap)f │ │ │ │ │ +Fm(ob)5 b(ject)31 b(to)f(a)h(binary)e(\014le.)40 b(If)30 │ │ │ │ │ +b(there)g(are)g(no)g(errors)f(in)h(writing)g(the)227 │ │ │ │ │ 662 y(data,)i(the)e(v)-5 b(alue)31 b Fl(1)f Fm(is)g(returned.)40 │ │ │ │ │ b(If)30 b(an)g(IO)g(error)g(is)g(encoun)m(tered)h(from)f │ │ │ │ │ Fl(fwrite)p Fm(,)f(zero)i(is)g(returned.)227 812 y Fk(Err)-5 │ │ │ │ │ b(or)33 b(che)-5 b(cking:)40 b Fm(If)28 b Fl(solvemap)f │ │ │ │ │ Fm(or)i Fl(fp)g Fm(are)g Fl(NULL)f Fm(an)h(error)g(message)h(is)f(prin) │ │ │ │ │ m(ted)f(and)h(zero)h(is)f(returned.)111 1000 y(7.)46 │ │ │ │ │ b Fl(int)h(SolveMap_writeForHumanEye)41 b(\()48 b(SolveMap)d │ │ │ │ │ ├── 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 May 1, 2024 │ │ │ │ │ │ + 2 SolveMap : DRAFT June 3, 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 May 1, 2024 3 │ │ │ │ │ │ + SolveMap : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 4 SolveMap : DRAFT June 3, 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 May 1, 2024 5 │ │ │ │ │ │ + SolveMap : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 6 SolveMap : DRAFT June 3, 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 May 1, 2024 7 │ │ │ │ │ │ + SolveMap : DRAFT June 3, 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.05.01:0545 │ │ │ │ │ +%DVIPSSource: TeX output 2025.06.03:1221 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -2118,21 +2118,22 @@ │ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ │ /UnderlineThickness 50 def │ │ │ │ │ end readonly def │ │ │ │ │ /Encoding 256 array │ │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ │ dup 44 /comma put │ │ │ │ │ dup 48 /zero put │ │ │ │ │ -dup 49 /one put │ │ │ │ │ dup 50 /two put │ │ │ │ │ -dup 52 /four put │ │ │ │ │ +dup 51 /three put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 77 /M put │ │ │ │ │ -dup 97 /a put │ │ │ │ │ -dup 121 /y put │ │ │ │ │ +dup 74 /J put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ +dup 110 /n put │ │ │ │ │ +dup 117 /u put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ │ @@ -2313,68 +2314,70 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004ACD1870 │ │ │ │ │ -A5EA947858F5795870BFE1343AD803FB854BF8F5A4E794E8EC57BE41DB5B8734 │ │ │ │ │ -13E47950F29A81EA0C81EA798863883D7F41F78325CA190CBBFFE822AE494550 │ │ │ │ │ -4BE83703071FC9512D128927AF3F63CEF8F86ABE1E15D7B4DDD39576E7DFF45E │ │ │ │ │ -3CB4115AAB1830DE8647B915DB4BEBEB5235C281E098B899BAB951D8D5798F01 │ │ │ │ │ -7F7C47336D31438E5126738AFEAB29E9A7CBE06DE4DD604477B542D2620DFD58 │ │ │ │ │ -28FE34238572F23C5A8EB7ACEE1E154DA13FC1A5AA67A3BA8C5CDFB2B80312C9 │ │ │ │ │ -BC9FAE56D08DDFA9498E6EF0D0F6BD18B3923E0B670B0740528BC843610736CB │ │ │ │ │ -80228C105C2F72C3C22D610C3D8C268DEEA2AEEE3221E198E79FE2966487360C │ │ │ │ │ -84AE08AC326F48B21447652121B1EB68AF857B8628F27BB4ED00F273E0DD044A │ │ │ │ │ -7D11A5BFAAC0A82328444CC9DD90167681B07D55CE28655F40C21250A226DEAB │ │ │ │ │ -2D46FFB680CB9242BE192AC0E55A44D45709FA6DE638C130D92C4E9B07BC3D61 │ │ │ │ │ -25CC2F0A7ED4F3574242FFE4461272EB1401266EEF551E0E2B0EF51FA8F250EC │ │ │ │ │ -FD9AFB6F5A0CC442B566BC24400133E3E9B9A9FC801CEF284FD2B3ECA43421FA │ │ │ │ │ -51E5D1EFE7BEAA96658362C438A0A5A6DCBC664A85EF88037B42355195B9D19C │ │ │ │ │ -7961D5F63B123451B298CD52C144FCD4F3641A823FBA14605E2DFD845E89102C │ │ │ │ │ -4E345CFD80E3EE6F097095A84C941FFC91B234F3615E4EE4C5D564284656E364 │ │ │ │ │ -AB9C4D1DE05F8FD065CA6064893F0CF3A3A501D59EF6568D05D818A010D06518 │ │ │ │ │ -E2C20418ADD1E652867F265084A27A5FE0C32213C59FFC3A84EDC89382521E5B │ │ │ │ │ -8AF66D76601F83C5C33CC9CF968C77B66F1FA074AC3DAD8E453C9264D03969EF │ │ │ │ │ -9E387BB3BEAA4BF0A9D88BA2CE6094E8996A3752A657E322A57AF006444BF516 │ │ │ │ │ -501C43CAA1BA7F16A3B6E4D3EBDECCCC19564DF18FB68194C132238A5441A21A │ │ │ │ │ -F52285CA1CA94A4BEC61EB509FA35EA5E393D662D938F4291F37EB7C2D5815BE │ │ │ │ │ -446813E1CFD06FFFFF2C4355C9DAFA48E765F4CC5DE4B9E37CFFB75E7A0B6F4B │ │ │ │ │ -4E412496F9C27DF4BDD90A869F0EBD81A57AE0B84051450A5A3E06CB9930DB2C │ │ │ │ │ -7C2DDB774BE870AEFCC9F4F067BE243FF3FD4B5C71B96C607DC4975973AF2650 │ │ │ │ │ -E7DF2BE3523A370EEDD07B5456B96E372ED10510CE677C044E609F21E93652FD │ │ │ │ │ -33CE612F587530D12214A3719CDB170C315B5D8763D5D4C67B5CAE90309E77AC │ │ │ │ │ -B45EB356C13A7BDE0D7320A9849CA357E30D7CF1085FFD70071932C3180AFC28 │ │ │ │ │ -B093016BA3F49A3878C34BB4A8727A441EB6CFC1A73F2313A7BF8D32EDF27E62 │ │ │ │ │ -EBEBC058FBA80B136FD2DE05C673B66482224ECEC63EDFB519AC13B5CC6624A6 │ │ │ │ │ -B3FD79037DA3851E93A386115852DBA88B176F21EDDB5386DC7C993C4210B28F │ │ │ │ │ -438131A586E34A09724E7CE60139F8247BFF14D2674805B3BD454C134728A43E │ │ │ │ │ -139E0AF71A7AC5CE42041EC83FD454B00AD29959FCF007789FFAF2D3492DCA4B │ │ │ │ │ -566EAFE97591ABC51CD0CD9BCD64E285FB823E41AA817E96B2B224005DAA4E15 │ │ │ │ │ -2141DB436B9D3FBA4EE4C876FD19A2E5133106FE2B9F704CB9614FCDC91B7950 │ │ │ │ │ -57053F45A5ED993B48189AAFAD5289F97AE2B0AEB5606579F6BD75F743EDB5B6 │ │ │ │ │ -5AA8F8A64CE507A47325081B3A013DB1BD596CDD3A83D2F29B070D6F9C57496E │ │ │ │ │ -14DF3F0F731C3BB00F2CE3D4BBACF1320322195D1DEA7A545BB4725BD1C6EC3D │ │ │ │ │ -63250C72B897741F8599D9D9BD2FB50EC80EFF2ECD6CE6603E95AABB45462ACF │ │ │ │ │ -12B005EE5979B6B05BCE9B97061686102349142A3CCC26D57F2A3283DD8B6E2A │ │ │ │ │ -98885E48C0D4A1A5C9612EDCB3B3D265E9B8CCCCA5D99F07F96C15B27D6A161F │ │ │ │ │ -936599E503C2859927201CACC31581AB7AB84F9EC9FFADC239F01DCC55940AB7 │ │ │ │ │ -FA884AA1EB6494C8E53DAD66E75A317428ACF9D943A74683BF547958F67D9E36 │ │ │ │ │ -F985EED50DEBCF255756A821927CB73848DCF167E96E975E959DE27FE7BA4FBA │ │ │ │ │ -D0EFC003F019D87572D6F9C73FC5B880C3EEDB7EF98E5EC3D25D6FE0015A6590 │ │ │ │ │ -E3C6EE632D7F6558B914609A8829CD1DEAB83A3F1207D5C3AAC9EAEA9DE1B4F8 │ │ │ │ │ -2375C5D4F630BCE13475F941ED2324D2CD4DCF2285298EAA4FFF89433D853860 │ │ │ │ │ -A974A9FC0808580FBDE7D02EDBB3D8C65BD3109AE8B359E96BFB7E21C696F440 │ │ │ │ │ -312B0CCAD810BF070DF8FC281E8198EB20A7FF9C9BCD291D74BC75EE46799485 │ │ │ │ │ -1AB2AE36B7E525034D146A856AF3BD9057A0033C08B606B89DD130548950C93D │ │ │ │ │ -94A8C92C47A34A791B1C108D2F36E899B79358B8081CCFC3D1A2F0521E4E2AE4 │ │ │ │ │ -7F500D6F2A53E5393E44201287225912590ABC738E8726622B67C3425639CCFB │ │ │ │ │ -F450B78A4918 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004B9BA1CC │ │ │ │ │ +580D3C6BDA4DC1B80B4365F1C80512453FC5316EC2D928FB731C3D6403E3C18B │ │ │ │ │ +E8424D644DF5E9A2134229C5C91CA68DB8E85BA2BB40F538F585DA6FA4037718 │ │ │ │ │ +B8053EBBA1E765346BCD5BDAA6C38115D31611D8A87A2238C145F2DA2F92E4DF │ │ │ │ │ +3987BD9C4D2A3D460E8941A68B125BCD9EE4F9FD262C4C8A71F47A2C81975635 │ │ │ │ │ +F1B981C274C53FA2ACCDE4C9D0A7C62D6C1EFF91CFC6712CA6A9F333C9564FCB │ │ │ │ │ +2A70F0AD715A79B10A08AB069E2A3C93BC0AED19D0CA10134B8DDDE8AF548DB2 │ │ │ │ │ +3A4AAA9C29682CF135BB767DAA16169A127EB50A7EECEB6480CF56A7D0F8AC56 │ │ │ │ │ +4A5090B3D75A790372886AF568D94C8165975A05BFBFDF1FFBA45F70700BB9E0 │ │ │ │ │ +57F3249EF9E9C8AD9CBCF6E4FD592DC4CDD2D7864F7C8A3FA6FC44C25C0CE7E1 │ │ │ │ │ +299F8A90B32B75DEA28917531621E1E7E0ECEE9E01665DEE99FBCF3EC3F30686 │ │ │ │ │ +513D7CBA745E660502603865D5A3E82D24B3F94B2884B21DC53AED87F49380E0 │ │ │ │ │ +68EE79C580931308DA762670C1F86F07FFB479773CD9C5DE6F22980DEC973D1C │ │ │ │ │ +A1E162D73932561BAAB24DE51DC8708291B666B36BABCA1FEDB6DD9C22572914 │ │ │ │ │ +7194DA044319F362452D53DD4D9A59134838E540F1E23805CEF53FF4F7519385 │ │ │ │ │ +1FAE3061F94369FEB1232BDA2E2A281E6972FB4524EFA37A598E7CDC097683EA │ │ │ │ │ +1B609952AEC0799B4711AAAB22D6B1D5CC729DE70897FDDC48AF0A12E40FFE30 │ │ │ │ │ +6528C601E68E8CFA4BBF897CF89DB712DE108DD1F084EFD917BFD9A70A74EB8F │ │ │ │ │ +D0D5B43CCC30373A5E871F18A969D01C69C2B4377622A0C8C4D7C4C28DDE5586 │ │ │ │ │ +BD17D5D640A6F396BD41993BD1932EE10953847F82F7BB36480B67A4F69F0763 │ │ │ │ │ +69423D1803B7BB60594ABEEE9578076639B84D8323F56104438803D45402FEE3 │ │ │ │ │ +045DAB16C4459DA9BBE01D0385CC771FB8DABDD8A9D280C18553F92FE6591CFD │ │ │ │ │ +26B82F28E6673BD823598D3F6CE03BEE04D9A21ED908DFC4F640227C148F133D │ │ │ │ │ +D32113275297C16EBCC9028AFD9102DE50E9CF67E7CF8C42BB8E73D1DAF8A5E2 │ │ │ │ │ +EF5979426229664A990DEF980A7038D2F229789D4F6EDBE1FB81BEC1A1BB14D7 │ │ │ │ │ +882515C62660E8877BE942712D57B86A2E19995AF087DECB7FD5208583C020AE │ │ │ │ │ +FEC86A2826530AD855006225300E4655F443C9360A8BAC96B5B096DDC9B12EDF │ │ │ │ │ +C862215AD6C432CF345FE701757E4EBB8C65F46912CB0F4DEF53672F7298D8F7 │ │ │ │ │ +EE51A9C5DE689A8D36956B7F0410893C0998DB03B73B4024CB046F8F6B32E07F │ │ │ │ │ +CD28A68AFB7152E45F1021DCD520D8A429FCDCA4B8054BAF0B48C4443280F198 │ │ │ │ │ +3360B078E6DEC37772DA8B629CFFD1534E8AA10E26B0BC58E92B9BF280C8EE45 │ │ │ │ │ +618EECDE904249F5A2010DC55D1028DFF4F058260B2B0A46541D6157970F44BD │ │ │ │ │ +D7483802D56A81184119DDBC914E8E394CBEEB506B61BB1CE2A3465252E5D8A3 │ │ │ │ │ +6BDD2D067E69D4ECEFC7D5568378F5F8B38EAFF138014185FE19DF7358A7A780 │ │ │ │ │ +3BE0E2CCD1561113F2F2319BDB503230DD0866121604710CEBBAA659ABFC010B │ │ │ │ │ +5CC40E5807F461D87E75BDC6AD96BCEF62AF668D48D7A76D08B57650F35CF609 │ │ │ │ │ +C0F791AEBEB75E29FA69596BAB419804AECE0F0238AAE64A6C13A22EBF4E3EAC │ │ │ │ │ +3570DECE85F54064486B2364D63E94FEB7C16350CDA318510A45C8848DB470ED │ │ │ │ │ +BFAFD2365681D65CFF3E6C1B4B7C8AE3066F96E819D05B97F3A6C2BFF8A72978 │ │ │ │ │ +EEB7F632FF604AD003A3CCA5A0465D53033A646E8082D3491EDECA3DA1A0E1BB │ │ │ │ │ +64BF36946520438D2EE72FA9EB1CEEDF56510AADA55A8DE280E23C904E0810FA │ │ │ │ │ +A3177CF684F06A4042DE4CD4AB21E2F0616153BEEE58EBBD89911FA43BC52969 │ │ │ │ │ +230C8137DB34C13E147B06C7A3875A931E1AC127E7D3EA0DF8346B6971F80901 │ │ │ │ │ +DC37F2DE1A0B81FD93CA3B5EB9B29ECABA1492901B1BA261DAB872FB3431C718 │ │ │ │ │ +9C9CDA7864908CD773864908DEB44E343221C2C4C335341789A46325D94C767C │ │ │ │ │ +740E3B60CE6D452A3A665967F568671FD7DD460B404B9C3D2EDCD47A336AA2C7 │ │ │ │ │ +BB0B1AC3823978F610629EF7AB526098A7EE7076F50A146D8134BA2DEC1B8ACF │ │ │ │ │ +68A7E4A9B7BE17FB71480516F2D6A8866E56CFD7C7A41311F48DDDD9887DACB8 │ │ │ │ │ +73FDAF5F25E956AFB0A9D530DE2E1128F006AAC9A78715BA2F90C8FED3729BFA │ │ │ │ │ +BDDD4098F870A27A91A0CB540D166FF86A442E95C9C361FD23378A2A138EAFB8 │ │ │ │ │ +D7050B486E1CB95068D890BCCD669456F3385C8F1793CE545099421368FE0F46 │ │ │ │ │ +53137AD2B65030B19CE7FF6B1669DB7A3C440AEF27149780E36C7097B7A8B71B │ │ │ │ │ +8789EECFA9A70B1F9695BB5D94E9A7D341291C1CA1BDEF4BE3EFCB8234CE9FFD │ │ │ │ │ +E1C4963CF919780129FA60162FEAA8AE97328F4BA14D949057A3EE74214F2D29 │ │ │ │ │ +51E7BE584446F6702F39957AE455CF8AF0C36AADAA39B53553D923CA5E9D4988 │ │ │ │ │ +76701B4F77DAE5185AC29900 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -5219,17 +5222,17 @@ │ │ │ │ │ 86 1[62 3[84 5[42 6[80 10[56 56 56 56 56 56 56 2[31 46[{}31 │ │ │ │ │ 99.6264 /CMBX12 rf /Fd 135[62 2[62 62 4[62 4[62 4[62 │ │ │ │ │ 1[62 62 14[62 5[62 77[{}10 119.552 /CMTT12 rf /Fe 134[71 │ │ │ │ │ 2[71 75 52 53 55 1[75 67 75 112 3[37 75 67 41 61 75 60 │ │ │ │ │ 1[65 13[75 2[92 11[103 16[67 67 67 2[37 46[{}25 119.552 │ │ │ │ │ /CMBX12 rf /Ff 138[49 30 37 38 1[46 46 51 1[23 42 1[28 │ │ │ │ │ 46 42 1[42 46 42 1[46 12[65 1[66 11[59 62 69 2[68 6[28 │ │ │ │ │ -58[{}23 90.9091 /CMTI10 rf /Fg 134[48 23[45 19[83 18[25 │ │ │ │ │ -5[45 1[45 45 45 3[25 44[{}9 90.9091 /CMSL10 rf /Fh 132[52 │ │ │ │ │ -123[{}1 90.9091 /CMBX10 rf │ │ │ │ │ +58[{}23 90.9091 /CMTI10 rf /Fg 138[51 6[51 8[40 26[47 │ │ │ │ │ +15[25 4[45 1[45 45 1[45 3[25 44[{}10 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 │ │ │ │ │ @@ -5353,17 +5356,17 @@ │ │ │ │ │ y Fh({)45 b Fo(sparse)30 b(using)g(dense)g(sub)s(columns)330 │ │ │ │ │ 5111 y Fh({)45 b Fo(sparse)30 b(using)g(sparse)g(ro)m(ws)330 │ │ │ │ │ 5259 y Fh({)45 b Fo(sparse)30 b(using)g(sparse)g(columns)330 │ │ │ │ │ 5407 y Fh({)45 b Fo(sparse)30 b(using)g(\()p Fm(i;)15 │ │ │ │ │ b(j;)g(a)1170 5421 y Fl(i;j)1252 5407 y Fo(\))31 b(triples)1927 │ │ │ │ │ 5656 y(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fo(2)p 136 100 1178 4 v │ │ │ │ │ -1360 w Fn(SubMtx)28 b Fg(:)41 b Ff(DRAFT)30 b Fg(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2723 100 V 330 399 a Fh({)45 b Fo(a)31 b(diagonal)h(matrix)330 │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fo(2)p 136 100 1171 4 v │ │ │ │ │ +1353 w Fn(SubMtx)28 b Fg(:)41 b Ff(DRAFT)30 b Fg(June)g(3,)h(2025)p │ │ │ │ │ +2729 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 │ │ │ │ │ @@ -5434,61 +5437,61 @@ │ │ │ │ │ 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 1178 4 v 1359 100 a Fn(SubMtx)29 │ │ │ │ │ -b Fg(:)41 b Ff(DRAFT)121 b Fg(Ma)m(y)31 b(1,)g(2024)p │ │ │ │ │ -2675 100 V 1178 w Fo(3)330 399 y Fh({)45 b Fn(SPOOLES)p │ │ │ │ │ -769 399 29 4 v 33 w(COMPLEX)28 b Fo(:)j(double)f(precision)g(complex)h │ │ │ │ │ -(en)m(tries.)137 590 y Fi(\210)45 b Fn(int)i(mode)29 │ │ │ │ │ -b Fo(:)41 b(storage)32 b(mo)s(de.)330 781 y Fh({)45 b │ │ │ │ │ -Fn(SUBMTX)p 721 781 V 33 w(DENSE)p 994 781 V 33 w(ROWS)29 │ │ │ │ │ -b Fo(:)i(dense,)f(storage)i(b)m(y)e(ro)m(ws.)330 929 │ │ │ │ │ -y Fh({)45 b Fn(SUBMTX)p 721 929 V 33 w(DENSE)p 994 929 │ │ │ │ │ -V 33 w(COLUMNS)28 b Fo(:)j(dense,)f(storage)i(b)m(y)e(columns.)330 │ │ │ │ │ -1077 y Fh({)45 b Fn(SUBMTX)p 721 1077 V 33 w(SPARSE)p │ │ │ │ │ -1042 1077 V 33 w(ROWS)29 b Fo(:)h(sparse,)h(storage)h(b)m(y)e(ro)m(ws.) │ │ │ │ │ -330 1225 y Fh({)45 b Fn(SUBMTX)p 721 1225 V 33 w(SPARSE)p │ │ │ │ │ -1042 1225 V 33 w(COLUMNS)28 b Fo(:)j(sparse,)f(storage)i(b)m(y)e │ │ │ │ │ -(columns.)330 1373 y Fh({)45 b Fn(SUBMTX)p 721 1373 V │ │ │ │ │ -33 w(SPARSE)p 1042 1373 V 33 w(TRIPLES)28 b Fo(:)j(sparse,)f(storage)i │ │ │ │ │ -(b)m(y)e(\()p Fm(i;)15 b(j;)g(a)2459 1387 y Fl(i;j)2541 │ │ │ │ │ -1373 y Fo(\))31 b(triples.)330 1521 y Fh({)45 b Fn(SUBMTX)p │ │ │ │ │ -721 1521 V 33 w(DENSE)p 994 1521 V 33 w(SUBROWS)28 b │ │ │ │ │ -Fo(:)j(sparse,)f(storage)i(b)m(y)e(dense)g(subro)m(ws.)330 │ │ │ │ │ -1669 y Fh({)45 b Fn(SUBMTX)p 721 1669 V 33 w(DENSE)p │ │ │ │ │ -994 1669 V 33 w(SUBCOLUMNS)28 b Fo(:)i(sparse,)g(storage)i(b)m(y)f │ │ │ │ │ -(dense)e(sub)s(columns.)330 1817 y Fh({)45 b Fn(SUBMTX)p │ │ │ │ │ -721 1817 V 33 w(DIAGONAL)28 b Fo(:)j(a)f(diagonal)i(matrix.)330 │ │ │ │ │ -1965 y Fh({)45 b Fn(SUBMTX)p 721 1965 V 33 w(BLOCK)p │ │ │ │ │ -994 1965 V 33 w(DIAGONAL)p 1411 1965 V 32 w(SYM)30 b │ │ │ │ │ -Fo(:)g(a)h(symmetric)f(blo)s(c)m(k)h(diagonal)g(matrix)g(with)f(1)20 │ │ │ │ │ -b Fj(\002)g Fo(1)31 b(and)e(2)21 b Fj(\002)f Fo(2)427 │ │ │ │ │ -2078 y(blo)s(c)m(ks.)330 2226 y Fh({)45 b Fn(SUBMTX)p │ │ │ │ │ -721 2226 V 33 w(BLOCK)p 994 2226 V 33 w(DIAGONAL)p 1411 │ │ │ │ │ -2226 V 32 w(HERM)28 b Fo(:)i(a)f(hermitian)g(blo)s(c)m(k)h(diagonal)g │ │ │ │ │ -(matrix)g(with)f(1)18 b Fj(\002)g Fo(1)29 b(and)g(2)18 │ │ │ │ │ -b Fj(\002)g Fo(2)427 2339 y(blo)s(c)m(ks.)137 2531 y │ │ │ │ │ -Fi(\210)45 b Fn(int)i(rowid)29 b Fo(:)41 b(ob)5 b(ject's)31 │ │ │ │ │ -b(ro)m(w)g(id,)f(default)h(v)-5 b(alue)30 b(is)h Fn(-1)p │ │ │ │ │ -Fo(.)137 2722 y Fi(\210)45 b Fn(int)i(colid)29 b Fo(:)41 │ │ │ │ │ -b(ob)5 b(ject's)31 b(column)f(id,)h(default)f(v)-5 b(alue)31 │ │ │ │ │ -b(is)f Fn(-1)p Fo(.)137 2913 y Fi(\210)45 b Fn(int)i(nrow)29 │ │ │ │ │ -b Fo(:)41 b(n)m(um)m(b)s(er)29 b(of)i(ro)m(ws)137 3105 │ │ │ │ │ -y Fi(\210)45 b Fn(int)i(ncol)29 b Fo(:)41 b(n)m(um)m(b)s(er)29 │ │ │ │ │ -b(of)i(columns)137 3296 y Fi(\210)45 b Fn(int)i(nent)29 │ │ │ │ │ -b Fo(:)41 b(n)m(um)m(b)s(er)29 b(of)i(stored)f(matrix)h(en)m(tries.)137 │ │ │ │ │ -3487 y Fi(\210)45 b Fn(DV)i(wrkDV)29 b Fo(:)i(ob)5 b(ject)31 │ │ │ │ │ -b(that)g(manages)g(the)g(o)m(wned)f(w)m(orking)h(storage.)137 │ │ │ │ │ -3679 y Fi(\210)45 b Fn(SubMtx)h(*next)29 b Fo(:)41 b(link)30 │ │ │ │ │ -b(to)h(a)g(next)g(ob)5 b(ject)31 b(in)f(a)h(singly)f(link)m(ed)h(list.) │ │ │ │ │ -141 3895 y(One)f(can)h(query)f(the)g(t)m(yp)s(e)h(of)f(the)h(ob)5 │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1171 4 v 1352 100 a Fn(SubMtx)29 │ │ │ │ │ +b Fg(:)41 b Ff(DRAFT)121 b Fg(June)29 b(3,)i(2025)p 2682 │ │ │ │ │ +100 V 1171 w Fo(3)330 399 y Fh({)45 b Fn(SPOOLES)p 769 │ │ │ │ │ +399 29 4 v 33 w(COMPLEX)28 b Fo(:)j(double)f(precision)g(complex)h(en)m │ │ │ │ │ +(tries.)137 590 y Fi(\210)45 b Fn(int)i(mode)29 b Fo(:)41 │ │ │ │ │ +b(storage)32 b(mo)s(de.)330 781 y Fh({)45 b Fn(SUBMTX)p │ │ │ │ │ +721 781 V 33 w(DENSE)p 994 781 V 33 w(ROWS)29 b Fo(:)i(dense,)f │ │ │ │ │ +(storage)i(b)m(y)e(ro)m(ws.)330 929 y Fh({)45 b Fn(SUBMTX)p │ │ │ │ │ +721 929 V 33 w(DENSE)p 994 929 V 33 w(COLUMNS)28 b Fo(:)j(dense,)f │ │ │ │ │ +(storage)i(b)m(y)e(columns.)330 1077 y Fh({)45 b Fn(SUBMTX)p │ │ │ │ │ +721 1077 V 33 w(SPARSE)p 1042 1077 V 33 w(ROWS)29 b Fo(:)h(sparse,)h │ │ │ │ │ +(storage)h(b)m(y)e(ro)m(ws.)330 1225 y Fh({)45 b Fn(SUBMTX)p │ │ │ │ │ +721 1225 V 33 w(SPARSE)p 1042 1225 V 33 w(COLUMNS)28 │ │ │ │ │ +b Fo(:)j(sparse,)f(storage)i(b)m(y)e(columns.)330 1373 │ │ │ │ │ +y Fh({)45 b Fn(SUBMTX)p 721 1373 V 33 w(SPARSE)p 1042 │ │ │ │ │ +1373 V 33 w(TRIPLES)28 b Fo(:)j(sparse,)f(storage)i(b)m(y)e(\()p │ │ │ │ │ +Fm(i;)15 b(j;)g(a)2459 1387 y Fl(i;j)2541 1373 y Fo(\))31 │ │ │ │ │ +b(triples.)330 1521 y Fh({)45 b Fn(SUBMTX)p 721 1521 │ │ │ │ │ +V 33 w(DENSE)p 994 1521 V 33 w(SUBROWS)28 b Fo(:)j(sparse,)f(storage)i │ │ │ │ │ +(b)m(y)e(dense)g(subro)m(ws.)330 1669 y Fh({)45 b Fn(SUBMTX)p │ │ │ │ │ +721 1669 V 33 w(DENSE)p 994 1669 V 33 w(SUBCOLUMNS)28 │ │ │ │ │ +b Fo(:)i(sparse,)g(storage)i(b)m(y)f(dense)e(sub)s(columns.)330 │ │ │ │ │ +1817 y Fh({)45 b Fn(SUBMTX)p 721 1817 V 33 w(DIAGONAL)28 │ │ │ │ │ +b Fo(:)j(a)f(diagonal)i(matrix.)330 1965 y Fh({)45 b │ │ │ │ │ +Fn(SUBMTX)p 721 1965 V 33 w(BLOCK)p 994 1965 V 33 w(DIAGONAL)p │ │ │ │ │ +1411 1965 V 32 w(SYM)30 b Fo(:)g(a)h(symmetric)f(blo)s(c)m(k)h │ │ │ │ │ +(diagonal)g(matrix)g(with)f(1)20 b Fj(\002)g Fo(1)31 │ │ │ │ │ +b(and)e(2)21 b Fj(\002)f Fo(2)427 2078 y(blo)s(c)m(ks.)330 │ │ │ │ │ +2226 y Fh({)45 b Fn(SUBMTX)p 721 2226 V 33 w(BLOCK)p │ │ │ │ │ +994 2226 V 33 w(DIAGONAL)p 1411 2226 V 32 w(HERM)28 b │ │ │ │ │ +Fo(:)i(a)f(hermitian)g(blo)s(c)m(k)h(diagonal)g(matrix)g(with)f(1)18 │ │ │ │ │ +b Fj(\002)g Fo(1)29 b(and)g(2)18 b Fj(\002)g Fo(2)427 │ │ │ │ │ +2339 y(blo)s(c)m(ks.)137 2531 y Fi(\210)45 b Fn(int)i(rowid)29 │ │ │ │ │ +b Fo(:)41 b(ob)5 b(ject's)31 b(ro)m(w)g(id,)f(default)h(v)-5 │ │ │ │ │ +b(alue)30 b(is)h Fn(-1)p Fo(.)137 2722 y Fi(\210)45 b │ │ │ │ │ +Fn(int)i(colid)29 b Fo(:)41 b(ob)5 b(ject's)31 b(column)f(id,)h │ │ │ │ │ +(default)f(v)-5 b(alue)31 b(is)f Fn(-1)p Fo(.)137 2913 │ │ │ │ │ +y Fi(\210)45 b Fn(int)i(nrow)29 b Fo(:)41 b(n)m(um)m(b)s(er)29 │ │ │ │ │ +b(of)i(ro)m(ws)137 3105 y Fi(\210)45 b Fn(int)i(ncol)29 │ │ │ │ │ +b Fo(:)41 b(n)m(um)m(b)s(er)29 b(of)i(columns)137 3296 │ │ │ │ │ +y Fi(\210)45 b Fn(int)i(nent)29 b Fo(:)41 b(n)m(um)m(b)s(er)29 │ │ │ │ │ +b(of)i(stored)f(matrix)h(en)m(tries.)137 3487 y Fi(\210)45 │ │ │ │ │ +b Fn(DV)i(wrkDV)29 b Fo(:)i(ob)5 b(ject)31 b(that)g(manages)g(the)g(o)m │ │ │ │ │ +(wned)f(w)m(orking)h(storage.)137 3679 y Fi(\210)45 b │ │ │ │ │ +Fn(SubMtx)h(*next)29 b Fo(:)41 b(link)30 b(to)h(a)g(next)g(ob)5 │ │ │ │ │ +b(ject)31 b(in)f(a)h(singly)f(link)m(ed)h(list.)141 3895 │ │ │ │ │ +y(One)f(can)h(query)f(the)g(t)m(yp)s(e)h(of)f(the)h(ob)5 │ │ │ │ │ b(ject)31 b(using)f(these)h(simple)f(macros.)137 4111 │ │ │ │ │ y Fi(\210)45 b Fn(SUBMTX)p 521 4111 V 33 w(IS)p 650 4111 │ │ │ │ │ V 34 w(REAL\(mtx\))28 b Fo(is)i Fn(1)g Fo(if)g Fn(mtx)g │ │ │ │ │ Fo(has)g(real)h(en)m(tries)g(and)f Fn(0)g Fo(otherwise.)137 │ │ │ │ │ 4303 y Fi(\210)45 b Fn(SUBMTX)p 521 4303 V 33 w(IS)p │ │ │ │ │ 650 4303 V 34 w(COMPLEX\(mtx\))27 b Fo(is)j Fn(1)g Fo(if)h │ │ │ │ │ Fn(mtx)e Fo(has)h(complex)h(en)m(tries)g(and)f Fn(0)g │ │ │ │ │ @@ -5506,17 +5509,17 @@ │ │ │ │ │ g(storage)h(format,)f(and)f Fn(0)g Fo(other-)227 5103 │ │ │ │ │ y(wise.)137 5294 y Fi(\210)45 b Fn(SUBMTX)p 521 5294 │ │ │ │ │ V 33 w(IS)p 650 5294 V 34 w(SPARSE)p 972 5294 V 33 w(COLUMNS\(mtx\))25 │ │ │ │ │ b Fo(is)30 b Fn(1)e Fo(if)h Fn(mtx)g Fo(has)g(sparse)f(columns)h(as)h │ │ │ │ │ (its)f(storage)i(format,)f(and)e Fn(0)227 5407 y Fo(otherwise.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fo(4)p 136 100 1178 4 v │ │ │ │ │ -1360 w Fn(SubMtx)28 b Fg(:)41 b Ff(DRAFT)30 b Fg(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2723 100 V 137 399 a Fi(\210)45 b Fn(SUBMTX)p 521 399 │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fo(4)p 136 100 1171 4 v │ │ │ │ │ +1353 w Fn(SubMtx)28 b Fg(:)41 b Ff(DRAFT)30 b Fg(June)g(3,)h(2025)p │ │ │ │ │ +2729 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 │ │ │ │ │ @@ -5580,17 +5583,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 1178 4 v 1359 100 a Fn(SubMtx)29 │ │ │ │ │ -b Fg(:)41 b Ff(DRAFT)121 b Fg(Ma)m(y)31 b(1,)g(2024)p │ │ │ │ │ -2675 100 V 1178 w Fo(5)0 399 y Fc(1.2.2)112 b(Instance)38 │ │ │ │ │ +TeXDict begin 5 4 bop 91 100 1171 4 v 1352 100 a Fn(SubMtx)29 │ │ │ │ │ +b Fg(:)41 b Ff(DRAFT)121 b Fg(June)29 b(3,)i(2025)p 2682 │ │ │ │ │ +100 V 1171 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 │ │ │ │ │ @@ -5658,17 +5661,17 @@ │ │ │ │ │ (address)f(of)i(the)227 5294 y Fn(sizes[nrow])24 b Fo(v)m(ector)k(that) │ │ │ │ │ g(con)m(tains)g(the)f(n)m(um)m(b)s(er)e(of)i(en)m(tries)h(in)e(eac)m(h) │ │ │ │ │ i(ro)m(w,)g Fn(*indices)c Fo(with)j(the)g(base)227 5407 │ │ │ │ │ y(address)41 b(of)g(the)h Fn(indices[nent])c Fo(v)m(ector)43 │ │ │ │ │ b(that)f(con)m(tains)g(the)g(column)f(index)g(for)g(eac)m(h)h(en)m(try) │ │ │ │ │ -8 b(,)46 b(and)p eop end │ │ │ │ │ %%Page: 6 6 │ │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fo(6)p 136 100 1178 4 v │ │ │ │ │ -1360 w Fn(SubMtx)28 b Fg(:)41 b Ff(DRAFT)30 b Fg(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2723 100 V 227 399 a Fn(*pentries)g Fo(with)i(the)g(base)g(address)f │ │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fo(6)p 136 100 1171 4 v │ │ │ │ │ +1353 w Fn(SubMtx)28 b Fg(:)41 b Ff(DRAFT)30 b Fg(June)g(3,)h(2025)p │ │ │ │ │ +2729 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 │ │ │ │ │ @@ -5754,45 +5757,45 @@ │ │ │ │ │ 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 1178 4 v 1359 100 a Fn(SubMtx)29 │ │ │ │ │ -b Fg(:)41 b Ff(DRAFT)121 b Fg(Ma)m(y)31 b(1,)g(2024)p │ │ │ │ │ -2675 100 V 1178 w Fo(7)227 399 y(column)38 b Fn(jcol)p │ │ │ │ │ -Fo(,)h(the)g(nonzero)f(en)m(tries)h(are)f(found)f(in)h(ro)m(ws)g │ │ │ │ │ -Fn([firstlocs[jcol],lastlo)o(cs[j)o(col])o(])227 511 │ │ │ │ │ -y Fo(when)32 b Fn(firstlocs[jcol])24 b Fj(\025)k Fo(0)33 │ │ │ │ │ -b(and)f Fn(firstlocs[jcol])24 b Fj(\024)29 b Fn(lastlocs[jcol])l │ │ │ │ │ -Fo(.)47 b(The)31 b(en)m(tries)j(for)e(the)227 624 y(columns)e(are)h │ │ │ │ │ -(stored)g(con)m(tiguously)-8 b(.)227 787 y Ff(Err)j(or)32 │ │ │ │ │ -b(che)-5 b(cking:)39 b Fo(If)28 b Fn(mtx)p Fo(,)g Fn(pnrow)p │ │ │ │ │ -Fo(,)f Fn(pnent)p Fo(,)g Fn(pfirstlocs)p Fo(,)f Fn(plastlocs)g │ │ │ │ │ -Fo(or)i Fn(pentries)e Fo(is)i Fn(NULL)p Fo(,)f(or)h(if)g(the)227 │ │ │ │ │ -900 y(matrix)33 b(t)m(yp)s(e)f(is)g(not)g Fn(SUBMTX)p │ │ │ │ │ -1281 900 29 4 v 33 w(DENSE)p 1554 900 V 33 w(SUBCOLUMNS)p │ │ │ │ │ -Fo(,)d(an)j(error)g(message)h(is)f(prin)m(ted)g(and)f(the)h(program)227 │ │ │ │ │ -1013 y(exits.)66 1225 y(12.)46 b Fn(void)h(SubMtx_diagonalInfo)42 │ │ │ │ │ -b(\()48 b(SubMtx)e(*mtx,)g(int)h(*pncol,)f(double)g(**pentries)f(\))j │ │ │ │ │ -(;)227 1388 y Fo(This)32 b(metho)s(d)g(is)h(used)f(when)g(the)h │ │ │ │ │ -(storage)h(mo)s(de)e(is)h(diagonal.)49 b(It)33 b(\014lls)f │ │ │ │ │ -Fn(*pncol)f Fo(with)h(the)h(n)m(um)m(b)s(er)f(of)227 │ │ │ │ │ -1501 y(columns)e(and)g Fn(*pentries)e Fo(with)i(the)h(base)f(address)g │ │ │ │ │ -(of)g Fn(entries[])e Fo(v)m(ector.)227 1663 y Ff(Err)-5 │ │ │ │ │ -b(or)25 b(che)-5 b(cking:)35 b Fo(If)20 b Fn(mtx)p Fo(,)i │ │ │ │ │ -Fn(pncol)c Fo(or)j Fn(pentries)d Fo(is)i Fn(NULL)p Fo(,)f(or)i(if)f │ │ │ │ │ -(the)g(matrix)h(t)m(yp)s(e)f(is)h(not)f Fn(SUBMTX)p 3541 │ │ │ │ │ -1663 V 33 w(DIAGONAL)p Fo(,)227 1776 y(an)31 b(error)f(message)h(is)f │ │ │ │ │ -(prin)m(ted)g(and)g(the)h(program)f(exits.)66 1988 y(13.)46 │ │ │ │ │ -b Fn(void)h(SubMtx_blockDiagonalInfo)41 b(\()48 b(SubMtx)e(*mtx,)g(int) │ │ │ │ │ -h(*pncol,)f(int)h(*pnent,)1755 2101 y(int)f(**ppivotsizes,)e(double)i │ │ │ │ │ -(**pentries)f(\))j(;)227 2264 y Fo(This)24 b(metho)s(d)f(is)i(used)e │ │ │ │ │ -(when)g(the)i(storage)g(mo)s(de)f(is)g(blo)s(c)m(k)h(diagonal.)40 │ │ │ │ │ +TeXDict begin 7 6 bop 91 100 1171 4 v 1352 100 a Fn(SubMtx)29 │ │ │ │ │ +b Fg(:)41 b Ff(DRAFT)121 b Fg(June)29 b(3,)i(2025)p 2682 │ │ │ │ │ +100 V 1171 w Fo(7)227 399 y(column)38 b Fn(jcol)p Fo(,)h(the)g(nonzero) │ │ │ │ │ +f(en)m(tries)h(are)f(found)f(in)h(ro)m(ws)g Fn([firstlocs[jcol],lastlo) │ │ │ │ │ +o(cs[j)o(col])o(])227 511 y Fo(when)32 b Fn(firstlocs[jcol])24 │ │ │ │ │ +b Fj(\025)k Fo(0)33 b(and)f Fn(firstlocs[jcol])24 b Fj(\024)29 │ │ │ │ │ +b Fn(lastlocs[jcol])l Fo(.)47 b(The)31 b(en)m(tries)j(for)e(the)227 │ │ │ │ │ +624 y(columns)e(are)h(stored)g(con)m(tiguously)-8 b(.)227 │ │ │ │ │ +787 y Ff(Err)j(or)32 b(che)-5 b(cking:)39 b Fo(If)28 │ │ │ │ │ +b Fn(mtx)p Fo(,)g Fn(pnrow)p Fo(,)f Fn(pnent)p Fo(,)g │ │ │ │ │ +Fn(pfirstlocs)p Fo(,)f Fn(plastlocs)g Fo(or)i Fn(pentries)e │ │ │ │ │ +Fo(is)i Fn(NULL)p Fo(,)f(or)h(if)g(the)227 900 y(matrix)33 │ │ │ │ │ +b(t)m(yp)s(e)f(is)g(not)g Fn(SUBMTX)p 1281 900 29 4 v │ │ │ │ │ +33 w(DENSE)p 1554 900 V 33 w(SUBCOLUMNS)p Fo(,)d(an)j(error)g(message)h │ │ │ │ │ +(is)f(prin)m(ted)g(and)f(the)h(program)227 1013 y(exits.)66 │ │ │ │ │ +1225 y(12.)46 b Fn(void)h(SubMtx_diagonalInfo)42 b(\()48 │ │ │ │ │ +b(SubMtx)e(*mtx,)g(int)h(*pncol,)f(double)g(**pentries)f(\))j(;)227 │ │ │ │ │ +1388 y Fo(This)32 b(metho)s(d)g(is)h(used)f(when)g(the)h(storage)h(mo)s │ │ │ │ │ +(de)e(is)h(diagonal.)49 b(It)33 b(\014lls)f Fn(*pncol)f │ │ │ │ │ +Fo(with)h(the)h(n)m(um)m(b)s(er)f(of)227 1501 y(columns)e(and)g │ │ │ │ │ +Fn(*pentries)e Fo(with)i(the)h(base)f(address)g(of)g │ │ │ │ │ +Fn(entries[])e Fo(v)m(ector.)227 1663 y Ff(Err)-5 b(or)25 │ │ │ │ │ +b(che)-5 b(cking:)35 b Fo(If)20 b Fn(mtx)p Fo(,)i Fn(pncol)c │ │ │ │ │ +Fo(or)j Fn(pentries)d Fo(is)i Fn(NULL)p Fo(,)f(or)i(if)f(the)g(matrix)h │ │ │ │ │ +(t)m(yp)s(e)f(is)h(not)f Fn(SUBMTX)p 3541 1663 V 33 w(DIAGONAL)p │ │ │ │ │ +Fo(,)227 1776 y(an)31 b(error)f(message)h(is)f(prin)m(ted)g(and)g(the)h │ │ │ │ │ +(program)f(exits.)66 1988 y(13.)46 b Fn(void)h │ │ │ │ │ +(SubMtx_blockDiagonalInfo)41 b(\()48 b(SubMtx)e(*mtx,)g(int)h(*pncol,)f │ │ │ │ │ +(int)h(*pnent,)1755 2101 y(int)f(**ppivotsizes,)e(double)i(**pentries)f │ │ │ │ │ +(\))j(;)227 2264 y Fo(This)24 b(metho)s(d)f(is)i(used)e(when)g(the)i │ │ │ │ │ +(storage)g(mo)s(de)f(is)g(blo)s(c)m(k)h(diagonal.)40 │ │ │ │ │ b(It)24 b(\014lls)g Fn(*pncol)f Fo(with)h(the)g(n)m(um)m(b)s(er)227 │ │ │ │ │ 2377 y(of)33 b(columns,)h Fn(*pnent)d Fo(with)h(the)h(n)m(um)m(b)s(er)f │ │ │ │ │ (of)h(en)m(tries,)h Fn(*ppivotsizes)29 b Fo(with)k(the)g(base)g │ │ │ │ │ (address)f(of)h(the)227 2490 y(piv)m(ot)f(sizes)f(v)m(ector,)h(and)e │ │ │ │ │ Fn(*pentries)e Fo(with)i(the)g(base)h(address)e(of)i │ │ │ │ │ Fn(entries[])d Fo(v)m(ector.)227 2652 y Ff(Err)-5 b(or)41 │ │ │ │ │ b(che)-5 b(cking:)54 b Fo(If)37 b Fn(mtx)p Fo(,)i Fn(pncol)p │ │ │ │ │ @@ -5839,17 +5842,17 @@ │ │ │ │ │ Fn(pReal)e Fo(or)i Fn(pImag)e Fo(is)i Fn(NULL)p Fo(,)f(or)h(if)g │ │ │ │ │ Fn(irow)e Fo(or)i Fn(jcol)f Fo(is)h(out)g(of)g(range,)h(an)e(error)227 │ │ │ │ │ 5082 y(message)g(is)e(prin)m(ted)g(and)g(the)g(program)h(exits.)66 │ │ │ │ │ 5294 y(16.)46 b Fn(void)95 b(SubMtx_locationOfRealEn)o(try)41 │ │ │ │ │ b(\()48 b(SubMtx)e(*mtx,)g(int)h(irow,)f(int)h(jcol,)1898 │ │ │ │ │ 5407 y(double)f(**ppValue)f(\))j(;)p eop end │ │ │ │ │ %%Page: 8 8 │ │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fo(8)p 136 100 1178 4 v │ │ │ │ │ -1360 w Fn(SubMtx)28 b Fg(:)41 b Ff(DRAFT)30 b Fg(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2723 100 V 227 399 a Fo(If)i(the)g Fn(\(irow,jcol\))d │ │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fo(8)p 136 100 1171 4 v │ │ │ │ │ +1353 w Fn(SubMtx)28 b Fg(:)41 b Ff(DRAFT)30 b Fg(June)g(3,)h(2025)p │ │ │ │ │ +2729 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 │ │ │ │ │ @@ -5922,23 +5925,23 @@ │ │ │ │ │ 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 1178 4 v 1359 100 a Fn(SubMtx)29 │ │ │ │ │ -b Fg(:)41 b Ff(DRAFT)121 b Fg(Ma)m(y)31 b(1,)g(2024)p │ │ │ │ │ -2675 100 V 1178 w Fo(9)111 399 y(4.)46 b Fn(void)h │ │ │ │ │ -(SubMtx_initRandomLowerTr)o(iang)o(le)41 b(\()48 b(SubMtx)e(*mtx,)g │ │ │ │ │ -(int)h(type,)g(int)g(mode,)370 511 y(int)g(rowid,)f(int)h(colid,)f(int) │ │ │ │ │ -h(nrow,)g(int)g(ncol,)f(int)h(nent,)f(int)h(seed,)g(int)f(strict)h(\))g │ │ │ │ │ -(;)227 624 y(void)g(SubMtx_initRandomUpperTr)o(iang)o(le)41 │ │ │ │ │ -b(\()48 b(SubMtx)e(*mtx,)g(int)h(type,)g(int)g(mode,)370 │ │ │ │ │ -737 y(int)g(rowid,)f(int)h(colid,)f(int)h(nrow,)g(int)g(ncol,)f(int)h │ │ │ │ │ +TeXDict begin 9 8 bop 91 100 1171 4 v 1352 100 a Fn(SubMtx)29 │ │ │ │ │ +b Fg(:)41 b Ff(DRAFT)121 b Fg(June)29 b(3,)i(2025)p 2682 │ │ │ │ │ +100 V 1171 w Fo(9)111 399 y(4.)46 b Fn(void)h(SubMtx_initRandomLowerTr) │ │ │ │ │ +o(iang)o(le)41 b(\()48 b(SubMtx)e(*mtx,)g(int)h(type,)g(int)g(mode,)370 │ │ │ │ │ +511 y(int)g(rowid,)f(int)h(colid,)f(int)h(nrow,)g(int)g(ncol,)f(int)h │ │ │ │ │ +(nent,)f(int)h(seed,)g(int)f(strict)h(\))g(;)227 624 │ │ │ │ │ +y(void)g(SubMtx_initRandomUpperTr)o(iang)o(le)41 b(\()48 │ │ │ │ │ +b(SubMtx)e(*mtx,)g(int)h(type,)g(int)g(mode,)370 737 │ │ │ │ │ +y(int)g(rowid,)f(int)h(colid,)f(int)h(nrow,)g(int)g(ncol,)f(int)h │ │ │ │ │ (nent,)f(int)h(seed,)g(int)f(strict)h(\))g(;)227 885 │ │ │ │ │ y Fo(This)c(is)g(used)g(to)h(initialize)h(an)e(ob)5 b(ject)45 │ │ │ │ │ b(to)f(ha)m(v)m(e)g(random)f(en)m(tries)h(and)e(\(p)s(ossibly\))h │ │ │ │ │ (random)g(struc-)227 998 y(ture.)54 b(The)34 b(matrix)h(t)m(yp)s(e)g │ │ │ │ │ (ma)m(y)h(not)f(b)s(e)f(diagonal,)j(blo)s(c)m(k)f(diagonal,)h(or)e │ │ │ │ │ (triples.)54 b(If)34 b Fn(strict)46 b(=)i(1)p Fo(,)36 │ │ │ │ │ b(the)227 1111 y(matrix)j(will)f(b)s(e)g(strict)h(lo)m(w)m(er)g(or)g │ │ │ │ │ @@ -6014,17 +6017,17 @@ │ │ │ │ │ (er)e(triangular,)j(then)f Fn(mtxA)e Fo(m)m(ust)i(ha)m(v)m(e)h(dense)f │ │ │ │ │ (sub)s(columns)d(or)j(sparse)227 5260 y(columns.)227 │ │ │ │ │ 5407 y Ff(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fo(If)30 │ │ │ │ │ b Fn(mtxA)g Fo(or)g Fn(mtxB)f Fo(is)i Fn(NULL)p Fo(,)e(an)h(error)g │ │ │ │ │ (message)i(is)e(prin)m(ted)g(and)g(the)g(program)h(exits.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 10 10 │ │ │ │ │ -TeXDict begin 10 9 bop 0 100 a Fo(10)p 182 100 1155 4 │ │ │ │ │ -v 1337 w Fn(SubMtx)29 b Fg(:)41 b Ff(DRAFT)30 b Fg(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2745 100 V 111 399 a Fo(2.)46 b Fn(void)h(SubMtx_solveH)d(\()k(SubMtx)e │ │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fo(10)p 182 100 1148 4 │ │ │ │ │ +v 1331 w Fn(SubMtx)28 b Fg(:)41 b Ff(DRAFT)30 b Fg(June)f(3,)i(2025)p │ │ │ │ │ +2752 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 │ │ │ │ │ @@ -6097,17 +6100,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 1155 4 v 1337 100 a Fn(SubMtx)28 │ │ │ │ │ -b Fg(:)41 b Ff(DRAFT)121 b Fg(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2653 100 V 1155 w Fo(11)227 399 y Ff(Err)-5 b(or)34 b(che)-5 │ │ │ │ │ +TeXDict begin 11 10 bop 91 100 1148 4 v 1330 100 a Fn(SubMtx)28 │ │ │ │ │ +b Fg(:)41 b Ff(DRAFT)121 b Fg(June)29 b(3,)i(2025)p 2659 │ │ │ │ │ +100 V 1148 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 │ │ │ │ │ @@ -6165,18 +6168,18 @@ │ │ │ │ │ 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 1155 │ │ │ │ │ -4 v 1337 w Fn(SubMtx)29 b Fg(:)41 b Ff(DRAFT)30 b Fg(Ma)m(y)i(1,)f │ │ │ │ │ -(2024)p 2745 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 │ │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fo(12)p 182 100 1148 │ │ │ │ │ +4 v 1331 w Fn(SubMtx)28 b Fg(:)41 b Ff(DRAFT)30 b Fg(June)f(3,)i(2025)p │ │ │ │ │ +2752 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) │ │ │ │ │ @@ -6239,18 +6242,18 @@ │ │ │ │ │ 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 1155 4 v 1337 100 a Fn(SubMtx)28 │ │ │ │ │ -b Fg(:)41 b Ff(DRAFT)121 b Fg(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2653 100 V 1155 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 │ │ │ │ │ +TeXDict begin 13 12 bop 91 100 1148 4 v 1330 100 a Fn(SubMtx)28 │ │ │ │ │ +b Fg(:)41 b Ff(DRAFT)121 b Fg(June)29 b(3,)i(2025)p 2659 │ │ │ │ │ +100 V 1148 w Fo(13)227 399 y(Note,)40 b(if)c(the)g(m)m(txutation)i(v)m │ │ │ │ │ +(ectors)f(are)g(one-based)f(\(as)h(for)f(F)-8 b(ortran\),)39 │ │ │ │ │ b(they)e(are)f(con)m(v)m(erted)i(to)f(zero-)227 511 y(based)30 │ │ │ │ │ b(v)m(ectors.)227 660 y Ff(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ │ b Fo(If)30 b Fn(mtx)g Fo(or)g Fn(fp)g Fo(are)h Fn(NULL)p │ │ │ │ │ Fo(,)e(an)h(error)g(message)i(is)e(prin)m(ted)g(and)g(zero)h(is)g │ │ │ │ │ (returned.)111 843 y(4.)46 b Fn(int)h(SubMtx_writeToFile)c(\()k(SubMtx) │ │ │ │ │ g(*mtx,)f(char)h(*fn)f(\))i(;)227 991 y Fo(This)32 b(metho)s(d)g │ │ │ │ │ (writes)g(a)h Fn(SubMtx)e Fo(ob)5 b(ject)33 b(to)h(a)e(\014le.)47 │ │ │ │ │ @@ -6318,32 +6321,32 @@ │ │ │ │ │ (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 1155 │ │ │ │ │ -4 v 1337 w Fn(SubMtx)29 b Fg(:)41 b Ff(DRAFT)30 b Fg(Ma)m(y)i(1,)f │ │ │ │ │ -(2024)p 2745 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) │ │ │ │ │ -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 1489 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 │ │ │ │ │ -1602 y(data.)337 1750 y Fi(\210)45 b Fo(The)35 b Fn(inFile)e │ │ │ │ │ +TeXDict begin 14 13 bop 0 100 a Fo(14)p 182 100 1148 │ │ │ │ │ +4 v 1331 w Fn(SubMtx)28 b Fg(:)41 b Ff(DRAFT)30 b Fg(June)f(3,)i(2025)p │ │ │ │ │ +2752 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)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 │ │ │ │ │ +1489 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 1602 │ │ │ │ │ +y(data.)337 1750 y Fi(\210)45 b Fo(The)35 b Fn(inFile)e │ │ │ │ │ Fo(parameter)i(is)g(the)h(input)e(\014le)h(for)f(the)h │ │ │ │ │ Fn(SubMtx)f Fo(ob)5 b(ject.)55 b(It)35 b(m)m(ust)g(b)s(e)f(of)h(the)g │ │ │ │ │ (form)427 1863 y Fn(*.submtxf)18 b Fo(or)i Fn(*.submtxb)p │ │ │ │ │ Fo(.)35 b(The)20 b Fn(SubMtx)e Fo(ob)5 b(ject)22 b(is)e(read)g(from)g │ │ │ │ │ (the)g(\014le)h(via)g(the)f Fn(SubMtx)p 3559 1863 29 │ │ │ │ │ 4 v 33 w(readFromFile\(\))427 1976 y Fo(metho)s(d.)337 │ │ │ │ │ 2125 y Fi(\210)45 b Fo(The)29 b Fn(outFile)e Fo(parameter)i(is)g(the)h │ │ │ │ │ @@ -6395,18 +6398,18 @@ │ │ │ │ │ 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 1155 4 v 1337 100 a Fn(SubMtx)28 │ │ │ │ │ -b Fg(:)41 b Ff(DRAFT)121 b Fg(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2653 100 V 1155 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 │ │ │ │ │ +TeXDict begin 15 14 bop 91 100 1148 4 v 1330 100 a Fn(SubMtx)28 │ │ │ │ │ +b Fg(:)41 b Ff(DRAFT)121 b Fg(June)29 b(3,)i(2025)p 2659 │ │ │ │ │ +100 V 1148 w Fo(15)337 399 y Fi(\210)45 b Fo(The)33 b │ │ │ │ │ +Fn(msgFile)e Fo(parameter)j(determines)f(the)h(message)g(\014le)f(|)h │ │ │ │ │ (if)f Fn(msgFile)e Fo(is)i Fn(stdout)p Fo(,)g(then)g(the)427 │ │ │ │ │ 511 y(message)27 b(\014le)f(is)g Ff(stdout)p Fo(,)i(otherwise)e(a)h │ │ │ │ │ (\014le)f(is)f(op)s(ened)g(with)h Ff(app)-5 b(end)28 │ │ │ │ │ b Fo(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 624 │ │ │ │ │ y(data.)337 772 y Fi(\210)45 b Fo(The)30 b Fn(type)f │ │ │ │ │ Fo(parameter)i(m)m(ust)f(b)s(e)g(one)h(of)f(1)h(\()p │ │ │ │ │ Fn(SPOOLES)p 2342 772 29 4 v 33 w(REAL)p Fo(\))f(or)g(2)h(\()p │ │ │ │ │ @@ -6485,19 +6488,19 @@ │ │ │ │ │ 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 1155 │ │ │ │ │ -4 v 1337 w Fn(SubMtx)29 b Fg(:)41 b Ff(DRAFT)30 b Fg(Ma)m(y)i(1,)f │ │ │ │ │ -(2024)p 2745 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 │ │ │ │ │ +TeXDict begin 16 15 bop 0 100 a Fo(16)p 182 100 1148 │ │ │ │ │ +4 v 1331 w Fn(SubMtx)28 b Fg(:)41 b Ff(DRAFT)30 b Fg(June)f(3,)i(2025)p │ │ │ │ │ +2752 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 │ │ │ │ │ @@ -6577,19 +6580,19 @@ │ │ │ │ │ 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 1155 4 v 1337 100 a Fn(SubMtx)28 │ │ │ │ │ -b Fg(:)41 b Ff(DRAFT)121 b Fg(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2653 100 V 1155 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 │ │ │ │ │ +TeXDict begin 17 16 bop 91 100 1148 4 v 1330 100 a Fn(SubMtx)28 │ │ │ │ │ +b Fg(:)41 b Ff(DRAFT)121 b Fg(June)29 b(3,)i(2025)p 2659 │ │ │ │ │ +100 V 1148 w Fo(17)337 399 y Fi(\210)45 b Fo(The)f Fn(msglvl)e │ │ │ │ │ +Fo(parameter)j(determines)f(the)g(amoun)m(t)h(of)f(output.)82 │ │ │ │ │ +b(Use)44 b Fn(msglvl)i(=)i(1)c Fo(for)g(just)427 511 │ │ │ │ │ y(timing)31 b(output.)337 655 y Fi(\210)45 b Fo(The)33 │ │ │ │ │ b Fn(msgFile)e Fo(parameter)j(determines)f(the)h(message)g(\014le)f(|)h │ │ │ │ │ (if)f Fn(msgFile)e Fo(is)i Fn(stdout)p Fo(,)g(then)g(the)427 │ │ │ │ │ 767 y(message)27 b(\014le)f(is)g Ff(stdout)p Fo(,)i(otherwise)e(a)h │ │ │ │ │ (\014le)f(is)f(op)s(ened)g(with)h Ff(app)-5 b(end)28 │ │ │ │ │ b Fo(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 880 │ │ │ │ │ y(data.)337 1024 y Fi(\210)45 b Fo(The)30 b Fn(type)f │ │ │ │ │ @@ -6666,21 +6669,21 @@ │ │ │ │ │ (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 1155 │ │ │ │ │ -4 v 1337 w Fn(SubMtx)29 b Fg(:)41 b Ff(DRAFT)30 b Fg(Ma)m(y)i(1,)f │ │ │ │ │ -(2024)p 2745 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 │ │ │ │ │ +TeXDict begin 18 17 bop 0 100 a Fo(18)p 182 100 1148 │ │ │ │ │ +4 v 1331 w Fn(SubMtx)28 b Fg(:)41 b Ff(DRAFT)30 b Fg(June)f(3,)i(2025)p │ │ │ │ │ +2752 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 │ │ │ │ │ Fo(for)g(just)427 1100 y(timing)31 b(output.)337 1246 │ │ │ │ │ ├── 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 May 1, 2024 │ │ │ │ │ │ + 2 SubMtx : DRAFT June 3, 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 May 1, 2024 3 │ │ │ │ │ │ + SubMtx : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 4 SubMtx : DRAFT June 3, 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 May 1, 2024 5 │ │ │ │ │ │ + SubMtx : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 6 SubMtx : DRAFT June 3, 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 May 1, 2024 7 │ │ │ │ │ │ + SubMtx : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 8 SubMtx : DRAFT June 3, 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 May 1, 2024 9 │ │ │ │ │ │ + SubMtx : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 10 SubMtx : DRAFT June 3, 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 May 1, 2024 11 │ │ │ │ │ │ + SubMtx : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 12 SubMtx : DRAFT June 3, 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 May 1, 2024 13 │ │ │ │ │ │ + SubMtx : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 14 SubMtx : DRAFT June 3, 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 May 1, 2024 15 │ │ │ │ │ │ + SubMtx : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 16 SubMtx : DRAFT June 3, 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 May 1, 2024 17 │ │ │ │ │ │ + SubMtx : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 18 SubMtx : DRAFT June 3, 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.05.01:0545 │ │ │ │ │ +%DVIPSSource: TeX output 2025.06.03:1221 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -1776,21 +1776,22 @@ │ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ │ /UnderlineThickness 50 def │ │ │ │ │ end readonly def │ │ │ │ │ /Encoding 256 array │ │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ │ dup 44 /comma put │ │ │ │ │ dup 48 /zero put │ │ │ │ │ -dup 49 /one put │ │ │ │ │ dup 50 /two put │ │ │ │ │ -dup 52 /four put │ │ │ │ │ +dup 51 /three put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 77 /M put │ │ │ │ │ -dup 97 /a put │ │ │ │ │ -dup 121 /y put │ │ │ │ │ +dup 74 /J put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ +dup 110 /n put │ │ │ │ │ +dup 117 /u put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ │ @@ -1971,68 +1972,70 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004ACD1870 │ │ │ │ │ -A5EA947858F5795870BFE1343AD803FB854BF8F5A4E794E8EC57BE41DB5B8734 │ │ │ │ │ -13E47950F29A81EA0C81EA798863883D7F41F78325CA190CBBFFE822AE494550 │ │ │ │ │ -4BE83703071FC9512D128927AF3F63CEF8F86ABE1E15D7B4DDD39576E7DFF45E │ │ │ │ │ -3CB4115AAB1830DE8647B915DB4BEBEB5235C281E098B899BAB951D8D5798F01 │ │ │ │ │ -7F7C47336D31438E5126738AFEAB29E9A7CBE06DE4DD604477B542D2620DFD58 │ │ │ │ │ -28FE34238572F23C5A8EB7ACEE1E154DA13FC1A5AA67A3BA8C5CDFB2B80312C9 │ │ │ │ │ -BC9FAE56D08DDFA9498E6EF0D0F6BD18B3923E0B670B0740528BC843610736CB │ │ │ │ │ -80228C105C2F72C3C22D610C3D8C268DEEA2AEEE3221E198E79FE2966487360C │ │ │ │ │ -84AE08AC326F48B21447652121B1EB68AF857B8628F27BB4ED00F273E0DD044A │ │ │ │ │ -7D11A5BFAAC0A82328444CC9DD90167681B07D55CE28655F40C21250A226DEAB │ │ │ │ │ -2D46FFB680CB9242BE192AC0E55A44D45709FA6DE638C130D92C4E9B07BC3D61 │ │ │ │ │ -25CC2F0A7ED4F3574242FFE4461272EB1401266EEF551E0E2B0EF51FA8F250EC │ │ │ │ │ -FD9AFB6F5A0CC442B566BC24400133E3E9B9A9FC801CEF284FD2B3ECA43421FA │ │ │ │ │ -51E5D1EFE7BEAA96658362C438A0A5A6DCBC664A85EF88037B42355195B9D19C │ │ │ │ │ -7961D5F63B123451B298CD52C144FCD4F3641A823FBA14605E2DFD845E89102C │ │ │ │ │ -4E345CFD80E3EE6F097095A84C941FFC91B234F3615E4EE4C5D564284656E364 │ │ │ │ │ -AB9C4D1DE05F8FD065CA6064893F0CF3A3A501D59EF6568D05D818A010D06518 │ │ │ │ │ -E2C20418ADD1E652867F265084A27A5FE0C32213C59FFC3A84EDC89382521E5B │ │ │ │ │ -8AF66D76601F83C5C33CC9CF968C77B66F1FA074AC3DAD8E453C9264D03969EF │ │ │ │ │ -9E387BB3BEAA4BF0A9D88BA2CE6094E8996A3752A657E322A57AF006444BF516 │ │ │ │ │ -501C43CAA1BA7F16A3B6E4D3EBDECCCC19564DF18FB68194C132238A5441A21A │ │ │ │ │ -F52285CA1CA94A4BEC61EB509FA35EA5E393D662D938F4291F37EB7C2D5815BE │ │ │ │ │ -446813E1CFD06FFFFF2C4355C9DAFA48E765F4CC5DE4B9E37CFFB75E7A0B6F4B │ │ │ │ │ -4E412496F9C27DF4BDD90A869F0EBD81A57AE0B84051450A5A3E06CB9930DB2C │ │ │ │ │ -7C2DDB774BE870AEFCC9F4F067BE243FF3FD4B5C71B96C607DC4975973AF2650 │ │ │ │ │ -E7DF2BE3523A370EEDD07B5456B96E372ED10510CE677C044E609F21E93652FD │ │ │ │ │ -33CE612F587530D12214A3719CDB170C315B5D8763D5D4C67B5CAE90309E77AC │ │ │ │ │ -B45EB356C13A7BDE0D7320A9849CA357E30D7CF1085FFD70071932C3180AFC28 │ │ │ │ │ -B093016BA3F49A3878C34BB4A8727A441EB6CFC1A73F2313A7BF8D32EDF27E62 │ │ │ │ │ -EBEBC058FBA80B136FD2DE05C673B66482224ECEC63EDFB519AC13B5CC6624A6 │ │ │ │ │ -B3FD79037DA3851E93A386115852DBA88B176F21EDDB5386DC7C993C4210B28F │ │ │ │ │ -438131A586E34A09724E7CE60139F8247BFF14D2674805B3BD454C134728A43E │ │ │ │ │ -139E0AF71A7AC5CE42041EC83FD454B00AD29959FCF007789FFAF2D3492DCA4B │ │ │ │ │ -566EAFE97591ABC51CD0CD9BCD64E285FB823E41AA817E96B2B224005DAA4E15 │ │ │ │ │ -2141DB436B9D3FBA4EE4C876FD19A2E5133106FE2B9F704CB9614FCDC91B7950 │ │ │ │ │ -57053F45A5ED993B48189AAFAD5289F97AE2B0AEB5606579F6BD75F743EDB5B6 │ │ │ │ │ -5AA8F8A64CE507A47325081B3A013DB1BD596CDD3A83D2F29B070D6F9C57496E │ │ │ │ │ -14DF3F0F731C3BB00F2CE3D4BBACF1320322195D1DEA7A545BB4725BD1C6EC3D │ │ │ │ │ -63250C72B897741F8599D9D9BD2FB50EC80EFF2ECD6CE6603E95AABB45462ACF │ │ │ │ │ -12B005EE5979B6B05BCE9B97061686102349142A3CCC26D57F2A3283DD8B6E2A │ │ │ │ │ -98885E48C0D4A1A5C9612EDCB3B3D265E9B8CCCCA5D99F07F96C15B27D6A161F │ │ │ │ │ -936599E503C2859927201CACC31581AB7AB84F9EC9FFADC239F01DCC55940AB7 │ │ │ │ │ -FA884AA1EB6494C8E53DAD66E75A317428ACF9D943A74683BF547958F67D9E36 │ │ │ │ │ -F985EED50DEBCF255756A821927CB73848DCF167E96E975E959DE27FE7BA4FBA │ │ │ │ │ -D0EFC003F019D87572D6F9C73FC5B880C3EEDB7EF98E5EC3D25D6FE0015A6590 │ │ │ │ │ -E3C6EE632D7F6558B914609A8829CD1DEAB83A3F1207D5C3AAC9EAEA9DE1B4F8 │ │ │ │ │ -2375C5D4F630BCE13475F941ED2324D2CD4DCF2285298EAA4FFF89433D853860 │ │ │ │ │ -A974A9FC0808580FBDE7D02EDBB3D8C65BD3109AE8B359E96BFB7E21C696F440 │ │ │ │ │ -312B0CCAD810BF070DF8FC281E8198EB20A7FF9C9BCD291D74BC75EE46799485 │ │ │ │ │ -1AB2AE36B7E525034D146A856AF3BD9057A0033C08B606B89DD130548950C93D │ │ │ │ │ -94A8C92C47A34A791B1C108D2F36E899B79358B8081CCFC3D1A2F0521E4E2AE4 │ │ │ │ │ -7F500D6F2A53E5393E44201287225912590ABC738E8726622B67C3425639CCFB │ │ │ │ │ -F450B78A4918 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004B9BA1CC │ │ │ │ │ +580D3C6BDA4DC1B80B4365F1C80512453FC5316EC2D928FB731C3D6403E3C18B │ │ │ │ │ +E8424D644DF5E9A2134229C5C91CA68DB8E85BA2BB40F538F585DA6FA4037718 │ │ │ │ │ +B8053EBBA1E765346BCD5BDAA6C38115D31611D8A87A2238C145F2DA2F92E4DF │ │ │ │ │ +3987BD9C4D2A3D460E8941A68B125BCD9EE4F9FD262C4C8A71F47A2C81975635 │ │ │ │ │ +F1B981C274C53FA2ACCDE4C9D0A7C62D6C1EFF91CFC6712CA6A9F333C9564FCB │ │ │ │ │ +2A70F0AD715A79B10A08AB069E2A3C93BC0AED19D0CA10134B8DDDE8AF548DB2 │ │ │ │ │ +3A4AAA9C29682CF135BB767DAA16169A127EB50A7EECEB6480CF56A7D0F8AC56 │ │ │ │ │ +4A5090B3D75A790372886AF568D94C8165975A05BFBFDF1FFBA45F70700BB9E0 │ │ │ │ │ +57F3249EF9E9C8AD9CBCF6E4FD592DC4CDD2D7864F7C8A3FA6FC44C25C0CE7E1 │ │ │ │ │ +299F8A90B32B75DEA28917531621E1E7E0ECEE9E01665DEE99FBCF3EC3F30686 │ │ │ │ │ +513D7CBA745E660502603865D5A3E82D24B3F94B2884B21DC53AED87F49380E0 │ │ │ │ │ +68EE79C580931308DA762670C1F86F07FFB479773CD9C5DE6F22980DEC973D1C │ │ │ │ │ +A1E162D73932561BAAB24DE51DC8708291B666B36BABCA1FEDB6DD9C22572914 │ │ │ │ │ +7194DA044319F362452D53DD4D9A59134838E540F1E23805CEF53FF4F7519385 │ │ │ │ │ +1FAE3061F94369FEB1232BDA2E2A281E6972FB4524EFA37A598E7CDC097683EA │ │ │ │ │ +1B609952AEC0799B4711AAAB22D6B1D5CC729DE70897FDDC48AF0A12E40FFE30 │ │ │ │ │ +6528C601E68E8CFA4BBF897CF89DB712DE108DD1F084EFD917BFD9A70A74EB8F │ │ │ │ │ +D0D5B43CCC30373A5E871F18A969D01C69C2B4377622A0C8C4D7C4C28DDE5586 │ │ │ │ │ +BD17D5D640A6F396BD41993BD1932EE10953847F82F7BB36480B67A4F69F0763 │ │ │ │ │ +69423D1803B7BB60594ABEEE9578076639B84D8323F56104438803D45402FEE3 │ │ │ │ │ +045DAB16C4459DA9BBE01D0385CC771FB8DABDD8A9D280C18553F92FE6591CFD │ │ │ │ │ +26B82F28E6673BD823598D3F6CE03BEE04D9A21ED908DFC4F640227C148F133D │ │ │ │ │ +D32113275297C16EBCC9028AFD9102DE50E9CF67E7CF8C42BB8E73D1DAF8A5E2 │ │ │ │ │ +EF5979426229664A990DEF980A7038D2F229789D4F6EDBE1FB81BEC1A1BB14D7 │ │ │ │ │ +882515C62660E8877BE942712D57B86A2E19995AF087DECB7FD5208583C020AE │ │ │ │ │ +FEC86A2826530AD855006225300E4655F443C9360A8BAC96B5B096DDC9B12EDF │ │ │ │ │ +C862215AD6C432CF345FE701757E4EBB8C65F46912CB0F4DEF53672F7298D8F7 │ │ │ │ │ +EE51A9C5DE689A8D36956B7F0410893C0998DB03B73B4024CB046F8F6B32E07F │ │ │ │ │ +CD28A68AFB7152E45F1021DCD520D8A429FCDCA4B8054BAF0B48C4443280F198 │ │ │ │ │ +3360B078E6DEC37772DA8B629CFFD1534E8AA10E26B0BC58E92B9BF280C8EE45 │ │ │ │ │ +618EECDE904249F5A2010DC55D1028DFF4F058260B2B0A46541D6157970F44BD │ │ │ │ │ +D7483802D56A81184119DDBC914E8E394CBEEB506B61BB1CE2A3465252E5D8A3 │ │ │ │ │ +6BDD2D067E69D4ECEFC7D5568378F5F8B38EAFF138014185FE19DF7358A7A780 │ │ │ │ │ +3BE0E2CCD1561113F2F2319BDB503230DD0866121604710CEBBAA659ABFC010B │ │ │ │ │ +5CC40E5807F461D87E75BDC6AD96BCEF62AF668D48D7A76D08B57650F35CF609 │ │ │ │ │ +C0F791AEBEB75E29FA69596BAB419804AECE0F0238AAE64A6C13A22EBF4E3EAC │ │ │ │ │ +3570DECE85F54064486B2364D63E94FEB7C16350CDA318510A45C8848DB470ED │ │ │ │ │ +BFAFD2365681D65CFF3E6C1B4B7C8AE3066F96E819D05B97F3A6C2BFF8A72978 │ │ │ │ │ +EEB7F632FF604AD003A3CCA5A0465D53033A646E8082D3491EDECA3DA1A0E1BB │ │ │ │ │ +64BF36946520438D2EE72FA9EB1CEEDF56510AADA55A8DE280E23C904E0810FA │ │ │ │ │ +A3177CF684F06A4042DE4CD4AB21E2F0616153BEEE58EBBD89911FA43BC52969 │ │ │ │ │ +230C8137DB34C13E147B06C7A3875A931E1AC127E7D3EA0DF8346B6971F80901 │ │ │ │ │ +DC37F2DE1A0B81FD93CA3B5EB9B29ECABA1492901B1BA261DAB872FB3431C718 │ │ │ │ │ +9C9CDA7864908CD773864908DEB44E343221C2C4C335341789A46325D94C767C │ │ │ │ │ +740E3B60CE6D452A3A665967F568671FD7DD460B404B9C3D2EDCD47A336AA2C7 │ │ │ │ │ +BB0B1AC3823978F610629EF7AB526098A7EE7076F50A146D8134BA2DEC1B8ACF │ │ │ │ │ +68A7E4A9B7BE17FB71480516F2D6A8866E56CFD7C7A41311F48DDDD9887DACB8 │ │ │ │ │ +73FDAF5F25E956AFB0A9D530DE2E1128F006AAC9A78715BA2F90C8FED3729BFA │ │ │ │ │ +BDDD4098F870A27A91A0CB540D166FF86A442E95C9C361FD23378A2A138EAFB8 │ │ │ │ │ +D7050B486E1CB95068D890BCCD669456F3385C8F1793CE545099421368FE0F46 │ │ │ │ │ +53137AD2B65030B19CE7FF6B1669DB7A3C440AEF27149780E36C7097B7A8B71B │ │ │ │ │ +8789EECFA9A70B1F9695BB5D94E9A7D341291C1CA1BDEF4BE3EFCB8234CE9FFD │ │ │ │ │ +E1C4963CF919780129FA60162FEAA8AE97328F4BA14D949057A3EE74214F2D29 │ │ │ │ │ +51E7BE584446F6702F39957AE455CF8AF0C36AADAA39B53553D923CA5E9D4988 │ │ │ │ │ +76701B4F77DAE5185AC29900 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -3298,16 +3301,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 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 23[45 19[83 │ │ │ │ │ -18[25 5[45 1[45 45 45 3[25 44[{}9 90.9091 /CMSL10 rf │ │ │ │ │ +6[28 58[{}16 90.9091 /CMTI10 rf /Ff 138[51 6[51 8[40 │ │ │ │ │ +26[47 15[25 4[45 1[45 45 1[45 3[25 44[{}10 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 │ │ │ │ │ @@ -3419,20 +3423,20 @@ │ │ │ │ │ (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 1082 4 v │ │ │ │ │ -1264 w Fh(SubMtxList)28 b Ff(:)40 b Fe(DRAFT)31 b Ff(Ma)m(y)g(1,)g │ │ │ │ │ -(2024)p 2818 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 │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fi(2)p 136 100 1076 4 v │ │ │ │ │ +1257 w Fh(SubMtxList)28 b Ff(:)41 b Fe(DRAFT)30 b Ff(June)f(3,)i(2025)p │ │ │ │ │ +2825 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 │ │ │ │ │ @@ -3482,65 +3486,65 @@ │ │ │ │ │ (and)d Fh(heads)p Fi(,)227 5251 y Fh(counts)p Fi(,)29 │ │ │ │ │ b Fh(lock)g Fi(and)h Fh(flags)f Fi(are)i(set)g(to)g Fh(NULL)e │ │ │ │ │ Fi(.)227 5407 y Fe(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ │ b Fi(If)30 b Fh(list)g Fi(is)g Fh(NULL)p Fi(,)f(an)i(error)f(message)h │ │ │ │ │ (is)g(prin)m(ted)f(and)f(the)i(program)f(exits.)p eop │ │ │ │ │ end │ │ │ │ │ %%Page: 3 3 │ │ │ │ │ -TeXDict begin 3 2 bop 91 100 1082 4 v 1264 100 a Fh(SubMtxList)27 │ │ │ │ │ -b Ff(:)41 b Fe(DRAFT)121 b Ff(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2771 100 V 1082 w Fi(3)111 399 y(3.)46 b Fh(void)h │ │ │ │ │ -(SubMtxList_clearData)42 b(\()48 b(SubMtxList)d(*list)h(\))h(;)227 │ │ │ │ │ -555 y Fi(This)31 b(metho)s(d)f(clears)j(the)e(ob)5 b(ject)32 │ │ │ │ │ -b(and)f(free's)h(an)m(y)f(o)m(wned)g(data)h(b)m(y)g(calling)g │ │ │ │ │ -Fh(SubMtx)p 3241 555 29 4 v 33 w(free\(\))e Fi(for)h(eac)m(h)227 │ │ │ │ │ -668 y(ob)5 b(ject)30 b(on)e(the)h(free)g(list.)41 b(If)28 │ │ │ │ │ -b Fh(heads)f Fi(is)i(not)g Fh(NULL)p Fi(,)f(it)h(is)g(free'd.)40 │ │ │ │ │ -b(If)28 b Fh(counts)f Fi(is)i(not)g Fh(NULL)p Fi(,)f(it)h(is)g(free'd)f │ │ │ │ │ -(via)227 781 y(a)i(call)g(to)f Fh(IVfree\(\))p Fi(.)38 │ │ │ │ │ -b(If)29 b Fh(flags)e Fi(is)i(not)g Fh(NULL)p Fi(,)f(it)h(is)g(free'd)g │ │ │ │ │ -(via)h(a)f(call)h(to)f Fh(CVfree\(\))p Fi(.)38 b(If)29 │ │ │ │ │ -b(the)g(lo)s(c)m(k)h(is)f(not)227 894 y Fh(NULL)p Fi(,)34 │ │ │ │ │ -b(it)i(is)f(destro)m(y)m(ed)h(via)f(a)g(call)i(to)e Fh(mutex)p │ │ │ │ │ -1848 894 V 33 w(destroy\(\))e Fi(and)h(then)h(free'd.)54 │ │ │ │ │ -b(There)34 b(is)h(a)h(concluding)227 1007 y(call)c(to)f │ │ │ │ │ -Fh(SubMtxList)p 991 1007 V 32 w(setDefaultFields\(\))p │ │ │ │ │ -Fi(.)227 1164 y Fe(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ │ -b Fi(If)30 b Fh(list)g Fi(is)g Fh(NULL)p Fi(,)f(an)i(error)f(message)h │ │ │ │ │ -(is)g(prin)m(ted)f(and)f(the)i(program)f(exits.)111 1364 │ │ │ │ │ -y(4.)46 b Fh(void)h(SubMtxList_free)d(\()j(SubMtxList)e(*list)h(\))i(;) │ │ │ │ │ -227 1521 y Fi(This)37 b(metho)s(d)f(releases)i(an)m(y)g(storage)h(b)m │ │ │ │ │ -(y)e(a)g(call)i(to)e Fh(SubMtxList)p 2607 1521 V 32 w(clearData\(\))d │ │ │ │ │ -Fi(and)j(then)f(free)i(the)227 1634 y(space)31 b(for)f │ │ │ │ │ -Fh(list)p Fi(.)227 1791 y Fe(Err)-5 b(or)34 b(che)-5 │ │ │ │ │ -b(cking:)40 b Fi(If)30 b Fh(list)g Fi(is)g Fh(NULL)p │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1076 4 v 1257 100 a Fh(SubMtxList)27 │ │ │ │ │ +b Ff(:)41 b Fe(DRAFT)121 b Ff(June)30 b(3,)h(2025)p 2778 │ │ │ │ │ +100 V 1076 w Fi(3)111 399 y(3.)46 b Fh(void)h(SubMtxList_clearData)42 │ │ │ │ │ +b(\()48 b(SubMtxList)d(*list)h(\))h(;)227 555 y Fi(This)31 │ │ │ │ │ +b(metho)s(d)f(clears)j(the)e(ob)5 b(ject)32 b(and)f(free's)h(an)m(y)f │ │ │ │ │ +(o)m(wned)g(data)h(b)m(y)g(calling)g Fh(SubMtx)p 3241 │ │ │ │ │ +555 29 4 v 33 w(free\(\))e Fi(for)h(eac)m(h)227 668 y(ob)5 │ │ │ │ │ +b(ject)30 b(on)e(the)h(free)g(list.)41 b(If)28 b Fh(heads)f │ │ │ │ │ +Fi(is)i(not)g Fh(NULL)p Fi(,)f(it)h(is)g(free'd.)40 b(If)28 │ │ │ │ │ +b Fh(counts)f Fi(is)i(not)g Fh(NULL)p Fi(,)f(it)h(is)g(free'd)f(via)227 │ │ │ │ │ +781 y(a)i(call)g(to)f Fh(IVfree\(\))p Fi(.)38 b(If)29 │ │ │ │ │ +b Fh(flags)e Fi(is)i(not)g Fh(NULL)p Fi(,)f(it)h(is)g(free'd)g(via)h(a) │ │ │ │ │ +f(call)h(to)f Fh(CVfree\(\))p Fi(.)38 b(If)29 b(the)g(lo)s(c)m(k)h(is)f │ │ │ │ │ +(not)227 894 y Fh(NULL)p Fi(,)34 b(it)i(is)f(destro)m(y)m(ed)h(via)f(a) │ │ │ │ │ +g(call)i(to)e Fh(mutex)p 1848 894 V 33 w(destroy\(\))e │ │ │ │ │ +Fi(and)h(then)h(free'd.)54 b(There)34 b(is)h(a)h(concluding)227 │ │ │ │ │ +1007 y(call)c(to)f Fh(SubMtxList)p 991 1007 V 32 w │ │ │ │ │ +(setDefaultFields\(\))p Fi(.)227 1164 y Fe(Err)-5 b(or)34 │ │ │ │ │ +b(che)-5 b(cking:)40 b Fi(If)30 b Fh(list)g Fi(is)g Fh(NULL)p │ │ │ │ │ Fi(,)f(an)i(error)f(message)h(is)g(prin)m(ted)f(and)f(the)i(program)f │ │ │ │ │ -(exits.)0 2078 y Fb(1.2.2)112 b(Initialization)39 b(metho)s(ds)0 │ │ │ │ │ -2281 y Fi(There)30 b(are)h(three)f(initializer)j(metho)s(ds.)111 │ │ │ │ │ -2534 y(1.)46 b Fh(void)h(SubMtxList_init\()c(SubMtxList)i(*list,)h(int) │ │ │ │ │ -h(nlist,)f(int)h(counts[],)1277 2647 y(int)g(lockflag,)e(char)i │ │ │ │ │ -(flags[])f(\))h(;)227 2804 y Fi(An)m(y)35 b(data)h(is)f(cleared)h(via)f │ │ │ │ │ -(a)h(call)g(to)g Fh(SubMtxList)p 2054 2804 V 31 w(clearData\(\))p │ │ │ │ │ -Fi(.)51 b(The)35 b(n)m(um)m(b)s(er)f(of)h(lists)g(is)g(set)h(and)227 │ │ │ │ │ -2917 y(the)43 b Fh(heads[])d Fi(v)m(ector)j(is)f(initialized.)78 │ │ │ │ │ -b(If)41 b Fh(counts)g Fi(is)h(not)g Fh(NULL)p Fi(,)f(the)h(ob)5 │ │ │ │ │ -b(ject's)43 b Fh(counts[])d Fi(v)m(ector)k(is)227 3030 │ │ │ │ │ -y(allo)s(cated)31 b(and)e(\014lled)g(with)g(the)g(incoming)h(en)m │ │ │ │ │ -(tries.)41 b(If)29 b Fh(lockflag)e Fi(is)i(zero,)i(the)e(lo)s(c)m(k)h │ │ │ │ │ -(is)f(not)h(initialized.)227 3143 y(If)39 b Fh(lockflag)e │ │ │ │ │ -Fi(is)i Fh(1)p Fi(,)j(the)d(lo)s(c)m(k)i(is)e(initialized)i(to)f(b)s(e) │ │ │ │ │ -f(able)h(to)g(sync)m(hronize)f(threads)g(with)g(the)g(calling)227 │ │ │ │ │ -3256 y(pro)s(cess.)71 b(If)40 b Fh(lockflag)e Fi(is)j │ │ │ │ │ -Fh(2)p Fi(,)i(the)e(lo)s(c)m(k)g(is)g(initialized)h(to)f(b)s(e)f(able)h │ │ │ │ │ -(to)g(sync)m(hronize)g(threads)f(across)227 3368 y(pro)s(cesses.)49 │ │ │ │ │ -b(If)32 b Fh(flags)g Fi(is)h(not)g Fh(NULL)p Fi(,)f(the)h(ob)5 │ │ │ │ │ -b(ject's)34 b Fh(flags[])d Fi(v)m(ector)k(is)e(allo)s(cated)i(and)d │ │ │ │ │ -(\014lled)h(with)g(the)227 3481 y(incoming)e(en)m(tries.)227 │ │ │ │ │ -3638 y Fe(Err)-5 b(or)40 b(che)-5 b(cking:)53 b Fi(If)36 │ │ │ │ │ -b Fh(list)g Fi(is)h Fh(NULL)p Fi(,)f(or)g(if)h Fh(nlist)e │ │ │ │ │ +(exits.)111 1364 y(4.)46 b Fh(void)h(SubMtxList_free)d(\()j(SubMtxList) │ │ │ │ │ +e(*list)h(\))i(;)227 1521 y Fi(This)37 b(metho)s(d)f(releases)i(an)m(y) │ │ │ │ │ +g(storage)h(b)m(y)e(a)g(call)i(to)e Fh(SubMtxList)p 2607 │ │ │ │ │ +1521 V 32 w(clearData\(\))d Fi(and)j(then)f(free)i(the)227 │ │ │ │ │ +1634 y(space)31 b(for)f Fh(list)p Fi(.)227 1791 y Fe(Err)-5 │ │ │ │ │ +b(or)34 b(che)-5 b(cking:)40 b Fi(If)30 b Fh(list)g Fi(is)g │ │ │ │ │ +Fh(NULL)p Fi(,)f(an)i(error)f(message)h(is)g(prin)m(ted)f(and)f(the)i │ │ │ │ │ +(program)f(exits.)0 2078 y Fb(1.2.2)112 b(Initialization)39 │ │ │ │ │ +b(metho)s(ds)0 2281 y Fi(There)30 b(are)h(three)f(initializer)j(metho)s │ │ │ │ │ +(ds.)111 2534 y(1.)46 b Fh(void)h(SubMtxList_init\()c(SubMtxList)i │ │ │ │ │ +(*list,)h(int)h(nlist,)f(int)h(counts[],)1277 2647 y(int)g(lockflag,)e │ │ │ │ │ +(char)i(flags[])f(\))h(;)227 2804 y Fi(An)m(y)35 b(data)h(is)f(cleared) │ │ │ │ │ +h(via)f(a)h(call)g(to)g Fh(SubMtxList)p 2054 2804 V 31 │ │ │ │ │ +w(clearData\(\))p Fi(.)51 b(The)35 b(n)m(um)m(b)s(er)f(of)h(lists)g(is) │ │ │ │ │ +g(set)h(and)227 2917 y(the)43 b Fh(heads[])d Fi(v)m(ector)j(is)f │ │ │ │ │ +(initialized.)78 b(If)41 b Fh(counts)g Fi(is)h(not)g │ │ │ │ │ +Fh(NULL)p Fi(,)f(the)h(ob)5 b(ject's)43 b Fh(counts[])d │ │ │ │ │ +Fi(v)m(ector)k(is)227 3030 y(allo)s(cated)31 b(and)e(\014lled)g(with)g │ │ │ │ │ +(the)g(incoming)h(en)m(tries.)41 b(If)29 b Fh(lockflag)e │ │ │ │ │ +Fi(is)i(zero,)i(the)e(lo)s(c)m(k)h(is)f(not)h(initialized.)227 │ │ │ │ │ +3143 y(If)39 b Fh(lockflag)e Fi(is)i Fh(1)p Fi(,)j(the)d(lo)s(c)m(k)i │ │ │ │ │ +(is)e(initialized)i(to)f(b)s(e)f(able)h(to)g(sync)m(hronize)f(threads)g │ │ │ │ │ +(with)g(the)g(calling)227 3256 y(pro)s(cess.)71 b(If)40 │ │ │ │ │ +b Fh(lockflag)e Fi(is)j Fh(2)p Fi(,)i(the)e(lo)s(c)m(k)g(is)g │ │ │ │ │ +(initialized)h(to)f(b)s(e)f(able)h(to)g(sync)m(hronize)g(threads)f │ │ │ │ │ +(across)227 3368 y(pro)s(cesses.)49 b(If)32 b Fh(flags)g │ │ │ │ │ +Fi(is)h(not)g Fh(NULL)p Fi(,)f(the)h(ob)5 b(ject's)34 │ │ │ │ │ +b Fh(flags[])d Fi(v)m(ector)k(is)e(allo)s(cated)i(and)d(\014lled)h │ │ │ │ │ +(with)g(the)227 3481 y(incoming)e(en)m(tries.)227 3638 │ │ │ │ │ +y Fe(Err)-5 b(or)40 b(che)-5 b(cking:)53 b Fi(If)36 b │ │ │ │ │ +Fh(list)g Fi(is)h Fh(NULL)p Fi(,)f(or)g(if)h Fh(nlist)e │ │ │ │ │ Fa(\024)g Fi(0,)k(or)e(if)g Fh(lockflag)d Fi(is)j(not)g(in)f │ │ │ │ │ Fh([0,2])p Fi(,)i(an)e(error)227 3751 y(message)c(is)e(prin)m(ted)g │ │ │ │ │ (and)g(zero)h(is)f(returned.)0 4038 y Fb(1.2.3)112 b(Utilit)m(y)38 │ │ │ │ │ b(metho)s(ds)111 4241 y Fi(1.)46 b Fh(int)h(SubMtxList_isListNonempty) │ │ │ │ │ 41 b(\()48 b(SubMtxList)d(*list,)h(int)h(ilist)f(\))h(;)227 │ │ │ │ │ 4398 y Fi(If)30 b(list)h Fh(ilist)e Fi(is)i(empt)m(y)-8 │ │ │ │ │ b(,)31 b(the)g(metho)s(d)e(returns)h(0.)41 b(Otherwise,)30 │ │ │ │ │ @@ -3556,19 +3560,19 @@ │ │ │ │ │ (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 1082 4 v │ │ │ │ │ -1264 w Fh(SubMtxList)28 b Ff(:)40 b Fe(DRAFT)31 b Ff(Ma)m(y)g(1,)g │ │ │ │ │ -(2024)p 2818 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 │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fi(4)p 136 100 1076 4 v │ │ │ │ │ +1257 w Fh(SubMtxList)28 b Ff(:)41 b Fe(DRAFT)30 b Ff(June)f(3,)i(2025)p │ │ │ │ │ +2825 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) │ │ │ │ │ ├── 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 May 1, 2024 │ │ │ │ │ │ + 2 SubMtxList : DRAFT June 3, 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 May 1, 2024 3 │ │ │ │ │ │ + SubMtxList : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 4 SubMtxList : DRAFT June 3, 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.05.01:0545 │ │ │ │ │ +%DVIPSSource: TeX output 2025.06.03:1221 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -1419,21 +1419,22 @@ │ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ │ /UnderlineThickness 50 def │ │ │ │ │ end readonly def │ │ │ │ │ /Encoding 256 array │ │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ │ dup 44 /comma put │ │ │ │ │ dup 48 /zero put │ │ │ │ │ -dup 49 /one put │ │ │ │ │ dup 50 /two put │ │ │ │ │ -dup 52 /four put │ │ │ │ │ +dup 51 /three put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 77 /M put │ │ │ │ │ -dup 97 /a put │ │ │ │ │ -dup 121 /y put │ │ │ │ │ +dup 74 /J put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ +dup 110 /n put │ │ │ │ │ +dup 117 /u put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ │ @@ -1614,68 +1615,70 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004ACD1870 │ │ │ │ │ -A5EA947858F5795870BFE1343AD803FB854BF8F5A4E794E8EC57BE41DB5B8734 │ │ │ │ │ -13E47950F29A81EA0C81EA798863883D7F41F78325CA190CBBFFE822AE494550 │ │ │ │ │ -4BE83703071FC9512D128927AF3F63CEF8F86ABE1E15D7B4DDD39576E7DFF45E │ │ │ │ │ -3CB4115AAB1830DE8647B915DB4BEBEB5235C281E098B899BAB951D8D5798F01 │ │ │ │ │ -7F7C47336D31438E5126738AFEAB29E9A7CBE06DE4DD604477B542D2620DFD58 │ │ │ │ │ -28FE34238572F23C5A8EB7ACEE1E154DA13FC1A5AA67A3BA8C5CDFB2B80312C9 │ │ │ │ │ -BC9FAE56D08DDFA9498E6EF0D0F6BD18B3923E0B670B0740528BC843610736CB │ │ │ │ │ -80228C105C2F72C3C22D610C3D8C268DEEA2AEEE3221E198E79FE2966487360C │ │ │ │ │ -84AE08AC326F48B21447652121B1EB68AF857B8628F27BB4ED00F273E0DD044A │ │ │ │ │ -7D11A5BFAAC0A82328444CC9DD90167681B07D55CE28655F40C21250A226DEAB │ │ │ │ │ -2D46FFB680CB9242BE192AC0E55A44D45709FA6DE638C130D92C4E9B07BC3D61 │ │ │ │ │ -25CC2F0A7ED4F3574242FFE4461272EB1401266EEF551E0E2B0EF51FA8F250EC │ │ │ │ │ -FD9AFB6F5A0CC442B566BC24400133E3E9B9A9FC801CEF284FD2B3ECA43421FA │ │ │ │ │ -51E5D1EFE7BEAA96658362C438A0A5A6DCBC664A85EF88037B42355195B9D19C │ │ │ │ │ -7961D5F63B123451B298CD52C144FCD4F3641A823FBA14605E2DFD845E89102C │ │ │ │ │ -4E345CFD80E3EE6F097095A84C941FFC91B234F3615E4EE4C5D564284656E364 │ │ │ │ │ -AB9C4D1DE05F8FD065CA6064893F0CF3A3A501D59EF6568D05D818A010D06518 │ │ │ │ │ -E2C20418ADD1E652867F265084A27A5FE0C32213C59FFC3A84EDC89382521E5B │ │ │ │ │ -8AF66D76601F83C5C33CC9CF968C77B66F1FA074AC3DAD8E453C9264D03969EF │ │ │ │ │ -9E387BB3BEAA4BF0A9D88BA2CE6094E8996A3752A657E322A57AF006444BF516 │ │ │ │ │ -501C43CAA1BA7F16A3B6E4D3EBDECCCC19564DF18FB68194C132238A5441A21A │ │ │ │ │ -F52285CA1CA94A4BEC61EB509FA35EA5E393D662D938F4291F37EB7C2D5815BE │ │ │ │ │ -446813E1CFD06FFFFF2C4355C9DAFA48E765F4CC5DE4B9E37CFFB75E7A0B6F4B │ │ │ │ │ -4E412496F9C27DF4BDD90A869F0EBD81A57AE0B84051450A5A3E06CB9930DB2C │ │ │ │ │ -7C2DDB774BE870AEFCC9F4F067BE243FF3FD4B5C71B96C607DC4975973AF2650 │ │ │ │ │ -E7DF2BE3523A370EEDD07B5456B96E372ED10510CE677C044E609F21E93652FD │ │ │ │ │ -33CE612F587530D12214A3719CDB170C315B5D8763D5D4C67B5CAE90309E77AC │ │ │ │ │ -B45EB356C13A7BDE0D7320A9849CA357E30D7CF1085FFD70071932C3180AFC28 │ │ │ │ │ -B093016BA3F49A3878C34BB4A8727A441EB6CFC1A73F2313A7BF8D32EDF27E62 │ │ │ │ │ -EBEBC058FBA80B136FD2DE05C673B66482224ECEC63EDFB519AC13B5CC6624A6 │ │ │ │ │ -B3FD79037DA3851E93A386115852DBA88B176F21EDDB5386DC7C993C4210B28F │ │ │ │ │ -438131A586E34A09724E7CE60139F8247BFF14D2674805B3BD454C134728A43E │ │ │ │ │ -139E0AF71A7AC5CE42041EC83FD454B00AD29959FCF007789FFAF2D3492DCA4B │ │ │ │ │ -566EAFE97591ABC51CD0CD9BCD64E285FB823E41AA817E96B2B224005DAA4E15 │ │ │ │ │ -2141DB436B9D3FBA4EE4C876FD19A2E5133106FE2B9F704CB9614FCDC91B7950 │ │ │ │ │ -57053F45A5ED993B48189AAFAD5289F97AE2B0AEB5606579F6BD75F743EDB5B6 │ │ │ │ │ -5AA8F8A64CE507A47325081B3A013DB1BD596CDD3A83D2F29B070D6F9C57496E │ │ │ │ │ -14DF3F0F731C3BB00F2CE3D4BBACF1320322195D1DEA7A545BB4725BD1C6EC3D │ │ │ │ │ -63250C72B897741F8599D9D9BD2FB50EC80EFF2ECD6CE6603E95AABB45462ACF │ │ │ │ │ -12B005EE5979B6B05BCE9B97061686102349142A3CCC26D57F2A3283DD8B6E2A │ │ │ │ │ -98885E48C0D4A1A5C9612EDCB3B3D265E9B8CCCCA5D99F07F96C15B27D6A161F │ │ │ │ │ -936599E503C2859927201CACC31581AB7AB84F9EC9FFADC239F01DCC55940AB7 │ │ │ │ │ -FA884AA1EB6494C8E53DAD66E75A317428ACF9D943A74683BF547958F67D9E36 │ │ │ │ │ -F985EED50DEBCF255756A821927CB73848DCF167E96E975E959DE27FE7BA4FBA │ │ │ │ │ -D0EFC003F019D87572D6F9C73FC5B880C3EEDB7EF98E5EC3D25D6FE0015A6590 │ │ │ │ │ -E3C6EE632D7F6558B914609A8829CD1DEAB83A3F1207D5C3AAC9EAEA9DE1B4F8 │ │ │ │ │ -2375C5D4F630BCE13475F941ED2324D2CD4DCF2285298EAA4FFF89433D853860 │ │ │ │ │ -A974A9FC0808580FBDE7D02EDBB3D8C65BD3109AE8B359E96BFB7E21C696F440 │ │ │ │ │ -312B0CCAD810BF070DF8FC281E8198EB20A7FF9C9BCD291D74BC75EE46799485 │ │ │ │ │ -1AB2AE36B7E525034D146A856AF3BD9057A0033C08B606B89DD130548950C93D │ │ │ │ │ -94A8C92C47A34A791B1C108D2F36E899B79358B8081CCFC3D1A2F0521E4E2AE4 │ │ │ │ │ -7F500D6F2A53E5393E44201287225912590ABC738E8726622B67C3425639CCFB │ │ │ │ │ -F450B78A4918 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004B9BA1CC │ │ │ │ │ +580D3C6BDA4DC1B80B4365F1C80512453FC5316EC2D928FB731C3D6403E3C18B │ │ │ │ │ +E8424D644DF5E9A2134229C5C91CA68DB8E85BA2BB40F538F585DA6FA4037718 │ │ │ │ │ +B8053EBBA1E765346BCD5BDAA6C38115D31611D8A87A2238C145F2DA2F92E4DF │ │ │ │ │ +3987BD9C4D2A3D460E8941A68B125BCD9EE4F9FD262C4C8A71F47A2C81975635 │ │ │ │ │ +F1B981C274C53FA2ACCDE4C9D0A7C62D6C1EFF91CFC6712CA6A9F333C9564FCB │ │ │ │ │ +2A70F0AD715A79B10A08AB069E2A3C93BC0AED19D0CA10134B8DDDE8AF548DB2 │ │ │ │ │ +3A4AAA9C29682CF135BB767DAA16169A127EB50A7EECEB6480CF56A7D0F8AC56 │ │ │ │ │ +4A5090B3D75A790372886AF568D94C8165975A05BFBFDF1FFBA45F70700BB9E0 │ │ │ │ │ +57F3249EF9E9C8AD9CBCF6E4FD592DC4CDD2D7864F7C8A3FA6FC44C25C0CE7E1 │ │ │ │ │ +299F8A90B32B75DEA28917531621E1E7E0ECEE9E01665DEE99FBCF3EC3F30686 │ │ │ │ │ +513D7CBA745E660502603865D5A3E82D24B3F94B2884B21DC53AED87F49380E0 │ │ │ │ │ +68EE79C580931308DA762670C1F86F07FFB479773CD9C5DE6F22980DEC973D1C │ │ │ │ │ +A1E162D73932561BAAB24DE51DC8708291B666B36BABCA1FEDB6DD9C22572914 │ │ │ │ │ +7194DA044319F362452D53DD4D9A59134838E540F1E23805CEF53FF4F7519385 │ │ │ │ │ +1FAE3061F94369FEB1232BDA2E2A281E6972FB4524EFA37A598E7CDC097683EA │ │ │ │ │ +1B609952AEC0799B4711AAAB22D6B1D5CC729DE70897FDDC48AF0A12E40FFE30 │ │ │ │ │ +6528C601E68E8CFA4BBF897CF89DB712DE108DD1F084EFD917BFD9A70A74EB8F │ │ │ │ │ +D0D5B43CCC30373A5E871F18A969D01C69C2B4377622A0C8C4D7C4C28DDE5586 │ │ │ │ │ +BD17D5D640A6F396BD41993BD1932EE10953847F82F7BB36480B67A4F69F0763 │ │ │ │ │ +69423D1803B7BB60594ABEEE9578076639B84D8323F56104438803D45402FEE3 │ │ │ │ │ +045DAB16C4459DA9BBE01D0385CC771FB8DABDD8A9D280C18553F92FE6591CFD │ │ │ │ │ +26B82F28E6673BD823598D3F6CE03BEE04D9A21ED908DFC4F640227C148F133D │ │ │ │ │ +D32113275297C16EBCC9028AFD9102DE50E9CF67E7CF8C42BB8E73D1DAF8A5E2 │ │ │ │ │ +EF5979426229664A990DEF980A7038D2F229789D4F6EDBE1FB81BEC1A1BB14D7 │ │ │ │ │ +882515C62660E8877BE942712D57B86A2E19995AF087DECB7FD5208583C020AE │ │ │ │ │ +FEC86A2826530AD855006225300E4655F443C9360A8BAC96B5B096DDC9B12EDF │ │ │ │ │ +C862215AD6C432CF345FE701757E4EBB8C65F46912CB0F4DEF53672F7298D8F7 │ │ │ │ │ +EE51A9C5DE689A8D36956B7F0410893C0998DB03B73B4024CB046F8F6B32E07F │ │ │ │ │ +CD28A68AFB7152E45F1021DCD520D8A429FCDCA4B8054BAF0B48C4443280F198 │ │ │ │ │ +3360B078E6DEC37772DA8B629CFFD1534E8AA10E26B0BC58E92B9BF280C8EE45 │ │ │ │ │ +618EECDE904249F5A2010DC55D1028DFF4F058260B2B0A46541D6157970F44BD │ │ │ │ │ +D7483802D56A81184119DDBC914E8E394CBEEB506B61BB1CE2A3465252E5D8A3 │ │ │ │ │ +6BDD2D067E69D4ECEFC7D5568378F5F8B38EAFF138014185FE19DF7358A7A780 │ │ │ │ │ +3BE0E2CCD1561113F2F2319BDB503230DD0866121604710CEBBAA659ABFC010B │ │ │ │ │ +5CC40E5807F461D87E75BDC6AD96BCEF62AF668D48D7A76D08B57650F35CF609 │ │ │ │ │ +C0F791AEBEB75E29FA69596BAB419804AECE0F0238AAE64A6C13A22EBF4E3EAC │ │ │ │ │ +3570DECE85F54064486B2364D63E94FEB7C16350CDA318510A45C8848DB470ED │ │ │ │ │ +BFAFD2365681D65CFF3E6C1B4B7C8AE3066F96E819D05B97F3A6C2BFF8A72978 │ │ │ │ │ +EEB7F632FF604AD003A3CCA5A0465D53033A646E8082D3491EDECA3DA1A0E1BB │ │ │ │ │ +64BF36946520438D2EE72FA9EB1CEEDF56510AADA55A8DE280E23C904E0810FA │ │ │ │ │ +A3177CF684F06A4042DE4CD4AB21E2F0616153BEEE58EBBD89911FA43BC52969 │ │ │ │ │ +230C8137DB34C13E147B06C7A3875A931E1AC127E7D3EA0DF8346B6971F80901 │ │ │ │ │ +DC37F2DE1A0B81FD93CA3B5EB9B29ECABA1492901B1BA261DAB872FB3431C718 │ │ │ │ │ +9C9CDA7864908CD773864908DEB44E343221C2C4C335341789A46325D94C767C │ │ │ │ │ +740E3B60CE6D452A3A665967F568671FD7DD460B404B9C3D2EDCD47A336AA2C7 │ │ │ │ │ +BB0B1AC3823978F610629EF7AB526098A7EE7076F50A146D8134BA2DEC1B8ACF │ │ │ │ │ +68A7E4A9B7BE17FB71480516F2D6A8866E56CFD7C7A41311F48DDDD9887DACB8 │ │ │ │ │ +73FDAF5F25E956AFB0A9D530DE2E1128F006AAC9A78715BA2F90C8FED3729BFA │ │ │ │ │ +BDDD4098F870A27A91A0CB540D166FF86A442E95C9C361FD23378A2A138EAFB8 │ │ │ │ │ +D7050B486E1CB95068D890BCCD669456F3385C8F1793CE545099421368FE0F46 │ │ │ │ │ +53137AD2B65030B19CE7FF6B1669DB7A3C440AEF27149780E36C7097B7A8B71B │ │ │ │ │ +8789EECFA9A70B1F9695BB5D94E9A7D341291C1CA1BDEF4BE3EFCB8234CE9FFD │ │ │ │ │ +E1C4963CF919780129FA60162FEAA8AE97328F4BA14D949057A3EE74214F2D29 │ │ │ │ │ +51E7BE584446F6702F39957AE455CF8AF0C36AADAA39B53553D923CA5E9D4988 │ │ │ │ │ +76701B4F77DAE5185AC29900 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -3843,21 +3846,21 @@ │ │ │ │ │ TeXDict begin 40258437 52099151 1000 600 600 (main.dvi) │ │ │ │ │ @start /Fa 235[71 20[{}1 90.9091 /CMSY10 rf /Fb 133[50 │ │ │ │ │ 59 4[44 44 3[56 62 93 31 2[31 62 2[51 62 50 1[54 11[86 │ │ │ │ │ 5[84 5[42 6[80 13[56 56 56 56 2[31 46[{}23 99.6264 /CMBX12 │ │ │ │ │ rf /Fc 135[62 2[62 62 1[62 3[62 6[62 1[62 2[62 62 13[62 │ │ │ │ │ 5[62 77[{}11 119.552 /CMTT12 rf /Fd 134[71 3[75 52 53 │ │ │ │ │ 55 1[75 67 75 112 3[37 75 1[41 61 75 60 1[65 13[75 2[92 │ │ │ │ │ -11[103 17[67 67 2[37 46[{}22 119.552 /CMBX12 rf /Fe 134[48 │ │ │ │ │ -23[45 19[83 18[25 5[45 1[45 45 45 3[25 44[{}9 90.9091 │ │ │ │ │ -/CMSL10 rf /Ff 180[60 39 9[37 4[20 59[{}4 66.4176 /CMMI8 │ │ │ │ │ -rf /Fg 170[62 8[62 76[{}2 90.9091 /CMMI10 rf /Fh 134[44 │ │ │ │ │ -4[30 37 38 2[46 51 74 23 42 1[28 46 42 1[42 46 42 1[46 │ │ │ │ │ -12[65 1[66 11[59 62 69 2[68 6[28 58[{}23 90.9091 /CMTI10 │ │ │ │ │ -rf │ │ │ │ │ +11[103 17[67 67 2[37 46[{}22 119.552 /CMBX12 rf /Fe 138[51 │ │ │ │ │ +6[51 8[40 26[47 15[25 4[45 1[45 45 1[45 3[25 44[{}10 │ │ │ │ │ +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 │ │ │ │ │ @@ -3988,17 +3991,17 @@ │ │ │ │ │ (utual)f(exclusion)h(lo)s(c)m(k.)63 b(This)36 b(is)i(not)0 │ │ │ │ │ 5294 y(necessary)33 b(for)g(a)g(serial)h(or)f(MPI)g(factorization)j(or) │ │ │ │ │ d(solv)m(e)h(\(where)f(there)g(is)g(one)g Fj(SubMtxManager)c │ │ │ │ │ Fk(ob)5 b(ject)34 b(for)0 5407 y(eac)m(h)e(pro)s(cessor\),)e(but)g(it)h │ │ │ │ │ (is)f(necessary)h(for)f(in)g(a)h(m)m(ultithreaded)f(en)m(vironmen)m(t.) │ │ │ │ │ 1927 5656 y(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fk(2)p 136 100 1011 4 v │ │ │ │ │ -1193 w Fj(SubMtxManager)26 b Fe(:)41 b Fh(DRAFT)30 b │ │ │ │ │ -Fe(Ma)m(y)i(1,)f(2024)p 2890 100 V 141 399 a Fk(Eac)m(h)21 │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fk(2)p 136 100 1004 4 v │ │ │ │ │ +1186 w Fj(SubMtxManager)26 b Fe(:)41 b Fh(DRAFT)30 b │ │ │ │ │ +Fe(June)g(3,)h(2025)p 2897 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 │ │ │ │ │ @@ -4047,21 +4050,21 @@ │ │ │ │ │ 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 1011 4 v 1192 100 a Fj(SubMtxManager)27 │ │ │ │ │ -b Fe(:)41 b Fh(DRAFT)121 b Fe(Ma)m(y)31 b(1,)g(2024)p │ │ │ │ │ -2842 100 V 1011 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 │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1004 4 v 1185 100 a Fj(SubMtxManager)27 │ │ │ │ │ +b Fe(:)41 b Fh(DRAFT)121 b Fe(June)29 b(3,)i(2025)p 2849 │ │ │ │ │ +100 V 1004 w Fk(3)111 399 y(2.)46 b Fj(void)h(SubMtxManager_setDefault) │ │ │ │ │ +o(Fiel)o(ds)41 b(\()48 b(SubMtxManager)c(*manager)i(\))h(;)227 │ │ │ │ │ +558 y Fk(The)20 b(structure's)g(\014elds)g(are)g(set)h(to)g(default)g │ │ │ │ │ +(v)-5 b(alues:)36 b Fj(mode)p Fk(,)21 b Fj(nactive)p │ │ │ │ │ +Fk(,)g Fj(nbytesactive)p Fk(,)e Fj(nbytesrequested)p │ │ │ │ │ Fk(,)227 671 y Fj(nbytesalloc)p Fk(,)33 b Fj(nrequests)p │ │ │ │ │ Fk(,)f Fj(nreleases)p Fk(,)h Fj(nlocks)g Fk(and)g Fj(nunlocks)f │ │ │ │ │ Fk(are)j(set)g(to)g(zero,)h(and)d Fj(head)h Fk(and)227 │ │ │ │ │ 784 y Fj(lock)29 b Fk(are)i(set)g(to)g Fj(NULL)e Fk(.)227 │ │ │ │ │ 944 y Fh(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fk(If)30 │ │ │ │ │ b Fj(manager)f Fk(is)h Fj(NULL)p Fk(,)g(an)g(error)g(message)h(is)g │ │ │ │ │ (prin)m(ted)f(and)f(the)i(program)f(exits.)111 1151 y(3.)46 │ │ │ │ │ @@ -4120,18 +4123,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 1011 4 v │ │ │ │ │ -1193 w Fj(SubMtxManager)26 b Fe(:)41 b Fh(DRAFT)30 b │ │ │ │ │ -Fe(Ma)m(y)i(1,)f(2024)p 2890 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 1004 4 v │ │ │ │ │ +1186 w Fj(SubMtxManager)26 b Fe(:)41 b Fh(DRAFT)30 b │ │ │ │ │ +Fe(June)g(3,)h(2025)p 2897 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 May 1, 2024 │ │ │ │ │ │ + 2 SubMtxManager : DRAFT June 3, 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 May 1, 2024 3 │ │ │ │ │ │ + SubMtxManager : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 4 SubMtxManager : DRAFT June 3, 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.05.01:0545 │ │ │ │ │ +%DVIPSSource: TeX output 2025.06.03:1221 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -1006,21 +1006,22 @@ │ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ │ /UnderlineThickness 50 def │ │ │ │ │ end readonly def │ │ │ │ │ /Encoding 256 array │ │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ │ dup 44 /comma put │ │ │ │ │ dup 48 /zero put │ │ │ │ │ -dup 49 /one put │ │ │ │ │ dup 50 /two put │ │ │ │ │ -dup 52 /four put │ │ │ │ │ +dup 51 /three put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 77 /M put │ │ │ │ │ -dup 97 /a put │ │ │ │ │ -dup 121 /y put │ │ │ │ │ +dup 74 /J put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ +dup 110 /n put │ │ │ │ │ +dup 117 /u put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ │ @@ -1201,68 +1202,70 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004ACD1870 │ │ │ │ │ -A5EA947858F5795870BFE1343AD803FB854BF8F5A4E794E8EC57BE41DB5B8734 │ │ │ │ │ -13E47950F29A81EA0C81EA798863883D7F41F78325CA190CBBFFE822AE494550 │ │ │ │ │ -4BE83703071FC9512D128927AF3F63CEF8F86ABE1E15D7B4DDD39576E7DFF45E │ │ │ │ │ -3CB4115AAB1830DE8647B915DB4BEBEB5235C281E098B899BAB951D8D5798F01 │ │ │ │ │ -7F7C47336D31438E5126738AFEAB29E9A7CBE06DE4DD604477B542D2620DFD58 │ │ │ │ │ -28FE34238572F23C5A8EB7ACEE1E154DA13FC1A5AA67A3BA8C5CDFB2B80312C9 │ │ │ │ │ -BC9FAE56D08DDFA9498E6EF0D0F6BD18B3923E0B670B0740528BC843610736CB │ │ │ │ │ -80228C105C2F72C3C22D610C3D8C268DEEA2AEEE3221E198E79FE2966487360C │ │ │ │ │ -84AE08AC326F48B21447652121B1EB68AF857B8628F27BB4ED00F273E0DD044A │ │ │ │ │ -7D11A5BFAAC0A82328444CC9DD90167681B07D55CE28655F40C21250A226DEAB │ │ │ │ │ -2D46FFB680CB9242BE192AC0E55A44D45709FA6DE638C130D92C4E9B07BC3D61 │ │ │ │ │ -25CC2F0A7ED4F3574242FFE4461272EB1401266EEF551E0E2B0EF51FA8F250EC │ │ │ │ │ -FD9AFB6F5A0CC442B566BC24400133E3E9B9A9FC801CEF284FD2B3ECA43421FA │ │ │ │ │ -51E5D1EFE7BEAA96658362C438A0A5A6DCBC664A85EF88037B42355195B9D19C │ │ │ │ │ -7961D5F63B123451B298CD52C144FCD4F3641A823FBA14605E2DFD845E89102C │ │ │ │ │ -4E345CFD80E3EE6F097095A84C941FFC91B234F3615E4EE4C5D564284656E364 │ │ │ │ │ -AB9C4D1DE05F8FD065CA6064893F0CF3A3A501D59EF6568D05D818A010D06518 │ │ │ │ │ -E2C20418ADD1E652867F265084A27A5FE0C32213C59FFC3A84EDC89382521E5B │ │ │ │ │ -8AF66D76601F83C5C33CC9CF968C77B66F1FA074AC3DAD8E453C9264D03969EF │ │ │ │ │ -9E387BB3BEAA4BF0A9D88BA2CE6094E8996A3752A657E322A57AF006444BF516 │ │ │ │ │ -501C43CAA1BA7F16A3B6E4D3EBDECCCC19564DF18FB68194C132238A5441A21A │ │ │ │ │ -F52285CA1CA94A4BEC61EB509FA35EA5E393D662D938F4291F37EB7C2D5815BE │ │ │ │ │ -446813E1CFD06FFFFF2C4355C9DAFA48E765F4CC5DE4B9E37CFFB75E7A0B6F4B │ │ │ │ │ -4E412496F9C27DF4BDD90A869F0EBD81A57AE0B84051450A5A3E06CB9930DB2C │ │ │ │ │ -7C2DDB774BE870AEFCC9F4F067BE243FF3FD4B5C71B96C607DC4975973AF2650 │ │ │ │ │ -E7DF2BE3523A370EEDD07B5456B96E372ED10510CE677C044E609F21E93652FD │ │ │ │ │ -33CE612F587530D12214A3719CDB170C315B5D8763D5D4C67B5CAE90309E77AC │ │ │ │ │ -B45EB356C13A7BDE0D7320A9849CA357E30D7CF1085FFD70071932C3180AFC28 │ │ │ │ │ -B093016BA3F49A3878C34BB4A8727A441EB6CFC1A73F2313A7BF8D32EDF27E62 │ │ │ │ │ -EBEBC058FBA80B136FD2DE05C673B66482224ECEC63EDFB519AC13B5CC6624A6 │ │ │ │ │ -B3FD79037DA3851E93A386115852DBA88B176F21EDDB5386DC7C993C4210B28F │ │ │ │ │ -438131A586E34A09724E7CE60139F8247BFF14D2674805B3BD454C134728A43E │ │ │ │ │ -139E0AF71A7AC5CE42041EC83FD454B00AD29959FCF007789FFAF2D3492DCA4B │ │ │ │ │ -566EAFE97591ABC51CD0CD9BCD64E285FB823E41AA817E96B2B224005DAA4E15 │ │ │ │ │ -2141DB436B9D3FBA4EE4C876FD19A2E5133106FE2B9F704CB9614FCDC91B7950 │ │ │ │ │ -57053F45A5ED993B48189AAFAD5289F97AE2B0AEB5606579F6BD75F743EDB5B6 │ │ │ │ │ -5AA8F8A64CE507A47325081B3A013DB1BD596CDD3A83D2F29B070D6F9C57496E │ │ │ │ │ -14DF3F0F731C3BB00F2CE3D4BBACF1320322195D1DEA7A545BB4725BD1C6EC3D │ │ │ │ │ -63250C72B897741F8599D9D9BD2FB50EC80EFF2ECD6CE6603E95AABB45462ACF │ │ │ │ │ -12B005EE5979B6B05BCE9B97061686102349142A3CCC26D57F2A3283DD8B6E2A │ │ │ │ │ -98885E48C0D4A1A5C9612EDCB3B3D265E9B8CCCCA5D99F07F96C15B27D6A161F │ │ │ │ │ -936599E503C2859927201CACC31581AB7AB84F9EC9FFADC239F01DCC55940AB7 │ │ │ │ │ -FA884AA1EB6494C8E53DAD66E75A317428ACF9D943A74683BF547958F67D9E36 │ │ │ │ │ -F985EED50DEBCF255756A821927CB73848DCF167E96E975E959DE27FE7BA4FBA │ │ │ │ │ -D0EFC003F019D87572D6F9C73FC5B880C3EEDB7EF98E5EC3D25D6FE0015A6590 │ │ │ │ │ -E3C6EE632D7F6558B914609A8829CD1DEAB83A3F1207D5C3AAC9EAEA9DE1B4F8 │ │ │ │ │ -2375C5D4F630BCE13475F941ED2324D2CD4DCF2285298EAA4FFF89433D853860 │ │ │ │ │ -A974A9FC0808580FBDE7D02EDBB3D8C65BD3109AE8B359E96BFB7E21C696F440 │ │ │ │ │ -312B0CCAD810BF070DF8FC281E8198EB20A7FF9C9BCD291D74BC75EE46799485 │ │ │ │ │ -1AB2AE36B7E525034D146A856AF3BD9057A0033C08B606B89DD130548950C93D │ │ │ │ │ -94A8C92C47A34A791B1C108D2F36E899B79358B8081CCFC3D1A2F0521E4E2AE4 │ │ │ │ │ -7F500D6F2A53E5393E44201287225912590ABC738E8726622B67C3425639CCFB │ │ │ │ │ -F450B78A4918 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004B9BA1CC │ │ │ │ │ +580D3C6BDA4DC1B80B4365F1C80512453FC5316EC2D928FB731C3D6403E3C18B │ │ │ │ │ +E8424D644DF5E9A2134229C5C91CA68DB8E85BA2BB40F538F585DA6FA4037718 │ │ │ │ │ +B8053EBBA1E765346BCD5BDAA6C38115D31611D8A87A2238C145F2DA2F92E4DF │ │ │ │ │ +3987BD9C4D2A3D460E8941A68B125BCD9EE4F9FD262C4C8A71F47A2C81975635 │ │ │ │ │ +F1B981C274C53FA2ACCDE4C9D0A7C62D6C1EFF91CFC6712CA6A9F333C9564FCB │ │ │ │ │ +2A70F0AD715A79B10A08AB069E2A3C93BC0AED19D0CA10134B8DDDE8AF548DB2 │ │ │ │ │ +3A4AAA9C29682CF135BB767DAA16169A127EB50A7EECEB6480CF56A7D0F8AC56 │ │ │ │ │ +4A5090B3D75A790372886AF568D94C8165975A05BFBFDF1FFBA45F70700BB9E0 │ │ │ │ │ +57F3249EF9E9C8AD9CBCF6E4FD592DC4CDD2D7864F7C8A3FA6FC44C25C0CE7E1 │ │ │ │ │ +299F8A90B32B75DEA28917531621E1E7E0ECEE9E01665DEE99FBCF3EC3F30686 │ │ │ │ │ +513D7CBA745E660502603865D5A3E82D24B3F94B2884B21DC53AED87F49380E0 │ │ │ │ │ +68EE79C580931308DA762670C1F86F07FFB479773CD9C5DE6F22980DEC973D1C │ │ │ │ │ +A1E162D73932561BAAB24DE51DC8708291B666B36BABCA1FEDB6DD9C22572914 │ │ │ │ │ +7194DA044319F362452D53DD4D9A59134838E540F1E23805CEF53FF4F7519385 │ │ │ │ │ +1FAE3061F94369FEB1232BDA2E2A281E6972FB4524EFA37A598E7CDC097683EA │ │ │ │ │ +1B609952AEC0799B4711AAAB22D6B1D5CC729DE70897FDDC48AF0A12E40FFE30 │ │ │ │ │ +6528C601E68E8CFA4BBF897CF89DB712DE108DD1F084EFD917BFD9A70A74EB8F │ │ │ │ │ +D0D5B43CCC30373A5E871F18A969D01C69C2B4377622A0C8C4D7C4C28DDE5586 │ │ │ │ │ +BD17D5D640A6F396BD41993BD1932EE10953847F82F7BB36480B67A4F69F0763 │ │ │ │ │ +69423D1803B7BB60594ABEEE9578076639B84D8323F56104438803D45402FEE3 │ │ │ │ │ +045DAB16C4459DA9BBE01D0385CC771FB8DABDD8A9D280C18553F92FE6591CFD │ │ │ │ │ +26B82F28E6673BD823598D3F6CE03BEE04D9A21ED908DFC4F640227C148F133D │ │ │ │ │ +D32113275297C16EBCC9028AFD9102DE50E9CF67E7CF8C42BB8E73D1DAF8A5E2 │ │ │ │ │ +EF5979426229664A990DEF980A7038D2F229789D4F6EDBE1FB81BEC1A1BB14D7 │ │ │ │ │ +882515C62660E8877BE942712D57B86A2E19995AF087DECB7FD5208583C020AE │ │ │ │ │ +FEC86A2826530AD855006225300E4655F443C9360A8BAC96B5B096DDC9B12EDF │ │ │ │ │ +C862215AD6C432CF345FE701757E4EBB8C65F46912CB0F4DEF53672F7298D8F7 │ │ │ │ │ +EE51A9C5DE689A8D36956B7F0410893C0998DB03B73B4024CB046F8F6B32E07F │ │ │ │ │ +CD28A68AFB7152E45F1021DCD520D8A429FCDCA4B8054BAF0B48C4443280F198 │ │ │ │ │ +3360B078E6DEC37772DA8B629CFFD1534E8AA10E26B0BC58E92B9BF280C8EE45 │ │ │ │ │ +618EECDE904249F5A2010DC55D1028DFF4F058260B2B0A46541D6157970F44BD │ │ │ │ │ +D7483802D56A81184119DDBC914E8E394CBEEB506B61BB1CE2A3465252E5D8A3 │ │ │ │ │ +6BDD2D067E69D4ECEFC7D5568378F5F8B38EAFF138014185FE19DF7358A7A780 │ │ │ │ │ +3BE0E2CCD1561113F2F2319BDB503230DD0866121604710CEBBAA659ABFC010B │ │ │ │ │ +5CC40E5807F461D87E75BDC6AD96BCEF62AF668D48D7A76D08B57650F35CF609 │ │ │ │ │ +C0F791AEBEB75E29FA69596BAB419804AECE0F0238AAE64A6C13A22EBF4E3EAC │ │ │ │ │ +3570DECE85F54064486B2364D63E94FEB7C16350CDA318510A45C8848DB470ED │ │ │ │ │ +BFAFD2365681D65CFF3E6C1B4B7C8AE3066F96E819D05B97F3A6C2BFF8A72978 │ │ │ │ │ +EEB7F632FF604AD003A3CCA5A0465D53033A646E8082D3491EDECA3DA1A0E1BB │ │ │ │ │ +64BF36946520438D2EE72FA9EB1CEEDF56510AADA55A8DE280E23C904E0810FA │ │ │ │ │ +A3177CF684F06A4042DE4CD4AB21E2F0616153BEEE58EBBD89911FA43BC52969 │ │ │ │ │ +230C8137DB34C13E147B06C7A3875A931E1AC127E7D3EA0DF8346B6971F80901 │ │ │ │ │ +DC37F2DE1A0B81FD93CA3B5EB9B29ECABA1492901B1BA261DAB872FB3431C718 │ │ │ │ │ +9C9CDA7864908CD773864908DEB44E343221C2C4C335341789A46325D94C767C │ │ │ │ │ +740E3B60CE6D452A3A665967F568671FD7DD460B404B9C3D2EDCD47A336AA2C7 │ │ │ │ │ +BB0B1AC3823978F610629EF7AB526098A7EE7076F50A146D8134BA2DEC1B8ACF │ │ │ │ │ +68A7E4A9B7BE17FB71480516F2D6A8866E56CFD7C7A41311F48DDDD9887DACB8 │ │ │ │ │ +73FDAF5F25E956AFB0A9D530DE2E1128F006AAC9A78715BA2F90C8FED3729BFA │ │ │ │ │ +BDDD4098F870A27A91A0CB540D166FF86A442E95C9C361FD23378A2A138EAFB8 │ │ │ │ │ +D7050B486E1CB95068D890BCCD669456F3385C8F1793CE545099421368FE0F46 │ │ │ │ │ +53137AD2B65030B19CE7FF6B1669DB7A3C440AEF27149780E36C7097B7A8B71B │ │ │ │ │ +8789EECFA9A70B1F9695BB5D94E9A7D341291C1CA1BDEF4BE3EFCB8234CE9FFD │ │ │ │ │ +E1C4963CF919780129FA60162FEAA8AE97328F4BA14D949057A3EE74214F2D29 │ │ │ │ │ +51E7BE584446F6702F39957AE455CF8AF0C36AADAA39B53553D923CA5E9D4988 │ │ │ │ │ +76701B4F77DAE5185AC29900 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -3944,38 +3947,38 @@ │ │ │ │ │ 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 23[45 19[83 18[25 5[45 1[45 45 45 3[25 │ │ │ │ │ -44[{}9 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 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 133[48 48 48 48 48 48 48 48 48 1[48 48 48 48 48 │ │ │ │ │ -2[48 48 48 48 48 48 48 48 48 1[48 1[48 1[48 1[48 48 1[48 │ │ │ │ │ -48 48 48 48 1[48 48 48 48 48 1[48 48 48 48 48 48 48 48 │ │ │ │ │ -48 48 2[48 2[48 12[48 48 48 1[48 48 48 1[48 38[{}57 90.9091 │ │ │ │ │ -/CMTT10 rf /Fk 131[91 1[40 48 48 66 48 51 35 36 36 48 │ │ │ │ │ -51 45 51 76 25 48 28 25 51 45 28 40 51 40 51 45 9[93 │ │ │ │ │ -2[66 3[62 71 2[57 2[33 3[62 2[64 4[71 1[25 5[45 45 45 │ │ │ │ │ -45 45 2[25 30 25 2[35 35 25 24[76 1[51 53 11[{}51 90.9091 │ │ │ │ │ -/CMR10 rf /Fl 133[103 123 123 3[90 1[95 2[116 129 194 │ │ │ │ │ -65 2[65 3[106 129 103 129 113 13[129 9[87 2[146 11[65 │ │ │ │ │ -58[{}19 206.559 /CMBX12 rf /Fm 134[106 11[106 9[106 106 │ │ │ │ │ -106 13[106 12[106 70[{}7 206.559 /CMTT12 rf /Fn 139[75 │ │ │ │ │ -1[79 1[108 7[108 2[88 3[94 29[140 17[97 49[{}8 172.188 │ │ │ │ │ -/CMBX12 rf end │ │ │ │ │ +rf /Fc 138[51 6[51 8[40 26[47 15[25 4[45 1[45 45 1[45 │ │ │ │ │ +3[25 44[{}10 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 │ │ │ │ │ +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 133[48 48 48 48 48 48 48 48 48 │ │ │ │ │ +1[48 48 48 48 48 2[48 48 48 48 48 48 48 48 48 1[48 1[48 │ │ │ │ │ +1[48 1[48 48 1[48 48 48 48 48 1[48 48 48 48 48 1[48 48 │ │ │ │ │ +48 48 48 48 48 48 48 48 2[48 2[48 12[48 48 48 1[48 48 │ │ │ │ │ +48 1[48 38[{}57 90.9091 /CMTT10 rf /Fk 131[91 1[40 48 │ │ │ │ │ +48 66 48 51 35 36 36 48 51 45 51 76 25 48 28 25 51 45 │ │ │ │ │ +28 40 51 40 51 45 9[93 2[66 3[62 71 2[57 2[33 3[62 2[64 │ │ │ │ │ +4[71 1[25 5[45 45 45 45 45 2[25 30 25 2[35 35 25 24[76 │ │ │ │ │ +1[51 53 11[{}51 90.9091 /CMR10 rf /Fl 133[103 123 123 │ │ │ │ │ +3[90 1[95 2[116 129 194 65 2[65 3[106 129 103 129 113 │ │ │ │ │ +13[129 9[87 2[146 11[65 58[{}19 206.559 /CMBX12 rf /Fm │ │ │ │ │ +134[106 11[106 9[106 106 106 13[106 12[106 70[{}7 206.559 │ │ │ │ │ +/CMTT12 rf /Fn 139[75 1[79 1[108 7[108 2[88 3[94 29[140 │ │ │ │ │ +17[97 49[{}8 172.188 /CMBX12 rf end │ │ │ │ │ %%EndProlog │ │ │ │ │ %%BeginSetup │ │ │ │ │ %%Feature: *Resolution 600dpi │ │ │ │ │ TeXDict begin │ │ │ │ │ %%BeginPaperSize: a4 │ │ │ │ │ /setpagedevice where │ │ │ │ │ { pop << /PageSize [595 842] >> setpagedevice } │ │ │ │ │ @@ -4041,17 +4044,17 @@ │ │ │ │ │ (ciated)g(with)g(the)f Fj(SymbFac)f Fk(ob)5 b(ject.)0 │ │ │ │ │ 5073 y Fe(1.2)135 b(Protot)l(yp)t(es)46 b(and)f(descriptions)g(of)g │ │ │ │ │ Fd(SymbFac)d Fe(metho)t(ds)0 5294 y Fk(This)f(section)j(con)m(tains)f │ │ │ │ │ (brief)f(descriptions)g(including)f(protot)m(yp)s(es)i(of)f(all)h │ │ │ │ │ (metho)s(ds)f(that)h(b)s(elong)f(to)h(the)0 5407 y Fj(SymbFac)28 │ │ │ │ │ b Fk(ob)5 b(ject.)1927 5656 y(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fk(2)p 136 100 1154 4 v │ │ │ │ │ -1336 w Fj(SymbFac)28 b Fc(:)41 b Fi(DRAFT)30 b Fc(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2746 100 V 0 399 a Fb(1.2.1)112 b(Sym)m(b)s(olic)39 b(factorization)f │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fk(2)p 136 100 1147 4 v │ │ │ │ │ +1329 w Fj(SymbFac)28 b Fc(:)41 b Fi(DRAFT)30 b Fc(June)g(3,)h(2025)p │ │ │ │ │ +2753 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) │ │ │ │ │ @@ -4135,28 +4138,27 @@ │ │ │ │ │ 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 1154 4 v 1335 100 a Fj(SymbFac)29 │ │ │ │ │ -b Fc(:)40 b Fi(DRAFT)122 b Fc(Ma)m(y)31 b(1,)g(2024)p │ │ │ │ │ -2699 100 V 1154 w Fk(3)337 399 y Fa(\210)45 b Fk(The)30 │ │ │ │ │ -b Fj(msglvl)f Fk(parameter)i(determines)f(the)h(amoun)m(t)f(of)h │ │ │ │ │ -(output.)337 557 y Fa(\210)45 b Fk(The)33 b Fj(msgFile)e │ │ │ │ │ -Fk(parameter)j(determines)f(the)h(message)g(\014le)f(|)h(if)f │ │ │ │ │ -Fj(msgFile)e Fk(is)i Fj(stdout)p Fk(,)g(then)g(the)427 │ │ │ │ │ -670 y(message)27 b(\014le)f(is)g Fi(stdout)p Fk(,)i(otherwise)e(a)h │ │ │ │ │ -(\014le)f(is)f(op)s(ened)g(with)h Fi(app)-5 b(end)28 │ │ │ │ │ -b Fk(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 783 │ │ │ │ │ -y(data.)337 941 y Fa(\210)45 b Fk(The)23 b Fj(inETreeFile)d │ │ │ │ │ -Fk(parameter)k(is)f(the)h(input)e(\014le)i(for)f(the)g │ │ │ │ │ -Fj(ETree)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 1054 y Fj(*.etreef)18 b Fk(or)j Fj(*.etreeb)p │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1147 4 v 1328 100 a Fj(SymbFac)29 │ │ │ │ │ +b Fc(:)41 b Fi(DRAFT)121 b Fc(June)29 b(3,)i(2025)p 2706 │ │ │ │ │ +100 V 1147 w Fk(3)337 399 y Fa(\210)45 b Fk(The)30 b │ │ │ │ │ +Fj(msglvl)f Fk(parameter)i(determines)f(the)h(amoun)m(t)f(of)h(output.) │ │ │ │ │ +337 557 y Fa(\210)45 b Fk(The)33 b Fj(msgFile)e Fk(parameter)j │ │ │ │ │ +(determines)f(the)h(message)g(\014le)f(|)h(if)f Fj(msgFile)e │ │ │ │ │ +Fk(is)i Fj(stdout)p Fk(,)g(then)g(the)427 670 y(message)27 │ │ │ │ │ +b(\014le)f(is)g Fi(stdout)p Fk(,)i(otherwise)e(a)h(\014le)f(is)f(op)s │ │ │ │ │ +(ened)g(with)h Fi(app)-5 b(end)28 b Fk(status)e(to)g(receiv)m(e)i(an)m │ │ │ │ │ +(y)e(output)427 783 y(data.)337 941 y Fa(\210)45 b Fk(The)23 │ │ │ │ │ +b Fj(inETreeFile)d Fk(parameter)k(is)f(the)h(input)e(\014le)i(for)f │ │ │ │ │ +(the)g Fj(ETree)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 1054 y Fj(*.etreef)18 b Fk(or)j Fj(*.etreeb)p │ │ │ │ │ Fk(.)35 b(The)19 b Fj(ETree)g Fk(ob)5 b(ject)21 b(is)g(read)f(from)g │ │ │ │ │ (the)g(\014le)h(via)f(the)h Fj(ETree)p 3368 1054 29 4 │ │ │ │ │ v 33 w(readFromFile\(\))427 1167 y Fk(metho)s(d.)337 │ │ │ │ │ 1325 y Fa(\210)45 b Fk(The)c Fj(inInpMtxFile)c Fk(parameter)k(is)g(the) │ │ │ │ │ g(input)f(\014le)h(for)g(the)g Fj(InpMtx)e Fk(ob)5 b(ject.)73 │ │ │ │ │ b(It)41 b(m)m(ust)g(b)s(e)f(of)427 1438 y(the)h(form)g │ │ │ │ │ Fj(*.inpmtxf)d Fk(or)j Fj(*.inpmtxb)p Fk(.)70 b(The)41 │ │ │ │ │ @@ -4226,17 +4228,17 @@ │ │ │ │ │ (input)e(\014le)i(for)f(the)g Fj(Graph)f Fk(ob)5 b(ject.)39 │ │ │ │ │ b(It)24 b(m)m(ust)f(b)s(e)f(of)i(the)f(form)427 5294 │ │ │ │ │ y Fj(*.graphf)18 b Fk(or)j Fj(*.graphb)p Fk(.)35 b(The)19 │ │ │ │ │ b Fj(Graph)g Fk(ob)5 b(ject)21 b(is)g(read)f(from)g(the)g(\014le)h(via) │ │ │ │ │ f(the)h Fj(Graph)p 3368 5294 V 33 w(readFromFile\(\))427 │ │ │ │ │ 5407 y Fk(metho)s(d.)p eop end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fk(4)p 136 100 1154 4 v │ │ │ │ │ -1336 w Fj(SymbFac)28 b Fc(:)41 b Fi(DRAFT)30 b Fc(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2746 100 V 337 399 a Fa(\210)45 b Fk(The)24 b Fj(outETreeFile)d │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fk(4)p 136 100 1147 4 v │ │ │ │ │ +1329 w Fj(SymbFac)28 b Fc(:)41 b Fi(DRAFT)30 b Fc(June)g(3,)h(2025)p │ │ │ │ │ +2753 100 V 337 399 a Fa(\210)45 b Fk(The)24 b Fj(outETreeFile)d │ │ │ │ │ Fk(parameter)k(is)f(the)h(output)f(\014le)g(for)g(the)h │ │ │ │ │ Fj(ETree)d Fk(ob)5 b(ject.)40 b(If)24 b Fj(outETreeFile)d │ │ │ │ │ Fk(is)427 511 y Fj(none)g Fk(then)h(the)g Fj(ETree)f │ │ │ │ │ Fk(ob)5 b(ject)22 b(is)g(not)h(written)f(to)g(a)h(\014le.)38 │ │ │ │ │ b(Otherwise,)23 b(the)g Fj(ETree)p 3253 511 29 4 v 33 │ │ │ │ │ w(writeToFile\(\))427 624 y Fk(metho)s(d)30 b(is)h(called)h(to)f(write) │ │ │ │ │ g(the)g(ob)5 b(ject)31 b(to)h(a)f(formatted)g(\014le)g(\(if)g │ │ │ │ │ ├── ps2ascii {} │ │ │ │ │ │ @@ -22,15 +22,15 @@ │ │ │ │ │ │ to have chevron coordinate type and storage mode must be by vectors. │ │ │ │ │ │ 1.1 Data Structure │ │ │ │ │ │ There is no struct or data associated with the SymbFac object. │ │ │ │ │ │ 1.2 Prototypes and descriptions of SymbFac methods │ │ │ │ │ │ This section contains brief descriptions including prototypes of all methods that belong to the │ │ │ │ │ │ SymbFac object. │ │ │ │ │ │ 1 │ │ │ │ │ │ - 2 SymbFac : DRAFT May 1, 2024 │ │ │ │ │ │ + 2 SymbFac : DRAFT June 3, 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 May 1, 2024 3 │ │ │ │ │ │ + SymbFac : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 4 SymbFac : DRAFT June 3, 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.05.01:0545 │ │ │ │ │ +%DVIPSSource: TeX output 2025.06.03:1221 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -2227,21 +2227,22 @@ │ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ │ /UnderlineThickness 50 def │ │ │ │ │ end readonly def │ │ │ │ │ /Encoding 256 array │ │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ │ dup 44 /comma put │ │ │ │ │ dup 48 /zero put │ │ │ │ │ -dup 49 /one put │ │ │ │ │ dup 50 /two put │ │ │ │ │ -dup 52 /four put │ │ │ │ │ +dup 51 /three put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 77 /M put │ │ │ │ │ -dup 97 /a put │ │ │ │ │ -dup 121 /y put │ │ │ │ │ +dup 74 /J put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ +dup 110 /n put │ │ │ │ │ +dup 117 /u put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ │ @@ -2422,68 +2423,70 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004ACD1870 │ │ │ │ │ -A5EA947858F5795870BFE1343AD803FB854BF8F5A4E794E8EC57BE41DB5B8734 │ │ │ │ │ -13E47950F29A81EA0C81EA798863883D7F41F78325CA190CBBFFE822AE494550 │ │ │ │ │ -4BE83703071FC9512D128927AF3F63CEF8F86ABE1E15D7B4DDD39576E7DFF45E │ │ │ │ │ -3CB4115AAB1830DE8647B915DB4BEBEB5235C281E098B899BAB951D8D5798F01 │ │ │ │ │ -7F7C47336D31438E5126738AFEAB29E9A7CBE06DE4DD604477B542D2620DFD58 │ │ │ │ │ -28FE34238572F23C5A8EB7ACEE1E154DA13FC1A5AA67A3BA8C5CDFB2B80312C9 │ │ │ │ │ -BC9FAE56D08DDFA9498E6EF0D0F6BD18B3923E0B670B0740528BC843610736CB │ │ │ │ │ -80228C105C2F72C3C22D610C3D8C268DEEA2AEEE3221E198E79FE2966487360C │ │ │ │ │ -84AE08AC326F48B21447652121B1EB68AF857B8628F27BB4ED00F273E0DD044A │ │ │ │ │ -7D11A5BFAAC0A82328444CC9DD90167681B07D55CE28655F40C21250A226DEAB │ │ │ │ │ -2D46FFB680CB9242BE192AC0E55A44D45709FA6DE638C130D92C4E9B07BC3D61 │ │ │ │ │ -25CC2F0A7ED4F3574242FFE4461272EB1401266EEF551E0E2B0EF51FA8F250EC │ │ │ │ │ -FD9AFB6F5A0CC442B566BC24400133E3E9B9A9FC801CEF284FD2B3ECA43421FA │ │ │ │ │ -51E5D1EFE7BEAA96658362C438A0A5A6DCBC664A85EF88037B42355195B9D19C │ │ │ │ │ -7961D5F63B123451B298CD52C144FCD4F3641A823FBA14605E2DFD845E89102C │ │ │ │ │ -4E345CFD80E3EE6F097095A84C941FFC91B234F3615E4EE4C5D564284656E364 │ │ │ │ │ -AB9C4D1DE05F8FD065CA6064893F0CF3A3A501D59EF6568D05D818A010D06518 │ │ │ │ │ -E2C20418ADD1E652867F265084A27A5FE0C32213C59FFC3A84EDC89382521E5B │ │ │ │ │ -8AF66D76601F83C5C33CC9CF968C77B66F1FA074AC3DAD8E453C9264D03969EF │ │ │ │ │ -9E387BB3BEAA4BF0A9D88BA2CE6094E8996A3752A657E322A57AF006444BF516 │ │ │ │ │ -501C43CAA1BA7F16A3B6E4D3EBDECCCC19564DF18FB68194C132238A5441A21A │ │ │ │ │ -F52285CA1CA94A4BEC61EB509FA35EA5E393D662D938F4291F37EB7C2D5815BE │ │ │ │ │ -446813E1CFD06FFFFF2C4355C9DAFA48E765F4CC5DE4B9E37CFFB75E7A0B6F4B │ │ │ │ │ -4E412496F9C27DF4BDD90A869F0EBD81A57AE0B84051450A5A3E06CB9930DB2C │ │ │ │ │ -7C2DDB774BE870AEFCC9F4F067BE243FF3FD4B5C71B96C607DC4975973AF2650 │ │ │ │ │ -E7DF2BE3523A370EEDD07B5456B96E372ED10510CE677C044E609F21E93652FD │ │ │ │ │ -33CE612F587530D12214A3719CDB170C315B5D8763D5D4C67B5CAE90309E77AC │ │ │ │ │ -B45EB356C13A7BDE0D7320A9849CA357E30D7CF1085FFD70071932C3180AFC28 │ │ │ │ │ -B093016BA3F49A3878C34BB4A8727A441EB6CFC1A73F2313A7BF8D32EDF27E62 │ │ │ │ │ -EBEBC058FBA80B136FD2DE05C673B66482224ECEC63EDFB519AC13B5CC6624A6 │ │ │ │ │ -B3FD79037DA3851E93A386115852DBA88B176F21EDDB5386DC7C993C4210B28F │ │ │ │ │ -438131A586E34A09724E7CE60139F8247BFF14D2674805B3BD454C134728A43E │ │ │ │ │ -139E0AF71A7AC5CE42041EC83FD454B00AD29959FCF007789FFAF2D3492DCA4B │ │ │ │ │ -566EAFE97591ABC51CD0CD9BCD64E285FB823E41AA817E96B2B224005DAA4E15 │ │ │ │ │ -2141DB436B9D3FBA4EE4C876FD19A2E5133106FE2B9F704CB9614FCDC91B7950 │ │ │ │ │ -57053F45A5ED993B48189AAFAD5289F97AE2B0AEB5606579F6BD75F743EDB5B6 │ │ │ │ │ -5AA8F8A64CE507A47325081B3A013DB1BD596CDD3A83D2F29B070D6F9C57496E │ │ │ │ │ -14DF3F0F731C3BB00F2CE3D4BBACF1320322195D1DEA7A545BB4725BD1C6EC3D │ │ │ │ │ -63250C72B897741F8599D9D9BD2FB50EC80EFF2ECD6CE6603E95AABB45462ACF │ │ │ │ │ -12B005EE5979B6B05BCE9B97061686102349142A3CCC26D57F2A3283DD8B6E2A │ │ │ │ │ -98885E48C0D4A1A5C9612EDCB3B3D265E9B8CCCCA5D99F07F96C15B27D6A161F │ │ │ │ │ -936599E503C2859927201CACC31581AB7AB84F9EC9FFADC239F01DCC55940AB7 │ │ │ │ │ -FA884AA1EB6494C8E53DAD66E75A317428ACF9D943A74683BF547958F67D9E36 │ │ │ │ │ -F985EED50DEBCF255756A821927CB73848DCF167E96E975E959DE27FE7BA4FBA │ │ │ │ │ -D0EFC003F019D87572D6F9C73FC5B880C3EEDB7EF98E5EC3D25D6FE0015A6590 │ │ │ │ │ -E3C6EE632D7F6558B914609A8829CD1DEAB83A3F1207D5C3AAC9EAEA9DE1B4F8 │ │ │ │ │ -2375C5D4F630BCE13475F941ED2324D2CD4DCF2285298EAA4FFF89433D853860 │ │ │ │ │ -A974A9FC0808580FBDE7D02EDBB3D8C65BD3109AE8B359E96BFB7E21C696F440 │ │ │ │ │ -312B0CCAD810BF070DF8FC281E8198EB20A7FF9C9BCD291D74BC75EE46799485 │ │ │ │ │ -1AB2AE36B7E525034D146A856AF3BD9057A0033C08B606B89DD130548950C93D │ │ │ │ │ -94A8C92C47A34A791B1C108D2F36E899B79358B8081CCFC3D1A2F0521E4E2AE4 │ │ │ │ │ -7F500D6F2A53E5393E44201287225912590ABC738E8726622B67C3425639CCFB │ │ │ │ │ -F450B78A4918 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004B9BA1CC │ │ │ │ │ +580D3C6BDA4DC1B80B4365F1C80512453FC5316EC2D928FB731C3D6403E3C18B │ │ │ │ │ +E8424D644DF5E9A2134229C5C91CA68DB8E85BA2BB40F538F585DA6FA4037718 │ │ │ │ │ +B8053EBBA1E765346BCD5BDAA6C38115D31611D8A87A2238C145F2DA2F92E4DF │ │ │ │ │ +3987BD9C4D2A3D460E8941A68B125BCD9EE4F9FD262C4C8A71F47A2C81975635 │ │ │ │ │ +F1B981C274C53FA2ACCDE4C9D0A7C62D6C1EFF91CFC6712CA6A9F333C9564FCB │ │ │ │ │ +2A70F0AD715A79B10A08AB069E2A3C93BC0AED19D0CA10134B8DDDE8AF548DB2 │ │ │ │ │ +3A4AAA9C29682CF135BB767DAA16169A127EB50A7EECEB6480CF56A7D0F8AC56 │ │ │ │ │ +4A5090B3D75A790372886AF568D94C8165975A05BFBFDF1FFBA45F70700BB9E0 │ │ │ │ │ +57F3249EF9E9C8AD9CBCF6E4FD592DC4CDD2D7864F7C8A3FA6FC44C25C0CE7E1 │ │ │ │ │ +299F8A90B32B75DEA28917531621E1E7E0ECEE9E01665DEE99FBCF3EC3F30686 │ │ │ │ │ +513D7CBA745E660502603865D5A3E82D24B3F94B2884B21DC53AED87F49380E0 │ │ │ │ │ +68EE79C580931308DA762670C1F86F07FFB479773CD9C5DE6F22980DEC973D1C │ │ │ │ │ +A1E162D73932561BAAB24DE51DC8708291B666B36BABCA1FEDB6DD9C22572914 │ │ │ │ │ +7194DA044319F362452D53DD4D9A59134838E540F1E23805CEF53FF4F7519385 │ │ │ │ │ +1FAE3061F94369FEB1232BDA2E2A281E6972FB4524EFA37A598E7CDC097683EA │ │ │ │ │ +1B609952AEC0799B4711AAAB22D6B1D5CC729DE70897FDDC48AF0A12E40FFE30 │ │ │ │ │ +6528C601E68E8CFA4BBF897CF89DB712DE108DD1F084EFD917BFD9A70A74EB8F │ │ │ │ │ +D0D5B43CCC30373A5E871F18A969D01C69C2B4377622A0C8C4D7C4C28DDE5586 │ │ │ │ │ +BD17D5D640A6F396BD41993BD1932EE10953847F82F7BB36480B67A4F69F0763 │ │ │ │ │ +69423D1803B7BB60594ABEEE9578076639B84D8323F56104438803D45402FEE3 │ │ │ │ │ +045DAB16C4459DA9BBE01D0385CC771FB8DABDD8A9D280C18553F92FE6591CFD │ │ │ │ │ +26B82F28E6673BD823598D3F6CE03BEE04D9A21ED908DFC4F640227C148F133D │ │ │ │ │ +D32113275297C16EBCC9028AFD9102DE50E9CF67E7CF8C42BB8E73D1DAF8A5E2 │ │ │ │ │ +EF5979426229664A990DEF980A7038D2F229789D4F6EDBE1FB81BEC1A1BB14D7 │ │ │ │ │ +882515C62660E8877BE942712D57B86A2E19995AF087DECB7FD5208583C020AE │ │ │ │ │ +FEC86A2826530AD855006225300E4655F443C9360A8BAC96B5B096DDC9B12EDF │ │ │ │ │ +C862215AD6C432CF345FE701757E4EBB8C65F46912CB0F4DEF53672F7298D8F7 │ │ │ │ │ +EE51A9C5DE689A8D36956B7F0410893C0998DB03B73B4024CB046F8F6B32E07F │ │ │ │ │ +CD28A68AFB7152E45F1021DCD520D8A429FCDCA4B8054BAF0B48C4443280F198 │ │ │ │ │ +3360B078E6DEC37772DA8B629CFFD1534E8AA10E26B0BC58E92B9BF280C8EE45 │ │ │ │ │ +618EECDE904249F5A2010DC55D1028DFF4F058260B2B0A46541D6157970F44BD │ │ │ │ │ +D7483802D56A81184119DDBC914E8E394CBEEB506B61BB1CE2A3465252E5D8A3 │ │ │ │ │ +6BDD2D067E69D4ECEFC7D5568378F5F8B38EAFF138014185FE19DF7358A7A780 │ │ │ │ │ +3BE0E2CCD1561113F2F2319BDB503230DD0866121604710CEBBAA659ABFC010B │ │ │ │ │ +5CC40E5807F461D87E75BDC6AD96BCEF62AF668D48D7A76D08B57650F35CF609 │ │ │ │ │ +C0F791AEBEB75E29FA69596BAB419804AECE0F0238AAE64A6C13A22EBF4E3EAC │ │ │ │ │ +3570DECE85F54064486B2364D63E94FEB7C16350CDA318510A45C8848DB470ED │ │ │ │ │ +BFAFD2365681D65CFF3E6C1B4B7C8AE3066F96E819D05B97F3A6C2BFF8A72978 │ │ │ │ │ +EEB7F632FF604AD003A3CCA5A0465D53033A646E8082D3491EDECA3DA1A0E1BB │ │ │ │ │ +64BF36946520438D2EE72FA9EB1CEEDF56510AADA55A8DE280E23C904E0810FA │ │ │ │ │ +A3177CF684F06A4042DE4CD4AB21E2F0616153BEEE58EBBD89911FA43BC52969 │ │ │ │ │ +230C8137DB34C13E147B06C7A3875A931E1AC127E7D3EA0DF8346B6971F80901 │ │ │ │ │ +DC37F2DE1A0B81FD93CA3B5EB9B29ECABA1492901B1BA261DAB872FB3431C718 │ │ │ │ │ +9C9CDA7864908CD773864908DEB44E343221C2C4C335341789A46325D94C767C │ │ │ │ │ +740E3B60CE6D452A3A665967F568671FD7DD460B404B9C3D2EDCD47A336AA2C7 │ │ │ │ │ +BB0B1AC3823978F610629EF7AB526098A7EE7076F50A146D8134BA2DEC1B8ACF │ │ │ │ │ +68A7E4A9B7BE17FB71480516F2D6A8866E56CFD7C7A41311F48DDDD9887DACB8 │ │ │ │ │ +73FDAF5F25E956AFB0A9D530DE2E1128F006AAC9A78715BA2F90C8FED3729BFA │ │ │ │ │ +BDDD4098F870A27A91A0CB540D166FF86A442E95C9C361FD23378A2A138EAFB8 │ │ │ │ │ +D7050B486E1CB95068D890BCCD669456F3385C8F1793CE545099421368FE0F46 │ │ │ │ │ +53137AD2B65030B19CE7FF6B1669DB7A3C440AEF27149780E36C7097B7A8B71B │ │ │ │ │ +8789EECFA9A70B1F9695BB5D94E9A7D341291C1CA1BDEF4BE3EFCB8234CE9FFD │ │ │ │ │ +E1C4963CF919780129FA60162FEAA8AE97328F4BA14D949057A3EE74214F2D29 │ │ │ │ │ +51E7BE584446F6702F39957AE455CF8AF0C36AADAA39B53553D923CA5E9D4988 │ │ │ │ │ +76701B4F77DAE5185AC29900 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -4928,17 +4931,17 @@ │ │ │ │ │ @start /Fa 173[73 13[75 17[50 50 50 48[{}5 90.9091 /CMCSC10 │ │ │ │ │ rf /Fb 146[62 3[24 105[{}2 66.4176 /CMMI8 rf /Fc 206[35 │ │ │ │ │ 5[55 43[{}2 66.4176 /CMR8 rf /Fd 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 23[45 19[83 │ │ │ │ │ -18[25 5[45 1[45 45 45 3[25 44[{}9 90.9091 /CMSL10 rf │ │ │ │ │ -/Fh 134[45 52 1[44 7[55 80 3[31 42[71 1[71 25 25 58[{}10 │ │ │ │ │ +16[62 84[{}3 119.552 /CMTT12 rf /Fg 138[51 6[51 8[40 │ │ │ │ │ +26[47 15[25 4[45 1[45 45 1[45 3[25 44[{}10 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 │ │ │ │ │ /tieaccentlowercase.new/tieaccentcapital.new/.notdef/afii61664.asc/uni2422 3 │ │ │ │ │ @@ -5060,17 +5063,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 1226 4 v │ │ │ │ │ -1407 w Fm(Tree)30 b Fg(:)40 b Fl(DRAFT)31 b Fg(Ma)m(y)g(1,)g(2024)p │ │ │ │ │ -2675 100 V 0 399 a Fj(1.2)135 b(Protot)l(yp)t(es)46 b(and)f │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fn(2)p 136 100 1219 4 v │ │ │ │ │ +1401 w Fm(Tree)29 b Fg(:)40 b Fl(DRAFT)31 b Fg(June)e(3,)i(2025)p │ │ │ │ │ +2682 100 V 0 399 a Fj(1.2)135 b(Protot)l(yp)t(es)46 b(and)f │ │ │ │ │ (descriptions)g(of)g Ff(Tree)e Fj(metho)t(ds)0 628 y │ │ │ │ │ Fn(This)25 b(section)h(con)m(tains)h(brief)e(descriptions)h(including)f │ │ │ │ │ (protot)m(yp)s(es)h(of)f(all)i(metho)s(ds)d(that)j(b)s(elong)e(to)h │ │ │ │ │ (the)g Fm(Tree)0 741 y Fn(ob)5 b(ject.)0 1013 y Fe(1.2.1)112 │ │ │ │ │ b(Basic)38 b(metho)s(ds)0 1210 y Fn(As)d(usual,)h(there)f(are)g(four)f │ │ │ │ │ (basic)h(metho)s(ds)g(to)g(supp)s(ort)e(ob)5 b(ject)36 │ │ │ │ │ b(creation,)i(setting)e(default)f(\014elds,)h(clearing)0 │ │ │ │ │ @@ -5119,19 +5122,19 @@ │ │ │ │ │ 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 1226 4 v 1407 100 a Fm(Tree)29 │ │ │ │ │ -b Fg(:)41 b Fl(DRAFT)121 b Fg(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2628 100 V 1226 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 │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1219 4 v 1400 100 a Fm(Tree)29 │ │ │ │ │ +b Fg(:)41 b Fl(DRAFT)121 b Fg(June)29 b(3,)i(2025)p 2634 │ │ │ │ │ +100 V 1219 w Fn(3)111 399 y(4.)46 b Fm(int)h(*)h(Tree_fch)d(\()j(Tree)e │ │ │ │ │ +(*tree)h(\))g(;)227 548 y Fn(This)30 b(metho)s(d)g(returns)f(a)i(p)s │ │ │ │ │ +(oin)m(ter)f(to)h(the)g(\014rst)e(c)m(hild)i(v)m(ector.)227 │ │ │ │ │ 698 y Fl(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fn(If)30 │ │ │ │ │ b Fm(tree)g Fn(is)g Fm(NULL)p Fn(,)f(an)i(error)f(message)h(is)g(prin)m │ │ │ │ │ (ted)f(and)f(the)i(program)f(exits.)111 885 y(5.)46 b │ │ │ │ │ Fm(int)h(*)h(Tree_sib)d(\()j(Tree)e(*tree)h(\))g(;)227 │ │ │ │ │ 1035 y Fn(This)30 b(metho)s(d)g(returns)f(a)i(p)s(oin)m(ter)f(to)h(the) │ │ │ │ │ g(sibling)f(v)m(ector.)227 1185 y Fl(Err)-5 b(or)34 b(che)-5 │ │ │ │ │ b(cking:)40 b Fn(If)30 b Fm(tree)g Fn(is)g Fm(NULL)p │ │ │ │ │ @@ -5187,17 +5190,17 @@ │ │ │ │ │ 4996 y Fl(R)-5 b(eturn)34 b(c)-5 b(o)g(des:)1030 5193 │ │ │ │ │ y Fn(1)100 b(normal)31 b(return)1000 5306 y(-1)100 b │ │ │ │ │ Fm(subtree)29 b Fn(is)h Fm(NULL)1000 5419 y Fn(-2)100 │ │ │ │ │ b Fm(nodeidsIV)28 b Fn(is)i Fm(NULL)2138 5250 y Fn(-3)101 │ │ │ │ │ b Fm(tree)29 b Fn(is)h Fm(NULL)2138 5363 y Fn(-4)101 │ │ │ │ │ b Fm(nodeidsIV)27 b Fn(is)k(in)m(v)-5 b(alid)p eop end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fn(4)p 136 100 1226 4 v │ │ │ │ │ -1407 w Fm(Tree)30 b Fg(:)40 b Fl(DRAFT)31 b Fg(Ma)m(y)g(1,)g(2024)p │ │ │ │ │ -2675 100 V 111 399 a Fn(5.)46 b Fm(void)h(Tree_setFchSibRoot)c(\()k │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fn(4)p 136 100 1219 4 v │ │ │ │ │ +1401 w Fm(Tree)29 b Fg(:)40 b Fl(DRAFT)31 b Fg(June)e(3,)i(2025)p │ │ │ │ │ +2682 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 │ │ │ │ │ @@ -5252,19 +5255,19 @@ │ │ │ │ │ (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 1226 4 v 1407 100 a Fm(Tree)29 │ │ │ │ │ -b Fg(:)41 b Fl(DRAFT)121 b Fg(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2628 100 V 1226 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 │ │ │ │ │ +TeXDict begin 5 4 bop 91 100 1219 4 v 1400 100 a Fm(Tree)29 │ │ │ │ │ +b Fg(:)41 b Fl(DRAFT)121 b Fg(June)29 b(3,)i(2025)p 2634 │ │ │ │ │ +100 V 1219 w Fn(5)111 399 y(6.)46 b Fm(int)h(Tree_nleaves)e(\()i(Tree)g │ │ │ │ │ +(*tree)f(\))i(;)227 569 y Fn(This)30 b(metho)s(d)g(returns)f(the)h(n)m │ │ │ │ │ +(um)m(b)s(er)f(of)i(lea)m(v)m(es)i(of)d(the)h(tree.)227 │ │ │ │ │ 740 y Fl(Err)-5 b(or)45 b(che)-5 b(cking:)64 b Fn(If)41 │ │ │ │ │ b Fm(tree)g Fn(is)h Fm(NULL)p Fn(,)f(or)h(if)h Fm(tree->n)i(<)j(1)p │ │ │ │ │ Fn(,)d(an)d(error)f(message)j(is)e(prin)m(ted)f(and)h(the)227 │ │ │ │ │ 853 y(program)30 b(exits.)111 1082 y(7.)46 b Fm(int)h(Tree_nroots)e(\() │ │ │ │ │ i(Tree)g(*tree)f(\))i(;)227 1253 y Fn(This)30 b(metho)s(d)g(returns)f │ │ │ │ │ (the)h(n)m(um)m(b)s(er)f(of)i(ro)s(ots)g(of)f(the)h(tree)g(\(really)g │ │ │ │ │ (a)g(forest\).)227 1424 y Fl(Err)-5 b(or)45 b(che)-5 │ │ │ │ │ @@ -5311,17 +5314,17 @@ │ │ │ │ │ 5123 y(main/Sc)m(h)m(ur)30 b(complemen)m(t)i(partition)f(for)f(a)h │ │ │ │ │ (semi-implicit)h(factorization.)227 5294 y Fl(Err)-5 │ │ │ │ │ b(or)34 b(che)-5 b(cking:)41 b Fn(If)30 b Fm(tree)p Fn(,)g │ │ │ │ │ Fm(gainIV)f Fn(or)h Fm(ptotalgain)e Fn(is)j Fm(NULL)p │ │ │ │ │ Fn(,)f(an)g(error)g(message)i(is)f(prin)m(ted)f(and)g(the)227 │ │ │ │ │ 5407 y(program)g(exits.)p eop end │ │ │ │ │ %%Page: 6 6 │ │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fn(6)p 136 100 1226 4 v │ │ │ │ │ -1407 w Fm(Tree)30 b Fg(:)40 b Fl(DRAFT)31 b Fg(Ma)m(y)g(1,)g(2024)p │ │ │ │ │ -2675 100 V 0 399 a Fe(1.2.5)112 b(Metrics)38 b(metho)s(ds)0 │ │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fn(6)p 136 100 1219 4 v │ │ │ │ │ +1401 w Fm(Tree)29 b Fg(:)40 b Fl(DRAFT)31 b Fg(June)e(3,)i(2025)p │ │ │ │ │ +2682 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 │ │ │ │ │ @@ -5380,17 +5383,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 1226 4 v 1407 100 a Fm(Tree)29 │ │ │ │ │ -b Fg(:)41 b Fl(DRAFT)121 b Fg(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2628 100 V 1226 w Fn(7)0 399 y Fe(1.2.6)112 b(Compression)39 │ │ │ │ │ +TeXDict begin 7 6 bop 91 100 1219 4 v 1400 100 a Fm(Tree)29 │ │ │ │ │ +b Fg(:)41 b Fl(DRAFT)121 b Fg(June)29 b(3,)i(2025)p 2634 │ │ │ │ │ +100 V 1219 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 │ │ │ │ │ @@ -5466,17 +5469,17 @@ │ │ │ │ │ b(.)47 b(If)32 b Fm(u)g Fn(and)g Fm(v)227 5294 y Fn(are)k(siblings,)g │ │ │ │ │ (and)f Fm(u)g Fn(comes)h(b)s(efore)f Fm(v)g Fn(in)g(a)g(p)s(ost-order)g │ │ │ │ │ (tra)m(v)m(ersal,)j(then)d(the)h(w)m(eigh)m(t)h(of)e(the)g(subtree)227 │ │ │ │ │ 5407 y(ro)s(oted)c(at)g Fm(u)f Fn(is)g(as)h(large)h(or)e(larger)h(than) │ │ │ │ │ f(the)h(w)m(eigh)m(t)h(of)e(the)h(subtree)f(ro)s(oted)g(at)h │ │ │ │ │ Fm(v)p Fn(.)p eop end │ │ │ │ │ %%Page: 8 8 │ │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fn(8)p 136 100 1226 4 v │ │ │ │ │ -1407 w Fm(Tree)30 b Fg(:)40 b Fl(DRAFT)31 b Fg(Ma)m(y)g(1,)g(2024)p │ │ │ │ │ -2675 100 V 227 399 a Fl(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fn(8)p 136 100 1219 4 v │ │ │ │ │ +1401 w Fm(Tree)29 b Fg(:)40 b Fl(DRAFT)31 b Fg(June)e(3,)i(2025)p │ │ │ │ │ +2682 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 │ │ │ │ │ @@ -5537,17 +5540,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 1226 4 v 1407 100 a Fm(Tree)29 │ │ │ │ │ -b Fg(:)41 b Fl(DRAFT)121 b Fg(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2628 100 V 1226 w Fn(9)1230 399 y Fm(double)46 b(frame[],)f(double)h │ │ │ │ │ +TeXDict begin 9 8 bop 91 100 1219 4 v 1400 100 a Fm(Tree)29 │ │ │ │ │ +b Fg(:)41 b Fl(DRAFT)121 b Fg(June)29 b(3,)i(2025)p 2634 │ │ │ │ │ +100 V 1219 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 │ │ │ │ │ @@ -5620,17 +5623,17 @@ │ │ │ │ │ b(alue)27 b Fm(1)g Fn(is)f(returned.)39 b(If)26 b(an)g(IO)h(error)f(is) │ │ │ │ │ h(encoun)m(tered)g(from)f Fm(fscanf)p Fn(,)g(zero)h(is)g(returned.)227 │ │ │ │ │ 5407 y Fl(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fn(If)30 │ │ │ │ │ b Fm(tree)g Fn(or)g Fm(fp)g Fn(are)g Fm(NULL)p Fn(,)g(an)g(error)g │ │ │ │ │ (message)i(is)e(prin)m(ted)g(and)g(zero)h(is)f(returned.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 10 10 │ │ │ │ │ -TeXDict begin 10 9 bop 0 100 a Fn(10)p 182 100 1203 4 │ │ │ │ │ -v 1385 w Fm(Tree)29 b Fg(:)41 b Fl(DRAFT)30 b Fg(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2698 100 V 111 399 a Fn(3.)46 b Fm(int)h(Tree_readFromBinaryFile)42 │ │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fn(10)p 182 100 1196 4 │ │ │ │ │ +v 1378 w Fm(Tree)29 b Fg(:)41 b Fl(DRAFT)30 b Fg(June)g(3,)h(2025)p │ │ │ │ │ +2704 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 │ │ │ │ │ @@ -5698,18 +5701,18 @@ │ │ │ │ │ (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 1203 4 v 1384 100 a Fm(Tree)29 │ │ │ │ │ -b Fg(:)41 b Fl(DRAFT)121 b Fg(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2605 100 V 1203 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 │ │ │ │ │ +TeXDict begin 11 10 bop 91 100 1196 4 v 1377 100 a Fm(Tree)30 │ │ │ │ │ +b Fg(:)40 b Fl(DRAFT)121 b Fg(June)30 b(3,)h(2025)p 2612 │ │ │ │ │ +100 V 1196 w Fn(11)337 399 y Fi(\210)45 b Fn(The)33 b │ │ │ │ │ +Fm(msgFile)e Fn(parameter)j(determines)f(the)h(message)g(\014le)f(|)h │ │ │ │ │ (if)f Fm(msgFile)e Fn(is)i Fm(stdout)p Fn(,)g(then)g(the)427 │ │ │ │ │ 511 y(output)c(\014le)h(is)f Fl(stdout)p Fn(,)i(otherwise)f(a)f(\014le) │ │ │ │ │ h(is)f(op)s(ened)g(with)g Fl(app)-5 b(end)31 b Fn(status)e(to)i(receiv) │ │ │ │ │ m(e)g(an)m(y)e(output)427 624 y(data.)337 770 y Fi(\210)45 │ │ │ │ │ b Fn(The)29 b Fm(inTreeFile)e Fn(parameter)j(is)g(the)f(input)g(\014le) │ │ │ │ │ g(for)h(the)f Fm(Tree)g Fn(ob)5 b(ject.)41 b(It)30 b(m)m(ust)f(b)s(e)g │ │ │ │ │ (of)h(the)f(form)427 883 y Fm(*.treef)21 b Fn(or)h Fm(*.treeb)p │ │ │ │ │ @@ -5756,17 +5759,17 @@ │ │ │ │ │ Fn(The)30 b Fm(fontsize)e Fn(parameter)j(is)g(the)f(size)h(of)g(the)f │ │ │ │ │ (fon)m(t)h(to)g(b)s(e)f(used)g(to)h(dra)m(w)f(the)g(no)s(de)g(lab)s │ │ │ │ │ (els.)227 3314 y(Use)g(the)h Fm(doDraw)d Fn(script)h(\014le)h(as)g(an)g │ │ │ │ │ (example.)41 b(F)-8 b(our)31 b(plots)f(of)g(a)g(tree)h(for)e(the)h │ │ │ │ │ Fm(R2D100)e Fn(matrix)j(ordered)227 3427 y(b)m(y)g(nested)f(dissection) │ │ │ │ │ h(are)g(found)e(b)s(elo)m(w.)p eop end │ │ │ │ │ %%Page: 12 12 │ │ │ │ │ -TeXDict begin 12 11 bop 0 100 a Fn(12)p 182 100 1203 │ │ │ │ │ -4 v 1385 w Fm(Tree)29 b Fg(:)41 b Fl(DRAFT)30 b Fg(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2698 100 V 0 571 a Fn(Figure)38 b(1.1:)56 b Fa(R2D100)p │ │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fn(12)p 182 100 1196 │ │ │ │ │ +4 v 1378 w Fm(Tree)29 b Fg(:)41 b Fl(DRAFT)30 b Fg(June)g(3,)h(2025)p │ │ │ │ │ +2704 100 V 0 571 a Fn(Figure)38 b(1.1:)56 b Fa(R2D100)p │ │ │ │ │ Fn(:)f(domain/separator)39 b(tree.)62 b(On)37 b(the)g(left)h │ │ │ │ │ Fm(heightflag)45 b(=)j('H')36 b Fn(and)h Fm(coordflag)45 │ │ │ │ │ b(=)0 684 y('C')p Fn(,)30 b(on)g(the)h(righ)m(t)g Fm(heightflag)45 │ │ │ │ │ b(=)i('D')29 b Fn(and)h Fm(coordflag)45 b(=)j('C')p Fn(.)105 │ │ │ │ │ 2612 y @beginspecial 0 @llx 0 @lly 600 @urx 600 @ury │ │ │ │ │ 2159 @rwi 2159 @rhi @setspecial │ │ │ │ │ %%BeginDocument: ../../Tree/doc/R2D100HC.eps │ │ │ │ │ ├── ps2ascii {} │ │ │ │ │ │ @@ -20,15 +20,15 @@ │ │ │ │ │ │ • int *sib : pointer to sibling vector, size n, entries in the range [-1,n-1] │ │ │ │ │ │ The user should rarely if ever change these five fields. In particular, throughout the code we │ │ │ │ │ │ assume that the Tree object was correctly initialized using one of the three initializer methods. │ │ │ │ │ │ Inside almost every method we check to ensure n > 0. If n > 0 then we assume that the structure │ │ │ │ │ │ was intialized correctly and that the par, fch and sib fields point to storage that was allocated by │ │ │ │ │ │ the initializer method. │ │ │ │ │ │ 1 │ │ │ │ │ │ - 2 Tree : DRAFT May 1, 2024 │ │ │ │ │ │ + 2 Tree : DRAFT June 3, 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 May 1, 2024 3 │ │ │ │ │ │ + Tree : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 4 Tree : DRAFT June 3, 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 May 1, 2024 5 │ │ │ │ │ │ + Tree : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 6 Tree : DRAFT June 3, 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 May 1, 2024 7 │ │ │ │ │ │ + Tree : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 8 Tree : DRAFT June 3, 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 May 1, 2024 9 │ │ │ │ │ │ + Tree : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 10 Tree : DRAFT June 3, 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 May 1, 2024 11 │ │ │ │ │ │ + Tree : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 12 Tree : DRAFT June 3, 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.05.01:0545 │ │ │ │ │ +%DVIPSSource: TeX output 2025.06.03:1221 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -3357,21 +3357,22 @@ │ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ │ /UnderlineThickness 50 def │ │ │ │ │ end readonly def │ │ │ │ │ /Encoding 256 array │ │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ │ dup 44 /comma put │ │ │ │ │ dup 48 /zero put │ │ │ │ │ -dup 49 /one put │ │ │ │ │ dup 50 /two put │ │ │ │ │ -dup 52 /four put │ │ │ │ │ +dup 51 /three put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 77 /M put │ │ │ │ │ -dup 97 /a put │ │ │ │ │ -dup 121 /y put │ │ │ │ │ +dup 74 /J put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ +dup 110 /n put │ │ │ │ │ +dup 117 /u put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ │ @@ -3552,68 +3553,70 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004ACD1870 │ │ │ │ │ -A5EA947858F5795870BFE1343AD803FB854BF8F5A4E794E8EC57BE41DB5B8734 │ │ │ │ │ -13E47950F29A81EA0C81EA798863883D7F41F78325CA190CBBFFE822AE494550 │ │ │ │ │ -4BE83703071FC9512D128927AF3F63CEF8F86ABE1E15D7B4DDD39576E7DFF45E │ │ │ │ │ -3CB4115AAB1830DE8647B915DB4BEBEB5235C281E098B899BAB951D8D5798F01 │ │ │ │ │ -7F7C47336D31438E5126738AFEAB29E9A7CBE06DE4DD604477B542D2620DFD58 │ │ │ │ │ -28FE34238572F23C5A8EB7ACEE1E154DA13FC1A5AA67A3BA8C5CDFB2B80312C9 │ │ │ │ │ -BC9FAE56D08DDFA9498E6EF0D0F6BD18B3923E0B670B0740528BC843610736CB │ │ │ │ │ -80228C105C2F72C3C22D610C3D8C268DEEA2AEEE3221E198E79FE2966487360C │ │ │ │ │ -84AE08AC326F48B21447652121B1EB68AF857B8628F27BB4ED00F273E0DD044A │ │ │ │ │ -7D11A5BFAAC0A82328444CC9DD90167681B07D55CE28655F40C21250A226DEAB │ │ │ │ │ -2D46FFB680CB9242BE192AC0E55A44D45709FA6DE638C130D92C4E9B07BC3D61 │ │ │ │ │ -25CC2F0A7ED4F3574242FFE4461272EB1401266EEF551E0E2B0EF51FA8F250EC │ │ │ │ │ -FD9AFB6F5A0CC442B566BC24400133E3E9B9A9FC801CEF284FD2B3ECA43421FA │ │ │ │ │ -51E5D1EFE7BEAA96658362C438A0A5A6DCBC664A85EF88037B42355195B9D19C │ │ │ │ │ -7961D5F63B123451B298CD52C144FCD4F3641A823FBA14605E2DFD845E89102C │ │ │ │ │ -4E345CFD80E3EE6F097095A84C941FFC91B234F3615E4EE4C5D564284656E364 │ │ │ │ │ -AB9C4D1DE05F8FD065CA6064893F0CF3A3A501D59EF6568D05D818A010D06518 │ │ │ │ │ -E2C20418ADD1E652867F265084A27A5FE0C32213C59FFC3A84EDC89382521E5B │ │ │ │ │ -8AF66D76601F83C5C33CC9CF968C77B66F1FA074AC3DAD8E453C9264D03969EF │ │ │ │ │ -9E387BB3BEAA4BF0A9D88BA2CE6094E8996A3752A657E322A57AF006444BF516 │ │ │ │ │ -501C43CAA1BA7F16A3B6E4D3EBDECCCC19564DF18FB68194C132238A5441A21A │ │ │ │ │ -F52285CA1CA94A4BEC61EB509FA35EA5E393D662D938F4291F37EB7C2D5815BE │ │ │ │ │ -446813E1CFD06FFFFF2C4355C9DAFA48E765F4CC5DE4B9E37CFFB75E7A0B6F4B │ │ │ │ │ -4E412496F9C27DF4BDD90A869F0EBD81A57AE0B84051450A5A3E06CB9930DB2C │ │ │ │ │ -7C2DDB774BE870AEFCC9F4F067BE243FF3FD4B5C71B96C607DC4975973AF2650 │ │ │ │ │ -E7DF2BE3523A370EEDD07B5456B96E372ED10510CE677C044E609F21E93652FD │ │ │ │ │ -33CE612F587530D12214A3719CDB170C315B5D8763D5D4C67B5CAE90309E77AC │ │ │ │ │ -B45EB356C13A7BDE0D7320A9849CA357E30D7CF1085FFD70071932C3180AFC28 │ │ │ │ │ -B093016BA3F49A3878C34BB4A8727A441EB6CFC1A73F2313A7BF8D32EDF27E62 │ │ │ │ │ -EBEBC058FBA80B136FD2DE05C673B66482224ECEC63EDFB519AC13B5CC6624A6 │ │ │ │ │ -B3FD79037DA3851E93A386115852DBA88B176F21EDDB5386DC7C993C4210B28F │ │ │ │ │ -438131A586E34A09724E7CE60139F8247BFF14D2674805B3BD454C134728A43E │ │ │ │ │ -139E0AF71A7AC5CE42041EC83FD454B00AD29959FCF007789FFAF2D3492DCA4B │ │ │ │ │ -566EAFE97591ABC51CD0CD9BCD64E285FB823E41AA817E96B2B224005DAA4E15 │ │ │ │ │ -2141DB436B9D3FBA4EE4C876FD19A2E5133106FE2B9F704CB9614FCDC91B7950 │ │ │ │ │ -57053F45A5ED993B48189AAFAD5289F97AE2B0AEB5606579F6BD75F743EDB5B6 │ │ │ │ │ -5AA8F8A64CE507A47325081B3A013DB1BD596CDD3A83D2F29B070D6F9C57496E │ │ │ │ │ -14DF3F0F731C3BB00F2CE3D4BBACF1320322195D1DEA7A545BB4725BD1C6EC3D │ │ │ │ │ -63250C72B897741F8599D9D9BD2FB50EC80EFF2ECD6CE6603E95AABB45462ACF │ │ │ │ │ -12B005EE5979B6B05BCE9B97061686102349142A3CCC26D57F2A3283DD8B6E2A │ │ │ │ │ -98885E48C0D4A1A5C9612EDCB3B3D265E9B8CCCCA5D99F07F96C15B27D6A161F │ │ │ │ │ -936599E503C2859927201CACC31581AB7AB84F9EC9FFADC239F01DCC55940AB7 │ │ │ │ │ -FA884AA1EB6494C8E53DAD66E75A317428ACF9D943A74683BF547958F67D9E36 │ │ │ │ │ -F985EED50DEBCF255756A821927CB73848DCF167E96E975E959DE27FE7BA4FBA │ │ │ │ │ -D0EFC003F019D87572D6F9C73FC5B880C3EEDB7EF98E5EC3D25D6FE0015A6590 │ │ │ │ │ -E3C6EE632D7F6558B914609A8829CD1DEAB83A3F1207D5C3AAC9EAEA9DE1B4F8 │ │ │ │ │ -2375C5D4F630BCE13475F941ED2324D2CD4DCF2285298EAA4FFF89433D853860 │ │ │ │ │ -A974A9FC0808580FBDE7D02EDBB3D8C65BD3109AE8B359E96BFB7E21C696F440 │ │ │ │ │ -312B0CCAD810BF070DF8FC281E8198EB20A7FF9C9BCD291D74BC75EE46799485 │ │ │ │ │ -1AB2AE36B7E525034D146A856AF3BD9057A0033C08B606B89DD130548950C93D │ │ │ │ │ -94A8C92C47A34A791B1C108D2F36E899B79358B8081CCFC3D1A2F0521E4E2AE4 │ │ │ │ │ -7F500D6F2A53E5393E44201287225912590ABC738E8726622B67C3425639CCFB │ │ │ │ │ -F450B78A4918 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004B9BA1CC │ │ │ │ │ +580D3C6BDA4DC1B80B4365F1C80512453FC5316EC2D928FB731C3D6403E3C18B │ │ │ │ │ +E8424D644DF5E9A2134229C5C91CA68DB8E85BA2BB40F538F585DA6FA4037718 │ │ │ │ │ +B8053EBBA1E765346BCD5BDAA6C38115D31611D8A87A2238C145F2DA2F92E4DF │ │ │ │ │ +3987BD9C4D2A3D460E8941A68B125BCD9EE4F9FD262C4C8A71F47A2C81975635 │ │ │ │ │ +F1B981C274C53FA2ACCDE4C9D0A7C62D6C1EFF91CFC6712CA6A9F333C9564FCB │ │ │ │ │ +2A70F0AD715A79B10A08AB069E2A3C93BC0AED19D0CA10134B8DDDE8AF548DB2 │ │ │ │ │ +3A4AAA9C29682CF135BB767DAA16169A127EB50A7EECEB6480CF56A7D0F8AC56 │ │ │ │ │ +4A5090B3D75A790372886AF568D94C8165975A05BFBFDF1FFBA45F70700BB9E0 │ │ │ │ │ +57F3249EF9E9C8AD9CBCF6E4FD592DC4CDD2D7864F7C8A3FA6FC44C25C0CE7E1 │ │ │ │ │ +299F8A90B32B75DEA28917531621E1E7E0ECEE9E01665DEE99FBCF3EC3F30686 │ │ │ │ │ +513D7CBA745E660502603865D5A3E82D24B3F94B2884B21DC53AED87F49380E0 │ │ │ │ │ +68EE79C580931308DA762670C1F86F07FFB479773CD9C5DE6F22980DEC973D1C │ │ │ │ │ +A1E162D73932561BAAB24DE51DC8708291B666B36BABCA1FEDB6DD9C22572914 │ │ │ │ │ +7194DA044319F362452D53DD4D9A59134838E540F1E23805CEF53FF4F7519385 │ │ │ │ │ +1FAE3061F94369FEB1232BDA2E2A281E6972FB4524EFA37A598E7CDC097683EA │ │ │ │ │ +1B609952AEC0799B4711AAAB22D6B1D5CC729DE70897FDDC48AF0A12E40FFE30 │ │ │ │ │ +6528C601E68E8CFA4BBF897CF89DB712DE108DD1F084EFD917BFD9A70A74EB8F │ │ │ │ │ +D0D5B43CCC30373A5E871F18A969D01C69C2B4377622A0C8C4D7C4C28DDE5586 │ │ │ │ │ +BD17D5D640A6F396BD41993BD1932EE10953847F82F7BB36480B67A4F69F0763 │ │ │ │ │ +69423D1803B7BB60594ABEEE9578076639B84D8323F56104438803D45402FEE3 │ │ │ │ │ +045DAB16C4459DA9BBE01D0385CC771FB8DABDD8A9D280C18553F92FE6591CFD │ │ │ │ │ +26B82F28E6673BD823598D3F6CE03BEE04D9A21ED908DFC4F640227C148F133D │ │ │ │ │ +D32113275297C16EBCC9028AFD9102DE50E9CF67E7CF8C42BB8E73D1DAF8A5E2 │ │ │ │ │ +EF5979426229664A990DEF980A7038D2F229789D4F6EDBE1FB81BEC1A1BB14D7 │ │ │ │ │ +882515C62660E8877BE942712D57B86A2E19995AF087DECB7FD5208583C020AE │ │ │ │ │ +FEC86A2826530AD855006225300E4655F443C9360A8BAC96B5B096DDC9B12EDF │ │ │ │ │ +C862215AD6C432CF345FE701757E4EBB8C65F46912CB0F4DEF53672F7298D8F7 │ │ │ │ │ +EE51A9C5DE689A8D36956B7F0410893C0998DB03B73B4024CB046F8F6B32E07F │ │ │ │ │ +CD28A68AFB7152E45F1021DCD520D8A429FCDCA4B8054BAF0B48C4443280F198 │ │ │ │ │ +3360B078E6DEC37772DA8B629CFFD1534E8AA10E26B0BC58E92B9BF280C8EE45 │ │ │ │ │ +618EECDE904249F5A2010DC55D1028DFF4F058260B2B0A46541D6157970F44BD │ │ │ │ │ +D7483802D56A81184119DDBC914E8E394CBEEB506B61BB1CE2A3465252E5D8A3 │ │ │ │ │ +6BDD2D067E69D4ECEFC7D5568378F5F8B38EAFF138014185FE19DF7358A7A780 │ │ │ │ │ +3BE0E2CCD1561113F2F2319BDB503230DD0866121604710CEBBAA659ABFC010B │ │ │ │ │ +5CC40E5807F461D87E75BDC6AD96BCEF62AF668D48D7A76D08B57650F35CF609 │ │ │ │ │ +C0F791AEBEB75E29FA69596BAB419804AECE0F0238AAE64A6C13A22EBF4E3EAC │ │ │ │ │ +3570DECE85F54064486B2364D63E94FEB7C16350CDA318510A45C8848DB470ED │ │ │ │ │ +BFAFD2365681D65CFF3E6C1B4B7C8AE3066F96E819D05B97F3A6C2BFF8A72978 │ │ │ │ │ +EEB7F632FF604AD003A3CCA5A0465D53033A646E8082D3491EDECA3DA1A0E1BB │ │ │ │ │ +64BF36946520438D2EE72FA9EB1CEEDF56510AADA55A8DE280E23C904E0810FA │ │ │ │ │ +A3177CF684F06A4042DE4CD4AB21E2F0616153BEEE58EBBD89911FA43BC52969 │ │ │ │ │ +230C8137DB34C13E147B06C7A3875A931E1AC127E7D3EA0DF8346B6971F80901 │ │ │ │ │ +DC37F2DE1A0B81FD93CA3B5EB9B29ECABA1492901B1BA261DAB872FB3431C718 │ │ │ │ │ +9C9CDA7864908CD773864908DEB44E343221C2C4C335341789A46325D94C767C │ │ │ │ │ +740E3B60CE6D452A3A665967F568671FD7DD460B404B9C3D2EDCD47A336AA2C7 │ │ │ │ │ +BB0B1AC3823978F610629EF7AB526098A7EE7076F50A146D8134BA2DEC1B8ACF │ │ │ │ │ +68A7E4A9B7BE17FB71480516F2D6A8866E56CFD7C7A41311F48DDDD9887DACB8 │ │ │ │ │ +73FDAF5F25E956AFB0A9D530DE2E1128F006AAC9A78715BA2F90C8FED3729BFA │ │ │ │ │ +BDDD4098F870A27A91A0CB540D166FF86A442E95C9C361FD23378A2A138EAFB8 │ │ │ │ │ +D7050B486E1CB95068D890BCCD669456F3385C8F1793CE545099421368FE0F46 │ │ │ │ │ +53137AD2B65030B19CE7FF6B1669DB7A3C440AEF27149780E36C7097B7A8B71B │ │ │ │ │ +8789EECFA9A70B1F9695BB5D94E9A7D341291C1CA1BDEF4BE3EFCB8234CE9FFD │ │ │ │ │ +E1C4963CF919780129FA60162FEAA8AE97328F4BA14D949057A3EE74214F2D29 │ │ │ │ │ +51E7BE584446F6702F39957AE455CF8AF0C36AADAA39B53553D923CA5E9D4988 │ │ │ │ │ +76701B4F77DAE5185AC29900 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -5479,16 +5482,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 23[45 19[83 18[25 5[45 1[45 45 45 3[25 44[{}9 │ │ │ │ │ -90.9091 /CMSL10 rf │ │ │ │ │ +/Fl 138[51 6[51 8[40 26[47 15[25 4[45 1[45 45 1[45 3[25 │ │ │ │ │ +44[{}10 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 │ │ │ │ │ @@ -5587,33 +5590,33 @@ │ │ │ │ │ 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 1106 4 v │ │ │ │ │ -1288 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(Ma)m(y)h(1,)g(2024) │ │ │ │ │ -p 2794 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 │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fq(2)p 136 100 1099 4 v │ │ │ │ │ +1281 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(June)f(3,)i(2025)p │ │ │ │ │ +2801 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 │ │ │ │ │ @@ -5653,38 +5656,38 @@ │ │ │ │ │ (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 1106 4 v 1288 100 a Fp(Utilities)28 │ │ │ │ │ -b Fl(:)40 b Fk(DRAFT)121 b Fl(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2747 100 V 1106 w Fq(3)111 399 y(2.)46 b Fp(double)g(*)i(DVinit2)e(\()h │ │ │ │ │ -(int)g(n)g(\))h(;)227 545 y Fq(This)30 b(is)g(an)h(allo)s(cator)h │ │ │ │ │ -(metho)s(d)e(for)g Fp(double)f Fq(v)m(ectors.)42 b(Storage)32 │ │ │ │ │ -b(for)e(an)g(arra)m(y)h(with)f(size)i Fp(n)e Fq(is)g(found.)40 │ │ │ │ │ -b(A)227 658 y(p)s(oin)m(ter)31 b(to)g(the)f(arra)m(y)h(is)g(returned.) │ │ │ │ │ -39 b(Note,)32 b(on)e(return,)g(there)g(will)h(lik)m(ely)h(b)s(e)e │ │ │ │ │ -(garbage)h(in)g(the)f(arra)m(y)-8 b(.)111 838 y(3.)46 │ │ │ │ │ -b Fp(void)h(DVfree)f(\()h(int)g(vec[])g(\))g(;)227 985 │ │ │ │ │ -y Fq(This)30 b(metho)s(d)g(releases)h(the)g(storage)h(tak)m(en)f(b)m(y) │ │ │ │ │ -f Fp(vec[])p Fq(.)111 1165 y(4.)46 b Fp(void)h(DVfprintf)e(\()j(FILE)e │ │ │ │ │ -(*fp,)h(int)g(n,)g(double)f(y[])h(\))g(;)227 1312 y Fq(This)29 │ │ │ │ │ -b(metho)s(d)f(prin)m(ts)h Fp(n)f Fq(en)m(tries)i(in)f │ │ │ │ │ -Fp(y[])f Fq(to)i(\014le)f Fp(fp)p Fq(.)40 b(The)28 b(format)i(is)f(new) │ │ │ │ │ -f(line)i(follo)m(w)m(ed)g(b)m(y)f(lines)h(of)f(six)227 │ │ │ │ │ -1425 y Fp(double)p Fq('s)g(in)h Fp("\04512.4e")e Fq(format.)111 │ │ │ │ │ -1605 y(5.)46 b Fp(int)h(DVfscanf)f(\()h(FILE)g(*fp,)f(int)h(n,)h │ │ │ │ │ -(double)e(y[])h(\))g(;)227 1752 y Fq(This)27 b(metho)s(d)g(scans)h(in)f │ │ │ │ │ -Fp(double)p Fq('s)g(from)g(\014le)h Fp(fp)f Fq(and)g(places)h(them)g │ │ │ │ │ -(in)g(the)f(arra)m(y)i Fp(y[])p Fq(.)39 b(It)27 b(tries)i(to)f(read)227 │ │ │ │ │ -1865 y(in)i Fp(n)g(double)p Fq('s,)f(and)h(returns)f(the)i(n)m(um)m(b)s │ │ │ │ │ -(er)e(that)i(w)m(ere)g(actually)h(read.)111 2045 y(6.)46 │ │ │ │ │ -b Fp(void)h(DVadd)f(\()i(int)f(n,)g(double)f(y[],)h(double)f(x[])h(\))g │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1099 4 v 1281 100 a Fp(Utilities)28 │ │ │ │ │ +b Fl(:)40 b Fk(DRAFT)121 b Fl(June)30 b(3,)h(2025)p 2754 │ │ │ │ │ +100 V 1099 w Fq(3)111 399 y(2.)46 b Fp(double)g(*)i(DVinit2)e(\()h(int) │ │ │ │ │ +g(n)g(\))h(;)227 545 y Fq(This)30 b(is)g(an)h(allo)s(cator)h(metho)s(d) │ │ │ │ │ +e(for)g Fp(double)f Fq(v)m(ectors.)42 b(Storage)32 b(for)e(an)g(arra)m │ │ │ │ │ +(y)h(with)f(size)i Fp(n)e Fq(is)g(found.)40 b(A)227 658 │ │ │ │ │ +y(p)s(oin)m(ter)31 b(to)g(the)f(arra)m(y)h(is)g(returned.)39 │ │ │ │ │ +b(Note,)32 b(on)e(return,)g(there)g(will)h(lik)m(ely)h(b)s(e)e(garbage) │ │ │ │ │ +h(in)g(the)f(arra)m(y)-8 b(.)111 838 y(3.)46 b Fp(void)h(DVfree)f(\()h │ │ │ │ │ +(int)g(vec[])g(\))g(;)227 985 y Fq(This)30 b(metho)s(d)g(releases)h │ │ │ │ │ +(the)g(storage)h(tak)m(en)f(b)m(y)f Fp(vec[])p Fq(.)111 │ │ │ │ │ +1165 y(4.)46 b Fp(void)h(DVfprintf)e(\()j(FILE)e(*fp,)h(int)g(n,)g │ │ │ │ │ +(double)f(y[])h(\))g(;)227 1312 y Fq(This)29 b(metho)s(d)f(prin)m(ts)h │ │ │ │ │ +Fp(n)f Fq(en)m(tries)i(in)f Fp(y[])f Fq(to)i(\014le)f │ │ │ │ │ +Fp(fp)p Fq(.)40 b(The)28 b(format)i(is)f(new)f(line)i(follo)m(w)m(ed)g │ │ │ │ │ +(b)m(y)f(lines)h(of)f(six)227 1425 y Fp(double)p Fq('s)g(in)h │ │ │ │ │ +Fp("\04512.4e")e Fq(format.)111 1605 y(5.)46 b Fp(int)h(DVfscanf)f(\()h │ │ │ │ │ +(FILE)g(*fp,)f(int)h(n,)h(double)e(y[])h(\))g(;)227 1752 │ │ │ │ │ +y Fq(This)27 b(metho)s(d)g(scans)h(in)f Fp(double)p Fq('s)g(from)g │ │ │ │ │ +(\014le)h Fp(fp)f Fq(and)g(places)h(them)g(in)g(the)f(arra)m(y)i │ │ │ │ │ +Fp(y[])p Fq(.)39 b(It)27 b(tries)i(to)f(read)227 1865 │ │ │ │ │ +y(in)i Fp(n)g(double)p Fq('s,)f(and)h(returns)f(the)i(n)m(um)m(b)s(er)e │ │ │ │ │ +(that)i(w)m(ere)g(actually)h(read.)111 2045 y(6.)46 b │ │ │ │ │ +Fp(void)h(DVadd)f(\()i(int)f(n,)g(double)f(y[],)h(double)f(x[])h(\))g │ │ │ │ │ (;)227 2192 y Fq(This)30 b(metho)s(d)g(adds)f Fp(n)h │ │ │ │ │ Fq(en)m(tries)h(from)f Fp(x[])g Fq(to)h Fp(y[])p Fq(,)f(i.e.,)h │ │ │ │ │ Fp(y[i])47 b(+=)g(x[i])29 b Fq(for)i Fp(0)47 b(<=)g(i)h(<)f(n)p │ │ │ │ │ Fq(.)111 2372 y(7.)f Fp(void)h(DVaxpy)f(\()h(int)g(n,)h(double)e(y[],)g │ │ │ │ │ (double)g(alpha,)g(double)h(x[])f(\))i(;)227 2519 y Fq(This)36 │ │ │ │ │ b(metho)s(d)g(adds)g(a)h(scaled)g(m)m(ultiple)g(of)g │ │ │ │ │ Fp(n)f Fq(en)m(tries)i(from)e Fp(x[])g Fq(in)m(to)h Fp(y[])p │ │ │ │ │ @@ -5715,17 +5718,17 @@ │ │ │ │ │ (alpha[3])d(*)j(x1[])227 4945 y(y2[])f(=)g(y2[])g(+)g(alpha[4])f(*)h │ │ │ │ │ (x0[])g(+)h(alpha[5])d(*)j(x1[])66 5148 y Fq(11.)e Fp(void)h(DVaxpy31)e │ │ │ │ │ (\()j(int)f(n,)g(double)f(y0[],)g(double)h(y1[],)f(double)g(y2[],)991 │ │ │ │ │ 5261 y(double)g(alpha,)g(double)g(x0[],)h(double)f(x1[])g(\))i(;)227 │ │ │ │ │ 5407 y Fq(This)30 b(metho)s(d)g(computes)g(this)g(computation.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fq(4)p 136 100 1106 4 v │ │ │ │ │ -1288 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(Ma)m(y)h(1,)g(2024) │ │ │ │ │ -p 2794 100 V 227 399 a Fp(y0[])47 b(=)g(y0[])g(+)g(alpha[0])f(*)h(x0[]) │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fq(4)p 136 100 1099 4 v │ │ │ │ │ +1281 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(June)f(3,)i(2025)p │ │ │ │ │ +2801 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 │ │ │ │ │ @@ -5759,26 +5762,25 @@ │ │ │ │ │ (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 1106 4 v 1288 100 a Fp(Utilities)28 │ │ │ │ │ -b Fl(:)40 b Fk(DRAFT)121 b Fl(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2747 100 V 1106 w Fq(5)66 399 y(19.)46 b Fp(void)h(DVcompress)e(\()i │ │ │ │ │ -(int)g(n1,)g(double)f(x1[],)h(double)f(y1[],)1086 511 │ │ │ │ │ -y(int)h(n2,)g(double)f(x2[],)h(double)f(y2[])g(\))i(;)227 │ │ │ │ │ -672 y Fq(Giv)m(en)c(a)f(pair)g(of)f(arra)m(ys)i Fp(x1[n1])d │ │ │ │ │ -Fq(and)h Fp(y1[n1])p Fq(,)i(\014ll)f Fp(x2[n2])e Fq(and)h │ │ │ │ │ -Fp(y2[n2])f Fq(with)i(a)g(subset)f(of)h(the)227 785 y │ │ │ │ │ -Fp(\(x1[j],y1[j])27 b Fq(en)m(tries)k(whose)g(distribution)e(is)i(an)f │ │ │ │ │ -(appro)m(ximation.)66 993 y(20.)46 b Fp(void)h(DVcopy)f(\()h(int)g(n,)h │ │ │ │ │ -(double)e(y[],)g(double)g(x[])h(\))h(;)227 1153 y Fq(This)30 │ │ │ │ │ -b(metho)s(d)g(copies)h Fp(n)f Fq(en)m(tries)h(from)f │ │ │ │ │ +TeXDict begin 5 4 bop 91 100 1099 4 v 1281 100 a Fp(Utilities)28 │ │ │ │ │ +b Fl(:)40 b Fk(DRAFT)121 b Fl(June)30 b(3,)h(2025)p 2754 │ │ │ │ │ +100 V 1099 w Fq(5)66 399 y(19.)46 b Fp(void)h(DVcompress)e(\()i(int)g │ │ │ │ │ +(n1,)g(double)f(x1[],)h(double)f(y1[],)1086 511 y(int)h(n2,)g(double)f │ │ │ │ │ +(x2[],)h(double)f(y2[])g(\))i(;)227 672 y Fq(Giv)m(en)c(a)f(pair)g(of)f │ │ │ │ │ +(arra)m(ys)i Fp(x1[n1])d Fq(and)h Fp(y1[n1])p Fq(,)i(\014ll)f │ │ │ │ │ +Fp(x2[n2])e Fq(and)h Fp(y2[n2])f Fq(with)i(a)g(subset)f(of)h(the)227 │ │ │ │ │ +785 y Fp(\(x1[j],y1[j])27 b Fq(en)m(tries)k(whose)g(distribution)e(is)i │ │ │ │ │ +(an)f(appro)m(ximation.)66 993 y(20.)46 b Fp(void)h(DVcopy)f(\()h(int)g │ │ │ │ │ +(n,)h(double)e(y[],)g(double)g(x[])h(\))h(;)227 1153 │ │ │ │ │ +y Fq(This)30 b(metho)s(d)g(copies)h Fp(n)f Fq(en)m(tries)h(from)f │ │ │ │ │ Fp(x[])f Fq(to)j Fp(y[])p Fq(,)d(i.e.,)j Fp(y[i])47 b(=)g(x[i])29 │ │ │ │ │ b Fq(for)h Fp(0)48 b(<=)f(i)h(<)f(n)p Fq(.)66 1361 y(21.)f │ │ │ │ │ Fp(int)h(DVdot)g(\()g(int)g(n,)g(double)f(y[],)h(double)f(x[])h(\))g(;) │ │ │ │ │ 227 1522 y Fq(This)25 b(metho)s(d)h(returns)e(the)i(dot)g(pro)s(duct)f │ │ │ │ │ (of)h(the)g(v)m(ector)h Fp(x[])e Fq(and)g Fp(y[])p Fq(,)h(i.e.,)i │ │ │ │ │ (return)3209 1457 y Ff(P)3297 1484 y Fe(n)p Fd(\000)p │ │ │ │ │ Fe(1)3297 1545 y(i)p Fc(=)p Fe(0)3426 1522 y Fq(\()p │ │ │ │ │ @@ -5859,17 +5861,17 @@ │ │ │ │ │ Fp(row1)p Fq([)p Fp(i)p Fq(])19 b Fg(\003)i Fp(col0)p │ │ │ │ │ Fq([)p Fp(i)p Fq(])277 5346 y Fp(sums)p Fq([)p Fp(2)p │ │ │ │ │ Fq(])j(=)687 5241 y Fe(n)p Fd(\000)p Fe(1)690 5266 y │ │ │ │ │ Ff(X)687 5445 y Fe(i)p Fc(=)p Fe(0)828 5346 y Fp(row2)p │ │ │ │ │ Fq([)p Fp(i)p Fq(])19 b Fg(\003)i Fp(col0)p Fq([)p Fp(i)p │ │ │ │ │ Fq(])p eop end │ │ │ │ │ %%Page: 6 6 │ │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fq(6)p 136 100 1106 4 v │ │ │ │ │ -1288 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(Ma)m(y)h(1,)g(2024) │ │ │ │ │ -p 2794 100 V 66 399 a Fq(25.)46 b Fp(int)h(DVdot23)f(\()h(int)g(n,)h │ │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fq(6)p 136 100 1099 4 v │ │ │ │ │ +1281 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(June)f(3,)i(2025)p │ │ │ │ │ +2801 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 │ │ │ │ │ @@ -5949,18 +5951,18 @@ │ │ │ │ │ (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 1106 4 v 1288 100 a Fp(Utilities)28 │ │ │ │ │ -b Fl(:)40 b Fk(DRAFT)121 b Fl(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2747 100 V 1106 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 │ │ │ │ │ +TeXDict begin 7 6 bop 91 100 1099 4 v 1281 100 a Fp(Utilities)28 │ │ │ │ │ +b Fl(:)40 b Fk(DRAFT)121 b Fl(June)30 b(3,)h(2025)p 2754 │ │ │ │ │ +100 V 1099 w Fq(7)66 399 y(31.)46 b Fp(int)h(DVdoti)f(\()i(int)f(n,)g │ │ │ │ │ +(double)f(y[],)h(int)f(index[],)g(double)g(x[])h(\))g(;)227 │ │ │ │ │ 616 y Fq(This)30 b(metho)s(d)g(returns)f(the)h(indexed)g(dot)h(pro)s │ │ │ │ │ (duct)2075 510 y Fe(n)p Fd(\000)p Fe(1)2078 535 y Ff(X)2075 │ │ │ │ │ 714 y Fe(i)p Fc(=)p Fe(0)2216 616 y Fp(y)p Fq([)p Fp(index)p │ │ │ │ │ Fq([)p Fp(i)p Fq(]])19 b Fg(\003)i Fp(x)p Fq([)p Fp(i)p │ │ │ │ │ Fq(].)66 862 y(32.)46 b Fp(void)h(DVfill)f(\()h(int)g(n,)h(double)e │ │ │ │ │ (y[],)g(double)g(val)h(\))h(;)227 1009 y Fq(This)30 b(metho)s(d)g │ │ │ │ │ (\014lls)g Fp(n)g Fq(en)m(tries)h(in)f Fp(y[])g Fq(with)g │ │ │ │ │ @@ -6013,17 +6015,17 @@ │ │ │ │ │ Fq(,)34 b Fp(start)227 5079 y(+)48 b(3*inc)p Fq(,)29 │ │ │ │ │ b(etc.)66 5260 y(43.)46 b Fp(void)h(DVscale)f(\()h(int)g(n,)g(double)f │ │ │ │ │ (y[],)h(double)f(alpha)g(\))i(;)227 5407 y Fq(This)30 │ │ │ │ │ b(metho)s(d)g(scales)h(a)g(v)m(ector)h Fp(y[])d Fq(b)m(y)i │ │ │ │ │ Fp(alpha)p Fq(,)e(i.e.,)j Fp(y[i])46 b(*=)h(alpha)p Fq(.)40 │ │ │ │ │ b(for)30 b Fp(0)47 b(<=)g(i)h(<)f(n)p Fq(.)p eop end │ │ │ │ │ %%Page: 8 8 │ │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fq(8)p 136 100 1106 4 v │ │ │ │ │ -1288 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(Ma)m(y)h(1,)g(2024) │ │ │ │ │ -p 2794 100 V 66 399 a Fq(44.)46 b Fp(void)h(DVscale2)e(\()j(int)f(n,)g │ │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fq(8)p 136 100 1099 4 v │ │ │ │ │ +1281 w Fp(Utilities)28 b Fl(:)41 b Fk(DRAFT)30 b Fl(June)f(3,)i(2025)p │ │ │ │ │ +2801 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 │ │ │ │ │ @@ -6089,28 +6091,27 @@ │ │ │ │ │ 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 1106 4 v 1288 100 a Fp(Utilities)28 │ │ │ │ │ -b Fl(:)40 b Fk(DRAFT)121 b Fl(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2747 100 V 1106 w Fq(9)0 399 y Fi(1.2.3)112 b Fh(ZV)38 │ │ │ │ │ -b Fi(:)g Fh(double)53 b(complex)90 b Fi(v)m(ector)37 │ │ │ │ │ -b(metho)s(ds)0 605 y Fq(A)22 b(double)g(precision)g(complex)g(v)m │ │ │ │ │ -(ector)i(of)e(length)g Fp(n)g Fq(is)g(simply)f(a)i(double)e(precision)h │ │ │ │ │ -(v)m(ector)i(of)e(length)g Fp(2n)p Fq(.)37 b(There)0 │ │ │ │ │ -718 y(is)28 b(a)h(separate)g Fp(ZVinit\(\))d Fq(allo)s(cator)31 │ │ │ │ │ -b(and)c(initializer)j(metho)s(d,)f(since)f(it)h(requires)f(a)h(real)g │ │ │ │ │ -(and)e(imaginary)i(part)0 831 y(to)g(\014ll)g(the)g(v)m(ector.)42 │ │ │ │ │ -b(Ho)m(w)m(ev)m(er,)31 b(there)e(is)g(no)g Fp(ZVinit2\(\))d │ │ │ │ │ -Fq(metho)s(d)i(\(whic)m(h)h(allo)s(cates)i(without)e(initializing)i │ │ │ │ │ -(the)0 943 y(en)m(tries\))h(nor)e(a)h Fp(ZVfree\(\))d │ │ │ │ │ -Fq(metho)s(d)i(to)h(free)g(the)f(en)m(tries;)i(the)f │ │ │ │ │ +TeXDict begin 9 8 bop 91 100 1099 4 v 1281 100 a Fp(Utilities)28 │ │ │ │ │ +b Fl(:)40 b Fk(DRAFT)121 b Fl(June)30 b(3,)h(2025)p 2754 │ │ │ │ │ +100 V 1099 w Fq(9)0 399 y Fi(1.2.3)112 b Fh(ZV)38 b Fi(:)g │ │ │ │ │ +Fh(double)53 b(complex)90 b Fi(v)m(ector)37 b(metho)s(ds)0 │ │ │ │ │ +605 y Fq(A)22 b(double)g(precision)g(complex)g(v)m(ector)i(of)e(length) │ │ │ │ │ +g Fp(n)g Fq(is)g(simply)f(a)i(double)e(precision)h(v)m(ector)i(of)e │ │ │ │ │ +(length)g Fp(2n)p Fq(.)37 b(There)0 718 y(is)28 b(a)h(separate)g │ │ │ │ │ +Fp(ZVinit\(\))d Fq(allo)s(cator)31 b(and)c(initializer)j(metho)s(d,)f │ │ │ │ │ +(since)f(it)h(requires)f(a)h(real)g(and)e(imaginary)i(part)0 │ │ │ │ │ +831 y(to)g(\014ll)g(the)g(v)m(ector.)42 b(Ho)m(w)m(ev)m(er,)31 │ │ │ │ │ +b(there)e(is)g(no)g Fp(ZVinit2\(\))d Fq(metho)s(d)i(\(whic)m(h)h(allo)s │ │ │ │ │ +(cates)i(without)e(initializing)i(the)0 943 y(en)m(tries\))h(nor)e(a)h │ │ │ │ │ +Fp(ZVfree\(\))d Fq(metho)s(d)i(to)h(free)g(the)f(en)m(tries;)i(the)f │ │ │ │ │ Fp(DVinit2\(\))d Fq(and)i Fp(DVfree\(\))e Fq(metho)s(ds)i(can)h(b)s(e)0 │ │ │ │ │ 1056 y(used.)40 b(Similarly)-8 b(,)31 b(there)g(is)f(no)g │ │ │ │ │ Fp(ZVfscanf\(\))e Fq(metho)s(d,)i(instead)h(the)f Fp(DVfscanf\(\))e │ │ │ │ │ Fq(metho)s(d)i(can)g(b)s(e)g(used.)111 1319 y(1.)46 b │ │ │ │ │ Fp(double)g(*)i(ZVinit)e(\()h(int)g(n,)g(double)g(real,)f(double)g │ │ │ │ │ (imag)h(\))g(;)227 1479 y Fq(This)25 b(is)h(the)h(allo)s(cator)h(and)d │ │ │ │ │ (initializer)j(metho)s(d)d(for)h Fp(double)46 b(complex)24 │ │ │ │ │ @@ -6166,18 +6167,18 @@ │ │ │ │ │ 5294 y Fq(This)33 b(metho)s(d)h(adds)f(a)h(scaled)g(m)m(ultiple)h(of)f │ │ │ │ │ (t)m(w)m(o)h(v)m(ectors)g Fp(x[])e Fq(and)h Fp(y[])f │ │ │ │ │ Fq(to)h(another)g(v)m(ector)i Fp(z[])p Fq(,)e(i.e.,)227 │ │ │ │ │ 5407 y(i.e.,)e Fp(z[i])47 b(+=)g(\(areal,aimag\))d(*)j(x[i])g(+)h │ │ │ │ │ (\(breal,bimag\))c(*)j(y[i])29 b Fq(for)h Fp(0)48 b(<=)f(i)h(<)f(n)p │ │ │ │ │ Fq(.)p eop end │ │ │ │ │ %%Page: 10 10 │ │ │ │ │ -TeXDict begin 10 9 bop 0 100 a Fq(10)p 182 100 1084 4 │ │ │ │ │ -v 1266 w Fp(Utilities)28 b Fl(:)40 b Fk(DRAFT)31 b Fl(Ma)m(y)g(1,)g │ │ │ │ │ -(2024)p 2817 100 V 111 399 a Fq(8.)46 b Fp(void)h(ZVaxpy33)e(\()j(int)f │ │ │ │ │ -(n,)g(double)f(y0[],)g(double)h(y1[],)f(double)g(y2[],)991 │ │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fq(10)p 182 100 1077 4 │ │ │ │ │ +v 1259 w Fp(Utilities)28 b Fl(:)40 b Fk(DRAFT)31 b Fl(June)e(3,)i(2025) │ │ │ │ │ +p 2824 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 │ │ │ │ │ @@ -6212,24 +6213,24 @@ │ │ │ │ │ (int)f(n,)g(double)f(y0[],)g(double)h(y1[],)991 4925 │ │ │ │ │ y(double)f(alpha[],)g(double)g(x0[])g(\))i(;)227 5074 │ │ │ │ │ y Fq(This)30 b(metho)s(d)g(computes)g(the)h(follo)m(wing.)227 │ │ │ │ │ 5294 y Fp(y0[])47 b(=)g(y0[])g(+)g(alpha[0:1])e(*)j(x0[])227 │ │ │ │ │ 5407 y(y1[])f(=)g(y1[])g(+)g(alpha[2:3])e(*)j(x0[])p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 11 11 │ │ │ │ │ -TeXDict begin 11 10 bop 91 100 1084 4 v 1265 100 a Fp(Utilities)28 │ │ │ │ │ -b Fl(:)40 b Fk(DRAFT)122 b Fl(Ma)m(y)31 b(1,)g(2024)p │ │ │ │ │ -2724 100 V 1084 w Fq(11)66 399 y(14.)46 b Fp(void)h(ZVaxpy13)e(\()j │ │ │ │ │ -(int)f(n,)g(double)f(y0[],)991 511 y(double)g(alpha[],)g(double)g │ │ │ │ │ -(x0[],)g(double)g(x1[],)g(double)h(x2[])f(\))i(;)227 │ │ │ │ │ -667 y Fq(This)30 b(metho)s(d)g(computes)g(the)h(follo)m(wing.)227 │ │ │ │ │ -907 y Fp(y0[])47 b(=)g(y0[])g(+)g(alpha[0:1])e(*)j(x0[])f(+)g │ │ │ │ │ -(alpha[2:3])e(*)i(x1[])g(+)h(alpha[4:5])d(*)i(x2[])66 │ │ │ │ │ -1146 y Fq(15.)f Fp(void)h(ZVaxpy12)e(\()j(int)f(n,)g(double)f(y0[],)g │ │ │ │ │ -(double)h(alpha[],)e(double)h(x0[],)h(double)f(x1[])g(\))i(;)227 │ │ │ │ │ +TeXDict begin 11 10 bop 91 100 1077 4 v 1258 100 a Fp(Utilities)28 │ │ │ │ │ +b Fl(:)41 b Fk(DRAFT)121 b Fl(June)29 b(3,)i(2025)p 2731 │ │ │ │ │ +100 V 1077 w Fq(11)66 399 y(14.)46 b Fp(void)h(ZVaxpy13)e(\()j(int)f │ │ │ │ │ +(n,)g(double)f(y0[],)991 511 y(double)g(alpha[],)g(double)g(x0[],)g │ │ │ │ │ +(double)g(x1[],)g(double)h(x2[])f(\))i(;)227 667 y Fq(This)30 │ │ │ │ │ +b(metho)s(d)g(computes)g(the)h(follo)m(wing.)227 907 │ │ │ │ │ +y Fp(y0[])47 b(=)g(y0[])g(+)g(alpha[0:1])e(*)j(x0[])f(+)g(alpha[2:3])e │ │ │ │ │ +(*)i(x1[])g(+)h(alpha[4:5])d(*)i(x2[])66 1146 y Fq(15.)f │ │ │ │ │ +Fp(void)h(ZVaxpy12)e(\()j(int)f(n,)g(double)f(y0[],)g(double)h │ │ │ │ │ +(alpha[],)e(double)h(x0[],)h(double)f(x1[])g(\))i(;)227 │ │ │ │ │ 1302 y Fq(This)30 b(metho)s(d)g(computes)g(the)h(follo)m(wing.)227 │ │ │ │ │ 1541 y Fp(y0[])47 b(=)g(y0[])g(+)g(alpha[0:1])e(*)j(x0[])f(+)g │ │ │ │ │ (alpha[2:3])e(*)i(x1[])66 1781 y Fq(16.)f Fp(void)h(ZVaxpy11)e(\()j │ │ │ │ │ (int)f(n,)g(double)f(y0[],)g(double)h(alpha[],)e(double)h(x0[])h(\))g │ │ │ │ │ (;)227 1937 y Fq(This)30 b(metho)s(d)g(computes)g(the)h(follo)m(wing.) │ │ │ │ │ 227 2176 y Fp(y0[])47 b(=)g(y0[])g(+)g(alpha[0:1])e(*)j(x0[])66 │ │ │ │ │ 2415 y Fq(17.)e Fp(void)h(ZVcopy)f(\()h(int)g(n,)h(double)e(y[],)g │ │ │ │ │ @@ -6269,17 +6270,17 @@ │ │ │ │ │ b Fg(\003)i Fp(x)p Fq([)p Fp(i)p Fq(].)66 5138 y(22.)46 │ │ │ │ │ b Fp(int)h(ZVdotU33)f(\()h(int)g(n,)g(double)f(row0[],)g(double)g │ │ │ │ │ (row1[],)g(double)g(row2[],)895 5251 y(double)h(col0[],)e(double)h │ │ │ │ │ (col1[],)g(double)g(col2[],)g(double)g(sums[])g(\))i(;)227 │ │ │ │ │ 5407 y Fq(This)30 b(metho)s(d)g(computes)g(nine)g(dot)h(pro)s(ducts.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 12 12 │ │ │ │ │ -TeXDict begin 12 11 bop 0 100 a Fq(12)p 182 100 1084 │ │ │ │ │ -4 v 1266 w Fp(Utilities)28 b Fl(:)40 b Fk(DRAFT)31 b │ │ │ │ │ -Fl(Ma)m(y)g(1,)g(2024)p 2817 100 V 277 462 a Fp(sums)p │ │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fq(12)p 182 100 1077 │ │ │ │ │ +4 v 1259 w Fp(Utilities)28 b Fl(:)40 b Fk(DRAFT)31 b │ │ │ │ │ +Fl(June)e(3,)i(2025)p 2824 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 │ │ │ │ │ @@ -6380,18 +6381,18 @@ │ │ │ │ │ Fq(])19 b Fg(\003)i Fp(col1)p Fq([)p Fp(i)p Fq(])98 b │ │ │ │ │ Fp(sums)p Fq([)p Fp(10)24 b Fq(:)i Fp(11)p Fq(])f(=)2345 │ │ │ │ │ 5241 y Fe(n)p Fd(\000)p Fe(1)2347 5266 y Ff(X)2345 5445 │ │ │ │ │ y Fe(i)p Fc(=)p Fe(0)2485 5346 y Fp(row1)p Fq([)p Fp(i)p │ │ │ │ │ Fq(])20 b Fg(\003)g Fp(col2)p Fq([)p Fp(i)p Fq(])p eop │ │ │ │ │ end │ │ │ │ │ %%Page: 13 13 │ │ │ │ │ -TeXDict begin 13 12 bop 91 100 1084 4 v 1265 100 a Fp(Utilities)28 │ │ │ │ │ -b Fl(:)40 b Fk(DRAFT)122 b Fl(Ma)m(y)31 b(1,)g(2024)p │ │ │ │ │ -2724 100 V 1084 w Fq(13)66 399 y(26.)46 b Fp(int)h(ZVdotU22)f(\()h(int) │ │ │ │ │ -g(n,)g(double)f(row0[],)g(double)g(row1[],)895 511 y(double)h(col0[],)e │ │ │ │ │ +TeXDict begin 13 12 bop 91 100 1077 4 v 1258 100 a Fp(Utilities)28 │ │ │ │ │ +b Fl(:)41 b Fk(DRAFT)121 b Fl(June)29 b(3,)i(2025)p 2731 │ │ │ │ │ +100 V 1077 w Fq(13)66 399 y(26.)46 b Fp(int)h(ZVdotU22)f(\()h(int)g(n,) │ │ │ │ │ +g(double)f(row0[],)g(double)g(row1[],)895 511 y(double)h(col0[],)e │ │ │ │ │ (double)h(col1[],)g(double)g(sums[])g(\))i(;)227 681 │ │ │ │ │ y Fq(This)30 b(metho)s(d)g(computes)g(four)g(dot)g(pro)s(ducts.)277 │ │ │ │ │ 918 y Fp(sums)p Fq([)p Fp(0)24 b Fq(:)i Fp(1)p Fq(])f(=)811 │ │ │ │ │ 813 y Fe(n)p Fd(\000)p Fe(1)814 838 y Ff(X)811 1017 y │ │ │ │ │ Fe(i)p Fc(=)p Fe(0)952 918 y Fp(row0)p Fq([)p Fp(i)p │ │ │ │ │ Fq(])19 b Fg(\003)i Fp(col0)p Fq([)p Fp(i)p Fq(])98 b │ │ │ │ │ Fp(sums)p Fq([)p Fp(2)24 b Fq(:)i Fp(3)p Fq(])f(=)2249 │ │ │ │ │ @@ -6453,17 +6454,17 @@ │ │ │ │ │ Fq(])19 b Fg(\003)i Fp(col0)p Fq([)p Fp(i)p Fq(])66 5125 │ │ │ │ │ y(31.)46 b Fp(int)h(ZVdotC33)f(\()h(int)g(n,)g(double)f(row0[],)g │ │ │ │ │ (double)g(row1[],)g(double)g(row2[],)895 5238 y(double)h(col0[],)e │ │ │ │ │ (double)h(col1[],)g(double)g(col2[],)g(double)g(sums[])g(\))i(;)227 │ │ │ │ │ 5407 y Fq(This)30 b(metho)s(d)g(computes)g(nine)g(dot)h(pro)s(ducts.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 14 14 │ │ │ │ │ -TeXDict begin 14 13 bop 0 100 a Fq(14)p 182 100 1084 │ │ │ │ │ -4 v 1266 w Fp(Utilities)28 b Fl(:)40 b Fk(DRAFT)31 b │ │ │ │ │ -Fl(Ma)m(y)g(1,)g(2024)p 2817 100 V 277 462 a Fp(sums)p │ │ │ │ │ +TeXDict begin 14 13 bop 0 100 a Fq(14)p 182 100 1077 │ │ │ │ │ +4 v 1259 w Fp(Utilities)28 b Fl(:)40 b Fk(DRAFT)31 b │ │ │ │ │ +Fl(June)e(3,)i(2025)p 2824 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 │ │ │ │ │ @@ -6569,18 +6570,18 @@ │ │ │ │ │ b Fg(\003)i Fp(col1)p Fq([)p Fp(i)p Fq(])98 b Fp(sums)p │ │ │ │ │ Fq([)p Fp(10)24 b Fq(:)i Fp(11)p Fq(])f(=)2345 5241 y │ │ │ │ │ Fe(n)p Fd(\000)p Fe(1)2347 5266 y Ff(X)2345 5445 y Fe(i)p │ │ │ │ │ Fc(=)p Fe(0)p 2485 5268 V 2485 5346 a Fp(row1)p Fq([)p │ │ │ │ │ Fp(i)p Fq(])20 b Fg(\003)g Fp(col2)p Fq([)p Fp(i)p Fq(])p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 15 15 │ │ │ │ │ -TeXDict begin 15 14 bop 91 100 1084 4 v 1265 100 a Fp(Utilities)28 │ │ │ │ │ -b Fl(:)40 b Fk(DRAFT)122 b Fl(Ma)m(y)31 b(1,)g(2024)p │ │ │ │ │ -2724 100 V 1084 w Fq(15)66 399 y(35.)46 b Fp(int)h(ZVdotC22)f(\()h(int) │ │ │ │ │ -g(n,)g(double)f(row0[],)g(double)g(row1[],)895 511 y(double)h(col0[],)e │ │ │ │ │ +TeXDict begin 15 14 bop 91 100 1077 4 v 1258 100 a Fp(Utilities)28 │ │ │ │ │ +b Fl(:)41 b Fk(DRAFT)121 b Fl(June)29 b(3,)i(2025)p 2731 │ │ │ │ │ +100 V 1077 w Fq(15)66 399 y(35.)46 b Fp(int)h(ZVdotC22)f(\()h(int)g(n,) │ │ │ │ │ +g(double)f(row0[],)g(double)g(row1[],)895 511 y(double)h(col0[],)e │ │ │ │ │ (double)h(col1[],)g(double)g(sums[])g(\))i(;)227 669 │ │ │ │ │ y Fq(This)30 b(metho)s(d)g(computes)g(four)g(dot)g(pro)s(ducts.)277 │ │ │ │ │ 895 y Fp(sums)p Fq([)p Fp(0)24 b Fq(:)i Fp(1)p Fq(])f(=)811 │ │ │ │ │ 789 y Fe(n)p Fd(\000)p Fe(1)814 814 y Ff(X)811 993 y │ │ │ │ │ Fe(i)p Fc(=)p Fe(0)p 952 817 290 4 v 952 895 a Fp(row0)p │ │ │ │ │ Fq([)p Fp(i)p Fq(])19 b Fg(\003)i Fp(col0)p Fq([)p Fp(i)p │ │ │ │ │ Fq(])98 b Fp(sums)p Fq([)p Fp(2)24 b Fq(:)i Fp(3)p Fq(])f(=)2249 │ │ │ │ │ @@ -6647,18 +6648,18 @@ │ │ │ │ │ (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 1084 │ │ │ │ │ -4 v 1266 w Fp(Utilities)28 b Fl(:)40 b Fk(DRAFT)31 b │ │ │ │ │ -Fl(Ma)m(y)g(1,)g(2024)p 2817 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 │ │ │ │ │ +TeXDict begin 16 15 bop 0 100 a Fq(16)p 182 100 1077 │ │ │ │ │ +4 v 1259 w Fp(Utilities)28 b Fl(:)40 b Fk(DRAFT)31 b │ │ │ │ │ +Fl(June)e(3,)i(2025)p 2824 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 │ │ │ │ │ @@ -6714,17 +6715,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 1084 4 v 1265 100 a Fp(Utilities)28 │ │ │ │ │ -b Fl(:)40 b Fk(DRAFT)122 b Fl(Ma)m(y)31 b(1,)g(2024)p │ │ │ │ │ -2724 100 V 1084 w Fq(17)111 399 y(5.)46 b Fp(int)h(IVfp80)f(\()i(FILE)e │ │ │ │ │ +TeXDict begin 17 16 bop 91 100 1077 4 v 1258 100 a Fp(Utilities)28 │ │ │ │ │ +b Fl(:)41 b Fk(DRAFT)121 b Fl(June)29 b(3,)i(2025)p 2731 │ │ │ │ │ +100 V 1077 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 │ │ │ │ │ @@ -6788,20 +6789,20 @@ │ │ │ │ │ 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 1084 │ │ │ │ │ -4 v 1266 w Fp(Utilities)28 b Fl(:)40 b Fk(DRAFT)31 b │ │ │ │ │ -Fl(Ma)m(y)g(1,)g(2024)p 2817 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 │ │ │ │ │ +TeXDict begin 18 17 bop 0 100 a Fq(18)p 182 100 1077 │ │ │ │ │ +4 v 1259 w Fp(Utilities)28 b Fl(:)40 b Fk(DRAFT)31 b │ │ │ │ │ +Fl(June)e(3,)i(2025)p 2824 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 │ │ │ │ │ @@ -6854,42 +6855,41 @@ │ │ │ │ │ 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 1084 4 v 1265 100 a Fp(Utilities)28 │ │ │ │ │ -b Fl(:)40 b Fk(DRAFT)122 b Fl(Ma)m(y)31 b(1,)g(2024)p │ │ │ │ │ -2724 100 V 1084 w Fq(19)111 399 y(2.)46 b Fp(float)h(*)g(FVinit2)f(\()h │ │ │ │ │ -(int)g(n)h(\))f(;)227 549 y Fq(This)32 b(is)h(an)f(allo)s(cator)j │ │ │ │ │ -(metho)s(d)d(for)h Fp(float)e Fq(v)m(ectors.)49 b(Storage)34 │ │ │ │ │ -b(for)f(an)f(arra)m(y)h(with)g(size)g Fp(n)g Fq(is)f(found.)47 │ │ │ │ │ -b(A)227 662 y(p)s(oin)m(ter)31 b(to)g(the)f(arra)m(y)h(is)g(returned.) │ │ │ │ │ -39 b(Note,)32 b(on)e(return,)g(there)g(will)h(lik)m(ely)h(b)s(e)e │ │ │ │ │ -(garbage)h(in)g(the)f(arra)m(y)-8 b(.)111 850 y(3.)46 │ │ │ │ │ -b Fp(void)h(FVfree)f(\()h(int)g(vec[])g(\))g(;)227 1001 │ │ │ │ │ -y Fq(This)30 b(metho)s(d)g(releases)h(the)g(storage)h(tak)m(en)f(b)m(y) │ │ │ │ │ -f Fp(vec[])p Fq(.)111 1189 y(4.)46 b Fp(void)h(FVfprintf)e(\()j(FILE)e │ │ │ │ │ -(*fp,)h(int)g(n,)g(float)f(y[])h(\))h(;)227 1340 y Fq(This)29 │ │ │ │ │ -b(metho)s(d)f(prin)m(ts)h Fp(n)f Fq(en)m(tries)i(in)f │ │ │ │ │ -Fp(y[])f Fq(to)i(\014le)f Fp(fp)p Fq(.)40 b(The)28 b(format)i(is)f(new) │ │ │ │ │ -f(line)i(follo)m(w)m(ed)g(b)m(y)f(lines)h(of)f(six)227 │ │ │ │ │ -1453 y Fp(float)p Fq('s)g(in)h Fp(")48 b(\04512.4e")28 │ │ │ │ │ -b Fq(format.)111 1641 y(5.)46 b Fp(int)h(FVfscanf)f(\()h(FILE)g(*fp,)f │ │ │ │ │ -(int)h(n,)h(float)e(y[])h(\))g(;)227 1792 y Fq(This)30 │ │ │ │ │ -b(metho)s(d)g(scans)g(in)g Fp(float)p Fq('s)g(from)g(\014le)g │ │ │ │ │ -Fp(fp)g Fq(and)g(places)h(them)g(in)f(the)g(arra)m(y)h │ │ │ │ │ -Fp(y[])p Fq(.)40 b(It)31 b(tries)g(to)g(read)227 1905 │ │ │ │ │ -y(in)f Fp(n)g(float)p Fq('s,)g(and)f(returns)h(the)g(n)m(um)m(b)s(er)f │ │ │ │ │ -(that)i(w)m(ere)g(actually)h(read.)111 2093 y(6.)46 b │ │ │ │ │ -Fp(void)h(FVadd)f(\()i(int)f(n,)g(float)f(y[],)h(float)f(x[])h(\))h(;) │ │ │ │ │ -227 2244 y Fq(This)30 b(metho)s(d)g(adds)f Fp(n)h Fq(en)m(tries)h(from) │ │ │ │ │ -f Fp(x[])g Fq(to)h Fp(y[])p Fq(,)f(i.e.,)h Fp(y[i])47 │ │ │ │ │ -b(+=)g(x[i])29 b Fq(for)i Fp(0)47 b(<=)g(i)h(<)f(n)p │ │ │ │ │ +TeXDict begin 19 18 bop 91 100 1077 4 v 1258 100 a Fp(Utilities)28 │ │ │ │ │ +b Fl(:)41 b Fk(DRAFT)121 b Fl(June)29 b(3,)i(2025)p 2731 │ │ │ │ │ +100 V 1077 w Fq(19)111 399 y(2.)46 b Fp(float)h(*)g(FVinit2)f(\()h(int) │ │ │ │ │ +g(n)h(\))f(;)227 549 y Fq(This)32 b(is)h(an)f(allo)s(cator)j(metho)s(d) │ │ │ │ │ +d(for)h Fp(float)e Fq(v)m(ectors.)49 b(Storage)34 b(for)f(an)f(arra)m │ │ │ │ │ +(y)h(with)g(size)g Fp(n)g Fq(is)f(found.)47 b(A)227 662 │ │ │ │ │ +y(p)s(oin)m(ter)31 b(to)g(the)f(arra)m(y)h(is)g(returned.)39 │ │ │ │ │ +b(Note,)32 b(on)e(return,)g(there)g(will)h(lik)m(ely)h(b)s(e)e(garbage) │ │ │ │ │ +h(in)g(the)f(arra)m(y)-8 b(.)111 850 y(3.)46 b Fp(void)h(FVfree)f(\()h │ │ │ │ │ +(int)g(vec[])g(\))g(;)227 1001 y Fq(This)30 b(metho)s(d)g(releases)h │ │ │ │ │ +(the)g(storage)h(tak)m(en)f(b)m(y)f Fp(vec[])p Fq(.)111 │ │ │ │ │ +1189 y(4.)46 b Fp(void)h(FVfprintf)e(\()j(FILE)e(*fp,)h(int)g(n,)g │ │ │ │ │ +(float)f(y[])h(\))h(;)227 1340 y Fq(This)29 b(metho)s(d)f(prin)m(ts)h │ │ │ │ │ +Fp(n)f Fq(en)m(tries)i(in)f Fp(y[])f Fq(to)i(\014le)f │ │ │ │ │ +Fp(fp)p Fq(.)40 b(The)28 b(format)i(is)f(new)f(line)i(follo)m(w)m(ed)g │ │ │ │ │ +(b)m(y)f(lines)h(of)f(six)227 1453 y Fp(float)p Fq('s)g(in)h │ │ │ │ │ +Fp(")48 b(\04512.4e")28 b Fq(format.)111 1641 y(5.)46 │ │ │ │ │ +b Fp(int)h(FVfscanf)f(\()h(FILE)g(*fp,)f(int)h(n,)h(float)e(y[])h(\))g │ │ │ │ │ +(;)227 1792 y Fq(This)30 b(metho)s(d)g(scans)g(in)g Fp(float)p │ │ │ │ │ +Fq('s)g(from)g(\014le)g Fp(fp)g Fq(and)g(places)h(them)g(in)f(the)g │ │ │ │ │ +(arra)m(y)h Fp(y[])p Fq(.)40 b(It)31 b(tries)g(to)g(read)227 │ │ │ │ │ +1905 y(in)f Fp(n)g(float)p Fq('s,)g(and)f(returns)h(the)g(n)m(um)m(b)s │ │ │ │ │ +(er)f(that)i(w)m(ere)g(actually)h(read.)111 2093 y(6.)46 │ │ │ │ │ +b Fp(void)h(FVadd)f(\()i(int)f(n,)g(float)f(y[],)h(float)f(x[])h(\))h │ │ │ │ │ +(;)227 2244 y Fq(This)30 b(metho)s(d)g(adds)f Fp(n)h │ │ │ │ │ +Fq(en)m(tries)h(from)f Fp(x[])g Fq(to)h Fp(y[])p Fq(,)f(i.e.,)h │ │ │ │ │ +Fp(y[i])47 b(+=)g(x[i])29 b Fq(for)i Fp(0)47 b(<=)g(i)h(<)f(n)p │ │ │ │ │ Fq(.)111 2432 y(7.)f Fp(void)h(FVaxpy)f(\()h(int)g(n,)h(float)e(y[],)h │ │ │ │ │ (float)f(alpha,)g(float)g(x[])h(\))h(;)227 2583 y Fq(This)36 │ │ │ │ │ b(metho)s(d)g(adds)g(a)h(scaled)g(m)m(ultiple)g(of)g │ │ │ │ │ Fp(n)f Fq(en)m(tries)i(from)e Fp(x[])g Fq(in)m(to)h Fp(y[])p │ │ │ │ │ Fq(,)h(i.e.,)h Fp(y[i])47 b(+=)g(alpha)f(*)227 2696 y(x[i])29 │ │ │ │ │ b Fq(for)i Fp(0)47 b(<=)g(i)h(<)f(n)p Fq(.)111 2884 y(8.)f │ │ │ │ │ Fp(void)h(FVaxpyi)f(\()h(int)g(n,)g(float)g(y[],)f(int)h(index[],)f │ │ │ │ │ @@ -6924,19 +6924,19 @@ │ │ │ │ │ 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 1084 │ │ │ │ │ -4 v 1266 w Fp(Utilities)28 b Fl(:)40 b Fk(DRAFT)31 b │ │ │ │ │ -Fl(Ma)m(y)g(1,)g(2024)p 2817 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 │ │ │ │ │ +TeXDict begin 20 19 bop 0 100 a Fq(20)p 182 100 1077 │ │ │ │ │ +4 v 1259 w Fp(Utilities)28 b Fl(:)40 b Fk(DRAFT)31 b │ │ │ │ │ +Fl(June)e(3,)i(2025)p 2824 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(;) │ │ │ │ │ @@ -6989,18 +6989,18 @@ │ │ │ │ │ (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 1084 4 v 1265 100 a Fp(Utilities)28 │ │ │ │ │ -b Fl(:)40 b Fk(DRAFT)122 b Fl(Ma)m(y)31 b(1,)g(2024)p │ │ │ │ │ -2724 100 V 1084 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 │ │ │ │ │ +TeXDict begin 21 20 bop 91 100 1077 4 v 1258 100 a Fp(Utilities)28 │ │ │ │ │ +b Fl(:)41 b Fk(DRAFT)121 b Fl(June)29 b(3,)i(2025)p 2731 │ │ │ │ │ +100 V 1077 w Fq(21)66 399 y(27.)46 b Fp(void)h(FVsub)f(\()i(int)f(n,)g │ │ │ │ │ +(float)f(y[],)h(float)f(x[])h(\))h(;)227 546 y Fq(This)30 │ │ │ │ │ b(metho)s(d)g(subtracts)g Fp(n)g Fq(en)m(tries)h(from)f │ │ │ │ │ Fp(x[])f Fq(to)j Fp(y[])p Fq(,)d(i.e.,)j Fp(y[i])47 b(-=)g(x[i])29 │ │ │ │ │ b Fq(for)h Fp(0)48 b(<=)f(i)g(<)h(n)p Fq(.)66 729 y(28.)e │ │ │ │ │ Fp(float)h(FVsum)f(\()h(int)g(n,)h(float)e(y[])h(\))g(;)227 │ │ │ │ │ 877 y Fq(This)30 b(metho)s(d)g(returns)f(the)h(sum)g(of)g(the)h │ │ │ │ │ (\014rst)f Fp(n)g Fq(en)m(tries)h(in)f(the)g(v)m(ector)i │ │ │ │ │ Fp(x[])p Fq(,)e(i.e.,)i(return)3430 812 y Ff(P)3518 839 │ │ │ │ │ @@ -7062,19 +7062,19 @@ │ │ │ │ │ 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 1084 │ │ │ │ │ -4 v 1266 w Fp(Utilities)28 b Fl(:)40 b Fk(DRAFT)31 b │ │ │ │ │ -Fl(Ma)m(y)g(1,)g(2024)p 2817 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 │ │ │ │ │ +TeXDict begin 22 21 bop 0 100 a Fq(22)p 182 100 1077 │ │ │ │ │ +4 v 1259 w Fp(Utilities)28 b Fl(:)40 b Fk(DRAFT)31 b │ │ │ │ │ +Fl(June)e(3,)i(2025)p 2824 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 │ │ │ │ │ @@ -7131,17 +7131,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 1084 4 v 1265 100 a Fp(Utilities)28 │ │ │ │ │ -b Fl(:)40 b Fk(DRAFT)122 b Fl(Ma)m(y)31 b(1,)g(2024)p │ │ │ │ │ -2724 100 V 1084 w Fq(23)0 399 y Fi(1.2.9)112 b(Sorting)38 │ │ │ │ │ +TeXDict begin 23 22 bop 91 100 1077 4 v 1258 100 a Fp(Utilities)28 │ │ │ │ │ +b Fl(:)41 b Fk(DRAFT)121 b Fl(June)29 b(3,)i(2025)p 2731 │ │ │ │ │ +100 V 1077 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 │ │ │ │ │ @@ -7191,18 +7191,18 @@ │ │ │ │ │ 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 1084 │ │ │ │ │ -4 v 1266 w Fp(Utilities)28 b Fl(:)40 b Fk(DRAFT)31 b │ │ │ │ │ -Fl(Ma)m(y)g(1,)g(2024)p 2817 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 │ │ │ │ │ +TeXDict begin 24 23 bop 0 100 a Fq(24)p 182 100 1077 │ │ │ │ │ +4 v 1259 w Fp(Utilities)28 b Fl(:)40 b Fk(DRAFT)31 b │ │ │ │ │ +Fl(June)e(3,)i(2025)p 2824 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 │ │ │ │ │ @@ -7258,19 +7258,19 @@ │ │ │ │ │ 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 1084 4 v 1265 100 a Fp(Utilities)28 │ │ │ │ │ -b Fl(:)40 b Fk(DRAFT)122 b Fl(Ma)m(y)31 b(1,)g(2024)p │ │ │ │ │ -2724 100 V 1084 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 │ │ │ │ │ +TeXDict begin 25 24 bop 91 100 1077 4 v 1258 100 a Fp(Utilities)28 │ │ │ │ │ +b Fl(:)41 b Fk(DRAFT)121 b Fl(June)29 b(3,)i(2025)p 2731 │ │ │ │ │ +100 V 1077 w Fq(25)111 399 y(7.)46 b Fp(void)h(DVqsortUp)e(\()j(int)f │ │ │ │ │ +(n,)g(double)f(dvec[])g(\))h(;)227 511 y(void)g(DVqsortDown)e(\()i(int) │ │ │ │ │ +g(n,)g(double)f(dvec[])g(\))i(;)227 658 y Fq(Thes)30 │ │ │ │ │ b(metho)s(ds)g(sort)g(a)h Fp(double)e Fq(arra)m(y)i(in)m(to)g │ │ │ │ │ (ascending)g(or)f(descending)g(order)g(using)g(a)h(quic)m(k)f(sort.)111 │ │ │ │ │ 839 y(8.)46 b Fp(void)h(DV2qsortUp)e(\()i(int)g(n,)g(double)g(dvec1[],) │ │ │ │ │ e(double)h(dvec2[])g(\))h(;)227 952 y(void)g(DV2qsortDown)d(\()k(int)f │ │ │ │ │ (n,)g(double)f(dvec1[],)g(double)g(dvec2[])f(\))j(;)227 │ │ │ │ │ 1099 y Fq(These)30 b(metho)s(ds)e(sort)i(the)g(arra)m(y)g │ │ │ │ │ Fp(dvec1[])d Fq(in)m(to)k(ascending)e(or)h(descending)f(order)g(using)g │ │ │ │ │ @@ -7334,44 +7334,43 @@ │ │ │ │ │ (stored)g(in)g(the)g(leading)h(lo)s(cations)g(of)f(the)g(v)m(ectors)h │ │ │ │ │ Fp(ivec1[])d Fq(and)i Fp(ivec2[])p Fq(.)227 5294 y Fk(Err)-5 │ │ │ │ │ b(or)37 b(che)-5 b(cking:)45 b Fq(If)33 b Fp(n)47 b(<)h(0)p │ │ │ │ │ Fq(,)33 b(or)g(if)g Fp(ivec1)f Fq(or)h Fp(ivec2)e Fq(is)i │ │ │ │ │ Fp(NULL)p Fq(,)f(an)h(error)g(message)h(is)f(prin)m(ted)f(and)h(the)227 │ │ │ │ │ 5407 y(program)d(exits.)p eop end │ │ │ │ │ %%Page: 26 26 │ │ │ │ │ -TeXDict begin 26 25 bop 0 100 a Fq(26)p 182 100 1084 │ │ │ │ │ -4 v 1266 w Fp(Utilities)28 b Fl(:)40 b Fk(DRAFT)31 b │ │ │ │ │ -Fl(Ma)m(y)g(1,)g(2024)p 2817 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 1077 │ │ │ │ │ +4 v 1259 w Fp(Utilities)28 b Fl(:)40 b Fk(DRAFT)31 b │ │ │ │ │ +Fl(June)e(3,)i(2025)p 2824 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(;) │ │ │ │ │ @@ -7406,22 +7405,22 @@ │ │ │ │ │ 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 1084 4 v 1265 100 a Fp(Utilities)28 │ │ │ │ │ -b Fl(:)40 b Fk(DRAFT)122 b Fl(Ma)m(y)31 b(1,)g(2024)p │ │ │ │ │ -2724 100 V 1084 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 │ │ │ │ │ +TeXDict begin 27 26 bop 91 100 1077 4 v 1258 100 a Fp(Utilities)28 │ │ │ │ │ +b Fl(:)41 b Fk(DRAFT)121 b Fl(June)29 b(3,)i(2025)p 2731 │ │ │ │ │ +100 V 1077 w Fq(27)111 399 y(5.)46 b Fp(IP)h(*)h(IP_mergeUp)d(\()i(IP)h │ │ │ │ │ +(*ip1,)e(IP)h(*ip2)g(\))g(;)227 547 y Fq(This)32 b(metho)s(d)h(merges)g │ │ │ │ │ +(t)m(w)m(o)h(singly)f(link)m(ed)g(lists)g(in)m(to)h(one.)49 │ │ │ │ │ +b(If)32 b(the)h(t)m(w)m(o)h(lists)f(are)h(in)e(ascending)h(order,)227 │ │ │ │ │ +660 y(the)e(new)f(list)h(is)f(also)h(in)g(ascending)f(order.)40 │ │ │ │ │ +b(The)30 b(head)g(of)h(the)g(new)e(list)i(is)g(returned.)111 │ │ │ │ │ 845 y(6.)46 b Fp(IP)h(*)h(IP_mergeSortUp)c(\()j(IP)g(*ip)g(\))h(;)227 │ │ │ │ │ 993 y Fq(This)30 b(metho)s(d)g(sorts)g(a)h(list)g(in)m(to)g(ascending)g │ │ │ │ │ (order)f(using)g(a)g(merge)h(sort.)111 1178 y(7.)46 b │ │ │ │ │ Fp(IP)h(*)h(IP_radixSortUp)c(\()j(IP)g(*ip)g(\))h(;)227 │ │ │ │ │ 1327 y Fq(This)30 b(metho)s(d)g(sorts)g(a)h(list)g(in)m(to)g(ascending) │ │ │ │ │ g(order)f(using)g(a)g(radix)g(sort.)111 1511 y(8.)46 │ │ │ │ │ b Fp(IP)h(*)h(IP_radixSortDown)43 b(\()48 b(IP)f(*ip)g(\))g(;)227 │ │ │ │ │ @@ -7474,18 +7473,18 @@ │ │ │ │ │ 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 1084 │ │ │ │ │ -4 v 1266 w Fp(Utilities)28 b Fl(:)40 b Fk(DRAFT)31 b │ │ │ │ │ -Fl(Ma)m(y)g(1,)g(2024)p 2817 100 V 111 399 a Fq(3.)46 │ │ │ │ │ -b Fp(void)h(I2OP_free)e(\()j(I2OP)e(*i2op)h(\))g(;)227 │ │ │ │ │ +TeXDict begin 28 27 bop 0 100 a Fq(28)p 182 100 1077 │ │ │ │ │ +4 v 1259 w Fp(Utilities)28 b Fl(:)40 b Fk(DRAFT)31 b │ │ │ │ │ +Fl(June)e(3,)i(2025)p 2824 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 │ │ │ │ │ @@ -7534,18 +7533,18 @@ │ │ │ │ │ (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 1084 4 v 1265 100 a Fp(Utilities)28 │ │ │ │ │ -b Fl(:)40 b Fk(DRAFT)122 b Fl(Ma)m(y)31 b(1,)g(2024)p │ │ │ │ │ -2724 100 V 1084 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 │ │ │ │ │ +TeXDict begin 29 28 bop 91 100 1077 4 v 1258 100 a Fp(Utilities)28 │ │ │ │ │ +b Fl(:)41 b Fk(DRAFT)121 b Fl(June)29 b(3,)i(2025)p 2731 │ │ │ │ │ +100 V 1077 w Fq(29)337 399 y Fm(\210)45 b Fq(The)33 b │ │ │ │ │ +Fp(msgFile)e Fq(parameter)j(determines)f(the)h(message)g(\014le)f(|)h │ │ │ │ │ (if)f Fp(msgFile)e Fq(is)i Fp(stdout)p Fq(,)g(then)g(the)427 │ │ │ │ │ 511 y(message)27 b(\014le)f(is)g Fk(stdout)p Fq(,)i(otherwise)e(a)h │ │ │ │ │ (\014le)f(is)f(op)s(ened)g(with)h Fk(app)-5 b(end)28 │ │ │ │ │ b Fq(status)e(to)g(receiv)m(e)i(an)m(y)e(output)427 624 │ │ │ │ │ y(data.)337 770 y Fm(\210)45 b Fq(The)30 b Fp(target)f │ │ │ │ │ Fq(parameter)i(denotes)f(the)h(t)m(yp)s(e)g(of)f(v)m(ector\(s\))j(to)e │ │ │ │ │ (b)s(e)e(sorted.)500 917 y Fo({)45 b Fp(IV)30 b Fq(|)g │ │ │ │ │ @@ -7609,17 +7608,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 1084 4 v 1265 100 a Fp(Utilities)28 │ │ │ │ │ -b Fl(:)40 b Fk(DRAFT)122 b Fl(Ma)m(y)31 b(1,)g(2024)p │ │ │ │ │ -2724 100 V 1084 w Fq(31)0 399 y Fp(FVfprintf\(\))p Fq(,)d(16)0 │ │ │ │ │ +TeXDict begin 31 30 bop 91 100 1077 4 v 1258 100 a Fp(Utilities)28 │ │ │ │ │ +b Fl(:)41 b Fk(DRAFT)121 b Fl(June)29 b(3,)i(2025)p 2731 │ │ │ │ │ +100 V 1077 w Fq(31)0 399 y Fp(FVfprintf\(\))p Fq(,)d(16)0 │ │ │ │ │ 513 y Fp(FVfree\(\))p Fq(,)g(16)0 627 y Fp(FVfscanf\(\))p │ │ │ │ │ Fq(,)g(16)0 741 y Fp(FVgather\(\))p Fq(,)g(17)0 855 y │ │ │ │ │ Fp(FVgatherAddZero\(\))p Fq(,)e(17)0 969 y Fp(FVgatherZero\(\))p │ │ │ │ │ Fq(,)h(17)0 1083 y Fp(FVinit\(\))p Fq(,)h(16)0 1197 y │ │ │ │ │ Fp(FVinit2\(\))p Fq(,)g(16)0 1311 y Fp(FVinvPerm\(\))p │ │ │ │ │ Fq(,)g(17)0 1425 y Fp(FVmax\(\))p Fq(,)h(17)0 1539 y │ │ │ │ │ Fp(FVmaxabs\(\))p Fq(,)f(17)0 1654 y Fp(FVmin\(\))p Fq(,)h(17)0 │ │ │ │ │ @@ -7678,17 +7677,17 @@ │ │ │ │ │ Fq(,)h(15)1992 4724 y Fp(IVscatter\(\))p Fq(,)f(15)1992 │ │ │ │ │ 4838 y Fp(IVshuffle\(\))p Fq(,)g(16)1992 4952 y Fp │ │ │ │ │ (IVsortUpAndCompress\(\))p Fq(,)d(22)1992 5066 y Fp(IVsum\(\))p │ │ │ │ │ Fq(,)k(15)1992 5180 y Fp(IVsumabs\(\))p Fq(,)f(15)1992 │ │ │ │ │ 5293 y Fp(IVswap\(\))p Fq(,)h(15)1992 5407 y Fp(IVzero\(\))p │ │ │ │ │ Fq(,)g(16)p eop end │ │ │ │ │ %%Page: 32 32 │ │ │ │ │ -TeXDict begin 32 31 bop 0 100 a Fq(32)p 182 100 1084 │ │ │ │ │ -4 v 1266 w Fp(Utilities)28 b Fl(:)40 b Fk(DRAFT)31 b │ │ │ │ │ -Fl(Ma)m(y)g(1,)g(2024)p 2817 100 V 0 399 a Fp(IVZVisortDown\(\))p │ │ │ │ │ +TeXDict begin 32 31 bop 0 100 a Fq(32)p 182 100 1077 │ │ │ │ │ +4 v 1259 w Fp(Utilities)28 b Fl(:)40 b Fk(DRAFT)31 b │ │ │ │ │ +Fl(June)e(3,)i(2025)p 2824 100 V 0 399 a Fp(IVZVisortDown\(\))p │ │ │ │ │ Fq(,)26 b(21)0 511 y Fp(IVZVisortUp\(\))p Fq(,)h(21)0 │ │ │ │ │ 624 y Fp(IVZVqsortDown\(\))p Fq(,)f(22)0 737 y Fp(IVZVqsortUp\(\))p │ │ │ │ │ Fq(,)h(22)0 850 y Fp(IVZVsortUpAndCompress\(\))p Fq(,)d(23)0 │ │ │ │ │ 1040 y Fp(PCVcopy\(\))p Fq(,)k(19)0 1153 y Fp(PCVfree\(\))p │ │ │ │ │ Fq(,)g(18)0 1266 y Fp(PCVinit\(\))p Fq(,)g(18)0 1379 │ │ │ │ │ y Fp(PCVsetup\(\))p Fq(,)g(19)0 1491 y Fp(PDVcopy\(\))p │ │ │ │ │ Fq(,)g(19)0 1604 y Fp(PDVfree\(\))p Fq(,)g(19)0 1717 │ │ │ │ │ ├── ps2ascii {} │ │ │ │ │ │ @@ -22,15 +22,15 @@ │ │ │ │ │ │ struct _I2OP { │ │ │ │ │ │ int value0 ; │ │ │ │ │ │ int value1 ; │ │ │ │ │ │ void *value2 ; │ │ │ │ │ │ I2OP *next ; │ │ │ │ │ │ } ; │ │ │ │ │ │ 1 │ │ │ │ │ │ - 2 Utilities : DRAFT May 1, 2024 │ │ │ │ │ │ + 2 Utilities : DRAFT June 3, 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 May 1, 2024 3 │ │ │ │ │ │ + Utilities : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 4 Utilities : DRAFT June 3, 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 May 1, 2024 5 │ │ │ │ │ │ + Utilities : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 6 Utilities : DRAFT June 3, 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 May 1, 2024 7 │ │ │ │ │ │ + Utilities : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 8 Utilities : DRAFT June 3, 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 May 1, 2024 9 │ │ │ │ │ │ + Utilities : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 10 Utilities : DRAFT June 3, 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 May 1, 2024 11 │ │ │ │ │ │ + Utilities : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 12 Utilities : DRAFT June 3, 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 May 1, 2024 13 │ │ │ │ │ │ + Utilities : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 14 Utilities : DRAFT June 3, 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 May 1, 2024 15 │ │ │ │ │ │ + Utilities : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 16 Utilities : DRAFT June 3, 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 May 1, 2024 17 │ │ │ │ │ │ + Utilities : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 18 Utilities : DRAFT June 3, 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 May 1, 2024 19 │ │ │ │ │ │ + Utilities : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 20 Utilities : DRAFT June 3, 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 May 1, 2024 21 │ │ │ │ │ │ + Utilities : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 22 Utilities : DRAFT June 3, 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 May 1, 2024 23 │ │ │ │ │ │ + Utilities : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 24 Utilities : DRAFT June 3, 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 May 1, 2024 25 │ │ │ │ │ │ + Utilities : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 26 Utilities : DRAFT June 3, 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 May 1, 2024 27 │ │ │ │ │ │ + Utilities : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 28 Utilities : DRAFT June 3, 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 May 1, 2024 29 │ │ │ │ │ │ + Utilities : DRAFT June 3, 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 May 1, 2024 31 │ │ │ │ │ │ + Utilities : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 32 Utilities : DRAFT June 3, 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.05.01:0545 │ │ │ │ │ +%DVIPSSource: TeX output 2025.06.03:1221 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -2350,21 +2350,22 @@ │ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ │ /UnderlineThickness 50 def │ │ │ │ │ end readonly def │ │ │ │ │ /Encoding 256 array │ │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ │ dup 44 /comma put │ │ │ │ │ dup 48 /zero put │ │ │ │ │ -dup 49 /one put │ │ │ │ │ dup 50 /two put │ │ │ │ │ -dup 52 /four put │ │ │ │ │ +dup 51 /three put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 77 /M put │ │ │ │ │ -dup 97 /a put │ │ │ │ │ -dup 121 /y put │ │ │ │ │ +dup 74 /J put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ +dup 110 /n put │ │ │ │ │ +dup 117 /u put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ │ @@ -2545,68 +2546,70 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004ACD1870 │ │ │ │ │ -A5EA947858F5795870BFE1343AD803FB854BF8F5A4E794E8EC57BE41DB5B8734 │ │ │ │ │ -13E47950F29A81EA0C81EA798863883D7F41F78325CA190CBBFFE822AE494550 │ │ │ │ │ -4BE83703071FC9512D128927AF3F63CEF8F86ABE1E15D7B4DDD39576E7DFF45E │ │ │ │ │ -3CB4115AAB1830DE8647B915DB4BEBEB5235C281E098B899BAB951D8D5798F01 │ │ │ │ │ -7F7C47336D31438E5126738AFEAB29E9A7CBE06DE4DD604477B542D2620DFD58 │ │ │ │ │ -28FE34238572F23C5A8EB7ACEE1E154DA13FC1A5AA67A3BA8C5CDFB2B80312C9 │ │ │ │ │ -BC9FAE56D08DDFA9498E6EF0D0F6BD18B3923E0B670B0740528BC843610736CB │ │ │ │ │ -80228C105C2F72C3C22D610C3D8C268DEEA2AEEE3221E198E79FE2966487360C │ │ │ │ │ -84AE08AC326F48B21447652121B1EB68AF857B8628F27BB4ED00F273E0DD044A │ │ │ │ │ -7D11A5BFAAC0A82328444CC9DD90167681B07D55CE28655F40C21250A226DEAB │ │ │ │ │ -2D46FFB680CB9242BE192AC0E55A44D45709FA6DE638C130D92C4E9B07BC3D61 │ │ │ │ │ -25CC2F0A7ED4F3574242FFE4461272EB1401266EEF551E0E2B0EF51FA8F250EC │ │ │ │ │ -FD9AFB6F5A0CC442B566BC24400133E3E9B9A9FC801CEF284FD2B3ECA43421FA │ │ │ │ │ -51E5D1EFE7BEAA96658362C438A0A5A6DCBC664A85EF88037B42355195B9D19C │ │ │ │ │ -7961D5F63B123451B298CD52C144FCD4F3641A823FBA14605E2DFD845E89102C │ │ │ │ │ -4E345CFD80E3EE6F097095A84C941FFC91B234F3615E4EE4C5D564284656E364 │ │ │ │ │ -AB9C4D1DE05F8FD065CA6064893F0CF3A3A501D59EF6568D05D818A010D06518 │ │ │ │ │ -E2C20418ADD1E652867F265084A27A5FE0C32213C59FFC3A84EDC89382521E5B │ │ │ │ │ -8AF66D76601F83C5C33CC9CF968C77B66F1FA074AC3DAD8E453C9264D03969EF │ │ │ │ │ -9E387BB3BEAA4BF0A9D88BA2CE6094E8996A3752A657E322A57AF006444BF516 │ │ │ │ │ -501C43CAA1BA7F16A3B6E4D3EBDECCCC19564DF18FB68194C132238A5441A21A │ │ │ │ │ -F52285CA1CA94A4BEC61EB509FA35EA5E393D662D938F4291F37EB7C2D5815BE │ │ │ │ │ -446813E1CFD06FFFFF2C4355C9DAFA48E765F4CC5DE4B9E37CFFB75E7A0B6F4B │ │ │ │ │ -4E412496F9C27DF4BDD90A869F0EBD81A57AE0B84051450A5A3E06CB9930DB2C │ │ │ │ │ -7C2DDB774BE870AEFCC9F4F067BE243FF3FD4B5C71B96C607DC4975973AF2650 │ │ │ │ │ -E7DF2BE3523A370EEDD07B5456B96E372ED10510CE677C044E609F21E93652FD │ │ │ │ │ -33CE612F587530D12214A3719CDB170C315B5D8763D5D4C67B5CAE90309E77AC │ │ │ │ │ -B45EB356C13A7BDE0D7320A9849CA357E30D7CF1085FFD70071932C3180AFC28 │ │ │ │ │ -B093016BA3F49A3878C34BB4A8727A441EB6CFC1A73F2313A7BF8D32EDF27E62 │ │ │ │ │ -EBEBC058FBA80B136FD2DE05C673B66482224ECEC63EDFB519AC13B5CC6624A6 │ │ │ │ │ -B3FD79037DA3851E93A386115852DBA88B176F21EDDB5386DC7C993C4210B28F │ │ │ │ │ -438131A586E34A09724E7CE60139F8247BFF14D2674805B3BD454C134728A43E │ │ │ │ │ -139E0AF71A7AC5CE42041EC83FD454B00AD29959FCF007789FFAF2D3492DCA4B │ │ │ │ │ -566EAFE97591ABC51CD0CD9BCD64E285FB823E41AA817E96B2B224005DAA4E15 │ │ │ │ │ -2141DB436B9D3FBA4EE4C876FD19A2E5133106FE2B9F704CB9614FCDC91B7950 │ │ │ │ │ -57053F45A5ED993B48189AAFAD5289F97AE2B0AEB5606579F6BD75F743EDB5B6 │ │ │ │ │ -5AA8F8A64CE507A47325081B3A013DB1BD596CDD3A83D2F29B070D6F9C57496E │ │ │ │ │ -14DF3F0F731C3BB00F2CE3D4BBACF1320322195D1DEA7A545BB4725BD1C6EC3D │ │ │ │ │ -63250C72B897741F8599D9D9BD2FB50EC80EFF2ECD6CE6603E95AABB45462ACF │ │ │ │ │ -12B005EE5979B6B05BCE9B97061686102349142A3CCC26D57F2A3283DD8B6E2A │ │ │ │ │ -98885E48C0D4A1A5C9612EDCB3B3D265E9B8CCCCA5D99F07F96C15B27D6A161F │ │ │ │ │ -936599E503C2859927201CACC31581AB7AB84F9EC9FFADC239F01DCC55940AB7 │ │ │ │ │ -FA884AA1EB6494C8E53DAD66E75A317428ACF9D943A74683BF547958F67D9E36 │ │ │ │ │ -F985EED50DEBCF255756A821927CB73848DCF167E96E975E959DE27FE7BA4FBA │ │ │ │ │ -D0EFC003F019D87572D6F9C73FC5B880C3EEDB7EF98E5EC3D25D6FE0015A6590 │ │ │ │ │ -E3C6EE632D7F6558B914609A8829CD1DEAB83A3F1207D5C3AAC9EAEA9DE1B4F8 │ │ │ │ │ -2375C5D4F630BCE13475F941ED2324D2CD4DCF2285298EAA4FFF89433D853860 │ │ │ │ │ -A974A9FC0808580FBDE7D02EDBB3D8C65BD3109AE8B359E96BFB7E21C696F440 │ │ │ │ │ -312B0CCAD810BF070DF8FC281E8198EB20A7FF9C9BCD291D74BC75EE46799485 │ │ │ │ │ -1AB2AE36B7E525034D146A856AF3BD9057A0033C08B606B89DD130548950C93D │ │ │ │ │ -94A8C92C47A34A791B1C108D2F36E899B79358B8081CCFC3D1A2F0521E4E2AE4 │ │ │ │ │ -7F500D6F2A53E5393E44201287225912590ABC738E8726622B67C3425639CCFB │ │ │ │ │ -F450B78A4918 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004B9BA1CC │ │ │ │ │ +580D3C6BDA4DC1B80B4365F1C80512453FC5316EC2D928FB731C3D6403E3C18B │ │ │ │ │ +E8424D644DF5E9A2134229C5C91CA68DB8E85BA2BB40F538F585DA6FA4037718 │ │ │ │ │ +B8053EBBA1E765346BCD5BDAA6C38115D31611D8A87A2238C145F2DA2F92E4DF │ │ │ │ │ +3987BD9C4D2A3D460E8941A68B125BCD9EE4F9FD262C4C8A71F47A2C81975635 │ │ │ │ │ +F1B981C274C53FA2ACCDE4C9D0A7C62D6C1EFF91CFC6712CA6A9F333C9564FCB │ │ │ │ │ +2A70F0AD715A79B10A08AB069E2A3C93BC0AED19D0CA10134B8DDDE8AF548DB2 │ │ │ │ │ +3A4AAA9C29682CF135BB767DAA16169A127EB50A7EECEB6480CF56A7D0F8AC56 │ │ │ │ │ +4A5090B3D75A790372886AF568D94C8165975A05BFBFDF1FFBA45F70700BB9E0 │ │ │ │ │ +57F3249EF9E9C8AD9CBCF6E4FD592DC4CDD2D7864F7C8A3FA6FC44C25C0CE7E1 │ │ │ │ │ +299F8A90B32B75DEA28917531621E1E7E0ECEE9E01665DEE99FBCF3EC3F30686 │ │ │ │ │ +513D7CBA745E660502603865D5A3E82D24B3F94B2884B21DC53AED87F49380E0 │ │ │ │ │ +68EE79C580931308DA762670C1F86F07FFB479773CD9C5DE6F22980DEC973D1C │ │ │ │ │ +A1E162D73932561BAAB24DE51DC8708291B666B36BABCA1FEDB6DD9C22572914 │ │ │ │ │ +7194DA044319F362452D53DD4D9A59134838E540F1E23805CEF53FF4F7519385 │ │ │ │ │ +1FAE3061F94369FEB1232BDA2E2A281E6972FB4524EFA37A598E7CDC097683EA │ │ │ │ │ +1B609952AEC0799B4711AAAB22D6B1D5CC729DE70897FDDC48AF0A12E40FFE30 │ │ │ │ │ +6528C601E68E8CFA4BBF897CF89DB712DE108DD1F084EFD917BFD9A70A74EB8F │ │ │ │ │ +D0D5B43CCC30373A5E871F18A969D01C69C2B4377622A0C8C4D7C4C28DDE5586 │ │ │ │ │ +BD17D5D640A6F396BD41993BD1932EE10953847F82F7BB36480B67A4F69F0763 │ │ │ │ │ +69423D1803B7BB60594ABEEE9578076639B84D8323F56104438803D45402FEE3 │ │ │ │ │ +045DAB16C4459DA9BBE01D0385CC771FB8DABDD8A9D280C18553F92FE6591CFD │ │ │ │ │ +26B82F28E6673BD823598D3F6CE03BEE04D9A21ED908DFC4F640227C148F133D │ │ │ │ │ +D32113275297C16EBCC9028AFD9102DE50E9CF67E7CF8C42BB8E73D1DAF8A5E2 │ │ │ │ │ +EF5979426229664A990DEF980A7038D2F229789D4F6EDBE1FB81BEC1A1BB14D7 │ │ │ │ │ +882515C62660E8877BE942712D57B86A2E19995AF087DECB7FD5208583C020AE │ │ │ │ │ +FEC86A2826530AD855006225300E4655F443C9360A8BAC96B5B096DDC9B12EDF │ │ │ │ │ +C862215AD6C432CF345FE701757E4EBB8C65F46912CB0F4DEF53672F7298D8F7 │ │ │ │ │ +EE51A9C5DE689A8D36956B7F0410893C0998DB03B73B4024CB046F8F6B32E07F │ │ │ │ │ +CD28A68AFB7152E45F1021DCD520D8A429FCDCA4B8054BAF0B48C4443280F198 │ │ │ │ │ +3360B078E6DEC37772DA8B629CFFD1534E8AA10E26B0BC58E92B9BF280C8EE45 │ │ │ │ │ +618EECDE904249F5A2010DC55D1028DFF4F058260B2B0A46541D6157970F44BD │ │ │ │ │ +D7483802D56A81184119DDBC914E8E394CBEEB506B61BB1CE2A3465252E5D8A3 │ │ │ │ │ +6BDD2D067E69D4ECEFC7D5568378F5F8B38EAFF138014185FE19DF7358A7A780 │ │ │ │ │ +3BE0E2CCD1561113F2F2319BDB503230DD0866121604710CEBBAA659ABFC010B │ │ │ │ │ +5CC40E5807F461D87E75BDC6AD96BCEF62AF668D48D7A76D08B57650F35CF609 │ │ │ │ │ +C0F791AEBEB75E29FA69596BAB419804AECE0F0238AAE64A6C13A22EBF4E3EAC │ │ │ │ │ +3570DECE85F54064486B2364D63E94FEB7C16350CDA318510A45C8848DB470ED │ │ │ │ │ +BFAFD2365681D65CFF3E6C1B4B7C8AE3066F96E819D05B97F3A6C2BFF8A72978 │ │ │ │ │ +EEB7F632FF604AD003A3CCA5A0465D53033A646E8082D3491EDECA3DA1A0E1BB │ │ │ │ │ +64BF36946520438D2EE72FA9EB1CEEDF56510AADA55A8DE280E23C904E0810FA │ │ │ │ │ +A3177CF684F06A4042DE4CD4AB21E2F0616153BEEE58EBBD89911FA43BC52969 │ │ │ │ │ +230C8137DB34C13E147B06C7A3875A931E1AC127E7D3EA0DF8346B6971F80901 │ │ │ │ │ +DC37F2DE1A0B81FD93CA3B5EB9B29ECABA1492901B1BA261DAB872FB3431C718 │ │ │ │ │ +9C9CDA7864908CD773864908DEB44E343221C2C4C335341789A46325D94C767C │ │ │ │ │ +740E3B60CE6D452A3A665967F568671FD7DD460B404B9C3D2EDCD47A336AA2C7 │ │ │ │ │ +BB0B1AC3823978F610629EF7AB526098A7EE7076F50A146D8134BA2DEC1B8ACF │ │ │ │ │ +68A7E4A9B7BE17FB71480516F2D6A8866E56CFD7C7A41311F48DDDD9887DACB8 │ │ │ │ │ +73FDAF5F25E956AFB0A9D530DE2E1128F006AAC9A78715BA2F90C8FED3729BFA │ │ │ │ │ +BDDD4098F870A27A91A0CB540D166FF86A442E95C9C361FD23378A2A138EAFB8 │ │ │ │ │ +D7050B486E1CB95068D890BCCD669456F3385C8F1793CE545099421368FE0F46 │ │ │ │ │ +53137AD2B65030B19CE7FF6B1669DB7A3C440AEF27149780E36C7097B7A8B71B │ │ │ │ │ +8789EECFA9A70B1F9695BB5D94E9A7D341291C1CA1BDEF4BE3EFCB8234CE9FFD │ │ │ │ │ +E1C4963CF919780129FA60162FEAA8AE97328F4BA14D949057A3EE74214F2D29 │ │ │ │ │ +51E7BE584446F6702F39957AE455CF8AF0C36AADAA39B53553D923CA5E9D4988 │ │ │ │ │ +76701B4F77DAE5185AC29900 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -3989,16 +3992,16 @@ │ │ │ │ │ /Fb 235[71 20[{}1 90.9091 /CMSY10 rf /Fc 206[35 35 48[{}2 │ │ │ │ │ 66.4176 /CMR8 rf /Fd 133[50 59 4[44 44 46 2[56 62 93 │ │ │ │ │ 31 2[31 62 2[51 62 50 1[54 11[86 5[84 5[42 6[80 12[56 │ │ │ │ │ 56 56 56 56 2[31 46[{}25 99.6264 /CMBX12 rf /Fe 139[62 │ │ │ │ │ 4[62 4[62 4[62 1[62 62 7[62 3[62 86[{}8 119.552 /CMTT12 │ │ │ │ │ rf /Ff 138[49 30 37 38 1[46 46 51 74 23 42 1[28 46 42 │ │ │ │ │ 1[42 46 42 42 46 12[65 1[66 11[59 62 69 2[68 6[28 58[{}25 │ │ │ │ │ -90.9091 /CMTI10 rf /Fg 134[48 23[45 19[83 18[25 5[45 │ │ │ │ │ -1[45 45 45 3[25 44[{}9 90.9091 /CMSL10 rf /Fh 134[71 │ │ │ │ │ +90.9091 /CMTI10 rf /Fg 138[51 6[51 8[40 26[47 15[25 4[45 │ │ │ │ │ +1[45 45 1[45 3[25 44[{}10 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 │ │ │ │ │ @@ -4117,17 +4120,17 @@ │ │ │ │ │ (oin)m(ter)g(to)h(the)g(base)f(arra)m(y)h(from)f(the)g │ │ │ │ │ Fj(ZV)g Fk(ob)5 b(ject.)41 b(On)29 b(the)g(other)h(hand,)e(the)i(con)m │ │ │ │ │ (v)m(enience)0 4867 y(mak)m(es)h(it)g(a)g(widely)f(used)g(ob)5 │ │ │ │ │ b(ject.)0 5179 y Fh(1.1)135 b(Data)46 b(Structure)0 5407 │ │ │ │ │ y Fk(The)30 b Fj(ZV)g Fk(structure)g(has)g(three)g(\014elds.)1927 │ │ │ │ │ 5656 y(1)p eop end │ │ │ │ │ %%Page: 2 2 │ │ │ │ │ -TeXDict begin 2 1 bop 0 100 a Fk(2)p 136 100 1278 4 v │ │ │ │ │ -1460 w Fj(ZV)30 b Fg(:)h Ff(DRAFT)f Fg(Ma)m(y)h(1,)g(2024)p │ │ │ │ │ -2622 100 V 137 399 a Fi(\210)45 b Fj(int)i(size)29 b │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fk(2)p 136 100 1272 4 v │ │ │ │ │ +1453 w Fj(ZV)30 b Fg(:)h Ff(DRAFT)f Fg(June)f(3,)i(2025)p │ │ │ │ │ +2629 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 │ │ │ │ │ @@ -4182,17 +4185,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 1278 4 v 1460 100 a Fj(ZV)30 │ │ │ │ │ -b Fg(:)g Ff(DRAFT)121 b Fg(Ma)m(y)32 b(1,)f(2024)p 2575 │ │ │ │ │ -100 V 1278 w Fk(3)0 399 y Fd(1.2.2)112 b(Instance)38 │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1272 4 v 1453 100 a Fj(ZV)30 │ │ │ │ │ +b Fg(:)g Ff(DRAFT)121 b Fg(June)30 b(3,)h(2025)p 2582 │ │ │ │ │ +100 V 1272 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 │ │ │ │ │ @@ -4256,17 +4259,17 @@ │ │ │ │ │ Fk(with)i(the)g(size)h(of)f(the)g(v)m(ector)h(and)e Fj(**pentries)e │ │ │ │ │ Fk(with)j(the)g(base)g(address)227 5148 y(of)e(the)f(v)m(ector.)227 │ │ │ │ │ 5294 y Ff(Err)-5 b(or)27 b(che)-5 b(cking:)36 b Fk(If)22 │ │ │ │ │ b Fj(zv)p Fk(,)i Fj(psize)d Fk(or)h Fj(pentries)e Fk(is)i │ │ │ │ │ Fj(NULL)p Fk(,)g(an)g(error)g(message)i(is)e(prin)m(ted)g(and)g(the)g │ │ │ │ │ (program)227 5407 y(exits.)p eop end │ │ │ │ │ %%Page: 4 4 │ │ │ │ │ -TeXDict begin 4 3 bop 0 100 a Fk(4)p 136 100 1278 4 v │ │ │ │ │ -1460 w Fj(ZV)30 b Fg(:)h Ff(DRAFT)f Fg(Ma)m(y)h(1,)g(2024)p │ │ │ │ │ -2622 100 V 111 399 a Fk(8.)46 b Fj(void)h(ZV_setEntry)e(\()i(ZV)g(*zv,) │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fk(4)p 136 100 1272 4 v │ │ │ │ │ +1453 w Fj(ZV)30 b Fg(:)h Ff(DRAFT)f Fg(June)f(3,)i(2025)p │ │ │ │ │ +2629 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 │ │ │ │ │ @@ -4342,17 +4345,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 1278 4 v 1460 100 a Fj(ZV)30 │ │ │ │ │ -b Fg(:)g Ff(DRAFT)121 b Fg(Ma)m(y)32 b(1,)f(2024)p 2575 │ │ │ │ │ -100 V 1278 w Fk(5)0 399 y Fd(1.2.4)112 b(Utilit)m(y)38 │ │ │ │ │ +TeXDict begin 5 4 bop 91 100 1272 4 v 1453 100 a Fj(ZV)30 │ │ │ │ │ +b Fg(:)g Ff(DRAFT)121 b Fg(June)30 b(3,)h(2025)p 2582 │ │ │ │ │ +100 V 1272 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 │ │ │ │ │ @@ -4412,17 +4415,17 @@ │ │ │ │ │ b(The)24 b(n)m(um)m(b)s(er)f(of)i(en)m(tries)g(that)g(are)g(copied)g │ │ │ │ │ (is)g(the)f(smaller)227 5244 y(of)31 b(the)f(t)m(w)m(o)i(sizes.)227 │ │ │ │ │ 5407 y Ff(Err)-5 b(or)34 b(che)-5 b(cking:)40 b Fk(If)30 │ │ │ │ │ b Fj(zv1)g Fk(or)g Fj(zv2)g Fk(is)g Fj(NULL)p Fk(,)g(an)g(error)g │ │ │ │ │ (message)h(is)g(prin)m(ted)f(and)f(the)i(program)f(exits.)p │ │ │ │ │ eop end │ │ │ │ │ %%Page: 6 6 │ │ │ │ │ -TeXDict begin 6 5 bop 0 100 a Fk(6)p 136 100 1278 4 v │ │ │ │ │ -1460 w Fj(ZV)30 b Fg(:)h Ff(DRAFT)f Fg(Ma)m(y)h(1,)g(2024)p │ │ │ │ │ -2622 100 V 111 399 a Fk(8.)46 b Fj(void)h(ZV_log10profile)d(\()j(ZV)g │ │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fk(6)p 136 100 1272 4 v │ │ │ │ │ +1453 w Fj(ZV)30 b Fg(:)h Ff(DRAFT)f Fg(June)f(3,)i(2025)p │ │ │ │ │ +2629 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) │ │ │ │ │ @@ -4504,17 +4507,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 1278 4 v 1460 100 a Fj(ZV)30 │ │ │ │ │ -b Fg(:)g Ff(DRAFT)121 b Fg(Ma)m(y)32 b(1,)f(2024)p 2575 │ │ │ │ │ -100 V 1278 w Fk(7)111 399 y(6.)46 b Fj(int)h(ZV_writeToBinaryFile)42 │ │ │ │ │ +TeXDict begin 7 6 bop 91 100 1272 4 v 1453 100 a Fj(ZV)30 │ │ │ │ │ +b Fg(:)g Ff(DRAFT)121 b Fg(June)30 b(3,)h(2025)p 2582 │ │ │ │ │ +100 V 1272 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 │ │ │ │ │ @@ -4570,17 +4573,17 @@ │ │ │ │ │ 5140 y(data.)337 5294 y Fi(\210)45 b Fk(The)29 b Fj(inFile)f │ │ │ │ │ Fk(parameter)j(is)e(the)h(name)g(of)g(the)g(\014le)f(from)h(whic)m(h)f │ │ │ │ │ (to)h(read)g(in)f(the)h(ob)5 b(ject.)42 b Fj(inFile)427 │ │ │ │ │ 5407 y Fk(m)m(ust)31 b(b)s(e)e(of)i(the)f(form)g Fj(*.zvf)f │ │ │ │ │ Fk(for)h(a)h(formatted)g(\014le)g(or)f Fj(*.zvb)f Fk(for)h(a)h(binary)e │ │ │ │ │ (\014le.)p eop end │ │ │ │ │ %%Page: 8 8 │ │ │ │ │ -TeXDict begin 8 7 bop 0 100 a Fk(8)p 136 100 1278 4 v │ │ │ │ │ -1460 w Fj(ZV)30 b Fg(:)h Ff(DRAFT)f Fg(Ma)m(y)h(1,)g(2024)p │ │ │ │ │ -2622 100 V 337 399 a Fi(\210)45 b Fk(The)40 b Fj(outFile)f │ │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fk(8)p 136 100 1272 4 v │ │ │ │ │ +1453 w Fj(ZV)30 b Fg(:)h Ff(DRAFT)f Fg(June)f(3,)i(2025)p │ │ │ │ │ +2629 100 V 337 399 a Fi(\210)45 b Fk(The)40 b Fj(outFile)f │ │ │ │ │ Fk(parameter)i(is)g(the)g(name)g(of)f(the)h(\014le)g(to)g(whic)m(h)g │ │ │ │ │ (to)g(write)g(out)g(the)g(ob)5 b(ject.)72 b(If)427 511 │ │ │ │ │ y Fj(outfile)28 b Fk(is)j(of)f(the)g(form)g Fj(*.zvf)p │ │ │ │ │ Fk(,)f(the)h(ob)5 b(ject)31 b(is)f(written)g(to)h(a)f(formatted)h │ │ │ │ │ (\014le.)41 b(If)30 b Fj(outfile)e Fk(is)i(of)427 624 │ │ │ │ │ y(the)e(form)g Fj(*.zvb)p Fk(,)f(the)h(ob)5 b(ject)29 │ │ │ │ │ b(is)f(written)g(to)h(a)f(binary)f(\014le.)40 b(When)28 │ │ │ │ │ ├── ps2ascii {} │ │ │ │ │ │ @@ -22,15 +22,15 @@ │ │ │ │ │ │ Onemustchoose where to use this object. There is a substantial performance penalty for doing the │ │ │ │ │ │ simplest operations, and so when we need to manipulate an double vector inside a loop, we extract │ │ │ │ │ │ out the size and pointer to the base array from the ZV object. On the other hand, the convenience │ │ │ │ │ │ makes it a widely used object. │ │ │ │ │ │ 1.1 Data Structure │ │ │ │ │ │ The ZV structure has three fields. │ │ │ │ │ │ 1 │ │ │ │ │ │ - 2 ZV : DRAFT May 1, 2024 │ │ │ │ │ │ + 2 ZV : DRAFT June 3, 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 May 1, 2024 3 │ │ │ │ │ │ + ZV : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 4 ZV : DRAFT June 3, 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 May 1, 2024 5 │ │ │ │ │ │ + ZV : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 6 ZV : DRAFT June 3, 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 May 1, 2024 7 │ │ │ │ │ │ + ZV : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 8 ZV : DRAFT June 3, 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.05.01:0545 │ │ │ │ │ +%DVIPSSource: TeX output 2025.06.03:1221 │ │ │ │ │ %%BeginProcSet: tex.pro 0 0 │ │ │ │ │ %! │ │ │ │ │ /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S │ │ │ │ │ N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 │ │ │ │ │ mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 │ │ │ │ │ 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ │ │ │ │ │ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize │ │ │ │ │ @@ -2250,21 +2250,22 @@ │ │ │ │ │ /UnderlinePosition -100 def │ │ │ │ │ /UnderlineThickness 50 def │ │ │ │ │ end readonly def │ │ │ │ │ /Encoding 256 array │ │ │ │ │ 0 1 255 {1 index exch /.notdef put} for │ │ │ │ │ dup 44 /comma put │ │ │ │ │ dup 48 /zero put │ │ │ │ │ -dup 49 /one put │ │ │ │ │ dup 50 /two put │ │ │ │ │ -dup 52 /four put │ │ │ │ │ +dup 51 /three put │ │ │ │ │ +dup 53 /five put │ │ │ │ │ dup 58 /colon put │ │ │ │ │ -dup 77 /M put │ │ │ │ │ -dup 97 /a put │ │ │ │ │ -dup 121 /y put │ │ │ │ │ +dup 74 /J put │ │ │ │ │ +dup 101 /e put │ │ │ │ │ +dup 110 /n put │ │ │ │ │ +dup 117 /u put │ │ │ │ │ readonly def │ │ │ │ │ currentdict end │ │ │ │ │ currentfile eexec │ │ │ │ │ D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 │ │ │ │ │ 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 │ │ │ │ │ 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 │ │ │ │ │ EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C │ │ │ │ │ @@ -2445,68 +2446,70 @@ │ │ │ │ │ 7CA1534C4D5B05FC33F83790ECFD7641DF3FB94289E2A1F6E7D29AB1228A867A │ │ │ │ │ 6E1EF0E9C6F899B491DC18401C2C0A05FFFED46A72C245F7529B8EA55A038082 │ │ │ │ │ 8512307217D2A233C37004085BA3AEE379269F9FA7D0ADB4B19A95CC2AFE686E │ │ │ │ │ 55D88E47257C1FE6F235FEA295910569FE6DD5995512562359CC821E85A6C7A5 │ │ │ │ │ 79B470A9E340A6985189FF8B6AF914A6B0ECF93F47903221F95DE894A8F05B05 │ │ │ │ │ B7D99CD533EC5F931B18E6B39BECF67FA2D6DD1AEC76772B068BE06335A94C05 │ │ │ │ │ 7A4DDEE77B66101DA855C17AC312600370B34E31F5EC3A01300A8EB60B4C9767 │ │ │ │ │ -1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004ACD1870 │ │ │ │ │ -A5EA947858F5795870BFE1343AD803FB854BF8F5A4E794E8EC57BE41DB5B8734 │ │ │ │ │ -13E47950F29A81EA0C81EA798863883D7F41F78325CA190CBBFFE822AE494550 │ │ │ │ │ -4BE83703071FC9512D128927AF3F63CEF8F86ABE1E15D7B4DDD39576E7DFF45E │ │ │ │ │ -3CB4115AAB1830DE8647B915DB4BEBEB5235C281E098B899BAB951D8D5798F01 │ │ │ │ │ -7F7C47336D31438E5126738AFEAB29E9A7CBE06DE4DD604477B542D2620DFD58 │ │ │ │ │ -28FE34238572F23C5A8EB7ACEE1E154DA13FC1A5AA67A3BA8C5CDFB2B80312C9 │ │ │ │ │ -BC9FAE56D08DDFA9498E6EF0D0F6BD18B3923E0B670B0740528BC843610736CB │ │ │ │ │ -80228C105C2F72C3C22D610C3D8C268DEEA2AEEE3221E198E79FE2966487360C │ │ │ │ │ -84AE08AC326F48B21447652121B1EB68AF857B8628F27BB4ED00F273E0DD044A │ │ │ │ │ -7D11A5BFAAC0A82328444CC9DD90167681B07D55CE28655F40C21250A226DEAB │ │ │ │ │ -2D46FFB680CB9242BE192AC0E55A44D45709FA6DE638C130D92C4E9B07BC3D61 │ │ │ │ │ -25CC2F0A7ED4F3574242FFE4461272EB1401266EEF551E0E2B0EF51FA8F250EC │ │ │ │ │ -FD9AFB6F5A0CC442B566BC24400133E3E9B9A9FC801CEF284FD2B3ECA43421FA │ │ │ │ │ -51E5D1EFE7BEAA96658362C438A0A5A6DCBC664A85EF88037B42355195B9D19C │ │ │ │ │ -7961D5F63B123451B298CD52C144FCD4F3641A823FBA14605E2DFD845E89102C │ │ │ │ │ -4E345CFD80E3EE6F097095A84C941FFC91B234F3615E4EE4C5D564284656E364 │ │ │ │ │ -AB9C4D1DE05F8FD065CA6064893F0CF3A3A501D59EF6568D05D818A010D06518 │ │ │ │ │ -E2C20418ADD1E652867F265084A27A5FE0C32213C59FFC3A84EDC89382521E5B │ │ │ │ │ -8AF66D76601F83C5C33CC9CF968C77B66F1FA074AC3DAD8E453C9264D03969EF │ │ │ │ │ -9E387BB3BEAA4BF0A9D88BA2CE6094E8996A3752A657E322A57AF006444BF516 │ │ │ │ │ -501C43CAA1BA7F16A3B6E4D3EBDECCCC19564DF18FB68194C132238A5441A21A │ │ │ │ │ -F52285CA1CA94A4BEC61EB509FA35EA5E393D662D938F4291F37EB7C2D5815BE │ │ │ │ │ -446813E1CFD06FFFFF2C4355C9DAFA48E765F4CC5DE4B9E37CFFB75E7A0B6F4B │ │ │ │ │ -4E412496F9C27DF4BDD90A869F0EBD81A57AE0B84051450A5A3E06CB9930DB2C │ │ │ │ │ -7C2DDB774BE870AEFCC9F4F067BE243FF3FD4B5C71B96C607DC4975973AF2650 │ │ │ │ │ -E7DF2BE3523A370EEDD07B5456B96E372ED10510CE677C044E609F21E93652FD │ │ │ │ │ -33CE612F587530D12214A3719CDB170C315B5D8763D5D4C67B5CAE90309E77AC │ │ │ │ │ -B45EB356C13A7BDE0D7320A9849CA357E30D7CF1085FFD70071932C3180AFC28 │ │ │ │ │ -B093016BA3F49A3878C34BB4A8727A441EB6CFC1A73F2313A7BF8D32EDF27E62 │ │ │ │ │ -EBEBC058FBA80B136FD2DE05C673B66482224ECEC63EDFB519AC13B5CC6624A6 │ │ │ │ │ -B3FD79037DA3851E93A386115852DBA88B176F21EDDB5386DC7C993C4210B28F │ │ │ │ │ -438131A586E34A09724E7CE60139F8247BFF14D2674805B3BD454C134728A43E │ │ │ │ │ -139E0AF71A7AC5CE42041EC83FD454B00AD29959FCF007789FFAF2D3492DCA4B │ │ │ │ │ -566EAFE97591ABC51CD0CD9BCD64E285FB823E41AA817E96B2B224005DAA4E15 │ │ │ │ │ -2141DB436B9D3FBA4EE4C876FD19A2E5133106FE2B9F704CB9614FCDC91B7950 │ │ │ │ │ -57053F45A5ED993B48189AAFAD5289F97AE2B0AEB5606579F6BD75F743EDB5B6 │ │ │ │ │ -5AA8F8A64CE507A47325081B3A013DB1BD596CDD3A83D2F29B070D6F9C57496E │ │ │ │ │ -14DF3F0F731C3BB00F2CE3D4BBACF1320322195D1DEA7A545BB4725BD1C6EC3D │ │ │ │ │ -63250C72B897741F8599D9D9BD2FB50EC80EFF2ECD6CE6603E95AABB45462ACF │ │ │ │ │ -12B005EE5979B6B05BCE9B97061686102349142A3CCC26D57F2A3283DD8B6E2A │ │ │ │ │ -98885E48C0D4A1A5C9612EDCB3B3D265E9B8CCCCA5D99F07F96C15B27D6A161F │ │ │ │ │ -936599E503C2859927201CACC31581AB7AB84F9EC9FFADC239F01DCC55940AB7 │ │ │ │ │ -FA884AA1EB6494C8E53DAD66E75A317428ACF9D943A74683BF547958F67D9E36 │ │ │ │ │ -F985EED50DEBCF255756A821927CB73848DCF167E96E975E959DE27FE7BA4FBA │ │ │ │ │ -D0EFC003F019D87572D6F9C73FC5B880C3EEDB7EF98E5EC3D25D6FE0015A6590 │ │ │ │ │ -E3C6EE632D7F6558B914609A8829CD1DEAB83A3F1207D5C3AAC9EAEA9DE1B4F8 │ │ │ │ │ -2375C5D4F630BCE13475F941ED2324D2CD4DCF2285298EAA4FFF89433D853860 │ │ │ │ │ -A974A9FC0808580FBDE7D02EDBB3D8C65BD3109AE8B359E96BFB7E21C696F440 │ │ │ │ │ -312B0CCAD810BF070DF8FC281E8198EB20A7FF9C9BCD291D74BC75EE46799485 │ │ │ │ │ -1AB2AE36B7E525034D146A856AF3BD9057A0033C08B606B89DD130548950C93D │ │ │ │ │ -94A8C92C47A34A791B1C108D2F36E899B79358B8081CCFC3D1A2F0521E4E2AE4 │ │ │ │ │ -7F500D6F2A53E5393E44201287225912590ABC738E8726622B67C3425639CCFB │ │ │ │ │ -F450B78A4918 │ │ │ │ │ +1B2FA10DF7E91D3BB34A1B1CE7A0015A57C813E0280D873ADB8844004B9BA1CC │ │ │ │ │ +580D3C6BDA4DC1B80B4365F1C80512453FC5316EC2D928FB731C3D6403E3C18B │ │ │ │ │ +E8424D644DF5E9A2134229C5C91CA68DB8E85BA2BB40F538F585DA6FA4037718 │ │ │ │ │ +B8053EBBA1E765346BCD5BDAA6C38115D31611D8A87A2238C145F2DA2F92E4DF │ │ │ │ │ +3987BD9C4D2A3D460E8941A68B125BCD9EE4F9FD262C4C8A71F47A2C81975635 │ │ │ │ │ +F1B981C274C53FA2ACCDE4C9D0A7C62D6C1EFF91CFC6712CA6A9F333C9564FCB │ │ │ │ │ +2A70F0AD715A79B10A08AB069E2A3C93BC0AED19D0CA10134B8DDDE8AF548DB2 │ │ │ │ │ +3A4AAA9C29682CF135BB767DAA16169A127EB50A7EECEB6480CF56A7D0F8AC56 │ │ │ │ │ +4A5090B3D75A790372886AF568D94C8165975A05BFBFDF1FFBA45F70700BB9E0 │ │ │ │ │ +57F3249EF9E9C8AD9CBCF6E4FD592DC4CDD2D7864F7C8A3FA6FC44C25C0CE7E1 │ │ │ │ │ +299F8A90B32B75DEA28917531621E1E7E0ECEE9E01665DEE99FBCF3EC3F30686 │ │ │ │ │ +513D7CBA745E660502603865D5A3E82D24B3F94B2884B21DC53AED87F49380E0 │ │ │ │ │ +68EE79C580931308DA762670C1F86F07FFB479773CD9C5DE6F22980DEC973D1C │ │ │ │ │ +A1E162D73932561BAAB24DE51DC8708291B666B36BABCA1FEDB6DD9C22572914 │ │ │ │ │ +7194DA044319F362452D53DD4D9A59134838E540F1E23805CEF53FF4F7519385 │ │ │ │ │ +1FAE3061F94369FEB1232BDA2E2A281E6972FB4524EFA37A598E7CDC097683EA │ │ │ │ │ +1B609952AEC0799B4711AAAB22D6B1D5CC729DE70897FDDC48AF0A12E40FFE30 │ │ │ │ │ +6528C601E68E8CFA4BBF897CF89DB712DE108DD1F084EFD917BFD9A70A74EB8F │ │ │ │ │ +D0D5B43CCC30373A5E871F18A969D01C69C2B4377622A0C8C4D7C4C28DDE5586 │ │ │ │ │ +BD17D5D640A6F396BD41993BD1932EE10953847F82F7BB36480B67A4F69F0763 │ │ │ │ │ +69423D1803B7BB60594ABEEE9578076639B84D8323F56104438803D45402FEE3 │ │ │ │ │ +045DAB16C4459DA9BBE01D0385CC771FB8DABDD8A9D280C18553F92FE6591CFD │ │ │ │ │ +26B82F28E6673BD823598D3F6CE03BEE04D9A21ED908DFC4F640227C148F133D │ │ │ │ │ +D32113275297C16EBCC9028AFD9102DE50E9CF67E7CF8C42BB8E73D1DAF8A5E2 │ │ │ │ │ +EF5979426229664A990DEF980A7038D2F229789D4F6EDBE1FB81BEC1A1BB14D7 │ │ │ │ │ +882515C62660E8877BE942712D57B86A2E19995AF087DECB7FD5208583C020AE │ │ │ │ │ +FEC86A2826530AD855006225300E4655F443C9360A8BAC96B5B096DDC9B12EDF │ │ │ │ │ +C862215AD6C432CF345FE701757E4EBB8C65F46912CB0F4DEF53672F7298D8F7 │ │ │ │ │ +EE51A9C5DE689A8D36956B7F0410893C0998DB03B73B4024CB046F8F6B32E07F │ │ │ │ │ +CD28A68AFB7152E45F1021DCD520D8A429FCDCA4B8054BAF0B48C4443280F198 │ │ │ │ │ +3360B078E6DEC37772DA8B629CFFD1534E8AA10E26B0BC58E92B9BF280C8EE45 │ │ │ │ │ +618EECDE904249F5A2010DC55D1028DFF4F058260B2B0A46541D6157970F44BD │ │ │ │ │ +D7483802D56A81184119DDBC914E8E394CBEEB506B61BB1CE2A3465252E5D8A3 │ │ │ │ │ +6BDD2D067E69D4ECEFC7D5568378F5F8B38EAFF138014185FE19DF7358A7A780 │ │ │ │ │ +3BE0E2CCD1561113F2F2319BDB503230DD0866121604710CEBBAA659ABFC010B │ │ │ │ │ +5CC40E5807F461D87E75BDC6AD96BCEF62AF668D48D7A76D08B57650F35CF609 │ │ │ │ │ +C0F791AEBEB75E29FA69596BAB419804AECE0F0238AAE64A6C13A22EBF4E3EAC │ │ │ │ │ +3570DECE85F54064486B2364D63E94FEB7C16350CDA318510A45C8848DB470ED │ │ │ │ │ +BFAFD2365681D65CFF3E6C1B4B7C8AE3066F96E819D05B97F3A6C2BFF8A72978 │ │ │ │ │ +EEB7F632FF604AD003A3CCA5A0465D53033A646E8082D3491EDECA3DA1A0E1BB │ │ │ │ │ +64BF36946520438D2EE72FA9EB1CEEDF56510AADA55A8DE280E23C904E0810FA │ │ │ │ │ +A3177CF684F06A4042DE4CD4AB21E2F0616153BEEE58EBBD89911FA43BC52969 │ │ │ │ │ +230C8137DB34C13E147B06C7A3875A931E1AC127E7D3EA0DF8346B6971F80901 │ │ │ │ │ +DC37F2DE1A0B81FD93CA3B5EB9B29ECABA1492901B1BA261DAB872FB3431C718 │ │ │ │ │ +9C9CDA7864908CD773864908DEB44E343221C2C4C335341789A46325D94C767C │ │ │ │ │ +740E3B60CE6D452A3A665967F568671FD7DD460B404B9C3D2EDCD47A336AA2C7 │ │ │ │ │ +BB0B1AC3823978F610629EF7AB526098A7EE7076F50A146D8134BA2DEC1B8ACF │ │ │ │ │ +68A7E4A9B7BE17FB71480516F2D6A8866E56CFD7C7A41311F48DDDD9887DACB8 │ │ │ │ │ +73FDAF5F25E956AFB0A9D530DE2E1128F006AAC9A78715BA2F90C8FED3729BFA │ │ │ │ │ +BDDD4098F870A27A91A0CB540D166FF86A442E95C9C361FD23378A2A138EAFB8 │ │ │ │ │ +D7050B486E1CB95068D890BCCD669456F3385C8F1793CE545099421368FE0F46 │ │ │ │ │ +53137AD2B65030B19CE7FF6B1669DB7A3C440AEF27149780E36C7097B7A8B71B │ │ │ │ │ +8789EECFA9A70B1F9695BB5D94E9A7D341291C1CA1BDEF4BE3EFCB8234CE9FFD │ │ │ │ │ +E1C4963CF919780129FA60162FEAA8AE97328F4BA14D949057A3EE74214F2D29 │ │ │ │ │ +51E7BE584446F6702F39957AE455CF8AF0C36AADAA39B53553D923CA5E9D4988 │ │ │ │ │ +76701B4F77DAE5185AC29900 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ 0000000000000000000000000000000000000000000000000000000000000000 │ │ │ │ │ @@ -5613,22 +5616,22 @@ │ │ │ │ │ FFFFFFC0FFFFFFFFC07FFFFFFF807FFFFFFF807FFFFFFF803FFFFFFF003FFFFFFF001FFF │ │ │ │ │ FFFE000FFFFFFC0007FFFFF80003FFFFF00000FFFFC000003FFF0000000FFC000022227B │ │ │ │ │ A72D>136 D E │ │ │ │ │ /Ff load 0 Ff currentfont 91.25 scalefont put/FMat X/FBB │ │ │ │ │ X/IEn X │ │ │ │ │ %EndDVIPSBitmapFont │ │ │ │ │ /Fg 134[45 52 29[62 53 75 2[62 2[69 72 4[62 7[75 1[69 │ │ │ │ │ -68 2[71 2[25 25 58[{}15 90.9091 /CMMI10 rf /Fh 134[48 │ │ │ │ │ -23[45 19[83 18[25 5[45 1[45 45 45 3[25 44[{}9 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 │ │ │ │ │ +68 2[71 2[25 25 58[{}15 90.9091 /CMMI10 rf /Fh 138[51 │ │ │ │ │ +6[51 8[40 26[47 15[25 4[45 1[45 45 1[45 3[25 44[{}10 │ │ │ │ │ +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 │ │ │ │ │ @@ -5698,17 +5701,17 @@ │ │ │ │ │ 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 1226 4 v │ │ │ │ │ -1407 w Fl(Misc)30 b Fh(:)40 b Fj(DRAFT)31 b Fh(Ma)m(y)g(1,)g(2024)p │ │ │ │ │ -2675 100 V 111 399 a Fp(2.)46 b Fl(void)h(mkNDperm2)e(\()j(int)f(n1,)f │ │ │ │ │ +TeXDict begin 2 1 bop 0 100 a Fp(2)p 136 100 1219 4 v │ │ │ │ │ +1401 w Fl(Misc)29 b Fh(:)40 b Fj(DRAFT)31 b Fh(June)e(3,)i(2025)p │ │ │ │ │ +2682 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 │ │ │ │ │ @@ -5795,18 +5798,18 @@ │ │ │ │ │ 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 1226 4 v 1407 100 a Fl(Misc)29 │ │ │ │ │ -b Fh(:)41 b Fj(DRAFT)121 b Fh(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2628 100 V 1226 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 │ │ │ │ │ +TeXDict begin 3 2 bop 91 100 1219 4 v 1400 100 a Fl(Misc)29 │ │ │ │ │ +b Fh(:)41 b Fj(DRAFT)121 b Fh(June)29 b(3,)i(2025)p 2634 │ │ │ │ │ +100 V 1219 w Fp(3)111 399 y(5.)46 b Fl(void)h(fp2DGrid)e(\()j(int)f │ │ │ │ │ +(n1,)g(int)g(n2,)g(int)f(ivec[],)g(FILE)h(*fp)g(\))g(;)227 │ │ │ │ │ 562 y Fp(This)40 b(metho)s(d)f(writes)i(the)f Fl(ivec[])f │ │ │ │ │ Fp(v)m(ector)j(on)m(to)f(an)f Fl(n1)48 b(x)f(n2)40 b │ │ │ │ │ Fp(grid)g(to)h(\014le)f Fl(fp)p Fp(.)70 b(This)39 b(is)i(useful)e(to) │ │ │ │ │ 227 675 y(visualize)32 b(an)e(ordering)g(or)h(a)f(metric)h(on)g(a)g │ │ │ │ │ (grid.)227 838 y Fj(Err)-5 b(or)34 b(che)-5 b(cking:)40 │ │ │ │ │ b Fp(If)29 b Fl(n1)g Fp(or)h Fl(n2)f Fp(are)h(less)g(than)g(or)g(equal) │ │ │ │ │ g(to)h(zero,)f(or)g(if)g Fl(ivec)f Fp(or)g Fl(fp)h Fp(are)g │ │ │ │ │ @@ -5877,17 +5880,17 @@ │ │ │ │ │ (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 1226 4 v │ │ │ │ │ -1407 w Fl(Misc)30 b Fh(:)40 b Fj(DRAFT)31 b Fh(Ma)m(y)g(1,)g(2024)p │ │ │ │ │ -2675 100 V 111 399 a Fp(2.)46 b Fl(ETree)h(*)g(orderViaND)e(\()j(Graph) │ │ │ │ │ +TeXDict begin 4 3 bop 0 100 a Fp(4)p 136 100 1219 4 v │ │ │ │ │ +1401 w Fl(Misc)29 b Fh(:)40 b Fj(DRAFT)31 b Fh(June)e(3,)i(2025)p │ │ │ │ │ +2682 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 │ │ │ │ │ @@ -5965,20 +5968,20 @@ │ │ │ │ │ 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 1226 4 v 1407 100 a Fl(Misc)29 │ │ │ │ │ -b Fh(:)41 b Fj(DRAFT)121 b Fh(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2628 100 V 1226 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 │ │ │ │ │ +TeXDict begin 5 4 bop 91 100 1219 4 v 1400 100 a Fl(Misc)29 │ │ │ │ │ +b Fh(:)41 b Fj(DRAFT)121 b Fh(June)29 b(3,)i(2025)p 2634 │ │ │ │ │ +100 V 1219 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 │ │ │ │ │ (width)227 737 y Fl(linewidth2)23 b Fp(is)j(dra)m(wn,)g(assuming)g │ │ │ │ │ Fl(linewidth2)c Fg(>)j Fp(0.)40 b(If)25 b Fl(tagsIV)f │ │ │ │ │ Fp(is)i Fl(NULL)p Fp(,)f(than)h(all)g(edges)h(are)f(dra)m(wn)227 │ │ │ │ │ @@ -6058,17 +6061,17 @@ │ │ │ │ │ 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 1226 4 v │ │ │ │ │ -1407 w Fl(Misc)30 b Fh(:)40 b Fj(DRAFT)31 b Fh(Ma)m(y)g(1,)g(2024)p │ │ │ │ │ -2675 100 V 227 399 a Fp(is)41 b(ordered)f(using)h(theoretical)i(nested) │ │ │ │ │ +TeXDict begin 6 5 bop 0 100 a Fp(6)p 136 100 1219 4 v │ │ │ │ │ +1401 w Fl(Misc)29 b Fh(:)40 b Fj(DRAFT)31 b Fh(June)e(3,)i(2025)p │ │ │ │ │ +2682 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 │ │ │ │ │ @@ -6135,17 +6138,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 1226 4 v 1407 100 a Fl(Misc)29 │ │ │ │ │ -b Fh(:)41 b Fj(DRAFT)121 b Fh(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2628 100 V 1226 w Fp(7)111 399 y(3.)46 b Fl(testOrderViaND)e(msglvl)i │ │ │ │ │ +TeXDict begin 7 6 bop 91 100 1219 4 v 1400 100 a Fl(Misc)29 │ │ │ │ │ +b Fh(:)41 b Fj(DRAFT)121 b Fh(June)29 b(3,)i(2025)p 2634 │ │ │ │ │ +100 V 1219 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 │ │ │ │ │ @@ -6215,17 +6218,17 @@ │ │ │ │ │ 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 1226 4 v │ │ │ │ │ -1407 w Fl(Misc)30 b Fh(:)40 b Fj(DRAFT)31 b Fh(Ma)m(y)g(1,)g(2024)p │ │ │ │ │ -2675 100 V 227 399 a Fp(This)41 b(driv)m(er)g(program)h(generates)h(a)f │ │ │ │ │ +TeXDict begin 8 7 bop 0 100 a Fp(8)p 136 100 1219 4 v │ │ │ │ │ +1401 w Fl(Misc)29 b Fh(:)40 b Fj(DRAFT)31 b Fh(June)e(3,)i(2025)p │ │ │ │ │ +2682 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 │ │ │ │ │ @@ -6301,19 +6304,19 @@ │ │ │ │ │ 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 1226 4 v 1407 100 a Fl(Misc)29 │ │ │ │ │ -b Fh(:)41 b Fj(DRAFT)121 b Fh(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2628 100 V 1226 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 │ │ │ │ │ +TeXDict begin 9 8 bop 91 100 1219 4 v 1400 100 a Fl(Misc)29 │ │ │ │ │ +b Fh(:)41 b Fj(DRAFT)121 b Fh(June)29 b(3,)i(2025)p 2634 │ │ │ │ │ +100 V 1219 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 │ │ │ │ │ /M {moveto} def │ │ │ │ │ /L {lineto} def │ │ │ │ │ @@ -6716,17 +6719,17 @@ │ │ │ │ │ 348.123 444.374 () radius drawLabel │ │ │ │ │ grestore │ │ │ │ │ showpage │ │ │ │ │ │ │ │ │ │ %%EndDocument │ │ │ │ │ @endspecial eop end │ │ │ │ │ %%Page: 10 10 │ │ │ │ │ -TeXDict begin 10 9 bop 0 100 a Fp(10)p 182 100 1203 4 │ │ │ │ │ -v 1385 w Fl(Misc)29 b Fh(:)41 b Fj(DRAFT)30 b Fh(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2698 100 V 813 1617 a Fp(Figure)f(1.2:)42 b Fb(R2D100:)k(fishnet)33 │ │ │ │ │ +TeXDict begin 10 9 bop 0 100 a Fp(10)p 182 100 1196 4 │ │ │ │ │ +v 1378 w Fl(Misc)29 b Fh(:)41 b Fj(DRAFT)30 b Fh(June)g(3,)h(2025)p │ │ │ │ │ +2704 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 │ │ │ │ │ @@ -7135,17 +7138,17 @@ │ │ │ │ │ 348.123 444.374 (0) radius drawLabel │ │ │ │ │ grestore │ │ │ │ │ showpage │ │ │ │ │ │ │ │ │ │ %%EndDocument │ │ │ │ │ @endspecial eop end │ │ │ │ │ %%Page: 11 11 │ │ │ │ │ -TeXDict begin 11 10 bop 91 100 1203 4 v 1384 100 a Fl(Misc)29 │ │ │ │ │ -b Fh(:)41 b Fj(DRAFT)121 b Fh(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2605 100 V 1203 w Fp(11)227 399 y Fg(A)g Fp(is)f(factored)h(as)1106 │ │ │ │ │ +TeXDict begin 11 10 bop 91 100 1196 4 v 1377 100 a Fl(Misc)30 │ │ │ │ │ +b Fh(:)40 b Fj(DRAFT)121 b Fh(June)30 b(3,)h(2025)p 2612 │ │ │ │ │ +100 V 1196 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 │ │ │ │ │ @@ -7254,17 +7257,17 @@ │ │ │ │ │ Fp(parameter)j(is)g(the)g(input)e(\014le)i(for)f(the)h │ │ │ │ │ Fl(Graph)e Fp(ob)5 b(ject.)41 b(It)30 b(m)m(ust)f(b)s(e)g(of)h(the)f │ │ │ │ │ (form)427 5294 y Fl(*.graphf)18 b Fp(or)j Fl(*.graphb)p │ │ │ │ │ Fp(.)35 b(The)19 b Fl(Graph)g Fp(ob)5 b(ject)21 b(is)g(read)f(from)g │ │ │ │ │ (the)g(\014le)h(via)f(the)h Fl(Graph)p 3368 5294 V 33 │ │ │ │ │ w(readFromFile\(\))427 5407 y Fp(metho)s(d.)p eop end │ │ │ │ │ %%Page: 12 12 │ │ │ │ │ -TeXDict begin 12 11 bop 0 100 a Fp(12)p 182 100 1203 │ │ │ │ │ -4 v 1385 w Fl(Misc)29 b Fh(:)41 b Fj(DRAFT)30 b Fh(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2698 100 V 337 399 a Ff(\210)45 b Fp(The)29 b Fl(ETreeFile)e │ │ │ │ │ +TeXDict begin 12 11 bop 0 100 a Fp(12)p 182 100 1196 │ │ │ │ │ +4 v 1378 w Fl(Misc)29 b Fh(:)41 b Fj(DRAFT)30 b Fh(June)g(3,)h(2025)p │ │ │ │ │ +2704 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 │ │ │ │ │ @@ -7332,17 +7335,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 1203 4 v 1384 100 a Fl(Misc)29 │ │ │ │ │ -b Fh(:)41 b Fj(DRAFT)121 b Fh(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2605 100 V 1203 w Fp(13)427 399 y Fl(nrow)47 b(ncol)g(nent)427 │ │ │ │ │ +TeXDict begin 13 12 bop 91 100 1196 4 v 1377 100 a Fl(Misc)30 │ │ │ │ │ +b Fh(:)40 b Fj(DRAFT)121 b Fh(June)30 b(3,)h(2025)p 2612 │ │ │ │ │ +100 V 1196 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) │ │ │ │ │ @@ -7398,17 +7401,17 @@ │ │ │ │ │ (\(SPOOLES)p 1417 5148 V 32 w(SYMMETRIC\))28 b Fp(for)i │ │ │ │ │ Fg(A)g Fp(real)h(or)g(complex)g(symmetric,)500 5278 y │ │ │ │ │ Fo({)45 b Fl(type)i(=)g(1)h(\(SPOOLES)p 1417 5278 V 32 │ │ │ │ │ w(HERMITIAN\))28 b Fp(for)i Fg(A)g Fp(complex)h(Hermitian,)500 │ │ │ │ │ 5407 y Fo({)45 b Fl(type)i(=)g(2)h(\(SPOOLES)p 1417 5407 │ │ │ │ │ V 32 w(NONSYMMETRIC\))p eop end │ │ │ │ │ %%Page: 14 14 │ │ │ │ │ -TeXDict begin 14 13 bop 0 100 a Fp(14)p 182 100 1203 │ │ │ │ │ -4 v 1385 w Fl(Misc)29 b Fh(:)41 b Fj(DRAFT)30 b Fh(Ma)m(y)i(1,)f(2024)p │ │ │ │ │ -2698 100 V 427 399 a Fp(for)f Fg(A)h Fp(real)g(or)f(complex)h │ │ │ │ │ +TeXDict begin 14 13 bop 0 100 a Fp(14)p 182 100 1196 │ │ │ │ │ +4 v 1378 w Fl(Misc)29 b Fh(:)41 b Fj(DRAFT)30 b Fh(June)g(3,)h(2025)p │ │ │ │ │ +2704 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 │ │ │ │ │ @@ -7469,17 +7472,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 1203 4 v 1384 100 a Fl(Misc)29 │ │ │ │ │ -b Fh(:)41 b Fj(DRAFT)121 b Fh(Ma)m(y)32 b(1,)f(2024)p │ │ │ │ │ -2605 100 V 1203 w Fp(15)337 399 y Ff(\210)45 b Fl(type)29 │ │ │ │ │ +TeXDict begin 15 14 bop 91 100 1196 4 v 1377 100 a Fl(Misc)30 │ │ │ │ │ +b Fh(:)40 b Fj(DRAFT)121 b Fh(June)30 b(3,)h(2025)p 2612 │ │ │ │ │ +100 V 1196 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 May 1, 2024 │ │ │ │ │ │ + 2 Misc : DRAFT June 3, 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 May 1, 2024 3 │ │ │ │ │ │ + Misc : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 4 Misc : DRAFT June 3, 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 May 1, 2024 5 │ │ │ │ │ │ + Misc : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 6 Misc : DRAFT June 3, 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 May 1, 2024 7 │ │ │ │ │ │ + Misc : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 8 Misc : DRAFT June 3, 2025 │ │ │ │ │ │ This driver program generates a Encapsulated Postscript file outEPSfile of a 2-D graph │ │ │ │ │ │ using a Graph object, a Coords object and a tags IV object that contains the component ids │ │ │ │ │ │ of the vertices. │ │ │ │ │ │ See the doDraw script file in this directory for an example calling sequence. │ │ │ │ │ │ • The msglvl parameter determines the amount of output — taking msglvl >= 3 means │ │ │ │ │ │ that all objects are written to the output file. │ │ │ │ │ │ • The msgFile parameter determines the message file — if msgFile is stdout, then the │ │ │ │ │ │ @@ -293,48 +293,48 @@ │ │ │ │ │ │ See Figure 1.1 for a plot of the graph of R2D100, a randomly triangulated grid with 100 │ │ │ │ │ │ vertices with linewidth1 = 3. Figure 1.2 illustrates a domain decomposition obtained from │ │ │ │ │ │ the fishnet algorithm of Chapter ?? with linewidth1 = 3 and linewidth2 = 0.1. │ │ │ │ │ │ 6. testSemi msglvl msgFile GraphFile ETreeFile mapFile │ │ │ │ │ │ This program is used to compute the effect of using a semi-implicit factorization to solve │ │ │ │ │ │ AX=" A0,0 A0,1 #" X0 #=" B0 #=B. │ │ │ │ │ │ A1,0 A1,1 X1 B1 │ │ │ │ │ │ - Misc : DRAFT May 1, 2024 9 │ │ │ │ │ │ + Misc : DRAFT June 3, 2025 9 │ │ │ │ │ │ Figure 1.1: R2D100 │ │ │ │ │ │ - 10 Misc : DRAFT May 1, 2024 │ │ │ │ │ │ - Figure 1.2: R2D100: fishnet domain decomposition │ │ │ │ │ │ - 3 3 3 3 3 3 3 0 0 5 │ │ │ │ │ │ - 3 │ │ │ │ │ │ - 3 3 3 0 0 │ │ │ │ │ │ - 3 3 │ │ │ │ │ │ - 3 1 │ │ │ │ │ │ - 0 0 1 1 │ │ │ │ │ │ - 3 0 1 │ │ │ │ │ │ - 3 1 │ │ │ │ │ │ - 0 1 │ │ │ │ │ │ - 2 0 1 1 │ │ │ │ │ │ - 0 1 1 │ │ │ │ │ │ - 0 1 │ │ │ │ │ │ - 2 2 1 1 1 │ │ │ │ │ │ - 2 1 │ │ │ │ │ │ - 0 11 │ │ │ │ │ │ - 2 1 │ │ │ │ │ │ - 2 2 0 1 1 │ │ │ │ │ │ - 1 1 │ │ │ │ │ │ - 2 1 │ │ │ │ │ │ - 2 2 0 1 0 │ │ │ │ │ │ - 0 1 │ │ │ │ │ │ - 2 2 0 │ │ │ │ │ │ - 2 2 0 4 │ │ │ │ │ │ - 4 0 0 │ │ │ │ │ │ - 0 4 │ │ │ │ │ │ - 2 2 4 │ │ │ │ │ │ - 2 2 4 4 │ │ │ │ │ │ - 0 4 4 │ │ │ │ │ │ - 2 2 0 4 4 4 4 4 4 4 │ │ │ │ │ │ - Misc : DRAFT May 1, 2024 11 │ │ │ │ │ │ + 10 Misc : DRAFT June 3, 2025 │ │ │ │ │ │ + Figure 1.2: R2D100: fishnet domain decomposition │ │ │ │ │ │ + 3 3 3 3 3 3 3 0 0 5 │ │ │ │ │ │ + 3 │ │ │ │ │ │ + 3 3 3 0 0 │ │ │ │ │ │ + 3 3 │ │ │ │ │ │ + 3 1 │ │ │ │ │ │ + 0 0 1 1 │ │ │ │ │ │ + 3 0 1 │ │ │ │ │ │ + 3 1 │ │ │ │ │ │ + 0 1 │ │ │ │ │ │ + 2 0 1 1 │ │ │ │ │ │ + 0 1 1 │ │ │ │ │ │ + 0 1 │ │ │ │ │ │ + 2 2 1 1 1 │ │ │ │ │ │ + 2 1 │ │ │ │ │ │ + 0 11 │ │ │ │ │ │ + 2 1 │ │ │ │ │ │ + 2 2 0 1 1 │ │ │ │ │ │ + 1 1 │ │ │ │ │ │ + 2 1 │ │ │ │ │ │ + 2 2 0 1 0 │ │ │ │ │ │ + 0 1 │ │ │ │ │ │ + 2 2 0 │ │ │ │ │ │ + 2 2 0 4 │ │ │ │ │ │ + 4 0 0 │ │ │ │ │ │ + 0 4 │ │ │ │ │ │ + 2 2 4 │ │ │ │ │ │ + 2 2 4 4 │ │ │ │ │ │ + 0 4 4 │ │ │ │ │ │ + 2 2 0 4 4 4 4 4 4 4 │ │ │ │ │ │ + Misc : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 12 Misc : DRAFT June 3, 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 May 1, 2024 13 │ │ │ │ │ │ + Misc : DRAFT June 3, 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 May 1, 2024 │ │ │ │ │ │ + 14 Misc : DRAFT June 3, 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 May 1, 2024 15 │ │ │ │ │ │ + Misc : DRAFT June 3, 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 │ │ │ │ │ │ ...