Он работает для одного теста, но не работает для другого, и я не нашел проблема. Работает следующий тест (числа выражены в системе счисления 2^8):
Код: Выделить всё
Integerc const a{122, 17, 200,43};
Integerc const b{23, 117};
auto const qr{computeQrByDivision(a, b)};
QVERIFY((qr.first == Integerc{5, 52, 54}));
QVERIFY((qr.second == Integerc{17, 125}));
Код: Выделить всё
Integerll const a("0b10101011110100110001100110101111100010110000011001001100100101110100111011100110100100101110001010001100110111011001101010011011000010111111001010110101010");
Integerll const b("0b100010001011011011011011001110101100100110101011101100101000011011111110010011010101101010101011111110010101010");
auto const qr{computeQrByDivision(a, b)};
QVERIFY((qr.first == Integerll{22110129672729ull}));
QVERIFY((qr.second == Integerll{19184386057769ull, 9219185875676460304ull}));
Код является шаблонным и очень длинным. , но доступен здесь (функция ComputeQrByDivision(), строка 3001 из Integer.h): https://github.com/Julien-Livet/TestInt ... h-division.
Я реализую сначала алгоритм двоичного поиска, затем алгоритм двоичного деления. Теперь я хочу настроить длинное деление.
Подробнее здесь: https://stackoverflow.com/questions/793 ... ig-numbers