| Aelita |
10.03.2006 17:15
Сообщение
#1
|
|
Новичок ![]() Группа: Пользователи Сообщений: 12 Пол: Женский Репутация: 0 |
Мне нужен модуль для очень быстрых операций с довольно большими числами (256 бит) со знаком.
Т. е. что-то типа Int256. Причем принципиальна именно скорость, так как программе приходится выполнять многие миллионы перемножений и сложений. В Интернете есть довольно много разных модулей с массой операций для очень-очень больших чисел (тысячи десятичных знаков). Какой из них самый быстрый (для чисел не очень-то длинных: 256 бит)? Или есть какой-то шустрый код в какой-нибудь классической книге? Кто профи в этом вопросе, откликнитесь, плиз. P. S. Я работаю во FReePascal-e |
![]() ![]() |
| Aelita |
12.03.2006 18:36
Сообщение
#2
|
|
Новичок ![]() Группа: Пользователи Сообщений: 12 Пол: Женский Репутация: 0 |
Большое спасибо, volvo
Размещаю упрощенный вариант моей программы. Она работает с символьными комплексными выражениями с целыми коэффициентами, включая определители небольших матриц. Фактически, программа просто раскрывает скобки и таким образом проверяет, равна ли правая часть формулы левой. (В полном варианте программа работает с гиперкомплексными числами и раз в 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 килобайт )
Кол-во скачиваний: 236
al_m8ext.pas ( 47.9 килобайт )
Кол-во скачиваний: 300 |
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
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![]() ![]() |
|
Текстовая версия | 9.12.2025 2:49 |