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"); } }