Public Member Functions | Protected Attributes | Friends
Number Class Reference

#include <Number.h>

Public Member Functions

number as_number () const
 
Numberoperator= (const Number &n2)
 
Number operator- ()
 
Numberoperator+= (const Number &n2)
 
Numberoperator*= (const Number &n2)
 
Numberoperator-= (const Number &n2)
 
Numberoperator/= (const Number &n2)
 
Numberoperator= (int n2)
 
Numberoperator+= (int n2)
 
Numberoperator*= (int n2)
 
Numberoperator-= (int n2)
 
Numberoperator/= (int n2)
 
 Number ()
 
 Number (const Number &n)
 
 Number (number n, ring r)
 
 Number (int n, ring r)
 
 Number (int n, intrusive_ptr< ip_sring > r)
 
 Number (int n)
 
void write () const
 
 ~Number ()
 
ring getRing () const
 

Protected Attributes

number n
 
intrusive_ptr< ip_sringr
 

Friends

class Poly
 
class Vector
 
template<poly_variant , class , class >
class PolyBase
 
class PolyImpl
 
Number operator+ (const Number &n1, const Number &n2)
 
Number operator- (const Number &n1, const Number &n2)
 
Number operator/ (const Number &n1, const Number &n2)
 
Number operator* (const Number &n1, const Number &n2)
 
bool operator== (const Number &n1, const Number &n2)
 
Number operator+ (const Number &n1, int n2)
 
Number operator- (const Number &n1, int n2)
 
Number operator/ (const Number &n1, int n2)
 
Number operator* (const Number &n1, int n2)
 
bool operator== (const Number &n1, int n2)
 
Number operator+ (int n1, const Number &n2)
 
Number operator- (int n1, const Number &n2)
 
Number operator/ (int n1, const Number &n2)
 
Number operator* (int n1, const Number &n2)
 
bool operator== (int n1, const Number &n2)
 

Detailed Description

Definition at line 34 of file Number.h.

Constructor & Destructor Documentation

◆ Number() [1/6]

Number::Number ( )
inline

Definition at line 170 of file Number.h.

171  {
172  r=currRing;
173  if (r.get()!=NULL)
174  n=n_Init(0,r.get()->cf);
175  else
176  n=(number) NULL;
177  }
static FORCE_INLINE number n_Init(long i, const coeffs r)
a number representing i in the given coeff field/ring r
Definition: coeffs.h:542
intrusive_ptr< ip_sring > r
Definition: Number.h:219
ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
Definition: polys.cc:10
#define NULL
Definition: omList.c:10
number n
Definition: Number.h:218

◆ Number() [2/6]

Number::Number ( const Number n)
inline

Definition at line 178 of file Number.h.

179  {
180  r=n.r;
181  this->n=n_Copy(n.n,r.get()->cf);
182  }
intrusive_ptr< ip_sring > r
Definition: Number.h:219
static FORCE_INLINE number n_Copy(number n, const coeffs r)
return a copy of &#39;n&#39;
Definition: coeffs.h:455
number n
Definition: Number.h:218

◆ Number() [3/6]

Number::Number ( number  n,
ring  r 
)
inline

Definition at line 183 of file Number.h.

184  {
185  this->n=n_Copy(n,r->cf);
186  this->r=r;
187  }
intrusive_ptr< ip_sring > r
Definition: Number.h:219
static FORCE_INLINE number n_Copy(number n, const coeffs r)
return a copy of &#39;n&#39;
Definition: coeffs.h:455
number n
Definition: Number.h:218

◆ Number() [4/6]

Number::Number ( int  n,
ring  r 
)
inline

Definition at line 188 of file Number.h.

189  {
190  this->r=r;
191  this->n=n_Init(n,r->cf);
192  }
static FORCE_INLINE number n_Init(long i, const coeffs r)
a number representing i in the given coeff field/ring r
Definition: coeffs.h:542
intrusive_ptr< ip_sring > r
Definition: Number.h:219
number n
Definition: Number.h:218

◆ Number() [5/6]

Number::Number ( int  n,
intrusive_ptr< ip_sring r 
)
inline

Definition at line 193 of file Number.h.

194  {
195  this->r=r;
196  this->n=n_Init(n,r.get()->cf);
197  }
static FORCE_INLINE number n_Init(long i, const coeffs r)
a number representing i in the given coeff field/ring r
Definition: coeffs.h:542
intrusive_ptr< ip_sring > r
Definition: Number.h:219
number n
Definition: Number.h:218

◆ Number() [6/6]

Number::Number ( int  n)
inlineexplicit

Definition at line 198 of file Number.h.

199  {
200  r=currRing;
201  this->n=n_Init(n,r.get()->cf);
202  }
static FORCE_INLINE number n_Init(long i, const coeffs r)
a number representing i in the given coeff field/ring r
Definition: coeffs.h:542
intrusive_ptr< ip_sring > r
Definition: Number.h:219
ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
Definition: polys.cc:10
number n
Definition: Number.h:218

◆ ~Number()

Number::~Number ( )
inline

Definition at line 208 of file Number.h.

209  {
210  if (r!=NULL)
211  n_Delete(&n,r.get()->cf);
212  }
intrusive_ptr< ip_sring > r
Definition: Number.h:219
#define NULL
Definition: omList.c:10
number n
Definition: Number.h:218
static FORCE_INLINE void n_Delete(number *p, const coeffs r)
delete &#39;p&#39;
Definition: coeffs.h:459

Member Function Documentation

◆ as_number()

number Number::as_number ( ) const
inline

Definition at line 60 of file Number.h.

61  {
62  return n_Copy(n,r.get()->cf);
63  }
intrusive_ptr< ip_sring > r
Definition: Number.h:219
static FORCE_INLINE number n_Copy(number n, const coeffs r)
return a copy of &#39;n&#39;
Definition: coeffs.h:455
number n
Definition: Number.h:218

◆ getRing()

ring Number::getRing ( ) const
inline

Definition at line 213 of file Number.h.

214  {
215  return r.get();
216  }
intrusive_ptr< ip_sring > r
Definition: Number.h:219

◆ operator*=() [1/2]

Number& Number::operator*= ( const Number n2)
inline

Definition at line 92 of file Number.h.

93  {
94  if (r!=n2.r)
95  {
96  WerrorS("not the same ring");
97  return *this;
98  }
99  number nv=n_Mult(n,n2.n,r.get()->cf);
100  n_Delete(&n,r.get()->cf);
101  n=nv;
102  return *this;
103  }
intrusive_ptr< ip_sring > r
Definition: Number.h:219
void WerrorS(const char *s)
Definition: feFopen.cc:24
static FORCE_INLINE number n_Mult(number a, number b, const coeffs r)
return the product of &#39;a&#39; and &#39;b&#39;, i.e., a*b
Definition: coeffs.h:640
number n
Definition: Number.h:218
static FORCE_INLINE void n_Delete(number *p, const coeffs r)
delete &#39;p&#39;
Definition: coeffs.h:459

◆ operator*=() [2/2]

Number& Number::operator*= ( int  n2)
inline

Definition at line 143 of file Number.h.

144  {
145  number n2n=n_Init(n2,r.get()->cf);
146  number nv=n_Mult(n,n2n,r.get()->cf);
147  n_Delete(&n,r.get()->cf);
148  n_Delete(&n2n,r.get()->cf);
149  n=nv;
150  return *this;
151  }
static FORCE_INLINE number n_Init(long i, const coeffs r)
a number representing i in the given coeff field/ring r
Definition: coeffs.h:542
intrusive_ptr< ip_sring > r
Definition: Number.h:219
static FORCE_INLINE number n_Mult(number a, number b, const coeffs r)
return the product of &#39;a&#39; and &#39;b&#39;, i.e., a*b
Definition: coeffs.h:640
number n
Definition: Number.h:218
static FORCE_INLINE void n_Delete(number *p, const coeffs r)
delete &#39;p&#39;
Definition: coeffs.h:459

◆ operator+=() [1/2]

Number& Number::operator+= ( const Number n2)
inline

Definition at line 80 of file Number.h.

81  {
82  if (r!=n2.r)
83  {
84  WerrorS("not the same ring");
85  return *this;
86  }
87  number nv=n_Add(n,n2.n,r.get()->cf);
88  n_Delete(&n,r.get()->cf);
89  n=nv;
90  return *this;
91  }
intrusive_ptr< ip_sring > r
Definition: Number.h:219
void WerrorS(const char *s)
Definition: feFopen.cc:24
static FORCE_INLINE number n_Add(number a, number b, const coeffs r)
return the sum of &#39;a&#39; and &#39;b&#39;, i.e., a+b
Definition: coeffs.h:660
number n
Definition: Number.h:218
static FORCE_INLINE void n_Delete(number *p, const coeffs r)
delete &#39;p&#39;
Definition: coeffs.h:459

◆ operator+=() [2/2]

Number& Number::operator+= ( int  n2)
inline

Definition at line 134 of file Number.h.

135  {
136  number n2n=n_Init(n2,r.get()->cf);
137  number nv=n_Add(n,n2n,r.get()->cf);
138  n_Delete(&n,r.get()->cf);
139  n_Delete(&n2n,r.get()->cf);
140  n=nv;
141  return *this;
142  }
static FORCE_INLINE number n_Init(long i, const coeffs r)
a number representing i in the given coeff field/ring r
Definition: coeffs.h:542
intrusive_ptr< ip_sring > r
Definition: Number.h:219
static FORCE_INLINE number n_Add(number a, number b, const coeffs r)
return the sum of &#39;a&#39; and &#39;b&#39;, i.e., a+b
Definition: coeffs.h:660
number n
Definition: Number.h:218
static FORCE_INLINE void n_Delete(number *p, const coeffs r)
delete &#39;p&#39;
Definition: coeffs.h:459

◆ operator-()

Number Number::operator- ( )
inline

Definition at line 73 of file Number.h.

74  {
75  Number t(*this);
76  //t.n=n_Copy(n,r);
77  t.n=n_InpNeg(t.n,r.get()->cf);
78  return t;
79  }
intrusive_ptr< ip_sring > r
Definition: Number.h:219
static FORCE_INLINE number n_InpNeg(number n, const coeffs r)
in-place negation of n MUST BE USED: n = n_InpNeg(n) (no copy is returned)
Definition: coeffs.h:561
Definition: Number.h:34

◆ operator-=() [1/2]

Number& Number::operator-= ( const Number n2)
inline

Definition at line 104 of file Number.h.

105  {
106  if (r!=n2.r)
107  {
108  WerrorS("not the same ring");
109  return *this;
110  }
111  number nv=n_Sub(n,n2.n,r.get()->cf);
112  n_Delete(&n,r.get()->cf);
113  n=nv;
114  return *this;
115  }
static FORCE_INLINE number n_Sub(number a, number b, const coeffs r)
return the difference of &#39;a&#39; and &#39;b&#39;, i.e., a-b
Definition: coeffs.h:673
intrusive_ptr< ip_sring > r
Definition: Number.h:219
void WerrorS(const char *s)
Definition: feFopen.cc:24
number n
Definition: Number.h:218
static FORCE_INLINE void n_Delete(number *p, const coeffs r)
delete &#39;p&#39;
Definition: coeffs.h:459

◆ operator-=() [2/2]

Number& Number::operator-= ( int  n2)
inline

Definition at line 152 of file Number.h.

153  {
154  number n2n=n_Init(n2,r.get()->cf);
155  number nv=n_Sub(n,n2n,r.get()->cf);
156  n_Delete(&n,r.get()->cf);
157  n_Delete(&n2n,r.get()->cf);
158  n=nv;
159  return *this;
160  }
static FORCE_INLINE number n_Sub(number a, number b, const coeffs r)
return the difference of &#39;a&#39; and &#39;b&#39;, i.e., a-b
Definition: coeffs.h:673
static FORCE_INLINE number n_Init(long i, const coeffs r)
a number representing i in the given coeff field/ring r
Definition: coeffs.h:542
intrusive_ptr< ip_sring > r
Definition: Number.h:219
number n
Definition: Number.h:218
static FORCE_INLINE void n_Delete(number *p, const coeffs r)
delete &#39;p&#39;
Definition: coeffs.h:459

◆ operator/=() [1/2]

Number& Number::operator/= ( const Number n2)
inline

Definition at line 116 of file Number.h.

117  {
118  if (r!=n2.r)
119  {
120  WerrorS("not the same ring");
121  return *this;
122  }
123  number nv=n_Div(n,n2.n,r.get()->cf);
124  n_Delete(&n,r.get()->cf);
125  n=nv;
126  return *this;
127  }
intrusive_ptr< ip_sring > r
Definition: Number.h:219
void WerrorS(const char *s)
Definition: feFopen.cc:24
static FORCE_INLINE number n_Div(number a, number b, const coeffs r)
return the quotient of &#39;a&#39; and &#39;b&#39;, i.e., a/b; raises an error if &#39;b&#39; is not invertible in r exceptio...
Definition: coeffs.h:619
number n
Definition: Number.h:218
static FORCE_INLINE void n_Delete(number *p, const coeffs r)
delete &#39;p&#39;
Definition: coeffs.h:459

◆ operator/=() [2/2]

Number& Number::operator/= ( int  n2)
inline

Definition at line 161 of file Number.h.

162  {
163  number n2n=n_Init(n2,r.get()->cf);
164  number nv=n_Div(n,n2n,r.get()->cf);
165  n_Delete(&n,r.get()->cf);
166  n_Delete(&n2n,r.get()->cf);
167  n=nv;
168  return *this;
169  }
static FORCE_INLINE number n_Init(long i, const coeffs r)
a number representing i in the given coeff field/ring r
Definition: coeffs.h:542
intrusive_ptr< ip_sring > r
Definition: Number.h:219
static FORCE_INLINE number n_Div(number a, number b, const coeffs r)
return the quotient of &#39;a&#39; and &#39;b&#39;, i.e., a/b; raises an error if &#39;b&#39; is not invertible in r exceptio...
Definition: coeffs.h:619
number n
Definition: Number.h:218
static FORCE_INLINE void n_Delete(number *p, const coeffs r)
delete &#39;p&#39;
Definition: coeffs.h:459

◆ operator=() [1/2]

Number& Number::operator= ( const Number n2)
inline

Definition at line 64 of file Number.h.

65  {
66  //durch Reihenfolge Selbstzuweisungen berücksichtigt
67  number nc=n_Copy(n2.n,n2.r.get()->cf);
68  n_Delete(&n,r.get()->cf);
69  r=n2.r;
70  n=nc;
71  return *this;
72  }
intrusive_ptr< ip_sring > r
Definition: Number.h:219
static FORCE_INLINE number n_Copy(number n, const coeffs r)
return a copy of &#39;n&#39;
Definition: coeffs.h:455
number n
Definition: Number.h:218
static FORCE_INLINE void n_Delete(number *p, const coeffs r)
delete &#39;p&#39;
Definition: coeffs.h:459

◆ operator=() [2/2]

Number& Number::operator= ( int  n2)
inline

Definition at line 128 of file Number.h.

129  {
130  n_Delete(&n,r.get()->cf);
131  n=n_Init(n2,r.get()->cf);
132  return *this;
133  }
static FORCE_INLINE number n_Init(long i, const coeffs r)
a number representing i in the given coeff field/ring r
Definition: coeffs.h:542
intrusive_ptr< ip_sring > r
Definition: Number.h:219
number n
Definition: Number.h:218
static FORCE_INLINE void n_Delete(number *p, const coeffs r)
delete &#39;p&#39;
Definition: coeffs.h:459

◆ write()

void Number::write ( ) const
inline

Definition at line 203 of file Number.h.

204  {
205  number towrite=n;
206  n_Write(towrite,r.get()->cf);
207  }
intrusive_ptr< ip_sring > r
Definition: Number.h:219
static FORCE_INLINE void n_Write(number n, const coeffs r, const BOOLEAN bShortOut=TRUE)
Definition: coeffs.h:595
number n
Definition: Number.h:218

Friends And Related Function Documentation

◆ operator* [1/3]

Number operator* ( const Number n1,
const Number n2 
)
friend

Definition at line 228 of file Number.h.

229 {
230  Number erg(n1);
231  erg*=n2;
232  return erg;
233 }
Definition: Number.h:34

◆ operator* [2/3]

Number operator* ( const Number n1,
int  n2 
)
friend

Definition at line 258 of file Number.h.

259 {
260  Number erg(n1);
261  erg*=Number(n2,n1.r);
262  return erg;
263 }
intrusive_ptr< ip_sring > r
Definition: Number.h:219
Definition: Number.h:34
Number()
Definition: Number.h:170

◆ operator* [3/3]

Number operator* ( int  n1,
const Number n2 
)
friend

Definition at line 295 of file Number.h.

296 {
297  Number erg(n2);
298  return erg*=Number(n1,n2.r);
299 }
intrusive_ptr< ip_sring > r
Definition: Number.h:219
Definition: Number.h:34
Number()
Definition: Number.h:170

◆ operator+ [1/3]

Number operator+ ( const Number n1,
const Number n2 
)
friend

Definition at line 222 of file Number.h.

223 {
224  Number erg(n1);
225  erg+=n2;
226  return erg;
227 }
Definition: Number.h:34

◆ operator+ [2/3]

Number operator+ ( const Number n1,
int  n2 
)
friend

Definition at line 252 of file Number.h.

253 {
254  Number erg(n1);
255  erg+=Number(n2,n1.r);
256  return erg;
257 }
intrusive_ptr< ip_sring > r
Definition: Number.h:219
Definition: Number.h:34
Number()
Definition: Number.h:170

◆ operator+ [3/3]

Number operator+ ( int  n1,
const Number n2 
)
friend

Definition at line 280 of file Number.h.

281 {
282  Number erg(n2);
283  return erg+=Number(n1,n2.r);
284 }
intrusive_ptr< ip_sring > r
Definition: Number.h:219
Definition: Number.h:34
Number()
Definition: Number.h:170

◆ operator- [1/3]

Number operator- ( const Number n1,
const Number n2 
)
friend

Definition at line 234 of file Number.h.

235 {
236  Number erg(n1);
237  erg-=n2;
238  return erg;
239 }
Definition: Number.h:34

◆ operator- [2/3]

Number operator- ( const Number n1,
int  n2 
)
friend

Definition at line 264 of file Number.h.

265 {
266  Number erg(n1);
267  erg-=Number(n2,n1.r);
268  return erg;
269 }
intrusive_ptr< ip_sring > r
Definition: Number.h:219
Definition: Number.h:34
Number()
Definition: Number.h:170

◆ operator- [3/3]

Number operator- ( int  n1,
const Number n2 
)
friend

Definition at line 285 of file Number.h.

286 {
287  Number erg(n1,n2.r);
288  return erg-=n2;
289 }
intrusive_ptr< ip_sring > r
Definition: Number.h:219
Definition: Number.h:34

◆ operator/ [1/3]

Number operator/ ( const Number n1,
const Number n2 
)
friend

Definition at line 240 of file Number.h.

241 {
242  Number erg(n1);
243  erg/=n2;
244  return erg;
245 }
Definition: Number.h:34

◆ operator/ [2/3]

Number operator/ ( const Number n1,
int  n2 
)
friend

Definition at line 270 of file Number.h.

271 {
272  Number erg(n1);
273  erg/=Number(n2,n1.r);
274  return erg;
275 }
intrusive_ptr< ip_sring > r
Definition: Number.h:219
Definition: Number.h:34
Number()
Definition: Number.h:170

◆ operator/ [3/3]

Number operator/ ( int  n1,
const Number n2 
)
friend

Definition at line 290 of file Number.h.

291 {
292  Number erg(n1,n2.r);
293  return erg/=n2;
294 }
intrusive_ptr< ip_sring > r
Definition: Number.h:219
Definition: Number.h:34

◆ operator== [1/3]

bool operator== ( const Number n1,
const Number n2 
)
friend

Definition at line 246 of file Number.h.

247 {
248  if(n1.r!=n2.r)
249  return false;
250  return n_Equal(n1.n,n2.n,n1.r.get()->cf);
251 }
intrusive_ptr< ip_sring > r
Definition: Number.h:219
static FORCE_INLINE BOOLEAN n_Equal(number a, number b, const coeffs r)
TRUE iff &#39;a&#39; and &#39;b&#39; represent the same number; they may have different representations.
Definition: coeffs.h:464
number n
Definition: Number.h:218

◆ operator== [2/3]

bool operator== ( const Number n1,
int  n2 
)
friend

Definition at line 276 of file Number.h.

277 {
278  return n_Equal(n1.n,Number(n2,n1.r).n,n1.r.get()->cf);
279 }
intrusive_ptr< ip_sring > r
Definition: Number.h:219
Definition: Number.h:34
static FORCE_INLINE BOOLEAN n_Equal(number a, number b, const coeffs r)
TRUE iff &#39;a&#39; and &#39;b&#39; represent the same number; they may have different representations.
Definition: coeffs.h:464
number n
Definition: Number.h:218

◆ operator== [3/3]

bool operator== ( int  n1,
const Number n2 
)
friend

Definition at line 300 of file Number.h.

301 {
302  return n2==Number(n1,n2.r);
303 }
intrusive_ptr< ip_sring > r
Definition: Number.h:219
Number()
Definition: Number.h:170

◆ Poly

friend class Poly
friend

Definition at line 52 of file Number.h.

◆ PolyBase

template<poly_variant , class , class >
friend class PolyBase
friend

Definition at line 58 of file Number.h.

◆ PolyImpl

friend class PolyImpl
friend

Definition at line 59 of file Number.h.

◆ Vector

friend class Vector
friend

Definition at line 53 of file Number.h.

Field Documentation

◆ n

number Number::n
protected

Definition at line 218 of file Number.h.

◆ r

intrusive_ptr<ip_sring> Number::r
protected

Definition at line 219 of file Number.h.


The documentation for this class was generated from the following file: