コード例 #1
0
ファイル: encoder.cpp プロジェクト: sweetbomber/lonc
OcdEncoder::OcdEncoder(const uint8_t *inputBuffer,
					   uint32_t inputBufferSize,
					   uint32_t blockSize,
					   uint32_t q,
					   double epsilon) {

	mRhoList.clear();

	mBlockSize = blockSize;
	mQ = q;
	SetEpsilon(epsilon);

	/* Calculate total memory, including auxiliary blocks */
	mNumberOfSourceBlocks = ((inputBufferSize + mBlockSize - 1)/mBlockSize);
	mNumberOfAuxiliaryBlocks = mNumberOfSourceBlocks*(mQ*mEpsilon*0.55);
	mNumberOfIntermediateBlocks = mNumberOfSourceBlocks + mNumberOfAuxiliaryBlocks;

	/* Redirect source data */
	mSourceBuffer.buffer = (uint8_t *)inputBuffer;
	mSourceBuffer.bufferSize = inputBufferSize;

	/* Allocate required memory */
	mIntermediateBuffer.bufferSize = mNumberOfIntermediateBlocks*mBlockSize;
	mIntermediateBuffer.buffer = (uint8_t *) malloc(sizeof(uint8_t)*mIntermediateBuffer.bufferSize);

	/* Copy source data to intermediate data, and fill remaining space */
	memcpy(mIntermediateBuffer.buffer, inputBuffer, inputBufferSize);
	memset((mIntermediateBuffer.buffer) + inputBufferSize, 0, mIntermediateBuffer.bufferSize - inputBufferSize);

	PreEncode();
}
コード例 #2
0
ファイル: decoder.cpp プロジェクト: sweetbomber/lonc
OcdDecoder::OcdDecoder(uint32_t dataSize, uint32_t blockSize, uint32_t q, double epsilon) {
	mRhoList.clear();
	mBlockStatus.clear();

	if((mBlockSolution = (uint8_t *) malloc(sizeof(uint8_t)*mBlockSize)) == NULL) {
		fprintf(stderr, "Error allocating memory\n");
		return;
	}
	mBlockSize = blockSize;
	mQ = q;
	SetEpsilon(epsilon);

	PreDecode(dataSize);
}
コード例 #3
0
ファイル: SIAM.cpp プロジェクト: MilosRadonjic/DMFT
void SIAM::SetUTepsilon(double U, double T, double epsilon)
{
    SetU(U);
    SetT(T);
    SetEpsilon(epsilon);
}