Computational routine
eng


shift_16_RC

File content


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

void shift_16_RC(scicos_block *block,int flag)
{
  SCSINT16_COP *u,*y,v; 
  int *ipar;
  int mu,nu,i,j;
  SCSUINT16_COP k;
  mu=GetInPortRows(block,1);
  nu=GetInPortCols(block,1);
  u=Getint16InPortPtrs(block,1);
  y=Getint16OutPortPtrs(block,1);
  ipar=GetIparPtrs(block);
  k=(SCSUINT16_COP)pow(2,16-1);
  for (i=0;i<mu*nu;i++)
      { v=u[i];
	for(j=0;j<-ipar[0];j++)
	     {
	       y[i]=v&1;
               if (y[i]==0)  
		     {y[i]=v>>1;
		      y[i]=y[i]&(k-1);}
	       else {
	             y[i]=v>>1;
	             y[i]=(y[i])|(k);
	            }
	       v=y[i];
	      }
       }
}