DSDP
src
vecmat
sdpdvct.c
1
#include "numchol.h"
2
#include <stdio.h>
3
4
int
ExitProc(
int
,
char
*);
5
6
void
iZero(
int
n,
7
int
*x,
8
int
*s)
9
{
10
int
i;
11
12
if
(s) {
13
for
(i=0; i<n; ++i)
14
x[s[i]]=0;
15
}
16
else
17
memset(x,0,n*
sizeof
(
int
));
18
}
/* iZero */
19
20
void
iSet(
int
n,
21
int
a,
22
int
*x,
23
int
*
id
)
24
{
25
int
i;
26
27
if
(!
id
)
28
for
(i=0; i<n; ++i)
29
x[i]=a;
30
else
31
for
(i=0; i<n; ++i)
32
x[
id
[i]]=a;
33
}
/* iSet */
34
35
void
iSwap(
int
i1,
36
int
i2,
37
int
*v)
38
{
39
int
temp;
40
41
if
(i1<0||i2<0)
42
ExitProc(SysError,
"index error"
);
43
temp = v[i1];
44
v[i1] = v[i2];
45
v[i2] = temp;
46
}
/* iSwap */
47
48
void
iCopy(
int
n,
49
int
*s,
50
int
*d)
51
{
52
memcpy(d,s,n*
sizeof
(
int
));
53
}
/* iCopy */
54
55
int
iSum(
int
n,
56
int
*x)
57
{
58
int
i,sum=0;
59
60
for
(i=0; i<n; i++)
61
sum+=x[i];
62
63
return
sum;
64
}
/* iSum */
65
66
void
dCopy(
int
n,
67
double
*s,
68
double
*d)
69
{
70
if
(n) memcpy(d,s,n*
sizeof
(
double
));
71
}
/* dCopy */
72
73
void
dCat(
int
n,
74
int
*ix,
75
double
*s,
76
double
*d)
77
{
78
int
i;
79
80
for
(i=0; i<n; i++) {
81
d[i]=s[ix[i]];
82
s[ix[i]]=0.0;
83
}
84
}
/* dCat */
85
86
double
dDot(
double
*x,
87
double
*y,
88
int
n)
89
{
90
int
i;
91
double
r;
92
93
r=0.0;
94
for
(i=0; i<n; i++)
95
r+=x[i]*y[i];
96
97
return
r;
98
}
/* dDot */
99
100
void
plusXs(
int
n,
101
int
*x,
102
int
*s)
103
{
104
int
i;
105
106
if
(!s) {
107
for
(i=0; i<n; i++)
108
x[i]++;
109
}
110
else
{
111
for
(i=0; i<n; i++)
112
x[s[i]]++;
113
}
114
}
/* plusXs */
Generated by
1.8.15