diff options
Diffstat (limited to '2.3-1/src/c/statisticsFunctions/stdevf/testDoubleStdevf.c')
-rw-r--r-- | 2.3-1/src/c/statisticsFunctions/stdevf/testDoubleStdevf.c | 509 |
1 files changed, 509 insertions, 0 deletions
diff --git a/2.3-1/src/c/statisticsFunctions/stdevf/testDoubleStdevf.c b/2.3-1/src/c/statisticsFunctions/stdevf/testDoubleStdevf.c new file mode 100644 index 00000000..3b0b61ae --- /dev/null +++ b/2.3-1/src/c/statisticsFunctions/stdevf/testDoubleStdevf.c @@ -0,0 +1,509 @@ +/* + * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab + * Copyright (C) 2008-2008 - INRIA - Allan SIMON + * + * This file must be used under the terms of the CeCILL. + * This source file is licensed as described in the file COPYING, which + * you should have received as part of this distribution. The terms + * are also available at + * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt + * + */ + +#include <assert.h> +#include <stdio.h> +#include <math.h> +#include "stdevf.h" + + +/* #define LOCAL_DEBUG */ + +#define ERROR(x) printf("diff = %e\n", x) + +static int dstdevfsTest(void) { + double value1 = 3.0; + double value2 = 1.123456789f; + double coef1 = 56.0 ; + double coef2 = 2.0 ; + + printf("\n>>>> stdevf Double Scalar Test\n"); + printf("result : %e " ,dstdevfs(value1,coef1)) ; + printf("result : %e " ,dstdevfs(value2,coef)) ; + assert( ( dstdevfs(value1,coef1) ) == 0.0 ); + assert( ( dstdevfs(value2,coef2) ) == 0.0 ); + + value1 = 3.0; + value2 = 1.123456789f; + coef1 = 56.0 ; + coef2 = 2.0 ; + + + return 0; +} + +static int dstdevfaTest(void) { + double table1[3] = {3.0, 6.0, 9.0}; + double coef1[3] = {10.0, 2.0, 6.0}; + + double table2[5] = {3.186784563, + 4.186784563, + 5.186784563, + 6.186784563, + 7.186784563}; + + double coef2[5] = {3.0, + 4.0, + 5.0, + 6.0, + 7.0}; + + double table3[10] = {3.0, 6.0, 9.0,10.0, 5.0, + 6.0,18.0, 7.0,14.0, 2.0}; + double coef3 [10] = {3.0, 8.0,14.0,13.0, 2.0, + 5.0, 8.0, 2.0, 6.0, 8.0}; + + double result_2_5 = dstdevfa(table3,2, 5, coef3); + + printf("\n>>>> stdevf Double Array Test\n"); + printf("\nresult : %e " ,dstdevfa(table1,1, 3, coef1)) ; + printf("\nresult : %e " ,dstdevfa(table2,1, 5, coef2)) ; + printf("\nresult : %e " ,result_2_5) ; + + assert(dstdevfa(table1,1, 3, coef1) == 0.0); + assert(dstdevfa(table1,1, 3, coef1) == 0.0); + assert( ( fabs(result_2_5 ) - ( 4.6440201 ) ) / fabs ( result_2_5 ) < 1e-6 ); + return 0; +} + + +static int dcolumnstdevfaTest(void) { + + double table1[9] = {1.0, 4.0, 7.0, 2.0 , 5.0, 8.0, 3.0, 6.0, 9.0}; + double coef1[9] = {10.0, 1.0, 5.0,11.0 , 2.0, 6.0,12.0, 3.0, 7.0}; + + double columnStdevfedTable1_3_3[3] = {0}; + double columnStdevfedTable1_1_9[1] = {0}; + + + printf("\n>>>> Column stdevf Double Array Test\n"); + +/**/ + + dcolumnstdevfa(table1, 3, 3, coef1 ,columnStdevfedTable1_3_3); + + printf("\nresult1 : %e " ,columnStdevfedTable1_3_3[0]) ; + printf("\nresult2 : %e " ,columnStdevfedTable1_3_3[1]) ; + printf("\nresult3 : %e " ,columnStdevfedTable1_3_3[2]) ; + + assert( fabs(columnStdevfedTable1_3_3[0] - 0.8268689) / fabs ( columnStdevfedTable1_3_3[0] ) < 1e-6 ); + assert( fabs(columnStdevfedTable1_3_3[1] - 0.8164966) / fabs ( columnStdevfedTable1_3_3[1] ) < 1e-6 ); + assert( fabs(columnStdevfedTable1_3_3[2] - 0.8323524 ) / fabs ( columnStdevfedTable1_3_3[2] ) < 1e-6 ); + + + + dcolumnstdevfa(table1, 1, 9, coef1 ,columnStdevfedTable1_1_9); + printf("\nresult_1_9: %e\n " ,columnStdevfedTable1_1_9[0]) ; + assert( columnStdevfedTable1_1_9[0] == 0.0); + + + return 0; +} + + +static int drowstdevfaTest(void) { + int i = 0; + double table1[9] = {1.0, 4.0, 7.0, 2.0 , 5.0, 8.0, 3.0, 6.0, 9.0}; + double coef1[9] = {10.0, 1.0, 5.0,11.0 , 2.0, 6.0,12.0, 3.0, 7.0}; + + double table2[10] = {1.0, 4.0, 7.0, 2.0 , 5.0, 8.0, 3.0, 6.0, 9.0, 10.0}; + double coef2[10] = {10.0, 1.0, 5.0,11.0 , 2.0, 6.0,12.0, 3.0, 7.0, 19.0}; + + + + double rowStdevfedTable1_3_3[3] = {0}; + double rowStdevfedTable1_1_9[9] = {0}; + double rowStdevfedTable2_2_5[5] = {0}; + printf("\n>>>> Row Mean Double Array Test\n"); + + + drowstdevfa(table1, 3, 3, coef1 , rowStdevfedTable1_3_3); + for ( i = 0 ; i < 3 ; ++i) { + printf("rowStdevfedTable1_3_3[%d] = %e\n", i, rowStdevfedTable1_3_3[i]); + } + assert( fabs(rowStdevfedTable1_3_3[0] - 2.8394542 ) / fabs ( rowStdevfedTable1_3_3[0] ) < 1e-6 ); + assert( fabs(rowStdevfedTable1_3_3[1] - 2.8003759) / fabs ( rowStdevfedTable1_3_3[1] ) < 1e-6 ); + assert( fabs(rowStdevfedTable1_3_3[2] - 2.7669196) / fabs ( rowStdevfedTable1_3_3[2] ) < 1e-6 ); + +/**/ + drowstdevfa(table1, 1, 9, coef1, rowStdevfedTable1_1_9); + for ( i = 0 ; i < 9 ; ++i) { + printf("rowStdevfedTable1_1_9[%d] = %e\n", i, rowStdevfedTable1_1_9[i]); + assert(rowStdevfedTable1_1_9[i] == 0.0); + } + + +/**/ + /**/ + drowstdevfa(table2 , 2 , 5 , coef2 , rowStdevfedTable2_2_5); + for (i = 0 ; i < 5 ; ++i ) + { + printf("rowStdevfedTable_2_5[%d] = %e \n", i, rowStdevfedTable2_2_5[i]); + } + assert( fabs(rowStdevfedTable2_2_5[0] - 0.9045340 ) / fabs ( rowStdevfedTable2_2_5[0] ) < 1e-6 ); + assert( fabs(rowStdevfedTable2_2_5[1] - 2.3935678 ) / fabs ( rowStdevfedTable2_2_5[1] ) < 1e-6 ); + assert( fabs(rowStdevfedTable2_2_5[2] - 1.3887301 ) / fabs ( rowStdevfedTable2_2_5[2] ) < 1e-6 ); + assert( fabs(rowStdevfedTable2_2_5[3] - 1.2421180 ) / fabs ( rowStdevfedTable2_2_5[3] ) < 1e-6 ); + assert( fabs(rowStdevfedTable2_2_5[4] - 0.4523443 ) / fabs ( rowStdevfedTable2_2_5[4] ) < 1e-6 ); + return 0; +} + + +static int zstdevfsTest(void) { + doubleComplex value1; + doubleComplex coef1 ; + doubleComplex value2; + doubleComplex coef2 ; + + value1 = DoubleComplex(3.0, 3.0); + coef1 = DoubleComplex(3.0, 0.0); + value2 = DoubleComplex(1.123456789f, 1.123456789f); + coef2 = DoubleComplex(9.0, 0.0); + + printf("\n>>>> Mean Double Complex Scalar Test\n"); + assert( zreals(zstdevfs(value1,coef1)) == 0.0 ); + assert( zimags(zstdevfs(value1,coef1)) == 0.0 ); + assert( zreals(zstdevfs(value2,coef2)) == 0.0 ); + assert( zimags(zstdevfs(value2,coef2)) == 0.0 ); + + return 0; +} + + + +static int zstdevfaTest(void) { + + double tableR1[9] = {1.0, 4.0, 7.0, 2.0 , 5.0, 8.0, 3.0, 6.0, 9.0}; + double tableI1[9] = {1.0, 2.0, 3.0, 4.0 , 5.0, 6.0, 7.0, 8.0, 9.0}; + double coefR1[9] = {10.0, 1.0, 5.0,11.0 , 2.0, 6.0,12.0, 3.0, 7.0}; + double coefI1[9] = { 0.0, 0.0, 0.0, 0.0 , 0.0, 0.0, 0.0, 0.0, 0.0}; + + + double tableR2[9] = {1.0, 4.0, 7.0, 2.0 , 5.0, 8.0, 3.0, 6.0, 9.0}; + double tableI2[9] = {0.0, 0.0, 0.0, 0.0 , 0.0, 0.0, 0.0, 0.0, 0.0}; + double coefR2[9] = { 0.0, 0.0, 0.0, 0.0 , 0.0, 0.0, 0.0, 0.0, 0.0}; + double coefI2[9] = {10.0, 1.0, 5.0,11.0 , 2.0, 6.0,12.0, 3.0, 7.0}; + + + double tableR3[10] = {3.0, 6.0, 9.0,10.0, 5.0, + 6.0,18.0, 7.0,14.0, 2.0}; + double tableI3[10] = {3.0,12.0,25.0, 1.0, 2.0, + 5.0,18.0, 7.0, 4.0, 1.0}; + + + double coefR3 [10] = {3.0, 8.0,14.0,13.0, 2.0, + 5.0, 8.0, 2.0, 6.0, 8.0}; + double coefI3 [10] = {0.0, 0.0, 0.0, 0.0, 0.0, + 0.0, 0.0, 0.0, 0.0, 0.0}; + + + doubleComplex* table1 = DoubleComplexMatrix (tableR1, tableI1, 9); + doubleComplex* coef1 = DoubleComplexMatrix (coefR1, coefI1, 9); + + doubleComplex* table2 = DoubleComplexMatrix (tableR2, tableI2, 9); + doubleComplex* coef2 = DoubleComplexMatrix (coefR2, coefI2, 9); + + doubleComplex* table3 = DoubleComplexMatrix (tableR3, tableI3, 10); + doubleComplex* coef3 = DoubleComplexMatrix (coefR3, coefI3, 10); + + doubleComplex result =DoubleComplex(0.0 , 0.0); + + printf("\n>>>> Mean Double Complex Array Test\n"); + result = zstdevfa(table1,1, 9, coef1); + printf("\nresult_1_9 : %e \t+ %e i " ,zreals(result) ,zimags(result)) ; + assert( zreals(result) == 0.0 ); + assert( zimags(result) == 0.0 ); + + result = zstdevfa(table2,1, 9, coef2); + printf("\nresult2_1_9 : %e \t+ %e i " ,zreals(result) ,zimags(result)) ; + assert( zreals(result) == 0.0 ); + assert( zimags(result) == 0.0 ); + + + result = zstdevfa(table3,2, 5, coef3); + printf("\nresult_2_5 : %e \t+ %e i " ,zreals(result) ,zimags(result)) ; + assert( fabs(zreals(result) - 1.7749350 ) / fabs ( zimags(result) ) < 1e-6 ); + assert( fabs(zimags(result) - 8.3811287) / fabs ( zreals(result) ) < 1e-6 ); + + return 0; +} + + +static int zrowstdevfaTest(void) { + + int i = 0 ; + + double tableR1[9] = {1.0, 4.0, 7.0, 2.0 , 5.0, 8.0, 3.0, 6.0, 9.0}; + double tableI1[9] = {1.0, 2.0, 3.0, 4.0 , 5.0, 6.0, 7.0, 8.0, 9.0}; + double coefR1[9] = {10.0, 1.0, 5.0,11.0 , 2.0, 6.0,12.0, 3.0, 7.0}; + double coefI1[9] = { 0.0, 0.0, 0.0, 0.0 , 0.0, 0.0, 0.0, 0.0, 0.0}; + + double tableR2[10] = {1.0, 4.0, 7.0, 2.0 , 5.0, 8.0, 3.0, 6.0, 9.0, 10.0}; + double tableI2[10] = {1.0, 2.0, 3.0, 4.0 , 5.0, 6.0, 7.0, 8.0, 9.0, 15.0}; + double coefR2[10] = {10.0, 1.0, 5.0,11.0 , 2.0, 6.0,12.0, 3.0, 7.0, 19.0}; + double coefI2[10] = { 0.0, 0.0, 0.0, 0.0 , 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; + + doubleComplex* table1 = DoubleComplexMatrix (tableR1, tableI1, 9); + doubleComplex* coef1 = DoubleComplexMatrix (coefR1, coefI1, 9); + + doubleComplex* table2 = DoubleComplexMatrix (tableR2, tableI2, 10); + doubleComplex* coef2 = DoubleComplexMatrix (coefR2, coefI2, 10); + + doubleComplex rowStdevfedTable1_3_3[3]; + doubleComplex rowStdevfedTable2_2_5[5]; + /*test when the matrix is only imaginary*/ + double tableR3[10] = { 0.0, 0.0, 0.0, 0.0 , 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; + double tableI3[10] = {1.0, 2.0, 3.0, 4.0 , 5.0, 6.0, 7.0, 8.0, 9.0, 15.0}; + double coefR3[10] = {10.0, 1.0, 5.0,11.0 , 2.0, 6.0,12.0, 3.0, 7.0, 19.0}; + double coefI3[10] = { 0.0, 0.0, 0.0, 0.0 , 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; + + + doubleComplex* table3 = DoubleComplexMatrix (tableR3, tableI3, 10); + doubleComplex* coef3 = DoubleComplexMatrix (coefR3, coefI3, 10); + + doubleComplex rowStdevfedTable3_2_5[5]; + /**/ + /*test when the matrix is only real and the coef matrix is only imaginary*/ + double tableR4[10] = {1.0, 4.0, 7.0, 2.0 , 5.0, 8.0, 3.0, 6.0, 9.0, 10.0}; + double tableI4[10] = { 0.0, 0.0, 0.0, 0.0 , 0.0, 0.0, 0.0, 0.0, 0.0 , 0.0}; + double coefR4[10] = { 0.0, 0.0, 0.0, 0.0 , 0.0, 0.0, 0.0, 0.0, 0.0 , 0.0}; + double coefI4[10] ={10.0, 1.0, 5.0,11.0 , 2.0, 6.0,12.0, 3.0, 7.0, 19.0}; + + + + + doubleComplex* table4 = DoubleComplexMatrix (tableR4, tableI4, 10); + doubleComplex* coef4 = DoubleComplexMatrix (coefR4, coefI4, 10); + + doubleComplex rowStdevfedTable4_2_5[5]; + /**/ + + + printf("\n>>>> Row stdevf Double Complex Array Test\n"); + + rowStdevfedTable1_3_3[0] = DoubleComplex(0.0, 0.0); + rowStdevfedTable1_3_3[1] = DoubleComplex(0.0, 0.0); + rowStdevfedTable1_3_3[2] = DoubleComplex(0.0, 0.0); + + rowStdevfedTable2_2_5[0] = DoubleComplex(0.0, 0.0); + rowStdevfedTable2_2_5[1] = DoubleComplex(0.0, 0.0); + rowStdevfedTable2_2_5[2] = DoubleComplex(0.0, 0.0); + rowStdevfedTable2_2_5[3] = DoubleComplex(0.0, 0.0); + rowStdevfedTable2_2_5[4] = DoubleComplex(0.0, 0.0); + + rowStdevfedTable3_2_5[0] = DoubleComplex(0.0, 0.0); + rowStdevfedTable3_2_5[1] = DoubleComplex(0.0, 0.0); + rowStdevfedTable3_2_5[2] = DoubleComplex(0.0, 0.0); + rowStdevfedTable3_2_5[3] = DoubleComplex(0.0, 0.0); + rowStdevfedTable3_2_5[4] = DoubleComplex(0.0, 0.0); + + + rowStdevfedTable4_2_5[0] = DoubleComplex(0.0, 0.0); + rowStdevfedTable4_2_5[1] = DoubleComplex(0.0, 0.0); + rowStdevfedTable4_2_5[2] = DoubleComplex(0.0, 0.0); + rowStdevfedTable4_2_5[3] = DoubleComplex(0.0, 0.0); + rowStdevfedTable4_2_5[4] = DoubleComplex(0.0, 0.0); + + + zrowstdevfa(table1 , 3 , 3 , coef1 , rowStdevfedTable1_3_3); + + for (i = 0 ; i < 3 ; ++i ) + { + printf("rowStdevfedTable_3_3[%d] = %e + %ei\n", i, zreals(rowStdevfedTable1_3_3[i]), zimags(rowStdevfedTable1_3_3[i])); + } + assert( fabs(zreals(rowStdevfedTable1_3_3[0]) - 2.8394542 ) / fabs ( zreals(rowStdevfedTable1_3_3[0]) ) < 1e-6 ); + assert( fabs(zimags(rowStdevfedTable1_3_3[0]) - 0.9464847) / fabs ( zimags(rowStdevfedTable1_3_3[0]) ) < 1e-6 ); + + assert( fabs(zreals(rowStdevfedTable1_3_3[1]) - 2.8003759) / fabs ( zreals(rowStdevfedTable1_3_3[1]) ) < 1e-6 ); + assert( fabs(zimags(rowStdevfedTable1_3_3[1]) - 0.9334586) / fabs ( zimags(rowStdevfedTable1_3_3[1]) ) < 1e-6 ); + + assert( fabs(zreals(rowStdevfedTable1_3_3[2]) - 2.7669196) / fabs ( zreals(rowStdevfedTable1_3_3[2]) ) < 1e-6 ); + assert( fabs(zimags(rowStdevfedTable1_3_3[2]) - 0.9223065) / fabs ( zimags(rowStdevfedTable1_3_3[2]) ) < 1e-6 ); +/**/ + zrowstdevfa(table2 , 2 , 5 , coef2 , rowStdevfedTable2_2_5); + for (i = 0 ; i < 5 ; ++i ) + { + printf("rowStdevfedTable_2_5[%d] = %e + %ei\n", i, zreals(rowStdevfedTable2_2_5[i]), zimags(rowStdevfedTable2_2_5[i])); + } + assert( fabs(zreals(rowStdevfedTable2_2_5[0]) - 0.9045340 ) / fabs ( zreals(rowStdevfedTable2_2_5[0]) ) < 1e-6 ); + assert( fabs(zimags(rowStdevfedTable2_2_5[0]) - 0.3015113 ) / fabs ( zimags(rowStdevfedTable2_2_5[0]) ) < 1e-6 ); + + assert( fabs(zreals(rowStdevfedTable2_2_5[1]) - 2.3935678 ) / fabs ( zreals(rowStdevfedTable2_2_5[1]) ) < 1e-6 ); + assert( fabs(zimags(rowStdevfedTable2_2_5[1]) + 0.4787136) / fabs ( zimags(rowStdevfedTable2_2_5[1]) ) < 1e-6 ); + + assert( fabs(zreals(rowStdevfedTable2_2_5[2]) - 1.3887301 ) / fabs ( zreals(rowStdevfedTable2_2_5[2]) ) < 1e-6 ); + assert( fabs(zimags(rowStdevfedTable2_2_5[2]) - 0.4629100 ) / fabs ( zimags(rowStdevfedTable2_2_5[2]) ) < 1e-6 ); + + assert( fabs(zreals(rowStdevfedTable2_2_5[3]) - 1.2421180 ) / fabs ( zreals(rowStdevfedTable2_2_5[3]) ) < 1e-6 ); + assert( fabs(zimags(rowStdevfedTable2_2_5[3]) - 0.4140393 ) / fabs ( zimags(rowStdevfedTable2_2_5[3]) ) < 1e-6 ); + + assert( fabs(zreals(rowStdevfedTable2_2_5[4]) - 0.4523443 ) / fabs ( zreals(rowStdevfedTable2_2_5[4]) ) < 1e-6 ); + assert( fabs(zimags(rowStdevfedTable2_2_5[4]) - 2.7140659) / fabs ( zimags(rowStdevfedTable2_2_5[4]) ) < 1e-6 ); +/**/ + zrowstdevfa(table3, 2 , 5 , coef3 , rowStdevfedTable3_2_5); + for (i = 0 ; i < 5 ; ++i ) + { + printf("rowStdevfedTable3_2_5[%d] = %e + %ei\n", i, zreals(rowStdevfedTable3_2_5[i]), zimags(rowStdevfedTable3_2_5[i])); + } + + assert( fabs(zimags(rowStdevfedTable3_2_5[0]) - 0.3015113 ) / fabs (zimags(rowStdevfedTable3_2_5[0]) ) < 1e-6 ); + + + assert( fabs(zimags(rowStdevfedTable3_2_5[1]) - 0.4787136) / fabs ( zimags(rowStdevfedTable3_2_5[1]) ) < 1e-6 ); + + + assert( fabs(zimags(rowStdevfedTable3_2_5[2]) - 0.4629100 ) / fabs (zimags(rowStdevfedTable3_2_5[2]) ) < 1e-6 ); + + + assert( fabs(zimags(rowStdevfedTable3_2_5[3]) - 0.4140393 ) / fabs ( zimags(rowStdevfedTable3_2_5[3]) ) < 1e-6 ); + + + assert( fabs(zimags(rowStdevfedTable3_2_5[4]) - 2.7140659) / fabs ( zimags(rowStdevfedTable3_2_5[4]) ) < 1e-6 ); + +/**/ + zrowstdevfa(table4 , 2 , 5 , coef4 , rowStdevfedTable4_2_5); + for (i = 0 ; i < 5 ; ++i ) + { + printf("rowStdevfedTable4_2_5[%d] = %e + %ei\n", i, zreals(rowStdevfedTable4_2_5[i]), zimags(rowStdevfedTable4_2_5[i])); + } + assert( fabs(zreals(rowStdevfedTable4_2_5[0]) - 0.8597825 ) / fabs ( zreals(rowStdevfedTable4_2_5[0]) ) < 1e-6 ); + assert( fabs(zimags(rowStdevfedTable4_2_5[0]) + 0.0390006 ) / fabs ( zimags(rowStdevfedTable4_2_5[0]) ) < 1e-6 ); + + assert( fabs(zreals(rowStdevfedTable4_2_5[1]) - 2.3141768 ) / fabs ( zreals(rowStdevfedTable4_2_5[1]) ) < 1e-6 ); + assert( fabs(zimags(rowStdevfedTable4_2_5[1]) + 0.0722475) / fabs ( zimags(rowStdevfedTable4_2_5[1]) ) < 1e-6 ); + + assert( fabs(zreals(rowStdevfedTable4_2_5[2]) - 1.2915122 ) / fabs ( zreals(rowStdevfedTable4_2_5[2]) ) < 1e-6 ); + assert( fabs(zimags(rowStdevfedTable4_2_5[2]) + 0.0804066 ) / fabs ( zimags(rowStdevfedTable4_2_5[2]) ) < 1e-6 ); + + assert( fabs(zreals(rowStdevfedTable4_2_5[3]) - 1.1980065 ) / fabs ( zreals(rowStdevfedTable4_2_5[3]) ) < 1e-6 ); + assert( fabs(zimags(rowStdevfedTable4_2_5[3]) + 0.0398893 ) / fabs ( zimags(rowStdevfedTable4_2_5[3]) ) < 1e-6 ); + + assert( fabs(zreals(rowStdevfedTable4_2_5[4]) - 0.4433143 ) / fabs ( zreals(rowStdevfedTable4_2_5[4]) ) < 1e-6 ); + assert( fabs(zimags(rowStdevfedTable4_2_5[4]) + 0.00852212) / fabs ( zimags(rowStdevfedTable4_2_5[4]) ) < 1e-6 ); + + return 0; +} + + + + +static int zcolumnstdevfaTest(void) { + + int i = 0 ; + + double tableR1[9] = {1.0, 4.0, 7.0, 2.0 , 5.0, 8.0, 3.0, 6.0, 9.0}; + double tableI1[9] = {1.0, 2.0, 3.0, 4.0 , 5.0, 6.0, 7.0, 8.0, 9.0}; + double coefR1[9] = {10.0, 1.0, 5.0,11.0 , 2.0, 6.0,12.0, 3.0, 7.0}; + double coefI1[9] = { 0.0, 0.0, 0.0, 0.0 , 0.0, 0.0, 0.0, 0.0, 0.0}; + + double tableR2[10] = {1.0, 4.0, 7.0, 2.0 , 5.0, 8.0, 3.0, 6.0, 9.0, 10.0}; + double tableI2[10] = {1.0, 2.0, 3.0, 4.0 , 5.0, 6.0, 7.0, 8.0, 9.0, 15.0}; + double coefR2[10] = {10.0, 1.0, 5.0,11.0 , 2.0, 6.0,12.0, 3.0, 7.0, 19.0}; + double coefI2[10] = { 0.0, 0.0, 0.0, 0.0 , 0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; + + double tableR3[6] = {4.0, 5.0, 6.0, 7.0, 8.0, 9.0 }; + double tableI3[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0 }; + + double coefR3[6] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0}; + double coefI3[6] = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0}; + + doubleComplex* table1 = DoubleComplexMatrix (tableR1, tableI1, 9); + doubleComplex* coef1 = DoubleComplexMatrix (coefR1, coefI1, 9); + + doubleComplex* table2 = DoubleComplexMatrix (tableR2, tableI2, 10); + doubleComplex* coef2 = DoubleComplexMatrix (coefR2, coefI2, 10); + + doubleComplex* table3 = DoubleComplexMatrix (tableR3, tableI3, 10); + doubleComplex* coef3 = DoubleComplexMatrix (coefR3, coefI3, 10); + + doubleComplex rowStdevfedTable1_3_3[3]; + doubleComplex rowStdevfedTable2_2_5[2]; + doubleComplex rowStdevfedTable3_3_2[3]; + + rowStdevfedTable1_3_3[0] = DoubleComplex(0.0, 0.0); + rowStdevfedTable1_3_3[1] = DoubleComplex(0.0, 0.0); + rowStdevfedTable1_3_3[2] = DoubleComplex(0.0, 0.0); + + rowStdevfedTable2_2_5[0] = DoubleComplex(0.0, 0.0); + rowStdevfedTable2_2_5[1] = DoubleComplex(0.0, 0.0); + + rowStdevfedTable3_3_2[0] = DoubleComplex(0.0, 0.0); + rowStdevfedTable3_3_2[1] = DoubleComplex(0.0, 0.0); + rowStdevfedTable3_3_2[2] = DoubleComplex(0.0, 0.0); + + + printf("\n>>>> Column stdevf Double Complex Array Test\n"); + + + + zcolumnstdevfa(table1 , 3 , 3 , coef1 , rowStdevfedTable1_3_3); + + for (i = 0 ; i < 3 ; ++i ) + { + printf("columnStdevfedTable_3_3[%d] = %e + %ei\n", i, zreals(rowStdevfedTable1_3_3[i]), zimags(rowStdevfedTable1_3_3[i])); + } + assert( fabs(zreals(rowStdevfedTable1_3_3[0]) - 0.8268689) / fabs ( zimags(rowStdevfedTable1_3_3[0]) ) < 1e-6 ); + assert( fabs(zimags(rowStdevfedTable1_3_3[0]) - 2.4806066) / fabs ( zreals(rowStdevfedTable1_3_3[0]) ) < 1e-6 ); + + assert( fabs(zreals(rowStdevfedTable1_3_3[1]) - 0.8164966) / fabs ( zimags(rowStdevfedTable1_3_3[1]) ) < 1e-6 ); + assert( fabs(zimags(rowStdevfedTable1_3_3[1]) - 2.4494897) / fabs ( zreals(rowStdevfedTable1_3_3[1]) ) < 1e-6 ); + + assert( fabs(zreals(rowStdevfedTable1_3_3[2]) - 0.8323524 ) / fabs ( zimags(rowStdevfedTable1_3_3[2]) ) < 1e-6 ); + assert( fabs(zimags(rowStdevfedTable1_3_3[2]) - 2.4970571 ) / fabs ( zreals(rowStdevfedTable1_3_3[2]) ) < 1e-6 ); +/**/ + zcolumnstdevfa(table2 , 2 , 5 , coef2 , rowStdevfedTable2_2_5); + for (i = 0 ; i < 2 ; ++i ) + { + printf("columnStdevfedTable_2_5[%d] = %e + %ei\n", i, zreals(rowStdevfedTable2_2_5[i]), zimags(rowStdevfedTable2_2_5[i])); + } + assert( fabs(zreals(rowStdevfedTable2_2_5[0]) - 2.3683811 ) / fabs ( zimags(rowStdevfedTable2_2_5[0]) ) < 1e-6 ); + assert( fabs(zimags(rowStdevfedTable2_2_5[0]) - 2.4784193 ) / fabs ( zreals(rowStdevfedTable2_2_5[0]) ) < 1e-6 ); + + assert( fabs(zreals(rowStdevfedTable2_2_5[1]) - 3.1890422 ) / fabs ( zimags(rowStdevfedTable2_2_5[1]) ) < 1e-6 ); + assert( fabs(zimags(rowStdevfedTable2_2_5[1]) - 4.9966774 ) / fabs ( zreals(rowStdevfedTable2_2_5[1]) ) < 1e-6 ); + + zcolumnstdevfa(table3 , 3 , 2 , coef3 , rowStdevfedTable3_3_2); + for (i = 0 ; i < 3 ; ++i ) + { + printf("columnStdevfedTable3_3_2[%d] = %e + %ei\n", i, zreals(rowStdevfedTable3_3_2[i]), zimags(rowStdevfedTable3_3_2[i])); + } + assert( fabs(zreals(rowStdevfedTable3_3_2[0]) - 1.1825083) / fabs ( zimags(rowStdevfedTable3_3_2[0]) ) < 1e-6 ); + assert( fabs(zimags(rowStdevfedTable3_3_2[0]) + 0.1170914) / fabs ( zreals(rowStdevfedTable3_3_2[0]) ) < 1e-6 ); + + assert( fabs(zreals(rowStdevfedTable3_3_2[1]) - 1.3450417) / fabs ( zimags(rowStdevfedTable3_3_2[1]) ) < 1e-6 ); + assert( fabs(zimags(rowStdevfedTable3_3_2[1]) + 0.0955892) / fabs ( zreals(rowStdevfedTable3_3_2[1]) ) < 1e-6 ); + + assert( fabs(zreals(rowStdevfedTable3_3_2[2]) - 1.4077246 ) / fabs ( zimags(rowStdevfedTable3_3_2[2]) ) < 1e-6 ); + assert( fabs(zimags(rowStdevfedTable3_3_2[2]) + 0.0779670 ) / fabs ( zreals(rowStdevfedTable3_3_2[2]) ) < 1e-6 ); + return 0; +} + + +static int teststdevf(void) { + + dstdevfsTest(); + dstdevfaTest(); + dcolumnstdevfaTest(); + drowstdevfaTest(); + zstdevfsTest(); + zstdevfaTest(); + zrowstdevfaTest(); + zcolumnstdevfaTest(); + + return 0; +} + +int main(void) { + assert(teststdevf() == 0); + return 0; +} + |