From 4309a30dfeed2913b06ee4e699daae678764c528 Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Thu, 8 Dec 2016 14:51:49 +0100 Subject: [PATCH] Add opBinary for the other math operations on Integer --- .travis => .travis.yml | 0 source/tanya/math/mp.d | 23 ++++++++++++++--------- 2 files changed, 14 insertions(+), 9 deletions(-) rename .travis => .travis.yml (100%) diff --git a/.travis b/.travis.yml similarity index 100% rename from .travis rename to .travis.yml 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; + } }