Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
gromo
376 / 275 / 30
Регистрация: 04.09.2009
Сообщений: 1,223
1

Как заранее определить точность для мантиссы (GMP)

29.10.2013, 21:31. Просмотров 737. Ответов 9
Метки нет (Все метки)

Чтобы работать с числами с плавающей точкой в GMP, нужно заранее указать, сколько бит отвести для мантиссы.
В доке пишут, что используется только фактически нужное количество бит для текущего вычисления.

Поэтому я, не долго думая, указал точность примерно 2 000 000 000 бит. В итоге даже для маленьких чисел программа работает секунд 20.

Собственно, как предугадать нужную точность? Мне могут потребоваться как Астрономически большие числа, так и пренебрежительно малые, так и обычные повседневные (средние).

P.s. точность можно менять во время выполнения но дополнительно вычислять размер входного числа (если у него несколько миллиардов знаков), чтобы оценить нужную точность, я думаю, не целесообразно с точки зрения производительности.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.10.2013, 21:31
Ответы с готовыми решениями:

Как установить GMP библиотеку?
Как установить GMP библиотеку к MVS последняя версия, скиньте ссылку на статью...

Библиотека gmp. Как записать содержимое файла в переменную типа mpz_t?
Всем привет. Подскажите, пожалуйста, почему в переменную P ничего не...

Найти объём сферы методом Монте-Карло и определить точность
Помогите решить 2 задачи в программе C 1) заданы координаты вершин...

Точность float для земных координат
Добрый день! Достаточна ли точность FLOAT для хранения координат в градусах...

Максимальная точность для чисел с плавающей точкой
Суть поставленной задачи: дан вектор от 10_000 до 100_000 элементов, нужно...

9
Avazart
Эксперт С++
7756 / 5662 / 554
Регистрация: 10.12.2010
Сообщений: 25,663
Записей в блоге: 17
29.10.2013, 22:04 2

Не по теме:

Честно говоря тоже возникал такой вопрос, если найдешь решение отпишись...



Добавлено через 11 минут
Ммм подумав : может тебе стоит при расчетах проверять условие которое и будет задавать точность/отклонение ?

Добавлено через 3 минуты
К примеру в "моем блоге" мне нужно было только 1000 знаков, но я считал по слагаемым :

C++
1
2
3
4
5
6
7
for(int i=0; i<n; i++)
  {
     mpf_add(u,two,u);
     mpf_sqrt(u,u);
     mpf_mul(p,p,u);
     mpf_div(p,p,two);
  }
Хотя результат можно было каждый раз сравнивать с эталонным и если что выходить из цикла
0
gromo
376 / 275 / 30
Регистрация: 04.09.2009
Сообщений: 1,223
29.10.2013, 22:05  [ТС] 3
Avazart, Я вот подумал... Очень большие числа мы будем брать из файла, а его размер уже подсчитала операционная система. Можно задавать точность для mpf_t исходя из размера файла в файловой системе. Или это бредовая идея?
0
Avazart
Эксперт С++
7756 / 5662 / 554
Регистрация: 10.12.2010
Сообщений: 25,663
Записей в блоге: 17
29.10.2013, 23:06 4
Цитата Сообщение от gromo Посмотреть сообщение
Очень большие числа мы будем брать из файла, а его размер уже подсчитала операционная система.
Все зависит в каком виде там записаны данные, строка!= представление числа в памяти
0
gromo
376 / 275 / 30
Регистрация: 04.09.2009
Сообщений: 1,223
30.10.2013, 16:11  [ТС] 5
Цитата Сообщение от Avazart Посмотреть сообщение
Все зависит в каком виде там записаны данные, строка!= представление числа в памяти
хмм... В виде простого текстового формата (с фиксированной точкой, например). Файл не хитро- бинарный, если речь об этом.

Добавлено через 16 часов 45 минут

Не по теме:

Up! Господа, неужели никто больше не сталкивался с такой проблемой?

0
Avazart
Эксперт С++
7756 / 5662 / 554
Регистрация: 10.12.2010
Сообщений: 25,663
Записей в блоге: 17
30.10.2013, 16:16 6
Так записывай файл точность а потом считай ее ...
0
gromo
376 / 275 / 30
Регистрация: 04.09.2009
Сообщений: 1,223
30.10.2013, 16:54  [ТС] 7
Цитата Сообщение от Avazart Посмотреть сообщение
записывай файл точность а потом считай ее ...
Простите, не вижу связи слов в предложении. Можно расшифровать?
0
ForEveR
В астрале
Эксперт С++
7997 / 4755 / 652
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
30.10.2013, 16:57 8
gromo, Записать в файл не только число, но и точность которая нужна, после чего считать и установить нужную.
0
gromo
376 / 275 / 30
Регистрация: 04.09.2009
Сообщений: 1,223
30.10.2013, 17:04  [ТС] 9
Цитата Сообщение от ForEveR Посмотреть сообщение
Записать в файл не только число, но и точность которая нужна, после чего считать и установить нужную.
Вопрос был в том, как определить точность заранее (в названии темы). Если она уже есть, то какие проблемы-то
А какое соответствие межу значением точности в битах, и количеством максимально возможных представимых разрядов (в GMP)? нигде об этом не написано =(
0
Avazart
Эксперт С++
7756 / 5662 / 554
Регистрация: 10.12.2010
Сообщений: 25,663
Записей в блоге: 17
30.10.2013, 18:02 10
Цитата Сообщение от gromo Посмотреть сообщение
Вопрос был в том, как определить точность заранее (в названии темы).
Так что определять? Точность нужно задавать ту которая вам нужна...

Другое дело как определить точность в битах соответствующую к примеру числу с N числами после запятой.
0
30.10.2013, 18:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.10.2013, 18:02

Вывод мантиссы числа на экран
Имеется вещественное число 0.12*10^3. Двоичный эквивалент мантиссы равен...

Определение порядка и мантиссы вещественного числа
Помогите, пожалуйста, мне нужно написать алгоритм определения порядка и...

Как задать точность?
Как задать точность для вычисления суммы ряда, равную 10-4?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru