Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Арифметика с фиксированной точкой
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему
onizuka
есть два беззнаковых 19разрядных числа x и y
необходимо вычислить следующее выражение: z = (3*pi/2) + arctan(x/y)

насколько я понимаю арктангенс соответственно вычислять нужно раскладывая его в ряд тейлора
результат 32 битный

вопросы следующие:

1) до какого члена нужно(имеет смысл) раскладывать в ряд арктангенс ?
2) как реализуеться операция x/y в числах с фиксированной точкой? также как и с целыми?

если не сложно напишите пожалуйста поподробнее
rv3dll(lex)
по поводу деления чисел с фиксированной точкой
когда число 3.625 представлено как разбиение 2 1 1/2 1/8 0011,1010 алгоритм целочисленных операций подходит
только надо потом правильно поставить виртуальную точку, исходя из положений виртуальных точек операндов.
eugen_pcad_ru
Реализация в ПЛИС, процессоре, микроконтроллере?
608
Цитата(onizuka @ Mar 6 2008, 05:17) *
1) до какого члена нужно(имеет смысл) раскладывать в ряд арктангенс ?
2) как реализуеться операция x/y в числах с фиксированной точкой? также как и с целыми?

1. Это зависит от желаемой точности и от значения аргумента, который определяет скорость схождения. Текущая точность вычисляется после добавления к сумме разложения каждого следующего члена ряда. Однако, разложение в ряд Тейлора не самый лучший способ вычисления тангенса, есть более прогрессивные алгоритмы, об этом здесь уже говорилось, например, CORDIC ("цифра за цифрой").
2. Это не важно, здесь дело вкуса. Желательно только, чтобы делитель был больше делимого, для этого делают дополнительные сдвиги операндов, а потом учитывают это при выравнивании частного. Вам правильно задали вопрос, по поводу места реализации.
rv3dll(lex)
Цитата(608 @ Mar 6 2008, 09:20) *
2. Это не важно, здесь дело вкуса. Желательно только, чтобы делитель был больше делимого,

????????

нормализация чтобы не делить лишние разы
Tanya
Цитата(608 @ Mar 6 2008, 09:20) *
1. Это зависит от желаемой точности и от значения аргумента, который определяет скорость схождения. Текущая точность вычисляется после добавления к сумме разложения каждого следующего члена ряда. Однако, разложение в ряд Тейлора не самый лучший способ вычисления тангенса, есть более прогрессивные алгоритмы, об этом здесь уже говорилось, например, CORDIC ("цифра за цифрой").

Автор спрашивал(а) не про тангенс, а про арктангенс, ряд для которого сходится со свистом...
Stanislav
Цитата(onizuka @ Mar 6 2008, 04:17) *
есть два беззнаковых 19разрядных числа x и y
необходимо вычислить следующее выражение: z = (3*pi/2) + arctan(x/y)

насколько я понимаю арктангенс соответственно вычислять нужно раскладывая его в ряд тейлора
результат 32 битный

вопросы следующие:

1) до какого члена нужно(имеет смысл) раскладывать в ряд арктангенс ?
2) как реализуеться операция x/y в числах с фиксированной точкой? также как и с целыми?

если не сложно напишите пожалуйста поподробнее
1. Зависит от точности, предъявляемой к результату. Если я правильно понял, x и y могут быть любыми, кроме y=0.
2. Так же.

Цитата(Tanya @ Mar 6 2008, 10:15) *
Автор спрашивал(а) не про тангенс, а про арктангенс, ряд для которого сходится со свистом...
Что значит "со свистом"?
Автор спрашивал(а) не про свист, а "до какого члена нужно(имеет смысл) раскладывать в ряд арктангенс".
Tanya
Цитата(Stanislav @ Mar 6 2008, 10:26) *
1. Зависит от точности, предъявляемой к результату. Если я правильно понял, x и y могут быть любыми, кроме y=0.
2. Так же.

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

А свист был не автору, а соавтору, написавшему про плохую сходимость тангенса, что действительно имеет место вдали от нуля... ближе к пи пополам.
А Вам замечу, что в подобной постановке задачи при y=0 арктангенс будет равен пипополаму.
А как вычислять - пусть автор сам решает - это зависит от методов и вкуса. В ряд можно раскладывать, танцуя от нуля. А можно и не от нуля... И не обязательно по положительным степеням аргумента...
608
Цитата(Tanya @ Mar 6 2008, 12:00) *
А свист был не автору, а соавтору, написавшему про плохую сходимость тангенса, что действительно имеет место вдали от нуля... ближе к пи пополам.

Я допустил опечатку (правильно арктангенс), и спор пошел не в ту сторону...
Для вычисления арктангенса рекомендуется использовать алгоритм "цифра за цифрой". Отпадают все вопросы с делениями, да и каждая итерация позволяет вычислять как бы одну точную цифру результата.
А для оптимального решения задачи, опять же, нужно знать, чем исходное выражение будет вычисляться. Возможно, хватит и готовой таблицы...
onizuka
Цитата(eugen_pcad_ru @ Mar 6 2008, 08:54) *
Реализация в ПЛИС, процессоре, микроконтроллере?


Реализация в ПЛИС( 25k LE ). насколько отличается рещение CORDIC по требуемому количеству элементов и быстродействию? Просто это лишь микроскопическая часть всего алгоритма. При этом туда еще нужно умудриться ну очень много уместить.

а арктангенс нужно вычислять только в первом октанте
608
Цитата(onizuka @ Mar 6 2008, 16:18) *
Реализация в ПЛИС( 25k LE ). насколько отличается рещение CORDIC по требуемому количеству элементов и быстродействию? Просто это лишь микроскопическая часть всего алгоритма. При этом туда еще нужно умудриться ну очень много уместить.

а арктангенс нужно вычислять только в первом октанте

Сколько времени отводится на одно вычисление?
Для медленного, итерационного, навскидку, хватит 100..200 LE. Для очень быстрого, аппаратного до 1500 LE. Говорят, есть готовая корка. Если ее достать нельзя, то надо выбрать CORDIC- алгоритм: или Волдера или Меджита. Следующие этапы - моделирование, потом синтез.
Исходные данные всегда приводят к первому квадранту, потом вводятся поправки на квадрант.
onizuka
Цитата(608 @ Mar 6 2008, 16:22) *
Сколько времени отводится на одно вычисление?
Для медленного, итерационного, навскидку, хватит 100..200 LE. Для очень быстрого, аппаратного до 1500 LE. Говорят, есть готовая корка. Если ее достать нельзя, то надо выбрать CORDIC- алгоритм: или Волдера или Меджита. Следующие этапы - моделирование, потом синтез.
Исходные данные всегда приводят к первому квадранту, потом вводятся поправки на квадрант.


на одно вычисление <400 нс
608
Цитата(onizuka @ Mar 6 2008, 17:51) *
на одно вычисление <400 нс

Похоже, нужен конвейер...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.