示例#1
0
Poly Poly::operator*(const Poly& obj) const
{
    Poly tmp = Poly(this->m_pi);
    
    // This
    for (int i = 0; i < this->getMonoPolyNum(); i++) {
        for (int j = 0; j < obj.getMonoPolyNum(); j++) {
            MonoPoly toadd = *(obj.getMonoPolyWithIndex(j)) * *(this->getMonoPolyWithIndex(i));
            tmp = tmp + toadd;
        }
    }
    
    tmp.cleanPoly();
    return tmp;
}
示例#2
0
Poly Poly::operator+(const Poly& obj) const
{
    Poly tmp = Poly(this->m_pi);
    
    // This
    for (int i = 0; i < this->getMonoPolyNum(); i++) 
        tmp.addMonoPoly(this->getMonoPolyWithIndex(i));

    // obj
    for (int i = 0; i < obj.getMonoPolyNum(); i++) {
        int index;
        if ((index = tmp.searchSameDimMonoPoly(obj.getMonoPolyWithIndex(i))) == -1) {
            tmp.addMonoPoly(obj.getMonoPolyWithIndex(i));
        } else {
            tmp.setMonoPolyCoeffWithIndex(index, 
                    tmp.getMonoPolyWithIndex(index)->getCoeff() 
                  + obj.getMonoPolyWithIndex(i)    ->getCoeff());
        }
    }
    
    tmp.cleanPoly();
    return tmp;
}