Forum: Compiler & IDEs Woher bekomm ich die ln() funktion


von Neuling (Gast)


Lesenswert?

Hallo,

ich versuche die ln() Funktion als Logarithmus naturalis auf einem AVR 
ATMEGA32 zu nutzen. Gibt es die Funktion schon in einer Lib? Ich 
verwende den GCC unter Linux.

Über Hilfe würde ich mich sehr freuen, da meine Google Recherchen und 
die Forensuche mir nicht weitergeholfen hat.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Sollte in math.h als log() zu finden sein.

von Neuling (Gast)


Lesenswert?

hey, danke das ging ja fix.

wenn ich meine Beispielformel z.B. im Excel mit ln() berechne gehts. Mit 
log() gibts falsche werte. log() is auch für was anderes.

http://de.wikipedia.org/wiki/Logarithmus#Bezeichnungen

Oder ist log() das ln() auf dem Atmel.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

log() aus math.h, wie es mit C-Compilern* mitgeliefert wird, arbeitet 
zur Basis e und nicht, wie der Name suggeriert, zur Basis 10.

Das ist nichts Atmel-spezifisches, sondern in C so üblich.


von ozo (Gast)


Lesenswert?

Die Basis kannst du umrechnen, steht (irgendwo) hier drin:
http://mathworld.wolfram.com/Logarithm.html

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Sie muss nicht umgerechnet werden, da log() -anders, als der Name 
suggeriert- tatsächlich das C-Äquivalent von ln ist.

Umrechnen muss man, wenn man einen Zehnerlogarithmus berechnen will.

von Neuling (Gast)


Lesenswert?

Dankeschön, werd ich heut Abend gleich mal ausprobieren.

Is aber komisch das der Befehl LOG zur Basis e ist. Da es ja zumindest 
bei allen anderen Sprachen die ich bis jetzt gesehen hab mit LN 
angezeigt wird.

Und welcher Befehl wäre dann der zur Basis 10.

Nochmals vielen Dank.

von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Es gibt einen Application Note von National Semiconductor von 1986, mit 
Erklärung und Flußdiagrammen zur Log- und "Antilog"=exp - 
Funktionsberechnung auf einem Mikrocontroller.
Es geht zwar um einen Prozessor namens COP400, aber die Erklärungen sind 
allgemein gehalten.
http://www.national.com/ms/CB/CB-2.pdf#page=1
COP-Brief-2 Easy Logarithms for COP400

von johnny.m (Gast)


Lesenswert?

Das sind keine "Befehle" sondern Bibliotheksfunktionen. Und "LOG" geht 
gar nicht, wenn dann "log". C ist Case-Sensitiv...

Der 10er-Logarithmus ist in der Funktion log10() vergraben 
(logischerweise). Steht aber alles in der libc-Doku... Und die müsste 
auch unter Linux irgendwie erreichbar sein.

von Karl H. (kbuchegg)


Lesenswert?

Neuling wrote:
> Dankeschön, werd ich heut Abend gleich mal ausprobieren.
>
> Is aber komisch das der Befehl LOG zur Basis e ist. Da es ja zumindest
> bei allen anderen Sprachen die ich bis jetzt gesehen hab mit LN
> angezeigt wird.
>
> Und welcher Befehl wäre dann der zur Basis 10.

log10()

NB:
Das sind keine 'Befehle'. Befehle sind zb. if, while, for
also die Sprachmittel, die in der Sprache selbst verankert
sind.
log(), log10(), sin(), sqrt() sind Funktionen.

Alle diese mathematischen Funktionen sind im Header-File
math.h zusammengefasst, die mit dem Compiler mitgeliefert
wird. Da das ein Textfile ist, kann man da auch ruhig mal
mit einem Texteditor hineinschauen.

von Neuling (Gast)


Lesenswert?

und nochmal Danke.

Werd heut abend auch gleich mal in die Math.h reinschauen.

Nochmal danke an Alle! :-)

Schönen Dienstag noch.

von yalu (Gast)


Lesenswert?

Zur Verwirrung bzgl. des Funktionsnamens log ohne die Angabe einer
Basis schreibt das Wikipedia:

  In der Mathematik steht log für den natürlichen Logarithmus, in
  technischen Anwendungen (so z. B. auf Taschenrechnern) für den
  dekadischen Logarithmus, in der Informatik für den dyadischen
  Logarithmus. Gelegentlich wird log auch verwendet, wenn die
  verwendete Basis keine Rolle spielt.

Bei der Entwicklung der Mathebibliotheken vieler Programmiersprachen
haben offensichtlich die Mathematiker das Sagen gehabt :-)

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.