Ксения (13.03.2019 14:03 - 14:09, просмотров: 222) в ответ на Невосполнимая утрата. Хотя... - автор: йцукен
Ваш код не совсем верный, т.к. младший coeffs[0] - свободный член, и на x он не множится. Но дело не в этом, а том, что на ассемблере такие вещи реализуются эффективней и работают они быстрее. Функция poly() полезна не сама по себе, а как инструмент для аппроксимации множества специальных функций, аналитического выражения не имеющих (например, erfcx()). Часто от качества ее реализации зависит скорость квантово-механических расчетов, где специальные функции вызываются очень часто (для каждой точки пространственной сетки).
Если вы такой хитрый, то ответьте, зачем в стандарт языка C введена функция:
The fma functions return (x×y)+z, rounded as one ternary operation.
разве написать вместо нее (x*y)+z трудно?
Есть в стандарте и другие примеры:
double fmax(double x,double y);
float fmaxf(float x,float y);
long double fmaxl(long double x,long double y);
double fmin(double x,double y);
float fminf(float x,float y);
long double fminl(long double x,long double y);
double fma(double x,double y,double z);
float fmaf(float x,float y,float z);
long double fmal(long double x,long double y,long double z);
и т.п.
Тоже думаете, что там одни дураки сидят, которые не умеют fmin(a,b) заменить на (a<b)?a:b;