source: git/kernel/longalg.h @ 98938c

spielwiese
Last change on this file since 98938c was eebfa9, checked in by Hans Schönemann <hannes@…>, 20 years ago
*hannes: napRemainder git-svn-id: file:///usr/local/Singular/svn/trunk@7496 2c84dea3-7e68-4137-9b89-c4e89433aadc
  • Property mode set to 100644
File size: 4.9 KB
Line 
1#ifndef LONGALG_H
2#define LONGALG_H
3/****************************************
4*  Computer Algebra System SINGULAR     *
5****************************************/
6/* $Id: longalg.h,v 1.3 2004-09-28 09:36:49 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#ifndef LONGALGNEW
18//make parameter type same as exponent type
19#define PARAMETER_TYPE short
20#define SIZEOF_PARAMETER SIZEOF_SHORT
21
22struct reca
23{
24  napoly ne;
25  number ko;
26  PARAMETER_TYPE e[1];
27};
28#endif /* not LONGALGNEW */
29
30struct slnumber
31{
32  napoly z;
33  napoly n;
34  BOOLEAN s;
35};
36
37extern int naNumbOfPar;             /* maximal number of parameters */
38extern napoly naMinimalPoly;
39#ifndef LONGALGNEW
40extern char **naParNames;
41extern int napMonomSize;
42#endif /* LONGALGNEW */
43
44void naSetChar(int p, ring r);
45#ifndef LONGALGNEW
46#define napAddExp(P,I,E)  ((P)->e[I-1]+=(E))
47#define napLength(p)      pLength((poly)p)
48napoly napNeg(napoly a);
49#endif /* LONGALGNEW */
50void    naDelete (number *p, const ring r);
51number  naInit(int i);                              /* z := i */
52number  naPar(int i);                               /* z := par(i) */
53int     naParDeg(number n);                         /* i := deg(n) */
54int     naSize(number n);                           /* size desc. */
55int     naInt(number &n);
56void    naNumberToInt(number n, int *i);
57void    naNew(number *z);
58BOOLEAN naIsZero(number za);                         /* za = 0 ? */
59BOOLEAN naIsOne(number  za);                         /* za = 1 ? */
60BOOLEAN naIsMOne(number  za);                        /* za = -1 ? */
61BOOLEAN naEqual(number a, number b);                  /* a = b ? */
62BOOLEAN naGreater(number a, number b);                  /* dummy */
63number  naNeg(number za);                           /* za := - za */
64number  naInvers(number a);
65BOOLEAN naGreaterZero(number a);
66void    naPower(number x, int exp, number *lo);
67BOOLEAN naGreaterZero(number a);
68number  naCopy(number p);                              /* erg:= p */
69number  na_Copy(number p, const ring r);               /* 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, const ring r);
78number  naLcm(number a, number b, const ring r);
79char *  naRead(char * s, number * p);
80void    naWrite(number &p);
81char *  naName(number n);
82nMapFunc naSetMap(ring src, ring dst);
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#ifndef LONGALGNEW
91#define RECA_SIZE (sizeof(napoly)+sizeof(number))
92napoly napAdd(napoly p1, napoly p2);
93void napDelete(napoly *p);
94void nap_Delete(napoly *p, ring r);
95#endif /* not LONGALGNEW */
96poly naPermNumber(number z, int * par_perm, int P, ring r);
97#ifndef LONGALGNEW
98#define napVariables naNumbOfPar
99#define napNext(p) (p->ne)
100#define napIter(p) ((p) = (p)->ne)
101#define napGetCoeff(p) (p->ko)
102#define napGetExp(p,i) ((p)->e[(i)-1])
103#define napGetExpFrom(p,i,r) ((p)->e[(i)-1])
104#define napSetExp(p,i,ee) ((p)->e[(i)-1]=ee)
105#define napNew() ((napoly)omAlloc0(napMonomSize))
106#define nanumber lnumber
107#define naGetNom0(na)  (((nanumber)(na))->z)
108#define naGetDenom0(na)  (((nanumber)(na))->n)
109#else /* LONGALGNEW */
110#define napAddExp(p,i,e)       (p_AddExp(p,i,e,currRing->algring))
111#define napLength(p)           pLength(p)
112#define napNeg(p)              (p_Neg(p,currRing->algring))
113#define napVariables           naNumbOfPar
114#define napNext(p)             pNext(p)
115#define napIter(p)             pIter(p)
116#define napGetCoeff(p)         pGetCoeff(p)
117#define napGetExp(p,i)         (p_GetExp(p,i,currRing->algring))
118#define napGetExpFrom(p,i,r)   (p_GetExp(p,i,r->algring))
119#define napSetExp(p,i,e)       (p_SetExp(p,i,e,currRing->algring))
120#define napDelete(p)           p_Delete(p, currRing->algring)
121#define nap_Delete(p,r)        p_Delete(p, (r)->algring)
122#define napNew()               (p_Init(currRing->algring))
123#define napAdd(p1,p2)          (p_Add_q(p1,p2,currRing->algring))
124#define napSetm(p)             p_Setm(p,currRing->algring)
125#define nanumber               lnumber
126#define naGetNom0(na)          (((nanumber)(na))->z)
127#define naGetDenom0(na)        (((nanumber)(na))->n)
128napoly napRemainder(napoly f, const napoly  g);
129#endif /* LONGALGNEW */
130extern number   (*nacCopy)(number a);
131extern BOOLEAN  (*nacIsZero)(number a);
132extern number   (*nacInit)(int i);
133extern void     (*nacNormalize)(number &a);
134extern void napWrite(napoly l);
135extern number   naGetDenom(number &n, const ring r);
136#endif
137
Note: See TracBrowser for help on using the repository browser.