RSS RSS
Добавлено: 2010-08-08 12:12:45   Тестирование cBigNumber 2.0
Raul

Зарегистрирован(а): 17.03.2010

Сообщений: 101 (просмотреть)
Тестовая сборка доступна на странице загрузки
http://imach.uran.ru/cbignum/indexr.html

- ИЗМЕНЕНИЕ: Вместо типа long применяется CBNL, определенный в Cbnl.h
для обработки 64-битных чисел под Visual C++ в 64-битном
режиме.

- ИЗМЕНЕНИЕ: Методы code(), loword(), hiword(), bits(), exbits()
теперь выдают значение типа CBNL, которое в зависимости
от транслятора может быть long, __int64, __int128 и т.д.

- Новый метод преобразования toCBNL().

- Программы Arifexp64.exe, Matrix64.exe, Miller64.exe для 64-разрядной
Windows (могут работать медленнее, потому что ассемблерная оптимизация
еще не готова).

- Файл Millrand.bat вызывает Miller64.exe под 64-разрядной Windows
для ускорения тестирования.

Ответить | Цитировать
Добавлено: 2010-09-30 19:37:37
Raul

Зарегистрирован(а): 17.03.2010

Сообщений: 101 (просмотреть)
Готова вторая тестовая сборка.

- Реализовано оптимизированное x64 умножение в дополнительном пакете,
дающее 9-кратное ускорение в 64-разрядном режиме.

- ИЗМЕНЕНИЕ: Число со значением 0 может состоять из 0 слов.

- Все конструкторы, операции присваивания и метод set() не выделяют
память для числа 0, если память не была распределена ранее
(память выделяется при присваивании ненулевого значения или при
выполнении модифицирующей операции, даже если ее результат 0).

- Методы gc() и pack() освобождают всю память, выделенную под число 0.

- Документирован метод clear(), обеспечена его корректная работа.

- Программа Arifexp и тестовый файл Arifrand выполняют операции
~, @(abs), U(unsign), M(bits), U(exbits).

- Усовершенствован метод оценки времени в программе Arifexp.

- ИСПРАВЛЕНО: Некорректная реализация cBigAbs() и setabs().

- ИСПРАВЛЕНО: Некорректная реализация cBigExBits() и setexbits(),
неправильный пример в описании cBigExBits().

- ИСПРАВЛЕНО: Ошибка распределения памяти в методах преобразования
числа в строку и строки в число.

- ИСПРАВЛЕНО: Неверный результат cBigCompl() и setcompl()
для числа из 0 слов.

- ИСПРАВЛЕНО: Неверный результат +, -, ^, &, | для числа из 0 слов
и машинного числа.

- ИСПРАВЛЕНО: Метод loword() может выдать неверный результат для
числа из 0 слов.

- ИСПРАВЛЕНО: Порча памяти методами tab() и smp() для числа из 0 слов.

- ИСПРАВЛЕНО: Ошибка assert в отладочном режиме при возведении
в степень по модулю базы из 0 слов.

- ИСПРАВЛЕНО: Оценка времени сложения и вычитания в программе Arifexp.

- ИСПРАВЛЕНО: Ошибки контроля индексов в отладочном режиме
для числа из 0 слов.

Ответить | Цитировать
Добавлено: 2010-10-01 14:18:54
Raul

Зарегистрирован(а): 17.03.2010

Сообщений: 101 (просмотреть)
Дистрибутив обновлен (вчера он был собран с ошибками) + добавлены 64-разрядные тесты для Intel Core i7 и AMD Phenom.

Ответить | Цитировать
Добавлено: 2010-11-20 20:58:54
Raul

Зарегистрирован(а): 17.03.2010

Сообщений: 101 (просмотреть)
Готова третья и последняя тестовая сборка.

- Соглашение fastcall для вызова критических функций в 32-разрядном
режиме Visual C++ как опция компиляции в Cbnl.h.
По умолчанию отключено, т.к. неэффективно.

- Альтернативный 32-разрядный ассемблерный код для Visual C++ с
соглашением о связи fastcall как опция компиляции в Cbnl.h.
По умолчанию отключен, т.к. неэффективен.

- Удалены лишние операции из 64-разрядного ассемблерного кода.

- Документированы макро _CBIGNUM_DEF_ALLOC и _CBIGNUM_NCHECKPTR.

- Поправлены разделы 1.1, 1.2 и 4.3 документации.

Ответить | Цитировать
Добавлено: 2010-11-23 19:49:26
Raul

Зарегистрирован(а): 17.03.2010

Сообщений: 101 (просмотреть)
Дополнение к третьей тестовой сборке:

- Аппаратное умножение с применением ассемблерной команды MUL для
GNU G++ (в дополнительном пакете), выполняется в 8 раз быстрее.

- Исполняемые файлы для Linux с ускоренным 32/64-разрядным
аппаратным умножением.

Ответить | Цитировать
Добавлено: 2011-03-31 21:39:52
Raul

Зарегистрирован(а): 17.03.2010

Сообщений: 101 (просмотреть)
Третья тестовая сборка получила статус beta public.

Ответить | Цитировать