Changeset 4e2486 in git


Ignore:
Timestamp:
Aug 17, 2005, 11:14:34 AM (19 years ago)
Author:
Michael Brickenstein <bricken@…>
Branches:
(u'spielwiese', '4a9821a93ffdc22a6696668bd4f6b8c9de3e6c5f')
Children:
650d1417bb87b3339aa5ce123bb3ca01e61f181f
Parents:
6bfb0efc1cc28f45f85a083258997bf49484fa3b
Message:
*bricken: more work on vectors


git-svn-id: file:///usr/local/Singular/svn/trunk@8515 2c84dea3-7e68-4137-9b89-c4e89433aadc
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • kernel/Poly.h

    r6bfb0e r4e2486  
    1 //$Id: Poly.h,v 1.11 2005-08-17 08:34:44 bricken Exp $
     1//$Id: Poly.h,v 1.12 2005-08-17 09:14:34 bricken Exp $
    22
    33
     
    2626  friend class PolyBase<POLY_VARIANT_RING>;
    2727  friend class PolyBase<POLY_VARIANT_MODUL>;
     28  friend class Poly;
    2829  //friend class Number;
    2930 protected:
     
    329330template <poly_variant variant> class PolyBase;
    330331template <poly_variant v> inline PolyBase<v> operator+(const PolyBase<v>& p1, const PolyBase<v>& p2);
    331 template <poly_variant v> inline PolyBase<v> operator*(const PolyBase<v>& p1, const PolyBase<v>& p2);
    332 template <poly_variant v>inline PolyBase<v> operator*(const PolyBase<v>& p1, const Number& n);
     332//template <poly_variant v> inline PolyBase<v> operator*(const PolyBase<v>& p1, const PolyBase<v>& p2);
     333//template <poly_variant v>inline PolyBase<v> operator*(const PolyBase<v>& p1, const Number& n);
    333334template<poly_variant variant> class PolyBase{
    334335 
     
    420421  //  friend inline template PolyBase<poly_variant variant> operator+(const PolyBase<v>& p1, const PolyBase<v>& p2);
    421422  friend PolyBase<variant> operator+<>(const PolyBase<variant>& p1, const PolyBase<variant>& p2);
    422   friend PolyBase<variant> operator*<>(const PolyBase<variant>& p1, const PolyBase<variant>& p2);
    423   friend PolyBase<variant> operator*<>(const PolyBase<variant>& p1, const Number& p2);
     423  //friend PolyBase<variant> operator*<>(const PolyBase<variant>& p1, const PolyBase<variant>& p2);
     424  //friend PolyBase<variant> operator*<>(const PolyBase<variant>& p1, const Number& p2);
    424425};
    425426
    426427class Poly: public PolyBase<POLY_VARIANT_RING>{
     428 
    427429 public:
     430   typedef PolyInputIterator<Poly> iterator;
    428431  Poly(ring r=currRing):PolyBase<POLY_VARIANT_RING> ((poly)NULL,r,0){
    429432  }
     
    439442  Poly(const Number& n):PolyBase<POLY_VARIANT_RING>(*(new PolyImpl(n))){
    440443   
     444  }
     445  Poly(poly p, ring r):PolyBase<POLY_VARIANT_RING>(p,r){
     446   
     447  }
     448  Poly(poly p, ring r, int):PolyBase<POLY_VARIANT_RING>(p,r,0){
    441449  }
    442450  Poly(std::vector<int> v, ring r=currRing):PolyBase<POLY_VARIANT_RING>(*(new PolyImpl((poly) NULL,r))){
     
    465473    return *this;
    466474  }
     475  PolyInputIterator<Poly> begin(){
     476    return PolyInputIterator<Poly>(ptr->p,ptr->r);
     477  }
     478  PolyInputIterator<Poly> end(){
     479    return PolyInputIterator<Poly>(NULL, ptr->r);
     480  }
    467481};
    468482void foo(Poly p, Number n){
     
    475489    return(PolyBase<v>(*res));
    476490}
    477 template <poly_variant v> inline PolyBase<v> operator*(const PolyBase<v>& p1, const PolyBase<v>& p2){
     491/*template <poly_variant v> inline PolyBase<v> operator*(const PolyBase<v>& p1, const PolyBase<v>& p2){
    478492    PolyImpl* res=new PolyImpl(*p1.ptr);
    479493    *res *= *p2.ptr;
    480494    return(PolyBase<v> (*res));
    481 }
    482 template <poly_variant v>inline PolyBase<v> operator*(const PolyBase<v>& p1, const Number& n){
    483     PolyImpl* res=new PolyImpl(*p1.ptr);
    484     *res *= n;
    485     return(PolyBase<v>(*res));
    486 }
     495    }*/
     496inline PolyBase<POLY_VARIANT_MODUL> operator*(const PolyBase<POLY_VARIANT_MODUL>& p1, const Number& n){
     497  PolyBase<POLY_VARIANT_MODUL> erg(p1);
     498  erg*=n;
     499  return erg;
     500}
     501Poly operator*(const Poly& p, const Poly& p2){
     502  Poly erg=p;
     503  erg*=p2;
     504  return erg;
     505}
     506
    487507Poly operator+(const Poly& p1, const Poly& p2){
    488508  Poly f(p1);
  • modules/python/polytester

    r6bfb0e r4e2486  
    1818print z+xy
    1919print z,xy
    20 print xy+xy*xy
     20#print xy+xy*xy
    2121print xy
    2222for t in (xy*xy+xy+polynomial(1)):
  • modules/python/wrapper.h

    r6bfb0e r4e2486  
    1 //$Id: wrapper.h,v 1.4 2005-08-17 06:33:04 bricken Exp $
     1//$Id: wrapper.h,v 1.5 2005-08-17 09:14:21 bricken Exp $
    22#ifndef PYTHON_SINGULAR_WRAPPER_HEADER
    33#define PYTHON_SINGULAR_WRAPPER_HEADER
     
    2222}
    2323
    24 static boost::python::object Poly_as_str(Poly p)
     24static boost::python::object Poly_as_str(Poly& p)
    2525{
    2626  using boost::python::str;
     
    3030  return boost::python::str(out,strlen(out));
    3131}
     32
    3233
    3334BOOST_PYTHON_MODULE(Singular){
     
    8384    .def(self*=Number())
    8485    .def(self*self);
     86    boost::python::class_<PolyBase<POLY_VARIANT_MODUL> >("vector")
     87   
     88    .def(boost::python::init <>())
     89   
     90   
     91    .def("__str__", Poly_as_str)
     92    .def("__iter__", boost::python::iterator<PolyBase<POLY_VARIANT_MODUL> >())
     93    //read monomials (only) from string
     94    //.def(boost::python::init <const char* >())
     95   
     96      //.def("__str__", as_str)
     97      //.def(-self)
     98
     99    .def(self+=self)
     100      //    .def(self-=self)
     101      //.def(self/=self)
     102      //.def(self==self)
     103    .def(self+self)
     104    .def(self*=Number())
     105      .def(self*Number());
     106      //.def(self+Number())
     107      //.def(self+=Number())
     108      //.def(self*=Number());
     109
    85110  //boost::python::class_<TermReference>("termreference");
    86111    //.def(self/self)
Note: See TracChangeset for help on using the changeset viewer.