//matrix_sub static void matrix_sub_TwoMatrixesWithElementsSixTenTwoElevenAndOneTwoThreeFour_MatrixWithElementsFiveEightMinusOneSeven(void ** state) { matrix_t * mat1 = matrix_test(6,10,2,11); matrix_t * mat2 = matrix_test(1,2,3,4); assert_int_equal(matrix_getElementOfMatrix(matrix_sub(mat1,mat2),0,0),5); assert_int_equal(matrix_getElementOfMatrix(matrix_sub(mat1,mat2),0,1),8); assert_int_equal(matrix_getElementOfMatrix(matrix_sub(mat1,mat2),1,0),-1); assert_int_equal(matrix_getElementOfMatrix(matrix_sub(mat1,mat2),1,1),7); matrix_free(mat1); matrix_free(mat2); }
//matrix_add static void matrix_add_TwoMatrixesWithElementsOneTwoThreeFour_MatrixWithElementsTwoFourSixEight(void ** state) { matrix_t * mat1 =matrix_test(1,2,3,4); matrix_t * mat2 =matrix_test(1,2,3,4); assert_int_equal(matrix_getElementOfMatrix(matrix_add(mat1,mat2),0,0),2); assert_int_equal(matrix_getElementOfMatrix(matrix_add(mat1,mat2),0,1),4); assert_int_equal(matrix_getElementOfMatrix(matrix_add(mat1,mat2),1,0),6); assert_int_equal(matrix_getElementOfMatrix(matrix_add(mat1,mat2),1,1),8); matrix_free(mat1); matrix_free(mat2); }
//multiplication of two matrixes static void matrix_mult_TwoMatrixesWithElementsOneTwoThreeFour_TwoMatrixesWithElementsSevenTenFifteenTwentytwo(void ** state) { matrix_t * mat1 = matrix_test(1,2,3,4); matrix_t * mat2 = matrix_test(1,2,3,4); assert_int_equal(matrix_getElementOfMatrix(matrix_mult(mat1,mat2),0,0),7); assert_int_equal(matrix_getElementOfMatrix(matrix_mult(mat1,mat2),0,1),10); assert_int_equal(matrix_getElementOfMatrix(matrix_mult(mat1,mat2),1,0),15); assert_int_equal(matrix_getElementOfMatrix(matrix_mult(mat1,mat2),1,1),22); matrix_free(mat1); matrix_free(mat2); }
/* Function: core_bench_matrix Benchmark function Iterate <matrix_test> N times, changing the matrix values slightly by a constant amount each time. */ ee_u16 core_bench_matrix(mat_params *p, ee_s16 seed, ee_u16 crc) { ee_u32 N=p->N; MATRES *C=p->C; MATDAT *A=p->A; MATDAT *B=p->B; MATDAT val=(MATDAT)seed; crc=crc16(matrix_test(N,C,A,B,val),crc); return crc; }
//transposed matrix static void matrix_transpos_MatrixWithElementsFiveTenFifteenTwenty_matrixWithElementsFiveFifteenTenTwenty(void ** state) { matrix_t * mat1 = matrix_test(5,10,15,20); assert_int_equal(matrix_getElementOfMatrix(matrix_transpos(mat1),0,0),5); assert_int_equal(matrix_getElementOfMatrix(matrix_transpos(mat1),1,0),10); assert_int_equal(matrix_getElementOfMatrix(matrix_transpos(mat1),0,1),15); assert_int_equal(matrix_getElementOfMatrix(matrix_transpos(mat1),1,1),20); matrix_free(mat1); }
//multiplication matrix on vector static void matrix_mult_vector_MatrixWithElementsSixTenTwoElevenVectorWithCoordinatesFiveSeven_MatrixWithElementsThirtyFiftyFourteenSeventyseven(void ** state) { matrix_t * mat1 = matrix_test(6,10,2,11); vector_t * vec1 = vector_test(5,7); assert_int_equal(matrix_getElementOfMatrix(matrix_mult_vector(mat1,vec1),0,0),30); assert_int_equal(matrix_getElementOfMatrix(matrix_mult_vector(mat1,vec1),0,1),50); assert_int_equal(matrix_getElementOfMatrix(matrix_mult_vector(mat1,vec1),1,0),14); assert_int_equal(matrix_getElementOfMatrix(matrix_mult_vector(mat1,vec1),1,1),77); matrix_free(mat1); vector_free(vec1); }
//multiplication matrix on number static void matrix_mult_byNumber_MatrixWithElementsFiveTenFifteenTwenty(void**state) { matrix_t * mat1 = matrix_test(1,2,3,4); assert_int_equal(matrix_getElementOfMatrix(matrix_mult_byNumber(mat1,5),0,0),5); assert_int_equal(matrix_getElementOfMatrix(matrix_mult_byNumber(mat1,5),0,1),10); assert_int_equal(matrix_getElementOfMatrix(matrix_mult_byNumber(mat1,5),1,0),15); assert_int_equal(matrix_getElementOfMatrix(matrix_mult_byNumber(mat1,5),1,1),20); matrix_free(mat1); }
int main(int argc,char **argv) { #if (MATRIX_TEST) matrix_test(); #elif (MATRIX_UTIL_TEST) matrix_util_test(); #else //unsigned int layer_sizes[] = {400, 25, 10}; unsigned int num_layers = 3; unsigned int num_labels = 10; double lambda = 0.8; /* if(argc < 2) { printf("need exactly 1 argument for vector length\n"); return 0; } unsigned int iteration_number = atoi(argv[1]); */ unsigned int iteration_number = 100; matrix_list_t* theta = matrix_list_constructor(2); //theta->matrix_list[0] = matrix_random(25, 401, .12); //theta->matrix_list[1] = matrix_random(10, 26, .12); theta->matrix_list[0] = load_from_file("theta1.csv", 25, 401); theta->matrix_list[1] = load_from_file("theta2.csv", 10, 26); assert(theta->num == 2); assert(theta->matrix_list[0]->rows == 25 && theta->matrix_list[0]->cols == 401); assert(theta->matrix_list[1]->rows == 10 && theta->matrix_list[1]->cols == 26); /* matrix_t* X = load_from_file("X.csv", 5000, 400); matrix_t* tmp = load_from_file("y.csv", 5000, 1); matrix_t* y = matrix_transpose(tmp); free_matrix(tmp); */ gradient_descent(&theta, num_layers, num_labels, lambda, iteration_number); //free_matrix(X); //free_matrix(y); free_matrix_list(theta); #endif return 1; }