Функции библиотеки C -pow()

Стандартная библиотека C - <math.h>

Описание

Функции библиотеки Cdouble pow(double x, double y)возвращаетxзначениеyстепени, т. е. xy。

pow()является стандартной библиотекой C<math.h>Функция, используемая для вычисления степени числа. В частности, она возвращает первый аргумент, возведённый в степень второго аргумента, т. е.x^y。

Объявление

Ниже приведено объявление функции pow().

#include <math.h>

double pow(double x, double y);
float powf(float x, float y);
long double powl(long double x, long double y);

Параметр

  • xОснование, число с плавающей запятой.
  • yПоказатель степени, число с плавающей запятой.

Возвращаемое значение

  • returnxизyстепень, т. е.x^y。
  • Если вычисление приводит к математической ошибке, например, нецелой степени отрицательного числа, будет возвращено NaN, иerrno。

Обработка ошибок

  • ifxявляется отрицательным иyне является целым числом, результат — NaN,errnoУстановить вEDOM。
  • если результат слишком велик и вызывает переполнение, возвращаетHUGE_VAL,errnoУстановить вERANGE。
  • если результат слишком мал и вызывает исчезновение порядка, возвращает0.0,errnoУстановить вERANGE。

Пример

Следующий пример демонстрирует использование функции pow().

Пример

#include <stdio.h>
#include <math.h>

int main ()
{
   printf("Значение 8.0 ^ 3 = %lf\n", pow(8.0, 3));

   printf("значение 3.05 ^ 1.98 = %lf", pow(3.05, 1.98));
   
   return(0);
}

Давайте скомпилируем и запустим приведённую выше программу, которая выдаст следующий результат:

值 8.0 ^ 3 = 512.000000
值 3.05 ^ 1.98 = 9.097324

обрабатывать несколько вычислений возведения в степень

Следующий пример показывает, как обрабатывать вычисления возведения в степень с несколькими основаниями и показателями:

Пример

#include <stdio.h>
#include <math.h>
#include <errno.h>

int main() {
    double основания[] = {2.0, -2.0, 0.0, 2.0};
    double показатели[] = {3.0, 3.0, 0.0, -2.0};
    int num_values = sizeof(bases) / sizeof(bases[0]);

    for (int i = 0; i < num_values; i++) {
        double x = основания[i];
        double y = показатели[i];
        errno = 0;  // Сбросить errno
        double result = pow(x, y);

        if (errno == EDOM) {
            printf("Ошибка области определения: pow(%f, %f) не определена\n", x, y);
        } if if (errno == ERANGE) {
            if (result == HUGE_VAL || result == -HUGE_VAL) {
                printf("Ошибка диапазона: pow(%f, %f) приводит к переполнению\n", x, y);
            } else {
                printf("Ошибка диапазона: pow(%f, %f) приводит к антипереполнению\n", x, y);
            }
        } else {
            printf("pow(%f, %f) = %f\n", x, y, result);
        }
    }

    return 0;
}

Давайте скомпилируем и запустим приведённую выше программу, которая выдаст следующий результат:

pow(2.000000, 3.000000) = 8.000000
pow(-2.000000, 3.000000) = -8.000000
pow(0.000000, 0.000000) = 1.000000
pow(2.000000, -2.000000) = 0.250000

Пояснение кода

  • определите два массиваbasesиexponents, которые соответственно содержат несколько оснований и показателей степени.
  • ИспользованиеforПройдите в цикле по каждой паре основания и показателя степени, вызовитеpow(x, y)выполните вычисления степеней.
  • сбросerrnoв 0 и проверить возможные ошибки.
  • Выведите результат или сообщение об ошибке для каждого вычисления.

Сценарий использования

pow()Функция имеет широкий спектр применений во многих приложениях, включая, помимо прочего:

  • Выполняйте операции возведения в степень в научных формулах.
  • Решайте математические задачи, связанные со степенными уравнениями.
  • Рассчитывайте сложный процент в финансах.
  • Выполняйте различные физические расчеты в инженерии.

Итог

pow()Функция используется для вычисления степени чисел с плавающей запятой и является важным инструментом для выполнения операций возведения в степень. Благодаря разумному использованиюpow(), операции возведения в степень могут быть реализованы в научных вычислениях, инженерных приложениях и финансовом анализе, при этом обеспечивается надлежащая обработка возможных ошибочных ситуаций.

Стандартная библиотека C - <math.h>

Другие расширения