Set svn:eol-style to native
Pierre Marechal [Mon, 9 Jun 2008 06:51:39 +0000 (06:51 +0000)]
26 files changed:
scilab/modules/dynamic_link/tests/nonreg_tests/bug_2085.c
scilab/modules/dynamic_link/tests/nonreg_tests/bug_2085.tst
scilab/modules/dynamic_link/tests/unit_tests/addinter_loop.tst
scilab/modules/dynamic_link/tests/unit_tests/addinter_template.c
scilab/modules/fileio/tests/unit_tests/isdir.tst
scilab/modules/graphic_export/sci_gateway/c/sci_xg2ps.c
scilab/modules/history_manager/src/c/Scilab_windows_Import.def
scilab/modules/io/src/c/Scilab_Windows_Import.def
scilab/modules/io/tests/nonreg_tests/bug_3075.tst
scilab/modules/string/tests/nonreg_tests/bug_3039.tst
scilab/modules/string/tests/nonreg_tests/bug_3102.tst
scilab/modules/tclsci/tests/nonreg_tests/bug_3054.tst
scilab/modules/umfpack/macros/PlotSparse.sci
scilab/modules/umfpack/macros/ReadHBSparse.sci
scilab/modules/umfpack/macros/ana_style.sci
scilab/modules/umfpack/macros/cond2sp.sci
scilab/modules/umfpack/macros/condestsp.sci
scilab/modules/umfpack/macros/rafiter.sci
scilab/modules/umfpack/macros/replace_Ix_by_Fx.sci
scilab/modules/umfpack/macros/scisptdemo.sci
scilab/modules/umfpack/macros/test_on_colums.sci
scilab/modules/windows_tools/includes/ConvertSlash.h
scilab/modules/windows_tools/src/c/scilab_windows/ConvertSlash.c
scilab/modules/windows_tools/src/c/scilab_windows/Localization_Import.def
scilab/modules/windows_tools/src/c/scilab_windows/setLC_MESSAGES.c
scilab/modules/windows_tools/src/c/scilab_windows/setLC_MESSAGES.h

index 110cfc4..7d470f7 100644 (file)
@@ -1,35 +1,35 @@
-/* ============================================== */\r
-/* Allan CORNET - bug 2085 */\r
-/* ============================================== */\r
-#include <string.h> \r
-#include <stdio.h>\r
-#include "stack-c.h"\r
-/* ============================================== */\r
-static void f99(double *ar,double *ac,int *ita,int *ma,int *na); \r
-/* ============================================== */\r
-int intex2c(char *fname) \r
-{\r
-  static int lr1,lc1,it1,m1, n1;\r
-  int minlhs=1, minrhs=1, maxlhs=1, maxrhs=1;\r
-\r
-  CheckRhs(minrhs,maxrhs) ;\r
-  CheckLhs(minlhs,maxlhs) ;\r
-\r
-  GetRhsCVar(1, "d", &it1, &m1, &n1, &lr1,&lc1);\r
-\r
-  f99(stk(lr1), stk(lc1), &it1, &m1, &n1);\r
-\r
-  LhsVar(1) = 1;\r
-  return 0;\r
-}\r
-/* ============================================== */\r
-static void f99(double *ar,double *ac,int *ita,int *ma,int *na) \r
-{\r
-       int i = 0;\r
-  for ( i= 0 ; i < (*ma)*(*na) ; i++) ar[i] = 2*ar[i] ;\r
-       if ( *ita == 1) \r
-  {\r
-    for ( i= 0 ; i < (*ma)*(*na) ; i++) ac[i] = 3*ac[i] ;\r
-  }\r
-}\r
-/* ============================================== */\r
+/* ============================================== */
+/* Allan CORNET - bug 2085 */
+/* ============================================== */
+#include <string.h> 
+#include <stdio.h>
+#include "stack-c.h"
+/* ============================================== */
+static void f99(double *ar,double *ac,int *ita,int *ma,int *na); 
+/* ============================================== */
+int intex2c(char *fname) 
+{
+  static int lr1,lc1,it1,m1, n1;
+  int minlhs=1, minrhs=1, maxlhs=1, maxrhs=1;
+
+  CheckRhs(minrhs,maxrhs) ;
+  CheckLhs(minlhs,maxlhs) ;
+
+  GetRhsCVar(1, "d", &it1, &m1, &n1, &lr1,&lc1);
+
+  f99(stk(lr1), stk(lc1), &it1, &m1, &n1);
+
+  LhsVar(1) = 1;
+  return 0;
+}
+/* ============================================== */
+static void f99(double *ar,double *ac,int *ita,int *ma,int *na) 
+{
+       int i = 0;
+  for ( i= 0 ; i < (*ma)*(*na) ; i++) ar[i] = 2*ar[i] ;
+       if ( *ita == 1) 
+  {
+    for ( i= 0 ; i < (*ma)*(*na) ; i++) ac[i] = 3*ac[i] ;
+  }
+}
+/* ============================================== */
index d5cb03d..e0f355b 100644 (file)
@@ -1,63 +1,63 @@
-// =============================================================================\r
-// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab\r
-// Copyright (C) 2008 - INRIA - Allan CORNET\r
-//\r
-//  This file is distributed under the same license as the Scilab package.\r
-// =============================================================================\r
-\r
-// <-- Non-regression test for bug 2085 -->\r
-//\r
-// <-- Bugzilla URL -->\r
-// http://bugzilla.scilab.org/show_bug.cgi?id=2085\r
-//\r
-// <-- Short Description -->\r
-// this example fails on some pc ???\r
-\r
-// exec SCI/modules/dynamic_link/tests/nonreg_tests/bug_2085.tst;\r
-\r
-test_path = get_absolute_file_path('bug_2085.tst');\r
-\r
-currentpath = pwd();\r
-\r
-cd TMPDIR;\r
-cd ../;\r
-OS_TMP_DIR = pwd();\r
-\r
-\r
-mkdir(OS_TMP_DIR,'bug_2085');\r
-TEST_DIR = OS_TMP_DIR + filesep() + 'bug_2085';\r
-\r
-copyfile(SCI+'/modules/dynamic_link/tests/nonreg_tests/bug_2085.c' , TEST_DIR + filesep() + 'bug_2085.c');\r
-\r
-chdir(TEST_DIR);\r
-\r
-files=['bug_2085.o'];\r
-ilib_build('bug',['ex2c_1','intex2c'],files,[]);\r
-\r
-// disable message\r
-warning_mode = warning('query');\r
-warning('off');\r
-\r
-// load the shared library \r
-exec loader.sce\r
-\r
-// enable message \r
-warning(warning_mode);\r
-\r
-chdir(currentpath);\r
-\r
-//using the new primitive\r
-r = [1,2,3];\r
-nr = [4,5,5];\r
-\r
-a = ex2c_1(r+%i*nr);\r
-res = (2 * r) +%i*(nr *3);\r
-\r
-if a <> res then pause,end;\r
-\r
-// ulink() all libraries\r
-ulink();\r
-\r
-//remove TMP_DIR\r
-rmdir(TEST_DIR,'s');\r
-// =============================================================================\r
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA - Allan CORNET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- Non-regression test for bug 2085 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=2085
+//
+// <-- Short Description -->
+// this example fails on some pc ???
+
+// exec SCI/modules/dynamic_link/tests/nonreg_tests/bug_2085.tst;
+
+test_path = get_absolute_file_path('bug_2085.tst');
+
+currentpath = pwd();
+
+cd TMPDIR;
+cd ../;
+OS_TMP_DIR = pwd();
+
+
+mkdir(OS_TMP_DIR,'bug_2085');
+TEST_DIR = OS_TMP_DIR + filesep() + 'bug_2085';
+
+copyfile(SCI+'/modules/dynamic_link/tests/nonreg_tests/bug_2085.c' , TEST_DIR + filesep() + 'bug_2085.c');
+
+chdir(TEST_DIR);
+
+files=['bug_2085.o'];
+ilib_build('bug',['ex2c_1','intex2c'],files,[]);
+
+// disable message
+warning_mode = warning('query');
+warning('off');
+
+// load the shared library 
+exec loader.sce
+
+// enable message 
+warning(warning_mode);
+
+chdir(currentpath);
+
+//using the new primitive
+r = [1,2,3];
+nr = [4,5,5];
+
+a = ex2c_1(r+%i*nr);
+res = (2 * r) +%i*(nr *3);
+
+if a <> res then pause,end;
+
+// ulink() all libraries
+ulink();
+
+//remove TMP_DIR
+rmdir(TEST_DIR,'s');
+// =============================================================================
index 8fcb217..54dca4c 100644 (file)
-// =============================================================================\r
-// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab\r
-// Copyright (C) 2008 - INRIA - Allan CORNET\r
-//\r
-//  This file is distributed under the same license as the Scilab package.\r
-// =============================================================================\r
-\r
-// <-- INTERACTIVE TEST -->\r
-\r
-// exec SCI/modules/dynamic_link/tests/unit_tests/addinter_loop.tst;\r
-\r
-//================================================\r
-// test addinter\r
-// Create 78 gateways with 2 functions by gateways\r
-// loop_max depends of some system parameters :\r
-// * memory available\r
-// * O.S : example on Windows , we cannot open more\r
-// than 80 dlls simultanously with LoadLibrary\r
-// * numbers of files already openend\r
-//================================================\r
-loop_max = 78; // may be more on linux\r
-//================================================\r
-ulink();\r
-curPath = getcwd();\r
-chdir(TMPDIR); \r
-//================================================\r
-// creates C functions\r
-//================================================\r
-// load .c file \r
-test_path = get_absolute_file_path('addinter_loop.tst');\r
-template_filename = test_path + filesep() + 'addinter_template.c';\r
-template = mgetl(template_filename);\r
-//================================================\r
-// creates loop_max gateways with 2 functions\r
-// files in TMPDIR\r
-for i = 0 : loop_max\r
-  txtfile = strsubst(template,'interf_template_A0','interf_template_A'+string(i));\r
-  txtfile = strsubst(txtfile,'interf_template_B0','interf_template_B'+string(i));\r
-  txtfile = strsubst(txtfile,'int iValue = 0;','int iValue = '+string(i)+';');\r
-  \r
-  DIR_NAME_ADDINTER = TMPDIR + filesep() + 'addinter_dir_' + string(i);\r
-  \r
-  mkdir(DIR_NAME_ADDINTER);\r
-  mputl(txtfile,DIR_NAME_ADDINTER + filesep() + 'addinter' + string(i) + '.c');\r
-end\r
-//================================================\r
-// link functions and gateways to Scilab\r
-for i = 0 : loop_max\r
-  scilab_functionA = 'scifunA' + string(i);\r
-  scilab_functionB = 'scifunB' + string(i);\r
-  \r
-  c_functionA = 'interf_template_A'+string(i);\r
-  c_functionB = 'interf_template_B'+string(i);\r
-  \r
-  table = [scilab_functionA,c_functionA; ..\r
-           scilab_functionB,c_functionB];\r
-  \r
-  c_file = 'addinter' + string(i) + '.o';\r
-  interf_name = 'interftest_' + string(i);\r
-  \r
-  DIR_NAME_ADDINTER = TMPDIR + filesep() + 'addinter_dir_' + string(i);\r
-  chdir(DIR_NAME_ADDINTER);\r
-  ilib_build(interf_name,table,c_file,[]);\r
-\r
-end\r
-//================================================\r
-// checks scilab functions\r
-for i = 0 : loop_max\r
-\r
-  DIR_NAME_ADDINTER = TMPDIR + filesep() + 'addinter_dir_' + string(i);\r
-  chdir(DIR_NAME_ADDINTER);\r
-  \r
-  // disable message\r
-  warning_mode = warning('query');\r
-  warning('off');\r
-  \r
-  string_to_execute = 'exec(''loader.sce'');' ;\r
-  ierr = execstr(string_to_execute,'errcatch');\r
-  if ierr <> 0 then pause,end\r
\r
-  // enable message\r
-  warning(warning_mode)\r
\r
-  scilab_function = 'scifunA' + string(i);\r
-  string_to_execute = 'if ' + scilab_function + '() <> '+ string(i) +' then pause,end; ';\r
-  ierr = execstr(string_to_execute,'errcatch');\r
-  if ierr <> 0 then pause,end\r
-  \r
-  scilab_function = 'scifunB' + string(i);\r
-  string_to_execute = 'if ' + scilab_function + '() <> '+ string(i) +' then pause,end; ';\r
-  ierr = execstr(string_to_execute,'errcatch');\r
-  if ierr <> 0 then pause,end\r
-end;\r
-//================================================\r
-// remove functions in scilab\r
-for i = 0 : loop_max\r
-  scilab_function = 'scifunA' + string(i);\r
-  clearfun(scilab_function);\r
-  scilab_function = 'scifunB' + string(i);\r
-  clearfun(scilab_function);\r
-end\r
-//================================================\r
-// free dynamic librairies\r
-ulink();\r
-chdir(curPath);\r
-//================================================\r
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA - Allan CORNET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- INTERACTIVE TEST -->
+
+// exec SCI/modules/dynamic_link/tests/unit_tests/addinter_loop.tst;
+
+//================================================
+// test addinter
+// Create 78 gateways with 2 functions by gateways
+// loop_max depends of some system parameters :
+// * memory available
+// * O.S : example on Windows , we cannot open more
+// than 80 dlls simultanously with LoadLibrary
+// * numbers of files already openend
+//================================================
+loop_max = 78; // may be more on linux
+//================================================
+ulink();
+curPath = getcwd();
+chdir(TMPDIR); 
+//================================================
+// creates C functions
+//================================================
+// load .c file 
+test_path = get_absolute_file_path('addinter_loop.tst');
+template_filename = test_path + filesep() + 'addinter_template.c';
+template = mgetl(template_filename);
+//================================================
+// creates loop_max gateways with 2 functions
+// files in TMPDIR
+for i = 0 : loop_max
+  txtfile = strsubst(template,'interf_template_A0','interf_template_A'+string(i));
+  txtfile = strsubst(txtfile,'interf_template_B0','interf_template_B'+string(i));
+  txtfile = strsubst(txtfile,'int iValue = 0;','int iValue = '+string(i)+';');
+  
+  DIR_NAME_ADDINTER = TMPDIR + filesep() + 'addinter_dir_' + string(i);
+  
+  mkdir(DIR_NAME_ADDINTER);
+  mputl(txtfile,DIR_NAME_ADDINTER + filesep() + 'addinter' + string(i) + '.c');
+end
+//================================================
+// link functions and gateways to Scilab
+for i = 0 : loop_max
+  scilab_functionA = 'scifunA' + string(i);
+  scilab_functionB = 'scifunB' + string(i);
+  
+  c_functionA = 'interf_template_A'+string(i);
+  c_functionB = 'interf_template_B'+string(i);
+  
+  table = [scilab_functionA,c_functionA; ..
+           scilab_functionB,c_functionB];
+  
+  c_file = 'addinter' + string(i) + '.o';
+  interf_name = 'interftest_' + string(i);
+  
+  DIR_NAME_ADDINTER = TMPDIR + filesep() + 'addinter_dir_' + string(i);
+  chdir(DIR_NAME_ADDINTER);
+  ilib_build(interf_name,table,c_file,[]);
+
+end
+//================================================
+// checks scilab functions
+for i = 0 : loop_max
+
+  DIR_NAME_ADDINTER = TMPDIR + filesep() + 'addinter_dir_' + string(i);
+  chdir(DIR_NAME_ADDINTER);
+  
+  // disable message
+  warning_mode = warning('query');
+  warning('off');
+  
+  string_to_execute = 'exec(''loader.sce'');' ;
+  ierr = execstr(string_to_execute,'errcatch');
+  if ierr <> 0 then pause,end
+  // enable message
+  warning(warning_mode)
+  scilab_function = 'scifunA' + string(i);
+  string_to_execute = 'if ' + scilab_function + '() <> '+ string(i) +' then pause,end; ';
+  ierr = execstr(string_to_execute,'errcatch');
+  if ierr <> 0 then pause,end
+  
+  scilab_function = 'scifunB' + string(i);
+  string_to_execute = 'if ' + scilab_function + '() <> '+ string(i) +' then pause,end; ';
+  ierr = execstr(string_to_execute,'errcatch');
+  if ierr <> 0 then pause,end
+end;
+//================================================
+// remove functions in scilab
+for i = 0 : loop_max
+  scilab_function = 'scifunA' + string(i);
+  clearfun(scilab_function);
+  scilab_function = 'scifunB' + string(i);
+  clearfun(scilab_function);
+end
+//================================================
+// free dynamic librairies
+ulink();
+chdir(curPath);
+//================================================
index 980e8af..fccf1a1 100644 (file)
@@ -1,34 +1,34 @@
-//===================================================\r
-// Allan CORNET - INRIA - 2008\r
-// dummy test\r
-//===================================================\r
-#include <math.h>\r
-#include "stack-c.h" \r
-//===================================================\r
-int interf_template_A0(char *fname) \r
-{\r
-       int n1=1,m1=1,l1=0;\r
-       int iValue = 0;\r
-       \r
-  CheckRhs(0,0);\r
-  CheckLhs(1,1);\r
-       CreateVar(1, "i", &m1, &n1 ,&l1);\r
-       *istk(l1)= iValue;\r
-  LhsVar(1) = Rhs + 1;\r
-  return 0;\r
-}\r
-//===================================================\r
-int interf_template_B0(char *fname) \r
-{\r
-       int n1=1,m1=1,l1=0;\r
-       int iValue = 0;\r
-       \r
-  CheckRhs(0,0);\r
-  CheckLhs(1,1);\r
-       CreateVar(1, "i", &m1, &n1 ,&l1);\r
-       *istk(l1)= iValue;\r
-  LhsVar(1) = Rhs + 1;\r
-  return 0;\r
-}\r
-//===================================================\r
-\r
+//===================================================
+// Allan CORNET - INRIA - 2008
+// dummy test
+//===================================================
+#include <math.h>
+#include "stack-c.h" 
+//===================================================
+int interf_template_A0(char *fname) 
+{
+       int n1=1,m1=1,l1=0;
+       int iValue = 0;
+       
+  CheckRhs(0,0);
+  CheckLhs(1,1);
+       CreateVar(1, "i", &m1, &n1 ,&l1);
+       *istk(l1)= iValue;
+  LhsVar(1) = Rhs + 1;
+  return 0;
+}
+//===================================================
+int interf_template_B0(char *fname) 
+{
+       int n1=1,m1=1,l1=0;
+       int iValue = 0;
+       
+  CheckRhs(0,0);
+  CheckLhs(1,1);
+       CreateVar(1, "i", &m1, &n1 ,&l1);
+       *istk(l1)= iValue;
+  LhsVar(1) = Rhs + 1;
+  return 0;
+}
+//===================================================
+
index 649442b..56be32d 100644 (file)
@@ -1,24 +1,24 @@
-// =============================================================================\r
-// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab\r
-// Copyright (C) 2008 - INRIA -\r
-//\r
-//  This file is distributed under the same license as the Scilab package.\r
-// =============================================================================\r
-\r
-// =============================================================================\r
-// Unitary tests for isdir function\r
-// =============================================================================\r
-\r
-if isdir(SCIHOME) <> %t then pause,end\r
-if isdir(SCI) <> %t then pause,end\r
-\r
-if isdir(SCIHOME+filesep()) <> %t then pause,end\r
-if isdir(SCI+filesep()) <> %t then pause,end\r
-\r
-if isdir('A_NAME_OF_DIRECTORY') <> %f then pause,end\r
-\r
-DIR_NAME_TST = TMPDIR+filesep()+'MY_TMPDIR_DIR';\r
-if mkdir(DIR_NAME_TST) <> 1 then pause,end\r
-if isdir(DIR_NAME_TST) <> %t then pause,end\r
-if isdir(DIR_NAME_TST+filesep()) <> %t then pause,end\r
-if removedir(DIR_NAME_TST) <> %t then pause,end\r
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA -
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// =============================================================================
+// Unitary tests for isdir function
+// =============================================================================
+
+if isdir(SCIHOME) <> %t then pause,end
+if isdir(SCI) <> %t then pause,end
+
+if isdir(SCIHOME+filesep()) <> %t then pause,end
+if isdir(SCI+filesep()) <> %t then pause,end
+
+if isdir('A_NAME_OF_DIRECTORY') <> %f then pause,end
+
+DIR_NAME_TST = TMPDIR+filesep()+'MY_TMPDIR_DIR';
+if mkdir(DIR_NAME_TST) <> 1 then pause,end
+if isdir(DIR_NAME_TST) <> %t then pause,end
+if isdir(DIR_NAME_TST+filesep()) <> %t then pause,end
+if removedir(DIR_NAME_TST) <> %t then pause,end
index 7fee5ce..647d774 100644 (file)
@@ -1,24 +1,24 @@
-/*\r
- * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab\r
- * Copyright (C) 2006 - INRIA - Fabrice Leray\r
- * Copyright (C) 2006 - INRIA - Jean-Baptiste Silvy\r
- * desc : interface for xg2ps routine  \r
- * \r
- * This file must be used under the terms of the CeCILL.\r
- * This source file is licensed as described in the file COPYING, which\r
- * you should have received as part of this distribution.  The terms\r
- * are also available at    \r
- * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt\r
- *\r
- */\r
-\r
-\r
-#include "sci_xg2ps.h"\r
-#include "xs2file.h"\r
-\r
-/*--------------------------------------------------------------------------*/\r
-int sci_xg2ps(char *fname,unsigned long fname_len)\r
-{\r
-  return xs2file( fname, PS_EXPORT ) ;\r
-}\r
-/*--------------------------------------------------------------------------*/\r
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2006 - INRIA - Fabrice Leray
+ * Copyright (C) 2006 - INRIA - Jean-Baptiste Silvy
+ * desc : interface for xg2ps routine  
+ * 
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at    
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+
+#include "sci_xg2ps.h"
+#include "xs2file.h"
+
+/*--------------------------------------------------------------------------*/
+int sci_xg2ps(char *fname,unsigned long fname_len)
+{
+  return xs2file( fname, PS_EXPORT ) ;
+}
+/*--------------------------------------------------------------------------*/
index 8dacb79..fc3be8c 100644 (file)
@@ -1,7 +1,7 @@
-       LIBRARY    scilab_windows.dll\r
-\r
-\r
-EXPORTS\r
-;scilab_windows\r
-strdup_windows \r
-;\r
+       LIBRARY    scilab_windows.dll
+
+
+EXPORTS
+;scilab_windows
+strdup_windows 
+;
index 3a3e9b3..537be05 100644 (file)
@@ -1,10 +1,10 @@
-       LIBRARY    scilab_windows.dll\r
-\r
-\r
-EXPORTS\r
-;\r
-; scilab_windows\r
-;\r
- strdup_windows\r
-;\r
-\r
+       LIBRARY    scilab_windows.dll
+
+
+EXPORTS
+;
+; scilab_windows
+;
+ strdup_windows
+;
+
index ba50122..e28ab41 100644 (file)
@@ -1,30 +1,30 @@
-// =============================================================================\r
-// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab\r
-// Copyright (C) 2008 - INRIA - Allan CORNET\r
-//\r
-//  This file is distributed under the same license as the Scilab package.\r
-// =============================================================================\r
-\r
-// <-- Non-regression test for bug 3075 -->\r
-//\r
-// <-- Short Description -->\r
-//    get_absolute_file_path() doesn't return error message when the input \r
-//    argument hasn't the right size or a correct value.\r
-//\r
-// <-- Bugzilla URL -->\r
-// http://bugzilla.scilab.org/show_bug.cgi?id=3075\r
-//\r
-\r
-a=mopen(TMPDIR+'test.sce','wt');\r
-warning('off');\r
-if get_absolute_file_path('fhsjdfhjdshkfq') <> pwd()+filesep() then pause,end\r
-warning('on');\r
-\r
-if get_absolute_file_path('test.sce') <> TMPDIR then pause,end \r
-mclose(a);\r
-\r
-ierr = execstr('get_absolute_file_path('''')','errcatch');\r
-if ierr <> 999 then pause,end\r
-\r
-ierr = execstr('get_absolute_file_path([''jdfkfjdk'',''dkslkd''])','errcatch');\r
-if ierr <> 999 then pause,end\r
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA - Allan CORNET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- Non-regression test for bug 3075 -->
+//
+// <-- Short Description -->
+//    get_absolute_file_path() doesn't return error message when the input 
+//    argument hasn't the right size or a correct value.
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=3075
+//
+
+a=mopen(TMPDIR+'test.sce','wt');
+warning('off');
+if get_absolute_file_path('fhsjdfhjdshkfq') <> pwd()+filesep() then pause,end
+warning('on');
+
+if get_absolute_file_path('test.sce') <> TMPDIR then pause,end 
+mclose(a);
+
+ierr = execstr('get_absolute_file_path('''')','errcatch');
+if ierr <> 999 then pause,end
+
+ierr = execstr('get_absolute_file_path([''jdfkfjdk'',''dkslkd''])','errcatch');
+if ierr <> 999 then pause,end
index e00b85c..14b8ce4 100644 (file)
@@ -1,19 +1,19 @@
-// =============================================================================\r
-// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab\r
-// Copyright (C) 2008 - INRIA - Allan CORNET\r
-//\r
-//  This file is distributed under the same license as the Scilab package.\r
-// =============================================================================\r
-\r
-// <-- Non-regression test for bug 3039 -->\r
-//\r
-// <-- Bugzilla URL -->\r
-// http://bugzilla.scilab.org/show_bug.cgi?id=3039\r
-//\r
-a = emptystr([ %F %F ; %T %T]);\r
-if size(a)<>[2 2] then pause,end\r
-if length(a) <> [ 0 0 ; 0 0 ] then pause,end\r
-\r
-b = emptystr([ poly(0,"s")  poly(0,"s")  ; poly(0,"s")  poly(0,"s")  ]);\r
-if size(b)<>[2 2] then pause,end\r
-if length(b) <> [ 0 0 ; 0 0 ] then pause,end\r
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA - Allan CORNET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- Non-regression test for bug 3039 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=3039
+//
+a = emptystr([ %F %F ; %T %T]);
+if size(a)<>[2 2] then pause,end
+if length(a) <> [ 0 0 ; 0 0 ] then pause,end
+
+b = emptystr([ poly(0,"s")  poly(0,"s")  ; poly(0,"s")  poly(0,"s")  ]);
+if size(b)<>[2 2] then pause,end
+if length(b) <> [ 0 0 ; 0 0 ] then pause,end
index eaf5b73..2da9329 100644 (file)
@@ -1,28 +1,28 @@
-// =============================================================================\r
-// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab\r
-// Copyright (C) 2008 - INRIA - Allan CORNET\r
-//\r
-//  This file is distributed under the same license as the Scilab package.\r
-// =============================================================================\r
-\r
-\r
-// <-- Non-regression test for bug 3102 -->\r
-//\r
-// <-- Bugzilla URL -->\r
-// http://bugzilla.scilab.org/show_bug.cgi?id=3102\r
-//\r
-// <-- Short Description -->\r
-// regexp returns a "Unknown error"\r
-\r
-\r
-r="/^b.*b.*b.*b.*b$/";\r
-b = "b"; \r
-for i = 1:123\r
-  b = b + "b";\r
-end;\r
-b = b + "r";\r
-ierr=execstr("regexp(b, r)","errcatch");\r
-if ierr <> 999 then pause,end\r
-\r
-r="/^b.*b.*b.*b.*b/";\r
-if regexp(b, r) <> 1 then pause,end\r
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2008 - INRIA - Allan CORNET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+
+// <-- Non-regression test for bug 3102 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=3102
+//
+// <-- Short Description -->
+// regexp returns a "Unknown error"
+
+
+r="/^b.*b.*b.*b.*b$/";
+b = "b"; 
+for i = 1:123
+  b = b + "b";
+end;
+b = b + "r";
+ierr=execstr("regexp(b, r)","errcatch");
+if ierr <> 999 then pause,end
+
+r="/^b.*b.*b.*b.*b/";
+if regexp(b, r) <> 1 then pause,end
index 99ec8c6..1edb6b1 100644 (file)
@@ -1,14 +1,14 @@
-// =============================================================================\r
-// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab\r
-// Copyright (C) 2005-2008 - INRIA - Allan CORNET\r
-//\r
-//  This file is distributed under the same license as the Scilab package.\r
-// =============================================================================\r
-\r
-// <-- Non-regression test for bug 3054 -->\r
-//\r
-// <-- Bugzilla URL -->\r
-// http://bugzilla.scilab.org/show_bug.cgi?id=3054\r
-//\r
-if TCL_EvalStr("encoding system") == 'identity' then pause,end\r
-if TCL_EvalStr("encoding names") == 'utf-8 identity unicode'  then pause,end\r
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2005-2008 - INRIA - Allan CORNET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- Non-regression test for bug 3054 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=3054
+//
+if TCL_EvalStr("encoding system") == 'identity' then pause,end
+if TCL_EvalStr("encoding names") == 'utf-8 identity unicode'  then pause,end
index f6a8507..98ec8e0 100644 (file)
-//   Copyright Bruno Pinçon, ESIAL-IECN, Inria CORIDA project \r
-//   <bruno.pincon@iecn.u-nancy.fr>\r
-// \r
-// This set of scilab 's macros provide a few sparse utilities.\r
-// \r
-// This software is governed by the CeCILL license under French law and\r
-// abiding by the rules of distribution of free software.  You can  use, \r
-// modify and/ or redistribute the software under the terms of the CeCILL\r
-// license as circulated by CEA, CNRS and INRIA at the following URL\r
-// "http://www.cecill.info". \r
-// \r
-// As a counterpart to the access to the source code and  rights to copy,\r
-// modify and redistribute granted by the license, users are provided only\r
-// with a limited warranty  and the software's author,  the holder of the\r
-// economic rights,  and the successive licensors  have only  limited\r
-// liability. \r
-// \r
-// In this respect, the user's attention is drawn to the risks associated\r
-// with loading,  using,  modifying and/or developing or reproducing the\r
-// software by the user in light of its specific status of free software,\r
-// that may mean  that it is complicated to manipulate,  and  that  also\r
-// therefore means  that it is reserved for developers  and  experienced\r
-// professionals having in-depth computer knowledge. Users are therefore\r
-// encouraged to load and test the software's suitability as regards their\r
-// requirements in conditions enabling the security of their systems and/or \r
-// data to be ensured and,  more generally, to use and operate it in the \r
-// same conditions as regards security. \r
-// \r
-// The fact that you are presently reading this means that you have had\r
-// knowledge of the CeCILL license and that you accept its terms.\r
-\r
-function [] = PlotSparse(A, style)\r
-   //\r
-   //  PURPOSE\r
-   //     plot the pattern of non nul elements of a sparse matrix\r
-   //\r
-   //  ARGUMENTS\r
-   //     A     : a sparse matrix\r
-   //     style : (optional) a string given the color and/or the\r
-   //             marker type of the form "[color][mark]" where\r
-   //             color may be a number referring the color you\r
-   //             want to use (in the current colormap). If you\r
-   //             use the std colormap then color may be one of \r
-   //             the following letters :\r
-   //               k  for black       b  for blue\r
-   //               r  for red         g  for green\r
-   //               c  for cyan        m  for magenta\r
-   //               y  for yellow      t  for turquoise\r
-   //               G  a dark green\r
-   //\r
-   //             mark must be one of the following :\r
-   //               .  point             +  plus \r
-   //               x  cross             *  circled plus \r
-   //               D  filled diamond    d  diamond\r
-   //               ^  upper triangle    v  down triangle\r
-   //               o  circle\r
-   //\r
-   //             by default you have "b." (in fact the 2d color) and \r
-   //             this is also forced in case of error. \r
-   //\r
-   //  COMMENTS\r
-   //     for "big" matrix use essentially point (.) as marker\r
-   //     \r
-   //\r
-   //  AUTHOR\r
-   //     Bruno Pincon <Bruno.Pincon@iecn.u-nancy.fr>\r
-   //\r
-   default_markColor = 2  // blue in std colormap\r
-   default_markId    = 0  // a point .\r
-   \r
-   [lhs, rhs] = argn()\r
-   \r
-   if ( rhs<1 | rhs>2 ) then\r
-     error(msprintf(gettext("%s: Wrong number of input argument(s).\n"),"PlotSparse"));\r
-   end\r
-   \r
-   if (typeof(A) == "sparse") then\r
-      [m, n] = size(A)\r
-      nel = nnz(A)\r
-   else   \r
-      error(msprintf(gettext("%s: Wrong type for input argument #%d: sparse matrix expected.\n"),"PlotSparse",1));\r
-   end\r
-   \r
-   if rhs == 1 then\r
-      markColor = default_markColor\r
-      markId = default_markId\r
-   elseif typeof(style) ~= "string" then\r
-      error(msprintf(gettext("%s: Wrong type for input argument #%d: String expected.\n"),"PlotSparse",2));\r
-   else\r
-      [ markColor , markId ] = ana_style(style)\r
-   end\r
-   \r
-   drawlater()\r
-   plot2d(%inf, %inf, strf="030", rect=[-1,-1,n+1,m+1])\r
-   \r
-   // the tics\r
-   x = [0 n/2 n]\r
-   dx = -0.02*n ; dy = -0.05*m \r
-   xstring(x(1)+dx, dy, "1")\r
-   h1 = gce();\r
-   xstring(x(2)+dx, dy, string(floor(x(2))))\r
-   h2 = gce();\r
-   xstring(x(3)+dx, dy, string(x(3)))\r
-   h3 = gce();\r
-   \r
-   y = [0 m/2 m]\r
-   dx = 0.02*m ; dy = 0\r
-   xstring(m+dx, y(1), string(y(3)))\r
-   h4 = gce();\r
-   xstring(m+dx, y(2), string(floor(y(2))))\r
-   h5 = gce();\r
-   xstring(m+dx, y(3), "1")\r
-   h6 = gce();\r
-\r
-   // information about nnz\r
-   xstring(0, -0.1*m, "nnz = "+string(nnz(A)))\r
-   h7 = gce();\r
-     \r
-   glue([h1,h2,h3,h4,h5,h6,h7])\r
-   \r
-   // display\r
-   ij = spget(A)\r
-   xp = ij(:,2) - 0.5\r
-   yp = m+0.5 - ij(:,1)\r
-   plot2d(xp,yp,-markId,strf="000")\r
-   e = gce();\r
-   e.children(1).mark_foreground = markColor;\r
-\r
-   // the rectangle\r
-   xrect(0,m,n,m)\r
-   drawnow()\r
-   \r
-endfunction\r
+//   Copyright Bruno Pinçon, ESIAL-IECN, Inria CORIDA project 
+//   <bruno.pincon@iecn.u-nancy.fr>
+// 
+// This set of scilab 's macros provide a few sparse utilities.
+// 
+// This software is governed by the CeCILL license under French law and
+// abiding by the rules of distribution of free software.  You can  use, 
+// modify and/ or redistribute the software under the terms of the CeCILL
+// license as circulated by CEA, CNRS and INRIA at the following URL
+// "http://www.cecill.info". 
+// 
+// As a counterpart to the access to the source code and  rights to copy,
+// modify and redistribute granted by the license, users are provided only
+// with a limited warranty  and the software's author,  the holder of the
+// economic rights,  and the successive licensors  have only  limited
+// liability. 
+// 
+// In this respect, the user's attention is drawn to the risks associated
+// with loading,  using,  modifying and/or developing or reproducing the
+// software by the user in light of its specific status of free software,
+// that may mean  that it is complicated to manipulate,  and  that  also
+// therefore means  that it is reserved for developers  and  experienced
+// professionals having in-depth computer knowledge. Users are therefore
+// encouraged to load and test the software's suitability as regards their
+// requirements in conditions enabling the security of their systems and/or 
+// data to be ensured and,  more generally, to use and operate it in the 
+// same conditions as regards security. 
+// 
+// The fact that you are presently reading this means that you have had
+// knowledge of the CeCILL license and that you accept its terms.
+
+function [] = PlotSparse(A, style)
+   //
+   //  PURPOSE
+   //     plot the pattern of non nul elements of a sparse matrix
+   //
+   //  ARGUMENTS
+   //     A     : a sparse matrix
+   //     style : (optional) a string given the color and/or the
+   //             marker type of the form "[color][mark]" where
+   //             color may be a number referring the color you
+   //             want to use (in the current colormap). If you
+   //             use the std colormap then color may be one of 
+   //             the following letters :
+   //               k  for black       b  for blue
+   //               r  for red         g  for green
+   //               c  for cyan        m  for magenta
+   //               y  for yellow      t  for turquoise
+   //               G  a dark green
+   //
+   //             mark must be one of the following :
+   //               .  point             +  plus 
+   //               x  cross             *  circled plus 
+   //               D  filled diamond    d  diamond
+   //               ^  upper triangle    v  down triangle
+   //               o  circle
+   //
+   //             by default you have "b." (in fact the 2d color) and 
+   //             this is also forced in case of error. 
+   //
+   //  COMMENTS
+   //     for "big" matrix use essentially point (.) as marker
+   //     
+   //
+   //  AUTHOR
+   //     Bruno Pincon <Bruno.Pincon@iecn.u-nancy.fr>
+   //
+   default_markColor = 2  // blue in std colormap
+   default_markId    = 0  // a point .
+   
+   [lhs, rhs] = argn()
+   
+   if ( rhs<1 | rhs>2 ) then
+     error(msprintf(gettext("%s: Wrong number of input argument(s).\n"),"PlotSparse"));
+   end
+   
+   if (typeof(A) == "sparse") then
+      [m, n] = size(A)
+      nel = nnz(A)
+   else   
+      error(msprintf(gettext("%s: Wrong type for input argument #%d: sparse matrix expected.\n"),"PlotSparse",1));
+   end
+   
+   if rhs == 1 then
+      markColor = default_markColor
+      markId = default_markId
+   elseif typeof(style) ~= "string" then
+      error(msprintf(gettext("%s: Wrong type for input argument #%d: String expected.\n"),"PlotSparse",2));
+   else
+      [ markColor , markId ] = ana_style(style)
+   end
+   
+   drawlater()
+   plot2d(%inf, %inf, strf="030", rect=[-1,-1,n+1,m+1])
+   
+   // the tics
+   x = [0 n/2 n]
+   dx = -0.02*n ; dy = -0.05*m 
+   xstring(x(1)+dx, dy, "1")
+   h1 = gce();
+   xstring(x(2)+dx, dy, string(floor(x(2))))
+   h2 = gce();
+   xstring(x(3)+dx, dy, string(x(3)))
+   h3 = gce();
+   
+   y = [0 m/2 m]
+   dx = 0.02*m ; dy = 0
+   xstring(m+dx, y(1), string(y(3)))
+   h4 = gce();
+   xstring(m+dx, y(2), string(floor(y(2))))
+   h5 = gce();
+   xstring(m+dx, y(3), "1")
+   h6 = gce();
+
+   // information about nnz
+   xstring(0, -0.1*m, "nnz = "+string(nnz(A)))
+   h7 = gce();
+     
+   glue([h1,h2,h3,h4,h5,h6,h7])
+   
+   // display
+   ij = spget(A)
+   xp = ij(:,2) - 0.5
+   yp = m+0.5 - ij(:,1)
+   plot2d(xp,yp,-markId,strf="000")
+   e = gce();
+   e.children(1).mark_foreground = markColor;
+
+   // the rectangle
+   xrect(0,m,n,m)
+   drawnow()
+   
+endfunction
index 3f31c06..86b06ca 100644 (file)
-//   Copyright Bruno Pinçon, ESIAL-IECN, Inria CORIDA project \r
-//   <bruno.pincon@iecn.u-nancy.fr>\r
-// \r
-// This set of scilab 's macros provide a few sparse utilities.\r
-// \r
-// This software is governed by the CeCILL license under French law and\r
-// abiding by the rules of distribution of free software.  You can  use, \r
-// modify and/ or redistribute the software under the terms of the CeCILL\r
-// license as circulated by CEA, CNRS and INRIA at the following URL\r
-// "http://www.cecill.info". \r
-// \r
-// As a counterpart to the access to the source code and  rights to copy,\r
-// modify and redistribute granted by the license, users are provided only\r
-// with a limited warranty  and the software's author,  the holder of the\r
-// economic rights,  and the successive licensors  have only  limited\r
-// liability. \r
-// \r
-// In this respect, the user's attention is drawn to the risks associated\r
-// with loading,  using,  modifying and/or developing or reproducing the\r
-// software by the user in light of its specific status of free software,\r
-// that may mean  that it is complicated to manipulate,  and  that  also\r
-// therefore means  that it is reserved for developers  and  experienced\r
-// professionals having in-depth computer knowledge. Users are therefore\r
-// encouraged to load and test the software's suitability as regards their\r
-// requirements in conditions enabling the security of their systems and/or \r
-// data to be ensured and,  more generally, to use and operate it in the \r
-// same conditions as regards security. \r
-// \r
-// The fact that you are presently reading this means that you have had\r
-// knowledge of the CeCILL license and that you accept its terms.\r
-\r
-function [A,description,ref,mtype] = ReadHBSparse(filename)\r
-   //\r
-   //  PURPOSE\r
-   //     An utility to read the Harwell-Boeing sparse matrix \r
-   //     format. Currently don't work for unassembled matrix.\r
-   //     Also possible rhs presents in the file are not red.\r
-   //\r
-   //  ARGUMENTS\r
-   //     filename   : (optional) a string given the filename \r
-   //                  (eventually preceeding by the path), if \r
-   //                  filename is not given then the function \r
-   //                  use xgetfile to get filename\r
-   //     A          : the sparse matrix\r
-   //     description: a string given some information about the\r
-   //                  matrix\r
-   //     ref        : a string given the reference of the matrix\r
-   //     mtype      : a string given the "type" of the matrix\r
-   //                  \r
-   //  COMMENTS \r
-   //     Generally the file name is of the form ref.matrixtype  \r
-   //     where mtype is a 3 letters word given some \r
-   //     informations (already inside the file) on the matrix : \r
-   //        1st letter : R|C|P   for real|complex|pattern (no values given)\r
-   //        2d  letter : S|H|Z|U for symetric|hermitian|skew symetric|unsymetric\r
-   //        3d  letter : A|E     for assembled|unassembled matrix\r
-   //                             (case E is not treated by this func)\r
-   //  REFERENCES\r
-   //     Users' Guide for the Harwell-Boeing Sparse Matrix Collection\r
-   //     Iain S. Duff, Roger G. Grimes, John G. Lewis\r
-   //\r
-   //     You may found this guide and numerous sparse\r
-   //     matrices (in the Harwell-Boeing format) at the\r
-   //     University of Florida Sparse Matrix Collection\r
-   //     web site :\r
-   //\r
-   //        http://www.cise.ufl.edu/research/sparse/matrices/\r
-   //\r
-   //     maintained by Tim Davis <http://www.cise.ufl.edu/~davis/>\r
-   //\r
-   //  AUTHOR\r
-   //     Bruno Pincon <Bruno.Pincon@iecn.u-nancy.fr>\r
-   //\r
-   [lhs, rhs] = argn()\r
-\r
-   if rhs == 0 then\r
-      filename = xgetfile("*.[rc][shzu]a", title=[gettext("Choose a sparse matrix"); ...\r
-                                                 gettext("   then click on OK   ")])\r
-   elseif rhs == 1 then\r
-      if typeof(filename) ~= "string" then\r
-        error(msprintf(gettext("%s: Wrong type for input argument #%d: String expected.\n"),"ReadHBSparse",1));\r
-      end\r
-   else\r
-     error(msprintf(gettext("%s: Wrong number of input argument(s): At least %d expected.\n"),"ReadHBSparse",0));\r
-   end\r
-   \r
-   unit = file("open", filename, "old")\r
-\r
-   // 1)  read the 4 or 5 header lines\r
-   \r
-   line1 = read(unit,1,1,"(A)")\r
-   ref = stripblanks(part(line1,73:80))\r
-   ref = convstr(ref)\r
-   description = stripblanks(part(line1,1:72))\r
-   description = convstr(description)\r
-\r
-   // normaly the line2 contains 5 numbers and if the last is zero\r
-   // the file contains no rhs but in this case in some HB file\r
-   // we have only 4 numbers. So the following is a trick to take\r
-   // into account this pb\r
-   line2 = read(unit,1,1,"(A)") // read the line 2 as a string\r
-   line2 = evstr(line2)         // this string is then transform is a row vector\r
-   if length(line2) < 5 then\r
-      Rhs_in_file = %f\r
-   else\r
-      if line2(5) == 0 then\r
-        Rhs_in_file = %f\r
-      else\r
-        Rhs_in_file = %t\r
-        warning(msprintf(gettext("%s: The file contains a rhs but it will not be read !"),"ReadHBSparse"));\r
-        \r
-      end\r
-   end\r
-   \r
-   line3 = read(unit,1,1,"(A)")\r
-   mtype = convstr(part(line3,1:3))\r
-   \r
-   Dimensions = evstr(part(line3,4:80))\r
-   if part(mtype,3)=="e" then\r
-      error(msprintf(gettext("%s: currently don''t read unassembled (elemental) sparse matrix."),"ReadHBSparse"));\r
-   end\r
-   TypeValues = part(mtype,1) // r for real, c for complex, p for pattern\r
-                                  \r
-   m     = Dimensions(1)   // number of rows\r
-   n     = Dimensions(2)   // number of columns \r
-   nb_nz = Dimensions(3)   // number of non zeros\r
-   \r
-   \r
-   line4 = read(unit,1,1,"(A)")  // these are the formats\r
-   form1 = stripblanks(part(line4,1:16))\r
-   form2 = stripblanks(part(line4,17:32))\r
-   form3 = stripblanks(part(line4,33:52))\r
-   // for the 2 first replace Ix by Fx.0 : the read func uses only float formats\r
-   form1 = replace_Ix_by_Fx(form1)\r
-   form2 = replace_Ix_by_Fx(form2)\r
-   \r
-   if Rhs_in_file then  // a 5 header line to read (but ignored)\r
-      line5 = read(unit,1,1,"(A)")  \r
-   end\r
-   \r
-   \r
-   // 2) read the datas\r
-   \r
-   col_ptr = read(unit,1,n+1,form1)\r
-   ind_row = read(unit,1,nb_nz,form2)\r
-   select TypeValues\r
-   case "p" // values given \r
-      warning(msprintf(gettext("%s: No values for this matrix (only non zero pattern) : put some 1."),"ReadHBSparse"));\r
-      val = ones(1,nb_nz)\r
-   case "r" // values are real\r
-      val = read(unit,1,nb_nz,form3)\r
-   case "c" // values are complex\r
-      valc = matrix( read(unit,1,2*nb_nz,form3) , 2, nb_nz )\r
-      val = valc(1,:) + %i*(valc(2,:))\r
-      clear valc\r
-   end\r
-\r
-   file("close", unit)\r
-   \r
-   // 3) form the sparse scilab matrix\r
-\r
-   // 3-1/ form the basic matrix\r
-   ind_col = ones(1,nb_nz)\r
-   for i = 2:n\r
-      ind_col(col_ptr(i):col_ptr(i+1)-1) = i\r
-   end\r
-   \r
-   A = sparse([ind_row' ind_col'], val, [m n])\r
-   clear ind_row ind_col col_ptr val  // to regain some memory\r
-   \r
-   // 3-2/ complete the matrix depending the symetry property\r
-   MatrixSymetry = part(mtype,2)\r
-   select MatrixSymetry\r
-   case "s"  // (real or complex) symmetric matrix \r
-      A = A - diag(diag(A)) + A.'\r
-   case "h"  // complex hermitian matrix\r
-      A = A - diag(diag(A)) + A'\r
-   case "z"  // skew symmetric matrix\r
-      A = A - A'\r
-   end\r
-   \r
-endfunction\r
+//   Copyright Bruno Pinçon, ESIAL-IECN, Inria CORIDA project 
+//   <bruno.pincon@iecn.u-nancy.fr>
+// 
+// This set of scilab 's macros provide a few sparse utilities.
+// 
+// This software is governed by the CeCILL license under French law and
+// abiding by the rules of distribution of free software.  You can  use, 
+// modify and/ or redistribute the software under the terms of the CeCILL
+// license as circulated by CEA, CNRS and INRIA at the following URL
+// "http://www.cecill.info". 
+// 
+// As a counterpart to the access to the source code and  rights to copy,
+// modify and redistribute granted by the license, users are provided only
+// with a limited warranty  and the software's author,  the holder of the
+// economic rights,  and the successive licensors  have only  limited
+// liability. 
+// 
+// In this respect, the user's attention is drawn to the risks associated
+// with loading,  using,  modifying and/or developing or reproducing the
+// software by the user in light of its specific status of free software,
+// that may mean  that it is complicated to manipulate,  and  that  also
+// therefore means  that it is reserved for developers  and  experienced
+// professionals having in-depth computer knowledge. Users are therefore
+// encouraged to load and test the software's suitability as regards their
+// requirements in conditions enabling the security of their systems and/or 
+// data to be ensured and,  more generally, to use and operate it in the 
+// same conditions as regards security. 
+// 
+// The fact that you are presently reading this means that you have had
+// knowledge of the CeCILL license and that you accept its terms.
+
+function [A,description,ref,mtype] = ReadHBSparse(filename)
+   //
+   //  PURPOSE
+   //     An utility to read the Harwell-Boeing sparse matrix 
+   //     format. Currently don't work for unassembled matrix.
+   //     Also possible rhs presents in the file are not red.
+   //
+   //  ARGUMENTS
+   //     filename   : (optional) a string given the filename 
+   //                  (eventually preceeding by the path), if 
+   //                  filename is not given then the function 
+   //                  use xgetfile to get filename
+   //     A          : the sparse matrix
+   //     description: a string given some information about the
+   //                  matrix
+   //     ref        : a string given the reference of the matrix
+   //     mtype      : a string given the "type" of the matrix
+   //                  
+   //  COMMENTS 
+   //     Generally the file name is of the form ref.matrixtype  
+   //     where mtype is a 3 letters word given some 
+   //     informations (already inside the file) on the matrix : 
+   //        1st letter : R|C|P   for real|complex|pattern (no values given)
+   //        2d  letter : S|H|Z|U for symetric|hermitian|skew symetric|unsymetric
+   //        3d  letter : A|E     for assembled|unassembled matrix
+   //                             (case E is not treated by this func)
+   //  REFERENCES
+   //     Users' Guide for the Harwell-Boeing Sparse Matrix Collection
+   //     Iain S. Duff, Roger G. Grimes, John G. Lewis
+   //
+   //     You may found this guide and numerous sparse
+   //     matrices (in the Harwell-Boeing format) at the
+   //     University of Florida Sparse Matrix Collection
+   //     web site :
+   //
+   //        http://www.cise.ufl.edu/research/sparse/matrices/
+   //
+   //     maintained by Tim Davis <http://www.cise.ufl.edu/~davis/>
+   //
+   //  AUTHOR
+   //     Bruno Pincon <Bruno.Pincon@iecn.u-nancy.fr>
+   //
+   [lhs, rhs] = argn()
+
+   if rhs == 0 then
+      filename = xgetfile("*.[rc][shzu]a", title=[gettext("Choose a sparse matrix"); ...
+                                                 gettext("   then click on OK   ")])
+   elseif rhs == 1 then
+      if typeof(filename) ~= "string" then
+        error(msprintf(gettext("%s: Wrong type for input argument #%d: String expected.\n"),"ReadHBSparse",1));
+      end
+   else
+     error(msprintf(gettext("%s: Wrong number of input argument(s): At least %d expected.\n"),"ReadHBSparse",0));
+   end
+   
+   unit = file("open", filename, "old")
+
+   // 1)  read the 4 or 5 header lines
+   
+   line1 = read(unit,1,1,"(A)")
+   ref = stripblanks(part(line1,73:80))
+   ref = convstr(ref)
+   description = stripblanks(part(line1,1:72))
+   description = convstr(description)
+
+   // normaly the line2 contains 5 numbers and if the last is zero
+   // the file contains no rhs but in this case in some HB file
+   // we have only 4 numbers. So the following is a trick to take
+   // into account this pb
+   line2 = read(unit,1,1,"(A)") // read the line 2 as a string
+   line2 = evstr(line2)         // this string is then transform is a row vector
+   if length(line2) < 5 then
+      Rhs_in_file = %f
+   else
+      if line2(5) == 0 then
+        Rhs_in_file = %f
+      else
+        Rhs_in_file = %t
+        warning(msprintf(gettext("%s: The file contains a rhs but it will not be read !"),"ReadHBSparse"));
+        
+      end
+   end
+   
+   line3 = read(unit,1,1,"(A)")
+   mtype = convstr(part(line3,1:3))
+   
+   Dimensions = evstr(part(line3,4:80))
+   if part(mtype,3)=="e" then
+      error(msprintf(gettext("%s: currently don''t read unassembled (elemental) sparse matrix."),"ReadHBSparse"));
+   end
+   TypeValues = part(mtype,1) // r for real, c for complex, p for pattern
+                                  
+   m     = Dimensions(1)   // number of rows
+   n     = Dimensions(2)   // number of columns 
+   nb_nz = Dimensions(3)   // number of non zeros
+   
+   
+   line4 = read(unit,1,1,"(A)")  // these are the formats
+   form1 = stripblanks(part(line4,1:16))
+   form2 = stripblanks(part(line4,17:32))
+   form3 = stripblanks(part(line4,33:52))
+   // for the 2 first replace Ix by Fx.0 : the read func uses only float formats
+   form1 = replace_Ix_by_Fx(form1)
+   form2 = replace_Ix_by_Fx(form2)
+   
+   if Rhs_in_file then  // a 5 header line to read (but ignored)
+      line5 = read(unit,1,1,"(A)")  
+   end
+   
+   
+   // 2) read the datas
+   
+   col_ptr = read(unit,1,n+1,form1)
+   ind_row = read(unit,1,nb_nz,form2)
+   select TypeValues
+   case "p" // values given 
+      warning(msprintf(gettext("%s: No values for this matrix (only non zero pattern) : put some 1."),"ReadHBSparse"));
+      val = ones(1,nb_nz)
+   case "r" // values are real
+      val = read(unit,1,nb_nz,form3)
+   case "c" // values are complex
+      valc = matrix( read(unit,1,2*nb_nz,form3) , 2, nb_nz )
+      val = valc(1,:) + %i*(valc(2,:))
+      clear valc
+   end
+
+   file("close", unit)
+   
+   // 3) form the sparse scilab matrix
+
+   // 3-1/ form the basic matrix
+   ind_col = ones(1,nb_nz)
+   for i = 2:n
+      ind_col(col_ptr(i):col_ptr(i+1)-1) = i
+   end
+   
+   A = sparse([ind_row' ind_col'], val, [m n])
+   clear ind_row ind_col col_ptr val  // to regain some memory
+   
+   // 3-2/ complete the matrix depending the symetry property
+   MatrixSymetry = part(mtype,2)
+   select MatrixSymetry
+   case "s"  // (real or complex) symmetric matrix 
+      A = A - diag(diag(A)) + A.'
+   case "h"  // complex hermitian matrix
+      A = A - diag(diag(A)) + A'
+   case "z"  // skew symmetric matrix
+      A = A - A'
+   end
+   
+endfunction
index cc9f59a..e8ce94c 100644 (file)
@@ -1,85 +1,85 @@
-//   Copyright Bruno Pinçon, ESIAL-IECN, Inria CORIDA project \r
-//   <bruno.pincon@iecn.u-nancy.fr>\r
-// \r
-// This set of scilab 's macros provide a few sparse utilities.\r
-// \r
-// This software is governed by the CeCILL license under French law and\r
-// abiding by the rules of distribution of free software.  You can  use, \r
-// modify and/ or redistribute the software under the terms of the CeCILL\r
-// license as circulated by CEA, CNRS and INRIA at the following URL\r
-// "http://www.cecill.info". \r
-// \r
-// As a counterpart to the access to the source code and  rights to copy,\r
-// modify and redistribute granted by the license, users are provided only\r
-// with a limited warranty  and the software's author,  the holder of the\r
-// economic rights,  and the successive licensors  have only  limited\r
-// liability. \r
-// \r
-// In this respect, the user's attention is drawn to the risks associated\r
-// with loading,  using,  modifying and/or developing or reproducing the\r
-// software by the user in light of its specific status of free software,\r
-// that may mean  that it is complicated to manipulate,  and  that  also\r
-// therefore means  that it is reserved for developers  and  experienced\r
-// professionals having in-depth computer knowledge. Users are therefore\r
-// encouraged to load and test the software's suitability as regards their\r
-// requirements in conditions enabling the security of their systems and/or \r
-// data to be ensured and,  more generally, to use and operate it in the \r
-// same conditions as regards security. \r
-// \r
-// The fact that you are presently reading this means that you have had\r
-// knowledge of the CeCILL license and that you accept its terms.\r
-\r
-function [col, mark] = ana_style(style)\r
-  //\r
-  //  an utility for PlotSparse\r
-  //\r
-  tab_col  = ["k" "b" "r" "g" "c" "m" "y" "t" "G"]\r
-  num_col  = [ 1   2   5   3   4   6  32  16  13 ]\r
-  tab_mark = ["." "+" "x" "*" "D" "d" "^" "v" "o"]\r
-  num_mark = [ 0   1   2   3   4   5   6   7   9 ]\r
-\r
-  deff("[b] = is_digit(c)",[ "code = str2code(c)";...\r
-                            "b = 0 <= code & code <= 9" ])\r
-  n = length(style)\r
-  if n >= 1 then\r
-     c = part(style,1) ; ic = 1\r
-     ind = grep(tab_col, c)\r
-     if ind == [] then\r
-       if is_digit(c) then\r
-          while %t\r
-             ic = ic+1\r
-             if ic <= n then\r
-                c = part(style,ic)\r
-                if ~is_digit(c) then , break, end\r
-             else\r
-                break\r
-             end\r
-          end\r
-          col = evstr(part(style,1:ic-1))\r
-          nb_col = xget("lastpattern")\r
-          if col < 1  |  col > nb_col then\r
-             col = default_markColor\r
-          end\r
-       else\r
-          col = default_markColor\r
-       end\r
-     else\r
-       ic = 2\r
-       col = num_col(ind)\r
-     end\r
-     reste = part(style,ic:n)\r
-     if reste == "" then\r
-       mark = default_markId\r
-     else\r
-       ind = grep(tab_mark, part(style,ic:n))\r
-       if ind == [] then\r
-          mark = default_markId\r
-       else\r
-          mark = num_mark(ind)\r
-       end\r
-     end\r
-  else\r
-     col = default_markColor ; mark = default_markId\r
-  end\r
-\r
-endfunction\r
+//   Copyright Bruno Pinçon, ESIAL-IECN, Inria CORIDA project 
+//   <bruno.pincon@iecn.u-nancy.fr>
+// 
+// This set of scilab 's macros provide a few sparse utilities.
+// 
+// This software is governed by the CeCILL license under French law and
+// abiding by the rules of distribution of free software.  You can  use, 
+// modify and/ or redistribute the software under the terms of the CeCILL
+// license as circulated by CEA, CNRS and INRIA at the following URL
+// "http://www.cecill.info". 
+// 
+// As a counterpart to the access to the source code and  rights to copy,
+// modify and redistribute granted by the license, users are provided only
+// with a limited warranty  and the software's author,  the holder of the
+// economic rights,  and the successive licensors  have only  limited
+// liability. 
+// 
+// In this respect, the user's attention is drawn to the risks associated
+// with loading,  using,  modifying and/or developing or reproducing the
+// software by the user in light of its specific status of free software,
+// that may mean  that it is complicated to manipulate,  and  that  also
+// therefore means  that it is reserved for developers  and  experienced
+// professionals having in-depth computer knowledge. Users are therefore
+// encouraged to load and test the software's suitability as regards their
+// requirements in conditions enabling the security of their systems and/or 
+// data to be ensured and,  more generally, to use and operate it in the 
+// same conditions as regards security. 
+// 
+// The fact that you are presently reading this means that you have had
+// knowledge of the CeCILL license and that you accept its terms.
+
+function [col, mark] = ana_style(style)
+  //
+  //  an utility for PlotSparse
+  //
+  tab_col  = ["k" "b" "r" "g" "c" "m" "y" "t" "G"]
+  num_col  = [ 1   2   5   3   4   6  32  16  13 ]
+  tab_mark = ["." "+" "x" "*" "D" "d" "^" "v" "o"]
+  num_mark = [ 0   1   2   3   4   5   6   7   9 ]
+
+  deff("[b] = is_digit(c)",[ "code = str2code(c)";...
+                            "b = 0 <= code & code <= 9" ])
+  n = length(style)
+  if n >= 1 then
+     c = part(style,1) ; ic = 1
+     ind = grep(tab_col, c)
+     if ind == [] then
+       if is_digit(c) then
+          while %t
+             ic = ic+1
+             if ic <= n then
+                c = part(style,ic)
+                if ~is_digit(c) then , break, end
+             else
+                break
+             end
+          end
+          col = evstr(part(style,1:ic-1))
+          nb_col = xget("lastpattern")
+          if col < 1  |  col > nb_col then
+             col = default_markColor
+          end
+       else
+          col = default_markColor
+       end
+     else
+       ic = 2
+       col = num_col(ind)
+     end
+     reste = part(style,ic:n)
+     if reste == "" then
+       mark = default_markId
+     else
+       ind = grep(tab_mark, part(style,ic:n))
+       if ind == [] then
+          mark = default_markId
+       else
+          mark = num_mark(ind)
+       end
+     end
+  else
+     col = default_markColor ; mark = default_markId
+  end
+
+endfunction
index 4dbd557..0b39dd9 100644 (file)
-//   Copyright Bruno Pinçon, ESIAL-IECN, Inria CORIDA project \r
-//   <bruno.pincon@iecn.u-nancy.fr>\r
-// \r
-// This set of scilab 's macros provide a few sparse utilities.\r
-// \r
-// This software is governed by the CeCILL license under French law and\r
-// abiding by the rules of distribution of free software.  You can  use, \r
-// modify and/ or redistribute the software under the terms of the CeCILL\r
-// license as circulated by CEA, CNRS and INRIA at the following URL\r
-// "http://www.cecill.info". \r
-// \r
-// As a counterpart to the access to the source code and  rights to copy,\r
-// modify and redistribute granted by the license, users are provided only\r
-// with a limited warranty  and the software's author,  the holder of the\r
-// economic rights,  and the successive licensors  have only  limited\r
-// liability. \r
-// \r
-// In this respect, the user's attention is drawn to the risks associated\r
-// with loading,  using,  modifying and/or developing or reproducing the\r
-// software by the user in light of its specific status of free software,\r
-// that may mean  that it is complicated to manipulate,  and  that  also\r
-// therefore means  that it is reserved for developers  and  experienced\r
-// professionals having in-depth computer knowledge. Users are therefore\r
-// encouraged to load and test the software's suitability as regards their\r
-// requirements in conditions enabling the security of their systems and/or \r
-// data to be ensured and,  more generally, to use and operate it in the \r
-// same conditions as regards security. \r
-// \r
-// The fact that you are presently reading this means that you have had\r
-// knowledge of the CeCILL license and that you accept its terms.\r
-\r
-function [K2, lm, vm, lM, vM] = cond2sp(A, C, rtol, itermax, verb)\r
-   //\r
-   //  PURPOSE\r
-   //     for a s.p.d. matrix computes the maximum and minimum\r
-   //     eigen element (value and vector) with the power and\r
-   //     inverse power method then the 2-norm condition number\r
-   //     K2 = lM / lm\r
-   //\r
-   //  PARAMETERS\r
-   //    inputs\r
-   //    ------\r
-   //     A       : a sparse s.p.d. matrix\r
-   //     C       : pointer onto a Cholesky factorization (gotten with \r
-   //               taucs_chfact)\r
-   //     rtol     : (optional) relative precision for the output test \r
-   //                   (l_new - l_old)/l_new < rtol \r
-   //     itermax : (optional) maximum number of iteration in each step\r
-   //     verb    : (optional) a boolean must be %t for display result \r
-   //               for each iteration\r
-   //\r
-   //   outputs\r
-   //   -------\r
-   //     K2      : 2-norm condition number\r
-   //     lm      : min eigenvalue\r
-   //     vm      : associated eigenvector\r
-   //     lM      : max eigenvalue\r
-   //     vM      : associated eigenvector\r
-      \r
-   //\r
-   [lhs, rhs] = argn()\r
-   // no verif\r
-   if ~exists("verb", "local") then , verb = %f , end\r
-   if ~exists("rtol", "local") then , rtol = 1.e-3, end\r
-   if ~exists("itermax","local") then , itermax = 30 , end\r
-   itermax = max(4,itermax)  // 4 iterations are forced \r
-   \r
-   // 1) computes (with "direct Rayleigh power method") lM, vM \r
-   n = size(A,1)\r
-   x = rand(n,1) ; x = x / norm(x)\r
-   y = A*x\r
-   lM_old = x'*y\r
-   iter = 0\r
-   if verb then\r
-      mprintf(gettext("\n approximate (lM,vM) with the iterative power method \n"));\r
-      mprintf(gettext(" ----------------------------------------------------- \n"));\r
-   end   \r
-   while %t\r
-      iter = iter + 1\r
-      x = y / norm(y)\r
-      y = A*x\r
-      lM = x'*y\r
-      if verb then \r
-        mprintf(gettext(" iteration %3d : lM = %e  \n"), iter, lM);\r
-      end\r
-      crit = abs((lM - lM_old)/lM) \r
-      if crit < rtol  &  iter > 3 then \r
-        break\r
-      else\r
-        lM_old = lM\r
-      end\r
-      if iter >= itermax then\r
-          \r
-        mprintf(gettext(" Warning : for lM ""convergence"" at rtol = %e \n"), rtol);\r
-        mprintf(gettext("           don''t reached after %d iterations (got only %e) \n"), itermax, crit);\r
-        break\r
-      end\r
-   end\r
-   vM = x\r
-\r
-   // 2) computes (with "inverse Rayleigh power method") lm, vm \r
-   x = rand(n,1) ; x = x / norm(x)\r
-   y = taucs_chsolve(C,x)\r
-   lm_old = x'*y\r
-   iter = 0\r
-   if verb then\r
-      mprintf(gettext("\n approximate (lm,vm) with the inverse iterative power method \n"));\r
-      mprintf(gettext(" ------------------------------------------------------------\n"));\r
-   end   \r
-   while %t\r
-      iter = iter + 1\r
-      x = y / norm(y)\r
-      y = taucs_chsolve(C,x)\r
-      lm = x'*y\r
-      if verb then \r
-        mprintf(gettext(" iteration %3d : lm = %e  \n"), iter, 1/lm) \r
-      end\r
-      crit = abs((lm - lm_old)/lm)\r
-      if crit < rtol  &  iter > 3 then \r
-        break\r
-      else\r
-        lm_old = lm\r
-      end\r
-      if iter >= itermax then\r
-        mprintf(gettext(" Warning : for lm ""convergence"" at rtol = %e \n"), rtol);\r
-        mprintf(gettext("           don''t reached after %d iterations (got only %e) \n"),itermax, crit);\r
-        break\r
-      end\r
-    end\r
-   vm = x\r
-   lm = 1/lm;\r
-   K2 = lM/lm;\r
-   \r
-endfunction\r
+//   Copyright Bruno Pinçon, ESIAL-IECN, Inria CORIDA project 
+//   <bruno.pincon@iecn.u-nancy.fr>
+// 
+// This set of scilab 's macros provide a few sparse utilities.
+// 
+// This software is governed by the CeCILL license under French law and
+// abiding by the rules of distribution of free software.  You can  use, 
+// modify and/ or redistribute the software under the terms of the CeCILL
+// license as circulated by CEA, CNRS and INRIA at the following URL
+// "http://www.cecill.info". 
+// 
+// As a counterpart to the access to the source code and  rights to copy,
+// modify and redistribute granted by the license, users are provided only
+// with a limited warranty  and the software's author,  the holder of the
+// economic rights,  and the successive licensors  have only  limited
+// liability. 
+// 
+// In this respect, the user's attention is drawn to the risks associated
+// with loading,  using,  modifying and/or developing or reproducing the
+// software by the user in light of its specific status of free software,
+// that may mean  that it is complicated to manipulate,  and  that  also
+// therefore means  that it is reserved for developers  and  experienced
+// professionals having in-depth computer knowledge. Users are therefore
+// encouraged to load and test the software's suitability as regards their
+// requirements in conditions enabling the security of their systems and/or 
+// data to be ensured and,  more generally, to use and operate it in the 
+// same conditions as regards security. 
+// 
+// The fact that you are presently reading this means that you have had
+// knowledge of the CeCILL license and that you accept its terms.
+
+function [K2, lm, vm, lM, vM] = cond2sp(A, C, rtol, itermax, verb)
+   //
+   //  PURPOSE
+   //     for a s.p.d. matrix computes the maximum and minimum
+   //     eigen element (value and vector) with the power and
+   //     inverse power method then the 2-norm condition number
+   //     K2 = lM / lm
+   //
+   //  PARAMETERS
+   //    inputs
+   //    ------
+   //     A       : a sparse s.p.d. matrix
+   //     C       : pointer onto a Cholesky factorization (gotten with 
+   //               taucs_chfact)
+   //     rtol     : (optional) relative precision for the output test 
+   //                   (l_new - l_old)/l_new < rtol 
+   //     itermax : (optional) maximum number of iteration in each step
+   //     verb    : (optional) a boolean must be %t for display result 
+   //               for each iteration
+   //
+   //   outputs
+   //   -------
+   //     K2      : 2-norm condition number
+   //     lm      : min eigenvalue
+   //     vm      : associated eigenvector
+   //     lM      : max eigenvalue
+   //     vM      : associated eigenvector
+      
+   //
+   [lhs, rhs] = argn()
+   // no verif
+   if ~exists("verb", "local") then , verb = %f , end
+   if ~exists("rtol", "local") then , rtol = 1.e-3, end
+   if ~exists("itermax","local") then , itermax = 30 , end
+   itermax = max(4,itermax)  // 4 iterations are forced 
+   
+   // 1) computes (with "direct Rayleigh power method") lM, vM 
+   n = size(A,1)
+   x = rand(n,1) ; x = x / norm(x)
+   y = A*x
+   lM_old = x'*y
+   iter = 0
+   if verb then
+      mprintf(gettext("\n approximate (lM,vM) with the iterative power method \n"));
+      mprintf(gettext(" ----------------------------------------------------- \n"));
+   end   
+   while %t
+      iter = iter + 1
+      x = y / norm(y)
+      y = A*x
+      lM = x'*y
+      if verb then 
+        mprintf(gettext(" iteration %3d : lM = %e  \n"), iter, lM);
+      end
+      crit = abs((lM - lM_old)/lM) 
+      if crit < rtol  &  iter > 3 then 
+        break
+      else
+        lM_old = lM
+      end
+      if iter >= itermax then
+          
+        mprintf(gettext(" Warning : for lM ""convergence"" at rtol = %e \n"), rtol);
+        mprintf(gettext("           don''t reached after %d iterations (got only %e) \n"), itermax, crit);
+        break
+      end
+   end
+   vM = x
+
+   // 2) computes (with "inverse Rayleigh power method") lm, vm 
+   x = rand(n,1) ; x = x / norm(x)
+   y = taucs_chsolve(C,x)
+   lm_old = x'*y
+   iter = 0
+   if verb then
+      mprintf(gettext("\n approximate (lm,vm) with the inverse iterative power method \n"));
+      mprintf(gettext(" ------------------------------------------------------------\n"));
+   end   
+   while %t
+      iter = iter + 1
+      x = y / norm(y)
+      y = taucs_chsolve(C,x)
+      lm = x'*y
+      if verb then 
+        mprintf(gettext(" iteration %3d : lm = %e  \n"), iter, 1/lm) 
+      end
+      crit = abs((lm - lm_old)/lm)
+      if crit < rtol  &  iter > 3 then 
+        break
+      else
+        lm_old = lm
+      end
+      if iter >= itermax then
+        mprintf(gettext(" Warning : for lm ""convergence"" at rtol = %e \n"), rtol);
+        mprintf(gettext("           don''t reached after %d iterations (got only %e) \n"),itermax, crit);
+        break
+      end
+    end
+   vm = x
+   lm = 1/lm;
+   K2 = lM/lm;
+   
+endfunction
index 909edc6..d48c29b 100644 (file)
-//   Copyright Bruno Pinçon, ESIAL-IECN, Inria CORIDA project \r
-//   <bruno.pincon@iecn.u-nancy.fr>\r
-// \r
-// This set of scilab 's macros provide a few sparse utilities.\r
-// \r
-// This software is governed by the CeCILL license under French law and\r
-// abiding by the rules of distribution of free software.  You can  use, \r
-// modify and/ or redistribute the software under the terms of the CeCILL\r
-// license as circulated by CEA, CNRS and INRIA at the following URL\r
-// "http://www.cecill.info". \r
-// \r
-// As a counterpart to the access to the source code and  rights to copy,\r
-// modify and redistribute granted by the license, users are provided only\r
-// with a limited warranty  and the software's author,  the holder of the\r
-// economic rights,  and the successive licensors  have only  limited\r
-// liability. \r
-// \r
-// In this respect, the user's attention is drawn to the risks associated\r
-// with loading,  using,  modifying and/or developing or reproducing the\r
-// software by the user in light of its specific status of free software,\r
-// that may mean  that it is complicated to manipulate,  and  that  also\r
-// therefore means  that it is reserved for developers  and  experienced\r
-// professionals having in-depth computer knowledge. Users are therefore\r
-// encouraged to load and test the software's suitability as regards their\r
-// requirements in conditions enabling the security of their systems and/or \r
-// data to be ensured and,  more generally, to use and operate it in the \r
-// same conditions as regards security. \r
-// \r
-// The fact that you are presently reading this means that you have had\r
-// knowledge of the CeCILL license and that you accept its terms.\r
-\r
-function [K1] = condestsp(A, arg2, arg3)\r
-  //                     (A, LUp  , t)\r
-  //  PURPOSE\r
-  //     Give an estimate of the 1-norm condition number of \r
-  //     the sparse matrix A by Algorithm 2.4 appearing in :\r
-  //\r
-  //      "A block algorithm for matrix 1-norm estimation\r
-  //       with an application to 1-norm pseudospectra"\r
-  //       Nicholas J. Higham and Francoise Tisseur\r
-  //       Siam J. Matrix Anal. Appl., vol 21, No 4, pp 1185-1201\r
-  //\r
-  //  PARAMETERS\r
-  //     A   : a square sparse matrix\r
-  //  \r
-  //     LUp : (optional) a pointer to (umf) LU factors of A\r
-  //           gotten by a call to umf_lufact ; if you\r
-  //           have already computed the LU (= PAQ) factors\r
-  //           it is recommanded to give this optional\r
-  //           parameter (as the factorization may be time\r
-  //           consuming)\r
-  //\r
-  //     t   : (optional) a positive integer\r
-  //\r
-  //     K1  : estimated 1-norm condition number of A\r
-  //\r
-  //  POSSIBLE CALLING SEQUENCES\r
-  //     [K1, [x]] = condestsp(A, LUp, t)\r
-  //     [K1, [x]] = condestsp(A, LUp)\r
-  //     [K1, [x]] = condestsp(A, t)\r
-  //     [K1, [x]] = condestsp(A)\r
-  //\r
-  //  AUTHOR\r
-  //     Bruno Pincon <Bruno.Pincon@iecn.u-nancy.fr> but nearly\r
-  //     close to the given algorithm as this one is written in\r
-  //     a "matlab-like" language\r
-  //\r
-  [lhs, rhs] = argn()\r
-\r
-  if rhs<1 | rhs>3 | lhs > 2 then\r
-     error(msprintf(gettext("%s: Wrong number of input arguments.\n"),"condestsp"))\r
-  end\r
-  \r
-  if typeof(A) ~= "sparse"  then\r
-     error(msprintf(gettext("%s: Wrong type for first input argument: Square sparse matrix expected.\n"),"condestsp"))\r
-  else\r
-     [n,m] = size(A)\r
-     if n~=m  then\r
-        error(msprintf(gettext("%s: Wrong size for first input argument: Square sparse matrix expected.\n"),"condestsp"))\r
-     end\r
-  end\r
-    \r
-  factor_inside = %f  // when LUp is given (after the following tests\r
-                      // this var is set to %t if the factorisation \r
-                     // is computed inside this function)\r
-  if rhs == 1 then\r
-     LUp = umf_lufact(A) ; factor_inside = %t ; t = 2\r
-  elseif rhs == 2 then\r
-     if typeof(arg2) == "pointer" then\r
-       LUp = arg2 ; t = 2\r
-     else\r
-       t = arg2 ; LUp = umf_lufact(A) ; factor_inside = %t\r
-     end\r
-  elseif rhs == 3 then\r
-     LUp = arg2 ; t = arg3\r
-  end\r
-\r
-  // verify if LUp and T are valid !\r
-  [OK, nrow, ncol] = umf_luinfo(LUp)\r
-  if ~OK then\r
-     error(" the LU pointer is not valid")\r
-  elseif n ~= nrow | nrow ~= ncol\r
-     error(msprintf(gettext("%s: The matrix and the LU factors have not the same dimension !\n"),"condestsp"));\r
-  end\r
-     \r
-  if int(t)~=t | length(t)~=1 | or(t < 1) then\r
-     error(msprintf(gettext("%s: Invalid type and/or size and/or value for the second arg.\n"),"condestsp"));\r
-  end   \r
-\r
-  // go on\r
-  \r
-  // the algo need a fortran-like sign function (with sign(0) = 1\r
-  // and not with sign(0)=0 as the scilab native 's one)\r
-  deff("s = fsign(x)", "s = sign(x) ; s(find(s == 0)) = 1")\r
-  \r
-  \r
-  // Part 1 : computes ||A||_1\r
-  norm1_A = norm(A,1)\r
-  \r
-  // Part 2 : computes (estimates) || A^(-1) ||_1\r
-  \r
-  // 1/ choose starting matrix X (n,t)\r
-  X = ones(n,t)\r
-  X(:,2:t) = fsign(rand(n,t-1)-0.5)\r
-  X = test_on_columns(X) / n\r
-  Y = zeros(X) ; Z = zeros(X)\r
-  ind_hist = []\r
-  est_old = 0\r
-  ind = zeros(n,1)\r
-  S = zeros(n,t)\r
-  k = 1 ; itmax = 5\r
-  \r
-  while %t\r
-     // solve Y = A^(-1) X <=> A Y = X\r
-     for j=1:t\r
-       Y(:,j) = umf_lusolve(LUp, X(:,j))\r
-     end\r
-     [est, ind_est] = max( sum(abs(Y),"r") )\r
-     if est > est_old  |  k==2 then\r
-       ind_best = ind_est\r
-       w = Y(:,ind_best)\r
-     end\r
-     \r
-     if k >= 2  &  est <= est_old then, est = est_old, break, end\r
-     est_old = est ; S_old = S\r
-     \r
-     if k > itmax then , break , end\r
-     \r
-     S = fsign(Y)\r
-     \r
-     // if every column of S is // to a column of S_old then it is finish\r
-     if and( abs(S_old'*S) == n ) then , break , end\r
-\r
-     if t > 1 then\r
-       // s'assurer qu'aucune colonne de S n'est // a une autre\r
-       // ou a une colonne de S_old en remplacant des colonnes par rand{-1,1}\r
-       S = test_on_columns(S,S_old)\r
-     end\r
-     \r
-     // calcul de Z = A' S\r
-     for j=1:t\r
-       Z(:,j) = umf_lusolve(LUp, S(:,j),"A''x=b")\r
-     end\r
-\r
-     [h,ind] = sort(max(abs(Z),"c"))\r
-     if k >= 2  then\r
-       if h(1) == h(ind_best) then , break , end\r
-     end\r
-\r
-     if (t > 1) & (k > 1) then\r
-       j = 1\r
-       for l=1:t\r
-          while %t\r
-             if find(ind_hist == ind(j)) == [] then  \r
-                ind(l) = ind(j)\r
-                j = j + 1\r
-                break\r
-             else\r
-                j = j + 1\r
-             end\r
-          end\r
-        end\r
-     end\r
-     X = zeros(n,t)\r
-     for l = 1:t\r
-        X(ind(l),l) = 1\r
-     end\r
-     ind_hist = [ind_hist ; ind(1:t)]\r
-     k = k + 1\r
-  end\r
-\r
-  K1 = est * norm1_A\r
-  if factor_inside then\r
-     umf_ludel(LUp)\r
-  end\r
-  \r
-endfunction\r
+//   Copyright Bruno Pinçon, ESIAL-IECN, Inria CORIDA project 
+//   <bruno.pincon@iecn.u-nancy.fr>
+// 
+// This set of scilab 's macros provide a few sparse utilities.
+// 
+// This software is governed by the CeCILL license under French law and
+// abiding by the rules of distribution of free software.  You can  use, 
+// modify and/ or redistribute the software under the terms of the CeCILL
+// license as circulated by CEA, CNRS and INRIA at the following URL
+// "http://www.cecill.info". 
+// 
+// As a counterpart to the access to the source code and  rights to copy,
+// modify and redistribute granted by the license, users are provided only
+// with a limited warranty  and the software's author,  the holder of the
+// economic rights,  and the successive licensors  have only  limited
+// liability. 
+// 
+// In this respect, the user's attention is drawn to the risks associated
+// with loading,  using,  modifying and/or developing or reproducing the
+// software by the user in light of its specific status of free software,
+// that may mean  that it is complicated to manipulate,  and  that  also
+// therefore means  that it is reserved for developers  and  experienced
+// professionals having in-depth computer knowledge. Users are therefore
+// encouraged to load and test the software's suitability as regards their
+// requirements in conditions enabling the security of their systems and/or 
+// data to be ensured and,  more generally, to use and operate it in the 
+// same conditions as regards security. 
+// 
+// The fact that you are presently reading this means that you have had
+// knowledge of the CeCILL license and that you accept its terms.
+
+function [K1] = condestsp(A, arg2, arg3)
+  //                     (A, LUp  , t)
+  //  PURPOSE
+  //     Give an estimate of the 1-norm condition number of 
+  //     the sparse matrix A by Algorithm 2.4 appearing in :
+  //
+  //      "A block algorithm for matrix 1-norm estimation
+  //       with an application to 1-norm pseudospectra"
+  //       Nicholas J. Higham and Francoise Tisseur
+  //       Siam J. Matrix Anal. Appl., vol 21, No 4, pp 1185-1201
+  //
+  //  PARAMETERS
+  //     A   : a square sparse matrix
+  //  
+  //     LUp : (optional) a pointer to (umf) LU factors of A
+  //           gotten by a call to umf_lufact ; if you
+  //           have already computed the LU (= PAQ) factors
+  //           it is recommanded to give this optional
+  //           parameter (as the factorization may be time
+  //           consuming)
+  //
+  //     t   : (optional) a positive integer
+  //
+  //     K1  : estimated 1-norm condition number of A
+  //
+  //  POSSIBLE CALLING SEQUENCES
+  //     [K1, [x]] = condestsp(A, LUp, t)
+  //     [K1, [x]] = condestsp(A, LUp)
+  //     [K1, [x]] = condestsp(A, t)
+  //     [K1, [x]] = condestsp(A)
+  //
+  //  AUTHOR
+  //     Bruno Pincon <Bruno.Pincon@iecn.u-nancy.fr> but nearly
+  //     close to the given algorithm as this one is written in
+  //     a "matlab-like" language
+  //
+  [lhs, rhs] = argn()
+
+  if rhs<1 | rhs>3 | lhs > 2 then
+     error(msprintf(gettext("%s: Wrong number of input arguments.\n"),"condestsp"))
+  end
+  
+  if typeof(A) ~= "sparse"  then
+     error(msprintf(gettext("%s: Wrong type for first input argument: Square sparse matrix expected.\n"),"condestsp"))
+  else
+     [n,m] = size(A)
+     if n~=m  then
+        error(msprintf(gettext("%s: Wrong size for first input argument: Square sparse matrix expected.\n"),"condestsp"))
+     end
+  end
+    
+  factor_inside = %f  // when LUp is given (after the following tests
+                      // this var is set to %t if the factorisation 
+                     // is computed inside this function)
+  if rhs == 1 then
+     LUp = umf_lufact(A) ; factor_inside = %t ; t = 2
+  elseif rhs == 2 then
+     if typeof(arg2) == "pointer" then
+       LUp = arg2 ; t = 2
+     else
+       t = arg2 ; LUp = umf_lufact(A) ; factor_inside = %t
+     end
+  elseif rhs == 3 then
+     LUp = arg2 ; t = arg3
+  end
+
+  // verify if LUp and T are valid !
+  [OK, nrow, ncol] = umf_luinfo(LUp)
+  if ~OK then
+     error(" the LU pointer is not valid")
+  elseif n ~= nrow | nrow ~= ncol
+     error(msprintf(gettext("%s: The matrix and the LU factors have not the same dimension !\n"),"condestsp"));
+  end
+     
+  if int(t)~=t | length(t)~=1 | or(t < 1) then
+     error(msprintf(gettext("%s: Invalid type and/or size and/or value for the second arg.\n"),"condestsp"));
+  end   
+
+  // go on
+  
+  // the algo need a fortran-like sign function (with sign(0) = 1
+  // and not with sign(0)=0 as the scilab native 's one)
+  deff("s = fsign(x)", "s = sign(x) ; s(find(s == 0)) = 1")
+  
+  
+  // Part 1 : computes ||A||_1
+  norm1_A = norm(A,1)
+  
+  // Part 2 : computes (estimates) || A^(-1) ||_1
+  
+  // 1/ choose starting matrix X (n,t)
+  X = ones(n,t)
+  X(:,2:t) = fsign(rand(n,t-1)-0.5)
+  X = test_on_columns(X) / n
+  Y = zeros(X) ; Z = zeros(X)
+  ind_hist = []
+  est_old = 0
+  ind = zeros(n,1)
+  S = zeros(n,t)
+  k = 1 ; itmax = 5
+  
+  while %t
+     // solve Y = A^(-1) X <=> A Y = X
+     for j=1:t
+       Y(:,j) = umf_lusolve(LUp, X(:,j))
+     end
+     [est, ind_est] = max( sum(abs(Y),"r") )
+     if est > est_old  |  k==2 then
+       ind_best = ind_est
+       w = Y(:,ind_best)
+     end
+     
+     if k >= 2  &  est <= est_old then, est = est_old, break, end
+     est_old = est ; S_old = S
+     
+     if k > itmax then , break , end
+     
+     S = fsign(Y)
+     
+     // if every column of S is // to a column of S_old then it is finish
+     if and( abs(S_old'*S) == n ) then , break , end
+
+     if t > 1 then
+       // s'assurer qu'aucune colonne de S n'est // a une autre
+       // ou a une colonne de S_old en remplacant des colonnes par rand{-1,1}
+       S = test_on_columns(S,S_old)
+     end
+     
+     // calcul de Z = A' S
+     for j=1:t
+       Z(:,j) = umf_lusolve(LUp, S(:,j),"A''x=b")
+     end
+
+     [h,ind] = sort(max(abs(Z),"c"))
+     if k >= 2  then
+       if h(1) == h(ind_best) then , break , end
+     end
+
+     if (t > 1) & (k > 1) then
+       j = 1
+       for l=1:t
+          while %t
+             if find(ind_hist == ind(j)) == [] then  
+                ind(l) = ind(j)
+                j = j + 1
+                break
+             else
+                j = j + 1
+             end
+          end
+        end
+     end
+     X = zeros(n,t)
+     for l = 1:t
+        X(ind(l),l) = 1
+     end
+     ind_hist = [ind_hist ; ind(1:t)]
+     k = k + 1
+  end
+
+  K1 = est * norm1_A
+  if factor_inside then
+     umf_ludel(LUp)
+  end
+  
+endfunction
index 4423964..76820c0 100644 (file)
@@ -1,48 +1,48 @@
-//   Copyright Bruno Pinçon, ESIAL-IECN, Inria CORIDA project \r
-//   <bruno.pincon@iecn.u-nancy.fr>\r
-// \r
-// This set of scilab 's macros provide a few sparse utilities.\r
-// \r
-// This software is governed by the CeCILL license under French law and\r
-// abiding by the rules of distribution of free software.  You can  use, \r
-// modify and/ or redistribute the software under the terms of the CeCILL\r
-// license as circulated by CEA, CNRS and INRIA at the following URL\r
-// "http://www.cecill.info". \r
-// \r
-// As a counterpart to the access to the source code and  rights to copy,\r
-// modify and redistribute granted by the license, users are provided only\r
-// with a limited warranty  and the software's author,  the holder of the\r
-// economic rights,  and the successive licensors  have only  limited\r
-// liability. \r
-// \r
-// In this respect, the user's attention is drawn to the risks associated\r
-// with loading,  using,  modifying and/or developing or reproducing the\r
-// software by the user in light of its specific status of free software,\r
-// that may mean  that it is complicated to manipulate,  and  that  also\r
-// therefore means  that it is reserved for developers  and  experienced\r
-// professionals having in-depth computer knowledge. Users are therefore\r
-// encouraged to load and test the software's suitability as regards their\r
-// requirements in conditions enabling the security of their systems and/or \r
-// data to be ensured and,  more generally, to use and operate it in the \r
-// same conditions as regards security. \r
-// \r
-// The fact that you are presently reading this means that you have had\r
-// knowledge of the CeCILL license and that you accept its terms.\r
-\r
-function [xn, rn] = rafiter(A, C, b, x0, nb_iter, verb)\r
-   // raffinement iteratif\r
-   //\r
-   if ~exists("verb", "local") then , verb = %f , end\r
-   if ~exists("nb_iter", "local") then , nb_iter = 2, end\r
-\r
-   xn = x0\r
-   for i=1:nb_iter\r
-      rn = res_with_prec(A, xn, b)\r
-      dx = taucs_chsolve(C, rn)\r
-      if verb then\r
-        crit1 = norm(rn) ; crit2 = norm(dx)\r
-        mprintf(" it %2d : ||r|| = %e , ||dx|| = %e \n", i, crit1, crit2)\r
-      end\r
-      xn = xn - dx\r
-   end\r
-endfunction\r
+//   Copyright Bruno Pinçon, ESIAL-IECN, Inria CORIDA project 
+//   <bruno.pincon@iecn.u-nancy.fr>
+// 
+// This set of scilab 's macros provide a few sparse utilities.
+// 
+// This software is governed by the CeCILL license under French law and
+// abiding by the rules of distribution of free software.  You can  use, 
+// modify and/ or redistribute the software under the terms of the CeCILL
+// license as circulated by CEA, CNRS and INRIA at the following URL
+// "http://www.cecill.info". 
+// 
+// As a counterpart to the access to the source code and  rights to copy,
+// modify and redistribute granted by the license, users are provided only
+// with a limited warranty  and the software's author,  the holder of the
+// economic rights,  and the successive licensors  have only  limited
+// liability. 
+// 
+// In this respect, the user's attention is drawn to the risks associated
+// with loading,  using,  modifying and/or developing or reproducing the
+// software by the user in light of its specific status of free software,
+// that may mean  that it is complicated to manipulate,  and  that  also
+// therefore means  that it is reserved for developers  and  experienced
+// professionals having in-depth computer knowledge. Users are therefore
+// encouraged to load and test the software's suitability as regards their
+// requirements in conditions enabling the security of their systems and/or 
+// data to be ensured and,  more generally, to use and operate it in the 
+// same conditions as regards security. 
+// 
+// The fact that you are presently reading this means that you have had
+// knowledge of the CeCILL license and that you accept its terms.
+
+function [xn, rn] = rafiter(A, C, b, x0, nb_iter, verb)
+   // raffinement iteratif
+   //
+   if ~exists("verb", "local") then , verb = %f , end
+   if ~exists("nb_iter", "local") then , nb_iter = 2, end
+
+   xn = x0
+   for i=1:nb_iter
+      rn = res_with_prec(A, xn, b)
+      dx = taucs_chsolve(C, rn)
+      if verb then
+        crit1 = norm(rn) ; crit2 = norm(dx)
+        mprintf(" it %2d : ||r|| = %e , ||dx|| = %e \n", i, crit1, crit2)
+      end
+      xn = xn - dx
+   end
+endfunction
index b927382..421109e 100644 (file)
@@ -1,45 +1,45 @@
-//   Copyright Bruno Pinçon, ESIAL-IECN, Inria CORIDA project \r
-//   <bruno.pincon@iecn.u-nancy.fr>\r
-// \r
-// This set of scilab 's macros provide a few sparse utilities.\r
-// \r
-// This software is governed by the CeCILL license under French law and\r
-// abiding by the rules of distribution of free software.  You can  use, \r
-// modify and/ or redistribute the software under the terms of the CeCILL\r
-// license as circulated by CEA, CNRS and INRIA at the following URL\r
-// "http://www.cecill.info". \r
-// \r
-// As a counterpart to the access to the source code and  rights to copy,\r
-// modify and redistribute granted by the license, users are provided only\r
-// with a limited warranty  and the software's author,  the holder of the\r
-// economic rights,  and the successive licensors  have only  limited\r
-// liability. \r
-// \r
-// In this respect, the user's attention is drawn to the risks associated\r
-// with loading,  using,  modifying and/or developing or reproducing the\r
-// software by the user in light of its specific status of free software,\r
-// that may mean  that it is complicated to manipulate,  and  that  also\r
-// therefore means  that it is reserved for developers  and  experienced\r
-// professionals having in-depth computer knowledge. Users are therefore\r
-// encouraged to load and test the software's suitability as regards their\r
-// requirements in conditions enabling the security of their systems and/or \r
-// data to be ensured and,  more generally, to use and operate it in the \r
-// same conditions as regards security. \r
-// \r
-// The fact that you are presently reading this means that you have had\r
-// knowledge of the CeCILL license and that you accept its terms.\r
-\r
-\r
-function [form_out] = replace_Ix_by_Fx(form_in)\r
-   //\r
-   //  replace Ix by Fx.0 (assuming that x is 1 char max)\r
-   //  (utility function used by ReadHBSparse)\r
-   //\r
-   n = length(form_in)\r
-   indI = strindex(form_in,"I")\r
-   if indI== [] then\r
-      indI = strindex(form_in,"i")\r
-   end \r
-   form_out = part(form_in,1:indI-1)+"F"+part(form_in,indI+1) ...\r
-             +".0"+part(form_in,indI+2:n)\r
-endfunction\r
+//   Copyright Bruno Pinçon, ESIAL-IECN, Inria CORIDA project 
+//   <bruno.pincon@iecn.u-nancy.fr>
+// 
+// This set of scilab 's macros provide a few sparse utilities.
+// 
+// This software is governed by the CeCILL license under French law and
+// abiding by the rules of distribution of free software.  You can  use, 
+// modify and/ or redistribute the software under the terms of the CeCILL
+// license as circulated by CEA, CNRS and INRIA at the following URL
+// "http://www.cecill.info". 
+// 
+// As a counterpart to the access to the source code and  rights to copy,
+// modify and redistribute granted by the license, users are provided only
+// with a limited warranty  and the software's author,  the holder of the
+// economic rights,  and the successive licensors  have only  limited
+// liability. 
+// 
+// In this respect, the user's attention is drawn to the risks associated
+// with loading,  using,  modifying and/or developing or reproducing the
+// software by the user in light of its specific status of free software,
+// that may mean  that it is complicated to manipulate,  and  that  also
+// therefore means  that it is reserved for developers  and  experienced
+// professionals having in-depth computer knowledge. Users are therefore
+// encouraged to load and test the software's suitability as regards their
+// requirements in conditions enabling the security of their systems and/or 
+// data to be ensured and,  more generally, to use and operate it in the 
+// same conditions as regards security. 
+// 
+// The fact that you are presently reading this means that you have had
+// knowledge of the CeCILL license and that you accept its terms.
+
+
+function [form_out] = replace_Ix_by_Fx(form_in)
+   //
+   //  replace Ix by Fx.0 (assuming that x is 1 char max)
+   //  (utility function used by ReadHBSparse)
+   //
+   n = length(form_in)
+   indI = strindex(form_in,"I")
+   if indI== [] then
+      indI = strindex(form_in,"i")
+   end 
+   form_out = part(form_in,1:indI-1)+"F"+part(form_in,indI+1) ...
+             +".0"+part(form_in,indI+2:n)
+endfunction
index 89de2bd..126eff4 100644 (file)
@@ -1,70 +1,70 @@
-//   Copyright Bruno Pinçon, ESIAL-IECN, Inria CORIDA project \r
-//   <bruno.pincon@iecn.u-nancy.fr>\r
-// \r
-// This set of scilab 's macros provide a few sparse utilities.\r
-// \r
-// This software is governed by the CeCILL license under French law and\r
-// abiding by the rules of distribution of free software.  You can  use, \r
-// modify and/ or redistribute the software under the terms of the CeCILL\r
-// license as circulated by CEA, CNRS and INRIA at the following URL\r
-// "http://www.cecill.info". \r
-// \r
-// As a counterpart to the access to the source code and  rights to copy,\r
-// modify and redistribute granted by the license, users are provided only\r
-// with a limited warranty  and the software's author,  the holder of the\r
-// economic rights,  and the successive licensors  have only  limited\r
-// liability. \r
-// \r
-// In this respect, the user's attention is drawn to the risks associated\r
-// with loading,  using,  modifying and/or developing or reproducing the\r
-// software by the user in light of its specific status of free software,\r
-// that may mean  that it is complicated to manipulate,  and  that  also\r
-// therefore means  that it is reserved for developers  and  experienced\r
-// professionals having in-depth computer knowledge. Users are therefore\r
-// encouraged to load and test the software's suitability as regards their\r
-// requirements in conditions enabling the security of their systems and/or \r
-// data to be ensured and,  more generally, to use and operate it in the \r
-// same conditions as regards security. \r
-// \r
-// The fact that you are presently reading this means that you have had\r
-// knowledge of the CeCILL license and that you accept its terms.\r
-\r
-function [] = scisptdemo()\r
-   // demo pour l'interface umf\r
-   mode(-1)\r
-   st = stacksize();\r
-   if st(1) < 3000000 then\r
-      x_message([gettext(" For this demo the current stack size is not enought ");\r
-                gettext(" enter the following at the scilab prompt :          ");\r
-                gettext("                                                     ");\r
-                gettext("              stacksize(3000000);                    ");\r
-                gettext("                                                     ");\r
-    gettext("           then re enter scisptdemo()                ");\r
-               gettext("                                                     ");\r
-               gettext("               CLICK TO  CONTINUE                    ")]);\r
-      return\r
-   end\r
-\r
-   oldln = lines();\r
-   lines(0)\r
-\r
-   deff('[]=demoex(num)','exec(scisptdemolist(num,2),-1)')\r
-   a = gda();\r
-   a.title.font_size = 3;\r
-   a;title.font_style = 6;\r
-   \r
-\r
-   scisptdemolist = [gettext("how to use this stuff")           , DIR_SCISPT_DEM+"scisptdem1.dem";\r
-                     gettext("display a speed comparison test") , DIR_SCISPT_DEM+"scisptdem2.dem";\r
-                    gettext("small tests for condestsp")       , DIR_SCISPT_DEM+"scisptdem3.dem"];\r
-   while %t\r
-      num=x_choose(scisptdemolist(:,1), gettext("Click to choose a demo"));\r
-      if num==0 then \r
-        lines(oldln(1)) , break\r
-      else\r
-        demoex(num)\r
-      end\r
-   end\r
-   \r
-   sda()\r
-endfunction\r
+//   Copyright Bruno Pinçon, ESIAL-IECN, Inria CORIDA project 
+//   <bruno.pincon@iecn.u-nancy.fr>
+// 
+// This set of scilab 's macros provide a few sparse utilities.
+// 
+// This software is governed by the CeCILL license under French law and
+// abiding by the rules of distribution of free software.  You can  use, 
+// modify and/ or redistribute the software under the terms of the CeCILL
+// license as circulated by CEA, CNRS and INRIA at the following URL
+// "http://www.cecill.info". 
+// 
+// As a counterpart to the access to the source code and  rights to copy,
+// modify and redistribute granted by the license, users are provided only
+// with a limited warranty  and the software's author,  the holder of the
+// economic rights,  and the successive licensors  have only  limited
+// liability. 
+// 
+// In this respect, the user's attention is drawn to the risks associated
+// with loading,  using,  modifying and/or developing or reproducing the
+// software by the user in light of its specific status of free software,
+// that may mean  that it is complicated to manipulate,  and  that  also
+// therefore means  that it is reserved for developers  and  experienced
+// professionals having in-depth computer knowledge. Users are therefore
+// encouraged to load and test the software's suitability as regards their
+// requirements in conditions enabling the security of their systems and/or 
+// data to be ensured and,  more generally, to use and operate it in the 
+// same conditions as regards security. 
+// 
+// The fact that you are presently reading this means that you have had
+// knowledge of the CeCILL license and that you accept its terms.
+
+function [] = scisptdemo()
+   // demo pour l'interface umf
+   mode(-1)
+   st = stacksize();
+   if st(1) < 3000000 then
+      x_message([gettext(" For this demo the current stack size is not enought ");
+                gettext(" enter the following at the scilab prompt :          ");
+                gettext("                                                     ");
+                gettext("              stacksize(3000000);                    ");
+                gettext("                                                     ");
+    gettext("           then re enter scisptdemo()                ");
+               gettext("                                                     ");
+               gettext("               CLICK TO  CONTINUE                    ")]);
+      return
+   end
+
+   oldln = lines();
+   lines(0)
+
+   deff('[]=demoex(num)','exec(scisptdemolist(num,2),-1)')
+   a = gda();
+   a.title.font_size = 3;
+   a;title.font_style = 6;
+   
+
+   scisptdemolist = [gettext("how to use this stuff")           , DIR_SCISPT_DEM+"scisptdem1.dem";
+                     gettext("display a speed comparison test") , DIR_SCISPT_DEM+"scisptdem2.dem";
+                    gettext("small tests for condestsp")       , DIR_SCISPT_DEM+"scisptdem3.dem"];
+   while %t
+      num=x_choose(scisptdemolist(:,1), gettext("Click to choose a demo"));
+      if num==0 then 
+        lines(oldln(1)) , break
+      else
+        demoex(num)
+      end
+   end
+   
+   sda()
+endfunction
index bf5905f..51e5c0d 100644 (file)
@@ -1,66 +1,66 @@
-//   Copyright Bruno Pinçon, ESIAL-IECN, Inria CORIDA project \r
-//   <bruno.pincon@iecn.u-nancy.fr>\r
-// \r
-// This set of scilab 's macros provide a few sparse utilities.\r
-// \r
-// This software is governed by the CeCILL license under French law and\r
-// abiding by the rules of distribution of free software.  You can  use, \r
-// modify and/ or redistribute the software under the terms of the CeCILL\r
-// license as circulated by CEA, CNRS and INRIA at the following URL\r
-// "http://www.cecill.info". \r
-// \r
-// As a counterpart to the access to the source code and  rights to copy,\r
-// modify and redistribute granted by the license, users are provided only\r
-// with a limited warranty  and the software's author,  the holder of the\r
-// economic rights,  and the successive licensors  have only  limited\r
-// liability. \r
-// \r
-// In this respect, the user's attention is drawn to the risks associated\r
-// with loading,  using,  modifying and/or developing or reproducing the\r
-// software by the user in light of its specific status of free software,\r
-// that may mean  that it is complicated to manipulate,  and  that  also\r
-// therefore means  that it is reserved for developers  and  experienced\r
-// professionals having in-depth computer knowledge. Users are therefore\r
-// encouraged to load and test the software's suitability as regards their\r
-// requirements in conditions enabling the security of their systems and/or \r
-// data to be ensured and,  more generally, to use and operate it in the \r
-// same conditions as regards security. \r
-// \r
-// The fact that you are presently reading this means that you have had\r
-// knowledge of the CeCILL license and that you accept its terms.\r
-\r
-function [X] = test_on_columns(X,Xold)\r
-   // \r
-   //  X and Xold are (n,t) matrix , Xold being an optional argument\r
-   //  verify and force all columns of the new X to be non paralleles\r
-   //  and also to be non paralleles to the columns of Xold if Xold\r
-   //  is given\r
-   //  2 columns j1 and j2 are // if  | Cj1'*Cj2 | = n because\r
-   //  all elements are in {+1,-1} \r
-   //\r
-   [lhs,rhs] = argn()\r
-   [n,t] = size(X)\r
-   if rhs == 1 then\r
-      for j=2:t\r
-        while %t\r
-           res_test = abs(X(:,j)'*X(:,1:j-1))\r
-           if or(res_test == n) then\r
-              X(:,j) = fsign(rand(n,1)-0.5)\r
-           else\r
-              break\r
-           end\r
-        end\r
-      end\r
-   else   // rhs = 2\r
-      for j=1:t\r
-        while %t\r
-           res_test = abs([X(:,j)'*Xold  X(:,j)'*X(:,1:j-1)])\r
-           if or(res_test == n) then\r
-              X(:,j) = fsign(rand(n,1)-0.5)\r
-           else\r
-              break\r
-           end\r
-        end\r
-      end\r
-   end  \r
-endfunction\r
+//   Copyright Bruno Pinçon, ESIAL-IECN, Inria CORIDA project 
+//   <bruno.pincon@iecn.u-nancy.fr>
+// 
+// This set of scilab 's macros provide a few sparse utilities.
+// 
+// This software is governed by the CeCILL license under French law and
+// abiding by the rules of distribution of free software.  You can  use, 
+// modify and/ or redistribute the software under the terms of the CeCILL
+// license as circulated by CEA, CNRS and INRIA at the following URL
+// "http://www.cecill.info". 
+// 
+// As a counterpart to the access to the source code and  rights to copy,
+// modify and redistribute granted by the license, users are provided only
+// with a limited warranty  and the software's author,  the holder of the
+// economic rights,  and the successive licensors  have only  limited
+// liability. 
+// 
+// In this respect, the user's attention is drawn to the risks associated
+// with loading,  using,  modifying and/or developing or reproducing the
+// software by the user in light of its specific status of free software,
+// that may mean  that it is complicated to manipulate,  and  that  also
+// therefore means  that it is reserved for developers  and  experienced
+// professionals having in-depth computer knowledge. Users are therefore
+// encouraged to load and test the software's suitability as regards their
+// requirements in conditions enabling the security of their systems and/or 
+// data to be ensured and,  more generally, to use and operate it in the 
+// same conditions as regards security. 
+// 
+// The fact that you are presently reading this means that you have had
+// knowledge of the CeCILL license and that you accept its terms.
+
+function [X] = test_on_columns(X,Xold)
+   // 
+   //  X and Xold are (n,t) matrix , Xold being an optional argument
+   //  verify and force all columns of the new X to be non paralleles
+   //  and also to be non paralleles to the columns of Xold if Xold
+   //  is given
+   //  2 columns j1 and j2 are // if  | Cj1'*Cj2 | = n because
+   //  all elements are in {+1,-1} 
+   //
+   [lhs,rhs] = argn()
+   [n,t] = size(X)
+   if rhs == 1 then
+      for j=2:t
+        while %t
+           res_test = abs(X(:,j)'*X(:,1:j-1))
+           if or(res_test == n) then
+              X(:,j) = fsign(rand(n,1)-0.5)
+           else
+              break
+           end
+        end
+      end
+   else   // rhs = 2
+      for j=1:t
+        while %t
+           res_test = abs([X(:,j)'*Xold  X(:,j)'*X(:,1:j-1)])
+           if or(res_test == n) then
+              X(:,j) = fsign(rand(n,1)-0.5)
+           else
+              break
+           end
+        end
+      end
+   end  
+endfunction
index 880baef..da596c2 100644 (file)
@@ -1,41 +1,41 @@
-/*\r
- * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab\r
- * Copyright (C) 2008 - INRIA - Allan CORNET\r
- * \r
- * This file must be used under the terms of the CeCILL.\r
- * This source file is licensed as described in the file COPYING, which\r
- * you should have received as part of this distribution.  The terms\r
- * are also available at    \r
- * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt\r
- *\r
- */\r
-/*--------------------------------------------------------------------------*/\r
-#ifndef __CONVERTSLASH_H__\r
-#define __CONVERTSLASH_H__\r
-\r
-#include "machine.h"\r
-\r
-\r
-/* C:\Windows\system and C:/Windows/system */\r
-/* since Windows 2000 SP2 are supported */\r
-\r
-/**\r
-* convert a unix path to windows path 'format'\r
-* replaces '/' by '\'\r
-* @param [in] path in with '/'\r
-* @param [out] path out with '\'\r
-* @return TRUE or FALSE\r
-*/\r
-BOOL slashToAntislash(char *pathunix,char *pathwindows);\r
-\r
-/**\r
-* convert a windows path to unix path 'format'\r
-* replaces '\' by '/'\r
-* @param [in] path in with '\'\r
-* @param [out] path out with '/'\r
-* @return TRUE or FALSE\r
-*/\r
-BOOL AntislashToSlash(char *pathwindows,char *pathunix);\r
-\r
-#endif /* __CONVERTSLASH_H__ */\r
-/*--------------------------------------------------------------------------*/\r
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Allan CORNET
+ * 
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at    
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+/*--------------------------------------------------------------------------*/
+#ifndef __CONVERTSLASH_H__
+#define __CONVERTSLASH_H__
+
+#include "machine.h"
+
+
+/* C:\Windows\system and C:/Windows/system */
+/* since Windows 2000 SP2 are supported */
+
+/**
+* convert a unix path to windows path 'format'
+* replaces '/' by '\'
+* @param [in] path in with '/'
+* @param [out] path out with '\'
+* @return TRUE or FALSE
+*/
+BOOL slashToAntislash(char *pathunix,char *pathwindows);
+
+/**
+* convert a windows path to unix path 'format'
+* replaces '\' by '/'
+* @param [in] path in with '\'
+* @param [out] path out with '/'
+* @return TRUE or FALSE
+*/
+BOOL AntislashToSlash(char *pathwindows,char *pathunix);
+
+#endif /* __CONVERTSLASH_H__ */
+/*--------------------------------------------------------------------------*/
index e81683d..4f1bd08 100644 (file)
@@ -1,62 +1,62 @@
-/*\r
- * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab\r
- * Copyright (C) 2008 - INRIA - Allan CORNET\r
- * \r
- * This file must be used under the terms of the CeCILL.\r
- * This source file is licensed as described in the file COPYING, which\r
- * you should have received as part of this distribution.  The terms\r
- * are also available at    \r
- * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt\r
- *\r
- */\r
-/*--------------------------------------------------------------------------*/\r
-#include <string.h>\r
-#include "ConvertSlash.h"\r
-/*--------------------------------------------------------------------------*/\r
-#define UNIX_SEPATATOR '/'\r
-#define WINDOWS_SEPATATOR '\\'\r
-/*--------------------------------------------------------------------------*/\r
-static BOOL convertSlash(char *path_in,char *path_out,BOOL slashToAntislash);\r
-/*--------------------------------------------------------------------------*/\r
-BOOL slashToAntislash(char *pathunix,char *pathwindows)\r
-{\r
-       return convertSlash(pathunix,pathwindows,TRUE);\r
-}\r
-/*--------------------------------------------------------------------------*/\r
-BOOL AntislashToSlash(char *pathwindows,char *pathunix)\r
-{\r
-       return convertSlash(pathwindows,pathunix,FALSE);\r
-}\r
-/*--------------------------------------------------------------------------*/\r
-static BOOL convertSlash(char *path_in,char *path_out,BOOL slashToAntislash)\r
-{\r
-       BOOL bOK = FALSE;\r
-       if ( (path_in) && (path_out) )\r
-       {\r
-               int i=0;\r
-               strcpy(path_out,path_in);\r
-               for (i=0;i<(int)strlen(path_out);i++)\r
-               {\r
-                       if ( slashToAntislash )\r
-                       {\r
-                               if (path_in[i] == UNIX_SEPATATOR) \r
-                               {\r
-                                       path_out[i] = WINDOWS_SEPATATOR;\r
-                                       bOK = TRUE;\r
-                               }\r
-                       }\r
-                       else\r
-                       {\r
-                               if (path_in[i] == WINDOWS_SEPATATOR) \r
-                               {\r
-                                       path_out[i] = UNIX_SEPATATOR;\r
-                                       bOK = TRUE;\r
-                               }\r
-                       }\r
-               }\r
-       }\r
-       else bOK = FALSE;\r
-\r
-       return bOK;\r
-}\r
-/*--------------------------------------------------------------------------*/\r
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) 2008 - INRIA - Allan CORNET
+ * 
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at    
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+/*--------------------------------------------------------------------------*/
+#include <string.h>
+#include "ConvertSlash.h"
+/*--------------------------------------------------------------------------*/
+#define UNIX_SEPATATOR '/'
+#define WINDOWS_SEPATATOR '\\'
+/*--------------------------------------------------------------------------*/
+static BOOL convertSlash(char *path_in,char *path_out,BOOL slashToAntislash);
+/*--------------------------------------------------------------------------*/
+BOOL slashToAntislash(char *pathunix,char *pathwindows)
+{
+       return convertSlash(pathunix,pathwindows,TRUE);
+}
+/*--------------------------------------------------------------------------*/
+BOOL AntislashToSlash(char *pathwindows,char *pathunix)
+{
+       return convertSlash(pathwindows,pathunix,FALSE);
+}
+/*--------------------------------------------------------------------------*/
+static BOOL convertSlash(char *path_in,char *path_out,BOOL slashToAntislash)
+{
+       BOOL bOK = FALSE;
+       if ( (path_in) && (path_out) )
+       {
+               int i=0;
+               strcpy(path_out,path_in);
+               for (i=0;i<(int)strlen(path_out);i++)
+               {
+                       if ( slashToAntislash )
+                       {
+                               if (path_in[i] == UNIX_SEPATATOR) 
+                               {
+                                       path_out[i] = WINDOWS_SEPATATOR;
+                                       bOK = TRUE;
+                               }
+                       }
+                       else
+                       {
+                               if (path_in[i] == WINDOWS_SEPATATOR) 
+                               {
+                                       path_out[i] = UNIX_SEPATATOR;
+                                       bOK = TRUE;
+                               }
+                       }
+               }
+       }
+       else bOK = FALSE;
+
+       return bOK;
+}
+/*--------------------------------------------------------------------------*/
index 06eea5a..3965149 100644 (file)
@@ -1,6 +1,6 @@
-LIBRARY    scilocalization.dll\r
-\r
-\r
-EXPORTS\r
-;\r
-getLocaleUserInfo\r
+LIBRARY    scilocalization.dll
+
+
+EXPORTS
+;
+getLocaleUserInfo
index e1469fa..ade4273 100644 (file)
@@ -1,60 +1,60 @@
-/*\r
- * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab\r
- * Copyright (C) INRIA - Allan CORNET\r
- * \r
- * This file must be used under the terms of the CeCILL.\r
- * This source file is licensed as described in the file COPYING, which\r
- * you should have received as part of this distribution.  The terms\r
- * are also available at    \r
- * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt\r
- *\r
- */\r
-#include <windows.h>\r
-#include <strsafe.h>\r
-#include "win_mem_alloc.h" /* MALLOC */\r
-#include "scilabDefaults.h"\r
-/*--------------------------------------------------------------------------*/\r
-/**\r
-* Initialize LC_MESSAGES environment variable\r
-* To fix a bug with Windows multilanguage (MUI)\r
-* see J-B and Simoné pcs \r
-* english GUI & french keyboard\r
-* with French GUI installed but NOT used\r
-*/\r
-/*--------------------------------------------------------------------------*/\r
-void setLC_MESSAGES(void)\r
-{\r
-       #define LENGTH_BUFFER 1024\r
-       #define FORMAT_LOCALE "%s_%s"\r
-       char buffer_LOCALE_SISO639LANGNAME[LENGTH_BUFFER];\r
-       char buffer_LOCALE_SISO3166CTRYNAME[LENGTH_BUFFER];\r
-       char *localeStr = NULL;\r
-       int ret = 0;\r
-       ret = GetLocaleInfoA(LOCALE_USER_DEFAULT,\r
-                                               LOCALE_SISO639LANGNAME,\r
-                                               &buffer_LOCALE_SISO639LANGNAME[0],\r
-                                               LENGTH_BUFFER);\r
-       if (ret > 0)\r
-       {\r
-               ret = GetLocaleInfoA(LOCALE_USER_DEFAULT,\r
-                                                       LOCALE_SISO3166CTRYNAME,\r
-                                                       &buffer_LOCALE_SISO3166CTRYNAME[0],\r
-                                                       LENGTH_BUFFER);\r
-               if (ret >0)\r
-               {\r
-                       int length_localeStr = (int)(strlen(buffer_LOCALE_SISO639LANGNAME)+\r
-                                                                                strlen(buffer_LOCALE_SISO3166CTRYNAME)+\r
-                                                                                strlen(FORMAT_LOCALE));\r
-                       localeStr = (char*)MALLOC(sizeof(char)*(length_localeStr)+1);\r
-                       if (localeStr)\r
-                       {\r
-                               StringCchPrintfA(localeStr,length_localeStr,FORMAT_LOCALE,\r
-                                       buffer_LOCALE_SISO639LANGNAME,\r
-                                       buffer_LOCALE_SISO3166CTRYNAME);\r
-                               SetEnvironmentVariableA(EXPORTENVLOCALESTR,localeStr);\r
-                               FREE(localeStr);\r
-                       }\r
-               }\r
-       }\r
-}\r
-/*--------------------------------------------------------------------------*/\r
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) INRIA - Allan CORNET
+ * 
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at    
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+#include <windows.h>
+#include <strsafe.h>
+#include "win_mem_alloc.h" /* MALLOC */
+#include "scilabDefaults.h"
+/*--------------------------------------------------------------------------*/
+/**
+* Initialize LC_MESSAGES environment variable
+* To fix a bug with Windows multilanguage (MUI)
+* see J-B and Simoné pcs 
+* english GUI & french keyboard
+* with French GUI installed but NOT used
+*/
+/*--------------------------------------------------------------------------*/
+void setLC_MESSAGES(void)
+{
+       #define LENGTH_BUFFER 1024
+       #define FORMAT_LOCALE "%s_%s"
+       char buffer_LOCALE_SISO639LANGNAME[LENGTH_BUFFER];
+       char buffer_LOCALE_SISO3166CTRYNAME[LENGTH_BUFFER];
+       char *localeStr = NULL;
+       int ret = 0;
+       ret = GetLocaleInfoA(LOCALE_USER_DEFAULT,
+                                               LOCALE_SISO639LANGNAME,
+                                               &buffer_LOCALE_SISO639LANGNAME[0],
+                                               LENGTH_BUFFER);
+       if (ret > 0)
+       {
+               ret = GetLocaleInfoA(LOCALE_USER_DEFAULT,
+                                                       LOCALE_SISO3166CTRYNAME,
+                                                       &buffer_LOCALE_SISO3166CTRYNAME[0],
+                                                       LENGTH_BUFFER);
+               if (ret >0)
+               {
+                       int length_localeStr = (int)(strlen(buffer_LOCALE_SISO639LANGNAME)+
+                                                                                strlen(buffer_LOCALE_SISO3166CTRYNAME)+
+                                                                                strlen(FORMAT_LOCALE));
+                       localeStr = (char*)MALLOC(sizeof(char)*(length_localeStr)+1);
+                       if (localeStr)
+                       {
+                               StringCchPrintfA(localeStr,length_localeStr,FORMAT_LOCALE,
+                                       buffer_LOCALE_SISO639LANGNAME,
+                                       buffer_LOCALE_SISO3166CTRYNAME);
+                               SetEnvironmentVariableA(EXPORTENVLOCALESTR,localeStr);
+                               FREE(localeStr);
+                       }
+               }
+       }
+}
+/*--------------------------------------------------------------------------*/
index c948b9c..74b02e0 100644 (file)
@@ -1,28 +1,28 @@
-\r
-/*\r
- * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab\r
- * Copyright (C) INRIA - Allan CORNET\r
- * \r
- * This file must be used under the terms of the CeCILL.\r
- * This source file is licensed as described in the file COPYING, which\r
- * you should have received as part of this distribution.  The terms\r
- * are also available at    \r
- * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt\r
- *\r
- */\r
-\r
-/*--------------------------------------------------------------------------*/\r
-#ifndef __SETLC_MESSAGES__\r
-#define __SETLC_MESSAGES__\r
-\r
-/**\r
-* Initialize LC_MESSAGES environment variable\r
-* To fix a bug with Windows multilanguage (MUI)\r
-* see J-B and Simoné pcs \r
-* english GUI & french keyboard\r
-* with French GUI installed but NOT used\r
-*/\r
-void setLC_MESSAGES(void);\r
-\r
-#endif /* __SETLC_MESSAGES__ */\r
+
+/*
+ * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+ * Copyright (C) INRIA - Allan CORNET
+ * 
+ * This file must be used under the terms of the CeCILL.
+ * This source file is licensed as described in the file COPYING, which
+ * you should have received as part of this distribution.  The terms
+ * are also available at    
+ * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+ *
+ */
+
+/*--------------------------------------------------------------------------*/
+#ifndef __SETLC_MESSAGES__
+#define __SETLC_MESSAGES__
+
+/**
+* Initialize LC_MESSAGES environment variable
+* To fix a bug with Windows multilanguage (MUI)
+* see J-B and Simoné pcs 
+* english GUI & french keyboard
+* with French GUI installed but NOT used
+*/
+void setLC_MESSAGES(void);
+
+#endif /* __SETLC_MESSAGES__ */
 /*--------------------------------------------------------------------------*/
\ No newline at end of file