Главная » Free Pascal » Модуль Math Free Pascal

0

Дополнительный набор подпрограмм вычисления элементарных (табл. 13.3) и специальных (табл. 13.4) функций сосредоточен в модуле Math.

Таблица 13.3. Элементарные функции и процедуры модуля Math

Формат вызова

Значение

Формат вызова

Значение

v:=arccos(x);

arccos( x)

v:=lnexp1(x);

ln( x   1)

v:=arccosh(x);

v:=arcosh(x);

arch( x)

v:=log10(x);

log10(x)

v:=arcsin(x);

arcsin( x)

v:=log2(x);

log2 (x)

v:=arcsinh(x);

v:=arsinh(x);

arsh( x)

v:=logn(x,y);

log y ( x)

v:=arctan2(x,y);

tg(v)    y x

v:=max(x,y);

v:=min(x,y);

Тип x, y — integer, int64 или extended

v:=arctanh(x);

v:=artanh(x);

arth(x)

v:=power(x,y);

x y

v:=cosecant(x); v:=csc(x);

1

sin( x)

v:=sec(x);

v:=secant(x);

1

cos( x)

v:=cosh(x)

ex     e  x

2

v:=sign(x);

v=-1, если x<0 v=0, если x=0

v=+1, если x>0

v:=cot(x);

v:=cotan(x);

cos( x)

sin( x)

sincos(x,s,c);

s    sin( x)

c    cos( x)

v:=hypot(a,b);

a2    b2

v:=sinh(x);

ex     e  x

       

2

v:=intpower(x,i);

xi  (x — integer)

v:=tan(x);

sin( x)

cos( x)

v:=ldexp(x,i);

x   2i

v:=tanh(x);

ex     e  x

ex     e  x

Обратите внимание на процедуру sincos. За счет использования команд сопро- цессора фирмы Intel эта процедура выполняется быстрее, чем два последователь- ных обращения к функциям sin и cos.

Таблица 13.4. Вспомогательные функции и процедуры модуля Math

Формат вызова

Выполняемое действие

i:=ceil(x);

Округление к большему ближайшему целому

i:=CompareValue(x,y);

i =-1, если x<y; (x,y:integer,int64,extended)

i = 0, если x=y i = 1, если x>y

DivMod(k1, k2, d, r);

d:=k1 div k2;

r:=k1 mod k2;

j:=EnsureRange(i,min,max);

j:=i если  min i max j:=min если  i<min

j:=max если  i>max

i:=floor(x);

Округление к ближайшему меньшему целому

FrExp(x,fr,exp);

Выделение дробной части (fr) и порядка (exp) вещественного значения x

v:=IfThen(be, et, ef);

if be then v:=et else v:=ef;

Оба типа et и ef — integer, int64, double

или string

bv:=InRange(i,min,max);

bv:=True, если min i max, иначе bv:=False.

Тип i — integer или int64

bv:=IsInfinity(x);

bv:=True, если x=1/0 (Infinity = + )

bv:=IsNaN(x);

bv:=True, если x=0/0 (NaN — Not a Number)

bv:=IsZero(x);

bv:=True, если x=0

y:=RoundTo(x,k);

Округление x до k-й десятичной цифры (k 0 — в целой части, k<0 — в дробной части)

bv:=SameValue(x,y);

bv:=True, если x y (оба — extended)

bv:=SameValue(x,y,eps)

bv:=True, если |x – y| eps

y:=SimpleRoundTo(x,k);

То же, что и RoundTo

К операции банковского округления (round) в модуле Math добавились еще две операции округления, используемые в коммерции: округление к ближайшему большему целому (округление в пользу продавца) и округление к ближайшему меньшему целому (округление в пользу покупателя):

ceil ( 1.1) = 2

ceil (-1.1) =-1

ceil ( 1.8) = 2

ceil (-1.8) =-1

floor( 1.1) = 1

floor(-1.1) =-2

floor( 1.8) = 1

floor(-1.8) =-2

Две дополнительные функции округления, разницу между возвращаемыми ре- зультатами у которых мы не обнаружили, позволяют произвести округление с точ- ностью до заданной десятичной цифры:

RoundTo(15849.15849, 0)=15849.0000000000

RoundTo(15849.15849, 1)=15850.0000000000

RoundTo(15849.15849, 2)=15800.0000000000

RoundTo(15849.15849, 3)=16000.0000000000 RoundTo(15849.15849,-1)=15849.2000000000 RoundTo(15849.15849,-2)=15849.1600000000 RoundTo(15849.15849,-4)=15849.1585000000

Кроме упомянутых выше элементарных функций в состав модуля Math вклю- чены и другие подпрограммы, не так часто упоминаемые в учебниках по програм- мированию.

Одну из таких групп составляют подпрограммы обработки целочисленных и вещественных векторов (табл. 13.5). Их аргументом является либо открытый мас- сив соответствующего типа (например, A), либо указатель на массив (например, pA)

в сочетании с количеством N обрабатываемых элементов.

Таблица 13.5

Формат вызова

Выполняемое действие

k:=MaxIntValue(A);

Поиск максимального значения в целочисленном массиве

v:=MaxValue(A);

v:=MaxValue(pA,N);

Поиск максимального значения в целочисленном или вещественном массиве

k:=MinIntValue(A);

Поиск минимального значения в целочисленном массиве

v:=MinValue(A);

v:=MinValue(pA,N);

Поиск минимального значения в целочисленном или вещественном массиве

v:=norm(A);

v:=norm(pA,N);

Вычисление нормы    a2     a2     …   a2

1         2                 n

Источник: Кетков, Ю. Л., Свободное программное обеспечение. FREE PASCAL для студентов и школьников, Ю. Л. Кетков, А. Ю. Кетков. — СПб.: БХВ-Петербург, 2011. — 384 с.: ил. + CD-ROM — (ИиИКТ)

По теме:

  • Комментарии