Arduino - ห้องสมุดคณิตศาสตร์
ห้องสมุด Arduino Math (math.h) ประกอบด้วยฟังก์ชันทางคณิตศาสตร์ที่มีประโยชน์มากมายสำหรับการจัดการตัวเลขทศนิยม
แมโครไลบรารี
ต่อไปนี้เป็นมาโครที่กำหนดไว้ในส่วนหัวทางคณิตศาสตร์ h -
มาโคร | มูลค่า | คำอธิบาย |
---|---|---|
ฉัน | 2.7182818284590452354 | ค่าคงที่ e. |
M_LOG2E | 1.4426950408889634074 / * log_2 จ * / |
ลอการิทึมของ e ถึงฐาน 2 |
M_1_PI | 0.31830988618379067154 / * 1 / ปี่ * / |
ค่าคงที่ 1 / pi |
M_2_PI | 0.63661977236758134308 / * 2 / ปี่ * / |
ค่าคงที่ 2 / pi |
M_2_SQRTPI | 1.12837916709551257390 / * 2 / sqrt (ปี่) * / |
ค่าคงที่ 2 / sqrt (pi) |
M_LN10 | 2.30258509299404568402 / * log_e 10 * / |
ลอการิทึมธรรมชาติของ 10 |
M_LN2 | 0.69314718055994530942 / * log_e 2 * / |
ลอการิทึมธรรมชาติของ 2 |
M_LOG10E | 0.43429448190325182765 / * log_10 จ * / |
ลอการิทึมของ e ถึงฐาน 10 |
M_PI | 3.14159265358979323846 / * ปี่ * / |
ปี่คง |
M_PI_2 | 3.3V1.57079632679489661923 / * ปี่ / 2 * / |
ค่าคงที่ pi / 2 |
M_PI_4 | 0.78539816339744830962 / * ปี่ / 4 * / |
ค่าคงที่ pi / 4 |
M_SQRT1_2 | 0.70710678118654752440 / * 1 / sqrt (2) * / |
ค่าคงที่ 1 / sqrt (2) |
M_SQRT2 | 1.41421356237309504880 / * sqrt (2) * / |
รากที่สองของ 2 |
acosf | - | นามแฝงสำหรับฟังก์ชัน acos () |
asinf | - | นามแฝงสำหรับฟังก์ชัน asin () |
atan2f | - | นามแฝงสำหรับฟังก์ชัน atan2 () |
cbrtf | - | นามแฝงสำหรับฟังก์ชัน cbrt () |
ceilf | - | นามแฝงสำหรับฟังก์ชัน ceil () |
copysignf | - | นามแฝงสำหรับฟังก์ชัน copysign () |
coshf | - | นามแฝงสำหรับฟังก์ชัน cosh () |
expf | - | นามแฝงสำหรับฟังก์ชัน exp () |
fabsf | - | นามแฝงสำหรับฟังก์ชัน fabs () |
fdimf | - | นามแฝงสำหรับฟังก์ชัน fdim () |
ชั้น f | - | นามแฝงสำหรับฟังก์ชัน floor () |
fmaxf | - | นามแฝงสำหรับฟังก์ชัน fmax () |
fminf | - | นามแฝงสำหรับฟังก์ชัน fmin () |
fmodf | - | นามแฝงสำหรับฟังก์ชัน fmod () |
frexpf | - | นามแฝงสำหรับฟังก์ชัน frexp () |
hypotf | - | นามแฝงสำหรับฟังก์ชัน hypot () |
INFINITY | - | ค่าคงที่ INFINITY |
isfinitef | - | นามแฝงสำหรับฟังก์ชัน isfinite () |
isinff | - | นามแฝงสำหรับฟังก์ชัน isinf () |
isnanf | - | นามแฝงสำหรับฟังก์ชัน isnan () |
ldexpf | - | นามแฝงสำหรับฟังก์ชัน ldexp () |
log10f | - | นามแฝงสำหรับฟังก์ชัน log10 () |
logf | - | นามแฝงสำหรับฟังก์ชัน log () |
lrintf | - | นามแฝงสำหรับฟังก์ชัน lrint () |
lroundf | - | นามแฝงสำหรับฟังก์ชัน lround () |
ฟังก์ชั่นห้องสมุด
ฟังก์ชันต่อไปนี้กำหนดไว้ในส่วนหัว math.h -
ส. | ฟังก์ชันและคำอธิบายของไลบรารี |
---|---|
1 | double acos (double __x) ฟังก์ชัน acos () คำนวณค่าหลักของอาร์คโคไซน์ของ __x ค่าที่ส่งคืนอยู่ในช่วงเรเดียน [0, pi] เกิดข้อผิดพลาดของโดเมนสำหรับอาร์กิวเมนต์ที่ไม่อยู่ในช่วง [-1, +1] |
2 | double asin (double __x) ฟังก์ชัน asin () คำนวณค่าหลักของอาร์กไซน์ของ __x ค่าที่ส่งคืนอยู่ในช่วง [-pi / 2, pi / 2] เรเดียน เกิดข้อผิดพลาดของโดเมนสำหรับอาร์กิวเมนต์ที่ไม่อยู่ในช่วง [-1, +1] |
3 | double atan (double __x) ฟังก์ชัน atan () คำนวณค่าหลักของส่วนโค้งแทนเจนต์ของ __x ค่าที่ส่งคืนอยู่ในช่วง [-pi / 2, pi / 2] เรเดียน |
4 | double atan2 (double __y, double __x) ฟังก์ชัน atan2 () คำนวณค่าหลักของอาร์กแทนเจนต์ของ __y / __x โดยใช้สัญลักษณ์ของอาร์กิวเมนต์ทั้งสองเพื่อกำหนดกำลังสองของค่าที่ส่งคืน ค่าที่ส่งคืนอยู่ในช่วงเรเดียน [-pi, + pi] |
5 | double cbrt (double __x) ฟังก์ชัน cbrt () ส่งคืนคิวบ์รูทของ __x |
6 | double ceil (double __x) ฟังก์ชัน ceil () จะส่งกลับค่าอินทิกรัลที่เล็กที่สุดที่มากกว่าหรือเท่ากับ __x ซึ่งแสดงเป็นตัวเลขทศนิยม |
7 | static double copysign (double __x, double __y) ฟังก์ชัน copysign () ส่งคืน __x แต่มีเครื่องหมาย __y ทำงานได้แม้ว่า __x หรือ __y จะเป็น NaN หรือศูนย์ก็ตาม |
8 | double cos(double __x) ฟังก์ชัน cos () จะคืนค่าโคไซน์ของ __x ซึ่งวัดเป็นเรเดียน |
9 | double cosh (double __x) ฟังก์ชัน cosh () ส่งกลับค่าไฮเพอร์โบลิกโคไซน์ของ __x |
10 | double exp (double __x) ฟังก์ชัน exp () ส่งกลับค่าเอ็กซ์โพเนนเชียลของ __x |
11 | double fabs (double __x) ฟังก์ชัน fabs () คำนวณค่าสัมบูรณ์ของเลขทศนิยม __x |
12 | double fdim (double __x, double __y) ฟังก์ชัน fdim () ส่งกลับค่าสูงสุด (__ x - __y, 0) ถ้า __x หรือ __y หรือทั้งสองเป็น NaN จะส่งคืน NaN |
13 | double floor (double __x) ฟังก์ชัน floor () จะส่งกลับค่าอินทิกรัลที่ใหญ่ที่สุดที่น้อยกว่าหรือเท่ากับ __x ซึ่งแสดงเป็นตัวเลขทศนิยม |
14 | double fma (double __x, double __y, double __z) ฟังก์ชัน fma () ดำเนินการคูณจุดลอยตัว นี่คือการดำเนินการ (__x * __y) + __z แต่ผลลัพธ์ระดับกลางจะไม่ปัดเศษเป็นประเภทปลายทาง บางครั้งสิ่งนี้สามารถปรับปรุงความแม่นยำของการคำนวณได้ |
15 | double fmax (double __x, double __y) ฟังก์ชัน fmax () ส่งคืนค่าที่มากกว่าของสองค่า __x และ __y ถ้าอาร์กิวเมนต์เป็น NaN อาร์กิวเมนต์อื่นจะถูกส่งกลับ ถ้าอาร์กิวเมนต์ทั้งสองเป็น NaN ระบบจะส่งคืน NaN |
16 | double fmin (double __x, double __y) ฟังก์ชัน fmin () ส่งคืนค่าที่น้อยกว่าของสองค่า __x และ __y ถ้าอาร์กิวเมนต์เป็น NaN อาร์กิวเมนต์อื่นจะถูกส่งกลับ ถ้าอาร์กิวเมนต์ทั้งสองเป็น NaN ระบบจะส่งคืน NaN |
17 | double fmod (double __x, double__y) ฟังก์ชั่น fmod () ส่งคืนค่าทศนิยมที่เหลือของ __x / __y |
18 | double frexp (double __x, int * __pexp) ฟังก์ชัน frexp () แบ่งตัวเลขทศนิยมออกเป็นเศษส่วนที่เป็นมาตรฐานและกำลังรวมของ 2 โดยจะเก็บจำนวนเต็มในวัตถุ int ที่ชี้ไปโดย __pexp ถ้า __x เป็นเลขทศนิยมปกติฟังก์ชัน frexp () จะส่งกลับค่า v โดยที่ v มีขนาดในช่วงเวลา [1/2, 1) หรือศูนย์และ __x เท่ากับ v คูณ 2 ยกกำลัง __pexp ถ้า __x เป็นศูนย์ผลลัพธ์ทั้งสองส่วนจะเป็นศูนย์ ถ้า __x ไม่ใช่จำนวน จำกัด frexp () จะส่งคืน __x ตามที่เป็นอยู่และเก็บ 0 โดย __pexp Note - การใช้งานนี้อนุญาตให้ตัวชี้ศูนย์เป็นคำสั่งในการข้ามการจัดเก็บเลขชี้กำลัง |
19 | double hypot (double __x, double__y) ฟังก์ชัน hypot () ส่งกลับ sqrt (__ x * __ x + __y * __ y) นี่คือความยาวของด้านตรงข้ามมุมฉากของสามเหลี่ยมมุมฉากที่มีด้านยาว __x และ __y หรือระยะห่างของจุด (__x, __y) จากจุดกำเนิด การใช้ฟังก์ชันนี้แทนสูตรโดยตรงนั้นชาญฉลาดเนื่องจากข้อผิดพลาดมีขนาดเล็กกว่ามาก ไม่มีส่วนเกินขนาดเล็ก __x และ __y ไม่มีการล้นหากผลลัพธ์อยู่ในช่วง |
20 | static int isfinite (double __x) ฟังก์ชัน isfinite () จะส่งคืนค่าที่ไม่ใช่ศูนย์ถ้า __x คือ จำกัด : ไม่ใช่บวกหรือลบอินฟินิตี้และไม่ NaN. |
21 | int isinf (double __x) ฟังก์ชัน isinf () จะคืนค่า 1 ถ้าอาร์กิวเมนต์ __x เป็นอินฟินิตี้บวก -1 ถ้า __x เป็นค่าอินฟินิตี้ลบและเป็น 0 Note - GCC 4.3 สามารถแทนที่ฟังก์ชันนี้ด้วยโค้ดอินไลน์ที่ส่งคืนค่า 1 สำหรับ infinities ทั้งสอง (gcc bug # 35509) |
22 | int isnan (double __x) ฟังก์ชัน isnan () จะส่งกลับ 1 ถ้าอาร์กิวเมนต์ __x แสดงถึง "ไม่ใช่ a-number" (NaN) วัตถุมิฉะนั้น 0 |
23 | double ldexp (double __x, int __exp ) ฟังก์ชัน ldexp () คูณจำนวนทศนิยมด้วยกำลังอินทิกรัลของ 2 จะส่งคืนค่า __x คูณ 2 ยกกำลัง __exp |
24 | double log (double __x) ฟังก์ชัน log () ส่งคืนลอการิทึมธรรมชาติของอาร์กิวเมนต์ __x |
25 | double log10(double __x) ฟังก์ชัน log10 () จะส่งคืนลอการิทึมของอาร์กิวเมนต์ __x เป็นฐาน 10 |
26 | long lrint (double __x) ฟังก์ชัน lrint () จะปัดเศษ __x เป็นจำนวนเต็มที่ใกล้ที่สุดโดยปัดเศษกรณีครึ่งทางไปยังทิศทางจำนวนเต็มคู่ (นั่นคือทั้งค่า 1.5 และ 2.5 จะถูกปัดเศษเป็น 2) ฟังก์ชันนี้คล้ายกับฟังก์ชัน rint () แต่จะแตกต่างกันในประเภทของค่าที่ส่งคืนและสามารถเกิดโอเวอร์โฟลว์ได้ Returns ค่าจำนวนเต็มยาวที่ปัดเศษ ถ้า __x ไม่ใช่จำนวน จำกัด หรือโอเวอร์โฟลว์การรับรู้นี้จะส่งคืนค่า LONG_MIN (0x80000000) |
27 | long lround (double __x) ฟังก์ชัน lround () จะปัดเศษ __x เป็นจำนวนเต็มที่ใกล้ที่สุด แต่จะปัดเศษกรณีครึ่งหนึ่งออกจากศูนย์ (แทนที่จะเป็นจำนวนเต็มคู่ที่ใกล้ที่สุด) ฟังก์ชันนี้คล้ายกับฟังก์ชัน round () แต่จะแตกต่างกันในประเภทของค่าที่ส่งคืนและสามารถเกิด overflow ได้ Returns ค่าจำนวนเต็มยาวที่ปัดเศษ ถ้า __x ไม่ใช่จำนวน จำกัด หรือโอเวอร์โฟลว์การรับรู้นี้จะส่งคืนค่า LONG_MIN (0x80000000) |
28 | double modf (double __x, double * __iptr ) ฟังก์ชัน modf () แบ่งอาร์กิวเมนต์ __x ออกเป็นส่วนอินทิกรัลและเศษส่วนซึ่งแต่ละส่วนมีเครื่องหมายเดียวกับอาร์กิวเมนต์ มันเก็บส่วนหนึ่งเป็นสองเท่าในวัตถุที่ชี้โดย __iptr ฟังก์ชัน modf () ส่งคืนส่วนที่เป็นเศษส่วนของ __x Note- การใช้งานนี้ข้ามการเขียนโดยตัวชี้ศูนย์ อย่างไรก็ตาม GCC 4.3 สามารถแทนที่ฟังก์ชันนี้ด้วยรหัสแบบอินไลน์ที่ไม่อนุญาตให้ใช้ที่อยู่ NULL เพื่อหลีกเลี่ยงการจัดเก็บ |
29 | float modff (float __x, float * __iptr) นามแฝงสำหรับ modf () |
30 | double pow (double __x, double __y) ฟังก์ชัน pow () ส่งคืนค่า __x เป็นเลขชี้กำลัง __y |
31 | double round (double __x) ฟังก์ชัน round () จะปัดเศษ __x เป็นจำนวนเต็มที่ใกล้ที่สุด แต่จะปัดเศษกรณีครึ่งหนึ่งออกจากศูนย์ (แทนที่จะเป็นจำนวนเต็มคู่ที่ใกล้ที่สุด) ล้นเป็นไปไม่ได้ Returns ค่าที่ปัดเศษ ถ้า __x เป็นอินทิกรัลหรือไม่มีที่สิ้นสุด __x จะถูกส่งกลับ ถ้า __x คือNaNแล้ว NaN จะถูกส่งกลับ |
32 | int signbit (double __x) ฟังก์ชัน signbit () จะส่งคืนค่าที่ไม่ใช่ศูนย์หากค่า __x มีชุดบิตเครื่องหมาย สิ่งนี้ไม่เหมือนกับ `__x <0.0 'เนื่องจาก IEEE 754 floating point อนุญาตให้เซ็นชื่อเป็นศูนย์ การเปรียบเทียบ `-0.0 <0.0 'เป็นเท็จ แต่` `signbit (-0.0)' จะส่งกลับค่าที่ไม่ใช่ศูนย์ |
33 | double sin (double __x) ฟังก์ชัน sin () ส่งกลับค่าไซน์ของ __x ซึ่งวัดเป็นเรเดียน |
34 | double sinh (double __x) ฟังก์ชัน sinh () จะคืนค่าไฮเพอร์โบลิกไซน์ของ __x |
35 | double sqrt (double __x) ฟังก์ชัน sqrt () ส่งคืนค่ารากที่สองที่ไม่เป็นลบของ __x |
36 | double square (double __x) ฟังก์ชัน square () ส่งกลับ __x * __x Note - ฟังก์ชันนี้ไม่อยู่ในข้อกำหนดมาตรฐาน C |
37 | double tan (double __x) ฟังก์ชัน tan () ส่งคืนแทนเจนต์ของ __x ซึ่งวัดเป็นเรเดียน |
38 | double tanh ( double __x) ฟังก์ชัน tanh () จะคืนค่าไฮเพอร์โบลิกแทนเจนต์ของ __x |
39 | double 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) ) ; // natural logarithm of x
Serial.print("cos num : ");
Serial.println ( log10 (double__x)); // logarithm of x to base 10.
Serial.print("logarithm of num to base 10 : ");
Serial.println (pow (double__x, double__y) );// x to power of y
Serial.print("power of num : ");
Serial.println (square (double__x)); // square of x
}
void loop() {
}
ผลลัพธ์
cos num = 0.10
absolute value of num = 45.45
floating point modulo =15.25
sine of num = 0.99
square root of num : 6.74
tangent of num : 9.67
exponential value of num : ovf
cos num : 1.55
tangent of num : 0.59
arc tangent of num : 3.82
cos num : 1.66
logarithm of num to base 10 : inf
power of num : 2065.70