"qN-J個q,J,Nは自然数であって、N>Jのシンボルを備えるデータシンボル列を入力し、qJ個のシンボルを備えるパリティシンボル列を前記データシンボル列に付加してqN個のシンボルを備える符号語を生成する符号化装置において、前記符号語は、qJ行×qN列のパリティ検査行列を用いたパリティ検査を満足し、前記パリティ検査行列において前記パリティシンボル列に対応するqJ行×qJ列の第1の部分行列は、qL行×qL列Lは自然数であって、J>Lの第1の単位行列とqJ-L行×qL列の第1の非零行列とを備えるqJ行×qL列の第2の部分行列を含む、符号化装置。前記前記第1の部分行列は、qL行×qJ-L列の第2の非零行列とqJ-L行×qJ-L列の第2の単位行列とを備えるqJ行×qJ-L列の第3の部分行列を更に含み、前記第1の非零行列及び前記第2の非零行列の行列積は零行列である、請求項1の符号化装置。前記パリティシンボル列は、qJ-L個のシンボルを備える第1の部分パリティシンボル列と、qL個のシンボルを備える第2の部分パリティシンボル列とを備え、前記第1の部分パリティシンボル列は、前記データシンボル列に基づいて生成され、前記第2の部分パリティシンボル列は、前記第1の部分パリティシンボル列及び前記データシンボル列に基づいて生成される、請求項1または2の符号化装置。前記パリティ検査行列は、J×N個のq行×q列のブロック行列を配列することによって形成され、前記ブロック行列の各々は、非零行列及び零行列のいずれか一方である、請求項1乃至3のいずれか1項に記載の符号化装置。前記ブロック行列の各々は、巡回シフト行列及び零行列のいずれか一方である、請求項4の符号化装置。前記ブロック行列の各々は、各行に1つだけ非零要素を含む非零行列及び零行列のいずれか一方である、請求項4の符号化装置。L=J-2であり、前記第1の非零行列は、2×J-2個のq行×q列のブロック行列を配列することによって形成され、前記ブロック行列の各々は、非零行列である、請求項1または2の符号化装置。請求項1または2の符号化装置と、前記符号語を記憶する半導体メモリとを具備する半導体メモリシステム。実施形態は、符号化処理の計算複雑度を低減させると共に符号化処理を高速化することとを目的とする。実施形態によれば、符号化装置は、qN-J個q,J,Nは自然数であって、N>Jのシンボルを備えるデータシンボル列を入力し、qJ個のシンボルを備えるパリティシンボル列をデータシンボル列に付加してqN個のシンボルを備える符号語を生成する。符号語は、qJ行×qN列のパリティ検査行列を用いたパリティ検査を満足する。パリティ検査行列においてパリティシンボル列に対応するqJ行×qJ列の第1の部分行列は、qL行×qL列Lは自然数であって、J>Lの第1の単位行列とqJ-L行×qL列の第1の非零行列とを備えるqJ行×qL列の第2の部分行列を含む。以下、図面を参照しながら実施形態の説明が述べられる。尚、以降、説明済みの要素と同一または類似の要素には同一または類似の符号が付され、重複する説明は基本的に省略される。以降の説明において、各実施形態は、LDPC符号方式に適用されることが想定されている。但し、各実施形態は、他の符号方式に適用されてもよい。パリティ検査行列の性質は、当該パリティ検査行列に行基本変形及び列基本変形が施されても変化しない。従って、以降の説明において、第1のパリティ検査行列に対して行基本変形及び列基本変形の少なくとも一方を任意に施すことによって導出可能な第2のパリティ検査行列は、第1のパリティ検査行列と同一とみなされる。また、以降の説明において、簡単化のために、各実施形態はバイナリシンボル1または0のシンボル値を取るに適用されるものとする。従って、シンボル同士の演算において、符号の正負は交換できる。但し、各実施形態が多元シンボルに適用される場合には、シンボル同士の演算において、符号の正負は交換できない。第1の実施形態符号化とは、長さf=qN-Jのデータシンボル列mに対して、下記数式1を満足させる長さr=qJのパリティシンボル列パリティベクトルpを生成する処理と定義される。尚、以降の説明において、Tは、行列またはベクトルの転置を表す記号である。数式1において、Hはパリティ検査行列を表す。一般的なLDPC符号化処理は、このパリティ検査行列Hに対応する生成行列をデータシンボル列mに乗算することによって実現される。この計算複雑度がオーダOn2であることは前述の通りである。ここで、パリティ検査行列Hを利用してパリティシンボル列pを生成すれば、計算複雑度を低減させることができる。具体的には、下記数式2に示されるように、パリティ検査行列Hを6つの部分行列A,B,T,C,D,Eによって構成されるとする。尚、行列Tは、下三角行列である。他の行列A,B,C,D,Eは、下三角行列である必要はないものの、計算複雑度を低減させる観点から疎行列であることが好ましい。行列A,Cはデータシンボル列mに対応する即ち、データシンボル列mに乗算される。行列B,T,D,Eはパリティシンボル列pに対応する即ち、パリティシンボル列pに乗算される。より詳細には、パリティシンボル列p=p1,p2のように分割すると、行列B,Dは第1の部分パリティシンボル列p1第1の部分パリティベクトルに対応し、行列T,Eは第2の部分パリティシンボル列p2第2の部分パリティベクトルに対応する。第1のパリティシンボル列p1の長さをr1=qJ-Lとし、第2のパリティシンボル列p2の長さをr2=qLとすると、r=r1r2が成立する。数式2のパリティ検査行列Hに、行列Eを零行列に置き換えるための行基本変形を施すと、下記数式3に示されるパリティ検査行列H’が導出される。尚、以降の説明において、-1は逆行列を表す記号である。尚、行列Tは下三角行列であるから、逆行列T-1は存在する。行基本変形を施したとしてもパリティ検査行列Hの性質は変化しないから、H’m,pT=0が成立する。即ち、下記数式4,5が成立する。数式5から、第1のパリティシンボル列p1は、下記数式6に示されるように生成できる。また、上記数式4から、第2のパリティシンボル列p2は、下記数式7に示されるように生成できる。数式7において、行列A,Bが疎行列であるならば、行列積AmT及びBp1Tの計算複雑度は低い。更に、Tは下三角行列であるから、第2のパリティシンボル列p2の各要素を逐次的に計算すれば、計算複雑度を低減させることができる。従って、パリティシンボル列pをこのように生成すれば、符号化処理の一部の計算複雑度を低減させることができる。他方、係る生成技法は、逐次的な計算を含むので、並列処理が困難である。即ち、係る生成技法は、高速化が困難である。更に、数式6における行列φ-1は、概して疎行列でない。故に、係る生成技法によると、第1のパリティシンボル列を生成するための計算複雑度は必ずしも低くない。行列Tを同じサイズの単位行列Iに置き換えると、上記数式6,7を下記数式8,9に置き換えることができる。尚、前述の通り、2値シンボルに関して、符号の正負は交換できるので、例えば右辺の-符号が符号に交換されてよい。数式9によれば、ベクトルAmT及びBp1Tの加算によって第2のパリティシンボル列p2を生成できるので逐次的な計算が不要である。故に、第2のパリティシンボル列p2をこのように生成すれば、符号化処理を並列処理によって実現すること即ち、符号化処理を高速化することが容易である。第1の実施形態に係る符号化装置は、上記数式8及び数式9に従って、第1のパリティシンボル列p1及び第2のパリティシンボル列p2を生成する。この符号化装置は、図6及び下記数式10に示されるパリティ検査行列Hに対応する。行列Aは、qL行×qN-J列の行列である。行列Bは、qL行×qJ-L列の行列である。行列Cは、qJ-L行×qN-J列の行列である。行列Dは、qJ-L行×qJ-L列の行列である。行列Eは、qJ-L行×qL列の行列である。尚、行列A,B,C,D,Eは、計算複雑度を低減させる観点から、疎行列であることが好ましい。また、行列A,B,C,D,Eは、典型的には、行数×列数個のブロック行列q行×q列の行列を配列することによって形成される。以降の説明において、行列A,B,C,D,Eは、行数×列数個のブロック行列を配列することによって形成されるものとする。具体的には、行列Aは、L×N-J個のブロック行列を配列することによって形成される。行列Bは、L×J-L個のブロック行列を配列することによって形成される。行列Cは、J-L×N-J個のブロック行列を配列することによって形成される。行列Dは、J-L×J-L個のブロック行列を配列することによって形成される。行列Eは、J-L×L個のブロック行列を配列することによって形成される。各ブロック行列は、非零行列疎行列であることが好ましいであってもよいし、零行列であってもよい。また、各ブロック行列としての非零行列は、ハードウェア構成の簡素化などの観点から、巡回シフト行列であってもよい。ここで、巡回シフト行列は、各行に1つだけ非零要素が含まれるものが最も疎である。以降の説明において、各ブロック行列は、各行に1つだけ非零要素を含むq行×q列の巡回シフト行列またはq行×q列の零行列であるとする。即ち、パリティ検査行列Hは、J×N個のブロック行列を配列することによって形成される準巡回シフト行列であるとする。準巡回シフト行列は、基本行列を用いて表現することができる。q行×q列の単位行列に相当するブロック行列は、基本行列における0の要素に対応する。また、q行×q列の単位行列の各行の非零要素がi=1,2,,q-1列だけ右側に巡回シフトした行列に相当するブロック行列は、基本行列におけるiの要素に対応する。更に、q行×q列の零行列に相当するブロック行列は、基本行列における∞の要素に対応する。図4は、パリティ検査行列Hと、その基本行列ΩHを例示する。図4の例では、q=3,J=5,N=6,L=3である。本実施形態に係る符号化装置100が、図1に例示されている。符号化装置100は、行列計算部101,102,103,104と、ベクトル加算部105とを含む。行列計算部101,102は、上記数式8に従って、第1のパリティシンボル列p1を生成する。行列計算部103,104及びベクトル加算部105は、上記数式9に従って、第2のパリティシンボル列p2を生成する。行列計算部101は、外部からデータシンボル列mを入力する。行列計算部101は、データシンボル列mTの左側から行列-EACを乗算する。即ち、行列計算部101は、下記数式10に従って、ベクトル行列積v1Tを計算する。行列計算部101は、ベクトルv1Tを行列計算部102へと出力する。行列計算部102は、行列計算部101からベクトルv1Tを入力する。行列計算部102は、ベクトルv1Tの左側から行列Ψ-1を乗算する。即ち、行列計算部102は、下記数式12に従って、第1のパリティシンボル列p1Tを計算する。行列計算部102は、第1のパリティシンボル列p1を外部へと出力すると共に行列計算部104へと出力する。行列計算部103は、外部からデータシンボル列mを入力する。行列計算部103は、データシンボル列mの左側から行列Aを乗算する。即ち、行列計算部103は、下記数式13に従って、ベクトル行列積v2Tを計算する。行列計算部103は、ベクトルv2Tをベクトル加算部105へと出力する。尚、行列計算部103は、行列計算部101,102,104と並行して動作してもよいし、これらよりも前に或いは後に動作してもよい。行列計算部104は、行列計算部102から第1のパリティシンボル列p1を入力する。行列計算部104は、第1のパリティシンボル列p1Tの左側から行列Bを乗算する。即ち、行列計算部104は、下記数式14に従って、ベクトル行列積v3Tを計算する。行列計算部104は、ベクトルv3Tをベクトル加算部105へと出力する。ベクトル加算部105は、行列計算部103からベクトルv2Tを入力し、行列計算部104からベクトルv3Tを入力する。ベクトル加算部105は、ベクトルv2T及びベクトルv3Tを加算する。即ち、ベクトル加算部105は、下記数式15に従って、第2のパリティシンボル列p2を計算する。ベクトル加算部105は、第2のパリティシンボル列p2を外部へと出力する。尚、上記数式12に関して、Ψ-1は、qJ-L行×qJ-L列の行列である。Ψ-1は、概して疎行列でないので、数式12の計算複雑度は必ずしも低くない。従って、LDPC符号の特性を考慮しつつLが大きくなるように設定することによって、LDPC符号の特性を維持しつつ数式12の計算複雑度を低減させることが好ましい。Lの設定可能な最大値は、以下の技法により導出できる。例えば、基本行列ΩHのうちパリティシンボル列pに対応する部分において、∞でない要素即ち、0,1,,q-1の要素を多くともW=J,J-1,,1個持つ列の総数が少なくともJ-W1個であるという条件を満足させるWが少なくとも1つ存在する。係るWに関して、L=J-W1に設定できる。即ち、Wの最小値をWminとし、Lの最大値をLmaxとすれば、Lmax=J-Wmin1である。図4の例では、W=5,4,3の場合に上記条件が満足する。従って、Lmax=3=5-31に設定できる。尚、Lを単純に最大化するとLDPC符号の特性が劣化するおそれがあるので、前述の通り、LDPC符号の特性を考慮しつつLが大きくなるように設定することが望ましい。例えば、復号誤り率が低い領域において良好な特性を示すLDPC符号を定義するパリティ検査行列は、その各列が持つ非零のブロック行列の最小数が3以上であることが経験的に知られている。従って、例えばストレージシステムに適用されるLDPC符号について、W=3を採用してLを設定することが好ましい。即ち、パリティ検査行列Hのうちパリティシンボル列に対応するqJ行×qJ列の第1の部分行列が、qJ-2行×qJ-2列の単位行列と、2×J-2個の巡回シフト行列を配列した非零行列とを備えるqJ行×qJ-2列の第2の部分行列を含むように設計することが好ましい。符号化装置100の比較例に相当する符号化装置300が図3に示されている。符号化装置300は、行列計算部301,302,103,104,306と、ベクトル加算部305とを含む。行列計算部301,302は、上記数式6に従って、第1のパリティシンボル列p1を生成する。行列計算部103,104,306及びベクトル加算部305は、上記数式7に従って、第2のパリティシンボル列p2を生成する。行列計算部301は、外部からデータシンボル列mを入力する。行列計算部301は、データシンボル列mTの左側から行列-ET-1ACを乗算する。即ち、行列計算部301は、下記数式16に従って、ベクトル行列積v4Tを計算する。行列計算部301は、ベクトルv4Tを行列計算部302へと出力する。行列計算部302は、行列計算部301からベクトルv4Tを入力する。行列計算部302は、ベクトルv4Tの左側から行列φ-1を乗算する。即ち、行列計算部302は、下記数式17に従って、第1のパリティシンボル列p1Tを計算する。行列計算部302は、第1のパリティシンボル列p1を外部へと出力すると共に行列計算部104へと出力する。ベクトル加算部305は、行列計算部103からベクトルv2Tを入力し、行列計算部104からベクトルv3Tを入力する。ベクトル加算部305は、ベクトルv2T及びベクトルv3Tを加算する。即ち、ベクトル加算部305は、下記数式18に従って、ベクトルv5Tを計算する。ベクトル加算部305は、ベクトルv5Tを行列計算部306へと出力する。行列計算部306は、ベクトル加算部305からベクトルv5Tを入力する。行列計算部306は、下記数式19に従って、第2のパリティシンボル列p2Tを計算する。行列T-1は下三角行列であるため、逐次的に計算することによって計算複雑度を抑えることができる。行列計算部306は、第2のパリティシンボル列p2を外部へと出力する。符号化装置100及び符号化装置300を比較すると、符号化装置100は行列計算部306のように逐次的な計算を行う必要がない。従って、符号化装置100によれば、符号化装置300に比べて、符号化処理を並列処理によって実現すること即ち、符号化処理を高速化することが容易である。以上説明したように、第1の実施形態に係る符号化装置は、パリティシンボル列に対応する部分行列にqL行×qL列の単位行列を含むように設計されたパリティ検査行列を利用して符号語を生成する。従って、この符号化装置によれば、符号化処理の計算複雑度を低減させると共に符号化処理を高速化できる。第2の実施形態第2の実施形態に係る符号化装置は、パリティ検査行列の一部において第1の実施形態に係る符号化装置と異なる。具体的には、本実施形態に係る符号化装置は、図7及び下記数式20に示されるパリティ検査行列Hに対応する。数式20に示されるパリティ検査行列Hは、上記数式10に示されるパリティ検査行列Hにおいて部分行列Dが単位行列Iである場合に相当する。更に、数式20のパリティ検査行列Hは、下記数式21を満足する。従って、上記数式8は下記数式22に置き換えることができる。本実施形態に係る符号化装置200が、図2に例示されている。符号化装置200は、行列計算部201,103,104と、ベクトル加算部105とを含む。行列計算部201は、上記数式22に従って、第1のパリティシンボル列p1を生成する。行列計算部103,104及びベクトル加算部105は、上記数式9に従って、第2のパリティシンボル列p2を生成する。行列計算部201は、外部からデータシンボル列mを入力する。行列計算部201は、データシンボル列mTの左側から行列-EACを乗算する。即ち、行列計算部201は、上記数式22に従って、第1のパリティシンボル列p1を計算する。行列計算部201は、第1のパリティシンボル列p1を外部へと出力すると共に行列計算部104へと出力する。行列計算部103は、前述のものと同一または類似である。但し、行列計算部103は、行列計算部201,104と並行して動作してもよいし、これらよりも前に或いは後に動作してもよい。上記数式20,21を満足するパリティ検査行列Hによれば、Ψ-1=-EBD-1=Iである。従って、符号化装置200は、上記数式12に示されるような、行列Ψ-1を用いた行列計算が不要である。行列Ψ-1は、前述の通り、概して疎行列でないから、当該行列Ψ-1を含む行列積の計算複雑度は必ずしも低くない。故に、符号化装置200は、数式12の計算を省略できるから、符号化処理の計算複雑度を効果的に低減できる。以下、上記数式21を満足する行列E,Bを設計するための技法を例示する。尚、下記技法に限られず、種々の技法を利用することによって上記数式21を満足する行列E,Bを設計してもよい。例えば、非特許文献2の知見を利用することによって上記数式21を満足する行列E,Bを設計してもよい。本技法において、qM行×qM列の巡回シフト行列Sと、qM行×qM列の巡回シフト行列Qとが用いられる。巡回シフト行列S,Qは、夫々、q行×q列のブロック行列をM×M個配列することによって形成される。ブロック行列の各々は、巡回シフト行列または零行列である。従って、巡回シフト行列S,Qの基本行列ΩS,ΩQは、夫々、下記の数式23によって表される。数式23において、要素s0,s1,,sM-1,u0,u1,,uM-1は、0,1,,q-1,∞のいずれかである。∞の要素は、q行×q列の零行列に対応する。0,1,,q-1の要素は、q行×q列の巡回シフト行列に対応する。要素の値は、対応するq行×q列の巡回シフト行列のシフト値を表す。行列E,Bは、これら巡回シフト行列S,Uを用いて表すことができる。具体的には、行列E,Bの基本行列ΩE,ΩBは、下記数式24によって表すことができる。本技法によれば、行列EのサイズはqM行×2qM列となり、行列Bのサイズは2qM行×qM列となる。尚、本技法によって設計された行列E,Bが数式21を満足することは、容易に確認できる。また、行列Eの各行または行列Bの各列は独立なので、任意の行または列を除去することによって行列EまたはBの行列サイズを任意に変更できる。つまり、行列EのサイズをqM―P行×2qM列、行列Bのサイズを2qM行×qM―P列に変更することができる。ここで、Pは0~qM-1の整数となるが、行列EまたはBを巡回シフト行列によって構成することを鑑みるとPはqの整数倍であることが望ましい。q=7,M=3の場合に、本技法によって設計される基本行列ΩE,ΩBTが、下記数式25,26に例示される。以上説明したように、第2の実施形態に係る符号化装置は、第1の実施形態に係る符号化装置において第1のパリティシンボル列を生成するために必要とされた行列計算の一部を省略できるように設計されたパリティ検査行列を利用する。行列計算の省略部分は、概して疎行列でない行列を含む行列積計算に相当するから、その計算複雑度は必ずしも低くない。従って、この符号化装置によれば、第1の実施形態に係る符号化装置に比べて、符号化処理の計算複雑度を効果的に低減できる。図8は、第2の実施形態に係る符号化装置に対応するパリティ検査行列の基本行列を例示する。この基本行列は、符号化率2分の1のLDPC符号を定義するパリティ検査行列に対応し、このパリティ検査行列に関してq=493である。この基本行列によって定義されるLDPC符号において、パリティシンボルパリティビット1つあたりの生成に要する平均加算回数は6.2回となることから、符号化の計算複雑度が非常に小さく抑えられていることを確認できる。第3の実施形態第1乃至第2の実施形態に係る符号化装置は、例えば記憶システム、通信システムなどに組み込まれる。第3の実施形態に係る半導体メモリシステムは、第1乃至第2の実施形態に係る符号化装置を組み込む。尚、詳細な説明は省略されるが、第1乃至第2の実施形態に係る符号化装置は、通信システム、光記録システム、磁気記録システムなど、誤り訂正符号を利用可能なあらゆるシステムに組み込まれてよい。図5に示されるように、第3の実施形態に係る半導体メモリシステム500は、LDPC符号化部501と、不揮発性半導体メモリ502と、LDPC復号部503とを含む。尚、半導体メモリシステム500は、LDPC符号以外の誤り訂正符号を用いてもよい。また、簡単化のために、図5において不揮発性半導体メモリ502へのデータの読み書きを行う機能部が省略されている。しかしながら、半導体メモリシステム500は、係る機能部を必要に応じて備えることができる。LDPC符号化部501は、第1乃至第2の実施形態に係る符号化装置に対応する。LDPC符号化部501は、前段の処理部図示しないからデータを入力し、当該データを構成するデータシンボル列の各々にLDPC符号化処理を行う。即ち、LDPC符号化部501は、データシンボル列にパリティシンボル列を付加してLDPC符号フレーム即ち、LDPC符号語を生成する。LDPC符号化部501は、1以上のLDPC符号フレームを束ねてページデータを形成する。LDPC符号化部501は、ページデータを不揮発性半導体メモリ502へと出力する。前述の通り、LDPC符号化部501は、第1乃至第2の実施形態に係る符号化装置に対応する。故に、LDPC符号化部501は、上記数式10または数式20に示されるパリティ検査行列H或いは、このパリティ検査行列Hに行基本変形及び列基本変形の少なくとも一方を任意に施すことによって導出可能な行列を利用して符号化処理を行う。即ち、LDPC符号化部501は、データシンボル列に基づいて第1のパリティシンボル列を生成し、当該第1のパリティシンボル列及びデータシンボル列に基づいて第2のパリティシンボル列を生成する。不揮発性半導体メモリ502への書き込み処理及び不揮発性半導体メモリ502からの読み出し処理は、いずれもページデータ単位で行われる。ページデータは、前述の通り、1以上のLDPC符号フレームが束ねられたものである。ページデータのサイズは、不揮発性半導体メモリ502の構成に依存するが、概ね数KB程度である。不揮発性半導体メモリ502は、複数のメモリセルを備える。具体的には、不揮発性半導体メモリ502は、例えば複数のメモリセルがNAND型に接続されたアレイ構造を備えるフラッシュメモリによって実現される。各メモリセルは、2個以上の閾値電圧が割り当てられ、1ビット以上のデータを記憶できる。各メモリセルが記憶可能なデータ量は、各メモリセルに割り当てられる閾値電圧の総数によって決まる。例えば、1セルあたり2ビットを記憶するフラッシュメモリに関して、各セルには2ビット値のパターン:00,01,10,11に応じた4個の閾値が割り当てられる。メモリセルの閾値電圧は、隣接セルとの容量結合などの理由によって、揺らぐことがある。そして、この閾値電圧の揺らぎは、読み出しデータの誤りを引き起こす一因となる。不揮発性半導体メモリ502は、LDPC符号化部501によって生成されたページデータを入力する。不揮発性半導体メモリ502は、ページデータをメモリセルに記憶する書き込む。また、不揮発性半導体メモリ502は、メモリセルに記憶されたページデータを読み出し、これを出力する。尚、前述の通り、閾値電圧の揺らぎなどの要因によって、ページデータは誤りを含んで読み出される可能性がある。LDPC復号部503は、不揮発性半導体メモリ502によって読み出されたページデータを入力する。LDPC復号部503は、ページデータに含まれる1以上のLDPC符号フレームの各々にLDPC復号処理を行う。LDPC復号処理は、パリティ検査行列を用いた繰り返し復号アルゴリズムによって実現される。繰り返し復号アルゴリズムは、例えば、sum-productアルゴリズム、min-sumアルゴリズムなどである。LDPC復号部503は、パリティ検査において誤りなしと判定した場合即ち、復号成功の場合に、一時推定語からパリティシンボル列を除去してデータシンボル列を生成し、これを後段の信号処理部図示しないへと出力する。また、LDPC復号部503は、復号処理の試行回数が最大繰り返し回数に達した場合即ち、復号失敗の場合に、データシンボル列を後段の信号処理部図示しないへと出力してもよいし、復号の失敗を後段の信号処理部図示しないに通知してもよい。尚、LDPC復号部503は、上記数式10または数式20に示されるパリティ検査行列H或いは、このパリティ検査行列Hに行基本変形及び列基本変形の少なくとも一方を任意に施すことによって導出可能な行列を用いる。以上説明したように、第3の実施形態に係る半導体メモリシステムは、第1乃至第2の実施形態に係る符号化装置を組み込む。従って、この半導体メモリシステムによれば、書き込み処理の一部である符号化処理を高速化できる。上記各実施形態の処理は、汎用のコンピュータを基本ハードウェアとして用いることで実現可能である。上記各実施形態の処理を実現するプログラムは、コンピュータで読み取り可能な記憶媒体に格納して提供されてもよい。プログラムは、インストール可能な形式のファイルまたは実行可能な形式のファイルとして記憶媒体に記憶される。記憶媒体としては、磁気ディスク、光ディスクCD-ROM、CD-R、DVD等、光磁気ディスクMO等、半導体メモリなどである。記憶媒体は、プログラムを記憶でき、かつ、コンピュータが読み取り可能であれば、何れであってもよい。また、上記各実施形態の処理を実現するプログラムを、インターネットなどのネットワークに接続されたコンピュータサーバ上に格納し、ネットワーク経由でコンピュータクライアントにダウンロードさせてもよい。本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。"