Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.02.24;
Скачать: CL | DM;

Вниз

Типы данных   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.55 MB
Время: 0.019 c
14-76184
Snake2000
2003-01-24 15:43
2003.02.24
Типа наезд.... :)


6-76050
Gigabyte
2003-01-03 10:52
2003.02.24
---|Ветка была без названия|---


14-76161
swordent
2003-02-07 22:31
2003.02.24
Помогите чловеку


14-76096
Anatoly Podgoretsky
2003-02-09 11:35
2003.02.24
Именинники 9 января


3-75818
Larisa
2003-02-06 21:36
2003.02.24
При распечатке счетов через QuickReport печатается около 15