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

Function computeNF

kernel/spectrum/spectrum.cc:309–455  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

307// ----------------------------------------------------------------------------
308
309void computeNF( ideal stdJ,poly hc,poly wc,spectrumPolyList *NF, const ring r )
310{
311 int carry,k;
312 multiCnt C( r->N,0 );
313 poly Z = NULL;
314
315 int well = isWell(r);
316
317 do
318 {
319 poly m = p_One(r);
320 setExp( m,C.cnt,r );
321
322 carry = FALSE;
323
324 k = isLeadMonomial( m,stdJ,r );
325
326 if( k < 0 )
327 {
328 // ---------------------------
329 // m is not a lead monomial
330 // ---------------------------
331
332 NF->insert_node( m,NULL,r );
333 }
334 else if( isMultiple( Z,m,r ) )
335 {
336 // ------------------------------------
337 // m is trivially in the ideal stdJ
338 // ------------------------------------
339
340 p_Delete( &m,r );
341 carry = TRUE;
342 }
343 else if( p_Cmp( m,hc,r ) < 0 || p_Cmp( m,wc,r ) < 0 )
344 {
345 // -------------------
346 // we do not need m
347 // -------------------
348
349 p_Delete( &m,r );
350 carry = TRUE;
351 }
352 else
353 {
354 // --------------------------
355 // compute lazy normal form
356 // --------------------------
357
358 poly multiplicant = p_MDivide( m,stdJ->m[k],r );
359 pGetCoeff( multiplicant ) = n_Init(1,r->cf);
360
361 poly nf = p_Mult_mm( p_Copy( stdJ->m[k],r ), multiplicant,r );
362
363 p_Delete( &multiplicant,r );
364
365 nf = normalFormHC( nf,hc,r );
366

Callers 1

spectrumComputeFunction · 0.85

Calls 15

isWellFunction · 0.85
p_OneFunction · 0.85
setExpFunction · 0.85
isLeadMonomialFunction · 0.85
isMultipleFunction · 0.85
p_DeleteFunction · 0.85
p_CmpFunction · 0.85
p_MDivideFunction · 0.85
n_InitFunction · 0.85
p_Mult_mmFunction · 0.85
p_CopyFunction · 0.85
normalFormHCFunction · 0.85

Tested by

no test coverage detected