MCPcopy Create free account
hub / github.com/Singular/Singular / nihilate

Method nihilate

kernel/fglm/fglmvec.cc:217–259  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

215}
216
217void
218 fglmVector::nihilate (const number fac1, const number fac2,
219 const fglmVector v)
220{
221 int i;
222 int vsize = v.size ();
223 number term1, term2;
224 fglmASSERT (vsize <= rep->size (), "v has to be smaller or equal");
225 if(rep->isUnique ())
226 {
227 for(i = vsize; i > 0; i--)
228 {
229 term1 = nMult (fac1, rep->getconstelem (i));
230 term2 = nMult (fac2, v.rep->getconstelem (i));
231 rep->setelem (i, nSub (term1, term2));
232 nDelete (&term1);
233 nDelete (&term2);
234 }
235 for(i = rep->size (); i > vsize; i--)
236 {
237 rep->setelem (i, nMult (fac1, rep->getconstelem (i)));
238 }
239 }
240 else
241 {
242 number *newelems;
243 newelems = (number *) omAlloc (rep->size () * sizeof (number));
244 for(i = vsize; i > 0; i--)
245 {
246 term1 = nMult (fac1, rep->getconstelem (i));
247 term2 = nMult (fac2, v.rep->getconstelem (i));
248 newelems[i - 1] = nSub (term1, term2);
249 nDelete (&term1);
250 nDelete (&term2);
251 }
252 for(i = rep->size (); i > vsize; i--)
253 {
254 newelems[i - 1] = nMult (fac1, rep->getconstelem (i));
255 }
256 rep->deleteObject ();
257 rep = new fglmVectorRep (rep->size (), newelems);
258 }
259}
260
261fglmVector & fglmVector::operator = (const fglmVector & v)
262{

Callers 2

reduceMethod · 0.80
gaussreduceMethod · 0.80

Calls 5

isUniqueMethod · 0.80
deleteObjectMethod · 0.80
sizeMethod · 0.45
getconstelemMethod · 0.45
setelemMethod · 0.45

Tested by

no test coverage detected