Files
concrete/docs/dev/api/concrete.fhe.extensions.round_bit_pattern.md

5.8 KiB

module concrete.fhe.extensions.round_bit_pattern

Declaration of round_bit_pattern function, to provide an interface for rounded table lookups.

Global Variables

  • MAXIMUM_TLU_BIT_WIDTH

function round_bit_pattern

round_bit_pattern(
    x: Union[int, integer, List, ndarray, Tracer],
    lsbs_to_remove: Union[int, AutoRounder],
    overflow_protection: bool = True,
    exactness: Optional[Exactness] = None
)  Union[int, integer, List, ndarray, Tracer]

Round the bit pattern of an integer.

If lsbs_to_remove is an AutoRounder: corresponding integer value will be determined by adjustment process.

x = 0b_0000_0000 , lsbs_to_remove = 3 => 0b_0000_0000 x = 0b_0000_0001 , lsbs_to_remove = 3 => 0b_0000_0000 x = 0b_0000_0010 , lsbs_to_remove = 3 => 0b_0000_0000 x = 0b_0000_0011 , lsbs_to_remove = 3 => 0b_0000_0000 x = 0b_0000_0100 , lsbs_to_remove = 3 => 0b_0000_1000 x = 0b_0000_0101 , lsbs_to_remove = 3 => 0b_0000_1000 x = 0b_0000_0110 , lsbs_to_remove = 3 => 0b_0000_1000 x = 0b_0000_0111 , lsbs_to_remove = 3 => 0b_0000_1000

x = 0b_1010_0000 , lsbs_to_remove = 3 => 0b_1010_0000 x = 0b_1010_0001 , lsbs_to_remove = 3 => 0b_1010_0000 x = 0b_1010_0010 , lsbs_to_remove = 3 => 0b_1010_0000 x = 0b_1010_0011 , lsbs_to_remove = 3 => 0b_1010_0000 x = 0b_1010_0100 , lsbs_to_remove = 3 => 0b_1010_1000 x = 0b_1010_0101 , lsbs_to_remove = 3 => 0b_1010_1000 x = 0b_1010_0110 , lsbs_to_remove = 3 => 0b_1010_1000 x = 0b_1010_0111 , lsbs_to_remove = 3 => 0b_1010_1000

x = 0b_1010_1000 , lsbs_to_remove = 3 => 0b_1010_1000 x = 0b_1010_1001 , lsbs_to_remove = 3 => 0b_1010_1000 x = 0b_1010_1010 , lsbs_to_remove = 3 => 0b_1010_1000 x = 0b_1010_1011 , lsbs_to_remove = 3 => 0b_1010_1000 x = 0b_1010_1100 , lsbs_to_remove = 3 => 0b_1011_0000 x = 0b_1010_1101 , lsbs_to_remove = 3 => 0b_1011_0000 x = 0b_1010_1110 , lsbs_to_remove = 3 => 0b_1011_0000 x = 0b_1010_1111 , lsbs_to_remove = 3 => 0b_1011_0000

x = 0b_1011_1000 , lsbs_to_remove = 3 => 0b_1011_1000 x = 0b_1011_1001 , lsbs_to_remove = 3 => 0b_1011_1000 x = 0b_1011_1010 , lsbs_to_remove = 3 => 0b_1011_1000 x = 0b_1011_1011 , lsbs_to_remove = 3 => 0b_1011_1000 x = 0b_1011_1100 , lsbs_to_remove = 3 => 0b_1100_0000 x = 0b_1011_1101 , lsbs_to_remove = 3 => 0b_1100_0000 x = 0b_1011_1110 , lsbs_to_remove = 3 => 0b_1100_0000 x = 0b_1011_1111 , lsbs_to_remove = 3 => 0b_1100_0000

Args: x (Union[int, np.integer, np.ndarray, Tracer]): input to round

lsbs_to_remove (Union[int, AutoRounder]): number of the least significant bits to remove or an auto rounder object which will be used to determine the integer value

overflow_protection (bool, default = True) whether to adjust bit widths and lsbs to remove to avoid overflows

exactness (Optional[Exactness], default = None) select the exactness of the operation, None means use the global exactness. The global exactnessdefault is EXACT. It can be changed on the Configuration object.

Returns: Union[int, np.integer, np.ndarray, Tracer]: Tracer that represents the operation during tracing rounded value(s) otherwise


class Adjusting

Adjusting class, to be used as early stop signal during adjustment.

method __init__

__init__(rounder: 'AutoRounder', input_min: int, input_max: int)

class AutoRounder

AutoRounder class, to optimize for number of msbs to keep during round bit pattern operation.

method __init__

__init__(target_msbs: int = 16)

method adjust

adjust(
    function: Callable,
    inputset: Union[Iterable[Any], Iterable[Tuple[Any, ]]]
)

Adjust AutoRounders in a function using an inputset.


method dump_dict

dump_dict()  Dict

Dump properties of the rounder to a dict.


classmethod load_dict

load_dict(properties: Dict)  AutoRounder

Load previously dumped rounder.