Сейчас на форуме: tyns777, zds, JustLife, 2nd, morgot, Rio (+4 невидимых)

 eXeL@B —› Программирование —› BigInt
Посл.ответ Сообщение


Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 17 апреля 2009 19:43 · Поправил: Isaev
· Личное сообщение · #1

Нужен быстрый алго умножения (в частности возведения в квадрат) больших целых чисел (примерно 15мб знаков) Python считает, но оооочень долго! Он даже складывает таких 2 числа около пары суток, сложение я написал на дельфи делает за секунду (грубо говоря и то большую часть времени скидывает ответ в файл),
про умножение на pythone можно забыть... (2 числа в 2 раза меньше умножались у меня 52 часа, а при росте разрядов похоже експ-зависимость ) т.ч. думаю при умножении тоже будет приятный выигрыш
Делал кто-нибудь что-то подобное?
либа BigInt тоже медленная... по крайней мере складывает моя прога намного быстрее, чем из неё

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh





Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 17 апреля 2009 20:24
· Личное сообщение · #2

я бы вот что сделал , я бы написал макрос замера времени выполнения твоего выполнения данных команд , далее написал бы версию твоего процессора и выложил бы числа которые учавствовали в вычисленнии , так понимаю прога на делфе , поэтому макросами не замеришь =) , но какнить иначе замерь. А потом уже можно будет судить что быстрее выполнится. На асме если грамотно построить вычисление будет всяк быстрее ...чем на Делфе

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube





Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 17 апреля 2009 21:35
· Личное сообщение · #3

mak пишет:
На асме если грамотно построить вычисление будет всяк быстрее ...чем на Делфе

я не про асм писал, а про питон
мне в общем не надо секунду делить на 2, мне и так устраивает...
я вообще-то про умножение спрашивал

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh





Ранг: 271.6 (наставник), 2thx
Активность: 0.30
Статус: Участник

Создано: 17 апреля 2009 22:39
· Личное сообщение · #4

Isaev
а FGint не подойдет?
По моему работает довольно шустро

-----
iNTERNATiONAL CoDE CReW





Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 18 апреля 2009 00:50
· Личное сообщение · #5

Spirit а если все цифры в виде строк, каждую перекодировать?
у него представление числа в виде массива Number : Array Of LongWord;
только на перекодировку куча времени уйдёт... или там встроенные средства конвертации есть и я их проглядел???

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh




Ранг: 52.1 (постоянный), 1thx
Активность: 0.020
Статус: Участник

Создано: 18 апреля 2009 01:00
· Личное сообщение · #6

А MAPLE с этим не справится?
Я как-то давно экспериментировал с числами размером в пару тройку страниц.




Ранг: 387.4 (мудрец)
Активность: 0.170
Статус: Участник
системщик

Создано: 18 апреля 2009 01:13
· Личное сообщение · #7

Мой кальк 15...50 знаков считает быстро Точнее считает Crypto++




Ранг: 631.1 (!), 62thx
Активность: 0.370.01
Статус: Участник
Автор VB Decompiler

Создано: 18 апреля 2009 01:23
· Личное сообщение · #8

s0larian пишет:
Мой кальк 15...50 знаков считает быстро


Челу вообще-то нужно не 15 знаков а 15 мегабайт знаков

-----
Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе!





Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 18 апреля 2009 01:24 · Поправил: Isaev
· Личное сообщение · #9

s0larian пробовал, там ограничение до 30000 вроде
(я думал ты сам писал ради интереса... )
с 15..50 знаков и у питона нет проблемм, а 15млн как-то долгова-то

Кстати Crypto++ жив, в отличии от остальных... приятно, надо попробовать

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh





Ранг: 303.7 (мудрец), 4thx
Активность: 0.190
Статус: Участник
tPORt Manager

Создано: 20 апреля 2009 09:58
· Личное сообщение · #10

Реализация длинки есть в java и c#, можешь попробовать на них реализовать, подсчёт факториалов всех чисел из [1;100] занял секунды полторы на яве (из них половину запускалась вм).




Ранг: 58.1 (постоянный)
Активность: 0.030
Статус: Участник

Создано: 23 мая 2009 01:29 · Поправил: multiarc
· Личное сообщение · #11

...
e-maxx.ru/algo/binary_pow
comp-science.narod.ru/DL-AR/stepen.html
[offtop]
ЗЫ: учитесь юзать гугль))
[/offtop]



Ранг: 203.3 (наставник)
Активность: 0.220
Статус: Участник
UPX Killer -d

Создано: 23 мая 2009 23:00
· Личное сообщение · #12

А для возведения матриц в степень есть решения?
Имею ввиду НЕ тривиальный алгоритм умножения матриц.

-----
Я медленно снимаю с неё UPX... *FF_User*




Ранг: 309.8 (мудрец), 21thx
Активность: 0.170
Статус: Участник

Создано: 23 мая 2009 23:46
· Личное сообщение · #13

AlexZ, z0mbie.daemonlab.org/rsa.html со строк "Теперь рассмотрим вопрос о возведении большого числа в степень:".

-----
Shalom ebanats!




Ранг: 114.8 (ветеран), 41thx
Активность: 0.10
Статус: Участник

Создано: 19 августа 2009 23:16
· Личное сообщение · #14

Попробуй, например, реализовать метод Шёнхаге-Штрассена
http://en.wikipedia.org/wiki/Multiplication_algorithm
http://en.wikipedia.org/wiki/Schönhage-Strassen_algorithm
(если, конечно, он не используется уже в либе BigInt либо смотри работы последних лет - эту
http://www.cse.psu.edu/~furer/Papers/mult.pdf
и другие материалы ежегодного симпозиума по теории вычислений (Proceedings of annual ACM symposium on Theory of computing (STOC)), в частности, вот эту на основе доклада на прошлогоднем STOC
http://www.cse.iitk.ac.in/users/ppk/research/DKSS08.pdf


 eXeL@B —› Программирование —› BigInt
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати