主页C++ Builder 资料C++ Builder 参考手册cmath 数学函数poly, polyl
C++ Builder 串口控件
C++ Builder 编程技巧
C++ Builder 操作指南
C++ Builder 参考手册
基础知识
cfloat 浮点数
cmath 数学函数
 • acos, acosf, acosl
 • acosh, acoshf, acoshl
 • asin, asinf, asinl
 • asinh, asinhf, asinhl
 • atan, atanf, atanl
 • atan2, atan2f, atan2l
 • atanh, atanhf, atanhl
 • ceil, ceilf, ceill
 • copysign, copysignf, copysignl
 • cos, cosf, cosl
 • cosh, coshf, coshl
 • exp, expf, expl
 • exp2, exp2f, exp2l
 • expm1, expm1f, expm1l
 • fabs, fabsf, fabsl
 • floor, floorf, floorl
 • fmod, fmodf, fmodl
 • frexp, frexpf, frexpl
 • hypot, hypotf, hypotl
 • ldexp, ldexpf, ldexpl
 • log, logf, logl
 • log10, log10f, log10l
 • log1p, log1pf, log1pl
 • log2, log2f, log2l
 • modf, modff, modfl
 • nan, nanf, nanl
 • poly, polyl
 • pow, powf, powl
 • pow10, pow10l
 • round, roundf, roundl
 • sin, sinf, sinl
 • sinh, sinhf, sinhl
 • sqrt, sqrtf, sqrtl
 • tan, tanf, tanl
 • tanh, tanhf, tanhl
 • trunc, truncf, truncl
 • _exception, _exceptionl
 • _matherr, _matherrl
 • HUGE_VAL, HUGE_VALF, HUGE_VALL, _LHUGE_VAL
 • EDOM, ERANGE
 • _mexcep, DOMAIN, SING, OVERFLOW, UNDERFLOW, TLOSS, PLOSS, STACKFAULT
 • M_E, M_LOG2E, M_LOG10E, M_LN2, M_LN10
 • M_PI, M_PI_2, M_PI_4, M_1_PI, M_2_PI, M_1_SQRTPI, M_2_SQRTPI
 • M_SQRT2, M_SQRT_2
 • DOMAIN error 定义域错误
cstdlib 标准库函数
System 字符串
System 日期和时间
System.Math.hpp 数学函数
其他数据类型
VCL 基础类
VCL 应用程序
Pictures 图片
Graphics 绘图
Additional 控件
System 控件
A ~ Z 字母顺序排列的目录
网友留言/技术支持
poly, polyl - 求 n 次函数横坐标 x 位置的纵坐标值:y = cnxn + cn-1xn-1 + ... + c2x2 + c1x + c0

函数原型:

函数原型 Turbo C/C++
Borland C++
C90 C99 C++98 C++11
double poly(double x, int n, double c[]);        
long double polyl(long double x, int n, long double c[]);        

头文件:

#include <cmath>

命名空间:

std

参数:

x:浮点数,横坐标值
n:整数,n 次函数
c:函数的参数,包含 n + 1 个浮点数的参数数组,这个 n 次函数的参数为 c[n] ~ c[0]

返回值:

这个 n 次函数的横坐标 x 位置的纵坐标值 y = c[n]*xn + c[n-1]*xn-1 + ... + c[2]*x2 + c[1]*x + c[0]
NAN:定义域错误,此时全局变量 errno 的值为 EDOM
计算可能会溢出,此时全局变量 errno 的值为 ERANGE

例子:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  const int n = 5;
  double c[n+1] = { 2.5, -3.6, 8.9, -5.1, 4.8, -6.2 };
  double x = 12.3;
  double y = std::poly(x, n ,c);
  Memo1->Lines->Add(L"y = " + FloatToStr(y));

  double w = c[5] * std::pow(x, 5)
           + c[4] * std::pow(x, 4)
           + c[3] * std::pow(x, 3)
           + c[2] * std::pow(x, 2)
           + c[1] * x
           + c[0];
  Memo1->Lines->Add(L"w = " + FloatToStr(w));
}

兼容性:

poly 和 polyl 是从 Turbo C / Turbo C++ / Borland C++ 兼容过来的函数,不是标准 C/C++ 函数。
从测试结果,即下面的表格来看,Embarcadero 已经抛弃这个函数了。
如果以前的程序使用了这个函数,并且需要编译为 64 位应用程序,需要按照规则自己写一个函数了。

函数 \ C++ Builder 编译器 bcc32 clang32 clang64
poly  
polyl  

相关链接:

pow10_matherr浮点数异常处理

◤上一页:nan, nanf, nanl下一页:pow, powf, powl

C++ 爱好者 -- Victor Chen 的个人网站 www.cppfans.com 辽ICP备11016859号