source: CGBLisp/src/RCS/modular-poly.lisp,v@ 1

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

First import of a version circa 1997.

File size: 2.1 KB
Line 
1head 1.2;
2access;
3symbols;
4locks; strict;
5comment @;;; @;
6
7
81.2
9date 2009.01.22.04.04.10; author marek; state Exp;
10branches;
11next 1.1;
12
131.1
14date 2009.01.19.09.26.55; author marek; state Exp;
15branches;
16next ;
17
18
19desc
20@@
21
22
231.2
24log
25@*** empty log message ***
26@
27text
28@;;; -*- Mode: Lisp; Syntax: Common-Lisp; Package: Grobner; Base: 10 -*-
29#|
30 $Id$
31 *--------------------------------------------------------------------------*
32 | Copyright (C) 1994, Marek Rychlik (e-mail: rychlik@@math.arizona.edu) |
33 | Department of Mathematics, University of Arizona, Tucson, AZ 85721 |
34 | |
35 | Everyone is permitted to copy, distribute and modify the code in this |
36 | directory, as long as this copyright note is preserved verbatim. |
37 *--------------------------------------------------------------------------*
38|#
39
40(defpackage "MODULAR-POLY"
41 (:export modular-trace modular-trace-1)
42 (:use "MODULAR" "POLY" "COMMON-LISP"))
43
44(in-package "MODULAR-POLY")
45
46#+debug(proclaim '(optimize (speed 0) (debug 3)))
47#-debug(proclaim '(optimize (speed 3) (debug 0)))
48
49(defun modular-trace (plist modulus)
50 "Return PLIST with coefficients reduced modulo prime MODULUS."
51 (mapcar #'(lambda (p) (modular-trace-1 p modulus)) plist))
52
53(defun modular-trace-1 (p modulus)
54 "Return a polynomial P with coefficients reduced modulo prime MODULUS."
55 (mapcar
56 #'(lambda (term) (cons (car term) (mod (cdr term) modulus)))
57 p))
58
59(defun frobenius-kernel (n modulus)
60 "Return a list of N polynomials of the form XI**MODULUS-XI, where
61XI is the I-th variable. Work in internal alist representation."
62 (let* ((zero (make-list n :initial-element 0))
63 (plist (make-list n :initial-element (list (cons zero 1) (cons zero (- modulus 1))))))
64 (dotimes (i n plist)
65 (setf (elt plist i) (copy-tree (elt plist i))
66 (elt (caar (elt plist i)) i) modulus
67 (elt (caadr (elt plist i)) i) 1))))
68 @
69
70
711.1
72log
73@Initial revision
74@
75text
76@d3 1
77a3 1
78 $Id: modular-poly.lisp,v 1.6 1997/12/13 15:25:11 marek Exp $
79d19 2
80a20 2
81;;(proclaim '(optimize (speed 0) (debug 3)))
82(proclaim '(optimize (speed 3) (debug 0)))
83@
Note: See TracBrowser for help on using the repository browser.