Compare commits
3 Commits
a86b96fd5f
...
08a57f903f
| Author | SHA1 | Date | |
|---|---|---|---|
| 08a57f903f | |||
| 69a65a884d | |||
| 8082d4c29b |
411
Code/ldpc/Cargo.lock
generated
Normal file
411
Code/ldpc/Cargo.lock
generated
Normal file
@ -0,0 +1,411 @@
|
|||||||
|
# This file is automatically @generated by Cargo.
|
||||||
|
# It is not intended for manual editing.
|
||||||
|
version = 4
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "anyhow"
|
||||||
|
version = "1.0.101"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "5f0e0fee31ef5ed1ba1316088939cea399010ed7731dba877ed44aeb407a75ea"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "bitflags"
|
||||||
|
version = "2.10.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "cfg-if"
|
||||||
|
version = "1.0.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "chacha20"
|
||||||
|
version = "0.10.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "6f8d983286843e49675a4b7a2d174efe136dc93a18d69130dd18198a6c167601"
|
||||||
|
dependencies = [
|
||||||
|
"cfg-if",
|
||||||
|
"cpufeatures",
|
||||||
|
"rand_core",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "cpufeatures"
|
||||||
|
version = "0.3.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "8b2a41393f66f16b0823bb79094d54ac5fbd34ab292ddafb9a0456ac9f87d201"
|
||||||
|
dependencies = [
|
||||||
|
"libc",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "equivalent"
|
||||||
|
version = "1.0.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "foldhash"
|
||||||
|
version = "0.1.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "getrandom"
|
||||||
|
version = "0.4.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "139ef39800118c7683f2fd3c98c1b23c09ae076556b435f8e9064ae108aaeeec"
|
||||||
|
dependencies = [
|
||||||
|
"cfg-if",
|
||||||
|
"libc",
|
||||||
|
"r-efi",
|
||||||
|
"rand_core",
|
||||||
|
"wasip2",
|
||||||
|
"wasip3",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "hashbrown"
|
||||||
|
version = "0.15.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1"
|
||||||
|
dependencies = [
|
||||||
|
"foldhash",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "hashbrown"
|
||||||
|
version = "0.16.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "heck"
|
||||||
|
version = "0.5.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "id-arena"
|
||||||
|
version = "2.3.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "indexmap"
|
||||||
|
version = "2.13.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017"
|
||||||
|
dependencies = [
|
||||||
|
"equivalent",
|
||||||
|
"hashbrown 0.16.1",
|
||||||
|
"serde",
|
||||||
|
"serde_core",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "itoa"
|
||||||
|
version = "1.0.17"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "ldpc"
|
||||||
|
version = "0.1.0"
|
||||||
|
dependencies = [
|
||||||
|
"rand",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "leb128fmt"
|
||||||
|
version = "0.1.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "libc"
|
||||||
|
version = "0.2.181"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "459427e2af2b9c839b132acb702a1c654d95e10f8c326bfc2ad11310e458b1c5"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "log"
|
||||||
|
version = "0.4.29"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "memchr"
|
||||||
|
version = "2.8.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "prettyplease"
|
||||||
|
version = "0.2.37"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"syn",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "proc-macro2"
|
||||||
|
version = "1.0.106"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
|
||||||
|
dependencies = [
|
||||||
|
"unicode-ident",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "quote"
|
||||||
|
version = "1.0.44"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "r-efi"
|
||||||
|
version = "5.3.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rand"
|
||||||
|
version = "0.10.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "bc266eb313df6c5c09c1c7b1fbe2510961e5bcd3add930c1e31f7ed9da0feff8"
|
||||||
|
dependencies = [
|
||||||
|
"chacha20",
|
||||||
|
"getrandom",
|
||||||
|
"rand_core",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rand_core"
|
||||||
|
version = "0.10.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "0c8d0fd677905edcbeedbf2edb6494d676f0e98d54d5cf9bda0b061cb8fb8aba"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "semver"
|
||||||
|
version = "1.0.27"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "serde"
|
||||||
|
version = "1.0.228"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
|
||||||
|
dependencies = [
|
||||||
|
"serde_core",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "serde_core"
|
||||||
|
version = "1.0.228"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad"
|
||||||
|
dependencies = [
|
||||||
|
"serde_derive",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "serde_derive"
|
||||||
|
version = "1.0.228"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "serde_json"
|
||||||
|
version = "1.0.149"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86"
|
||||||
|
dependencies = [
|
||||||
|
"itoa",
|
||||||
|
"memchr",
|
||||||
|
"serde",
|
||||||
|
"serde_core",
|
||||||
|
"zmij",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "syn"
|
||||||
|
version = "2.0.114"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"unicode-ident",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "unicode-ident"
|
||||||
|
version = "1.0.23"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "537dd038a89878be9b64dd4bd1b260315c1bb94f4d784956b81e27a088d9a09e"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "unicode-xid"
|
||||||
|
version = "0.2.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "wasip2"
|
||||||
|
version = "1.0.2+wasi-0.2.9"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5"
|
||||||
|
dependencies = [
|
||||||
|
"wit-bindgen",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "wasip3"
|
||||||
|
version = "0.4.0+wasi-0.3.0-rc-2026-01-06"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5"
|
||||||
|
dependencies = [
|
||||||
|
"wit-bindgen",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "wasm-encoder"
|
||||||
|
version = "0.244.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319"
|
||||||
|
dependencies = [
|
||||||
|
"leb128fmt",
|
||||||
|
"wasmparser",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "wasm-metadata"
|
||||||
|
version = "0.244.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909"
|
||||||
|
dependencies = [
|
||||||
|
"anyhow",
|
||||||
|
"indexmap",
|
||||||
|
"wasm-encoder",
|
||||||
|
"wasmparser",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "wasmparser"
|
||||||
|
version = "0.244.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe"
|
||||||
|
dependencies = [
|
||||||
|
"bitflags",
|
||||||
|
"hashbrown 0.15.5",
|
||||||
|
"indexmap",
|
||||||
|
"semver",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "wit-bindgen"
|
||||||
|
version = "0.51.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5"
|
||||||
|
dependencies = [
|
||||||
|
"wit-bindgen-rust-macro",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "wit-bindgen-core"
|
||||||
|
version = "0.51.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc"
|
||||||
|
dependencies = [
|
||||||
|
"anyhow",
|
||||||
|
"heck",
|
||||||
|
"wit-parser",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "wit-bindgen-rust"
|
||||||
|
version = "0.51.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21"
|
||||||
|
dependencies = [
|
||||||
|
"anyhow",
|
||||||
|
"heck",
|
||||||
|
"indexmap",
|
||||||
|
"prettyplease",
|
||||||
|
"syn",
|
||||||
|
"wasm-metadata",
|
||||||
|
"wit-bindgen-core",
|
||||||
|
"wit-component",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "wit-bindgen-rust-macro"
|
||||||
|
version = "0.51.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a"
|
||||||
|
dependencies = [
|
||||||
|
"anyhow",
|
||||||
|
"prettyplease",
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn",
|
||||||
|
"wit-bindgen-core",
|
||||||
|
"wit-bindgen-rust",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "wit-component"
|
||||||
|
version = "0.244.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2"
|
||||||
|
dependencies = [
|
||||||
|
"anyhow",
|
||||||
|
"bitflags",
|
||||||
|
"indexmap",
|
||||||
|
"log",
|
||||||
|
"serde",
|
||||||
|
"serde_derive",
|
||||||
|
"serde_json",
|
||||||
|
"wasm-encoder",
|
||||||
|
"wasm-metadata",
|
||||||
|
"wasmparser",
|
||||||
|
"wit-parser",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "wit-parser"
|
||||||
|
version = "0.244.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736"
|
||||||
|
dependencies = [
|
||||||
|
"anyhow",
|
||||||
|
"id-arena",
|
||||||
|
"indexmap",
|
||||||
|
"log",
|
||||||
|
"semver",
|
||||||
|
"serde",
|
||||||
|
"serde_derive",
|
||||||
|
"serde_json",
|
||||||
|
"unicode-xid",
|
||||||
|
"wasmparser",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "zmij"
|
||||||
|
version = "1.0.20"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "4de98dfa5d5b7fef4ee834d0073d560c9ca7b6c46a71d058c48db7960f8cfaf7"
|
||||||
7
Code/ldpc/Cargo.toml
Normal file
7
Code/ldpc/Cargo.toml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
[package]
|
||||||
|
name = "ldpc"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
rand = "0.10.0"
|
||||||
0
Code/ldpc/src/analysis.rs
Normal file
0
Code/ldpc/src/analysis.rs
Normal file
23
Code/ldpc/src/code.rs
Normal file
23
Code/ldpc/src/code.rs
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
use crate::matrix::MatrixGF2;
|
||||||
|
use crate::tanner::TannerGraph;
|
||||||
|
|
||||||
|
pub struct LdpcCode {
|
||||||
|
pub n: usize, // Nombre de colonnes
|
||||||
|
pub k: usize, // Longueur du message
|
||||||
|
pub h_matrix: MatrixGF2,
|
||||||
|
pub tanner_graph: TannerGraph,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl LdpcCode {
|
||||||
|
pub fn new(h_matrix: MatrixGF2) -> Self {
|
||||||
|
let n = h_matrix.cols;
|
||||||
|
let k = n - h_matrix.rows;
|
||||||
|
let tanner_graph = TannerGraph::from_matrix(&h_matrix);
|
||||||
|
Self {
|
||||||
|
n,
|
||||||
|
k,
|
||||||
|
h_matrix,
|
||||||
|
tanner_graph,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
1
Code/ldpc/src/construction.rs
Normal file
1
Code/ldpc/src/construction.rs
Normal file
@ -0,0 +1 @@
|
|||||||
|
pub mod random;
|
||||||
35
Code/ldpc/src/construction/random.rs
Normal file
35
Code/ldpc/src/construction/random.rs
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
use crate::matrix::MatrixGF2;
|
||||||
|
use rand::RngExt;
|
||||||
|
|
||||||
|
// H doit respecter les contraine des poids w_c et w_r
|
||||||
|
pub fn generate_random_h(rows: usize, cols: usize, wc: usize, wr: usize) -> MatrixGF2 {
|
||||||
|
assert_eq!(rows * wr, cols * wc, "Erreur");
|
||||||
|
loop {
|
||||||
|
let mut data = vec![0; rows * cols];
|
||||||
|
let mut row_w = vec![0; rows];
|
||||||
|
let mut rng = rand::rng();
|
||||||
|
let mut success = true;
|
||||||
|
|
||||||
|
for c in 0..cols {
|
||||||
|
let mut ones_placed = 0;
|
||||||
|
let mut avail_rows: Vec<usize> = (0..rows).filter(|&r| row_w[r] < wr).collect();
|
||||||
|
|
||||||
|
if avail_rows.len() < wc {
|
||||||
|
// Les problèmes...
|
||||||
|
success = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
while ones_placed < wc {
|
||||||
|
let id = rng.random_range(0..avail_rows.len());
|
||||||
|
let r = avail_rows.remove(id);
|
||||||
|
data[r * cols + c] = 1;
|
||||||
|
row_w[r] += 1;
|
||||||
|
ones_placed += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if success {
|
||||||
|
return MatrixGF2::new(rows, cols, data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
1
Code/ldpc/src/decoder.rs
Normal file
1
Code/ldpc/src/decoder.rs
Normal file
@ -0,0 +1 @@
|
|||||||
|
pub mod bit_flip;
|
||||||
16
Code/ldpc/src/decoder/bit_flip.rs
Normal file
16
Code/ldpc/src/decoder/bit_flip.rs
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
use crate::code::LdpcCode;
|
||||||
|
|
||||||
|
pub struct BitFlipDecoder<'a> {
|
||||||
|
code: &'a LdpcCode,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<'a> BitFlipDecoder<'a> {
|
||||||
|
pub fn new(code: &'a LdpcCode) -> Self {
|
||||||
|
Self { code }
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn decode(&self, received: &[u8], max_iter: usize) -> Option<Vec<u8>> {
|
||||||
|
let graph = &self.code.tanner_graph;
|
||||||
|
unimplemented!("Algo de bit-flipp");
|
||||||
|
}
|
||||||
|
}
|
||||||
1
Code/ldpc/src/encoder.rs
Normal file
1
Code/ldpc/src/encoder.rs
Normal file
@ -0,0 +1 @@
|
|||||||
|
pub mod dense;
|
||||||
67
Code/ldpc/src/encoder/dense.rs
Normal file
67
Code/ldpc/src/encoder/dense.rs
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
use crate::code::{self, LdpcCode};
|
||||||
|
use crate::matrix::MatrixGF2;
|
||||||
|
|
||||||
|
pub struct DenseEncoder {
|
||||||
|
pub g_matrix: MatrixGF2,
|
||||||
|
pub h_reduced: MatrixGF2, // A enlever c'est juste pour l'affichage...
|
||||||
|
pub k: usize,
|
||||||
|
pub n: usize,
|
||||||
|
pub col_swaps: Vec<(usize, usize)>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl DenseEncoder {
|
||||||
|
pub fn new(code: &LdpcCode) -> Self {
|
||||||
|
let mut h_reduced = code.h_matrix.clone();
|
||||||
|
let (rank, col_swaps) = h_reduced.gauss_jordan_swap_cols();
|
||||||
|
|
||||||
|
let n = h_reduced.cols;
|
||||||
|
let k = n - rank;
|
||||||
|
|
||||||
|
let mut g_data = vec![0; k * n];
|
||||||
|
|
||||||
|
for r in 0..k {
|
||||||
|
for c in 0..rank {
|
||||||
|
g_data[r * n + c] = h_reduced.get(c, rank + r);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for i in 0..k {
|
||||||
|
g_data[i * n + (rank + i)] = 1;
|
||||||
|
}
|
||||||
|
Self {
|
||||||
|
g_matrix: MatrixGF2::new(k, n, g_data),
|
||||||
|
h_reduced,
|
||||||
|
k,
|
||||||
|
n,
|
||||||
|
col_swaps,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn encode(&self, message: &[u8]) -> Vec<u8> {
|
||||||
|
assert_eq!(message.len(), self.k, "Taille du message non valide");
|
||||||
|
// let mut codeword = vec![0; self.n];
|
||||||
|
|
||||||
|
// s = u * G
|
||||||
|
// for c in 0..self.n {
|
||||||
|
// let mut sum = 0;
|
||||||
|
// for r in 0..self.k {
|
||||||
|
// sum ^= message[r] & self.g_matrix.get(r, c);
|
||||||
|
// }
|
||||||
|
// codeword[c] = sum;
|
||||||
|
// }
|
||||||
|
|
||||||
|
let mut codeword: Vec<u8> = (0..self.n)
|
||||||
|
.map(|c| {
|
||||||
|
message.iter().enumerate().fold(0, |acc, (r, &msg_bit)| {
|
||||||
|
acc ^ (msg_bit & self.g_matrix.get(r, c))
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.collect();
|
||||||
|
|
||||||
|
// Reverse les changement de colonnes
|
||||||
|
for &(c1, c2) in self.col_swaps.iter().rev() {
|
||||||
|
codeword.swap(c1, c2);
|
||||||
|
}
|
||||||
|
|
||||||
|
codeword
|
||||||
|
}
|
||||||
|
}
|
||||||
70
Code/ldpc/src/main.rs
Normal file
70
Code/ldpc/src/main.rs
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
mod analysis;
|
||||||
|
mod code;
|
||||||
|
mod construction;
|
||||||
|
mod decoder;
|
||||||
|
mod encoder;
|
||||||
|
mod matrix;
|
||||||
|
mod tanner;
|
||||||
|
|
||||||
|
use code::LdpcCode;
|
||||||
|
use construction::random::generate_random_h;
|
||||||
|
use encoder::dense::DenseEncoder;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
// TODO : Changer la logique pour trouver k => calculer n selon la longueur du message k (en
|
||||||
|
// rapport des poids) n = (k * w_r) / (w_r - w_c)
|
||||||
|
println!("LDPC\n");
|
||||||
|
|
||||||
|
let n = 12;
|
||||||
|
let m = 6;
|
||||||
|
let wc = 2;
|
||||||
|
let wr = 4;
|
||||||
|
|
||||||
|
let mut h_matrix = generate_random_h(m, n, wc, wr);
|
||||||
|
println!("H aléatoire {m}x{n} :");
|
||||||
|
h_matrix.print();
|
||||||
|
|
||||||
|
let ldpc = LdpcCode::new(h_matrix.clone());
|
||||||
|
println!("\nLDPC instancié");
|
||||||
|
|
||||||
|
println!("Extraction de G");
|
||||||
|
let encoder = DenseEncoder::new(&ldpc);
|
||||||
|
|
||||||
|
println!("\n -> Matrcie H après Gauss-Jordan avec inversion de colonne de la forme [I | A]");
|
||||||
|
encoder.h_reduced.print();
|
||||||
|
|
||||||
|
println!("G {}x{}", encoder.k, encoder.n);
|
||||||
|
encoder.g_matrix.print();
|
||||||
|
|
||||||
|
let message = vec![1; encoder.k];
|
||||||
|
let codeword = encoder.encode(&message);
|
||||||
|
|
||||||
|
println!("\nMessage u : {:?}", message);
|
||||||
|
println!("\n Codeword s : {:?}", codeword);
|
||||||
|
|
||||||
|
// let mut is_valid = true;
|
||||||
|
// for r in 0..m {
|
||||||
|
// let mut sum = 0;
|
||||||
|
// for c in 0..n {
|
||||||
|
// sum ^= codeword[c] & h_matrix.get(r, c);
|
||||||
|
// }
|
||||||
|
// if sum != 0 {
|
||||||
|
// is_valid = false;
|
||||||
|
// break;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
let is_valid = (0..m).all(|r| {
|
||||||
|
let sum = codeword
|
||||||
|
.iter()
|
||||||
|
.enumerate()
|
||||||
|
.fold(0, |acc, (c, &bit)| acc ^ (bit & h_matrix.get(r, c)));
|
||||||
|
sum == 0
|
||||||
|
});
|
||||||
|
|
||||||
|
println!("\n{}", if is_valid { "Vrai" } else { "Faux" });
|
||||||
|
|
||||||
|
// println!("\nGauss-Jordan sur H :");
|
||||||
|
// h_matrix.gauss_jordan();
|
||||||
|
// h_matrix.print();
|
||||||
|
}
|
||||||
133
Code/ldpc/src/matrix.rs
Normal file
133
Code/ldpc/src/matrix.rs
Normal file
@ -0,0 +1,133 @@
|
|||||||
|
#[derive(Clone, Debug)]
|
||||||
|
pub struct MatrixGF2 {
|
||||||
|
pub rows: usize,
|
||||||
|
pub cols: usize,
|
||||||
|
pub data: Vec<u8>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl MatrixGF2 {
|
||||||
|
pub fn new(rows: usize, cols: usize, data: Vec<u8>) -> Self {
|
||||||
|
assert_eq!(data.len(), rows * cols, "Taille incorrecte.");
|
||||||
|
Self { rows, cols, data }
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get(&self, i: usize, j: usize) -> u8 {
|
||||||
|
self.data[i * self.cols + j]
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn set(&mut self, i: usize, j: usize, val: u8) {
|
||||||
|
self.data[i * self.cols + j] = val;
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn print(&self) {
|
||||||
|
for i in 0..self.rows {
|
||||||
|
let start = i * self.cols;
|
||||||
|
let end = start + self.cols;
|
||||||
|
println!("{:?}", &self.data[start..end]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn swap_rows(&mut self, r1: usize, r2: usize) {
|
||||||
|
if r1 == r2 {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
for c in 0..self.cols {
|
||||||
|
let v1 = self.get(r1, c);
|
||||||
|
let v2 = self.get(r2, c);
|
||||||
|
self.set(r1, c, v2);
|
||||||
|
self.set(r2, c, v1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn swap_cols(&mut self, c1: usize, c2: usize) {
|
||||||
|
if c1 == c2 {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
for r in 0..self.rows {
|
||||||
|
let v1 = self.get(r, c1);
|
||||||
|
let v2 = self.get(r, c2);
|
||||||
|
self.set(r, c1, v2);
|
||||||
|
self.set(r, c2, v1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn xor_rows(&mut self, src: usize, dest: usize) {
|
||||||
|
for c in 0..self.cols {
|
||||||
|
let v_src = self.get(src, c);
|
||||||
|
let v_dest = self.get(dest, c);
|
||||||
|
self.set(dest, c, v_src ^ v_dest);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn gauss_jordan(&mut self) {
|
||||||
|
let mut l = 0;
|
||||||
|
for r in 0..self.rows {
|
||||||
|
if l >= self.cols {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
let mut i = r;
|
||||||
|
while self.get(i, l) == 0 {
|
||||||
|
i += 1;
|
||||||
|
if i == self.rows {
|
||||||
|
i = r;
|
||||||
|
l += 1;
|
||||||
|
if l == self.cols {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
self.swap_rows(i, r);
|
||||||
|
for i in 0..self.rows {
|
||||||
|
if i != r && self.get(i, l) == 1 {
|
||||||
|
self.xor_rows(r, i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
l += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn gauss_jordan_swap_cols(&mut self) -> (usize, Vec<(usize, usize)>) {
|
||||||
|
let mut rank = 0;
|
||||||
|
let mut col_swaps = Vec::new();
|
||||||
|
let rows = self.rows;
|
||||||
|
let cols = self.cols;
|
||||||
|
|
||||||
|
for c in 0..cols {
|
||||||
|
if rank >= rows {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
let mut pivot_r = rank;
|
||||||
|
while pivot_r < rows && self.get(pivot_r, c) == 0 {
|
||||||
|
pivot_r += 1;
|
||||||
|
}
|
||||||
|
if pivot_r == rows {
|
||||||
|
let mut found_swap = false;
|
||||||
|
for c2 in (c + 1)..cols {
|
||||||
|
let mut pr2 = rank;
|
||||||
|
while pr2 < rows && self.get(pr2, c2) == 0 {
|
||||||
|
pr2 += 1;
|
||||||
|
}
|
||||||
|
if pr2 < rows {
|
||||||
|
self.swap_cols(c, c2);
|
||||||
|
col_swaps.push((c, c2));
|
||||||
|
pivot_r = pr2;
|
||||||
|
found_swap = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if !found_swap {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
self.swap_rows(rank, pivot_r);
|
||||||
|
|
||||||
|
for i in 0..rows {
|
||||||
|
if i != rank && self.get(i, c) == 1 {
|
||||||
|
self.xor_rows(rank, i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
rank += 1;
|
||||||
|
}
|
||||||
|
(rank, col_swaps)
|
||||||
|
}
|
||||||
|
}
|
||||||
24
Code/ldpc/src/tanner.rs
Normal file
24
Code/ldpc/src/tanner.rs
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
use crate::matrix::MatrixGF2;
|
||||||
|
|
||||||
|
#[derive(Debug, Clone)]
|
||||||
|
pub struct TannerGraph {
|
||||||
|
pub check: Vec<Vec<usize>>,
|
||||||
|
pub bits: Vec<Vec<usize>>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl TannerGraph {
|
||||||
|
pub fn from_matrix(matrix: &MatrixGF2) -> Self {
|
||||||
|
let mut check = vec![vec![]; matrix.rows];
|
||||||
|
let mut bits = vec![vec![]; matrix.cols];
|
||||||
|
|
||||||
|
for i in 0..matrix.rows {
|
||||||
|
for j in 0..matrix.cols {
|
||||||
|
if matrix.get(i, j) == 0 {
|
||||||
|
check[i].push(j);
|
||||||
|
bits[j].push(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Self { check, bits }
|
||||||
|
}
|
||||||
|
}
|
||||||
1
Code/ldpc/src/target/.rustc_info.json
Normal file
1
Code/ldpc/src/target/.rustc_info.json
Normal file
@ -0,0 +1 @@
|
|||||||
|
{"rustc_fingerprint":6955059790845437392,"outputs":{"12016735552878863467":{"success":true,"status":"","code":0,"stdout":"rustc 1.87.0 (17067e9ac 2025-05-09)\nbinary: rustc\ncommit-hash: 17067e9ac6d7ecb70e50f92c1944e545188d2359\ncommit-date: 2025-05-09\nhost: x86_64-unknown-linux-gnu\nrelease: 1.87.0\nLLVM version: 20.1.1\n","stderr":""},"13822592305234237280":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.so\nlib___.so\nlib___.a\nlib___.so\n/home/zefad/.rustup/toolchains/stable-x86_64-unknown-linux-gnu\noff\npacked\nunpacked\n___\ndebug_assertions\npanic=\"unwind\"\nproc_macro\ntarget_abi=\"\"\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"gnu\"\ntarget_family=\"unix\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_os=\"linux\"\ntarget_pointer_width=\"64\"\ntarget_vendor=\"unknown\"\nunix\n","stderr":""}},"successes":{}}
|
||||||
3
Code/ldpc/src/target/CACHEDIR.TAG
Normal file
3
Code/ldpc/src/target/CACHEDIR.TAG
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
Signature: 8a477f597d28d172789f06886806bc55
|
||||||
|
# This file is a cache directory tag created by cargo.
|
||||||
|
# For information about cache directory tags see https://bford.info/cachedir/
|
||||||
0
Code/ldpc/src/target/debug/.cargo-lock
Normal file
0
Code/ldpc/src/target/debug/.cargo-lock
Normal file
Binary file not shown.
@ -0,0 +1 @@
|
|||||||
|
This file has an mtime of when this was started.
|
||||||
@ -0,0 +1 @@
|
|||||||
|
449395b8315c57b8
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{"rustc":15597765236515928571,"features":"[]","declared_features":"[\"core\", \"rustc-dep-of-std\"]","target":13840298032947503755,"profile":2241668132362809309,"path":4035053026656971091,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/cfg-if-ca1925c66a6c3d3e/dep-lib-cfg_if","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||||
Binary file not shown.
@ -0,0 +1 @@
|
|||||||
|
This file has an mtime of when this was started.
|
||||||
@ -0,0 +1 @@
|
|||||||
|
5b53b67a13196311
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{"rustc":15597765236515928571,"features":"[\"rng\"]","declared_features":"[\"cipher\", \"default\", \"legacy\", \"rng\", \"xchacha\", \"zeroize\"]","target":5186012452570817782,"profile":9318172923473070351,"path":8216691501699566625,"deps":[[7667230146095136825,"cfg_if",false,13283186994572530500],[15529777797982113006,"rand_core",false,6997758203512154364],[16378603989457970572,"cpufeatures",false,13097977866850786625]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/chacha20-ba73b3355741f3b7/dep-lib-chacha20","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||||
Binary file not shown.
@ -0,0 +1 @@
|
|||||||
|
This file has an mtime of when this was started.
|
||||||
@ -0,0 +1 @@
|
|||||||
|
41dd914d795dc5b5
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{"rustc":15597765236515928571,"features":"[]","declared_features":"[]","target":7407970971831147067,"profile":13295673445137985655,"path":9454082240038408872,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/cpufeatures-9ffb3887bc26449f/dep-lib-cpufeatures","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||||
@ -0,0 +1 @@
|
|||||||
|
c5c51713e8c3f49b
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{"rustc":15597765236515928571,"features":"[\"std\", \"sys_rng\"]","declared_features":"[\"std\", \"sys_rng\", \"wasm_js\"]","target":2835126046236718539,"profile":14646319430865968450,"path":3382059170738956057,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/getrandom-1a272dcfc1ad1bc8/dep-build-script-build-script-build","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||||
Binary file not shown.
@ -0,0 +1 @@
|
|||||||
|
This file has an mtime of when this was started.
|
||||||
@ -0,0 +1 @@
|
|||||||
|
c2b1e091b8c07c26
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{"rustc":15597765236515928571,"features":"","declared_features":"","target":0,"profile":0,"path":0,"deps":[[2764386384280758697,"build_script_build",false,11237822371716384197]],"local":[{"RerunIfChanged":{"output":"debug/build/getrandom-276accaa19be069e/output","paths":["build.rs"]}}],"rustflags":[],"config":0,"compile_kind":0}
|
||||||
Binary file not shown.
@ -0,0 +1 @@
|
|||||||
|
This file has an mtime of when this was started.
|
||||||
@ -0,0 +1 @@
|
|||||||
|
403347cf2a1a118b
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{"rustc":15597765236515928571,"features":"[\"std\", \"sys_rng\"]","declared_features":"[\"std\", \"sys_rng\", \"wasm_js\"]","target":5479159445871601843,"profile":1675109806303236742,"path":17489016984022900907,"deps":[[2764386384280758697,"build_script_build",false,2773303369507320258],[7667230146095136825,"cfg_if",false,13283186994572530500],[10635491994102256863,"libc",false,14746483844694500236],[15529777797982113006,"rand_core",false,6997758203512154364]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/getrandom-94f3139d7013326a/dep-lib-getrandom","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||||
@ -0,0 +1 @@
|
|||||||
|
This file has an mtime of when this was started.
|
||||||
@ -0,0 +1 @@
|
|||||||
|
8909df34efa7ca80
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{"rustc":15597765236515928571,"features":"[]","declared_features":"[]","target":2879268224904887264,"profile":3316208278650011218,"path":4942398508502643691,"deps":[[12595129211985828508,"rand",false,10775189634579942843]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/ldpc-00cd1695bdd5ac16/dep-test-bin-ldpc","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||||
@ -0,0 +1 @@
|
|||||||
|
dcc11b19b5a67c82
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{"rustc":15597765236515928571,"features":"[]","declared_features":"[]","target":2879268224904887264,"profile":17672942494452627365,"path":4942398508502643691,"deps":[[12595129211985828508,"rand",false,10775189634579942843]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/ldpc-15ac6faf1f2e9880/dep-bin-ldpc","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||||
@ -0,0 +1 @@
|
|||||||
|
This file has an mtime of when this was started.
|
||||||
@ -0,0 +1 @@
|
|||||||
|
c1f106d49bfbb924
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{"rustc":15597765236515928571,"features":"[]","declared_features":"[]","target":2879268224904887264,"profile":17672942494452627365,"path":4942398508502643691,"deps":[[12595129211985828508,"rand",false,10775189634579942843]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/ldpc-200ae86d4d1b6d87/dep-bin-ldpc","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||||
Binary file not shown.
@ -0,0 +1 @@
|
|||||||
|
This file has an mtime of when this was started.
|
||||||
Binary file not shown.
@ -0,0 +1 @@
|
|||||||
|
This file has an mtime of when this was started.
|
||||||
@ -0,0 +1 @@
|
|||||||
|
30fe5706c139df18
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{"rustc":15597765236515928571,"features":"[]","declared_features":"[]","target":2879268224904887264,"profile":3316208278650011218,"path":4942398508502643691,"deps":[[12595129211985828508,"rand",false,10775189634579942843]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/ldpc-4e3139e1c1d60be0/dep-test-bin-ldpc","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||||
@ -0,0 +1 @@
|
|||||||
|
337f14642e0151b8
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{"rustc":15597765236515928571,"features":"[]","declared_features":"[]","target":2879268224904887264,"profile":17672942494452627365,"path":4942398508502643691,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/ldpc-6dc3ef13289416fe/dep-bin-ldpc","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||||
Binary file not shown.
@ -0,0 +1 @@
|
|||||||
|
This file has an mtime of when this was started.
|
||||||
@ -0,0 +1 @@
|
|||||||
|
This file has an mtime of when this was started.
|
||||||
@ -0,0 +1 @@
|
|||||||
|
87df21f80941c364
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{"rustc":15597765236515928571,"features":"[]","declared_features":"[]","target":2879268224904887264,"profile":3316208278650011218,"path":4942398508502643691,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/ldpc-752405653894e9ea/dep-test-bin-ldpc","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||||
Binary file not shown.
@ -0,0 +1 @@
|
|||||||
|
This file has an mtime of when this was started.
|
||||||
@ -0,0 +1 @@
|
|||||||
|
8e09316eebeb4b4c
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{"rustc":15597765236515928571,"features":"[]","declared_features":"[]","target":2879268224904887264,"profile":3316208278650011218,"path":4942398508502643691,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/ldpc-ac207a955fd4200d/dep-test-bin-ldpc","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||||
@ -0,0 +1 @@
|
|||||||
|
bd87e6b109dd312d
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{"rustc":15597765236515928571,"features":"[]","declared_features":"[]","target":2879268224904887264,"profile":17672942494452627365,"path":4942398508502643691,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/ldpc-e65964cdd5b34979/dep-bin-ldpc","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||||
@ -0,0 +1 @@
|
|||||||
|
This file has an mtime of when this was started.
|
||||||
@ -0,0 +1 @@
|
|||||||
|
fb4895f5469c978b
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{"rustc":15597765236515928571,"features":"[]","declared_features":"[\"align\", \"const-extern-fn\", \"default\", \"extra_traits\", \"rustc-dep-of-std\", \"rustc-std-workspace-core\", \"std\", \"use_std\"]","target":5408242616063297496,"profile":1565149285177326037,"path":15202769474511483467,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/libc-2e2dcdcfa7ee7c23/dep-build-script-build-script-build","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||||
Binary file not shown.
@ -0,0 +1 @@
|
|||||||
|
This file has an mtime of when this was started.
|
||||||
Binary file not shown.
@ -0,0 +1 @@
|
|||||||
|
This file has an mtime of when this was started.
|
||||||
@ -0,0 +1 @@
|
|||||||
|
8c630d31ed08a6cc
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{"rustc":15597765236515928571,"features":"[]","declared_features":"[\"align\", \"const-extern-fn\", \"default\", \"extra_traits\", \"rustc-dep-of-std\", \"rustc-std-workspace-core\", \"std\", \"use_std\"]","target":17682796336736096309,"profile":15222631470922254920,"path":5840482219443486265,"deps":[[10635491994102256863,"build_script_build",false,9216864148508321614]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/libc-3e3aceecd979b208/dep-lib-libc","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||||
@ -0,0 +1 @@
|
|||||||
|
4e27df2a1ce1e87f
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{"rustc":15597765236515928571,"features":"","declared_features":"","target":0,"profile":0,"path":0,"deps":[[10635491994102256863,"build_script_build",false,10058680121337137403]],"local":[{"RerunIfChanged":{"output":"debug/build/libc-edda3631204ef4cc/output","paths":["build.rs"]}},{"RerunIfEnvChanged":{"var":"RUST_LIBC_UNSTABLE_FREEBSD_VERSION","val":null}},{"RerunIfEnvChanged":{"var":"RUST_LIBC_UNSTABLE_MUSL_V1_2_3","val":null}},{"RerunIfEnvChanged":{"var":"RUST_LIBC_UNSTABLE_LINUX_TIME_BITS64","val":null}},{"RerunIfEnvChanged":{"var":"RUST_LIBC_UNSTABLE_GNU_FILE_OFFSET_BITS","val":null}},{"RerunIfEnvChanged":{"var":"RUST_LIBC_UNSTABLE_GNU_TIME_BITS","val":null}}],"rustflags":[],"config":0,"compile_kind":0}
|
||||||
Binary file not shown.
@ -0,0 +1 @@
|
|||||||
|
This file has an mtime of when this was started.
|
||||||
@ -0,0 +1 @@
|
|||||||
|
bbcd9b1ce2298995
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{"rustc":15597765236515928571,"features":"[\"alloc\", \"default\", \"std\", \"std_rng\", \"sys_rng\", \"thread_rng\"]","declared_features":"[\"alloc\", \"chacha\", \"default\", \"log\", \"serde\", \"simd_support\", \"std\", \"std_rng\", \"sys_rng\", \"thread_rng\", \"unbiased\"]","target":17444007749879458630,"profile":2241668132362809309,"path":12655442880386247481,"deps":[[2764386384280758697,"getrandom",false,10020819417044562752],[3484220520784136136,"chacha20",false,1252872692792972123],[15529777797982113006,"rand_core",false,6997758203512154364]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/rand-de3b3f4ac7c2b2e8/dep-lib-rand","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||||
Binary file not shown.
@ -0,0 +1 @@
|
|||||||
|
This file has an mtime of when this was started.
|
||||||
@ -0,0 +1 @@
|
|||||||
|
fce86aa802081d61
|
||||||
@ -0,0 +1 @@
|
|||||||
|
{"rustc":15597765236515928571,"features":"[]","declared_features":"[]","target":8662763397516463860,"profile":1239367160364851460,"path":16830337747561814775,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/rand_core-674d544887edc4de/dep-lib-rand_core","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}
|
||||||
BIN
Code/ldpc/src/target/debug/build/getrandom-1a272dcfc1ad1bc8/build-script-build
Executable file
BIN
Code/ldpc/src/target/debug/build/getrandom-1a272dcfc1ad1bc8/build-script-build
Executable file
Binary file not shown.
Binary file not shown.
@ -0,0 +1,5 @@
|
|||||||
|
/home/zefad/Documents/TIPE/Code/ldpc/target/debug/build/getrandom-1a272dcfc1ad1bc8/build_script_build-1a272dcfc1ad1bc8: /home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/getrandom-0.4.1/build.rs
|
||||||
|
|
||||||
|
/home/zefad/Documents/TIPE/Code/ldpc/target/debug/build/getrandom-1a272dcfc1ad1bc8/build_script_build-1a272dcfc1ad1bc8.d: /home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/getrandom-0.4.1/build.rs
|
||||||
|
|
||||||
|
/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/getrandom-0.4.1/build.rs:
|
||||||
@ -0,0 +1 @@
|
|||||||
|
This file has an mtime of when this was started.
|
||||||
@ -0,0 +1 @@
|
|||||||
|
cargo:rerun-if-changed=build.rs
|
||||||
@ -0,0 +1 @@
|
|||||||
|
/home/zefad/Documents/TIPE/Code/ldpc/target/debug/build/getrandom-276accaa19be069e/out
|
||||||
BIN
Code/ldpc/src/target/debug/build/libc-2e2dcdcfa7ee7c23/build-script-build
Executable file
BIN
Code/ldpc/src/target/debug/build/libc-2e2dcdcfa7ee7c23/build-script-build
Executable file
Binary file not shown.
Binary file not shown.
@ -0,0 +1,5 @@
|
|||||||
|
/home/zefad/Documents/TIPE/Code/ldpc/target/debug/build/libc-2e2dcdcfa7ee7c23/build_script_build-2e2dcdcfa7ee7c23: /home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/libc-0.2.181/build.rs
|
||||||
|
|
||||||
|
/home/zefad/Documents/TIPE/Code/ldpc/target/debug/build/libc-2e2dcdcfa7ee7c23/build_script_build-2e2dcdcfa7ee7c23.d: /home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/libc-0.2.181/build.rs
|
||||||
|
|
||||||
|
/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/libc-0.2.181/build.rs:
|
||||||
@ -0,0 +1 @@
|
|||||||
|
This file has an mtime of when this was started.
|
||||||
@ -0,0 +1,25 @@
|
|||||||
|
cargo:rerun-if-changed=build.rs
|
||||||
|
cargo:rerun-if-env-changed=RUST_LIBC_UNSTABLE_FREEBSD_VERSION
|
||||||
|
cargo:rustc-cfg=freebsd12
|
||||||
|
cargo:rerun-if-env-changed=RUST_LIBC_UNSTABLE_MUSL_V1_2_3
|
||||||
|
cargo:rerun-if-env-changed=RUST_LIBC_UNSTABLE_LINUX_TIME_BITS64
|
||||||
|
cargo:rerun-if-env-changed=RUST_LIBC_UNSTABLE_GNU_FILE_OFFSET_BITS
|
||||||
|
cargo:rerun-if-env-changed=RUST_LIBC_UNSTABLE_GNU_TIME_BITS
|
||||||
|
cargo:rustc-check-cfg=cfg(emscripten_old_stat_abi)
|
||||||
|
cargo:rustc-check-cfg=cfg(espidf_time32)
|
||||||
|
cargo:rustc-check-cfg=cfg(freebsd10)
|
||||||
|
cargo:rustc-check-cfg=cfg(freebsd11)
|
||||||
|
cargo:rustc-check-cfg=cfg(freebsd12)
|
||||||
|
cargo:rustc-check-cfg=cfg(freebsd13)
|
||||||
|
cargo:rustc-check-cfg=cfg(freebsd14)
|
||||||
|
cargo:rustc-check-cfg=cfg(freebsd15)
|
||||||
|
cargo:rustc-check-cfg=cfg(gnu_file_offset_bits64)
|
||||||
|
cargo:rustc-check-cfg=cfg(gnu_time_bits64)
|
||||||
|
cargo:rustc-check-cfg=cfg(libc_deny_warnings)
|
||||||
|
cargo:rustc-check-cfg=cfg(linux_time_bits64)
|
||||||
|
cargo:rustc-check-cfg=cfg(musl_v1_2_3)
|
||||||
|
cargo:rustc-check-cfg=cfg(musl32_time64)
|
||||||
|
cargo:rustc-check-cfg=cfg(vxworks_lt_25_09)
|
||||||
|
cargo:rustc-check-cfg=cfg(target_os,values("switch","aix","ohos","hurd","rtems","visionos","nuttx","cygwin","qurt"))
|
||||||
|
cargo:rustc-check-cfg=cfg(target_env,values("illumos","wasi","aix","ohos","nto71_iosock","nto80"))
|
||||||
|
cargo:rustc-check-cfg=cfg(target_arch,values("loongarch64","mips32r6","mips64r6","csky"))
|
||||||
@ -0,0 +1 @@
|
|||||||
|
/home/zefad/Documents/TIPE/Code/ldpc/target/debug/build/libc-edda3631204ef4cc/out
|
||||||
@ -0,0 +1,5 @@
|
|||||||
|
/home/zefad/Documents/TIPE/Code/ldpc/target/debug/deps/libcfg_if-ca1925c66a6c3d3e.rmeta: /home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cfg-if-1.0.4/src/lib.rs
|
||||||
|
|
||||||
|
/home/zefad/Documents/TIPE/Code/ldpc/target/debug/deps/cfg_if-ca1925c66a6c3d3e.d: /home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cfg-if-1.0.4/src/lib.rs
|
||||||
|
|
||||||
|
/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/cfg-if-1.0.4/src/lib.rs:
|
||||||
12
Code/ldpc/src/target/debug/deps/chacha20-ba73b3355741f3b7.d
Normal file
12
Code/ldpc/src/target/debug/deps/chacha20-ba73b3355741f3b7.d
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
/home/zefad/Documents/TIPE/Code/ldpc/target/debug/deps/libchacha20-ba73b3355741f3b7.rmeta: /home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/chacha20-0.10.0/src/lib.rs /home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/chacha20-0.10.0/src/variants.rs /home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/chacha20-0.10.0/src/backends.rs /home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/chacha20-0.10.0/src/rng.rs /home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/chacha20-0.10.0/src/../README.md /home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/chacha20-0.10.0/src/backends/soft.rs /home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/chacha20-0.10.0/src/backends/avx2.rs /home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/chacha20-0.10.0/src/backends/sse2.rs
|
||||||
|
|
||||||
|
/home/zefad/Documents/TIPE/Code/ldpc/target/debug/deps/chacha20-ba73b3355741f3b7.d: /home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/chacha20-0.10.0/src/lib.rs /home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/chacha20-0.10.0/src/variants.rs /home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/chacha20-0.10.0/src/backends.rs /home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/chacha20-0.10.0/src/rng.rs /home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/chacha20-0.10.0/src/../README.md /home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/chacha20-0.10.0/src/backends/soft.rs /home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/chacha20-0.10.0/src/backends/avx2.rs /home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/chacha20-0.10.0/src/backends/sse2.rs
|
||||||
|
|
||||||
|
/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/chacha20-0.10.0/src/lib.rs:
|
||||||
|
/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/chacha20-0.10.0/src/variants.rs:
|
||||||
|
/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/chacha20-0.10.0/src/backends.rs:
|
||||||
|
/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/chacha20-0.10.0/src/rng.rs:
|
||||||
|
/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/chacha20-0.10.0/src/../README.md:
|
||||||
|
/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/chacha20-0.10.0/src/backends/soft.rs:
|
||||||
|
/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/chacha20-0.10.0/src/backends/avx2.rs:
|
||||||
|
/home/zefad/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/chacha20-0.10.0/src/backends/sse2.rs:
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user