PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : gcc 4.3.2 C++0x neue mathematische funktionen



Ahahn
14-11-2008, 11:03
Hallo.
Ich versuche grad mit einem neuen gcc (4.3.2)
auf die neuen fmathematischen funktionen im kommenden standard c++0x zuzugreifen: (link in französisch)
http://fr.wikipedia.org/wiki/C++0x#Fonctions_math.C3.A9matiques_sp.C3.A9ciales

der gcc ab 4.3 soll diese über das flag -std=c++0x schon unterstützen.
wenn ich nun allerdings folgendes programm


#include <iostream>
#include <math.h>

using namespace std;

int main(int argc, char *argv[])
{
cout <<beta(2,2)<<assoc_laguerre(1,1,1)<<endl;
return 0;
}

versuche zu kompilieren bekomme ich folgende fehlermeldung ausgespuckt:


g++ -Wall -lm -std=gnu++0x main.cpp
main.cpp: In function ‘int main(int, char**)’:
main.cpp:8: error: ‘beta’ was not declared in this scope
main.cpp:8: error: ‘assoc_laguerre’ was not declared in this scope


scheinbar hab ich irgendetwas vergessen einzubinden, zu linken oÄ. Hab aber leider noch nichts gefunden was mir weiterhilft. "Alte" Funktionen wie sin(x) etc funktionieren problemlos. Meine gcc Version laut g++ -v ist "gcc version 4.3.2 (Debian 4.3.2-1)"

Danke schonmal für eventuelle Antworten.
MfG

Beatkiller
14-11-2008, 12:11
Ohne diese Funktionen zu kennen, könnte es sein, das diese Methoden nicht im namespace std sondern einem andern liegen? Wenn ja, müsstest du sie explizit mit dem voll-qualifizierenden Namensraum angeben. Nur als Vermutung.

anda_skoa
14-11-2008, 13:40
math.h ist ein C Header, d.h. es fehlt der Header für die von dir gewünschten C++ Features.

Ciao,
_

locus vivendi
14-11-2008, 14:19
Beta und Assoc_laguerre sind im TR1 zu finden und auch vom Konzept her im Header <math.h>. Siehe TR1, verlinkt hier: http://www.aristeia.com/EC3E/TR1_info.html
Allerdings glaube ich nicht, dass diese Funktionen es in C++0x schaffen werden.

Wenn du die TR1 Implementierung des GCC verwenden willst, solltest du evtl. mal in dessen Doku schauen:
http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt01ch01.html

Scott Meyers listet im Dokument oben auch noch andere Alternativen.

anda_skoa
15-11-2008, 15:01
Beta und Assoc_laguerre sind im TR1 zu finden und auch vom Konzept her im Header <math.h>. Siehe TR1, verlinkt hier: http://www.aristeia.com/EC3E/TR1_info.html


Interessant.
Laut diesem Dokument (http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf) sind das Funktionen aus dem C++ Header <cmath>

Ciao,
_

jeebee
15-11-2008, 15:17
Respektive im Header <tr1/cmath>

locus vivendi
15-11-2008, 15:52
Beta und Assoc_laguerre sind im TR1 zu finden und auch vom Konzept her im Header <math.h>. Siehe TR1, verlinkt hier: http://www.aristeia.com/EC3E/TR1_info.html
Interessant.
Laut diesem Dokument sind das Funktionen aus dem C++ Header <cmath>
Ja. Und der nächste Abschnitt dort, also 5.2.2 sagt, dass diese Funktionen per Using-Deklarationen mit <math.h> nutzbar gemacht werden (dann im globalen Namespace).

Mit "vom Konzept her" meinte ich, dass TR1 diese Funktionen als Zusatz zu den bisherigen <cmath> und <math.h> Headern spezifiziert. Allerdings ist auch richtig, dass TR1 Implementierer warnt, nicht einfach so, ohne Aufforderung des Benutzers diese Zusätze sichtbar zu machen. Jebees Kommentar geht in diese Richtung.

Beatkiller
15-11-2008, 18:22
Also so kompiliert es bei mir:


#include <iostream>
#include <tr1/cmath>

using namespace std;

int main(int argc, char *argv[])
{
cout << std::tr1::beta(2,2)<< std::tr1::assoc_laguerre(1,1,1)<<endl;
return 0;
}


Grüße

Ahahn
17-11-2008, 17:04
vielen dank der zahlreichen antworten und interessanten links.
jetzt kann ich auch auf die funktionen zugreifen.

hat irgendwer von euch praktische erfahrungen mit bibliotheken für numerische integration? bzw eine der folgenden vllt schon einmal benutzt und kann mir zu einer zu /abraten? momentanüberlege ich zwischen der gnu scientific libary http://www.gnu.org/software/gsl/
und ginac http://www.ginac.de/ hin und her und kann mich nicht so ganz entscheiden.

mfg

peschmae
17-11-2008, 20:02
GSL hab ich schon benutzt und war eigentlich zufrieden damit - wobei ich das auch nur als Solver für eine Diffgleichung brauchte, damals.

Geht halt nur wenn deine Software auch GPL ist...

MfG Peschmä