Change Log

Next release

v0.8 (September 9, 2022)

  • Data structure: ternary_truth_table and quaternary_truth_table (contributed by Siang-Yun Lee and Gianluca Radi) #133

  • Print: print_kmap (contributed by Gianluca Radi) #129

  • Constructors: create_from_formula (contributed by Alessandro Tempia Calvino) #123

  • Canonization: exact_n_canonization, exact_n_canonization_complete, exact_np_enumeration, exact_p_enumeration, exact_n_enumeration (contributed by Alessandro Tempia Calvino) #123

  • Data structure: partial_truth_table (contributed by Siang-Yun Lee) #102

  • Properties: is_covered_with_divisors (contributed by Heinz Riener) #106

  • Algorithm: ternary_predicate (contributed by Siang-Yun Lee) #120

  • Operation: intersection_is_empty (contributed by Siang-Yun Lee) #120

v0.7 (March 13, 2020)

  • Properties: is_normal, is_trivial (contributed by Winston Haaswijk) #75

  • Operations: shift_with_mask_inplace and shift_with_mask #80

  • Compute simple SPP from ESOP form #83

  • Bit operation: count_zeros (contributed by Heinz Riener) #84

  • Properties: absolute_distinguishing_power, relative_distinguishing_power (contributed by Heinz Riener) #84

  • Properties: polynomial_degree #86

  • Canonization: spectral_representative #89

  • ANF as expression: anf_to_expression #91

  • Constructor: nth_var #95

  • Spectral classification: hybrid_exact_spectral_canonization #96

v0.6 (June 2, 2019)

  • Print function and functions in christmas tree pattern #62

  • Get runlength encoding of truth table bits #63

  • Constructors: create_from_parity, create_prime #64 #67

  • Operations: implies (contributed by Heinz Riener), mux_var #65 #66

  • Decomposition (DSD): is_top_decomposable, is_bottom_decomposable #66

  • Ashenhurst decomposition: is_ashenhurst_decomposable, ashenhurst_decomposition (contributed by Mahyar Emami) #70

  • Bi-decomposition: is_bi_decomposable (contributed by Eleonora Testa) #72

  • Canonization: exact_p_canonization (contributed by Eleonora Testa) #68

  • Properties: is_monotone, is_selfdual (contributed by Eleonora Testa) #69

v0.5 (October 8, 2018)

  • Cube methods: difference, flip_bit, flip_mask (contributed by Heinz Riener) #52 #60

  • Type traits: is_truth_table #53

  • Assignment operator for truth tables #54

  • Function properties: is_symmetric_in #55

  • Bit operations: flip_bit #56

  • Constructors: create_from_expression #58

  • Marked esop_from_pprm and esop_from_optimum_pkrm as deprecated #59

  • Function representative enumeration #61

v0.4 (May 4, 2018)

  • Constructors: create, create_from_clauses, create_characteristic, create_multiple_from_chain #41 #43 #45

  • Operations: shrink_to and shrink_to_inplace #42 #47

  • Operation extend_to is now called extend_to_inplace, new special out-of-place versions extend_to #47

  • CNF generation: cnf_characteristic #41

  • Print all cubes: print_cubes #44

  • Generate implicants and prime implicants: get_minterms, get_jbuddies, get_prime_implicants_morreale #46

  • Function properties: chow_parameters, is_canalizing, is_horn, is_krom #48

  • Spectral canonization with resource limit #49

  • Compute different spectra: rademacher_walsh_spectrum, autocorrelation_spectrum, spectrum_distribution #49

  • Compute spectral equivalence class index: get_spectral_class #50

v0.3 (February 25, 2018)

  • Constructors: create_from_chain, create_symmetric #28 #35

  • Cube constructors: pos_cube, neg_cube, constructor to create cube from string #29 #31

  • Cube methods: get_bit, get_mask, set_bit, set_mask, clear_bit, clear_mask (contributed by Heinz Riener) #30

  • Operations: shift_left, shift_left_inplace, shift_right, shift_right_inplace #37 #39

  • Operators: !=, <<, <<=, >>, >>= #32 #37 #39

  • Return truth table as string: to_binary, to_hex #33

  • Default comparison for cubes (contributed by Heinz Riener) #34

  • Linear and affine canonization: exact_linear_canonization, exact_linear_output_canonization, exact_affine_canonization, exact_affine_output_canonization #36

  • Compute PPRM ESOP for truth table: esop_from_pprm #38

  • Compute permutation masks and delta-swap operations: delta_swap_inplace, delta_swap, permute_with_masks_inplace, permute_with_masks, compute_permutation_masks, #40

v0.2 (December 21, 2017)

  • Generic algorithms: for_each_block, for_each_block_reversed, for_each_one_bit #14 #16

  • Constructors: create_from_words, create_from_raw, create_threshold, create_equals #15 #20 #24 #25

  • Moved generic operations from operations.hpp to algorithm.hpp #14

  • Print truth tables as string: print_binary, print_raw, print_hex #14 #20 #22

  • Added iterators to all truth tables: begin, end, rbegin, rend, cbegin, cend, crbegin, crend #14

  • Count number of ones in truth table: count_ones #21

  • Find bits: find_first_one_bit, find_last_one_bit, find_first_bit_difference, find_last_bit_difference #17

  • Extend smaller truth tables to larger ones: extend_to #26

  • Compute ESOP expressions: esop_from_optimum_pkrm #23

  • New data structure for cubes used by ISOP and ESOP computation: cube #23

  • NPN canonization heuristics: flip_swap_npn_canonization, sifting_npn_canonization #27

  • Spectral canonization: exact_spectral_canonization, print_spectrum #19

v0.1 (October 22, 2017)

  • Initial release

  • Data structures static_truth_table and dynamic_truth_table #1

  • Bit functions: set_bit, get_bit, clear_bit, clear #1 #8

  • Constructors: create_nth_var, create_from_binary_string, create_from_hex_string, create_random, create_from_cubes, and create_majority #1 #4 #5 #9 #11

  • Unary and binary operations: unary_not, unary_not_if, binary_and, binary_or, and binary_xor #2 #8

  • Ternary operations: ternary_majority and ternary_ite #3

  • Binary predicates: equal, less_than #4 #8

  • Predicates: has_var, is_const0 #11

  • Operators: ~, &, &=, |, |=, ^, ^=, ==, < #8 #11

  • Swap adjacent variables: swap_adjacent_inplace, swap_adjacent #6

  • Swap variables: swap_inplace, swap #8

  • Flip variable: flip_inplace, flip #7

  • Enumerate truth tables: next_inplace, next #10

  • Compute co-factors: cofactor0_inplace, cofactor0, cofactor1_inplace, cofactor1 #11

  • Compute minimum base based on functional support: min_base_inplace, expand_inplace #12

  • Compute hash values for truth table #13

  • NPN canonization: exact_npn_canonization, create_from_npn_config #8

  • Compute ISOP representation: isop #11