Форум: "Основная";
Текущий архив: 2003.02.24;
Скачать: [xml.tar.bz2];
Вниз
Типы данных Найти похожие ветки
← →
dead1 (2003-02-13 16:38) [0]Такие проблемки возникли.
1) Кто-нибудь знает какие-нибудь библиотеки для работы с гигантскими целыми числами (10^740) большой точности? Может, кто сам писал...
2) Как можно создать свой тип данных с минимумом переделок исходников дельфи? Вот есть тип extended, который позволяет держать до 18-ти цифр после запятой и хранится в 64-х битах. А нужен тип размером в 256-бит и выше, но чтобы работал с обычными дельфийскими встроенными функциями (+ - / mod sin cos итп.)
Что можете посоветовать?
← →
Anatoly Podgoretsky (2003-02-13 16:45) [1]Ты не пытался посчитать размер памяти на диске для подобного числа, пускай даже из расчет 2.5 цифры на байт. Во вселенной нет столько атомов.
← →
dead1 (2003-02-13 16:51) [2]Такое число (740 знаков) занимает всего 309 байт.
← →
AGGRESSOR (2003-02-13 16:57) [3]Можешь попробовать разложение своего числа, представление его как результата неких действий над небольшими числами (см. любую "Высшую математику для ВУЗов", например.
← →
dead1 (2003-02-13 17:09) [4]Ну, представлять как A1*B^n + A2*B^(n-1).... или наоборот... по этому поводу есть готовые сишные исходники, но си я не знаю. А писать тоже самое самому... я забуду зачем это делаю. Вот, может кто знает такие готовые.
← →
AGGRESSOR (2003-02-13 17:13) [5]А, так ты готовенькое ищешь? А я тут советы раздаю... :)
Нет, готовых у меня нету.
← →
dead1 (2003-02-13 17:17) [6]Жаль :(
Как-то дельфи этими фигнями обделён.
А по второй трабле... я всё рою исходники fpk, но безрезультатно. Хотя, нафиг я это делаю, если асм тоже не знаю? Хочу всё не зная ничего :) Но идеи выкидывать не хочется, не проверив.
← →
Sha (2003-02-13 18:12) [7]> dead1 (13.02.03 17:17)
> А по второй трабле...
Проще всего реализовать +, -, *, /, mod своими функциями, работающими с целыми числами или с фиксированной точкой и забудь про sin, cos и т.п.
← →
Anatoly Podgoretsky (2003-02-13 18:33) [8]dead1 (13.02.03 16:51)
Сглупил :-(
dead1 (13.02.03 17:17)
Необделен есть готовые библиотеки, например SysTools
← →
i-C3H7OH (2003-02-13 18:46) [9]зачем нужен cos & sin таких огромных целых чисел?? на крайняк можно раскладывать в ряд тейлора
← →
ЮЮ (2003-02-14 07:45) [10]Ты что, молекулы поштучно считаешь? :-)
← →
Спрашивающий (2003-02-14 08:47) [11]А действительно зачем такие большие числа, ну интересно
10E740=
1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
← →
DarkGreen (2003-02-14 09:09) [12]2 dead1 (13.02.03 16:38)
Extended хранится в 80 битах, в 64 Double.
← →
DVM (2003-02-14 09:17) [13]
> Ты что, молекулы поштучно считаешь
Молекул меньше. Во все вселенной элементарных частиц меньше чем 10^100
← →
Reindeer Moss Eater (2003-02-14 09:19) [14]Молекулы здесь скорее всего непричем.
Речь видимо идет о криптографии на открытых ключах.
← →
DVM (2003-02-14 09:19) [15]Такие большие числа для бестолковых занятий как то поиск конца числа pi. Больше практических применений нет. Нет смысла в числах величина которых больше 10^100, как и в очень маленьких.
← →
Reindeer Moss Eater (2003-02-14 09:24) [16]Это просто кругозор узок. Потому и кажется так
← →
Reindeer Moss Eater (2003-02-14 09:25) [17]для бестолковых занятий как то поиск конца числа pi.
Для этого не нужны целые числа, про которые спрашивал автор
← →
DVM (2003-02-14 09:26) [18]
>
> Reindeer Moss Eater
Приведи пример
← →
DVM (2003-02-14 09:28) [19]
> Для этого не нужны целые числа, про которые спрашивал автор
Автор не говорил про целые
← →
Reindeer Moss Eater (2003-02-14 09:38) [20]Небольшой пример на базе "Diffie-Hellman key exchange protocol" (криптография на открытых ключах)
User1 вычисляет открытый ключ на основе своего приватного ключа; User2 делает то же самое
Затем оба меняются открытми ключами.
User1 вычисляет сессионный ключ на основе своего приватного и открытого ключа User2; User 2 делает то же самое.
Математически:
Пусть A, P, Q - параметры алгоритма
Xi - приватный ключ ( i = 1, 2 ), 1 <= Xi < Q
Yi - открытый ключ для Xi, Yi = A Xi mod P
User1 вычисляет сессионный ключ: K1 = Y2 X1 mod P = A X2 X1 mod P
User2 вычисляет свой сессионный ключ: K2 = Y1 X2 mod P = A X1 X2 mod P = K1
"Физически" - ключи это блоки памяти длиной скажем 4096 бит. Рассматриаваемые как очень большие целые числа(Чем больше, тем выше криптостойкость).
И над ними необходимо производить вычисления.
Вот и все, собственно.
← →
Reindeer Moss Eater (2003-02-14 09:39) [21]> Для этого не нужны целые числа, про которые спрашивал автор
>Автор не говорил про целые
пункт номер один в вопросе
← →
DVM (2003-02-14 09:42) [22]
> пункт номер один в вопросе
пункт номер 2 в вопросе
← →
Reindeer Moss Eater (2003-02-14 09:45) [23]И что? Автор там говорит буквально
...Вот есть тип extended, который ....
из контекста видно, что ему это не подходит
А в п.1 он по русски говорит о том, что нужны ЦЕЛЫЕ
← →
DVM (2003-02-14 09:47) [24]Угу, а потом говорит про функции sin, cos, / - куда он по Вашему положит результат? Внимательнее надо быть ;) Хотя лучше спросить автора и мне непонятно, чего мы то спорим?
← →
Reindeer Moss Eater (2003-02-14 09:55) [25]Угу, а потом говорит про функции sin, cos, / - куда он по Вашему положит результат? Внимательнее надо быть ;)
Ему нужны целые. Большие.
А вычислив синус очень большого целого, результат, не превышающий единицу, можно положить в любой встроенный в D вещественный тип.
← →
Anatoly Podgoretsky (2003-02-14 09:56) [26]DVM © (14.02.03 09:47)
Как куда в целое, по крайней мере два результата точно будет - 0 и 1
← →
dead1 (2003-02-14 10:01) [27]Гы :) Про молекулы я ещё не думал, но, наверное, стоит :)
ОК. По первой проблемке. Чтобы развеять ваши сомнения приведу пример. Из набора байтов я получаю вот это охрененное число (G). Потом нужно подбирать G=X^Y+C, где X - основание, Y - степень, C - остаток. Возможны варианты, но суть где-то такая : X,Y и C будут занимать меньше памяти (места/объёма), чем G. То есть, смахивает на архиватор...
По второй проблемке я пока глючу, но я тут подумал и решил, что если есть реализация первой, то это можно использовать во второй. А sin и cos можно реализовать для моей идеи в целых числах. Причём, двумя способами. Тут главное - кол-во цифр, их точность. А сам результат, целый или дробный, не имеет значения. Всё равно будут переделываться в целые.
2 DarkGreen. Под рукой справки не было и я назвал что попалось. Нужна только дробная часть без E. Там 18 цифр. Хотелось бы поближе к 50-ти. Да ещё и реализовать это как-то.
Anatoly Podgoretsky, можно у Вас позаимствовать пол-литру во временное пользование? Тобишь, SysTools. Или где это можно найти?
Если это не займёт много физических или других усилий, качнёте на мой мэйл (до 7-ми мегов)? Буду крайне презнателен. Я уже перепробовал три разные библиотеки, но они глючные. Одна - просто рай и удовольствие, но в ней сложение почти не работает. А это очень важная операция. Разбираться в исходниках чуть проще, чем во FreePascal`евских.
← →
DVM (2003-02-14 10:02) [28]Про синус я, соглашусь, не подумал, а как с делением быть?
Результат может не поместиться даже в extended.
← →
Anatoly Podgoretsky (2003-02-14 10:11) [29]DVM © (14.02.03 10:02)
Результат деления одного целого числа на другое целое всегда меньше первого, проблем просто не существует, то же касается остатка от деления.
У меня нет, но поиск тебе поможет, это не единственная библиотека для работы с большими целыми, есть еще несколько, например не очень сильно ругают GInt
Простой поиск в гагле тебе даст достаточное количество ссылок, кроме того не стоит забывать про такой ресурс как торри
← →
DVM (2003-02-14 10:17) [30]>Anatoly Podgoretsky ©
> Результат деления одного целого числа на другое целое всегда
> меньше первого, проблем просто не существует, то же касается
> остатка от деления.
тут спор зашел из за того нужны автору для этого целые или вещественные числа. При делении один фиг вещественные понадобятся, а то что частное меньше делимого и делителя ничего не значит.
Например:
(охрененное большое число/pi) - куда результат то класть?
Или это вещественное число или только целая часть.
← →
Anatoly Podgoretsky (2003-02-14 10:26) [31]Деление целых прекрасно обходится без вещесвенных, еще на 8080 мне приходилось писать деление и умножение и поверь не 8 бит.
Зачем ты приплел вещественные не пойму, в вопросе просто "с гигантскими целыми числами", библиотек для этого существует много, потребность в них есть в криптографии
← →
dead1 (2003-02-14 10:29) [32]Вот как раз FGInt у меня и заглючил. Я сначала думал, что сам чего напортачил, а дебуггером прошёл - сложение всякий бред выдаёт.
А после деления xxx на Пи - целый результат в одно число, остаток (mod) в другое. Дальше уж использовать по своему усмотрению.
← →
DVM (2003-02-14 10:40) [33]
> А после деления xxx на Пи - целый результат в одно число,
> остаток (mod) в другое. Дальше уж использовать по своему
> усмотрению.
ну если только так...
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.02.24;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.008 c