Heim > Backend-Entwicklung > C++ > Wie können wir die schnellstmögliche Bignum-Quadratur erreichen?

Wie können wir die schnellstmögliche Bignum-Quadratur erreichen?

Barbara Streisand
Freigeben: 2024-12-20 21:13:11
Original
924 Leute haben es durchsucht

How Can We Achieve the Fastest Possible Bignum Squaring?

Schnelle Bignum-Quadrat-Berechnung

Problem:
Gegeben sind zwei Bigints, die als dynamische Arrays von vorzeichenlosen DWORDs dargestellt werden, Berechnen Sie y = x^2 so schnell wie möglich ohne Präzision Verlust.

Kontext:
Das Problem entsteht im Zusammenhang mit der Beschleunigung von Bignum-Divisionen, bei denen Quadratoperationen von entscheidender Bedeutung sind.

Frage:
Wie man y = x^2 am effizientesten berechnet Art und Weise?

Antwort:
Anfänglicher Ansatz:
Der anfängliche Ansatz verwendet eine Multiplikation y = xx, wodurch mehrfache Multiplikationen durch Reduzieren vermieden werden NN Multiplikationen zu (N 1)*(N/2) Multiplikationen.

Karatsuba-Multiplikation:
Der Karatsuba-Multiplikationsalgorithmus wird verwendet, um Multiplikationsoperationen weiter zu optimieren. Es verwendet Divide-and-Conquer, um die Multiplikation zu beschleunigen, indem es große Zahlen in kleinere Teile zerlegt.

Leistungsmessungen:
Tests haben gezeigt, dass die optimierte Karatsuba-Multiplikation die anfängliche O( N^2) Multiplikationsalgorithmus für größere Zahlen (ca. 32*98 Bit).

Geändert Schönhage-Strassen-Multiplikation für die SQR-Implementierung:
Die modifizierte Schönhage-Strassen-Multiplikation, bekannt als FFT (Fast Fourier Transform), wird implementiert, um SQR-Operationen zu beschleunigen. Aufgrund des Genauigkeitsverlusts gilt es jedoch als unbrauchbar.

NTT-Optimierung:
Die NTT (Number Theoretic Transform) wird zur Optimierung von Multiplikations- und SQR-Operationen verwendet. Es ist schneller als FFT, erfordert jedoch modulare Arithmetik und ist durch die Zahlengröße begrenzt.

Aktueller Status:
Die aktuelle Implementierung verwendet den optimierten Karatsuba-Algorithmus für SQR-Operationen bei der Zahlengröße einen bestimmten Schwellenwert überschreitet und der anfängliche schnelle SQR-Ansatz für kleinere Zahlen.

Hervorragend Fragen:
Der Autor räumt ein, dass es möglicherweise eine trivialere oder effizientere Lösung gibt, die übersehen wurde. Die Suche nach einem besseren Algorithmus geht weiter.

Das obige ist der detaillierte Inhalt vonWie können wir die schnellstmögliche Bignum-Quadratur erreichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage