3
3
/* ========================================================================== */
5
5
/* -----------------------------------------------------------------------------
6
* CHOLMOD/Tcov Module. Version 1.3. Copyright (C) 2005-2006, Timothy A. Davis
6
* CHOLMOD/Tcov Module. Copyright (C) 2005-2006, Timothy A. Davis
7
7
* The CHOLMOD/Tcov Module is licensed under Version 2.0 of the GNU
8
8
* General Public License. See gpl.txt for a text of the license.
9
9
* CHOLMOD is also available under other licenses; contact authors for details.
512
512
/* convert L to LDL' packed or LL packed */
513
513
/* ---------------------------------------------------------------------- */
515
printf ("before change factor : %d\n", L ? L->is_super : -1) ;
515
516
is_ll = (L == NULL) ? FALSE : (L->is_ll) ;
516
517
Lxtype = (L == NULL) ? CHOLMOD_REAL : (L->xtype) ;
517
518
CHOLMOD(change_factor) (Lxtype, is_ll, FALSE, TRUE, TRUE, Lcopy, cm) ;
519
printf ("after change factor : %d\n", L ? L->is_super : -1) ;
519
521
/* ---------------------------------------------------------------------- */
520
522
/* extract L, D, and L' as matrices from Lcopy */
743
745
/* solve LDL'x=b */
744
746
X = CHOLMOD(solve) (CHOLMOD_LDLt, L, B, cm) ;
747
/* printf ("LDL'x=b %p %p %p\n", Lo, X, B) ; */
745
748
r = resid3 (Lo, D, Up, X, B) ;
746
749
MAXERR (maxerr, r, 1) ;
747
750
CHOLMOD(free_dense) (&X, cm) ;
749
752
/* solve LDx=b */
750
753
X = CHOLMOD(solve) (CHOLMOD_LD, L, B, cm) ;
754
/* printf ("LDx=b %p %p %p\n", Lo, X, B) ; */
751
755
r = resid3 (Lo, D, NULL, X, B) ;
752
756
MAXERR (maxerr, r, 1) ;
753
757
CHOLMOD(free_dense) (&X, cm) ;
755
759
/* solve DL'x=b */
756
760
X = CHOLMOD(solve) (CHOLMOD_DLt, L, B, cm) ;
761
/* printf ("DL'x=b %p %p %p\n", D, X, B) ; */
757
762
r = resid3 (D, Up, NULL, X, B) ;
758
763
MAXERR (maxerr, r, 1) ;
759
764
CHOLMOD(free_dense) (&X, cm) ;
762
767
X = CHOLMOD(solve) (CHOLMOD_L, L, B, cm) ;
768
/* printf ("Lx=b %p %p %p\n", Lo, X, B) ; */
763
769
r = resid3 (Lo, NULL, NULL, X, B) ;
764
770
MAXERR (maxerr, r, 1) ;
765
771
CHOLMOD(free_dense) (&X, cm) ;
767
773
/* solve L'x=b */
768
774
X = CHOLMOD(solve) (CHOLMOD_Lt, L, B, cm) ;
775
/* printf ("L'x=b %p %p %p\n", Up, X, B) ; */
769
776
r = resid3 (Up, NULL, NULL, X, B) ;
770
777
MAXERR (maxerr, r, 1) ;
771
778
CHOLMOD(free_dense) (&X, cm) ;
774
781
X = CHOLMOD(solve) (CHOLMOD_D, L, B, cm) ;
782
/* printf ("Dx=b %p %p %p\n", D, X, B) ; */
775
783
r = resid3 (D, NULL, NULL, X, B) ;
776
784
MAXERR (maxerr, r, 1) ;
777
785
CHOLMOD(free_dense) (&X, cm) ;