Changeset dfa849 in git
- Timestamp:
- Aug 15, 2013, 11:52:09 AM (10 years ago)
- Branches:
- (u'jengelh-datetime', 'ceac47cbc86fe4a15902392bdbb9bd2ae0ea02c6')(u'spielwiese', 'f875bbaccd0831e36aaed09ff6adeb3eb45aeb94')
- Children:
- f36755e8e4a754eb8a49487d0e998ed26a2b2c78
- Parents:
- 5c6ceaf5ab0029bc759f3ded4a97613e94d728b0
- git-author:
- Martin Lee <martinlee84@web.de>2013-08-15 11:52:09+02:00
- git-committer:
- Martin Lee <martinlee84@web.de>2013-08-30 13:48:32+02:00
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
factory/facAbsBiFact.cc
r5c6cea rdfa849 318 318 bool yValid= !(Gpy.inCoeffDomain() || smallestFactorEvaly.inCoeffDomain() || 319 319 !gcd (Gpy, smallestFactorEvaly).inCoeffDomain()); 320 if (!xValid &&!yValid)320 if (!xValid || !yValid) 321 321 { 322 322 rec= true; … … 329 329 CanonicalForm mipo; 330 330 331 int loop, i; 332 if (xValid && yValid) 333 { 334 loop= 3; 335 i=1; 336 } 337 else if (xValid) 338 { 339 loop= 3; 340 i=2; 341 } 342 else 343 { 344 loop= 2; 345 i=1; 346 } 347 348 CFArray mipos= CFArray (loop-i); 349 for (; i < loop; i++) 331 CFArray mipos= CFArray (2); 332 CFFList mipoFactors; 333 for (int i= 1; i < 3; i++) 350 334 { 351 335 CanonicalForm Fi= F(eval[i-1],i); … … 424 408 if (i == 2) 425 409 { 426 NTLFpi= convertFacCF2NTLzzpX (smallestFactorEvalx/lc(smallestFactorEvalx));427 NTLGpi= 410 NTLFpi=convertFacCF2NTLzzpX (smallestFactorEvalx/lc(smallestFactorEvalx)); 411 NTLGpi=convertFacCF2NTLzzpX (Gpx/lc (Gpx)); 428 412 } 429 413 else 430 414 { 431 NTLFpi= convertFacCF2NTLzzpX (smallestFactorEvaly/lc(smallestFactorEvaly));432 NTLGpi= 415 NTLFpi=convertFacCF2NTLzzpX (smallestFactorEvaly/lc(smallestFactorEvaly)); 416 NTLGpi=convertFacCF2NTLzzpX (Gpy/lc (Gpy)); 433 417 } 434 418 vec_zz_pX modFactors; … … 475 459 mipo += M (j,1)*power (x,s-j); 476 460 477 CFFList mipoFactors= factorize (mipo); 478 mipoFactors.removeFirst(); 461 mipoFactors= factorize (mipo); 462 if (mipoFactors.getFirst().factor().inCoeffDomain()) 463 mipoFactors.removeFirst(); 479 464 480 465 #ifdef HAVE_FLINT … … 490 475 491 476 if (mipoFactors.length() > 1 || 492 (mipoFactors.length() == 1 && mipoFactors.getFirst().exp() > 1)) 493 { 494 if (i+1 >= loop && ((loop-i == 1) || (loop-i==2 && mipos[0].isZero()))) 495 { 477 (mipoFactors.length() == 1 && mipoFactors.getFirst().exp() > 1) || 478 mipo.inCoeffDomain()) 479 { 496 480 rec=true; 497 481 goto differentevalpoint; 498 }499 482 } 500 483 else 501 mipos[loop-i-1]= mipo; 484 mipos[i-1]= mipo; 485 } 486 487 if (degree (mipos[0]) != degree (mipos[1])) 488 { 489 rec=true; 490 goto differentevalpoint; 502 491 } 503 492 504 493 On (SW_RATIONAL); 505 if (xValid && yValid && !mipos[0].isZero() && !mipos[1].isZero()) 506 { 507 if (maxNorm (mipos[0]) < maxNorm (mipos[1])) 508 alpha= rootOf (mipos[0]); 509 else 510 alpha= rootOf (mipos[1]); 511 } 512 else if (xValid && yValid) 513 { 514 if (mipos[0].isZero()) 515 alpha= rootOf (mipos[1]); 516 else 517 alpha= rootOf (mipos[0]); 518 } 494 if (maxNorm (mipos[0]) < maxNorm (mipos[1])) 495 alpha= rootOf (mipos[0]); 519 496 else 520 alpha= rootOf (mipo); 497 alpha= rootOf (mipos[1]); 498 499 int wrongMipo= 0; 500 501 Variable beta; 502 if (maxNorm (mipos[0]) < maxNorm (mipos[1])) 503 { 504 mipoFactors= factorize (mipos[1], alpha); 505 if (mipoFactors.getFirst().factor().inCoeffDomain()) 506 mipoFactors.removeFirst(); 507 for (iter= mipoFactors; iter.hasItem(); iter++) 508 { 509 if (degree (iter.getItem().factor()) > 1) 510 wrongMipo++; 511 } 512 if (wrongMipo == mipoFactors.length()) 513 { 514 rec=true; 515 goto differentevalpoint; 516 } 517 wrongMipo= 0; 518 beta= rootOf (mipos[1]); 519 mipoFactors= factorize (mipos[0], beta); 520 if (mipoFactors.getFirst().factor().inCoeffDomain()) 521 mipoFactors.removeFirst(); 522 for (iter= mipoFactors; iter.hasItem(); iter++) 523 { 524 if (degree (iter.getItem().factor()) > 1) 525 wrongMipo++; 526 } 527 if (wrongMipo == mipoFactors.length()) 528 { 529 rec=true; 530 goto differentevalpoint; 531 } 532 } 533 else 534 { 535 mipoFactors= factorize (mipos[0], alpha); 536 if (mipoFactors.getFirst().factor().inCoeffDomain()) 537 mipoFactors.removeFirst(); 538 for (iter= mipoFactors; iter.hasItem(); iter++) 539 { 540 if (degree (iter.getItem().factor()) > 1) 541 wrongMipo++; 542 } 543 if (wrongMipo == mipoFactors.length()) 544 { 545 rec=true; 546 goto differentevalpoint; 547 } 548 wrongMipo= 0; 549 beta= rootOf (mipos[0]); 550 mipoFactors= factorize (mipos[1], beta); 551 if (mipoFactors.getFirst().factor().inCoeffDomain()) 552 mipoFactors.removeFirst(); 553 for (iter= mipoFactors; iter.hasItem(); iter++) 554 { 555 if (degree (iter.getItem().factor()) > 1) 556 wrongMipo++; 557 } 558 if (wrongMipo == mipoFactors.length()) 559 { 560 rec=true; 561 goto differentevalpoint; 562 } 563 } 564 521 565 522 566 CanonicalForm F1; 523 CFFList QaF1Factors; 524 int wrongMipo= 0; 525 if (xValid && yValid) 526 { 527 if (degree (F,1) > minTdeg) 528 F1= F (eval[1], 2); 529 else 530 F1= F (eval[0], 1); 531 } 532 else if (xValid) 567 if (degree (F,1) > minTdeg) 533 568 F1= F (eval[1], 2); 534 569 else 535 570 F1= F (eval[0], 1); 536 571 572 CFFList QaF1Factors; 537 573 bool swap= false; 538 574 if (F1.level() == 2) … … 543 579 } 544 580 581 wrongMipo= 0; 545 582 QaF1Factors= factorize (F1, alpha); 546 583 if (QaF1Factors.getFirst().factor().inCoeffDomain()) … … 554 591 if (wrongMipo == QaF1Factors.length()) 555 592 { 556 if (xValid && yValid && !mipos[0].isZero() && !mipos[1].isZero()) 557 { 558 if (maxNorm (mipos[0]) < maxNorm (mipos[1])) //try the other minpoly 559 alpha= rootOf (mipos[1]); 560 else 561 alpha= rootOf (mipos[0]); 562 } 563 else 564 { 565 rec= true; 566 F= bufF; 567 goto differentevalpoint; 568 } 569 570 wrongMipo= 0; 571 QaF1Factors= factorize (F1, alpha); 572 if (QaF1Factors.getFirst().factor().inCoeffDomain()) 573 QaF1Factors.removeFirst(); 574 for (iter= QaF1Factors; iter.hasItem(); iter++) 575 { 576 if (degree (iter.getItem().factor()) > minTdeg) 577 wrongMipo++; 578 } 579 if (wrongMipo == QaF1Factors.length()) 580 { 581 rec= true; 582 F= bufF; 583 goto differentevalpoint; 584 } 593 rec= true; 594 F= bufF; 595 goto differentevalpoint; 585 596 } 586 597
Note: See TracChangeset
for help on using the changeset viewer.