Biblioteca estándar de C -<math.h>
Introducción
math.hEl archivo de cabecera define varias funciones matemáticas y una macro. Todas las funciones disponibles en esta biblioteca aceptan un parámetro de tipodoubley devuelven un resultado de tipodouble
<math.h>Es un archivo de cabecera de la biblioteca estándar de C, que contiene una gran cantidad de funciones y macros para operaciones matemáticas. Estas funciones y macros proporcionan operaciones aritméticas básicas, funciones trigonométricas, funciones exponenciales, funciones logarítmicas, funciones de potencia, funciones de redondeo, etc.
Macros de la biblioteca
En<math.h>En el archivo de cabecera, hay algunas macros que se utilizan para representar los estados de error de las funciones matemáticas:
| macro | Descripción |
|---|---|
HUGE_VAL | Valor devuelto cuando el resultado de la función se desborda (infinito positivo). Esta macro representa un número de punto flotante de doble precisión muy grande, que se utiliza normalmente como valor de retorno de ciertas funciones matemáticas cuando el resultado supera el rango representable. Cuando el resultado de una función es demasiado grande para representarse con un número de punto flotante normal (es decir, se produce un desbordamiento por exceso), se establece errno en ERANGE (error de rango) y se devuelve HUGE_VAL o su valor negativo (para infinito negativo). |
HUGE_VALF | Valor devuelto cuando el resultado de la función se desborda (infinito positivo, tipo flotante) |
HUGE_VALL | Valor devuelto cuando el resultado de la función se desborda (infinito positivo, tipo long double) |
INFINITY | Infinito positivo |
NAN | Valor no numérico (Not-A-Number) |
FP_INFINITE | Representa infinito |
FP_NAN | Representa un valor no numérico |
FP_NORMAL | Representa un número de punto flotante normal |
FP_SUBNORMAL | Representa un número subnormal |
FP_ZERO | Representa cero |
Funciones de la biblioteca
A continuación se enumeran las funciones definidas en el archivo de cabecera math.h:
| N.º | Función y descripción |
|---|---|
| 1 | double acos(double x) Devuelve el arco coseno de x expresado en radianes. |
| 2 | double asin(double x) Devuelve el arco seno de x expresado en radianes. |
| 3 | double atan(double x) Devuelve el arco tangente de x expresado en radianes. |
| 4 | double atan2(double y, double x) Devuelve el arco tangente de y/x expresado en radianes. Los signos de los valores de y y de x determinan el cuadrante correcto. |
| 5 | double cos(double x) Devuelve el coseno del ángulo x en radianes. |
| 6 | double cosh(double x) Devuelve el coseno hiperbólico de x. |
| 7 | double sin(double x) Devuelve el seno del ángulo x en radianes. |
| 8 | double sinh(double x) Devuelve el seno hiperbólico de x. |
| 9 | double tanh(double x) Devuelve la tangente hiperbólica de x. |
| 10 | double exp(double x) Devuelve el valor de e elevado a la potencia x. |
| 11 | double frexp(double x, int *exponent) Descompone el número de punto flotante x en mantisa y exponente. El valor de retorno es la mantisa y almacena el exponente en exponent. El valor resultante es x = mantisa * 2 ^ exponent. |
| 12 | double ldexp(double x, int exponent) Devuelve x multiplicado por 2 elevado a la potencia exponent. |
| 13 | double log(double x) Devuelve el logaritmo natural de x (logaritmo en base e). |
| 14 | double log10(double x) Devuelve el logaritmo común de x (logaritmo en base 10). |
| 15 | double modf(double x, double *integer) El valor de retorno es la parte fraccionaria (la parte después del punto decimal) y establece integer como la parte entera. |
| 16 | double pow(double x, double y) Devuelve x elevado a la potencia y. |
| 17 | double sqrt(double x) Devuelve la raíz cuadrada de x. |
| 18 | double ceil(double x) Devuelve el valor entero más pequeño mayor o igual que x. |
| 19 | double fabs(double x) Devuelve el valor absoluto de x. |
| 20 | double floor(double x) Devuelve el valor entero más grande menor o igual que x. |
| 21 | double fmod(double x, double y) Devuelve el resto de x dividido entre y. |
Constantes matemáticas comunes
A continuación se muestran<math.h>algunas de las constantes matemáticas comunes definidas en:
| Constante | Valor | Descripción |
|---|---|---|
M_PI | 3.14159265358979323846 | Pi π |
M_E | 2.71828182845904523536 | La base del logaritmo natural e |
M_LOG2E | 1.44269504088896340736 | log2(e) |
M_LOG10E | 0.43429448190325182765 | log10(e) |
M_LN2 | 0.69314718055994530942 | ln(2) |
M_LN10 | 2.30258509299404568402 | ln(10) |
M_PI_2 | 1.57079632679489661923 | π/2 |
M_PI_4 | 0.78539816339744830962 | π/4 |
M_1_PI | 0.31830988618379067154 | 1/π |
M_2_PI | 0.63661977236758134308 | 2/π |
M_2_SQRTPI | 1.12837916709551257390 | 2/√π |
M_SQRT2 | 1.41421356237309504880 | √2 |
M_SQRT1_2 | 0.70710678118654752440 | 1/√2 |
A continuación se muestra un ejemplo del uso de<math.h>las funciones y constantes de:
Ejemplo
#include <math.h>
int main() {
double x = 2.0;
double y = 3.0;
// Operaciones básicas
printf("sqrt(%.1f) = %.2f\n", x, sqrt(x));
printf("pow(%.1f, %.1f) = %.2f\n", x, y, pow(x, y));
printf("exp(%.1f) = %.2f\n", x, exp(x));
printf("log(%.1f) = %.2f\n", x, log(x));
printf("log10(%.1f) = %.2f\n", x, log10(x));
// Funciones trigonométricas
double angle = M_PI / 4; // 45 degrees
printf("sin(%.2f) = %.2f\n", angle, sin(angle));
printf("cos(%.2f) = %.2f\n", angle, cos(angle));
printf("tan(%.2f) = %.2f\n", angle, tan(angle));
// Funciones de redondeo
double z = 5.8;
printf("ceil(%.1f) = %.1f\n", z, ceil(z));
printf("floor(%.1f) = %.1f\n", z, floor(z));
printf("fabs(%.1f) = %.1f\n", z, fabs(z));
return 0;
}
Al ejecutar el programa anterior se obtendrá una salida similar a la siguiente:
sqrt(2.0) = 1.41 pow(2.0, 3.0) = 8.00 exp(2.0) = 7.39 log(2.0) = 0.69 log10(2.0) = 0.30 sin(0.79) = 0.71 cos(0.79) = 0.71 tan(0.79) = 1.00 ceil(5.8) = 6.0 floor(5.8) = 5.0 fabs(5.8) = 5.8
<math.h>Proporciona una serie de funciones y constantes matemáticas que ayudan a los programadores a realizar diversos cálculos matemáticos en el lenguaje C. Mediante el uso de estas funciones y constantes, se pueden implementar fácilmente operaciones matemáticas complejas, mejorando así la eficiencia y la legibilidad del programa.