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