IPB
ЛогинПароль:

> 

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Модуль для очень быстрых операций с большими числами (256 бит) со знаком
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 13
Пол: Женский

Репутация: -  0  +


Мне нужен модуль для очень быстрых операций с довольно большими числами (256 бит) со знаком.
Т. е. что-то типа Int256.
Причем принципиальна именно скорость, так как программе приходится выполнять
многие миллионы перемножений и сложений.

В Интернете есть довольно много разных модулей с массой операций для очень-очень больших чисел
(тысячи десятичных знаков).
Какой из них самый быстрый (для чисел не очень-то длинных: 256 бит)?
Или есть какой-то шустрый код в какой-нибудь классической книге?

Кто профи в этом вопросе, откликнитесь, плиз. wub.gif

P. S. Я работаю во FReePascal-e
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Новичок
*

Группа: Пользователи
Сообщений: 13
Пол: Женский

Репутация: -  0  +


Большое спасибо, volvo rolleyes.gif

Размещаю упрощенный вариант моей программы. Она работает с символьными комплексными выражениями с целыми коэффициентами, включая определители небольших матриц. Фактически, программа просто раскрывает скобки и таким образом проверяет, равна ли правая часть формулы левой. (В полном варианте программа работает с гиперкомплексными числами и раз в 5 длиннее).

В полном варианте приходится многие миллионы раз производить примерно следующее:
пара чисел (именно чисел, а не символьных выражений) порядка 10^20--10^35 умножается,
результат складывается (вычитается) с произведением другой подобной пары чисел
(т. е. на 2 этапе складываются 2 знаковых числа порядка 10^60--10^70),
после чего итог сравнивается с неким заданным числом.
(При равенстве программа выходит из цикла; если равенства не было, выдает сообщение о неудаче.)

Для иллюстрации этого я добавила небольшую подпрограмку NConstructor, имитирующую реальные процессы.

Кроме того, помещаю небольшой тестовый файл, иллюстрирующий действие программы (программа запускается на этот файл, все тесты должны давать 0).
Последний тест в этом файле как раз запускает NConstructor. Для измерения времени только его и нужно оставить.

Программа конечно весьма кривая, но как известно отстрел пианистов строго запрещен законом.
Если нужны комментарии, не вопрос.

Сообщение отредактировано: Aelita -


Прикрепленные файлы
Прикрепленный файл  al_m8ext.pas ( 47.9 килобайт ) Кол-во скачиваний: 451
Прикрепленный файл  test_ext.TXT ( 2.23 килобайт ) Кол-во скачиваний: 368
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Aelita   Модуль для очень быстрых операций с большими числами (256 бит) со знаком   10.03.2006 21:15
James_Bond   Я не профи, но боюсь тебя расстроить: сомневаюсь ч…   10.03.2006 23:53
volvo   James_Bond, ты даже не представляешь, ЧТО можно тв…   11.03.2006 0:06
James_Bond   volvo, ты извини меня конечно, но я говорил про fr…   11.03.2006 1:26
volvo   James_Bond, ты можешь оставаться при своем мнении …   11.03.2006 7:02
Aelita   Огромное спасибо, volvo, за обстоятельный ответ. …   12.03.2006 6:51
volvo   Aelita, можно получить хотя бы фрагмент программы,…   12.03.2006 14:32
Aelita   Большое спасибо, volvo :rolleyes: Размещаю уп…   12.03.2006 22:36
volvo   Aelita, вопрос: тебе нужно type TNumber = record…   13.03.2006 0:53
Aelita   Я не совсем понимаю, что именно не работает. :nea:…   13.03.2006 1:04
volvo   Я задал вопрос относительно ИЗМЕНЕНИЙ, которые ты …   13.03.2006 1:11
Aelita   Я поняла. :cool: Мне действительно нужно именно…   13.03.2006 3:07
volvo   Aelita, я не забыл, просто не хотелось бы выкладыв…   14.03.2006 22:06
volvo   Aelita, проверь PM ...   16.03.2006 14:55


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 6.11.2025 4:10
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name