Вы проверяли результат? Например, при

.
-- Вт окт 04, 2011 16:00:22 --А придраться можно к сравнению с 2.8 - эта константа не представима точно, поэтому если ввести 2.8, то вычисление может пойти как по первой, так и по второй ветке. Чтобы этого избежать, надо бы сравнивать с небольшим допуском.