2010-02-23 2 views

ответ

3

The D means "× 10???", или широко известный как e в 1.e+300 в C#, но он предназначен для двойной точности.

DOUBLE PRECISION statement определяет только 3 переменные типа double.

The DATA statement

DATA X/Y/ 

переводит к

X = Y; 

в C#. Таким образом вы получаете

double INF = 1.e+300, DMIN, D12; 

С INF настолько велика, я считаю, что это означает «бесконечность», в этом случае лучше использовать real IEEE infinity (double INF = double.PositiveInfinity, ...).

2

Код объявляет константу с именем INF (то есть бесконечность) со значением 10^300. Вы хотели бы заменить double.PositiveInfinity или double.MaxValue.

1

Значение будет 1.0e300, но я уверен, что предполагается, что он должен быть установлен на самое большое двойное значение, которое может быть выражено на текущем CPU. поэтому в C#, который будет double.PositiveInfinity, а не в некотором жестко закодированном значении.

2

Код выполнен в стиле FORTRAN IV или FORTRAN 77, а не Fortran 90/95/2003.

Двойная точность объявляет переменные двойными точностью обычного реального. Я не уверен, что стандарты FORTRAN той эпохи были чрезвычайно точными в отношении того, что это означало, так как тогда было больше разнообразных цифровых аппаратных средств. Сегодня он практически всегда получит 8-байтовую реальность. Оператор данных инициализирует переменную INF. Использование «D» в константе «1.D + 300» вместо E, является старым FORTRAN, чтобы указать, что константа является двойной точностью.

Фортран (> = 90) способ получения наибольший положительный двойник:

INF = огромный (1.0D + 0)

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