package org.matheclipse.core.eval.interfaces;

import org.matheclipse.core.eval.exception.Validate;
import org.matheclipse.core.expression.ComplexNum;
import org.matheclipse.core.expression.Num;
import org.matheclipse.core.interfaces.IAST;
import org.matheclipse.core.interfaces.IExpr;

/**
 * Base class for functions with 1 argument (i.e. Sin, Cos...) with Attributes
 * Listable and NumericFunction
 * 
 */
public abstract class AbstractTrigArg1 extends AbstractFunctionEvaluator {

	@Override
	public IExpr evaluate(final IAST ast) {
		Validate.checkSize(ast, 2);

		return evaluateArg1(ast.get(1));
	}

	public IExpr evaluateArg1(final IExpr arg1) {
		return null;
	}

	@Override
	public IExpr numericEval(final IAST ast) {
		Validate.checkSize(ast, 2);
		if (ast.get(1) instanceof Num) {
			return numericEvalD1((Num) ast.get(1));
		}
		if (ast.get(1) instanceof ComplexNum) {
			return numericEvalDC1((ComplexNum) ast.get(1));
		}
		return numericEvalArg1(ast.get(1));
	}

	/**
	 * Evaluate this function for one double argument
	 * 
	 * @param arg1
	 *          a double number
	 * 
	 * @return
	 */
	public IExpr numericEvalD1(final Num arg1) {
		return null;
	}

	/**
	 * Evaluate this function for one double complex argument
	 * 
	 * @param arg1
	 *          a double complex number
	 * 
	 * @return
	 */
	public IExpr numericEvalDC1(final ComplexNum arg1) {
		return null;
	}

	public IExpr numericEvalArg1(final IExpr arg1) {
		return null;
	}
}

 

Ads help maintain this website.