bug 3025 fix
Serge Steer [Mon, 19 May 2008 15:19:39 +0000 (15:19 +0000)]
scilab/modules/sparse/src/c/spSolve.c
scilab/modules/sparse/tests/nonreg_tests/bug_3025.dia.ref [new file with mode: 0644]
scilab/modules/sparse/tests/nonreg_tests/bug_3025.tst [new file with mode: 0644]

index 3aecfc9..83e8bdf 100644 (file)
  *  spDefs.h
  *     Matrix type and macro definitions for the sparse matrix routines.
  */
+#define spINSIDE_SPARSE
 #include "spConfig.h"
 #include "spmatrix.h"
 #include "spDefs.h"
-#define spINSIDE_SPARSE
 
 
 static void SolveComplexMatrix( MatrixPtr Matrix, RealVector RHS, RealVector Solution IMAG_VECTORS );
@@ -126,6 +126,11 @@ char *eMatrix;
 RealVector  RHS, Solution IMAG_VECTORS;
 {
 MatrixPtr  Matrix = (MatrixPtr)eMatrix;
+register  ElementPtr  pElement;
+register  RealVector  Intermediate;
+register  RealNumber  Temp;
+register  int  I, *pExtOrder, Size;
+ElementPtr  pPivot;
 
 /* Begin `spSolve'. */
     ASSERT( IS_VALID(Matrix) AND IS_FACTORED(Matrix) );
diff --git a/scilab/modules/sparse/tests/nonreg_tests/bug_3025.dia.ref b/scilab/modules/sparse/tests/nonreg_tests/bug_3025.dia.ref
new file mode 100644 (file)
index 0000000..6112f97
--- /dev/null
@@ -0,0 +1,18 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA - Serge STEER <serge.steer@inria.fr>
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- Non-regression test for bug 2277 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=2277
+//
+// <-- Short Description -->
+//lusolve produces erroneous results with Scilab5 (it was ok on Scilab4)
+A=sparse([2,2;2,4;3,3;3,7;4,2;4,4;6,6;6,8;7,3;7,7;8,6;8,8],..
+      [-1;1;-1;1;1;-1;-1;1;1;-1;1;-1],[10,10]) ;
+[ptr,rkA]=lufact(A);
+x=lusolve(ptr,zeros(10,1));ludel(ptr);
+if norm(A*x)>1d-14 then bugmes();quit;end
diff --git a/scilab/modules/sparse/tests/nonreg_tests/bug_3025.tst b/scilab/modules/sparse/tests/nonreg_tests/bug_3025.tst
new file mode 100644 (file)
index 0000000..706ae1d
--- /dev/null
@@ -0,0 +1,22 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2007-2008 - INRIA - Serge STEER <serge.steer@inria.fr>
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- Non-regression test for bug 2277 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=2277
+//
+// <-- Short Description -->
+//lusolve produces erroneous results with Scilab5 (it was ok on Scilab4)
+
+A=sparse([2,2;2,4;3,3;3,7;4,2;4,4;6,6;6,8;7,3;7,7;8,6;8,8],..
+      [-1;1;-1;1;1;-1;-1;1;1;-1;1;-1],[10,10]) ;
+[ptr,rkA]=lufact(A);
+x=lusolve(ptr,zeros(10,1));ludel(ptr);
+if norm(A*x)>1d-14 then pause,end
+
+