MCPcopy Create free account
hub / github.com/BoevaLab/FREEC / symmetricrank2update

Function symmetricrank2update

src/sblas.cpp:128–170  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

126
127
128void symmetricrank2update(ap::real_2d_array& a,
129 bool isupper,
130 int i1,
131 int i2,
132 const ap::real_1d_array& x,
133 const ap::real_1d_array& y,
134 ap::real_1d_array& t,
135 double alpha)
136{
137 int i;
138 int tp1;
139 int tp2;
140 double v;
141
142 if( isupper )
143 {
144 for(i = i1; i <= i2; i++)
145 {
146 tp1 = i+1-i1;
147 tp2 = i2-i1+1;
148 v = x(i+1-i1);
149 ap::vmove(&t(tp1), 1, &y(tp1), 1, ap::vlen(tp1,tp2), v);
150 v = y(i+1-i1);
151 ap::vadd(&t(tp1), 1, &x(tp1), 1, ap::vlen(tp1,tp2), v);
152 ap::vmul(&t(tp1), 1, ap::vlen(tp1,tp2), alpha);
153 ap::vadd(&a(i, i), 1, &t(tp1), 1, ap::vlen(i,i2));
154 }
155 }
156 else
157 {
158 for(i = i1; i <= i2; i++)
159 {
160 tp1 = 1;
161 tp2 = i+1-i1;
162 v = x(i+1-i1);
163 ap::vmove(&t(tp1), 1, &y(tp1), 1, ap::vlen(tp1,tp2), v);
164 v = y(i+1-i1);
165 ap::vadd(&t(tp1), 1, &x(tp1), 1, ap::vlen(tp1,tp2), v);
166 ap::vmul(&t(tp1), 1, ap::vlen(tp1,tp2), alpha);
167 ap::vadd(&a(i, i1), 1, &t(tp1), 1, ap::vlen(i1,i));
168 }
169 }
170}
171
172
173

Callers 1

smatrixtdFunction · 0.85

Calls 3

vmoveFunction · 0.85
vaddFunction · 0.85
vmulFunction · 0.85

Tested by

no test coverage detected