2014 dxdy logo

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

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




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


22/12/11
66
Проблема следующая:

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

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

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

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

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

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


09/05/12
25179
Создать свою функцию-обертку для вызова встроенных, а выбор сделать с помощью директив условной компиляции.

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


11/04/08
2748
Физтех
Создайте интерфейс для функции Бесселя, назовите BesselFunctionInterface. В этом интерфейсе пропишите обращение к функции DBesJn, а во всем остальном коде вместо DBesJn используйте BesselFunctionInterface. Когда будете передавать код, вашим коллегам нужно будет всего лишь скорректировать интерфейс -- вместо DBesJn исправить на BESSEL_JN. Сделать это нужно всего лишь в одном месте.

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


06/10/08
6422
интеловский компилятор понимает BESSEL_JN

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group