source: git/Singular/longalg.h @ 9514c1

spielwiese
Last change on this file since 9514c1 was 9514c1, checked in by Hans Schönemann <hannes@…>, 23 years ago
*ahnnes: napAddExp git-svn-id: file:///usr/local/Singular/svn/trunk@4835 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.18 2000-12-07 15:21:07 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#define PARAMETER_TYPE short
19#define SIZEOF_PARAMETER SIZEOF_SHORT
20
21struct reca
22{
23  alg ne;
24  number ko;
25  PARAMETER_TYPE e[1];
26};
27
28struct slnumber
29{
30  alg z;
31  alg n;
32  BOOLEAN s;
33};
34
35extern int naNumbOfPar;             /* maximal number of parameters */
36extern alg naMinimalPoly;
37extern char **naParNames;
38extern int napMonomSize;
39
40void naSetChar(int p, BOOLEAN complete, ring r);
41#define napAddExp(p,i,e)  ((p)->e[i-1]+=(e))
42#ifdef LDEBUG
43void    naDBDelete (number *p,char *f, int l);
44#define naDelete(A) naDBDelete(A,__FILE__,__LINE__)
45#else
46void    naDelete (number *p);
47#endif
48number  naInit(int i);                              /* z := i */
49number  naPar(int i);                               /* z := par(i) */
50int     naParDeg(number n);                         /* i := deg(n) */
51int     naSize(number n);                           /* size desc. */
52int     naInt(number &n);
53void    naNumberToInt(number n, int *i);
54void    naNew(number *z);
55BOOLEAN naIsZero(number za);                         /* za = 0 ? */
56BOOLEAN naIsOne(number  za);                         /* za = 1 ? */
57BOOLEAN naIsMOne(number  za);                        /* za = -1 ? */
58BOOLEAN naEqual(number a, number b);                  /* a = b ? */
59BOOLEAN naGreater(number a, number b);                  /* dummy */
60number  naNeg(number za);                           /* za := - za */
61number  naInvers(number a);
62BOOLEAN naGreaterZero(number a);
63void    naPower(number x, int exp, number *lo);
64BOOLEAN naGreaterZero(number a);
65number  naCopy(number p);                              /* erg:= p */
66number  naAdd(number la, number li);               /* lu := la+li */
67number  naMult(number la, number li);              /* lo := la*li */
68number  naDiv(number la, number li);               /* lo := la/li */
69number  naIntDiv(number la, number li);            /* lo := la/li */
70//number  naIntMod(number la, number li);            /* lo := la/li */
71number  naSub(number la, number li);               /* lu := la-li */
72void    naNormalize(number &p);
73number  naGcd(number a, number b);
74number  naLcm(number a, number b);
75char *  naRead(char * s, number * p);
76void    naWrite(number &p);
77char *  naName(number n);
78BOOLEAN naSetMap(ring r);
79#ifdef LDEBUG
80BOOLEAN naDBTest(number a, char *f,int l);
81#endif
82
83void    naSetIdeal(ideal I);
84
85// external access to the interna
86#define RECA_SIZE (sizeof(alg)+sizeof(number))
87alg napAdd(alg p1, alg p2);
88void napDelete(alg *p);
89poly naPermNumber(number z, int * par_perm, int P);
90#define napVariables naNumbOfPar
91#define napNext(p) (p->ne)
92#define napGetCoeff(p) (p->ko)
93#define napGetExp(p,i) (p->e[(i)-1])
94#define napNew() ((alg)omAlloc0(napMonomSize))
95#define nanumber lnumber
96#define naGetNom0(na)  (((nanumber)(na))->z)
97#define naGetDenom0(na)  (((nanumber)(na))->n)
98extern number   (*nacCopy)(number a);
99extern BOOLEAN  (*nacIsZero)(number a);
100extern number   (*nacInit)(int i);
101extern void     (*nacNormalize)(number &a);
102extern void napWrite(alg l);
103extern number   naGetDenom(number &n);
104#endif
105
Note: See TracBrowser for help on using the repository browser.