Annotation of OpenXM_contrib/PHC/Ada/Math_Lib/Matrices/ts_intmat.adb, Revision 1.1
1.1 ! maekawa 1: with text_io,integer_io; use text_io,integer_io;
! 2: with Standard_Integer_Vectors;
! 3: with Standard_Integer_Vectors_io;
! 4: with Standard_Integer_Matrices;
! 5: with Standard_Integer_Matrices_io;
! 6: with Standard_Integer_VecMats;
! 7: with Standard_Integer_VecMats_io;
! 8: with Standard_Integer_Linear_Solvers;
! 9: with Standard_Random_Matrices; use Standard_Random_Matrices;
! 10: with Multprec_Random_Matrices; use Multprec_Random_Matrices;
! 11: with Multprec_Integer_Vectors;
! 12: with Multprec_Integer_Vectors_io;
! 13: with Multprec_Integer_Matrices;
! 14: with Multprec_Integer_Matrices_io;
! 15: with Multprec_Integer_Linear_Solvers;
! 16:
! 17: procedure ts_intmat is
! 18:
! 19: -- DESCRIPTION :
! 20: -- Tests the matrix packages of standard and multi-precision integers.
! 21:
! 22: procedure Test_Standard_io is
! 23:
! 24: use Standard_Integer_Matrices,Standard_Integer_Matrices_io;
! 25:
! 26: n,m : natural;
! 27:
! 28: begin
! 29: put("Give the number of rows : "); get(n);
! 30: put("Give the number of columns : "); get(m);
! 31: declare
! 32: mat : Matrix(1..n,1..m);
! 33: begin
! 34: put("Give "); put(n,1); put("x"); put(m,1);
! 35: put_line(" integer matrix : "); get(mat);
! 36: put_line("Your matrix : "); put(mat);
! 37: end;
! 38: end Test_Standard_io;
! 39:
! 40: procedure Test_Standard_VecMat_io is
! 41:
! 42: use Standard_Integer_Matrices,Standard_Integer_Matrices_io;
! 43: use Standard_Integer_VecMats,Standard_Integer_VecMats_io;
! 44:
! 45: n,n1,n2 : natural;
! 46: lv : Link_to_VecMat;
! 47:
! 48: begin
! 49: put("Give the number of matrices : "); get(n);
! 50: put("Give #rows : "); get(n1);
! 51: put("Give #columns : "); get(n2);
! 52: put("Give "); put(n,1); put(" "); put(n1,1); put("-by-"); put(n2,1);
! 53: put_line(" integer matrices : ");
! 54: get(n,n1,n2,lv);
! 55: put_line("The vector of matrices :"); put(lv);
! 56: end Test_Standard_VecMat_io;
! 57:
! 58: procedure Random_Test_Standard_Solver
! 59: ( n,m : in natural; low,upp : in integer ) is
! 60:
! 61: use Standard_Integer_Vectors,Standard_Integer_Vectors_io;
! 62: use Standard_Integer_Matrices;
! 63: use Standard_Integer_Linear_Solvers;
! 64:
! 65: mat : Matrix(1..n,1..m) := Random_Matrix(n,m,low,upp);
! 66: wrk : Matrix(1..n,1..m) := mat;
! 67: sol : Vector(1..m);
! 68: res : Vector(1..n);
! 69:
! 70: begin
! 71: Upper_Triangulate(wrk);
! 72: Solve0(wrk,sol);
! 73: res := mat*sol;
! 74: put("The residual : "); put(res);
! 75: put(" of solution : "); put(sol); new_line;
! 76: end Random_Test_Standard_Solver;
! 77:
! 78: procedure Random_Test_Multprec_Solver ( n,m,sz : in natural ) is
! 79:
! 80: use Multprec_Integer_Vectors,Multprec_Integer_Vectors_io;
! 81: use Multprec_Integer_Matrices,Multprec_Integer_Matrices_io;
! 82: use Multprec_Integer_Linear_Solvers;
! 83:
! 84: mat : Matrix(1..n,1..m) := Random_Matrix(n,m,sz);
! 85: wrk : Matrix(1..n,1..m);
! 86: sol : Vector(1..m);
! 87: res : Vector(1..n);
! 88:
! 89: begin
! 90: Copy(mat,wrk);
! 91: Upper_Triangulate(wrk);
! 92: Solve0(wrk,sol);
! 93: res := mat*sol;
! 94: put("The residual : "); put(res);
! 95: put(" of solution : "); put(sol); new_line;
! 96: end Random_Test_Multprec_Solver;
! 97:
! 98: procedure Random_Test_Standard_Solvers is
! 99:
! 100: n,m,nb : natural;
! 101: low,upp : integer;
! 102:
! 103: begin
! 104: put("Give number of tests : "); get(nb);
! 105: put("Give number of rows : "); get(n);
! 106: put("Give number of columns : "); get(m);
! 107: put("Give lower bound for numbers : "); get(low);
! 108: put("Give upper bound for numbers : "); get(upp);
! 109: for i in 1..nb loop
! 110: Random_Test_Standard_Solver(n,m,low,upp);
! 111: end loop;
! 112: end Random_Test_Standard_Solvers;
! 113:
! 114: procedure Random_Test_Multprec_Solvers is
! 115:
! 116: n,m,nb,sz : natural;
! 117:
! 118: begin
! 119: put("Give number of tests : "); get(nb);
! 120: put("Give number of rows : "); get(n);
! 121: put("Give number of columns : "); get(m);
! 122: put("Give the size of the numbers : "); get(sz);
! 123: for i in 1..nb loop
! 124: Random_Test_Multprec_Solver(n,m,sz);
! 125: end loop;
! 126: end Random_Test_Multprec_Solvers;
! 127:
! 128: procedure Interactive_Test_Standard_Solvers is
! 129:
! 130: use Standard_Integer_Vectors,Standard_Integer_Vectors_io;
! 131: use Standard_Integer_Matrices,Standard_Integer_Matrices_io;
! 132: use Standard_Integer_Linear_Solvers;
! 133:
! 134: n,m : natural;
! 135:
! 136: begin
! 137: put("Give the number of rows : "); get(n);
! 138: put("Give the number of columns : "); get(m);
! 139: declare
! 140: sol : Vector(1..m) := (1..m => 0);
! 141: res : Vector(1..n);
! 142: mat,wrk : Matrix(1..n,1..m);
! 143: l : Matrix(1..n,1..n);
! 144: begin
! 145: put("Give "); put(n,1); put("x"); put(m,1);
! 146: put_line(" integer matrix : "); get(mat);
! 147: put_line("Your matrix : "); put(mat);
! 148: wrk := mat;
! 149: Upper_Triangulate(l,wrk);
! 150: put_line("The matrix in upper triangular form : "); put(wrk);
! 151: put_line("The transformation matrix T : "); put(l);
! 152: put_line("product of T and original matrix : "); put(l*mat);
! 153: Solve0(wrk,sol);
! 154: put_line("The solution of the homogeneous system : ");
! 155: put(sol); new_line;
! 156: res := mat*sol;
! 157: put("The residual : "); put(res); new_line;
! 158: end;
! 159: end Interactive_Test_Standard_Solvers;
! 160:
! 161: procedure Test_Multprec_io is
! 162:
! 163: use Multprec_Integer_Matrices,Multprec_Integer_Matrices_io;
! 164:
! 165: n,m : natural;
! 166:
! 167: begin
! 168: put("Give the number of rows : "); get(n);
! 169: put("Give the number of columns : "); get(m);
! 170: declare
! 171: mat : Matrix(1..n,1..m);
! 172: begin
! 173: put("Give "); put(n,1); put("x"); put(m,1);
! 174: put_line(" integer matrix : "); get(mat);
! 175: put_line("Your matrix : "); put(mat); new_line;
! 176: end;
! 177: end Test_Multprec_io;
! 178:
! 179: procedure Interactive_Test_Multprec_Solvers is
! 180:
! 181: use Multprec_Integer_Vectors,Multprec_Integer_Vectors_io;
! 182: use Multprec_Integer_Matrices,Multprec_Integer_Matrices_io;
! 183: use Multprec_Integer_Linear_Solvers;
! 184:
! 185: n,m : natural;
! 186:
! 187: begin
! 188: put("Give the number of rows : "); get(n);
! 189: put("Give the number of columns : "); get(m);
! 190: declare
! 191: sol : Vector(1..m);
! 192: res : Vector(1..n);
! 193: mat,wrk : Matrix(1..n,1..m);
! 194: l : Matrix(1..n,1..n);
! 195: begin
! 196: put("Give "); put(n,1); put("x"); put(m,1);
! 197: put_line(" integer matrix : "); get(mat);
! 198: put_line("Your matrix : "); put(mat);
! 199: Copy(mat,wrk);
! 200: Upper_Triangulate(l,wrk);
! 201: put_line("The matrix in upper triangular form : "); put(wrk);
! 202: put_line("The transformation matrix T : "); put(l);
! 203: put_line("product of T and original matrix : "); put(l*mat);
! 204: Solve0(wrk,sol);
! 205: put_line("The solution of the homogeneous system : ");
! 206: put(sol); new_line;
! 207: res := mat*sol;
! 208: put("The residual : "); put(res); new_line;
! 209: end;
! 210: end Interactive_Test_Multprec_Solvers;
! 211:
! 212: procedure Test_Multprec_Matrix_Vector_Product is
! 213:
! 214: use Multprec_Integer_Vectors,Multprec_Integer_Vectors_io;
! 215: use Multprec_Integer_Matrices,Multprec_Integer_Matrices_io;
! 216:
! 217: n,m : natural;
! 218:
! 219: begin
! 220: put("Give the number of rows : "); get(n);
! 221: put("Give the number of columns : "); get(m);
! 222: declare
! 223: mat : Matrix(1..n,1..m);
! 224: vec : Vector(1..m);
! 225: prod : Vector(1..n);
! 226: begin
! 227: put("Give "); put(n,1); put("x"); put(m,1);
! 228: put_line(" integer matrix : "); get(mat);
! 229: put_line("Your matrix : "); put(mat);
! 230: put("Give an " ); put(m,1); put("-vector : "); get(vec);
! 231: put("Your vector : "); put(vec); new_line;
! 232: prod := mat*vec;
! 233: put_line("The matrix-vector product : "); put(prod); new_line;
! 234: end;
! 235: end Test_Multprec_Matrix_Vector_Product;
! 236:
! 237: procedure Main is
! 238:
! 239: ans : character;
! 240:
! 241: begin
! 242: new_line;
! 243: put_line("Interactive testing of matrices of integer numbers");
! 244: new_line;
! 245: loop
! 246: put_line("Choose one of the following : ");
! 247: put_line(" 0. exit this program.");
! 248: put_line(" 1. io of matrices of standard numbers.");
! 249: put_line(" 2. io of vectors of matrices of standard numbers.");
! 250: put_line(" 3. solve given linear systems of standard numbers.");
! 251: put_line(" 4. solve random linear systems of standard numbers.");
! 252: put_line(" 5. io of matrices of multi-precision numbers.");
! 253: put_line(" 6. solve given linear systems of multi-precision numbers.");
! 254: put_line(" 7. solve random linear systems of multi-precision numbers.");
! 255: put_line(" 8. test multi-precision matrix-vector product.");
! 256: put("Make your choice (0,1,2,3,4,5,6,7 or 8) : "); get(ans);
! 257: exit when (ans = '0');
! 258: case ans is
! 259: when '1' => Test_Standard_io;
! 260: when '2' => Test_Standard_VecMat_io;
! 261: when '3' => Interactive_Test_Standard_Solvers;
! 262: when '4' => Random_Test_Standard_Solvers;
! 263: when '5' => Test_Multprec_io;
! 264: when '6' => Interactive_Test_Multprec_Solvers;
! 265: when '7' => Random_Test_Multprec_Solvers;
! 266: when '8' => Test_Multprec_Matrix_Vector_Product;
! 267: when others => null;
! 268: end case;
! 269: end loop;
! 270: end Main;
! 271:
! 272: begin
! 273: Main;
! 274: end ts_intmat;
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>