Длинная арифметика (Bignum arithmetic) c COM-интерфейсом (ActiveX) на библиотеках MPIR

В продукте реализованы dual-интерфейсы с Automation-совместимыми типами данных и структур (поддержка как раннего связывания, так и позднего). 

Реализовано два класса/объекта:

1. Класс целых чисел с арифметикой (BignumArithmeticInteger

2. Класс чисел с плавающей точкой (BignumArithmeticFloat).

При создании экземпляра класса создается массив из 256 чисел с арифметикой.
К числам можно обращаться по индексам (можно и по буквенным обозначениям, см. код ниже)
BignumArithmeticInteger (Bignum) увеличивается в памяти по мере расчета автоматически, перераспределяя память.
BignumArithmeticFloat (Bignum), задается изначально в битах, т.к. дробь может быть бесконечной (по умолчанию принимается минимальный размер).
Размер чисел ничем не ограничен, кроме вашей оперативной памяти.

Регистрация COM реализовано как под админом, так и под пользователем (актуально в офисной части клиентов)
Регистрация стандартная:
Админ: Regsvr32 "FullName.DLL"
Пользователь: Regsvr32 /i /n "FullName.DLL"

Удалить из реестра: Regsvr32 /u "FullName.DLL"

Пример использования №1. Подключаем/регистрируем библиотеку (разовая операция), пишем код в 1С:

A=1; B=2; C=3; 
I = Новый COMОбъект("BedvitCOM.BignumArithmeticInteger"); //Создаем стили массив целых больших чисел и арифметикой (класс)
I.BignumSet(A,"12324344435654132546546546564453131");  //задаем данные в число A
I.BignumSet(B,"34534534546546546546554665513213211");  //задаем данные в число B
I.Sum(C,A,B); //C=A+B
Сообщить(I.Bignum(C)); //смотрим данные в числе С
I.Clear(); //освобождаем память для всего объекта I

Пример использования №2. Подключаем/регистрируем библиотеку (разовая операция), пишем код в 1С:

I = Новый COMОбъект("BedvitCOM.BignumArithmeticInteger"); //Создаем стили массив целых больших чисел и арифметикой (класс) (в количестве - 256)
F = Новый COMОбъект("BedvitCOM.BignumArithmeticFloat"); //Создаем стили массив больших чисел с плавающей точкой и арифметикой (класс) (в количестве - 256) 
I.BignumSet (1, "1111111111111111111111111"); //добавляем число из 25 единиц в первое целое длинное число
F.SizeBitsSet(1, 256); //задаем размер в битах для 1го числа с плавающей точкой
F.SizeBitsSet(2, 256); //задаем размер в битах для 2го числа с плавающей точкой
F.SizeBitsSet(3, 256); //задаем размер в битах для 3го числа с плавающей точкой
F.BignumSet(1, I.Bignum(1)); //копируем данные из одного класса чисел в другой (из первого в первое)
F.Clone (2, 1); //копируем в рамках одного класса число из первого во второе, т.е. число 2 = числу 1
//в рамках одного класса такое копирование на порядки быстрее
F.Root (3, 2); //вычисляем корень из второго числа в третье.
//логика всей арифметики в классах предполагает получение результата в первом длинном числе (левой части выражения),
//по аналогии с "=", т.е. число3 = кореньиз(2число)
Сообщить(F.Bignum(3));//сообщить результат из третьего числа    
//1.054092553389459777332964462106278508433529513126845217458167652113557491253756E+12
I.Help(); //смотрим Help
F.Clear(3); //освобождаем память 3-го числа
I.Clear(); //освобождаем память для всего объекта I
F.Clear(); //освобождаем память для всего объекта F

Справка (.Help) содержит:

Объект IBignumArithmeticInteger - содержит 25 свойств и методов. 

Объект BignumArithmeticFloat - содержит 23 свойства и метода.

 
Описание свойств и методов:
 
Интерфейс (С/С++) (свойства, методы, краткое описание):
 
Ресурсы:

MPIR library, Edition 3.0.0 (freely distributable librarys)
http://mpir.org/
+ my code written in C / C ++

©2018, BedvitCOM
License: Freely distributable library

 

24/04/2018 - Новая версия BedvitCOM v.1.0.0.3  (поддержка х32 и х64)

1. Добавлены новые функции в два класса библиотеки COM - арифметика длинных чисел с обычными, т.е. теперь можно совершать арифметические действия длинных чисел с обычными.
2. Добавлен механизм очистки/освобождения памяти как для одного числа, так и для класса/объекта в целом.
3. Сделано новое описание для всех свойств и методов двух классов на русском языке в справке (см. под спойлером "Описание свойств и методов" и в .HELP)

Скриншоты


BedvitCOM5.PNG

BedvitCOM4.PNG

BedvitCOM3.PNG

Файлы

Наименование Файл Версия Размер Кол. Скачив.
BedvitCOMv1.0.0.2
.zip 376,22Kb
1
.zip 1.0.0.2 376,22Kb 1 Скачать
BedvitCOMv1.0.0.3
.zip 392,02Kb
0
.zip 1.0.0.3 392,02Kb 0 Скачать

Полная версия

© ООО "Инфостарт", 2006-2023 www.infostart.ru