Не знаю, стоит ли на данном этапе упоминать о корректном способе сравнения вещественных чисел...
Поскольку от этих чисел берутся именно логарифмы -- требование их положительности и необходимо, и более чем достаточно (другое дело, что нет никакой необходимости проверять отдельно их ненулёвость). А вот требование нееденичности основания лучше заменить проверкой перед делением того, не является ли знаменатель нулём. И этого вполне достаточно, т.к. числитель не слишком велик (не более скольки-то там тысяч), а знаменатель, если уж он ненулевой, то не слишком мал (порядок не более пары десятков), так что переполнение при делении никак не может случиться.
-- Пн окт 27, 2014 13:04:08 --Действительные числа хранятся с ограниченной точностью, поэтому некоторые эффекты могут быть вблизи перечисленных вами особых точек.
Соответственно, вряд ли "вблизи" возможны какие-то эффекты. Т.е. я хоть и не знаю никакой документации, но очень трудно представить себе какой-либо другой алгоритм вычисления логарифма, кроме умножения порядка на логарифм от нормализованной мантиссы. И откуда здесь взяться артефактам?...
Хотя да, одна проблема есть: она в том, что
. Поэтому если
, то само это число не равно единице, а вот логарифм от него может оказаться и нулевым. Но именно поэтому и лучше проверять не само основание, а его логарифм.