2014 dxdy logo

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

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




На страницу Пред.  1 ... 26, 27, 28, 29, 30, 31, 32 ... 55  След.

А вам пакет PARI/GP интересен?
Да 83%  83%  [ 58 ]
Нет 6%  6%  [ 4 ]
Не уверен(а) 11%  11%  [ 8 ]
Всего голосов : 70
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение16.04.2021, 16:16 
fosnie в сообщении #1514598 писал(а):
А вот замена слешей на обратные слеши, кавычек на апострофы пока не помогли запустить ни одну программу из другой директории.

Да, я уже даже у себя установил. У меня работает. Но у меня путь латинский весь и без пробелов,
\r "C:\Users\wrest\Documents\myscripty1.gp"
Кириллица портится... Я бы кириллицу вообще бы не использовал, раз такое дело.
Текст макроса, у меня работает:
Код:
{print("Input number of counters");
cnt=vector(input());
for(i=1,1000,
   if(!issquarefree(i), next);
   cnt[omega(i)%#cnt+1]++;
   print1("mod0=", cnt[1]); for(k=1,#cnt-1, print1(", mod", k, "=", cnt[k+1]); ); print;
);}


Результат работы:
Код:
Reading GPRC: gprc.txt ...Done.

                                      GP/PARI CALCULATOR Version 2.11.3 (released)
                              amd64 running mingw (x86-64/GMP-6.1.2 kernel) 64-bit version
                                compiled: Feb 17 2020, gcc version 6.3.0 20170516 (GCC)
                                                threading engine: single
                                     (readline v8.0 enabled, extended help enabled)

                                         Copyright (C) 2000-2018 The PARI Group

PARI/GP is free software, covered by the GNU General Public License, and comes WITHOUT ANY WARRANTY WHATSOEVER.

Type ? for help, \q to quit.
Type ?17 for how to get moral (and possibly technical) support.

parisize = 8000000, primelimit = 500000
(16:20) gp > \r "C:\Users\wrest\Documents\myscripty1.gp"
Input number of counters
5
mod0=1, mod1=0, mod2=0, mod3=0, mod4=0
mod0=1, mod1=1, mod2=0, mod3=0, mod4=0
mod0=1, mod1=2, mod2=0, mod3=0, mod4=0

и так далее, ещё много строк.

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение16.04.2021, 16:23 
Dmitriy40 в сообщении #1514595 писал(а):
fosnie
Значит не кладите файлы в папки с русскими символами. Чтобы полный путь к файлу был только из латинских символов.


Да, спасибо, помогло, но тогда и в теле программы нельзя использовать кирилицу, иначе вот что при исполнении вылезает:
Цитата:
break[17]> \r C:\myscriptty2.txt
┬тхфшЄх ъюышўхёЄтю ёў╕Єўшъют:


-- 16.04.2021, 16:28 --

wrest в сообщении #1514599 писал(а):
Да, я уже даже у себя установил. У меня работает. Но у меня путь латинский весь и без пробелов,
\r "C:\Users\wrest\Documents\myscripty1.gp"
Кириллица портится... Я бы кириллицу вообще бы не использовал, раз такое дело.
Текст макроса, у меня работает:



Да, спасибо, после установки скобок по рекомендации Dmitriy40 и у меня все заработало, и в латинских директориях нормально все работает, только коверкает кириллицу при исполнении кода. И из папок, путь к которым содержит кириллицу, не запускается.

Рекомендации услышал. Всем еще раз большое спасибо.

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение16.04.2021, 16:42 
fosnie
Вряд ли вы решитесь, но вот я, у себя, установил pari в так называемые windows services for linux. Вот тот же файл, с кириллицей в тексте, (сохраненный из блокнота в UTF-8) и в том же месте.

(Оффтоп)

Код:
wrest@wrestpc:~$ gp
Reading GPRC: /etc/gprc ...Done.

                                      GP/PARI CALCULATOR Version 2.11.2 (released)
                              amd64 running linux (x86-64/GMP-6.1.2 kernel) 64-bit version
                            compiled: Jul 12 2019, gcc version 9.1.0 (Ubuntu 9.1.0-8ubuntu1)
                                               threading engine: pthread
                                     (readline v8.0 enabled, extended help enabled)

                                         Copyright (C) 2000-2018 The PARI Group

PARI/GP is free software, covered by the GNU General Public License, and comes WITHOUT ANY WARRANTY WHATSOEVER.

Type ? for help, \q to quit.
Type ?17 for how to get moral (and possibly technical) support.

parisize = 8000000, primelimit = 500000, nbthreads = 8
? \r /mnt/c/Users/wrest/Documents/myscripty1.gp
Введите количество счетчиков
5
mod0=1, mod1=0, mod2=0, mod3=0, mod4=0
mod0=1, mod1=1, mod2=0, mod3=0, mod4=0
mod0=1, mod1=2, mod2=0, mod3=0, mod4=0
mod0=1, mod1=3, mod2=0, mod3=0, mod4=0

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение16.04.2021, 16:49 

(Оффтоп)

wrest
я может и решился бы на это, но, насколько я понимаю, WSL можно поставить только на windows10, а у меня гораздо более ранняя версия )

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение16.04.2021, 19:51 
fosnie, можно установить Linux на виртуальную машину (к примеру, VirtualBox).

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение27.11.2021, 02:11 
Интересный глюк особенность в PARI/GP:
Код:
? n=1; print1(n); print1(n++); print1(n++); print(n);
1233
А должно быть:
Используется синтаксис C++
int n=1; std::cout << n << n++ << n++ << n << "\n";
1123

Соответственно неправильно работают конструкции типа v[n++]=1;.

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение27.11.2021, 03:12 
Dmitriy40
Из мануала
https://pari.math.u-bordeaux.fr/dochtml/html-stable/operators.html писал(а):
Beware that some GP operators differ slightly from their C counterparts. For instance, GP's postfix ++ returns the new value, like the prefix ++ of C,

...
Цитата:
++ and -- (unary, postfix): if x is an lvaluex++ assigns the value x+1 to x, then returns the new value of x. This corresponds to the C statement ++x: there is no prefix ++ operator in GP. x-- does the same with x-1. These operators are not associative, i.e. x++++ is invalid, since x++ is not an lvalue.

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение27.11.2021, 03:51 
Я и говорю, особенность. Гады, могли бы сделать и совместимо с С, ++n, а n++ запретить (как сейчас запрещён префикс), и проблем бы ни у кого не было. Или вообще инкремент/декремент не делать, раз он всегда и везде заменим на n±=1.

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение12.02.2022, 22:31 
Аватара пользователя
maxal в сообщении #255964 писал(а):
Вывод в файл включается командой \l - например:
Код:
? \l result.txt


Да, раньше(сколько-то лет назад) это работало. А сейчас, в другой версии(2-13-2) не получается. При этой команде появляется инфа:

log = 1(on)
[logfile is "result.txt"]

То есть вроде как всё в порядке, но файла этого я на компе не вижу...

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение13.02.2022, 00:26 
Он наверняка есть, только в текущем каталоге, а уж какой каталог текущий для запущенного непонятно как PARI - вопрос! Он может быть например C:\Windows\System32 как для всех консольных приложений или близко там.
Укажите полный путь к файлу лога (и для надёжности без пробелов и нелатинских символов) - там его и найдёте.

Или выполните команду
Код:
? system("cd")
C:\Temp
?
и узнайте текущий каталог.

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение13.02.2022, 04:47 
Аватара пользователя
Dmitriy40, спасибо.

Dmitriy40 в сообщении #1548687 писал(а):
Или выполните команду systen("cd") и узнайте текущий каталог.

Выполнил. Только не systen, а system.

Ответ:

C:\Program Files\Pari32-2-13-2

Только там в корне его нету. И в C:\Program Files\Pari32-2-13-1 тоже.

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение13.02.2022, 09:19 
Yadryara
А права на создание файлов и запись в той папке есть? Винда вообще говоря защищает эти папки от записи и изменений.
Попробуйте запускать PARI из другой папки, в которую точно можно писать файлы без ограничений.
Я специально попробовал создать новую папку ровно с указанным Вами именем в Program Files, ответил да на запрос системы о повышении прав, запустил оттуда PARI:
Код:
? \l abc.log
   log = 1 (on)
   [logfile is "abc.log"]
? system("cd")
C:\Program Files\Pari32-2-13-2
? \l
   log = 0 (off)
   [logfile was "abc.log"]
?
И в результате у меня папка тоже пуста.
НО! Если поискать по всему диску, то появилось аж 4 файла с тем же именем, одинаковым размером и датой:
Код:
C:\Documents and Settings\Admin\AppData\Local\VirtualStore\Program Files\Pari32-2-13-2\abc.log
C:\Documents and Settings\Admin\Local Settings\VirtualStore\Program Files\Pari32-2-13-2\abc.log
C:\Users\Admin\AppData\Local\VirtualStore\Program Files\Pari32-2-13-2\abc.log
C:\Users\Admin\Local Settings\VirtualStore\Program Files\Pari32-2-13-2\abc.log
Скорее всего Ваш файл тоже там (физически это один файл, но доступный из 4-х мест).

При запуске же из C:\Users\All Users\Documents файл в ней появляется. Вместо All Users можно и своё имя подставить (или Все пользователи для русской винды).
Текущую папку при работе программ можно указать в ярлыке если запускать через него, при этом сам exe может лежать где угодно.

Т.е. это проблема всё же в системе безопасности винды, чем PARI.

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение13.02.2022, 10:19 
Аватара пользователя
Dmitriy40, Большое Спасибо.

Да, когда я создал файл в Блокноте и попытался скопировать в тот самый PARI-шный каталог, то потребовалось повысить права до администратора. Но и переместить таким способом, и прочитать потом из PARI всё же получилось.

Дальше, видимо, сам разберусь.

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение24.03.2022, 01:28 
В PARI есть минимум три функции, позволяющие получить из числа его строковое представление, Str и strprintf и strexpand, но вот чтобы понять как выполнить обратное, из строки получить число, понадобилось пару часов носом рыть gp_users.pdf (потому что в gp_refcard.pdf желаемого тупо не обнаружил, а Int("123") не работает) и найти ну абсолютно не очевидную eval:
Код:
? s="1234599"
%1 = "1234599"
? eval(s)
%2 = 1234599
Может кому-то пригодится.

 
 
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение30.03.2022, 18:16 
Аватара пользователя
Коллеги, подскажите, пожалуйста, есть ли в PARI способ быстрого определения перечня элементов вектора, не являющихся элементами другого вектора? Я пробовал два варианта: vecsearch в цикле и setminus, оба выглядят жутко долгими. На векторах натуральных чисел величиною меньше миллиона и размером около 10000 за полчаса (!) ни один из вариантов еще не отработал; при размере в 1000 отрабатывает примерно за минуту. Первый вариант исходно выругался на размер стека по умолчанию, выставил parisizemax = 512000000, parisize=32000000, и два окошечка PARI/GP надолго задумались...

 
 
 [ Сообщений: 824 ]  На страницу Пред.  1 ... 26, 27, 28, 29, 30, 31, 32 ... 55  След.


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