2014 dxdy logo

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

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




На страницу Пред.  1 ... 56, 57, 58, 59, 60

А вам пакет PARI/GP интересен?
Да 83%  83%  [ 60 ]
Нет 6%  6%  [ 4 ]
Не уверен(а) 11%  11%  [ 8 ]
Всего голосов : 72
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение05.11.2025, 08:50 
Аватара пользователя
EUgeneUS
Есть еще, вроде бы, библиотечка для python, cypari2.
Соответственно, можно написать необходимый код на питоне, а потом сделать экзешник pyinstaller'ом.
Это все чисто теоретически, сам не проверял.

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение05.11.2025, 10:00 
EUgeneUS в сообщении #1708344 писал(а):
Утилита gp2c может ли работать во Виндой?

Нет.
EUgeneUS в сообщении #1708344 писал(а):
а) переводим код PARI в С на системе с Линуксом.

Ну код pari (самой библиотеки libpari) и так на C
EUgeneUS в сообщении #1708344 писал(а):
б) получившийся код на С компилируем в Винде для создания исполняемого файла под Виндой?

Скорее всего нет. Например, pari использует для собственно вычислений https://ru.wikipedia.org/wiki/GNU_Multi ... on_Library - придётся разбираться как устанавливать в win32 её так, чтобы она была доступна pari. Либо использовать какую-то их ( pari) вычислительную библиотеку которую они сами не рекомендуют если есть GMP.
EUgeneUS в сообщении #1708344 писал(а):
И не очень понял, если мы переводим код в С, а потом компилируем в исполняемый файл,

Насколько я понимаю, тут нет "исполняемого файла" в том понимании как вы задаёте вопрос (типа .exe и куча .dll как в виндовс). Результатом компиляции в C и затем в бинарный формат архитектуры (x86-64 или arm64/aarch64) являются библиотеки (аналог .dll). Аналогом .exe тут является gp, который организует вам интерфейс пользователя, вызывает вашу скомпилированную функцию в библиотеке (которые вызывают функции в libpari, которые вызывают функции в GMP).

Мэйнстримный путь - это linux, в венде соответственно WSL/WSL2 ( https://en.wikipedia.org/wiki/Windows_S ... _for_Linux ). Собственно pari/gp для венды так и сделано: обёрнуто в https://en.wikipedia.org/wiki/MinGW куда положены скомпилированные под x86 код gp, libpari, GMP и т.п., плюс как-то переработан файловый ввод-вывод.

Я не очень твёрдо это всё понимаю, но общее представление такое.
Лично я практически сразу избавился от вендовой версии pari/gp в пользу регулярной, под WSL
Тоже и в гаджетах на андроид: попробовал андроидное приложение и отказался в пользу регулярной pari/gp, даже собирал из исходников. Поскольку ядром андроид является linux, то выполняется всё нативно (но, правда, без поддержки мультипотока). Сейчас в репозиториях termux для андоид есть pari/gp и собирать самому не надо. Но кстати в этих репозиториях нет gp2c. А под ubuntu в WSL -- есть и gp2c тоже.

P.S. С точки зрения ваших трудозатрат на изучение и реализацию, пойти нативным путём установив WSL/WSL2 и там установив pari/gp и gp2c будет намного короче. :mrgreen:

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение05.11.2025, 12:13 
EUgeneUS в сообщении #1708344 писал(а):
а) переводим код PARI в С на системе с Линуксом.

Если тут вы имели в виду тот код на C который производит gp2c, то там есть засада в том, что потом с этим кодом делать. gp2c добавляет специфический раздел с инструкциями (для себя) как надо компилировать код на C в библиотеку, в приведенном мной примере это
Код:
*-*- compile-command: "/data/data/com.termux/files/usr/bin/gcc -c -o ktest.gp.o -O3 -Wall -fno-strict
-aliasing -fomit-frame-pointer -fPIC -I\"/data/data/com.termux/files/usr/include\" ktest.gp.c && /data
/data/com.termux/files/usr/bin/gcc -o ktest.gp.so -shared -O3 -Wall -fno-strict-aliasing -fomit-frame-
pointer -fPIC -Wl,-shared ktest.gp.o -lc -lm -L/data/data/com.termux/files/usr/lib -lpari"; -*-*/

Это существенно определяется положением дел в вашей системе: где что расположено.
Далее, для компиляции вам потребуются как минимум заголовки от libpari
Код:
#include <pari/pari.h>

Затем там инструкции по инициализации функции в gp (которые вам не нужны если не будет gp) и дальше собственно код, который использует функции и типы libpari.
Например вот тут
Код:
        for (x = gen_1; gcmp(x, max_xy) <= 0; x = gaddgs(x, 1))

для вычисления x=x+1 применяется x = gaddgs(x, 1) которая скорее всего в конечном итоге (трудно проверить) является функцией сложения в GMP или во внутреннем ядре арифметики, в зависимости от того как собрана pari/gp

То есть получаемый в результате работы gp2c код пользовательской функции на C в конечном итоге не является независимым, он зависит от того, как в системе установлена pari/gp

 
 
 [ Сообщений: 888 ]  На страницу Пред.  1 ... 56, 57, 58, 59, 60


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