On Sat, Dec 3, 2011 at 11:54 PM, Stas Boukarev <stass...@gmail.com> wrote:

> Hans Hübner <hans.hueb...@gmail.com> writes:
>
> > 2011/12/4 István Lakatos <lakatos.i...@gmail.com>:
> >> The problem I ran into while trying to implement RSA in Common Lisp for
> my
> >> cryptography class was calculating the square root of a bignum (to
> >> demonstrate the Wiener attack on the cipher). There seems to be no
> bignum
> >> equivalent to floating point numbers. Are there any libraries that
> rectify
> >> this issue? I couldn't seem to find any.
> >
> > Clozure CL implements EXPT and SQRT for bignums.
> Every implementation does that. But it may overflow double floats.
>
> This is required by the ANS.

Numberical (*) calculations in ANSI CL usually devolve towards floats (or
complex floats) because ANSI CL is intended to be an "industrial strength"
programming language that mostly conforms to the usual efficiency
assumptions of IEEE float processors.  That gets you 64 or 80 or 81 bits,
depending.  But there is another venerable tradition of numerical (even
float) computation that preserves accuracy.  See the "bigfloat" capability
of Maxima (the public-domain version of Macsyma) open sourced at
Sourceforge.  Indeed, you might find that the easiest way to write the
computations you need would be to do them in Maxima (which is sort-of CL)
rather than trying to expropriate the Maxima source code.  HTH...
.
(*) -- This neologism was found on a door label sign at the Yale CS
department group for "numerical calculation" some time in the late 1970's.
 I've alwasy thought that this intentional illiteracy (misspelling) was
particularly witty.
_______________________________________________
pro mailing list
pro@common-lisp.net
http://lists.common-lisp.net/cgi-bin/mailman/listinfo/pro

Reply via email to