diff options
| -rw-r--r-- | .travis.yml (renamed from .travis) | 0 | ||||
| -rw-r--r-- | source/tanya/math/mp.d | 23 |
2 files changed, 14 insertions, 9 deletions
diff --git a/source/tanya/math/mp.d b/source/tanya/math/mp.d index 2d06f8a..5c89c6b 100644 --- a/source/tanya/math/mp.d +++ b/source/tanya/math/mp.d @@ -993,18 +993,12 @@ struct Integer /// Ditto. Integer opBinary(string op)(in size_t n) nothrow @safe @nogc - if (op == "<<" || op == ">>") + if (op == "<<" || op == ">>" || op == "+" || op == "-" || op == "/" + || op == "*" || op == "^^" || op == "%") { checkAllocator(); auto ret = Integer(this, allocator); - static if (op == "<<") - { - ret <<= n; - } - else - { - ret >>= n; - } + mixin("ret " ~ op ~ "= n;"); return ret; } @@ -1018,4 +1012,15 @@ struct Integer h2 = h1 >> 1; assert(cast(long) h2 == 212); } + + /// Ditto. + Integer opBinary(string op)(in Integer h) nothrow @safe @nogc + if (op == "+" || op == "-" || op == "/" + || op == "*" || op == "^^" || op == "%") + { + checkAllocator(); + auto ret = Integer(this, allocator); + mixin("ret " ~ op ~ "= h;"); + return ret; + } } |
