int main(int argc, char ** argv) { Vector * vector_a = Vector_create(1024); for (int i = 0; i < vector_a->length; ++i) { vector_a->data[i][0] = i; vector_a->data[i][1] = i; } Vector * vector_b = Vector_create(1024); Vector * vector_c = Vector_create(1024); for (int i = 0; i < vector_b->length; ++i) { vector_b->data[i][0] = i + 1; } struct timeval stop, start; gettimeofday(&start, NULL); for (int i = 0; i < 100000; ++i) { Vector_multiply_real(vector_c, vector_a, vector_b); } gettimeofday(&stop, NULL); printf("took %lu\n", stop.tv_usec - start.tv_usec); Vector * vector_d = Vector_create(2); Vector * vector_e = Vector_create(2); float d_data[] = {1, 1, 2, 2}; float e_data[] = {3, -1, 1, 1}; for (int i = 0; i < 4; ++i) { vector_d->data[i / 2][i % 2] = d_data[i]; vector_e->data[i / 2][i % 2] = e_data[i]; } Vector_print(vector_d); Vector_print(vector_e); Vector_multiply(vector_d, vector_d, vector_e); Vector_print(vector_d); Vector_destroy(vector_a); Vector_destroy(vector_b); Vector_destroy(vector_c); Vector_destroy(vector_d); Vector_destroy(vector_e); }
Vector * Vector_create(int length) { Vector * vector = (Vector *)malloc(sizeof(Vector)); if (!vector) { return NULL; } FFTW_COMPLEX * data = (FFTW_COMPLEX*)FFTW_MALLOC(sizeof(FFTW_COMPLEX) * length); if (!data) { Vector_destroy(vector); return NULL; } vector->data = data; vector->length = length; return vector; }
// Test your vector here int main() { Vector* temp = Vector_create(); //create a vector Vector_append( temp, "a");//1 Vector_append( temp, "b");//2 Vector_append( temp, "c");//3 Vector_append( temp, "d");//4 Vector_append( temp, NULL);//5 Vector_append( temp, "f");//6 Vector_append( temp, "g");//7 Vector_append( temp, NULL);//8 Vector_append( temp, "");//9 Vector_append( temp, "h");//10 Vector_append( temp, "i");//11 Vector_append( temp, NULL);//12 Vector_resize( temp, 20 ); if( Vector_size(temp) != 20 || strcmp( Vector_get( temp, 10 ), "i" ) || Vector_get( temp, 15 ) != NULL ) perror( "something wrong.\n"); //done for append, resize, get, size Vector_set( temp, 19, "caibi" ); Vector_insert( temp, 20, "niubi" ); Vector_insert( temp, 30, "wori" ); if( Vector_size(temp) != 31 || strcmp( Vector_get( temp, 19 ), "caibi" ) || strcmp( Vector_get( temp, 20 ), "niubi" ) || Vector_get( temp, 15 ) != NULL || strcmp( Vector_get( temp, 30 ), "wori" ) ) perror( "something wrong.\n"); Vector_delete( temp, 11 ); Vector_delete( temp, 27 ); Vector_delete( temp, 1 ); Vector_delete( temp, 18 ); if( Vector_size(temp) != 27 || strcmp( Vector_get( temp, 4 ), "f" ) || strcmp( Vector_get( temp, 26 ), "wori") || Vector_get( temp, 18 ) !=NULL || strcmp( Vector_get( temp, 17 ), "caibi") ) perror( "something wrong.\n"); Vector_destroy( temp ); return 0; }