Changeset 1365 for trunk/psLib/test/dataManip
- Timestamp:
- Aug 2, 2004, 9:43:23 AM (22 years ago)
- Location:
- trunk/psLib/test/dataManip
- Files:
-
- 7 edited
-
tst_psHist02.c (modified) (3 diffs)
-
tst_psMatrixVectorArithmetic02.c (modified) (8 diffs)
-
tst_psStats07.c (modified) (3 diffs)
-
tst_psVectorFFT.c (modified) (8 diffs)
-
verified/tst_psHist02.stdout (modified) (4 diffs)
-
verified/tst_psMatrixVectorArithmetic02.stdout (modified) (106 diffs)
-
verified/tst_psStats07.stdout (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/test/dataManip/tst_psHist02.c
r1327 r1365 1 1 /***************************************************************************** 2 This routine must ensure that the psHistogram structure is correctly3 populated by the procedure psGetArrayHistogram().4 5 *****************************************************************************/2 This routine must ensure that the psHistogram structure is correctly 3 populated by the procedure psGetArrayHistogram(). 4 5 *****************************************************************************/ 6 6 #include <stdio.h> 7 7 #include "pslib.h" … … 16 16 int main() 17 17 { 18 psHistogram * myHist = NULL;19 psHistogram *myHist2 = NULL;20 psVector *myData = NULL;21 psVector *myMask = NULL;22 int testStatus = true;23 int memLeaks = 0;24 int nb = 0;25 int numBins = 0;26 int i = 0;27 int currentId = 0;28 29 currentId = psMemGetId();30 18 psHistogram * myHist = NULL; 19 psHistogram *myHist2 = NULL; 20 psVector *myData = NULL; 21 psVector *myMask = NULL; 22 int testStatus = true; 23 int memLeaks = 0; 24 int nb = 0; 25 int numBins = 0; 26 int i = 0; 27 int currentId = 0; 28 29 currentId = psMemGetId(); 30 31 31 /*********************************************************************/ 32 32 /* Allocate and initialize data structures */ 33 33 /*********************************************************************/ 34 myData = psVectorAlloc( NUM_DATA, PS_TYPE_F32);34 myData = psVectorAlloc( NUM_DATA, PS_TYPE_F32 ); 35 35 myData->n = myData->nalloc; 36 for ( i=0;i<NUM_DATA;i++) {37 myData->data.F32[i] = LOWER + ((UPPER - LOWER) / (float) NUM_DATA) * (float) i;38 }39 40 myMask = psVectorAlloc( NUM_DATA, PS_TYPE_U8);36 for ( i = 0;i < NUM_DATA;i++ ) { 37 myData->data.F32[ i ] = LOWER + ( ( UPPER - LOWER ) / ( float ) NUM_DATA ) * ( float ) i; 38 } 39 40 myMask = psVectorAlloc( NUM_DATA, PS_TYPE_U8 ); 41 41 myMask->n = myMask->nalloc; 42 for (i=0;i<NUM_DATA;i++) { 43 if (i >= (NUM_DATA/2)) { 44 myMask->data.U8[i] = 1; 45 } else { 46 myMask->data.U8[i] = 0; 42 for ( i = 0;i < NUM_DATA;i++ ) { 43 if ( i >= ( NUM_DATA / 2 ) ) { 44 myMask->data.U8[ i ] = 1; 45 } else { 46 myMask->data.U8[ i ] = 0; 47 } 47 48 } 48 } 49 50 for (nb=0;nb<4;nb++) { 51 if (nb == 0) 52 numBins = 1; 53 if (nb == 1) 54 numBins = 2; 55 if (nb == 2) 56 numBins = 10; 57 if (nb == 3) 58 numBins = 20; 59 60 /*********************************************************************/ 61 /* Allocate and Perform Histogram, no mask */ 62 /*********************************************************************/ 63 printPositiveTestHeader(stdout, 64 "psStats functions", 65 "Allocate and Perform Histogram, no mask"); 66 67 myHist = psHistogramAlloc(LOWER, UPPER, numBins); 68 myHist = psVectorHistogram(myHist, myData, NULL, 0); 69 70 for (i=0;i<numBins;i++) { 71 printf("Bin number %d bounds: (%f - %f) data (%d)\n", i, 72 myHist->bounds->data.F32[i], 73 myHist->bounds->data.F32[i+1], 74 myHist->nums->data.U32[i]); 49 50 for ( nb = 0;nb < 4;nb++ ) { 51 if ( nb == 0 ) 52 numBins = 1; 53 if ( nb == 1 ) 54 numBins = 2; 55 if ( nb == 2 ) 56 numBins = 10; 57 if ( nb == 3 ) 58 numBins = 20; 59 60 /*********************************************************************/ 61 /* Allocate and Perform Histogram, no mask */ 62 /*********************************************************************/ 63 printPositiveTestHeader( stdout, 64 "psStats functions", 65 "Allocate and Perform Histogram, no mask" ); 66 67 myHist = psHistogramAlloc( LOWER, UPPER, numBins ); 68 myHist = psVectorHistogram( myHist, myData, NULL, 0 ); 69 70 for ( i = 0;i < numBins;i++ ) { 71 printf( "Bin number %d bounds: (%.2f - %.2f) data (%d)\n", i, 72 myHist->bounds->data.F32[ i ], 73 myHist->bounds->data.F32[ i + 1 ], 74 myHist->nums->data.U32[ i ] ); 75 } 76 psMemCheckCorruption( 1 ); 77 psFree( myHist ); 78 psMemCheckCorruption( 1 ); 79 80 printFooter( stdout, 81 "psStats functions", 82 "Allocate and Perform Histogram, no mask", 83 testStatus ); 84 85 /*********************************************************************/ 86 /* Allocate and Perform Histogram with mask */ 87 /*********************************************************************/ 88 printPositiveTestHeader( stdout, 89 "psStats functions", 90 "Allocate and Perform Histogram with mask" ); 91 92 myHist = psHistogramAlloc( LOWER, UPPER, numBins ); 93 myHist = psVectorHistogram( myHist, myData, myMask, 1 ); 94 95 for ( i = 0;i < numBins;i++ ) { 96 printf( "Bin number %d bounds: (%6.3f - %6.3f) data (%d)\n", i, 97 myHist->bounds->data.F32[ i ], 98 myHist->bounds->data.F32[ i + 1 ], 99 myHist->nums->data.U32[ i ] ); 100 } 101 psMemCheckCorruption( 1 ); 102 psFree( myHist ); 103 psMemCheckCorruption( 1 ); 104 105 printFooter( stdout, 106 "psStats functions", 107 "Allocate and Perform Histogram with mask", 108 testStatus ); 75 109 } 76 psMemCheckCorruption(1); 77 psFree(myHist); 78 psMemCheckCorruption(1); 79 80 printFooter(stdout, 81 "psStats functions", 82 "Allocate and Perform Histogram, no mask", 83 testStatus); 84 85 /*********************************************************************/ 86 /* Allocate and Perform Histogram with mask */ 87 /*********************************************************************/ 88 printPositiveTestHeader(stdout, 89 "psStats functions", 90 "Allocate and Perform Histogram with mask"); 91 92 myHist = psHistogramAlloc(LOWER, UPPER, numBins); 93 myHist = psVectorHistogram(myHist, myData, myMask, 1); 94 95 for (i=0;i<numBins;i++) { 96 printf("Bin number %d bounds: (%6.3f - %6.3f) data (%d)\n", i, 97 myHist->bounds->data.F32[i], 98 myHist->bounds->data.F32[i+1], 99 myHist->nums->data.U32[i]); 100 } 101 psMemCheckCorruption(1); 102 psFree(myHist); 103 psMemCheckCorruption(1); 104 105 printFooter(stdout, 106 "psStats functions", 107 "Allocate and Perform Histogram with mask", 108 testStatus); 109 } 110 psFree(myMask); 111 112 printPositiveTestHeader(stdout, 113 "psStats functions", 114 "Calling psVectorHistogram() with various NULL inputs."); 115 110 psFree( myMask ); 111 112 printPositiveTestHeader( stdout, 113 "psStats functions", 114 "Calling psVectorHistogram() with various NULL inputs." ); 115 116 116 // Verify the return value is null and program execution doesn't stop, 117 117 // if input parameter myHist is null. 118 119 myHist2 = psVectorHistogram( NULL, myData, NULL, 0);120 if ( myHist2 != NULL) {121 printf("ERROR: myHist2!=NULL\n");122 testStatus = false;123 }124 psFree( myData);125 126 118 119 myHist2 = psVectorHistogram( NULL, myData, NULL, 0 ); 120 if ( myHist2 != NULL ) { 121 printf( "ERROR: myHist2!=NULL\n" ); 122 testStatus = false; 123 } 124 psFree( myData ); 125 126 127 127 // Verify the retrun value is the same as the input parameter myHist and 128 128 // program execution doesn't stop, if the input parameter myArray is 129 129 // null. 130 131 myHist = psHistogramAlloc( LOWER, UPPER, numBins);132 myHist = psVectorHistogram( myHist, NULL, NULL, 0);133 if ( myHist == NULL) {134 printf("ERROR: myHist==NULL\n");135 testStatus = false;136 }137 psFree( myHist);138 139 130 131 myHist = psHistogramAlloc( LOWER, UPPER, numBins ); 132 myHist = psVectorHistogram( myHist, NULL, NULL, 0 ); 133 if ( myHist == NULL ) { 134 printf( "ERROR: myHist==NULL\n" ); 135 testStatus = false; 136 } 137 psFree( myHist ); 138 139 140 140 // Verify the return value is the same as the input parameter myHist and 141 141 // program execution doesn't stop, if the input parameter myArray has no … … 155 155 psFree(myData); 156 156 */ 157 printFooter( stdout,158 "psStats functions",159 "Calling psVectorHistogram() with various NULL inputs.",160 testStatus);161 157 printFooter( stdout, 158 "psStats functions", 159 "Calling psVectorHistogram() with various NULL inputs.", 160 testStatus ); 161 162 162 /*************************************************************************/ 163 163 /* Deallocate data structures */ 164 164 /*************************************************************************/ 165 printPositiveTestHeader( stdout,166 "psStats functions",167 "Deallocate the psHistogram structure.");168 169 psMemCheckCorruption( 1);170 memLeaks = psMemCheckLeaks( currentId,NULL,NULL);171 if ( 0 != memLeaks) {172 psAbort(__func__,"Memory Leaks! (%d leaks)", memLeaks);173 }174 psMemCheckCorruption( 1);175 176 printFooter( stdout,177 "psStats functions",178 "Deallocate the psHistogram structure.",179 testStatus);180 181 return ( !testStatus);165 printPositiveTestHeader( stdout, 166 "psStats functions", 167 "Deallocate the psHistogram structure." ); 168 169 psMemCheckCorruption( 1 ); 170 memLeaks = psMemCheckLeaks( currentId, NULL, NULL ); 171 if ( 0 != memLeaks ) { 172 psAbort( __func__, "Memory Leaks! (%d leaks)", memLeaks ); 173 } 174 psMemCheckCorruption( 1 ); 175 176 printFooter( stdout, 177 "psStats functions", 178 "Deallocate the psHistogram structure.", 179 testStatus ); 180 181 return ( !testStatus ); 182 182 } -
trunk/psLib/test/dataManip/tst_psMatrixVectorArithmetic02.c
r1134 r1365 10 10 * @author Ross Harman, MHPCC 11 11 * 12 * @version $Revision: 1. 1$ $Name: not supported by cvs2svn $13 * @date $Date: 2004-0 6-30 00:18:49$12 * @version $Revision: 1.2 $ $Name: not supported by cvs2svn $ 13 * @date $Date: 2004-08-02 19:43:23 $ 14 14 * 15 15 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii … … 25 25 #define PRINT_SCALAR(SCALAR,TYPE) \ 26 26 if(PS_IS_PSELEMTYPE_COMPLEX(SCALAR->type.type)) { \ 27 printf("%f+%fi ", creal(SCALAR->data.TYPE), cimag(SCALAR->data.TYPE)); \28 } else if(PS_IS_PSELEMTYPE_INT(SCALAR->type.type)) { \29 printf("%d", (int)SCALAR->data.TYPE); \30 } else { \31 printf("%f", (double)SCALAR->data.TYPE); \32 } \27 printf("%.2f%f+.2i ", creal(SCALAR->data.TYPE), cimag(SCALAR->data.TYPE)); \ 28 } else if(PS_IS_PSELEMTYPE_INT(SCALAR->type.type)) { \ 29 printf("%d", (int)SCALAR->data.TYPE); \ 30 } else { \ 31 printf("%.2f", (double)SCALAR->data.TYPE); \ 32 } \ 33 33 printf("\n\n"); 34 34 … … 36 36 #define PRINT_VECTOR(VECTOR,TYPE) \ 37 37 for(int i=0; i<VECTOR->n; i++) { \ 38 if(PS_IS_PSELEMTYPE_COMPLEX(VECTOR->type.type)) { \39 printf("%f+%fi\n", creal(VECTOR->data.TYPE[i]), cimag(VECTOR->data.TYPE[i])); \40 } else if(PS_IS_PSELEMTYPE_INT(VECTOR->type.type)) { \41 printf("%d\n", (int)VECTOR->data.TYPE[i]); \42 } else { \43 printf("%f\n", (double)VECTOR->data.TYPE[i]); \44 } \45 } \38 if(PS_IS_PSELEMTYPE_COMPLEX(VECTOR->type.type)) { \ 39 printf("%.2f%+.2fi\n", creal(VECTOR->data.TYPE[i]), cimag(VECTOR->data.TYPE[i])); \ 40 } else if(PS_IS_PSELEMTYPE_INT(VECTOR->type.type)) { \ 41 printf("%d\n", (int)VECTOR->data.TYPE[i]); \ 42 } else { \ 43 printf("%.2f\n", (double)VECTOR->data.TYPE[i]); \ 44 } \ 45 } \ 46 46 printf("\n"); 47 47 … … 49 49 #define PRINT_MATRIX(IMAGE,TYPE) \ 50 50 for(int i=IMAGE->numRows-1; i>-1; i--) { \ 51 for(int j=0; j<IMAGE->numCols; j++) { \52 if(PS_IS_PSELEMTYPE_COMPLEX(IMAGE->type.type)) { \53 printf("%f+%fi ", creal(IMAGE->data.TYPE[i][j]), cimag(IMAGE->data.TYPE[i][j])); \54 } else if(PS_IS_PSELEMTYPE_INT(IMAGE->type.type)) { \55 printf("%d ", (int)IMAGE->data.TYPE[i][j]); \56 } else { \57 printf("%f ", (double)IMAGE->data.TYPE[i][j]); \58 } \59 } \60 printf("\n"); \61 } \51 for(int j=0; j<IMAGE->numCols; j++) { \ 52 if(PS_IS_PSELEMTYPE_COMPLEX(IMAGE->type.type)) { \ 53 printf("%.2f%+.2fi ", creal(IMAGE->data.TYPE[i][j]), cimag(IMAGE->data.TYPE[i][j])); \ 54 } else if(PS_IS_PSELEMTYPE_INT(IMAGE->type.type)) { \ 55 printf("%d ", (int)IMAGE->data.TYPE[i][j]); \ 56 } else { \ 57 printf("%.2f ", (double)IMAGE->data.TYPE[i][j]); \ 58 } \ 59 } \ 60 printf("\n"); \ 61 } \ 62 62 printf("\n"); 63 63 … … 66 66 psVector *NAME = (psVector*)psVectorAlloc(SIZE, PS_TYPE_##TYPE); \ 67 67 for(int i=0; i<SIZE; i++) { \ 68 NAME->data.TYPE[i] = VALUE; \69 } \68 NAME->data.TYPE[i] = VALUE; \ 69 } \ 70 70 NAME->n = SIZE; 71 71 … … 74 74 psImage *NAME = (psImage*)psImageAlloc(NCOLS,NROWS,PS_TYPE_##TYPE); \ 75 75 for(int i=0; i<NAME->numRows; i++) { \ 76 for(int j=0; j<NAME->numCols; j++) { \77 NAME->data.TYPE[i][j] = VALUE; \78 } \79 }80 81 76 for(int j=0; j<NAME->numCols; j++) { \ 77 NAME->data.TYPE[i][j] = VALUE; \ 78 } \ 79 } 80 81 82 82 #define CHECK_MEMORY \ 83 83 psMemCheckLeaks(0, NULL, stdout); \ 84 84 int nBad = psMemCheckCorruption(0); \ 85 85 if(nBad) { \ 86 printf("ERROR: Found %d bad memory blocks\n", nBad); \87 }88 89 90 int main( int argc, char* argv[])86 printf("ERROR: Found %d bad memory blocks\n", nBad); \ 87 } 88 89 90 int main( int argc, char* argv[] ) 91 91 { 92 92 … … 109 109 printFooter(stdout, "psMatrixVectorArithmetic", "Test matrix psUnaryOp", true); \ 110 110 } 111 112 testBinaryOpM( abs,S32,-10,0,3,2);113 testBinaryOpM( abs,F32,-10.0,0.0,3,2);114 testBinaryOpM( abs,F64,-10.0,0.0,3,2);115 testBinaryOpM( abs,C32,-10.0-10.0i,0.0+0.0i,3,2);116 testBinaryOpM( exp,S32,10,0,3,2);117 testBinaryOpM( exp,F32,10.0,0.0,3,2);118 testBinaryOpM( exp,F64,10.0,0.0,3,2);119 testBinaryOpM( exp,C32,10.0+10.0i,0.0+0.0i,3,2);120 testBinaryOpM( ln,S32,10,0,3,2);121 testBinaryOpM( ln,F32,10.0,0.0,3,2);122 testBinaryOpM( ln,F64,10.0,0.0,3,2);123 testBinaryOpM( ln,C32,10.0+10.0i,0.0+0.0i,3,2);124 testBinaryOpM( ten,S32,3,0,3,2);125 testBinaryOpM( ten,F32,3.0,0.0,3,2);126 testBinaryOpM( ten,F64,3.0,0.0,3,2);127 testBinaryOpM( ten,C32,3.0+3.0i,0.0+0.0i,3,2);128 testBinaryOpM( log,S32,1000,0,3,2);129 testBinaryOpM( log,F32,1000.0,0.0,3,2);130 testBinaryOpM( log,F64,1000.0,0.0,3,2);131 testBinaryOpM( log,C32,1000.0+1000.0i,0.0+0.0i,3,2);132 testBinaryOpM( sin,S32,M_PI_2,0,3,2);133 testBinaryOpM( sin,F32,M_PI_2,0.0,3,2);134 testBinaryOpM( sin,F64,M_PI_2,0.0,3,2);135 testBinaryOpM( sin,C32,M_PI_2+1.57079632679489661923i,0.0+0.0i,3,2);136 testBinaryOpM( dsin,S32,90,0,3,2);137 testBinaryOpM( dsin,F32,90.0,0.0,3,2);138 testBinaryOpM( dsin,F64,90.0,0.0,3,2);139 testBinaryOpM( dsin,C32,90.0+90.0i,0.0+0.0i,3,2);140 testBinaryOpM( cos,S32,0,0,3,2);141 testBinaryOpM( cos,F32,0.0,0.0,3,2);142 testBinaryOpM( cos,F64,0.0,0.0,3,2);143 testBinaryOpM( cos,C32,0.0+0.0i,0.0+0.0i,3,2);144 testBinaryOpM( dcos,S32,0,0,3,2);145 testBinaryOpM( dcos,F32,0.0,0.0,3,2);146 testBinaryOpM( dcos,F64,0.0,0.0,3,2);147 testBinaryOpM( dcos,C32,0.0+0.0i,0.0+0.0i,3,2);148 testBinaryOpM( tan,S32,M_PI_4,0,3,2);149 testBinaryOpM( tan,F32,M_PI_4,0.0,3,2);150 testBinaryOpM( tan,F64,M_PI_4,0.0,3,2);151 testBinaryOpM( tan,C32,M_PI_4+0.78539816339744830962i,0.0+0.0i,3,2);152 testBinaryOpM( dtan,S32,45,0,3,2);153 testBinaryOpM( dtan,F32,45.0,0.0,3,2);154 testBinaryOpM( dtan,F64,45.0,0.0,3,2);155 testBinaryOpM( dtan,C32,45.0+45.0i,0.0+0.0i,3,2);156 testBinaryOpM( asin,S32,1,0,3,2);157 testBinaryOpM( asin,F32,1.0,0.0,3,2);158 testBinaryOpM( asin,F64,1.0,0.0,3,2);159 testBinaryOpM( asin,C32,1.0+1.0i,0.0+0.0i,3,2);160 testBinaryOpM( dasin,S32,1.0,0,3,2);161 testBinaryOpM( dasin,F32,1.0,0.0,3,2);162 testBinaryOpM( dasin,F64,1.0,0.0,3,2);163 testBinaryOpM( dasin,C32,1.0+1.0i,0.0+0.0i,3,2);164 testBinaryOpM( acos,S32,0,0,3,2);165 testBinaryOpM( acos,F32,0.0,0.0,3,2);166 testBinaryOpM( acos,F64,0.0,0.0,3,2);167 testBinaryOpM( acos,C32,0.0+0.0i,0.0+0.0i,3,2);168 testBinaryOpM( dacos,S32,0,0,3,2);169 testBinaryOpM( dacos,F32,0.0,0.0,3,2);170 testBinaryOpM( dacos,F64,0.0,0.0,3,2);171 testBinaryOpM( dacos,C32,0.0+0.0i,0.0+0.0i,3,2);172 testBinaryOpM( atan,S32,1,0,3,2);173 testBinaryOpM( atan,F32,1.0,0.0,3,2);174 testBinaryOpM( atan,F64,1.0,0.0,3,2);175 testBinaryOpM( atan,C32,1.0+1.0i,0.0+0.0i,3,2);176 testBinaryOpM( datan,S32,1,0,3,2);177 testBinaryOpM( datan,F32,1.0,0.0,3,2);178 testBinaryOpM( datan,F64,1.0,0.0,3,2);179 testBinaryOpM( datan,C32,1.0+1.0i,0.0+0.0i,3,2);180 181 111 112 testBinaryOpM( abs, S32, -10, 0, 3, 2 ); 113 testBinaryOpM( abs, F32, -10.0, 0.0, 3, 2 ); 114 testBinaryOpM( abs, F64, -10.0, 0.0, 3, 2 ); 115 testBinaryOpM( abs, C32, -10.0 - 10.0i, 0.0 + 0.0i, 3, 2 ); 116 testBinaryOpM( exp, S32, 10, 0, 3, 2 ); 117 testBinaryOpM( exp, F32, 10.0, 0.0, 3, 2 ); 118 testBinaryOpM( exp, F64, 10.0, 0.0, 3, 2 ); 119 testBinaryOpM( exp, C32, 10.0 + 10.0i, 0.0 + 0.0i, 3, 2 ); 120 testBinaryOpM( ln, S32, 10, 0, 3, 2 ); 121 testBinaryOpM( ln, F32, 10.0, 0.0, 3, 2 ); 122 testBinaryOpM( ln, F64, 10.0, 0.0, 3, 2 ); 123 testBinaryOpM( ln, C32, 10.0 + 10.0i, 0.0 + 0.0i, 3, 2 ); 124 testBinaryOpM( ten, S32, 3, 0, 3, 2 ); 125 testBinaryOpM( ten, F32, 3.0, 0.0, 3, 2 ); 126 testBinaryOpM( ten, F64, 3.0, 0.0, 3, 2 ); 127 testBinaryOpM( ten, C32, 3.0 + 3.0i, 0.0 + 0.0i, 3, 2 ); 128 testBinaryOpM( log, S32, 1000, 0, 3, 2 ); 129 testBinaryOpM( log, F32, 1000.0, 0.0, 3, 2 ); 130 testBinaryOpM( log, F64, 1000.0, 0.0, 3, 2 ); 131 testBinaryOpM( log, C32, 1000.0 + 1000.0i, 0.0 + 0.0i, 3, 2 ); 132 testBinaryOpM( sin, S32, M_PI_2, 0, 3, 2 ); 133 testBinaryOpM( sin, F32, M_PI_2, 0.0, 3, 2 ); 134 testBinaryOpM( sin, F64, M_PI_2, 0.0, 3, 2 ); 135 testBinaryOpM( sin, C32, M_PI_2 + 1.57079632679489661923i, 0.0 + 0.0i, 3, 2 ); 136 testBinaryOpM( dsin, S32, 90, 0, 3, 2 ); 137 testBinaryOpM( dsin, F32, 90.0, 0.0, 3, 2 ); 138 testBinaryOpM( dsin, F64, 90.0, 0.0, 3, 2 ); 139 testBinaryOpM( dsin, C32, 90.0 + 90.0i, 0.0 + 0.0i, 3, 2 ); 140 testBinaryOpM( cos, S32, 0, 0, 3, 2 ); 141 testBinaryOpM( cos, F32, 0.0, 0.0, 3, 2 ); 142 testBinaryOpM( cos, F64, 0.0, 0.0, 3, 2 ); 143 testBinaryOpM( cos, C32, 0.0 + 0.0i, 0.0 + 0.0i, 3, 2 ); 144 testBinaryOpM( dcos, S32, 0, 0, 3, 2 ); 145 testBinaryOpM( dcos, F32, 0.0, 0.0, 3, 2 ); 146 testBinaryOpM( dcos, F64, 0.0, 0.0, 3, 2 ); 147 testBinaryOpM( dcos, C32, 0.0 + 0.0i, 0.0 + 0.0i, 3, 2 ); 148 testBinaryOpM( tan, S32, M_PI_4, 0, 3, 2 ); 149 testBinaryOpM( tan, F32, M_PI_4, 0.0, 3, 2 ); 150 testBinaryOpM( tan, F64, M_PI_4, 0.0, 3, 2 ); 151 testBinaryOpM( tan, C32, M_PI_4 + 0.78539816339744830962i, 0.0 + 0.0i, 3, 2 ); 152 testBinaryOpM( dtan, S32, 45, 0, 3, 2 ); 153 testBinaryOpM( dtan, F32, 45.0, 0.0, 3, 2 ); 154 testBinaryOpM( dtan, F64, 45.0, 0.0, 3, 2 ); 155 testBinaryOpM( dtan, C32, 45.0 + 45.0i, 0.0 + 0.0i, 3, 2 ); 156 testBinaryOpM( asin, S32, 1, 0, 3, 2 ); 157 testBinaryOpM( asin, F32, 1.0, 0.0, 3, 2 ); 158 testBinaryOpM( asin, F64, 1.0, 0.0, 3, 2 ); 159 testBinaryOpM( asin, C32, 1.0 + 1.0i, 0.0 + 0.0i, 3, 2 ); 160 testBinaryOpM( dasin, S32, 1.0, 0, 3, 2 ); 161 testBinaryOpM( dasin, F32, 1.0, 0.0, 3, 2 ); 162 testBinaryOpM( dasin, F64, 1.0, 0.0, 3, 2 ); 163 testBinaryOpM( dasin, C32, 1.0 + 1.0i, 0.0 + 0.0i, 3, 2 ); 164 testBinaryOpM( acos, S32, 0, 0, 3, 2 ); 165 testBinaryOpM( acos, F32, 0.0, 0.0, 3, 2 ); 166 testBinaryOpM( acos, F64, 0.0, 0.0, 3, 2 ); 167 testBinaryOpM( acos, C32, 0.0 + 0.0i, 0.0 + 0.0i, 3, 2 ); 168 testBinaryOpM( dacos, S32, 0, 0, 3, 2 ); 169 testBinaryOpM( dacos, F32, 0.0, 0.0, 3, 2 ); 170 testBinaryOpM( dacos, F64, 0.0, 0.0, 3, 2 ); 171 testBinaryOpM( dacos, C32, 0.0 + 0.0i, 0.0 + 0.0i, 3, 2 ); 172 testBinaryOpM( atan, S32, 1, 0, 3, 2 ); 173 testBinaryOpM( atan, F32, 1.0, 0.0, 3, 2 ); 174 testBinaryOpM( atan, F64, 1.0, 0.0, 3, 2 ); 175 testBinaryOpM( atan, C32, 1.0 + 1.0i, 0.0 + 0.0i, 3, 2 ); 176 testBinaryOpM( datan, S32, 1, 0, 3, 2 ); 177 testBinaryOpM( datan, F32, 1.0, 0.0, 3, 2 ); 178 testBinaryOpM( datan, F64, 1.0, 0.0, 3, 2 ); 179 testBinaryOpM( datan, C32, 1.0 + 1.0i, 0.0 + 0.0i, 3, 2 ); 180 181 182 182 // Test vector unary operations 183 183 #define testBinaryOpV(OP,TYPE,VALUE1,VALUE2,SIZE) \ … … 198 198 printFooter(stdout, "psMatrixVectorArithmetic", "Test vector psUnaryOp", true); \ 199 199 } 200 201 testBinaryOpV( abs,S32,-10,0,3);202 testBinaryOpV( abs,F32,-10.0,0.0,3);203 testBinaryOpV( abs,F64,-10.0,0.0,3);204 testBinaryOpV( abs,C32,-10.0-10.0i,0.0+0.0i,3);205 testBinaryOpV( exp,S32,10,0,3);206 testBinaryOpV( exp,F32,10.0,0.0,3);207 testBinaryOpV( exp,F64,10.0,0.0,3);208 testBinaryOpV( exp,C32,10.0+10.0i,0.0+0.0i,3);209 testBinaryOpV( ln,S32,10,0,3);210 testBinaryOpV( ln,F32,10.0,0.0,3);211 testBinaryOpV( ln,F64,10.0,0.0,3);212 testBinaryOpV( ln,C32,10.0+10.0i,0.0+0.0i,3);213 testBinaryOpV( ten,S32,3,0,3);214 testBinaryOpV( ten,F32,3.0,0.0,3);215 testBinaryOpV( ten,F64,3.0,0.0,3);216 testBinaryOpV( ten,C32,3.0+3.0i,0.0+0.0i,3);217 testBinaryOpV( log,S32,1000,0,3);218 testBinaryOpV( log,F32,1000.0,0.0,3);219 testBinaryOpV( log,F64,1000.0,0.0,3);220 testBinaryOpV( log,C32,1000.0+1000.0i,0.0+0.0i,3);221 testBinaryOpV( sin,S32,M_PI_2,0,3);222 testBinaryOpV( sin,F32,M_PI_2,0.0,3);223 testBinaryOpV( sin,F64,M_PI_2,0.0,3);224 testBinaryOpV( sin,C32,M_PI_2+1.57079632679489661923i,0.0+0.0i,3);225 testBinaryOpV( dsin,S32,90,0,3);226 testBinaryOpV( dsin,F32,90.0,0.0,3);227 testBinaryOpV( dsin,F64,90.0,0.0,3);228 testBinaryOpV( dsin,C32,90.0+90.0i,0.0+0.0i,3);229 testBinaryOpV( cos,S32,0,0,3);230 testBinaryOpV( cos,F32,0.0,0.0,3);231 testBinaryOpV( cos,F64,0.0,0.0,3);232 testBinaryOpV( cos,C32,0.0+0.0i,0.0+0.0i,3);233 testBinaryOpV( dcos,S32,0,0,3);234 testBinaryOpV( dcos,F32,0.0,0.0,3);235 testBinaryOpV( dcos,F64,0.0,0.0,3);236 testBinaryOpV( dcos,C32,0.0+0.0i,0.0+0.0i,3);237 testBinaryOpV( tan,S32,M_PI_4,0,3);238 testBinaryOpV( tan,F32,M_PI_4,0.0,3);239 testBinaryOpV( tan,F64,M_PI_4,0.0,3);240 testBinaryOpV( tan,C32,M_PI_4+0.78539816339744830962i,0.0+0.0i,3);241 testBinaryOpV( dtan,S32,45,0,3);242 testBinaryOpV( dtan,F32,45.0,0.0,3);243 testBinaryOpV( dtan,F64,45.0,0.0,3);244 testBinaryOpV( dtan,C32,45.0+45.0i,0.0+0.0i,3);245 testBinaryOpV( asin,S32,1,0,3);246 testBinaryOpV( asin,F32,1.0,0.0,3);247 testBinaryOpV( asin,F64,1.0,0.0,3);248 testBinaryOpV( asin,C32,1.0+1.0i,0.0+0.0i,3);249 testBinaryOpV( dasin,S32,1.0,0,3);250 testBinaryOpV( dasin,F32,1.0,0.0,3);251 testBinaryOpV( dasin,F64,1.0,0.0,3);252 testBinaryOpV( dasin,C32,1.0+1.0i,0.0+0.0i,3);253 testBinaryOpV( acos,S32,0,0,3);254 testBinaryOpV( acos,F32,0.0,0.0,3);255 testBinaryOpV( acos,F64,0.0,0.0,3);256 testBinaryOpV( acos,C32,0.0+0.0i,0.0+0.0i,3);257 testBinaryOpV( dacos,S32,0,0,3);258 testBinaryOpV( dacos,F32,0.0,0.0,3);259 testBinaryOpV( dacos,F64,0.0,0.0,3);260 testBinaryOpV( dacos,C32,0.0+0.0i,0.0+0.0i,3);261 testBinaryOpV( atan,S32,1,0,3);262 testBinaryOpV( atan,F32,1.0,0.0,3);263 testBinaryOpV( atan,F64,1.0,0.0,3);264 testBinaryOpV( atan,C32,1.0+1.0i,0.0+0.0i,3);265 testBinaryOpV( datan,S32,1,0,3);266 testBinaryOpV( datan,F32,1.0,0.0,3);267 testBinaryOpV( datan,F64,1.0,0.0,3);268 testBinaryOpV( datan,C32,1.0+1.0i,0.0+0.0i,3);269 200 201 testBinaryOpV( abs, S32, -10, 0, 3 ); 202 testBinaryOpV( abs, F32, -10.0, 0.0, 3 ); 203 testBinaryOpV( abs, F64, -10.0, 0.0, 3 ); 204 testBinaryOpV( abs, C32, -10.0 - 10.0i, 0.0 + 0.0i, 3 ); 205 testBinaryOpV( exp, S32, 10, 0, 3 ); 206 testBinaryOpV( exp, F32, 10.0, 0.0, 3 ); 207 testBinaryOpV( exp, F64, 10.0, 0.0, 3 ); 208 testBinaryOpV( exp, C32, 10.0 + 10.0i, 0.0 + 0.0i, 3 ); 209 testBinaryOpV( ln, S32, 10, 0, 3 ); 210 testBinaryOpV( ln, F32, 10.0, 0.0, 3 ); 211 testBinaryOpV( ln, F64, 10.0, 0.0, 3 ); 212 testBinaryOpV( ln, C32, 10.0 + 10.0i, 0.0 + 0.0i, 3 ); 213 testBinaryOpV( ten, S32, 3, 0, 3 ); 214 testBinaryOpV( ten, F32, 3.0, 0.0, 3 ); 215 testBinaryOpV( ten, F64, 3.0, 0.0, 3 ); 216 testBinaryOpV( ten, C32, 3.0 + 3.0i, 0.0 + 0.0i, 3 ); 217 testBinaryOpV( log, S32, 1000, 0, 3 ); 218 testBinaryOpV( log, F32, 1000.0, 0.0, 3 ); 219 testBinaryOpV( log, F64, 1000.0, 0.0, 3 ); 220 testBinaryOpV( log, C32, 1000.0 + 1000.0i, 0.0 + 0.0i, 3 ); 221 testBinaryOpV( sin, S32, M_PI_2, 0, 3 ); 222 testBinaryOpV( sin, F32, M_PI_2, 0.0, 3 ); 223 testBinaryOpV( sin, F64, M_PI_2, 0.0, 3 ); 224 testBinaryOpV( sin, C32, M_PI_2 + 1.57079632679489661923i, 0.0 + 0.0i, 3 ); 225 testBinaryOpV( dsin, S32, 90, 0, 3 ); 226 testBinaryOpV( dsin, F32, 90.0, 0.0, 3 ); 227 testBinaryOpV( dsin, F64, 90.0, 0.0, 3 ); 228 testBinaryOpV( dsin, C32, 90.0 + 90.0i, 0.0 + 0.0i, 3 ); 229 testBinaryOpV( cos, S32, 0, 0, 3 ); 230 testBinaryOpV( cos, F32, 0.0, 0.0, 3 ); 231 testBinaryOpV( cos, F64, 0.0, 0.0, 3 ); 232 testBinaryOpV( cos, C32, 0.0 + 0.0i, 0.0 + 0.0i, 3 ); 233 testBinaryOpV( dcos, S32, 0, 0, 3 ); 234 testBinaryOpV( dcos, F32, 0.0, 0.0, 3 ); 235 testBinaryOpV( dcos, F64, 0.0, 0.0, 3 ); 236 testBinaryOpV( dcos, C32, 0.0 + 0.0i, 0.0 + 0.0i, 3 ); 237 testBinaryOpV( tan, S32, M_PI_4, 0, 3 ); 238 testBinaryOpV( tan, F32, M_PI_4, 0.0, 3 ); 239 testBinaryOpV( tan, F64, M_PI_4, 0.0, 3 ); 240 testBinaryOpV( tan, C32, M_PI_4 + 0.78539816339744830962i, 0.0 + 0.0i, 3 ); 241 testBinaryOpV( dtan, S32, 45, 0, 3 ); 242 testBinaryOpV( dtan, F32, 45.0, 0.0, 3 ); 243 testBinaryOpV( dtan, F64, 45.0, 0.0, 3 ); 244 testBinaryOpV( dtan, C32, 45.0 + 45.0i, 0.0 + 0.0i, 3 ); 245 testBinaryOpV( asin, S32, 1, 0, 3 ); 246 testBinaryOpV( asin, F32, 1.0, 0.0, 3 ); 247 testBinaryOpV( asin, F64, 1.0, 0.0, 3 ); 248 testBinaryOpV( asin, C32, 1.0 + 1.0i, 0.0 + 0.0i, 3 ); 249 testBinaryOpV( dasin, S32, 1.0, 0, 3 ); 250 testBinaryOpV( dasin, F32, 1.0, 0.0, 3 ); 251 testBinaryOpV( dasin, F64, 1.0, 0.0, 3 ); 252 testBinaryOpV( dasin, C32, 1.0 + 1.0i, 0.0 + 0.0i, 3 ); 253 testBinaryOpV( acos, S32, 0, 0, 3 ); 254 testBinaryOpV( acos, F32, 0.0, 0.0, 3 ); 255 testBinaryOpV( acos, F64, 0.0, 0.0, 3 ); 256 testBinaryOpV( acos, C32, 0.0 + 0.0i, 0.0 + 0.0i, 3 ); 257 testBinaryOpV( dacos, S32, 0, 0, 3 ); 258 testBinaryOpV( dacos, F32, 0.0, 0.0, 3 ); 259 testBinaryOpV( dacos, F64, 0.0, 0.0, 3 ); 260 testBinaryOpV( dacos, C32, 0.0 + 0.0i, 0.0 + 0.0i, 3 ); 261 testBinaryOpV( atan, S32, 1, 0, 3 ); 262 testBinaryOpV( atan, F32, 1.0, 0.0, 3 ); 263 testBinaryOpV( atan, F64, 1.0, 0.0, 3 ); 264 testBinaryOpV( atan, C32, 1.0 + 1.0i, 0.0 + 0.0i, 3 ); 265 testBinaryOpV( datan, S32, 1, 0, 3 ); 266 testBinaryOpV( datan, F32, 1.0, 0.0, 3 ); 267 testBinaryOpV( datan, F64, 1.0, 0.0, 3 ); 268 testBinaryOpV( datan, C32, 1.0 + 1.0i, 0.0 + 0.0i, 3 ); 269 270 270 return 0; 271 271 } -
trunk/psLib/test/dataManip/tst_psStats07.c
r1281 r1365 1 1 /***************************************************************************** 2 This routine must ensure that PS_STAT_ROBUST_QUARTILE is correctly computed3 by the procedure psArrayStats().4 *****************************************************************************/2 This routine must ensure that PS_STAT_ROBUST_QUARTILE is correctly computed 3 by the procedure psArrayStats(). 4 *****************************************************************************/ 5 5 #include <stdio.h> 6 6 #include "pslib.h" … … 17 17 int main() 18 18 { 19 psStats * myStats= NULL;20 int testStatus = true;19 psStats * myStats = NULL; 20 int testStatus = true; 21 21 int globalTestStatus = true; 22 int i = 0;23 psVector *myVector = NULL;24 psVector *maskVector = NULL;22 int i = 0; 23 psVector *myVector = NULL; 24 psVector *maskVector = NULL; 25 25 // NOTE: These values were calculated by running the function on the data. 26 26 // A: They must be changed if we adjust the number of data points. 27 27 // B: We don't really know that they are correct. 28 int count = 0;29 int currentId = psMemGetId();30 int memLeaks = 0;28 int count = 0; 29 int currentId = psMemGetId(); 30 int memLeaks = 0; 31 31 float realMeanNoMask = MEAN; 32 32 float realMedianNoMask = MEAN; 33 33 float realModeNoMask = MEAN; 34 34 float realStdevNoMask = STDEV * 0.33; 35 float realLQNoMask = MEAN - ( 0.6 * STDEV);36 float realUQNoMask = MEAN + ( 0.6 * STDEV);37 float realN50NoMask = ( float) N/4;38 float realNfitNoMask = ( float) N/4;35 float realLQNoMask = MEAN - ( 0.6 * STDEV ); 36 float realUQNoMask = MEAN + ( 0.6 * STDEV ); 37 float realN50NoMask = ( float ) N / 4; 38 float realNfitNoMask = ( float ) N / 4; 39 39 float realMeanWithMask = MEAN; 40 40 float realMedianWithMask = MEAN; … … 43 43 float realLQWithMask = MEAN; 44 44 float realUQWithMask = MEAN; 45 float realN50WithMask = ( float) N/4;46 float realNfitWithMask = ( float) N/4;47 48 45 float realN50WithMask = ( float ) N / 4; 46 float realNfitWithMask = ( float ) N / 4; 47 48 49 49 /*************************************************************************/ 50 50 /* Allocate and initialize data structures */ 51 51 /*************************************************************************/ 52 myStats = psStatsAlloc( PS_STAT_ROBUST_MEAN |53 PS_STAT_ROBUST_MEDIAN |54 PS_STAT_ROBUST_MODE |55 PS_STAT_ROBUST_STDEV |56 PS_STAT_ROBUST_QUARTILE);57 58 maskVector = psVectorAlloc( N, PS_TYPE_U8);52 myStats = psStatsAlloc( PS_STAT_ROBUST_MEAN | 53 PS_STAT_ROBUST_MEDIAN | 54 PS_STAT_ROBUST_MODE | 55 PS_STAT_ROBUST_STDEV | 56 PS_STAT_ROBUST_QUARTILE ); 57 58 maskVector = psVectorAlloc( N, PS_TYPE_U8 ); 59 59 maskVector->n = N; 60 myVector = psGaussianDev( MEAN, STDEV, N);60 myVector = psGaussianDev( MEAN, STDEV, N ); 61 61 // Set the mask vector and calculate the expected maximum. 62 for ( i=0;i<N;i++) {63 if (i < (N/2)) {64 maskVector->data.U8[i] = 0;65 count++;66 } else {67 maskVector->data.U8[i] = 1;68 }69 }62 for ( i = 0;i < N;i++ ) { 63 if ( i < ( N / 2 ) ) { 64 maskVector->data.U8[ i ] = 0; 65 count++; 66 } else { 67 maskVector->data.U8[ i ] = 1; 68 } 69 } 70 70 /*************************************************************************/ 71 71 /* Call psVectorStats() with no vector mask. */ 72 72 /*************************************************************************/ 73 printPositiveTestHeader( stdout,74 "psStats functions",75 "PS_STAT_ROBUST_STATS: robust mean: no vector mask");76 77 myStats = psVectorStats( myStats, myVector, NULL, 0);78 79 printf( "The expected Mean was %f; the calculated Mean was %f\n",80 realMeanNoMask, myStats->robustMean);81 82 if ( fabs(myStats->robustMean - realMeanNoMask) < (ERROR_TOLERANCE * realMeanNoMask)) {83 testStatus = true;84 } else {85 testStatus = false;86 globalTestStatus = false;87 }88 printFooter( stdout,89 "psVector functions",90 "PS_STAT_ROBUST_STATS: robust mean: no vector mask",91 testStatus);92 93 94 printPositiveTestHeader( stdout,95 "psStats functions",96 "PS_STAT_ROBUST_STATS: robust Median: no vector mask");97 98 printf( "The expected Median was %f; the calculated Median was %f\n",99 realMedianNoMask, myStats->robustMedian);100 if ( fabs(myStats->robustMedian - realMedianNoMask) < (ERROR_TOLERANCE * realMedianNoMask)) {101 testStatus = true;102 } else {103 testStatus = false;104 globalTestStatus = false;105 }106 printFooter( stdout,107 "psVector functions",108 "PS_STAT_ROBUST_STATS: robust Median: no vector mask",109 testStatus);110 111 printPositiveTestHeader( stdout,112 "psStats functions",113 "PS_STAT_ROBUST_STATS: robust Mode: no vector mask");114 115 116 printf( "The expected Mode was %f; the calculated Mode was %f\n",117 realModeNoMask, myStats->robustMode);118 if ( fabs(myStats->robustMode - realModeNoMask) < (ERROR_TOLERANCE * realModeNoMask)) {119 testStatus = true;120 } else {121 testStatus = false;122 globalTestStatus = false;123 }124 printFooter( stdout,125 "psVector functions",126 "PS_STAT_ROBUST_STATS: robust Mode: no vector mask",127 testStatus);128 129 130 131 printPositiveTestHeader( stdout,132 "psStats functions",133 "PS_STAT_ROBUST_STATS: robust Stdev: no vector mask");134 135 printf( "The expected Stdev was %f; the calculated Stdev was %f\n",136 realStdevNoMask, myStats->robustStdev);137 if ( fabs(myStats->robustStdev - realStdevNoMask) < (ERROR_TOLERANCE * realStdevNoMask)) {138 testStatus = true;139 } else {140 testStatus = false;141 globalTestStatus = false;142 }143 printFooter( stdout,144 "psVector functions",145 "PS_STAT_ROBUST_STATS: robust Stdev: no vector mask",146 testStatus);147 148 149 150 printPositiveTestHeader( stdout,151 "psStats functions",152 "PS_STAT_ROBUST_STATS: lower quartile: no vector mask");153 154 printf( "The expected LQ was %f; the calculated LQ was %f\n",155 realLQNoMask, myStats->robustLQ);156 157 if ( fabs(myStats->robustLQ - realLQNoMask) < (ERROR_TOLERANCE * realLQNoMask)) {158 testStatus = true;159 } else {160 testStatus = false;161 globalTestStatus = false;162 }163 printFooter( stdout,164 "psVector functions",165 "PS_STAT_ROBUST_STATS: lower quartile: no vector mask",166 testStatus);167 168 169 170 printPositiveTestHeader( stdout,171 "psStats functions",172 "PS_STAT_ROBUST_STATS: upper quartile: no vector mask");173 174 printf( "The expected UQ was %f; the calculated UQ was %f\n",175 realUQNoMask, myStats->robustUQ);176 if ( fabs(myStats->robustUQ - realUQNoMask) < (ERROR_TOLERANCE * realUQNoMask)) {177 testStatus = true;178 } else {179 testStatus = false;180 globalTestStatus = false;181 }182 printFooter( stdout,183 "psVector functions",184 "PS_STAT_ROBUST_STATS: lower quartile: no vector mask",185 testStatus);186 187 188 189 printPositiveTestHeader( stdout,190 "psStats functions",191 "PS_STAT_ROBUST_STATS: robust N50: no vector mask");192 73 printPositiveTestHeader( stdout, 74 "psStats functions", 75 "PS_STAT_ROBUST_STATS: robust mean: no vector mask" ); 76 77 myStats = psVectorStats( myStats, myVector, NULL, 0 ); 78 79 printf( "The expected Mean was %.2f; the calculated Mean was %.2f\n", 80 realMeanNoMask, myStats->robustMean ); 81 82 if ( fabs( myStats->robustMean - realMeanNoMask ) < ( ERROR_TOLERANCE * realMeanNoMask ) ) { 83 testStatus = true; 84 } else { 85 testStatus = false; 86 globalTestStatus = false; 87 } 88 printFooter( stdout, 89 "psVector functions", 90 "PS_STAT_ROBUST_STATS: robust mean: no vector mask", 91 testStatus ); 92 93 94 printPositiveTestHeader( stdout, 95 "psStats functions", 96 "PS_STAT_ROBUST_STATS: robust Median: no vector mask" ); 97 98 printf( "The expected Median was %.2f; the calculated Median was %.2f\n", 99 realMedianNoMask, myStats->robustMedian ); 100 if ( fabs( myStats->robustMedian - realMedianNoMask ) < ( ERROR_TOLERANCE * realMedianNoMask ) ) { 101 testStatus = true; 102 } else { 103 testStatus = false; 104 globalTestStatus = false; 105 } 106 printFooter( stdout, 107 "psVector functions", 108 "PS_STAT_ROBUST_STATS: robust Median: no vector mask", 109 testStatus ); 110 111 printPositiveTestHeader( stdout, 112 "psStats functions", 113 "PS_STAT_ROBUST_STATS: robust Mode: no vector mask" ); 114 115 116 printf( "The expected Mode was %.2f; the calculated Mode was %.2f\n", 117 realModeNoMask, myStats->robustMode ); 118 if ( fabs( myStats->robustMode - realModeNoMask ) < ( ERROR_TOLERANCE * realModeNoMask ) ) { 119 testStatus = true; 120 } else { 121 testStatus = false; 122 globalTestStatus = false; 123 } 124 printFooter( stdout, 125 "psVector functions", 126 "PS_STAT_ROBUST_STATS: robust Mode: no vector mask", 127 testStatus ); 128 129 130 131 printPositiveTestHeader( stdout, 132 "psStats functions", 133 "PS_STAT_ROBUST_STATS: robust Stdev: no vector mask" ); 134 135 printf( "The expected Stdev was %.2f; the calculated Stdev was %.2f\n", 136 realStdevNoMask, myStats->robustStdev ); 137 if ( fabs( myStats->robustStdev - realStdevNoMask ) < ( ERROR_TOLERANCE * realStdevNoMask ) ) { 138 testStatus = true; 139 } else { 140 testStatus = false; 141 globalTestStatus = false; 142 } 143 printFooter( stdout, 144 "psVector functions", 145 "PS_STAT_ROBUST_STATS: robust Stdev: no vector mask", 146 testStatus ); 147 148 149 150 printPositiveTestHeader( stdout, 151 "psStats functions", 152 "PS_STAT_ROBUST_STATS: lower quartile: no vector mask" ); 153 154 printf( "The expected LQ was %.2f; the calculated LQ was %.2f\n", 155 realLQNoMask, myStats->robustLQ ); 156 157 if ( fabs( myStats->robustLQ - realLQNoMask ) < ( ERROR_TOLERANCE * realLQNoMask ) ) { 158 testStatus = true; 159 } else { 160 testStatus = false; 161 globalTestStatus = false; 162 } 163 printFooter( stdout, 164 "psVector functions", 165 "PS_STAT_ROBUST_STATS: lower quartile: no vector mask", 166 testStatus ); 167 168 169 170 printPositiveTestHeader( stdout, 171 "psStats functions", 172 "PS_STAT_ROBUST_STATS: upper quartile: no vector mask" ); 173 174 printf( "The expected UQ was %.2f; the calculated UQ was %.2f\n", 175 realUQNoMask, myStats->robustUQ ); 176 if ( fabs( myStats->robustUQ - realUQNoMask ) < ( ERROR_TOLERANCE * realUQNoMask ) ) { 177 testStatus = true; 178 } else { 179 testStatus = false; 180 globalTestStatus = false; 181 } 182 printFooter( stdout, 183 "psVector functions", 184 "PS_STAT_ROBUST_STATS: lower quartile: no vector mask", 185 testStatus ); 186 187 188 189 printPositiveTestHeader( stdout, 190 "psStats functions", 191 "PS_STAT_ROBUST_STATS: robust N50: no vector mask" ); 192 193 193 // XXX: 194 194 realN50NoMask = myStats->robustN50; 195 196 printf( "The expected N50 was %f; the calculated N50 was %f\n",197 realN50NoMask, myStats->robustN50);198 if ( fabs(myStats->robustN50 - realN50NoMask) < (ERROR_TOLERANCE * realN50NoMask)) {199 testStatus = true;200 } else {201 testStatus = false;202 globalTestStatus = false;203 }204 printFooter( stdout,205 "psVector functions",206 "PS_STAT_ROBUST_STATS: robust N50: no vector mask",207 testStatus);208 209 210 211 printPositiveTestHeader( stdout,212 "psStats functions",213 "PS_STAT_ROBUST_STATS: robust Nfit: no vector mask");214 195 196 printf( "The expected N50 was %.2f; the calculated N50 was %.2f\n", 197 realN50NoMask, myStats->robustN50 ); 198 if ( fabs( myStats->robustN50 - realN50NoMask ) < ( ERROR_TOLERANCE * realN50NoMask ) ) { 199 testStatus = true; 200 } else { 201 testStatus = false; 202 globalTestStatus = false; 203 } 204 printFooter( stdout, 205 "psVector functions", 206 "PS_STAT_ROBUST_STATS: robust N50: no vector mask", 207 testStatus ); 208 209 210 211 printPositiveTestHeader( stdout, 212 "psStats functions", 213 "PS_STAT_ROBUST_STATS: robust Nfit: no vector mask" ); 214 215 215 // XXX: 216 216 realNfitNoMask = myStats->robustNfit; 217 218 printf( "The expected Nfit was %f; the calculated Nfit was %f\n",219 realNfitNoMask, myStats->robustNfit);220 if ( fabs(myStats->robustNfit - realNfitNoMask) < (ERROR_TOLERANCE * realNfitNoMask)) {221 testStatus = true;222 } else {223 testStatus = false;224 globalTestStatus = false;225 }226 printFooter( stdout,227 "psVector functions",228 "PS_STAT_ROBUST_STATS: robust Nfit: no vector mask",229 testStatus);230 231 232 return (0);233 217 218 printf( "The expected Nfit was %.2f; the calculated Nfit was %.2f\n", 219 realNfitNoMask, myStats->robustNfit ); 220 if ( fabs( myStats->robustNfit - realNfitNoMask ) < ( ERROR_TOLERANCE * realNfitNoMask ) ) { 221 testStatus = true; 222 } else { 223 testStatus = false; 224 globalTestStatus = false; 225 } 226 printFooter( stdout, 227 "psVector functions", 228 "PS_STAT_ROBUST_STATS: robust Nfit: no vector mask", 229 testStatus ); 230 231 232 return ( 0 ); 233 234 234 /*************************************************************************/ 235 235 /* Call psVectorStats() with vector mask. */ 236 236 /*************************************************************************/ 237 printPositiveTestHeader( stdout,238 "psStats functions",239 "PS_STAT_ROBUST_STATS: robust mean: with vector mask");240 241 printf( "Calling psVectorStats() on a vector with elements masked.\n");242 myStats = psVectorStats( myStats, myVector, maskVector, 1);243 printf( "Called psVectorStats() on a vector with elements masked.\n");244 printf( "The expected Mean was %f; the calculated Mean was %f\n",245 realMeanWithMask, myStats->robustMean);246 if ( fabs(myStats->robustMean - realMeanWithMask) < (ERROR_TOLERANCE * realMeanWithMask)) {247 testStatus = true;248 } else {249 testStatus = false;250 globalTestStatus = false;251 }252 printFooter( stdout,253 "psVector functions",254 "PS_STAT_ROBUST_STATS: robust mean: with vector mask",255 testStatus);256 257 258 259 printPositiveTestHeader( stdout,260 "psStats functions",261 "PS_STAT_ROBUST_STATS: robust Median: with vector mask");262 263 printf( "The expected Median was %f; the calculated Median was %f\n",264 realMedianWithMask, myStats->robustMedian);265 if ( fabs(myStats->robustMedian - realMedianWithMask) < (ERROR_TOLERANCE * realMedianWithMask)) {266 testStatus = true;267 } else {268 testStatus = false;269 globalTestStatus = false;270 }271 printFooter( stdout,272 "psVector functions",273 "PS_STAT_ROBUST_STATS: robust Median: with vector mask",274 testStatus);275 276 277 278 printPositiveTestHeader( stdout,279 "psStats functions",280 "PS_STAT_ROBUST_STATS: robust Mode: with vector mask");281 282 printf( "The expected Mode was %f; the calculated Mode was %f\n",283 realModeWithMask, myStats->robustMode);284 if ( fabs(myStats->robustMode - realModeWithMask) < (ERROR_TOLERANCE * realModeWithMask)) {285 testStatus = true;286 } else {287 testStatus = false;288 globalTestStatus = false;289 }290 printFooter( stdout,291 "psVector functions",292 "PS_STAT_ROBUST_STATS: robust Mode: with vector mask",293 testStatus);294 295 296 297 printPositiveTestHeader( stdout,298 "psStats functions",299 "PS_STAT_ROBUST_STATS: robust Stdev: with vector mask");300 301 printf( "The expected Stdev was %f; the calculated Stdev was %f\n",302 realStdevWithMask, myStats->robustStdev);303 if ( fabs(myStats->robustStdev - realStdevWithMask) < (ERROR_TOLERANCE * realStdevWithMask)) {304 testStatus = true;305 } else {306 testStatus = false;307 globalTestStatus = false;308 }309 printFooter( stdout,310 "psVector functions",311 "PS_STAT_ROBUST_STATS: robust Stdev: with vector mask",312 testStatus);313 314 315 316 printPositiveTestHeader( stdout,317 "psStats functions",318 "PS_STAT_ROBUST_STATS: lower quartile: with vector mask");319 320 printf( "The expected LQ was %f; the calculated LQ was %f\n",321 realLQWithMask, myStats->robustLQ);322 if ( fabs(myStats->robustLQ - realLQWithMask) < (ERROR_TOLERANCE * realLQWithMask)) {323 testStatus = true;324 } else {325 testStatus = false;326 globalTestStatus = false;327 }328 printFooter( stdout,329 "psVector functions",330 "PS_STAT_ROBUST_STATS: lower quartile: with vector mask",331 testStatus);332 333 334 335 printPositiveTestHeader( stdout,336 "psStats functions",337 "PS_STAT_ROBUST_STATS: upper quartile: with vector mask");338 339 printf( "The expected UQ was %f; the calculated UQ was %f\n",340 realUQWithMask, myStats->robustUQ);341 if ( fabs(myStats->robustUQ - realUQWithMask) < (ERROR_TOLERANCE * realUQWithMask)) {342 testStatus = true;343 } else {344 testStatus = false;345 globalTestStatus = false;346 }347 printFooter( stdout,348 "psVector functions",349 "PS_STAT_ROBUST_STATS: lower quartile: with vector mask",350 testStatus);351 352 353 354 printPositiveTestHeader( stdout,355 "psStats functions",356 "PS_STAT_ROBUST_STATS: robust N50: with vector mask");357 358 printf( "The expected N50 was %f; the calculated N50 was %f\n",359 realN50WithMask, myStats->robustN50);360 if ( fabs(myStats->robustN50 - realN50WithMask) < (ERROR_TOLERANCE * realN50WithMask)) {361 testStatus = true;362 } else {363 testStatus = false;364 globalTestStatus = false;365 }366 printFooter( stdout,367 "psVector functions",368 "PS_STAT_ROBUST_STATS: robust N50: with vector mask",369 testStatus);370 371 372 373 printPositiveTestHeader( stdout,374 "psStats functions",375 "PS_STAT_ROBUST_STATS: robust Nfit: with vector mask");376 377 printf( "The expected Nfit was %f; the calculated Nfit was %f\n",378 realNfitWithMask, myStats->robustNfit);379 if ( fabs(myStats->robustNfit - realNfitWithMask) < (ERROR_TOLERANCE * realNfitWithMask)) {380 testStatus = true;381 } else {382 testStatus = false;383 globalTestStatus = false;384 }385 printFooter( stdout,386 "psVector functions",387 "PS_STAT_ROBUST_STATS: robust Nfit: with vector mask",388 testStatus);389 390 391 237 printPositiveTestHeader( stdout, 238 "psStats functions", 239 "PS_STAT_ROBUST_STATS: robust mean: with vector mask" ); 240 241 printf( "Calling psVectorStats() on a vector with elements masked.\n" ); 242 myStats = psVectorStats( myStats, myVector, maskVector, 1 ); 243 printf( "Called psVectorStats() on a vector with elements masked.\n" ); 244 printf( "The expected Mean was %.2f; the calculated Mean was %.2f\n", 245 realMeanWithMask, myStats->robustMean ); 246 if ( fabs( myStats->robustMean - realMeanWithMask ) < ( ERROR_TOLERANCE * realMeanWithMask ) ) { 247 testStatus = true; 248 } else { 249 testStatus = false; 250 globalTestStatus = false; 251 } 252 printFooter( stdout, 253 "psVector functions", 254 "PS_STAT_ROBUST_STATS: robust mean: with vector mask", 255 testStatus ); 256 257 258 259 printPositiveTestHeader( stdout, 260 "psStats functions", 261 "PS_STAT_ROBUST_STATS: robust Median: with vector mask" ); 262 263 printf( "The expected Median was %.2f; the calculated Median was %.2f\n", 264 realMedianWithMask, myStats->robustMedian ); 265 if ( fabs( myStats->robustMedian - realMedianWithMask ) < ( ERROR_TOLERANCE * realMedianWithMask ) ) { 266 testStatus = true; 267 } else { 268 testStatus = false; 269 globalTestStatus = false; 270 } 271 printFooter( stdout, 272 "psVector functions", 273 "PS_STAT_ROBUST_STATS: robust Median: with vector mask", 274 testStatus ); 275 276 277 278 printPositiveTestHeader( stdout, 279 "psStats functions", 280 "PS_STAT_ROBUST_STATS: robust Mode: with vector mask" ); 281 282 printf( "The expected Mode was %.2f; the calculated Mode was %.2f\n", 283 realModeWithMask, myStats->robustMode ); 284 if ( fabs( myStats->robustMode - realModeWithMask ) < ( ERROR_TOLERANCE * realModeWithMask ) ) { 285 testStatus = true; 286 } else { 287 testStatus = false; 288 globalTestStatus = false; 289 } 290 printFooter( stdout, 291 "psVector functions", 292 "PS_STAT_ROBUST_STATS: robust Mode: with vector mask", 293 testStatus ); 294 295 296 297 printPositiveTestHeader( stdout, 298 "psStats functions", 299 "PS_STAT_ROBUST_STATS: robust Stdev: with vector mask" ); 300 301 printf( "The expected Stdev was %.2f; the calculated Stdev was %.2f\n", 302 realStdevWithMask, myStats->robustStdev ); 303 if ( fabs( myStats->robustStdev - realStdevWithMask ) < ( ERROR_TOLERANCE * realStdevWithMask ) ) { 304 testStatus = true; 305 } else { 306 testStatus = false; 307 globalTestStatus = false; 308 } 309 printFooter( stdout, 310 "psVector functions", 311 "PS_STAT_ROBUST_STATS: robust Stdev: with vector mask", 312 testStatus ); 313 314 315 316 printPositiveTestHeader( stdout, 317 "psStats functions", 318 "PS_STAT_ROBUST_STATS: lower quartile: with vector mask" ); 319 320 printf( "The expected LQ was %.2f; the calculated LQ was %.2f\n", 321 realLQWithMask, myStats->robustLQ ); 322 if ( fabs( myStats->robustLQ - realLQWithMask ) < ( ERROR_TOLERANCE * realLQWithMask ) ) { 323 testStatus = true; 324 } else { 325 testStatus = false; 326 globalTestStatus = false; 327 } 328 printFooter( stdout, 329 "psVector functions", 330 "PS_STAT_ROBUST_STATS: lower quartile: with vector mask", 331 testStatus ); 332 333 334 335 printPositiveTestHeader( stdout, 336 "psStats functions", 337 "PS_STAT_ROBUST_STATS: upper quartile: with vector mask" ); 338 339 printf( "The expected UQ was %.2f; the calculated UQ was %.2f\n", 340 realUQWithMask, myStats->robustUQ ); 341 if ( fabs( myStats->robustUQ - realUQWithMask ) < ( ERROR_TOLERANCE * realUQWithMask ) ) { 342 testStatus = true; 343 } else { 344 testStatus = false; 345 globalTestStatus = false; 346 } 347 printFooter( stdout, 348 "psVector functions", 349 "PS_STAT_ROBUST_STATS: lower quartile: with vector mask", 350 testStatus ); 351 352 353 354 printPositiveTestHeader( stdout, 355 "psStats functions", 356 "PS_STAT_ROBUST_STATS: robust N50: with vector mask" ); 357 358 printf( "The expected N50 was %.2f; the calculated N50 was %.2f\n", 359 realN50WithMask, myStats->robustN50 ); 360 if ( fabs( myStats->robustN50 - realN50WithMask ) < ( ERROR_TOLERANCE * realN50WithMask ) ) { 361 testStatus = true; 362 } else { 363 testStatus = false; 364 globalTestStatus = false; 365 } 366 printFooter( stdout, 367 "psVector functions", 368 "PS_STAT_ROBUST_STATS: robust N50: with vector mask", 369 testStatus ); 370 371 372 373 printPositiveTestHeader( stdout, 374 "psStats functions", 375 "PS_STAT_ROBUST_STATS: robust Nfit: with vector mask" ); 376 377 printf( "The expected Nfit was %.2f; the calculated Nfit was %.2f\n", 378 realNfitWithMask, myStats->robustNfit ); 379 if ( fabs( myStats->robustNfit - realNfitWithMask ) < ( ERROR_TOLERANCE * realNfitWithMask ) ) { 380 testStatus = true; 381 } else { 382 testStatus = false; 383 globalTestStatus = false; 384 } 385 printFooter( stdout, 386 "psVector functions", 387 "PS_STAT_ROBUST_STATS: robust Nfit: with vector mask", 388 testStatus ); 389 390 391 392 392 /*************************************************************************/ 393 393 /* Deallocate data structures */ 394 394 /*************************************************************************/ 395 printPositiveTestHeader( stdout,396 "psStats functions",397 "psStats(): deallocating memory");398 399 psFree( myStats);400 psFree( myVector);401 psFree( maskVector);402 403 psMemCheckCorruption( 1);404 memLeaks = psMemCheckLeaks( currentId,NULL,NULL);405 if ( 0 != memLeaks) {406 psAbort(__func__,"Memory Leaks! (%d leaks)", memLeaks);407 }408 409 printFooter( stdout,410 "psVector functions",411 "psStats(): deallocating memory",412 testStatus);413 414 return ( !globalTestStatus);395 printPositiveTestHeader( stdout, 396 "psStats functions", 397 "psStats(): deallocating memory" ); 398 399 psFree( myStats ); 400 psFree( myVector ); 401 psFree( maskVector ); 402 403 psMemCheckCorruption( 1 ); 404 memLeaks = psMemCheckLeaks( currentId, NULL, NULL ); 405 if ( 0 != memLeaks ) { 406 psAbort( __func__, "Memory Leaks! (%d leaks)", memLeaks ); 407 } 408 409 printFooter( stdout, 410 "psVector functions", 411 "psStats(): deallocating memory", 412 testStatus ); 413 414 return ( !globalTestStatus ); 415 415 } -
trunk/psLib/test/dataManip/tst_psVectorFFT.c
r1193 r1365 1 1 /** @file tst_psVectorFFT.c 2 *3 * @brief Contains the tests for psFFT.[ch]4 *5 *6 * @author Robert DeSonia, MHPCC7 *8 * @version $Revision: 1.3$ $Name: not supported by cvs2svn $9 * @date $Date: 2004-07-08 01:05:01$10 *11 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii12 */2 * 3 * @brief Contains the tests for psFFT.[ch] 4 * 5 * 6 * @author Robert DeSonia, MHPCC 7 * 8 * @version $Revision: 1.4 $ $Name: not supported by cvs2svn $ 9 * @date $Date: 2004-08-02 19:43:23 $ 10 * 11 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii 12 */ 13 13 14 14 #include <math.h> … … 21 21 img = psImageAlloc(c,r,PS_TYPE_##TYP); \ 22 22 for (unsigned int row=0;row<r;row++) { \ 23 ps##TYP* imgRow = img->data.TYP[row]; \24 for (unsigned int col=0;col<c;col++) { \25 imgRow[col] = (ps##TYP)(valueFcn); \26 } \27 }28 29 static int testVectorFFT( void);30 static int testVectorRealImaginary( void);31 static int testVectorComplex( void);32 static int testVectorConjugate( void);33 static int testVectorPowerSpectrum( void);23 ps##TYP* imgRow = img->data.TYP[row]; \ 24 for (unsigned int col=0;col<c;col++) { \ 25 imgRow[col] = (ps##TYP)(valueFcn); \ 26 } \ 27 } 28 29 static int testVectorFFT( void ); 30 static int testVectorRealImaginary( void ); 31 static int testVectorComplex( void ); 32 static int testVectorConjugate( void ); 33 static int testVectorPowerSpectrum( void ); 34 34 35 35 testDescription tests[] = { 36 {testVectorFFT,600,"psVectorFFT",0,false}, 37 {testVectorRealImaginary,601,"psVectorRealImaginary",0,false}, 38 {testVectorComplex,602,"psVectorComplex",0,false}, 39 {testVectorConjugate,603,"psVectorConjugate",0,false}, 40 {testVectorPowerSpectrum,604,"psVectorPowerSpectrum",0,false}, 41 {NULL} 36 { 37 testVectorFFT, 600, "psVectorFFT", 0, false 38 }, 39 { 40 testVectorRealImaginary, 601, "psVectorRealImaginary", 0, false 41 }, 42 { 43 testVectorComplex, 602, "psVectorComplex", 0, false 44 }, 45 { 46 testVectorConjugate, 603, "psVectorConjugate", 0, false 47 }, 48 { 49 testVectorPowerSpectrum, 604, "psVectorPowerSpectrum", 0, false 50 }, 51 { 52 NULL 53 } 42 54 }; 43 44 int main(int argc, char* argv[]) 45 { 46 psLogSetLevel(PS_LOG_INFO); 47 48 if (! runTestSuite(stderr,"psFFT",tests,argc,argv) ) { 49 psAbort(__FILE__,"One or more tests failed"); 50 } 51 return 0; 52 } 53 54 int testVectorFFT(void) 55 { 56 psVector* vec = NULL; 55 56 int main( int argc, char* argv[] ) 57 { 58 psLogSetLevel( PS_LOG_INFO ); 59 60 return ( ! runTestSuite( stderr, "psFFT", tests, argc, argv ) ); 61 } 62 63 int testVectorFFT( void ) 64 { 65 psVector * vec = NULL; 57 66 psVector* vec2 = NULL; 58 67 psVector* vec3 = NULL; 59 68 60 69 /* 61 70 1. assign a vector to a sinisoid … … 65 74 5. compare to original (should be equal to within a reasonable error) 66 75 */ 67 76 68 77 // 1. assign a vector to a sinisoid 69 vec =psVectorAlloc(100,PS_TYPE_F32);70 vec->n = vec->nalloc; 71 for ( unsigned int n = 0; n<100; n++) {72 vec->data.F32[n] = sinf((psF32)n / 50.0f * M_PI);73 }74 78 vec = psVectorAlloc( 100, PS_TYPE_F32 ); 79 vec->n = vec->nalloc; 80 for ( unsigned int n = 0; n < 100; n++ ) { 81 vec->data.F32[ n ] = sinf( ( psF32 ) n / 50.0f * M_PI ); 82 } 83 75 84 // 2. perform a forward transform 76 vec2 = psVectorFFT( NULL,vec,PS_FFT_FORWARD);77 if ( vec2->type.type != PS_TYPE_C32) {78 psError(__func__,"FFT didn't produce complex values?");79 return 1;80 }81 82 85 vec2 = psVectorFFT( NULL, vec, PS_FFT_FORWARD ); 86 if ( vec2->type.type != PS_TYPE_C32 ) { 87 psError( __func__, "FFT didn't produce complex values?" ); 88 return 1; 89 } 90 91 83 92 // 3. verify that the only significant component cooresponds to the freqency of the input in step 1. 84 for ( unsigned int n = 0; n<100; n++) {85 if (n==1 || n==99) {86 if (fabsf(cabsf(vec2->data.C32[n]) - 50.0f) > 0.1f) {87 psError(__func__,"FFT didn't work for vector (n=%d)",n);88 return 2;89 }90 } else {91 if (fabsf(cabsf(vec2->data.C32[n])) > 0.1f) {92 psError(__func__,"FFT didn't work for vector (n=%d)",n);93 return 3;94 }95 }96 }97 93 for ( unsigned int n = 0; n < 100; n++ ) { 94 if ( n == 1 || n == 99 ) { 95 if ( fabsf( cabsf( vec2->data.C32[ n ] ) - 50.0f ) > 0.1f ) { 96 psError( __func__, "FFT didn't work for vector (n=%d)", n ); 97 return 2; 98 } 99 } else { 100 if ( fabsf( cabsf( vec2->data.C32[ n ] ) ) > 0.1f ) { 101 psError( __func__, "FFT didn't work for vector (n=%d)", n ); 102 return 3; 103 } 104 } 105 } 106 98 107 // 4. perform a reverse transform 99 vec3 = psVectorFFT( NULL,vec2,PS_FFT_REVERSE);100 if ( vec3->type.type != PS_TYPE_C32) {101 psError(__func__,"FFT didn't produce complex values?");102 return 4;103 }104 for ( unsigned int n = 0; n<100; n++) {105 psF32 val =sinf((psF32)n / 50.0f * M_PI);106 psF32 vecVal = crealf(vec3->data.C32[n])/100;107 if (fabsf(vecVal - val) > 0.1f) {108 psError(__func__,"Reverse FFT didn't give me the original vector back (n=%d) (%.2f vs %.2f)",109 n,vecVal,val);110 return 5;111 }112 }113 114 psFree( vec);115 psFree( vec2);116 psFree( vec3);117 118 return 0; 119 } 120 121 int testVectorRealImaginary( void)122 { 123 psVector * vec = NULL;108 vec3 = psVectorFFT( NULL, vec2, PS_FFT_REVERSE ); 109 if ( vec3->type.type != PS_TYPE_C32 ) { 110 psError( __func__, "FFT didn't produce complex values?" ); 111 return 4; 112 } 113 for ( unsigned int n = 0; n < 100; n++ ) { 114 psF32 val = sinf( ( psF32 ) n / 50.0f * M_PI ); 115 psF32 vecVal = crealf( vec3->data.C32[ n ] ) / 100; 116 if ( fabsf( vecVal - val ) > 0.1f ) { 117 psError( __func__, "Reverse FFT didn't give me the original vector back (n=%d) (%.2f vs %.2f)", 118 n, vecVal, val ); 119 return 5; 120 } 121 } 122 123 psFree( vec ); 124 psFree( vec2 ); 125 psFree( vec3 ); 126 127 return 0; 128 } 129 130 int testVectorRealImaginary( void ) 131 { 132 psVector * vec = NULL; 124 133 psVector* vec2 = NULL; 125 134 psVector* vec3 = NULL; 126 135 127 136 /* 128 137 1. create a C32 complex vector with distinctly different real and imaginary parts. … … 130 139 3. compare results to the real/imaginary components of input 131 140 */ 132 141 133 142 // 1. create a C32 complex vector with distinctly different real and imaginary parts. 134 vec =psVectorAlloc(100,PS_TYPE_C32);135 vec->n = vec->nalloc; 136 for ( unsigned int n = 0; n<100; n++) {137 vec->data.C32[n] = n + I * (n*2);138 }139 143 vec = psVectorAlloc( 100, PS_TYPE_C32 ); 144 vec->n = vec->nalloc; 145 for ( unsigned int n = 0; n < 100; n++ ) { 146 vec->data.C32[ n ] = n + I * ( n * 2 ); 147 } 148 140 149 // 2. call psVectorReal and psVectorImaginary 141 vec2 = psVectorReal( vec2,vec);142 if ( vec2 == NULL) {143 psError(__func__,"psVectorReal returned a NULL?");144 return 1;145 }146 if ( vec2->type.type != PS_TYPE_F32) {147 psError(__func__,"psVectorReal returned a wrong type (%d)?",148 vec2->type.type);149 return 2;150 }151 152 vec3 = psVectorImaginary( vec3,vec);153 if ( vec3 == NULL) {154 psError(__func__,"psVectorImaginary returned a NULL?");155 return 3;156 }157 if ( vec3->type.type != PS_TYPE_F32) {158 psError(__func__,"psVectorImaginary returned a wrong type (%d)?",159 vec3->type.type);160 return 4;161 }162 150 vec2 = psVectorReal( vec2, vec ); 151 if ( vec2 == NULL ) { 152 psError( __func__, "psVectorReal returned a NULL?" ); 153 return 1; 154 } 155 if ( vec2->type.type != PS_TYPE_F32 ) { 156 psError( __func__, "psVectorReal returned a wrong type (%d)?", 157 vec2->type.type ); 158 return 2; 159 } 160 161 vec3 = psVectorImaginary( vec3, vec ); 162 if ( vec3 == NULL ) { 163 psError( __func__, "psVectorImaginary returned a NULL?" ); 164 return 3; 165 } 166 if ( vec3->type.type != PS_TYPE_F32 ) { 167 psError( __func__, "psVectorImaginary returned a wrong type (%d)?", 168 vec3->type.type ); 169 return 4; 170 } 171 163 172 // 3. compare results to the real/imaginary components of input 164 for ( unsigned int n = 0; n<100; n++) {165 psF32 r = n;166 psF32 i = (n*2);167 if (fabsf(vec2->data.F32[n] -r) > FLT_EPSILON) {168 psError(__func__,"psVectorReal didn't return the real portion at n=%d",169 n);170 return 5;171 }172 if (fabsf(vec3->data.F32[n] -i) > FLT_EPSILON) {173 psError(__func__,"psVectorImaginary didn't return the real portion at n=%d",174 n);175 return 6;176 }177 }178 179 psFree( vec);180 psFree( vec2);181 psFree( vec3);182 183 return 0; 184 } 185 186 int testVectorComplex( void)187 { 188 psVector * vec = NULL;173 for ( unsigned int n = 0; n < 100; n++ ) { 174 psF32 r = n; 175 psF32 i = ( n * 2 ); 176 if ( fabsf( vec2->data.F32[ n ] - r ) > FLT_EPSILON ) { 177 psError( __func__, "psVectorReal didn't return the real portion at n=%d", 178 n ); 179 return 5; 180 } 181 if ( fabsf( vec3->data.F32[ n ] - i ) > FLT_EPSILON ) { 182 psError( __func__, "psVectorImaginary didn't return the real portion at n=%d", 183 n ); 184 return 6; 185 } 186 } 187 188 psFree( vec ); 189 psFree( vec2 ); 190 psFree( vec3 ); 191 192 return 0; 193 } 194 195 int testVectorComplex( void ) 196 { 197 psVector * vec = NULL; 189 198 psVector* vec2 = NULL; 190 199 psVector* vec3 = NULL; 191 200 192 201 /* 193 202 1. create two unique psF32 vectors of the same size … … 196 205 4. call psVectorReal and psVectorImaginary on step 2 results 197 206 5. compare step 4 results to input. 198 207 199 208 6. create a psF32 and a psF64 vector of the same size 200 209 7. call psVectorComplex 201 210 8. verify that an appropriate error occurred. 202 211 203 212 9. create two psf32 vectors of different sizes 204 213 10. call psVectorComplex 205 214 11. verify thet an appropriate error occurred. 206 215 */ 207 216 208 217 // 1. create two unique psF32 vectors of the same size 209 vec =psVectorAlloc(100,PS_TYPE_F32);210 vec2 =psVectorAlloc(100,PS_TYPE_F32);218 vec = psVectorAlloc( 100, PS_TYPE_F32 ); 219 vec2 = psVectorAlloc( 100, PS_TYPE_F32 ); 211 220 vec->n = vec->nalloc; 212 221 vec2->n = vec2->nalloc; 213 for ( unsigned int n = 0; n<100; n++) {214 vec->data.F32[n] = n;215 vec2->data.F32[n] = (n*2);216 }217 222 for ( unsigned int n = 0; n < 100; n++ ) { 223 vec->data.F32[ n ] = n; 224 vec2->data.F32[ n ] = ( n * 2 ); 225 } 226 218 227 // 2. call psVectorComplex 219 vec3 = psVectorComplex( vec3,vec,vec2);220 228 vec3 = psVectorComplex( vec3, vec, vec2 ); 229 221 230 // 3. verify that the result is a psC32 222 if ( vec3->type.type != PS_TYPE_C32) {223 psError(__func__,"Vector Type from psVectorComplex is not complex? (%d)",224 vec3->type.type);225 return 1;226 }227 231 if ( vec3->type.type != PS_TYPE_C32 ) { 232 psError( __func__, "Vector Type from psVectorComplex is not complex? (%d)", 233 vec3->type.type ); 234 return 1; 235 } 236 228 237 // 4. call psVectorReal and psVectorImaginary on step 2 results (not needed, just use crealf/cimagf) 229 238 // 5. compare step 4 results to input. 230 for ( unsigned int n = 0; n<100; n++) {231 if (fabsf(crealf(vec3->data.C32[n]) - n) > FLT_EPSILON ||232 fabsf(cimagf(vec3->data.C32[n]) - (n*2)) > FLT_EPSILON) {233 psError(__func__,"psVectorComplex result is invalid (n=%d, %.2f+%.2fi)",234 n,crealf(vec3->data.C32[n]),cimagf(vec3->data.C32[n]));235 return 2;236 };237 }238 239 239 for ( unsigned int n = 0; n < 100; n++ ) { 240 if ( fabsf( crealf( vec3->data.C32[ n ] ) - n ) > FLT_EPSILON || 241 fabsf( cimagf( vec3->data.C32[ n ] ) - ( n * 2 ) ) > FLT_EPSILON ) { 242 psError( __func__, "psVectorComplex result is invalid (n=%d, %.2f+%.2fi)", 243 n, crealf( vec3->data.C32[ n ] ), cimagf( vec3->data.C32[ n ] ) ); 244 return 2; 245 }; 246 } 247 248 240 249 // 6. create a psF32 and a psF64 vector of the same size 241 vec2 = psVectorRecycle( vec2,PS_TYPE_F64, 100);242 250 vec2 = psVectorRecycle( vec2, PS_TYPE_F64, 100 ); 251 243 252 // 7. call psVectorComplex 244 psLogMsg( __func__,PS_LOG_INFO, "Following should be an error (type mismatch).");245 vec3 = psVectorComplex( vec3,vec,vec2);253 psLogMsg( __func__, PS_LOG_INFO, "Following should be an error (type mismatch)." ); 254 vec3 = psVectorComplex( vec3, vec, vec2 ); 246 255 // 8. verify that an appropriate error occurred. (this partially has to be done via inspection) 247 if ( vec3 != NULL) {248 psError(__func__,"psVectorComplex returned a vector though input types mismatched.");249 return 3;250 }251 256 if ( vec3 != NULL ) { 257 psError( __func__, "psVectorComplex returned a vector though input types mismatched." ); 258 return 3; 259 } 260 252 261 // 9. create two psf32 vectors of different sizes 253 vec2 = psVectorRecycle( vec2,PS_TYPE_F32,200);254 262 vec2 = psVectorRecycle( vec2, PS_TYPE_F32, 200 ); 263 255 264 // 10. call psVectorComplex 256 vec3 = psVectorComplex( vec3,vec,vec2);257 265 vec3 = psVectorComplex( vec3, vec, vec2 ); 266 258 267 // 11. verify thet an appropriate error occurred. (actually, it isn't an error...) 259 if ( vec3->n != 100) {260 psError(__func__,"psVectorComplex returned a vector though input sizes mismatched.");261 return 4;262 }263 264 psFree( vec);265 psFree( vec2);266 psFree( vec3);267 268 return 0; 269 } 270 271 int testVectorConjugate( void)272 { 273 psVector * vec = NULL;274 psVector* vec2 = NULL; 275 268 if ( vec3->n != 100 ) { 269 psError( __func__, "psVectorComplex returned a larger vector than the input supported (%d).", vec3->n ); 270 return 4; 271 } 272 273 psFree( vec ); 274 psFree( vec2 ); 275 psFree( vec3 ); 276 277 return 0; 278 } 279 280 int testVectorConjugate( void ) 281 { 282 psVector * vec = NULL; 283 psVector* vec2 = NULL; 284 276 285 /* 277 286 1. create a psC32 with unique real and imaginary values. … … 280 289 4. verify each value is conjugate of input (a+bi -> a-bi) 281 290 */ 282 291 283 292 // 1. create a psC32 with unique real and imaginary values. 284 vec =psVectorAlloc(100,PS_TYPE_C32);285 vec->n = vec->nalloc; 286 for ( unsigned int n = 0; n<100; n++) {287 vec->data.C32[n] = n + I * (n*2);288 }289 293 vec = psVectorAlloc( 100, PS_TYPE_C32 ); 294 vec->n = vec->nalloc; 295 for ( unsigned int n = 0; n < 100; n++ ) { 296 vec->data.C32[ n ] = n + I * ( n * 2 ); 297 } 298 290 299 // 2. call psVectorConjugate 291 vec2 = psVectorConjugate( vec2,vec);292 300 vec2 = psVectorConjugate( vec2, vec ); 301 293 302 // 3. verify result is psC32 294 if ( vec2->type.type != PS_TYPE_C32) {295 psError(__func__,"the psVectorConjugate didn't return a C32 vector");296 return 1;297 }298 303 if ( vec2->type.type != PS_TYPE_C32 ) { 304 psError( __func__, "the psVectorConjugate didn't return a C32 vector" ); 305 return 1; 306 } 307 299 308 // 4. verify each value is conjugate of input (a+bi -> a-bi) 300 for ( unsigned int n = 0; n<100; n++) {301 if (fabsf(crealf(vec->data.C32[n]) - crealf(vec2->data.C32[n])) > FLT_EPSILON ||302 fabsf(cimagf(vec->data.C32[n]) + cimagf(vec2->data.C32[n])) > FLT_EPSILON) {303 psError(__func__,"psVectorComplex result is invalid (n=%d, %.2f+%.2fi)",304 n,crealf(vec2->data.C32[n]),cimagf(vec2->data.C32[n]));305 return 2;306 };307 }308 309 psFree( vec);310 psFree( vec2);311 312 return 0; 313 } 314 315 int testVectorPowerSpectrum( void)316 { 317 psVector * vec = NULL;309 for ( unsigned int n = 0; n < 100; n++ ) { 310 if ( fabsf( crealf( vec->data.C32[ n ] ) - crealf( vec2->data.C32[ n ] ) ) > FLT_EPSILON || 311 fabsf( cimagf( vec->data.C32[ n ] ) + cimagf( vec2->data.C32[ n ] ) ) > FLT_EPSILON ) { 312 psError( __func__, "psVectorComplex result is invalid (n=%d, %.2f+%.2fi)", 313 n, crealf( vec2->data.C32[ n ] ), cimagf( vec2->data.C32[ n ] ) ); 314 return 2; 315 }; 316 } 317 318 psFree( vec ); 319 psFree( vec2 ); 320 321 return 0; 322 } 323 324 int testVectorPowerSpectrum( void ) 325 { 326 psVector * vec = NULL; 318 327 psVector* vec2 = NULL; 319 328 psF32 val; 320 329 321 330 /* 322 331 1. create a psC32 vector with unique real and imaginary components … … 325 334 4. verify the values are the square of the absolute values of the original 326 335 */ 327 336 328 337 // 1. create a psC32 vector with unique real and imaginary components 329 vec =psVectorAlloc(100,PS_TYPE_C32);330 vec->n = vec->nalloc; 331 for ( unsigned int n = 0; n<100; n++) {332 vec->data.C32[n] = n + I * sinf(((psF32)n) / 50.f * M_PI);333 }334 338 vec = psVectorAlloc( 100, PS_TYPE_C32 ); 339 vec->n = vec->nalloc; 340 for ( unsigned int n = 0; n < 100; n++ ) { 341 vec->data.C32[ n ] = n + I * sinf( ( ( psF32 ) n ) / 50.f * M_PI ); 342 } 343 335 344 // 2. call psVectorPowerSpectrum 336 vec2 = psVectorPowerSpectrum( vec2,vec);337 345 vec2 = psVectorPowerSpectrum( vec2, vec ); 346 338 347 // 3. verify result is psF32 339 if ( vec2->type.type != PS_TYPE_F32) {340 psError(__func__,"the type was not PS_TYPE_F32.");341 return 1;342 }343 348 if ( vec2->type.type != PS_TYPE_F32 ) { 349 psError( __func__, "the type was not PS_TYPE_F32." ); 350 return 1; 351 } 352 344 353 // 4. verify the values are the square of the absolute values of the original 345 354 // (ADD specifies something else) … … 348 357 // P_N/2 = |C_N/2|^2/N^2 349 358 // where j = 1,2,...,(N/2-1) 350 351 val = cabsf(vec->data.C32[0])*cabsf(vec->data.C32[0])/100/100; 352 if (fabsf(vec2->data.F32[0] - val) > FLT_EPSILON) { 353 psError(__func__,"psVectorPowerSpectrum result is invalid (n=0, %.2f %.2f)", 354 vec2->data.F32[0],val); 355 return 2; 356 }; 357 358 for (unsigned int n = 1; n<50; n++) { 359 val = ( cabsf(vec->data.C32[n])*cabsf(vec->data.C32[n])+ 360 cabsf(vec->data.C32[100-n])*cabsf(vec->data.C32[100-n]) ) /100/100; 361 362 if (fabsf(val - vec2->data.F32[n]) > FLT_EPSILON) { 363 psError(__func__,"psVectorPowerSpectrum result is invalid (n=%d, %.2f %.2f)", 364 n,vec2->data.F32[n],val); 359 360 val = cabsf( vec->data.C32[ 0 ] ) * cabsf( vec->data.C32[ 0 ] ) / 100 / 100; 361 if ( fabsf( vec2->data.F32[ 0 ] - val ) > FLT_EPSILON ) { 362 psError( __func__, "psVectorPowerSpectrum result is invalid (n=0, %.2f %.2f)", 363 vec2->data.F32[ 0 ], val ); 365 364 return 2; 366 365 }; 367 } 368 369 val = cabsf(vec->data.C32[50])*cabsf(vec->data.C32[50])/100/100; 370 if (fabsf(vec2->data.F32[50] - val) > FLT_EPSILON) { 371 psError(__func__,"psVectorPowerSpectrum result is invalid (n=50, %.2f %.2f)", 372 vec2->data.F32[0],val); 373 return 2; 374 }; 375 376 psFree(vec); 377 psFree(vec2); 378 379 return 0; 380 } 366 367 for ( unsigned int n = 1; n < 50; n++ ) { 368 val = ( cabsf( vec->data.C32[ n ] ) * cabsf( vec->data.C32[ n ] ) + 369 cabsf( vec->data.C32[ 100 - n ] ) * cabsf( vec->data.C32[ 100 - n ] ) ) / 100 / 100; 370 371 if ( fabsf( val - vec2->data.F32[ n ] ) > FLT_EPSILON ) { 372 psError( __func__, "psVectorPowerSpectrum result is invalid (n=%d, %.2f %.2f)", 373 n, vec2->data.F32[ n ], val ); 374 return 2; 375 }; 376 } 377 378 val = cabsf( vec->data.C32[ 50 ] ) * cabsf( vec->data.C32[ 50 ] ) / 100 / 100; 379 if ( fabsf( vec2->data.F32[ 50 ] - val ) > FLT_EPSILON ) { 380 psError( __func__, "psVectorPowerSpectrum result is invalid (n=50, %.2f %.2f)", 381 vec2->data.F32[ 0 ], val ); 382 return 2; 383 }; 384 385 psFree( vec ); 386 psFree( vec2 ); 387 388 return 0; 389 } -
trunk/psLib/test/dataManip/verified/tst_psHist02.stdout
r1323 r1365 5 5 \**********************************************************************************/ 6 6 7 Bin number 0 bounds: (20.00 0000 - 30.000000) data (10000)7 Bin number 0 bounds: (20.00 - 30.00) data (10000) 8 8 9 9 ---> TESTPOINT PASSED (psStats functions{Allocate and Perform Histogram, no mask} | tst_psHist02.c) … … 25 25 \**********************************************************************************/ 26 26 27 Bin number 0 bounds: (20.00 0000 - 25.000000) data (5000)28 Bin number 1 bounds: (25.00 0000 - 30.000000) data (5000)27 Bin number 0 bounds: (20.00 - 25.00) data (5000) 28 Bin number 1 bounds: (25.00 - 30.00) data (5000) 29 29 30 30 ---> TESTPOINT PASSED (psStats functions{Allocate and Perform Histogram, no mask} | tst_psHist02.c) … … 47 47 \**********************************************************************************/ 48 48 49 Bin number 0 bounds: (20.00 0000 - 21.000000) data (1000)50 Bin number 1 bounds: (21.00 0000 - 22.000000) data (1000)51 Bin number 2 bounds: (22.00 0000 - 23.000000) data (1000)52 Bin number 3 bounds: (23.00 0000 - 24.000000) data (1000)53 Bin number 4 bounds: (24.00 0000 - 25.000000) data (1000)54 Bin number 5 bounds: (25.00 0000 - 26.000000) data (1000)55 Bin number 6 bounds: (26.00 0000 - 27.000000) data (1000)56 Bin number 7 bounds: (27.00 0000 - 28.000000) data (1000)57 Bin number 8 bounds: (28.00 0000 - 29.000002) data (1000)58 Bin number 9 bounds: (29.00 0002 - 30.000002) data (1000)49 Bin number 0 bounds: (20.00 - 21.00) data (1000) 50 Bin number 1 bounds: (21.00 - 22.00) data (1000) 51 Bin number 2 bounds: (22.00 - 23.00) data (1000) 52 Bin number 3 bounds: (23.00 - 24.00) data (1000) 53 Bin number 4 bounds: (24.00 - 25.00) data (1000) 54 Bin number 5 bounds: (25.00 - 26.00) data (1000) 55 Bin number 6 bounds: (26.00 - 27.00) data (1000) 56 Bin number 7 bounds: (27.00 - 28.00) data (1000) 57 Bin number 8 bounds: (28.00 - 29.00) data (1000) 58 Bin number 9 bounds: (29.00 - 30.00) data (1000) 59 59 60 60 ---> TESTPOINT PASSED (psStats functions{Allocate and Perform Histogram, no mask} | tst_psHist02.c) … … 85 85 \**********************************************************************************/ 86 86 87 Bin number 0 bounds: (20.00 0000 - 20.500000) data (500)88 Bin number 1 bounds: (20.50 0000 - 21.000000) data (500)89 Bin number 2 bounds: (21.00 0000 - 21.500000) data (500)90 Bin number 3 bounds: (21.50 0000 - 22.000000) data (500)91 Bin number 4 bounds: (22.00 0000 - 22.500000) data (500)92 Bin number 5 bounds: (22.50 0000 - 23.000000) data (500)93 Bin number 6 bounds: (23.00 0000 - 23.500000) data (500)94 Bin number 7 bounds: (23.50 0000 - 24.000000) data (500)95 Bin number 8 bounds: (24.00 0000 - 24.500002) data (500)96 Bin number 9 bounds: (24.50 0002 - 25.000002) data (500)97 Bin number 10 bounds: (25.00 0002 - 25.500002) data (500)98 Bin number 11 bounds: (25.50 0002 - 26.000002) data (500)99 Bin number 12 bounds: (26.00 0002 - 26.500002) data (500)100 Bin number 13 bounds: (26.50 0002 - 27.000002) data (500)101 Bin number 14 bounds: (27.00 0002 - 27.500002) data (500)102 Bin number 15 bounds: (27.50 0002 - 28.000002) data (500)103 Bin number 16 bounds: (28.00 0002 - 28.500002) data (500)104 Bin number 17 bounds: (28.50 0002 - 29.000002) data (500)105 Bin number 18 bounds: (29.00 0002 - 29.500002) data (500)106 Bin number 19 bounds: (29.50 0002 - 30.000002) data (500)87 Bin number 0 bounds: (20.00 - 20.50) data (500) 88 Bin number 1 bounds: (20.50 - 21.00) data (500) 89 Bin number 2 bounds: (21.00 - 21.50) data (500) 90 Bin number 3 bounds: (21.50 - 22.00) data (500) 91 Bin number 4 bounds: (22.00 - 22.50) data (500) 92 Bin number 5 bounds: (22.50 - 23.00) data (500) 93 Bin number 6 bounds: (23.00 - 23.50) data (500) 94 Bin number 7 bounds: (23.50 - 24.00) data (500) 95 Bin number 8 bounds: (24.00 - 24.50) data (500) 96 Bin number 9 bounds: (24.50 - 25.00) data (500) 97 Bin number 10 bounds: (25.00 - 25.50) data (500) 98 Bin number 11 bounds: (25.50 - 26.00) data (500) 99 Bin number 12 bounds: (26.00 - 26.50) data (500) 100 Bin number 13 bounds: (26.50 - 27.00) data (500) 101 Bin number 14 bounds: (27.00 - 27.50) data (500) 102 Bin number 15 bounds: (27.50 - 28.00) data (500) 103 Bin number 16 bounds: (28.00 - 28.50) data (500) 104 Bin number 17 bounds: (28.50 - 29.00) data (500) 105 Bin number 18 bounds: (29.00 - 29.50) data (500) 106 Bin number 19 bounds: (29.50 - 30.00) data (500) 107 107 108 108 ---> TESTPOINT PASSED (psStats functions{Allocate and Perform Histogram, no mask} | tst_psHist02.c) -
trunk/psLib/test/dataManip/verified/tst_psMatrixVectorArithmetic02.stdout
r1246 r1365 31 31 Operation: abs 32 32 Input: 33 -10.00 0000 -10.00000034 -10.00 0000 -10.00000035 -10.00 0000 -10.00000036 37 0.00 0000 0.00000038 0.00 0000 0.00000039 0.00 0000 0.00000040 41 Output: 42 10.00 0000 10.00000043 10.00 0000 10.00000044 10.00 0000 10.00000033 -10.00 -10.00 34 -10.00 -10.00 35 -10.00 -10.00 36 37 0.00 0.00 38 0.00 0.00 39 0.00 0.00 40 41 Output: 42 10.00 10.00 43 10.00 10.00 44 10.00 10.00 45 45 46 46 … … 55 55 Operation: abs 56 56 Input: 57 -10.00 0000 -10.00000058 -10.00 0000 -10.00000059 -10.00 0000 -10.00000060 61 0.00 0000 0.00000062 0.00 0000 0.00000063 0.00 0000 0.00000064 65 Output: 66 10.00 0000 10.00000067 10.00 0000 10.00000068 10.00 0000 10.00000057 -10.00 -10.00 58 -10.00 -10.00 59 -10.00 -10.00 60 61 0.00 0.00 62 0.00 0.00 63 0.00 0.00 64 65 Output: 66 10.00 10.00 67 10.00 10.00 68 10.00 10.00 69 69 70 70 … … 79 79 Operation: abs 80 80 Input: 81 -10.00 0000+-10.000000i -10.000000+-10.000000i82 -10.00 0000+-10.000000i -10.000000+-10.000000i83 -10.00 0000+-10.000000i -10.000000+-10.000000i84 85 0.00 0000+0.000000i 0.000000+0.000000i86 0.00 0000+0.000000i 0.000000+0.000000i87 0.00 0000+0.000000i 0.000000+0.000000i88 89 Output: 90 14.14 2136+0.000000i 14.142136+0.000000i91 14.14 2136+0.000000i 14.142136+0.000000i92 14.14 2136+0.000000i 14.142136+0.000000i81 -10.00-10.00i -10.00-10.00i 82 -10.00-10.00i -10.00-10.00i 83 -10.00-10.00i -10.00-10.00i 84 85 0.00+0.00i 0.00+0.00i 86 0.00+0.00i 0.00+0.00i 87 0.00+0.00i 0.00+0.00i 88 89 Output: 90 14.14+0.00i 14.14+0.00i 91 14.14+0.00i 14.14+0.00i 92 14.14+0.00i 14.14+0.00i 93 93 94 94 … … 127 127 Operation: exp 128 128 Input: 129 10.00 0000 10.000000130 10.00 0000 10.000000131 10.00 0000 10.000000132 133 0.00 0000 0.000000134 0.00 0000 0.000000135 0.00 0000 0.000000136 137 Output: 138 22026.46 4844 22026.464844139 22026.46 4844 22026.464844140 22026.46 4844 22026.464844129 10.00 10.00 130 10.00 10.00 131 10.00 10.00 132 133 0.00 0.00 134 0.00 0.00 135 0.00 0.00 136 137 Output: 138 22026.46 22026.46 139 22026.46 22026.46 140 22026.46 22026.46 141 141 142 142 … … 151 151 Operation: exp 152 152 Input: 153 10.00 0000 10.000000154 10.00 0000 10.000000155 10.00 0000 10.000000156 157 0.00 0000 0.000000158 0.00 0000 0.000000159 0.00 0000 0.000000160 161 Output: 162 22026.4 65795 22026.465795163 22026.4 65795 22026.465795164 22026.4 65795 22026.465795153 10.00 10.00 154 10.00 10.00 155 10.00 10.00 156 157 0.00 0.00 158 0.00 0.00 159 0.00 0.00 160 161 Output: 162 22026.47 22026.47 163 22026.47 22026.47 164 22026.47 22026.47 165 165 166 166 … … 175 175 Operation: exp 176 176 Input: 177 10.00 0000+10.000000i 10.000000+10.000000i178 10.00 0000+10.000000i 10.000000+10.000000i179 10.00 0000+10.000000i 10.000000+10.000000i180 181 0.00 0000+0.000000i 0.000000+0.000000i182 0.00 0000+0.000000i 0.000000+0.000000i183 0.00 0000+0.000000i 0.000000+0.000000i184 185 Output: 186 -18481.78 1250+-11982.862305i -18481.781250+-11982.862305i187 -18481.78 1250+-11982.862305i -18481.781250+-11982.862305i188 -18481.78 1250+-11982.862305i -18481.781250+-11982.862305i177 10.00+10.00i 10.00+10.00i 178 10.00+10.00i 10.00+10.00i 179 10.00+10.00i 10.00+10.00i 180 181 0.00+0.00i 0.00+0.00i 182 0.00+0.00i 0.00+0.00i 183 0.00+0.00i 0.00+0.00i 184 185 Output: 186 -18481.78-11982.86i -18481.78-11982.86i 187 -18481.78-11982.86i -18481.78-11982.86i 188 -18481.78-11982.86i -18481.78-11982.86i 189 189 190 190 … … 223 223 Operation: ln 224 224 Input: 225 10.00 0000 10.000000226 10.00 0000 10.000000227 10.00 0000 10.000000228 229 0.00 0000 0.000000230 0.00 0000 0.000000231 0.00 0000 0.000000232 233 Output: 234 2.30 2585 2.302585235 2.30 2585 2.302585236 2.30 2585 2.302585225 10.00 10.00 226 10.00 10.00 227 10.00 10.00 228 229 0.00 0.00 230 0.00 0.00 231 0.00 0.00 232 233 Output: 234 2.30 2.30 235 2.30 2.30 236 2.30 2.30 237 237 238 238 … … 247 247 Operation: ln 248 248 Input: 249 10.00 0000 10.000000250 10.00 0000 10.000000251 10.00 0000 10.000000252 253 0.00 0000 0.000000254 0.00 0000 0.000000255 0.00 0000 0.000000256 257 Output: 258 2.30 2585 2.302585259 2.30 2585 2.302585260 2.30 2585 2.302585249 10.00 10.00 250 10.00 10.00 251 10.00 10.00 252 253 0.00 0.00 254 0.00 0.00 255 0.00 0.00 256 257 Output: 258 2.30 2.30 259 2.30 2.30 260 2.30 2.30 261 261 262 262 … … 271 271 Operation: ln 272 272 Input: 273 10.00 0000+10.000000i 10.000000+10.000000i274 10.00 0000+10.000000i 10.000000+10.000000i275 10.00 0000+10.000000i 10.000000+10.000000i276 277 0.00 0000+0.000000i 0.000000+0.000000i278 0.00 0000+0.000000i 0.000000+0.000000i279 0.00 0000+0.000000i 0.000000+0.000000i280 281 Output: 282 2.6 49159+0.785398i 2.649159+0.785398i283 2.6 49159+0.785398i 2.649159+0.785398i284 2.6 49159+0.785398i 2.649159+0.785398i273 10.00+10.00i 10.00+10.00i 274 10.00+10.00i 10.00+10.00i 275 10.00+10.00i 10.00+10.00i 276 277 0.00+0.00i 0.00+0.00i 278 0.00+0.00i 0.00+0.00i 279 0.00+0.00i 0.00+0.00i 280 281 Output: 282 2.65+0.79i 2.65+0.79i 283 2.65+0.79i 2.65+0.79i 284 2.65+0.79i 2.65+0.79i 285 285 286 286 … … 319 319 Operation: ten 320 320 Input: 321 3.00 0000 3.000000322 3.00 0000 3.000000323 3.00 0000 3.000000324 325 0.00 0000 0.000000326 0.00 0000 0.000000327 0.00 0000 0.000000328 329 Output: 330 1000.00 0000 1000.000000331 1000.00 0000 1000.000000332 1000.00 0000 1000.000000321 3.00 3.00 322 3.00 3.00 323 3.00 3.00 324 325 0.00 0.00 326 0.00 0.00 327 0.00 0.00 328 329 Output: 330 1000.00 1000.00 331 1000.00 1000.00 332 1000.00 1000.00 333 333 334 334 … … 343 343 Operation: ten 344 344 Input: 345 3.00 0000 3.000000346 3.00 0000 3.000000347 3.00 0000 3.000000348 349 0.00 0000 0.000000350 0.00 0000 0.000000351 0.00 0000 0.000000352 353 Output: 354 1000.00 0000 1000.000000355 1000.00 0000 1000.000000356 1000.00 0000 1000.000000345 3.00 3.00 346 3.00 3.00 347 3.00 3.00 348 349 0.00 0.00 350 0.00 0.00 351 0.00 0.00 352 353 Output: 354 1000.00 1000.00 355 1000.00 1000.00 356 1000.00 1000.00 357 357 358 358 … … 367 367 Operation: ten 368 368 Input: 369 3.00 0000+3.000000i 3.000000+3.000000i370 3.00 0000+3.000000i 3.000000+3.000000i371 3.00 0000+3.000000i 3.000000+3.000000i372 373 0.00 0000+0.000000i 0.000000+0.000000i374 0.00 0000+0.000000i 0.000000+0.000000i375 0.00 0000+0.000000i 0.000000+0.000000i376 377 Output: 378 811.21 4661+584.748474i 811.214661+584.748474i379 811.21 4661+584.748474i 811.214661+584.748474i380 811.21 4661+584.748474i 811.214661+584.748474i369 3.00+3.00i 3.00+3.00i 370 3.00+3.00i 3.00+3.00i 371 3.00+3.00i 3.00+3.00i 372 373 0.00+0.00i 0.00+0.00i 374 0.00+0.00i 0.00+0.00i 375 0.00+0.00i 0.00+0.00i 376 377 Output: 378 811.21+584.75i 811.21+584.75i 379 811.21+584.75i 811.21+584.75i 380 811.21+584.75i 811.21+584.75i 381 381 382 382 … … 415 415 Operation: log 416 416 Input: 417 1000.00 0000 1000.000000418 1000.00 0000 1000.000000419 1000.00 0000 1000.000000420 421 0.00 0000 0.000000422 0.00 0000 0.000000423 0.00 0000 0.000000424 425 Output: 426 3.00 0000 3.000000427 3.00 0000 3.000000428 3.00 0000 3.000000417 1000.00 1000.00 418 1000.00 1000.00 419 1000.00 1000.00 420 421 0.00 0.00 422 0.00 0.00 423 0.00 0.00 424 425 Output: 426 3.00 3.00 427 3.00 3.00 428 3.00 3.00 429 429 430 430 … … 439 439 Operation: log 440 440 Input: 441 1000.00 0000 1000.000000442 1000.00 0000 1000.000000443 1000.00 0000 1000.000000444 445 0.00 0000 0.000000446 0.00 0000 0.000000447 0.00 0000 0.000000448 449 Output: 450 3.00 0000 3.000000451 3.00 0000 3.000000452 3.00 0000 3.000000441 1000.00 1000.00 442 1000.00 1000.00 443 1000.00 1000.00 444 445 0.00 0.00 446 0.00 0.00 447 0.00 0.00 448 449 Output: 450 3.00 3.00 451 3.00 3.00 452 3.00 3.00 453 453 454 454 … … 463 463 Operation: log 464 464 Input: 465 1000.00 0000+1000.000000i 1000.000000+1000.000000i466 1000.00 0000+1000.000000i 1000.000000+1000.000000i467 1000.00 0000+1000.000000i 1000.000000+1000.000000i468 469 0.00 0000+0.000000i 0.000000+0.000000i470 0.00 0000+0.000000i 0.000000+0.000000i471 0.00 0000+0.000000i 0.000000+0.000000i472 473 Output: 474 3.15 0515+0.341094i 3.150515+0.341094i475 3.15 0515+0.341094i 3.150515+0.341094i476 3.15 0515+0.341094i 3.150515+0.341094i465 1000.00+1000.00i 1000.00+1000.00i 466 1000.00+1000.00i 1000.00+1000.00i 467 1000.00+1000.00i 1000.00+1000.00i 468 469 0.00+0.00i 0.00+0.00i 470 0.00+0.00i 0.00+0.00i 471 0.00+0.00i 0.00+0.00i 472 473 Output: 474 3.15+0.34i 3.15+0.34i 475 3.15+0.34i 3.15+0.34i 476 3.15+0.34i 3.15+0.34i 477 477 478 478 … … 511 511 Operation: sin 512 512 Input: 513 1.57 0796 1.570796514 1.57 0796 1.570796515 1.57 0796 1.570796516 517 0.00 0000 0.000000518 0.00 0000 0.000000519 0.00 0000 0.000000520 521 Output: 522 1.00 0000 1.000000523 1.00 0000 1.000000524 1.00 0000 1.000000513 1.57 1.57 514 1.57 1.57 515 1.57 1.57 516 517 0.00 0.00 518 0.00 0.00 519 0.00 0.00 520 521 Output: 522 1.00 1.00 523 1.00 1.00 524 1.00 1.00 525 525 526 526 … … 535 535 Operation: sin 536 536 Input: 537 1.57 0796 1.570796538 1.57 0796 1.570796539 1.57 0796 1.570796540 541 0.00 0000 0.000000542 0.00 0000 0.000000543 0.00 0000 0.000000544 545 Output: 546 1.00 0000 1.000000547 1.00 0000 1.000000548 1.00 0000 1.000000537 1.57 1.57 538 1.57 1.57 539 1.57 1.57 540 541 0.00 0.00 542 0.00 0.00 543 0.00 0.00 544 545 Output: 546 1.00 1.00 547 1.00 1.00 548 1.00 1.00 549 549 550 550 … … 559 559 Operation: sin 560 560 Input: 561 1.57 0796+1.570796i 1.570796+1.570796i562 1.57 0796+1.570796i 1.570796+1.570796i563 1.57 0796+1.570796i 1.570796+1.570796i564 565 0.00 0000+0.000000i 0.000000+0.000000i566 0.00 0000+0.000000i 0.000000+0.000000i567 0.00 0000+0.000000i 0.000000+0.000000i568 569 Output: 570 2.5 09179+-0.000000i 2.509179+-0.000000i571 2.5 09179+-0.000000i 2.509179+-0.000000i572 2.5 09179+-0.000000i 2.509179+-0.000000i561 1.57+1.57i 1.57+1.57i 562 1.57+1.57i 1.57+1.57i 563 1.57+1.57i 1.57+1.57i 564 565 0.00+0.00i 0.00+0.00i 566 0.00+0.00i 0.00+0.00i 567 0.00+0.00i 0.00+0.00i 568 569 Output: 570 2.51-0.00i 2.51-0.00i 571 2.51-0.00i 2.51-0.00i 572 2.51-0.00i 2.51-0.00i 573 573 574 574 … … 607 607 Operation: dsin 608 608 Input: 609 90.00 0000 90.000000610 90.00 0000 90.000000611 90.00 0000 90.000000612 613 0.00 0000 0.000000614 0.00 0000 0.000000615 0.00 0000 0.000000616 617 Output: 618 1.00 0000 1.000000619 1.00 0000 1.000000620 1.00 0000 1.000000609 90.00 90.00 610 90.00 90.00 611 90.00 90.00 612 613 0.00 0.00 614 0.00 0.00 615 0.00 0.00 616 617 Output: 618 1.00 1.00 619 1.00 1.00 620 1.00 1.00 621 621 622 622 … … 631 631 Operation: dsin 632 632 Input: 633 90.00 0000 90.000000634 90.00 0000 90.000000635 90.00 0000 90.000000636 637 0.00 0000 0.000000638 0.00 0000 0.000000639 0.00 0000 0.000000640 641 Output: 642 1.00 0000 1.000000643 1.00 0000 1.000000644 1.00 0000 1.000000633 90.00 90.00 634 90.00 90.00 635 90.00 90.00 636 637 0.00 0.00 638 0.00 0.00 639 0.00 0.00 640 641 Output: 642 1.00 1.00 643 1.00 1.00 644 1.00 1.00 645 645 646 646 … … 655 655 Operation: dsin 656 656 Input: 657 90.00 0000+90.000000i 90.000000+90.000000i658 90.00 0000+90.000000i 90.000000+90.000000i659 90.00 0000+90.000000i 90.000000+90.000000i660 661 0.00 0000+0.000000i 0.000000+0.000000i662 0.00 0000+0.000000i 0.000000+0.000000i663 0.00 0000+0.000000i 0.000000+0.000000i664 665 Output: 666 2.5 09178+0.000000i 2.509178+0.000000i667 2.5 09178+0.000000i 2.509178+0.000000i668 2.5 09178+0.000000i 2.509178+0.000000i657 90.00+90.00i 90.00+90.00i 658 90.00+90.00i 90.00+90.00i 659 90.00+90.00i 90.00+90.00i 660 661 0.00+0.00i 0.00+0.00i 662 0.00+0.00i 0.00+0.00i 663 0.00+0.00i 0.00+0.00i 664 665 Output: 666 2.51-0.00i 2.51-0.00i 667 2.51-0.00i 2.51-0.00i 668 2.51-0.00i 2.51-0.00i 669 669 670 670 … … 703 703 Operation: cos 704 704 Input: 705 0.00 0000 0.000000706 0.00 0000 0.000000707 0.00 0000 0.000000708 709 0.00 0000 0.000000710 0.00 0000 0.000000711 0.00 0000 0.000000712 713 Output: 714 1.00 0000 1.000000715 1.00 0000 1.000000716 1.00 0000 1.000000705 0.00 0.00 706 0.00 0.00 707 0.00 0.00 708 709 0.00 0.00 710 0.00 0.00 711 0.00 0.00 712 713 Output: 714 1.00 1.00 715 1.00 1.00 716 1.00 1.00 717 717 718 718 … … 727 727 Operation: cos 728 728 Input: 729 0.00 0000 0.000000730 0.00 0000 0.000000731 0.00 0000 0.000000732 733 0.00 0000 0.000000734 0.00 0000 0.000000735 0.00 0000 0.000000736 737 Output: 738 1.00 0000 1.000000739 1.00 0000 1.000000740 1.00 0000 1.000000729 0.00 0.00 730 0.00 0.00 731 0.00 0.00 732 733 0.00 0.00 734 0.00 0.00 735 0.00 0.00 736 737 Output: 738 1.00 1.00 739 1.00 1.00 740 1.00 1.00 741 741 742 742 … … 751 751 Operation: cos 752 752 Input: 753 0.00 0000+0.000000i 0.000000+0.000000i754 0.00 0000+0.000000i 0.000000+0.000000i755 0.00 0000+0.000000i 0.000000+0.000000i756 757 0.00 0000+0.000000i 0.000000+0.000000i758 0.00 0000+0.000000i 0.000000+0.000000i759 0.00 0000+0.000000i 0.000000+0.000000i760 761 Output: 762 1.00 0000+-0.000000i 1.000000+-0.000000i763 1.00 0000+-0.000000i 1.000000+-0.000000i764 1.00 0000+-0.000000i 1.000000+-0.000000i753 0.00+0.00i 0.00+0.00i 754 0.00+0.00i 0.00+0.00i 755 0.00+0.00i 0.00+0.00i 756 757 0.00+0.00i 0.00+0.00i 758 0.00+0.00i 0.00+0.00i 759 0.00+0.00i 0.00+0.00i 760 761 Output: 762 1.00-0.00i 1.00-0.00i 763 1.00-0.00i 1.00-0.00i 764 1.00-0.00i 1.00-0.00i 765 765 766 766 … … 799 799 Operation: dcos 800 800 Input: 801 0.00 0000 0.000000802 0.00 0000 0.000000803 0.00 0000 0.000000804 805 0.00 0000 0.000000806 0.00 0000 0.000000807 0.00 0000 0.000000808 809 Output: 810 1.00 0000 1.000000811 1.00 0000 1.000000812 1.00 0000 1.000000801 0.00 0.00 802 0.00 0.00 803 0.00 0.00 804 805 0.00 0.00 806 0.00 0.00 807 0.00 0.00 808 809 Output: 810 1.00 1.00 811 1.00 1.00 812 1.00 1.00 813 813 814 814 … … 823 823 Operation: dcos 824 824 Input: 825 0.00 0000 0.000000826 0.00 0000 0.000000827 0.00 0000 0.000000828 829 0.00 0000 0.000000830 0.00 0000 0.000000831 0.00 0000 0.000000832 833 Output: 834 1.00 0000 1.000000835 1.00 0000 1.000000836 1.00 0000 1.000000825 0.00 0.00 826 0.00 0.00 827 0.00 0.00 828 829 0.00 0.00 830 0.00 0.00 831 0.00 0.00 832 833 Output: 834 1.00 1.00 835 1.00 1.00 836 1.00 1.00 837 837 838 838 … … 847 847 Operation: dcos 848 848 Input: 849 0.00 0000+0.000000i 0.000000+0.000000i850 0.00 0000+0.000000i 0.000000+0.000000i851 0.00 0000+0.000000i 0.000000+0.000000i852 853 0.00 0000+0.000000i 0.000000+0.000000i854 0.00 0000+0.000000i 0.000000+0.000000i855 0.00 0000+0.000000i 0.000000+0.000000i856 857 Output: 858 1.00 0000+-0.000000i 1.000000+-0.000000i859 1.00 0000+-0.000000i 1.000000+-0.000000i860 1.00 0000+-0.000000i 1.000000+-0.000000i849 0.00+0.00i 0.00+0.00i 850 0.00+0.00i 0.00+0.00i 851 0.00+0.00i 0.00+0.00i 852 853 0.00+0.00i 0.00+0.00i 854 0.00+0.00i 0.00+0.00i 855 0.00+0.00i 0.00+0.00i 856 857 Output: 858 1.00-0.00i 1.00-0.00i 859 1.00-0.00i 1.00-0.00i 860 1.00-0.00i 1.00-0.00i 861 861 862 862 … … 895 895 Operation: tan 896 896 Input: 897 0.7 85398 0.785398898 0.7 85398 0.785398899 0.7 85398 0.785398900 901 0.00 0000 0.000000902 0.00 0000 0.000000903 0.00 0000 0.000000904 905 Output: 906 1.00 0000 1.000000907 1.00 0000 1.000000908 1.00 0000 1.000000897 0.79 0.79 898 0.79 0.79 899 0.79 0.79 900 901 0.00 0.00 902 0.00 0.00 903 0.00 0.00 904 905 Output: 906 1.00 1.00 907 1.00 1.00 908 1.00 1.00 909 909 910 910 … … 919 919 Operation: tan 920 920 Input: 921 0.7 85398 0.785398922 0.7 85398 0.785398923 0.7 85398 0.785398924 925 0.00 0000 0.000000926 0.00 0000 0.000000927 0.00 0000 0.000000928 929 Output: 930 1.00 0000 1.000000931 1.00 0000 1.000000932 1.00 0000 1.000000921 0.79 0.79 922 0.79 0.79 923 0.79 0.79 924 925 0.00 0.00 926 0.00 0.00 927 0.00 0.00 928 929 Output: 930 1.00 1.00 931 1.00 1.00 932 1.00 1.00 933 933 934 934 … … 943 943 Operation: tan 944 944 Input: 945 0.7 85398+0.785398i 0.785398+0.785398i946 0.7 85398+0.785398i 0.785398+0.785398i947 0.7 85398+0.785398i 0.785398+0.785398i948 949 0.00 0000+0.000000i 0.000000+0.000000i950 0.00 0000+0.000000i 0.000000+0.000000i951 0.00 0000+0.000000i 0.000000+0.000000i952 953 Output: 954 0. 398537+0.917152i 0.398537+0.917152i955 0. 398537+0.917152i 0.398537+0.917152i956 0. 398537+0.917152i 0.398537+0.917152i945 0.79+0.79i 0.79+0.79i 946 0.79+0.79i 0.79+0.79i 947 0.79+0.79i 0.79+0.79i 948 949 0.00+0.00i 0.00+0.00i 950 0.00+0.00i 0.00+0.00i 951 0.00+0.00i 0.00+0.00i 952 953 Output: 954 0.40+0.92i 0.40+0.92i 955 0.40+0.92i 0.40+0.92i 956 0.40+0.92i 0.40+0.92i 957 957 958 958 … … 991 991 Operation: dtan 992 992 Input: 993 45.00 0000 45.000000994 45.00 0000 45.000000995 45.00 0000 45.000000996 997 0.00 0000 0.000000998 0.00 0000 0.000000999 0.00 0000 0.0000001000 1001 Output: 1002 1.00 0000 1.0000001003 1.00 0000 1.0000001004 1.00 0000 1.000000993 45.00 45.00 994 45.00 45.00 995 45.00 45.00 996 997 0.00 0.00 998 0.00 0.00 999 0.00 0.00 1000 1001 Output: 1002 1.00 1.00 1003 1.00 1.00 1004 1.00 1.00 1005 1005 1006 1006 … … 1015 1015 Operation: dtan 1016 1016 Input: 1017 45.00 0000 45.0000001018 45.00 0000 45.0000001019 45.00 0000 45.0000001020 1021 0.00 0000 0.0000001022 0.00 0000 0.0000001023 0.00 0000 0.0000001024 1025 Output: 1026 1.00 0000 1.0000001027 1.00 0000 1.0000001028 1.00 0000 1.0000001017 45.00 45.00 1018 45.00 45.00 1019 45.00 45.00 1020 1021 0.00 0.00 1022 0.00 0.00 1023 0.00 0.00 1024 1025 Output: 1026 1.00 1.00 1027 1.00 1.00 1028 1.00 1.00 1029 1029 1030 1030 … … 1039 1039 Operation: dtan 1040 1040 Input: 1041 45.00 0000+45.000000i 45.000000+45.000000i1042 45.00 0000+45.000000i 45.000000+45.000000i1043 45.00 0000+45.000000i 45.000000+45.000000i1044 1045 0.00 0000+0.000000i 0.000000+0.000000i1046 0.00 0000+0.000000i 0.000000+0.000000i1047 0.00 0000+0.000000i 0.000000+0.000000i1048 1049 Output: 1050 0. 398537+0.917152i 0.398537+0.917152i1051 0. 398537+0.917152i 0.398537+0.917152i1052 0. 398537+0.917152i 0.398537+0.917152i1041 45.00+45.00i 45.00+45.00i 1042 45.00+45.00i 45.00+45.00i 1043 45.00+45.00i 45.00+45.00i 1044 1045 0.00+0.00i 0.00+0.00i 1046 0.00+0.00i 0.00+0.00i 1047 0.00+0.00i 0.00+0.00i 1048 1049 Output: 1050 0.40+0.92i 0.40+0.92i 1051 0.40+0.92i 0.40+0.92i 1052 0.40+0.92i 0.40+0.92i 1053 1053 1054 1054 … … 1087 1087 Operation: asin 1088 1088 Input: 1089 1.00 0000 1.0000001090 1.00 0000 1.0000001091 1.00 0000 1.0000001092 1093 0.00 0000 0.0000001094 0.00 0000 0.0000001095 0.00 0000 0.0000001096 1097 Output: 1098 1.57 0796 1.5707961099 1.57 0796 1.5707961100 1.57 0796 1.5707961089 1.00 1.00 1090 1.00 1.00 1091 1.00 1.00 1092 1093 0.00 0.00 1094 0.00 0.00 1095 0.00 0.00 1096 1097 Output: 1098 1.57 1.57 1099 1.57 1.57 1100 1.57 1.57 1101 1101 1102 1102 … … 1111 1111 Operation: asin 1112 1112 Input: 1113 1.00 0000 1.0000001114 1.00 0000 1.0000001115 1.00 0000 1.0000001116 1117 0.00 0000 0.0000001118 0.00 0000 0.0000001119 0.00 0000 0.0000001120 1121 Output: 1122 1.57 0796 1.5707961123 1.57 0796 1.5707961124 1.57 0796 1.5707961113 1.00 1.00 1114 1.00 1.00 1115 1.00 1.00 1116 1117 0.00 0.00 1118 0.00 0.00 1119 0.00 0.00 1120 1121 Output: 1122 1.57 1.57 1123 1.57 1.57 1124 1.57 1.57 1125 1125 1126 1126 … … 1135 1135 Operation: asin 1136 1136 Input: 1137 1.00 0000+1.000000i 1.000000+1.000000i1138 1.00 0000+1.000000i 1.000000+1.000000i1139 1.00 0000+1.000000i 1.000000+1.000000i1140 1141 0.00 0000+0.000000i 0.000000+0.000000i1142 0.00 0000+0.000000i 0.000000+0.000000i1143 0.00 0000+0.000000i 0.000000+0.000000i1144 1145 Output: 1146 0.6 66239+1.061275i 0.666239+1.061275i1147 0.6 66239+1.061275i 0.666239+1.061275i1148 0.6 66239+1.061275i 0.666239+1.061275i1137 1.00+1.00i 1.00+1.00i 1138 1.00+1.00i 1.00+1.00i 1139 1.00+1.00i 1.00+1.00i 1140 1141 0.00+0.00i 0.00+0.00i 1142 0.00+0.00i 0.00+0.00i 1143 0.00+0.00i 0.00+0.00i 1144 1145 Output: 1146 0.67+1.06i 0.67+1.06i 1147 0.67+1.06i 0.67+1.06i 1148 0.67+1.06i 0.67+1.06i 1149 1149 1150 1150 … … 1168 1168 1169 1169 Output: 1170 89 891171 89 891172 89 891170 90 90 1171 90 90 1172 90 90 1173 1173 1174 1174 … … 1183 1183 Operation: dasin 1184 1184 Input: 1185 1.00 0000 1.0000001186 1.00 0000 1.0000001187 1.00 0000 1.0000001188 1189 0.00 0000 0.0000001190 0.00 0000 0.0000001191 0.00 0000 0.0000001192 1193 Output: 1194 90.00 0000 90.0000001195 90.00 0000 90.0000001196 90.00 0000 90.0000001185 1.00 1.00 1186 1.00 1.00 1187 1.00 1.00 1188 1189 0.00 0.00 1190 0.00 0.00 1191 0.00 0.00 1192 1193 Output: 1194 90.00 90.00 1195 90.00 90.00 1196 90.00 90.00 1197 1197 1198 1198 … … 1207 1207 Operation: dasin 1208 1208 Input: 1209 1.00 0000 1.0000001210 1.00 0000 1.0000001211 1.00 0000 1.0000001212 1213 0.00 0000 0.0000001214 0.00 0000 0.0000001215 0.00 0000 0.0000001216 1217 Output: 1218 90.00 0000 90.0000001219 90.00 0000 90.0000001220 90.00 0000 90.0000001209 1.00 1.00 1210 1.00 1.00 1211 1.00 1.00 1212 1213 0.00 0.00 1214 0.00 0.00 1215 0.00 0.00 1216 1217 Output: 1218 90.00 90.00 1219 90.00 90.00 1220 90.00 90.00 1221 1221 1222 1222 … … 1231 1231 Operation: dasin 1232 1232 Input: 1233 1.00 0000+1.000000i 1.000000+1.000000i1234 1.00 0000+1.000000i 1.000000+1.000000i1235 1.00 0000+1.000000i 1.000000+1.000000i1236 1237 0.00 0000+0.000000i 0.000000+0.000000i1238 0.00 0000+0.000000i 0.000000+0.000000i1239 0.00 0000+0.000000i 0.000000+0.000000i1240 1241 Output: 1242 38.17 2707+60.806583i 38.172707+60.806583i1243 38.17 2707+60.806583i 38.172707+60.806583i1244 38.17 2707+60.806583i 38.172707+60.806583i1233 1.00+1.00i 1.00+1.00i 1234 1.00+1.00i 1.00+1.00i 1235 1.00+1.00i 1.00+1.00i 1236 1237 0.00+0.00i 0.00+0.00i 1238 0.00+0.00i 0.00+0.00i 1239 0.00+0.00i 0.00+0.00i 1240 1241 Output: 1242 38.17+60.81i 38.17+60.81i 1243 38.17+60.81i 38.17+60.81i 1244 38.17+60.81i 38.17+60.81i 1245 1245 1246 1246 … … 1279 1279 Operation: acos 1280 1280 Input: 1281 0.00 0000 0.0000001282 0.00 0000 0.0000001283 0.00 0000 0.0000001284 1285 0.00 0000 0.0000001286 0.00 0000 0.0000001287 0.00 0000 0.0000001288 1289 Output: 1290 1.57 0796 1.5707961291 1.57 0796 1.5707961292 1.57 0796 1.5707961281 0.00 0.00 1282 0.00 0.00 1283 0.00 0.00 1284 1285 0.00 0.00 1286 0.00 0.00 1287 0.00 0.00 1288 1289 Output: 1290 1.57 1.57 1291 1.57 1.57 1292 1.57 1.57 1293 1293 1294 1294 … … 1303 1303 Operation: acos 1304 1304 Input: 1305 0.00 0000 0.0000001306 0.00 0000 0.0000001307 0.00 0000 0.0000001308 1309 0.00 0000 0.0000001310 0.00 0000 0.0000001311 0.00 0000 0.0000001312 1313 Output: 1314 1.57 0796 1.5707961315 1.57 0796 1.5707961316 1.57 0796 1.5707961305 0.00 0.00 1306 0.00 0.00 1307 0.00 0.00 1308 1309 0.00 0.00 1310 0.00 0.00 1311 0.00 0.00 1312 1313 Output: 1314 1.57 1.57 1315 1.57 1.57 1316 1.57 1.57 1317 1317 1318 1318 … … 1327 1327 Operation: acos 1328 1328 Input: 1329 0.00 0000+0.000000i 0.000000+0.000000i1330 0.00 0000+0.000000i 0.000000+0.000000i1331 0.00 0000+0.000000i 0.000000+0.000000i1332 1333 0.00 0000+0.000000i 0.000000+0.000000i1334 0.00 0000+0.000000i 0.000000+0.000000i1335 0.00 0000+0.000000i 0.000000+0.000000i1336 1337 Output: 1338 1.57 0796+-0.000000i 1.570796+-0.000000i1339 1.57 0796+-0.000000i 1.570796+-0.000000i1340 1.57 0796+-0.000000i 1.570796+-0.000000i1329 0.00+0.00i 0.00+0.00i 1330 0.00+0.00i 0.00+0.00i 1331 0.00+0.00i 0.00+0.00i 1332 1333 0.00+0.00i 0.00+0.00i 1334 0.00+0.00i 0.00+0.00i 1335 0.00+0.00i 0.00+0.00i 1336 1337 Output: 1338 1.57-0.00i 1.57-0.00i 1339 1.57-0.00i 1.57-0.00i 1340 1.57-0.00i 1.57-0.00i 1341 1341 1342 1342 … … 1360 1360 1361 1361 Output: 1362 89 891363 89 891364 89 891362 90 90 1363 90 90 1364 90 90 1365 1365 1366 1366 … … 1375 1375 Operation: dacos 1376 1376 Input: 1377 0.00 0000 0.0000001378 0.00 0000 0.0000001379 0.00 0000 0.0000001380 1381 0.00 0000 0.0000001382 0.00 0000 0.0000001383 0.00 0000 0.0000001384 1385 Output: 1386 90.00 0000 90.0000001387 90.00 0000 90.0000001388 90.00 0000 90.0000001377 0.00 0.00 1378 0.00 0.00 1379 0.00 0.00 1380 1381 0.00 0.00 1382 0.00 0.00 1383 0.00 0.00 1384 1385 Output: 1386 90.00 90.00 1387 90.00 90.00 1388 90.00 90.00 1389 1389 1390 1390 … … 1399 1399 Operation: dacos 1400 1400 Input: 1401 0.00 0000 0.0000001402 0.00 0000 0.0000001403 0.00 0000 0.0000001404 1405 0.00 0000 0.0000001406 0.00 0000 0.0000001407 0.00 0000 0.0000001408 1409 Output: 1410 90.00 0000 90.0000001411 90.00 0000 90.0000001412 90.00 0000 90.0000001401 0.00 0.00 1402 0.00 0.00 1403 0.00 0.00 1404 1405 0.00 0.00 1406 0.00 0.00 1407 0.00 0.00 1408 1409 Output: 1410 90.00 90.00 1411 90.00 90.00 1412 90.00 90.00 1413 1413 1414 1414 … … 1423 1423 Operation: dacos 1424 1424 Input: 1425 0.00 0000+0.000000i 0.000000+0.000000i1426 0.00 0000+0.000000i 0.000000+0.000000i1427 0.00 0000+0.000000i 0.000000+0.000000i1428 1429 0.00 0000+0.000000i 0.000000+0.000000i1430 0.00 0000+0.000000i 0.000000+0.000000i1431 0.00 0000+0.000000i 0.000000+0.000000i1432 1433 Output: 1434 90.00 0000+0.000000i 90.000000+0.000000i1435 90.00 0000+0.000000i 90.000000+0.000000i1436 90.00 0000+0.000000i 90.000000+0.000000i1425 0.00+0.00i 0.00+0.00i 1426 0.00+0.00i 0.00+0.00i 1427 0.00+0.00i 0.00+0.00i 1428 1429 0.00+0.00i 0.00+0.00i 1430 0.00+0.00i 0.00+0.00i 1431 0.00+0.00i 0.00+0.00i 1432 1433 Output: 1434 90.00+0.00i 90.00+0.00i 1435 90.00+0.00i 90.00+0.00i 1436 90.00+0.00i 90.00+0.00i 1437 1437 1438 1438 … … 1471 1471 Operation: atan 1472 1472 Input: 1473 1.00 0000 1.0000001474 1.00 0000 1.0000001475 1.00 0000 1.0000001476 1477 0.00 0000 0.0000001478 0.00 0000 0.0000001479 0.00 0000 0.0000001480 1481 Output: 1482 0.7 85398 0.7853981483 0.7 85398 0.7853981484 0.7 85398 0.7853981473 1.00 1.00 1474 1.00 1.00 1475 1.00 1.00 1476 1477 0.00 0.00 1478 0.00 0.00 1479 0.00 0.00 1480 1481 Output: 1482 0.79 0.79 1483 0.79 0.79 1484 0.79 0.79 1485 1485 1486 1486 … … 1495 1495 Operation: atan 1496 1496 Input: 1497 1.00 0000 1.0000001498 1.00 0000 1.0000001499 1.00 0000 1.0000001500 1501 0.00 0000 0.0000001502 0.00 0000 0.0000001503 0.00 0000 0.0000001504 1505 Output: 1506 0.7 85398 0.7853981507 0.7 85398 0.7853981508 0.7 85398 0.7853981497 1.00 1.00 1498 1.00 1.00 1499 1.00 1.00 1500 1501 0.00 0.00 1502 0.00 0.00 1503 0.00 0.00 1504 1505 Output: 1506 0.79 0.79 1507 0.79 0.79 1508 0.79 0.79 1509 1509 1510 1510 … … 1519 1519 Operation: atan 1520 1520 Input: 1521 1.00 0000+1.000000i 1.000000+1.000000i1522 1.00 0000+1.000000i 1.000000+1.000000i1523 1.00 0000+1.000000i 1.000000+1.000000i1524 1525 0.00 0000+0.000000i 0.000000+0.000000i1526 0.00 0000+0.000000i 0.000000+0.000000i1527 0.00 0000+0.000000i 0.000000+0.000000i1528 1529 Output: 1530 1.0 17222+0.402359i 1.017222+0.402359i1531 1.0 17222+0.402359i 1.017222+0.402359i1532 1.0 17222+0.402359i 1.017222+0.402359i1521 1.00+1.00i 1.00+1.00i 1522 1.00+1.00i 1.00+1.00i 1523 1.00+1.00i 1.00+1.00i 1524 1525 0.00+0.00i 0.00+0.00i 1526 0.00+0.00i 0.00+0.00i 1527 0.00+0.00i 0.00+0.00i 1528 1529 Output: 1530 1.02+0.40i 1.02+0.40i 1531 1.02+0.40i 1.02+0.40i 1532 1.02+0.40i 1.02+0.40i 1533 1533 1534 1534 … … 1567 1567 Operation: datan 1568 1568 Input: 1569 1.00 0000 1.0000001570 1.00 0000 1.0000001571 1.00 0000 1.0000001572 1573 0.00 0000 0.0000001574 0.00 0000 0.0000001575 0.00 0000 0.0000001576 1577 Output: 1578 45.00 0000 45.0000001579 45.00 0000 45.0000001580 45.00 0000 45.0000001569 1.00 1.00 1570 1.00 1.00 1571 1.00 1.00 1572 1573 0.00 0.00 1574 0.00 0.00 1575 0.00 0.00 1576 1577 Output: 1578 45.00 45.00 1579 45.00 45.00 1580 45.00 45.00 1581 1581 1582 1582 … … 1591 1591 Operation: datan 1592 1592 Input: 1593 1.00 0000 1.0000001594 1.00 0000 1.0000001595 1.00 0000 1.0000001596 1597 0.00 0000 0.0000001598 0.00 0000 0.0000001599 0.00 0000 0.0000001600 1601 Output: 1602 45.00 0000 45.0000001603 45.00 0000 45.0000001604 45.00 0000 45.0000001593 1.00 1.00 1594 1.00 1.00 1595 1.00 1.00 1596 1597 0.00 0.00 1598 0.00 0.00 1599 0.00 0.00 1600 1601 Output: 1602 45.00 45.00 1603 45.00 45.00 1604 45.00 45.00 1605 1605 1606 1606 … … 1615 1615 Operation: datan 1616 1616 Input: 1617 1.00 0000+1.000000i 1.000000+1.000000i1618 1.00 0000+1.000000i 1.000000+1.000000i1619 1.00 0000+1.000000i 1.000000+1.000000i1620 1621 0.00 0000+0.000000i 0.000000+0.000000i1622 0.00 0000+0.000000i 0.000000+0.000000i1623 0.00 0000+0.000000i 0.000000+0.000000i1624 1625 Output: 1626 58.28 2524+23.053499i 58.282524+23.053499i1627 58.28 2524+23.053499i 58.282524+23.053499i1628 58.28 2524+23.053499i 58.282524+23.053499i1617 1.00+1.00i 1.00+1.00i 1618 1.00+1.00i 1.00+1.00i 1619 1.00+1.00i 1.00+1.00i 1620 1621 0.00+0.00i 0.00+0.00i 1622 0.00+0.00i 0.00+0.00i 1623 0.00+0.00i 0.00+0.00i 1624 1625 Output: 1626 58.28+23.05i 58.28+23.05i 1627 58.28+23.05i 58.28+23.05i 1628 58.28+23.05i 58.28+23.05i 1629 1629 1630 1630 … … 1663 1663 Operation: abs 1664 1664 Input: 1665 -10.00 00001666 -10.00 00001667 -10.00 00001668 1669 0.00 00001670 0.00 00001671 0.00 00001672 1673 Output: 1674 10.00 00001675 10.00 00001676 10.00 00001665 -10.00 1666 -10.00 1667 -10.00 1668 1669 0.00 1670 0.00 1671 0.00 1672 1673 Output: 1674 10.00 1675 10.00 1676 10.00 1677 1677 1678 1678 … … 1687 1687 Operation: abs 1688 1688 Input: 1689 -10.00 00001690 -10.00 00001691 -10.00 00001692 1693 0.00 00001694 0.00 00001695 0.00 00001696 1697 Output: 1698 10.00 00001699 10.00 00001700 10.00 00001689 -10.00 1690 -10.00 1691 -10.00 1692 1693 0.00 1694 0.00 1695 0.00 1696 1697 Output: 1698 10.00 1699 10.00 1700 10.00 1701 1701 1702 1702 … … 1711 1711 Operation: abs 1712 1712 Input: 1713 -10.00 0000+-10.000000i1714 -10.00 0000+-10.000000i1715 -10.00 0000+-10.000000i1716 1717 0.00 0000+0.000000i1718 0.00 0000+0.000000i1719 0.00 0000+0.000000i1720 1721 Output: 1722 14.14 2136+0.000000i1723 14.14 2136+0.000000i1724 14.14 2136+0.000000i1713 -10.00-10.00i 1714 -10.00-10.00i 1715 -10.00-10.00i 1716 1717 0.00+0.00i 1718 0.00+0.00i 1719 0.00+0.00i 1720 1721 Output: 1722 14.14+0.00i 1723 14.14+0.00i 1724 14.14+0.00i 1725 1725 1726 1726 … … 1759 1759 Operation: exp 1760 1760 Input: 1761 10.00 00001762 10.00 00001763 10.00 00001764 1765 0.00 00001766 0.00 00001767 0.00 00001768 1769 Output: 1770 22026.46 48441771 22026.46 48441772 22026.46 48441761 10.00 1762 10.00 1763 10.00 1764 1765 0.00 1766 0.00 1767 0.00 1768 1769 Output: 1770 22026.46 1771 22026.46 1772 22026.46 1773 1773 1774 1774 … … 1783 1783 Operation: exp 1784 1784 Input: 1785 10.00 00001786 10.00 00001787 10.00 00001788 1789 0.00 00001790 0.00 00001791 0.00 00001792 1793 Output: 1794 22026.4 657951795 22026.4 657951796 22026.4 657951785 10.00 1786 10.00 1787 10.00 1788 1789 0.00 1790 0.00 1791 0.00 1792 1793 Output: 1794 22026.47 1795 22026.47 1796 22026.47 1797 1797 1798 1798 … … 1807 1807 Operation: exp 1808 1808 Input: 1809 10.00 0000+10.000000i1810 10.00 0000+10.000000i1811 10.00 0000+10.000000i1812 1813 0.00 0000+0.000000i1814 0.00 0000+0.000000i1815 0.00 0000+0.000000i1816 1817 Output: 1818 -18481.78 1250+-11982.862305i1819 -18481.78 1250+-11982.862305i1820 -18481.78 1250+-11982.862305i1809 10.00+10.00i 1810 10.00+10.00i 1811 10.00+10.00i 1812 1813 0.00+0.00i 1814 0.00+0.00i 1815 0.00+0.00i 1816 1817 Output: 1818 -18481.78-11982.86i 1819 -18481.78-11982.86i 1820 -18481.78-11982.86i 1821 1821 1822 1822 … … 1855 1855 Operation: ln 1856 1856 Input: 1857 10.00 00001858 10.00 00001859 10.00 00001860 1861 0.00 00001862 0.00 00001863 0.00 00001864 1865 Output: 1866 2.30 25851867 2.30 25851868 2.30 25851857 10.00 1858 10.00 1859 10.00 1860 1861 0.00 1862 0.00 1863 0.00 1864 1865 Output: 1866 2.30 1867 2.30 1868 2.30 1869 1869 1870 1870 … … 1879 1879 Operation: ln 1880 1880 Input: 1881 10.00 00001882 10.00 00001883 10.00 00001884 1885 0.00 00001886 0.00 00001887 0.00 00001888 1889 Output: 1890 2.30 25851891 2.30 25851892 2.30 25851881 10.00 1882 10.00 1883 10.00 1884 1885 0.00 1886 0.00 1887 0.00 1888 1889 Output: 1890 2.30 1891 2.30 1892 2.30 1893 1893 1894 1894 … … 1903 1903 Operation: ln 1904 1904 Input: 1905 10.00 0000+10.000000i1906 10.00 0000+10.000000i1907 10.00 0000+10.000000i1908 1909 0.00 0000+0.000000i1910 0.00 0000+0.000000i1911 0.00 0000+0.000000i1912 1913 Output: 1914 2.6 49159+0.785398i1915 2.6 49159+0.785398i1916 2.6 49159+0.785398i1905 10.00+10.00i 1906 10.00+10.00i 1907 10.00+10.00i 1908 1909 0.00+0.00i 1910 0.00+0.00i 1911 0.00+0.00i 1912 1913 Output: 1914 2.65+0.79i 1915 2.65+0.79i 1916 2.65+0.79i 1917 1917 1918 1918 … … 1951 1951 Operation: ten 1952 1952 Input: 1953 3.00 00001954 3.00 00001955 3.00 00001956 1957 0.00 00001958 0.00 00001959 0.00 00001960 1961 Output: 1962 1000.00 00001963 1000.00 00001964 1000.00 00001953 3.00 1954 3.00 1955 3.00 1956 1957 0.00 1958 0.00 1959 0.00 1960 1961 Output: 1962 1000.00 1963 1000.00 1964 1000.00 1965 1965 1966 1966 … … 1975 1975 Operation: ten 1976 1976 Input: 1977 3.00 00001978 3.00 00001979 3.00 00001980 1981 0.00 00001982 0.00 00001983 0.00 00001984 1985 Output: 1986 1000.00 00001987 1000.00 00001988 1000.00 00001977 3.00 1978 3.00 1979 3.00 1980 1981 0.00 1982 0.00 1983 0.00 1984 1985 Output: 1986 1000.00 1987 1000.00 1988 1000.00 1989 1989 1990 1990 … … 1999 1999 Operation: ten 2000 2000 Input: 2001 3.00 0000+3.000000i2002 3.00 0000+3.000000i2003 3.00 0000+3.000000i2004 2005 0.00 0000+0.000000i2006 0.00 0000+0.000000i2007 0.00 0000+0.000000i2008 2009 Output: 2010 811.21 4661+584.748474i2011 811.21 4661+584.748474i2012 811.21 4661+584.748474i2001 3.00+3.00i 2002 3.00+3.00i 2003 3.00+3.00i 2004 2005 0.00+0.00i 2006 0.00+0.00i 2007 0.00+0.00i 2008 2009 Output: 2010 811.21+584.75i 2011 811.21+584.75i 2012 811.21+584.75i 2013 2013 2014 2014 … … 2047 2047 Operation: log 2048 2048 Input: 2049 1000.00 00002050 1000.00 00002051 1000.00 00002052 2053 0.00 00002054 0.00 00002055 0.00 00002056 2057 Output: 2058 3.00 00002059 3.00 00002060 3.00 00002049 1000.00 2050 1000.00 2051 1000.00 2052 2053 0.00 2054 0.00 2055 0.00 2056 2057 Output: 2058 3.00 2059 3.00 2060 3.00 2061 2061 2062 2062 … … 2071 2071 Operation: log 2072 2072 Input: 2073 1000.00 00002074 1000.00 00002075 1000.00 00002076 2077 0.00 00002078 0.00 00002079 0.00 00002080 2081 Output: 2082 3.00 00002083 3.00 00002084 3.00 00002073 1000.00 2074 1000.00 2075 1000.00 2076 2077 0.00 2078 0.00 2079 0.00 2080 2081 Output: 2082 3.00 2083 3.00 2084 3.00 2085 2085 2086 2086 … … 2095 2095 Operation: log 2096 2096 Input: 2097 1000.00 0000+1000.000000i2098 1000.00 0000+1000.000000i2099 1000.00 0000+1000.000000i2100 2101 0.00 0000+0.000000i2102 0.00 0000+0.000000i2103 0.00 0000+0.000000i2104 2105 Output: 2106 3.15 0515+0.341094i2107 3.15 0515+0.341094i2108 3.15 0515+0.341094i2097 1000.00+1000.00i 2098 1000.00+1000.00i 2099 1000.00+1000.00i 2100 2101 0.00+0.00i 2102 0.00+0.00i 2103 0.00+0.00i 2104 2105 Output: 2106 3.15+0.34i 2107 3.15+0.34i 2108 3.15+0.34i 2109 2109 2110 2110 … … 2143 2143 Operation: sin 2144 2144 Input: 2145 1.57 07962146 1.57 07962147 1.57 07962148 2149 0.00 00002150 0.00 00002151 0.00 00002152 2153 Output: 2154 1.00 00002155 1.00 00002156 1.00 00002145 1.57 2146 1.57 2147 1.57 2148 2149 0.00 2150 0.00 2151 0.00 2152 2153 Output: 2154 1.00 2155 1.00 2156 1.00 2157 2157 2158 2158 … … 2167 2167 Operation: sin 2168 2168 Input: 2169 1.57 07962170 1.57 07962171 1.57 07962172 2173 0.00 00002174 0.00 00002175 0.00 00002176 2177 Output: 2178 1.00 00002179 1.00 00002180 1.00 00002169 1.57 2170 1.57 2171 1.57 2172 2173 0.00 2174 0.00 2175 0.00 2176 2177 Output: 2178 1.00 2179 1.00 2180 1.00 2181 2181 2182 2182 … … 2191 2191 Operation: sin 2192 2192 Input: 2193 1.57 0796+1.570796i2194 1.57 0796+1.570796i2195 1.57 0796+1.570796i2196 2197 0.00 0000+0.000000i2198 0.00 0000+0.000000i2199 0.00 0000+0.000000i2200 2201 Output: 2202 2.5 09179+-0.000000i2203 2.5 09179+-0.000000i2204 2.5 09179+-0.000000i2193 1.57+1.57i 2194 1.57+1.57i 2195 1.57+1.57i 2196 2197 0.00+0.00i 2198 0.00+0.00i 2199 0.00+0.00i 2200 2201 Output: 2202 2.51-0.00i 2203 2.51-0.00i 2204 2.51-0.00i 2205 2205 2206 2206 … … 2239 2239 Operation: dsin 2240 2240 Input: 2241 90.00 00002242 90.00 00002243 90.00 00002244 2245 0.00 00002246 0.00 00002247 0.00 00002248 2249 Output: 2250 1.00 00002251 1.00 00002252 1.00 00002241 90.00 2242 90.00 2243 90.00 2244 2245 0.00 2246 0.00 2247 0.00 2248 2249 Output: 2250 1.00 2251 1.00 2252 1.00 2253 2253 2254 2254 … … 2263 2263 Operation: dsin 2264 2264 Input: 2265 90.00 00002266 90.00 00002267 90.00 00002268 2269 0.00 00002270 0.00 00002271 0.00 00002272 2273 Output: 2274 1.00 00002275 1.00 00002276 1.00 00002265 90.00 2266 90.00 2267 90.00 2268 2269 0.00 2270 0.00 2271 0.00 2272 2273 Output: 2274 1.00 2275 1.00 2276 1.00 2277 2277 2278 2278 … … 2287 2287 Operation: dsin 2288 2288 Input: 2289 90.00 0000+90.000000i2290 90.00 0000+90.000000i2291 90.00 0000+90.000000i2292 2293 0.00 0000+0.000000i2294 0.00 0000+0.000000i2295 0.00 0000+0.000000i2296 2297 Output: 2298 2.5 09178+0.000000i2299 2.5 09178+0.000000i2300 2.5 09178+0.000000i2289 90.00+90.00i 2290 90.00+90.00i 2291 90.00+90.00i 2292 2293 0.00+0.00i 2294 0.00+0.00i 2295 0.00+0.00i 2296 2297 Output: 2298 2.51-0.00i 2299 2.51-0.00i 2300 2.51-0.00i 2301 2301 2302 2302 … … 2335 2335 Operation: cos 2336 2336 Input: 2337 0.00 00002338 0.00 00002339 0.00 00002340 2341 0.00 00002342 0.00 00002343 0.00 00002344 2345 Output: 2346 1.00 00002347 1.00 00002348 1.00 00002337 0.00 2338 0.00 2339 0.00 2340 2341 0.00 2342 0.00 2343 0.00 2344 2345 Output: 2346 1.00 2347 1.00 2348 1.00 2349 2349 2350 2350 … … 2359 2359 Operation: cos 2360 2360 Input: 2361 0.00 00002362 0.00 00002363 0.00 00002364 2365 0.00 00002366 0.00 00002367 0.00 00002368 2369 Output: 2370 1.00 00002371 1.00 00002372 1.00 00002361 0.00 2362 0.00 2363 0.00 2364 2365 0.00 2366 0.00 2367 0.00 2368 2369 Output: 2370 1.00 2371 1.00 2372 1.00 2373 2373 2374 2374 … … 2383 2383 Operation: cos 2384 2384 Input: 2385 0.00 0000+0.000000i2386 0.00 0000+0.000000i2387 0.00 0000+0.000000i2388 2389 0.00 0000+0.000000i2390 0.00 0000+0.000000i2391 0.00 0000+0.000000i2392 2393 Output: 2394 1.00 0000+-0.000000i2395 1.00 0000+-0.000000i2396 1.00 0000+-0.000000i2385 0.00+0.00i 2386 0.00+0.00i 2387 0.00+0.00i 2388 2389 0.00+0.00i 2390 0.00+0.00i 2391 0.00+0.00i 2392 2393 Output: 2394 1.00-0.00i 2395 1.00-0.00i 2396 1.00-0.00i 2397 2397 2398 2398 … … 2431 2431 Operation: dcos 2432 2432 Input: 2433 0.00 00002434 0.00 00002435 0.00 00002436 2437 0.00 00002438 0.00 00002439 0.00 00002440 2441 Output: 2442 1.00 00002443 1.00 00002444 1.00 00002433 0.00 2434 0.00 2435 0.00 2436 2437 0.00 2438 0.00 2439 0.00 2440 2441 Output: 2442 1.00 2443 1.00 2444 1.00 2445 2445 2446 2446 … … 2455 2455 Operation: dcos 2456 2456 Input: 2457 0.00 00002458 0.00 00002459 0.00 00002460 2461 0.00 00002462 0.00 00002463 0.00 00002464 2465 Output: 2466 1.00 00002467 1.00 00002468 1.00 00002457 0.00 2458 0.00 2459 0.00 2460 2461 0.00 2462 0.00 2463 0.00 2464 2465 Output: 2466 1.00 2467 1.00 2468 1.00 2469 2469 2470 2470 … … 2479 2479 Operation: dcos 2480 2480 Input: 2481 0.00 0000+0.000000i2482 0.00 0000+0.000000i2483 0.00 0000+0.000000i2484 2485 0.00 0000+0.000000i2486 0.00 0000+0.000000i2487 0.00 0000+0.000000i2488 2489 Output: 2490 1.00 0000+-0.000000i2491 1.00 0000+-0.000000i2492 1.00 0000+-0.000000i2481 0.00+0.00i 2482 0.00+0.00i 2483 0.00+0.00i 2484 2485 0.00+0.00i 2486 0.00+0.00i 2487 0.00+0.00i 2488 2489 Output: 2490 1.00-0.00i 2491 1.00-0.00i 2492 1.00-0.00i 2493 2493 2494 2494 … … 2527 2527 Operation: tan 2528 2528 Input: 2529 0.7 853982530 0.7 853982531 0.7 853982532 2533 0.00 00002534 0.00 00002535 0.00 00002536 2537 Output: 2538 1.00 00002539 1.00 00002540 1.00 00002529 0.79 2530 0.79 2531 0.79 2532 2533 0.00 2534 0.00 2535 0.00 2536 2537 Output: 2538 1.00 2539 1.00 2540 1.00 2541 2541 2542 2542 … … 2551 2551 Operation: tan 2552 2552 Input: 2553 0.7 853982554 0.7 853982555 0.7 853982556 2557 0.00 00002558 0.00 00002559 0.00 00002560 2561 Output: 2562 1.00 00002563 1.00 00002564 1.00 00002553 0.79 2554 0.79 2555 0.79 2556 2557 0.00 2558 0.00 2559 0.00 2560 2561 Output: 2562 1.00 2563 1.00 2564 1.00 2565 2565 2566 2566 … … 2575 2575 Operation: tan 2576 2576 Input: 2577 0.7 85398+0.785398i2578 0.7 85398+0.785398i2579 0.7 85398+0.785398i2580 2581 0.00 0000+0.000000i2582 0.00 0000+0.000000i2583 0.00 0000+0.000000i2584 2585 Output: 2586 0. 398537+0.917152i2587 0. 398537+0.917152i2588 0. 398537+0.917152i2577 0.79+0.79i 2578 0.79+0.79i 2579 0.79+0.79i 2580 2581 0.00+0.00i 2582 0.00+0.00i 2583 0.00+0.00i 2584 2585 Output: 2586 0.40+0.92i 2587 0.40+0.92i 2588 0.40+0.92i 2589 2589 2590 2590 … … 2623 2623 Operation: dtan 2624 2624 Input: 2625 45.00 00002626 45.00 00002627 45.00 00002628 2629 0.00 00002630 0.00 00002631 0.00 00002632 2633 Output: 2634 1.00 00002635 1.00 00002636 1.00 00002625 45.00 2626 45.00 2627 45.00 2628 2629 0.00 2630 0.00 2631 0.00 2632 2633 Output: 2634 1.00 2635 1.00 2636 1.00 2637 2637 2638 2638 … … 2647 2647 Operation: dtan 2648 2648 Input: 2649 45.00 00002650 45.00 00002651 45.00 00002652 2653 0.00 00002654 0.00 00002655 0.00 00002656 2657 Output: 2658 1.00 00002659 1.00 00002660 1.00 00002649 45.00 2650 45.00 2651 45.00 2652 2653 0.00 2654 0.00 2655 0.00 2656 2657 Output: 2658 1.00 2659 1.00 2660 1.00 2661 2661 2662 2662 … … 2671 2671 Operation: dtan 2672 2672 Input: 2673 45.00 0000+45.000000i2674 45.00 0000+45.000000i2675 45.00 0000+45.000000i2676 2677 0.00 0000+0.000000i2678 0.00 0000+0.000000i2679 0.00 0000+0.000000i2680 2681 Output: 2682 0. 398537+0.917152i2683 0. 398537+0.917152i2684 0. 398537+0.917152i2673 45.00+45.00i 2674 45.00+45.00i 2675 45.00+45.00i 2676 2677 0.00+0.00i 2678 0.00+0.00i 2679 0.00+0.00i 2680 2681 Output: 2682 0.40+0.92i 2683 0.40+0.92i 2684 0.40+0.92i 2685 2685 2686 2686 … … 2719 2719 Operation: asin 2720 2720 Input: 2721 1.00 00002722 1.00 00002723 1.00 00002724 2725 0.00 00002726 0.00 00002727 0.00 00002728 2729 Output: 2730 1.57 07962731 1.57 07962732 1.57 07962721 1.00 2722 1.00 2723 1.00 2724 2725 0.00 2726 0.00 2727 0.00 2728 2729 Output: 2730 1.57 2731 1.57 2732 1.57 2733 2733 2734 2734 … … 2743 2743 Operation: asin 2744 2744 Input: 2745 1.00 00002746 1.00 00002747 1.00 00002748 2749 0.00 00002750 0.00 00002751 0.00 00002752 2753 Output: 2754 1.57 07962755 1.57 07962756 1.57 07962745 1.00 2746 1.00 2747 1.00 2748 2749 0.00 2750 0.00 2751 0.00 2752 2753 Output: 2754 1.57 2755 1.57 2756 1.57 2757 2757 2758 2758 … … 2767 2767 Operation: asin 2768 2768 Input: 2769 1.00 0000+1.000000i2770 1.00 0000+1.000000i2771 1.00 0000+1.000000i2772 2773 0.00 0000+0.000000i2774 0.00 0000+0.000000i2775 0.00 0000+0.000000i2776 2777 Output: 2778 0.6 66239+1.061275i2779 0.6 66239+1.061275i2780 0.6 66239+1.061275i2769 1.00+1.00i 2770 1.00+1.00i 2771 1.00+1.00i 2772 2773 0.00+0.00i 2774 0.00+0.00i 2775 0.00+0.00i 2776 2777 Output: 2778 0.67+1.06i 2779 0.67+1.06i 2780 0.67+1.06i 2781 2781 2782 2782 … … 2800 2800 2801 2801 Output: 2802 89 2803 89 2804 89 2802 90 2803 90 2804 90 2805 2805 2806 2806 … … 2815 2815 Operation: dasin 2816 2816 Input: 2817 1.00 00002818 1.00 00002819 1.00 00002820 2821 0.00 00002822 0.00 00002823 0.00 00002824 2825 Output: 2826 90.00 00002827 90.00 00002828 90.00 00002817 1.00 2818 1.00 2819 1.00 2820 2821 0.00 2822 0.00 2823 0.00 2824 2825 Output: 2826 90.00 2827 90.00 2828 90.00 2829 2829 2830 2830 … … 2839 2839 Operation: dasin 2840 2840 Input: 2841 1.00 00002842 1.00 00002843 1.00 00002844 2845 0.00 00002846 0.00 00002847 0.00 00002848 2849 Output: 2850 90.00 00002851 90.00 00002852 90.00 00002841 1.00 2842 1.00 2843 1.00 2844 2845 0.00 2846 0.00 2847 0.00 2848 2849 Output: 2850 90.00 2851 90.00 2852 90.00 2853 2853 2854 2854 … … 2863 2863 Operation: dasin 2864 2864 Input: 2865 1.00 0000+1.000000i2866 1.00 0000+1.000000i2867 1.00 0000+1.000000i2868 2869 0.00 0000+0.000000i2870 0.00 0000+0.000000i2871 0.00 0000+0.000000i2872 2873 Output: 2874 38.17 2707+60.806583i2875 38.17 2707+60.806583i2876 38.17 2707+60.806583i2865 1.00+1.00i 2866 1.00+1.00i 2867 1.00+1.00i 2868 2869 0.00+0.00i 2870 0.00+0.00i 2871 0.00+0.00i 2872 2873 Output: 2874 38.17+60.81i 2875 38.17+60.81i 2876 38.17+60.81i 2877 2877 2878 2878 … … 2911 2911 Operation: acos 2912 2912 Input: 2913 0.00 00002914 0.00 00002915 0.00 00002916 2917 0.00 00002918 0.00 00002919 0.00 00002920 2921 Output: 2922 1.57 07962923 1.57 07962924 1.57 07962913 0.00 2914 0.00 2915 0.00 2916 2917 0.00 2918 0.00 2919 0.00 2920 2921 Output: 2922 1.57 2923 1.57 2924 1.57 2925 2925 2926 2926 … … 2935 2935 Operation: acos 2936 2936 Input: 2937 0.00 00002938 0.00 00002939 0.00 00002940 2941 0.00 00002942 0.00 00002943 0.00 00002944 2945 Output: 2946 1.57 07962947 1.57 07962948 1.57 07962937 0.00 2938 0.00 2939 0.00 2940 2941 0.00 2942 0.00 2943 0.00 2944 2945 Output: 2946 1.57 2947 1.57 2948 1.57 2949 2949 2950 2950 … … 2959 2959 Operation: acos 2960 2960 Input: 2961 0.00 0000+0.000000i2962 0.00 0000+0.000000i2963 0.00 0000+0.000000i2964 2965 0.00 0000+0.000000i2966 0.00 0000+0.000000i2967 0.00 0000+0.000000i2968 2969 Output: 2970 1.57 0796+-0.000000i2971 1.57 0796+-0.000000i2972 1.57 0796+-0.000000i2961 0.00+0.00i 2962 0.00+0.00i 2963 0.00+0.00i 2964 2965 0.00+0.00i 2966 0.00+0.00i 2967 0.00+0.00i 2968 2969 Output: 2970 1.57-0.00i 2971 1.57-0.00i 2972 1.57-0.00i 2973 2973 2974 2974 … … 2992 2992 2993 2993 Output: 2994 89 2995 89 2996 89 2994 90 2995 90 2996 90 2997 2997 2998 2998 … … 3007 3007 Operation: dacos 3008 3008 Input: 3009 0.00 00003010 0.00 00003011 0.00 00003012 3013 0.00 00003014 0.00 00003015 0.00 00003016 3017 Output: 3018 90.00 00003019 90.00 00003020 90.00 00003009 0.00 3010 0.00 3011 0.00 3012 3013 0.00 3014 0.00 3015 0.00 3016 3017 Output: 3018 90.00 3019 90.00 3020 90.00 3021 3021 3022 3022 … … 3031 3031 Operation: dacos 3032 3032 Input: 3033 0.00 00003034 0.00 00003035 0.00 00003036 3037 0.00 00003038 0.00 00003039 0.00 00003040 3041 Output: 3042 90.00 00003043 90.00 00003044 90.00 00003033 0.00 3034 0.00 3035 0.00 3036 3037 0.00 3038 0.00 3039 0.00 3040 3041 Output: 3042 90.00 3043 90.00 3044 90.00 3045 3045 3046 3046 … … 3055 3055 Operation: dacos 3056 3056 Input: 3057 0.00 0000+0.000000i3058 0.00 0000+0.000000i3059 0.00 0000+0.000000i3060 3061 0.00 0000+0.000000i3062 0.00 0000+0.000000i3063 0.00 0000+0.000000i3064 3065 Output: 3066 90.00 0000+0.000000i3067 90.00 0000+0.000000i3068 90.00 0000+0.000000i3057 0.00+0.00i 3058 0.00+0.00i 3059 0.00+0.00i 3060 3061 0.00+0.00i 3062 0.00+0.00i 3063 0.00+0.00i 3064 3065 Output: 3066 90.00+0.00i 3067 90.00+0.00i 3068 90.00+0.00i 3069 3069 3070 3070 … … 3103 3103 Operation: atan 3104 3104 Input: 3105 1.00 00003106 1.00 00003107 1.00 00003108 3109 0.00 00003110 0.00 00003111 0.00 00003112 3113 Output: 3114 0.7 853983115 0.7 853983116 0.7 853983105 1.00 3106 1.00 3107 1.00 3108 3109 0.00 3110 0.00 3111 0.00 3112 3113 Output: 3114 0.79 3115 0.79 3116 0.79 3117 3117 3118 3118 … … 3127 3127 Operation: atan 3128 3128 Input: 3129 1.00 00003130 1.00 00003131 1.00 00003132 3133 0.00 00003134 0.00 00003135 0.00 00003136 3137 Output: 3138 0.7 853983139 0.7 853983140 0.7 853983129 1.00 3130 1.00 3131 1.00 3132 3133 0.00 3134 0.00 3135 0.00 3136 3137 Output: 3138 0.79 3139 0.79 3140 0.79 3141 3141 3142 3142 … … 3151 3151 Operation: atan 3152 3152 Input: 3153 1.00 0000+1.000000i3154 1.00 0000+1.000000i3155 1.00 0000+1.000000i3156 3157 0.00 0000+0.000000i3158 0.00 0000+0.000000i3159 0.00 0000+0.000000i3160 3161 Output: 3162 1.0 17222+0.402359i3163 1.0 17222+0.402359i3164 1.0 17222+0.402359i3153 1.00+1.00i 3154 1.00+1.00i 3155 1.00+1.00i 3156 3157 0.00+0.00i 3158 0.00+0.00i 3159 0.00+0.00i 3160 3161 Output: 3162 1.02+0.40i 3163 1.02+0.40i 3164 1.02+0.40i 3165 3165 3166 3166 … … 3199 3199 Operation: datan 3200 3200 Input: 3201 1.00 00003202 1.00 00003203 1.00 00003204 3205 0.00 00003206 0.00 00003207 0.00 00003208 3209 Output: 3210 45.00 00003211 45.00 00003212 45.00 00003201 1.00 3202 1.00 3203 1.00 3204 3205 0.00 3206 0.00 3207 0.00 3208 3209 Output: 3210 45.00 3211 45.00 3212 45.00 3213 3213 3214 3214 … … 3223 3223 Operation: datan 3224 3224 Input: 3225 1.00 00003226 1.00 00003227 1.00 00003228 3229 0.00 00003230 0.00 00003231 0.00 00003232 3233 Output: 3234 45.00 00003235 45.00 00003236 45.00 00003225 1.00 3226 1.00 3227 1.00 3228 3229 0.00 3230 0.00 3231 0.00 3232 3233 Output: 3234 45.00 3235 45.00 3236 45.00 3237 3237 3238 3238 … … 3247 3247 Operation: datan 3248 3248 Input: 3249 1.00 0000+1.000000i3250 1.00 0000+1.000000i3251 1.00 0000+1.000000i3252 3253 0.00 0000+0.000000i3254 0.00 0000+0.000000i3255 0.00 0000+0.000000i3256 3257 Output: 3258 58.28 2524+23.053499i3259 58.28 2524+23.053499i3260 58.28 2524+23.053499i3261 3262 3263 ---> TESTPOINT PASSED (psMatrixVectorArithmetic{Test vector psUnaryOp} | tst_psMatrixVectorArithmetic02.c) 3264 3249 1.00+1.00i 3250 1.00+1.00i 3251 1.00+1.00i 3252 3253 0.00+0.00i 3254 0.00+0.00i 3255 0.00+0.00i 3256 3257 Output: 3258 58.28+23.05i 3259 58.28+23.05i 3260 58.28+23.05i 3261 3262 3263 ---> TESTPOINT PASSED (psMatrixVectorArithmetic{Test vector psUnaryOp} | tst_psMatrixVectorArithmetic02.c) 3264 -
trunk/psLib/test/dataManip/verified/tst_psStats07.stdout
r1310 r1365 6 6 7 7 (LQBinNum, UQBinNum, maxBinNum) is (15, 35, 27) 8 The expected Mean was 32.00 0000; the calculated Mean was 32.5881618 The expected Mean was 32.00; the calculated Mean was 32.59 9 9 10 10 ---> TESTPOINT PASSED (psVector functions{PS_STAT_ROBUST_STATS: robust mean: no vector mask} | tst_psStats07.c) … … 16 16 \**********************************************************************************/ 17 17 18 The expected Median was 32.00 0000; the calculated Median was 32.48546618 The expected Median was 32.00; the calculated Median was 32.49 19 19 20 20 ---> TESTPOINT PASSED (psVector functions{PS_STAT_ROBUST_STATS: robust Median: no vector mask} | tst_psStats07.c) … … 26 26 \**********************************************************************************/ 27 27 28 The expected Mode was 32.00 0000; the calculated Mode was 32.58865528 The expected Mode was 32.00; the calculated Mode was 32.59 29 29 30 30 ---> TESTPOINT PASSED (psVector functions{PS_STAT_ROBUST_STATS: robust Mode: no vector mask} | tst_psStats07.c) … … 36 36 \**********************************************************************************/ 37 37 38 The expected Stdev was 0.66 0000; the calculated Stdev was 0.65557238 The expected Stdev was 0.66; the calculated Stdev was 0.66 39 39 40 40 ---> TESTPOINT PASSED (psVector functions{PS_STAT_ROBUST_STATS: robust Stdev: no vector mask} | tst_psStats07.c) … … 46 46 \**********************************************************************************/ 47 47 48 The expected LQ was 30. 799999; the calculated LQ was 30.01807048 The expected LQ was 30.80; the calculated LQ was 30.02 49 49 50 50 ---> TESTPOINT PASSED (psVector functions{PS_STAT_ROBUST_STATS: lower quartile: no vector mask} | tst_psStats07.c) … … 56 56 \**********************************************************************************/ 57 57 58 The expected UQ was 33.20 0001; the calculated UQ was 34.32588658 The expected UQ was 33.20; the calculated UQ was 34.33 59 59 60 60 ---> TESTPOINT PASSED (psVector functions{PS_STAT_ROBUST_STATS: lower quartile: no vector mask} | tst_psStats07.c) … … 66 66 \**********************************************************************************/ 67 67 68 The expected N50 was 143.00 0000; the calculated N50 was 143.00000068 The expected N50 was 143.00; the calculated N50 was 143.00 69 69 70 70 ---> TESTPOINT PASSED (psVector functions{PS_STAT_ROBUST_STATS: robust N50: no vector mask} | tst_psStats07.c) … … 76 76 \**********************************************************************************/ 77 77 78 The expected Nfit was 80.00 0000; the calculated Nfit was 80.00000078 The expected Nfit was 80.00; the calculated Nfit was 80.00 79 79 80 80 ---> TESTPOINT PASSED (psVector functions{PS_STAT_ROBUST_STATS: robust Nfit: no vector mask} | tst_psStats07.c)
Note:
See TracChangeset
for help on using the changeset viewer.
