From ecd16166cde1ffa3edfbaa897b049d532e234ab6 Mon Sep 17 00:00:00 2001 From: Pixel Date: Wed, 2 May 2001 22:14:21 +0000 Subject: Pouet --- lib/scalaires.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'lib/scalaires.c') 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) { -- cgit v1.2.3