<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.

Recebe: o cosseno de um ângulo; isto é, um número entre -1 e 1 → -1 <= cosseno <= 1.

Retorna: o ângulo, em radianos, do cosseno que foi informado como parâmetro ou NaN se o argumento estiver fora do domínio de entrada.

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.

Recebe: o seno de um ângulo, tal que, -1 <= seno <= 1.

Retorna: o ângulo, em radianos, cujo seno foi informado como parâmetro ou NaN se o argumento estiver fora do domínio de entrada.

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.

Recebe: a tangente de um ângulo.

Retorna: o ângulo, em radianos, cuja tangente foi informada como parâmetro.

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.

Recebe: dois argumentos do tipo double: x, y. Elas são representações de um ponto no plano cartesiano.

Retorna: o arco tangente de y / x no intervalo de -π a π radianos, dos valores informados como parâmetros.

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).

Recebe: x, um valor do tipo double.

Retorna: o menor inteiro maior ou igual a x.

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.

Recebe: um ângulo em radianos.

Retorna: o valor do cosseno do ângulo que foi informado como parâmetro.

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.

Recebe: o valor de um ângulo em radianos.

Retorna: o cosseno hiperbólico do ângulo que foi informado como parâmetro.

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.

Recebe: um número x do tipo double.

Retorna: o número de Euler (~2.71) elevado a x: ex = exp(x), informado como parâmetro.

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.

Recebe: x, um valor do tipo double.

Retorna: o módulo de x.

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).

Recebe: x, um valor do tipo double.

Retorna: o maior valor inteiro menor ou igual a x.

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.

Recebe: dois parâmetros, um do tipo double e outro do tipo ponteiro para o expoente inteiro armazenado.

Retorna: a mantissa (m). Se x for 0, a função retornará 0 para a mantissa e o expoente. A função divide o valor de ponto flutuante (x) em uma mantissa (m) e um expoente (n), de modo que o valor absoluto da mantissa seja maior ou igual a 0,5 e menor que 1,0 e x = m * 2n. O expoente inteiro n é armazenado no local apontado pelo ponteiro.

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.

Recebe: x, do tipo double que será a base e exp do tipo int que será o expoente.

Retorna: x * 2exp dos valores informados como parâmetros.

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.

Recebe: um valor x do tipo double.

Retorna: o valor de ln x, ou seja, o logaritmo de x na base e.

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.

Recebe: um valor x do tipo double.

Retorna: o valor do logaritmo de x na base 10.

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.

Recebe: o valor double x e o endereço de um double p.

Retorna: a parte decimal de x no valor da função e a parte inteira de x no parâmetro p.

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).

Recebe: dois valores do tipo double, x e y, em que x será a base e y será o expoente.

Retorna: x elevado a y.

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.

Recebe: um ângulo em radianos.

Retorna: o valor do seno do ângulo que foi informado como parâmetro.

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.

Recebe: um ângulo em radianos.

Retorna: o seno hiperbólico do ângulo que foi informado como parâmetro.

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.

Recebe: x, um valor do tipo double.

Retorna: a raiz quadrada de x ou NaN se x for negativo.

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.

Recebe: um ângulo em radianos.

Retorna: o valor da tangente do ângulo que foi informado como parâmetro.

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.

Recebe: um ângulo em radianos.

Retorna: a tangente hiperbólica do ângulo que foi informado como parâmetro.

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