Moin, für mein Programm bräuchte ich das complex.h. AVR-Studio sagt aber: "...error: complex.h: No such file or directory". In den Foren habe ich gelesen, dass complex.h nur mit CPP geht. Gibt es für C eine Alternative? Danke :-)
double gibt es doch eh nicht auf dem AVR, erzähl estmal was du vor hast, eventuell ist das eh schon der falsche Weg.
Peter schrieb: > double gibt es doch eh nicht auf dem AVR Der AVR kann nix dafür. Es ist der AVR-GCC, der es nicht kann. Z.B. Bascom-AVR kann es. Peter
Ich habe zwei arrays I_comp und Q_comp, die ich nun zusammen sätzen will um einen komplexen Wert zu bekommen. Das wollte ich so machen:
1 | int i; |
2 | for(i=0;(sizeof(I_comp))>0;i++) |
3 | {
|
4 | Rx_complex=I_comp[i]+I*Q_comp[i]; |
5 | }
|
Dann möchte ich für Rx_coplex die Phase berechnen...
DK schrieb: > Ich habe zwei arrays I_comp und Q_comp, die ich nun zusammen sätzen will > um einen komplexen Wert zu bekommen. Das wollte ich so machen: > >
1 | > int i; |
2 | > for(i=0;(sizeof(I_comp))>0;i++) |
3 | > { |
4 | > Rx_complex=I_comp[i]+I*Q_comp[i]; |
5 | > } |
6 | >
|
In C++ würde das so gehen. In C geht das so sicher nicht. > > Dann möchte ich für Rx_coplex die Phase berechnen... Und wozu brauchst du da jetzt genau den Datentyp complex? Die Phase berechnen, das ist eine Formel, die du genausogut auch selber hinschreiben kannst. Dazu brauchst du doch keinen vordefinierten Datentyp complex. (Man kann sich natürlich auch selber einen bauen mitsamt den zugehörigen Supportfunktionen. Ist ja schliesslich auch nur eine Struktur mit 2 Member. Wenn man unbedingt will und es im Programm noch meherer komplexe Berechnungen gibt)
Karl heinz Buchegger schrieb: > Die Phase berechnen, das ist eine Formel, die du genausogut auch selber > hinschreiben kannst. dafür nicht, ich wollte aber trotzdem wissen, ob man es benutzen kann, falls es nötig wird.
In Standard-C gibt es tatsächlich kein complex.h. In C++ gibt es eines, das heißt dann aber nicht complex.h, sondern nur complex. Mit dem avr-gcc kann man nun zwar C++ (rein sprachseitig) kompilieren, allerdings ist der Umfang der Bibliothek weit vom Standard entfernt. complex ist dann m.W. auch nicht dabei. Allerdings könnte man das mit vertretbarem Aufwand in C++ nachrüsten. Der Vorteil der C++-Version der komplexen Zahlen wäre, daß dort complex nur ein template ist, dessen Grundtyp für den Imaginär- und Realteil als Parameter frei gewählt werden kann. D.h. man kann complex<float> nehmen oder sogar complex<meintollerfestkommatyp>.
Jean Player schrieb: > probier mal die tgmath.h Unter tgmath.h ist complex.h auch angebunden, kommt also der gleiche Fehler raus.
DK schrieb: > Karl heinz Buchegger schrieb: >> Die Phase berechnen, das ist eine Formel, die du genausogut auch selber >> hinschreiben kannst. > > dafür nicht, Warum nicht? Auch das C++ complex kann ja nicht zaubern, sondern muss das berechnen. (Das ist simple Trigonometrie im rechtwinkeligen Dreieck. Wenn du nur ein bischen Ahnung von komplexen Zahlen hast, wüsstest du das)
Karl heinz Buchegger schrieb: > Warum nicht? > Auch das C++ complex kann ja nicht zaubern, sondern muss das berechnen. :-) ich meinte, dass ich das complex.h für die Phasenberechnung sicher nicht brauche. Ich weis schon was komplexe Rechnung heißt.
DK schrieb: > Karl heinz Buchegger schrieb: >> Warum nicht? >> Auch das C++ complex kann ja nicht zaubern, sondern muss das berechnen. > > :-) ich meinte, dass ich das complex.h für die Phasenberechnung sicher > nicht brauche. Ich weis schon was komplexe Rechnung heißt. OK. Tschuldigung. War dann Misverständnis meinerseits. (Ich bin schon paranoid - wenn es um vermeintlich einfache Fragen geht) In C wirst du dir dann komplexe Zahlen selber machen müssen (oder im Web was suchen).
Karl heinz Buchegger schrieb: > OK. Tschuldigung. War dann Misverständnis meinerseits. > > In C wirst du dir dann komplexe Zahlen selber machen müssen (oder im Web > was suchen). Kein Problem, danke sehr!
Man kann in C komplexe Zahlen z.B. als struct zweier floats definieren. Was aber keinesfalls geht, ist die Verwendung der "normalen" Operatoren wie +,-,*,/ . Dies wird bei C++ durch das Überladen dieser Operatoren erreicht, also einem Mechanismus, der in C nicht existiert. Eine C-Funktion kann aber auch einen struct als Ergebnis zurückgeben. (Nutze ich selbst aber nie). Damit könnte man mit eine Art "polnischer Notation" sich durchaus Ausdrücke bauen.
complex.h ist Teil des C99-Standards, siehe: http://www.jshansen.dk/Notes/complex.html GCC unterstuetzt prinzipiell C99, die AVR-LIBC aber anscheinend nicht vollstaendig.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.