mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-11-03 13:30:52 -05:00 
			
		
		
		
	git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@2635 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
		
			
				
	
	
		
			53 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* Reed-Solomon encoder
 | 
						|
 * Copyright 2002, Phil Karn, KA9Q
 | 
						|
 * May be used under the terms of the GNU General Public License (GPL)
 | 
						|
 */
 | 
						|
#include <string.h>
 | 
						|
 | 
						|
#ifdef FIXED
 | 
						|
#include "fixed.h"
 | 
						|
#elif defined(BIGSYM)
 | 
						|
#include "int.h"
 | 
						|
#else
 | 
						|
#include "char.h"
 | 
						|
#endif
 | 
						|
 | 
						|
void ENCODE_RS(
 | 
						|
#ifdef FIXED
 | 
						|
DTYPE *data, DTYPE *bb,int pad){
 | 
						|
#else
 | 
						|
void *p,DTYPE *data, DTYPE *bb){
 | 
						|
  struct rs *rs = (struct rs *)p;
 | 
						|
#endif
 | 
						|
  int i, j;
 | 
						|
  DTYPE feedback;
 | 
						|
 | 
						|
#ifdef FIXED
 | 
						|
  /* Check pad parameter for validity */
 | 
						|
  if(pad < 0 || pad >= NN)
 | 
						|
    return;
 | 
						|
#endif
 | 
						|
 | 
						|
  memset(bb,0,NROOTS*sizeof(DTYPE));
 | 
						|
 | 
						|
  for(i=0;i<NN-NROOTS-PAD;i++){
 | 
						|
    feedback = INDEX_OF[data[i] ^ bb[0]];
 | 
						|
    if(feedback != A0){      /* feedback term is non-zero */
 | 
						|
#ifdef UNNORMALIZED
 | 
						|
      /* This line is unnecessary when GENPOLY[NROOTS] is unity, as it must
 | 
						|
       * always be for the polynomials constructed by init_rs()
 | 
						|
       */
 | 
						|
      feedback = MODNN(NN - GENPOLY[NROOTS] + feedback);
 | 
						|
#endif
 | 
						|
      for(j=1;j<NROOTS;j++)
 | 
						|
	bb[j] ^= ALPHA_TO[MODNN(feedback + GENPOLY[NROOTS-j])];
 | 
						|
    }
 | 
						|
    /* Shift */
 | 
						|
    memmove(&bb[0],&bb[1],sizeof(DTYPE)*(NROOTS-1));
 | 
						|
    if(feedback != A0)
 | 
						|
      bb[NROOTS-1] = ALPHA_TO[MODNN(feedback + GENPOLY[0])];
 | 
						|
    else
 | 
						|
      bb[NROOTS-1] = 0;
 | 
						|
  }
 | 
						|
}
 |