22#ifndef _TNMINT_H_INCLUDED_
23#define _TNMINT_H_INCLUDED_
49#define CHECK_OVERFLOW_ON()
50#define CHECK_OVERFLOW_OFF()
51#define ENABLE_CHECK_OVERFLOW()
52#define DISABLE_CHECK_OVERFLOW()
54#define CHECK_OVERFLOW() 0
63template <
class T>
class nmint
71 nmint(
void):m_value(0){}
80 nmint<T>& operator= (
const T& val)
86 nmint<T>& operator= (T& val)
106 nmint<T>& operator-= (
const nmint<T>& val)
121 m_value-=val.m_value;
128 nmint<T>& operator+= (
const nmint<T>& val)
147 m_value+=val.m_value;
151 nmint<T> operator- (
const nmint<T>& val)
const
158 nmint<T> operator+ (
const nmint<T>& val)
const
165 void operator++ (
int)
170 void operator-- (
int)
179 nmint<T>& operator*= (
const nmint<T>& val)
181 m_value*=val.m_value;
185 template <
class T2> nmint<T2> operator* (
const nmint<T2>& val)
const
188 Res.m_value=m_value*val.m_value;
193 inline nmint<T>& operator/= (
const nmint<T>& val)
195 m_value/=val.m_value;
198 inline nmint<T> operator/ (
const nmint<T>& val)
const
205 inline nmint<T>& operator>>= (
const int y)
211 inline nmint<T> operator>> (
const int y)
const
218 inline nmint<T>& operator<<= (
const int y)
224 inline nmint<T>
operator<< (
const int n)
const
231 inline nmint<T>& operator^= (nmint<T> &val)
233 m_value^=val.m_value;
236 inline nmint<T> operator^ (nmint<T> &val)
const
243 nmint<T> operator- ()
const
246 Res.m_value=-m_value;
250 bool operator> (
const nmint<T>& y)
const
251 {
return m_value>y.m_value;}
252 bool operator>= (
const nmint<T>& y)
const
253 {
return m_value>=y.m_value;}
254 bool operator< (
const nmint<T>& y)
const
255 {
return m_value<y.m_value;}
256 bool operator<= (
const nmint<T>& y)
const
257 {
return m_value<=y.m_value;}
258 bool operator== (
const nmint<T>& y)
const
259 {
return m_value==y.m_value;}
260 bool operator!= (
const nmint<T>& y)
const
261 {
return m_value!=y.m_value;}
294typedef nmint<char> nmint8s;
295typedef nmint<short> nmint16s;
298typedef nmint<int> nmint32s;
299typedef nmint<long long> nmint64s;
__INLINE__ ostream & operator<<(ostream &s, mtr< unsigned char > &mtr)
Definition: nmtlio.h:64