package org.matheclipse.core.eval.util;

import org.matheclipse.core.interfaces.IExpr;

/**
 * Evaluates to one of two given values. Useful for table generation.
 * 
 * @param 
 */
public class IndexFunctionDiagonal implements IIndexFunction {
	final IExpr[] fValues;

	public IndexFunctionDiagonal(final IExpr[] values) {
		fValues = values;
	}

	public IExpr evaluate(final int[] index) {
		if (isMatched(index)) {
			return fValues[1];
		}
		return fValues[0];
	}

	protected boolean isMatched(final int[] index) {
		for (int i = 1; i < index.length; i++) {
			if (index[i] != index[i - 1]) {
				return false;
			}
		}
		return true;
	}
}

 

Ads help maintain this website.