sdpdvct.c

00001 #include "numchol.h"
00002 #include <stdio.h>
00003 
00004 int ExitProc(int,char *);
00005 
00006 void iZero(int n,
00007            int *x,
00008            int *s)
00009 {
00010   int i;
00011 
00012   if (s) {
00013     for(i=0; i<n; ++i)
00014       x[s[i]]=0;
00015   }
00016   else
00017     memset(x,0,n*sizeof(int));
00018 } /* iZero */
00019 
00020 void iSet(int n,
00021           int a,
00022           int *x,
00023           int *id)
00024 {
00025   int i;
00026 
00027   if (!id)
00028     for(i=0; i<n; ++i)
00029       x[i]=a;
00030   else
00031     for(i=0; i<n; ++i)
00032       x[id[i]]=a;
00033 } /* iSet */
00034 
00035 void iSwap(int i1,
00036            int i2,
00037            int *v)
00038 {
00039   int temp;
00040 
00041   if (i1<0||i2<0)
00042     ExitProc(SysError,"index error");
00043   temp  = v[i1];
00044   v[i1] = v[i2];
00045   v[i2] = temp;
00046 } /* iSwap */
00047 
00048 void iCopy(int n,
00049            int *s,
00050            int *d)
00051 {
00052   memcpy(d,s,n*sizeof(int));
00053 } /* iCopy */
00054 
00055 int iSum(int n,
00056          int *x)
00057 {
00058   int i,sum=0;
00059   
00060   for (i=0; i<n; i++)
00061     sum+=x[i];
00062     
00063   return sum;
00064 } /* iSum */
00065 
00066 void dCopy(int    n,
00067            double *s,
00068            double *d)
00069 {
00070   if (n) memcpy(d,s,n*sizeof(double));
00071 } /* dCopy */
00072 
00073 void dCat(int    n,
00074           int    *ix,
00075           double *s,
00076           double *d)
00077 {
00078   int i;
00079   
00080   for (i=0; i<n; i++) {
00081     d[i]=s[ix[i]];
00082     s[ix[i]]=0.0;
00083   }
00084 } /* dCat */
00085 
00086 double dDot(double *x,
00087             double *y,
00088             int    n)
00089 {
00090   int    i;
00091   double r;
00092   
00093   r=0.0;
00094   for (i=0; i<n; i++)
00095     r+=x[i]*y[i];
00096   
00097   return r;
00098 }/* dDot */
00099 
00100 void plusXs(int n,
00101             int *x,
00102             int *s)
00103 {
00104   int i;
00105   
00106   if (!s) {
00107     for (i=0; i<n; i++)
00108       x[i]++;
00109   }
00110   else {
00111     for (i=0; i<n; i++)
00112       x[s[i]]++;
00113   }
00114 } /* plusXs */

Generated on Mon Nov 30 20:17:34 2009 for DSDP by  doxygen 1.6.1