1#ifndef _KITTY_ALGORITHM_H_
2#define _KITTY_ALGORITHM_H_
24template<
typename TT,
typename Fn>
27 TT result = tt.construct();
28 std::transform( tt.cbegin(), tt.cend(), result.begin(), op );
45template<
typename TT,
typename Fn>
48 assert( first.num_vars() == second.num_vars() );
50 TT result = first.construct();
51 std::transform( first.cbegin(), first.cend(), second.cbegin(), result.begin(), op );
68template<
typename TT,
typename Fn>
71 assert( first.num_vars() == second.num_vars() );
73 return std::equal( first.begin(), first.end(), second.begin(), op );
84template<
typename TT,
typename Fn>
87 std::generate( tt.begin(), tt.end(), op );
98template<
typename TT,
typename Fn>
101 std::for_each( tt.cbegin(), tt.cend(), op );
113template<
typename TT,
typename Fn>
116 std::for_each( tt.crbegin(), tt.crend(), op );
#define ABC_NAMESPACE_CXX_HEADER_START
#define ABC_NAMESPACE_CXX_HEADER_END
TT binary_operation(const TT &first, const TT &second, Fn &&op)
Perform bitwise binary operation on two truth tables.
bool binary_predicate(const TT &first, const TT &second, Fn &&op)
Computes a predicate based on two truth tables.
void assign_operation(TT &tt, Fn &&op)
Assign computed values to bits.
void for_each_block_reversed(const TT &tt, Fn &&op)
Iterates through each block of a truth table in reverse order.
TT unary_operation(const TT &tt, Fn &&op)
Perform bitwise unary operation on truth table.
void for_each_block(const TT &tt, Fn &&op)
Iterates through each block of a truth table.