summaryrefslogtreecommitdiff
path: root/lib/polynom.c
diff options
context:
space:
mode:
authorPixel <Pixel>2001-05-02 02:15:48 +0000
committerPixel <Pixel>2001-05-02 02:15:48 +0000
commit2160d5e1b4e0651ec0dc4ac8f27decc57cf1a8cb (patch)
treeabab53e3ad9d9c25682bd753e838c317595f52ff /lib/polynom.c
parent4dc4eca070554700e3e4fa76f034fdf41710a1be (diff)
Hop
Diffstat (limited to 'lib/polynom.c')
-rw-r--r--lib/polynom.c40
1 files changed, 34 insertions, 6 deletions
diff --git a/lib/polynom.c b/lib/polynom.c
index 472eb24..99c5a75 100644
--- a/lib/polynom.c
+++ b/lib/polynom.c
@@ -224,21 +224,31 @@ polynome ply_multiplication(polynome poly1, polynome poly2)
polynome ply_division(polynome dividende, polynome diviseur)
{ /* division de deux polynomes */
- polynome interdividende = dividende, interdiviseur = NULL, inter = NULL, reste = dividende, resultat = NULL, r = NULL;
+ polynome interdividende = ply_copy(dividende), interdiviseur = NULL, inter = NULL, reste = dividende, resultat = NULL, r = NULL;
+#ifdef DEBUG
printf("On divise %s", ply_affichage(dividende));
printf("par %s\n", ply_affichage(diviseur));
printf("interdividende degre = %u\n", interdividende->degre);
printf("diviseur degre = %u\n", diviseur->degre);
+#endif
while ((interdividende) && (interdividende->degre >= diviseur->degre)) {
- inter = ply_constr(rat_division(dividende->coef, diviseur->coef), dividende->degre - diviseur->degre);
+ inter = ply_constr(rat_division(interdividende->coef, diviseur->coef), interdividende->degre - diviseur->degre);
+#ifdef DEBUG
printf("On trouve qu'il nous faut soustraire %s fois\n", ply_affichage(inter));
+#endif
r = ply_addition(resultat, inter);
+#ifdef DEBUG
printf("Resultat intermédiaire %s\n", ply_affichage(r));
+#endif
interdiviseur = ply_multiplication(diviseur, inter);
+#ifdef DEBUG
printf("On soustrait donc %s\n", ply_affichage(interdiviseur));
+#endif
reste = ply_soustraction(interdividende, interdiviseur);
+#ifdef DEBUG
printf("Reste intermédiaire %s\n", ply_affichage(reste));
+#endif
ply_destruct(resultat);
ply_destruct(inter);
ply_destruct(interdividende);
@@ -252,13 +262,31 @@ polynome ply_division(polynome dividende, polynome diviseur)
polynome ply_modulo(polynome dividende, polynome diviseur)
{ /* reste de la division de deux polynomes */
- polynome interdividende = dividende, interdiviseur = NULL, inter = NULL, reste = dividende, resultat = NULL, r = NULL;
+ polynome interdividende = ply_copy(dividende), interdiviseur = NULL, inter = NULL, reste = dividende, resultat = NULL, r = NULL;
- while (interdividende->degre >= diviseur->degre) {
- inter = ply_constr(rat_division(dividende->coef, diviseur->coef), dividende->degre - diviseur->degre);
- interdiviseur = ply_multiplication(diviseur, inter);
+#ifdef DEBUG
+ printf("On divise %s", ply_affichage(dividende));
+ printf("par %s\n", ply_affichage(diviseur));
+ printf("interdividende degre = %u\n", interdividende->degre);
+ printf("diviseur degre = %u\n", diviseur->degre);
+#endif
+ while ((interdividende) && (interdividende->degre >= diviseur->degre)) {
+ inter = ply_constr(rat_division(interdividende->coef, diviseur->coef), interdividende->degre - diviseur->degre);
+#ifdef DEBUG
+ printf("On trouve qu'il nous faut soustraire %s fois\n", ply_affichage(inter));
+#endif
r = ply_addition(resultat, inter);
+#ifdef DEBUG
+ printf("Resultat intermédiaire %s\n", ply_affichage(r));
+#endif
+ interdiviseur = ply_multiplication(diviseur, inter);
+#ifdef DEBUG
+ printf("On soustrait donc %s\n", ply_affichage(interdiviseur));
+#endif
reste = ply_soustraction(interdividende, interdiviseur);
+#ifdef DEBUG
+ printf("Reste intermédiaire %s\n", ply_affichage(reste));
+#endif
ply_destruct(resultat);
ply_destruct(inter);
ply_destruct(interdividende);