Thank you!  I was thinking of GNU-MP extension for Ruby - since 
programs from Debian's computer language shootout seem to use this.  
I'll propose the Ruby extension to GMP when your case gets approved.
 -ps

Stefan Teleman wrote:
> Including The GNU Multiple Precision Library [GNU MP] with Solaris
>
> Stefan Teleman <Stefan.Teleman at Sun.COM>
> 5 November 2007
>
> 1.    Summary and motivation
>
>       The GNU MP Bignum Library [1] is described as "[...] a portable
>       library written in C for arbitrary precision arithmetic on integers,
>       rational numbers, and floating-point numbers. It aims to provide
>       the fastest possible arithmetic for all applications that need
>       higher precision than is directly supported by the basic C types.
>
>       Many applications use just a few hundred bits of precision; but some
>       applications may need thousands or even millions of bits. GMP is
>       designed to give good performance for both, by choosing algorithms
>       based on the sizes of the operands, and by carefully keeping the
>       overhead at a minimum."
>
>       The inclusion of the GNU MP Library in Solaris will provide
>       Solaris software developers with a recognized and widely used
>       multiple precision math library.
>
>       The GNU MP Library borrows ideas from Richard P.  Brent's
>       "MP, A Fortran Multiple-Precision Arithmetic Package" [3],
>       and implements extensions to the IEEE 754-1985 [4] Standard for
>       floating-point arithmetic. Several other MP Libraries have been
>       developed on top of GNU MP, most notably MPFR [5].
>
>       The code of the GNU MP Library emphasizes speed over simplicity
>       and elegance.
>
>       This case seeks Mirco/Patch relase Binding.
>
> 2.    Technical issues
>
>       2.1.    Key objects
>
>       /usr/lib/libgmp.so.3.4.2
>       /usr/lib/libgmp.so.3 -> /usr/lib/libgmp.so.3.4.2
>       /usr/lib/libgmp.so -> /usr/lib/libgmp.so.3.4.2
>
>       /usr/lib/libgmpxx.so.4.0.2
>       /usr/lib/libgmpxx.so.4 -> /usr/lib/libgmpxx.so.4.0.2
>       /usr/lib/libgmpxx.so -> /usr/lib/libgmpxx.so.4.0.2
>
>       /usr/lib/libmp.so.3.1.11
>       /usr/lib/libmp.so.3 -> /usr/lib/libmp.so.3.1.11
>       /usr/lib/libmp.so -> /usr/lib/libmp.so.3.1.11
>
>       /usr/lib/${MACH64}/libgmp.so.3.4.2
>       /usr/lib/${MACH64}/libgmp.so.3 -> /usr/lib/${MACH64}/libgmp.so.3.4.2
>       /usr/lib/${MACH64}/libgmp.so -> /usr/lib/${MACH64}/libgmp.so.3.4.2
>
>       /usr/lib/${MACH64}/libgmpxx.so.4.0.2
>       /usr/lib/${MACH64}/libgmpxx.so.4 -> /usr/lib/${MACH64}/libgmpxx.so.4.0.2
>       /usr/lib/${MACH64}/libgmpxx.so -> /usr/lib/${MACH64}/libgmpxx.so.4.0.2
>
>       /usr/lib/${MACH64}/libmp.so.3.1.11
>       /usr/lib/${MACH64}/libmp.so.3 -> /usr/lib/${MACH64}/libmp.so.3.1.11
>       /usr/lib/${MACH64}/libmp.so -> /usr/lib/${MACH64}/libmp.so.3.1.11
>
>       /usr/include/gmp/gmp.h
>       /usr/include/gmp/gmpxx.h
>       /usr/include/gmp/mp.h
>
>       /usr/share/doc/gmp/html/index.html
>       /usr/share/doc/gmp/html/Algorithms.html
>       /usr/share/doc/gmp/html/BSD-Compatible-Functions.html
>       /usr/share/doc/gmp/html/C_002b_002b-Class-Interface.html
>       /usr/share/doc/gmp/html/Concept-Index.html
>       /usr/share/doc/gmp/html/Contributors.html
>       /usr/share/doc/gmp/html/Copying.html
>       /usr/share/doc/gmp/html/Custom-Allocation.html
>       /usr/share/doc/gmp/html/Floating_002dpoint-Functions.html
>       /usr/share/doc/gmp/html/Formatted-Input.html
>       /usr/share/doc/gmp/html/Formatted-Output.html
>       /usr/share/doc/gmp/html/Function-Index.html
>       /usr/share/doc/gmp/html/GMP-Basics.html
>       /usr/share/doc/gmp/html/GNU-Free-Documentation-License.html
>       /usr/share/doc/gmp/html/Installing-GMP.html
>       /usr/share/doc/gmp/html/Integer-Functions.html
>       /usr/share/doc/gmp/html/Internals.html
>       /usr/share/doc/gmp/html/Introduction-to-GMP.html
>       /usr/share/doc/gmp/html/Language-Bindings.html
>       /usr/share/doc/gmp/html/Low_002dlevel-Functions.html
>       /usr/share/doc/gmp/html/Random-Number-Functions.html
>       /usr/share/doc/gmp/html/Rational-Number-Functions.html
>       /usr/share/doc/gmp/html/References.html
>       /usr/share/doc/gmp/html/Reporting-Bugs.html
>
>       /usr/share/info/gmp.info
>       /usr/share/info/gmp.info-1
>       /usr/share/info/gmp.info-2
>
>       /usr/share/man/man3/gmp.3
>
>       This case proposes the integration of GNU MP Version 4.2.2.
>
>       The version of GNU MP [4.2.2] proposed for Integration is 64-bit
>       clean and largefile aware. The 64-bit GNU MP libraries will be
>       delivered with this Integration.
>
>       By default, GNU MP installs its header files under /usr/include.
>       We propose changing this default installation location to a more
>       suitable /usr/include/gmp, for the purpose of avoiding namespace
>       pollution in /usr/include.
>
>       GNU MP does not provide documentation in UNIX man format. A wrapper
>       man page, to be delivered in Section 3 of the Manual, will provide
>       pointers to the HTML and Texinfo documentation delivered by GNU MP.
>
>       2.2.    Programmatic Facilities
>
>       GNU MP provides a large set of arithmetic and mathematical functions.
>       The documentation provided by GNU MP[2] categorizes several high-level
>       subsets for these functions:
>
>               - Integer Functions
>               - Rational Number Functions
>               - Floating-point Functions
>               - Low-level Functions
>               - Random Number Functions
>               - Formatted Output
>               - Formatted Input
>               - C++ Class Interface
>               - Berkeley MP Compatible Functions
>               - Custom Allocation
>               - Language Bindings
>               - Algorithms
>               - Internals
>
>       Key aspects of GNU MP's functionality are discussed below.
>
>       libgmp.so.3.4.2 is the C implementation of the GNU MP Bignum
>       Library. This shared object delivers the API's implementing
>       the functions contained in the subclassing enumerated above.
>
>       libmp.so.3.1.11 is the C wrapper providing the BSD MP
>       Compatibility API Layer. This library does not implement any
>       new functionality in GNU MP; its purpose is restricted to API
>       compatibility.
>
>       libgmpxx.so.4.0.2 is the C++ Library in GNU MP. It provides
>       iostream operator overloading, as well as a class hierarchy
>       interface to GNU MP's fundamental types [mpz_t, mpq_t and mpf_t].
>       Its purpose is to provide a native C++ language binding.
>
>       2.3.    Build and ABI Considerations
>
>       Several aspects of the build system configuration for GNU MP,
>       affecting GNU MP's ABI, are discussed below.
>
>       GNU MP's build system is based on the auto*tools/configure shell
>       script. In addition to the standard ./configure arguments, GNU MP
>       provides specific options for handling temporary memory allocations:
>
>               --enable-alloca=<value>
>
>       The allowed options are:
>
>               --enable-alloca=alloca
>               --enable-alloca=malloc-reentrant
>               --enable-alloca=malloc-notreentrant
>
>       This option is particularily relevant when the consumer of the
>       GNU MP interfaces must allocate very large temporary objects.
>       For the purposes of this Integration, GNU MP will be built with
>       the --enable-alloca=malloc-reentrant option.
>
>       In addition to the memory allocation options, GNU MP provides
>       specific options for enabling FFT [Fast Fourier Transform]
>       multiplications. By default, multiplications in GNU MP are done
>       using either Karatsuba, 3-way Toom, or Fermat FFT. The Fermat
>       FFT option is used on large to very large operands. This integration
>       will enable the use of Fermat FFT:
>
>               --enable-fft
>
>       This Integration of GNU MP will also enable the BSD MP
>       compatibility layer library [libmp.so.3.1.11]:
>
>               --enable-mpbsd
>
>       2.4.    Language Bindings
>
>       The GNU MP Library is written in ANSI C and ISA-specific assembler.
>       Additionally, the GNU MP distribution provides a C++ Library.
>       The C++ GNU MP Library will be included with this Integration:
>
>               --enable-cxx
>
>       2.5.    Documentation
>
>       GNU MP provides documentation in texinfo and html formats. UNIX
>       man pages are not provided, by default, by GNU MP. For the purposes
>       of this Integration, a generic man page will be provided, in
>       Section 3 of the manual [gmp.3]. This man page will only include
>       pointers to the installed documentation [in texinfo and html
>       formats]. [6]
>
> 3.    Interfaces
>
>       3.1.    Interface Stability
>
>       The development and release schedules of the GNU MP Library are
>       controlled by a group of developers external to SMI
>       [http://gmplib.org/] [1].  Although GNU MP attempts to maintain
>       API and ABI compatibility between releases, ABI and API breakage
>       between releases may occur, especially within the C++ library and
>       the experimental features of GNU MP.
>
>       3.2.    Imported Interfaces
>
>       GNU MP imports interfaces from the Standard C Library and the
>       Standard Math Library. In addition, the C++ GNU MP Library
>       imports interfaces from the C++ run-time Library [libCrun.so.1]
>       and from the Standard C++ Library [libCstd.so.1].
>
>       3.3.    Exported Interfaces
>
>       NAME                            STABILITY       NOTES
>
>       SUNWgnu-mp                      Uncommitted     Package Name
>
>       /usr/lib/libgmp.so.3.4.2        Uncommitted     Shared Library
>       /usr/lib/libgmp.so.3            Uncommitted     Symbolic Link
>       /usr/lib/libgmp.so              Uncommitted     Symbolic Link
>
>       /usr/lib/libgmpxx.so.4.0.2      Uncommitted     Shared Library
>       /usr/lib/libgmpxx.so.4          Uncommitted     Symbolic Link
>       /usr/lib/libgmpxx.so            Uncommitted     Symbolic Link
>
>       /usr/lib/libmp.so.3.1.11        Uncommitted     Shared Library
>       /usr/lib/libmp.so.3             Uncommitted     Symbolic Link
>       /usr/lib/libmp.so               Uncommitted     Symbolic Link
>
>       /usr/lib/${MACH64}/libgmp.so.3.4.2      Uncommitted     Shared Library
>       /usr/lib/${MACH64}/libgmp.so.3          Uncommitted     Symbolic Link
>       /usr/lib/${MACH64}/libgmp.so            Uncommitted     Symbolic Link
>
>       /usr/lib/${MACH64}/libgmpxx.so.4.0.2    Uncommitted     Shared Library
>       /usr/lib/${MACH64}/libgmpxx.so.4        Uncommitted     Symbolic Link
>       /usr/lib/${MACH64}/libgmpxx.so          Uncommitted     Symbolic Link
>
>       /usr/lib/${MACH64}/libmp.so.3.1.11      Uncommitted     Shared Library
>       /usr/lib/${MACH64}/libmp.so.3           Uncommitted     Symbolic Link
>       /usr/lib/${MACH64}/libmp.so             Uncommitted     Symbolic Link
>
>       /usr/include/gmp/gmp.h          Uncommitted     Header file
>       /usr/include/gmp/gmpxx.h        Uncommitted     Header file
>       /usr/include/gmp/mp.h           Uncommitted     Header file
>
>       /usr/share/man/man3/gmp.3       Uncommitted     Manual Page
>
>       /usr/share/info/gmp.info        Uncommitted     Texinfo Page
>       /usr/share/info/gmp.info-1      Uncommitted     Texinfo Page
>       /usr/share/info/gmp.info-2      Uncommitted     Texinfo Page
>
>       /usr/share/doc/gmp/html/index.html      Uncommitted     HTML Doc
>       /usr/share/doc/gmp/html/Algorithms.html Uncommitted     HTML Doc
>       /usr/share/doc/gmp/html/BSD-Compatible-Functions.html   Uncommitted     
> HTML Doc
>       /usr/share/doc/gmp/html/C_002b_002b-Class-Interface.html        
> Uncommitted     HTML Doc
>       /usr/share/doc/gmp/html/Concept-Index.html      Uncommitted     HTML Doc
>       /usr/share/doc/gmp/html/Contributors.html       Uncommitted     HTML Doc
>       /usr/share/doc/gmp/html/Copying.html    Uncommitted     HTML Doc
>       /usr/share/doc/gmp/html/Custom-Allocation.html  Uncommitted     HTML Doc
>       /usr/share/doc/gmp/html/Floating_002dpoint-Functions.html       
> Uncommitted     HTML Doc
>       /usr/share/doc/gmp/html/Formatted-Input.html    Uncommitted     HTML Doc
>       /usr/share/doc/gmp/html/Formatted-Output.html   Uncommitted     HTML Doc
>       /usr/share/doc/gmp/html/Function-Index.html     Uncommitted     HTML Doc
>       /usr/share/doc/gmp/html/GMP-Basics.html         Uncommitted     HTML Doc
>       /usr/share/doc/gmp/html/GNU-Free-Documentation-License.html     
> Uncommitted     HTML Doc
>       /usr/share/doc/gmp/html/Installing-GMP.html     Uncommitted     HTML Doc
>       /usr/share/doc/gmp/html/Integer-Functions.html  Uncommitted     HTML Doc
>       /usr/share/doc/gmp/html/Internals.html          Uncommitted     HTML Doc
>       /usr/share/doc/gmp/html/Introduction-to-GMP.html        Uncommitted     
> HTML Doc
>       /usr/share/doc/gmp/html/Language-Bindings.html  Uncommitted     HTML Doc
>       /usr/share/doc/gmp/html/Low_002dlevel-Functions.html    Uncommitted     
> HTML Doc
>       /usr/share/doc/gmp/html/Random-Number-Functions.html    Uncommitted     
> HTML Doc
>       /usr/share/doc/gmp/html/Rational-Number-Functions.html  Uncommitted     
> HTML Doc
>       /usr/share/doc/gmp/html/References.html         Uncommitted     HTML Doc
>       /usr/share/doc/gmp/html/Reporting-Bugs.html     Uncommitted     HTML Doc
>
> 4.    References
>
>       [1]     http://www.gmplib.org/
>       [2]     http://gmplib.org/gmp-man-4.2.2.pdf     
>       [3]     http://portal.acm.org/citation.cfm?id=355776
>       [4]     http://grouper.ieee.org/groups/754/
>               http://www.psc.edu/general/software/packages/ieee/ieee.html
>       [5]     http://www.loria.fr/~hanrot/Papers/toms.pdf
>       [6]     /shared/sac/PSARC/2007/166
>
>
>   

-- 
Prashant Srinivasan
F/OSS Enthusiast
Sun Microsystems, Inc.
http://blogs.sun.com/prashant
GnuPG key: http://pgp.mit.edu:11371/pks/lookup?op=get&search=0x82FBDE5A



Reply via email to