//class for testing JacobiCyclic (calculating eigenvalues and eigenvectors using Jacobi rotation)
class Test1 {

  public static void main(String[] args) throws InterruptedException {
 
    double [][] A = {
        {417.7, 437.5, 725.7},
        {437.5, 546.0, 830.0},
        {725.7, 830.0, 1814.3} };
    int n = 3;
    double [] evalues = new double[n];
    double  [][] evectors = new double[n][n];
    double sum = 0;

    System.out.printf("Matrix: \n");
    for ( int i = 0; i < n; i++ ) {
      for ( int j = 0; j < n; j++ )
	System.out.printf("%3.1f, ", A[i][j] ); 
      System.out.printf("\n");
    }

    JacobiCyclic jc = new JacobiCyclic();
    jc.eigenVs ( n, A, evalues, evectors );
    System.out.printf("Eigenvalues: \n");
    for ( int i = 0; i < n; i++ )
      System.out.printf("%4.2f, ", evalues[i] );
    System.out.printf("\nEigenvectors: \n");
    for ( int i = 0; i < n; i++ ) {
      for ( int j = 0; j < n; j++ ) 
        System.out.printf("%6.3f, ", evectors[i][j] );
      System.out.printf("\n");
    }
    System.out.printf("------------------------------\n");
    for ( int i = 0; i < n; i++ ) {
      sum = 0;
      for ( int  j = 0; j < n; j++ ) {
        //if ( evectors[0][j] != 0 )
        //        //printf("%6.3f, ", evectors[i][j] /evectors[0][j] );
        sum += evectors[j][i] * evectors[j][i];
       }
       System.out.printf("%6.3f\n", sum );
    }
  }
}

