Skip to content

Commit ba5db04

Browse files
authored
Merge pull request #374 from hitonanode/improve-numbers
improve/fix numbers
2 parents e86859b + 6cea131 commit ba5db04

File tree

3 files changed

+10
-2
lines changed

3 files changed

+10
-2
lines changed

number/dual_number.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
#pragma once
12
#include <type_traits>
23

34
namespace dual_number_ {

number/min_max_semiring.hpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1+
#pragma once
12
#include <limits>
23

34
// min-max 半環(加法が min, 乗法が max, 零元が INF, 単位元が -INF)
4-
// Verified: abc236g
5+
// Verified: abc236g, abc388f
56
template <class T> struct min_max_semiring {
67
T val;
78
min_max_semiring() : val(std::numeric_limits<T>::max()) {
@@ -21,6 +22,10 @@ template <class T> struct min_max_semiring {
2122
min_max_semiring &operator*=(const min_max_semiring &r) { return *this = *this * r; }
2223
bool operator==(const min_max_semiring &r) const { return this->val == r.val; }
2324
bool operator!=(const min_max_semiring &r) const { return !(*this == r); }
25+
bool operator<(const min_max_semiring &r) const { return this->val < r.val; }
26+
bool operator>(const min_max_semiring &r) const { return this->val > r.val; }
27+
bool operator<=(const min_max_semiring &r) const { return this->val <= r.val; }
28+
bool operator>=(const min_max_semiring &r) const { return this->val >= r.val; }
2429
template <class OStream> friend OStream &operator<<(OStream &os, const min_max_semiring &x) {
2530
return os << x.val;
2631
}

number/modint_mersenne61.hpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@ class ModIntMersenne61 {
1717

1818
ModIntMersenne61() : _v(0) {}
1919
// 0 <= x < md * 2
20-
explicit ModIntMersenne61(long long x) : _v(x >= md ? x - md : x) {}
20+
explicit ModIntMersenne61(long long x) : _v(x >= md ? x - md : x) {
21+
assert(0 <= x and x < md * 2);
22+
}
2123

2224
long long val() const noexcept { return _v; }
2325

0 commit comments

Comments
 (0)