- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Seems that the dss_factor() function decomposes a symmetric positive-definite matrix A either as L*L^T or as U*U^T.
My observation is that both representations are possible.
Fro example, if A=[14, 2, -2; 2, 4, 0; -2, 0, 1], it computes U*U^T with U=[3, 1, -2; 0, 2, 0; 0, 0, 1].
On the contrary, if A=[5, -2, -6; -2, 5, 3; -6, 3, 9], it computes L*L^T.
The type of decomposition is important when only forward or only backward substitution is performed by a subsequent dss_soleve_real() call with either MKL_DSS_FORWARD_SOLVE or MKL_DSS_BACKWARD_SOLVE option.
Is there any control to fix this vulnerability and always compute L*L^T?
My observation is that both representations are possible.
Fro example, if A=[14, 2, -2; 2, 4, 0; -2, 0, 1], it computes U*U^T with U=[3, 1, -2; 0, 2, 0; 0, 0, 1].
On the contrary, if A=[5, -2, -6; -2, 5, 3; -6, 3, 9], it computes L*L^T.
The type of decomposition is important when only forward or only backward substitution is performed by a subsequent dss_soleve_real() call with either MKL_DSS_FORWARD_SOLVE or MKL_DSS_BACKWARD_SOLVE option.
Is there any control to fix this vulnerability and always compute L*L^T?
Link Copied
2 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Quoting - agnonchik
Seems that the dss_factor() function decomposes a symmetric positive-definite matrix A either as L*L^T or as U*U^T.
My observation is that both representations are possible.
Fro example, if A=[14, 2, -2; 2, 4, 0; -2, 0, 1], it computes U*U^T with U=[3, 1, -2; 0, 2, 0; 0, 0, 1].
On the contrary, if A=[5, -2, -6; -2, 5, 3; -6, 3, 9], it computes L*L^T.
The type of decomposition is important when only forward or only backward substitution is performed by a subsequent dss_soleve_real() call with either MKL_DSS_FORWARD_SOLVE or MKL_DSS_BACKWARD_SOLVE option.
Is there any control to fix this vulnerability and always compute L*L^T?
My observation is that both representations are possible.
Fro example, if A=[14, 2, -2; 2, 4, 0; -2, 0, 1], it computes U*U^T with U=[3, 1, -2; 0, 2, 0; 0, 0, 1].
On the contrary, if A=[5, -2, -6; -2, 5, 3; -6, 3, 9], it computes L*L^T.
The type of decomposition is important when only forward or only backward substitution is performed by a subsequent dss_soleve_real() call with either MKL_DSS_FORWARD_SOLVE or MKL_DSS_BACKWARD_SOLVE option.
Is there any control to fix this vulnerability and always compute L*L^T?
Hi
Pardiso do L*L^T only but for reodered matrix A. Of course result of such decomposition of matrix A without reodering is not the same of L*L^Tdecompositionreodered matrix A. If you want to have L*L^T decompositionof matrix A the best way to choose your own type of reodering in dss_reorder by choosing parameter opt= MKL_DSS_MY_ORDER with vector perm=(1,2,3,....)
with best regards,
Alexander Kalinkin
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Quoting - Alexander Kalinkin (Intel)
Hi
Pardiso do L*L^T only but for reodered matrix A. Of course result of such decomposition of matrix A without reodering is not the same of L*L^Tdecompositionreodered matrix A. If you want to have L*L^T decompositionof matrix A the best way to choose your own type of reodering in dss_reorder by choosing parameter opt= MKL_DSS_MY_ORDER with vector perm=(1,2,3,....)
with best regards,
Alexander Kalinkin
Thanks,
Agnonchik.
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page