* {*********************************************************************

File: var/matrix/writemat.cm

  This file shows how functions for writing matrix variables to the output file
and standard output work.

Author: Igor Gresovnik, May 1998

************************************************************************}

setfile{outfile writemat.ct}


*{ We make a matrix variable which can hold 2x3x2 matrices and then make all
matrices in its value table so that they have 2 rows and 4 columns: }

newmatrix{mat[2 3 2]}
={i:1}
while{(i<=2)
[
  ={j:1}
  while{(j<=3)
  [
    ={k:1}
    while{(k<=2)
    [
      setmatrix{mat[$i,$j,$k] 2 4}
      ={k:k+1}
    ]}
    ={j:j+1}
  ]}
  ={i:i+1}
]}
setmatrixcomponents{mat 100*varindex[1]+10*varindex[2]+varindex[3]+
                        0.1*varcomponent[1]+0.01*varcomponent[2]}

write{\n"************  FUNCTIONS printmatrixvar and fprintmatrixvar ************"\n\n}
fwrite{\n"************  FUNCTIONS printmatrixvar and fprintmatrixvar *  ************"\n\n}

*{ Functions printmatrixvar and fprintmatrixvar vrite all data for a matrix
variable and its contents: }

printmatrixvar{mat}
fprintmatrixvar{mat}


write{\n"************  FUNCTIONS printmatrix and fprintmatrix ************"\n\n}
fwrite{\n"************  FUNCTIONS printmatrix and fprintmatrix *  ************"\n\n}



*{ Functions printmatrix and fprintmatrix can vrite one matrix or a subset
of matrices on the matrix value table at once: }

write{"Writing one matrix from variable mat (mat[1 3 2]):"\n}
fwrite{"Writing one matrix from variable mat (mat[1 3 2]):"\n}

printmatrix{mat[1 3 2]}
fprintmatrix{mat[1 3 2]}

write{"Writing a subset of matrices from variable mat (mat[2]):"\n}
fwrite{"Writing a subset of matrices from variable mat (mat[2]):"\n}

printmatrix{mat[2]}
fprintmatrix{mat[2]}

write{"Writing a subset of matrices from variable mat (mat[2]):"\n}
fwrite{"Writing one matrix from variable mat (mat[2]):"\n}

printmatrix{mat}
fprintmatrix{mat}