Преобразование Фурье-Бесселя (или Ханкеля нулевого порядка) на языке С++
(Эта тема расположена в архиве и закрыта для обсуждения.)

Версия для печати

Конференция: Конференция iXBT.com (http://forum.ixbt.com/)
Форум: Программирование (http://forum.ixbt.com/?id=26)
URL: http://forum.ixbt.com/topic.cgi?id=26:37723



insect, 07.01.2008 12:53
Кто нибудь знает где можно найти библиотеку дискретного преобразования Ханкеля для языка С++?
И существуют ли такие библиотеки для других языков программирования?

1. nenin, 07.01.2008 16:55
цитата:
insect:
Кто нибудь знает где можно найти библиотеку дискретного преобразования Ханкеля для языка С++?
И существуют ли такие библиотеки для других языков программирования?


http://www.netlib.org/bib/gams.html

2. insect, 07.01.2008 18:30
nenin
Спасибо, но тут я не сумел найти того что мне нужно

3. nenin, 07.01.2008 19:38
цитата:
insect:
nenin
Спасибо, но тут я не сумел найти того что мне нужно
Discrete Hankel Transforms? В gsl, там на С.
http://www.gnu.org/software/gsl/

4. insect, 07.01.2008 20:49
nenin
Спасибо огромное! Буду разбираться.

5. insect, 10.01.2008 00:12
Теперь возникла следующая проблема: чтобы скомпилировать GSL под Windows, необходим MinGW / Cygwin... А для win xp64, на которой я работаю, minGW и Cygwin еще не создали. Что делать в такой ситуации? Есть ли какое-нибудь альтернативы GSL с точки зрения дискретного преобразования Ханкеля?

6. nenin, 10.01.2008 00:13
цитата:
insect:
Теперь возникла следующая проблема: чтобы скомпилировать GSL под Windows, необходим MinGW / Cygwin... А для win xp64, на которой я работаю, minGW и Cygwin еще не создали. Что делать в такой ситуации? Есть ли какое-нибудь альтернативы GSL с точки зрения дискретного преобразования Ханкеля?
Вам обязательно 64б? Компилер какой?

7. Dilon, 10.01.2008 00:17
insect
главное без паники, у меня не так давно получилось это сделать
Процесс получения я описывал тут:
http://railcode.blogspot.com/2007/07/mingw-win64.html
Могло, конечно, кое-что поменяться(особенно в ревизии gcc/gcc/config/i386/i386.c), но думаю собрать реально.

8. insect, 10.01.2008 00:59
nenin
Компилятор Intel (R) 64 битный, но 32 битный тоже могу установить. На каком компилировать не принципиально. То есть можно использовать mingw 32 даже под 64 битной виндой? А Cygwin?
Dilon
спасибо, я уже у Вас спрашивал про процесс такой сбоки , только до сих пор нет времени разобраться

9. nenin, 10.01.2008 01:02
цитата:
insect:
nenin
Компилятор Intel (R) 64 битный, но 32 битный тоже могу установить. На каком компилировать не принципиально. То есть можно использовать mingw 32 даже под 64 битной виндой? А Cygwin?
Я так думаю, что да. Код же 32б нормально запускается? Т.е. можно воспользоваться и mingw 32, можно попробовать- и ic (через настройку msys).

10. JohnDoe, 10.01.2008 02:55
цитата:
insect:
Теперь возникла следующая проблема: чтобы скомпилировать GSL под Windows, необходим MinGW / Cygwin... А для win xp64, на которой я работаю, minGW и Cygwin еще не создали. Что делать в такой ситуации? Есть ли какое-нибудь альтернативы GSL с точки зрения дискретного преобразования Ханкеля?

???

Минимальная переработка .h файлов (пути и т.д.) и все прекрасно компилируется MS студией.

11. nenin, 10.01.2008 19:53

12. insect, 18.01.2008 01:13
JohnDoe
Можно пожалуйста поподробней, что именно нужно делать? Допустим я создал win32 console application, далее подключаю необходимые для нужной мне функции дискретного преобразования Ханкеля *.h и *.c файлы и пытаюсь скомпилировать. Но ведь эти *.h и *.с файлы ссылаются на другие *.h и *.с файлы Gnu C Library, таким образом к проекту приходится подключать чуть ли не всю огромную библиотеку.

13. JohnDoe, 18.01.2008 02:59
цитата:
insect:
JohnDoe
Можно пожалуйста поподробней, что именно нужно делать? Допустим я создал win32 console application, далее подключаю необходимые для нужной мне функции дискретного преобразования Ханкеля *.h и *.c файлы и пытаюсь скомпилировать. Но ведь эти *.h и *.с файлы ссылаются на другие *.h и *.с файлы Gnu C Library, таким образом к проекту приходится подключать чуть ли не всю огромную библиотеку.

???

Несколько из specfunc, из complex, sys. На каждом шаге компилятор сам скажет, что ему не хватает.

Но на самом деле можно просто повытирать ненужные функции из файлов. Это сильно уменьшит зависимости.

Все это дольше печатать, чем делать.

14. nenin, 18.01.2008 15:56
Да нет там никаких чрезмерных зависимостей. GSL составлен по классическим рецептам: 1 файл- одна функция. При линковке все лишнее отсыхает.

15. JohnDoe, 18.01.2008 16:52
цитата:
nenin:
Да нет там никаких чрезмерных зависимостей. GSL составлен по классическим рецептам: 1 файл- одна функция. При линковке все лишнее отсыхает.


Ну эту сказку нам тоже втирать не надо.

Недельку назад нужна была мне функция Эйри (просто сверить, что дает gsl по сравнению с последним изданием Numerical Recipes ). Так сама Эйри – все чисто. А ее производные тянут еще четырнадцать файлов.

16. insect, 18.01.2008 17:13
JohnDoe
А Numerical Recipes это просто книга или к ней прилагаются еще готовые библиотеки? И как можно достать эту книгу?

17. Scorpio, 18.01.2008 17:39
insect
http://www.nr.com/ Раньше была доступна онлайн вместе с кодом. Сейчас выглядит как будто бы надо платить.

18. JohnDoe, 18.01.2008 18:26
цитата:
insect:
JohnDoe
А Numerical Recipes это просто книга или к ней прилагаются еще готовые библиотеки? И как можно достать эту книгу?
книга
http://search.barnesandnoble.com/booksearch/isbnInquiry.asp?z=y&EAN=9780521880688&itm=2
библиотеки
http://search.barnesandnoble.com/booksearch/isbnInquiry.asp?z=y&EAN=9780521706858&itm=7

19. insect, 18.01.2008 19:04
JohnDoe
там требуют дофига бабок...
Не могли бы Вы как нибудь передать мне эту библиотеку и если есть книгу?

20. nenin, 18.01.2008 19:40
цитата:
JohnDoe:
цитата:
nenin:
Да нет там никаких чрезмерных зависимостей. GSL составлен по классическим рецептам: 1 файл- одна функция. При линковке все лишнее отсыхает.
Ну эту сказку нам тоже втирать не надо.
<***> Так сама Эйри – все чисто. А ее производные тянут еще четырнадцать файлов.
И как они их тянут?

21. JohnDoe, 18.01.2008 21:06
цитата:
nenin:
цитата:
JohnDoe:
цитата:
nenin:
Да нет там никаких чрезмерных зависимостей. GSL составлен по классическим рецептам: 1 файл- одна функция. При линковке все лишнее отсыхает.
Ну эту сказку нам тоже втирать не надо.
<***> Так сама Эйри – все чисто. А ее производные тянут еще четырнадцать файлов.
И как они их тянут?

Зовут функции, определенные в других файлах. Что обсуждать, библиотека отвратно спроектирована. Другое дело, что мне от нее нужно число, и добавить 14 файлов в проект мне не проблема.

P.S. В числомололке определять не checked функции через аналогичные checked

Это не просто плохо, это counter-intuitive

22. nenin, 18.01.2008 21:18
цитата:
JohnDoe:
цитата:
nenin:
цитата:
JohnDoe:
цитата:
nenin:
Да нет там никаких чрезмерных зависимостей. GSL составлен по классическим рецептам: 1 файл- одна функция. При линковке все лишнее отсыхает.
Ну эту сказку нам тоже втирать не надо.
<***> Так сама Эйри – все чисто. А ее производные тянут еще четырнадцать файлов.
И как они их тянут?
Зовут функции, определенные в других файлах. <***> Другое дело, что мне от нее нужно число, и добавить 14 файлов в проект мне не проблема.
Зачем в проект добавлять 14 файлов?
Я, грешным делом, добавляю 1 или 2 либы (если blas нужен), и соотв. хедеры. А зачем отдельные файлы-то добавлять?
цитата:
Что обсуждать, библиотека отвратно спроектирована.
Библиотека как библиотека. Не супер, но вопросы затыкает. Айри в cephes есть.

23. JohnDoe, 18.01.2008 21:39
цитата:
nenin:
Я, грешным делом, добавляю 1 или 2 либы (если blas нужен), и соотв. хедеры. А зачем отдельные файлы-то добавлять?

У меня сыпалась задача, и было неясно, что к этому приводит: то ли расчет (там и большие аргументы, и нулевые, и большие отрицательные), и вся эта дрянь интегрируется, то ли постановка задачи. Поэтому хотел все посмотреть детально в отладчике.

С другой стороны, сразу как то взгляд на сборку для Windows не попал, а чем искать или собирать, мне проще в проект сунуть.

Тут то я структуре и изумился.

24. insect, 18.01.2008 22:03
nenin
Я скачал mingw32 и msys и скомпилировал библиотеку gsl целиком, путем набора команд
./config
make
make install
после этого в у меня возникли толькоо две dll-ки, одна в папке .libs, другая в cblas. Как мне теперь создать .lib файлы? И можно ли как нибудь компилировать из библиотеки только нужную часть, а не всю целиком?

Добавление от 18.01.2008 22:11:

JohnDoe
А почему Вы не ответили на мою просьбу про Numerical Recipes ?

25. nenin, 18.01.2008 23:09
цитата:
insect:
nenin
Я скачал mingw32 и msys и скомпилировал библиотеку gsl целиком, путем набора команд
./config
make
make install
Я без make install обхожусь, сам копирую в mingw/lib.
цитата:

после этого в у меня возникли толькоо две dll-ки, одна в папке .libs, другая в cblas. Как мне теперь создать .lib файлы? И можно ли как нибудь компилировать из библиотеки только нужную часть, а не всю целиком?
Э... а как на счет
....gsl-1.10\.libs\libgsl.a ? Это она и есть. mingw не делает *.lib, у mingw - lib*.a.
Короче: нужно найти
libgsl.a
libgslcblas.a
и закинуть их в mingw/lib, или mingw/lib/gsl
из каталога ...gsl-1.10\gsl\ скопировать хедеры в mingw/include/gsl

Добавление от 18.01.2008 23:14:

цитата:
JohnDoe:
цитата:
nenin:
Я, грешным делом, добавляю 1 или 2 либы (если blas нужен), и соотв. хедеры. А зачем отдельные файлы-то добавлять?
У меня сыпалась задача, и было неясно, что к этому приводит: то ли расчет (там и большие аргументы, и нулевые, и большие отрицательные), и вся эта дрянь интегрируется, то ли постановка задачи. Поэтому хотел все посмотреть детально в отладчике.
В gsl есть контроль всяких таких приключений, и система отработки ошибок- архаичная, но вполне работоспособная. Кстати, если Вы не вырубили обработку ошибок по умолчанию и пишете под GUI, то могут быть проблемки: gsl сообщает об ошибках в cerr...
цитата:

С другой стороны, сразу как то взгляд на сборку для Windows не попал, а чем искать или собирать, мне проще в проект сунуть.
Тут то я структуре и изумился.
Видите ли, это внутренняя структура. Кроме разработчиков, под капот никто не лазает, и никому оно не надо. При штатном configure и маke получается по одной библиотеке на раздел, и одна большая общая и отдельно- сblas, потому как его можно подменить на atlas, скажем.

26. insect, 18.01.2008 23:21
nenin
Спасибо за советы. А как после этого можно использовать собранные таким образом библиотеки в MSVS? Для меня, MSVS очень удобная среда для написания программ.

27. nenin, 18.01.2008 23:25
цитата:
insect:
nenin
Спасибо за советы. А как после этого можно использовать собранные таким образом библиотеки в MSVS? Для меня, MSVS очень удобная среда для написания программ.
Никак. mingw берет любые lib, а вот MSVC- нет. Во всяком разе, я никогда не слыхал. Или пытайтесь сбилдить с помощью VC, или code::blocks+mingw+msys+gdb. Кстати, можете попытаться (не знаю, чем кончится) воспользоваться полученной dll. Но никаких гарантий.

28. insect, 18.01.2008 23:43
nenin
Полученную dll я уже пробовал использовать Но не помогло, VS не видит те функции, на которые ссылался .h файл

29. nenin, 18.01.2008 23:50
Я предпочитаю gcc/mingw. Ну а на Вашем я бы попробовал поискать, как сбилдить gsl c помощью VC.

30. insect, 19.01.2008 01:38
Это случилось! Мне удалось наконец скомпилировать программу в MSVS (после того как я добавил 24 файла в проект) . Кстати в число этих файлов вошли так же .c файлы для Эйри. Каким макаром бесселя связаны с функциями Эйри мне непонятно

31. JohnDoe, 19.01.2008 02:19
цитата:
insect:
Это случилось! Мне удалось наконец скомпилировать программу в MSVS (после того как я добавил 24 файла в проект) . Кстати в число этих файлов вошли так же .c файлы для Эйри. Каким макаром бесселя связаны с функциями Эйри мне непонятно

Эйри – это Бессель порядка 1/3. Почему он нужен для общего вычисления – загадка.

Книгу я купил, но я на другом полушарии.

32. nenin, 19.01.2008 02:41
insect, JohnDoe - там разложения всякие (Чебышев, что-ли), могут быть общие куски в виде таблиц коэфициентов.

33. JohnDoe, 19.01.2008 03:30
цитата:
insect:
nenin
Полученную dll я уже пробовал использовать Но не помогло, VS не видит те функции, на которые ссылался .h файл

Забыл сказать про это. Нужно, естественно, добавлять extern "C".

34. nenin, 19.01.2008 17:15
цитата:
JohnDoe:
цитата:
insect:
nenin
Полученную dll я уже пробовал использовать Но не помогло, VS не видит те функции, на которые ссылался .h файл
Забыл сказать про это. Нужно, естественно, добавлять extern "C".
код:

#undef __BEGIN_DECLS
#undef __END_DECLS
#ifdef __cplusplus
# define __BEGIN_DECLS extern "C" {
# define __END_DECLS }
#else
# define __BEGIN_DECLS /* empty */
# define __END_DECLS /* empty */
#endif

__BEGIN_DECLS
<****>

У VC может быть другая система внутреннего именования переменных.



URL: http://forum.ixbt.com/topic.cgi?id=26:37723