|
Добавлено: 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.
|
Ответить
| Цитировать
|