2014 dxdy logo

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

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




Начать новую тему Ответить на тему На страницу Пред.  1 ... 51, 52, 53, 54, 55

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


16/08/05
1154
Параллельной версии hyperellratpoints нету в текущей 2.17.1, а хотелось бы. Если вдруг есть идеи, подскажите хотя бы примерное направление, как самому реализовать параллельный аналог этой функции.

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


05/09/16
12615
dmd в сообщении #1671197 писал(а):
Если вдруг есть идеи, подскажите хотя бы примерное направление, как самому реализовать параллельный аналог этой функции.

Как самому не знаю, но я бы предложил задать вопрос разработчикам, сп. https://pari.math.u-bordeaux.fr/lists.html
И вот: https://pari.math.u-bordeaux.fr/archive ... 00006.html

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


13/08/08
14499
Иногда хочется определить целочисленный отрезок длины 1, в котором задано действительное число, например, квадратный корень из неквадрата.
gp > [floor(sqrt(150)),floor(sqrt(150))+1]
%75 = [12, 13]

А вот нужно типа
75886^17+487^13 = 917...143
[floor(sqrt(75886^17+487^13)),floor(sqrt(75886^17+487^13))+1]

И тут
*** floor: precision too low in truncr (precision loss in truncation).
Хотя бы до Е300 :facepalm:

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


05/09/16
12615
gris
? prec=floor(log(75886^17+487^13)/log(10))+10
%1 = 92
? default(realprecision, prec)
? [floor(sqrt(75886^17+487^13)),floor(sqrt(75886^17+487^13))+1]
%2 = [302952208377199909263956604869077972350392, 302952208377199909263956604869077972350393]
?


-- 18.06.2025, 19:02 --

gris в сообщении #1691179 писал(а):
Хотя бы до Е300

default(realprecision,300)
или
\p 300

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


20/08/14
12232
Россия, Москва
Достаточно было заменить
floor(sqrt(...))
на
sqrtint(...)
и вообще не связываться с плавающими числами, оставаться в целых, которые считаются точно независимо от realprecision, в том числе и sqrtint():
Код:
? sqrtint(75886^17+487^13)
%1 = 302952208377199909263956604869077972350392
? sqrtint(75886^27+487^23)
%2 = 762399196777595305347944476443436697974097553827078983457348436251

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


13/08/08
14499
wrest, спасибо! Посчиталось быстро.
Проблема дурацкая, но очень важная. Найти расстояние от праймориала до окаймляющих квадратов.
Код:
{pp=1;
forprime(p=2, 1000, pp=pp*p;
   s1=floor(sqrt(pp));
   print(p,"# = ...",pp%1000," (",s1,",", s1+1,")",
         " d= (",pp-s1^2,",", (s1+1)^2-pp,")");
)}
2# = ...2 (1,2) d= (1,2)
3# = ...6 (2,3) d= (2,3)
5# = ...30 (5,6) d= (5,6)
7# = ...210 (14,15) d= (14,15)
11# = ...310 (48,49) d= (6,91)
13# = ...30 (173,174) d= (101,246)
17# = ...510 (714,715) d= (714,715)
19# = ...690 (3114,3115) d= (2694,3535)
...
997# = ...910 (442609767....

Все проверенные лежат далеко от точных квадратов. Ну кроме самых первых. ВотЪ :wink: Я даже составил последовательность кратчайших расстояний.
[1, 2, 5, 14, 6, 101...]
Dmitriy40, спасибо, подумаю над этим.
+++ а вдруг какой-то праймик вплотную приблизится к точной нечётной степени? Кстати, я заметил, что некоторые пары расстояний в точности равны парам квадратных корней. Нет ли тут чего интересного? Больше такого не встречалось... Ну то, что сумма двух расстояний равна 2s1+1 это понятно из формулы разности квадратов. Видно, что праймориал не тяготеет к определённому концу отрезка последовательных квадратов. Надо это изучить.

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


20/08/14
12232
Россия, Москва
Код:
? pp=1; forprime(p=2,67, pp*=p; x=sqrtint(pp); print1(min(pp-x^2,(x+1)^2-pp),", "); );
1, 2, 5, 14, 6, 101, 714, 2694, 8774, 64874, 175470, 980201, 3368769, 36419829, 212951314, 5138843466, 10999470170, 103728576730, 2555438890809,
? pp=1; forprime(p=2,67, pp*=p; x=sqrtint(pp); print(min(pp-x^2,(x+1)^2-pp)/pp*1.0); );
0.50000000000000000000000000000000000000
0.33333333333333333333333333333333333333
0.16666666666666666666666666666666666667
0.066666666666666666666666666666666666667
0.0025974025974025974025974025974025974026
0.0033633033633033633033633033633033633034
0.0013986013986013986013986013986013986014
0.00027774083501637681204244671736931798851
3.9328912663143380601988759210457958607 E-5
1.0027368793806008635126583892139194983 E-5
8.7489814113569049244125917314340579987 E-7
1.3208942051222199473251216928963594430 E-7
1.1072361814729278073480506101913681429 E-8
2.7838029049598939396557674819216990663 E-9
3.4632436581323949475747003560141913485 E-10
1.5768567542475216729386661477646483043 E-10
5.7206662125718376531535587903857047973 E-12
8.8438919122043606018501622491359578324 E-13
3.2518889360765711493415252504127058019 E-13
? pp=1; forprime(p=2,67, pp*=p; x=sqrtint(pp); print(min(pp-x^2,(x+1)^2-pp)/x*1.0); );
1.0000000000000000000000000000000000000
1.0000000000000000000000000000000000000
1.0000000000000000000000000000000000000
1.0000000000000000000000000000000000000
0.12500000000000000000000000000000000000
0.58381502890173410404624277456647398844
1.0000000000000000000000000000000000000
0.86512524084778420038535645472061657033
0.58743974290305302624531333690412426352
0.80654946912996991322077728323843150906
0.39181491562816101322126925077985615366
0.35982523421471214561270260338907890047
0.19313267370190206590455151879251295565
0.31841109599161300186145469493726340849
0.27156993377895701442516898135598274074
0.90017887277718249298595613281771172821
0.25084715935818523067565388633157643326
0.30288022728654018477801684788053120325
0.91159220355618851699971718159342535187

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 817 ]  На страницу Пред.  1 ... 51, 52, 53, 54, 55

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



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

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


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

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