mirror of
https://github.com/Z3Prover/z3
synced 2025-08-24 20:16:00 +00:00
30 lines
605 B
C++
30 lines
605 B
C++
/*++
|
|
Copyright (c) 2021 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
polysat numbers
|
|
|
|
Author:
|
|
|
|
Nikolaj Bjorner (nbjorner) 2021-03-19
|
|
Jakob Rath 2021-04-06
|
|
|
|
--*/
|
|
#pragma once
|
|
#include "sat/smt/polysat/types.h"
|
|
|
|
namespace polysat {
|
|
|
|
inline unsigned get_parity(rational const& val, unsigned num_bits) {
|
|
if (val.is_zero())
|
|
return num_bits;
|
|
return val.trailing_zeros();
|
|
};
|
|
|
|
/** Return val with the lower k bits set to zero. */
|
|
inline rational clear_lower_bits(rational const& val, unsigned k) {
|
|
return val - mod(val, rational::power_of_two(k));
|
|
}
|
|
|
|
}
|