forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Библиотеки (http://forum.boolean.name/forumdisplay.php?f=124)
-   -   Lib_mmath - операции над числами (int & real) любой длины. (http://forum.boolean.name/showthread.php?t=14515)

YellowAfterlife 02.04.2011 22:12

Lib_mmath - операции над числами любой длины
 
Вложений: 2
Версия: 1.0
Эта библиотека позволяет выполнять операции (сейчас - сложение, вычитание, умножение) над целочисленными и вещественными числами любой длины.
О чем я:
Вложение 13198
Для сравнения, вы не можете произвести такую операцию с real\integer, в связи с ограниченным количеством данных, хранимых в типе. С другой стороны, в одном объекте String может хранится до двух миллиардов символов. Поэтому данная библиотека и приходит к вам.
Поддерживаемые типы:
Код:

uint - беззнаковое целочисленный
int - знаковый целочисленный
ureal - беззнаковый с точкой
real - знаковый с точкой

Поддерживаемые функции:
Код:

add - сложение
sub - вычитание
mul - умножение
cmp - сравнение (возращает -1\0\+1)

Для получения имени функции нужно сложить тип и функцию. К примеру, intadd, или realmul. Пример использования:
PHP код:

DrawText(RealMul('0.77','0.34'),0,0);
RePaint;
Delay(2400); 

Примечания:
* Формат числа: [-]целая часть[.дробная часть]
* Допускаются лишние нули в начале и конце числа - библиотека "исправит" число с таковыми автоматически.
* По результатам тестирования (на нескольких моделях телефонов), средняя скорость выполнения функций для чисел на 16 знаков состовляет 1.1 - 1.5мс. То есть в секунду можно выполнять около 500 операций с такими числами, до того как мидлет станет подлагивать.
* Пока что функции деления чисел в библиотеки нет. До момента, пока она будет добавлена в библиотеку, можно использовать
PHP код:

function IntDiv(ABstring): integer;
var 
CstringRinteger;
begin
:= 0;
:= A;
while 
IntCmp(CB) > do begin
:= IntSub(CB);
:= 1;
end;
IntDiv := R;
end

* Функция uRealCmp опущена из-за длины кода - используйте RealCmp.
* Мотивацией для написания библиотеки послужила эта тема: http://forum.boolean.name/showthread.php?p=184401

В общем, эта библиотека должна быть полезна, если переменных MidletPascalя вам недостаточно (будь то параметр в игре или обычное желание сделать калькулятор).
Удачной разработки :)


Часовой пояс GMT +4, время: 06:43.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot