Суть проблемы, вроде как, состоит в том, что три дискретных числовых оси не совпадают. Эти дискретные числовые оси соответствуют десятичному представлению и двум двоичным (SHORTREAL и REAL).

Парочка замечаний:
1. Так как мы не можем в исходном тексте записать число из бесконечного числа цифр, то мы никогда не имеем дело с непрерывной числовой осью.
2. Результаты вычислений всегда отоборажаются на дискретную числовую ось, соответствующую двоичному представлению. А непосредственные вещественные константы - на дискретную ось, соответсвующую десятичному представлению.

Собственно, задача была бы решена, если бы мы смогли нивелировать различия между этими числовыми осями (только в тех случаях, когда это необходимо, например во время сравнения).

Попробуем мысленно совместить все три оси. Дискретные числовые значения, соответствующие разным представлениям, будут расположены на совмещённой оси вперемежку, в основом не совпадая друг с другом. К тому же интервалы между числовыми значениями также будут различными.

Нужно выполнить две вещи:
1. Разбить числовую ось на (равные) интервалы таким образом, чтобы с одной стороны эти интервалы были как можно меньше, а с другой стороны чтобы на любом интервале находилось хотя бы одно значение, соответствующее кажому из представлений.
2. Придумать и реализовать алгоритм отображения любого числового значения, заданного любым из представлений, на соответствующий ему интервал. При этом может оказаться, что некоторые смежные числовые значения будут отображаться в один и тот же интервал.

Если предположить, что поставленная задача будет решена, то при сравнении вещественных чисел необходимо будет проверять отображаются эти числа в один и тот же интервал или в разные.

То, что я изложил - не решение, а скорее постановка задачи. Боюсь, что эта задача вообще не имеет эффективного решения.