[GIT] ppl/ppl(products): The method frequency() added to the Affine_Space domain.
Module: ppl/ppl Branch: products Commit: 68dd5db1d102fc5bd5157fc14124abc5c5bf9b43 URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=68dd5db1d102f... Author: Patricia Hill <p.m.hill@leeds.ac.uk> Date: Sat May 23 20:56:45 2009 +0100 The method frequency() added to the Affine_Space domain. --- src/Affine_Space.defs.hh | 33 +++++++++++++++++++++++++++++++++ src/Affine_Space.inlines.hh | 7 +++++++ 2 files changed, 40 insertions(+), 0 deletions(-) diff --git a/src/Affine_Space.defs.hh b/src/Affine_Space.defs.hh index 464936a..2a7a9e7 100644 --- a/src/Affine_Space.defs.hh +++ b/src/Affine_Space.defs.hh @@ -828,6 +828,39 @@ public: Coefficient& inf_n, Coefficient& inf_d, bool& minimum, Generator& point) const; + /*! \brief + Returns <CODE>true</CODE> if and only if \p *this is not empty and + \p expr is discrete in \p *this, in which case the maximum frequency + and the value for \p expr that is closest to zero are computed. + + \param expr + The linear expression for which the frequency is needed; + + \param freq_n + The numerator of the maximum frequency of \p expr; + + \param freq_d + The denominator of the maximum frequency of \p expr; + + \param val_n + The numerator of a value of \p expr at a point in the grid + that is closest to zero; + + \param val_d + The denominator of a value of \p expr at a point in the grid + that is closest to zero; + + \exception std::invalid_argument + Thrown if \p expr and \p *this are dimension-incompatible. + + If \p *this is empty or \p expr can take any real number in \p *this, + <CODE>false</CODE> is returned and \p freq_n, \p freq_d, + \p val_n and \p val_d are left untouched. + */ + bool frequency(const Linear_Expression& expr, + Coefficient& freq_n, Coefficient& freq_d, + Coefficient& val_n, Coefficient& val_d) const; + //! Returns <CODE>true</CODE> if and only if \p *this contains \p y. /*! \exception std::invalid_argument diff --git a/src/Affine_Space.inlines.hh b/src/Affine_Space.inlines.hh index 10a236c..b79e725 100644 --- a/src/Affine_Space.inlines.hh +++ b/src/Affine_Space.inlines.hh @@ -175,6 +175,13 @@ Affine_Space::minimize(const Linear_Expression& expr, return gr.minimize(expr, inf_n, inf_d, minimum, point); } +inline bool +Affine_Space::frequency(const Linear_Expression& expr, + Coefficient& freq_n, Coefficient& freq_d, + Coefficient& val_n, Coefficient& val_d) const { + return gr.frequency(expr, freq_n, freq_d, val_n, val_d); +} + /*! \relates Affine_Space */ inline bool operator!=(const Affine_Space& x, const Affine_Space& y) {
participants (1)
-
Patricia Hill