Actual source code: tvecsingle.h

      1: #ifndef SIMPLEFLOATVECTOR_H
      2: #define SIMPLEFLOATVECTOR_H

      4: #include "tao_basictypes.h"
     5:  #include taovec.h

      7: class TaoVecFloatArray: public TaoVec{

      9:  protected:

     11:   int n;
     12:   float *v;
     13:   int fallocated;
     14:  public:
     15:
     16:   inline int GetData(float**dd,int*nn){*dd=v;*nn=n; return 0;}

     18:   TaoVecFloatArray( int nn );
     19:   TaoVecFloatArray( int nn , float *vv);
     20:   ~TaoVecFloatArray(){if (n>0 && fallocated) delete [] v;};

     22:   virtual int Clone(TaoVec**);
     23:   virtual int Compatible(TaoVec*, TaoTruth*);

     25:   /** Set all elements of this Tao Vector to zero. */
     26:   virtual int SetToZero();
     27:   /** Set all elements of this Tao Vector to the constant value c */
     28:   virtual int SetToConstant( double );

     30:   /** Copy the elements of one vector to another */
     31:   virtual int CopyFrom( TaoVec* );

     33:   virtual int ScaleCopyFrom( double, TaoVec* );

     35:   /** Return the norm of this Tao Vector. */
     36:   virtual int NormInfinity( double* );
     37:   virtual int Norm1( double* );
     38:   virtual int Norm2( double* );
     39:   virtual int Norm2squared( double* );

     41:   /** Multiply the components of this Tao Vector by the components of v. */
     42:   virtual int PointwiseMultiply( TaoVec* , TaoVec* );

     44:   /** Divide the components of this Tao Vector by the components of v. */
     45:   virtual int PointwiseDivide( TaoVec* , TaoVec* );

     47:   /** Set the elements of one vector to the mi of corresponding elements of two compatible vectors */
     48:   virtual int PointwiseMaximum( TaoVec* , TaoVec*);

     50:   virtual int PointwiseMinimum( TaoVec* , TaoVec*);

     52:   virtual int Median( TaoVec* , TaoVec* , TaoVec* );

     54:   /** Calculate the Billups composition form of the Fischer function given
     55:       x, f, l, u.  The smoothed version takes the smoothing parameter for each
     56:       component as an additional argument.
     57:   */
     58:   virtual int  Fischer(TaoVec *, TaoVec *, TaoVec *, TaoVec *);
     59:   virtual int SFischer(TaoVec *, TaoVec *, TaoVec *, TaoVec *, double);

     61:   /** Scale each element of this Tao Vector by the constant alpha */
     62:   virtual int Scale( double );

     64:   /** this += alpha * x */
     65:   virtual int Axpy  ( double , TaoVec* );

     67:   /** this = alpha * this + x */
     68:   virtual int Aypx  ( double , TaoVec* );

     70:   virtual int Axpby  ( double , TaoVec*, double  );

     72:   /** this = alpha * x + beta *y */
     73:   virtual int Waxpby( double , TaoVec*, double , TaoVec* );

     75:   /** Take the absolute value of the elements */
     76:   virtual int AbsoluteValue( );

     78:   /** Take the minimum of the absolute value of the elements */
     79:   virtual int MinElement(double*);

     81:   /** Add c to the elements of this Tao Vector */
     82:   virtual int AddConstant( double );

     84:   /** Return the dot product of this Tao Vector with v */
     85:   virtual int Dot( TaoVec* , double *);

     87:   /** Negate all the elements of this Tao Vector. */
     88:   virtual int Negate();

     90:   /** Invert (1/x) the elements of this Tao Vector. */
     91:   virtual int Reciprocal();

     93:   /** Get the dimension of the vector space */
     94:   virtual int GetDimension( int* );

     96:   /* View */
     97:   virtual int View();

     99:   /* stepMax */
    100:   virtual int StepMax2( TaoVec* , TaoVec*, TaoVec*, double* );

    102:   virtual int StepMax( TaoVec* , double* );

    104:   virtual int BoundGradientProjection(TaoVec*,TaoVec*,TaoVec*, TaoVec*);

    106:   /* Functionality for working in a reduced space */

    108:   int GetFloats(float **, int*);
    109:   int RestoreFloats(float **, int*);

    111: };

    113: #endif