![JAR search and dependency download from the Maven repository](/logo.png)
jscl.math.function.Conjugate Maven / Gradle / Ivy
package jscl.math.function;
import jscl.math.*;
import jscl.mathml.MathML;
import javax.annotation.Nonnull;
import static jscl.math.function.Constants.Generic.I;
public class Conjugate extends Function {
public Conjugate(Generic generic) {
super("conjugate", new Generic[]{generic});
}
public Generic antiDerivative(int n) throws NotIntegrableException {
return Constants.Generic.HALF.multiply(selfExpand().pow(2));
}
public Generic derivative(int n) {
return JsclInteger.valueOf(1);
}
public Generic selfExpand() {
try {
return parameters[0].integerValue();
} catch (NotIntegerException e) {
}
if (parameters[0] instanceof Matrix) {
return ((Matrix) parameters[0]).conjugate();
} else if (parameters[0] instanceof JsclVector) {
return ((JsclVector) parameters[0]).conjugate();
}
return expressionValue();
}
public Generic selfElementary() {
try {
return parameters[0].integerValue();
} catch (NotIntegerException e) {
}
return expressionValue();
}
public Generic selfSimplify() {
try {
return parameters[0].integerValue();
} catch (NotIntegerException e) {
}
if (parameters[0].signum() < 0) {
return new Conjugate(parameters[0].negate()).selfSimplify().negate();
} else if (parameters[0].compareTo(I) == 0) {
return I.negate();
}
try {
Variable v = parameters[0].variableValue();
if (v instanceof Conjugate) {
Generic g[] = ((Conjugate) v).getParameters();
return g[0];
} else if (v instanceof Exp) {
Generic g[] = ((Exp) v).getParameters();
return new Exp(new Conjugate(g[0]).selfSimplify()).selfSimplify();
} else if (v instanceof Ln) {
Generic g[] = ((Ln) v).getParameters();
return new Ln(new Conjugate(g[0]).selfSimplify()).selfSimplify();
} else if (v instanceof Lg) {
Generic g[] = ((Lg) v).getParameters();
return new Lg(new Conjugate(g[0]).selfSimplify()).selfSimplify();
}
} catch (NotVariableException e) {
Generic a[] = parameters[0].sumValue();
if (a.length > 1) {
Generic s = JsclInteger.valueOf(0);
for (int i = 0; i < a.length; i++) {
s = s.add(new Conjugate(a[i]).selfSimplify());
}
return s;
} else {
Generic p[] = a[0].productValue();
Generic s = JsclInteger.valueOf(1);
for (int i = 0; i < p.length; i++) {
Power o = p[i].powerValue();
s = s.multiply(new Conjugate(o.value()).selfSimplify().pow(o.exponent()));
}
return s;
}
}
Generic n[] = Fraction.separateCoefficient(parameters[0]);
if (n[0].compareTo(JsclInteger.valueOf(1)) == 0 && n[1].compareTo(JsclInteger.valueOf(1)) == 0) ;
else return new Conjugate(n[2]).selfSimplify().multiply(
new Fraction(n[0], n[1]).selfSimplify()
);
return expressionValue();
}
public Generic selfNumeric() {
return ((NumericWrapper) parameters[0]).conjugate();
}
public String toJava() {
StringBuffer buffer = new StringBuffer();
buffer.append(parameters[0].toJava());
buffer.append(".conjugate()");
return buffer.toString();
}
public void toMathML(MathML element, Object data) {
int exponent = data instanceof Integer ? ((Integer) data).intValue() : 1;
if (exponent == 1) bodyToMathML(element);
else {
MathML e1 = element.element("msup");
MathML e2 = element.element("mfenced");
bodyToMathML(e2);
e1.appendChild(e2);
e2 = element.element("mn");
e2.appendChild(element.text(String.valueOf(exponent)));
e1.appendChild(e2);
element.appendChild(e1);
}
}
void bodyToMathML(MathML element) {
MathML e1 = element.element("mover");
parameters[0].toMathML(e1, null);
MathML e2 = element.element("mo");
e2.appendChild(element.text("_"));
e1.appendChild(e2);
element.appendChild(e1);
}
@Nonnull
public Variable newInstance() {
return new Conjugate(null);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy