// PRIVATE /// <summary> /// Apskaičiuoja pateikto vektoriaus sindromą. /// </summary> /// <param name="vector">Vektorius, kurio sindromą norima apskaičiuoti.</param> /// <returns>Sindromas.</returns> private IList <byte> GetSyndrome(IList <byte> vector) { if (vector.Count != _cols) { throw new ArgumentException("\nPaduoto vektoriaus ilgis privalo sutapti su matricos ilgiu."); } var syndrome = new List <byte>(_rows); for (var r = 0; r < _rows; r++) { var row1 = Matrix[r]; syndrome.Add(Field.Multiply(row1, vector)); } return(syndrome); }
// PUBLIC /// <summary> /// Užkoduoja vektorių pasinaudodamas generuojančia matrica. /// </summary> /// <param name="vector">Vektorius, kurį reikia užkoduoti.</param> /// <returns>Generuojančia matrica užkoduotas vektorius.</returns> public IList <byte> Encode(IList <byte> vector) { if (vector.Count != _rows) { throw new ArgumentException("\nVektoriaus ilgis privalo sutapti su matricos dimensija."); } var result = new List <byte>(_cols); for (var c = 0; c < _cols; c++) { var matrixCol = GetColumnAsVector(Matrix, c); result.Add(Field.Multiply(matrixCol, vector)); } return(result); }