第十八课 Arduino 教程-- Arduino 数学库.doc_第1页
第十八课 Arduino 教程-- Arduino 数学库.doc_第2页
第十八课 Arduino 教程-- Arduino 数学库.doc_第3页
第十八课 Arduino 教程-- Arduino 数学库.doc_第4页
第十八课 Arduino 教程-- Arduino 数学库.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第十八课 Arduino 数学库Arduino数学库(math.h)包含了许多用于操作浮点数的有用的数学函数。库中的宏以下是在标题math.h中定义的宏:宏值描述M_E2.7182818284590452354常数e。M_LOG2E1.4426950408889634074/* log_2 e */e以2为底的对数。M_1_PI0.31830988618379067154/* 1/pi */常数1/pi。M_2_PI0.63661977236758134308/* 2/pi */常数2/pi。M_2_SQRTPI1.12837916709551257390/* 2/sqrt(pi) */常数2/sqrt(pi)。M_LN102.30258509299404568402/* log_e 10 */10的自然对数。M_LN20.69314718055994530942/* log_e 2 */2的自然对数。M_LOG10E0.43429448190325182765/* log_10 e */e以10为底的对数。M_PI3.14159265358979323846/* pi */常数pi。M_PI_23.3V1.57079632679489661923/* pi/2 */常数pi/2。M_PI_40.78539816339744830962/* pi/4 */常数pi/4。M_SQRT1_20.70710678118654752440/* 1/sqrt(2) */常数1/sqrt(2)。M_SQRT21.41421356237309504880/* sqrt(2) */2的平方根。acosf-acos()函数的别名。asinf-asin()函数的别名。atan2f-atan2()函数的别名。cbrtf-cbrt()函数的别名。ceilf-ceil()函数的别名。copysignf-copysign()函数的别名。coshf-cosh()函数的别名。expf-exp()函数的别名。fabsf-fabs()函数的别名。fdimf-fdim()函数的别名。floorf-floor()函数的别名。fmaxf-fmax()函数的别名。fminf-fmin()函数的别名。fmodf-fmod()函数的别名。frexpf-frexp()函数的别名。hypotf-hypot()函数的别名。INFINITY-无穷大常量。isfinitef-isfinite()函数的别名。isinff-isinf()函数的别名。isnanf-isnan()函数的别名。ldexpf-ldexp()函数的别名。log10f-log10()函数的别名。logf-log()函数的别名。lrintf-lrint()函数的别名。lroundf-lround()函数的别名。库函数以下函数在标题math.h中定义:序号库函数和描述1double acos (double _x)acos()函数计算x的反余弦的主值。返回值在0, pi弧度的范围内。不在-1, +1范围内的参数会发生域错误。2double asin (double _x)asin()函数计算x的反正弦的主值。返回值在-pi/2, pi/2弧度的范围内。不在-1, +1范围内的参数会发生域错误。3double atan (double _x)atan()函数计算x的反正切的主值。返回值在-pi/2, pi/2弧度的范围内。4double atan2 (double _y, double _x)atan2()函数计算y/x的反正切的主值,使用两个参数的符号来确定返回值的象限。返回值在-pi, +pi弧度的范围内。5double cbrt (double _x)cbrt()函数返回x的立方根值。6double ceil (double _x)ceil()函数返回大于或等于x的最小整数值,以浮点数表示。7static double copysign (double _x, double _y)copysign()函数返回x,但带有y的符号。即使x或y是NaN或零,他们也可以工作。8double cos(double _x)cos()函数返回x的余弦,以弧度为单位。9double cosh (double _x)cosh()函数返回x的双曲余弦。10double exp (double _x)exp()返回e的x次幂的值。11double fabs (double _x)fabs()函数计算浮点数x的绝对值。12double fdim (double _x, double _y)fdim()函数返回max(x - y, 0)。如果x或y或者两者都是NaN,则返回NaN。13double floor (double _x)floor()函数返回小于或等于x的最大整数值,以浮点数表示。14double fma (double _x, double _y, double _z)fma()函数执行浮点乘加,即运算(x * y) + z,但是中间结果不会四舍五入到目标类型。这有时可以提高计算的精度。15double fmax (double _x, double _y)fmax()函数返回两个值x和y中较大的一个。如果一个参数是NaN,则返回另一个参数。如果两个参数都是NaN,则返回NaN。16double fmin (double _x, double _y)fmin()函数返回两个值x和y中较小的一个。如果一个参数是NaN,则返回另一个参数。如果两个参数都是NaN,则返回NaN。17double fmod (double _x, double_y)fmod()函数返回x / y的余数。18double frexp (double _x, int * _pexp)frexp()函数将浮点数分解为规格化分数和2的整次幂。它将整数存储在pexp指向的int对象中。如果x是一个正常的浮点数,则frexp()函数返回值v,使得v具有区间1/2, 1)或零的量值,而x等于v乘以2的pexp次幂。如果x是零,那么结果的两个部分都是零。如果x不是有限数字,frexp()将按原样返回x,并通过pexp存储0。注意 这个实现允许一个零指针作为指令来跳过存储指数。19double hypot (double _x, double_y)hypot()函数返回sqrt(x*x + y*y)。这是一个边长为x和y的直角三角形的斜边的长度,或点(x, y)距离原点的距离。使用这个函数而不是直接使用公式是比较明智的,因为误差要小得多。x和y没有下溢。如果结果在范围内,则不会溢出。20static int isfinite (double _x)如果x是有限的,isfinite()函数返回一个非零值:不是正或负无穷,也不是NaN。21int isinf (double _x)如果参数x是正无穷大,则函数isinf()返回1;如果x是负无穷大,则返回-1,否则返回0。注意 GCC 4.3可以用内联代码替换这个函数,这个代码对两个无穷大返回1值(gcc bug #35509)。22int isnan (double _x)如果参数x表示“非数字”(NaN)对象,则函数isnan()返回1,否则返回0。23double ldexp (double _x, int _exp )ldexp()函数将浮点数乘以2的整数次幂。它返回x乘以2的exp次幂的值。24double log (double _x)log()函数返回参数x的自然对数。25double log10(double _x)log10()函数返回参数x的对数,以10为基数。26long lrint (double _x)lrint()函数将x四舍五入到最近的整数,将中间情况舍入到偶数整数方向(例如,1.5和2.5的值都舍入到2)。这个函数类似于rint()函数,但是它的返回值类型不同,并且有可能溢出。返回四舍五入的长整数值。如果x不是有限数字或者溢出,则此实现返回LONG_MIN值(0x80000000)。27long lround (double _x)lround()将函数将x四舍五入到最近的整数,但中间情况不舍入到0(不是到最近的偶数整数)。这个函数类似于round()函数,但是它的返回值的类型是不同的,并且有可能溢出。返回四舍五入的长整数值。如果x不是有限数字或者溢出,则此实现返回LONG_MIN值(0x80000000)。28double modf (double _x, double * _iptr )modf()函数将参数x分解为整数部分和小数部分,每个部分都与参数具有相同的符号。它在iptr指向的对象中将整数部分存储为double。modf()函数返回x的有符号小数部分。注意 这个实现跳过零指针的写入。但是,GCC 4.3可以用内联代码替换这个函数,不允许使用NULL地址来避免存储。29float modff (float _x, float * _iptr)modf()函数的别名。30double pow (double _x, double _y)pow()函数返回x的y次幂。31double round (double _x)round()函数将x四舍五入到最近的整数,但中间情况不舍入到0(不是到最近的偶数整数)。不可能会溢出。返回四舍五入的值。如果x是整数或无穷大,则返回x本身。如果x是NaN,则返回NaN。32int signbit (double _x)如果x的值设置了符号位,signbit()函数将返回一个非零值。这与“x 0.0”不同,因为IEEE 754浮点允许零署名。比较“-0.0 0.0”是错的,但“signbit (-0.0)”会返回一个非零值。33double sin (double _x)sin()函数返回x的正弦值,以弧度为单位。34double sinh (double _x)sinh()函数返回x的双曲正弦。35double sqrt (double _x)sqrt()函数返回x的非负平方根。36double square (double _x)square()函数返回x * x。注意此函数不属于C标准定义。37double tan (double _x)tan()函数返回x的正切值,以弧度为单位。38double tanh ( double _x)tanh()函数返回x的双曲正切。39double trunc (double _x)trunc()函数将x四舍五入为最近的整数,不大于绝对值。例子以下示例显示如何使用最常用的math.h库函数:double double_x = 45.45 ;double double_y = 30.20 ;void setup() Serial.begin(9600); Serial.print(cos num = ); Serial.println (cos (double_x) ); / returns cosine of x Serial.print(absolute value of num = ); Serial.println (fabs (double_x) ); / absolute value of a float Serial.print(floating point modulo = ); Serial.println (fmod (double_x, double_y); / floating point modulo Serial.print(sine of num = ); Serial.println (sin (double_x) ) ;/ returns sine of x Serial.print(square root of num : ); Serial.println ( sqrt (double_x) );/ returns square root of x Serial.print(tangent of num : ); Serial.println ( tan (double_x) ); / returns tangent of x Serial.print(exponential value of num : ); Serial.println ( exp (double_x) ); / function returns the exponential value of x. Serial.print(cos num : ); Serial.println (atan (double_x) ); / arc tangent of x Serial.print(tangent of num : ); Serial.println (atan2 (double_y, double_x) );/ arc tangent of y/x Serial.print(arc tangent of num : ); Serial.println (log (double_x) ) ; / n

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论