Page 54

1.16 Las bibliotecas (m´ odulos) se importan con #include Funci´ on C

Funci´ on matem´ atica

sqrt(x) sin(x) cos(x) tan(x) asin(x) acos(x) atan(x) exp(x) exp10(x) log(x) log10(x) log2(x) pow (x, y) fabs(x) round (x) ceil (x) floor (x)

ra´ız cuadrada de x seno de x coseno de x tangente de x arcoseno de x arcocoseno de x arcotangente de x el n´ umero e elevado a x 10 elevado a x logaritmo en base e de x logaritmo en base 10 de x logaritmo en base 2 de x x elevado a y valor absoluto de x redondeo al entero m´as pr´oximo a x redondeo superior de x redondeo inferior de x

Tabla 1.1: Algunas funciones matem´ aticas disponibles en la biblioteca math.h.

Todos los argumentos de las funciones de math.h son de tipo flotante.19 La biblioteca matem´ atica tambi´en ofrece algunas constantes matem´aticas predefinidas. Te relacionamos algunas en la tabla 1.2. Constante

Valor

M_E M_PI M_PI_2 M_PI_4 M_1_PI M_SQRT2 M_LOG2E M_LOG10E

una una una una una una una una

aproximaci´on aproximaci´on aproximaci´on aproximaci´on aproximaci´on aproximaci´on aproximaci´on aproximaci´on

del n´ umero e del n´ umero π de π/2 de π/4 de √ 1/π de 2 de log2 e de log10 e

Tabla 1.2: Algunas constantes disponibles en la biblioteca math.h.

No basta con escribir #include <math.h> para poder usar las funciones matem´aticas: has de compilar con la opci´ on -lm: 

$ gcc programa.c -lm -o programa

¿Por qu´e? Cuando haces #include, el preprocesador introduce un fragmento de texto que dice qu´e funciones pasan a estar accesibles, pero ese texto no dice qu´e hace cada funci´on y c´omo lo hace (con qu´e instrucciones concretas). Si compilas sin -lm, el compilador se ((quejar´a)): 

$ gcc programa.c -o programa /tmp/ccm1nE0j.o: In function ‘main’: /tmp/ccm1nE0j.o(.text+0x19): undefined reference to ‘sqrt’ collect2: ld returned 1 exit status

El mensaje advierte de que hay una ((referencia indefinida a sqrt)). En realidad no se est´a ((quejando)) el compilador, sino otro programa del que a´ un no te hemos dicho nada: el enlazador (en ingl´es, ((linker))). El enlazador es un programa que detecta en un programa las llamadas a funci´on no definidas en un programa C y localiza la definici´on de las funciones (ya compiladas) en bibliotecas. El fichero math.h que inclu´ımos con #define contiene la cabecera de las funciones 19 Lo cierto es que son de tipo double (v´ ease el ap´ endice A), pero no hay problema si las usas con valores y variables de tipo float, ya que hay conversi´ on autom´ atica de tipos.

48

Introducci´ on a la Programaci´ on con C

Profile for esLibre.com

Introducción a la programación con c  

Introducción a la programación con c  

Advertisement