fpc/packages/gmp
tom_at_work 9428c78d63 Pass OPT to compilation of fpmake.
Solves issues with systems that e.g. require special options for compilation of programs (e.g. libc programs to find libc startup code) or the actual build has been compiled with options that are incompatible with default ones.

Tested changes by building an i386-linux local build and i386-linux->arm-linux cross-builds

git-svn-id: trunk@22397 -
2012-09-15 23:41:44 +00:00
..
examples + Regenerate all Makefiles's after adding x86_64 netbsd target 2012-04-24 23:15:18 +00:00
src * Original author of GMP package now does wants to be named. 2012-04-01 13:17:24 +00:00
fpmake.pp * enabled for AIX 2012-04-11 18:07:23 +00:00
Makefile Pass OPT to compilation of fpmake. 2012-09-15 23:41:44 +00:00
Makefile.fpc Pass OPT to compilation of fpmake. 2012-09-15 23:41:44 +00:00
Makefile.fpc.fpcmake * More packages switched to fpmake building 2012-01-11 21:02:51 +00:00
readme * note about location win32 dll 2009-09-15 11:10:34 +00:00

Readme for libgmp.tar.bz2 2009-09-06

= What

  Free Pascal interface for the GNU Multiple Precision Arithmetic Library.

= Why

  Numeric computing outside the built in types range. AFAIK there is no complete
  binding for Free Pascal available yet.

= Files

  - gmp_accept_test.pas
    "Go/no go" test of the gmp unit against the GMP library on your system.

  - gmp.pas
    The interface unit.

  - gmp_testcase.pas
    Put this unit in your uses clause of a fpcunit project.

  - gmp_test_impl.inc
  - gmp_test_intf.inc
    Test classes declarations and implementations. Included by:
    * gmp_accept_test.pas
    * gmp_testcase

  - pidigits_example.pas
    Original source from:
    shootout.alioth.debian.org/u64/benchmark.php?test=pidigits&lang=fpascal&id=2
    Adapted for using the gmp unit.

  - pidigits_example2.pas
    Modified pidigits_example.pas to demonstrate usage of the gmp extensions.

  - printf_example.pas
    Demo using the GMP printf

  - printf_example2.pas
    Dtto with gmp extensions.

  - scanf_example.pas
    Demo using the GMP scanf.

  - scanf_example2.pas
    Dtto with gmp extensions.

= Status
  - Tested on 64 and 32 bit Linux and on 32 bit Windows.
  - Known issues
    * There is a link error on Windows with the GMP global variables.
      Probably could be solved with someone's better knowledge of the Windows
      environment.

= Bindings
  - Standard
    * Almost full (see comments in gmp.pas) binding of the types and functions
      exported from libgmp.

  - Extensions
    * Based on pseudo value types (in fact interface types) with an automatic
      memory management in the spirit of Object Pascal strings - compiler takes
      care of initialization/finalization. Copy on write semantics. Can intermix
      the standard binding/types with the extended ones. The extended types have
      access to a same set of numeric functions as in the standard binding.

  - Operators
    * Overloaded operators for the extensions value types. Can make programs
      significantly more readable/maintainable. See and compare for yourself
      in the pidigits examples. BTW, the overhead in this example with
      the extended types and operators is less than 10%. Unusable for shootout,
      but is probably acceptable in many other areas.

= Tips
  - range checks
    You should probably want to put asserts with *_fits before conversion to
    FPC ordinal types - applies to the assignment operator too.

= License
  - FPC developers, you can do anything you see appropriate with the sources.
    Review, refactor and/or reject :-)

= Windows

I got the examples running under win32 by getting the mingw-dynamic package
on

http://cs.nyu.edu/exact/core/gmp/

and then renaming it to gmp.dll