summaryrefslogtreecommitdiff
path: root/lib/polynom.c
diff options
context:
space:
mode:
authorPixel <Pixel>2001-05-02 01:41:15 +0000
committerPixel <Pixel>2001-05-02 01:41:15 +0000
commitfba43d28682567fc21512b1a87ad045723cf06e9 (patch)
treedd27d546209acb7350b39a48ec782dbc05563716 /lib/polynom.c
parent4115cde1a2045658f66cf1ba09e42556ec3cb7a5 (diff)
Blah
Diffstat (limited to 'lib/polynom.c')
-rw-r--r--lib/polynom.c51
1 files changed, 41 insertions, 10 deletions
diff --git a/lib/polynom.c b/lib/polynom.c
index 8478531..472eb24 100644
--- a/lib/polynom.c
+++ b/lib/polynom.c
@@ -222,21 +222,52 @@ polynome ply_multiplication(polynome poly1, polynome poly2)
return resultat;
}
-polynome ply_division(polynome poly1, polynome poly2)
+polynome ply_division(polynome dividende, polynome diviseur)
{ /* division de deux polynomes */
- polynome result = NULL;
-
-
- return result;
-
-
+ polynome interdividende = dividende, interdiviseur = NULL, inter = NULL, reste = dividende, resultat = NULL, r = NULL;
+
+ 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);
+ while ((interdividende) && (interdividende->degre >= diviseur->degre)) {
+ inter = ply_constr(rat_division(dividende->coef, diviseur->coef), dividende->degre - diviseur->degre);
+ printf("On trouve qu'il nous faut soustraire %s fois\n", ply_affichage(inter));
+ r = ply_addition(resultat, inter);
+ printf("Resultat intermédiaire %s\n", ply_affichage(r));
+ interdiviseur = ply_multiplication(diviseur, inter);
+ printf("On soustrait donc %s\n", ply_affichage(interdiviseur));
+ reste = ply_soustraction(interdividende, interdiviseur);
+ printf("Reste intermédiaire %s\n", ply_affichage(reste));
+ ply_destruct(resultat);
+ ply_destruct(inter);
+ ply_destruct(interdividende);
+ ply_destruct(interdiviseur);
+ resultat = r;
+ interdividende = reste;
+ }
+
+ return resultat;
}
-polynome ply_modulo(polynome poly1, polynome poly2)
+polynome ply_modulo(polynome dividende, polynome diviseur)
{ /* reste de la division de deux polynomes */
- polynome result = NULL;
+ polynome interdividende = dividende, interdiviseur = NULL, inter = NULL, reste = dividende, resultat = NULL, r = NULL;
- return result;
+ while (interdividende->degre >= diviseur->degre) {
+ inter = ply_constr(rat_division(dividende->coef, diviseur->coef), dividende->degre - diviseur->degre);
+ interdiviseur = ply_multiplication(diviseur, inter);
+ r = ply_addition(resultat, inter);
+ reste = ply_soustraction(interdividende, interdiviseur);
+ ply_destruct(resultat);
+ ply_destruct(inter);
+ ply_destruct(interdividende);
+ ply_destruct(interdiviseur);
+ resultat = r;
+ interdividende = reste;
+ }
+
+ return reste;
}
polynome ply_exposant(polynome poly, unsigned int exp)