2012-04-04 2 views
-2

Я написал программу с implicit real*8. Программа работает нормально, но как только я вставил другой файл данных, который содержит данные длинной и двойной точности, чем результаты, которые я нашел, не были подходящими. Эксперты и разработчики программ посоветовали мне изменить implicit real*16. Но он не работает в моей силовой станции fortran 4.0 и дает неявные ошибки. Как конвертировать или модернизировать электростанцию, чтобы она могла работать с implicit real*16 или более?Неявная реальная ошибка

+1

Retagged to Fortran, так как я не думаю, что это имеет какое-либо отношение к Java. Дайте мне знать, если я ошибаюсь. –

+7

Ни один «эксперт» не рекомендовал использовать «неявный реальный». –

ответ

2

Электростанция слишком старая. Не каждый компилятор поддерживает реальный * 16 даже сейчас. Подумайте о получении нового компилятора. Я предлагаю начать с gfortran, что точно соответствует четкости.

Также меня беспокоит, что с этими неявными вещами может быть скрыто много других проблем. Рассмотрим также явную типизацию для ваших переменных и используя implicit none.

2

Каковы значения в вашем файле? целые числа и значения с плавающей запятой двойной точности? Тогда кажется маловероятным, что проблема вызвана тем, что вы не читаете их в реальные переменные с четкой точностью. Лишь в редких случаях расчеты требуют четкости. Вы читаете целочисленные значения в целых переменных и поплавки в реактивы Фортрана? Как писали другие, неявное типирование - худший подход ... он по-прежнему является частью Fortran только для поддержки устаревшего кода. Лучшей практикой является использование «implicit none» и явно введите все ваши переменные. Это позволит компилятору обнаруживать ошибки, такие как опечатки в именах переменных. Подробнее о переменном типе см. Fortran: integer*4 vs integer(4) vs integer(kind=4) и Extended double precision

Смежные вопросы