00001
00002
00003
00004
00005
00006
00007
00008
00009 #include "common_defs.h"
00010 #include "Matrix.h"
00011
00012 int main()
00013 {
00014 cout << boolalpha;
00015
00016 MSG(Constructors);
00017
00018 Matrix mat0;
00019 Matrix mat1(5, 5, 1.5);
00020 OUT(mat0);
00021 OUT(mat1);
00022 OUT(mat1 == mat0);
00023
00024 MSG(Assignments);
00025
00026 EXEC(mat0 = mat1);
00027 OUT(mat0);
00028 OUT(mat1 == mat0);
00029 OUT(mat1 += mat1);
00030 OUT(mat1 -= mat1);
00031 OUT(mat0 *= mat0);
00032
00033 MSG (Arithmetic operations);
00034
00035 OUT(mat0 + mat0);
00036 OUT(mat0 - mat0);
00037 OUT(mat0 * mat0);
00038
00039 try
00040 {
00041 Matrix mat(10, 10);
00042 OUT(mat0 + mat);
00043 }
00044 catch (Matrix::Bad_Dimensions)
00045 {
00046 cerr << "*** Bad dimensions" << endl;
00047 }
00048
00049 try
00050 {
00051 Matrix mat(5, 10, 3.0);
00052 OUT(mat0 * mat);
00053 OUT(mat0 * mat.transpose());
00054 }
00055 catch (Matrix::Bad_Dimensions)
00056 {
00057 cerr << "*** Bad dimensions" << endl;
00058 }
00059
00060 MSG (Subscript and transpose);
00061
00062 Matrix mat2(3, 4);
00063 for (int i = 0; i < 3; ++i)
00064 for (int j = 0; j < 4; ++j)
00065 mat2[i][j] = i;
00066 OUT(mat2);
00067 OUT(mat2.transpose());
00068 OUT(~mat2);
00069 EXEC(mat2(0, 0) = 2.75);
00070 OUT(mat2(0, 0));
00071
00072 MSG(Conversion between Matrices and MVectors);
00073
00074 OUT(mat2.line(1));
00075 OUT(mat2.transpose().column(1));
00076
00077 MVector mv(5, 2.5);
00078 Matrix mat3 = mv;
00079 OUT(mat3);
00080 OUT(mat3.transpose());
00081
00082 EXEC(mv = mat3);
00083 OUT(mv);
00084 OUT(static_cast<MVector>(mv));
00085
00086 return 0;
00087 }