реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Дробные числа с неограниченной разрядной сеткой
kanzler
сообщение Mar 21 2007, 11:37
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 340
Регистрация: 27-02-06
Из: Екатеринбург
Пользователь №: 14 728



Господа! Кто знает где есть или может у кого то есть класс, библиотека которая позволяет производить арифметические, логические и ряд алгебраических обпераций над дробными числами с неограниченной разрядной сеткой?
Go to the top of the page
 
+Quote Post
Mike
сообщение Mar 22 2007, 10:36
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 277
Регистрация: 22-02-05
Из: Riga
Пользователь №: 2 825



Вычислениями с неограниченной разрядностью в 70-80 годы, активно занимался научный отдел в IBM, метод (если не ошибаюсь) назывался цифра за цифрои, попробуйте поискать в этом направлении.
Go to the top of the page
 
+Quote Post
Mike
сообщение Mar 22 2007, 10:36
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 277
Регистрация: 22-02-05
Из: Riga
Пользователь №: 2 825



Вычислениями с неограниченной разрядностью в 70-80 годы, активно занимался научный отдел в IBM, метод (если не ошибаюсь) назывался цифра за цифрои, попробуйте поискать в этом направлении.
Go to the top of the page
 
+Quote Post
kanzler
сообщение Oct 24 2007, 17:38
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 340
Регистрация: 27-02-06
Из: Екатеринбург
Пользователь №: 14 728



Класс найден - это BigNum. Вопрос - если кто работал с этим классом, то не мог бы подсказать как в данном классе производить присваивание значения одной переменной другой переменной?
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Oct 26 2007, 12:31
Сообщение #5





Guests






Странные вопросы, странные ответы..
Бесконечной разрядной сетки не может быть в принципе, т.к. вступают в силу физические ограничения.
Современные языковые средства предоставляют некоторый набор вещественных типов данных над которыми определены типовые операции в синтаксисе языка.
При необходимости производить вычисления в более длинных разрядных сетках, пишутся свои методы, но для конкретной реализации сетка, хотя и длинная, все же ограниченна.

Как работать с классом должно быть понятно при чтении исходника, если же Вы не программист, то вам оно лишнее.
Go to the top of the page
 
+Quote Post
kanzler
сообщение Oct 26 2007, 14:46
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 340
Регистрация: 27-02-06
Из: Екатеринбург
Пользователь №: 14 728



Цитата(TSerg @ Oct 26 2007, 18:31) *
Как работать с классом должно быть понятно при чтении исходника, если же Вы не программист, то вам оно лишнее.

Согласен, каков вопрос таков ответ. Есть такой класс cBigNumber, я его пользую, но он работает только с целыми числами. Надеюсь что вы хотя бы слышали о таком. Меня же теперь интересуют классы которые работают с дробными числами. Если вам по существу не чего сказать то мне бы не хотелось читать высказывания подобного аспекта, как выше. А лишнее или нет решать мне, но ни коим образом вам.
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Oct 31 2007, 14:00
Сообщение #7





Guests






Вы пишете:
>Класс найден - это BigNum...как в данном классе производить присваивание

Если Вы программист, то особенности операции присваивания видны из исходника BigNum.

>но он работает только с целыми числами .. интересуют классы которые работают с дробными числами

Это следующий вопрос.
Если Вас интересуют методы работы с длинными числами, то ничто не мешает создать свои, основанные
на работе с числами с фиксированной или плавающей запятой.
Эти методы хорошо описаны в любой книжке по машинной арифметике.
Go to the top of the page
 
+Quote Post
kanzler
сообщение Nov 1 2007, 15:31
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 340
Регистрация: 27-02-06
Из: Екатеринбург
Пользователь №: 14 728



Господа программисты. Я не настолько программист что не задавать данные вопросы. Очень хотелось бы получить ответы на вопросы. Если у вас ответ - "Напиши сам!!!" Тогда возникает справедливый вопрос - Нафига этот форум??? Получается что здесь тусуются одни флудеры. Меня это растраивает. Как и многих наверное. Жаль что нет такого человека который бы на самом деле помог. Очень жаль!!!
Go to the top of the page
 
+Quote Post
fontp
сообщение Nov 2 2007, 10:49
Сообщение #9


Эксперт
*****

Группа: Свой
Сообщений: 1 467
Регистрация: 25-06-04
Пользователь №: 183



Цитата(kanzler @ Nov 1 2007, 18:31) *
Господа программисты. Я не настолько программист что не задавать данные вопросы. Очень хотелось бы получить ответы на вопросы. Если у вас ответ - "Напиши сам!!!" Тогда возникает справедливый вопрос - Нафига этот форум??? Получается что здесь тусуются одни флудеры. Меня это растраивает. Как и многих наверное. Жаль что нет такого человека который бы на самом деле помог. Очень жаль!!!


Нет, мы не такие!
Просто неограниченой разрядной сетки не бывает, это всё Ваши "девичьи мечты" :-) Это, как говорится, - абстракция. Сетка может быть как угодно большой, но не неограниченой

Во множестве библиотек научных и стандартных существует класс Rational (кстати какой у Вас компилятор и платформа? он там может есть). Впрочем он достаточно прост чтобы его реализовать самому. Вот здесь чувак реализовал почти полностью в простейшем виде.
http://www.dreamincode.net/forums/showtopic15116.htm
Дроби создаются из типа инт или лонг (64 бита). Это типично.

Чтобы, расширить разрядную сетку нужно породить класс Rational из класса BigNum, вместо того
чтобы порождать из интов.
Для большой разрядной сетки большие затраты будут приходить на приведение общих множителей.
НОД=наибольший общий делитель
Для этого есть известные алгоритмы и член simplify нужно переписать на решето
«решето» принадлежит Эратосфену
http://www.wl.unn.ru/lab/Portals/0/Factor.pdf

В профессиональных криптографических приложениях (RSA) НОД вычисляют более быстрыми алгоритмами, но идея та же. Это всё модификации «решета» Эратосфена, просто для начала
проверяют на признаки деления на 2, 3, 5, 7, 11... известные ещё из школьной программы с той разницей, что для бинарных чисел они выглядят по-другому
Ну и ещё там есть кой какие идеи
Решето Аткина – оптимизированная версия решета Эратосфена или обобщённое квадратичное решето
Go to the top of the page
 
+Quote Post
kanzler
сообщение Nov 2 2007, 15:25
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 340
Регистрация: 27-02-06
Из: Екатеринбург
Пользователь №: 14 728



Цитата(fontp @ Nov 2 2007, 15:49) *
Нет, мы не такие!

Спасибо! Пользуюсь С++ Builder.
Go to the top of the page
 
+Quote Post
fontp
сообщение Nov 2 2007, 16:15
Сообщение #11


Эксперт
*****

Группа: Свой
Сообщений: 1 467
Регистрация: 25-06-04
Пользователь №: 183



Цитата(kanzler @ Nov 2 2007, 18:25) *
Спасибо! Пользуюсь С++ Builder.




Пошуруйте по системным h-файлам, может там есть класс Rational. Я не знаю.

А нет, так возьмите у того парня и доделайте
Go to the top of the page
 
+Quote Post
kanzler
сообщение Nov 2 2007, 17:35
Сообщение #12


Местный
***

Группа: Свой
Сообщений: 340
Регистрация: 27-02-06
Из: Екатеринбург
Пользователь №: 14 728



Цитата(fontp @ Nov 2 2007, 21:15) *
Пошуруйте по системным h-файлам, может там есть класс Rational. Я не знаю.

А нет, так возьмите у того парня и доделайте

Огромное спасибо, вы единственный кто реально помог. С классом cBigNumber уже работаю больше года, а вот с дробными числами пришлось связаться не так давно. Вопрос возник по причине того что такой класс я нашёл, но возникла причина того что этот класс не под C++ Builder. Поэтому я не знаю как делать присвоение и вывод инфы на экран под Builder. Может слышали про такой класс NTL?
Go to the top of the page
 
+Quote Post
fontp
сообщение Nov 3 2007, 10:16
Сообщение #13


Эксперт
*****

Группа: Свой
Сообщений: 1 467
Регистрация: 25-06-04
Пользователь №: 183



Цитата(kanzler @ Nov 2 2007, 20:35) *
Огромное спасибо, вы единственный кто реально помог. С классом cBigNumber уже работаю больше года, а вот с дробными числами пришлось связаться не так давно. Вопрос возник по причине того что такой класс я нашёл, но возникла причина того что этот класс не под C++ Builder. Поэтому я не знаю как делать присвоение и вывод инфы на экран под Builder. Может слышали про такой класс NTL?




Не слышал.



Но если класс полный (полноценный) присвоение делается как обычно

a=b (operator=)

а вывод делается через << (operator<<) на cout, правда у того чувака сделано через член-функцию print()

и должен быть ещё копи-конструктор для передачи аргументов в подпрограмму
Go to the top of the page
 
+Quote Post
kanzler
сообщение Nov 4 2007, 05:17
Сообщение #14


Местный
***

Группа: Свой
Сообщений: 340
Регистрация: 27-02-06
Из: Екатеринбург
Пользователь №: 14 728



Цитата(fontp @ Nov 3 2007, 15:16) *
Не слышал.
Но если класс полный (полноценный) присвоение делается как обычно

a=b (operator=)

а вывод делается через << (operator<<) на cout, правда у того чувака сделано через член-функцию print()

и должен быть ещё копи-конструктор для передачи аргументов в подпрограмму

Спасибо. Буду разбираться дальше.
Go to the top of the page
 
+Quote Post
Tod
сообщение Nov 4 2007, 10:21
Сообщение #15


Участник
*

Группа: Свой
Сообщений: 34
Регистрация: 3-09-07
Из: Москва
Пользователь №: 30 241



Может уже опоздал, но
Я бы посоветывал обратить внимание на BCD и упакованный BCD формат данных (двоично-десятичная математика по русски). Другими словами вы будете хранить числа (даже вещественные) в байтных массивах. Математика даже для вещественных данных будет целочисленной и очень простая и просто реализуемая. Единственное что подольше. На сколько я знаю, этот тип вычислений применяется для очень точных расчетов (астрономических или банковских) где критичны даже малые округления данных до определенной позиции после запятой.

На счет реализаций их тоже множество, например
http://www.atmel.ru/Articles/Atmel13.htm
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 16:24
Рейтинг@Mail.ru


Страница сгенерированна за 0.01386 секунд с 7
ELECTRONIX ©2004-2016