Поиск по сайту:
Не могу быть гениальным все 24 часа, не останется времени на бритье (Дж. Байрон).

Как написать экспоненту в C?

03.05.2021
Как написать экспоненту в C?

В языке 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.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
Поделиться в соц. сетях:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Это может быть вам интересно


Рекомендуемое
Время от времени вам может потребоваться инвентаризация файлов, принадлежащих определенному…

Спасибо!

Теперь редакторы в курсе.