Есть еще один интересный момент, о котором я узнал сегодня и хочу добавить к ответу ire_and_curses: Компилятор fortran, похоже, вычисляет степени с целыми числами с последовательными умножениями.Например,
PROGRAM Test
PRINT *, (-23) ** 6
END PROGRAM
работает нормально и выдает 148035889
в качестве ответа.
Но для показателей REAL
компилятор использует логарифмы: y**x = 10**(x * log(y))
(возможно, компиляторы сегодня делают иначе,но моя книга так говорит)Теперь, когда отрицательные логарифмы дают сложный результат, это не работает:
PROGRAM Test
PRINT *, (-23) ** 6.1
END PROGRAM
и даже дает ошибку компилятора:
Error: Raising a negative REAL at (1) to a REAL power is prohibited
С математической точки зрения эта проблема кажется такжебыть довольно интересным: https://math.stackexchange.com/questions/1211/non-integer-powers-of-negative-numbers