MCPcopy Create free account
hub / github.com/ciphermodelabs/ciphercore / shrink

Method shrink

ciphercore-base/src/ops/comparisons.rs:149–172  ·  view source on GitHub ↗

Joins even-indexed and odd-indexed values If the number of elements is not divisible by two, the first element is returned in `ShrinkResult.remainder`.

(&self)

Source from the content-addressed store, hash-verified

147 /// If the number of elements is not divisible by two,
148 /// the first element is returned in `ShrinkResult.remainder`.
149 fn shrink(&self) -> Result<ShrinkResult> {
150 let bit_len = self.a_equal_b.get_type()?.get_shape()[0] as i64;
151 let offset = bit_len % 2;
152 let remainder = if offset == 0 {
153 None
154 } else {
155 Some(Self {
156 a_equal_b: self.a_equal_b.get(vec![0])?,
157 a: self.a.get(vec![0])?,
158 })
159 };
160 let shrinked = if bit_len <= 1 {
161 None
162 } else {
163 let slice0 = self.sub_slice(offset, bit_len)?;
164 let slice1 = self.sub_slice(offset + 1, bit_len)?;
165 Some(slice0.join(&slice1)?)
166 };
167
168 Ok(ShrinkResult {
169 shrinked,
170 remainder,
171 })
172 }
173
174 /// Returns every second element starting from `start_offset`
175 fn sub_slice(&self, start_offset: i64, bit_len: i64) -> Result<Self> {

Callers 1

build_comparison_graphFunction · 0.45

Calls 5

get_shapeMethod · 0.80
get_typeMethod · 0.45
getMethod · 0.45
sub_sliceMethod · 0.45
joinMethod · 0.45

Tested by

no test coverage detected