<math.h>
Na biblioteca <math.h> estão contidas diversas funções matemáticas básicas. Com ela, podemos trabalhar com funções trigonométricas, funções para cálculo de raiz quadrada, valor absoluto, entre outras.
Esta listagem apresenta as funções conforme definidas pelo padrão C99. A inclusão das funções da biblioteca
matemática é feita com a opção de compilação -lm. Vale lembrar que todas as
funções dessa biblioteca
retornam valores do tipo double. Veremos, a seguir, todas elas.
Funções
double acos(double x)
Calcula o arco cosseno de um valor.
Exemplo
#include <stdio.h>
#include <math.h>
int main() {
double cosseno;
scanf("%lf", &cosseno);
printf("o angulo cujo cosseno eh %.3lf, eh %.3lf aproximadamente", cosseno, acos(cosseno));
return 0;
}
Saída esperada
>clang-7 -pthread -lm -o main main.c
>./main
0.5
o angulo cujo consseno eh 0.500, eh 1.047 aproximadamente
double asin(double x)
Calcula o arco seno de um valor.
Exemplo
#include <stdio.h>
#include <math.h>
int main() {
double seno;
scanf("%lf", &seno);
printf("o angulo cujo seno eh %.3lf, eh %.3lf aproximadamente", seno, asin(seno));
return 0;
}
Saída esperada
>clang-7 -pthread -lm -o main main.c
>./main
0.5
o angulo cujo seno eh 0.500, eh 0.524 aproximadamente
double atan(double x)
Calcula a arco tangente de um valor.
Exemplo
#include <stdio.h>
#include <math.h>
int main() {
double tangente;
scanf("%lf", &tangente);
printf("o angulo cuja tangente eh %.3lf, eh %.3lf aproximadamente", tangente, atan(tangente));
return 0;
}
Saída esperada
>clang-7 -pthread -lm -o main main.c
>./main
1
o angulo cuja tangente eh 1.000, eh 0.785 aproximadamente
double atan2(double x, double y)
Calcula o arco tangente de y / x.
Exemplo
#include <stdio.h>
#include <math.h>
int main() {
double x, y;
scanf("%lf %lf", &x, &y);
printf("%lf", atan2(y,x));
return 0;
}
Saída esperada
>clang-7 -pthread -lm -o main main.c
>./main
2
2
0.785398
double ceil(double x)
Arredonda um número para cima (teto).
Exemplo
#include <stdio.h>
#include <math.h>
int main() {
double x;
scanf("%lf", &x);
printf("%.2lf", ceil(x));
return 0;
}
Saída esperada
>clang-7 -pthread -lm -o main main.c
>./main
6.55
6.00
double cos(double x)
Calcula o cosseno de um ângulo.
Exemplo
#include <stdio.h>
#include <math.h>
int main() {
double angulo;
scanf("%lf", &angulo);
printf("o cosseno de %.3lf, eh %.3lf aproximadamente", angulo, cos(angulo));
return 0;
}
Saída esperada
>clang-7 -pthread -lm -o main main.c
>./main
1.047
o cosseno de 1.047, eh 0.500 aproximadamente
double cosh(double x)
Calcula o cosseno hiperbólico de um ângulo.
Exemplo
#include <stdio.h>
#include <math.h>
int main() {
double angulo;
scanf("%lf", &angulo);
printf("o cosseno hiperbólico de %.3lf, eh %.3lf aproximadamente", angulo, cosh(angulo));
return 0;
}
Saída esperada
>clang-7 -pthread -lm -o main main.c
>./main
3.14
o cosseno hiperbólico de 3.140, eh 11.574 aproximadamente
double exp(double x)
Calcula a função exponencial.
Exemplo
#include <stdio.h>
#include <math.h>
int main() {
double x;
scanf("%lf", &x);
printf("%.2lf", exp(x));
return 0;
}
Saída esperada
>clang-7 -pthread -lm -o main main.c
>./main
1
2.72
double fabs(double x)
Calcula o valor absoluto (módulo) de um número de ponto flutuante.
Exemplo
#include <stdio.h>
#include <math.h>
int main() {
double x;
scanf("%lf", &x);
printf("%.2lf", fabs(x));
return 0;
}
Saída esperada
>clang-7 -pthread -lm -o main main.c
>./main
-9
9.00
double floor(double x)
Arredonda um número para baixo (chão).
Exemplo
#include <stdio.h>
#include <math.h>
int main() {
double x;
scanf("%lf", &x);
printf("%.2lf", floor(x));
return 0;
}
Saída esperada
>clang-7 -pthread -lm -o main main.c
>./main
8.79
8.00
double frexp(double x, int *expoente)
Divide um número de ponto flutuante em uma fração (mantissa) e um expoente.
Exemplo
#include <stdio.h>
#include <math.h>
int main() {
float x;
int expoente;
scanf("%f", &x);
printf("%.2lf", frexp(x, &expoente));
return 0;
}
Saída esperada
>clang-7 -pthread -lm -o main main.c
>./main
1024
0.50
double ldexp(double x, int *expoente)
Multiplica um número de ponto flutuante por 2 elevado a um expoente inteiro.
Exemplo
#include <stdio.h>
#include <math.h>
int main() {
double x;
int expoente;
scanf("%lf %d", &x, &expoente);
printf("%.2lf", ldexp(x, expoente));
return 0;
}
Saída esperada
>clang-7 -pthread -lm -o main main.c
>./main
4
3
32.00
double log(double x)
Calcula o logaritmo natural (base e) de um número.
Exemplo
#include <stdio.h>
#include <math.h>
int main() {
double x;
scanf("%lf", &x);
printf("%.2lf", log(x));
return 0;
}
Saída esperada
>clang-7 -pthread -lm -o main main.c
>./main
2.718
1.00
double log10(double x)
Calcula o logaritmo na base 10 de um número.
Exemplo
#include <stdio.h>
#include <math.h>
int main() {
double x;
scanf("%lf", &x);
printf("%.2lf", log10(x));
return 0;
}
Saída esperada
>clang-7 -pthread -lm -o main main.c
>./main
100
2.00
double modf(double x, double *p)
Separa um número de ponto flutuante em partes inteira e fracionária.
Exemplo
#include <stdio.h>
#include <math.h>
int main() {
double x, p;
scanf("%lf", &x);
printf("%.5lf", modf(x, &p));
return 0;
}
Saída esperada
>clang-7 -pthread -lm -o main main.c
>./main
2.58974
0.58974
double pow(double x, double y)
Calcula a potência de um número (base elevada ao expoente).
Exemplo
#include <stdio.h>
#include <math.h>
int main() {
double x, y;
scanf("%lf%lf", &x, &y);
printf("%.2lf", pow(x, y));
return 0;
}
Saída esperada
>clang-7 -pthread -lm -o main main.c
>./main
2
5
32.00
double sin(double x)
Calcula o seno de um ângulo.
Exemplo
#include <stdio.h>
#include <math.h>
int main() {
double angulo;
scanf("%lf", &angulo);
printf("o seno de %.3lf, eh %.3lf aproximadamente", angulo, sin(angulo));
return 0;
}
Saída esperada
>clang-7 -pthread -lm -o main main.c
>./main
1.047
o seno de 1.047, eh 0.866 aproximadamente
double sinh(double x)
Calcula o seno hiperbólico de um ângulo.
Exemplo
#include <stdio.h>
#include <math.h>
int main() {
double angulo;
scanf("%lf", &angulo);
printf("o seno hiperbólico de %.3lf, eh %.3lf aproximadamente", angulo, sinh(angulo));
return 0;
}
Saída esperada
>clang-7 -pthread -lm -o main main.c
>./main
3.14
o seno hiperbólico de 3.140, eh 11.530 aproximadamente
double sqrt(double x)
Calcula a raiz quadrada de um número.
Exemplo
#include <stdio.h>
#include <math.h>
int main() {
double x;
scanf("%lf", &x);
printf("%.2lf", sqrt(x));
return 0;
}
Saída esperada
>clang-7 -pthread -lm -o main main.c
>./main
16
4.00
double tan(double x)
Calcula a tangente de um ângulo.
Exemplo
#include <stdio.h>
#include <math.h>
int main() {
double angulo;
scanf("%lf", &angulo);
printf("a tangente de %.3lf, eh %.3lf aproximadamente", angulo, tan(angulo));
return 0;
}
Saída esperada
>clang-7 -pthread -lm -o main main.c
>./main
1.047
a tangente de 1.047, eh 1.731 aproximadamente
double tanh(double x)
Calcula a tangente hiperbólica de um ângulo.
Exemplo
#include <stdio.h>
#include <math.h>
int main() {
double angulo;
scanf("%lf", &angulo);
printf("a tangente hiperbólica de %.3lf, eh %.3lf aproximadamente", angulo, tanh(angulo));
return 0;
}
Saída esperada
>clang-7 -pthread -lm -o main main.c
>./main
5
a tangente hiperbólica de 5, eh 1.000 aproximadamente