Index: mttroot/mtt/bin/mtt
==================================================================
--- mttroot/mtt/bin/mtt
+++ mttroot/mtt/bin/mtt
@@ -15,10 +15,22 @@
 ###############################################################
 ## Version control history
 ###############################################################
 ## $Header$
 ## $Log$
+## Revision 1.360.2.3  2002/09/16 07:59:26  geraint
+## Changed default optimisation to global.
+##
+## Revision 1.360.2.2  2002/09/04 10:44:59  geraint
+## Added option to specify number of tmp variables declared (-ntmpvar <N>).
+##
+## Revision 1.360.2.1  2002/09/03 23:44:43  geraint
+## adding global optimisation (-optg).
+##
+## Revision 1.360  2002/08/20 15:51:16  gawthrop
+## Update to work with ident DIY rep
+##
 ## Revision 1.359  2002/08/07 14:27:14  geraint
 ## Changes to make "-i dassl" work again.
 ##
 ## Revision 1.358  2002/08/07 11:04:40  geraint
 ## Now updates timestamp on lbl.txt after processing in make. This eliminates the delay where MTT spends a long period of time uselessly recursing through the model on subsequent passes if the label file is older than the bondgraph.
@@ -1305,10 +1317,13 @@
 
 # Default use ps files
 ps=ps
 eps=eps
 psview=$PSVIEW
+
+# Default declare 500 temporary variables
+num_tmp_var=500
 
 #Initialise list of switches
 mtt_switches='';
 
 #Initialise read dirs
@@ -1459,12 +1474,20 @@
 	-oct )
                 fixcc='-fixcc'
                 mtt_switches="$mtt_switches $1";
                 using_oct=yes;
                 ;;
-	-opt )  mtt_switches="$mtt_switches $1";
-                optimise='-optimise';;
+	-optl )
+		mtt_switches="$mtt_switches $1";
+                optimise='-optimise_local';;
+	-opt | -optg )
+		mtt_switches="$mtt_switches $1";
+                optimise='-optimise_global';;
+        -ntmpvar )
+		num_tmp_var=$2;
+		mtt_switches="$mtt_switches $1 $2";
+		shift;;
 	-partition ) mtt_switches="$mtt_switches $1";
                      partition='-partition';
                 ;;
 	-pdf )   mtt_switches="$mtt_switches $1";
                  ps=pdf; 
@@ -1553,11 +1576,14 @@
     echo '         -dc Maximise derivative (not integral) causality'
     echo '         -i <implicit|euler|rk4|dassl>   Use implicit, euler, rk4 or dassl integration'
     echo '         -ae <reduce|hybrd|dassl|hooke>   Solve algebraic equations with specified solver'
     echo '         -o ode is same as dae'
     echo '         -oct use oct files in place of m files where appropriate'
-    echo '         -opt optimise code generation'
+    echo '         -opt optimise code generation (equivalent to -optg)'
+    echo '         -optl optimise code generation (local  : line-by-line)'
+    echo '         -optg optimise code generation (global : full vector)'
+    echo "         -ntmpvar <N>  declare N temporary variables (default=$num_tmp_var)"
     echo '         -p  print environment variables'
     echo '         -partition partition hierachical system'
     echo '         -pdf generate pdf in place of ps'
     echo '         -r  reset time stamp on representation'
     echo '         -s  generate sensitivity BG (use mtt -s sSys rep lang)'
@@ -2403,11 +2429,11 @@
 $1_sympar.r: $1_sympar.txt
 	sympar_txt2r $1
 $1_sympar.m: $1_sympar.txt
 	sympar_txt2m $1
 $1_sympar.h: $1_sympar.txt
-	sympar_txt2h.sh $1
+	sympar_txt2h.sh $1 $num_tmp_var
 
 #SUMMARY sympar	symbolic parameters (c)
 # txt to c sympar conversion
 $1_sympar.c: $1_sympar.txt
 	sympar_txt2c $1

Index: mttroot/mtt/bin/trans/cse2ode_r
==================================================================
--- mttroot/mtt/bin/trans/cse2ode_r
+++ mttroot/mtt/bin/trans/cse2ode_r
@@ -12,10 +12,21 @@
 ###############################################################
 ## Version control history
 ###############################################################
 ## $Id$
 ## $Log$
+## Revision 1.3.4.2  2002/09/10 23:24:19  geraint
+## Rationalised local and global optimisations.
+## Fixes presentation of locally optimised code (ode view).
+## Much more elegant :-)
+##
+## Revision 1.3.4.1  2002/09/03 23:44:43  geraint
+## adding global optimisation (-optg).
+##
+## Revision 1.3  2001/07/27 23:29:10  geraint
+## Optimises only when requested (-opt).
+##
 ## Revision 1.2  2001/07/13 04:54:04  geraint
 ## Branch merge: numerical-algebraic-solution back to main.
 ##
 ## Revision 1.1.4.1  2001/05/04 04:07:24  geraint
 ## Numerical solution of algebraic equations.
@@ -34,22 +45,25 @@
 ###############################################################
 
 optimise=''; optimise_msg=''
 while [ -n "`echo $1 | grep '^-'`" ]; do
     case $1 in
-	-optimise)
-	    optimise='-optimise'
-	    optimise_msg=' with optimisation' ;;
+	-optimise_global )
+	    optimise='-optimise_global'
+	    optimise_msg=' with global optimisation' ;;
+	-optimise_local )
+	    optimise='-optimise_local'
+	    optimise_msg=' with local optimisation' ;;
 	*)
 	    echo "$1 is an invalid argument - ignoring" ;;
     esac
     shift
 done
 
 # Create the reduce output code
-def2write_r $optimise $1 ode
-def2write_r $optimise $1 odeo
+def2write_r $1 ode
+def2write_r $1 odeo
 
 #Inform user
 echo Creating $1_ode.r $optimise_msg
 echo Creating $1_odeo.r $optimise_msg
 
@@ -126,16 +140,16 @@
 in ("$1_odeo_write.r");
 write "END;";
 SHUT "$1_odeo.r";
 quit;
 EOF
+
+if [ ${optimise:-""} = "-optimise_global" ]; then
+    mtt_optimise global $1 ode
+    mtt_optimise global $1 odeo
+elif [ ${optimise:-""} = "-optimise_local" ]; then
+    mtt_optimise local $1 ode
+    mtt_optimise local $1 odeo
+fi
 
 # Now invoke the standard error handling.
 mtt_error_r cse2ode_r.log
-
-
-
-
-
-
-
-

Index: mttroot/mtt/bin/trans/cse2smx_lang
==================================================================
--- mttroot/mtt/bin/trans/cse2smx_lang
+++ mttroot/mtt/bin/trans/cse2smx_lang
@@ -23,11 +23,11 @@
 	parameters='-parameters';
 	;;
     -matrix)
 	matrix='yes';
 	;;
-    -optimise)
+    -optimise_global | -optimise_local )
 	optimise='LOAD SCOPE; ON GENTRANOPT;';
         iname='INAME mtt_o;';
 	;;
     -fixcc )
         fix_mtt_pow='FOR ALL x,y LET x^y = mtt_pow(x,y);'

Index: mttroot/mtt/bin/trans/csm2sm_r
==================================================================
--- mttroot/mtt/bin/trans/csm2sm_r
+++ mttroot/mtt/bin/trans/csm2sm_r
@@ -12,10 +12,21 @@
 ###############################################################
 ## Version control history
 ###############################################################
 ## $Id$
 ## $Log$
+## Revision 1.2.4.2  2002/09/10 23:24:19  geraint
+## Rationalised local and global optimisations.
+## Fixes presentation of locally optimised code (ode view).
+## Much more elegant :-)
+##
+## Revision 1.2.4.1  2002/09/03 23:44:43  geraint
+## adding global optimisation (-optg).
+##
+## Revision 1.2  2001/07/27 23:29:10  geraint
+## Optimises only when requested (-opt).
+##
 ## Revision 1.1  2000/12/28 12:24:03  peterg
 ## Put under RCS
 ##
 ## Revision 1.2  1996/08/25 10:11:32  peter
 ## Added END in output file.
@@ -27,21 +38,24 @@
 ###############################################################
 
 optimise=''; optimise_msg=''
 while [ -n "`echo $1 | grep '^-'`" ]; do
     case $1 in
-	-optimise)
-	    optimise='-optimise'
-	    optimise_msg=' with optimisation' ;;
-	*)
+	-optimise_global )
+	    optimise='-optimise_global'
+	    optimise_msg=' with global optimisation' ;;
+       	-optimise_local )
+	    optimise='-optimise_local'
+	    optimise_msg=' with local optimisation' ;;
+	* )
 	    echo "$1 is an invalid argument - ignoring" ;;
     esac
     shift
 done
 
 # Create the reduce output code
-def2write_r $optimise $1 $2
+def2write_r $1 $2
 
 # Inform user
 echo Creating $1_$2.r $optimise_msg
 
 case $2 in
@@ -135,8 +149,14 @@
 quit;
 
 EOF
 
 cat $1_$2.r1 $1_$2.r2 > $1_$2.r
+
+if [ ${optimise:-""} = "-optimise_global" ]; then
+    mtt_optimise global $1 $2
+elif [ ${optimise:-""} = "-optimise_local" ]; then
+    mtt_optimise local $1 $2
+fi
 
 # Now invoke the standard error handling.
 mtt_error_r csm2sm_r.log

Index: mttroot/mtt/bin/trans/dae2cse_r
==================================================================
--- mttroot/mtt/bin/trans/dae2cse_r
+++ mttroot/mtt/bin/trans/dae2cse_r
@@ -13,10 +13,24 @@
 ###############################################################
 ## Version control history
 ###############################################################
 ## $Id$
 ## $Log$
+## Revision 1.23.2.3  2002/09/12 18:50:50  geraint
+## Uncommented cse optimisations - they seem to work ok.
+##
+## Revision 1.23.2.2  2002/09/10 23:24:19  geraint
+## Rationalised local and global optimisations.
+## Fixes presentation of locally optimised code (ode view).
+## Much more elegant :-)
+##
+## Revision 1.23.2.1  2002/09/03 23:44:43  geraint
+## adding global optimisation (-optg).
+##
+## Revision 1.23  2002/07/10 17:43:05  geraint
+## Added feature [ 562453 ] Optimisation of algebraic equations.
+##
 ## Revision 1.22  2002/06/28 15:35:47  geraint
 ## Commented out aej.r generation (not used yet).
 ##
 ## Revision 1.21  2002/06/28 10:13:40  geraint
 ## Includes fix_c.r in ese2rdae and def2write_r to eliminate occurrances of x**y.
@@ -132,24 +146,27 @@
 	-fixcc )
 		fixcc='-fixcc'
                 include=`echo 'in "'$MTT_LIB'/reduce/fix_c.r";'`
                 fix_msg='fixing c and cc code';
 		;;
-	-optimise)
-	    optimise='-optimise'
-	    optimise_msg=' with optimisation' ;;
+        -optimise_global )
+	    optimise='-optimise_global'
+	    optimise_msg=' with global optimisation' ;;
+	-optimise_local )
+	    optimise='-optimise_local'
+	    optimise_msg=' with local optimisation' ;;
         *)
                 echo "$1 is an invalid argument - ignoring" ;;
   esac
   shift
 done
 
 # Create the reduce output code
-def2write_r $optimise $fixcc $1 ae 
-def2write_r $optimise $fixcc $1 cse 
-def2write_r $optimise $fixcc $1 csex # Version without E matrix
-def2write_r $optimise $fixcc $1 cseo
+def2write_r $fixcc $1 ae 
+def2write_r $fixcc $1 cse 
+def2write_r $fixcc $1 csex # Version without E matrix
+def2write_r $fixcc $1 cseo
 
 echo "Creating $1_ae.r $optimise_msg"
 echo "Creating $1_cse.r $solve_msg $optimise_msg $fix_msg"
 echo "Creating $1_csex.r $optimise_msg"
 echo "Creating $1_cseo.r $optimise_msg"
@@ -470,10 +487,22 @@
 touch $1_cseo.r2
 cat $1_ae.r1 $1_ae.r2 > $1_ae.r
 cat $1_cse.r1 $1_cse.r2  > $1_cse.r
 cat $1_csex.r1 $1_csex.r2  > $1_csex.r
 cat $1_cseo.r1 $1_cseo.r2  > $1_cseo.r
+
+if [ ${optimise:-""} = "-optimise_global" ]; then
+    mtt_optimise global $1 ae
+    mtt_optimise global $1 cse
+    mtt_optimise global $1 cseo
+    mtt_optimise global $1 csex
+elif [ ${optimise:-""} = "-optimise_local" ]; then
+    mtt_optimise local $1 ae
+    mtt_optimise local $1 cse
+    mtt_optimise local $1 cseo
+    mtt_optimise local $1 csex
+fi
 
 if [ "$solve" = "1" ]; then
     echo "Setting MTTNyz=0 in $1_def.r and updating other $1_def files"
     gawk '{
      if ($1=="MTTNyz") 

Index: mttroot/mtt/bin/trans/dae2lde_r
==================================================================
--- mttroot/mtt/bin/trans/dae2lde_r
+++ mttroot/mtt/bin/trans/dae2lde_r
@@ -11,30 +11,51 @@
 ###############################################################
 ## Version control history
 ###############################################################
 ## $Id$
 ## $Log$
+## Revision 1.2.4.3  2002/09/13 10:10:42  geraint
+## Commented out optimisation.
+##
+## Revision 1.2.4.2  2002/09/10 23:24:19  geraint
+## Rationalised local and global optimisations.
+## Fixes presentation of locally optimised code (ode view).
+## Much more elegant :-)
+##
+## Revision 1.2.4.1  2002/09/03 23:44:43  geraint
+## adding global optimisation (-optg).
+##
+## Revision 1.2  2001/07/27 23:29:10  geraint
+## Optimises only when requested (-opt).
+##
 ## Revision 1.1  2000/12/28 12:25:13  peterg
 ## Initial revision
 ##
 ###############################################################
 
 optimise=''; optimise_msg=''
 while [ -n "`echo $1 | grep '^-'`" ]; do
     case $1 in
-	-optimise)
-	    optimise='-optimise'
-	    optimise_msg=' with optimisation' ;;
+	-optimise_global )
+#	    optimise='-optimise_global'
+#	    optimise_msg=' with global optimisation' ;;
+	    optimise=''
+	    optimise_msg='' ;;
+	-optimise_local )
+#	    optimise='-optimise_local'
+#	    optimise_msg=' with local optimisation' ;;
+	    optimise=''
+	    optimise_msg='' ;;
 	*)
 	    echo "$1 is an invalid argument - ignoring" ;;
     esac
     shift
 done
 
 # Create the reduce output code
-def2write_r $optimise $1 lde
-def2write_r $optimise $1 ldeo
+def2write_r $1 lde
+def2write_r $1 ldeo
 
 #Inform user
 echo Creating $1_lde.r $optimise_msg
 echo Creating $1_ldeo.r $optimise_msg
 
@@ -116,16 +137,17 @@
 in ("$1_ldeo_write.r");
 write "END;";
 SHUT "$1_ldeo.r";
 quit;
 EOF
+
+# TODO: edit mtt_optimise to accept lde and ldeo
+# if [ ${optimise:-""} = "-optimise_global" ]; then
+#     mtt_optimise global $1 lde
+#     mtt_optimise global $1 ldeo
+# elif [ ${optimise:-""} = "-optimise_local" ]; then
+#     mtt_optimise local $1 lde
+#     mtt_optimise local $1 ldeo
+# fi
 
 # Now invoke the standard error handling.
 mtt_error_r cse2lde_r.log
-
-
-
-
-
-
-
-

Index: mttroot/mtt/bin/trans/def2write_r
==================================================================
--- mttroot/mtt/bin/trans/def2write_r
+++ mttroot/mtt/bin/trans/def2write_r
@@ -11,10 +11,24 @@
 ###############################################################
 ## Version control history
 ###############################################################
 ## $Id$
 ## $Log$
+## Revision 1.16.2.3  2002/09/10 23:24:19  geraint
+## Rationalised local and global optimisations.
+## Fixes presentation of locally optimised code (ode view).
+## Much more elegant :-)
+##
+## Revision 1.16.2.2  2002/09/10 22:09:14  geraint
+## Fixed presentation of globally optimised equations (ode view).
+##
+## Revision 1.16.2.1  2002/09/03 23:44:43  geraint
+## adding global optimisation (-optg).
+##
+## Revision 1.16  2002/09/03 19:34:15  geraint
+## Write EdX regardless - csex is needed to create ode when not optimised.
+##
 ## Revision 1.15  2002/08/29 15:45:20  geraint
 ## Tests for existence of matrix before entering shell loop.
 ## Tests for existence of expression before attempting to write or optimise.
 ##
 ## Revision 1.14  2002/08/09 14:34:45  geraint
@@ -74,13 +88,10 @@
 ###############################################################
 
 optimise=''
 while [ -n "`echo $1 | grep '^-'`" ]; do
     case $1 in
-	-optimise)
-	    opt='-optimise'
-	    optimise_msg=' with optimisation' ;;
 	-fixcc )
 	    include=`echo 'in "'$MTT_LIB'/reduce/fix_c.r";'` ;;
 	*)
 	    echo "$1 is an invalid argument - ignoring" ;;
     esac
@@ -89,11 +100,11 @@
 
 sys=$1 # System name
 rep=$2 # System representation
 
 # Inform User
-echo Creating $1_$2_write.r $optimise_msg
+echo Creating $1_$2_write.r
 
 # Find system constants
 Nx=`mtt_getsize $sys x` # States
 Nxx=`mtt_getsize $sys xx` # States x States
 Nu=`mtt_getsize $sys u` # Inputs 
@@ -151,110 +162,35 @@
     *)
         echo def2write_r: representation $rep not recognised
         exit
 esac
 
-
-mtt_fix_integers ()
-{
-    gawk -F":=" -v RS="$" -v ORS="$\n" '
-(NF == 1) {
-	print $0
-}
-(NF > 1) {
-	lhs=$1 ;
-	rhs=$2" " ;
-	rhs1 = gensub ( /([^A-Za-z_0-9\.\+])([0-9]+)([^\.0-9])/ , "\\1\\2.0\\3" , "g", rhs );
-	rhs2 = gensub ( /([^e]\+)([0-9]+)([^\.0-9])/ , "\\1\\2.0\\3" , "g", rhs1 );
-	rhs3 = gensub ( /([^A-Za-z_0-9\.\+])([0-9]+)e([0-9]+).0([^\.0-9])/ , "\\1\\2\\3\\4" , "g" , rhs)
-	printf "%s:=%s$\n", lhs, rhs3 ;
-    }'
-}
-
-mtt_optimise ()
-{
-    sys="$1"
-    lhs="$2"
-    rhs="$3"
-    
-    dae="${sys}_dae.r"
-    tmp="mtt_optimise.tmp"
-    tmp1="mtt_optimise1.tmp"
-    tmp2="mtt_optimise2.tmp"
-    tmp3="mtt_optimise3.tmp"
-    
-    grep -i -e "^$lhs" $dae |\
-	sed -e 's/;/\ INAME\ mtt_tmp/g' |\
-	sed -e 's/:=/:=/g' > $tmp1
-    nlines=`wc -l $tmp1 | gawk '{print $1}'`
-    if [ $nlines -gt 0 ]; then
-	{
-	    cat <<EOF
-off echo$
-load scope$
-on double$
-on noconvert$
-on rounded$
-off int$
-off nat$
-$include
-
-out "$tmp2"$
-optimize
-EOF
-	} > $tmp
-	cat $tmp1 >> $tmp
-	{
-	    cat <<EOF
-shut "$tmp2"$
-$end$
-EOF
-	} >> $tmp
-	echo "%%% $lhs %%%" >> def2write_r1.log
-	${SYMBOLIC:-reduce} < $tmp >> def2write_r1.log 2>> def2write_r2.log
-	cat $tmp2 | gawk -v RS=';' '($2 == ":=") {print $0}' > $tmp3
-	cat $tmp3 | mtt_fix_integers
-    fi
-    rm -f $tmp $tmp1 $tmp2 $tmp3
-    return
-}
-
-
 # Remove log files
 rm -f def2write_r1.log def2write_r2.log
 
 # Write out the code
 echo "" > $1_$2_write.r
 
-if [ ${opt:-""} = "-optimise" ]; then
-    echo 'off nat$'
-#    echo 'on echo$'
-else
-    echo 'off echo$'
-    echo 'load gentran$'
-fi >> $1_$2_write.r
+echo 'off echo$' >> $1_$2_write.r
+echo 'load gentran$' >> $1_$2_write.r
 
 for matrix in $matrices; do
     matrix_exists=`grep -i MTT${matrix} ${sys}_dae.r | wc -l | gawk '{print $1}'`
     if [ "$matrix" = "EdX" -o $matrix_exists -gt 0 ]; then
 	n=`first "$ns"`; ns=`rest "$ns"` 
 	m=`first "$ms"`; ms=`rest "$ms"`
 	is=`n2m 1 $n`; 
 	js=`n2m 1 $m`; 
+	echo "write \"% Begin Matrix MTT${matrix}\"$" >> $1_$2_write.r
 	if [ $n -ge 1 ]; then
 	    for i in $is; do
 		for j in $js; do
-		    if [ ${opt:-""} = "-optimise" ]; then
-			name=`echo MTT$matrix'('$i','$j')'`
-			mtt_optimise $1 "$comma$name" "$name"
-			comma=''
-		    else
-			echo 'write'
-			name=`echo MTT$matrix'('$i','$j')'`
-			echo '  '$comma$name ':=' $name '$'
-		    fi >> $1_$2_write.r
+		    echo 'write'
+		    name=`echo MTT$matrix'('$i','$j')'`
+		    echo '  '$comma$name ':=' $name '$'
 		done
 	    done
-	fi
+	fi >> $1_$2_write.r
+	echo "write \"% End Matrix MTT${matrix}\"$" >> $1_$2_write.r
     fi
 done
 echo ';END;'                           >>$1_$2_write.r

ADDED   mttroot/mtt/bin/trans/mtt_fix_integers
Index: mttroot/mtt/bin/trans/mtt_fix_integers
==================================================================
--- /dev/null
+++ mttroot/mtt/bin/trans/mtt_fix_integers
@@ -0,0 +1,12 @@
+#! /bin/sh
+
+mttmatrix='\(mtt[A-Za-z][A-Za-z]*\)'
+integer='\([0-9][0-9]*\)'
+
+mtt_join_lines | gawk -v RS=${1:-"$"} -v ORS=${2:-"$\n"} ' {
+str = $0;
+str1 = gensub ( /([^A-Za-z_0-9\.\+])([0-9]+)([^\.0-9])/ , "\\1\\2.0\\3" , "g", str );
+str2 = gensub ( /([^e]\+)([0-9]+)([^\.0-9])/ , "\\1\\2.0\\3" , "g", str1 );
+str3 = gensub ( /([^A-Za-z_0-9\.\+])([0-9]+)e([0-9]+).0([^\.0-9])/ , "\\1\\2\\3\\4" , "g" , str2)
+printf "%s$\n", str3 ;
+}' | sed -e "s/$mttmatrix($integer\.0,/\1(\2,/g"

ADDED   mttroot/mtt/bin/trans/mtt_join_lines
Index: mttroot/mtt/bin/trans/mtt_join_lines
==================================================================
--- /dev/null
+++ mttroot/mtt/bin/trans/mtt_join_lines
@@ -0,0 +1,5 @@
+#! /bin/sh
+
+gawk '{ printf ( "%s" , $0 ) }'		|\
+    gawk -v RS="$" '{ printf "%s$\n", $0 }'	|\
+    gawk -v RS=";" '{ printf "%s;\n", $0 }'

ADDED   mttroot/mtt/bin/trans/mtt_optimise
Index: mttroot/mtt/bin/trans/mtt_optimise
==================================================================
--- /dev/null
+++ mttroot/mtt/bin/trans/mtt_optimise
@@ -0,0 +1,124 @@
+#! /bin/sh
+
+# script uses Reduce + Scope to optimise a vector
+# either global (an entire vector) or local (line-by-line)
+
+extent=$1			# global or local
+system=$2
+representation=$3
+
+# error codes
+E_REP_NOT_SUPPORTED=-19
+E_FILE_NOT_EXIST=-20
+
+case $representation in
+    ae)
+	matrix=yz ;
+	nmatrix=`mtt_getsize $system yz` ;;
+    cse | csex)
+	matrix=edx ;
+	nmatrix=`mtt_getsize $system x` ;;
+    ode)
+	matrix=dx ;
+	nmatrix=`mtt_getsize $system x` ;;
+    cseo | odeo)
+	matrix=y ;
+	nmatrix=`mtt_getsize $system y` ;;
+    *)
+	exit $E_REP_NOT_SUPPORTED;;
+esac
+
+# Global optimisation: Generate a command of the form
+# optimise mtt?(1,1) :=: mtt?(1,1), mtt?(2,1) :=: mtt?(2,1), ..., INAME mtt_tmp$
+#
+# Local optimisation: Generate a command of the form
+# optimise mtt?(1,1) :=: mtt?(1,1) INAME mtt_tmp$ \
+# optimise mtt?(2,1) :=: mtt?(2,1) INAME mtt_tmp$ ...
+case $extent in
+    "global" )
+	delimiter=", "
+	terminate="INAME mtt_tmp$"
+	;;
+    "local" )
+	delimiter=" INAME mtt_tmp$ optimize"
+	terminate="$"
+	;;
+    * )
+	echo "*** unknown scope for optimisation"
+	echo "*** should be global or local"
+	exit -1
+	;;
+esac
+
+if [ $nmatrix -gt 0 ]; then
+    command="optimize"
+    counter=1
+    while [ $counter -le $nmatrix ]; do
+	command="$command mtt$matrix($counter,1) :=: mtt$matrix($counter,1)$delimiter"
+	counter=`expr $counter + 1`
+    done
+    command="$command $terminate"
+else
+    command=""
+fi
+
+logfile=${system}_${representation}_optimisation.log
+tmpfile=${system}_${representation}_optimisation.tmp
+outfile=${system}_${representation}.r
+
+if [ ! -f $outfile ]; then
+    exit $E_FILE_NOT_EXIST
+fi
+
+find_code ()
+{
+    file_in=${1:-${IN}}
+    portion=${2:-"body"}
+    head=`cat ${file_in} | gawk '($2 == "Begin" && $3 == "Matrix") { print NR }'`
+    foot=`cat ${file_in} | gawk '($2 == "End"   && $3 == "Matrix") { print NR }'`
+    case ${portion} in
+	head)
+	    start=0
+	    end=${head}
+	    ;;
+	body)
+	    start=${head}
+	    end=${foot}
+	    ;;
+	foot)
+	    start=${foot}
+	    end=end
+	    ;;
+	*)
+	    echo "Error in find_code: portion unknown"
+	    return -1
+	    ;;
+    esac
+    cat ${file_in} |\
+    gawk --assign start=${start} --assign end=${end} '
+	(start < NR && NR < end) { print $0 }'
+};
+
+
+# Use Reduce to perform the optimisation
+${SYMBOLIC:-reduce} <<EOF > $logfile 2>&1
+off nat;
+in "${system}_def.r";
+in "$outfile";
+load scope;
+out "$tmpfile";
+$command;
+shut "$tmpfile";
+$end;
+EOF
+
+cp $outfile $outfile.unoptimised
+cp $tmpfile $outfile.tmp
+
+find_code $outfile head > $tmpfile.head
+cat $tmpfile | mtt_fix_integers > $tmpfile.body
+find_code $outfile foot > $tmpfile.foot
+cat $tmpfile.head $tmpfile.body $tmpfile.foot > $outfile
+echo ";end;" >> $outfile
+
+mtt_error_r $logfile

Index: mttroot/mtt/bin/trans/mtt_r2m
==================================================================
--- mttroot/mtt/bin/trans/mtt_r2m
+++ mttroot/mtt/bin/trans/mtt_r2m
@@ -16,10 +16,16 @@
 ###############################################################
 ## Version control history
 ###############################################################
 ## $Id$
 ## $Log$
+## Revision 1.30.4.1  2002/09/03 23:44:43  geraint
+## adding global optimisation (-optg).
+##
+## Revision 1.30  2002/03/26 11:59:54  geraint
+## Added dummy -optimise switch to prevent falling over for -cc generation.
+##
 ## Revision 1.29  2001/09/07 00:25:56  geraint
 ## Partial fix for insidious bug which eliminates lines of code when parameter
 ## names of the form (in* or off*) start continuation lines.
 ##
 ## Revision 1.28  2001/07/13 04:54:04  geraint
@@ -127,11 +133,11 @@
 	;;
     -parameters)
 	parameters='-parameters';
         par='mttpar'
 	;;
-    -optimise)
+    -optimise_local | -optimise_global )
 	;;
     *)
 	echo $1 is an unknown option
         exit;;
   esac

Index: mttroot/mtt/cc/sympar_txt2h.sh
==================================================================
--- mttroot/mtt/cc/sympar_txt2h.sh
+++ mttroot/mtt/cc/sympar_txt2h.sh
@@ -1,8 +1,14 @@
 #! /bin/sh
 # $Id$
 # $Log$
+# Revision 1.7.2.1  2002/09/04 10:44:59  geraint
+# Added option to specify number of tmp variables declared (-ntmpvar <N>).
+#
+# Revision 1.7  2002/07/10 11:53:32  geraint
+# Replaced shell loop with template expansion - perceptibly quicker generation of sympar.h.
+#
 # Revision 1.6  2002/05/19 13:01:22  geraint
 # Numerical solution of algebraic equations implemented for S-function target.
 #
 # Equation solving requires the Matlab Optimization Toolbox to be installed.
 #
@@ -581,14 +587,514 @@
 static double ${name}496 MTT_UNUSED;
 static double ${name}497 MTT_UNUSED;
 static double ${name}498 MTT_UNUSED;
 static double ${name}499 MTT_UNUSED;
 static double ${name}500 MTT_UNUSED;
+static double ${name}501 MTT_UNUSED;
+static double ${name}502 MTT_UNUSED;
+static double ${name}503 MTT_UNUSED;
+static double ${name}504 MTT_UNUSED;
+static double ${name}505 MTT_UNUSED;
+static double ${name}506 MTT_UNUSED;
+static double ${name}507 MTT_UNUSED;
+static double ${name}508 MTT_UNUSED;
+static double ${name}509 MTT_UNUSED;
+static double ${name}510 MTT_UNUSED;
+static double ${name}511 MTT_UNUSED;
+static double ${name}512 MTT_UNUSED;
+static double ${name}513 MTT_UNUSED;
+static double ${name}514 MTT_UNUSED;
+static double ${name}515 MTT_UNUSED;
+static double ${name}516 MTT_UNUSED;
+static double ${name}517 MTT_UNUSED;
+static double ${name}518 MTT_UNUSED;
+static double ${name}519 MTT_UNUSED;
+static double ${name}520 MTT_UNUSED;
+static double ${name}521 MTT_UNUSED;
+static double ${name}522 MTT_UNUSED;
+static double ${name}523 MTT_UNUSED;
+static double ${name}524 MTT_UNUSED;
+static double ${name}525 MTT_UNUSED;
+static double ${name}526 MTT_UNUSED;
+static double ${name}527 MTT_UNUSED;
+static double ${name}528 MTT_UNUSED;
+static double ${name}529 MTT_UNUSED;
+static double ${name}530 MTT_UNUSED;
+static double ${name}531 MTT_UNUSED;
+static double ${name}532 MTT_UNUSED;
+static double ${name}533 MTT_UNUSED;
+static double ${name}534 MTT_UNUSED;
+static double ${name}535 MTT_UNUSED;
+static double ${name}536 MTT_UNUSED;
+static double ${name}537 MTT_UNUSED;
+static double ${name}538 MTT_UNUSED;
+static double ${name}539 MTT_UNUSED;
+static double ${name}540 MTT_UNUSED;
+static double ${name}541 MTT_UNUSED;
+static double ${name}542 MTT_UNUSED;
+static double ${name}543 MTT_UNUSED;
+static double ${name}544 MTT_UNUSED;
+static double ${name}545 MTT_UNUSED;
+static double ${name}546 MTT_UNUSED;
+static double ${name}547 MTT_UNUSED;
+static double ${name}548 MTT_UNUSED;
+static double ${name}549 MTT_UNUSED;
+static double ${name}550 MTT_UNUSED;
+static double ${name}551 MTT_UNUSED;
+static double ${name}552 MTT_UNUSED;
+static double ${name}553 MTT_UNUSED;
+static double ${name}554 MTT_UNUSED;
+static double ${name}555 MTT_UNUSED;
+static double ${name}556 MTT_UNUSED;
+static double ${name}557 MTT_UNUSED;
+static double ${name}558 MTT_UNUSED;
+static double ${name}559 MTT_UNUSED;
+static double ${name}560 MTT_UNUSED;
+static double ${name}561 MTT_UNUSED;
+static double ${name}562 MTT_UNUSED;
+static double ${name}563 MTT_UNUSED;
+static double ${name}564 MTT_UNUSED;
+static double ${name}565 MTT_UNUSED;
+static double ${name}566 MTT_UNUSED;
+static double ${name}567 MTT_UNUSED;
+static double ${name}568 MTT_UNUSED;
+static double ${name}569 MTT_UNUSED;
+static double ${name}570 MTT_UNUSED;
+static double ${name}571 MTT_UNUSED;
+static double ${name}572 MTT_UNUSED;
+static double ${name}573 MTT_UNUSED;
+static double ${name}574 MTT_UNUSED;
+static double ${name}575 MTT_UNUSED;
+static double ${name}576 MTT_UNUSED;
+static double ${name}577 MTT_UNUSED;
+static double ${name}578 MTT_UNUSED;
+static double ${name}579 MTT_UNUSED;
+static double ${name}580 MTT_UNUSED;
+static double ${name}581 MTT_UNUSED;
+static double ${name}582 MTT_UNUSED;
+static double ${name}583 MTT_UNUSED;
+static double ${name}584 MTT_UNUSED;
+static double ${name}585 MTT_UNUSED;
+static double ${name}586 MTT_UNUSED;
+static double ${name}587 MTT_UNUSED;
+static double ${name}588 MTT_UNUSED;
+static double ${name}589 MTT_UNUSED;
+static double ${name}590 MTT_UNUSED;
+static double ${name}591 MTT_UNUSED;
+static double ${name}592 MTT_UNUSED;
+static double ${name}593 MTT_UNUSED;
+static double ${name}594 MTT_UNUSED;
+static double ${name}595 MTT_UNUSED;
+static double ${name}596 MTT_UNUSED;
+static double ${name}597 MTT_UNUSED;
+static double ${name}598 MTT_UNUSED;
+static double ${name}599 MTT_UNUSED;
+static double ${name}600 MTT_UNUSED;
+static double ${name}601 MTT_UNUSED;
+static double ${name}602 MTT_UNUSED;
+static double ${name}603 MTT_UNUSED;
+static double ${name}604 MTT_UNUSED;
+static double ${name}605 MTT_UNUSED;
+static double ${name}606 MTT_UNUSED;
+static double ${name}607 MTT_UNUSED;
+static double ${name}608 MTT_UNUSED;
+static double ${name}609 MTT_UNUSED;
+static double ${name}610 MTT_UNUSED;
+static double ${name}611 MTT_UNUSED;
+static double ${name}612 MTT_UNUSED;
+static double ${name}613 MTT_UNUSED;
+static double ${name}614 MTT_UNUSED;
+static double ${name}615 MTT_UNUSED;
+static double ${name}616 MTT_UNUSED;
+static double ${name}617 MTT_UNUSED;
+static double ${name}618 MTT_UNUSED;
+static double ${name}619 MTT_UNUSED;
+static double ${name}620 MTT_UNUSED;
+static double ${name}621 MTT_UNUSED;
+static double ${name}622 MTT_UNUSED;
+static double ${name}623 MTT_UNUSED;
+static double ${name}624 MTT_UNUSED;
+static double ${name}625 MTT_UNUSED;
+static double ${name}626 MTT_UNUSED;
+static double ${name}627 MTT_UNUSED;
+static double ${name}628 MTT_UNUSED;
+static double ${name}629 MTT_UNUSED;
+static double ${name}630 MTT_UNUSED;
+static double ${name}631 MTT_UNUSED;
+static double ${name}632 MTT_UNUSED;
+static double ${name}633 MTT_UNUSED;
+static double ${name}634 MTT_UNUSED;
+static double ${name}635 MTT_UNUSED;
+static double ${name}636 MTT_UNUSED;
+static double ${name}637 MTT_UNUSED;
+static double ${name}638 MTT_UNUSED;
+static double ${name}639 MTT_UNUSED;
+static double ${name}640 MTT_UNUSED;
+static double ${name}641 MTT_UNUSED;
+static double ${name}642 MTT_UNUSED;
+static double ${name}643 MTT_UNUSED;
+static double ${name}644 MTT_UNUSED;
+static double ${name}645 MTT_UNUSED;
+static double ${name}646 MTT_UNUSED;
+static double ${name}647 MTT_UNUSED;
+static double ${name}648 MTT_UNUSED;
+static double ${name}649 MTT_UNUSED;
+static double ${name}650 MTT_UNUSED;
+static double ${name}651 MTT_UNUSED;
+static double ${name}652 MTT_UNUSED;
+static double ${name}653 MTT_UNUSED;
+static double ${name}654 MTT_UNUSED;
+static double ${name}655 MTT_UNUSED;
+static double ${name}656 MTT_UNUSED;
+static double ${name}657 MTT_UNUSED;
+static double ${name}658 MTT_UNUSED;
+static double ${name}659 MTT_UNUSED;
+static double ${name}660 MTT_UNUSED;
+static double ${name}661 MTT_UNUSED;
+static double ${name}662 MTT_UNUSED;
+static double ${name}663 MTT_UNUSED;
+static double ${name}664 MTT_UNUSED;
+static double ${name}665 MTT_UNUSED;
+static double ${name}666 MTT_UNUSED;
+static double ${name}667 MTT_UNUSED;
+static double ${name}668 MTT_UNUSED;
+static double ${name}669 MTT_UNUSED;
+static double ${name}670 MTT_UNUSED;
+static double ${name}671 MTT_UNUSED;
+static double ${name}672 MTT_UNUSED;
+static double ${name}673 MTT_UNUSED;
+static double ${name}674 MTT_UNUSED;
+static double ${name}675 MTT_UNUSED;
+static double ${name}676 MTT_UNUSED;
+static double ${name}677 MTT_UNUSED;
+static double ${name}678 MTT_UNUSED;
+static double ${name}679 MTT_UNUSED;
+static double ${name}680 MTT_UNUSED;
+static double ${name}681 MTT_UNUSED;
+static double ${name}682 MTT_UNUSED;
+static double ${name}683 MTT_UNUSED;
+static double ${name}684 MTT_UNUSED;
+static double ${name}685 MTT_UNUSED;
+static double ${name}686 MTT_UNUSED;
+static double ${name}687 MTT_UNUSED;
+static double ${name}688 MTT_UNUSED;
+static double ${name}689 MTT_UNUSED;
+static double ${name}690 MTT_UNUSED;
+static double ${name}691 MTT_UNUSED;
+static double ${name}692 MTT_UNUSED;
+static double ${name}693 MTT_UNUSED;
+static double ${name}694 MTT_UNUSED;
+static double ${name}695 MTT_UNUSED;
+static double ${name}696 MTT_UNUSED;
+static double ${name}697 MTT_UNUSED;
+static double ${name}698 MTT_UNUSED;
+static double ${name}699 MTT_UNUSED;
+static double ${name}700 MTT_UNUSED;
+static double ${name}701 MTT_UNUSED;
+static double ${name}702 MTT_UNUSED;
+static double ${name}703 MTT_UNUSED;
+static double ${name}704 MTT_UNUSED;
+static double ${name}705 MTT_UNUSED;
+static double ${name}706 MTT_UNUSED;
+static double ${name}707 MTT_UNUSED;
+static double ${name}708 MTT_UNUSED;
+static double ${name}709 MTT_UNUSED;
+static double ${name}710 MTT_UNUSED;
+static double ${name}711 MTT_UNUSED;
+static double ${name}712 MTT_UNUSED;
+static double ${name}713 MTT_UNUSED;
+static double ${name}714 MTT_UNUSED;
+static double ${name}715 MTT_UNUSED;
+static double ${name}716 MTT_UNUSED;
+static double ${name}717 MTT_UNUSED;
+static double ${name}718 MTT_UNUSED;
+static double ${name}719 MTT_UNUSED;
+static double ${name}720 MTT_UNUSED;
+static double ${name}721 MTT_UNUSED;
+static double ${name}722 MTT_UNUSED;
+static double ${name}723 MTT_UNUSED;
+static double ${name}724 MTT_UNUSED;
+static double ${name}725 MTT_UNUSED;
+static double ${name}726 MTT_UNUSED;
+static double ${name}727 MTT_UNUSED;
+static double ${name}728 MTT_UNUSED;
+static double ${name}729 MTT_UNUSED;
+static double ${name}730 MTT_UNUSED;
+static double ${name}731 MTT_UNUSED;
+static double ${name}732 MTT_UNUSED;
+static double ${name}733 MTT_UNUSED;
+static double ${name}734 MTT_UNUSED;
+static double ${name}735 MTT_UNUSED;
+static double ${name}736 MTT_UNUSED;
+static double ${name}737 MTT_UNUSED;
+static double ${name}738 MTT_UNUSED;
+static double ${name}739 MTT_UNUSED;
+static double ${name}740 MTT_UNUSED;
+static double ${name}741 MTT_UNUSED;
+static double ${name}742 MTT_UNUSED;
+static double ${name}743 MTT_UNUSED;
+static double ${name}744 MTT_UNUSED;
+static double ${name}745 MTT_UNUSED;
+static double ${name}746 MTT_UNUSED;
+static double ${name}747 MTT_UNUSED;
+static double ${name}748 MTT_UNUSED;
+static double ${name}749 MTT_UNUSED;
+static double ${name}750 MTT_UNUSED;
+static double ${name}751 MTT_UNUSED;
+static double ${name}752 MTT_UNUSED;
+static double ${name}753 MTT_UNUSED;
+static double ${name}754 MTT_UNUSED;
+static double ${name}755 MTT_UNUSED;
+static double ${name}756 MTT_UNUSED;
+static double ${name}757 MTT_UNUSED;
+static double ${name}758 MTT_UNUSED;
+static double ${name}759 MTT_UNUSED;
+static double ${name}760 MTT_UNUSED;
+static double ${name}761 MTT_UNUSED;
+static double ${name}762 MTT_UNUSED;
+static double ${name}763 MTT_UNUSED;
+static double ${name}764 MTT_UNUSED;
+static double ${name}765 MTT_UNUSED;
+static double ${name}766 MTT_UNUSED;
+static double ${name}767 MTT_UNUSED;
+static double ${name}768 MTT_UNUSED;
+static double ${name}769 MTT_UNUSED;
+static double ${name}770 MTT_UNUSED;
+static double ${name}771 MTT_UNUSED;
+static double ${name}772 MTT_UNUSED;
+static double ${name}773 MTT_UNUSED;
+static double ${name}774 MTT_UNUSED;
+static double ${name}775 MTT_UNUSED;
+static double ${name}776 MTT_UNUSED;
+static double ${name}777 MTT_UNUSED;
+static double ${name}778 MTT_UNUSED;
+static double ${name}779 MTT_UNUSED;
+static double ${name}780 MTT_UNUSED;
+static double ${name}781 MTT_UNUSED;
+static double ${name}782 MTT_UNUSED;
+static double ${name}783 MTT_UNUSED;
+static double ${name}784 MTT_UNUSED;
+static double ${name}785 MTT_UNUSED;
+static double ${name}786 MTT_UNUSED;
+static double ${name}787 MTT_UNUSED;
+static double ${name}788 MTT_UNUSED;
+static double ${name}789 MTT_UNUSED;
+static double ${name}790 MTT_UNUSED;
+static double ${name}791 MTT_UNUSED;
+static double ${name}792 MTT_UNUSED;
+static double ${name}793 MTT_UNUSED;
+static double ${name}794 MTT_UNUSED;
+static double ${name}795 MTT_UNUSED;
+static double ${name}796 MTT_UNUSED;
+static double ${name}797 MTT_UNUSED;
+static double ${name}798 MTT_UNUSED;
+static double ${name}799 MTT_UNUSED;
+static double ${name}800 MTT_UNUSED;
+static double ${name}801 MTT_UNUSED;
+static double ${name}802 MTT_UNUSED;
+static double ${name}803 MTT_UNUSED;
+static double ${name}804 MTT_UNUSED;
+static double ${name}805 MTT_UNUSED;
+static double ${name}806 MTT_UNUSED;
+static double ${name}807 MTT_UNUSED;
+static double ${name}808 MTT_UNUSED;
+static double ${name}809 MTT_UNUSED;
+static double ${name}810 MTT_UNUSED;
+static double ${name}811 MTT_UNUSED;
+static double ${name}812 MTT_UNUSED;
+static double ${name}813 MTT_UNUSED;
+static double ${name}814 MTT_UNUSED;
+static double ${name}815 MTT_UNUSED;
+static double ${name}816 MTT_UNUSED;
+static double ${name}817 MTT_UNUSED;
+static double ${name}818 MTT_UNUSED;
+static double ${name}819 MTT_UNUSED;
+static double ${name}820 MTT_UNUSED;
+static double ${name}821 MTT_UNUSED;
+static double ${name}822 MTT_UNUSED;
+static double ${name}823 MTT_UNUSED;
+static double ${name}824 MTT_UNUSED;
+static double ${name}825 MTT_UNUSED;
+static double ${name}826 MTT_UNUSED;
+static double ${name}827 MTT_UNUSED;
+static double ${name}828 MTT_UNUSED;
+static double ${name}829 MTT_UNUSED;
+static double ${name}830 MTT_UNUSED;
+static double ${name}831 MTT_UNUSED;
+static double ${name}832 MTT_UNUSED;
+static double ${name}833 MTT_UNUSED;
+static double ${name}834 MTT_UNUSED;
+static double ${name}835 MTT_UNUSED;
+static double ${name}836 MTT_UNUSED;
+static double ${name}837 MTT_UNUSED;
+static double ${name}838 MTT_UNUSED;
+static double ${name}839 MTT_UNUSED;
+static double ${name}840 MTT_UNUSED;
+static double ${name}841 MTT_UNUSED;
+static double ${name}842 MTT_UNUSED;
+static double ${name}843 MTT_UNUSED;
+static double ${name}844 MTT_UNUSED;
+static double ${name}845 MTT_UNUSED;
+static double ${name}846 MTT_UNUSED;
+static double ${name}847 MTT_UNUSED;
+static double ${name}848 MTT_UNUSED;
+static double ${name}849 MTT_UNUSED;
+static double ${name}850 MTT_UNUSED;
+static double ${name}851 MTT_UNUSED;
+static double ${name}852 MTT_UNUSED;
+static double ${name}853 MTT_UNUSED;
+static double ${name}854 MTT_UNUSED;
+static double ${name}855 MTT_UNUSED;
+static double ${name}856 MTT_UNUSED;
+static double ${name}857 MTT_UNUSED;
+static double ${name}858 MTT_UNUSED;
+static double ${name}859 MTT_UNUSED;
+static double ${name}860 MTT_UNUSED;
+static double ${name}861 MTT_UNUSED;
+static double ${name}862 MTT_UNUSED;
+static double ${name}863 MTT_UNUSED;
+static double ${name}864 MTT_UNUSED;
+static double ${name}865 MTT_UNUSED;
+static double ${name}866 MTT_UNUSED;
+static double ${name}867 MTT_UNUSED;
+static double ${name}868 MTT_UNUSED;
+static double ${name}869 MTT_UNUSED;
+static double ${name}870 MTT_UNUSED;
+static double ${name}871 MTT_UNUSED;
+static double ${name}872 MTT_UNUSED;
+static double ${name}873 MTT_UNUSED;
+static double ${name}874 MTT_UNUSED;
+static double ${name}875 MTT_UNUSED;
+static double ${name}876 MTT_UNUSED;
+static double ${name}877 MTT_UNUSED;
+static double ${name}878 MTT_UNUSED;
+static double ${name}879 MTT_UNUSED;
+static double ${name}880 MTT_UNUSED;
+static double ${name}881 MTT_UNUSED;
+static double ${name}882 MTT_UNUSED;
+static double ${name}883 MTT_UNUSED;
+static double ${name}884 MTT_UNUSED;
+static double ${name}885 MTT_UNUSED;
+static double ${name}886 MTT_UNUSED;
+static double ${name}887 MTT_UNUSED;
+static double ${name}888 MTT_UNUSED;
+static double ${name}889 MTT_UNUSED;
+static double ${name}890 MTT_UNUSED;
+static double ${name}891 MTT_UNUSED;
+static double ${name}892 MTT_UNUSED;
+static double ${name}893 MTT_UNUSED;
+static double ${name}894 MTT_UNUSED;
+static double ${name}895 MTT_UNUSED;
+static double ${name}896 MTT_UNUSED;
+static double ${name}897 MTT_UNUSED;
+static double ${name}898 MTT_UNUSED;
+static double ${name}899 MTT_UNUSED;
+static double ${name}900 MTT_UNUSED;
+static double ${name}901 MTT_UNUSED;
+static double ${name}902 MTT_UNUSED;
+static double ${name}903 MTT_UNUSED;
+static double ${name}904 MTT_UNUSED;
+static double ${name}905 MTT_UNUSED;
+static double ${name}906 MTT_UNUSED;
+static double ${name}907 MTT_UNUSED;
+static double ${name}908 MTT_UNUSED;
+static double ${name}909 MTT_UNUSED;
+static double ${name}910 MTT_UNUSED;
+static double ${name}911 MTT_UNUSED;
+static double ${name}912 MTT_UNUSED;
+static double ${name}913 MTT_UNUSED;
+static double ${name}914 MTT_UNUSED;
+static double ${name}915 MTT_UNUSED;
+static double ${name}916 MTT_UNUSED;
+static double ${name}917 MTT_UNUSED;
+static double ${name}918 MTT_UNUSED;
+static double ${name}919 MTT_UNUSED;
+static double ${name}920 MTT_UNUSED;
+static double ${name}921 MTT_UNUSED;
+static double ${name}922 MTT_UNUSED;
+static double ${name}923 MTT_UNUSED;
+static double ${name}924 MTT_UNUSED;
+static double ${name}925 MTT_UNUSED;
+static double ${name}926 MTT_UNUSED;
+static double ${name}927 MTT_UNUSED;
+static double ${name}928 MTT_UNUSED;
+static double ${name}929 MTT_UNUSED;
+static double ${name}930 MTT_UNUSED;
+static double ${name}931 MTT_UNUSED;
+static double ${name}932 MTT_UNUSED;
+static double ${name}933 MTT_UNUSED;
+static double ${name}934 MTT_UNUSED;
+static double ${name}935 MTT_UNUSED;
+static double ${name}936 MTT_UNUSED;
+static double ${name}937 MTT_UNUSED;
+static double ${name}938 MTT_UNUSED;
+static double ${name}939 MTT_UNUSED;
+static double ${name}940 MTT_UNUSED;
+static double ${name}941 MTT_UNUSED;
+static double ${name}942 MTT_UNUSED;
+static double ${name}943 MTT_UNUSED;
+static double ${name}944 MTT_UNUSED;
+static double ${name}945 MTT_UNUSED;
+static double ${name}946 MTT_UNUSED;
+static double ${name}947 MTT_UNUSED;
+static double ${name}948 MTT_UNUSED;
+static double ${name}949 MTT_UNUSED;
+static double ${name}950 MTT_UNUSED;
+static double ${name}951 MTT_UNUSED;
+static double ${name}952 MTT_UNUSED;
+static double ${name}953 MTT_UNUSED;
+static double ${name}954 MTT_UNUSED;
+static double ${name}955 MTT_UNUSED;
+static double ${name}956 MTT_UNUSED;
+static double ${name}957 MTT_UNUSED;
+static double ${name}958 MTT_UNUSED;
+static double ${name}959 MTT_UNUSED;
+static double ${name}960 MTT_UNUSED;
+static double ${name}961 MTT_UNUSED;
+static double ${name}962 MTT_UNUSED;
+static double ${name}963 MTT_UNUSED;
+static double ${name}964 MTT_UNUSED;
+static double ${name}965 MTT_UNUSED;
+static double ${name}966 MTT_UNUSED;
+static double ${name}967 MTT_UNUSED;
+static double ${name}968 MTT_UNUSED;
+static double ${name}969 MTT_UNUSED;
+static double ${name}970 MTT_UNUSED;
+static double ${name}971 MTT_UNUSED;
+static double ${name}972 MTT_UNUSED;
+static double ${name}973 MTT_UNUSED;
+static double ${name}974 MTT_UNUSED;
+static double ${name}975 MTT_UNUSED;
+static double ${name}976 MTT_UNUSED;
+static double ${name}977 MTT_UNUSED;
+static double ${name}978 MTT_UNUSED;
+static double ${name}979 MTT_UNUSED;
+static double ${name}980 MTT_UNUSED;
+static double ${name}981 MTT_UNUSED;
+static double ${name}982 MTT_UNUSED;
+static double ${name}983 MTT_UNUSED;
+static double ${name}984 MTT_UNUSED;
+static double ${name}985 MTT_UNUSED;
+static double ${name}986 MTT_UNUSED;
+static double ${name}987 MTT_UNUSED;
+static double ${name}988 MTT_UNUSED;
+static double ${name}989 MTT_UNUSED;
+static double ${name}990 MTT_UNUSED;
+static double ${name}991 MTT_UNUSED;
+static double ${name}992 MTT_UNUSED;
+static double ${name}993 MTT_UNUSED;
+static double ${name}994 MTT_UNUSED;
+static double ${name}995 MTT_UNUSED;
+static double ${name}996 MTT_UNUSED;
+static double ${name}997 MTT_UNUSED;
+static double ${name}998 MTT_UNUSED;
+static double ${name}999 MTT_UNUSED;
+static double ${name}1000 MTT_UNUSED;
 EOF
 
-    if [ ${NUM_OF_TMP_VAR} -gt 500 ]; then
-	i=501
+    if [ ${NUM_OF_TMP_VAR} -gt 1000 ]; then
+	i=1001
 	while [ ${i} -le ${NUM_OF_TMP_VAR} ]
 	do
 	  echo "static double ${name}${i} MTT_UNUSED;"
 	  i=`expr ${i} + 1`
 	done