Wiki
Download
Manual
Eggs
API
Tests
Bugs
show
edit
history
You can edit this page using
wiki syntax
for markup.
Article contents:
== Outdated egg! This is an egg for CHICKEN 3, the unsupported old release. You're almost certainly looking for [[/eggref/4/gmp|the CHICKEN 4 version of this egg]], if it exists. If it does not exist, there may be equivalent functionality provided by another egg; have a look at the [[https://wiki.call-cc.org/chicken-projects/egg-index-4.html|egg index]]. Otherwise, please consider porting this egg to the current version of CHICKEN. [[tags: egg]] == gmp [[toc:]] === Description A chicken scheme interface to GNU MP 4.1 === Author [[Peter Keller]] === Requirements Requires the [[syntax-case]] egg. === Download [[http://code.call-cc.org/legacy-eggs/3/gmp.egg|gmp.egg]] === Documentation The library is split into several parts, which may be loaded/required separately: ; {{gmp_utils}} : Utility procedures ; {{gmp_integer}} : Integer routines ; {{gmp_float}} : Float routines ; {{gmp_rational}} : Rational arithmetic routines ; {{gmp_random}} : Random numbers The library used finalizers to free storage associated with unreferenced GMP data. In addition to the library, a validation program will be built and installed, named {{chicken_gmp_test}}. To test the GMP extension just enter $ gmp_test This is a release of the GNU MP library version 4.1 interface for chicken scheme. It is a pretty comprehensive interface, but without any of the lowlevel functions ({{mpn_*}}). Since the validation code is pretty extensive, it shouldn't take too much work to fix when later revisions of the MP library comes out. === Example Here is a tiny example of the interface usage: <enscript highlight="scheme"> (require-extension gmp) (let ( (mpz1 (make-mpz_t)) (mpz2 (make-mpz_t)) (mpz3 (make-mpz_t))) (mpz_init mpz1) (mpz_init mpz2) (mpz_init mpz3) (mpz_set_ui mpz2 6) (mpz_set_str mpz3 "7" 10) (mpz_mul mpz1 mpz2 mpz3) (print "The answer to " (mpz_get_str #f 10 mpz2) " times " (mpz_get_str #f 10 mpz3) " is " (mpz_get_str #f 10 mpz1) ".") (mpz_clear mpz1) (mpz_clear mpz2) (mpz_clear mpz3)) </enscript> For the high level functions that I have not implemented: {{mpf_get_d_2exp mpz_array_init _mpz_realloc mpz_get_d_2exp mpz_getlimbm mpz_import mpz_export mpf_random2}}, there exists a function that will warn you to stdout when you accidentily use them. ==== Special functions Here is an example of how the special function {{mpf_get_str}} is handled: <enscript highlight="scheme"> (let ( (mpf1 (make-mpf_t)) (exp_p (make-mp_exp_t_p))) (mpf_init mpf1) (mpf_set_ui mpf1 42) ;; get a string representation placing the exponent into exp_p (mpf_get_str #f exp_p 10 10 mpf1) ;; The ONLY way to see the exponent is to dereference the "pointer" ;; that is exp_p (print "The exponent is " (deref-mp_exp_t_p exp_p) ".") (mpf_clear mpf1)) </enscript> === Changelog * 0.0.5 Fixed a bug in the setup script [Thanks to Rafael Cavallaro and Dale Jordan] * 0.0.4 Replaced use of {{(end-of-file)}} with {{#!eof}} * 0.0.3 Initial release === License Copyright (C) 2002 Peter K. Keller This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA All files in this package are copyrighted (C) 2002 Peter K. Keller regardless if they actually say it or not at the top of the file.
Description of your changes:
I would like to authenticate
Authentication
Username:
Password:
Spam control
What do you get when you add 7 to 16?