Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
gromo
371 / 270 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
#1

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

29.10.2013, 21:31. Просмотров 634. Ответов 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) (C++):

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

Точность float для земных координат - C++
Добрый день! Достаточна ли точность FLOAT для хранения координат в градусах объектов на земле? Везде пишут по разному и ничего...

Вывод мантиссы числа на экран - C++
Имеется вещественное число 0.12*10^3. Двоичный эквивалент мантиссы равен примерно 0.00011110101110000101000111101. Нужно вывести на экран...

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

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

Вычислить сумму бесконечного ряда с заданной точность для значения x - C++
Вычислить суму бесконечного ряда с заданной точностью ε < 1 для –1 < x < 1 Программа должна содержать простое меню, которое...

9
Avazart
Эксперт С++
7247 / 5419 / 297
Регистрация: 10.12.2010
Сообщений: 24,054
Записей в блоге: 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
371 / 270 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
29.10.2013, 22:05  [ТС] #3
Avazart, Я вот подумал... Очень большие числа мы будем брать из файла, а его размер уже подсчитала операционная система. Можно задавать точность для mpf_t исходя из размера файла в файловой системе. Или это бредовая идея?
0
Avazart
Эксперт С++
7247 / 5419 / 297
Регистрация: 10.12.2010
Сообщений: 24,054
Записей в блоге: 17
29.10.2013, 23:06 #4
Цитата Сообщение от gromo Посмотреть сообщение
Очень большие числа мы будем брать из файла, а его размер уже подсчитала операционная система.
Все зависит в каком виде там записаны данные, строка!= представление числа в памяти
0
gromo
371 / 270 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
30.10.2013, 16:11  [ТС] #5
Цитата Сообщение от Avazart Посмотреть сообщение
Все зависит в каком виде там записаны данные, строка!= представление числа в памяти
хмм... В виде простого текстового формата (с фиксированной точкой, например). Файл не хитро- бинарный, если речь об этом.

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

Не по теме:

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

0
Avazart
Эксперт С++
7247 / 5419 / 297
Регистрация: 10.12.2010
Сообщений: 24,054
Записей в блоге: 17
30.10.2013, 16:16 #6
Так записывай файл точность а потом считай ее ...
0
gromo
371 / 270 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
30.10.2013, 16:54  [ТС] #7
Цитата Сообщение от Avazart Посмотреть сообщение
записывай файл точность а потом считай ее ...
Простите, не вижу связи слов в предложении. Можно расшифровать?
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,545
Завершенные тесты: 3
30.10.2013, 16:57 #8
gromo, Записать в файл не только число, но и точность которая нужна, после чего считать и установить нужную.
0
gromo
371 / 270 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
30.10.2013, 17:04  [ТС] #9
Цитата Сообщение от ForEveR Посмотреть сообщение
Записать в файл не только число, но и точность которая нужна, после чего считать и установить нужную.
Вопрос был в том, как определить точность заранее (в названии темы). Если она уже есть, то какие проблемы-то
А какое соответствие межу значением точности в битах, и количеством максимально возможных представимых разрядов (в GMP)? нигде об этом не написано =(
0
Avazart
Эксперт С++
7247 / 5419 / 297
Регистрация: 10.12.2010
Сообщений: 24,054
Записей в блоге: 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
Привет! Вот еще темы с ответами:

как добавить точность эпсилон - C++
вот однозначное задание: &quot;программа должна вычислять значение функции exp(x) действительного аргумента Х с использованием рекурсии ис...

Как задать максимальную точность? - C++
E - это точность в программе(её я задаю сам). Вопрос: как задать максимальную точность? #include &lt;iostream&gt; #include &lt;stdio.h&gt; ...

Как определить степень bottenecking'a заранее? (перед покупкой железа) - Компьютерное железо
Давно задался одни вопросом. На основе каких данных характеристик видеокарты и процессора (перед их покупкой) можно понять, будет ли между...

Сборка gmp для visual studio - Visual C++
Всем здравствуйте, по инструкции сборка gmp для visual studio c++ я пошагово выполнял сборку библиотеки gmp, но у меня не создалась папка...


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

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

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