X-Git-Url: https://git.distorted.org.uk/u/mdw/catacomb/blobdiff_plain/b817bfc642225b8c3c0b6a7e42d1fb949b61a606..45c0fd363937c6e9b05da04a9167e9912c05ca0c:/mpbarrett.c diff --git a/mpbarrett.c b/mpbarrett.c index ffd2649..8b0ee88 100644 --- a/mpbarrett.c +++ b/mpbarrett.c @@ -1,13 +1,13 @@ /* -*-c-*- * - * $Id: mpbarrett.c,v 1.10 2004/04/08 01:36:15 mdw Exp $ + * $Id$ * * Barrett modular reduction * * (c) 1999 Straylight/Edgeware */ -/*----- Licensing notice --------------------------------------------------* +/*----- Licensing notice --------------------------------------------------* * * This file is part of Catacomb. * @@ -15,12 +15,12 @@ * it under the terms of the GNU Library General Public License as * published by the Free Software Foundation; either version 2 of the * License, or (at your option) any later version. - * + * * Catacomb is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. - * + * * You should have received a copy of the GNU Library General Public * License along with Catacomb; if not, write to the Free * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, @@ -40,18 +40,19 @@ * @mp *m@ = modulus to work to * * - * Returns: --- + * Returns: Zero on success, nonzero on error. * * Use: Initializes a Barrett reduction context ready for use. */ -void mpbarrett_create(mpbarrett *mb, mp *m) +int mpbarrett_create(mpbarrett *mb, mp *m) { mp *b; /* --- Validate the arguments --- */ - assert(((void)"Barrett modulus must be positive", (m->f & MP_NEG) == 0)); + if (!MP_POSP(m)) + return (-1); /* --- Compute %$\mu$% --- */ @@ -63,6 +64,7 @@ void mpbarrett_create(mpbarrett *mb, mp *m) b->vl[-1] = 1; mp_div(&b, 0, b, m); mb->mu = b; + return (0); } /* --- @mpbarrett_destroy@ --- *