Алгоритм для работы с большими числами

Модератор: Модераторы разделов

Michael
Сообщения: 92

Алгоритм для работы с большими числами

Сообщение Michael »

Имеются числа: n1 (большое целое), T1, T2 (вещественные, порядка 0.01 - 100), f1 (вещественное, 0<=f1<T1).
Необходимо найти n2 (целое) и f2 (вещественное, 0<=f2<T2) такие, что n1*T1+f1=n2*T2+f2. T1 и T2 считаются заданными точно, а f2 с некоторой погрешностью (10^{-15} для double, вроде бы). Проблема в том, что f2 необходимо найти примерно с той же погрешностью, что и f1, поэтому прямой вариант n2=floor((n1*T1+f1)/T2), f2=n1*T1+f1-n2*T2 не проходит (для n2 может и пройдёт, но для f2 точно нет). Есть вариант использовать вещественные числа с произвольной точностью (gmp заюзать, например), но 1) лишняя зависимость, 2) стрельба из пушки по воробьям, 3) просто некрасивое решение. Существует ли алгоритм для решения этой задачи, не использующий вычисления с произвольной точностью?
Спасибо сказали: