package beast.core; /** * Allows a BEASTObject, in particular a StateNode or CalculationNode to present itself as * an array of values. This is particular handy for generic calculations on a BEASTObject, * like calculation of ESS, posterior of a distribution or in the SpreadSheet interface * where the possibilities of calculations are limitless. * * */ public interface Function { /** * @return dimension of the Function * */ public int getDimension(); /** * @return main value. For a 1 dimensional Function, this is the only * value, but for a Tree this can be the root height, while the individual * values obtained from getValue(dim) return the node heights. */ public double getArrayValue(); /** * @param dim requested dimension * @return dim'th value (if any) */ public double getArrayValue(int dim); /** * @return all values as a double[] */ default double[] getDoubleValues() { double[] values = new double[getDimension()]; for (int i = 0; i < values.length; i++) { values[i] = getArrayValue(i); } return values; } }