2014 dxdy logo

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

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




 
 Точность в вычислениях с фиксированной точкой
Сообщение08.08.2025, 18:11 
Допустим, мне нужно выполнить такую операцию: $A^2+A$ с фиксированной точкой. При этом $A$ у нас 16-битное. Результат тоже должен быть 16-битным. Приведение результата к 16 битам предлагается сделать путём взятия старших 16 бит.
Если точка стоит справа от LSB (то есть если по сути нет дробной части), то прибавление $A$ к $A^2$ на результат практически не влияет.
Если стоит посередине числа (т.е. мы отводим 8 бит под дробную часть), то прибавление 8 старших бит $A$ повлияют на результат нашего выражения.
Ну и так дальше. Чем больше дробная часть, тем при таком методе приведения $A^2+A$ к 16 битам прибавление $A$ больше влияет на результат.

То есть получается, что если у меня есть какие-то абстрактные числа, для которых нужно считать степень, то лучше сдвигать точку левее? Просто по сути операция одна и та же, точка эта вообще выдуманная, а результат меняется очень ощутимо - голова ломается. Данные, которые планируется возводить в степень - отсчёты АЦП.

 
 
 
 Re: Точность в вычислениях с фиксированной точкой
Сообщение08.08.2025, 18:27 
Такое впечатление, что сам результат (его точность) вам не важен
Ну так если записать $a^2+a=a(a+1)$ то и видно, что у вас операция возведения в квадрат "перекрывает" сложение. Действительно, $1000^2+1000=1001000$ неслишком-то отличается от $1000000$ (на десятую долю процента).

 
 
 
 Re: Точность в вычислениях с фиксированной точкой
Сообщение08.08.2025, 18:37 
wrest
Точность мне важна - я как раз хочу понять, как сделать вычисления с фиксированной точкой и при этом с максимальной точностью. Просто в первом приведённом мной примере прибавление $A$ на результат вообще не влияет, во втором - ощутимо влияет. Вот и возникает вопрос - почему и как тогда выбирать положение точки. На данный момент у меня ощущение, что чем точка левее, тем лучше...

 
 
 
 Re: Точность в вычислениях с фиксированной точкой
Сообщение08.08.2025, 19:45 
Аватара пользователя
Не понимаю вопроса.

Функция $F(A)=A^2 +A$ переводит в общем случае без потери точности 16-битное число в 32-битное.
Если $A$ может быть любое, то при переводе результата в 16-битное число с фиксированной точкой:
а) либо для больших $A$ будет возникать переполнение, и ошибка на порядки.
б) либо для малых $A$ будет ноль.

Вот и выбирайте.

 
 
 
 Re: Точность в вычислениях с фиксированной точкой
Сообщение08.08.2025, 22:40 
Аватара пользователя
Kevsh в сообщении #1696828 писал(а):
Приведение результата к 16 битам предлагается сделать путём взятия старших 16 бит.

Какое-то странное предложение, неестественное. Оттого и такие странные результаты получаются.
Результат обычно хотят представить в том же формате, что и исходные операнды. Ну, чтобы он там мог в дальнейших операциях поучаствовать.

 
 
 [ Сообщений: 5 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group