Ответ 1
Большинство современных не встроенных процессоров (например, x86 и ядра ARM) имеют аппаратные инструкции для непосредственного вычисления квадратных корней. Реализация аппаратных средств, поддерживающая эти инструкции, различна, но, как правило, это вариант в алгоритме с цифрой по цифре в школьной книге (хотя не всегда в базовом дворе, также могут использоваться базовые четыре или шестнадцать). Они обычно относятся к самым медленным элементарным арифметическим операциям на процессоре; тайминги, такие как 16-64 цикла, не являются редкостью, и эти инструкции часто не конвейерны.
В процессорах, которые не имеют прямых аппаратных команд с квадратным корнем (Itanium, PPC, others), типичный подход заключается в создании начальной оценки (либо с инструкцией, которая производит оценку, либо с помощью таблицы поиска), а затем уточняет эту оценку используя итерационный метод (обычно Ньютон или Голдшмидт). Вы могли бы отследить некоторые статьи Питера Маркштейна или Роджера Голливера по этому вопросу, если вы заинтересованы.
Более сложные математические функции (например, тригг-операции) обычно вычисляются путем уменьшения аргумента в некоторый фундаментальный домен и затем аппроксимации его полиномиальной или рациональной функцией. Вы можете посмотреть источники любой из нескольких математических библиотек, которые доступны онлайн для более подробной информации (fdlibm - хорошая отправная точка).
Набор инструкций x86 предоставляет ряд инструкций, которые поддерживают математические функции, такие как exp, log и sin, но они чаще не используются, потому что хорошие реализации библиотеки программного обеспечения обеспечивают лучшую производительность.