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

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

* empty log message *

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