[an error occurred while processing this directive]
Да я и это не оспаривал (+)
(«Телесистемы»: Конференция «Цифровые сигнальные процессоры (DSP) и их применение»)
Как заметили Вы совершенно верно, бывают случаи, когда нужно иметь одинаковую абсолютную точность представления данных во всем рабочем диапазоне, а бывают случаи, когда нужна точность представления данных, которая зависит от порядка величин. С фиксед пойнт все 32 разряда в нашем распоряжении и могут использоваться целиком под мантиссу; во флоатинге придется пожертвовать 8-ю битами для представления порядка, но зато можно для чисел с очень маленьким порядком обеспечить ту же относительную точность.
Та задача, что привели Вы, когда нужно сложить большое число с маленьким в отрыве от контекста действительно лучше решается в фиксед пойнте. Если же подумать, когда такое бывает нужно, то основное применение - переход от одного значения величины A0 к другому значению той же величины AN в течение некоторого времени. В этом случае мы разбиваем интервал [A0..AN] на N частей:
dA=(AN-A0)/N,
а потом прибавляем к величине А0 значение dA. Если делать эту операцию рекурсивно:
A(i)=A(i-1)+dA,
то конечно все будет плохо. А вот если делать вот так:
A(i)=A0+i*dA, то все будет прекрасно. И результат в итоге будет в точности совпадать со значением AN.
Признаться, принципиально другие случаи, когда надо к большой величине маленькую прибавлять, мне даже сейчас и в голову не приходят.
--------
А вот зато если надо умножить одну большую величину на маленькую, то тут как раз флоатинг-пойнт просто неизбежен. А с таким случаем приходится иметь дело гораздо чаще.
Составить ответ
|||
Конференция
|||
Архив
Ответы
- Вот пример не в отрыве... (+) — ASergej_R19 (31.10.2006 18:16 80.250.160.170, 67 байт)
- Ответ (+) — homekvn (31.10.2006 18:26 212.185.161.237, 258 байт)
- Ответ — ASergej_R19 (31.10.2006 18:46 80.250.160.170, 330 байт)
- Ответ (+) — homekvn (31.10.2006 19:14 212.185.161.237, 2314 байт)
- Я же Вам писал по поводу Блекфина... (+) — ASergej_R19 (31.10.2006 19:45 80.250.160.170, 348 байт)
- А вот еще последний гвоздь (+) — homekvn (31.10.2006 19:27 212.185.161.237, 773 байт)
- Вообще-то я ничего не сдвигаю - просто складываю раздельно сумму и число отсчетов... (+) — ASergej_R19 (31.10.2006 19:40 80.250.160.170, 165 байт)
- Уж не знаю как там у блэкфина, но делить каждое число перед возведением в квадрат - это какое-то особенный шик, больше напоминающий извращение. Вот Вам навскидку метОд. Отдельно суммируете старшие 16-ти разрядные чапсти квадратов, отдельно младшие. Потом суммы сшиваете и результат делите. Или сначала делите, потом сшиваете, пофигу. И гвоздь Ваш совсем ржавый в результате получился. — -=ВН=- (31.10.2006 19:36 193.125.71.140, пустое)
- Можно эту операцию расписать для того примера, что я привел ранее (+) — homekvn (31.10.2006 19:53 212.185.161.237, 552 байт)
- А я Вам ответил, что точный результат получается за время ~2*N. И если нужно деление (считается средний квадрат), то делится означенный точный результат, а вовсе не каждый операнд. И годится это дело для любого вектора, хорошего ли, плохого ли. 2*N гораздо хуже, чем N, гораздо, но много лучше деления каждого отсчета, много лучше. — -=ВН=- (31.10.2006 20:02 193.125.71.140, пустое)
- А никто и не говорил, что у Блекфина производительность больше чем у Шарка... (+) — ASergej_R19 (31.10.2006 20:02 80.250.160.170, 222 байт)
- А если использовать оба аккумулятора A0 и A1, то посчитает за время вдвое меньшее.. — quark (31.10.2006 20:06 62.140.241.223, пустое)
- С последним утверждением я не спорю и не возражал против него. Просто пример Вы привели, на мой взгляд, не очень удачный для демонстрации этого утверждения. Вот там-то я и завозражал. — homekvn (31.10.2006 20:05 212.185.161.237, пустое)
- А я начал возражать Вам, потому что Вы возражали неправильным применением fixed point... :-) (+) — ASergej_R19 (31.10.2006 20:21 80.250.160.170, 398 байт)
- Ну, про точность я готов продолжить. Приведите, если Вам не трудно, пример наихудшего для floating-point вычислений вектора, где бы начались проблемы с точностью, но при этом 32-битный fixed-point подобных проблем бы не имел. — homekvn (31.10.2006 20:29 212.185.161.237, пустое)
- Не в состоянии прочитать всю дискуссию, но сейчас особенно моден формат ieee754. Каковой для флоата обычного оговаривает на все прол все 32-х разряда. С учетом этого сложите во float 2 числа и доложите результат. Первое число=1073741823, второе =1073741822. — -=ВН=- (31.10.2006 20:38 193.125.71.140, пустое)
- Ну-у! Так и я могу. А теперь Вы сложите серию чисел вроде 8.21e+48 или (e-48), которые также соответствуют приведенному Вами стандарту. И потом Вы мне исходные числа приведите, которые надо в квадрат возвести, а потом просуммировать. А потом сами на блекфине сделайте то же самое. — homekvn (31.10.2006 21:08 212.185.161.237, пустое)
- Вы подменили вопрос. 8.21e+48 не входят в ДИАПАЗОН 32-х разрядных чисел целых. Не входят. А приведенные мной числа в ДИАПАЗОН флоата одинарной точности входят. Я ведь не просил Вас складывать в одинарном флоате числа порядка 8.21e+16799. Нехорошо, нехорошо, Вы пытаетесь меня обмануть :-((( — -=ВН=- (31.10.2006 21:18 193.125.71.140, пустое)
- Да признаюсь, перебрал. Докладываю результат 3,9999997 И что? Кстати (+) — homekvn (31.10.2006 21:41 212.185.161.237, 635 байт)
- Да где Вы видели, что кто-то Ваш Шарк принижал? :-) Это ж разные процессоры, заточены под разные вещи... (+) — ASergej_R19 (31.10.2006 22:05 80.250.160.170, 339 байт)
- Вы знаете, я как-то догадывался, что Шарик и с целыми числами умеет, я даже с шариком работал, правда это было давно, шарик старый был, 21065, подох наверное уже. И мне в общем по барабану, кто кого сделает, шарик блэкфина или наоборот. Вы задаете вопрос или приводите пример, я Вам в ответ на это и только на это и демонстрирую всякие ноу и даже хау. — -=ВН=- (31.10.2006 21:48 193.125.71.140, пустое)
- Отлично! :-) (+) — ASergej_R19 (31.10.2006 20:42 80.250.160.170, 289 байт)
- Вот кстати и так тоже можно... (-) — ASergej_R19 (31.10.2006 19:41 80.250.160.170, пустое)
- В силу последнего замечания для нахождения RMS Блекфин даже и точнее-то ну никак не будет (ввиду обязательной нормировки входного вектора). — homekvn (31.10.2006 19:33 212.185.161.237, пустое)
Перейти к списку ответов
|||
Конференция
|||
Архив
|||
Главная страница
|||
Содержание