/* tchouse.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: chouse
Uses: cmprt matprt
Input file: hm4.bin
*/
#include "ccmath.h"
char fmt[]="(%7.3f,%7.3f)";
void main(int na,char **av)
{ Cpx *a; double *d,*ud; int n;
FILE *fb;
if(na!=2){ printf("para: input_file\n"); exit(1);}
fb=fopen(*++av,"rb");
fread((void *)&n,sizeof(int),1,fb);
a=(Cpx *)calloc(n*n,sizeof(Cpx));
d=(double *)calloc(n+n,sizeof(double)); ud=d+n;
fread((void *)a,sizeof(Cpx),n*n,fb);
printf(" mat a-in:\n"); cmprt(a,n,n,fmt);
/* Householder rotation to tridiagonal form */
chouse(a,d,ud,n);
printf(" diagonals:\n"); matprt(d,1,n," %8.4f");
printf(" above-diag:\n"); matprt(ud,1,n," %8.4f");
printf(" mat a-out:\n"); cmprt(a,n,n,fmt);
}
/* Test output
mat a-in:
( 2.232, -0.000)( -0.073, -0.075)( -0.321, 0.030)( 0.379, 0.031)
( -0.073, 0.075)( 1.673, 0.000)( -0.102, -0.006)( 0.266, -0.178)
( -0.321, -0.030)( -0.102, 0.006)( 1.284, 0.000)( 0.143, 0.048)
( 0.379, -0.031)( 0.266, 0.178)( 0.143, -0.048)( 1.812, 0.000)
diagonals:
2.2318 1.3401 1.8998 1.5283
above-diag:
0.5093 0.3350 0.1322 0.0000
mat a-out:
( 2.232, -0.000)( -0.073, -0.075)( -0.321, 0.030)( 0.379, 0.031)
( -0.073, 0.075)( 1.673, 0.000)( -0.102, -0.006)( 0.266, -0.178)
( -0.321, -0.030)( -0.102, 0.006)( 1.284, 0.000)( 0.143, 0.048)
( 0.379, -0.031)( 0.266, 0.178)( 0.143, -0.048)( 1.812, 0.000)
*/
syntax highlighted by Code2HTML, v. 0.9.1