LISP - Angka

Lisp umum mendefinisikan beberapa jenis angka. Itunumber tipe data mencakup berbagai jenis angka yang didukung oleh LISP.

Jenis nomor yang didukung oleh LISP adalah -

  • Integers
  • Ratios
  • Angka floating-point
  • Bilangan kompleks

Diagram berikut menunjukkan hierarki angka dan berbagai tipe data numerik yang tersedia di LISP -

Berbagai Jenis Numerik di LISP

Tabel berikut menjelaskan berbagai jenis data nomor yang tersedia di LISP -

Sr.No. Tipe & Deskripsi Data
1

fixnum

Tipe data ini mewakili bilangan bulat yang tidak terlalu besar dan kebanyakan berkisar -215 hingga 215-1 (bergantung pada mesin)

2

bignum

Ini adalah angka yang sangat besar dengan ukuran yang dibatasi oleh jumlah memori yang dialokasikan untuk LISP, ini bukan angka fixnum.

3

ratio

Merupakan rasio dua angka dalam bentuk pembilang / penyebut. Fungsi / selalu menghasilkan hasil dalam rasio, jika argumennya adalah bilangan bulat.

4

float

Ini mewakili bilangan non-integer. Ada empat tipe data float dengan presisi yang meningkat.

5

complex

Ini mewakili bilangan kompleks, yang dilambangkan dengan #c. Bagian nyata dan imajiner dapat berupa bilangan rasional atau bilangan floating point.

Contoh

Buat file kode sumber baru bernama main.lisp dan ketikkan kode berikut di dalamnya.

(write (/ 1 2))
(terpri)
(write ( + (/ 1 2) (/ 3 4)))
(terpri)
(write ( + #c( 1 2) #c( 3 -4)))

Saat Anda menjalankan kode, ia mengembalikan hasil berikut -

1/2
5/4
#C(4 -2)

Fungsi Angka

Tabel berikut menjelaskan beberapa fungsi numerik yang umum digunakan -

Sr.No. Deskripsi fungsi
1

+, -, *, /

Operasi aritmatika masing-masing

2

sin, cos, tan, acos, asin, atan

Fungsi trigonometri masing-masing.

3

sinh, cosh, tanh, acosh, asinh, atanh

Fungsi hiperbolik masing-masing.

4

exp

Fungsi eksponen. Menghitung e x

5

expt

Fungsi eksponen, mengambil basis dan kekuatan keduanya.

6

sqrt

Ini menghitung akar kuadrat dari sebuah angka.

7

log

Fungsi logaritmik. Jika satu parameter diberikan, kemudian dihitung logaritma aslinya, jika tidak parameter kedua digunakan sebagai basis.

8

conjugate

Ini menghitung konjugasi kompleks dari sebuah bilangan. Dalam kasus bilangan real, ia mengembalikan nomor itu sendiri.

9

abs

Ini mengembalikan nilai absolut (atau besarnya) sebuah angka.

10

gcd

Ini menghitung pembagi persekutuan terbesar dari bilangan yang diberikan.

11

lcm

Ini menghitung kelipatan persekutuan terkecil dari angka yang diberikan.

12

isqrt

Ini memberikan bilangan bulat terbesar kurang dari atau sama dengan akar kuadrat tepat dari bilangan asli yang diberikan.

13

floor, ceiling, truncate, round

Semua fungsi ini mengambil dua argumen sebagai angka dan mengembalikan hasil bagi; floor mengembalikan bilangan bulat terbesar yang tidak lebih besar dari rasio, ceiling memilih bilangan bulat yang lebih kecil yang lebih besar dari rasio, truncate memilih bilangan bulat dari tanda yang sama sebagai rasio dengan nilai absolut terbesar yang lebih kecil dari nilai absolut rasio, dan round memilih bilangan bulat yang paling mendekati rasio.

14

ffloor, fceiling, ftruncate, fround

Melakukan hal yang sama seperti di atas, tetapi mengembalikan hasil bagi sebagai bilangan floating point.

15

mod, rem

Mengembalikan sisa dalam operasi pembagian.

16

float

Mengonversi bilangan real menjadi bilangan floating point.

17

rational, rationalize

Mengonversi bilangan real menjadi bilangan rasional.

18

numerator, denominator

Mengembalikan bagian masing-masing dari bilangan rasional.

19

realpart, imagpart

Menampilkan bagian nyata dan imajiner dari bilangan kompleks.

Contoh

Buat file kode sumber baru bernama main.lisp dan ketikkan kode berikut di dalamnya.

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

Saat Anda menjalankan kode, ia mengembalikan hasil berikut -

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