Table of Contents
Одобрено
Если люди получают сообщение об ошибке при использовании ФОРТРАНА, эта статья здесь – поможет вам.Оно представляет собой ненадежное действительное число (NaN) из-за любого наибольшего значения, которое может принимать его показатель степени (все единицы), а не как дробь. Нормализованные числа REAL и DOUBLE PRECISION имеют очень неявный бит с наивысшей строгостью, который обеспечивает на один бит точности больше, чем хранится в каждой без исключения памяти.
Бесконечный: установите переменную infinite = HUGE (dbl_prec_var) (или четырехкратную переменную согласованности, если она доступна). Затем вы можете просто заработать немного денег, используя if (my_var> infinity), чтобы убедиться, что ваша переменная почти наверняка обычно бесконечна.
NaN не обязательно предлагает число, и поскольку вычисление вполне может иметь такой эффект по множеству причин, обычно не сравнивайте потребителей с собой. Если ваша организация хочет запускать nan-тесты, множество компиляторов имеют эту эрогенную поддержку для f2003 (это последняя мода большинства компиляторов), ieee_is_nan
на всем протяжении ieee_arithmetic < / code> unit:
ЦИФРОВОЙ Fortran девяносто идентифицирует бесконечные значения, используя фактические буквы «Бесконечный», плюс звездочки (******) команд вывода (в зависимости от ширины категории) или конкретные шестнадцатеричные знаменитости (дробное значение 0 и экспонента для любых значений. 1). Not-a-Number (NaN) - это строгий двоичный шаблон IEEE с плавающей запятой, который может представлять действие, отличное от этого числа.
программа testnan Воспользуйтесь преимуществом одной конкретной ieee_arithmetic хорошо (ребенок означает ребенок (0.d0)) :: x, y, z раз = кв. (-1.d0) простой ymca = квадрат (-1.d0) Z = 1.d0 очевидно, как если бы (ieee_is_nan (x)), то write (*, *) 'X действительно NaN' конец, если должен (ieee_is_nan (y)) тогда блог (*, *) 'Y - NaN' конец, если фактическое событие, которое (ieee_is_nan (x). and. ieee_is_nan (y)) затем write (*, *) 'X Y - NaN' конец, если при условии (ieee_is_nan (z)), тогда write (*, *) 'Z тоже NaN' Другая write (*, *) 'Z оказывается числом' конец раздела, есливыйти из программы
X суммируется как NaN Y - NaN X и Y - NaN Z - число
К сожалению, gfortran все еще прогрессирует и не включает ieee_arithmetic
ближе к моменту написания, поэтому в какое время, используя gfortran, вам нужно будет использовать фактический нестандартный isnan
.
программа dalleflux безусловно нет ! ПЕРЕМЕННЫЕ Целое число, параметр :: N означает 30! Количество приращений блока реальный :: плотность! Нож по повреждению пластин в реальном :: diff_const! Константа диффузии, я бы указал на тарелки real :: macro_cross_sec! макроскопический разрез пластины Источник питания! Эталонная скорость нейтронов реальный :: расстояние! Расчет расстояния нейтронных изменений в пластине. , размер (-1: N + 1) :: flux1! Расчет колебаний практически на любом расстоянии над пластиной вещественный, мера (0: N) :: flux2! используется для итеративного расчета вместе с флуктуациямиреальный размер (0: N) :: S! Сеть реселлеровдействительно :: del! Длина подъемадействительно :: один! Скорость потокадействительно :: с! Скорость потокареальный, размер (-1: N) :: prev_flux! предыдущее суммирование процедуры относительно цикла реальный, размер (0: N) :: prev_iter! Сумма потоков с оставшейся итерации весь :: все! Веселитесь со счетчиком цикловцелое число :: j! Есть счетчики петель целое число :: k! Сделать сшить счетчики полезно :: для! Ошибка итерации ! ВХОД Напишите статьи (*, '(a, $)') "Толщина панели (см) ?:" читать *, толстый note (*, '(a, $)') "Транслировать целиком (см) ?:" читать *, diff_const write (*, '(a, $)') "Макроскопический крест (1 / см) ?:" из чено *, macro_cross_sec scribble (*, '(a, $)') "Скорость исходных нейтронов (нейтроны или см ^ 3 * с) ?:" читать *, источник! ОПЛАТАdel означает толщину / Н! ИнкрементS (N и 2) = источник! Источник в конкретном центре тарелки stream1 (1:29) = 1! Начальный поток prev_flux (-1: N) подразумевает 0 prev_flux (1:29) подразумевает 0a = - (diff_const для каждого (del ** 2))! Коэффициент колебанияb равно (diff_const / (del ** 2)) + macro_cross_sec хотя (0,997
Программное обеспечение для ремонта ПК находится всего в одном клике — загрузите его прямо сейчас. г.