void test18(void) { RowNode_handle pR=0; int i,j; printf("\n== INSERT ELEMENTS IN ROW LIST (WITH ZEROES AND OVERWRITES) ==\n"); for(i=0;i<30;++i) { for(j=0;j<30;++j) { insert_element2(&pR,i,j,(i+j)%2); } } printf_rows(pR,"%i",30); printf("\n"); /* overwrite some */ for(i=0;i<10;++i) { for(j=0;j<10;++j) { insert_element2(&pR,3*i,3*j,(3*i+2*j)%5); } } /* overwrite with 0 */ for(i=0;i<30;++i) { for(j=0;j<30;++j) { if ((i+j)%8==0) insert_element2(&pR,i,j,0); } } printf_rows(pR,"%i",30); printf("\n"); print_rows(pR); printf("\n"); free_rows(pR); }
void test24(void) { RowNode_handle pR1=0; int i,j; printf("\n===== DETERMINANT ==========================\n"); for(i=0;i<7;++i) { insert_element2(&pR1,i,i,2); for(j=i+1;j<7;++j) { insert_element2(&pR1,i,j,i+j); } } printf("Matrix \n"); printf_rows(pR1,"%i ",7); printf("\n"); printf("Determinant = %i\n",determinant(pR1,7)); free_rows(pR1); pR1=0; for(i=0;i<5;++i) { for(j=0;j<5;++j) { int s=i+j; if( s==2 || s==3 || s==7 || s==8 ) insert_element2(&pR1,i,j,1); } } printf("Matrix \n"); printf_rows(pR1,"%i ",5); printf("\n"); printf("Determinant = %i\n",determinant(pR1,5)); free_rows(pR1); }
RowNode_handle transpose( ConstRowNode_handle p_r ) { /* pointer to hold transposed matrix */ RowNode_handle transpose = 0; /* walk columns */ ElementNode_handle columns; /* iterate entire matrix */ while(p_r) { /* start iterating the columns */ columns = p_r->elements; while(columns) { /* add node to transpose matrix */ insert_element2(&transpose, columns->pos, p_r->pos, columns->data); /* move pointer */ columns = columns->next; } /* move to next row */ p_r = p_r->next; } /* remove any zero'd out rows */ /*ZeroRowRemover(&transpose);*/ /* return the transposed matrix */ return transpose; }
RowNode_handle mult( ConstRowNode_handle p_r1, ConstRowNode_handle p_r2 ) { RowNode_handle transpose2 = transpose(p_r2); RowNode_handle multiplication =0, p2 = transpose2; ConstElementNode_handle columns1 = 0, columns2 = 0; int product = 0; while(p_r1) { columns1 = p_r1->elements; p2 = transpose2; while(p2) { columns2 = p2->elements; product = scalar_product(columns1, columns2); insert_element2(&multiplication, p_r1->pos, p2->pos, product); p2 = p2->next; } p_r1 = p_r1->next; } return multiplication; }
void test23(void) { RowNode_handle pR1=0,pR2=0,pR3,pR4,pR5; int i; printf("\n===== MULTIPLICATION =======================\n"); for(i=0;i<7;++i) insert_element2(&pR1,i,i,1); insert_element2(&pR1,0,6,1); printf("Matrix 1\n"); printf_rows(pR1,"%i ",7); printf("\n"); for(i=0;i<7;++i) insert_element2(&pR2,i,i,1); insert_element2(&pR2,0,6,1); printf("Matrix 2\n"); printf_rows(pR2,"%i ",7); printf("\n"); pR3=mult(pR1,pR2); printf("Power 2\n"); printf_rows(pR3,"%i ",7); printf("\n"); pR4=mult(pR1,pR3); printf("Power 3\n"); printf_rows(pR4,"%i ",7); printf("\n"); pR5=mult(pR4,pR4); printf("Power 6\n"); printf_rows(pR5,"%i ",7); printf("\n"); /* for(i=0;i<1;++i) { printf("Power %d\n",i+3); temp=pR3; pR3=mult(pR1,pR3); free(temp); printf_rows(pR3,"%i ",7); printf("\n"); } */ free_rows(pR1); free_rows(pR2); free_rows(pR3); free_rows(pR4); free_rows(pR5); }
void test17(void) { RowNode_handle pR=0; int i,j; printf("\n====== INSERT ELEMENTS IN ROW LIST (WITH ZEROES) ===\n"); for(i=0;i<30;++i) { for(j=0;j<30;++j) { insert_element2(&pR,i,j,(i+j)%2); } } printf_rows(pR,"%i",30); printf("\n"); print_rows(pR); printf("\n"); free_rows(pR); }
void test16(void) { RowNode_handle pR=0; int i,j; printf("\n====== INSERT ELEMENTS IN ROW LIST =========\n"); for(i=0;i<15;++i) { for(j=0;j<10;++j) { insert_element2(&pR,2*i,3*j,1+7*( (i+j)%2) ); } } printf_rows(pR,"%i",30); printf("\n"); print_rows(pR); free_rows(pR); }
void test22( void ) { RowNode * pR=0, *pR2; int i,j; printf( "\n===== TRANSPOSITION ========================\n" ); for( i=0; i<10; ++i ) { for( j=0; j<10; ++j ) { if( ( i+j )%4 ) insert_element2( &pR,1000*i,1000*j,10*i+j ); } } pR2 = transpose( pR ); printf( "original as list of rows\n" ); print_rows( pR ); printf( "\n" ); printf( "transposed as list of rows\n" ); print_rows( pR2 ); printf( "\n" ); free_rows( pR ); free_rows( pR2 ); }
void test21(void) { RowNode_handle pR=0; int i,j=0; printf("\n== OVERWRITE ENTIRE ROW 9 WITH ZEROES ==\n"); for(i=0;i<10;++i) { for(j=0;j<10;++j) { insert_element2(&pR,i,j,(i+j)%3); } } printf_rows(pR,"%i",10); printf("\n"); insert_element2(&pR,3*i,3*j,(3*i+2*j)%5); insert_element2(&pR,9,0,0); insert_element2(&pR,9,1,0); insert_element2(&pR,9,2,0); insert_element2(&pR,9,3,0); insert_element2(&pR,9,4,0); insert_element2(&pR,9,5,0); insert_element2(&pR,9,6,0); insert_element2(&pR,9,7,0); insert_element2(&pR,9,8,0); insert_element2(&pR,9,9,0); printf_rows(pR,"%i",10); printf("\n"); print_rows(pR); printf("\n"); free_rows(pR); }