/* * surf - visualizing algebraic curves and algebraic surfaces * Copyright (C) 1996-1997 Friedrich-Alexander-Universitaet * Erlangen-Nuernberg * 1997-2000 Johannes Gutenberg-Universitaet Mainz * Authors: Stephan Endrass, Hans Huelf, Ruediger Oertel, * Kai Schneider, Ralf Schmitt, Johannes Beigel * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ #ifndef CMonom_H #define CMonom_H #include #include #include #include "doubleMath.h" template class CMonom { public: CMonom() {memset(exponent, 0, sizeof(int[num]));}; CMonom(const CMonom &m) : coeff(m.coeff) {memcpy(exponent, m.exponent, sizeof(int[num])); coeff=m.coeff;}; ~CMonom(){}; CMonom &operator= (const CMonom &m) { memcpy(exponent, m.exponent, sizeof(int[num])); coeff=m.coeff; return *this; }; CMonom &operator+=(const CMonom &m) {coeff+=m.coeff; return *this;}; CMonom &operator-=(const CMonom &m) {coeff-=m.coeff; return *this;}; CMonom &operator*=(const CMonom &m) {int i;for(i=0; i=0 && var ostream & operator<<(ostream &os, const CMonom &m) { m.print(os); return os; } // template // ostream & operator<<(ostream &os, const Type & m) // { // m.print(os); // return os; // } template inline int isNull(const CMonom &m) { return isNull(m.getCoeff()); } // template // inline void negate (Type &m) // { // negate(m.getCoeff()); // } template inline void negate(CMonom &m) { negate(m.getCoeff()); } template CMonom monom(const Coeff &coeff, int e0, int e1) { CMonom mon; mon.getCoeff()=coeff; mon.getExponent(0)=e0; mon.getExponent(1)=e1; return mon; } template CMonom monom(const Coeff &coeff, int e0, int e1, int e2) { CMonom mon; mon.getCoeff()=coeff; mon.getExponent(0)=e0; mon.getExponent(1)=e1; mon.getExponent(2)=e2; // mon.getExponent(3)=0; return mon; } #endif