| 606 | |
| 607 | #ifdef HAVE_RINGS |
| 608 | nforder *onestep(nforder *o, number p, coeffs c) { |
| 609 | // Berechne F_p-Basis von I_p/pI_p |
| 610 | bigintmat *basis; |
| 611 | basis = radicalmodpbase(o, p, c); |
| 612 | |
| 613 | |
| 614 | // Bestimme Basis vom Ring der Multiplikatoren (speicher diese in basis), und Nenner davon (in divisor) |
| 615 | number divisor = multring(basis, o, p); |
| 616 | // Erzeuge neue Ordnung, der o zu Grunde liegt, mit Basis basis und Nenner divisor |
| 617 | if (basis->isOne() && n_IsOne(divisor, c)) { |
| 618 | delete basis; |
| 619 | n_Delete(&divisor, c); |
| 620 | return o; |
| 621 | } |
| 622 | |
| 623 | nforder *no = new nforder(o, basis, divisor, c); |
| 624 | |
| 625 | delete basis; |
| 626 | n_Delete(&divisor, c); |
| 627 | return no; |
| 628 | } |
| 629 | #endif |
| 630 | |
| 631 | #ifdef HAVE_RINGS |