DSDP
dsdpvec.h
Go to the documentation of this file.
1#if !defined(__DSDP_VECTORS_H)
2#define __DSDP_VECTORS_H
3
4#include <math.h>
9/* Define DSDP Vector Structure */
10
20struct DSDPVec_C{
21 int dim;
22 double *val;
23};
24
25typedef struct DSDPVec_C DSDPVec;
26
27#define DSDPVecGetArray(a,b) 0;{ *(b)=((a).val); }
28#define DSDPVecRestoreArray(a,b) 0;{ *(b)=0; }
29#define DSDPVecGetSize(a,b) 0;{ *(b)=((a).dim); }
30#define DSDPVecAddElement(a,b,c) 0;{ if (c){((a).val[b])+=(c);} }
31#define DSDPVecSetElement(a,b,c) 0;{ {((a).val[b])=(c); } }
32#define DSDPVecGetElement(a,b,c) 0;{ *(c)=((a).val[b]); }
33#define DSDPVecSetR(a,b) 0;{ {((a).val[(a).dim-1])=(b); } }
34#define DSDPVecAddR(a,b) 0;{ if(b){((a).val[(a).dim-1])+=(b); } }
35#define DSDPVecGetR(a,b) 0;{ *(b)=((a).val[(a).dim-1]); }
36#define DSDPVecSetC(a,b) 0;{ {((a).val[0])=(b); } }
37#define DSDPVecAddC(a,b) 0;{ if(b){((a).val[0])+=(b); } }
38#define DSDPVecGetC(a,b) 0;{ *(b)=((a).val[0]); }
39#define DSDPVecCreateWArray(a,b,c) 0;{ (*(a)).val=(b); (*(a)).dim=(c);}
40/*
41extern int DSDPVecGetArray(DSDPVec, double **);
42extern int DSDPVecRestoreArray(DSDPVec, double **);
43extern int DSDPVecGetSize(DSDPVec, int *);
44extern int DSDPVecAddElement(DSDPVec, int, double);
45extern int DSDPVecSetElement(DSDPVec, int, double);
46extern int DSDPVecGetElement(DSDPVec, int, double*);
47extern int DSDPVecCreateWArray(DSDPVec*, double*, int);
48*/
49#ifdef __cplusplus
50extern "C" {
51#endif
52
53extern int DSDPVecCreateSeq(int,DSDPVec *);
54extern int DSDPVecDuplicate(DSDPVec,DSDPVec *);
55extern int DSDPVecSet(double, DSDPVec );
56extern int DSDPVecISet(int*,DSDPVec);
57extern int DSDPVecZero(DSDPVec );
58extern int DSDPVecNormalize(DSDPVec );
59extern int DSDPVecSetValue(DSDPVec,int,double);
60extern int DSDPVecSetBasis(DSDPVec,int);
61extern int DSDPVecCopy( DSDPVec, DSDPVec);
62extern int DSDPVecScale(double, DSDPVec);
63extern int DSDPVecScaleCopy(DSDPVec, double, DSDPVec);
64extern int DSDPVecAXPY(double, DSDPVec, DSDPVec);
65extern int DSDPVecAYPX(double, DSDPVec, DSDPVec);
66extern int DSDPVecWAXPY(DSDPVec,double,DSDPVec,DSDPVec);
67extern int DSDPVecWAXPBY(DSDPVec,double,DSDPVec,double,DSDPVec);
68extern int DSDPVecPointwiseMin( DSDPVec, DSDPVec, DSDPVec);
69extern int DSDPVecPointwiseMax( DSDPVec, DSDPVec, DSDPVec);
70extern int DSDPVecPointwiseMult( DSDPVec, DSDPVec, DSDPVec);
71extern int DSDPVecPointwiseDivide( DSDPVec, DSDPVec, DSDPVec);
72extern int DSDPVecReciprocalSqrt(DSDPVec);
73extern int DSDPVecDot(DSDPVec, DSDPVec, double *);
74extern int DSDPVecSum( DSDPVec, double *);
75extern int DSDPVecNorm1( DSDPVec, double *);
76extern int DSDPVecNorm2( DSDPVec, double *);
77extern int DSDPVecNorm22( DSDPVec, double *);
78extern int DSDPVecNormInfinity( DSDPVec, double *);
79extern int DSDPVecAbsoluteValue( DSDPVec);
80extern int DSDPVecShift(double, DSDPVec);
81extern int DSDPVecView( DSDPVec);
82extern int DSDPVecDestroy(DSDPVec*);
83
84#ifdef __cplusplus
85}
86#endif
87
88#endif
89
struct DSDPVec_C DSDPVec
This object hold m+2 variables: a scaling of C, the y variables, and r.
Definition dsdpvec.h:25