LDPC codes with belief propagation decoding
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

ldpc: complete CCSDS 131.0-B-4 interop test (45 tests pass)

Adds traces/codewords.csv generated from the CCSDS AR4JA rate 1/2 H
matrix using GF(2) Gaussian elimination. The oracle is the syndrome
check (H·c mod 2 = 0), which is the spec itself — not a reimplementation
of any specific encoding algorithm.

15 test vectors covering all-zeros, all-ones, alternating patterns,
single-bit information words, deterministic PRNG sequences. Tests
verify encode (byte-exact match), decode (BP recovers original), and
roundtrip.

Also fixes generate.sh permissions and dune rule path.

+17 -1
+1 -1
test/interop/ccsds131/dune
··· 14 14 (action 15 15 (chdir 16 16 scripts 17 - (run bash generate.sh)))) 17 + (run bash ./generate.sh))))
test/interop/ccsds131/scripts/generate.sh
+16
test/interop/ccsds131/traces/codewords.csv
··· 1 + name,info_hex,codeword_hex 2 + all_zeros,0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 3 + all_ones,ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff,ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 4 + alternating_01,5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555,555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555500000000000000000000000000000000ffffffffffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000000000000000aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 5 + alternating_10,aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa00000000000000000000000000000000ffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000000000000000000000055555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555 6 + single_bit_0,8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c1cb1f52fd1543af891958e3ce2f5583c829c74dfdcc734bed2fc45777a58aab1875529e369afebd91a103a499c315f4e945ae99f1135ccfa39311cd1893f1174f2fb1d2a1fb29c50575509defb976a694f1fd28474591fbd9fad0ed100dfa6436931a883c848c0d7d7d9fae17acd64e41912d5a80912ebe891132ab463509ef 7 + single_bit_last,0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001,00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014ecd807e7460c251788ab02c27da0b5db77405b32b0a01f8856c96fef81ee45f201b8ee329e875dd0f73384e760d21509f3aed6c1535f1a7387299ef3bb9fedbcaf5f3d3774af54aebc465bfa5dc8d8018129ad8d064c806fb9ba32f3f616005b35949033e69e86874030eafff3b0a2f9bc5c96bb07b551ecb0ffd0d936a69f3 8 + single_bit_middle,0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffe8fcbf2ef23e6954074661f045a6c55c88fef9d7a749132bf46f13b63e9a604180712bc4e30764f5a91e780dcd63ab53bc367ef29facc8f999e268f3a9798994bf5713db7adc2cf0572ab9c954b854da2b6d9a99c9b2e634db3f18223902b1c49845665e13dbad6f9d5064ea8ecaf6b39a1260a6e6795abb416a19f3a17ea0 9 + seed_13,b8610ab35c05ae5700a952fba44df69f48f19a43ec953ee79039e28b34dd862fd8812ad37c25ce7720c9721bc46d16bf6811ba630cb55e07b05902ab54fda64ff8a14af39c45ee9740e9923be48d36df8831da832cd57e27d07922cb741dc66f18c16a13bc650eb76009b25b04ad56ffa851faa34cf59e47f09942eb943de68f,b8610ab35c05ae5700a952fba44df69f48f19a43ec953ee79039e28b34dd862fd8812ad37c25ce7720c9721bc46d16bf6811ba630cb55e07b05902ab54fda64ff8a14af39c45ee9740e9923be48d36df8831da832cd57e27d07922cb741dc66f18c16a13bc650eb76009b25b04ad56ffa851faa34cf59e47f09942eb943de68f999475a5cbb0939d3475558bba8d6370a965dac1cf25980fd235a8d0f7ddf89e538be9e567a01c90d8e0f5377f956139d93e23031975b0442543c0b9ec7f2fc381128d78f653b6c3da917f0ffd924ebb533663c2238ae6e833afe3acdd78b2db58ae1445b8a468cdd19ebf9aa6dd64205b7aae4070abf5ea23d02d9d229e25bb 10 + seed_42,b9620bb45d06af5801aa53fca54ef7a049f29b44ed963fe8913ae38c35de8730d9822bd47d26cf7821ca731cc56e17c06912bb640db65f08b15a03ac55fea750f9a24bf49d46ef9841ea933ce58e37e08932db842dd67f28d17a23cc751ec77019c26b14bd660fb8610ab35c05ae5700a952fba44df69f48f19a43ec953ee790,b9620bb45d06af5801aa53fca54ef7a049f29b44ed963fe8913ae38c35de8730d9822bd47d26cf7821ca731cc56e17c06912bb640db65f08b15a03ac55fea750f9a24bf49d46ef9841ea933ce58e37e08932db842dd67f28d17a23cc751ec77019c26b14bd660fb8610ab35c05ae5700a952fba44df69f48f19a43ec953ee79015ddec3ab1982845b81742300ebd270cfcc14bc164058693e76fda42ad90832191766532e0d8ef5510e683e7b4207bf90aca08eff57972e3b0694d500bbe54ed3c45b20de4da711cabe4e77654cf78208cc80ab9740a9bc71552661fa6a236c38b52a6e1d4c3f8c85f0dc878ad0ed778c27dafd00e961df46c05c0cf93700090 11 + seed_99,862fd8812ad37c25ce7720c9721bc46d16bf6811ba630cb55e07b05902ab54fda64ff8a14af39c45ee9740e9923be48d36df8831da832cd57e27d07922cb741dc66f18c16a13bc650eb76009b25b04ad56ffa851faa34cf59e47f09942eb943de68f38e18a33dc852ed78029d27b24cd761fc8711ac36c15be6710b9620bb45d,862fd8812ad37c25ce7720c9721bc46d16bf6811ba630cb55e07b05902ab54fda64ff8a14af39c45ee9740e9923be48d36df8831da832cd57e27d07922cb741dc66f18c16a13bc650eb76009b25b04ad56ffa851faa34cf59e47f09942eb943de68f38e18a33dc852ed78029d27b24cd761fc8711ac36c15be6710b9620bb45de837fc47e5363f0ba83079ec1fcb8a0e4e863450ad4b0a425be5193b1ad699c014d64ea379c7d16a82c382c7456116acb1bc982525a1f52a9e14c206d7980e939abaf6561904cc9e29bcaccdf91ca1638f96e89e819ba3c4aed9aa5119482a1587802a74e23693bc16eb6109ddd2e344d383e304dca66b889bca5d1ebd365c4e 12 + seed_128,8730d9822bd47d26cf7821ca731cc56e17c06912bb640db65f08b15a03ac55fea750f9a24bf49d46ef9841ea933ce58e37e08932db842dd67f28d17a23cc751ec77019c26b14bd660fb8610ab35c05ae5700a952fba44df69f48f19a43ec953ee79039e28b34dd862fd8812ad37c25ce7720c9721bc46d16bf6811ba630cb55e,8730d9822bd47d26cf7821ca731cc56e17c06912bb640db65f08b15a03ac55fea750f9a24bf49d46ef9841ea933ce58e37e08932db842dd67f28d17a23cc751ec77019c26b14bd660fb8610ab35c05ae5700a952fba44df69f48f19a43ec953ee79039e28b34dd862fd8812ad37c25ce7720c9721bc46d16bf6811ba630cb55ef70a1ccdcb45afa838964e702080a628ddf0a7418d9739b71c3ece15fbe77306ff6df3ba299c889cceda76ab211760ba2d9c073f7d8ddad4eb841a55e96ebc7e9472cd938e4dfb8331dd4071be334e4fc1fa8d493cd09434d77daf5f2f8e5a6d8b83b76c164dafa40268853d3c626ab91de176da5236983e4dfdfbe74dee6c3e 13 + seed_200,6f18c16a13bc650eb76009b25b04ad56ffa851faa34cf59e47f09942eb943de68f38e18a33dc852ed78029d27b24cd761fc8711ac36c15be6710b9620bb45d06af5801aa53fca54ef7a049f29b44ed963fe8913ae38c35de8730d9822bd47d26cf7821ca731cc56e17c06912bb640db65f08b15a03ac55fea750f9a24bf49d46,6f18c16a13bc650eb76009b25b04ad56ffa851faa34cf59e47f09942eb943de68f38e18a33dc852ed78029d27b24cd761fc8711ac36c15be6710b9620bb45d06af5801aa53fca54ef7a049f29b44ed963fe8913ae38c35de8730d9822bd47d26cf7821ca731cc56e17c06912bb640db65f08b15a03ac55fea750f9a24bf49d4683d6dc98f48c17bfa99b03bc6c305df9da1b307541506c1668b98bef5f2bf946f5ab60591bffb669b72d4672c81f7bb401453560dd154faa97f0d5ff1896a74663aa4bb6985f1c93a064f3b9d803a07d6eefef7e3ce0a32f08debe3a63e738d3c62435aa0bc1925c4e8bda1fa7b264e6cd4e8adbf1656dc0ce9e61f0140f987f 14 + seed_255,d27b24cd761fc8711ac36c15be6710b9620bb45d06af5801aa53fca54ef7a049f29b44ed963fe8913ae38c35de8730d9822bd47d26cf7821ca731cc56e17c06912bb640db65f08b15a03ac55fea750f9a24bf49d46ef9841ea933ce58e37e08932db842dd67f28d17a23cc751ec77019c26b14bd660fb8610ab35c05ae5700a9,d27b24cd761fc8711ac36c15be6710b9620bb45d06af5801aa53fca54ef7a049f29b44ed963fe8913ae38c35de8730d9822bd47d26cf7821ca731cc56e17c06912bb640db65f08b15a03ac55fea750f9a24bf49d46ef9841ea933ce58e37e08932db842dd67f28d17a23cc751ec77019c26b14bd660fb8610ab35c05ae5700a9c4b5504a20e5f86da895a665ddd305728a5f5754b93ab17d38cd9f188e6cc9e73a9f66031039278d9e8e58751d1cf1ec38a4b0291261230e63aba7610e8922c377942e7b15804c6f0b1cb9e9d0ecc3099249bc97151dc725d9f90bced58def36a458efd3f2cd9fb2f63cd67002ac0c65fc8543dadc2d5b40e96a83278a76288a 15 + counting,000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f,000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7fdb1747caae9126f74d81d15c3807b061ac41908d4ea4634b05e83924e70dcae20e4b14f928307aea04411ef3223a70e00e13e75764d894937964902013afe3e473f96184caefb7d650da42a7e9cc94f5809ae919b894dc6dd4cebd4decc0883904f3fe0615961e5a4bbcb1495ad9511543ea29216d2de613fc55969ed29259ac 16 + prng_lcg,00c68c5319dfa66c32f8bf854b12d89e652bf1b87e440ad1975d24eab0773d03c990561ce3a96f36fcc2894f15dba2682ef5bb81480ed49b6127edb47a4007cd935a20e6ad7339ffc68c5219dfa56c32f8bf854b11d89e642bf1b77e440ad0975d23eab0763d03c990561ce2a96f35fcc2884f15dba2682ef4bb81470ed49a61,00c68c5319dfa66c32f8bf854b12d89e652bf1b87e440ad1975d24eab0773d03c990561ce3a96f36fcc2894f15dba2682ef5bb81480ed49b6127edb47a4007cd935a20e6ad7339ffc68c5219dfa56c32f8bf854b11d89e642bf1b77e440ad0975d23eab0763d03c990561ce2a96f35fcc2884f15dba2682ef4bb81470ed49a616173ba5b326efe0b76d4933bda3591957ae093684dfe29f4792f5ab41d90b07858a876bb7a673b0582b54dcb629d6fb9e6e709b4d524efc4590f53e95282d45550190ad5e40edf4028ae2a0c393ecca6df32760712af4d5abd6b6df13dca45ca32d4be8ca8f6e45d61ec2bb6d8125324b51b12c61804658367755937da72b9a5