source: git/kernel/longalg.h @ 4f3b79

spielwiese
Last change on this file since 4f3b79 was ac21dd, checked in by Hans Schoenemann <hannes@…>, 14 years ago
longalg simplified git-svn-id: file:///usr/local/Singular/svn/trunk@12792 2c84dea3-7e68-4137-9b89-c4e89433aadc
  • Property mode set to 100644
File size: 3.2 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 "structs.h"
11#include "longrat.h"
12#include "polys-impl.h"
13
14typedef polyrec *   napoly;
15
16struct slnumber;
17typedef struct slnumber * lnumber;
18
19struct slnumber
20{
21  napoly z;
22  napoly n;
23  BOOLEAN s;
24};
25
26extern napoly naMinimalPoly;
27extern ring nacRing;
28
29
30void naSetChar(int p, ring r);
31void    naDelete (number *p, const ring r);
32number  naInit(int i, const ring r);                /* z := i */
33number  naPar(int i);                               /* z := par(i) */
34int     naParDeg(number n);                         /* i := deg(n) */
35int     naSize(number n);                           /* size desc. */
36int     naInt(number &n, const ring r);
37BOOLEAN naIsZero(number za);                         /* za = 0 ? */
38BOOLEAN naIsOne(number  za);                         /* za = 1 ? */
39BOOLEAN naIsMOne(number  za);                        /* za = -1 ? */
40BOOLEAN naEqual(number a, number b);                  /* a = b ? */
41BOOLEAN naGreater(number a, number b);                  /* dummy */
42number  naNeg(number za);                           /* za := - za */
43number  naInvers(number a);
44void    naPower(number x, int exp, number *lo);
45BOOLEAN naGreaterZero(number a);
46number  naCopy(number p);                              /* erg:= p */
47number  na_Copy(number p, const ring r);               /* erg:= p */
48number  naAdd(number la, number li);               /* lu := la+li */
49number  naMult(number la, number li);              /* lo := la*li */
50number  naDiv(number la, number li);               /* lo := la/li */
51number  naIntDiv(number la, number li);            /* lo := la/li */
52//number  naIntMod(number la, number li);            /* lo := la/li */
53number  naSub(number la, number li);               /* lu := la-li */
54void    naNormalize(number &p);
55number  naGcd(number a, number b, const ring r);
56number  naLcm(number a, number b, const ring r);
57const char *  naRead(const char * s, number * p);
58void    naWrite(number &p, const ring r);
59char *  naName(number n);
60nMapFunc naSetMap(const ring src, const ring dst);
61number naMap0P(number c);
62number naMap00(number c);
63#ifdef LDEBUG
64BOOLEAN naDBTest(number a, const char *f,const int l);
65#endif
66
67void    naSetIdeal(ideal I);
68
69// external access to the interna
70poly naPermNumber(number z, int * par_perm, int P, ring r);
71#define napAddExp(p,i,e)       (p_AddExp(p,i,e,currRing->algring))
72#define napLength(p)           pLength(p)
73#define napNeg(p)              (p_Neg(p,currRing->algring))
74#define napVariables           naNumbOfPar
75#define napGetCoeff(p)         pGetCoeff(p)
76#define napGetExpFrom(p,i,r)   (p_GetExp(p,i,r->algring))
77#define napSetExp(p,i,e)       (p_SetExp(p,i,e,currRing->algring))
78#define napNew()               (p_Init(currRing->algring))
79#define napAdd(p1,p2)          (p_Add_q(p1,p2,currRing->algring))
80#define napSetm(p)             p_Setm(p,currRing->algring)
81#define nanumber               lnumber
82napoly napRemainder(napoly f, const napoly  g);
83number   naGetDenom(number &n, const ring r);
84number   naGetNumerator(number &n, const ring r);
85#endif
86
Note: See TracBrowser for help on using the repository browser.