Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [General] Идентификация типов в Ф95/03 
:(
    Опции темы
popovda
Дата 8.5.2007, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 290
Регистрация: 9.6.2006
Где: Москва

Репутация: нет
Всего: 6



Интересно, а можно ли добиться динамической идентификации стандартных типов в Фортране.
Имею ввиду не определение размера через select_xxx_kind, а самого типа - real или complex. В стандарте 95 идентификации типов как таковой нет, а вот есть ли она в Ф03 - не знаю. Можно ли вообще эту проблему решить? Правда у меня была одна мысль. Обдумаю и поделюсь.


--------------------
С уважением, Попов Д.А.
PM MAIL   Вверх
Cr@$h
Дата 17.1.2009, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
***


Профиль
Группа: Участник Клуба
Сообщений: 1693
Регистрация: 3.4.2005
Где: Санкт-Петербург, Россия

Репутация: 1
Всего: 41



Так что? А задача какая должна при этом решаться?

В F03 есть выбор динамического типа -- select, кажется. В F09 появится возможность объявления типа:
Код

type(integer) :: int

а значит и выбор его. Что скажешь? Посмотри черновик третьего, может примеры в конце...

Меня больше волнует обобщённое программирование (generic programming). Чтобы три раза одну и ту же процедуру не писать для трёх разных точностей.
PM MAIL ICQ   Вверх
popovda
Дата 22.1.2009, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 290
Регистрация: 9.6.2006
Где: Москва

Репутация: нет
Всего: 6



А вот для обобщенного программирования дорабатываю напильником COCO. Вроде должно быть удобно нечто вроде:

Код

?? forall(?kind_t? = 1,2,4,8,16)
subroutine sub_?kind_t?(A)
        integer(?kind_t?), dimension(:), intent(inout) :: A; 
end subroutine 
??endforall



Генерит нужные процедуры по списку параметров разновидности.


--------------------
С уважением, Попов Д.А.
PM MAIL   Вверх
Cr@$h
Дата 22.1.2009, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
***


Профиль
Группа: Участник Клуба
Сообщений: 1693
Регистрация: 3.4.2005
Где: Санкт-Петербург, Россия

Репутация: 1
Всего: 41



Интересно, а что там надо дорабатывать, он это изначально не может? А в директивах он такую подстановку сможет делать ?
(по памяти)
Код

?? forall(?kind_t? = 1,2,4,8,16)
subroutine sub_?kind_t?(A)
!$dec dll_export, name = 'sub_?kind_t?'
        integer(?kind_t?), dimension(:), intent(inout) :: A; 
end subroutine 
??endforall


Добавлено через 2 минуты и 47 секунд
Хотя, это не совсем обобщённое программирование -- ведь сама природа типа одна и та же, а вот для того, что ты спрашивал -- real, complex -- да, проблема для многих актуальна.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Fortran | Следующая тема »


 




[ Время генерации скрипта: 0.0402 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.