Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C]Умножение 2-х больших чисел


Автор: Compass 11.3.2011, 13:29
Дано 2 числа размером в 128 байт. Числа целые. Нужно их умножить и вывести. Можно простым умножением в столбик. заранее благодарен.

Автор: flashkpi 15.3.2011, 11:36
Пиши, выполню без проблем
icq: 588002847
email: [email protected]
skype: rfhfcerf

Автор: Silent 15.3.2011, 12:21
David Fowler, "Using Streaming SIMD Extensions (SSE2) to Perform Big Multiplications", v2.0:
Код

// A[0..i-1] = Multiplicand 1
// B[0..j-1] = Multiplicand 2
// T[0..i+j-1] = Result
// WORDS = number of words in multiplicand
// Assumptions: T is initialized to zero
// A, B are in LSB to MSB order
unsigned short A[WORDS];
unsigned short B[WORDS];
unsigned short T[WORDS];
BigMultiply ()
{
    unsigned short i,j,carry;
    unsigned long result;
    for(i = 0; i < WORDS; i++)
    {
        for(carry = 0, j = 0; j < WORDS, j++)
        {
            result = A[i] * B[j] + t[i+j] + carry;
            t[i+j] = LoWord(result);
            carry = HiWord(result);
        }
    }
    T[i+j] = carry;
}


Там же есть код (с использованием инструкций SSE2), который делает это же самое, но в 10 раз шустрее

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)