diff options
author | Piotr Dziwinski <piotrdz@gmail.com> | 2013-02-03 20:03:36 +0100 |
---|---|---|
committer | Piotr Dziwinski <piotrdz@gmail.com> | 2013-02-03 20:03:36 +0100 |
commit | 209c6412ae149cc7c503fd7da384f344a830423c (patch) | |
tree | 5baeaeb8dee2208b46bf80a118dfe59eb65f9389 /test/unit/math/gendata.m | |
parent | 3f41f97fc47fca22634dc858c3ecdb39d0d27e32 (diff) | |
download | colobot-209c6412ae149cc7c503fd7da384f344a830423c.tar.gz colobot-209c6412ae149cc7c503fd7da384f344a830423c.tar.bz2 colobot-209c6412ae149cc7c503fd7da384f344a830423c.zip |
Refactoring in tests infrastructure
* all tests are now in /test/ subdirectory
* unit tests concatenated to one executable (TODO: ui, common)
* preparation for test environments (OpenGL and others)
* removed old TestCBot
Diffstat (limited to 'test/unit/math/gendata.m')
-rw-r--r-- | test/unit/math/gendata.m | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/test/unit/math/gendata.m b/test/unit/math/gendata.m new file mode 100644 index 0000000..5c13491 --- /dev/null +++ b/test/unit/math/gendata.m @@ -0,0 +1,86 @@ +% Script in Octave for generating test data + +1; + +% Returns the minor matrix +function m = minor(A, r, c) + + m = A; + m(r,:) = []; + m(:,c) = []; + +end; + +% Returns the cofactor matrix +function m = cofactors(A) + + m = zeros(rows(A), columns(A)); + + for r = [1 : rows(A)] + for c = [1 : columns(A)] + m(r, c) = det(minor(A, r, c)); + if (mod(r + c, 2) == 1) + m(r, c) = -m(r, c); + end; + end; + end; + +end; + +% Prints the matrix as C++ code +function printout(A, name) + + printf('const float %s[16] = \n', name); + printf('{\n'); + + for c = [1 : columns(A)] + for r = [1 : rows(A)] + printf(' %f', A(r,c)); + if (! ( (r == 4) && (c == 4) ) ) + printf(','); + end; + printf('\n'); + end; + end; + + printf('};\n'); + +end; + +printf('// Cofactors\n'); +A = randn(4,4); +printout(A, 'COF_MAT'); +printf('\n'); +printout(cofactors(A), 'COF_RESULT'); +printf('\n'); + +printf('\n'); + +printf('// Det\n'); +A = randn(4,4); +printout(A, 'DET_MAT'); +printf('\n'); +printf('const float DET_RESULT = %f;', det(A)); +printf('\n'); + +printf('\n'); + +printf('// Invert\n'); +A = randn(4,4); +printout(A, 'INV_MAT'); +printf('\n'); +printout(inv(A), 'COF_RESULT'); +printf('\n'); + +printf('\n'); + +printf('// Multiplication\n'); +A = randn(4,4); +printout(A, 'MUL_A'); +printf('\n'); +B = randn(4,4); +printout(B, 'MUL_B'); +printf('\n'); +C = A * B; +printout(C, 'MUL_RESULT'); +printf('\n'); |