| 495 | |
| 496 | |
| 497 | InternalCF* |
| 498 | InternalPoly::divsame( InternalCF* aCoeff ) |
| 499 | { |
| 500 | if ( inExtension() && getReduce( var ) ) |
| 501 | { |
| 502 | InternalCF * dummy = aCoeff->invert(); |
| 503 | if (is_imm(dummy)) dummy=this->mulsame(dummy); |
| 504 | else dummy = dummy->mulsame( this ); |
| 505 | if ( getRefCount() <= 1 ) |
| 506 | { |
| 507 | delete this; |
| 508 | return dummy; |
| 509 | } |
| 510 | else |
| 511 | { |
| 512 | decRefCount(); |
| 513 | return dummy; |
| 514 | } |
| 515 | } |
| 516 | InternalPoly *aPoly = (InternalPoly*)aCoeff; |
| 517 | termList dummy, first, last, resultfirst = 0, resultlast = 0; |
| 518 | CanonicalForm coeff, newcoeff; |
| 519 | int exp, newexp; |
| 520 | bool singleObject; |
| 521 | |
| 522 | if ( getRefCount() <= 1 ) |
| 523 | { |
| 524 | first = firstTerm; last = lastTerm; singleObject = true; |
| 525 | } |
| 526 | else |
| 527 | { |
| 528 | first = copyTermList( firstTerm, last ); singleObject = false; |
| 529 | decRefCount(); |
| 530 | } |
| 531 | coeff = aPoly->firstTerm->coeff; |
| 532 | exp = aPoly->firstTerm->exp; |
| 533 | while (first && ( first->exp >= exp ) ) |
| 534 | { |
| 535 | newcoeff = first->coeff / coeff; |
| 536 | newexp = first->exp - exp; |
| 537 | dummy = first; |
| 538 | first = mulAddTermList( first->next, aPoly->firstTerm->next, newcoeff, newexp, last, true ); |
| 539 | delete dummy; |
| 540 | appendTermList( resultfirst, resultlast, newcoeff, newexp ); |
| 541 | } |
| 542 | freeTermList( first ); |
| 543 | if ( singleObject ) |
| 544 | { |
| 545 | if ( resultfirst && resultfirst->exp != 0 ) |
| 546 | { |
| 547 | firstTerm = resultfirst; |
| 548 | lastTerm = resultlast; |
| 549 | return this; |
| 550 | } |
| 551 | else if ( resultfirst ) |
| 552 | { |
| 553 | InternalCF * res = resultfirst->coeff.getval(); |
| 554 | delete resultfirst; |
nothing calls this directly
no test coverage detected