Skip to content
Snippets Groups Projects

improve stability of eigenValues2dImpl() by reformulating radicand

matrix A = (a00 a01; a10 a11) characteristic polynomial: p(x) = x^2 - (a00 + a11)x + (a00a11 - a01*a10)

current implementation: eigenvalues (roots) by pq-formula: x_{1/2} = (a00 + a11)/2 +/- \sqrt{ ((a00 + a11)/2)^2 - (a00a11 - a01a10)} stability issue: symmetric matrix close to identity may lead to negative radicand due to round-off errors

fix: reformulate radicand such that subtraction occurs as early as possible, i.e. x_{1/2} = (a00 + a11)/2 +/- \sqrt{ ((a00 - a11)/2)^2 + a01*a10 }

Merge request reports

Pipeline #33827 passed

Pipeline passed for 871c328e on joscha.podlesny:feature/eigenValues2dImpl_stability_patch

Merged by Carsten GräserCarsten Gräser 4 years ago (Apr 11, 2021 9:41pm UTC)

Loading

Pipeline #35416 passed

Pipeline: Dune Nightly Test

#35417

    Pipeline passed for d3b18148 on master

    Activity

    Filter activity
    • Approvals
    • Assignees & reviewers
    • Comments (from bots)
    • Comments (from users)
    • Commits & branches
    • Edits
    • Labels
    • Lock status
    • Mentions
    • Merge request status
    • Tracking
    • Loading
    • Loading
    • Loading
    • Loading
    Please register or sign in to reply
    Loading