2014 dxdy logo

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

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




 
 Про числа с плавающей точкой
Сообщение11.07.2013, 17:53 
Читаю различную литературу по числам с плавающей точкой и немного не понимаю, почему различаются приводимые оценки погрешностей округления. В частности 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 
kisupov в сообщении #745152 писал(а):
Если принять, что $t=\rho -1$
А если принять $t=\rho$?

 
 
 
 Re: Про числа с плавающей точкой
Сообщение11.07.2013, 18:40 
venco в сообщении #745167 писал(а):
А если принять $t=\rho$?

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

 
 
 
 Re: Про числа с плавающей точкой
Сообщение11.07.2013, 18:43 
kisupov в сообщении #745170 писал(а):
под целую часть отводится 1 бит.
Почему вы так решили?

 
 
 
 Re: Про числа с плавающей точкой
Сообщение11.07.2013, 18:48 
venco в сообщении #745172 писал(а):
kisupov в сообщении #745170 писал(а):
под целую часть отводится 1 бит.
Почему вы так решили?

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

 
 
 
 Re: Про числа с плавающей точкой
Сообщение11.07.2013, 18:50 
kisupov в сообщении #745176 писал(а):
venco в сообщении #745172 писал(а):
kisupov в сообщении #745170 писал(а):
под целую часть отводится 1 бит.
Почему вы так решили?

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

 
 
 
 Re: Про числа с плавающей точкой
Сообщение11.07.2013, 19:43 
venco в сообщении #745179 писал(а):
Целая часть подразумевается единица для нормальных чисел и в бинарной записи отсутствует.

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

 
 
 
 Re: Про числа с плавающей точкой
Сообщение11.07.2013, 20:44 
Ладно бы машинный эпсилон - различные трактовки сути не меняют. Но вот верхняя оценка относительной ошибки... Какого подхода придерживаться при оценке точности операций?

 
 
 
 Re: Про числа с плавающей точкой
Сообщение11.07.2013, 21:51 
Меня как-то смущают обе формулы.
Пусть число представлено $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 
А кто нибудь в курсе, как различаются числа нормализованные и денормализованные?...

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

 
 
 
 Re: Про числа с плавающей точкой
Сообщение11.07.2013, 22:01 
ewert в сообщении #745228 писал(а):
где флажок ненормализованности?

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

 
 
 
 Re: Про числа с плавающей точкой
Сообщение11.07.2013, 22:23 
EtCetera в сообщении #745221 писал(а):
Меня как-то смущают обе формулы.

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

-- 11.07.2013, 22:29 --

 
 
 
 Re: Про числа с плавающей точкой
Сообщение11.07.2013, 23:04 
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