mic(5rheolef)
π mic β the modified incomplete Cholesky glow-up (rheolef-7.2) π
okay bestie, sit down, hydrate, and let me tell you about mic(5rheolef) from the rheolef manual. this one's a preconditioner and she's serving modified incomplete Cholesky energy. no cap.
β¨ NAME β¨
mic β modified incomplete Cholesky factorization preconditionner (rheolef-7.2)
yes she's literally named mic and yes she's a preconditionner, that's the spelling, we don't argue with the source π
πΈ SYNOPSIS πΈ
solver pa = mic(a);
that's it. one line. she's lowkey effortless like that π¦
π DESCRIPTION π
so mic is a function that hands you back the modified incomplete Cholesky factorization preconditioner as a solver(4). like, you ask, she gives. periodt.
the method itself is described in this paper, and honestly? iconic academic citation behavior:
C-J. Lin and J. J. More,
Incomplete Cholesky factorizations with limited memory,
SIAM J. Sci. Comput. 21(1), pp. 24-45, 1999
it performs the following incomplete factorization: S P A P^T S that approximates L L^T where L is a lower triangular factor, S is a diagonal scaling matrix, and P is a fill-in reducing permutation as computed by the AMDcol ordering method.
so basically: L is your lower triangular bestie, S is the diagonal scaling main character, and P is out here doing fill-in reduction via AMDcol like the little organizer she is π
π OPTIONS π
this preconditioner supports an option related to the shifting strategy, and ngl this part matters so listen up:
let B = S P A P^T S be the scaled matrix on which the factorization is carried out, and beta be the minimum value of the diagonal.
- if
beta > 0then the factorization is directly performed on the matrixB. easy. no drama. slay. - otherwise, the factorization is performed on the shifted matrix
B + (shift+|beta|Iwhereshiftis the provided option.
the default value is shift = 0.001.
and here's the part where you hold my hand bestie: if the factorization fails, then the shift is doubled until it succeed or a maximum of ten is reached. if it still fails, it is better to use another preconditioning technique.
π«Ά fr fr, if she's tried ten times and still isn't giving, that's your sign to switch techniques. don't force it. she'll tell you.
here's how you actually pass that shift in:
Float shift = 1e-3;
solver pa = mic (a,shift);
look at that. Float shift = 1e-3; then solver pa = mic (a,shift);. chef's kiss πβ¨
π¦ IMPLEMENTATION π¦
this documentation has been generated from file linalg/lib/mic.h
(the source of truth, the origin story, the blueprint π)
π AUTHOR π
Pierre Saramito <Pierre.Saramito@imag.fr>
we stan a legend. π
β COPYRIGHT β
Copyright (C) 2000-2018 Pierre Saramito <Pierre.Saramito@imag.fr>
GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
β οΈ okay so the NO WARRANTY thing is in all caps in the original and honestly it means it β she's free, she's open, she's yours to remix, but she comes as-is, bestie. no promises. π
and that's the whole vibe check, babe. this page is rheolef, Version 7.2, and she's titled mic(5rheolef). go forth and precondition π
πΈβ¨
π¦ where this page comes from
- debian trixie: librheolef-dev 7.2-4 Β· GPL-3.0-or-later
- ubuntu noble: librheolef-dev 7.2-3build5 Β· GPL-3.0-or-later
- ubuntu questing: librheolef-dev 7.2-4build1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms