Пример #1
0
void testMatrixMulti(void)
{
	int **matrixA, **matrixB;
	int	**matrixResult;
	int	rowNumOfA, colNumOfA;
	int	rowNumOfB, colNumOfB;
	int rowNumOfR, colNumOfR;

	rowNumOfA = 2;
	colNumOfA = 3;

	rowNumOfB = 3;
	colNumOfB = 2;

	matrixA = generateMatrix(rowNumOfA, colNumOfA);
	matrixB = generateMatrix(rowNumOfB, colNumOfB);

	matrixResult = make2DArray(rowNumOfA, colNumOfA);

	printf("----------- test: matrix multiplication ------------------\n");
	if(!matrixMulti(matrixResult, matrixA, rowNumOfA, colNumOfA, matrixB, rowNumOfB, colNumOfB)) {
		printf("matrixA\n");
		printMatrix(matrixA, rowNumOfA, colNumOfA);

		printf("matrixB\n");
		printMatrix(matrixB, rowNumOfB, colNumOfB);

		printf("matrixResult = matrixA x matrixB\n");
		rowNumOfR = rowNumOfA;
		colNumOfR = colNumOfB;
		printMatrix(matrixResult, rowNumOfR, colNumOfR);	
	}
	else
		printf("Fail to matrix multiplication\n");
}
Пример #2
0
PyObject *computeCov(PyObject *i_funGetData
	, PyObject *i_funHasMoreData
	, PyObject *i_colMeans
	, double i_chunkSize
	, double dimData)
{
	PyObject *o_covMat = NULL, *chunkCovMat = NULL;
	PyArrayObject *chunk = NULL;
	PyArrayObject *covArr = NULL;
	//PyArrayObject *retval = NULL;
	//bool moreData;
	double tmp;
	int whileIter = 0;


	while (call_funHasMoreData(i_funHasMoreData))
	{
		whileIter++;
		if (1 == whileIter)
		{
			chunk = call_funGetData(i_funGetData, i_chunkSize);
			o_covMat = computeChunkCov(chunk, i_colMeans);
		}
		if (1 != whileIter)
		{
			chunk = call_funGetData(i_funGetData, i_chunkSize);
			chunkCovMat = computeChunkCov(chunk, i_colMeans);
			o_covMat = addMatrixPiecewise(o_covMat, chunkCovMat);
		}
	}

	covArr = (PyArrayObject*)PyArray_FROM_OTF(o_covMat, NPY_DOUBLE, NPY_ARRAY_IN_ARRAY);
	tmp = 1.0 / (dimData - 1.0);
	o_covMat = matrixMulti(covArr, tmp);
	covArr = (PyArrayObject*)PyArray_FROM_OTF(o_covMat, NPY_DOUBLE, NPY_ARRAY_IN_ARRAY);
	o_covMat = computeFullMatrix(covArr);

	//o_covMat = tmp * covArr;

	return o_covMat;
	//Py_BuildValue("O", o_covMat);
}
Пример #3
0
int GzPushMatrix(GzRender *render, GzMatrix	matrix)
{
/*
- push a matrix onto the Ximage stack
- check for stack overflow
*/
	if (render->matlevel == MATLEVELS - 1)
		return GZ_FAILURE;
	if (render->matlevel == 0)
	{
		for (int i = 0; i < 4; i++)
		{
			for (int j = 0; j < 4; j++)
				render->Ximage[render->matlevel][i][j] = matrix[i][j];
		}
	}
	else
	{
		matrixMulti(render->Ximage[render->matlevel - 1], matrix, render->Ximage[render->matlevel]);
	}
	render->matlevel++;
	return GZ_SUCCESS;
}