Changeset ed9927 in git
- Timestamp:
- Jan 11, 2008, 12:09:04 PM (15 years ago)
- Branches:
- (u'jengelh-datetime', 'ceac47cbc86fe4a15902392bdbb9bd2ae0ea02c6')(u'spielwiese', '0604212ebb110535022efecad887940825b97c3f')
- Children:
- b6e288f4c0fa89ce14c94afd004ec80ab76e77db
- Parents:
- 9c6f160523432eef41813f0d4f8f9a8aafb16b12
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
factory/cf_gcd.cc
r9c6f16 red9927 1 1 /* emacs edit mode for this file is -*- C++ -*- */ 2 /* $Id: cf_gcd.cc,v 1. 59 2008-01-07 13:33:10Singular Exp $ */2 /* $Id: cf_gcd.cc,v 1.60 2008-01-11 11:09:04 Singular Exp $ */ 3 3 4 4 #include <config.h> … … 475 475 int mp, cc, p1, pe; 476 476 mp = f.level()+1; 477 bool fc_isUnivariate=f.isUnivariate(); 478 bool gc_isUnivariate=g.isUnivariate(); 479 bool fc_and_gc_Univariate=fc_isUnivariate && gc_isUnivariate; 477 480 #if 1 478 481 if (( getCharacteristic() == 0 ) … … 480 483 && (g.level() >4) 481 484 && isOn( SW_USE_CHINREM_GCD) 482 && (!f.isUnivariate()) 483 && (!g.isUnivariate()) 485 && (!fc_and_gc_Univariate) 484 486 && (isPurePoly_m(f)) 485 487 && (isPurePoly_m(g)) … … 489 491 } 490 492 #endif 491 bool fc_isUnivariate=f.isUnivariate(); 492 bool fc_and_gc_Univariate=fc_isUnivariate && g.isUnivariate(); 493 cf_prepgcd( f, g, cc, p1, pe); 494 if ( cc != 0 ) 495 { 496 if ( cc > 0 ) 497 { 498 fc = replacevar( f, Variable(cc), Variable(mp) ); 499 gc = g; 500 } 501 else 502 { 503 fc = replacevar( g, Variable(-cc), Variable(mp) ); 504 gc = f; 505 } 506 return cf_content( fc, gc ); 507 } 508 // now each appearing variable is in f and g 509 fc = f; 510 gc = g; 511 if( gcd_avoid_mtaildegree ( fc, gc, d1 ) ) 512 return d1; 493 513 if ( getCharacteristic() != 0 ) 494 514 { 495 515 if (isOn( SW_USE_EZGCD_P ) && (!fc_and_gc_Univariate)) 496 516 { 497 return fin_ezgcd( f, g ); 517 if ( pe == 1 ) 518 fc = fin_ezgcd( fc, gc ); 519 else if ( pe > 0 )// no variable at position 1 520 { 521 fc = replacevar( fc, Variable(pe), Variable(1) ); 522 gc = replacevar( gc, Variable(pe), Variable(1) ); 523 fc = replacevar( fin_ezgcd( fc, gc ), Variable(1), Variable(pe) ); 524 } 525 else 526 { 527 pe = -pe; 528 fc = swapvar( fc, Variable(pe), Variable(1) ); 529 gc = swapvar( gc, Variable(pe), Variable(1) ); 530 fc = swapvar( fin_ezgcd( fc, gc ), Variable(1), Variable(pe) ); 531 } 498 532 } 499 533 else if (isOn(SW_USE_GCD_P)) 500 534 { 501 return newGCD(f,g); 502 } 503 else 504 { 505 cf_prepgcd( f, g, cc, p1, pe); 506 if ( cc != 0 ) 507 { 508 if ( cc > 0 ) 509 { 510 fc = replacevar( f, Variable(cc), Variable(mp) ); 511 gc = g; 512 } 513 else 514 { 515 fc = replacevar( g, Variable(-cc), Variable(mp) ); 516 gc = f; 517 } 518 return cf_content( fc, gc ); 519 } 520 // now each appearing variable is in f and g 521 fc = f; 522 gc = g; 523 if( gcd_avoid_mtaildegree ( fc, gc, d1 ) ) 524 return d1; 535 fc=newGCD(fc,gc); 536 } 537 else if ( p1 == fc.level() ) 538 fc = gcd_poly_p( fc, gc ); 539 else 540 { 541 fc = replacevar( fc, Variable(p1), Variable(mp) ); 542 gc = replacevar( gc, Variable(p1), Variable(mp) ); 543 fc = replacevar( gcd_poly_p( fc, gc ), Variable(mp), Variable(p1) ); 544 } 545 } 546 else if (!fc_and_gc_Univariate) 547 { 548 if ( 549 isOn(SW_USE_CHINREM_GCD) 550 && (gc.level() >5) 551 && (fc.level() >5) 552 && (isPurePoly_m(fc)) && (isPurePoly_m(gc)) 553 ) 554 { 555 #if 0 525 556 if ( p1 == fc.level() ) 526 fc = gcd_poly_p( fc, gc );557 fc = chinrem_gcd( fc, gc ); 527 558 else 528 559 { 529 560 fc = replacevar( fc, Variable(p1), Variable(mp) ); 530 561 gc = replacevar( gc, Variable(p1), Variable(mp) ); 531 fc = replacevar( gcd_poly_p( fc, gc ), Variable(mp), Variable(p1) ); 532 } 533 } 534 } 535 else if (!fc_and_gc_Univariate) 536 { 537 if ( 538 isOn(SW_USE_CHINREM_GCD) 539 && (g.level() >5) 540 && (f.level() >5) 541 && (isPurePoly_m(f)) && (isPurePoly_m(g)) 542 ) 543 { 544 return chinrem_gcd( f, g); 562 fc = replacevar( chinrem_gcd( fc, gc ), Variable(mp), Variable(p1) ); 563 } 564 #else 565 fc = chinrem_gcd( fc, gc); 566 #endif 545 567 } 546 568 if ( isOn( SW_USE_EZGCD ) ) 547 569 { 548 return ezgcd( f, g ); 570 if ( pe == 1 ) 571 fc = ezgcd( fc, gc ); 572 else if ( pe > 0 )// no variable at position 1 573 { 574 fc = replacevar( fc, Variable(pe), Variable(1) ); 575 gc = replacevar( gc, Variable(pe), Variable(1) ); 576 fc = replacevar( ezgcd( fc, gc ), Variable(1), Variable(pe) ); 577 } 578 else 579 { 580 pe = -pe; 581 fc = swapvar( fc, Variable(pe), Variable(1) ); 582 gc = swapvar( gc, Variable(pe), Variable(1) ); 583 fc = swapvar( ezgcd( fc, gc ), Variable(1), Variable(pe) ); 584 } 549 585 } 550 586 else if ( 551 587 isOn(SW_USE_CHINREM_GCD) 552 && (isPurePoly_m(f )) && (isPurePoly_m(g))588 && (isPurePoly_m(fc)) && (isPurePoly_m(gc)) 553 589 ) 554 590 { 555 return chinrem_gcd( f, g); 556 } 557 else 558 { 559 cf_prepgcd( f, g, cc, p1, pe); 560 if ( cc != 0 ) 561 { 562 if ( cc > 0 ) 563 { 564 fc = replacevar( f, Variable(cc), Variable(mp) ); 565 gc = g; 566 } 567 else 568 { 569 fc = replacevar( g, Variable(-cc), Variable(mp) ); 570 gc = f; 571 } 572 return cf_content( fc, gc ); 573 } 574 // now each appearing variable is in f and g 575 fc = f; 576 gc = g; 577 if( gcd_avoid_mtaildegree ( fc, gc, d1 ) ) 578 return d1; 579 fc = gcd_poly_0( fc, gc ); 591 #if 0 592 if ( p1 == fc.level() ) 593 fc = chinrem_gcd( fc, gc ); 594 else 595 { 596 fc = replacevar( fc, Variable(p1), Variable(mp) ); 597 gc = replacevar( gc, Variable(p1), Variable(mp) ); 598 fc = replacevar( chinrem_gcd( fc, gc ), Variable(mp), Variable(p1) ); 599 } 600 #else 601 fc = chinrem_gcd( fc, gc); 602 #endif 603 } 604 else 605 { 606 fc = gcd_poly_0( fc, gc ); 580 607 } 581 608 } 582 609 else 583 610 { 584 cf_prepgcd( f, g, cc, p1, pe);585 if ( cc != 0 )586 {587 if ( cc > 0 )588 {589 fc = replacevar( f, Variable(cc), Variable(mp) );590 gc = g;591 }592 else593 {594 fc = replacevar( g, Variable(-cc), Variable(mp) );595 gc = f;596 }597 return cf_content( fc, gc );598 }599 // now each appearing variable is in f and g600 fc = f;601 gc = g;602 if( gcd_avoid_mtaildegree ( fc, gc, d1 ) )603 return d1;604 611 fc = gcd_poly_0( fc, gc ); 605 612 }
Note: See TracChangeset
for help on using the changeset viewer.