2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Фортран: 1 имя встроенной функции для разных компиляторов ?
Сообщение07.12.2017, 08:47 
Проблема следующая:

я работал с интеловским фортраном, там были встроенные функции Бесселя
DBesJn(n,x).

Теперь перехожу на gfortran - а там такие же функции - называются как
BESSEL_JN(n, х).

Код, с которым я работаю - может передаваться моим коллегам (это совместный код), которые работают с интеловским фортраном. Нужно чтобы ни им, ни мне - не пришлось переписывать каждый раз кусок кода, использующий функции Бесселя.

По идее, можно было бы это сделать, используя псевдонимы, так, чтобы записи BESSEL_JN(n, х) и
DBesJn(n,x) - были бы эквивалентные. Но я не нашел, как это сделать, т.к. оператор Equivalence - существует, но он для переменных, а не для функций. Указатели - тоже для переменных....

Подскажите, как это сделать "малой кровью"?
(можно было бы конечно взять не встроенные функции, которые разные для разных реализаций фортрана, а внешние, библиотечные функции - но это не слишком изящное решение, увеличивающее длину кода и снижающее быстродействие)

 
 
 
 Re: Фортран: 1 имя встроенной функции для разных компиляторов ?
Сообщение07.12.2017, 11:37 
Создать свою функцию-обертку для вызова встроенных, а выбор сделать с помощью директив условной компиляции.

 
 
 
 Re: Фортран: 1 имя встроенной функции для разных компиляторов ?
Сообщение07.12.2017, 11:37 
Аватара пользователя
Создайте интерфейс для функции Бесселя, назовите BesselFunctionInterface. В этом интерфейсе пропишите обращение к функции DBesJn, а во всем остальном коде вместо DBesJn используйте BesselFunctionInterface. Когда будете передавать код, вашим коллегам нужно будет всего лишь скорректировать интерфейс -- вместо DBesJn исправить на BESSEL_JN. Сделать это нужно всего лишь в одном месте.

 
 
 
 Re: Фортран: 1 имя встроенной функции для разных компиляторов ?
Сообщение07.12.2017, 12:14 
Аватара пользователя
интеловский компилятор понимает BESSEL_JN

 
 
 [ Сообщений: 4 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group