#ifndef USE_SIMD // Matrix class without SIMD instructions class DMatrix5x1{ public: DMatrix5x1(){ for (unsigned int i=0;i<5;i++) mA[i]=0.; } DMatrix5x1(double a1, double a2, double a3, double a4, double a5){ mA[0]=a1; mA[1]=a2; mA[2]=a3; mA[3]=a4; mA[4]=a5; } ~DMatrix5x1(){}; // Access by row number double &operator() (int row){ return mA[row]; } double operator() (int row) const{ return mA[row]; } // Copy constructor DMatrix5x1(const DMatrix5x1 &m2){ for (unsigned int i=0;i<5;i++){ mA[i]=m2(i); } } // Assignment operator DMatrix5x1 &operator=(const DMatrix5x1 &m2){ for (unsigned int i=0;i<5;i++){ mA[i]=m2(i); } return *this; } // Matrix addition DMatrix5x1 operator+(const DMatrix5x1 &m2) const{ return DMatrix5x1(mA[0]+m2(0),mA[1]+m2(1),mA[2]+m2(2),mA[3]+m2(3), mA[4]+m2(4)); } DMatrix5x1 &operator+=(const DMatrix5x1 &m2){ for (unsigned int i=0;i<5;i++){ mA[i]+=m2(i); } return *this; } // Matrix subtraction DMatrix5x1 operator-(const DMatrix5x1 &m2) const{ return DMatrix5x1(mA[0]-m2(0),mA[1]-m2(1),mA[2]-m2(2),mA[3]-m2(3), mA[4]-m2(4)); } void Print(){ cout << "DMatrix5x1:" <