float val = input.Pop(); output.Push(val + input.Pop());
float val = input.PopFloat(); output.PushFloat(val + input.PopFloat());
   void Init(final int N, final int W) {      Add(new SplitJoin() {         public void Init() {            SetSplitter(WEIGHTED_ROUND_ROBIN(N, N));            Add(new Filter() {                public void InitIO ()                 {                    input = new FloatChannel();                    output = new FloatChannel();                }               float weights[] = new float[W];               int curr;               public void Init() {                  for(int i=0; i<W; i++)                     weights[i] = calcWeight(i, N, W);                  curr = 0;               }               public void Work() {                  output.Push(input.Pop()*weights[curr++]);                  if(curr>= W) curr = 0;               }                });            Add(new Identity());            SetJoiner(ROUND_ROBIN);      }});      Add(new SplitJoin() {         public void Init() {            SetSplitter(DUPLICATE);            Add(new Filter() {                   public void InitIO ()                {                   input = new FloatChannel();                   output = new FloatChannel();                }               public void Work() {                  float val = input.Pop();                  output.Push(val - input.Pop());               }            });            Add(new Filter() {                   public void InitIO ()                {                   input = new FloatChannel();                   output = new FloatChannel();                }               public void Work() {                  float val = input.Pop();                  output.Push(val + input.Pop());               }            });            SetJoiner(WEIGHTED_ROUND_ROBIN(N, N));      }});}}