Vedische Mathematik auf µControllern?

Gast #2312884
Lesenswert?

es gibt auch Bücher über binäre Mathematik!
Leider etwas in vergessenheit geraten da es heutzutage ja schnellere 
Taktraten gibt.
Bestimmte Algorithmen lassen sich so 3-4x schneller abarbeiten als mit 
nem Top-Compiler.
#2312885
Lesenswert?

Bestimmt interessant das mal durch zu spielen- ABER glaubst du nicht, 
dass die Chip-Bauer nicht auch was am Kasten haben?

ich persönlich kann mir nicht vostellen, dass du genug Zeit mit einer 
Beschleunigung raus bekommst, um die Zeit der ganzen Überprüfungen 
wieder rein zu holen.

Ausserdem haben die meisten Compiler schon selber Optimierungen dabei- 
am bekanntesten das Shiften wenn es um  ganzzahlige(pos und neg!) 
Potenzen von 2 geht.
Gast #2312894
Lesenswert?

Bastler schrieb:
> Bestimmte Algorithmen lassen sich so 3-4x schneller abarbeiten als mit
> nem Top-Compiler.

Hast du zufällig ein Beispiel zur Hand?


Marcus B. schrieb:
> Ausserdem haben die meisten Compiler schon selber Optimierungen dabei-
> am bekanntesten das Shiften wenn es um  ganzzahlige(pos und neg!)
> Potenzen von 2 geht.

Ach so, dann sind solche Rechenabkürzungswege mehr oder weniger ein 
alter Hut!?
Gast #2312897
Lesenswert?

olli schrieb:
> Was meint Ihr?

Diese Rechenregeln gelten erstmal nur für das 10er-System.
Der Grund, warum gerade dieses nicht bei ALUs erwendet wird, ist die 
Einfachheit des 2er-Systems.

Eine Addition einer Stelle bricht sich auf 4 Fälle herunter 
(00,01,10,11) und ist somit platzgünstig und ohne Spezialfälle 
realisierbar und außerdem beliebig skalierbar (mit Übertrag) auf z.B. 
128bit und mehr.
Auch dauert eine Addition im 2er-System immer gleichlang, was der ganzen 
Ablaufsteuerung in Prozessoren zu gute kommt.
:-)
Gast #2312940
Lesenswert?

Les lieber die Wiki-Artikel über den Karatsuba und den 
Toom-Cook-Algorithmus. Das sind Algorithmen die IRL auch was bringen. 
Sachen wie Vedische Mathe oder das Trachtenberg System sind Algorithmen, 
von denen man nur profitiert, wenn man die Rechnung im Kopf macht.

>es gibt auch Bücher über binäre Mathematik!
Irgendwelche (E)Book Links?
Gast #2312943
Lesenswert?

Leider habe ich selbst keine Bücher oder Titel zu den Büchern.
Ich habe auf einem Sminar mite einem anderen Entwickler geredet.
Dieser meinte dass sich diese Firma kleine Funktionen in Assembler eben 
mit dieser (teils vergessenen) Mathematik zurechtgelegt haben und nun 
3-4x schneller sind als aktuelle Comnpiler.
#2312955
Lesenswert?

Bastler schrieb:
> Leider habe ich selbst keine Bücher oder Titel zu den Büchern.
> Ich habe auf einem Sminar mite einem anderen Entwickler geredet.
> Dieser meinte dass sich diese Firma kleine Funktionen in Assembler eben
> mit dieser (teils vergessenen) Mathematik zurechtgelegt haben und nun
> 3-4x schneller sind als aktuelle Comnpiler.

Er lügt.
3-4 ist nicht drinnen.
#2312966
Lesenswert?

Marcus B. schrieb:

> ich persönlich kann mir nicht vostellen, dass du genug Zeit mit einer
> Beschleunigung raus bekommst, um die Zeit der ganzen Überprüfungen
> wieder rein zu holen.

Sewh ich auch so.
Diese ganzen Regeln funktionieren nur deshalb, weil wir Menschen 
wesentlich schneller Entscheidungen treffen können, als wir rechnen 
können. Wir sehen eine Zahl an und 'wissen' ohne lange nachzudenken, 
dass die letze Ziffer 5 ist und daher Sonderregeln greifen.
Einem Computer ist das aber egal. Wenn der feststellen soll, ob die 
letzte Ziffer 5 ist, muss er erst mal eine Modulo-Division machen. 
Super. Erst mal Modulo-Dividieren um rauszufinden ob er für eine 
Multiplikation mit 5 den schnellen Weg gehen kann, oder ob die 
Multiplikation konventionell durchgeführt werden muss. Das wirds dann 
wohl nicht bringen.

> Ausserdem haben die meisten Compiler schon selber Optimierungen dabei-
> am bekanntesten das Shiften wenn es um  ganzzahlige(pos und neg!)
> Potenzen von 2 geht.

Jup. Compiler haben für viele Dinge in denen Konstante involviert sind, 
spezielle Vorschriften mit, die bei Bedarf zum Einsatz kommen.
zb Multiplikation mit 10
Einfach. 2 mal links shiften, die Originalzahl nochmal dazugezählt und 
noch einmal links geshiftet.

Die generischen Algorithmen, die Compiler mithaben sind schwer zu 
toppen. Einfacher wird es, wenn man Annahmen und Vereinfachungen treffen 
kann, die speziell auf die Aufgabenstellung zugeschnitten sind. Diese 
Dinge greifen dann aber erst bei komplizierteren Berechnungen. Eine 
Addition oder Multiplikation kriegst du selber auch nicht schneller hin, 
als das was der Compiler mit hat. Bei Wurzeln oder trigonometrischen 
Funktionen sieht die Sache anders aus. Da müssen die mitgelieferten 
Funktionen universell sein und damit auch mit Fällen zurecht kommen, die 
in meiner App nicht vorkommen. Und das kann man ausnutzen.
Gast #2312998
Lesenswert?

Hi

>Dieser meinte dass sich diese Firma kleine Funktionen in Assembler eben
>mit dieser (teils vergessenen) Mathematik zurechtgelegt haben und nun
>3-4x schneller sind als aktuelle Comnpiler.

Als notorischer Assemblerprogrammierer kann ich mir das gut vorstellen.

MfG Spess
#2313015
Lesenswert?

zu

Karl Heinz Buchegger schrieb:
> Er lügt.
> 3-4 ist nicht drinnen.

und

spess53 schrieb:
>>3-4x schneller sind als aktuelle Comnpiler.
>
> Als notorischer Assemblerprogrammierer kann ich mir das gut vorstellen.

Meine Ansicht liegt zwischen diesen Aussagen. Wenn man allgemein 
Berechnungs-Methoden vergleicht, ist der Faktor 3-4 gegenüber einem 
Compiler nicht drin. Wenn Berechnungen weit im Kontext anderer 
Arbeitsschritte untergebracht werden, sieht die Welt schon anders aus. 
Da kommen Dinge zum Tragen, die ein Compiler nicht berücksichtigen 
kann. Von "strukturierter" Programmierung wie sie allgemein gelehrt 
wird, ist das allerdings sehr weit weg.

Bastler schrieb:
> Ich habe auf einem Sminar mite einem anderen Entwickler geredet.
> Dieser meinte dass

Oft beziehen sich solche Aussagen auf eine zuvor vorhandene 
Implementierung, die bereits ersetzt ist. Es ist keine Aussage über 
deren Qualität. Wahrscheinlich hätte der Compiler, anders gefüttert, 
auch bessere Ergebnisse erzielen können.
Gast #2313038
Lesenswert?

Naja, ich hatte auch schon Code angepasst in dem mehrere Funktionen 
aufgerufen wurden um einen Pin zu setzten.
Da geht pro Aufruf Zeit verloren.

Ein guter C-Code bringt auch oft viel.
Beispielsweise bei einer Mittelwertbildung 16  32  64 Werte verwenden 
anstelle von 50.

Um Zeit zu sparen gibt es mittlerweile auch schon in den 8-Bittern DMA 
oder ähnliche Hardwareteile.
#2313436
Lesenswert?

Vor allem gelten diese Regeln zum Kopfrechnen.

Ein uC hat kein Problem damit 113 mit 207 zu multiplizieren. Ein ATmega 
macht das z.B. in 2 Taktzyklen. Ich glaube kaum, daß man das schneller 
damit hinbekommt.

Wenn man einen uC als einen Rechner mit einem 256er Zahlensystem 
darstellt, könnte man die Regeln anwenden. Dazu muß man die Regeln 
anpassen und vor allem muß man jedes Mal prüfen, welche Regel greift, um 
im Zweifelsfall doch wieder auf die herkömmliche Art zu rechnen. Und die 
Berechnung dauert dann länger. Ausserdem frisst es Speicherplatz.


Gruß

Jobst

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren