Function left_subtree_len
pub fn left_subtree_len(input_len: u64) -> u64
Given the length in bytes of either a complete input or a subtree input, return the number of bytes that belong to its left child subtree. The rest belong to its right child subtree.
Concretely, this function returns the largest power-of-two number of bytes that's strictly less
than input_len. This leads to a tree where all left subtrees are "complete" and at least as
large as their sibling right subtrees, as specified in section 2.1 of the BLAKE3
paper. For example, if an
input is exactly two chunks, the left subtree gets the first chunk and the right subtree gets
the second chunk. But if an input is two chunks plus one more byte, then its left subtree gets
two chunks, and its right subtree only gets one byte.
This function isn't meaningful for one chunk of input, because chunks don't have children. It
currently panics in debug mode if input_len <= CHUNK_LEN.
Example
Hash a input of random length as two subtrees:
#