jscl.math.TechnicalVariable Maven / Gradle / Ivy
package jscl.math;
import jscl.math.function.Constant;
import javax.annotation.Nonnull;
import java.util.Collections;
import java.util.Set;
public class TechnicalVariable extends Variable {
public int subscript[];
public TechnicalVariable(String name) {
this(name, new int[0]);
}
public TechnicalVariable(String name, int subscript[]) {
super(name);
this.subscript = subscript;
}
public Generic antiDerivative(Variable variable) throws NotIntegrableException {
throw new NotIntegrableException(this);
}
@Nonnull
public Generic derivative(Variable variable) {
if (isIdentity(variable)) return JsclInteger.valueOf(1);
else return JsclInteger.valueOf(0);
}
public Generic substitute(Variable variable, Generic generic) {
if (isIdentity(variable)) return generic;
else return expressionValue();
}
public Generic expand() {
return expressionValue();
}
public Generic factorize() {
return expressionValue();
}
public Generic elementary() {
return expressionValue();
}
public Generic simplify() {
return expressionValue();
}
public Generic numeric() {
throw new ArithmeticException("Could not evaluate numeric value for technical variable!");
}
public boolean isConstant(Variable variable) {
return !isIdentity(variable);
}
public int compareTo(Variable variable) {
if (this == variable) return 0;
int c = comparator.compare(this, variable);
if (c < 0) return -1;
else if (c > 0) return 1;
else {
TechnicalVariable v = (TechnicalVariable) variable;
c = name.compareTo(v.name);
if (c < 0) return -1;
else if (c > 0) return 1;
else return compareSubscript(subscript, v.subscript);
}
}
public int compareSubscript(int c1[], int c2[]) {
if (c1.length < c2.length) return -1;
else if (c1.length > c2.length) return 1;
for (int i = 0; i < c1.length; i++) {
if (c1[i] < c2[i]) return -1;
else if (c1[i] > c2[i]) return 1;
}
return 0;
}
public String toString() {
StringBuffer buffer = new StringBuffer();
buffer.append(name);
if (subscript.length == 1) buffer.append(subscript[0]);
else for (int i = 0; i < subscript.length; i++) buffer.append("[").append(subscript[i]).append("]");
return buffer.toString();
}
public String toJava() {
return null;
}
public String toMathML(Object data) {
return null;
}
@Nonnull
public Variable newInstance() {
return new TechnicalVariable(name);
}
@Nonnull
@Override
public Set extends Constant> getConstants() {
// todo serso: check
return Collections.emptySet();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy