2014 dxdy logo

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

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




Начать новую тему Ответить на тему На страницу Пред.  1 ... 82, 83, 84, 85, 86
 
 Re: Симметричные кортежи из последовательных простых чисел
Сообщение02.05.2025, 14:59 
Заслуженный участник


20/08/14
12159
Россия, Москва
За три дня наконец написал на асме x64 подсчёт констант HL1 (в один поток). Сравнение скорости с PARI: для 19-252 подсчёт шести констант (C0-C6, шестикратное загрязнение) занимает 374с, на асме 7с. C11 на PARI считались 11ч52м (вдвое оптимизировано), на асме за 28м, C12 на PARI считались 22ч38м (вдвое оптимизировано), на асме хватило 52м. C15 посчитались за 2.9ч.
А все 30 - за 4.9ч:
vC=[1592669394.7454967048413543203360474784, 224048612037.93039519376335978164281999, 15060404457776.501117870903945957690526, 643975079051969.03088164442593218519955, 19672864014876028.811392004831387751738, 457178627398399663.18641317636046162635, 8402763498659303975.5096285952058360662, 125377224477963805206.89777938556921101, 1546929025718798946089.7912641404857550, 15994906029871361204769.187564407532779, 139968081763087863869464.29066290148284, 1044156353257761368147093.1368606066768, 6675438285921407673520498.0916226089839, 36708432877688236096050822.004415616758, 174035122935989493790024654.03258975691, 712196947564732599952975315.78320487298, 2515955263037428615471767242.6561789800, 7665777149089072567977478763.2382586304, 20106445874574298344616432170.789792210, 45264384755093882439279790845.152290852, 87100700457132907803880854701.370644633, 142466968404912726214137650877.36926652, 196618531164038126660089156973.85750819, 226702801658738154151893801565.04524662, 215451193980762378792182794368.57516197, 165604812316252926590574664686.92377585, 100155274592395251942807287899.23908798, 45706363430133812262358484887.605564941, 14703144047237460493314662394.499537327, 2942032946247678005083329346.8122466890, 271007079912233354594900744.95914433491]
К сожалению обеспечить точность как в PARI не удалось, в C0-C13 верные лишь 19-14 цифр, в следующих наверное и чуть меньше, 11-13, точно не знаю (самые неточные - где больше вариантов грязных паттернов, к концу точность улучшается). Фактически точность принесена в жертву скорости.

Один день из трёх заняли доработки для подсчёта любых паттернов, не только заданного при компиляции. Теперь можно считать любые паттерны (только с чётными числами) длиной до 1000 и диаметром до 2000 с загрязнением до 99 (некритично, просто памяти жалко). Используется из PARI так:
Код:
v=[0,6,12,30,42,72,90,96,120,126,132,156,162,180,210,222,240,246,252];
maxn=99;
BC=vector(#v+maxn,k, if(k<#v, 0, prodeulerrat((p^k-k*p^(k-1))/(p-1)^k, 1, nextprime(k+1))) );
vMC=vector(#v+maxn,k, if(k<#v, 0, x=1.0;forprime(p=3,k,x/=p*(1-1.0/p)^k);forprime(p=k+1,v[#v]/2,x/=p-k);x) );
CC=vector(#v+maxn,k, 2^(k-1) * vMC[k] * BC[k]);
vC=extern(strexpand("hl1-vc.exe ",maxn,"  ",strjoin(v," "))); if(type(vC)!="t_VEC", print(vC); quit);\\Печать сообщения если ошибка
for(i=1,#vC, vC[i]*=CC[i+#v-1]);
print("vC=",vC);
Файл hl1-vc.exe берём из облака https://cloud.mail.ru/public/YDsR/3Lz7dmoT8 и кладём в текущую папку (или по path или в вызове явно указать путь к файлу).
Запускать можно и сам hl1-vc.exe, первым параметром указывается максимальное загрязнение (maxn), потом список через пробел чисел паттерна (если он будет не с 0 - беда!). Сортировка паттерна не требуется (даже дубли чисел допустимы), надо только чтобы 0 был строго первым. Если паттерн не указать, то используется встроенный 19-252. Если не указать и максимальное загрязнение, используется 0 (считается только основная C=С0).
Если указать слишком большие параметры - выйдет по ошибке и PARI её должен показать (if после вызова). Если указать что-то некорректно (не числа), то должно так же выйти по какой-то произвольной ошибке.
При работе ничего не отображается, только результат по окончании. Это минус, да. Для себя сделал версию с показом прогресса, но смысла мало, только что не подвисла совсем уж - зависимость времени итераций квадратична начиная с максимальной, потому последние 2/3 прогресса просчитываются практически моментально.
Фактически hl1-vc.exe считает для каждого загрязнения (включая и 0) сумму для всех возможных паттернов с таким загрязнением произведений количеств разрешённых остатков по простым до половины диаметра. Можно использовать и без PARI. Причём сделал ровно по своему PARI коду с битовыми масками и без оптимизации для симметричных паттернов, так что должно работать для любых (пока не проверил).
Пример вызова (для контроля):
Код:
C:\>hl1-vc.exe 99  0 18 24 48 60 78 84 90 108 120 144 150 168
[1743766987126899474e8, 2067197456861231798e9, 1154517952459778347e10, 4039425511898329840e10, 9223372036854775808e10, 1824534773030861902e11, 2599587815335058475e11, 2943175667936234025e11, 2691163466782095891e11, 2008928125102935912e11, 1232600332341856612e11, 6237667076157326906e10, 2604960512102486348e10, 8956581484542860411e9, 2521515108599682774e9, 5758838545480484912e8, 1051938614208073028e8, 1504546028164578485e7, 1631770029496499824e6, 1276139265473698171e5, 6609166036542326989e3, 1921130264456253527e2, 2036195042918400000e0]
Отрабатывает за 20с.
Yadryara, пользуйтесь, теперь статистикой завалитесь. ;-)

 Профиль  
                  
 
 Re: Симметричные кортежи из последовательных простых чисел
Сообщение02.05.2025, 15:27 
Аватара пользователя


29/04/13
9011
Богородский
Здорово! Правда, антивир скачанный файл в очередной раз удалил. Буду вспоминать как это обойти.

Dmitriy40 в сообщении #1684733 писал(а):
Для себя сделал версию с показом прогресса, но смысла мало,

Ну как мало. Я без прогресса никуда. Сможете примерно оценить сколько займёт обсчёт 21-420-10:

v = [0, 6, 24, 36, 60, 66, 84, 126, 150, 204, 210, 216, 270, 294, 336, 354, 360, 384, 396, 414, 420]; ?

 Профиль  
                  
 
 Re: Симметричные кортежи из последовательных простых чисел
Сообщение02.05.2025, 16:02 
Заслуженный участник


20/08/14
12159
Россия, Москва
Yadryara в сообщении #1684738 писал(а):
Правда, антивир скачанный файл в очередной раз удалил.
Размер файла 72192 байта, контрольная сумма SHA256: 9E05425DF421F297088763BCDE525CFEF6863C23FA0CBF14F03AF5CF0FDB3E87, MD5: 67C70604C95B80495642C6FEAE060D6D

Yadryara в сообщении #1684738 писал(а):
Сможете примерно оценить сколько займёт обсчёт 21-420-10:
v = [0, 6, 24, 36, 60, 66, 84, 126, 150, 204, 210, 216, 270, 294, 336, 354, 360, 384, 396, 414, 420]; ?
Сложно, замедление почти и не начиналось ещё, вот времена для maxn=3..6: 0.24c, 3.6с, 50с, 555с. Т.е. на два порядка дольше 19-252, а значит и в сутки видимо не уложится.

 Профиль  
                  
 
 Re: Симметричные кортежи из последовательных простых чисел
Сообщение02.05.2025, 16:13 
Аватара пользователя


29/04/13
9011
Богородский
Dmitriy40 в сообщении #1684733 писал(а):
Пример вызова (для контроля):

А что это за числа? 23 константы? Но у меня они совсем другие:

Код:
v=[0, 18, 24, 48, 60, 78, 84, 90, 108, 120, 144, 150, 168];
C0 = 375388.80145173930522260454315839964068;
C1 = 35150949.740745560330477928940944587060;
C2 = 1546831068.3397093376690512559915786621;
C3 = 42536109398.573957542931290992645223152;
...
C20 = 7573325906138881394.1600144342234192347;
C21 = 1640870337421850317.7034551853709416355;
C22 = 129181904847545464.72423068907104951717;
C23 = 0;

Для 21-420-10 первые 6:

Код:
C0 = 56385014423.044932192902037636375141924;
C1 = 15924873847672.655007056117452297155603;
C2 = 2191451020113142.9941580737259327320814;
C3 = 196208423425711162.19243676506528425213;
C4 = 12836633940905844241.159241667334695796;
C5 = 654264810131026556674.53758318782761700;

 Профиль  
                  
 
 Re: Симметричные кортежи из последовательных простых чисел
Сообщение02.05.2025, 16:23 
Заслуженный участник


20/08/14
12159
Россия, Москва
Yadryara в сообщении #1684746 писал(а):
А что это за числа?
Dmitriy40 в сообщении #1684733 писал(а):
Фактически hl1-vc.exe считает для каждого загрязнения (включая и 0) сумму для всех возможных паттернов с таким загрязнением произведений количеств разрешённых остатков по простым до половины диаметра. Можно использовать и без PARI.
Домножьте на CC[] и получите константы HL1.

Yadryara в сообщении #1684746 писал(а):
Для 21-420-10 первые 6:
Код:
C:\>wt hl1-vc.exe 5  0 6 24 36 60 66 84 126 150 204 210 216 270 294 336 354 360 384 396 414 420
[1155057268015812326e54, 3446204543774972785e55, 5018328415547745507e56, 4753257263993236988e57, 3292891883750764766e58, 1778792040568395514e59]
C:\>gp64 -q hl1-vc.gp
vC=[56385014423.044932202814479474528397137, 15924873847672.655007470801862744133817, 2193326002954533.3480236983843003619073, 196325576715065597.12821074048007238364, 12842059200224220327.523731887396882323, 654458407982249078012.68152351778512543]


-- 02.05.2025, 16:26 --

Фигасе, это в C2-C5 уже всего 3 цифры верные?! :-( Не, очень подозрительно!

-- 02.05.2025, 16:33 --

Не, походу у Вас ошибка в C2-C5, у меня значения другие (старая программа на PARI):
Код:
v=[0, 6, 24, 36, 60, 66, 84, 126, 150, 204, 210, 216, 270, 294, 336, 354, 360, 384, 396, 414, 420]
vC=[56385014423.044932192902037636375141924, 15924873847672.655007056117452297155601, 2193326002954533.3505043788633540086410, 196325576715065596.69068989928512836535]
nn=[1, 190, 10536, 302614]
Time: 10,251 ms
vC=[56385014423.044932192902037636375141924, 15924873847672.655007056117452297155601, 2193326002954533.3505043788633540086410, 196325576715065596.69068989928512836535, 12842059200224219734.592335903515542641]
nn=[1, 190, 10536, 302614, 5647059]
Time: 3min, 21,974 ms

 Профиль  
                  
 
 Re: Симметричные кортежи из последовательных простых чисел
Сообщение02.05.2025, 16:45 
Аватара пользователя


29/04/13
9011
Богородский
Да, я не оттуда взял 6 констант. Это паттерн плохой, он так просто не уполовинивается. Теперь взял откуда надо и сравнил с Вашими:

Код:
C0 = 56385014423.044932 192902037636375141924;
     56385014423.044932 202814479474528397137,

C1 = 15924873847672.655007 056117452297155601;
     15924873847672.655007 470801862744133817,

C2 = 2193326002954533.3 505043788633540086410;
     2193326002954533.3 480236983843003619073,

C3 = 19632557671506559 6.69068989928512836535;
     19632557671506559 7.12821074048007238364,

C4 = 128420592002242 19734.592335903515542641;
     128420592002242 20327.523731887396882323,

C5 = 6544584079822490 03402.65530940773632777;
     6544584079822490 78012.68152351778512543

Здорово. Полный обсчёт навряд ли нужен.

 Профиль  
                  
 
 Re: Симметричные кортежи из последовательных простых чисел
Сообщение02.05.2025, 18:23 
Аватара пользователя


29/04/13
9011
Богородский
Преодолел технические проблемы. 21-420-10 у меня считался долго (почти 7 минут до С6 включительно), запустил 21-324-1 до C15 включительно (было почти 4 минуты до С7 включительно)...

Будь прогресс виден, запустил бы может и подольше, до С20. А так — очень тоскливо.

 Профиль  
                  
 
 Re: Симметричные кортежи из последовательных простых чисел
Сообщение02.05.2025, 22:46 
Заслуженный участник


20/08/14
12159
Россия, Москва
Чтобы показать прогресс надо сохранять результат счёта в файл ("1>file") и потом его читать в PARI, он не умеет игнорировать stderr (куда и выдаётся прогресс), раз попало в консоль - всё и берёт.
Ну если так хочется, вот версия с показом прогресса: https://cloud.mail.ru/public/Bqr1/1PCbuRHJ1, 72704 байта, MD5=7148A049BCBA6B2F38E2E56EFED2136A, SHA256= 60E3AAACDFAD33330EDB6E84759A9A5EA9960E5C6866F83820B3AD75B70CBCD7.
Отличия только в показе прогресса трёх верхних уровней итераций (загрязнений).
Использовать в PARI по другому, строку
vC=extern(strexpand("hl1-vc.exe ",maxn," ",strjoin(v," "))); if(type(vC)!="t_VEC", print(vC); quit);
изменить на
system(strexpand("hl1-vc-time.exe ",maxn," ",strjoin(v," ")," 1>",ff=concat(getenv("temp"),"\\hl1-vc.temp"))); vC=read(ff); print;
Ошибки обрабатывать тут не нужно, они в vC не попадут, останутся в консоли, vC будет пустым vC=[] (и цикл for(i=1,#vC,...) отработает правильно).
Предварительно посмотрите чему в PARI равно getenv("temp"), если там в конце стоит \\, то в строке вызова их указывать не нужно! Если вдруг пустая, то посмотрите "tmp" (не помню какая из них обязательна в винде, у меня на всех компах всегда обе одинаковые).
Последний print нужен чтобы видеть в консоли время работы, если его убрать, время будет затёрто следующей строкой (если та достаточно длинная). Возможность затирания специально если не хотите видеть историю времён при запуске для нескольких паттернов, но хотите видеть прогресс по мере счёта каждого паттерна (убрать и прогресс и время можно добавкой "2>nul" в строку запуска).

Для оценки можно запускать не из PARI, а просто в консоли (и параллельно другому запуску в PARI, даже для других паттернов и maxn), время счёта она сама выдаёт, так временный файл не нужен. Можно запускать хоть сотню одновременно в разных вариантах, а выходные результаты потом быстро пересчитать в нормальные константы HL1 (вместо вызова из PARI просто задать насчитанный вектор сразу в vC[] и домножить на CC[], это секунды), я так и делаю.

 Профиль  
                  
 
 Re: Симметричные кортежи из последовательных простых чисел
Сообщение03.05.2025, 10:14 
Аватара пользователя


29/04/13
9011
Богородский
Спасибо. Правда, пока не скачивал. Доразбирался со старым вариантом.

Новостей много. Скажу не все.

Dmitriy40 в сообщении #1648891 писал(а):
Похоже и с C8 можно распрощаться и долю чистых посчитать не удастся: C6 считалась уже 2ч13м, аж в 40 раз дольше C5:
Код:
v=[0, 12, 30, 42, 54, 60, 84, 114, 120, 144, 162, 180, 204, 210, 240, 264, 270, 282, 294, 312, 324]
C6=17908141961040371094003.679531294216165
[1, 71, 2828, 57136, 744565, 7029833, 315278677, 0, 0, 0, 0]

Здесь у Вас какая-то ошибка. 40 раз не может быть, да и C6 у Вас слишком огромная получилась.

Асмовская прога даёт для 21-324-2: C6=2515512459364543430288.5482780006133163

Dmitriy40 в сообщении #1648879 писал(а):
Очевидно ждать чистых 21-324 до 1e28-1e29 бессмысленно.

Ещё как осмысленно. Посчитал по константам до C9 включительно, это матожидания с недостатком:

Код:
Номер   Паттерн   Прогноз по HL1   Нормиро   Лёгкость
                     для 0 - 71#    ванных     поиска
                            штук    формул

1.     21-324-1            0.168     2.435      0.069
2.     21-324-2            0.461     6.575      0.069  *


Номер   Паттерн   Прогноз по HL1   Нормиро   Лёгкость
                     для 0 - 73#    ванных     поиска
                            штук    формул

1.     21-324-1            2.472     2.435      1.015
2.     21-324-2            6.674     6.575      1.015  *

Для второго паттерна — пока прогноз.

Так много кортежей получается по одной простой причине: кортежи 21-324 значительно менее плотные чем 19-252 .

 Профиль  
                  
 
 Re: Симметричные кортежи из последовательных простых чисел
Сообщение03.05.2025, 11:51 
Заслуженный участник


20/08/14
12159
Россия, Москва
Yadryara в сообщении #1684810 писал(а):
Здесь у Вас какая-то ошибка.
Это снова оптимизация для симметричных паттернов сглючила. Странно что C5 посчитала правильно, но вот так. Последнее время я от неё вообще отказался, достало каждый раз думать не сглючит ли. И асм код её тоже не использует. Дольше, зато надёжнее.

 Профиль  
                  
 
 Re: Симметричные кортежи из последовательных простых чисел
Сообщение03.05.2025, 15:16 
Аватара пользователя


29/04/13
9011
Богородский
Yadryara в сообщении #1684763 писал(а):
Будь прогресс виден, запустил бы может и подольше, до С20. А так — очень тоскливо.

Нет, это я погорячился конечно, сейчас лучше понимаю, какие времена счёта. До С15 прикидка давала не меньше 10 дней счёта, так что пришлось выключить после 13 часов бесполезной работы. По последним оценкам — 17 дней счёта до С15 (включительно).

Но, по счастью, оказалось вполне достаточно считать до С10. Для 21-324 это около 5-6 часов, одну уже посчитал, вторую досчитываю.

Если кто-то захочет помочь со счётом, берите паттерны 21-ки и считайте 9-12 констант. Вроде больше 2-х паттернов не нужно считать для каждого диаметра. Ну и обязательно сообщайте чтобы нам одно и то же не считать. Я, чтоб не запутаться, планирую следующий диаметр взять — 336.

Вот, например, какие нормализованные количества формул выделил:

Код:
Паттерн      Формул

21-324-1      2.435
21-324-2      6.575

21-336-3      1.186
21-336-8      4.297

21-348-1      1.575

21-360-10     1
21-360-19     9.402

21-372-11    19.744
21-372-53     2.072

Здесь я указал минимальное и максимальное количество для каждого диаметра.

 Профиль  
                  
 
 Re: Симметричные кортежи из последовательных простых чисел
Сообщение03.05.2025, 18:30 
Аватара пользователя


29/04/13
9011
Богородский
После обсчёта до C10 матожидания по 21-324-2 у меня получились странные — гораздо меньше предполагаемых. Ищу ошибку и не нахожу...

Код:
Номер   Паттерн   Прогноз по HL1     Норм.   Лёгкость
                            штук    формул     поиска
                         
                     для 0 - 71#

1.     21-324-1            0.171     2.435      0.070
2.     21-324-2            0.048     6.575      0.007

                     для 0 - 73#

1.     21-324-1            2.504     2.435      1.028
2.     21-324-2            1.017     6.575      0.155

 Профиль  
                  
 
 Re: Симметричные кортежи из последовательных простых чисел
Сообщение03.05.2025, 21:06 
Заслуженный участник


20/08/14
12159
Россия, Москва
Скорее всего это признак недостаточности десяти констант для точной оценки, вспомните как было с 19-252, там устаканилось лишь после C8, а до этого улетало и в минус и в больше C0.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 1288 ]  На страницу Пред.  1 ... 82, 83, 84, 85, 86

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



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

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


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

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