reed solomon 256 encoder logic
encoder available from calculated values via galoisfield256.encoder
calculated generators, encoder
1. declare mulconst mul=(a,b)=>a&&b?gf.exp[gf.log[a]+gf.log[b]]:0calculated generators
2. declare call,c=(generators=>v=>generators[vs.indexOf(v)])((()=>{
const generators=Array(vs.length)
for(let i=0;i<vs.length;i++){
generators[i]=new Uint8Array(1+vs[i])
generators[i][0]=1
for(let y=0;y<vs[i];y++)for(let x=1+y;x;x--)generators[i][x]^=mul(generators[i][x-1],gf.exp[y])
}
return generators
})())encoder
3. declare generator, lengthconst generator=c(v),l=vs.length4. add length
vs.addLength(v)5. loop
for(let y=0;y<l;y++)for(let x=1;x<generator.length;x++)6. set values
vs[x+y]^=mul(generator[x],vs[y])7. return
return vs.slice(l)