Числові функції

Реферат на тему:

Числові функції.




Числові функції виконують основні математичні операції над цілими та дробовими числами. Користувач може обрати для роботи точну або наближену раціональну арифметику. Для точної раціональної арифметики розмір цілих чисел, чисельників та знаменників обмежений приблизно до 25000 десяткових знаків. 

Примітивними числовими функціями є додавання, віднімання, множення та ділення. В мові програмування Лісп вони є n-арними, тобто кількість їхніх аргументів необмежена. Синтаксис числових функцій наступний:



1. (+ num1 num2 ... numM) 	3. (* num1 num2 ... numM)

2. ( - num1 num2 ... numM) 	4. (/ num1 num2 ... numM)



Функція додавання повертає суму своїх аргументів. Функція віднімання повертає різницю першого аргумента та суми всіх інших аргументів. Функція множення повертає добуток своїх аргументів. Функція ділення повертає частку від ділення першого аргумента та добутку інших аргументів.



$ (+ 2 4 6 7)	$ (- 20 3 5 6)	$ (* 2 4 6)		$ (/ 24 2 2 3)

19			6			48			2



Функції збільшення та зменшення мають наступний синтаксичний вигляд:

1. (ADD1 n).	 Повертає значення, яке на одиницю більше за аргумент.

2. (SUB1 n). Повертає значення, яке на одиницю менше за аргумент.

3. (INCQ sym n) Збільшує значення символа sym на число n.

4. (DECQ sym n) Зменшує значення символа sym на число n.



Якщо функцію додавання (віднімання) одиниці запустити без аргументів, то виникне переривання по помилці: недостатня кількість аргументів. Якщо у функцію INCQ або DECQ передати один аргумент - символ, то збільшення (зменшення) значення символа відбудеться на одиницю. Окрім того, що функції INCQ та DECQ повертають результат арифметичної дії, значення символів, які передаються до них як аргументи, змінюється.



$ (ADD1 6)	$ (SUB1 10)	

7			9   



$ (SETQ S 10)	$ (INCQ S 14)	$ (DECQ S 4)

10			24			30



Функції MIN та MAX повертають символ з відповідно мінімальним (максимальним) значенням.

1. (MIN n1 n2 ... nM).		$ (MIN 12 3 45 67)	$ (MAX 1 2 5 3)

2. (MAX n1 n2 ... nM).		3				5



Числові вирази в Ліспі записуються в префіксній формі. Вираз 3*5+5*7 для обчислення треба подати у вигляді (+ (* 3 5) (* 5 7)), вираз (3+6)*7 — у вигляді (* (+ 3 6) 7). 



Функції порівняння менше та більше мають n аргументів.

1. ( < n1 n2 ... nM) Повертає істину, якщо n1 < n2 < ... < nM.

2. ( > n1 n2 ... nM) Повертає істину, якщо n1 > n2 > ... > nM.

3. ( /= n1 n2 ... nM) Повертає істину, якщо існують хоча б два числа, які не дорівнюють одне одному.



До функцій порівняння також відносяться <= , = та >=.

$ (< 2 4 6)	$ (>= 5 3 3 2)	$ ( /= 4 4 5)

T			T			T



$ (< 6 6 8 15)	$ (<= 6 6 8 15)	$ ( /= 4 4 4)

NIL			T			NIL



Функції округлення

(TRUNCATE m n), (ROUND m n), (CEILING m n) (FLOOR m n)



Ці функції використовуються для округлення дробових чисел до цілих. TRUNCATE виконує округлення до ближчого цілого у напрямку нуля. ROUND виконує округлення до ближчого цілого по значенню до m/n. CEILING виконує округлення до ближнього цілого по верхній межі, FLOOR — по нижній межі. Виклик будь-якої функції з двома аргументами (<f> m n) еквівалентний виклику функції з одним аргументом: (<f> (/ n m)), де f — будь-яка з наведених чотирьох функцій.



$ (TRUNCATE 6/4) 	$ (TRUNCATE -6/4) 

1				  -1			

$ (CEILING 9 4) 		 $ (CEILING -9 4)

3					-2

$ (FLOOR 6 4)		$ (FLOOR -6 4)	

1					-2			

$ (FLOOR 6/4)		$ (FLOOR -6/4)

1					-2



Функції остачі

(REM m n), (MOD m n), (DIVIDE m n)



Примітивна функція REM повертає остачу від ділення числа m на n. Функція MOD працює як REM, але повертає модуль остачі. Якщо (TRUNCATE m n) повертає q, а (REM m n) повертає r, то m=q*n+r. Функція (DIVIDE m n) повертає конс, CAR якого дорівнює частці, а CDR — остачі від ділення m на n.



$ (REM 6 4)	$ (DIVIDE 7 2)	$ (REM -6 4)	$ (MOD 6 4)

2			(3 . 1)		-2			2



Знак числа

(SIGNUM n)

Повертає значення -1, 0 або 1 якщо n відповідно від’ємне, 0, або додатне.



Модуль числа

 (ABS n) – Модуль числа n.



Чисельник та знаменник

(NUMERATOR n), (DENOMINATOR n) – чисельник та знаменник числа n.



$ (signum -5/3)			$ (abs -5/3)	

-1					5/3		

$ (numerator 10/8)		$ (denominator 10/8 )

5					4



Побітові логічні функції

(LOGAND n1 n2...nM), 	(LOGIOR n1 n2 ... nM), 

(LOGXOR n1 n2...nM),	(LOGNOT n).



$ (LOGAND 5 7 3)		$ (LOGIOR 4 2 1)	

1					7		

$ (LOGXOR 5 2 3)		$ (LOGNOT 6)

4					-7



Бульові функції

(NOT об’єкт) – заперечення

(AND форма1 форма2 ... формаN) – кон’юнкція

(OR форма1 форма2 ... формаN) – диз’юнкція



$ (AND (EQL ‘as ‘as) (< 2 4))	$ (OR NIL (< 4 56))	$ (NOT (EQL ‘d ‘g))

T						T				T



Зсув

(SHIFT m n) — зсув числа m на n бітів.

Якщо m - додатне, то функція повертає результат зсуву числа n вліво  на  m бітів. Якщо m - від’ємне, то число n зсувається вправо на -m бітів.



(DEFUN SHIFT (N M)

( (AND (INTEGERP N) (INTEGERP M))

       ((ZEROP M) N)

       ((PLUSP M) (SHIFT (* N 2) (SUB1 M)) )

       (SHIFT (TRUNCATE N 2) (ADD1 M))

)

(BREAK (LIST 'SHIFT N M) '"Noninteger Argument" )

)



$ (SHIFT 3 1)	$ (SHIFT 3 -1)	$ (SHIFT 4 -8)	$ (SHIFT 3 5)

6			1			0			96



$ (SHIFT D 10)

Noninteger Argument Break: (SHIFT D 10)



НСД, НСК

(GCD n1 n2 ... nM)

(LCM n1 n2 ... nM). 

Ці функції знаходять відповідно найбільший спільний дільник M чисел та найменше спільне кратне.



$ (GCD 24 66 600)		$ (LCM 24 66 600)

6					6600



Ірраціональні та трансцендентні функції



У файлі irratnal.lsp міститься великий набір ірраціональних та трансцендентних функцій. Аргументи тригонометричних функцій задаються в радіанах.



(EXP x)				експонента ex

(EXPT x y)			степінь xy

(LOG x y)			логарифм logyx. Якщо y не задано, основа вважається рівною e.

(LN x)				натуральний логарифм

(SQRT x)			квадратний корінь

(ISQRT x)			ціла частина з квадратного кореня

(SIN x) та (ASIN x)		сінус та арксінус

(COS x) та (ACOS x)	косинус та арккосинус

(TAN x) та (ATAN x)	тангенс та арктангенс

(RANDOM n)		генерується натуральне число, менше за n.