Forum: Compiler & IDEs Integer Math Lib


von Benedikt (Gast)


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. ?

von bone (Gast)


Lesenswert?

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

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

von Reiner (Gast)


Lesenswert?

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

Reiner

von Alex (Gast)


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.

von Michael (Gast)


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 ???

von Detlef _. (detlef_a)


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

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


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.

von Christoph Kessler (db1uq) (Gast)


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 ?

von Christoph Kessler (db1uq) (Gast)


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

von Christoph Kessler (db1uq) (Gast)


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

von Christoph Kessler (db1uq) (Gast)


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.

von Christoph Kessler (db1uq) (Gast)


Angehängte Dateien:

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.

von Hagen R. (hagen)


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

von Christoph Kessler (db1uq) (Gast)


Angehängte Dateien:

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.

von Detlef _. (detlef_a)


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

von uli (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.