00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00014 bool mdp_matrix_test() {
00015 mdp_matrix a(3,3), b, c;
00016
00017 b=a;
00018 a=a+b;
00019
00020 assert(max(a*inv(a)-1)<mdp_precision);
00021 printf("inversion ...test passed\n");
00022
00023 assert(max(2*a-mdp_complex(0,-1)*mdp_complex(0,2)*a)<mdp_precision);
00024 printf("operator* ...test passed\n");
00025
00026 assert(max(a+3*a-4*a)<mdp_precision);
00027 assert(max(a+mdp_complex(3,2)*a-mdp_complex(4,2)*a)<mdp_precision);
00028 printf("operator+ and operator- ...test passed\n");
00029
00030 assert(max(exp(mdp_complex(0,1)*a)-cos(a)-mdp_complex(0,1)*sin(a))<mdp_precision);
00031 printf("exp, sin and cos ...test passed\n");
00032
00033 assert(max(a-log(exp(a)))<mdp_precision);
00034 printf("exp, log ...test passed\n");
00035
00036 b=a;
00037 b*=mdp_complex(0,2);
00038 b/=mdp_complex(0,2);
00039 b+=mdp_complex(2,4);
00040 b-=mdp_complex(2,4);
00041 assert(max(a-b)<mdp_precision);
00042 printf("*=, /=, +=, -= (mdp_complex) ...test passed\n");
00043
00044 b=a;
00045 b*=2;
00046 b/=2;
00047 b+=3;
00048 b-=3;
00049 assert(max(a-b)<mdp_precision);
00050 printf("*=, /=, +=, -= (Real) ...test passed\n");
00051
00052 b=a;
00053 b*=a;
00054 b/=a;
00055 b+=a;
00056 b-=a;
00057 assert(max(a-b)<10.0*mdp_precision);
00058 printf("*=, /=, +=, -= (mdp_matrix) ...test passed\n");
00059
00060 return 1;
00061 }