source: git/Singular/longalg.h @ 09d74fe

spielwiese
Last change on this file since 09d74fe was 09d74fe, checked in by Hans Schönemann <hannes@…>, 25 years ago
* hannes: modified ring stucture (SHIFTED EXPONENTS, part1, not ready yet) (extra.cc polys-impl.h ring.cc ring.h) fixed to facstd (kstd1.cc kstd2.cc kstdfac.cc kutil.h) ring related fixes (mpsr_GetPoly.cc, sparsmat.cc) git-svn-id: file:///usr/local/Singular/svn/trunk@3804 2c84dea3-7e68-4137-9b89-c4e89433aadc
  • Property mode set to 100644
File size: 3.4 KB
Line 
1#ifndef LONGALG_H
2#define LONGALG_H
3/****************************************
4*  Computer Algebra System SINGULAR     *
5****************************************/
6/* $Id: longalg.h,v 1.11 1999-11-02 15:19:08 Singular Exp $ */
7/*
8* ABSTRACT:   algebraic numbers
9*/
10#include "structs.h"
11#include "longrat.h"
12#include "polys-impl.h"
13
14struct slnumber;
15typedef struct slnumber * lnumber;
16
17//make parameter type same as exponent type
18#if 1
19#define PARAMETER_TYPE EXPONENT_TYPE
20#define SIZEOF_PARAMETER SIZEOF_EXPONENT
21#else
22#define PARAMETER_TYPE int
23#define SIZEOF_PARAMETER SIZEOF_EXPONENT
24#endif
25
26struct reca
27{
28  alg ne;
29  number ko;
30  PARAMETER_TYPE e[1];
31};
32
33struct slnumber
34{
35  alg z;
36  alg n;
37  BOOLEAN s;
38};
39
40extern int naNumbOfPar;             /* maximal number of parameters */
41extern alg naMinimalPoly;
42extern char **naParNames;
43extern int napMonomSize;
44
45void naSetChar(int p, BOOLEAN complete, char ** param, int pars);
46#ifdef LDEBUG
47void    naDBDelete (number *p,char *f, int l);
48#define naDelete(A) naDBDelete(A,__FILE__,__LINE__)
49#else
50void    naDelete (number *p);
51#endif
52number  naInit(int i);                              /* z := i */
53number  naPar(int i);                               /* z := par(i) */
54int     naParDeg(number n);                         /* i := deg(n) */
55int     naSize(number n);                           /* size desc. */
56int     naInt(number &n);
57void    naNumberToInt(number n, int *i);
58void    naNew(number *z);
59BOOLEAN naIsZero(number za);                         /* za = 0 ? */
60BOOLEAN naIsOne(number  za);                         /* za = 1 ? */
61BOOLEAN naIsMOne(number  za);                        /* za = -1 ? */
62BOOLEAN naEqual(number a, number b);                  /* a = b ? */
63BOOLEAN naGreater(number a, number b);                  /* dummy */
64number  naNeg(number za);                           /* za := - za */
65number  naInvers(number a);
66BOOLEAN naGreaterZero(number a);
67void    naPower(number x, int exp, number *lo);
68BOOLEAN naGreaterZero(number a);
69number  naCopy(number p);                              /* erg:= p */
70number  naAdd(number la, number li);               /* lu := la+li */
71number  naMult(number la, number li);              /* lo := la*li */
72number  naDiv(number la, number li);               /* lo := la/li */
73number  naIntDiv(number la, number li);            /* lo := la/li */
74//number  naIntMod(number la, number li);            /* lo := la/li */
75number  naSub(number la, number li);               /* lu := la-li */
76void    naNormalize(number &p);
77number  naGcd(number a, number b);
78number  naLcm(number a, number b);
79char *  naRead(char * s, number * p);
80void    naWrite(number &p);
81char *  naName(number n);
82BOOLEAN naSetMap(ring r);
83#ifdef LDEBUG
84BOOLEAN naDBTest(number a, char *f,int l);
85#endif
86
87void    naSetIdeal(ideal I);
88
89// external access to the interna
90#define napoly alg
91#define RECA_SIZE (sizeof(alg)+sizeof(number))
92alg napAdd(alg p1, alg p2);
93void napDelete(alg *p);
94poly naPermNumber(number z, int * par_perm, int P);
95#define napVariables naNumbOfPar
96#define napNext(p) (p->ne)
97#define napGetCoeff(p) (p->ko)
98#define napGetExp(p,i) (p->e[(i)-1])
99#define napNew() ((alg)Alloc0(napMonomSize))
100#define nanumber lnumber
101#define naGetNom0(na)  (((nanumber)(na))->z)
102#define naGetDenom0(na)  (((nanumber)(na))->n)
103extern number   (*nacCopy)(number a);
104extern BOOLEAN  (*nacIsZero)(number a);
105extern number   (*nacInit)(int i);
106extern void     (*nacNormalize)(number &a);
107extern void napWrite(alg l);
108extern number   naGetDenom(number &n);
109#endif
110
Note: See TracBrowser for help on using the repository browser.