LISP - Sayılar

Common Lisp birkaç çeşit sayı tanımlar. number veri türü, LISP tarafından desteklenen çeşitli sayı türlerini içerir.

LISP tarafından desteklenen numara türleri şunlardır:

  • Integers
  • Ratios
  • Kayan nokta sayıları
  • Karışık sayılar

Aşağıdaki diyagram, LISP'de bulunan sayı hiyerarşisini ve çeşitli sayısal veri türlerini göstermektedir -

LISP'de Çeşitli Sayısal Türler

Aşağıdaki tablo, LISP'de bulunan çeşitli numara türü verilerini açıklamaktadır -

Sr.No. Veri türü ve Açıklama
1

fixnum

Bu veri türü, çok büyük olmayan ve çoğunlukla -215 ila 215-1 aralığındaki tam sayıları temsil eder (makineye bağlıdır)

2

bignum

Bunlar, LISP için ayrılan bellek miktarı ile sınırlı boyuta sahip çok büyük sayılardır, sabit sayılar değildirler.

3

ratio

Pay / payda formundaki iki sayının oranını temsil eder. / İşlevi, bağımsız değişkenleri tam sayı olduğunda, sonucu daima oranlarda üretir.

4

float

Tam sayı olmayan sayıları temsil eder. Artan hassasiyete sahip dört kayan veri türü vardır.

5

complex

#C ile gösterilen karmaşık sayıları temsil eder. Gerçek ve sanal kısımlar hem rasyonel hem de kayan nokta sayıları olabilir.

Misal

Main.lisp adında yeni bir kaynak kodu dosyası oluşturun ve içine aşağıdaki kodu yazın.

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

Kodu çalıştırdığınızda, aşağıdaki sonucu döndürür -

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

Sayı İşlevleri

Aşağıdaki tablo yaygın olarak kullanılan bazı sayısal işlevleri açıklamaktadır -

Sr.No. İşlev ve Açıklama
1

+, -, *, /

İlgili aritmetik işlemler

2

sin, cos, tan, acos, asin, atan

İlgili trigonometrik fonksiyonlar.

3

sinh, cosh, tanh, acosh, asinh, atanh

İlgili hiperbolik işlevler.

4

exp

Üs alma işlevi. E x'i hesaplar

5

expt

Üs alma fonksiyonu, hem temel hem de güç alır.

6

sqrt

Bir sayının karekökünü hesaplar.

7

log

Logaritmik fonksiyon. Bir parametre verilir, sonra doğal logaritmasını hesaplar, aksi takdirde ikinci parametre temel olarak kullanılır.

8

conjugate

Bir sayının karmaşık eşleniğini hesaplar. Gerçek sayı olması durumunda, sayının kendisini döndürür.

9

abs

Bir sayının mutlak değerini (veya büyüklüğünü) döndürür.

10

gcd

Verilen sayıların en büyük ortak bölenini hesaplar.

11

lcm

Verilen sayıların en küçük ortak katını hesaplar.

12

isqrt

Belirli bir doğal sayının tam karekökünden küçük veya ona eşit en büyük tamsayıyı verir.

13

floor, ceiling, truncate, round

Tüm bu işlevler sayı olarak iki bağımsız değişken alır ve bölümü döndürür; floor orandan büyük olmayan en büyük tamsayıyı döndürür, ceiling orandan büyük olan daha küçük tamsayıyı seçer, truncate Oranın mutlak değerinden daha küçük olan en büyük mutlak değere sahip oran olarak aynı işaretin tamsayısını seçer ve round orana en yakın olan bir tamsayı seçer.

14

ffloor, fceiling, ftruncate, fround

Yukarıdakinin aynısını yapar, ancak bölümü kayan nokta sayısı olarak döndürür.

15

mod, rem

Bölme işleminde kalanı döndürür.

16

float

Gerçek bir sayıyı kayan noktalı sayıya dönüştürür.

17

rational, rationalize

Gerçek bir sayıyı rasyonel sayıya çevirir.

18

numerator, denominator

Rasyonel bir sayının ilgili kısımlarını verir.

19

realpart, imagpart

Karmaşık bir sayının gerçek ve sanal kısmını döndürür.

Misal

Main.lisp adında yeni bir kaynak kodu dosyası oluşturun ve içine aşağıdaki kodu yazın.

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

Kodu çalıştırdığınızda, aşağıdaki sonucu döndürür -

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