Я работаю над платформой, которая имеет только целочисленную арифметику. Приложение использует географическую информацию, и я представляю точки с помощью координат (x, y), где x и y — расстояния, измеренные в метрах. В качестве приближения я хочу вычислить евклидово расстояние между двумя точками. Но для этого мне нужно возвести расстояния в квадрат, а с 32-битными целыми числами самое большое расстояние, которое я могу представить, составляет 32 километра. Фигово. Мои потребности больше порядка 1000 километров. Но я хотел бы иметь возможность определять расстояния в масштабе менее 30 метров.
Отсюда мой вопрос: как я могу вычислить евклидово расстояние, используя только целочисленную арифметику, без переполнения, на расстояниях, квадраты которых не помещаются в одно слово?
ETA: Я хотел бы иметь возможность вычислять расстояния, но я мог бы согласиться на возможность их сравнения.