/** * ComplexAlgebraicNumber signum. * * @see edu.jas.structure.RingElem#signum() * @return signum(this). */ public int signum() { try { Rectangle<C> v = ring.engine.invariantRectangle(ring.root, ring.algebraic.modul, number.val); ring.setRoot(v); Complex<C> c = v.getCenter(); return c.signum(); } catch (InvalidBoundaryException e) { // should not happen e.printStackTrace(); throw new RuntimeException(e); } }
/** * 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); } }
/** * Comparison with any other object. * * @see java.lang.Object#equals(java.lang.Object) */ @Override @SuppressWarnings("unchecked") public boolean equals(Object b) { if (!(b instanceof ComplexAlgebraicNumber)) { return false; } ComplexAlgebraicNumber<C> a = null; try { a = (ComplexAlgebraicNumber<C>) b; } catch (ClassCastException e) { } if (a == null) { return false; } if (!ring.equals(a.ring)) { return false; } return number.equals(a.number); }
/** * Hash code for this ComplexAlgebraicNumber. * * @see java.lang.Object#hashCode() */ @Override public int hashCode() { return 37 * number.val.hashCode() + ring.hashCode(); }