C++ Reference: Standard C++ Library reference: C Library: cmath: pow

发布于:2022-12-06 ⋅ 阅读:(667) ⋅ 点赞:(0)

C++官网参考链接:https://cplusplus.com/reference/cmath/pow/

函数 
<cmath> <ctgmath>
pow
C90
double pow(double base, double exponent);
C99
double pow(double base, double exponent);      
float powf(float base, float exponent);
long double powl(long double base, long double exponent);
C++98
double pow(double base, double exponent);      
float pow (float base, float exponent);
long double pow(long double base, long double exponent);     
double pow(double base, int exponent);
long double pow(long double base, int exponent);
C++11
double pow(double base, double exponent);      
float pow(float base, float exponent);
long double pow(long double base, long double exponent);     
double pow(Type1 base, Type2 exponent);  // additional overloads 

求幂
返回baseexponent的幂: 
base^exponent
C99
头文件<tgmath.h>提供了该函数的泛型类型的宏版本。
C++98
该函数在<complex><valarray>中被重载(参见complex powvalarray pow) 
C++11
这个头文件(<cmath>)为其他算术类型(arithmetic types)(Type1和Type2)的组合提供了额外的重载:这些重载在计算之前有效地将其实参转换为double类型,除非至少有一个实参是long double类型(在这种情况下,两个实参都被转换为long double类型)。
此函数在<complex><valarray>中也被重载(参见complex powvalarray pow)。

形参
base
基数值
exponent
指数值
baseexponent幂的结果。
如果base是有限负数,exponent是有限而不是整数值,则会导致定义域错误。
如果baseexponent都为0,也可能在某些实现上导致定义域错误。
如果base为0而exponent为负,则可能导致定义域错误或极点错误(或者无错误,这取决于库实现)。
如果结果绝对太大或太小,无法用返回类型的值表示,则该函数还可能导致范围错误。 
C90(C++98)
如果发生定义域错误,将全局变量errno设置为EDOM
如果发生极点或范围错误,则全局变量errno设置为ERANGE。 
C99(C++11)
如果发生定义域错误: 
math_errhandling具有MATH_ERRNO集合:全局变量errno设置为EDOM
math_errhandling具有MATH_ERREXCEPT集合:将引发FE_INVALID
如果发生极点错误: 
math_errhandling具有MATH_ERRNO集合:全局变量errno设置为ERANGE
math_errhandling具有MATH_ERREXCEPT集合:引发FE_DIVBYZERO
如果出现范围错误: 
math_errhandling具有MATH_ERRNO集合:全局变量errno设置为ERANGE
math_errhandling具有MATH_ERREXCEPT集合:引发FE_OVERFLOWFE_UNDERFLOW。 

用例
/* pow example */
#include <stdio.h>      /* printf */
#include <math.h>       /* pow */

int main ()
{
  printf ("7 ^ 3 = %f\n", pow (7.0, 3.0) );
  printf ("4.73 ^ 12 = %f\n", pow (4.73, 12.0) );
  printf ("32.01 ^ 1.54 = %f\n", pow (32.01, 1.54) );
  return 0;

输出:

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到