[{"data":1,"prerenderedAt":1245},["ShallowReactive",2],{"navigation-docsCpp":3,"lib-picker-navigation":197,"docsCpp-\u002Fcpp\u002Fmodules\u002Flinalg":470,"docsCpp-\u002Fcpp\u002Fmodules\u002Flinalg-surround":1240},[4],{"title":5,"path":6,"stem":7,"children":8,"page":32},"Cpp","\u002Fcpp","cpp",[9,33,120,125,149,178],{"title":10,"path":11,"stem":12,"children":13,"icon":32},"Getting Started","\u002Fcpp\u002Fgetting-started","cpp\u002F1.getting-started\u002F1.index",[14,17,22,27],{"title":15,"path":11,"stem":12,"icon":16},"Introduction","i-lucide-house",{"title":18,"path":19,"stem":20,"icon":21},"Installation","\u002Fcpp\u002Fgetting-started\u002Finstallation","cpp\u002F1.getting-started\u002F2.installation","i-lucide-download",{"title":23,"path":24,"stem":25,"icon":26},"Live Examples","\u002Fcpp\u002Fgetting-started\u002Flive-examples","cpp\u002F1.getting-started\u002F3.live-examples","i-lucide-play",{"title":28,"path":29,"stem":30,"icon":31},"Release Notes","\u002Fcpp\u002Fgetting-started\u002Frelease-notes","cpp\u002F1.getting-started\u002F4.release-notes","i-lucide-sparkles",false,{"title":34,"path":35,"stem":36,"children":37,"icon":32},"Modules","\u002Fcpp\u002Fmodules","cpp\u002F2.modules\u002F00.index",[38,41,46,51,56,61,66,71,76,81,86,90,95,100,105,110,115],{"title":39,"path":35,"stem":36,"icon":40},"Overview","i-lucide-library",{"title":42,"path":43,"stem":44,"icon":45},"Core","\u002Fcpp\u002Fmodules\u002Fcore","cpp\u002F2.modules\u002F01.core","i-lucide-atom",{"title":47,"path":48,"stem":49,"icon":50},"Spatial","\u002Fcpp\u002Fmodules\u002Fspatial","cpp\u002F2.modules\u002F02.spatial","i-lucide-scale-3d",{"title":52,"path":53,"stem":54,"icon":55},"Topology","\u002Fcpp\u002Fmodules\u002Ftopology","cpp\u002F2.modules\u002F03.topology","i-lucide-git-graph",{"title":57,"path":58,"stem":59,"icon":60},"Geometry","\u002Fcpp\u002Fmodules\u002Fgeometry","cpp\u002F2.modules\u002F04.geometry","i-lucide-ruler",{"title":62,"path":63,"stem":64,"icon":65},"Remesh","\u002Fcpp\u002Fmodules\u002Fremesh","cpp\u002F2.modules\u002F05.remesh","i-lucide-triangle",{"title":67,"path":68,"stem":69,"icon":70},"Intersect","\u002Fcpp\u002Fmodules\u002Fintersect","cpp\u002F2.modules\u002F06.intersect","i-lucide-squares-intersect",{"title":72,"path":73,"stem":74,"icon":75},"Arrangement","\u002Fcpp\u002Fmodules\u002Farrangement","cpp\u002F2.modules\u002F07.arrangement","i-lucide-scissors",{"title":77,"path":78,"stem":79,"icon":80},"Iso","\u002Fcpp\u002Fmodules\u002Fiso","cpp\u002F2.modules\u002F08.iso","i-lucide-waves",{"title":82,"path":83,"stem":84,"icon":85},"CSG","\u002Fcpp\u002Fmodules\u002Fcsg","cpp\u002F2.modules\u002F09.csg","i-lucide-shapes",{"title":87,"path":88,"stem":89,"icon":31},"Clean","\u002Fcpp\u002Fmodules\u002Fclean","cpp\u002F2.modules\u002F10.clean",{"title":91,"path":92,"stem":93,"icon":94},"Reindex","\u002Fcpp\u002Fmodules\u002Freindex","cpp\u002F2.modules\u002F11.reidx","i-lucide-shuffle",{"title":96,"path":97,"stem":98,"icon":99},"I\u002FO","\u002Fcpp\u002Fmodules\u002Fio","cpp\u002F2.modules\u002F12.io","i-lucide-file-input",{"title":101,"path":102,"stem":103,"icon":104},"Volume","\u002Fcpp\u002Fmodules\u002Fvolume","cpp\u002F2.modules\u002F13.volume","i-lucide-box",{"title":106,"path":107,"stem":108,"icon":109},"Fill","\u002Fcpp\u002Fmodules\u002Ffill","cpp\u002F2.modules\u002F14.fill","i-lucide-paint-bucket",{"title":111,"path":112,"stem":113,"icon":114},"Linalg","\u002Fcpp\u002Fmodules\u002Flinalg","cpp\u002F2.modules\u002F15.linalg","i-lucide-sigma",{"title":116,"path":117,"stem":118,"icon":119},"Tetmesh","\u002Fcpp\u002Fmodules\u002Ftetmesh","cpp\u002F2.modules\u002F16.tetmesh","i-lucide-pyramid",{"title":121,"path":122,"stem":123,"icon":124},"Benchmarks","\u002Fcpp\u002Fbenchmarks","cpp\u002F3.benchmarks","i-lucide-chart-bar-stacked",{"title":126,"path":127,"stem":128,"children":129,"icon":32},"VTK","\u002Fcpp\u002Fvtk","cpp\u002F4.vtk\u002F1.index",[130,132,135,140,145],{"title":39,"path":127,"stem":128,"icon":131},"i-lucide-layers",{"title":42,"path":133,"stem":134,"icon":45},"\u002Fcpp\u002Fvtk\u002Fcore","cpp\u002F4.vtk\u002F2.core",{"title":136,"path":137,"stem":138,"icon":139},"Functions","\u002Fcpp\u002Fvtk\u002Ffunctions","cpp\u002F4.vtk\u002F3.functions","i-lucide-function-square",{"title":141,"path":142,"stem":143,"icon":144},"Filters","\u002Fcpp\u002Fvtk\u002Ffilters","cpp\u002F4.vtk\u002F4.filters","i-lucide-filter",{"title":146,"path":147,"stem":148,"icon":26},"Examples","\u002Fcpp\u002Fvtk\u002Fexamples","cpp\u002F4.vtk\u002F5.examples",{"title":146,"path":150,"stem":151,"children":152,"icon":32},"\u002Fcpp\u002Fexamples","cpp\u002F5.examples\u002F0.index",[153,155,159,164,169,173],{"title":39,"path":150,"stem":151,"icon":154},"i-lucide-book-open",{"title":156,"path":157,"stem":158,"icon":104},"Geometry Walkthrough","\u002Fcpp\u002Fexamples\u002Fmesh-assembly","cpp\u002F5.examples\u002F1.mesh-assembly",{"title":160,"path":161,"stem":162,"icon":163},"Point Cloud Alignment","\u002Fcpp\u002Fexamples\u002Falignment","cpp\u002F5.examples\u002F2.alignment","i-lucide-move",{"title":165,"path":166,"stem":167,"icon":168},"Booleans and Domains from One Build","\u002Fcpp\u002Fexamples\u002Farrangements","cpp\u002F5.examples\u002F3.arrangements","i-lucide-layers-3",{"title":170,"path":171,"stem":172,"icon":131},"VTK Integration","\u002Fcpp\u002Fexamples\u002Fvtk","cpp\u002F5.examples\u002F4.vtk",{"title":174,"path":175,"stem":176,"icon":177},"Coming from Other Libraries","\u002Fcpp\u002Fexamples\u002Flibrary-comparisons","cpp\u002F5.examples\u002F5.library-comparisons","i-lucide-git-compare",{"title":179,"path":180,"stem":181,"children":182,"page":32},"About","\u002Fcpp\u002Fabout","cpp\u002F6.about",[183,187,192],{"title":184,"path":185,"stem":186,"icon":154},"Research","\u002Fcpp\u002Fabout\u002Fresearch","cpp\u002F6.about\u002F1.research",{"title":188,"path":189,"stem":190,"icon":191},"Contributing","\u002Fcpp\u002Fabout\u002Fcontributing","cpp\u002F6.about\u002F2.contributing","i-lucide-heart-handshake",{"title":193,"path":194,"stem":195,"icon":196},"License","\u002Fcpp\u002Fabout\u002Flicense","cpp\u002F6.about\u002F3.license","i-lucide-file-text",{"cpp":198,"py":247,"ts":373},[199],{"title":5,"path":6,"stem":7,"children":200,"page":32},[201,207,226,227,234,242],{"title":10,"path":11,"stem":12,"children":202,"icon":32},[203,204,205,206],{"title":15,"path":11,"stem":12,"icon":16},{"title":18,"path":19,"stem":20,"icon":21},{"title":23,"path":24,"stem":25,"icon":26},{"title":28,"path":29,"stem":30,"icon":31},{"title":34,"path":35,"stem":36,"children":208,"icon":32},[209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225],{"title":39,"path":35,"stem":36,"icon":40},{"title":42,"path":43,"stem":44,"icon":45},{"title":47,"path":48,"stem":49,"icon":50},{"title":52,"path":53,"stem":54,"icon":55},{"title":57,"path":58,"stem":59,"icon":60},{"title":62,"path":63,"stem":64,"icon":65},{"title":67,"path":68,"stem":69,"icon":70},{"title":72,"path":73,"stem":74,"icon":75},{"title":77,"path":78,"stem":79,"icon":80},{"title":82,"path":83,"stem":84,"icon":85},{"title":87,"path":88,"stem":89,"icon":31},{"title":91,"path":92,"stem":93,"icon":94},{"title":96,"path":97,"stem":98,"icon":99},{"title":101,"path":102,"stem":103,"icon":104},{"title":106,"path":107,"stem":108,"icon":109},{"title":111,"path":112,"stem":113,"icon":114},{"title":116,"path":117,"stem":118,"icon":119},{"title":121,"path":122,"stem":123,"icon":124},{"title":126,"path":127,"stem":128,"children":228,"icon":32},[229,230,231,232,233],{"title":39,"path":127,"stem":128,"icon":131},{"title":42,"path":133,"stem":134,"icon":45},{"title":136,"path":137,"stem":138,"icon":139},{"title":141,"path":142,"stem":143,"icon":144},{"title":146,"path":147,"stem":148,"icon":26},{"title":146,"path":150,"stem":151,"children":235,"icon":32},[236,237,238,239,240,241],{"title":39,"path":150,"stem":151,"icon":154},{"title":156,"path":157,"stem":158,"icon":104},{"title":160,"path":161,"stem":162,"icon":163},{"title":165,"path":166,"stem":167,"icon":168},{"title":170,"path":171,"stem":172,"icon":131},{"title":174,"path":175,"stem":176,"icon":177},{"title":179,"path":180,"stem":181,"children":243,"page":32},[244,245,246],{"title":184,"path":185,"stem":186,"icon":154},{"title":188,"path":189,"stem":190,"icon":191},{"title":193,"path":194,"stem":195,"icon":196},[248],{"title":249,"path":250,"stem":251,"children":252,"page":32},"Py","\u002Fpy","py",[253,267,314,317,338,360],{"title":10,"path":254,"stem":255,"children":256,"icon":32},"\u002Fpy\u002Fgetting-started","py\u002F1.getting-started\u002F1.index",[257,258,261,264],{"title":15,"path":254,"stem":255,"icon":16},{"title":18,"path":259,"stem":260,"icon":21},"\u002Fpy\u002Fgetting-started\u002Finstallation","py\u002F1.getting-started\u002F2.installation",{"title":23,"path":262,"stem":263,"icon":26},"\u002Fpy\u002Fgetting-started\u002Flive-examples","py\u002F1.getting-started\u002F3.live-examples",{"title":28,"path":265,"stem":266,"icon":31},"\u002Fpy\u002Fgetting-started\u002Frelease-notes","py\u002F1.getting-started\u002F4.release-notes",{"title":34,"path":268,"stem":269,"children":270,"icon":32},"\u002Fpy\u002Fmodules","py\u002F2.modules\u002F00.index",[271,272,275,278,281,284,287,290,293,296,299,302,305,308,311],{"title":39,"path":268,"stem":269,"icon":40},{"title":42,"path":273,"stem":274,"icon":45},"\u002Fpy\u002Fmodules\u002Fcore","py\u002F2.modules\u002F01.core",{"title":47,"path":276,"stem":277,"icon":50},"\u002Fpy\u002Fmodules\u002Fspatial","py\u002F2.modules\u002F02.spatial",{"title":52,"path":279,"stem":280,"icon":55},"\u002Fpy\u002Fmodules\u002Ftopology","py\u002F2.modules\u002F03.topology",{"title":57,"path":282,"stem":283,"icon":60},"\u002Fpy\u002Fmodules\u002Fgeometry","py\u002F2.modules\u002F04.geometry",{"title":62,"path":285,"stem":286,"icon":65},"\u002Fpy\u002Fmodules\u002Fremesh","py\u002F2.modules\u002F05.remesh",{"title":67,"path":288,"stem":289,"icon":70},"\u002Fpy\u002Fmodules\u002Fintersect","py\u002F2.modules\u002F06.intersect",{"title":72,"path":291,"stem":292,"icon":75},"\u002Fpy\u002Fmodules\u002Farrangement","py\u002F2.modules\u002F07.arrangement",{"title":77,"path":294,"stem":295,"icon":80},"\u002Fpy\u002Fmodules\u002Fiso","py\u002F2.modules\u002F08.iso",{"title":82,"path":297,"stem":298,"icon":85},"\u002Fpy\u002Fmodules\u002Fcsg","py\u002F2.modules\u002F09.csg",{"title":87,"path":300,"stem":301,"icon":31},"\u002Fpy\u002Fmodules\u002Fclean","py\u002F2.modules\u002F10.clean",{"title":91,"path":303,"stem":304,"icon":94},"\u002Fpy\u002Fmodules\u002Freindex","py\u002F2.modules\u002F11.reidx",{"title":96,"path":306,"stem":307,"icon":99},"\u002Fpy\u002Fmodules\u002Fio","py\u002F2.modules\u002F12.io",{"title":101,"path":309,"stem":310,"icon":104},"\u002Fpy\u002Fmodules\u002Fvolume","py\u002F2.modules\u002F13.volume",{"title":106,"path":312,"stem":313,"icon":109},"\u002Fpy\u002Fmodules\u002Ffill","py\u002F2.modules\u002F14.fill",{"title":121,"path":315,"stem":316,"icon":124},"\u002Fpy\u002Fbenchmarks","py\u002F3.benchmarks",{"title":318,"path":319,"stem":320,"children":321,"icon":32},"Blender","\u002Fpy\u002Fblender","py\u002F4.blender\u002F1.index",[322,324,329,333],{"title":39,"path":319,"stem":320,"icon":323},"i-vscode-icons:file-type-blender",{"title":325,"path":326,"stem":327,"icon":328},"Convert","\u002Fpy\u002Fblender\u002Fconvert","py\u002F4.blender\u002F2.convert","i-lucide-repeat",{"title":330,"path":331,"stem":332,"icon":131},"Scene","\u002Fpy\u002Fblender\u002Fscene","py\u002F4.blender\u002F3.scene",{"title":334,"path":335,"stem":336,"icon":337},"Plugin Architecture","\u002Fpy\u002Fblender\u002Fplugin","py\u002F4.blender\u002F4.plugin","i-lucide-puzzle",{"title":146,"path":339,"stem":340,"children":341,"icon":32},"\u002Fpy\u002Fexamples","py\u002F5.examples\u002F0.index",[342,343,348,351,355],{"title":39,"path":339,"stem":340,"icon":154},{"title":344,"path":345,"stem":346,"icon":347},"Core Functionality","\u002Fpy\u002Fexamples\u002Fcore-functionality","py\u002F5.examples\u002F2.core-functionality","i-lucide-code",{"title":165,"path":349,"stem":350,"icon":168},"\u002Fpy\u002Fexamples\u002Farrangements","py\u002F5.examples\u002F3.arrangements",{"title":170,"path":352,"stem":353,"icon":354},"\u002Fpy\u002Fexamples\u002Fvtk-integration","py\u002F5.examples\u002F4.vtk-integration","i-lucide-grid-2x2",{"title":356,"path":357,"stem":358,"icon":359},"Raycast Rendering","\u002Fpy\u002Fexamples\u002Fraycast-rendering","py\u002F5.examples\u002F5.raycast-rendering","i-lucide-scan-line",{"title":179,"path":361,"stem":362,"children":363,"page":32},"\u002Fpy\u002Fabout","py\u002F6.about",[364,367,370],{"title":184,"path":365,"stem":366,"icon":154},"\u002Fpy\u002Fabout\u002Fresearch","py\u002F6.about\u002F1.research",{"title":188,"path":368,"stem":369,"icon":191},"\u002Fpy\u002Fabout\u002Fcontributing","py\u002F6.about\u002F2.contributing",{"title":193,"path":371,"stem":372,"icon":196},"\u002Fpy\u002Fabout\u002Flicense","py\u002F6.about\u002F3.license",[374],{"title":375,"path":376,"stem":377,"children":378,"page":32},"Ts","\u002Fts","ts",[379,393,437,440,457],{"title":10,"path":380,"stem":381,"children":382,"icon":32},"\u002Fts\u002Fgetting-started","ts\u002F1.getting-started\u002F1.index",[383,384,387,390],{"title":15,"path":380,"stem":381,"icon":16},{"title":18,"path":385,"stem":386,"icon":21},"\u002Fts\u002Fgetting-started\u002Finstallation","ts\u002F1.getting-started\u002F2.installation",{"title":23,"path":388,"stem":389,"icon":26},"\u002Fts\u002Fgetting-started\u002Flive-examples","ts\u002F1.getting-started\u002F3.live-examples",{"title":28,"path":391,"stem":392,"icon":31},"\u002Fts\u002Fgetting-started\u002Frelease-notes","ts\u002F1.getting-started\u002F4.release-notes",{"title":34,"path":394,"stem":395,"children":396,"icon":32},"\u002Fts\u002Fmodules","ts\u002F2.modules\u002F00.index",[397,398,401,404,407,410,413,416,419,422,425,428,431,434],{"title":39,"path":394,"stem":395,"icon":40},{"title":42,"path":399,"stem":400,"icon":45},"\u002Fts\u002Fmodules\u002Fcore","ts\u002F2.modules\u002F01.core",{"title":47,"path":402,"stem":403,"icon":50},"\u002Fts\u002Fmodules\u002Fspatial","ts\u002F2.modules\u002F02.spatial",{"title":52,"path":405,"stem":406,"icon":55},"\u002Fts\u002Fmodules\u002Ftopology","ts\u002F2.modules\u002F03.topology",{"title":57,"path":408,"stem":409,"icon":60},"\u002Fts\u002Fmodules\u002Fgeometry","ts\u002F2.modules\u002F04.geometry",{"title":62,"path":411,"stem":412,"icon":65},"\u002Fts\u002Fmodules\u002Fremesh","ts\u002F2.modules\u002F05.remesh",{"title":67,"path":414,"stem":415,"icon":70},"\u002Fts\u002Fmodules\u002Fintersect","ts\u002F2.modules\u002F06.intersect",{"title":72,"path":417,"stem":418,"icon":75},"\u002Fts\u002Fmodules\u002Farrangement","ts\u002F2.modules\u002F07.arrangement",{"title":77,"path":420,"stem":421,"icon":80},"\u002Fts\u002Fmodules\u002Fiso","ts\u002F2.modules\u002F08.iso",{"title":82,"path":423,"stem":424,"icon":85},"\u002Fts\u002Fmodules\u002Fcsg","ts\u002F2.modules\u002F09.csg",{"title":87,"path":426,"stem":427,"icon":31},"\u002Fts\u002Fmodules\u002Fclean","ts\u002F2.modules\u002F10.clean",{"title":91,"path":429,"stem":430,"icon":94},"\u002Fts\u002Fmodules\u002Freindex","ts\u002F2.modules\u002F11.reidx",{"title":96,"path":432,"stem":433,"icon":99},"\u002Fts\u002Fmodules\u002Fio","ts\u002F2.modules\u002F12.io",{"title":106,"path":435,"stem":436,"icon":109},"\u002Fts\u002Fmodules\u002Ffill","ts\u002F2.modules\u002F13.fill",{"title":121,"path":438,"stem":439,"icon":124},"\u002Fts\u002Fbenchmarks","ts\u002F3.benchmarks",{"title":146,"path":441,"stem":442,"children":443,"icon":32},"\u002Fts\u002Fexamples","ts\u002F4.examples\u002F0.index",[444,445,448,453],{"title":39,"path":441,"stem":442,"icon":154},{"title":344,"path":446,"stem":447,"icon":347},"\u002Fts\u002Fexamples\u002Fcore-functionality","ts\u002F4.examples\u002F2.core-functionality",{"title":449,"path":450,"stem":451,"icon":452},"Alignment","\u002Fts\u002Fexamples\u002Falignment","ts\u002F4.examples\u002F3.alignment","i-lucide-move-3d",{"title":356,"path":454,"stem":455,"icon":456},"\u002Fts\u002Fexamples\u002Fraycast-render","ts\u002F4.examples\u002F4.raycast-render","i-lucide-image",{"title":179,"icon":32,"path":458,"stem":459,"children":460,"page":32},"\u002Fts\u002Fabout","ts\u002F5.about",[461,464,467],{"title":184,"path":462,"stem":463,"icon":154},"\u002Fts\u002Fabout\u002Fresearch","ts\u002F5.about\u002F1.research",{"title":188,"path":465,"stem":466,"icon":191},"\u002Fts\u002Fabout\u002Fcontributing","ts\u002F5.about\u002F2.contributing",{"title":193,"path":468,"stem":469,"icon":196},"\u002Fts\u002Fabout\u002Flicense","ts\u002F5.about\u002F3.license",{"id":471,"title":111,"body":472,"description":1232,"extension":1233,"links":1234,"meta":1235,"navigation":1236,"path":112,"seo":1237,"sitemap":1238,"stem":113,"__hash__":1239},"docsCpp\u002Fcpp\u002F2.modules\u002F15.linalg.md",{"type":473,"value":474,"toc":1228},"minimark",[475,483,486,489,518,523,603,606,1143,1216,1219,1224],[476,477,479],"note",{"icon":478},"i-lucide-info",[480,481,482],"p",{},"This module is in active development: its surface and its results may change between releases.",[480,484,485],{},"The Linalg module solves sparse symmetric positive definite systems by Cholesky factorization. Its three steps are split by what they read: the pattern is analyzed once, every value set on that pattern is factored, and every factor solves as many right-hand sides as are given. The Dirichlet field and the fill's fairing solve through it.",[480,487,488],{},"Include the module with:",[490,491,495],"pre",{"className":492,"code":493,"language":7,"meta":494,"style":494},"language-cpp shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","#include \u003Ctrueform\u002Flinalg.hpp>\n","",[496,497,498],"code",{"__ignoreMap":494},[499,500,503,507,511,515],"span",{"class":501,"line":502},"line",1,[499,504,506],{"class":505},"s7zQu","#include",[499,508,510],{"class":509},"sMK4o"," \u003C",[499,512,514],{"class":513},"sfazB","trueform\u002Flinalg.hpp",[499,516,517],{"class":509},">\n",[519,520,522],"h2",{"id":521},"types","Types",[524,525,526,539],"table",{},[527,528,529],"thead",{},[530,531,532,536],"tr",{},[533,534,535],"th",{},"Type",[533,537,538],{},"Holds",[540,541,542,573,583,593],"tbody",{},[530,543,544,550],{},[545,546,547],"td",{},[496,548,549],{},"tf::symmetric_lower\u003CIndex>",[545,551,552,553,556,557,560,561,564,565,568,569,572],{},"A symmetric matrix by its lower triangle: ",[496,554,555],{},"row_offsets",", ",[496,558,559],{},"columns"," and ",[496,562,563],{},"values",", row ",[496,566,567],{},"i"," holding its columns ",[496,570,571],{},"j \u003C= i"," ascending, so its diagonal is its last entry",[530,574,575,580],{},[545,576,577],{},[496,578,579],{},"tf::cholesky_pattern\u003CIndex>",[545,581,582],{},"The factor's structure: the fill-reducing elimination order, the supernodes, their rows and the schedule the numeric factor takes them in",[530,584,585,590],{},[545,586,587],{},[496,588,589],{},"tf::cholesky_factor",[545,591,592],{},"The factor's values, one dense block per supernode where the pattern places it",[530,594,595,600],{},[545,596,597],{},[496,598,599],{},"tf::cholesky_scratch\u003CIndex>",[545,601,602],{},"The workspace every step walks on, owned by the caller and reused across calls",[519,604,136],{"id":605},"functions",[490,607,610],{"className":492,"code":608,"filename":609,"language":7,"meta":494,"style":494},"\u002F\u002F A 1D Laplacian with a positive diagonal: row i holds (i - 1, i)\nconst std::size_t n = 1000;\ntf::symmetric_lower\u003Cint> matrix;\nmatrix.row_offsets.push_back(0);\nfor (std::size_t i = 0; i \u003C n; ++i) {\n  if (i > 0) {\n    matrix.columns.push_back(int(i - 1));\n    matrix.values.push_back(-1.0);\n  }\n  matrix.columns.push_back(int(i));\n  matrix.values.push_back(2.5);\n  matrix.row_offsets.push_back(int(matrix.columns.size()));\n}\n\ntf::cholesky_scratch\u003Cint> scratch;\ntf::cholesky_pattern\u003Cint> pattern;\ntf::analyze_cholesky(matrix, scratch, pattern);   \u002F\u002F once per pattern\n\ntf::cholesky_factor factor;\nif (tf::factor_cholesky(pattern, matrix.values, scratch, factor)) {\n  \u002F\u002F Two right-hand sides, interleaved: entry (i, c) at i * 2 + c\n  tf::buffer\u003Cdouble> rhs;\n  rhs.allocate(2 * n);\n  \u002F\u002F ... fill rhs ...\n  tf::solve_cholesky(pattern, factor, rhs, 2, scratch);   \u002F\u002F rhs receives x\n}\n","cholesky.cpp",[496,611,612,618,649,674,700,747,766,797,818,824,848,868,901,907,914,935,956,985,990,1002,1044,1050,1073,1096,1102,1138],{"__ignoreMap":494},[499,613,614],{"class":501,"line":502},[499,615,617],{"class":616},"sHwdD","\u002F\u002F A 1D Laplacian with a positive diagonal: row i holds (i - 1, i)\n",[499,619,621,625,629,632,635,639,642,646],{"class":501,"line":620},2,[499,622,624],{"class":623},"spNyl","const",[499,626,628],{"class":627},"sBMFI"," std",[499,630,631],{"class":509},"::",[499,633,634],{"class":623},"size_t",[499,636,638],{"class":637},"sTEyZ"," n ",[499,640,641],{"class":509},"=",[499,643,645],{"class":644},"sbssI"," 1000",[499,647,648],{"class":509},";\n",[499,650,652,655,657,660,663,666,669,672],{"class":501,"line":651},3,[499,653,654],{"class":627},"tf",[499,656,631],{"class":509},[499,658,659],{"class":637},"symmetric_lower",[499,661,662],{"class":509},"\u003C",[499,664,665],{"class":623},"int",[499,667,668],{"class":509},">",[499,670,671],{"class":637}," matrix",[499,673,648],{"class":509},[499,675,677,680,683,685,687,691,694,697],{"class":501,"line":676},4,[499,678,679],{"class":637},"matrix",[499,681,682],{"class":509},".",[499,684,555],{"class":637},[499,686,682],{"class":509},[499,688,690],{"class":689},"s2Zo4","push_back",[499,692,693],{"class":509},"(",[499,695,696],{"class":644},"0",[499,698,699],{"class":509},");\n",[499,701,703,706,709,712,714,716,719,721,724,727,729,731,734,736,739,741,744],{"class":501,"line":702},5,[499,704,705],{"class":505},"for",[499,707,708],{"class":509}," (",[499,710,711],{"class":627},"std",[499,713,631],{"class":509},[499,715,634],{"class":623},[499,717,718],{"class":637}," i ",[499,720,641],{"class":509},[499,722,723],{"class":644}," 0",[499,725,726],{"class":509},";",[499,728,718],{"class":637},[499,730,662],{"class":509},[499,732,733],{"class":637}," n",[499,735,726],{"class":509},[499,737,738],{"class":509}," ++",[499,740,567],{"class":637},[499,742,743],{"class":509},")",[499,745,746],{"class":509}," {\n",[499,748,750,753,755,757,760,762,764],{"class":501,"line":749},6,[499,751,752],{"class":505},"  if",[499,754,708],{"class":509},[499,756,567],{"class":637},[499,758,759],{"class":509}," >",[499,761,723],{"class":644},[499,763,743],{"class":509},[499,765,746],{"class":509},[499,767,769,772,774,776,778,780,782,784,786,788,791,794],{"class":501,"line":768},7,[499,770,771],{"class":637},"    matrix",[499,773,682],{"class":509},[499,775,559],{"class":637},[499,777,682],{"class":509},[499,779,690],{"class":689},[499,781,693],{"class":509},[499,783,665],{"class":623},[499,785,693],{"class":509},[499,787,567],{"class":637},[499,789,790],{"class":509}," -",[499,792,793],{"class":644}," 1",[499,795,796],{"class":509},"));\n",[499,798,800,802,804,806,808,810,813,816],{"class":501,"line":799},8,[499,801,771],{"class":637},[499,803,682],{"class":509},[499,805,563],{"class":637},[499,807,682],{"class":509},[499,809,690],{"class":689},[499,811,812],{"class":509},"(-",[499,814,815],{"class":644},"1.0",[499,817,699],{"class":509},[499,819,821],{"class":501,"line":820},9,[499,822,823],{"class":509},"  }\n",[499,825,827,830,832,834,836,838,840,842,844,846],{"class":501,"line":826},10,[499,828,829],{"class":637},"  matrix",[499,831,682],{"class":509},[499,833,559],{"class":637},[499,835,682],{"class":509},[499,837,690],{"class":689},[499,839,693],{"class":509},[499,841,665],{"class":623},[499,843,693],{"class":509},[499,845,567],{"class":637},[499,847,796],{"class":509},[499,849,851,853,855,857,859,861,863,866],{"class":501,"line":850},11,[499,852,829],{"class":637},[499,854,682],{"class":509},[499,856,563],{"class":637},[499,858,682],{"class":509},[499,860,690],{"class":689},[499,862,693],{"class":509},[499,864,865],{"class":644},"2.5",[499,867,699],{"class":509},[499,869,871,873,875,877,879,881,883,885,887,889,891,893,895,898],{"class":501,"line":870},12,[499,872,829],{"class":637},[499,874,682],{"class":509},[499,876,555],{"class":637},[499,878,682],{"class":509},[499,880,690],{"class":689},[499,882,693],{"class":509},[499,884,665],{"class":623},[499,886,693],{"class":509},[499,888,679],{"class":637},[499,890,682],{"class":509},[499,892,559],{"class":637},[499,894,682],{"class":509},[499,896,897],{"class":689},"size",[499,899,900],{"class":509},"()));\n",[499,902,904],{"class":501,"line":903},13,[499,905,906],{"class":509},"}\n",[499,908,910],{"class":501,"line":909},14,[499,911,913],{"emptyLinePlaceholder":912},true,"\n",[499,915,917,919,921,924,926,928,930,933],{"class":501,"line":916},15,[499,918,654],{"class":627},[499,920,631],{"class":509},[499,922,923],{"class":637},"cholesky_scratch",[499,925,662],{"class":509},[499,927,665],{"class":623},[499,929,668],{"class":509},[499,931,932],{"class":637}," scratch",[499,934,648],{"class":509},[499,936,938,940,942,945,947,949,951,954],{"class":501,"line":937},16,[499,939,654],{"class":627},[499,941,631],{"class":509},[499,943,944],{"class":637},"cholesky_pattern",[499,946,662],{"class":509},[499,948,665],{"class":623},[499,950,668],{"class":509},[499,952,953],{"class":637}," pattern",[499,955,648],{"class":509},[499,957,959,961,963,966,968,970,973,975,977,979,982],{"class":501,"line":958},17,[499,960,654],{"class":627},[499,962,631],{"class":509},[499,964,965],{"class":689},"analyze_cholesky",[499,967,693],{"class":509},[499,969,679],{"class":637},[499,971,972],{"class":509},",",[499,974,932],{"class":637},[499,976,972],{"class":509},[499,978,953],{"class":637},[499,980,981],{"class":509},");",[499,983,984],{"class":616},"   \u002F\u002F once per pattern\n",[499,986,988],{"class":501,"line":987},18,[499,989,913],{"emptyLinePlaceholder":912},[499,991,993,995,997,1000],{"class":501,"line":992},19,[499,994,654],{"class":627},[499,996,631],{"class":509},[499,998,999],{"class":637},"cholesky_factor factor",[499,1001,648],{"class":509},[499,1003,1005,1008,1010,1012,1014,1017,1019,1022,1024,1026,1028,1030,1032,1034,1036,1039,1042],{"class":501,"line":1004},20,[499,1006,1007],{"class":505},"if",[499,1009,708],{"class":509},[499,1011,654],{"class":627},[499,1013,631],{"class":509},[499,1015,1016],{"class":689},"factor_cholesky",[499,1018,693],{"class":509},[499,1020,1021],{"class":637},"pattern",[499,1023,972],{"class":509},[499,1025,671],{"class":637},[499,1027,682],{"class":509},[499,1029,563],{"class":637},[499,1031,972],{"class":509},[499,1033,932],{"class":637},[499,1035,972],{"class":509},[499,1037,1038],{"class":637}," factor",[499,1040,1041],{"class":509},"))",[499,1043,746],{"class":509},[499,1045,1047],{"class":501,"line":1046},21,[499,1048,1049],{"class":616},"  \u002F\u002F Two right-hand sides, interleaved: entry (i, c) at i * 2 + c\n",[499,1051,1053,1056,1058,1061,1063,1066,1068,1071],{"class":501,"line":1052},22,[499,1054,1055],{"class":627},"  tf",[499,1057,631],{"class":509},[499,1059,1060],{"class":627},"buffer",[499,1062,662],{"class":509},[499,1064,1065],{"class":623},"double",[499,1067,668],{"class":509},[499,1069,1070],{"class":637}," rhs",[499,1072,648],{"class":509},[499,1074,1076,1079,1081,1084,1086,1089,1092,1094],{"class":501,"line":1075},23,[499,1077,1078],{"class":637},"  rhs",[499,1080,682],{"class":509},[499,1082,1083],{"class":689},"allocate",[499,1085,693],{"class":509},[499,1087,1088],{"class":644},"2",[499,1090,1091],{"class":509}," *",[499,1093,733],{"class":637},[499,1095,699],{"class":509},[499,1097,1099],{"class":501,"line":1098},24,[499,1100,1101],{"class":616},"  \u002F\u002F ... fill rhs ...\n",[499,1103,1105,1107,1109,1112,1114,1116,1118,1120,1122,1124,1126,1129,1131,1133,1135],{"class":501,"line":1104},25,[499,1106,1055],{"class":627},[499,1108,631],{"class":509},[499,1110,1111],{"class":689},"solve_cholesky",[499,1113,693],{"class":509},[499,1115,1021],{"class":637},[499,1117,972],{"class":509},[499,1119,1038],{"class":637},[499,1121,972],{"class":509},[499,1123,1070],{"class":637},[499,1125,972],{"class":509},[499,1127,1128],{"class":644}," 2",[499,1130,972],{"class":509},[499,1132,932],{"class":637},[499,1134,981],{"class":509},[499,1136,1137],{"class":616},"   \u002F\u002F rhs receives x\n",[499,1139,1141],{"class":501,"line":1140},26,[499,1142,906],{"class":509},[524,1144,1145,1158],{},[527,1146,1147],{},[530,1148,1149,1152,1155],{},[533,1150,1151],{},"Function",[533,1153,1154],{},"Returns",[533,1156,1157],{},"Does",[540,1159,1160,1179,1199],{},[530,1161,1162,1167,1172],{},[545,1163,1164],{},[496,1165,1166],{},"tf::analyze_cholesky(matrix, scratch, pattern)",[545,1168,1169],{},[496,1170,1171],{},"bool",[545,1173,1174,1175,1178],{},"Reads the factor's structure from the matrix's pattern alone; ",[496,1176,1177],{},"false"," where the index type cannot name the factor's values",[530,1180,1181,1186,1190],{},[545,1182,1183],{},[496,1184,1185],{},"tf::factor_cholesky(pattern, values, scratch, factor)",[545,1187,1188],{},[496,1189,1171],{},[545,1191,1192,1193,1195,1196,1198],{},"Factors one value set, ",[496,1194,563],{}," one per entry of the matrix the pattern was read from, in its order; ",[496,1197,1177],{}," where a pivot is not positive or not finite",[530,1200,1201,1206,1209],{},[545,1202,1203],{},[496,1204,1205],{},"tf::solve_cholesky(pattern, factor, rhs, r, scratch)",[545,1207,1208],{},"—",[545,1210,1211,1212,1215],{},"Solves ",[496,1213,1214],{},"r"," interleaved right-hand sides in place, in the matrix's own row order",[480,1217,1218],{},"A refactor of new values on the same pattern skips the analysis, and a factor serves any number of solves.",[476,1220,1221],{"icon":478},[480,1222,1223],{},"The factor is the same bits at every thread count, partition and run, and so is every solve; a right-hand side's answer is the same bits whatever the number of right-hand sides solved beside it. A factor is not the bits of a column-by-column factorization of the same matrix, which sums in another order — the two agree to the condition number times the unit roundoff.",[1225,1226,1227],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}",{"title":494,"searchDepth":502,"depth":620,"links":1229},[1230,1231],{"id":521,"depth":620,"text":522},{"id":605,"depth":620,"text":136},"Sparse symmetric positive definite solves — one pattern, many value sets, many right-hand sides.","md",null,{},{"icon":114},{"title":111,"description":1232},{"loc":112},"z1rQ_9QT4nqOFStcKzPOSe7aixobhe3ovl5PGnrAvCw",[1241,1243],{"title":106,"path":107,"stem":108,"description":1242,"icon":109,"children":-1},"Hole filling — patches for a mesh's boundary rims that continue the surface around them.",{"title":116,"path":117,"stem":118,"description":1244,"icon":119,"children":-1},"Constrained Delaunay tetrahedralization of closed surfaces.",1793791222307]