HOME
ABOUT GCS
INTERFACE
DESCRIPTION
EXAMPLES

Examples


Recursion


 
/*****************************************************

      Recursion

******************************************************/

/* qsort: sort[left]...v[right] into increasing order */
void qsort(int v[],int left,int right)
{
 int i,last;
 if(left>=right)   /* do nothing if array contains */
    return;        /* fewer than two elements      */
 swap(v,left,(left+right)/2); /* move partition elem */
 last=left;                   /* to v[0] */
 for(i=left+1;i<=right;i++)   /* partition */
  if(v[i]<v[left])
   swap(v,++last,i);
 swap(v,left,last);   /* restore partition elem */
 qsort(v,left,last-1);
 qsort(v,last+1,right);
}

/* swap: interchange v[i] and v[j] */
void swap(int v[],int i,int j)
{
 int temp;
 temp=v[i];
 v[i]=v[j];
 v[j]=temp;
}

int main()
{
 int a[]={268, 835, 643, 132, 214, 713, 976, 509, 477, 113, 332};
 int i,nelem;
 
 nelem=11;
 qsort(a,0,nelem-1);
 for(i=0;i<nelem;i++) printf("%i  %i\n",i,a[i]);

}


 
0 113
1 132
2 214
3 332
4 268
5 509
6 477
7 643
8 713
9 835
10 976


Matrix Multiplcation 1


 
/*****************************************************

      Matrix

******************************************************/

main()
{
 double c[3][3];
 double a[3][3]={
   3.2, 4.6, 1.8,
   9.4, 8.3, 2.3,
   7.2, 6.8, 5.4};
 double b[3][3]={
   1.8, 3.5, 2.7,
   3.8, 9.4, 8.8,
   2.1, 8.4, 5.9};
 int i,j,k;

 for(i=0;i<3;i++)
  for(j=0;j<3;j++){
   c[i][j]=0.;
   for(k=0;k<3;k++) c[i][j]=c[i][j]+a[i][k]*b[k][j];
   printf("c[%i][%i]=%6.3f\n",i,j,c[i][j]);
  }

}


 
c[0][0]=27.020
c[0][1]=69.560
c[0][2]=59.740
c[1][0]=53.290
c[1][1]=130.240
c[1][2]=111.990
c[2][0]=50.140
c[2][1]=134.480
c[2][2]=111.140


Matrix Multiplication 2


 
/*****************************************************

      Matrix

******************************************************/

main()
{
 double c[3][3];
 double a[3][3]={
   3.2, 4.6, 1.8,
   9.4, 8.3, 2.3,
   7.2, 6.8, 5.4};
 double b[3][3]={
   1.8, 3.5, 2.7,
   3.8, 9.4, 8.8,
   2.1, 8.4, 5.9};
 int i,j,k;

 matmul(c,a,b);
 for(i=0;i<3;i++)
  for(j=0;j<3;j++)
   printf("c[%i][%i]=%6.3f\n",i,j,c[i][j]);

}

 
c[0][0]=27.020
c[0][1]=69.560
c[0][2]=59.740
c[1][0]=53.290
c[1][1]=130.240
c[1][2]=111.990
c[2][0]=50.140
c[2][1]=134.480
c[2][2]=111.140


Matrix Inversion


 
/*****************************************************

      Matrix - matrix inversion 

******************************************************/

main()
{
 double a[3][3]={
   3.2, 4.6, 1.8,
   9.4, 8.3, 2.3,
   7.2, 6.8, 5.4};
 double b[3][3],c[3][3];
 int i,j;

 for(i=0;i<3;i++)
  for(j=0;j<3;j++) b[i][j]=a[i][j];
 matinv(a);
 for(i=0;i<3;i++)
  for(j=0;j<3;j++)
   printf("a[%i][%i]=%6.3f\n",i,j,a[i][j]);
 matmul(c,b,a);
 for(i=0;i<3;i++)
  for(j=0;j<3;j++)
   printf("c[%i][%i]=%6.3f\n",i,j,c[i][j]);

}

 
a[0][0]=-0.517
a[0][1]= 0.223
a[0][2]= 0.077
a[1][0]= 0.606
a[1][1]=-0.077
a[1][2]=-0.169
a[2][0]=-0.074
a[2][1]=-0.201
a[2][2]= 0.295
c[0][0]= 1.000
c[0][1]=-0.000
c[0][2]= 0.000
c[1][0]=-0.000
c[1][1]= 1.000
c[1][2]= 0.000
c[2][0]=-0.000
c[2][1]= 0.000
c[2][2]= 1.000


GCS NOTES