Esempio n. 1
0
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);
}
Esempio n. 2
0
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);
}
Esempio n. 3
0
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;
}
Esempio n. 4
0
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;
  
}
Esempio n. 5
0
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);
}
Esempio n. 6
0
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);
}
Esempio n. 7
0
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 );
}
Esempio n. 9
0
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);
}