TAN ohne math-include
-
hi,
Ich benutze GCC und da kann man SIN/COS ohne math-inklude aufrufen (hmm). Aber bei TAN geht das doch nicht. Naja ich wollte mal C++ besser verstehen und nur beispielsweise TAN-Funktion ohne math-inklude "eincoden". Ich habe versucht durch inkludes durchzusteigen - aber die sind spaghettiartig - und ich habe nicht gefunden wie math.h-inklude das hinkriegt, dass die funktion benutzbar wird...
wer schafft es, dass man TAN ohne math-inklude berechnen kann. Ich denke C++ "importiert" diese funktion irgendwie - ich will ja jetzt =NICHT= von "hand" berechnen, sondern auch "importieren"...
bin schon mal gespannt ob das einfach geht...
-
eigentlich musst du immer cmath inkludieren, sonst dürftest du die funktionen gar nicht benutzen. aber einige waren früher auch in der stdlib.h
-
Die Funktionen stecken in libs obj oder sonst welchen Modulen.
Die Header stellen nur eine "Beschreibung" der Funktionen und klassen bereit.
Der Compiler will ja wissen was er da bekommt
Das Du auf anderen Compilern das #include <math.h> nicht brauchtest kann daran liegen das es durch einen anderen Header eingebunden wurde.
-
ich binde überhaupt keine inkludes ein und SIN/COS funktioniert...
aber das mit TAN kriege ich nicht hin
-
gcc hat einige Funktionen direkt eingebaut, sin und cos gehören wohl dazu ...
-
Probier's mal so:
Wenn sin() und cos() klappt, dann ist meines Wissens tan() = sin() / cos()
Verstehe nicht ganz, wo da das Problem liegen soll...
-
Original erstellt von Bashar:
gcc hat einige Funktionen direkt eingebaut, sin und cos gehören wohl dazu ...stichwort: intrinsic
hoffentlich richtig geschrieben
-
Ja schön - nur wollte ich TAN-Definition aus Header-Dateien "rausklauen" - aber das ist nicht so einfach und scheinbar unmöglich...
-
Original erstellt von Krösus:
Probier's mal so:
Wenn sin() und cos() klappt, dann ist meines Wissens tan() = sin() / cos()
Verstehe nicht ganz, wo da das Problem liegen soll...Genau, weil:
(sinus / cosinus) = ((gegenkathete / hypotenuse) / (ankathete / hypotenuse)) = ((gegenkathete * hypotenuse) / (ankathete * hypotenuse)) = (gegenkathete / ankathete) = (tangens)
BTW: Warum willst du tan neucoden, es ist doch schon da???
Und: Selbercoden ist lehrreicher als abschreiben[ Dieser Beitrag wurde am 21.03.2003 um 15:25 Uhr von MaSTaH editiert. ]
-
#define tan(x) (sin(x)/cos(x))
-
neeee...
wie ist das in den headern - da steht so eine berechnung nicht... zudem denke ich dass so eine funktion halbsoschnell ist wie "native" - da hier SIN und COS zuerst berechnet werden müssen...
-
Dann include einfach math.h
-
Ne.... ich habe mir ausgedacht eine neue Programmiersprache zu coden. Da ich Compiler wohl ohne ASM-Kenntnisse niemals vernünftig machen könnte - habe ich mir gedacht ich nehme den GCC compiler und schmeiße alle header/includes weg.
So, wenn ich einen Code geschrieben habe, dann wird es in c++ konvertiert. Schlüsselwörter sollen in nativen c++ code umgewandelt werden (das ist der einfachere Teil, weil das ohne große Änderungen möglich ist). Alle andere Befehle sollen aus librarys entnommen werden. Besser gesagt je nach prog soll autom. eine dynamische library erzeugt werden und dann eingebaut werden. Wenn ich jetzt z.B. 1000 funktionen drin habe und 100 funktionen verwende, dann sollen nach möglichkeit 100 funktionen einkompiliert werden...
soweit die theorie - aber ob es machbar ich - da bin ich mir am überlegen...
-
#include <cmath>
is nun wirklich nich teuer
und dass es mit
double tan(double);
gehen sollte, is ja auch nich soo geheim
-
ach man du hast es nicht verstanden - wie soll ich cmath inkludieren, wenn ich alle inkludes rausgeworfen habe und speziell für meine "sprache" KOMPLETT neue mache - also nix mit diesen spaghettiheadern... (k.A. wer die gecodet hat - vielleicht ist es bei VC++ besser - aber scheinbar hat opensource doch nicht so gute qualität)...
-
ähm... du bist blind? double tan(double);
header rausschmeißen? why?
nochmal für langsame:double tan(double);
das wars!
und falls das nich geht, füge -lm in die gcc zeile ein.
-
1. nur dadurch das du die header ersetzt kannst du keine neue sprache erzeugen
2. die header können garkeinen spaghetticode enthalten weil sie nur declarationen enthalten d.h. die enthalten keinen code direkt... und wo kein code ist kann auch kein spaghetticode sein...
wobie das hier kommt mir doch eher wie trollerei vor
-
Hier habe ich testweise tan ohne cmath - wie ich mir gedacht habe geht es nicht... was macht -lm????? mal sehen wie man das in DevC++ eintragen kann...
#include <iostream.h>
#include <stdlib.h>double tan(double);
int main()
{
cout<<tan(float(10)/float(20))<<endl;
system("PAUSE");
return 0;
}zu 1: ist mir schon klar - aber da ich halt den c++ compiler verwende, muss ich wohl mit den headern arbeiten...
zu 2: das habe ich auch früher gedacht, befor ich die header angesehen habe *g*
-
-lm geht auch nicht
-
Original erstellt von <TS>:
zu 2: das habe ich auch früher gedacht, befor ich die header angesehen habe *g*Ich denke du solltest nochmal ganz von vorne anfangen... Denn ganz am Anfang wurdest du auf das ungünstigste Gleis umgelenkt, nämlich auf das Gleis der Leute die vorhandene gute Sachen besser machen wollen anstatt sich neuen Problemen zu widmen und irgendwann begreifen, dass sie es doch nicht besser geschafft haben um dann frustriert das programmieren sein zu lassen...
-
Naja jetzt habe ich schon gefunden wie das geht - ich könnte schwören ich habe das min. 2x vorher genau so ausprobiert - aber es ging nicht... naja ist jetzt auch egal...
Neee also meine Idee war etwas neues zu erschaffen... Wenn ich jetzt die header von c++ belasse, dann wird das deutlich unsauberer... ob das überhaupt möglich ist und bei welchen aufwand, das weiß ich noch nicht - das ganze wird erstmal ein Prototyp. Wenn das was wird, dann wird die Bibliothek ausgebaut mit vielen Funktionen, die sich dynamisch zusammensetzen lassen...
Naja ich habe mir bisher noch keine großen C++-Codes gesehen. Aber so wie diese GCC-Header geschrieben sind, das ist glaube ich das Schlimmste was ich jemals im leben gesehen habe... Da ist die Hälfte irgend so ein Kompatibilitätsscheiss drin... Einfacher gesagt: Schlimmer als diese Header kann es nicht mehr werden, sondern nur besser... wenn ich mir dagegen meine neue Header ansehen (von denen ich bisher aber nicht viel habe) - dann sieht es gleich vernünftiger und strukturierter aus...