コード例 #1
0
ファイル: Imaging.c プロジェクト: ForrestShi/GLView
static void huematrix(GLfloat mat[4][4], float angle)
{
	float mag, rot[4][4];
	float xrs, xrc;
	float yrs, yrc;
	float zrs, zrc;

	// Rotate the grey vector into positive Z
	mag = sqrt(2.0);
	xrs = 1.0/mag;
	xrc = 1.0/mag;
	xrotatemat(mat, xrs, xrc);
	mag = sqrt(3.0);
	yrs = -1.0/mag;
	yrc = sqrt(2.0)/mag;
	yrotatemat(rot, yrs, yrc);
	matrixmult(rot, mat, mat);

	// Rotate the hue
	zrs = sin(angle);
	zrc = cos(angle);
	zrotatemat(rot, zrs, zrc);
	matrixmult(rot, mat, mat);

	// Rotate the grey vector back into place
	yrotatemat(rot, -yrs, yrc);
	matrixmult(rot,  mat, mat);
	xrotatemat(rot, -xrs, xrc);
	matrixmult(rot,  mat, mat);
}
コード例 #2
0
ファイル: 8_1.c プロジェクト: Malli25/CBootCamp
int main(int argc, char *argv[])
{
  Matrix *A = createMatrix(3, 2);
  A->data[0] = 1.2;
  A->data[1] = 2.3;
  A->data[2] = 3.4;
  A->data[3] = 4.5;
  A->data[4] = 5.6;
  A->data[5] = 6.7;
  printmat(A);

  Matrix *B = createMatrix(2, 3);
  B->data[0] = 5.5;
  B->data[1] = 6.6;
  B->data[2] = 7.7;
  B->data[3] = 1.2;
  B->data[4] = 2.1;
  B->data[5] = 3.3;
  printmat(B);

  Matrix *C = createMatrix(3, 3);
  matrixmult(A, B, C);
  printmat(C);

  destroyMatrix(A);
  destroyMatrix(B);
  destroyMatrix(C);
  return 0;
}
コード例 #3
0
ファイル: amzseq.c プロジェクト: Johnzhuo/spoj
void matrixmult(long long int n)
{
if(n==1)
	return;
if(n==2)
	{
	matrix[0][0]=5;
	matrix[0][1]=2;
	matrix[1][0]=2;
	matrix[1][1]=1;
	return;
	}

else if(n==3)
	{
	matrix[0][0]=12;
        matrix[0][1]=5;
        matrix[1][0]=5;
        matrix[1][1]=2;
	return;
	}

matrixmult(n/2);
long long int a[2][2];
long long int temp;

a[0][0]=(((matrix[0][0]*matrix[0][0])) +((matrix[0][1]*matrix[1][0]))) ;
a[0][1]=(((matrix[0][0]*matrix[0][1])) +((matrix[0][1]*matrix[1][1]))) ;
a[1][0]=(((matrix[0][0]*matrix[1][0])) +((matrix[1][0]*matrix[1][1]))) ;
a[1][1]=(((matrix[0][1]*matrix[1][0])) +((matrix[1][1]*matrix[1][1]))) ;
	

if(n%2==1)
	{
	temp = a[0][0];
	a[0][0]=(2*a[0][0]+a[0][1]); 
        a[0][1]=temp;
	temp = a[1][0];
        a[1][0]=(2*a[1][0]+a[1][1]);
        a[1][1]=temp;

	}

matrix[0][0]=a[0][0];
matrix[0][1]=a[0][1];
matrix[1][0]=a[1][0];
matrix[1][1]=a[1][1];
}
コード例 #4
0
ファイル: buzzoff.c プロジェクト: Johnzhuo/spoj
void matrixmult(long long int n)
{
if(n==2)
	{
	matrix[0][0]=2;
	matrix[0][1]=1;
	matrix[1][0]=1;
	matrix[1][1]=1;
	return;
	}

else if(n==3)
	{
	matrix[0][0]=3;
        matrix[0][1]=2;
        matrix[1][0]=2;
        matrix[1][1]=1;
	return;
	}

matrixmult(n/2);
long long int a[2][2];
long long int temp;

a[0][0]=(((matrix[0][0]*matrix[0][0])%rem) +((matrix[0][1]*matrix[1][0])%rem))%rem ;
a[0][1]=(((matrix[0][0]*matrix[0][1])%rem) +((matrix[0][1]*matrix[1][1])%rem))%rem ;
a[1][0]=(((matrix[0][0]*matrix[1][0])%rem) +((matrix[1][0]*matrix[1][1])%rem))%rem ;
a[1][1]=(((matrix[0][1]*matrix[1][0])%rem) +((matrix[1][1]*matrix[1][1])%rem))%rem ;
	

if(n%2==1)
	{
	temp = a[0][0];
	a[0][0]=(a[0][0]+a[0][1])%rem; 
        a[0][1]=temp;
	temp = a[1][0];
        a[1][0]=(a[1][0]+a[1][1])%rem;
        a[1][1]=temp;

	}

matrix[0][0]=a[0][0];
matrix[0][1]=a[0][1];
matrix[1][0]=a[1][0];
matrix[1][1]=a[1][1];
}
コード例 #5
0
ファイル: 6_1_2.c プロジェクト: tomboulier/CBootCamp
int main(int argc, char *argv[])
{
  Matrix A = { {1.2, 2.3,
                3.4, 4.5,
                5.6, 6.7},
               3,
               2};
  Matrix B = { {5.5, 6.6, 7.7,
                1.2, 2.1, 3.3},
               2,
               3}; 
  printmat(A);
  printmat(B);

  Matrix C = matrixmult(A, B);
  printmat(C);

  return 0;
}
コード例 #6
0
ファイル: test1_02.cpp プロジェクト: acpanna/coding
int main(int argc, char **argv) {
  if(argc>=2) { 
    switch(atoi(argv[1])) {
    case 1: return polyprint(argc-1, argv+1); 
    case 2: return polypoly(argc-1, argv+1,2); // +
    case 3: return polypoly(argc-1, argv+1,3); // -
    case 4: return polypoly(argc-1, argv+1,4); // *
    case 5: return matrixmult(argc-1, argv+1,5); 
    case 6: return polymatmult(argc-1, argv+1,6); 
    }
  }
  // Ein Fehler ist aufgetreten. Gebe Syntax aus:
  cout << "Syntax: test1_02 <n> " << endl;
  cout << "1  -  Ausgabe eines Polynoms" << endl;
  cout << "2  -  Polynom+Polynom" << endl;
  cout << "3  -  Polynom-Polynom" << endl;
  cout << "4  -  Polynom*Polynom" << endl;
  cout << "5  -  Matrix*Matrix" << endl;
  cout << "6  -  Polynom*Matrix" << endl;
  return 1; // Rueckgabewert !=0, d.h. Fehler
} 
コード例 #7
0
ファイル: amzseq.c プロジェクト: Johnzhuo/spoj
int main()
{
	long long int n,ans;

	scanf("%lld",&n);
	matrix[0][0]=2;
	matrix[0][1]=1;
	matrix[1][0]=1;
	matrix[1][1]=0;

	if(n>=2){
	matrixmult(n-1);
	ans = matrix[0][0]*3 + matrix[0][1];
	}

	else if(n==1)
		ans=3;

	else 	ans=1;
	printf("%lld\n",ans);
	return 0;
}
コード例 #8
0
ファイル: buzzoff.c プロジェクト: Johnzhuo/spoj
int main()
{
int i,t;
long int ans;
long long int n;
scanf("%d",&t);

for(i=0;i<t;i++)
	{
	scanf("%lld",&n);
	
	matrix[0][0]=1;
	matrix[0][1]=1;
	matrix[1][0]=1;
	matrix[1][1]=0;

	matrixmult(n+1);


	ans = (matrix[0][0] + matrix[0][1] - 2)%rem;
	printf("%ld\n",ans);
	}
return 0;
}
コード例 #9
0
ファイル: main.cpp プロジェクト: utzms/siwir
int main(int argc, char *argv[]){
	
	if(argc < 4){
		std::cerr << "4 arguments required" << std::endl;
		return -1;
	}
	
	//setting optimizations by commmand line
	if(argc>5){
		std::string arg4(argv[4]);	
		if(arg4 == "-q")
		{
			_sse_ON = true;
			blocking = false;
		}	
		else if(arg4 == "-w")
		{
			_sse_ON = false;
			blocking = true;
		}
		else if(arg4 == "-e")
		{
			_sse_ON = false;
			blocking = false;
		}
	}
	//reading in A
	std::ifstream inputFileA(argv[1], std::ios::in);

	int ndimA;
	int mdimA;
        inputFileA >> mdimA;
	inputFileA >> ndimA;
	int size = ndimA*mdimA;
        double * dataA = new double[size];
        for(int i = 0;i < size;)
        {
            inputFileA >> dataA[i++];
        }
	
	//reading in B
	std::ifstream inputFileB(argv[2], std::ios::in);
        int ndimB;
        int mdimB;
        inputFileB >> mdimB;
	inputFileB >> ndimB;
	size = ndimB*mdimB;

        double * dataB = new double[size];
        for(int i = 0;i < size;)
        {
            inputFileB >> dataB[i++];
        }
	size = mdimA*ndimB;
	double * dataC = new double[size];	
	
	timeval start,end;	
		
	gettimeofday(&start,0);
	matrixmult(mdimA,ndimB,ndimA,dataA,ndimA,dataB,ndimB,dataC,ndimB);
	gettimeofday(&end,0);
	std::cout << "wall clock time: " << ((double)(end.tv_sec*1000000 + end.tv_usec)-(double)(start.tv_sec*1000000 + start.tv_usec))/1000000 << std::endl;
	//writing C	
	std::ofstream outputFile(argv[3], std::ios::out);
	outputFile << mdimA <<  " " << ndimB << std::endl;
        for(int i = 0; i < size; ++i)
        {
                outputFile << dataC[i] << std::endl;
        }	
	
	return 0;
}
コード例 #10
0
ファイル: rend.cpp プロジェクト: arksha/3D-Rendering
int GzPushMatrix(GzRender *render, GzMatrix	matrix)
{
    /*
    - push a matrix onto the Ximage stack
    - check for stack overflow
    */
    if (render == NULL)
    {
        return GZ_FAILURE;
    }
    //check overflow
    if (render->matlevel == MATLEVELS) {
        return GZ_FAILURE;
    }
    GzMatrix prodmatrx;
    if (render->matlevel == -1)
    {
        memcpy(render->Ximage[render->matlevel + 1], matrix, sizeof(GzMatrix));
    }
    else {
        matrixmult(render->Ximage[render->matlevel], matrix, render->Ximage[render->matlevel+1]);
    }
    render->matlevel++;

    if (render->matlevel == 0 || render->matlevel == 1) {
        GzMatrix identityMtx;
        identityMtx[0][0] = 1;
        identityMtx[0][1] = 0;
        identityMtx[0][2] = 0;
        identityMtx[0][3] = 0;

        identityMtx[1][0] = 0;
        identityMtx[1][1] = 1;
        identityMtx[1][2] = 0;
        identityMtx[1][3] = 0;

        identityMtx[2][0] = 0;
        identityMtx[2][1] = 0;
        identityMtx[2][2] = 1;
        identityMtx[2][3] = 0;

        identityMtx[3][0] = 0;
        identityMtx[3][1] = 0;
        identityMtx[3][2] = 0;
        identityMtx[3][3] = 1;
        memcpy(render->Xnorm[render->matlevel], identityMtx, sizeof(GzMatrix));
    }
    else {

        GzMatrix R;
        float K = 1 / sqrt(matrix[0][0] * matrix[0][0] + matrix[1][0] * matrix[1][0] + matrix[2][0] * matrix[2][0]);

        R[0][0] = matrix[0][0] * K;
        R[0][1] = matrix[0][1] * K;
        R[0][2] = matrix[0][2] * K;
        R[0][3] = 0;

        R[1][0] = matrix[1][0] * K;
        R[1][1] = matrix[1][1] * K;
        R[1][2] = matrix[1][2] * K;
        R[1][3] = 0;

        R[2][0] = matrix[2][0] * K;
        R[2][1] = matrix[2][1] * K;
        R[2][2] = matrix[2][2] * K;
        R[2][3] = 0;

        R[3][0] = 0;
        R[3][1] = 0;
        R[3][2] = 0;
        R[3][3] = 1;

        GzMatrix Xformprod;
        matrixmult(render->Xnorm[render->matlevel - 1], R, Xformprod);
        memcpy(render->Xnorm[render->matlevel], Xformprod, sizeof(GzMatrix));
    }


    return GZ_SUCCESS;
}