public class MAfilter{
  float buffer[] ;
  float sum ;
  int N ;
  int pointer ;

MAfilter(int N1){
  N=N1 ;
  buffer=new float[N] ;
  sum=0 ;
  for(int k=0 ; k<N ; k++){
    buffer[k]=0 ;
    }
  pointer=0 ;
  }

  float SLOWstep(float x){
    for(int k=N-1 ; k>0 ; k--){
      buffer[k]=buffer[k-1] ;
      }
    buffer[0]=x ;
    sum=0 ;
    for(int k=0 ; k<N ; k++){
      sum=sum+buffer[k] ;
    }
  return sum ;
  }

  float FASTstep(float x){
    sum=sum+x-buffer[pointer] ;
    buffer[pointer]=x ;
    pointer++ ;
    if(pointer>=N){ pointer=0 ; }
    return sum ;
    }
  }
