code: func genEncMatrix(d, p int) matrix {
  	r := d + p
  	m := make([]byte, r*d)
  	// create identity matrix upper
  	for i := 0; i < d; i++ {
  		m[i*d+i] = byte(1)
  	}
  	// create cauchy matrix below
  	off := d * d // offset of encMatrix
  	for i := d; i < r; i++ {
  		for j := 0; j < d; j++ {
  			d := i ^ j
  			a := inverseTbl[d]
  			m[off] = byte(a)
  			off++
  		}
  	}
  	return m
  }
docs: // genEncMatrix generate encoding matrix. upper: Identity_Matrix; lower: Cauchy_Matrix