Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Умножение Карацубы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Найти максимальное и среднее расстояние между центральными вершинами неориентированного графа http://www.cyberforum.ru/cpp-beginners/thread868599.html
Здравствуйте. нужно найти максимальное и среднее расстояние между центральными вершинами неориентированного графа. Структура данных-список смежности. Может кто-нибудь может подсказать алгоритм?
C++ Присваивание значений членам класса Доброго времени суток. Возникла проблема, в классе имеется простая функция set, которая присваивает значения четырем элементам класса, однако создавая два объекта этого класса, выполнив функцию set... http://www.cyberforum.ru/cpp-beginners/thread868594.html
ошибка с полиморфизмом: программа не понимает, что нужно обращаться к наследуемой функции C++
Нужно организовать класс стек посредством связной очереди соответственно, абстрактный базовый класс и два производных: для int и double в главной функции создается объект базового класса, а потом...
Используя метод "Решето Эратосфена" C++
Помогите пожалуйста Используя метод "Решето Эратосфена", по заданному натуральному 7V>1 найти все простые числа, меньшие N.
C++ Зашифровать текст следующим образом: записать его в матрицу по строкам, а затем переписать по спирали от центра. Прочесть зашифрованный текст http://www.cyberforum.ru/cpp-beginners/thread868547.html
Помогите пожалуйста решить. Зашифровать текст следующим образом: записать его в матрицу по строкам, а затем переписать по спирали от центра. Прочесть зашифрованный текст. Распечатать те пары...
C++ Error: Перегрузка оператора вывода в поток, виртуальные методы Ребят помогите плиз понять в чем дело. Почему возникает ошибка? В соответствии с моими ожиданиями объекты потомки класса transport (т.е Car и Truck) должны были неявно преобразоваться к классу... подробнее

Показать сообщение отдельно
vlad_light
4 / 4 / 0
Регистрация: 24.09.2012
Сообщений: 178
19.05.2013, 13:47  [ТС]
Задачу в студию.
Нужно реализовать алгоритм умножения Карацубы.
Я написал умножение "в столбик" (функция GSA (const int*,const int*, int*, const int)) и нашёл в интернете реализацию Алгоритма Карацубы (2-ой cut). Отличия в том, что я использую 32-ух разрядные числа (вместо 0...9) в одной ячейке, т.е. мне нужно подогнать алгоритм Карацубы под 32-ух разрядные числа.
А что не так?
Приведенный мною алгоритм выдаёт неправильный результат.
Основной упор делается на скорость.

Добавлено через 17 часов 39 минут
Помогите, пожалуйста, найти ошибку
Вродь алгоритм всё правильно должен считать, но, к сожалению, не считает
У меня уже мозг

Добавлено через 17 часов 41 минуту
Урааа!!!
Я нашел ошибку. В строках 76-77 и 93 несогласовано работают "+" и "-". Теперь подскажите, как их согласовать?
Если их поменять местами то в строках 76-77 может возникнуть переполнение на 1 бит, следовательно число не поместится в соответствующую ячейку в строке 86. Если их перемножить отдельно, то у нас добавится ещё одно умножение и столбик станет работать быстрее (поскольку использует меньше сложений и столько же умножений).

Не по теме:

На всякий случай напишу, чем отличаются "+" и "-":
http://www.cyberforum.ru/cgi-bin/latex.cgi?A\times B=(A_{low}+A_{high}x)\times (B_{low}+B_{high}x)=
http://www.cyberforum.ru/cgi-bin/latex.cgi?A_{low}\times B_{low}+A_{high}\times B_{high}x^2+((A_{low}+A_{high})\times (B_{low}+B_{high})-A_{low}\times B_{low}-A_{high}\times B_{high})\times x=
http://www.cyberforum.ru/cgi-bin/latex.cgi?A_{low}\times B_{low}+A_{high}\times B_{high}x^2+((A_{low}-A_{high})\times (B_{high}-B_{low})+A_{low}\times B_{low}+A_{high}\times B_{high})\times x

0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru