A=1997
B=1.28e13
C=4.61e8
D=5.57e7
И расчёты на калькуляторе давали -1.1e14. А расчёты в программе давали в тысячу (!) раз меньше. Это было совершенно непонятно. Я заподозрил отладчик в ошибочном отображении (что уже бывало), но схватить его за руку так и не смог. Не нравилось мне вычитание, т.к. при вычитании больших чисел погрешности получаются тоже большие. В целях отладки я сделал две отдельные переменные, A*B и C*D, и решил посмотреть, что там.
Тут-то всё и выяснилось. Расчёты на калькуляторе показывали 2.556e16 и 2.567e16 (разница в 3-й значащей цифре), а расчёт на компьютере 2.568610e16 и 2.568595e16 (разница в пятой значащей цифре). Разность первых двух чисел составила -1.1e14, а вторых всего 1.5e11 (ещё и знак другой).
Думаю, понятно, откуда всё это взялось. Я вручную проверял компьютерные расчёты, и для упрощения себе жизни стал производить округления. Я забыл, что при умножении надо брать в два раза больше значащих цифр, чем было до умножения. Но даже это меня бы не спасло, потому что из-за математической природы этого выражения оба произведения имели близкие значения. И трёх значащих цифр было заведомо недостаточно. Я не поленился, взял все значащие цифры, что у меня были, и проверил на калькуляторе уже их. И тогда у меня всё сошлось. Ошибка была где-то в другом месте...