/** * ComplexAlgebraicNumber magnitude. * * @return |this| as complex rational number. */ public Complex<BigRational> magnitude() { try { Rectangle<C> v = ring.engine.invariantMagnitudeRectangle( ring.root, ring.algebraic.modul, number.val, ring.getEps()); ring.setRoot(v); // System.out.println("new v = " + v); Complex<C> ev = ring.engine.complexRectangleMagnitude( v, ring.algebraic.modul, number.val); // , ring.eps); // C re = ev.getRe(); // if ( (Object) re instanceof Rational) { // true by type parameter BigRational er = ev.getRe().getRational(); BigRational ei = ev.getIm().getRational(); ComplexRing<BigRational> cr = new ComplexRing<BigRational>(er.factory()); return new Complex<BigRational>(cr, er, ei); // } else { // throw new RuntimeException("Rational expected, but was " + ev.getClass()); // } } catch (InvalidBoundaryException e) { // should not happen e.printStackTrace(); throw new RuntimeException(e); } }