реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Арифметика с фиксированной точкой, помогите понять несколько ньюансов
onizuka
сообщение Mar 6 2008, 01:17
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 30
Регистрация: 12-01-08
Из: Санкт-Петербург
Пользователь №: 34 012



есть два беззнаковых 19разрядных числа x и y
необходимо вычислить следующее выражение: z = (3*pi/2) + arctan(x/y)

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

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

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

если не сложно напишите пожалуйста поподробнее
Go to the top of the page
 
+Quote Post
rv3dll(lex)
сообщение Mar 6 2008, 05:29
Сообщение #2


Полное ничтожество
*****

Группа: Banned
Сообщений: 1 991
Регистрация: 20-03-07
Из: Коломна
Пользователь №: 26 354



по поводу деления чисел с фиксированной точкой
когда число 3.625 представлено как разбиение 2 1 1/2 1/8 0011,1010 алгоритм целочисленных операций подходит
только надо потом правильно поставить виртуальную точку, исходя из положений виртуальных точек операндов.
Go to the top of the page
 
+Quote Post
eugen_pcad_ru
сообщение Mar 6 2008, 05:54
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 642
Регистрация: 15-11-07
Пользователь №: 32 353



Реализация в ПЛИС, процессоре, микроконтроллере?


--------------------
Правильно сформулированый вопрос содержит в себе половину ответа.
P.S.: Некоторые модераторы в качестве ответа так навязчиво предлагают посетить свой сайт, что иначе как саморекламу такие действия интерпретировать сложно.
Go to the top of the page
 
+Quote Post
608
сообщение Mar 6 2008, 06:20
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 70
Регистрация: 8-05-07
Пользователь №: 27 604



Цитата(onizuka @ Mar 6 2008, 05:17) *
1) до какого члена нужно(имеет смысл) раскладывать в ряд арктангенс ?
2) как реализуеться операция x/y в числах с фиксированной точкой? также как и с целыми?

1. Это зависит от желаемой точности и от значения аргумента, который определяет скорость схождения. Текущая точность вычисляется после добавления к сумме разложения каждого следующего члена ряда. Однако, разложение в ряд Тейлора не самый лучший способ вычисления тангенса, есть более прогрессивные алгоритмы, об этом здесь уже говорилось, например, CORDIC ("цифра за цифрой").
2. Это не важно, здесь дело вкуса. Желательно только, чтобы делитель был больше делимого, для этого делают дополнительные сдвиги операндов, а потом учитывают это при выравнивании частного. Вам правильно задали вопрос, по поводу места реализации.
Go to the top of the page
 
+Quote Post
rv3dll(lex)
сообщение Mar 6 2008, 06:50
Сообщение #5


Полное ничтожество
*****

Группа: Banned
Сообщений: 1 991
Регистрация: 20-03-07
Из: Коломна
Пользователь №: 26 354



Цитата(608 @ Mar 6 2008, 09:20) *
2. Это не важно, здесь дело вкуса. Желательно только, чтобы делитель был больше делимого,

????????

нормализация чтобы не делить лишние разы
Go to the top of the page
 
+Quote Post
Tanya
сообщение Mar 6 2008, 07:15
Сообщение #6


Гуру
******

Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883



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

Автор спрашивал(а) не про тангенс, а про арктангенс, ряд для которого сходится со свистом...
Go to the top of the page
 
+Quote Post
Stanislav
сообщение Mar 6 2008, 07:26
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987



Цитата(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) *
Автор спрашивал(а) не про тангенс, а про арктангенс, ряд для которого сходится со свистом...
Что значит "со свистом"?
Автор спрашивал(а) не про свист, а "до какого члена нужно(имеет смысл) раскладывать в ряд арктангенс".


--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
Go to the top of the page
 
+Quote Post
Tanya
сообщение Mar 6 2008, 08:00
Сообщение #8


Гуру
******

Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883



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

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

А свист был не автору, а соавтору, написавшему про плохую сходимость тангенса, что действительно имеет место вдали от нуля... ближе к пи пополам.
А Вам замечу, что в подобной постановке задачи при y=0 арктангенс будет равен пипополаму.
А как вычислять - пусть автор сам решает - это зависит от методов и вкуса. В ряд можно раскладывать, танцуя от нуля. А можно и не от нуля... И не обязательно по положительным степеням аргумента...
Go to the top of the page
 
+Quote Post
608
сообщение Mar 6 2008, 08:35
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 70
Регистрация: 8-05-07
Пользователь №: 27 604



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

Я допустил опечатку (правильно арктангенс), и спор пошел не в ту сторону...
Для вычисления арктангенса рекомендуется использовать алгоритм "цифра за цифрой". Отпадают все вопросы с делениями, да и каждая итерация позволяет вычислять как бы одну точную цифру результата.
А для оптимального решения задачи, опять же, нужно знать, чем исходное выражение будет вычисляться. Возможно, хватит и готовой таблицы...

Сообщение отредактировал 608 - Mar 6 2008, 09:19
Go to the top of the page
 
+Quote Post
onizuka
сообщение Mar 6 2008, 12:18
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 30
Регистрация: 12-01-08
Из: Санкт-Петербург
Пользователь №: 34 012



Цитата(eugen_pcad_ru @ Mar 6 2008, 08:54) *
Реализация в ПЛИС, процессоре, микроконтроллере?


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

а арктангенс нужно вычислять только в первом октанте
Go to the top of the page
 
+Quote Post
608
сообщение Mar 6 2008, 13:22
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 70
Регистрация: 8-05-07
Пользователь №: 27 604



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

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

Сколько времени отводится на одно вычисление?
Для медленного, итерационного, навскидку, хватит 100..200 LE. Для очень быстрого, аппаратного до 1500 LE. Говорят, есть готовая корка. Если ее достать нельзя, то надо выбрать CORDIC- алгоритм: или Волдера или Меджита. Следующие этапы - моделирование, потом синтез.
Исходные данные всегда приводят к первому квадранту, потом вводятся поправки на квадрант.
Go to the top of the page
 
+Quote Post
onizuka
сообщение Mar 6 2008, 13:51
Сообщение #12


Участник
*

Группа: Участник
Сообщений: 30
Регистрация: 12-01-08
Из: Санкт-Петербург
Пользователь №: 34 012



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


на одно вычисление <400 нс
Go to the top of the page
 
+Quote Post
608
сообщение Mar 6 2008, 14:10
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 70
Регистрация: 8-05-07
Пользователь №: 27 604



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

Похоже, нужен конвейер...
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 03:21
Рейтинг@Mail.ru


Страница сгенерированна за 0.01845 секунд с 7
ELECTRONIX ©2004-2016