У меня есть два очень коротких вопроса:
1 - Я просто прочитал это DEXP()
архаичная форма EXP()
. Это означает, что это не должно больше использоваться? Я всегда думал это DEXP()
была двойная точность, эквивалентная EXP()
.
2 - Каков диапазон показательной функции? Это - иждивенец компилятора?
Заранее спасибо за Вашу помощь!
Лучше всего, Remek
Как уже упоминалось ранее, всегда лучше использовать общие функции, такие как EXP (), при предпочтении устаревших эквивалентов с удельным типом, таких как DEXP ( ).
В старом (действительно старых) версиях Fortran (до Fortran 77) для каждого типа данных требовалась другая функция. Поэтому, если вы хотите, чтобы экспоненциальная функция понадобится: exp () для одноточных чисел, DEXP () для двойных точных чисел или CEXP () для сложных чисел. Fortan теперь имеет функцию перегрузки, поэтому одна функция будет работать для любого стандартного типа.
В принципе Возможный диапазон показателя может быть процессор и зависимый от компилятора. Однако, как уже упоминалось, большинство современных процессоров и компиляторов будут использовать стандарт IEEE.
При необходимости можно указать необходимый диапазон переменной при его объявлении. Функция для использования Selection_real_kind ([P, R])
.
Например, предположим, что вы убедитесь, что x
х имеет тип с десятичной точностью как минимум 10 цифр и десятичной диапазон показателей, по меньшей мере, 100.
INTEGER, PARAMETER :: mytype = SELECTED_REAL_KIND(10, 100)
REAL(KIND=mytype) :: x
для получения дополнительной информации: Selection_real_kind
На практике, если вы пишете программу, которая требует заданной точности, и которая может работать на экзотических или старых системах, это очень хорошая идея, чтобы таким образом определить ваши типы. Здесь показаны некоторые общие определения: Real Precision
Ответ на часть 2 вашего вопроса заключается в том, что диапазон экспоненциальной функции является набор всех положительных действительных чисел. В Фортренских терминах, которые означают набор всех действительных чисел больше чем 0. Да, в соответствии с стандартами Fortran, зависит от компилятора, но на практике вы не пойдите далеко не так, если вы возьмете это, чтобы быть набором всех положительных IEEE Числа с плавающей точкой, одиночная или двойная точность, как вы хотите. Но быть строгим, вы должны быть знакомы с видами реальных чисел, которые поддерживает ваш компилятор, который почти наверняка будет включать номера IEEE F-P, но может также включать другие.
«EXP» - это общая функция, которая возвращает тот же тип, что и его аргумент - точность реального или сложного. Он должен использоваться при предпочтении более старой формы «DEXP», потому что с «exp» компилятор автоматически вернет правильный тип. Общие имена были добавлены в Фортран 77.