# HG changeset patch
# User Alpar Juttner <alpar@cs.elte.hu>
# Date 1231948529 0
# Node ID 81627fa1b0070a8175724f70868125203730fec9
# Parent 04c0631fd33241997b26542eec78715709d11003
Own support for isnan()
diff --git a/lemon/lp_base.h b/lemon/lp_base.h
|
a
|
b
|
|
| 597 | 597 | const Value &upperBound() const { return _ub; } |
| 598 | 598 | ///Is the constraint lower bounded? |
| 599 | 599 | bool lowerBounded() const { |
| 600 | | return _lb != -INF && !std::isnan(_lb); |
| | 600 | return _lb != -INF && !isnan(_lb); |
| 601 | 601 | } |
| 602 | 602 | ///Is the constraint upper bounded? |
| 603 | 603 | bool upperBounded() const { |
| 604 | | return _ub != INF && !std::isnan(_ub); |
| | 604 | return _ub != INF && !isnan(_ub); |
| 605 | 605 | } |
| 606 | 606 | |
| 607 | 607 | }; |
| … |
… |
|
| 1666 | 1666 | inline LpBase::Constr operator<=(const LpBase::Value &n, |
| 1667 | 1667 | const LpBase::Constr &c) { |
| 1668 | 1668 | LpBase::Constr tmp(c); |
| 1669 | | LEMON_ASSERT(std::isnan(tmp.lowerBound()), "Wrong LP constraint"); |
| | 1669 | LEMON_ASSERT(isnan(tmp.lowerBound()), "Wrong LP constraint"); |
| 1670 | 1670 | tmp.lowerBound()=n; |
| 1671 | 1671 | return tmp; |
| 1672 | 1672 | } |
| … |
… |
|
| 1678 | 1678 | const LpBase::Value &n) |
| 1679 | 1679 | { |
| 1680 | 1680 | LpBase::Constr tmp(c); |
| 1681 | | LEMON_ASSERT(std::isnan(tmp.upperBound()), "Wrong LP constraint"); |
| | 1681 | LEMON_ASSERT(isnan(tmp.upperBound()), "Wrong LP constraint"); |
| 1682 | 1682 | tmp.upperBound()=n; |
| 1683 | 1683 | return tmp; |
| 1684 | 1684 | } |
| … |
… |
|
| 1690 | 1690 | inline LpBase::Constr operator>=(const LpBase::Value &n, |
| 1691 | 1691 | const LpBase::Constr &c) { |
| 1692 | 1692 | LpBase::Constr tmp(c); |
| 1693 | | LEMON_ASSERT(std::isnan(tmp.upperBound()), "Wrong LP constraint"); |
| | 1693 | LEMON_ASSERT(isnan(tmp.upperBound()), "Wrong LP constraint"); |
| 1694 | 1694 | tmp.upperBound()=n; |
| 1695 | 1695 | return tmp; |
| 1696 | 1696 | } |
| … |
… |
|
| 1702 | 1702 | const LpBase::Value &n) |
| 1703 | 1703 | { |
| 1704 | 1704 | LpBase::Constr tmp(c); |
| 1705 | | LEMON_ASSERT(std::isnan(tmp.lowerBound()), "Wrong LP constraint"); |
| | 1705 | LEMON_ASSERT(isnan(tmp.lowerBound()), "Wrong LP constraint"); |
| 1706 | 1706 | tmp.lowerBound()=n; |
| 1707 | 1707 | return tmp; |
| 1708 | 1708 | } |
diff --git a/lemon/math.h b/lemon/math.h
|
a
|
b
|
|
| 55 | 55 | /// 1/sqrt(2) |
| 56 | 56 | const long double SQRT1_2 = 0.7071067811865475244008443621048490L; |
| 57 | 57 | |
| | 58 | ///Check whether the parameter is NaN or not |
| | 59 | |
| | 60 | ///This function checks whether the parameter is NaN or not. |
| | 61 | ///Is should be equivalent with std::isnan(), but it is not |
| | 62 | ///provided by all compilers. |
| | 63 | inline bool isnan(double v) |
| | 64 | { |
| | 65 | return v!=v; |
| | 66 | } |
| 58 | 67 | |
| 59 | 68 | /// @} |
| 60 | 69 | |