math.h
contiene una notable cantidad de funciones aritméticas que complementan las capacidades iniciales del lenguaje. Es conveniente incluir también el encabezado errno.h
, que proporciona valores asociados a diferentes errores de coma flotante, a través de la variable global errno
(número de error). Véase a continuación una lista de funciones cuya definición consta en math.h
.Prototipo de la función | Comentarios |
---|---|
double acos(double x)
|
Función arco coseno. Si no es -1 <= x <= 1 , acos()
da a errno el valor EDOM (error de dominio).
|
double asin(double x)
|
Función arco seno. Análoga a acos(). |
double atan(double x)
|
Función arco tangente. Proporciona un valor perteneciente al intervalo [-π/2, π/2] . Análoga a acos() .
|
double atan2(double x, double y)
|
Función arco tangente. Proporciona el arco tangente de y/x , teniendo en cuenta el signo de x
y el de y . El valor resultante pertenece al intervalo [-π, π].
|
double ceil(double r)
|
Proporciona el menor entero no menor que r .
|
double sin(double x)
|
Proporciona el seno de x ; x
estará medido en radianes.
|
double cos(double x)
|
Proporciona el coseno de x ; x
estará medido en radianes.
|
double cosh(double x)
|
Proporciona el coseno hiperbólico de x .
|
double exp(double x)
|
Proporciona el valor de e elevado a x .
|
double fabs(double x)
|
Proporciona el valor absoluto de x .
|
double floor(double r)
|
Calcula el mayor entero que no es mayor que r .
|
double fmod(double x, double y)
|
Proporciona el resto (en coma flotante) que se obtiene al dividir x
por y . El signo del resto coincide con el signo del numerador, x .
|
double frexp(double valor, int * exp)
|
Extrae la mantisa y el exponente de valor; la mantisa se proporciona como valor de la función y el exponente se almacena en el entero cuyo puntero se suministra como segundo argumento. La fórmula empleada es valor = mantisa * 2 elevado a exp. |
double ldexp(double x, int exp);
|
Calcula el valor representado mediante la mantisa x
y el exponente exp
que se le proporcionan, empleando la misma fórmula que frexp()
|
double log(double x)
|
Proporcionan el logaritmo neperiano y el logaritmo en base diez, respectivamente, del valor x proporcionado como argumento. Si es x < 0
entonces las dos funciones dan a errno
el valor EDOM .
|
double modf(double valor, double *ptroparteentera);
|
Separa la parte entera y la parte fraccionaria de valor. La parte entera se devuelve como valor de la función, y la parte fraccionaria se almacena en el puntero de double que se pasa como segundo argumento. |
double pow(double x, double y)
|
Calcula x
elevado a y . Esta función da a errno
el valor EDOM
en el caso de que x
sea cero e y
sea menor o igual que cero, o bien cuando x
es negativo e y
no es entero.
|
double sinh(double x)
|
Calcula el seno hiperbólico de x .
|
double sqrt(double x)
|
Calcula la raíz cuadrada de x .
|
double tan(double x)
|
Calcula la tangente de x .
|
double tanh(double x)
|
Calcula la tangente hiperbólica de x .
|
math.h
. /*Este programa muestra ejemplos de las funciones aritéticas contenidas en math.h */ #include <stdio.h> #include <math.h> #include <stdlib.h> int main(void) { /* Utilización de las funciones trigonométricas inversas */ double x = 0.5, y = -1.0; double m, valor = 12.0; int e; printf("Funciones trigonométricas inversas.\n\n"); printf("arccos (%f) = %f\n", x, acos(x)); printf("arcsin (%f) = %f\n", x, asin(x)); printf("arctan (%f) = %f\n", x, atan(x)); printf("arctan (%f / %f) = %f\n", y, x,atan2(y, x)); /* Utilización de ceiling() y floor() */ printf("\nCálculo del mayor entero menor y del menor entero mayor.\n\n"); x = 100.001, y = 9.99; printf("El menor entero mayor que %f es %f.\n", x,ceil(x)); printf("El menor entero que %f es %f.\n", y,ceil(y));x = 12.03, y = 10.999; printf("El mayor entero menor que %f es %f.\n", x,floor(x)); printf("El mayor entero menor que %f es %f.\n", y,floor(y)); /* Utilización de funciones trigonométricas e hiperbólicas directas */ x = 0.0; printf("\nFunciones trigonométricas.\n\n"); printf("El seno de %f is %f.\n", x, sin(x)); printf("El seno hiperbólico de %f es %f.\n",x,sinh(x)); x = 0.0; printf("El coseno de %f es %f.\n", x, cos(x)); printf("El coseno hiperbólico de %f es %f.\n",x,cosh(x)); x = 0.0; printf("La tangente de %f es %f.\n", x, tan(x)); printf("La tangente hiperbólica de %f es %f.\n",x,tanh(x)); /* Utilización de funciones exponenciales y logarítmicas. */ x = 4.0; printf("\nFunciones exponenciales y logarítmicas.\n\n"); printf("La base de los logaritmos naturales, e, elevado a\n"); printf("la potencia %f es %f.\n", x, exp(x));x = 100.0; printf("El logaritmo natural de %f es %f\n",x, log(x)); printf("El logaritmo en base 10 de %f es %f\n",x, log10(x)); /* Utilización de funciones de extracción e inserción de mantisa y exponente. */ printf("\nFunciones de mantisa y exponente.\n\n");m = frexp(valor, &e); printf("%f = %f * 2 elevado a la potencia %d.\n", valor, m, e); valor, x = 0.75; e = 4; valor = ldexp(x, e); printf("%f * 2 elevado a la potencia %d es %f.\n",x, e, valor); /* Utilización de la función de potencia. */ printf("\nFunción de potencia.\n\n"); printf("Potencias de 2:\n");for (x = 1.0; x <= 10.0; x += 1.0) printf("2 elevado a %4.0f es %4.0f.\n", x, pow(2, x)); printf("\n\nTerminación normal del programa.\n\n"); return 0; } /*Resultados del programa. Funciones trigonométricas inversas. arccos (0.500000) = 1.047198 arcsin (0.500000) = 0.523599 arctan (0.500000) = 0.463648 arctan (-1.000000 / 0.500000) = -1.107149 Cálculo del mayor entero menor y del menor entero mayor. El menor entero mayor que 100.001000 es 101.000000. El menor entero que 9.990000 es 10.000000. El mayor entero menor que 12.030000 es 12.000000. El mayor entero menor que 10.999000 es 10.000000. Funciones trigonométricas. El seno de 0.000000 is 0.000000. El seno hiperbólico de 0.000000 es 0.000000. El coseno de 0.000000 es 1.000000. El coseno hiperbólico de 0.000000 es 1.000000. La tangente de 0.000000 es 0.000000. La tangente hiperbólica de 0.000000 es 0.000000. Funciones exponenciales y logarítmicas. La base de los logaritmos naturales, e, elevado a la potencia 4.000000 es 54.598150. El logaritmo natural de 100.000000 es 4.605170 El logaritmo en base 10 de 100.000000 es 2.000000 Funciones de mantisa y exponente. 12.000000 = 0.750000 * 2 elevado a la potencia 4. 0.750000 * 2 elevado a la potencia 4 es 12.000000. Función de potencia. Potencias de 2: 2 elevado a 1 es 2. 2 elevado a 2 es 4. 2 elevado a 3 es 8. 2 elevado a 4 es 16. 2 elevado a 5 es 32. 2 elevado a 6 es 64. 2 elevado a 7 es 128. 2 elevado a 8 es 256. 2 elevado a 9 es 512. 2 elevado a 10 es 1024. Terminación normal del programa. */
f(z) = 1 + z^2
. Se pide construir un programa que admita un número complejo y proporcione un resultado entero, que será el número de veces que es preciso aplicar sucesivamente f(z)
para obtener un número de módulo menor que cierto epsilon
, esto es, |f(f(f(...f(z))))| < epsilon
.