LISP - Números
Common Lisp define varios tipos de números. losnumber El tipo de datos incluye varios tipos de números admitidos por LISP.
Los tipos de números admitidos por LISP son:
- Integers
- Ratios
- Números de punto flotante
- Números complejos
El siguiente diagrama muestra la jerarquía numérica y varios tipos de datos numéricos disponibles en LISP:
Varios tipos numéricos en LISP
La siguiente tabla describe varios datos de tipos de números disponibles en LISP:
No Señor. | Tipo de datos y descripción |
---|---|
1 | fixnum Este tipo de datos representa números enteros que no son demasiado grandes y en su mayoría en el rango de -215 a 215-1 (depende de la máquina) |
2 | bignum Estos son números muy grandes con un tamaño limitado por la cantidad de memoria asignada para LISP, no son números fijos. |
3 | ratio Representa la razón de dos números en forma de numerador / denominador. La función / siempre produce el resultado en proporciones, cuando sus argumentos son números enteros. |
4 | float Representa números no enteros. Hay cuatro tipos de datos flotantes con una precisión creciente. |
5 | complex Representa números complejos, que se indican con #c. Las partes reales e imaginarias pueden ser números de punto flotante o racionales. |
Ejemplo
Cree un nuevo archivo de código fuente llamado main.lisp y escriba el siguiente código en él.
(write (/ 1 2))
(terpri)
(write ( + (/ 1 2) (/ 3 4)))
(terpri)
(write ( + #c( 1 2) #c( 3 -4)))
Cuando ejecuta el código, devuelve el siguiente resultado:
1/2
5/4
#C(4 -2)
Funciones numéricas
La siguiente tabla describe algunas funciones numéricas de uso común:
No Señor. | Función descriptiva |
---|---|
1 | +, -, *, / Operaciones aritméticas respectivas |
2 | sin, cos, tan, acos, asin, atan Funciones trigonométricas respectivas. |
3 | sinh, cosh, tanh, acosh, asinh, atanh Funciones hiperbólicas respectivas. |
4 | exp Función de exponenciación. Calcula e x |
5 | expt Función de exponenciación, toma base y potencia ambos. |
6 | sqrt Calcula la raíz cuadrada de un número. |
7 | log Función logarítmica. Se le da un parámetro, luego calcula su logaritmo natural; de lo contrario, el segundo parámetro se usa como base. |
8 | conjugate Calcula el conjugado complejo de un número. En el caso de un número real, devuelve el propio número. |
9 | abs Devuelve el valor absoluto (o magnitud) de un número. |
10 | gcd Calcula el máximo común divisor de los números dados. |
11 | lcm Calcula el mínimo común múltiplo de los números dados. |
12 | isqrt Da el mayor número entero menor o igual que la raíz cuadrada exacta de un número natural dado. |
13 | floor, ceiling, truncate, round Todas estas funciones toman dos argumentos como número y devuelven el cociente; floor devuelve el entero más grande que no es mayor que la relación, ceiling elige el número entero más pequeño que es mayor que la relación, truncate elige el número entero del mismo signo que la razón con el valor absoluto más grande que es menor que el valor absoluto de la razón, y round elige un número entero más cercano a la relación. |
14 | ffloor, fceiling, ftruncate, fround Hace lo mismo que el anterior, pero devuelve el cociente como un número de punto flotante. |
15 | mod, rem Devuelve el resto de una operación de división. |
dieciséis | float Convierte un número real en un número de coma flotante. |
17 | rational, rationalize Convierte un número real en un número racional. |
18 | numerator, denominator Devuelve las partes respectivas de un número racional. |
19 | realpart, imagpart Devuelve la parte real e imaginaria de un número complejo. |
Ejemplo
Cree un nuevo archivo de código fuente llamado main.lisp y escriba el siguiente código en él.
(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))
Cuando ejecuta el código, devuelve el siguiente 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