/* -*-c-*-
*
- * $Id: gfx-kmul.c,v 1.1 2000/10/08 15:49:37 mdw Exp $
+ * $Id$
*
* Karatsuba's multiplication algorithm on binary polynomials
*
* MA 02111-1307, USA.
*/
-/*----- Revision history --------------------------------------------------*
- *
- * $Log: gfx-kmul.c,v $
- * Revision 1.1 2000/10/08 15:49:37 mdw
- * First glimmerings of binary polynomial arithmetic.
- *
- */
-
/*----- Header files ------------------------------------------------------*/
#include <assert.h>
avm = avl;
}
- assert(((void)"Destination too small for Karatsuba gf-multiply",
- dvl - dv >= 4 * m));
- assert(((void)"Not enough workspace for Karatsuba gf-multiply",
- svl - sv >= 4 * m));
-
/* --- Sort out the middle term --- */
{
mpw *bsv = sv + m, *ssv = bsv + m;
mpw *rdv = dv + m, *rdvl = rdv + 2 * m;
+ assert(rdvl <= dvl);
+ assert(ssv <= svl);
UXOR2(sv, bsv, av, avm, avm, avl);
UXOR2(bsv, ssv, bv, bvm, bvm, bvl);
if (m > GFK_THRESH)
ok = 0;
}
- free(a); free(b); free(c); free(d); free(s);
+ xfree(a); xfree(b); xfree(c); xfree(d); xfree(s);
return (ok);
}