Klasse für beliebig viele Nachkommastellen



  • Hi,

    kann man den ne Klasse schreiben, die beliebig viele Nachkommastellen auf-
    nehmen kann? Sie sollte außerdem ne Funktion sin, cos unt tan haben. (Wie
    kann man die den schreiben?) Diese Funktionen sollen auch mit der Genauichkeit
    von der Klasse arbeiten.

    Ich hab's mir irgendwie so vorgestellt:

    class bigFloat {
    private:
       // umfg
    public:
       bigFloat() {
    
       }
       // ...
    
       // geben den Sinus (...) von BigFloat zurück
       const bigFloat sin();
       const bigFloat cos();
       const bigFloat tan();
    };
    

    Was ist den besser: sin (...) als Methode oder als eigenständige Funktion
    zu schreiben, die als Parameter bigFloat bekommt?

    Ich hoffe es kann mir jemand helfen 😞



  • Hi,

    klar geht das, allerdings nicht trivial (wenn man es effizient möchte). Schau Dir doch mal den Code der OpenSource-GMP-Bibliothek (genauer „MPQ“) an, wie es dort gemacht wird.

    Die Theorie dahinter ist aber ein wenig Stoff.



  • Zusatz: Schau Dir diese Liste mit Algorithmen mal an: http://en.wikipedia.org/wiki/Computational_complexity_of_mathematical_operations



  • Wobei man bei den trigonometrischen Funktionen die Nachkommastellenzahl schon begrenzen muss, sonst bekommst du wirklich beliebig viele Stellen. 🙂



  • umfg schrieb:

    Was ist den besser: sin (...) als Methode oder als eigenständige Funktion zu schreiben, die als Parameter bigFloat bekommt?

    Letzteres, um einen konformen C++-Stil zu bewahren.


Log in to reply