Arduino - Perpustakaan Matematika
Pustaka Arduino Math (math.h) menyertakan sejumlah fungsi matematika yang berguna untuk memanipulasi bilangan floating-point.
Makro Perpustakaan
Berikut adalah makro yang ditentukan di header math.h -
Makro | Nilai | Deskripsi |
---|---|---|
SAYA | 2.7182818284590452354 | Konstanta e. |
M_LOG2E | 1.4426950408889634074 / * log_2 e * / |
Logaritma dari e ke basis 2 |
M_1_PI | 0,31830988618379067154 / * 1 / pi * / |
Konstanta 1 / pi |
M_2_PI | 0.63661977236758134308 / * 2 / pi * / |
Konstanta 2 / pi |
M_2_SQRTPI | 1.12837916709551257390 / * 2 / akar persegi (pi) * / |
Konstanta 2 / akar persegi (pi) |
M_LN10 | 2.30258509299404568402 / * log_e 10 * / |
Logaritma natural dari 10 |
M_LN2 | 0.69314718055994530942 / * log_e 2 * / |
Logaritma natural dari 2 |
M_LOG10E | 0.43429448190325182765 / * log_10 e * / |
Logaritma dari e ke basis 10 |
M_PI | 3.14159265358979323846 / * pi * / |
Pi konstanta |
M_PI_2 | 3.3V1.57079632679489661923 / * pi / 2 * / |
Konstanta pi / 2 |
M_PI_4 | 0.78539816339744830962 / * pi / 4 * / |
Konstanta pi / 4 |
M_SQRT1_2 | 0.70710678118654752440 / * 1 / sqrt (2) * / |
Konstanta 1 / sqrt (2) |
M_SQRT2 | 1.41421356237309504880 / * sqrt (2) * / |
Akar kuadrat dari 2 |
acosf | - | Alias untuk fungsi acos () |
asinf | - | Alias untuk fungsi asin () |
atan2f | - | Alias untuk fungsi atan2 () |
cbrtf | - | Alias untuk fungsi cbrt () |
ceilf | - | Alias untuk fungsi ceil () |
copysignf | - | Alias untuk fungsi copysign () |
coshf | - | Alias untuk fungsi cosh () |
expf | - | Alias untuk fungsi exp () |
fabsf | - | Alias untuk fungsi fabs () |
fdimf | - | Alias untuk fungsi fdim () |
floorf | - | Alias untuk fungsi floor () |
fmaxf | - | Alias untuk fungsi fmax () |
fminf | - | Alias untuk fungsi fmin () |
fmodf | - | Alias untuk fungsi fmod () |
frexpf | - | Alias untuk fungsi frexp () |
hypotf | - | Alias untuk fungsi hypot () |
INFINITY | - | Konstanta INFINITY |
isfinitef | - | Alias untuk fungsi isfinite () |
isinff | - | Alias untuk fungsi isinf () |
isnanf | - | Alias untuk fungsi isnan () |
ldexpf | - | Alias untuk fungsi ldexp () |
log10f | - | Alias untuk fungsi log10 () |
logf | - | Alias untuk fungsi log () |
lrintf | - | Alias untuk fungsi lrint () |
lroundf | - | Alias untuk fungsi lround () |
Fungsi Perpustakaan
Fungsi-fungsi berikut ditentukan di header math.h -
S.No. | Fungsi & Deskripsi Perpustakaan |
---|---|
1 | double acos (double __x) Fungsi acos () menghitung nilai pokok dari cosinus busur __x. Nilai yang dikembalikan berada dalam kisaran [0, pi] radian. Terjadi kesalahan domain untuk argumen yang tidak dalam rentang [-1, +1]. |
2 | double asin (double __x) Fungsi asin () menghitung nilai utama arc sine dari __x. Nilai yang dikembalikan berada dalam rentang [-pi / 2, pi / 2] radian. Terjadi kesalahan domain untuk argumen yang tidak dalam rentang [-1, +1]. |
3 | double atan (double __x) Fungsi atan () menghitung nilai utama dari busur tangen __x. Nilai yang dikembalikan berada dalam rentang [-pi / 2, pi / 2] radian. |
4 | double atan2 (double __y, double __x) Fungsi atan2 () menghitung nilai utama dari busur tangen __y / __x, menggunakan tanda dari kedua argumen untuk menentukan kuadran dari nilai yang dikembalikan. Nilai yang dikembalikan berada dalam rentang [-pi, + pi] radian. |
5 | double cbrt (double __x) Fungsi cbrt () mengembalikan akar pangkat tiga dari __x. |
6 | double ceil (double __x) Fungsi ceil () mengembalikan nilai integral terkecil yang lebih besar dari atau sama dengan __x, yang dinyatakan sebagai bilangan floating-point. |
7 | static double copysign (double __x, double __y) Fungsi copysign () mengembalikan __x tetapi dengan tanda __y. Mereka bekerja bahkan jika __x atau __y adalah NaN atau nol. |
8 | double cos(double __x) Fungsi cos () mengembalikan kosinus __x, diukur dalam radian. |
9 | double cosh (double __x) Fungsi cosh () mengembalikan kosinus hiperbolik __x. |
10 | double exp (double __x) Fungsi exp () mengembalikan nilai eksponensial dari __x. |
11 | double fabs (double __x) Fungsi fabs () menghitung nilai absolut dari bilangan floating-point __x. |
12 | double fdim (double __x, double __y) Fungsi fdim () mengembalikan max (__ x - __y, 0). Jika __x atau __y atau keduanya NaN, NaN dikembalikan. |
13 | double floor (double __x) Fungsi floor () mengembalikan nilai integral terbesar kurang dari atau sama dengan __x, dinyatakan sebagai angka floating-point. |
14 | double fma (double __x, double __y, double __z) Fungsi fma () melakukan penambahan-perkalian floating-point. Ini adalah operasi (__x * __y) + __z, tetapi hasil antara tidak dibulatkan ke jenis tujuan. Ini terkadang dapat meningkatkan presisi penghitungan. |
15 | double fmax (double __x, double __y) Fungsi fmax () mengembalikan nilai terbesar dari dua nilai __x dan __y. Jika argumen adalah NaN, argumen lainnya dikembalikan. Jika kedua argumen adalah NaN, NaN dikembalikan. |
16 | double fmin (double __x, double __y) Fungsi fmin () mengembalikan nilai yang lebih rendah dari dua nilai __x dan __y. Jika argumen adalah NaN, argumen lainnya dikembalikan. Jika kedua argumen adalah NaN, NaN dikembalikan. |
17 | double fmod (double __x, double__y) Fungsi fmod () mengembalikan sisa floating-point dari __x / __y. |
18 | double frexp (double __x, int * __pexp) Fungsi frexp () memecah bilangan floating-point menjadi pecahan yang dinormalisasi dan kekuatan integral 2. Ini menyimpan integer dalam objek int yang ditunjukkan oleh __pexp. Jika __x adalah angka float point normal, fungsi frexp () mengembalikan nilai v, sehingga v memiliki besaran dalam interval [1/2, 1) atau nol, dan __x sama dengan v kali 2 yang dipangkatkan __pexp. Jika __x adalah nol, kedua bagian hasilnya adalah nol. Jika __x bukan angka terbatas, frexp () mengembalikan __x apa adanya dan menyimpan 0 dengan __pexp. Note - Implementasi ini mengizinkan penunjuk nol sebagai arahan untuk melewati penyimpanan eksponen. |
19 | double hypot (double __x, double__y) Fungsi hypot () mengembalikan sqrt (__ x * __ x + __y * __ y). Ini adalah panjang hipotenusa segitiga siku-siku dengan panjang sisi __x dan __y, atau jarak titik (__x, __y) dari titik awal. Sebaiknya gunakan fungsi ini sebagai ganti rumus langsung, karena kesalahannya jauh lebih kecil. Tidak ada aliran bawah dengan __x dan __y kecil. Tidak ada luapan jika hasil dalam jangkauan. |
20 | static int isfinite (double __x) Fungsi isfinite () mengembalikan nilai bukan nol jika __x terbatas: tidak plus atau minus tak terhingga, dan tidak NaN. |
21 | int isinf (double __x) Fungsi isinf () mengembalikan 1 jika argumen __x adalah positif tak terhingga, -1 jika __x adalah tak terhingga negatif, dan 0 sebaliknya. Note - GCC 4.3 dapat mengganti fungsi ini dengan kode sebaris yang mengembalikan nilai 1 untuk kedua tak terbatas (gcc bug # 35509). |
22 | int isnan (double __x) Fungsi isnan () mengembalikan 1 jika argumen __x mewakili "bukan-angka" (NaN) objek, jika tidak 0. |
23 | double ldexp (double __x, int __exp ) Fungsi ldexp () mengalikan bilangan floating-point dengan pangkat integral 2. Ia mengembalikan nilai __x dikali 2 pangkat __exp. |
24 | double log (double __x) Fungsi log () mengembalikan logaritma natural dari argumen __x. |
25 | double log10(double __x) Fungsi log10 () mengembalikan logaritma argumen __x ke basis 10. |
26 | long lrint (double __x) Fungsi lrint () membulatkan __x ke bilangan bulat terdekat, membulatkan separuh kasus ke arah bilangan bulat genap. (Artinya, nilai 1,5 dan 2,5 dibulatkan menjadi 2). Fungsi ini mirip dengan fungsi rint (), tetapi berbeda dalam jenis nilai yang dikembalikan dan kemungkinan luapan. Returns Nilai bilangan bulat panjang yang dibulatkan. Jika __x bukan angka terbatas atau luapan, realisasi ini mengembalikan nilai LONG_MIN (0x80000000). |
27 | long lround (double __x) Fungsi lround () membulatkan __x ke bilangan bulat terdekat, tetapi membulatkan separuh kasus dari nol (bukan ke bilangan bulat genap terdekat). Fungsi ini mirip dengan fungsi round (), tetapi berbeda dalam jenis nilai yang dikembalikan dan kemungkinan overflow. Returns Nilai bilangan bulat panjang yang dibulatkan. Jika __x bukan angka terbatas atau overflow, realisasi ini mengembalikan nilai LONG_MIN (0x80000000). |
28 | double modf (double __x, double * __iptr ) Fungsi modf () memecah argumen __x menjadi bagian integral dan pecahan, yang masing-masing memiliki tanda yang sama dengan argumen. Ini menyimpan bagian integral sebagai ganda di objek yang ditunjukkan oleh __iptr. Fungsi modf () mengembalikan bagian pecahan bertanda dari __x. Note- Implementasi ini melompati penulisan dengan penunjuk nol. Namun, GCC 4.3 dapat menggantikan fungsi ini dengan kode inline yang tidak mengizinkan penggunaan alamat NULL untuk menghindari penyimpanan. |
29 | float modff (float __x, float * __iptr) Alias untuk modf (). |
30 | double pow (double __x, double __y) Fungsi pow () mengembalikan nilai __x ke eksponen __y. |
31 | double round (double __x) Fungsi round () membulatkan __x ke bilangan bulat terdekat, tetapi membulatkan separuh kasus dari nol (bukan ke bilangan bulat genap terdekat). Melimpah tidak mungkin. Returns Nilai yang dibulatkan. Jika __x adalah integral atau tak terbatas, __x itu sendiri dikembalikan. Jika __x adalahNaN, kemudian NaN dikembalikan. |
32 | int signbit (double __x) Fungsi signbit () mengembalikan nilai bukan nol jika nilai __x memiliki set tanda bitnya. Ini tidak sama dengan `__x <0,0 ', karena titik mengambang IEEE 754 memungkinkan nol untuk ditandatangani. Perbandingan `-0.0 <0.0 'salah, tetapi` signbit (-0.0)' akan mengembalikan nilai bukan nol. |
33 | double sin (double __x) Fungsi sin () mengembalikan sinus __x, diukur dalam radian. |
34 | double sinh (double __x) Fungsi sinh () mengembalikan sinus hiperbolik __x. |
35 | double sqrt (double __x) Fungsi sqrt () mengembalikan akar kuadrat non-negatif dari __x. |
36 | double square (double __x) Fungsi persegi () mengembalikan __x * __x. Note - Fungsi ini tidak termasuk dalam definisi standar C. |
37 | double tan (double __x) Fungsi tan () mengembalikan tangen __x, diukur dalam radian. |
38 | double tanh ( double __x) Fungsi tanh () mengembalikan tangen hiperbolik __x. |
39 | double trunc (double __x) Fungsi trunc () membulatkan __x ke bilangan bulat terdekat yang tidak lebih besar dalam nilai absolut. |
Contoh
Contoh berikut menunjukkan cara menggunakan fungsi perpustakaan math.h yang paling umum -
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() {
}
Hasil
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