DSDP
dsdpvec.h
Go to the documentation of this file.
00001 #if !defined(__DSDP_VECTORS_H) 
00002 #define __DSDP_VECTORS_H
00003 
00004 #include <math.h>
00009 /* Define DSDP Vector Structure */
00010 
00020 struct  DSDPVec_C{
00021   int    dim;
00022   double *val;
00023 };
00024 
00025 typedef struct DSDPVec_C DSDPVec;
00026 
00027 #define DSDPVecGetArray(a,b)              0;{ *(b)=((a).val); }
00028 #define DSDPVecRestoreArray(a,b)          0;{ *(b)=0; }
00029 #define DSDPVecGetSize(a,b)               0;{ *(b)=((a).dim); }
00030 #define DSDPVecAddElement(a,b,c)          0;{ if (c){((a).val[b])+=(c);}  }
00031 #define DSDPVecSetElement(a,b,c)          0;{  {((a).val[b])=(c); } }
00032 #define DSDPVecGetElement(a,b,c)          0;{ *(c)=((a).val[b]); }
00033 #define DSDPVecSetR(a,b)                  0;{  {((a).val[(a).dim-1])=(b); } }
00034 #define DSDPVecAddR(a,b)                  0;{  if(b){((a).val[(a).dim-1])+=(b); } }
00035 #define DSDPVecGetR(a,b)                  0;{ *(b)=((a).val[(a).dim-1]); }
00036 #define DSDPVecSetC(a,b)                  0;{  {((a).val[0])=(b); } }
00037 #define DSDPVecAddC(a,b)                  0;{  if(b){((a).val[0])+=(b); } }
00038 #define DSDPVecGetC(a,b)                  0;{ *(b)=((a).val[0]); }
00039 #define DSDPVecCreateWArray(a,b,c)        0;{ (*(a)).val=(b); (*(a)).dim=(c);}
00040 /*
00041 extern int DSDPVecGetArray(DSDPVec, double **);
00042 extern int DSDPVecRestoreArray(DSDPVec, double **);
00043 extern int DSDPVecGetSize(DSDPVec, int *);
00044 extern int DSDPVecAddElement(DSDPVec, int, double);
00045 extern int DSDPVecSetElement(DSDPVec, int, double);
00046 extern int DSDPVecGetElement(DSDPVec, int, double*);
00047 extern int DSDPVecCreateWArray(DSDPVec*, double*, int);
00048 */
00049 #ifdef __cplusplus
00050 extern "C" {
00051 #endif
00052 
00053 extern int DSDPVecCreateSeq(int,DSDPVec *);
00054 extern int DSDPVecDuplicate(DSDPVec,DSDPVec *);
00055 extern int DSDPVecSet(double, DSDPVec );
00056 extern int DSDPVecISet(int*,DSDPVec);
00057 extern int DSDPVecZero(DSDPVec );
00058 extern int DSDPVecNormalize(DSDPVec );
00059 extern int DSDPVecSetValue(DSDPVec,int,double);
00060 extern int DSDPVecSetBasis(DSDPVec,int);
00061 extern int DSDPVecCopy( DSDPVec,  DSDPVec);
00062 extern int DSDPVecScale(double, DSDPVec);
00063 extern int DSDPVecScaleCopy(DSDPVec,  double, DSDPVec);
00064 extern int DSDPVecAXPY(double,  DSDPVec,  DSDPVec);
00065 extern int DSDPVecAYPX(double,  DSDPVec,  DSDPVec);
00066 extern int DSDPVecWAXPY(DSDPVec,double,DSDPVec,DSDPVec);
00067 extern int DSDPVecWAXPBY(DSDPVec,double,DSDPVec,double,DSDPVec);
00068 extern int DSDPVecPointwiseMin( DSDPVec, DSDPVec, DSDPVec);
00069 extern int DSDPVecPointwiseMax( DSDPVec, DSDPVec, DSDPVec);
00070 extern int DSDPVecPointwiseMult( DSDPVec, DSDPVec, DSDPVec);
00071 extern int DSDPVecPointwiseDivide( DSDPVec, DSDPVec, DSDPVec);
00072 extern int DSDPVecReciprocalSqrt(DSDPVec);
00073 extern int DSDPVecDot(DSDPVec, DSDPVec, double *);
00074 extern int DSDPVecSum( DSDPVec, double *);
00075 extern int DSDPVecNorm1( DSDPVec, double *);
00076 extern int DSDPVecNorm2( DSDPVec, double *);
00077 extern int DSDPVecNorm22( DSDPVec, double *);
00078 extern int DSDPVecNormInfinity( DSDPVec, double *);
00079 extern int DSDPVecAbsoluteValue( DSDPVec);
00080 extern int DSDPVecShift(double, DSDPVec);
00081 extern int DSDPVecView( DSDPVec);
00082 extern int DSDPVecDestroy(DSDPVec*);
00083 
00084 #ifdef __cplusplus
00085 }
00086 #endif
00087 
00088 #endif
00089