Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   

Die mobilen Seiten von c++.de:
http://m.c-plusplus.de
Infos hier [BETA]

  
c++.de :: Assembler ::  Schnelle Rechenoperationen mit großen zahlen  
Gehen Sie zu Seite Zurück  1, 2, 3, 4
  Zeige alle Beiträge auf einer Seite
Auf Beitrag antworten
Autor Nachricht
volkard
Moderator

Benutzerprofil
Anmeldungsdatum: 06.04.2000
Beiträge: 25688
Beitrag volkard Moderator 22:16:08 27.05.2012   Titel:              Zitieren

SpR schrieb:
könnte jemand mal den Namen oder nen Link zu den Algorithmen geben, welcher schneller als Karatsuba sind, heißt nicht das ich sie verstehe würde mir aber gerne einmal das Prinzip ansehen.

Wikipedia "Karastuba" verlinkt auf die schnelleren.
Und sagt, daß bei Deinen 4096 Bits die schnelleren noch gar nicht so greifen.

_________________
ewr-dienstleister krankenversicherung
SpR
Unregistrierter




Beitrag SpR Unregistrierter 22:50:26 27.05.2012   Titel:              Zitieren

Okay vielen Dank schöne Pfingsten noch.
MfG SpR
nachtfeuer
Moderator

Benutzerprofil
Anmeldungsdatum: 08.04.2010
Beiträge: 1432
Beitrag nachtfeuer Moderator 14:46:19 30.05.2012   Titel:              Zitieren

Ich würde empfehlen, erstmal zu gucken, und zu verstehen, wie die Karatsuba-Multiplikation arbeitet, denn sie läßt sich überraschend angenehm und leicht in Assembler umsetzen.

Darüber hinaus ist es sehr hilfreich, Binärmultiplikation aufzuschreiben und zu verstehen. Also 1*1 ist ja noch einfach. Aber wieviel ist 11 * 11 (binär)? oder
wieviel wäre dann 1111111111111111 * 1111111111111111?

_________________
HhxV9rU5D8o236dZF7bMQ4Dys1_TuUmI4mZM.d2qD15ERi_0dgcHP0UViL3e-4WUi0nXXNwDYqA10sLEgjBVtdhE
tpehI7qHRZESiO_7LhPZFMQWNoiVrJDsEGD26n.H0lV8wOwYAe8UsbUJe5m65NyPaghnSoMzROo2gJ6nTeVSkxLk
a6hvNe11r9U7xddV9mq6NEi_V0C9k4augEKVSW3PV8LgCYum7KaXc9Ijq_ZT7zhspI.=-
volkard
Moderator

Benutzerprofil
Anmeldungsdatum: 06.04.2000
Beiträge: 25688
Beitrag volkard Moderator 14:49:24 30.05.2012   Titel:              Zitieren

nachtfeuer schrieb:
Darüber hinaus ist es sehr hilfreich, Binärmultiplikation aufzuschreiben und zu verstehen.

Binär? Wollten wir nicht übungshalber das 256-er-System nehmen und dann das 4294967296-er benutzen?

_________________
ewr-dienstleister krankenversicherung
nachtfeuer
Moderator

Benutzerprofil
Anmeldungsdatum: 08.04.2010
Beiträge: 1432
Beitrag nachtfeuer Moderator 22:44:06 30.05.2012   Titel:              Zitieren

volkard schrieb:

Binär? Wollten wir nicht übungshalber das 256-er-System nehmen und dann das 4294967296-er benutzen?


4294967296-er? Ist das nicht etwas veraltet? - Bei 32Bit Compi mit SSE ginge zumindest ein 2^128-er Zahlensystem.
Aber Avx...256er Zahlensystem als Einstiegsdroge und dann weiter machen mit 2^256er.

Man fragt sich gelegentlich, was eigentlich so ein funktionaler Sprachinterpreter wie z. B. der ghci Haskellinterpreter intern so treibt, wenn man mit so Begriffen wie 2*(2^256)^3 + 4 * (2^256)^2 + 2* (2^256) usw. herumrechnet oder z.B. (2^256)^64 -1.

(aber 256er? da hat wohl einer mit 8 Bit Compies angefangen was?) ;)

_________________
HhxV9rU5D8o236dZF7bMQ4Dys1_TuUmI4mZM.d2qD15ERi_0dgcHP0UViL3e-4WUi0nXXNwDYqA10sLEgjBVtdhE
tpehI7qHRZESiO_7LhPZFMQWNoiVrJDsEGD26n.H0lV8wOwYAe8UsbUJe5m65NyPaghnSoMzROo2gJ6nTeVSkxLk
a6hvNe11r9U7xddV9mq6NEi_V0C9k4augEKVSW3PV8LgCYum7KaXc9Ijq_ZT7zhspI.=-
Christoph
Moderator

Benutzerprofil
Anmeldungsdatum: 30.04.2001
Beiträge: 5945
Beitrag Christoph Moderator 00:04:22 31.05.2012   Titel:              Zitieren

nachtfeuer schrieb:
Man fragt sich gelegentlich, was eigentlich so ein funktionaler Sprachinterpreter wie z. B. der ghci Haskellinterpreter intern so treibt, wenn man mit so Begriffen wie 2*(2^256)^3 + 4 * (2^256)^2 + 2* (2^256) usw. herumrechnet oder z.B. (2^256)^64 -1.
Im Zweifelsfall steckt oft libgmp dahinter, weil man es selber nur schwer schneller hinbekommt. Bei ghc ist das so.

_________________
Wenn Word für Längeres geeignet wäre, würde es nicht Word, sondern Sentence, Page oder Article heißen.
nachtfeuer
Moderator

Benutzerprofil
Anmeldungsdatum: 08.04.2010
Beiträge: 1432
Beitrag nachtfeuer Moderator 11:01:51 31.05.2012   Titel:              Zitieren

Mir fällt noch ein, es gab Anfang letzten Jahres einen ganz ähnlichen Thread,
( http://www.c-plusplus.de/forum/280689 )
und ein Problem des TOs war glaub ich, neben der fehlenden Erfahrung mit ein bißchen Herumprobieren, dass die Bitmultiplikation/Addition nicht gleich verstanden wurde, dabei ist das Prinzip eigentlich sehr einfach, wenn man es mal auf Papier gemacht hat. Wenn man die Binärmultiplikation/Addition verstanden hat, und das entgegenkommen der Prozessorbefehle, versteht sich auch der Asm-Code gleich viel besser.

Wenn man von großen Zahlen wie (2^256)^64 lediglich eins abziehen will, und das ist nicht ganz trivial, kann man die Zahl von hinten nach vorn nach der nächstbesten binären 1 absuchen. Bei Zahlen wie 2^x steht die 1 natürlich ganz vorne bzw. ganz links. Bei der Zahl (2^256)^64 - 1 steht dagegen die erste 1 ganz hinten bzw. ganz rechts.

Man sucht also von rechts die nächstbeste 1, macht aus dieser (theoretisch) eine Null und aus dem Rest ( den folgenden Nullen) per
Assembler:
not reg

eine 1.
Direkt auf der Registerebene (der Abschnitt mit der 1) macht man (praktisch) einfach ein
Assembler:
dec reg

(dec reg ginge natürlich auch bei den restlichen, hinteren (nuller) Abschnitten, da ja 00 - 1 FF sein muß)
(und ginge so ganz ohne Carryflag (aber mit CX also Cindy, der kleinen Zähltochter vom Graf Zahl...) )

_________________
HhxV9rU5D8o236dZF7bMQ4Dys1_TuUmI4mZM.d2qD15ERi_0dgcHP0UViL3e-4WUi0nXXNwDYqA10sLEgjBVtdhE
tpehI7qHRZESiO_7LhPZFMQWNoiVrJDsEGD26n.H0lV8wOwYAe8UsbUJe5m65NyPaghnSoMzROo2gJ6nTeVSkxLk
a6hvNe11r9U7xddV9mq6NEi_V0C9k4augEKVSW3PV8LgCYum7KaXc9Ijq_ZT7zhspI.=-


Zuletzt bearbeitet von nachtfeuer am 17:58:24 31.05.2012, insgesamt 1-mal bearbeitet
c++.de :: Assembler ::  Schnelle Rechenoperationen mit großen zahlen  
Gehen Sie zu Seite Zurück  1, 2, 3, 4
Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.