--- rpl/src/depassements.c 2010/03/09 10:18:43 1.5 +++ rpl/src/depassements.c 2012/12/19 09:58:22 1.39 @@ -1,7 +1,7 @@ /* ================================================================================ - RPL/2 (R) version 4.0.13 - Copyright (C) 1989-2010 Dr. BERTRAND Joël + RPL/2 (R) version 4.1.12 + Copyright (C) 1989-2012 Dr. BERTRAND Joël This file is part of RPL/2. @@ -20,7 +20,7 @@ */ -#include "rpl.conv.h" +#include "rpl-conv.h" /* @@ -128,8 +128,8 @@ depassement_multiplication(integer8 *a, produit_croise = (limite = (msba * lsbb)) + (msbb * lsba); /* - * Traitement du débordement sur produit_croisé - */ + * Traitement du débordement sur produit_croisé + */ if (produit_croise < limite) { @@ -198,7 +198,7 @@ depassement_puissance(integer8 *a, integ return(d_erreur); } - if ((*a) <= 1) + if ((r = abs(*a)) <= 1) { if ((*a) == 0) { @@ -206,14 +206,20 @@ depassement_puissance(integer8 *a, integ } else { - (*resultat) = 1; + if ((*a) > 0) + { + (*resultat) = 1; + } + else + { + (*resultat) = (((*b) % 2) == 0) ? 1 : -1; + } } return(d_absence_erreur); } depassement = d_faux; - r = abs(*a); for(i = 0; i < (*b); i++) {