diff src/DLD-FUNCTIONS/luinc.cc @ 6027:068e52f1c005

[project @ 2006-10-03 20:07:56 by jwe]
author jwe
date Tue, 03 Oct 2006 20:07:56 +0000
parents 080c08b192d8
children 8b0cfeb06365
line wrap: on
line diff
--- a/src/DLD-FUNCTIONS/luinc.cc
+++ b/src/DLD-FUNCTIONS/luinc.cc
@@ -168,13 +168,16 @@
 			SparseLU fact (sm, Qinit, thresh, true, droptol,
 				       milu, udiag);
 
-			SparseMatrix P = fact.Pr ();
-			SparseMatrix L = P.transpose () * fact.L ();
-			retval(1) = octave_value (fact.U (),
-				  MatrixType (MatrixType::Upper));
-			retval(0) = octave_value (L, MatrixType 
-						  (MatrixType::Permuted_Lower, 
-						   sm_nr, fact.row_perm ()));
+			if (! error_state)
+			  {
+			    SparseMatrix P = fact.Pr ();
+			    SparseMatrix L = P.transpose () * fact.L ();
+			    retval(1) = octave_value (fact.U (),
+						      MatrixType (MatrixType::Upper));
+			    retval(0) = octave_value (L, MatrixType 
+						      (MatrixType::Permuted_Lower, 
+						       sm_nr, fact.row_perm ()));
+			  }
 		      }
 		      break;
 
@@ -183,11 +186,14 @@
 			SparseLU fact (sm, Qinit, thresh, true, droptol,
 				       milu, udiag);
 
-			retval(2) = fact.Pr ();
-			retval(1) = octave_value (fact.U (),
-				  MatrixType (MatrixType::Upper));
-			retval(0) = octave_value (fact.L (),
-				  MatrixType (MatrixType::Lower));
+			if (! error_state)
+			  {
+			    retval(2) = fact.Pr ();
+			    retval(1) = octave_value (fact.U (),
+						      MatrixType (MatrixType::Upper));
+			    retval(0) = octave_value (fact.L (),
+						      MatrixType (MatrixType::Lower));
+			  }
 		      }
 		      break;
 
@@ -197,12 +203,15 @@
 			SparseLU fact (sm, Qinit, thresh, false, droptol,
 				       milu, udiag);
 
-			retval(3) = fact.Pc ();
-			retval(2) = fact.Pr ();
-			retval(1) = octave_value (fact.U (),
-				  MatrixType (MatrixType::Upper));
-			retval(0) = octave_value (fact.L (),
-				  MatrixType (MatrixType::Lower));
+			if (! error_state)
+			  {
+			    retval(3) = fact.Pc ();
+			    retval(2) = fact.Pr ();
+			    retval(1) = octave_value (fact.U (),
+						      MatrixType (MatrixType::Upper));
+			    retval(0) = octave_value (fact.L (),
+						      MatrixType (MatrixType::Lower));
+			  }
 		      }
 		      break;
 		    }
@@ -230,13 +239,17 @@
 			SparseComplexLU fact (sm, Qinit, thresh, true, 
 					      droptol, milu, udiag);
 
-			SparseMatrix P = fact.Pr ();
-			SparseComplexMatrix L = P.transpose () * fact.L ();
-			retval(1) = octave_value (fact.U (),
-				  MatrixType (MatrixType::Upper));
-			retval(0) = octave_value (L, MatrixType 
-						  (MatrixType::Permuted_Lower, 
-						   sm_nr, fact.row_perm ()));
+
+			if (! error_state)
+			  {
+			    SparseMatrix P = fact.Pr ();
+			    SparseComplexMatrix L = P.transpose () * fact.L ();
+			    retval(1) = octave_value (fact.U (),
+						      MatrixType (MatrixType::Upper));
+			    retval(0) = octave_value (L, MatrixType 
+						      (MatrixType::Permuted_Lower, 
+						       sm_nr, fact.row_perm ()));
+			  }
 		      }
 		      break;
 
@@ -245,11 +258,14 @@
 			SparseComplexLU fact (sm, Qinit, thresh, true,
 					      droptol, milu, udiag);
 
-			retval(2) = fact.Pr ();
-			retval(1) = octave_value (fact.U (),
-				  MatrixType (MatrixType::Upper));
-			retval(0) = octave_value (fact.L (),
-				  MatrixType (MatrixType::Lower));
+			if (! error_state)
+			  {
+			    retval(2) = fact.Pr ();
+			    retval(1) = octave_value (fact.U (),
+						      MatrixType (MatrixType::Upper));
+			    retval(0) = octave_value (fact.L (),
+						      MatrixType (MatrixType::Lower));
+			  }
 		      }
 		      break;
 
@@ -259,12 +275,15 @@
 			SparseComplexLU fact (sm, Qinit, thresh, false,
 					      droptol, milu, udiag);
 
-			retval(3) = fact.Pc ();
-			retval(2) = fact.Pr ();
-			retval(1) = octave_value (fact.U (),
-				  MatrixType (MatrixType::Upper));
-			retval(0) = octave_value (fact.L (),
-				  MatrixType (MatrixType::Lower));
+			if (! error_state)
+			  {
+			    retval(3) = fact.Pc ();
+			    retval(2) = fact.Pr ();
+			    retval(1) = octave_value (fact.U (),
+						      MatrixType (MatrixType::Upper));
+			    retval(0) = octave_value (fact.L (),
+						      MatrixType (MatrixType::Lower));
+			  }
 		      }
 		      break;
 		    }