LISP - Números
Lisp comum define vários tipos de números. onumber tipo de dados inclui vários tipos de números suportados pelo LISP.
Os tipos de número suportados pelo LISP são -
- Integers
- Ratios
- Números de ponto flutuante
- Números complexos
O diagrama a seguir mostra a hierarquia numérica e vários tipos de dados numéricos disponíveis no LISP -
Vários tipos numéricos em LISP
A tabela a seguir descreve vários tipos de dados de número disponíveis no LISP -
Sr. Não. | Tipo de dados e descrição |
---|---|
1 | fixnum Este tipo de dados representa números inteiros que não são muito grandes e principalmente na faixa de -215 a 215-1 (é dependente da máquina) |
2 | bignum Esses são números muito grandes com tamanho limitado pela quantidade de memória alocada para LISP, eles não são números fixos. |
3 | ratio Representa a proporção de dois números na forma de numerador / denominador. A função / sempre produz o resultado em proporções, quando seus argumentos são inteiros. |
4 | float Ele representa números não inteiros. Existem quatro tipos de dados flutuantes com precisão crescente. |
5 | complex Ele representa números complexos, que são denotados por #c. As partes reais e imaginárias podem ser números de ponto flutuante ou racionais. |
Exemplo
Crie um novo arquivo de código-fonte denominado main.lisp e digite o seguinte código nele.
(write (/ 1 2))
(terpri)
(write ( + (/ 1 2) (/ 3 4)))
(terpri)
(write ( + #c( 1 2) #c( 3 -4)))
Quando você executa o código, ele retorna o seguinte resultado -
1/2
5/4
#C(4 -2)
Funções numéricas
A tabela a seguir descreve algumas funções numéricas comumente usadas -
Sr. Não. | Descrição da função |
---|---|
1 | +, -, *, / Respectivas operações aritméticas |
2 | sin, cos, tan, acos, asin, atan Respectivas funções trigonométricas. |
3 | sinh, cosh, tanh, acosh, asinh, atanh Respectivas funções hiperbólicas. |
4 | exp Função de exponenciação. Calcula e x |
5 | expt Função de exponenciação, leva tanto a base quanto a potência. |
6 | sqrt Ele calcula a raiz quadrada de um número. |
7 | log Função logarítmica. Se um parâmetro é dado, ele calcula seu logaritmo natural, caso contrário, o segundo parâmetro é usado como base. |
8 | conjugate Ele calcula o conjugado complexo de um número. No caso de um número real, ele retorna o próprio número. |
9 | abs Ele retorna o valor absoluto (ou magnitude) de um número. |
10 | gcd Ele calcula o maior divisor comum dos números fornecidos. |
11 | lcm Ele calcula o mínimo múltiplo comum dos números fornecidos. |
12 | isqrt Ele dá o maior inteiro menor ou igual à raiz quadrada exata de um determinado número natural. |
13 | floor, ceiling, truncate, round Todas essas funções recebem dois argumentos como um número e retornam o quociente; floor retorna o maior inteiro que não é maior que a proporção, ceiling escolhe o número inteiro menor que é maior que a proporção, truncate escolhe o número inteiro do mesmo sinal como proporção com o maior valor absoluto que é menor do que o valor absoluto da proporção, e round escolhe um número inteiro mais próximo da proporção. |
14 | ffloor, fceiling, ftruncate, fround Faz o mesmo que acima, mas retorna o quociente como um número de ponto flutuante. |
15 | mod, rem Retorna o resto em uma operação de divisão. |
16 | float Converte um número real em um número de ponto flutuante. |
17 | rational, rationalize Converte um número real em um número racional. |
18 | numerator, denominator Retorna as respectivas partes de um número racional. |
19 | realpart, imagpart Retorna a parte real e imaginária de um número complexo. |
Exemplo
Crie um novo arquivo de código-fonte denominado main.lisp e digite o seguinte código nele.
(write (/ 45 78))
(terpri)
(write (floor 45 78))
(terpri)
(write (/ 3456 75))
(terpri)
(write (floor 3456 75))
(terpri)
(write (ceiling 3456 75))
(terpri)
(write (truncate 3456 75))
(terpri)
(write (round 3456 75))
(terpri)
(write (ffloor 3456 75))
(terpri)
(write (fceiling 3456 75))
(terpri)
(write (ftruncate 3456 75))
(terpri)
(write (fround 3456 75))
(terpri)
(write (mod 3456 75))
(terpri)
(setq c (complex 6 7))
(write c)
(terpri)
(write (complex 5 -9))
(terpri)
(write (realpart c))
(terpri)
(write (imagpart c))
Quando você executa o código, ele retorna o seguinte resultado -
15/26
0
1152/25
46
47
46
46
46.0
47.0
46.0
46.0
6
#C(6 7)
#C(5 -9)
6
7