package water.rapids.ast.prims.reducers;
import water.fvec.Frame;
import water.fvec.Vec;
import water.rapids.Env;
import water.rapids.vals.ValNum;
import water.rapids.ast.AstRoot;
/**
* Optimization for the RollupStats: use them directly
*/
public abstract class AstNaRollupOp extends AstRollupOp {
@Override
public ValNum apply(Env env, Env.StackHelp stk, AstRoot asts[]) {
Frame fr = stk.track(asts[1].exec(env)).getFrame();
Vec[] vecs = fr.vecs();
if (vecs.length == 0) return new ValNum(Double.NaN);
double d = rup(vecs[0]);
for (int i = 1; i < vecs.length; i++)
d = op(d, rup(vecs[i]));
return new ValNum(d);
}
}