Exemple #1
0
static void md5_process_block(md5_ctx_t *p, uint32 *block) {
	uint32 orig[4];
	memcpy(orig, p->d, sizeof(orig));

	round1(p->d, block);
	round2(p->d, block);
	round3(p->d, block);
	round4(p->d, block);

	p->d[0] += orig[0];
	p->d[1] += orig[1];
	p->d[2] += orig[2];
	p->d[3] += orig[3];
}
int round_tensor_dimension(int dim, bool periodic, int padding) 
{
	if (periodic) return dim;

	const int tmp = 2*dim-1;
	if (tmp == 1) return 1;

	switch (padding) {
		case PADDING_DISABLE:             return tmp;
		case PADDING_ROUND_2:             return round2(tmp);
		case PADDING_ROUND_4:             return round4(tmp);
		case PADDING_ROUND_8:             return round8(tmp);
		case PADDING_ROUND_POT:           return round_pot(tmp);
		case PADDING_SMALL_PRIME_FACTORS: return round_small_prime_factors(tmp+1);
		default: throw std::runtime_error("Invalid padding strategy");
	}
}