|
целочисленная арифметика |
|
|
|
 |
Ответов
|
May 5 2006, 13:05
|
Участник

Группа: Свой
Сообщений: 63
Регистрация: 5-05-06
Пользователь №: 16 804

|
Obi, а что тебе нужно? Я занимался целочисленной реализацией заведомо FP-алгоритмов. Могу подсказать .
|
|
|
|
|
May 23 2006, 07:04
|

Патриот
  
Группа: Свой
Сообщений: 384
Регистрация: 26-12-04
Пользователь №: 1 682

|
Цитата(AndrewKirs @ May 5 2006, 17:05)  Obi, а что тебе нужно? Я занимался целочисленной реализацией заведомо FP-алгоритмов. Могу подсказать . Хотелось бы узнать общие действия или рекомендации по переводу FP-алгоритмов в целочисленные. Сейчас тоже подхожу к этому - хотелось бы послушать опытных. Заранее спасибо.
|
|
|
|
|
May 23 2006, 16:47
|
Участник

Группа: Свой
Сообщений: 63
Регистрация: 5-05-06
Пользователь №: 16 804

|
Например, так. FP-число хранится как два integer. Первый содержит целую часть, второй - дробную в целочисленных терминах. Скажем, на нее выделяется 16 бит, из которых старший используется для проверки переполнения. Остается 15 бит (dec=0..32767 или hex=0..7FFF), и числу 0.5 будет соответствовать 3FFF. Налицо некоторая потеря точности, поэтому надо аккуратно смотреть, сколько бит нужно.
Дальше операции ведутся параллельно над целой и дробной частями. То есть сложение двух FP-чисел сведется к сложению отдельно целых и дробных частей. Для дробных надо анализировать старший бит. Если он равен 1, значит произошло переполнение => увеличиваем на 1 целую часть и обнуляем старший бит дробной.
|
|
|
|
|
Jun 23 2006, 13:59
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Цитата(AndrewKirs @ May 23 2006, 15:47)  Например, так. FP-число хранится как два integer. Первый содержит целую часть, второй - дробную в целочисленных терминах. Скажем, на нее выделяется 16 бит, из которых старший используется для проверки переполнения. Остается 15 бит (dec=0..32767 или hex=0..7FFF), и числу 0.5 будет соответствовать 3FFF. Налицо некоторая потеря точности, поэтому надо аккуратно смотреть, сколько бит нужно.
Дальше операции ведутся параллельно над целой и дробной частями. То есть сложение двух FP-чисел сведется к сложению отдельно целых и дробных частей. Для дробных надо анализировать старший бит. Если он равен 1, значит произошло переполнение => увеличиваем на 1 целую часть и обнуляем старший бит дробной. Тут вы немного перегнули палку. Сложение двух FixedPoint чисел m.n не сводится к отдельному сложению целых и дробных частей. Достаточно такие числа складывать, как целые числа m+n разрядности. Точка в результате (m+1).n будет на том же самом месте. Все переносы между целыми и дробными частями осуществляются автоматически.
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Jun 28 2006, 09:39
|
Участник

Группа: Свой
Сообщений: 63
Регистрация: 5-05-06
Пользователь №: 16 804

|
Цитата(=GM= @ Jun 23 2006, 17:59)  Тут вы немного перегнули палку. Сложение двух FixedPoint чисел m.n не сводится к отдельному сложению целых и дробных частей. Достаточно такие числа складывать, как целые числа m+n разрядности. Точка в результате (m+1).n будет на том же самом месте. Все переносы между целыми и дробными частями осуществляются автоматически. Это я несколько упрощенно написал, т.к.не хотел загромождать деталями. На самом деле, у меня FP-число хранится как два 16-битных WORD. Все это хозяйство реализуется на MMX, и в одном его 64-битном регистре хранится 4 таких вот дробных части, а в другом - 4 целых. Тот же алгоритм (билинейная интерполяция) перенесен на SSE2, там регистр в два раза больше, поэтому влезает по 8 штук. Соответственно, старший бит используется под проверку переполнения.
|
|
|
|
Сообщений в этой теме
Obi целочисленная арифметика Feb 24 2006, 14:02 Arch_Grey Вопрос, конечно, интересный! Что-нибудь о Fi... Feb 27 2006, 10:59 Obi Спасибо за ссылку. А вообще, может быть я плохо ис... Feb 27 2006, 20:23 Pathfinder На эту тему классная книжка "Алгоритмические ... Mar 2 2006, 12:40 Sot Генри С. Уоррен, мл.
Алгоритмические трюки для про... Mar 8 2006, 12:52  Oldring Цитата(Jools @ May 23 2006, 11:04) Хотело... Jun 4 2006, 08:58 tag ...сейчас под рукой нету, есть такая книга "П... Jun 3 2006, 08:42 GetSmart Кто-нибудь знает, почему я не могу скачать с rapi... Jun 3 2006, 19:39 AndrewKirs Была такая книга: В.К.Злобин, В.Л.Григорьев Програ... Jun 15 2006, 09:41 _artem_ Помоему эта книжка лучше чем хакерс делайт хотя и ... Jun 28 2006, 10:43 AndrewKirs Хорошая книжка, только недописанная (draft). Jun 28 2006, 12:15
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|