in h3_localij.c [632:653]
static void cubeRound(double i, double j, double k, CoordIJK *ijk) {
int ri = round(i);
int rj = round(j);
int rk = round(k);
double iDiff = fabs((double)ri - i);
double jDiff = fabs((double)rj - j);
double kDiff = fabs((double)rk - k);
// Round, maintaining valid cube coords
if (iDiff > jDiff && iDiff > kDiff) {
ri = -rj - rk;
} else if (jDiff > kDiff) {
rj = -ri - rk;
} else {
rk = -ri - rj;
}
ijk->i = ri;
ijk->j = rj;
ijk->k = rk;
}