001 package numal.lowprecision.test; 002 003 import junit.framework.TestCase; 004 import java.text.DecimalFormat; 005 import numal.lowprecision.LinearAlgebra; 006 007 public class TestQrisngvaldec extends Object { 008 009 /** Test the method {@link LinearAlgebra#qrisngvaldec}. 010 * The output of this method should be : 011 {@code 012 Number of singular values not found : 0 013 014 Infinity norm : 2.28333E0 015 Max neglected subdiagonal element : 2.11719E-5 016 Number of iterations : 3 017 Numerical rank : 5 018 019 Singular values : 020 1.59212E0 021 2.24496E-1 022 1.36102E-2 023 1.25733E-4 024 1.41703e-5 025 026 Matrix U, first 3 columns : 027 -7.54979E-1 6.10111E-1 -2.33268E-1 028 -4.39093E-1 -2.26021E-1 7.05899E-1 029 -3.17031E-1 -3.73070E-1 2.11269E-1 030 -2.49995E-1 -3.95578E-1 -1.47776E-1 031 -2.07050E-1 -3.84833E-1 -3.68054E-1 032 -1.76997E-1 -3.64582E-1 -4.95335E-1 033 034 Last 2 columns : 035 9.87458E-1 -2.57541E-1 036 -6.88740E-1 2.67620E-1 037 -3.89435E-1 -5.02005E-1 038 8.52031E-1 -1.34877E-1 039 -2.25331E-1 7.40444E-1 040 -2.67328E-1 -3.30543E-1 041 } 042 */ 043 public static void main(String args[]) { 044 float a[][] = new float[7][6]; 045 for (int i = 1; i <= 6; i++) 046 for (int j = 1; j <= 5; j++) a[i][j] = 1f / (i + j - 1); 047 048 float val[] = new float[6]; 049 float v[][] = new float[6][6]; 050 051 // 4 input parameters in even index entries, 4 output values are returned in odd 052 float em[] = {1e-6f, 0f, 1e-5f, 0f, 25f, 0f, 1e-5f, 0f}; 053 054 int notFound = LinearAlgebra.qrisngvaldec(a, 6, 5, val, v, em); 055 DecimalFormat fiveDigit = new DecimalFormat("0.00000E0"); 056 System.out.println("===============Test LinearAlgebra.qrisngvaldec=============="); 057 System.out.println("Number of singular values not found : " + notFound + 058 "\n\nInfinity norm : " + fiveDigit.format(em[1]) + 059 "\nMax neglected subdiagonal element : " + fiveDigit.format(em[3]) + 060 "\nNumber of iterations : " + (int)em[5] + 061 "\nNumerical rank : " + (int)em[7] + 062 "\n\nSingular values :"); 063 064 for (int i = 1; i <= 5; i++) 065 System.out.println(" " + fiveDigit.format(val[i])); 066 067 System.out.println("\nMatrix U, first 3 columns :"); 068 for (int i = 1; i <= 6; i++) 069 System.out.println(" " + fiveDigit.format(a[i][1]) + "\t" + 070 fiveDigit.format(a[i][2]) + "\t" + 071 fiveDigit.format(a[i][3])); 072 073 System.out.println("Last 2 columns :"); 074 for (int i = 1; i <= 6; i++) 075 System.out.println(" " + fiveDigit.format(a[i][4]) + "\t" + fiveDigit.format(a[i][5])); 076 } 077 }