source: git/kernel/longalg.h @ 9e8da7

spielwiese
Last change on this file since 9e8da7 was d0450f, checked in by Frank Seelisch <seelisch@…>, 13 years ago
minor changes at code that is generic for alg/transc ext git-svn-id: file:///usr/local/Singular/svn/trunk@13916 2c84dea3-7e68-4137-9b89-c4e89433aadc
  • Property mode set to 100644
File size: 4.3 KB
Line 
1#ifndef LONGALG_H
2#define LONGALG_H
3/****************************************
4*  Computer Algebra System SINGULAR     *
5****************************************/
6/* $Id: longalg.h 12749 2010-04-27 14:17:56Z hannes $ */
7/*
8* ABSTRACT:   algebraic numbers
9*/
10#include <kernel/structs.h>
11#include <kernel/longrat.h>
12#include <kernel/polys-impl.h>
13#include <kernel/longtrans.h>
14
15/*
16   IMPORTANT INFORMATION:
17   Instantiation of an algebraic field extension in SINGULAR
18   works by first creating a transcendental field extension
19   and then providing a minimal polynomial / minimal ideal.
20   Consequently, first the code for transcendental field
21   extensions will be activated; see longtrans.*.
22   When providing a minimal polynomial / minimal ideal, all
23   function pointers will be re-defined, using the below method
24   redefineFunctionPointers(). After that, the code for algebraic
25   field extensions is active; see longalg.*.
26   
27   NOTE:
28   Elements of algebraic and transcendental field extensions
29   are polynomials or quotients of two polynomials, respectively.
30   All these polynomials, as well as the minimal polynomial (in
31   the case of an algebraic extension) live in the globally
32   accessible ring 'nacRing', defined in longtrans.*.
33   
34   METHOD NAMING CONVENTIONS
35   (not true for types / structs / global variables):
36   nap*   macros and methods operating on polynomials living in
37          nacRing (defined in longtrans.*),
38   na*    (but not nap*) methods and macros for algebraic field
39          extensions (defined in longalg.*),
40   nt*    methods and macros for transcendental field extensions,
41          (defined in longtrans.*)
42   nac*   function pointers for computing with the coefficients of
43          polynomials living in nacRing (defined in longtrans.*)
44*/
45
46struct snaIdeal
47{
48  int anz;
49  napoly *liste;
50};
51typedef struct snaIdeal * naIdeal;
52extern omBin snaIdeal_bin;
53extern naIdeal naI;
54extern napoly naMinimalPoly;
55
56/* for re-defining function pointers when switching from
57   transcendental to algebraic extension (by providing
58   a minpoly) */
59void          redefineFunctionPointers();
60
61/* specific methods / macros for algebraic field extensions */
62void          naSetChar(int p, ring r);
63void          naDelete (number *p, const ring r);
64number        naInit(int i, const ring r);                /* z := i      */
65number        naPar(int i);                               /* z := par(i) */
66int           naParDeg(number n);                         /* i := deg(n) */
67int           naSize(number n);                           /* size desc.  */
68int           naInt(number &n, const ring r);
69BOOLEAN       naIsZero(number za);                        /* za = 0 ?    */
70BOOLEAN       naIsOne(number  za);                        /* za = 1 ?    */
71BOOLEAN       naIsMOne(number  za);                       /* za = -1 ?   */
72BOOLEAN       naEqual(number a, number b);                /* a = b ?     */
73BOOLEAN       naGreater(number a, number b);              /* dummy       */
74number        naNeg(number za);                           /* za := - za  */
75number        naInvers(number a);
76void          naPower(number x, int exp, number *lo);
77BOOLEAN       naGreaterZero(number a);
78number        naCopy(number p);                           /* erg:= p     */
79number        na_Copy(number p, const ring r);            /* erg:= p     */
80number        naAdd(number la, number li);                /* lu := la+li */
81number        naMult(number la, number li);               /* lo := la*li */
82number        naDiv(number la, number li);                /* lo := la/li */
83number        naIntDiv(number la, number li);             /* lo := la/li */
84//number        naIntMod(number la, number li);           /* lo := la/li */
85number        naSub(number la, number li);                /* lu := la-li */
86void          naNormalize(number &p);
87number        naGcd(number a, number b, const ring r);
88number        naLcm(number a, number b, const ring r);
89const char *  naRead(const char * s, number * p);
90void          naWrite(number &p, const ring r);
91char *        naName(number n);
92nMapFunc      naSetMap(const ring src, const ring dst);
93number        naMap0P(number c);
94number        naMap00(number c);
95#ifdef LDEBUG
96BOOLEAN       naDBTest(number a, const char *f,const int l);
97#endif
98void          naSetIdeal(ideal I);
99void          naCoefNormalize(number pp);
100extern number (*naMap)(number from);
101
102#endif
103
Note: See TracBrowser for help on using the repository browser.