DEXP или EXP для показательной функции в Фортране?

У меня есть два очень коротких вопроса:

1 - Я просто прочитал это DEXP() архаичная форма EXP(). Это означает, что это не должно больше использоваться? Я всегда думал это DEXP() была двойная точность, эквивалентная EXP().

2 - Каков диапазон показательной функции? Это - иждивенец компилятора?

Заранее спасибо за Вашу помощь!

Лучше всего, Remek

13
задан remek 12 January 2010 в 09:36
поделиться

3 ответа

Вопрос № 1:

Как уже упоминалось ранее, всегда лучше использовать общие функции, такие как EXP (), при предпочтении устаревших эквивалентов с удельным типом, таких как DEXP ( ).

В старом (действительно старых) версиях Fortran (до Fortran 77) для каждого типа данных требовалась другая функция. Поэтому, если вы хотите, чтобы экспоненциальная функция понадобится: exp () для одноточных чисел, DEXP () для двойных точных чисел или CEXP () для сложных чисел. Fortan теперь имеет функцию перегрузки, поэтому одна функция будет работать для любого стандартного типа.

Вопрос № 2.

В принципе Возможный диапазон показателя может быть процессор и зависимый от компилятора. Однако, как уже упоминалось, большинство современных процессоров и компиляторов будут использовать стандарт 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

18
ответ дан 1 December 2019 в 22:39
поделиться

Ответ на часть 2 вашего вопроса заключается в том, что диапазон экспоненциальной функции является набор всех положительных действительных чисел. В Фортренских терминах, которые означают набор всех действительных чисел больше чем 0. Да, в соответствии с стандартами Fortran, зависит от компилятора, но на практике вы не пойдите далеко не так, если вы возьмете это, чтобы быть набором всех положительных IEEE Числа с плавающей точкой, одиночная или двойная точность, как вы хотите. Но быть строгим, вы должны быть знакомы с видами реальных чисел, которые поддерживает ваш компилятор, который почти наверняка будет включать номера IEEE F-P, но может также включать другие.

0
ответ дан 1 December 2019 в 22:39
поделиться

«EXP» - это общая функция, которая возвращает тот же тип, что и его аргумент - точность реального или сложного. Он должен использоваться при предпочтении более старой формы «DEXP», потому что с «exp» компилятор автоматически вернет правильный тип. Общие имена были добавлены в Фортран 77.

3
ответ дан 1 December 2019 в 22:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: