source: CGBLisp/trunk/src/modular-poly.lisp@ 98

Last change on this file since 98 was 98, checked in by Marek Rychlik, 15 years ago

Removed useless RCS version info. Added missing Emacs mode lines.

File size: 1.6 KB
Line 
1;;; -*- Mode: Lisp; Syntax: Common-Lisp; Package: Grobner; Base: 10 -*-
2#|
3 *--------------------------------------------------------------------------*
4 | Copyright (C) 1994, Marek Rychlik (e-mail: rychlik@math.arizona.edu) |
5 | Department of Mathematics, University of Arizona, Tucson, AZ 85721 |
6 | |
7 | Everyone is permitted to copy, distribute and modify the code in this |
8 | directory, as long as this copyright note is preserved verbatim. |
9 *--------------------------------------------------------------------------*
10|#
11
12(defpackage "MODULAR-POLY"
13 (:export modular-trace modular-trace-1)
14 (:use "MODULAR" "POLY" "COMMON-LISP"))
15
16(in-package "MODULAR-POLY")
17
18(proclaim '(optimize (speed 0) (space 0) (safety 3) (debug 3)))
19
20(defun modular-trace (plist modulus)
21 "Return PLIST with coefficients reduced modulo prime MODULUS."
22 (mapcar #'(lambda (p) (modular-trace-1 p modulus)) plist))
23
24(defun modular-trace-1 (p modulus)
25 "Return a polynomial P with coefficients reduced modulo prime MODULUS."
26 (mapcar
27 #'(lambda (term) (cons (car term) (mod (cdr term) modulus)))
28 p))
29
30(defun frobenius-kernel (n modulus)
31 "Return a list of N polynomials of the form XI**MODULUS-XI, where
32XI is the I-th variable. Work in internal alist representation."
33 (let* ((zero (make-list n :initial-element 0))
34 (plist (make-list n :initial-element (list (cons zero 1) (cons zero (- modulus 1))))))
35 (dotimes (i n plist)
36 (setf (elt plist i) (copy-tree (elt plist i))
37 (elt (caar (elt plist i)) i) modulus
38 (elt (caadr (elt plist i)) i) 1))))
39
Note: See TracBrowser for help on using the repository browser.