diff options
author | torset | 2009-02-16 15:32:57 +0000 |
---|---|---|
committer | torset | 2009-02-16 15:32:57 +0000 |
commit | 44675bc998c786d1304968fcf9c51dfc12aa0455 (patch) | |
tree | b51696d03d52e47ce1651388a449915de857b51e /src/matrixOperations/powm/testDoublePowm.c | |
parent | d092358c2165ef2bfe3bf1c8fae8487b6d694683 (diff) | |
download | scilab2c-44675bc998c786d1304968fcf9c51dfc12aa0455.tar.gz scilab2c-44675bc998c786d1304968fcf9c51dfc12aa0455.tar.bz2 scilab2c-44675bc998c786d1304968fcf9c51dfc12aa0455.zip |
Update Matrix Pow
Diffstat (limited to 'src/matrixOperations/powm/testDoublePowm.c')
-rw-r--r-- | src/matrixOperations/powm/testDoublePowm.c | 30 |
1 files changed, 21 insertions, 9 deletions
diff --git a/src/matrixOperations/powm/testDoublePowm.c b/src/matrixOperations/powm/testDoublePowm.c index f985145a..6fdbec10 100644 --- a/src/matrixOperations/powm/testDoublePowm.c +++ b/src/matrixOperations/powm/testDoublePowm.c @@ -12,6 +12,8 @@ #include "matrixPow.h" #include <stdio.h> +#include <assert.h> +#include <math.h> static void dpowmaTest(void){ @@ -25,26 +27,36 @@ static void dpowmaTest(void){ } -/* -FIXME +/* FIXME : assert à10^-12 */ static void zpowmaTest(void){ - double inR[4]={1,5,4,2}; - double inI[4]={2,1,-1,3}; - doubleComplex *in,out[4]; + double inR[9]={1,2,3,4,5,6,7,8,9}; + double inI[9]={1,2,3,4,5,6,7,8,9}; + double resultR[9]={- 4.7115011361608578610571,- 2.0782061409646632732517,0.5550888542315330909105, + - 2.3202132490900626571317,- 2.4412168031527574640904,- 2.5622203572154611528333, + 0.0710746379807356554181,- 2.80422746534086453352,- 5.6795295686624518438634}; + double resultI[9]={- 12.188702380084603049681,- 4.0827818504168584823333,4.0231386792508754268738, + - 3.0919079733956360556135,- 2.5964710348850239540752,- 2.1010340963744131848046, + 6.0048864332933264975622,- 1.1101602193531934226201,- 8.2252068719997026846613}; + doubleComplex *in,out[9]; int i; - in=DoubleComplexMatrix(inR,inI,4); + in=DoubleComplexMatrix(inR,inI,9); + + zpowma(in, 3, DoubleComplex(1,1), out); - zpowma(in, 2, DoubleComplex(2,0), out); + for (i=0;i<9;i++) printf("out[%d] = %f+%f*i\n",i,zreals(out[i]),zimags(out[i])); - for (i=0;i<4;i++) printf("out[%d] = %f+%f*i\n",i,zreals(out[i]),zimags(out[i])); + for (i=0;i<9;i++){ + assert( (fabs(zreals(out[i])-resultR[i])/ fabs(zreals(out[i])) ) <1e-12); + assert( (fabs(zimags(out[i])-resultI[i])/ fabs(zimags(out[i])) ) <1e-13); + } } -*/ int main(void){ dpowmaTest(); + zpowmaTest(); return 0; } |