mramine364

polynomial-main.cpp

Jul 9th, 2016
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.94 KB | None | 0 0
  1. #include<iostream>
  2. #include<time.h>
  3. #include<string>
  4. #include"complex.h"
  5. #include"polynomial.h"
  6.  
  7. using namespace std;
  8.  
  9. void test1();
  10. void test2();
  11. void test3();
  12.  
  13. int main(){
  14.     clock_t start_t = clock();
  15.        
  16.     test3();
  17.  
  18.     cout << "execution in " << clock() - start_t << " ms \n";
  19.     getchar();
  20.     return 0;
  21. }
  22.  
  23. void test1(){
  24.  
  25.     cout << "--------------------" << endl;
  26.     cout << "TEST 1" << endl;
  27.     monomial* a = new monomial(1, 2);
  28.     monomial* b = new monomial(2, 1);
  29.     monomial* c = new monomial(3, 0);
  30.     monomial* d = new monomial(*b);
  31.     polynomial* p = new polynomial;
  32.     *p += *a;
  33.     *p += *b;
  34.     *p += *c;
  35.     *p += *d;
  36.  
  37.     cout << "a: " << *a << endl;
  38.     cout << "b: " << *b << endl;
  39.     cout << "c: " << *c << endl;
  40.     cout << "p: " << *p << endl;
  41.  
  42.     delete p;delete a;delete b;delete c;delete d;
  43. }
  44.  
  45. void test2(){
  46.  
  47.     cout << endl;
  48.     cout << "--------------------" << endl;
  49.     cout << "TEST 2" << endl;
  50.     double** t = new double*[3];
  51.     t[0] = new double[2]; t[0][0] = 1; t[0][1] = 2;
  52.     t[1] = new double[2]; t[1][0] = 2; t[1][1] = 1;
  53.     t[2] = new double[2]; t[2][0] = 3; t[2][1] = 0;
  54.     polynomial *p = new polynomial(t, 3);
  55.     t[0][0] = 5; t[0][1] = 3;
  56.     t[1][0] = 6; t[1][1] = 2;
  57.     t[2][0] = 7; t[2][1] = 1;
  58.     polynomial *q = new polynomial(t, 3);
  59.     p->sort(); q->sort();
  60.     polynomial *a = *p + *q;
  61.     polynomial *b = *p - *q;
  62.     polynomial *c = *p * *q;
  63.     polynomial *d = p->mul(*q);
  64.     cout << "p: " << *p << endl;
  65.     cout << "q: " << *q << endl;
  66.     cout << "a: " << *a << endl;
  67.     cout << "b: " << *b << endl;
  68.     cout << "c: " << *c << endl;
  69.     cout << "d: " << *d << endl;
  70.  
  71.     //delete a,b,c,p,q;
  72.     delete t[0], t[1], t[2], t;
  73.     delete p; cout << "del p" << endl;
  74.     delete q; cout << "del q" << endl;
  75.     delete a; cout << "del a" << endl;
  76.     delete b; cout << "del b" << endl;
  77.     delete c; cout << "del c" << endl;
  78.     delete d; cout << "del d" << endl;
  79. }
  80.  
  81. void test3(){
  82.     cout << endl;
  83.     cout << "--------------------" << endl;
  84.     cout << "TEST 3" << endl;
  85.     polynomial* p = polynomial::rand(300)->simplify();
  86.     polynomial* q = polynomial::rand(300)->simplify();
  87.     //cout << "p: " << *p << endl;
  88.     //cout << "q: " << *q << endl;
  89.     clock_t vst;
  90.     vst = clock(); polynomial::dt = 0;
  91.     polynomial* pq1 = *p * *q;
  92.     cout << "naive mul time " << clock() - vst << " ms \n";//
  93.     //cout << "pq1: " << *pq1 << " \n";
  94.     cout << "pq1 size: " << pq1->size() << endl;
  95.     cout << "pq1 ssize: " << pq1->simplify()->size() << endl;
  96.     cout << "evaluate on x=1/2: " << pq1->eval(0.5) << endl;
  97.     cout << "deletion time: " << polynomial::dt << endl;
  98.     delete pq1;
  99.     vst = clock(); polynomial::dt = 0; polynomial::steps = 0;
  100.     polynomial* pq2 = (*p).mul(*q);
  101.     cout << "divide and conquer mul time " << clock() - vst << " ms \n";
  102.     //cout << "pq2: " << *pq2 << " \n";
  103.     cout << "pq2 size: " << pq2->size() << endl;
  104.     cout << "pq2 ssize: " << pq2->simplify()->size() << endl;
  105.     cout << "evaluate on x=1/2: " << pq2->eval(0.5) << endl;
  106.     cout << "deletion time: " << polynomial::dt << endl;
  107.     delete pq2;
  108.     delete p;
  109.     delete q;
  110. }
Advertisement
Add Comment
Please, Sign In to add comment