2014 dxdy logo

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

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




Начать новую тему Ответить на тему На страницу Пред.  1 ... 4, 5, 6, 7, 8, 9, 10 ... 54  След.

А вам пакет PARI/GP интересен?
Да 83%  83%  [ 58 ]
Нет 6%  6%  [ 4 ]
Не уверен(а) 11%  11%  [ 8 ]
Всего голосов : 70
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение03.10.2015, 23:05 
Заслуженный участник


20/08/14
11781
Россия, Москва
arseniiv
Я бы сказал знак ";" в определённых местах наоборот подавляет вывод результата выражения. Например:
Код:
? v=12
%1 = 12
? v=15;
? v=22
%3 = 22
?
Отображено в консоли лишь 12 и 22, но не 15. Хотя результат 15 и запомнен и доступен для ссылок.
Но далеко не везде можно пропускать ";".

-- 03.10.2015, 23:06 --

Begemot82
Спасибо.

 Профиль  
                  
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение04.10.2015, 00:10 
Заслуженный участник


27/04/09
28128
Dmitriy40 в сообщении #1058928 писал(а):
Я бы сказал знак ";" в определённых местах наоборот подавляет вывод результата выражения.
А, такой эффект в Wolfram тоже есть, потому что там в таком случае a; ; b; считается синонимом a; Null; b; Null, и Null не выводится, если получается в результате чего-нибудь. Может, и здесь снова так?

 Профиль  
                  
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение04.10.2015, 00:52 
Заслуженный участник


20/08/14
11781
Россия, Москва
arseniiv
Я детально в синтаксис не вникал (вон даже про комментарии не знал), про подавление вывода от наличия ";" заметил где-то в хелпе случайно.

 Профиль  
                  
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение04.10.2015, 01:05 
Заслуженный участник


27/04/09
28128

(Оффтоп)

Скачал, 2; 3 возвращает 3, хотя print(;2;) почему-то печатает 2. Ладно, любопытство удовлетворил. :-)

 Профиль  
                  
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение07.10.2015, 20:40 


10/07/15
286
Обнаружил интересную особенность - большие числа можно записывать через пробелы
Код:
a=123 456 789;b=38734 36777;print(a" "b);

 Профиль  
                  
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение08.10.2015, 05:39 
Заслуженный участник
Аватара пользователя


11/01/06
3824
Begemot82 в сообщении #1060324 писал(а):
Обнаружил интересную особенность - большие числа можно записывать через пробелы
PARI/GP вообще игнорирует пробелы (за исключением тех, что в кавычках):
Код:
gp > s    i    n     (   P         i    /  2  .  0 )   
%1 = 1.0000000000000000000000000000000000000

 Профиль  
                  
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение18.02.2016, 23:08 
Заслуженный участник


27/06/08
4062
Волгоград
PARI тормозит :-(
Летом считал на PARI. И он приятно удивил быстродействием. В десятки раз быстрее maple.
Сейчас запустил аналогичную задачу. Считает раз в 10 медленнее maple. Т.е. в сотни раз медленнее себя летнего.
На компе ничего не переставлял.
Для проверки запустил не аналогичную, а ТУ ЖЕ задачу. Тормозит.

Попробовал выделить побольше памяти, увеличить primelimit. Эффекта нет.

В чем может быть дело?

 Профиль  
                  
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение19.02.2016, 00:35 
Аватара пользователя


28/01/12
467
VAL
А что у вас за ОС?
Посмотрите в процессах, чем занят компьютер?

PS. Бывает, что антивир страшно подвисает комп.
Если у вас Винда, для проверки на время вычислений отключите Интернет и антивирус.

 Профиль  
                  
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение19.02.2016, 01:01 
Заслуженный участник


27/06/08
4062
Волгоград
NT2000 в сообщении #1100533 писал(а):
VAL
А что у вас за ОС?
Посмотрите в процессах, чем занят компьютер?

PS. Бывает, что антивир страшно подвисает комп.
Если у вас Винда, для проверки на время вычислений отключите Интернет и антивирус.

ОС - семерка.
Антивирус - Avast. В отличие от Касперского в торможении программ не замечен.
Процессор загружен практически только одним PARI/GP. На 25%.
Кстати!
Может быть в этом и разгадка. Возможно, (что-то такое припоминаю) я летом каким-то образом (а каким, уже не помню :-( ) подключал к работе PARI все (или почти все) ядра. А сейчас используется всего одно.

Тогда вопрос дилетанта: как заставить работать с PARI другие ядра? Процессор - Intel Core 5 i-32

 Профиль  
                  
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение19.02.2016, 02:13 
Заслуженный участник


20/08/14
11781
Россия, Москва

(Оффтоп)

Очень мне интересно, на какой же это задаче увеличение количества ядер с 1 до 4 даёт 100-кратный выигрыш производительности?! :shock:

Команда \d в консоли выдаёт список значений по умолчанию множества параметров , среди них есть два вроде бы относящиеся к многозадачности: nbthreads и threadsize. Можно покопать в их сторону.

 Профиль  
                  
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение19.02.2016, 10:51 
Заслуженный участник


27/06/08
4062
Волгоград
Dmitriy40 в сообщении #1100543 писал(а):
Очень мне интересно, на какой же это задаче увеличение количества ядер с 1 до 4 даёт 100-кратный выигрыш производительности?! :shock:
Ну... менее эмоциональная оценка, свидетельствует о замедлении в разы, а не в сотни раз :-)
Цитата:
Команда \d в консоли выдаёт список значений по умолчанию множества параметров , среди них есть два вроде бы относящиеся к многозадачности: nbthreads и threadsize. Можно покопать в их сторону.
Попробовал изменить значение nbthreads с 1 до 3 (по аналогии с тем, как изменяется primelimit). Но ничего не изменилось, по-прежнему процессор загружен на 25%

 Профиль  
                  
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение10.05.2016, 19:43 


16/08/05
1153
Наткнулся на ошибку, не пойму - у меня или в pari/gp. Простейший код, удаление из списка элемента
Код:
tst()=
{

local(H, S):list;

H= List(); S= List();

for(i=1, 100, listput(S, i));

H= S;

print("#H= ", #H);
print("#S= ", #S);

listpop(H, 67);

print("#H= ", #H);
print("#S= ", #S);

};

просто в gp работает правильно, но в gp2c оператор listpop(H, 67) удаляет и из H и из S:

Изображение

 Профиль  
                  
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение25.05.2016, 21:02 


16/08/05
1153
Два варианта посчитать установленные биты:
Код:
? bitcount1(n)= sum(i=0, #binary(n), bittest(n, i));
?
? bitcount2(n)={i=0;while(n!=0,i++;n=bitand(n,n-1));return(i)};
?
? for(i=1,10^6,bitcount1(i))
time = 4,660 ms.
?
? for(i=1,10^6,bitcount2(i))
time = 10,266 ms.


Можно ли сделать ещё быстрее?

 Профиль  
                  
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение25.05.2016, 22:10 
Заслуженный участник


20/08/14
11781
Россия, Москва
Сравнение скорости не совсем корректно, для других диапазонов чисел результат может быть более драматичным, например:
Код:
? for(i=10^12, 10^12+10^6, bitcount1(i))
time = 2,555 ms.
? for(i=10^12, 10^12+10^6, bitcount2(i))
time = 1 min, 20,199 ms.

Возможное улучшение:
Код:
? bitcount3(n) = vecsum(binary(n));
? for(i=10^12, 10^12+10^6, bitcount3(i))
time = 776 ms.

 Профиль  
                  
 
 Re: интерактивный курс: введение в программирование на PARI/GP
Сообщение26.05.2016, 11:11 


16/08/05
1153
Здорово, спасибо!


Другой вопрос. Как быстро пробежать по установленным битам в большом числе, допустим размером тысяча бит?

Код:
?
?\\ N - длина в битах числа n
?
?bitdel(n, i)= bitnegimply(n, 2^i);
?
?for(i=1, N, if(bittest(n, i), if(<некое условие>, n= bitdel(n, i))));
?

Возможно такое ускорить?

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 810 ]  На страницу Пред.  1 ... 4, 5, 6, 7, 8, 9, 10 ... 54  След.

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



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

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


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

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