Computational routine
eng


summation

File content


#include <math.h>
#include "scicos_block4.h"


void summation(scicos_block *block,int flag)
{
  int j,k;

  double *u;
  int nu,mu;
  double *y;
  int *ipar;

  y=GetRealOutPortPtrs(block,1);
  nu=GetInPortRows(block,1);
  mu=GetInPortCols(block,1);
  ipar=GetIparPtrs(block);

  if(flag==1){
    if (GetNin(block)==1){
      y[0]=0.0;
      u=GetRealInPortPtrs(block,1);
      for (j=0;j<nu*mu;j++) {
	y[0]=y[0]+u[j];
      }
    }
    else {
      for (j=0;j<nu*mu;j++) {
	y[j]=0.0;
	for (k=0;k<GetNin(block);k++) {
	  u=GetRealInPortPtrs(block,k+1);
	  if(ipar[k]>0){
	    y[j]=y[j]+u[j];
	  }else{
	    y[j]=y[j]-u[j];
	  }
	}
      }
    }
  }
}