bool operator<(const Num &a, const Num &b) {
    if (a.size() != b.size()) {
        return a.size() < b.size();
    } else {
        return a.repr < b.repr;
    }
}
int main(){
	Num a = 10 ;
	Num b = 20 ;

	Num c = a + b ;
	c.print() ;
}
Пример #3
0
	Num operator+(const Num& n) const
	{
		Num ret;
		ret.b = lcm(n.b, b);
		ret.a = (ret.b/b*a) + (ret.b/n.b*n.a);
		ret.func();
		return ret;
	}
Пример #4
0
	Num operator*(const Num& n) const
	{
		Num ret;
		ret.b = n.b*b;
		ret.a = n.a*a;
		ret.func();
		return ret;
	}
Пример #5
0
Ex pow(const Ex & e, const Num & n)
{
    if (n.isInt())
    {
        return pow(e, n.get_uint());
    } else {
        return pow(e, n);
    }
}
Пример #6
0
namespace thread {
    class Num {
    public:
        Num() : m_num(0) {}
        void Incr() {
            m_lock.Lock();
            ++m_num;
            m_lock.Unlock();
        }
        int GetNum() {
            return m_num;
        }
    private:
        int m_num;
        CLock m_lock;
    };

    static Num num;

    class IncrThread : public CThread {
    public:
        virtual void OnThreadRun() {
            for (int i = 0; i < 1000; ++i) {
                num.Incr();
            }
        }
    };
}
Пример #7
0
int main( void )
{
 
  freopen("aplusb.in", "rt", stdin);
  freopen("aplusb.out", "wt", stdout);
  a.Read();
  b.Read();
  long double c = a.get() + b.get();
//  a.Out();
//  fprintf(stderr, "%lf", (double)b.get());
//  b.Out();
  res = a + b;
  res.Out();
//  fprintf(stderr, "%.9lf == %.9lf\n", (double)c, (double)res.get());

/*  a.Out();
  b.Out();*/

  return 0;
}
const Num operator+(const Num &a, const Num &b) {
    string res;
    int len = max(a.size(), b.size());
    string x = a.repr;
    string y = b.repr;
    reverse(x.begin(), x.end());
    reverse(y.begin(), y.end());
    x += string(len-x.size(), '0');
    y += string(len-y.size(), '0');
    
    int c = 0;
    for (int i=0; i<len; ++i) {
        int d = val[x[i]] + val[y[i]] + c;
        res += dig[d%36];
        c = (d>=36);
    }
    if (c) {
        res += '1';
    }
    reverse(res.begin(), res.end());
    return Num(res);
}
Пример #9
0
void absolute(var self) {
  Num* inum = type_class(type_of(self), Num);
  assert(inum->absolute);
  inum->absolute(self);
}
Пример #10
0
const type_ptr Num::operator / (Num& right) const
{
	type_ptr res = new Num( value() / right.value() );
	return res;
}
Пример #11
0
void divide(var lhs, var rhs) {
  Num* inum = type_class(type_of(lhs), Num);
  assert(inum->div);
  inum->div(lhs, rhs);
}
Пример #12
0
void negate(var self) {
  Num* inum = type_class(type_of(self), Num);
  assert(inum->negate);
  inum->negate(self);
}
Пример #13
0
void mul(var lhs, var rhs) {
  Num* inum = type_class(type_of(lhs), Num);
  assert(inum->mul);
  inum->mul(lhs, rhs);
}
Пример #14
0
void sub(var lhs, var rhs) {
  Num* inum = type_class(type_of(lhs), Num);
  assert(inum->sub);
  inum->sub(lhs, rhs);
}
Пример #15
0
Файл: rat.hpp Проект: 983/Num
 void print(std::vector<char> &c){
     num.print(c);
     c.back() = '/';
     den.print(c);
 }
Пример #16
0
int main() {
  Num<int> left = -1;
  Num<int> right = 1;
  Num<int> result = left + right;
  return result.get();
}
Пример #17
0
 virtual void OnThreadRun() {
     for (int i = 0; i < 1000; ++i) {
         num.Incr();
     }
 }
Пример #18
0
void add(var lhs, var rhs) {
  Num* inum = type_class(type_of(lhs), Num);
  assert(inum->add);
  inum->add(lhs, rhs);
}
Пример #19
0
Файл: rat.hpp Проект: 983/Num
 double to_double() const {
     return num.to_double() / den.to_double();
 }