summaryrefslogtreecommitdiff
path: root/lib/scalaires.c
diff options
context:
space:
mode:
authorPixel <Pixel>2001-05-02 22:14:21 +0000
committerPixel <Pixel>2001-05-02 22:14:21 +0000
commitecd16166cde1ffa3edfbaa897b049d532e234ab6 (patch)
tree192b47251b141e0dd0f53530e3a4a2a5f961ea0f /lib/scalaires.c
parent8626b278cdccd95e628f14c027ae8a1c47133c48 (diff)
Pouet
Diffstat (limited to 'lib/scalaires.c')
-rw-r--r--lib/scalaires.c16
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)
{