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