mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-12 03:08:20 +02:00
91 lines
2.7 KiB
Plaintext
91 lines
2.7 KiB
Plaintext
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 |