#include <iostream>
#include <cmath>
#include <vector>
#include <string>
#include <algorithm>
#include "lwave.h"
using namespace std;
int main()
{
string name="bior4.4";
liftscheme blift(name);
// Adding a Dual Lifting Stage
string c="d"; //d corrsponds to dual while p corresponds to primal
vector<double> addl;
addl.push_back(0.500);
addl.push_back(-0.125);
int mp=0;
blift.addLift(c,addl,mp);
//Getting Information
cout << " Number Of Lifting Stages : " << blift.nlifts() << endl;
cout << " K Constant : " << blift.K() << endl;
cout << " Name : " << blift.getName() << endl;
vector<double> coeff;
vector<int> lenvec;
string lattice;
double Kc;
// Getting Full Scheme
blift.getScheme(coeff,lenvec,lattice,Kc);
cout << "Lifting Structure : " << lattice << endl;
cout << " K Constant (Same As Above) : " << Kc << endl;
cout << "A Single Vector Containing All Lifting Coefficients " << endl;
for (int i=0; i < (int)coeff.size(); i++) {
cout << coeff[i] << " " ;
}
cout << endl;
cout << "Length Vector that corresponds to lengths of Lifting Coefficients and Maximum Power at each Stage" << endl;
for (int i=0; i <(int) lenvec.size(); i++) {
cout << lenvec[i] << " " ;
}
cout << endl;
// disp() Function Displays Coefficients and Laurent Polynomials At Each Stage
blift.disp();
return 0;
}