package jscl.math.function;
import jscl.AngleUnit;
import jscl.math.Generic;
import jscl.math.Variable;
import jscl.mathml.MathML;
import javax.annotation.Nonnull;
/**
* User: serso
* Date: 11/12/11
* Time: 4:16 PM
*/
public class Deg extends Algebraic {
public Deg(Generic generic) {
super("deg", new Generic[]{generic});
}
@Override
public Root rootValue() throws NotRootException {
throw new UnsupportedOperationException("Root for deg() is not supported!");
}
@Override
void bodyToMathML(MathML element, boolean fenced) {
final MathML child = element.element("deg");
parameters[0].toMathML(child, null);
element.appendChild(child);
}
@Override
public Generic selfExpand() {
return expressionValue();
}
@Override
public Generic selfElementary() {
return selfExpand();
}
@Override
public Generic selfSimplify() {
return selfExpand();
}
@Override
public Generic selfNumeric() {
return AngleUnit.rad.transform(AngleUnit.deg, parameters[0]);
}
@Override
public Generic derivative(int n) {
throw new UnsupportedOperationException("Derivative for deg() is not supported!");
}
@Nonnull
@Override
public Variable newInstance() {
return new Deg(null);
}
}