From: Florian Weimer <fw@deneb.enyo.de>
Subject: Re: Modular type (Re: Large numbers)
Date: 15 Mar 2001 11:58:58 +0100
Date: 2001-03-15T11:58:58+01:00 [thread overview]
Message-ID: <87itlbnvrh.fsf@deneb.enyo.de> (raw)
In-Reply-To: slrn9b0vik.243.georg@apal.ii.uib.no
georg@ii.uib.no (Hans Georg Schaathun) writes:
> If I remember correctly, that is NP-hard; though that does not really
> matter since our numbers are bounded to 32 bits. I was rather disappointed
> to see that Ada does division completely wrong (it would be better not to
> do it at all). What is the best way to do division? A linear search for
> the inverse requires 2*10^9 multiplications, which is about as many as
> required for all the rest of the problem. Is this really the preferred
> algorithm?
If you want to calculate the inverse of $x \in (\Z/n\Z)^\times$,
you can use that $x^{\phi(n)}$ equals $1$, so you need only
$O(\log \phi (n))$ operations. (To calculate $\phi(n)$, you need the
factorization of $n$, which is quite expensive, but needed only once).
IMHO, the Ada way of division is a bit strange, especially for prime
moduli. OTOH, at least in the binary modulus case, dividing by zero
divisors (e.g. powers of two) is very common, so the Z/nZ approach
fails in this area. This confusion could have been avoid only if
non-binary moduli were not in included in the language.
> 2) Dynamic modulus.
> Is it in any way possible to choose the modulus for a modular type
> runtime, e.g. by parameter to the program?
No, there isn't. The modulus has to be a static expression (which is
a stronger requirement then a compile-time constant).
next prev parent reply other threads:[~2001-03-15 10:58 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-03-09 18:58 Large numbers (or is Ada the choice for me?) Hans Georg Schaathun
2001-03-09 19:35 ` Marin David Condic
2001-03-09 20:44 ` David Starner
2001-03-09 23:12 ` Marin David Condic
2001-03-10 2:56 ` David Starner
2001-03-10 11:37 ` Florian Weimer
2001-03-10 6:08 ` tmoran
2001-03-09 21:01 ` Randy Brukardt
2001-03-09 23:02 ` Robert A Duff
2001-03-09 23:28 ` Marin David Condic
2001-03-10 16:49 ` Hans Georg Schaathun
2001-03-10 11:59 ` Jeffrey Carter
2001-03-09 20:37 ` Brian Catlin
2001-03-09 21:26 ` JP Thornley
2001-03-09 21:59 ` Tucker Taft
2001-03-15 8:33 ` Modular type (Re: Large numbers) Hans Georg Schaathun
2001-03-15 10:58 ` Florian Weimer [this message]
2001-03-15 11:12 ` Hans Georg Schaathun
2001-03-15 16:24 ` Tucker Taft
2001-03-10 1:42 ` Large numbers (or is Ada the choice for me?) Keith Thompson
2001-03-19 20:48 ` Robert I. Eachus
2001-03-20 3:33 ` Brian Rogoff
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox