in src/c_interface.cpp [129:145]
std::pair<int, int> closest_divisor(int val, int div) {
if (div == 2) {
if ((val & 1) == 0) { return std::make_pair(2, val >> 1); }
else { return std::make_pair(1, val); }
}
else if (div == 4) {
if ((val & 3) == 0) { return std::make_pair(4, val >> 2); }
else if ((val % 3) == 0) { return std::make_pair(3, val / 3); }
else if ((val % 5) == 0) { return std::make_pair(5, val / 5); }
else if ((val & 1) == 0) { return std::make_pair(2, val >> 1); }
else if ((val % 7) == 0) { return std::make_pair(7, val / 7); }
else { return std::make_pair(1, val); }
}
else {
return std::make_pair(1, val);
}
}