diff options
author | Steve Langasek <vorlon@debian.org> | 2005-01-10 08:53:33 +0000 |
---|---|---|
committer | Bryan Newbold <bnewbold@robocracy.org> | 2017-02-20 00:05:30 -0800 |
commit | e33f9eb9cf5cc29c36ce2aa7e10cd0f37ae0cc8e (patch) | |
tree | abbf06041619e445f9d0b772b0d58132009d8234 /modular.txi | |
parent | f559c149c83da84d0b1c285f0298c84aec564af9 (diff) | |
parent | 8466d8cfa486fb30d1755c4261b781135083787b (diff) | |
download | slib-e33f9eb9cf5cc29c36ce2aa7e10cd0f37ae0cc8e.tar.gz slib-e33f9eb9cf5cc29c36ce2aa7e10cd0f37ae0cc8e.zip |
Import Debian changes 3a1-4.2debian/3a1-4.2
slib (3a1-4.2) unstable; urgency=low
* Non-maintainer upload.
* Add guile.init.local for use within the build dir, since otherwise we
have an (earlier unnoticed) circular build-dep due to a difference
between scm and guile.
slib (3a1-4.1) unstable; urgency=low
* Non-maintainer upload.
* Build-depend on guile-1.6 instead of scm, since the new version of
scm is wedged in unstable (closes: #281809).
slib (3a1-4) unstable; urgency=low
* Also check for expected creation on slibcat. (Closes: #240096)
slib (3a1-3) unstable; urgency=low
* Also check for /usr/share/guile/1.6/slib before installing for guile
1.6. (Closes: #239267)
slib (3a1-2) unstable; urgency=low
* Add format.scm back into slib until gnucash stops using it.
* Call guile-1.6 new-catalog (Closes: #238231)
slib (3a1-1) unstable; urgency=low
* New upstream release
* Remove Info section from doc-base file (Closes: #186950)
* Remove period from end of description (linda, lintian)
* html gen fixed upstream (Closes: #111778)
slib (2d4-2) unstable; urgency=low
* Fix url for upstream source (Closes: #144981)
* Fix typo in slib.texi (enquque->enqueue) (Closes: #147475)
* Add build depends.
slib (2d4-1) unstable; urgency=low
* New upstream.
slib (2d3-1) unstable; urgency=low
* New upstream.
* Remove texi2html call in debian/rules. Now done upstream. Add make
html instead.
* Changes to rules and doc-base to conform to upstream html gen
* Clean up upstream makefile to make sure it cleans up after itself.
Diffstat (limited to 'modular.txi')
-rw-r--r-- | modular.txi | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/modular.txi b/modular.txi new file mode 100644 index 0000000..d947b35 --- /dev/null +++ b/modular.txi @@ -0,0 +1,114 @@ +@code{(require 'modular)} +@ftindex modular + + +@defun mod x1 x2 +@defunx rem x1 x2 + +These procedures implement the Common-Lisp functions of the same names. +The real number @var{x2} must be non-zero. +@code{mod} returns @code{(- @var{x1} (* @var{x2} (floor (/ @var{x1} @var{x2}))))}. +@code{rem} returns @code{(- @var{x1} (* @var{x2} (truncate (/ @var{x1} @var{x2}))))}. + +If @var{x1} and @var{x2} are integers, then @code{mod} behaves like +@code{modulo} and @code{rem} behaves like @code{remainder}. + +@format +@t{(mod -90 360) @result{} 270 +(rem -90 180) @result{} -90 + +(mod 540 360) @result{} 180 +(rem 540 360) @result{} 180 + +(mod (* 5/2 pi) (* 2 pi)) @result{} 1.5707963267948965 +(rem (* -5/2 pi) (* 2 pi)) @result{} -1.5707963267948965 +} +@end format +@end defun + +@defun extended-euclid n1 n2 + +Returns a list of 3 integers @code{(d x y)} such that d = gcd(@var{n1}, +@var{n2}) = @var{n1} * x + @var{n2} * y. +@end defun + +@defun symmetric:modulus n + +Returns @code{(quotient (+ -1 n) -2)} for positive odd integer @var{n}. +@end defun + +@defun modulus->integer modulus + +Returns the non-negative integer characteristic of the ring formed when +@var{modulus} is used with @code{modular:} procedures. +@end defun + +@defun modular:normalize modulus n + +Returns the integer @code{(modulo @var{n} (modulus->integer +@var{modulus}))} in the representation specified by @var{modulus}. +@end defun +@noindent +The rest of these functions assume normalized arguments; That is, the +arguments are constrained by the following table: + +@noindent +For all of these functions, if the first argument (@var{modulus}) is: +@table @code +@item positive? +Work as before. The result is between 0 and @var{modulus}. + +@item zero? +The arguments are treated as integers. An integer is returned. + +@item negative? +The arguments and result are treated as members of the integers modulo +@code{(+ 1 (* -2 @var{modulus}))}, but with @dfn{symmetric} +@cindex symmetric +representation; i.e. @code{(<= (- @var{modulus}) @var{n} +@var{modulus})}. +@end table + +@noindent +If all the arguments are fixnums the computation will use only fixnums. + + +@defun modular:invertable? modulus k + +Returns @code{#t} if there exists an integer n such that @var{k} * n +@equiv{} 1 mod @var{modulus}, and @code{#f} otherwise. +@end defun + +@defun modular:invert modulus n2 + +Returns an integer n such that 1 = (n * @var{n2}) mod @var{modulus}. If +@var{n2} has no inverse mod @var{modulus} an error is signaled. +@end defun + +@defun modular:negate modulus n2 + +Returns (@minus{}@var{n2}) mod @var{modulus}. +@end defun + +@defun modular:+ modulus n2 n3 + +Returns (@var{n2} + @var{n3}) mod @var{modulus}. +@end defun + +@defun modular:- modulus n2 n3 + +Returns (@var{n2} @minus{} @var{n3}) mod @var{modulus}. +@end defun + +@defun modular:* modulus n2 n3 + +Returns (@var{n2} * @var{n3}) mod @var{modulus}. + +The Scheme code for @code{modular:*} with negative @var{modulus} is +not completed for fixnum-only implementations. +@end defun + +@defun modular:expt modulus n2 n3 + +Returns (@var{n2} ^ @var{n3}) mod @var{modulus}. +@end defun |