"Результат равен -1"
Нет стандартного числового значения логических значений. Здесь происходит то, что компилятор сначала преобразует логическое значение в целое число, просто заново интерпретируя биты, а затем преобразует целое число в действительное число.
В вашем компиляторе логическое истинное значение такое значение, где все биты равны 1. Целочисленное число с таким битовым шаблоном (шестнадцатеричное FFFFFFFF) равно -1. После преобразования в реальное вы получите -1,00000.
Другие компиляторы будут использовать истинное логическое значение в качестве всех нулевых битов вместо младшего, который установлен в 1. В этом случае этот битовый шаблон соответствует целому числу 1 и реальное число будет 1.00000. Если вы используете Intel Fortran, попробуйте установить -standard-semantics
и посмотрите, что произойдет.
(Обратите внимание, что не существует компилятора с именем X manager 6. Возможно, вы используете программное обеспечение под названием Xmanager 6 для подключения к некоторому удаленному Linux компьютеру, но это определенно не компилятор Fortran.)
"но является ли логическое выражение правильным?"
Это не правильный стандартный Fortran, но, как нестандартное расширение поставщика, он, скорее всего, делает то, что вы хотели, если вы действительно хотели неявное преобразование логического значения в действительное число. Если вы просто хотели логическое значение, а не число, вы должны использовать логическую переменную
logical ::logical_value
logical value = (X * Y) < SQRT(Z)