public static ComplexSym valueOf(final BigFraction real, final BigFraction imaginary) { final ComplexSym c = new ComplexSym();// FACTORY.object(); c._real = real; c._imaginary = imaginary; return c; }
@Override public IExpr plus(final IExpr that) { if (that instanceof ComplexSym) { return this.add((ComplexSym) that); } if (that instanceof IInteger) { return this.add(valueOf((IInteger) that)); } if (that instanceof IFraction) { return this.add(valueOf((IFraction) that)); } return IComplex.super.plus(that); }
@Override public IExpr times(final IExpr that) { if (that instanceof ComplexSym) { return multiply((ComplexSym) that); } if (that instanceof IInteger) { return this.multiply(valueOf((IInteger) that)); } if (that instanceof IFraction) { return this.multiply(valueOf((IFraction) that)); } return IComplex.super.times(that); }
/** * Create a symbolic complex number * * @param re * @param im * @return */ public static IComplex complex(final IFraction re, final IFraction im) { return ComplexSym.valueOf(re, im); }
@Override public IExpr plus(final IExpr that) { if (isZero()) { return that; } if (that instanceof IInteger) { return this.add((IInteger) that); } if (that instanceof IFraction) { return AbstractFractionSym.valueOf(this).add((IFraction) that); } if (that instanceof ComplexSym) { return ((ComplexSym) that).add(ComplexSym.valueOf(this)).normalize(); } return IInteger.super.plus(that); }
/** {@inheritDoc} */ @Override public IExpr evaluate(EvalEngine engine) { if (engine.isNumericMode()) { return numericNumber(); } final INumber cTemp = normalize(); return (cTemp == this) ? F.NIL : cTemp; }
/** {@inheritDoc} */ @Override public IExpr inc() { return add(ONE); }
@Override public IExpr times(final IExpr that) { if (that instanceof ComplexSym) { return multiply((ComplexSym) that); } return super.times(that); }
/** {@inheritDoc} */ @Override public IExpr evaluate(EvalEngine engine) { if (engine.isNumericMode()) { return F.complexNum(this); } final INumber cTemp = normalize(); if (cTemp == this) { return null; } return cTemp; }
@Override public IExpr complexArg() { IRational x = getRealPart(); IRational y = getImaginaryPart(); int xi = x.compareTo(F.C0); int yi = y.compareTo(F.C0);
@Override public boolean isNegativeImaginaryUnit() { return equals(F.CNI); }
@Override public boolean equals(final Object obj) { if (obj instanceof ComplexSym) { if (hashCode() != obj.hashCode()) { return false; } if (this == obj) { return true; } return fReal.equals(((ComplexSym) obj).fReal) && fImaginary.equals(((ComplexSym) obj).fImaginary); } return false; }
@Override public ApcomplexNum apcomplexNumValue(long precision) { return ApcomplexNum.valueOf(apcomplexValue(precision)); }
/** * Create a symbolic complex number * * @param re * @param im * @return */ public static IComplex complex(final long real_numerator, final long real_denominator, final long imag_numerator, final long imag_denominator) { return ComplexSym.valueOf(real_numerator, real_denominator, imag_numerator, imag_denominator); }
/** * @param that * @return */ @Override public IExpr plus(final IExpr that) { if (that instanceof IFraction) { return this.add((IFraction) that).normalize(); } if (that instanceof IntegerSym) { return this.add(valueOf(((IntegerSym) that).fIntValue)).normalize(); } if (that instanceof BigIntegerSym) { return this.add(valueOf(((BigIntegerSym) that).fBigIntValue)).normalize(); } if (that instanceof ComplexSym) { return ((ComplexSym) that).add(ComplexSym.valueOf(this)).normalize(); } return IFraction.super.plus(that); }
/** {@inheritDoc} */ @Override public IExpr dec() { return add(MINUS_ONE); }
@Override public boolean isImaginaryUnit() { return equals(F.CI); }
/** * Create a symbolic complex number * * @param re * @param im * @return */ public static IComplex complex(final IRational re, final IRational im) { return ComplexSym.valueOf(re, im); }
public static ComplexSym valueOf(final IFraction real) { final ComplexSym c = new ComplexSym(); c.fReal = real; c.fImaginary = F.C0; return c; }