Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.009 c
4-76216
Керик
2003-01-10 08:03
2003.02.24
Как заставить ras вызывать обработчик?


1-76023
Натик
2003-02-13 13:37
2003.02.24
объединение проектов


6-76067
Spy X
2003-01-02 21:11
2003.02.24
spyx@inbox.ru


1-75931
Ricky-Ticky-Tavy
2003-02-14 09:02
2003.02.24
OLE, Word2000, Delphi5, WinME не получается


3-75810
Alexandr3
2003-02-06 15:18
2003.02.24
QReport





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский