/* tsmgen.c CCMATH mathematics library source code.
*
* Copyright (C) 2000 Daniel A. Atkinson All rights reserved.
* This code may be redistributed under the terms of the GNU library
* public license (LGPL). ( See the lgpl.license file for details.)
* ------------------------------------------------------------------------
*/
/*
Test: smgen ortho
Uses: matprt
Input parameter: n -> size of matrix is n by n
*/
#include "ccmath.h"
unsigned int seed=123456789;
void main(int na,char **av)
{ double *sm,*om,*p;
int i,j,n; double *e,s;
if(na!=2){ printf("para: size\n"); exit(1);}
n=atoi(*++av);
sm=(double *)calloc(n*n,sizeof(double));
om=(double *)calloc(n*n,sizeof(double));
e=(double *)calloc(n,sizeof(double));
/* initialize real eigenvalues */
for(i=0,s=1.; i<n ;++i,s+=.5) e[i]=s;
setunfl(seed);
/* generate an orthogonal matrix */
ortho(om,n);
printf(" orthogonal matrix\n");
matprt(om,n,n," %8.3f");
/* generate a symmetric matrix with the specified eigenvalues */
smgen(sm,e,om,n);
printf(" symmetric matrix:\n");
matprt(sm,n,n," %8.3f");
}
/* Test output
orthogonal matrix
-0.127 -0.041 0.064 -0.101 -0.984
-0.385 0.108 0.144 -0.893 0.146
0.690 0.509 -0.392 -0.316 -0.104
-0.595 0.442 -0.639 0.206 -0.004
0.072 -0.729 -0.643 -0.222 0.002
symmetric matrix:
2.956 -0.145 0.216 -0.073 0.003
-0.145 2.266 0.364 -0.345 0.166
0.216 0.364 1.454 0.266 0.171
-0.073 -0.345 0.266 1.570 0.181
0.003 0.166 0.171 0.181 1.753
*/
syntax highlighted by Code2HTML, v. 0.9.1