[ << ] | [ < ] | [ Acima ] | [ > ] | [ >> ] | [Topo] | [Conteúdo] | [Índice] | [ ? ] |
Esse capítulo descreve as funções matemáticas básicas. Algumas dessas funções estão presentes nas bibliotecas do sistema, mas as versões alternativas fornecidas aqui podem ser usadas como um substituto quando as funções do sistema não estiverem disponíveis.
As funções e macros descritas nesse capítulo são definidas no arquivo de cabeçalho ‘gsl_math.h’.
[ << ] | [ < ] | [ Acima ] | [ > ] | [ >> ] | [Topo] | [Conteúdo] | [Índice] | [ ? ] |
A biblioteca garante que as constantes matemáticas padrão BSD estão definidas. Para referência, aqui está uma lista das constantes:
M_E
A base de exponenciais, e
M_LOG2E
O logaritmo de e na base 2, \log_2 (e)
M_LOG10E
O logaritmo de e na base 10, \log_10 (e)
M_SQRT2
A raíz quadrada de dois, \sqrt 2
M_SQRT1_2
A raíz quadrada de um meio, \sqrt{1/2}
M_SQRT3
A raíz quadrada de três, \sqrt 3
M_PI
A constante pi, \pi
M_PI_2
Pi dividido por dois, \pi/2
M_PI_4
Pi dividido por quatro, \pi/4
M_SQRTPI
A raíz quadrada de pi, \sqrt\pi
M_2_SQRTPI
Dois dividido pela raíz quadrada de pi, 2/\sqrt\pi
M_1_PI
O recíproco de pi, 1/\pi
M_2_PI
Duas vezes o recíproco de pi, 2/\pi
M_LN10
O logaritmo neperiano de dez, \ln(10)
M_LN2
O logaritmo neperiano de dois, \ln(2)
M_LNPI
O logaritmo neperiano de pi, \ln(\pi)
M_EULER
A constante de Euler, \gamma
[ << ] | [ < ] | [ Acima ] | [ > ] | [ >> ] | [Topo] | [Conteúdo] | [Índice] | [ ? ] |
Essa macro contém a representação que segue a norma IEEE de infinito positivo,
+\infty. O infinito positivo é calculado com base na expressão +1.0/0.0
.
Essa macro contém a represetação IEEE de infinito negativo,
-\infty. O infinito negativo é calculado com base na expressão -1.0/0.0
.
Essa macro contém a representação IEEE do símbolo Não-número,
NaN
. O símbolo NaN
é calculado a partir da razão 0.0/0.0
.
Essa função retorna 1 se x for não-número.
Essa função retorna +1 se x for infinito positivo, -1 se x for infinito negativo e 0 de outra forma.(11)
Essa função retorna 1 se x for um número real, e 0 se for infinito ou não-número.
[ << ] | [ < ] | [ Acima ] | [ > ] | [ >> ] | [Topo] | [Conteúdo] | [Índice] | [ ? ] |
As seguintes rotinas fornecem implementações portáveis de funções
encontradas na biblioteca matemátida do BSD (12). Quando versões nativas não estiverem disponíveis
as funções descritas aqui podem ser usadas no lugar delas. A substituição pode
ser feita automaticamente se você usa autoconf
para compilar sua
aplicação (veja seção Funções de portabilidade).
Essa função calcula o valor de \log(1+x) por um caminho que é
preciso para pequenos valores de x. Fornece uma alternativa para a função
log1p(x)
da biblioteca matemática do BSD.
Essa função calcula o valor de \exp(x)-1 por um caminho que é
preciso para pequenos valores de x. Fornece uma alternativa para a função
expm1(x)
da biblioteca matemática do BSD.
Essa função calcula o valor de
\sqrt{x^2 + y^2} de uma forma que evita overflows (13). Essa função fornece uma
alternativa à função hypot(x,y)
da biblioteca matemática do BSD.
Essa função calcula o valor de \sqrt{x^2 + y^2 + z^2} de uma forma que evitar overflows.
Essa função calcula o valor de \arccosh(x). Essa função fornece uma
alternativa para a função matemática padrão acosh(x)
.
Essa função calcula o valor de \arcsinh(x). Essa função fornece uma
alternativa para a função matemática padrão asinh(x)
.
Essa função calcula o valor de \arctanh(x). Essa função fornece uma
alternativa para a função matemática padrão atanh(x)
.
Essa função calcula o valor de x * 2^e. Essa função fornece uma
alternativa para a função matemática padrão ldexp(x,e)
.
Essa função quebra o número x em sua fração normalizada
f e expoente e, de forma que x = f * 2^e e
0.5 <= f < 1. A função retorna f e armazena o
expoente em e. Se x for zero, ambos f e e
são ajustados para zero. Essa função fornece uma alternativa para
a função matemática padrão frexp(x, e)
. (14)
[ << ] | [ < ] | [ Acima ] | [ > ] | [ >> ] | [Topo] | [Conteúdo] | [Índice] | [ ? ] |
Uma reclamação comum sobre a biblioteca C padrão é sua necessidade de uma função para calcular (pequenas) potências inteiras. A GSL fornece algumas funções simples para preencher essa lacuna. Por razões de eficiência, essas funções não verificam condições de overflow ou de underflow (15).
Esses rotinas calculam a potência x^n usando o inteiro n. A
potência é calculada eficientemente—por exemplo, x^8 é calculado usando
((x^2)^2)^2, requerendo somente 3 multiplicações. A versão dessa
função que também calcula o erro numérico no resultado está
disponível como gsl_sf_pow_int_e
.
Essas funções podem ser usadas para calcular pequenos expoentes inteiros x^2,
x^3, etc. eficientemente. As funções irão ser incluídas no programa quando
HAVE_INLINE
for definida, de forma que o uso dessas funções
deve ser tão eficiente quanto explicitamente escrever a correspondente
expressão produto.
#include <gsl/gsl_math.h> double y = gsl_pow_4 (3.141) /* compute 3.141**4 */
[ << ] | [ < ] | [ Acima ] | [ > ] | [ >> ] | [Topo] | [Conteúdo] | [Índice] | [ ? ] |
A macro GSL_SIGN retorna o sinal de x. GSL_SIGN é definida como ((x) >= 0
? 1 : -1)
. Note que com essa definição o sinal de zero é positivo
(apesar de seu bit de sinal IEEE).
[ << ] | [ < ] | [ Acima ] | [ > ] | [ >> ] | [Topo] | [Conteúdo] | [Índice] | [ ? ] |
A macro GSL_IS_ODD avalia para 1 se n for ímpar e 0 se n for par. O argumento n deve ser do tipo de dado inteiro.
A macro GSL_IS_EVEN é o contrário da GSL_IS_ODD(n)
. GSL_IS_EVEN avalia para 1 se
n for par e 0 se n for ímpar. O argumento n deve ser do tipo
de dado inteiro.
[ << ] | [ < ] | [ Acima ] | [ > ] | [ >> ] | [Topo] | [Conteúdo] | [Índice] | [ ? ] |
Note que as seguintes macros executam múltiplas avaliações de seus argumentos, de forma que elas não devem ser usadas com argumentos que tenham efeitos colaterais (tais como uma chamada a um gerador de números aleatórios).
A macro GSL_MAX retorna o maior entre dois números a e b. GSL_MAX é definida
como ((a) > (b) ? (a):(b))
.
GSL_MIN retorna o menor entre dois números a e b. GSL_MIN é definida como
((a) < (b) ? (a):(b))
.
A função GSL_MAX_DBL retorna o maior entre dois números de precisão dupla
a e b usando uma função inline. O uso de uma função
permite a verificação de tipo de dado dos argumentos como um recurso extra de segurança. Nas
plataformas onde funções inline não estão disponíveis a macro
GSL_MAX
irá ser automaticamente substituída.
A função GSL_MIN_DBL retorna o menor entre dois números de precisão dupla
a e b using an inline function. O uso de uma função
permite a verificação de tipo de dado dos argumentos como um recurso extra de segurança. Nas
plataformas onde funções inline não estão disponíveis a macro
GSL_MIN
irá ser automaticamente substituída.
Essas funções retornam o maior ou o menor entre os inteiros a
e b usando uma função inline. Nas plataformas onde funções
inline não estão disponíveis as macros GSL_MAX
e/ou GSL_MIN
irão ser automaticamente substituídas.
Essas funções retornam o maior ou o menor entre dois números de precisão long double a
e b usando uma função inline. Nas plataformas onde funções
inline não estão disponíveis a macro GSL_MAX
e/ou GSL_MIN
irão ser automaticamente substituídas.
[ << ] | [ < ] | [ Acima ] | [ > ] | [ >> ] | [Topo] | [Conteúdo] | [Índice] | [ ? ] |
Algumas vezes é útil ser capaz de comparar dois números em ponto flutuante de forma aproximada, para permitir erros por arredondamento e erros por abandono. A seguinte funçõ implementa um algoritmo de comparação aproximada entre dois números em ponto flutuante proposto pr D.E. Knuth na Seção 4.2.2 do Seminumerical Algorithms (terceira edição).
Essa função determina se x e y são aproximadamente iguais para uma dada exatidão relativa epsilon.
A exatidão relativa é medida usando um intervalo de tamanho 2
\delta, onde \delta = 2^k \epsilon e k é o
maior expoente de base-2 de x e y como calculado através da
função frexp
.
Se x e y localizam-se dentro desse intervalo, eles são considerados aproximadamente iguais e a função retorna 0. De outra forma se x < y, a função retorna -1, ou se x > y, a função retorna +1.
Note que x e y são comparados considerando exatidão relativa, de forma que essa função não é adequada para testar se um valor é aproximadamente zero.
A implementação baseia-se no pacote fcmp
de autoria de T.C. Belding.
[ << ] | [ >> ] | [Topo] | [Conteúdo] | [Índice] | [ ? ] |
Esse documento foi gerado em 23 de Julho de 2013 usando texi2html 5.0.