DSDP
|
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