Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Подскажите, я не понимаю. Говорят про сложность вычислений с плавающей точкой.

Полковник Траутман Гуру (3222), закрыт 8 лет назад
Но что там сложного? Я никак не могу понять. Может быть кто нибудь обьяснит в чём сложность? Одно число делишь, либо складываешь с другим. Что сложного не понимаю? Ну используй несколько ядер для обработки каждого такого числа. В чём проблема? Не понимаю.
Дополнен 8 лет назад
В чём сложность? Когда всё просто.
Лучший ответ
Алексей Кузьминов Мудрец (11132) 8 лет назад
Абсолютно с вами согласен.
Арифметические операции над числами с плавающей запятой - ОЧЕНЬ просты. Я бы даже сказал, что они элементарны. Имеется значительно более сложные операции типа инструкций SSE с разными номерами.

Если же сравнить их с операциями над числами с фиксированной запятой, то операции с плавающей сложнее хотя бы потому, что в числах с плавающей запятой есть 2 элемента: мантисса и экспонента. Оба этих элемента при всех операциях должны изменяться согласованно, что и требует дополнительных действий от процессора.
Полковник ТраутманГуру (3222) 8 лет назад
Но это ведь только в двоичной системе так происходит? Если записать число в обычной десятичной форме, то число будет длинным, но зато проще обрабатывать его будет.
Алексей Кузьминов Мудрец (11132) Двоичность не имеет прямого отношения к сложности (в ней всё даже проще выходит) Например вычитание в столбик c фиксированной запятой: _78.00 00.46 ---------- 77.54 А вот те же действия с плавающей: 7.8e1-4.6e-1=7.754e1 сначала требуют приведения к числам с фиксированной запятой, а потом обратного преобразования результата
Остальные ответы
Голова Робота Просветленный (36360) 8 лет назад
В вопросе не хватает ссылки на то, где это говорят и применительно к чему.
Полковник ТраутманГуру (3222) 8 лет назад
где то на сайте нвидиа читал. Применительно к компьютерной графике.
Голова Робота Просветленный (36360) ссылку прислать религия не позволяет?
Я Красавчег Мыслитель (7056) 8 лет назад
Ну не зная о чем идет речь тяжело объяснить... Может там подразумевают не тяжесть вычислений, а тяжесть изготовления алу - который вычисляет. А может там подразумевают что в 3д игре используются сложные математические формулы для вычисления 3д модели... И не только игре... https://www.google.by/search?q=формулы+3д&oq=формулы+3д&es_sm=93&ie=UTF-8#q=линейная+алгебра+для+разработчиков
Андрей Высший разум (480454) 8 лет назад
Попробуй вручную - без компьютеров и калькуляторов - от 1.2e10 отнять 3.4e-10 - может быть, тогда дойдёт.
Полковник ТраутманГуру (3222) 8 лет назад
Что сложного? По циферке отнимай, и следи за нехваткой (переполнением). В десятках будут десятки а в сотнях сотни, в любом случае.
Андрей Высший разум (480454) Вот когда ручкой на бумаге попробуешь... А потом сравнишь с аналогичной операцией над целыми числами, где кол-во и положение цифр строго фиксировано. Вот тогда и будешь говорить: "Что сложного".
Полковник ТраутманГуру (3222) 8 лет назад
Цифр то всего 9!А не 10.
Андрей Высший разум (480454) А то, что в моём примере 22 цифры, до тебя и не дошло.
Алексей КузьминовМудрец (11132) 8 лет назад
Не показательный пример.
1.2e10 - 3.4e-10 почти всегда равен 1.2e10.
Андрей Высший разум (480454) Вполне себе показательный: я ведь предложил сосчитать это ручкой на бумаге. И только для того, чтобы автор вопроса осознал, сколько дополнительных действий ему придётся сделать из-за наличия порядка в записи числа. Но если ты прочитаешь комментарии автора вопроса, то поймёшь, что его образования даже на решение столь примитивного примера не хватит.
Jurijus Zaksas Искусственный Интеллект (467226) 8 лет назад
Сложность в данном случае - количество необходимых унарных операций для действий с вещественными числами в сравнении с такими же действиями в отношении целых чисел. Операции с целыми числами происходят практически мгновенно и на аппаратном уровне. Вещественные числа занимают больше ячеек памяти и требуют либо множества целочисленных операций на уровне процессора, либо пересылки в специальный вычислительный ускоритель и получения результата операции из него.
Упомянутая автором вопроса многоядерность тоже никаким боком никого не спасает, потому что все операции производятся последовательно.
Krab Bark Искусственный Интеллект (299941) 8 лет назад
Потому что компьютер не работает с числами. Он работает с цепочками битов, в которые перекодируются числа, и кодировка чисел с плавающей точкой во много раз сложнее кодировки целых чисел, и операции, скажем, по их сложению поэтому тоже во много раз сложнее, так как прямое сложение битов, как это делается с целыми числами, в этом случае невозможно. Практически это сейчас не столь важно, как когда-то, так как для работы с числами с плавающей точкой в современных микропроцессорах стоит специальный вычислительный блок.
P.S. Чтобы стало понятно, в чем сложность операций с числами с плавающей точкой, ознакомься с тем, как они кодируются в памяти компьютера - это международный стандарт IEEE 754 -
http://www.softelectro.ru/ieee754.html
Просмотри хотя бы очень поверхностно этот стандарт и ты сразу поймешь :)
Говоря попросту, числа с плавающей точкой в компьютере - это не записи чисел, в которых в какой-то позиции стоит точка. Чтобы поместить в 4 или 8 байтов огромный диапазон чисел, для их записи применяется специальная очень сложная система счисления, в которой прямые операции сложения, вычитания, умножения и деления невозможны и для этих операций требуются очень сложные преобразования.
Полковник ТраутманГуру (3222) 8 лет назад
В смысле говоря простым языком это из за системы счисления так происходит, столько гемора?
Krab Bark Искусственный Интеллект (299941) Да. Но гемор упрятан в специальный математический сопроцессор.
Полковник ТраутманГуру (3222) 8 лет назад
Я же говорю что надо другую систему, эта слишком г*нная, она только укорачивает число транзисторов в памяти, а расчёты делать не умеет. Главное не количество, а качество в расчётах. Можно сгруппировать данные что их станет минимальное количество.
Krab Bark Искусственный Интеллект (299941) Расчеты делать она умеет. Значит, качество на уровне. И укорочение числа транзистров в памяти - очень важное качество, гораздо важнее сложности выполнения операций, ее можно победить и побеждено усложнением схемы вычислителя. И лучшей системы не придумано, то есть не существует - всё это появилось не с бухты-барахты.
Похожие вопросы