mikrocontroller.net

Forum: Compiler & IDEs Integer Math Lib


Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Häufig verwendet man 16 oder 32bit Integer um aufwendige
Fließkommaberechnungen zu umgehen.
Gibt es irgendwas fertiges, speziell für AVR optimiertes für z.B.
sqrt(), pow(), sin() usw. ?

Autor: bone (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>>Häufig verwendet man 16 oder 32bit Integer um aufwendige
Fließkommaberechnungen zu umgehen.

häufig??? -wo denn??? integer-sinus???

Autor: Reiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Google mal nach CORDIC.
Klein werden die Funktionen aber auch nicht wenn es genau sein soll.

Reiner

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mich wundert auch, dass es für Mikrocontroller keine
Festkomma-Implementierungen gibt. Ein generisches Zahlenformat wie 8.8
oder 16.16 würde für dei meisten Anwendungen mit ungeraden Zahlen
reichen und wäre wesentlich performanter als floating-point (zumindest
auf einem 8-bitter).

Sicherlich kann ich das alles auch händisch in C-Code nachbilden doch
in punkto Lesbarkeit bleibt vom Code nichtmehr viel übrig.

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
".. und wäre wesentlich performanter als floating-point (zumindest auf
einem 8-bitter)."

Das sind doch alles nur Gerüchte.
Wie kommst Du zu solch einer Aussage ???

Autor: Detlef _a (detlef_a)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

gerade sin/cos und atan2 geht gut in Integer/Cordic ohne
Multiplikation. sqrt gips auch schöne integer Routinen. Setzt doch mal
hier im Forum nen Eckchen auf, wo man das reinstellt.

Cheers
Detlef

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Mich wundert auch, dass es für Mikrocontroller keine
> Festkomma-Implementierungen gibt.

Es gab bislang keinen C-Standard dafür.  Mittlerweile gibt es
aber einen Vorschlag.

Autor: Christoph Kessler (db1uq) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich meine von Microchip gibt es PIC-Assembler-Applikatioen zu
verschiedenen mathematischen Funktionen. Gibts von Atmel für AVR
vergleichbares ? Ich meine, mindestens größere Multiplikations- und
Divisionsroutinen gesehen zu haben.
Oder soll das ganze in C stattfinden ?

Autor: Christoph Kessler (db1uq) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vier mathematische Appnotes hab ich gefunden:

AVR200: Multiply and Divide Routines   (19 pages, revision B, updated
10/98)
This Application Note lists subroutines for multiplication and division
of 8 and 16-bit signed and unsigned numbers.

AVR201: Using the AVR Hardware Multiplier   (11 pages, revision C,
updated 6/02)
Examples of using the multiplier for 8-bit arithmetic.

AVR202: 16-Bit Arithmetics   (3 pages, revision B, updated 5/02)
This Application Note lists program examples for arithmetic operation
on 16-bit values.

AVR204: BCD Arithmetics (14 pages, revision B, updated 01/03)
This Application Note lists routines for BCD arithmetics.

aber Wurzel oder Sinus ist nicht darunter

Autor: Christoph Kessler (db1uq) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Microchip listet unter Appnotes/Algorithm/math folgendes:
Appnotes      Description      Date      Launch
TB043   KEELOQ® CRC Verification Routines   11/8/04
AN670   Floating Point to ASCII Conversion   9/11/01
AN752   AN752 CRC Algorithm for MCRF45X Read/Write Device   3/15/01
TB040   Fast Integer Square Root   10/16/00
AN730   CRC Generating and Checking   5/22/00
TB028   Technique to Calculate Day of Week   8/23/99
TB026   Calculating Program Memory Checksums Using a PIC16F87X   11/6/98

AN526   PIC16C5x/PIC16Cxx Utility Math Routines   8/26/97
AN616   Digital Signal Processing with the PIC16C74   8/26/97
AN542   Implementation of Fast Fourier Transforms   8/26/97
AN660   Floating Point Routines   8/26/97
AN540   Implementing IIR Digital Filters   8/26/97
AN575   IEEE 754 Compliant Floating Point Routines   8/26/97
AN643   Adaptive Differential Pulse Code Modulation using the PIC16/17
  8/26/97
AN544   Math Utility Routines   8/26/97
AN617   Fixed Point Routines   8/26/97

Autor: Christoph Kessler (db1uq) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe mir vor einigen Jahren ein Buch zum Thema mathematische
Algorithmen gekauft, anscheinend gibt es eine Neuauflage:
Computer Arithmetic Algorithms
von Israel Koren
Sprache: Englisch
Gebundene Ausgabe - 296 Seiten - A K Peters Ltd
Erscheinungsdatum: 2001
Auflage: 2nd
ISBN: 1568811608
die erste auflage war von 1993.
Nicht speziell für eine bestimmte Programmiersprache / CPU, nur die
allgemeinen Lösungswege.
"Synopsis" bei Amazon:
This text explains the fundamental principles of algorithms available
for performing arithmetic operations on digital computers. These
include basic arithmetic operations like addition, subtraction,
multiplication, and division in fixed-point and floating-point number
systems as well as more complex operations such as square root
extraction and evaluation of exponential, logarithmic, and
trigonometric functions. The algorithms described are independent of
the particular technology employed for their implementation. Numerical
examples illustrate the working of the algorithms presented and explain
the concepts behind the algorithms without relying on gate diagrams.
This new edition includes sections on floating-point adders,
floating-point exceptions, general carry-look-ahead adders, prefix
adders, Ling adders, and fused multiply-add units. New algorithms and
implementations have been added to almost all chapters. An on-line
JavaScript-based simulator for many of the algorithms contained in the
book is available at: www.ecs.umass.edu/ece/koren/arith/simulator.

Vielleicht kann jemand noch andere Bücher zum Thema empfehlen. Ich habe
allerdings aus dem "Koren" bisher noch nichts verwendet.

Autor: Christoph Kessler (db1uq) (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht in der Computerbibel "The Art Of Computer Programming" von
Donald Knuth ? Es scheint ein Standardwerk zu sein, mindestens 4 Bände,
teilweise soll auch eine deutsche Version existieren. Ich habe noch
nicht drin geblättert, bei Amazon kann man das Inhaltsverzeichnis und
das Indexregister besichtigen, sowie ein kurzes Kapitel über
Zufallszahlen.

Leider ist der Suchbegriff "Algorithmen" in der Computerliteratur
mehr auf Datenbank-Suchstrategien und ähnliches bezogen, weniger auf
elementare Mathematikfunktionen.

Autor: Hagen Re (hagen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kapitel 4 wurde ins deutsche übersetzt: "Arithmetik" ISBN
3-540-66745-8. Das ist übrigens das einzigste Kapitel das wirklich
interessant ist, meiner Meinung nach. Ansonsten ist das Buch so nicht
zu bekommen, mal auf dem Trödler schauen.

Ich meine interesanter wäre eine kleine Lib die die Fixpoints auf dem
AVR benutzen -> FMUL etc.pp.

Gruß Hagen

Autor: Christoph Kessler (db1uq) (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Näherungsformeln sind auch selten zu finden, ich weiß nicht mehr, wo ich
diese Näherung an den "Pythagoras" ( Wurzel aus (x^2 +y^2)) gelesen
hatte. Der Kreis wird durch sein eingeschriebenes Achteck angenähert.
Ich habe damit ein Wettersatelliten-Signal auf dem AVR demoduliert. Das
Wetterbild ist auf einen 2400Hz Träger amplitudenmoduliert. Mit 9600
Abtastungen pro Sekunde sind die einzelnen Abtastwerte immer um 90 Grad
auf der 2400Hz-Schwingung versetzt, sodaß der "Pythagoras" die
Amplitudeninformation liefert.

Autor: Detlef _a (detlef_a)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

Iteration für ne Quadraturzel geht auch gut mit(xi+1)=(x(i)+a/x(i))/2
wenn man billig dividieren kann. Beträge von Vektoren ( Wurzel aus (x^2
+y^2)) gehen in der Regel besser, wenn man das nicht mit
quadrieren/wurzelziehen macht, sondern den Vektor mit einem
Cordic-Verfahren auf die x- oder y-Achse dreht, dann hat man den Betrag
direkt. Das geht auch auf nem FPGA ohne multiplizieren.

Cheers
Detlef

Autor: uli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kommastellen kann man sich sparen, wenn man die ganzzahlen einfach
anfangs mit 100 multipliziert und dann in das in der auswertung
berücksichtigt. Meistens jedenfalls.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.