/** * Conjugate this (complex-) number. * * @return the conjugate complex number */ default IExpr conjugate() { return F.eval(F.Conjugate(this)); }
@Override protected IExpr transform(final IExpr expr) { if (expr.isSignedNumber()) { return expr; } if (expr.isComplex()) { return ((IComplex) expr).conjugate(); } if (expr instanceof IComplexNum) { return ((IComplexNum) expr).conjugate(); } return F.Conjugate(expr); }
@Override protected boolean compareElements(IExpr expr1, IExpr expr2, EvalEngine engine) { if (expr1.isReal() && expr2.isReal()) { if (expr1.equals(expr2)) { return true; } return false; } if (expr1.isNumber() && expr2.isNumber()) { if (expr1.conjugate().equals(expr2)) { return true; } return false; } return F.Equal.ofQ(engine, F.Conjugate(expr1), expr2); }
@Override protected boolean compareElements(IExpr expr1, IExpr expr2, EvalEngine engine) { if (expr1.isNumber() && expr2.isNumber()) { if (expr1.conjugate().negate().equals(expr2)) { return true; } return false; } return F.Equal.ofQ(engine, F.Times(F.CN1, F.Conjugate(expr1)), expr2); }
public static IExpr vectorCovarianceSymbolic(final IAST arg1, final IAST arg2, int arg1Length) { if (arg1Length == 2) { return F.Times(F.C1D2, F.Subtract(arg1.arg1(), arg1.arg2()), F.Subtract(F.Conjugate(arg2.arg1()), F.Conjugate(arg2.arg2()))); } IAST num1 = arg1.apply(F.Plus); IExpr factor = F.integer(-1 * (arg1.size() - 2)); IASTAppendable v1 = F.PlusAlloc(arg1.size()); v1.appendArgs(arg1.size(), i -> F.Times(F.CN1, num1.setAtCopy(i, F.Times(factor, arg1.get(i))), F.Conjugate(arg2.get(i)))); return F.Divide(v1, F.integer(((long) arg1.argSize()) * (((long) arg1.size()) - 2L))); }
IExpr base = arg1.base(); if (base.isPositiveResult()) { return F.Power(base, F.Conjugate(arg1.exponent())); return ((IAST) arg1).mapThread((IASTMutable) F.Conjugate(F.Null), 1); result.append(F.Conjugate(clone.arg1())); return result; result.append(F.Conjugate(clone)); return result; return arg1.first(); } else if (arg1.isAST(F.Zeta, 2)) { return F.Zeta(F.Conjugate(arg1.first())); } else if (arg1.isAST(F.Zeta, 3) && arg1.first().isReal() && arg1.second().isReal()) { return F.Zeta(F.Conjugate(arg1.first()), F.Conjugate(arg1.second()));
/** * Conjugate numbers and special objects like <code>Infinity</code> and <code>Indeterminate</code>. * * @param arg1 * @return <code>F.NIL</code> if the evaluation wasn't possible */ private IExpr conjugate(IExpr arg1) { if (arg1.isNumber()) { return ((INumber) arg1).conjugate(); } if (arg1.isRealResult()) { return arg1; } if (arg1.isDirectedInfinity()) { IAST directedInfininty = (IAST) arg1; if (directedInfininty.isComplexInfinity()) { return F.CComplexInfinity; } if (directedInfininty.isAST1()) { if (directedInfininty.isInfinity()) { return F.CInfinity; } IExpr conjug = F.eval(F.Conjugate(directedInfininty.arg1())); return F.Times(conjug, F.CInfinity); } } return F.NIL; }
F.List(F.List(F.Times(F.Power(x, 3), F.Power(F.Abs(x), -6), F.Power(F.Conjugate(x), 3)), F.C0, F.C0), F.List(F.C0, F.Cos(theta), F.Times(F.CN1, F.Sqr(x), F.Power(F.Abs(x), -3), F.Conjugate(x), F.Sin(theta))), F.List(F.C0, F.Times(x, F.Power(F.Abs(x), -3), F.Sqr(F.Conjugate(x)), F.Sin(theta)), F.Times(F.Power(x, 3), F.Power(F.Abs(x), -6), F.Power(F.Conjugate(x), 3), F.Times(F.Sqr(y), F.Power(F.Abs(y), -3), F.Conjugate(y), F.Sin(theta))), F.List(F.C0, F.Times(F.Power(y, 3), F.Power(F.Abs(y), -6), F.Power(F.Conjugate(y), 3)), F.C0), F.List(F.Times(F.CN1, y, F.Power(F.Abs(y), -3), F.Sqr(F.Conjugate(y)), F.Sin(theta)), F.C0, F.Times(F.Power(y, 3), F.Power(F.Abs(y), -6), F.Power(F.Conjugate(y), 3), F.List(F.Times(F.Power(F.Abs(z), -1), F.Conjugate(z), F.Sin(theta)), F.Times(z, F.Power(F.Abs(z), -2), F.Conjugate(z), F.Cos(theta)), F.C0), F.List(F.C0, F.C0, F.Times(z, F.Power(F.Abs(z), -2), F.Conjugate(z)))); // $$;
if (z.isAST(Conjugate, 2)) { return Conjugate(F.Gamma(z.arg1()));