Changeset 0f7000 in git


Ignore:
Timestamp:
May 25, 2005, 5:34:54 PM (19 years ago)
Author:
Michael Brickenstein <bricken@…>
Branches:
(u'spielwiese', '4a9821a93ffdc22a6696668bd4f6b8c9de3e6c5f')
Children:
48457fab8ef34522270bc8f034a43711ca2cea6d
Parents:
76a34c6a683653fb6bce7a69dfecd6e52cbc496f
Message:
*bricken: even more ops


git-svn-id: file:///usr/local/Singular/svn/trunk@8318 2c84dea3-7e68-4137-9b89-c4e89433aadc
File:
1 edited

Legend:

Unmodified
Added
Removed
  • modules/wrapper.h

    r76a34c r0f7000  
    1 //$Id: wrapper.h,v 1.4 2005-05-25 13:32:00 bricken Exp $
     1//$Id: wrapper.h,v 1.5 2005-05-25 15:34:54 bricken Exp $
    22#include "mod2.h"
    33#include "numbers.h"
     
    99class Number{
    1010 
    11 public:
    12     friend Number operator+(const Number& n1, const Number& n2);
    13     friend Number operator-(const Number& n1, const Number& n2);
    14     friend Number operator/(const Number& n1, const Number& n2);
    15     friend Number operator*(const Number& n1, const Number& n2);
    16     friend bool operator==(const Number& n1, const Number& n2);
    17     Number& operator=(const Number& n2){
    18       //durch Reihenfolge Selbstzuweisungen berücksichtigt
    19       number nc=n_Copy(n2.n,n2.r);
    20       n_Delete(&n,r);
    21       r=n2.r;
    22       n=nc;
    23       return *this;
    24     }
    25     Number operator-(){
    26       Number t(*this);
    27       t.n=n_Copy(n,r);
    28       t.n=n_Neg(t.n,r);
    29       return t;
    30     }
    31     Number& operator+=(const Number & n2){
     11 public:
     12  friend Number operator+(const Number& n1, const Number& n2);
     13  friend Number operator-(const Number& n1, const Number& n2);
     14  friend Number operator/(const Number& n1, const Number& n2);
     15  friend Number operator*(const Number& n1, const Number& n2);
     16  friend bool operator==(const Number& n1, const Number& n2);
     17  friend Number operator+(const Number& n1, int n2);
     18  friend Number operator-(const Number& n1, int n2);
     19  friend Number operator/(const Number& n1, int n2);
     20  friend Number operator*(const Number& n1, int n2);
     21  friend bool operator==(const Number& n1, int n2);
     22  friend Number operator+(int n1, const Number& n2);
     23  friend Number operator-(int n1, const Number& n2);
     24  friend Number operator/(int n1, const Number& n2);
     25  friend Number operator*(int n1, const Number& n2);
     26  friend bool operator==(int n1, const Number& n2);
     27  Number& operator=(const Number& n2){
     28    //durch Reihenfolge Selbstzuweisungen berücksichtigt
     29    number nc=n_Copy(n2.n,n2.r);
     30    n_Delete(&n,r);
     31    r=n2.r;
     32    n=nc;
     33    return *this;
     34  }
     35  Number operator-(){
     36    Number t(*this);
     37    t.n=n_Copy(n,r);
     38    t.n=n_Neg(t.n,r);
     39    return t;
     40  }
     41  Number& operator+=(const Number & n2){
    3242    if (r!=n2.r){
    3343      Werror("not the same ring");
     
    6979    return *this;
    7080  }
     81
     82
     83
     84
     85
     86
     87
     88
     89
     90
     91  Number& operator=(int n2){
     92    n_Delete(&n,r);
     93    n=n_Init(n2,r);
     94    return *this;
     95  }
     96 
     97  Number& operator+=(int n2){
     98    number n2n=n_Init(n2,r);
     99    number nv=n_Add(n,n2n,r);
     100    n_Delete(&n,r);
     101    n_Delete(&n2n,r);
     102    n=nv;
     103    return *this;
     104  }
     105  Number& operator*=(int n2){
     106    number n2n=n_Init(n2,r);
     107    number nv=n_Mult(n,n2n,r);
     108    n_Delete(&n,r);
     109    n_Delete(&n2n,r);
     110    n=nv;
     111    return *this;
     112  }
     113  Number& operator-=(int n2){
     114
     115    number n2n=n_Init(n2,r);
     116    number nv=n_Sub(n,n2n,r);
     117    n_Delete(&n,r);
     118    n_Delete(&n2n,r);
     119    n=nv;
     120    return *this;
     121  }
     122  Number& operator/=(int n2){ 
     123    number n2n=n_Init(n2,r);
     124    number nv=n_Div(n,n2n,r);
     125    n_Delete(&n,r);
     126    n_Delete(&n2n,r);
     127    n=nv;
     128    return *this;
     129  }
     130
     131
     132
    71133  Number(){
    72134    r=currRing;
     
    85147    this->r=r;
    86148  }
    87   Number(int n){
     149  explicit Number(int n){
    88150    r=currRing;
    89151    this->n=n_Init(n,r);
     
    96158  }
    97159
    98 protected:
     160 protected:
    99161  number n;
    100162  ring r;
     
    134196  return n_Equal(n1.n,n2.n,n1.r);
    135197}
     198
     199
     200Number operator+(const Number &n1, int n2){
     201  Number erg(n1);
     202  erg+=Number(n2,n1.r);
     203  return erg;
     204}
     205Number operator*(const Number &n1, int n2){
     206  Number erg(n1);
     207  erg*=Number(n2,n1.r);
     208  return erg;
     209}
     210Number operator-(const Number &n1, int n2){
     211  Number erg(n1);
     212  erg-=Number(n2,n1.r);
     213  return erg;
     214}
     215Number operator/(const Number &n1, int n2){
     216  Number erg(n1);
     217  erg/=Number(n2,n1.r);
     218  return erg;
     219}
     220bool operator==(const Number &n1, int n2){
     221  return n_Equal(n1.n,Number(n2,n1.r).n,n1.r);
     222}
     223Number operator+(int n1, const Number& n2){
     224  Number erg(n2);
     225  return erg+=Number(n1,n2.r);
     226}
     227Number operator-(int n1, const Number& n2){
     228
     229  Number erg(n1,n2.r);
     230  return erg-=n2;
     231}
     232Number operator/(int n1, const Number& n2){
     233  Number erg(n1,n2.r);
     234  return erg/=n2;
     235}
     236
     237Number operator*(int n1, const Number& n2){
     238  Number erg(n2);
     239  return erg*=Number(n1,n2.r);
     240}
     241bool operator==(int n1, const Number& n2){
     242  return n2==Number(n1,n2.r);
     243}
     244
     245
    136246BOOST_PYTHON_MODULE(Singular){
    137247  boost::python::class_<Number>("number")
     
    139249    .def("__str__", as_str)
    140250    .def(-self)
     251    .def(self*=self)
     252    .def(self+=self)
     253    .def(self-=self)
     254    .def(self/=self)
    141255    .def(self==self)
    142256    .def(self+self)
    143257    .def(self*self)
    144258    .def(self/self)
    145     .def(self-self);
    146 }
     259    .def(self-self)
     260    .def(int()==self)
     261    .def(int()+self)
     262    .def(int()*self)
     263    .def(int()/self)
     264    .def(int()-self)
     265    .def(self==int())
     266    .def(self+int())
     267    .def(self*int())
     268    .def(self/int())
     269    .def(self-int())
     270    .def(self*=int())
     271    .def(self+=int())
     272    .def(self-=int())
     273    .def(self/=int());
     274}
Note: See TracChangeset for help on using the changeset viewer.