Как преобразовать математические выражения в оператор C? - PullRequest
0 голосов
/ 07 сентября 2011

Как преобразовать каждое из следующих математических выражений в эквивалентное утверждение в C?

  1. 1 / (x ^ 2 + y ^ 2)

  2. квадратный корень из (b ^ 2 - 4ac)

1 Ответ

6 голосов
/ 07 сентября 2011
  • 1.0 / (pow(x,2) + pow(y,2))
  • sqrt(pow(b,2) - 4*a*c)

См. pow() и sqrt() руководство по функциям.

Вы также можете написать x*x вместо pow(x, 2).Оба будут иметь одинаковый результат и производительность (компилятор знает, что делает функция pow и как ее оптимизировать).


(для комментаторов)

GCC выводит точноеодин и тот же код ассемблера для обеих этих функций:

double pow2_a(double x) {
    return pow(x, 2);
}

double pow2_b(double x) {
    return x * X;
}

Ассемблер:

    fldl    4(%esp)
    fmul    %st(0), %st
    ret
...