Modulo Funktion (math.) in MOD.mak implementiert

Dieser Bereich ist für den Austausch FERTIGER Makros und allgemein nützlicher Schaltungen vorgesehen.
Antworten
IKT
Beiträge: 554
Registriert: Mittwoch 4. November 2009, 18:32

Modulo Funktion (math.) in MOD.mak implementiert

Beitrag von IKT » Dienstag 9. Oktober 2012, 13:16

Hallo zusammen

Im angehängten Projekt-File findet Ihr das Makro, welches damit auch gleich getestet werden kann. (Bemerkungen bitte
lesen)
Die Funktion verarbeitet (long) INTEGER sowie FLOAT Datentypen.
ACHTUNG:
im INT-Modus ergibt ein Dividend zwischen 0 und 1 eine Division durch NULL!
Floats werden vor Bearbeitung (im INT-Modus) in INT gewandelt.

Mehr zu Theorie und Mathematik unter folgenden Links:

http://en.wikipedia.org/wiki/Modulo_operation (practical description for computing)
http://en.wikipedia.org/wiki/Modulo (theory with different approaches)

Viel Spass beim 'modulieren'!
Dateianhänge
MODULO.prj
(8.61 KiB) 397-mal heruntergeladen
++++++
Gruss/regards IKT

IKT
Beiträge: 554
Registriert: Mittwoch 4. November 2009, 18:32

Re: Modulo Funktion (math.) in MOD.mak implementiert

Beitrag von IKT » Montag 14. Oktober 2013, 15:31

Hallo an alle,
Floats werden vor Bearbeitung (im INT-Modus) in INT gewandelt.
Dies war mit der eingebauten Int-Funktion des Math-Bausteins, welcher sich leider, bei nachträglicher Überprüfung als fehlerhaft erwiesen hat. Der Rundungs-Algorithmus bei negativen Zahlen rundet falsch: -3.334 ergibt plötzlich -4 ?!?
Danach ist logischerweise kein vernünftiges Resultat zu erwarten.

Habe das Makro neu überarbeitet und zwar wie folgt:
- Beim Vohandensein von Nachkommastellen, werden diese automatisch abgeschnitten. Aufrunden findet 'nie' statt (dies verhindert die oben beschriebenen Fehler).
- Verkleinerung: von 6 auf 4 Makro-Pin's.
- Positive und negative Zahlen sind an beiden Eingängen möglich, auch beide gleichzeitig. Dies hat zur Folge, dass auch negative Ergebnisse entstehen können (sie sind jedoch mathematisch korrekt).

Die Funktion zur Überprüfung ist wie folgt:
DivR * dvr + MOD = DIV
Entsprechende Vorzeichen berücksichtigen! Nachkommastellen ausser Acht lassen, die interne 'Rechnerei' benutzt NUR Ganzzahlen = Integer / LongInteger.)
Dateianhänge
MOD_int.mak
Überarbeitetes Modulo Makro
(2.79 KiB) 332-mal heruntergeladen
++++++
Gruss/regards IKT

Antworten

Zurück zu „Makros & Schaltungen“