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

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


Новичок
*

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

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


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

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

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

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


Новичок
*

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

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


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

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

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

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

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

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

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


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

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


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

 



- Текстовая версия 19.06.2025 19:43
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"