3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-29 03:45:51 +00:00
z3/src/math/dd/pdd_eval.h
Nikolaj Bjorner 88374a15d0 build errors/warnings
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2020-02-07 10:09:10 -08:00

42 lines
837 B
C++

/*++
Copyright (c) 2019 Microsoft Corporation
Module Name:
dd_pdd.cpp
Abstract:
Poly DD package
Author:
Nikolaj Bjorner (nbjorner) 2019-12-23
Lev Nachmanson (levnach) 2019-12-23
Revision History:
--*/
#include "math/dd/dd_pdd.h"
namespace dd {
// calculates the value of a pdd expression based on the given values of the variables
class pdd_eval {
std::function<rational (unsigned)> m_var2val;
public:
pdd_eval() {}
std::function<rational (unsigned)>& var2val() { return m_var2val; } // setter
const std::function<rational (unsigned)>& var2val() const { return m_var2val; } // getter
rational operator()(pdd const& p) {
if (p.is_val()) {
return p.val();
}
return (*this)(p.hi()) * m_var2val(p.var()) + (*this)(p.lo());
}
};
}