diff options
author | Pixel <Pixel> | 2001-05-02 22:14:21 +0000 |
---|---|---|
committer | Pixel <Pixel> | 2001-05-02 22:14:21 +0000 |
commit | ecd16166cde1ffa3edfbaa897b049d532e234ab6 (patch) | |
tree | 192b47251b141e0dd0f53530e3a4a2a5f961ea0f /lib/scalaires.c | |
parent | 8626b278cdccd95e628f14c027ae8a1c47133c48 (diff) |
Pouet
Diffstat (limited to 'lib/scalaires.c')
-rw-r--r-- | lib/scalaires.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/lib/scalaires.c b/lib/scalaires.c index 5dd6bb1..eb7b7c6 100644 --- a/lib/scalaires.c +++ b/lib/scalaires.c @@ -13,9 +13,12 @@ #define _(x) x #endif +/* Cette précision est utilisée dans le cas où nous devons convertir un double en rationnel */ #define PRECISION 1E6 typedisplay display; +/* Fonction interne uniquement */ + static unsigned long long pgcd(unsigned long long a, unsigned long long b) { if (a < b) @@ -113,6 +116,19 @@ rationnel rat_division(rationnel rat1, rationnel rat2) } +/* On choisit délibérément de faire une puissance 'lente' pour éviter de faire des overflow +trop facilement */ + +rationnel rat_pow(rationnel rat, unsigned int p) +{ /* puissance */ + for (; p; p--) { + rat = rat_multiplication(rat, rat); + } + return rat; +} + +/* On convertit un rationnel en une chaîne. Le booléen first indique si on le rationnel devra être placé en début de chaîne (pour +les signes) */ char *rat_to_string(rationnel rat, int first) { |