You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							394 lines
						
					
					
						
							13 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							394 lines
						
					
					
						
							13 KiB
						
					
					
				
								# Copyright (C) 2001-2012 Yves Renard
							 | 
						|
								#
							 | 
						|
								# This file is a part of GETFEM++
							 | 
						|
								#
							 | 
						|
								# Getfem++  is  free software;  you  can  redistribute  it  and/or modify it
							 | 
						|
								# under  the  terms  of the  GNU  Lesser General Public License as published
							 | 
						|
								# by  the  Free Software Foundation;  either version 3 of the License,  or
							 | 
						|
								# (at your option) any later version along with the GCC Runtime Library
							 | 
						|
								# Exception either version 3.1 or (at your option) any later version.
							 | 
						|
								# This program  is  distributed  in  the  hope  that it will be useful,  but
							 | 
						|
								# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
							 | 
						|
								# or  FITNESS  FOR  A PARTICULAR PURPOSE.  See the GNU Lesser General Public
							 | 
						|
								# License and GCC Runtime Library Exception for more details.
							 | 
						|
								# You  should  have received a copy of the GNU Lesser General Public License
							 | 
						|
								# along  with  this program;  if not, write to the Free Software Foundation,
							 | 
						|
								# Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301, USA.
							 | 
						|
								
							 | 
						|
								eval 'exec perl -S $0 "$@"'
							 | 
						|
								  if 0;
							 | 
						|
								
							 | 
						|
								sub numerique { $a <=> $b; }
							 | 
						|
								
							 | 
						|
								$nb_iter = 1;                # number of iterations on each test
							 | 
						|
								$islocal = 0;
							 | 
						|
								$with_qd = 0;                # test also with dd_real and qd_real
							 | 
						|
								$with_lapack = 0;            # link with lapack
							 | 
						|
								$srcdir = $ENV{srcdir};      # source directory
							 | 
						|
								$tests_to_be_done = "";
							 | 
						|
								$fix_base_type = -1;
							 | 
						|
								
							 | 
						|
								while(@ARGV) {               # read optional parameters
							 | 
						|
								  $param = $ARGV[0];
							 | 
						|
								  $val = int(1 * $param);
							 | 
						|
								  if ($param =~ /.cc/) {
							 | 
						|
								    $tests_to_be_done = $param;
							 | 
						|
								  }
							 | 
						|
								  elsif ($param eq "with-qd") {
							 | 
						|
								    $with_qd = 1;
							 | 
						|
								  }
							 | 
						|
								  elsif ($param eq "with-lapack") {
							 | 
						|
								    $with_lapack = 1;
							 | 
						|
								  }
							 | 
						|
								  elsif ($param eq "float") {
							 | 
						|
								    $fix_base_type = 0;
							 | 
						|
								  }
							 | 
						|
								  elsif ($param eq "double") {
							 | 
						|
								    $fix_base_type = 1;
							 | 
						|
								  }
							 | 
						|
								  elsif ($param eq "complex_float") {
							 | 
						|
								    $fix_base_type = 2;
							 | 
						|
								  }
							 | 
						|
								  elsif ($param eq "complex_double") {
							 | 
						|
								    $fix_base_type = 3;
							 | 
						|
								  }
							 | 
						|
								  elsif ($param eq "dd_real") {
							 | 
						|
								    $fix_base_type = 0; $with_qd = 1;
							 | 
						|
								  }
							 | 
						|
								  elsif ($param eq "qd_real") {
							 | 
						|
								    $fix_base_type = 1; $with_qd = 1;
							 | 
						|
								  }
							 | 
						|
								  elsif ($param eq "complex_dd_real") {
							 | 
						|
								    $fix_base_type = 2; $with_qd = 1;
							 | 
						|
								  }
							 | 
						|
								  elsif ($param eq "complex_qd_real") {
							 | 
						|
								    $fix_base_type = 3; $with_qd = 1;
							 | 
						|
								  }
							 | 
						|
								  elsif ($param =~ "srcdir=") {
							 | 
						|
								    ($param, $srcdir)=split('=', $param, 2);
							 | 
						|
								  }
							 | 
						|
								  elsif ($val != 0) {
							 | 
						|
								    $nb_iter = $val;
							 | 
						|
								  }
							 | 
						|
								  else {
							 | 
						|
								    print "Unrecognized parameter: $param\n";
							 | 
						|
								    print "valid parameters are:\n";
							 | 
						|
								    print ". the number of iterations on each test\n";
							 | 
						|
								    print ". with-qd : test also with dd_real and qd_real\n";
							 | 
						|
								    print ". with-lapack : link with lapack\n";
							 | 
						|
								    print ". double, float, complex_double or complex_float";
							 | 
						|
								    print " to fix the base type\n";
							 | 
						|
								    print ". source name of a test procedure\n";
							 | 
						|
								    print ". srcdir=name\n";
							 | 
						|
								    exit(1);
							 | 
						|
								  }
							 | 
						|
								  shift @ARGV;
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								if ($srcdir eq "") {
							 | 
						|
								  $srcdir="../../tests";
							 | 
						|
								  print "WARNING : no srcdir, taking $srcdir\n";
							 | 
						|
								  $islocal = 1;
							 | 
						|
								}
							 | 
						|
								if ($tests_to_be_done eq "") {
							 | 
						|
								  $tests_to_be_done = `ls $srcdir/gmm_torture*.cc`;  # list of tests
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								if ($with_qd && $with_lapack) {
							 | 
						|
								  print "Options with_qd and with_lapack are not compatible\n";
							 | 
						|
								  exit(1);
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								$nb_test = 0;                # number of test procedures
							 | 
						|
								$tests_list = $tests_to_be_done;
							 | 
						|
								while ($tests_list)
							 | 
						|
								  { ($org_name, $tests_list) = split('\s', $tests_list, 2); ++$nb_test; }
							 | 
						|
								
							 | 
						|
								print "Gmm tests : Making $nb_iter execution";
							 | 
						|
								if ($nb_iter > 1) { print "s"; }
							 | 
						|
								if ($nb_test == 1) { print " of $tests_to_be_done\n"; }
							 | 
						|
								else { print " of each test\n"; }
							 | 
						|
								
							 | 
						|
								for ($iter = 1; $iter <= $nb_iter; ++$iter) {
							 | 
						|
								  $tests_list = $tests_to_be_done;
							 | 
						|
								  while ($tests_list) {
							 | 
						|
								    ($org_name, $tests_list) = split('\s', $tests_list, 2);
							 | 
						|
								
							 | 
						|
								    if ($nb_iter == 1) { print "Testing  $org_name"; }
							 | 
						|
								    else { print "Test $iter for $org_name"; }
							 | 
						|
								    if ($with_lapack) { print " linked with lapack"; }
							 | 
						|
								    if ($with_qd) { print " with qd types"; }
							 | 
						|
								    print "\n";
							 | 
						|
								
							 | 
						|
								    $d = $org_name;
							 | 
						|
								    do { ($b, $d) = split('/', $d, 2); } while ($d);
							 | 
						|
								    $dest_name = "auto_$b";
							 | 
						|
								    ($root_name, $d) = split('.cc', $dest_name, 2);
							 | 
						|
								    $size_max = 30.0;
							 | 
						|
								
							 | 
						|
								    open(DATAF, $org_name) or die "Open input file impossible : $!\n";
							 | 
						|
								    open(TMPF, ">$dest_name") or die "Open output file impossible : $!\n";
							 | 
						|
								
							 | 
						|
								    print TMPF "\n\n";
							 | 
						|
								
							 | 
						|
								    if ($with_lapack) {
							 | 
						|
								      print TMPF "#include<gmm_lapack_interface.h>\n\n";
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    if ($with_qd) {
							 | 
						|
								      print TMPF "#include <qd/dd.h>\n";
							 | 
						|
								      print TMPF "#include <qd/qd.h>\n";
							 | 
						|
								      print TMPF "#include <qd/fpu.h>\n\n";
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    $reading_param = 1;
							 | 
						|
								    $nb_param = 0;
							 | 
						|
								
							 | 
						|
								    while (($li = <DATAF> )&& ($reading_param)) {
							 | 
						|
								      chomp($li);
							 | 
						|
								      if ($li=~/^\/\//) {
							 | 
						|
								      if ($li=~/ENDPARAM/) { $reading_param = 0; }
							 | 
						|
								      elsif ($li=~/DENSE_VECTOR_PARAM/) { $param[$nb_param++] = 1; }
							 | 
						|
								      elsif ($li=~/VECTOR_PARAM/) { $param[$nb_param++] = 2; }
							 | 
						|
								      elsif ($li=~/RECTANGULAR_MATRIX_PARAM/) { $param[$nb_param++] = 3; }
							 | 
						|
								      elsif ($li=~/SQUARED_MATRIX_PARAM/) { $param[$nb_param++] = 4; }
							 | 
						|
								      elsif ($li=~/\/\//) { }
							 | 
						|
								      else { die "Error in parameter list"; }
							 | 
						|
								    }
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    $TYPES[0] = "float";
							 | 
						|
								    $TYPES[1] = "std::complex<float> ";
							 | 
						|
								    $TYPES[2] = "double";
							 | 
						|
								    $TYPES[3] = "std::complex<double> ";
							 | 
						|
								    # $TYPES[4] = "long double";
							 | 
						|
								    # $TYPES[5] = "std::complex<long double> ";
							 | 
						|
								    $NB_TYPES = 4.0;
							 | 
						|
								
							 | 
						|
								    if ($with_lapack) {
							 | 
						|
								      $NB_TYPES = 4.0;
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    if ($with_qd) {
							 | 
						|
								      $TYPES[0] = "dd_real";
							 | 
						|
								      $TYPES[1] = "qd_real";
							 | 
						|
								      $TYPES[2] = "std::complex<dd_real> ";
							 | 
						|
								      $TYPES[3] = "std::complex<qd_real> ";
							 | 
						|
								      $NB_TYPES = 4.0;
							 | 
						|
								    }
							 | 
						|
								
							 | 
						|
								    if ($fix_base_type == -1) { $TYPE = $TYPES[int($NB_TYPES * rand())]; }
							 | 
						|
								    else { $TYPE = $TYPES[$fix_base_type]; }
							 | 
						|
								
							 | 
						|
								    $VECTOR_TYPES[0] = "std::vector<$TYPE> ";
							 | 
						|
								    $VECTOR_TYPES[1] = "std::vector<$TYPE> ";
							 | 
						|
								    $VECTOR_TYPES[2] = "gmm::rsvector<$TYPE> ";
							 | 
						|
								    $VECTOR_TYPES[3] = "gmm::wsvector<$TYPE> ";
							 | 
						|
								    $VECTOR_TYPES[4] = "gmm::slvector<$TYPE> ";
							 | 
						|
								    $NB_VECTOR_TYPES = 5.0;
							 | 
						|
								
							 | 
						|
								    $MATRIX_TYPES[0] = "gmm::dense_matrix<$TYPE> ";
							 | 
						|
								    $MATRIX_TYPES[1] = "gmm::dense_matrix<$TYPE> ";
							 | 
						|
								    $MATRIX_TYPES[2] = "gmm::row_matrix<std::vector<$TYPE> > ";
							 | 
						|
								    $MATRIX_TYPES[3] = "gmm::col_matrix<std::vector<$TYPE> > ";
							 | 
						|
								    $MATRIX_TYPES[4] = "gmm::row_matrix<gmm::rsvector<$TYPE> > ";
							 | 
						|
								    $MATRIX_TYPES[5] = "gmm::col_matrix<gmm::rsvector<$TYPE> > ";
							 | 
						|
								    $MATRIX_TYPES[6] = "gmm::row_matrix<gmm::wsvector<$TYPE> > ";
							 | 
						|
								    $MATRIX_TYPES[7] = "gmm::col_matrix<gmm::wsvector<$TYPE> > ";
							 | 
						|
								    $MATRIX_TYPES[8] = "gmm::row_matrix<gmm::slvector<$TYPE> > ";
							 | 
						|
								    $MATRIX_TYPES[9] = "gmm::col_matrix<gmm::slvector<$TYPE> > ";
							 | 
						|
								    $NB_MATRIX_TYPES = 10.0;
							 | 
						|
								
							 | 
						|
								    while ($li = <DATAF>) { print TMPF $li; }
							 | 
						|
								    $sizep = int($size_max*rand());
							 | 
						|
								    $theseed = int(10000.0*rand());
							 | 
						|
								#    print "Parameters for the test:\n";
							 | 
						|
								    print TMPF "\n\n\n";
							 | 
						|
								    print TMPF "int main(void) {\n\n";
							 | 
						|
								    if ($with_qd) {
							 | 
						|
								      print TMPF "  fpu_fix_start(0);\n\n";
							 | 
						|
								    }
							 | 
						|
								    print TMPF "  srand($theseed);\n\n";
							 | 
						|
								    print TMPF "  gmm::set_warning_level(1);\n\n";
							 | 
						|
								    print TMPF "  for (int iter = 0; iter < 100000; ++iter) {\n\n";
							 | 
						|
								    print TMPF "    try {\n\n";
							 | 
						|
								    for ($j = 0; $j < $nb_param; ++$j) {
							 | 
						|
								      $a = rand(); $b = rand();
							 | 
						|
								      if ($with_lapack) { $a = $b = 1.0; }
							 | 
						|
								      $sizepp = $sizep + int(50.0*rand());
							 | 
						|
								      $step = $sizep; if ($step == 0) { ++$step; }
							 | 
						|
								      $step = int(1.0*int($sizepp/$step - 1)*rand()) + 1;
							 | 
						|
								
							 | 
						|
								      if (($param[$j] == 1) || ($param[$j] == 2)) { # vectors
							 | 
						|
									$lt = $VECTOR_TYPES[0];
							 | 
						|
									if ($param[$j] == 2 && $with_lapack==0) {
							 | 
						|
									  $lt = $VECTOR_TYPES[int($NB_VECTOR_TYPES * rand())];
							 | 
						|
									}
							 | 
						|
									if ($a < 0.1) {
							 | 
						|
									  $li = "      $lt param$j($sizepp);";
							 | 
						|
									  $c = int(1.0*($sizepp-$sizep+1)*rand());
							 | 
						|
									  $param_name[$j]
							 | 
						|
									    = "gmm::sub_vector(param$j, gmm::sub_interval($c, $sizep))";
							 | 
						|
									}
							 | 
						|
									elsif ($a < 0.2) {
							 | 
						|
									  $li = "      $lt param$j($sizepp);";
							 | 
						|
									  $c = int(1.0*($sizepp-($sizep*$step+1))*rand());
							 | 
						|
									  $param_name[$j]
							 | 
						|
									    = "gmm::sub_vector(param$j, gmm::sub_slice($c, $sizep, $step))";
							 | 
						|
									}
							 | 
						|
									elsif ($a < 0.3) {
							 | 
						|
									  $li = "      $lt param$j($sizepp);"; @sub_index = ();
							 | 
						|
									  @sortind = 0 .. ($sizepp-1);
							 | 
						|
									  while (@sortind)
							 | 
						|
									    { push (@sub_index, splice(@sortind , rand @sortind, 1)); }
							 | 
						|
									  @sub_index = @sub_index[0..$sizep-1];
							 | 
						|
									  @sub_index = sort numerique @sub_index;
							 | 
						|
									  if ($sizep == 0)
							 | 
						|
									    { $li = "$li\n      gmm::size_type param_tab$j [1] = {0};"; }
							 | 
						|
									  else {
							 | 
						|
									    $li="$li\n      gmm::size_type param_tab$j [$sizep] ={$sub_index[0]";
							 | 
						|
									    for ($k = 1; $k < $sizep; ++$k) { $li = "$li , $sub_index[$k]"; }
							 | 
						|
									    $li = "$li};";
							 | 
						|
									  }
							 | 
						|
									  $param_name[$j] = "gmm::sub_vector(param$j,".
							 | 
						|
									    " gmm::sub_index(¶m_tab$j [0], ¶m_tab$j [$sizep]))";
							 | 
						|
									}
							 | 
						|
									else {
							 | 
						|
									  $li = "      $lt param$j($sizep);";
							 | 
						|
									  $param_name[$j] = "param$j";
							 | 
						|
									}
							 | 
						|
									print TMPF "$li\n      gmm::fill_random(param$j);\n";
							 | 
						|
								      }
							 | 
						|
								      elsif ($param[$j] == 3 || $param[$j] == 4) { # matrices
							 | 
						|
									$sm = $sizep; if ($a < 0.3) { $sm = $sizep + int(50.0*rand()); }
							 | 
						|
									$s = $sizep; if ($param[$j] == 3) { $s = int($size_max*rand()); }
							 | 
						|
									$sn = $s; if ($b < 0.3) { $sn = $s + int(50.0*rand()); }
							 | 
						|
									$param_name[$j] = "param$j";
							 | 
						|
									$lt = $MATRIX_TYPES[0];
							 | 
						|
									if ($with_lapack==0) {
							 | 
						|
									  $lt = $MATRIX_TYPES[int($NB_MATRIX_TYPES * rand())];
							 | 
						|
									}
							 | 
						|
									$li = "      $lt param$j($sm, $sn);";
							 | 
						|
									
							 | 
						|
									if ($a < 0.3 || $b < 0.3) {
							 | 
						|
									  $sub1 = "gmm::sub_interval(0, $sizep)";
							 | 
						|
									  $sub2 = "gmm::sub_interval(0, $s)";
							 | 
						|
									  if ($a < 0.1) {
							 | 
						|
									    $c = int(1.0*($sm-$sizep+1)*rand());
							 | 
						|
									    $sub1 = "gmm::sub_interval($c, $sizep)";
							 | 
						|
									  }
							 | 
						|
									  elsif ($a < 0.2) {
							 | 
						|
									    $step = $sizep; if ($step == 0) { ++$step; }
							 | 
						|
									    $step = int(1.0*int($sm/$step - 1)*rand()) + 1;
							 | 
						|
									    $c = int(1.0*($sm-($sizep*$step+1))*rand());
							 | 
						|
									    $sub1 = "gmm::sub_slice($c, $sizep, $step)";
							 | 
						|
									  }
							 | 
						|
									  elsif ($a < 0.3) {
							 | 
						|
									    @sub_index = ();
							 | 
						|
									    @sortind = 0 .. ($sm-1);
							 | 
						|
									    while (@sortind)
							 | 
						|
									      { push (@sub_index, splice(@sortind , rand @sortind, 1)); }
							 | 
						|
									    @sub_index = @sub_index[0..$sizep-1];
							 | 
						|
									    @sub_index = sort numerique @sub_index;
							 | 
						|
									    if ($sizep == 0)
							 | 
						|
									      { $li = "$li\n      gmm::size_type param_t$j [1] = {0};"; }
							 | 
						|
									    else {
							 | 
						|
									      $li="$li\n      gmm::size_type param_t$j [$sizep]= {$sub_index[0]";
							 | 
						|
									      for ($k = 1; $k < $sizep; ++$k) { $li = "$li , $sub_index[$k]"; }
							 | 
						|
									      $li = "$li};";
							 | 
						|
									    }
							 | 
						|
									    $sub1 = "gmm::sub_index(¶m_t$j [0], ¶m_t$j [$sizep])";
							 | 
						|
									  }
							 | 
						|
									  if ($b < 0.1) {
							 | 
						|
									    $c = int(1.0*($sn-$s+1)*rand());
							 | 
						|
									    $sub2 = "gmm::sub_interval($c, $s)";
							 | 
						|
									  }
							 | 
						|
									  elsif ($b < 0.2) {
							 | 
						|
									    $step = $s; if ($step == 0) { ++$step; }
							 | 
						|
									    $step = int(1.0*int($sn/$step - 1)*rand()) + 1;
							 | 
						|
									    $c = int(1.0*($sn-($s*$step+1))*rand());
							 | 
						|
									    $sub2 = "gmm::sub_slice($c, $s, $step)";
							 | 
						|
									  }
							 | 
						|
									  elsif ($b < 0.3) {
							 | 
						|
									    @sub_index = ();
							 | 
						|
									    @sortind = 0 .. ($sn-1);
							 | 
						|
									    while (@sortind)
							 | 
						|
									      { push (@sub_index, splice(@sortind , rand @sortind, 1)); }
							 | 
						|
									    @sub_index = @sub_index[0..$s-1];
							 | 
						|
									    @sub_index = sort numerique @sub_index;
							 | 
						|
									    if ($s == 0)
							 | 
						|
									      { $li = "$li\n      gmm::size_type param_u$j [1] = {0};"; }
							 | 
						|
									    else {
							 | 
						|
									      $li="$li\n      gmm::size_type param_u$j [$s] = {$sub_index[0]";
							 | 
						|
									      for ($k = 1; $k < $s; ++$k) { $li = "$li , $sub_index[$k]"; }
							 | 
						|
									      $li = "$li};";
							 | 
						|
									    }
							 | 
						|
									    $sub2 = "gmm::sub_index(¶m_u$j [0], ¶m_u$j [$s])";
							 | 
						|
									  }
							 | 
						|
									  $param_name[$j] = "gmm::sub_matrix(param$j, $sub1, $sub2)";
							 | 
						|
									}
							 | 
						|
									if (1.0 * rand() < 0.5) {
							 | 
						|
									  print TMPF "$li\n      gmm::fill_random(param$j);\n";
							 | 
						|
									}
							 | 
						|
									else {
							 | 
						|
									  print TMPF "$li\n      gmm::fill_random(param$j, 0.2);\n";
							 | 
						|
									}
							 | 
						|
									$sizep = $s;
							 | 
						|
								      }
							 | 
						|
								#      print "$li ($param_name[$j])\n";
							 | 
						|
								    }
							 | 
						|
								    print TMPF "    \n\n      bool ret = test_procedure($param_name[0]";
							 | 
						|
								    for ($j = 1; $j < $nb_param; ++$j) { print TMPF ", $param_name[$j]"; }
							 | 
						|
								    print TMPF ");\n";
							 | 
						|
								    print TMPF "      if (ret) return 0;\n\n";
							 | 
						|
								    print TMPF "    }\n";
							 | 
						|
								    print TMPF "    GMM_STANDARD_CATCH_ERROR;\n";
							 | 
						|
								    print TMPF "  }\n";
							 | 
						|
								    print TMPF "  return 0;\n";
							 | 
						|
								    print TMPF "}\n";
							 | 
						|
								
							 | 
						|
								    close(DATAF);
							 | 
						|
								    close(TMPF);
							 | 
						|
								
							 | 
						|
								    `rm -f $root_name`;
							 | 
						|
								
							 | 
						|
								    $compilo=`../gmm-config --cxx` || die('cannot execute ../gmm-config --cxx'); chomp($compilo);
							 | 
						|
								    $compile_options=`../gmm-config --build-flags`;
							 | 
						|
								    chomp($compile_options);
							 | 
						|
								    $compile_options="$compile_options -I$srcdir/../src -I$srcdir/../include -I../src -I../include";
							 | 
						|
								    $compile_libs="-lm";
							 | 
						|
								
							 | 
						|
								    if ($with_lapack) {
							 | 
						|
								      $compile_libs="-llapack -lblas -lg2c $compile_libs";
							 | 
						|
								      $compile_options="$compile_options -DGMM_USES_LAPACK"
							 | 
						|
								    }
							 | 
						|
								    if ($with_qd) { $compile_libs="-lqd $compile_libs"; }
							 | 
						|
								#   print "$compilo $compile_options $dest_name -o $root_name $compile_libs\n";
							 | 
						|
								    print `$compilo $compile_options $dest_name -o $root_name $compile_libs`;
							 | 
						|
								
							 | 
						|
								    if ($? != 0) {
							 | 
						|
								      print "$compilo $compile_options $dest_name -o $root_name $compile_libs\n";
							 | 
						|
								      print "\n******************************************************\n";
							 | 
						|
								      print "* Compilation error, please submit this bug to\n";
							 | 
						|
								      print "* Yves.Renard\@insa-lyon.fr, with the file\n";
							 | 
						|
								      print "* $dest_name\n";
							 | 
						|
								      print "* produced in directory \"tests\".\n";
							 | 
						|
								      print "******************************************************\n";
							 | 
						|
								      exit(1);
							 | 
						|
								    }
							 | 
						|
								    print `./$root_name`;
							 | 
						|
								    if ($? != 0) {
							 | 
						|
								      print "$compilo $compile_options $dest_name -o $root_name $compile_libs\n";
							 | 
						|
								      print "\n******************************************************\n";
							 | 
						|
								      print "* Execution error, please submit this bug to\n";
							 | 
						|
								      print "* Yves.Renard\@insa-lyon.fr, with the file\n";
							 | 
						|
								      print "* $dest_name\n";
							 | 
						|
								      print "* produced in directory \"tests\".\n";
							 | 
						|
								      print "******************************************************\n";
							 | 
						|
								      exit(1);
							 | 
						|
								    }
							 | 
						|
								#    `rm -f $dest_name`;
							 | 
						|
								
							 | 
						|
								  }
							 | 
						|
								
							 | 
						|
								}
							 |