示例#1
0
	void SmartSpace::RandUnform(double start, double end)
	{
		NewMemoryOnWrite();
		double ell = end - start;
		for (integer i = 0; i < length; i++)
			Space[i] = genrandreal() * ell + start;
	};
示例#2
0
	void SPDTVariable::RandInManifold(void)
	{
		integer n = elements[0]->Getsize()[0], num = numofelements;
		/*temp is an n by n matrix*/
		double *temp = new double[n * n];
		NewMemoryOnWrite();

		for (integer k = 0; k < num; k++)
		{
			for (integer i = 0; i < n; i++)
			{
				for (integer j = 0; j < n; j++)
				{
					temp[j + i * n] = genrandnormal();
				}
			}
			/*Space <-- temp * temp^T. Thus, Space points to a symmetric positive definite matrix. Therefore,
			this SPDVariable is a SPD matrix.*/
			dgemm_(GLOBAL::N, GLOBAL::T, &n, &n, &n, &GLOBAL::DONE, temp, &n, temp, &n, &GLOBAL::DZERO, Space + k * n * n, &n);
		}

		delete[] temp;
	};
示例#3
0
	void SmartSpace::RandGaussian(double mean, double variance)
	{
		NewMemoryOnWrite();
		for (integer i = 0; i < length; i++)
			Space[i] = (genrandnormal() + mean) * variance;
	};
示例#4
0
	double *SmartSpace::ObtainWriteEntireData(void)
	{
		NewMemoryOnWrite();
		return Space;
	};
示例#5
0
double *ProductElement::ObtainWriteEntireData(void)
{
	NewMemoryOnWrite();
	return Space;
};