public void solveVandermondeSystem ( int [ ] x , byte [ ] [ ] y , int len , int dataStart , int dataLen ) { assert ( x . length <= len && y . length <= len ) ; int dataEnd = dataStart + dataLen ; for ( int i = 0 ; i < len - 1 ; i ++ ) { for ( int j = len - 1 ; j > i ; j -- ) { for ( int k = dataStart ; k < dataEnd ; k ++ ) { y [ j ] [ k ] = ( byte ) ( y [ j ] [ k ] ^ mulTable [ x [ i ] ] [ y [ j - 1 ] [ k ] & 0x000000FF ] ) ; } } } for ( int i = len - 1 ; i >= 0 ; i -- ) { for ( int j = i + 1 ; j < len ; j ++ ) { for ( int k = dataStart ; k < dataEnd ; k ++ ) { y [ j ] [ k ] = ( byte ) ( divTable [ y [ j ] [ k ] & 0x000000FF ] [ x [ j ] ^ x [ j - i - 1 ] ] ) ; } } for ( int j = i ; j < len - 1 ; j ++ ) { for ( int k = dataStart ; k < dataEnd ; k ++ ) { y [ j ] [ k ] = ( byte ) ( y [ j ] [ k ] ^ y [ j + 1 ] [ k ] ) ; } } } }
A bulk version of the solveVandermondeSystem