// TRITIUM-PROVENANCE sha256=fa150e08b678777a032d553feb0ff5a804a6e70b0b4702daf495d667b6bba189 lang=rust // TRITIUM-HEIGHT high=1.00 mid=0.00 low=0.00 fn im2col_f(x: &mut [f64], h: i64, w: i64, kh: i64, kw: i64, out: &mut [f64]) -> i64 { let mut j = 0; let mut u = 0; let mut v = 0; let mut p = 0; let mut i = 0; while i < ((h - kh) + 1) { j = 0; while j < ((w - kw) + 1) { u = 0; while u < kh { v = 0; while v < kw { out[p as usize] = x[(((((i + u) * w) + (j + v))) as usize)]; p += 1; v += 1; } u += 1; } j += 1; } i += 1; } p } fn conv2d_f(x: &mut [f64], h: i64, w: i64, k: &mut [f64], kh: i64, kw: i64, out: &mut [f64]) -> i64 { let mut j = 0; let mut u = 0; let mut v = 0; let mut x_2 = 0.0; let mut sum = (h - kh) + 1; let mut sum_2 = (w - kw) + 1; let mut i = 0; while i < sum { j = 0; while j < sum_2 { x_2 = 0.0; u = 0; while u < kh { v = 0; while v < kw { x_2 = x_2 + (x[(((((i + u) * w) + (j + v))) as usize)] * k[((((u * kw) + v)) as usize)]); v += 1; } u += 1; } out[((((i * sum_2) + j)) as usize)] = x_2; j += 1; } i += 1; } sum * sum_2 } fn list_get(a: &[i64], i: i64) -> i64 { if i < 0 { return 0; } let i = i as usize; if i >= a.len() { 0 } else { a[i] } } fn list_set(vals: &mut [i64], i: i64, v: i64) -> i64 { vals[i as usize] = v; v } fn relu(vals: &mut [i64], n: i64) -> i64 { let mut i = 0; while i < n { if list_get(vals, i) < 0 { list_set(vals, i, 0); } i += 1; } n }