В языке C значение экспоненты можно вычислить с помощью функции pow(). В этой статье мы узнаем, как использовать функцию pow() для выполнения операции возведения в степень. Мы также узнаем, как использовать оператор битового сдвига для выполнения операции возведения в степень. Мы попробуем написать пользовательскую функцию для вычисления показателей. Итак, приступим.
double pow(double base, double exp);
Функция pow() определена в заголовочном файле math.h.
Эта функция принимает два аргумента, base и exp, для вычисления значения base, возведенного в степень exp . Здесь base и exp двойные.
В случае успеха функция pow() возвращает значение base, возведенное в степень exp.
Если значение exp равно 0, функция pow() возвращает 1.
Если base отрицательно, а exp не целое, функция pow() возвращает NaN (Not-A-Number).
Примеры
//Example1.c #include #include int main() { int result; result = (int)pow(3,5); printf("\npow(3,5) => %d",result); printf("\npow(3,-5) => %lf",pow(3,-5)); printf("\npow(-3,-5) => %lf",pow(-3,-5)); printf("\npow(3,5.1) => %lf",pow(3,5.1)); printf("\npow(-3,5.1) => %lf",pow(-3,5.1)); printf("\npow(-3,-5.1) => %lf\n",pow(-3,-5.1)); return 0; }
В Example1.c мы видели вывод функции pow(). При этом мы используем параметр -lm командной строки для ссылки в библиотеке математики. В строках с 10 по 13 мы получили ожидаемый результат. Для строк 14 и 15 у нас есть -nan (не число), потому что второй аргумент не является целым.
Если мы хотим вычислить показатель степени в степени 2, мы можем сделать это, используя битовый сдвиг.
Левый сдвиг на m эквивалентен первому члену и 2 – степени m.
n << m = n * pow (2, м)
Сдвиг вправо на m эквивалентен делению первого члена и 2 в степени m.
n>>m = n/pow(2,m)
Это работает только тогда, когда m положительно.
//Example2.c #include int main() { printf("\n 1< %d",1<<3); printf("\n 5< %d",5<<3); printf("\n -5< %d",-5<>3 => %d",40>>3); printf("\n 40>>3 => %d",40>>3); printf("\n -40>>3 => %d\n",-40>>3); return 0; }
В примере 2.c мы увидели, как можно использовать оператор сдвига битов для экспоненты в степени 2. Это очень полезно для уменьшения сложности кода.
Мы можем написать пользовательскую функцию для вычисления показателей. В Example3.c мы напишем определяемую пользователем функцию exponent(), которая принимает два аргумента: based и exp типа float ant integer.
//Example3.c #include float exponent(float base, int exp) { float result =1.0; float i; if(exp < 0) { exp = -1 * exp; for(i=1;i<=exp;i++) result = result * base; result = 1.0/result; } else { for(i=1;i %f",exponent(3,0)); printf("\nexponent(3,-5) => %f",exponent(3,-5)); printf("\nexponent(-3,-5) => %f",exponent(-3,-5)); return 0; }
Example3.c мы видели вывод пользовательской функции exponent(). Эта функция работает, когда показатель степени является целым. Для реального показателя степени мы должны использовать функцию pow().
В этой статье мы видели, как с помощью функции pow() и оператора сдвига битов можно вычислить экспоненту на языке C. Мы также научились писать нашу собственную функцию для вычисления показателей. Теперь мы без всяких сомнений можем использовать эти методы в нашей программе на языке C.