Go to the documentation of this file.00001
00002
00003
00007
00008
00009
00010
00011 #include "include.h"
00012
00013 #include "newmatap.h"
00014
00015
00016 #include "tmt.h"
00017
00018 #ifdef use_namespace
00019 using namespace NEWMAT;
00020 #endif
00021
00022
00023 void WillNotConverge()
00024 {
00025 Matrix A(10,10);
00026 Throw(ConvergenceException(A));
00027 }
00028
00029 void ReSizeMatrix(Matrix& A)
00030
00031 { A.ReSize(4,5); }
00032
00033 void trymati()
00034 {
00035 #ifndef DisableExceptions
00036 Tracer et("Eighteenth test of Matrix package");
00037 Matrix RUStillThere(10,20); RUStillThere = 1553;
00038 Tracer::PrintTrace();
00039
00040 ColumnVector checks(23); checks = 1.0; checks(1) = 0.0;
00041
00042 Try { WillNotConverge(); }
00043 Catch(ConvergenceException) { checks(2) = 0; }
00044 CatchAll { checks(1) = 1; }
00045
00046
00047 Try { Matrix M(10,10); SymmetricMatrix S = M; }
00048 Catch(ConvergenceException) { checks(1) = 1; }
00049 Catch(InternalException) { checks(1) = 1; }
00050 Catch(ProgramException) { checks(3) = 0; }
00051 CatchAll { checks(1) = 1; }
00052
00053
00054 Try { Matrix M(10,10); M(10,11) = 2.0; }
00055 Catch(ConvergenceException) { checks(1) = 1; }
00056 Catch(InternalException) { checks(1) = 1; }
00057 Catch(IndexException) { checks(4) = 0; }
00058 CatchAll { checks(1) = 1; }
00059
00060 Try { Matrix M(10,10); M = 0.0; M = M.i(); }
00061 Catch(ConvergenceException) { checks(1) = 1; }
00062 Catch(InternalException) { checks(1) = 1; }
00063 Catch(ProgramException) { checks(1) = 1; }
00064 Catch(SingularException) { checks(5) = 0; }
00065 Catch(Bad_alloc) { checks(1) = 1; }
00066 CatchAndThrow;
00067
00068 Try { ColumnVector A(30), B(50); A = 5; B = 3; FFT(A,B,A,B); }
00069 Catch(ConvergenceException) { checks(1) = 1; }
00070 Catch(InternalException) { checks(1) = 1; }
00071 Catch(ProgramException) { checks(6) = 0; }
00072 CatchAll { checks(1) = 1; }
00073
00074 Try
00075 {
00076 ColumnVector A(30); A = 5; Matrix At = A.t();
00077 DiagonalMatrix D;
00078 SVD(At,D);
00079 }
00080 Catch(ConvergenceException) { checks(1) = 1; }
00081 Catch(InternalException) { checks(1) = 1; }
00082 Catch(Logic_error) { checks(6) = 0; }
00083 Catch(Bad_alloc) { checks(1) = 1; }
00084 CatchAndThrow;
00085
00086 Try { BandMatrix X(10,3,4); X(1,10) = 4.0; }
00087 Catch(ConvergenceException) { checks(1) = 1; }
00088 Catch(InternalException) { checks(1) = 1; }
00089 Catch(IndexException) { checks(7) = 0; }
00090 CatchAll { checks(1) = 1; }
00091
00092 Try
00093 {
00094 SymmetricMatrix S(10); S = 5;
00095 LowerTriangularMatrix L = Cholesky(S);
00096 }
00097 Catch(ConvergenceException) { checks(1) = 1; }
00098 Catch(InternalException) { checks(1) = 1; }
00099 Catch(ProgramException) { checks(1) = 1; }
00100 Catch(NPDException) { checks(8) = 0; }
00101 Catch(Bad_alloc) { checks(1) = 1; }
00102 CatchAndThrow;
00103
00104 Try { BandMatrix M(10,3,5); M = 0.0; Matrix XM = M.i(); }
00105 Catch(ConvergenceException) { checks(1) = 1; }
00106 Catch(InternalException) { checks(1) = 1; }
00107 Catch(ProgramException) { checks(1) = 1; }
00108 Catch(SingularException) { checks(9) = 0; }
00109 Catch(Bad_alloc) { checks(1) = 1; }
00110 CatchAndThrow;
00111
00112 Try { ColumnVector X(10); ColumnVector Y; X = 5; X = X - Y; }
00113 Catch(ConvergenceException) { checks(1) = 1; }
00114 Catch(InternalException) { checks(1) = 1; }
00115 Catch(IncompatibleDimensionsException) { checks(10) = 0; }
00116 Catch(Bad_alloc) { checks(1) = 1; }
00117 CatchAndThrow;
00118
00119 Try
00120 {
00121 UpperTriangularMatrix U(3); RowVector RV(3); RV = 10;
00122 U.Row(2) = RV;
00123 }
00124 Catch(ConvergenceException) { checks(1) = 1; }
00125 Catch(InternalException) { checks(1) = 1; }
00126 Catch(ProgramException) { checks(11) = 0; }
00127 Catch(Bad_alloc) { checks(1) = 1; }
00128 CatchAndThrow;
00129
00130 Try { DiagonalMatrix D(3); D << 12 << 13 << 14 << 15; }
00131 Catch(ConvergenceException) { checks(1) = 1; }
00132 Catch(InternalException) { checks(1) = 1; }
00133 Catch(ProgramException) { checks(12) = 0; }
00134 CatchAndThrow;
00135
00136 Try { ColumnVector D(3); D << 12 << 13; D << 1 << 2 << 3; }
00137 Catch(ConvergenceException) { checks(1) = 1; }
00138 Catch(InternalException) { checks(1) = 1; }
00139 Catch(ProgramException) { checks(13) = 0; }
00140 CatchAndThrow;
00141
00142
00143 Try { { ColumnVector D(3); D << 12 << 13; } }
00144 Catch(ConvergenceException) { checks(1) = 1; }
00145 Catch(InternalException) { checks(1) = 1; }
00146 Catch(ProgramException) { checks(14) = 0; }
00147 CatchAndThrow;
00148
00149 Try { ColumnVector CV; ReSizeMatrix(CV); }
00150 Catch(ConvergenceException) { checks(1) = 1; }
00151 Catch(InternalException) { checks(1) = 1; }
00152 Catch(VectorException) { checks(15) = 0; }
00153 CatchAndThrow;
00154
00155 Try { RowVector RV(20); ReSizeMatrix(RV); }
00156 Catch(ConvergenceException) { checks(1) = 1; }
00157 Catch(InternalException) { checks(1) = 1; }
00158 Catch(VectorException) { checks(16) = 0; }
00159 CatchAndThrow;
00160
00161 Try
00162 {
00163 UpperTriangularMatrix U(10); U = 5;
00164 DiagonalMatrix D(10); D = 2;
00165 D += U;
00166 }
00167 Catch(ConvergenceException) { checks(1) = 1; }
00168 Catch(InternalException) { checks(1) = 1; }
00169 Catch(ProgramException) { checks(17) = 0; }
00170 CatchAndThrow;
00171
00172 Try { Matrix A(2,3), B(2,3); if (A < B) A = B; }
00173 Catch(ConvergenceException) { checks(1) = 1; }
00174 Catch(InternalException) { checks(1) = 1; }
00175 Catch(NotDefinedException) { checks(18) = 0; }
00176 CatchAndThrow;
00177
00178 Try { SymmetricBandMatrix A(3,1); A = 1; A = A.Reverse(); }
00179 Catch(ConvergenceException) { checks(1) = 1; }
00180 Catch(InternalException) { checks(1) = 1; }
00181 Catch(NotDefinedException) { checks(19) = 0; }
00182 CatchAndThrow;
00183
00184 Try
00185 {
00186 Matrix A(5,5); A = 1.0;
00187 UpperTriangularMatrix B(10);
00188 B.SubMatrix(3,7,3,7) = A;
00189 }
00190 Catch(ProgramException) { checks(20) = 0; }
00191 CatchAndThrow;
00192
00193 Try { { RowVector D(1); D << 12 << 13; } }
00194 Catch(InternalException) { checks(1) = 1; }
00195 Catch(ProgramException) { checks(21) = 0; }
00196 CatchAndThrow;
00197
00198 Try { { RowVector D(0); D << 12; } }
00199 Catch(InternalException) { checks(1) = 1; }
00200 Catch(ProgramException) { checks(22) = 0; }
00201 CatchAndThrow;
00202
00203 Try { Matrix M(10,10); Matrix XM(3,3); M = 0.0; XM = M.i(); }
00204 Catch(SingularException) { checks(23) = 0; }
00205 CatchAll { checks(1) = 1; }
00206
00207 Print(checks);
00208 Matrix RUStillThere1(10,20); RUStillThere1 = 1553;
00209 RUStillThere = RUStillThere - RUStillThere1;
00210 Print(RUStillThere);
00211 #endif
00212
00213 }
00214
00215
00217