2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


В этом разделе нельзя создавать новые темы.

Если Вы хотите задать новый вопрос, то не дописывайте его в существующую тему, а создайте новую в корневом разделе "Помогите решить/разобраться (М)".

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

Не ищите на этом форуме халяву, правила запрещают участникам публиковать готовые решения стандартных учебных задач. Автор вопроса обязан привести свои попытки решения и указать конкретные затруднения.

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



Начать новую тему Ответить на тему
 
 Про числа с плавающей точкой
Сообщение11.07.2013, 17:53 


26/03/12
74
Читаю различную литературу по числам с плавающей точкой и немного не понимаю, почему различаются приводимые оценки погрешностей округления. В частности M. Overton в книге «Numerical Computing With IEEE Floating Point Arithmetic», 2001, предлагает рассматривать число с плавающей точкой в следующем виде:
$$x=-{{1}^{s}}\cdot \left( \frac{{{d}_{\rho }}}{{{2}^{0}}}+\frac{{{d}_{\rho -1}}}{{{2}^{1}}}+...+\frac{{{d}_{1}}}{{{2}^{\rho -1}}} \right)\cdot {{2}^{e}},$$
т.е. под мантиссу отводится один разряд, а остальные – дробные. При этом

$\varepsilon={{2}^{-(\rho -1)}} $ - машинный эпсилон,

$\Delta ={{2}^{e-\rho }}$ - максимальная абсолютная ошибка (при округлении до ближайшего),

$\delta =\varepsilon/2={{2}^{-\rho }}$ - максимальная относительная ошибка.

В свою очередь, N. Higham (см. Accuracy and Stability of Numerical Algorithms, 2002) число представляет немного иначе (впрочем так же как и Воеводин и Самарский):
$$x=-{{1}^{s}}\cdot \left( \frac{{{d}_{t}}}{2}+\frac{{{d}_{t-1}}}{{{2}^{2}}}+...+\frac{{{d}_{1}}}{{{2}^{t}}} \right)\cdot {{2}^{e}},$$
т.е. все разряды мантиссы он рассматривает как дробные (на индексы цифр ${{d}_{i}}$ не стоит обращать внимания, они принципиальной роли не играют). При этом:
$\varepsilon={{2}^{1-t}}$,

$\Delta =\frac{{{2}^{e-t}}}{2},$

$\delta =\frac{1}{2}{{2}^{1-t}}$.

Если принять, что $t=\rho -1$ и подставить в последние выражения, то получим:

$\varepsilon={{2}^{2-\rho }}$,

$\Delta =\frac{{{2}^{e-(\rho -1)}}}{2}={{2}^{e-\rho }}$,

$\delta =\frac{1}{2}{{2}^{2-\rho }}={{2}^{1-\rho }}$.

Таким образом, оценки относительных ошибок и машинного эпсилона у разных авторов не совпадают. Вопрос, какой концепции придерживаться? Или быть может я неправильно трактую что-то? Почему так получается? Вроде как стандарт IEEE-754 один и оба автора его рассматривают в своих работах.

 Профиль  
                  
 
 Re: Про числа с плавающей точкой
Сообщение11.07.2013, 18:32 
Заслуженный участник


04/05/09
4584
kisupov в сообщении #745152 писал(а):
Если принять, что $t=\rho -1$
А если принять $t=\rho$?

 Профиль  
                  
 
 Re: Про числа с плавающей точкой
Сообщение11.07.2013, 18:40 


26/03/12
74
venco в сообщении #745167 писал(а):
А если принять $t=\rho$?

$\rho$ - это общее количество бит мантиссы, $t$ - число разрядов дробной части мантиссы. Т.е. $t=\rho-1$, т.к. под целую часть отводится 1 бит.

 Профиль  
                  
 
 Re: Про числа с плавающей точкой
Сообщение11.07.2013, 18:43 
Заслуженный участник


04/05/09
4584
kisupov в сообщении #745170 писал(а):
под целую часть отводится 1 бит.
Почему вы так решили?

 Профиль  
                  
 
 Re: Про числа с плавающей точкой
Сообщение11.07.2013, 18:48 


26/03/12
74
venco в сообщении #745172 писал(а):
kisupov в сообщении #745170 писал(а):
под целую часть отводится 1 бит.
Почему вы так решили?

потому что стандарт IEEE-754 (2008) так предписывает.

 Профиль  
                  
 
 Re: Про числа с плавающей точкой
Сообщение11.07.2013, 18:50 
Заслуженный участник


04/05/09
4584
kisupov в сообщении #745176 писал(а):
venco в сообщении #745172 писал(а):
kisupov в сообщении #745170 писал(а):
под целую часть отводится 1 бит.
Почему вы так решили?

потому что стандарт IEEE-754 (2008) так предписывает.
Целая часть подразумевается единица для нормальных чисел и в бинарной записи отсутствует.

 Профиль  
                  
 
 Re: Про числа с плавающей точкой
Сообщение11.07.2013, 19:43 


26/03/12
74
venco в сообщении #745179 писал(а):
Целая часть подразумевается единица для нормальных чисел и в бинарной записи отсутствует.

подразумевается неявно. но не в этом суть. Overton рассматривает числа у которых целая часть - один бит.

 Профиль  
                  
 
 Re: Про числа с плавающей точкой
Сообщение11.07.2013, 20:44 


26/03/12
74
Ладно бы машинный эпсилон - различные трактовки сути не меняют. Но вот верхняя оценка относительной ошибки... Какого подхода придерживаться при оценке точности операций?

 Профиль  
                  
 
 Re: Про числа с плавающей точкой
Сообщение11.07.2013, 21:51 
Заслуженный участник


28/04/09
1933
Меня как-то смущают обе формулы.
Пусть число представлено $n_m$ битами мантиссы, $n_e$ битами экспоненты и $n_s=1$ битом знака, $n_s+n_m+n_e=n$, $n\in\{16,32,64,128,80,...\}$. Тогда нормализованную форму представления чисел с плавающей запятой по стандарту IEEE-754 можно записать так в общем виде:$$x=(-1)^s\cdot (1+m\cdot 2^{-n_m})\cdot 2^{e-2^{n_e-1}+1}$$Здесь $s$, $m$ и $e$ $\text{---}$ числа, записанные в двоичной системе с помощью соответствующих битов ($s\in\{0,1\}$, $0\le m<2^{n_m}$, $0<e<2^{n_e}-1$).
При $e=0$ число представляется в т.н. денормализованной форме (англ. denormals, subnormals), которая записывается так:$$x=(-1)^s\cdot m\cdot 2^{-n_m-2^{n_e-1}+2}$$Из такой схемы выпадают 2 нуля (для них $m=e=0$), 2 бесконечности ($m=0$, $e=2^{n_e}-1$) и куча т.н. нечисел (англ. NaN, not a number), получающихся при $m\ne 0$, $e=2^{n_e}-1$.

 Профиль  
                  
 
 Re: Про числа с плавающей точкой
Сообщение11.07.2013, 21:58 
Заслуженный участник


11/05/08
32166
А кто нибудь в курсе, как различаются числа нормализованные и денормализованные?...

Т.е. с нормализованными-то всё понятно -- там старший бит мантиссы просто проглатывается за ненадобностью. Но: если предусмотрена работа и с ненормализованными данными, то -- где флажок ненормализованности? или просто не предусмотрена?

 Профиль  
                  
 
 Re: Про числа с плавающей точкой
Сообщение11.07.2013, 22:01 
Заслуженный участник


09/09/10
3729
ewert в сообщении #745228 писал(а):
где флажок ненормализованности?

В экспоненте. Если там сплошной ноль — перед вами денормализованное число.

 Профиль  
                  
 
 Re: Про числа с плавающей точкой
Сообщение11.07.2013, 22:23 


26/03/12
74
EtCetera в сообщении #745221 писал(а):
Меня как-то смущают обе формулы.

Ну если не рассматривать особенности хранения порядка, то, по-сути, приведенная Вами форма записи совпадает с первой формулой, приведенной мной выше (если рассматривать общий случай и считать, что все биты в представлении мантиссы хранятся в явном виде). При этом $\rho = {n}_{m}+1$. Или я что-то путаю? Если все так и я ничего не путаю, то каково значение точной верхней грани для относительной ошибки округления ?

-- 11.07.2013, 22:29 --

 Профиль  
                  
 
 Re: Про числа с плавающей точкой
Сообщение11.07.2013, 23:04 
Заслуженный участник


28/04/09
1933
kisupov в сообщении #745239 писал(а):
Ну если не рассматривать особенности хранения порядка, то, по-сути, приведенная Вами форма записи совпадает с первой формулой, приведенной мной выше (если рассматривать общий случай и считать, что все биты в представлении мантиссы хранятся в явном виде). При этом $\rho = {n}_{m}+1$. Или я что-то путаю?
Кажется, не путаете. Если говорите про нормализованную форму.
kisupov в сообщении #745239 писал(а):
Если все так и я ничего не путаю, то каково значение точной верхней грани для относительной ошибки округления ?
$2^{-(\rho-1)}/2=2^{-\rho}$, как у Вас и написано.
kisupov в сообщении #745239 писал(а):
Авторы пишут, что $\frac{1}{2} \le m < 1$. Но тут же приводят пример, где $m = 1.11.....$, а определяют функцию $ulp(1)$ для мантиссы $ 1 \le m < 2$. Как это понимать?
Вообще-то, $1.11...$ $\text{---}$ здесь просто число для примера, а не мантисса (как я понимаю). Но вот с ульпами они, похоже, и правда промахнулись.
Впрочем, в данном отрывке рассматриваются числа, представляемые не по 754-ому стандарту.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 13 ] 

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group