
Boost : 
From: Christoph Ludwig (cludwig_at_[hidden])
Date: 20060529 12:39:02
On Mon, May 29, 2006 at 03:55:01PM +0200, Maarten Kronenburg wrote:
> In my opinion the unsigned integer with a modulus
> is required, which is generalizing the base type
> unsigned int (which is modular) to any modulus.
I don't understand your motivation for such a type. IIUC there are two lines
of reasoning:
1) There are applications where integers with negative values don't make any
sense.
But that is merely a special case of variables with a restricted
range. There are also bigint applications where a variable can only take
prime values or square free values or... Such restrictions are no less
common than the case of nonnegative integers, at least in my experience
from computer algebra and cryptography.
Therefore, as David Abrahms pointed out, there should rather be a generic
solution for restricted types.
2) The native unsigned type is an integral type with mod 2^n semantics. Thus,
there should also be a bigint type with mod 2^n semantics.
Then why restrict yourself to the modulus 2^n? All arbitrary length integer
packages I am familiar with also provide modular arithmetic for arbitrary
modulus N. (Even if you cannot exploit the factorization of the modulus,
modular arithmetic is much more efficient than integer arithmetic followed
by a modulus operation. In fact, I would have no use for a bigint
implementation without efficient modular arithmetic.) Most important is
certainly the case that N is prime, but composed moduli are also often
needed. The special case N = 2^n may perhaphs be the easiest one to
implement, but from a potential user's point of view such a choice seems
arbitrary and gratuitous.
Christoph
 FH Worms  University of Applied Sciences Fachbereich Informatik / Telekommunikation Erenburgerstr. 19, 67549 Worms, Germany
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk