From f8c22c3e0e0c1d3f138ce7cdf08b75fee059f724 Mon Sep 17 00:00:00 2001
From: vonopr <vonopr@ya.ru>
Date: Fri, 15 Apr 2022 22:46:22 +0300
Subject: [PATCH] Fix mul() to work with negative arguments

---
 explelibx-mgrid/exple-mul.cpp | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/explelibx-mgrid/exple-mul.cpp b/explelibx-mgrid/exple-mul.cpp
index 76a1186..dbf352e 100644
--- a/explelibx-mgrid/exple-mul.cpp
+++ b/explelibx-mgrid/exple-mul.cpp
@@ -1,12 +1,20 @@
 #include "exple-mul.h"
 
+int sgn(int val) {
+    return (0 < val) - (val < 0);
+}
+
+int abs(int a) {
+    return (a >= 0)? a : -a;
+}
+
 int exple::mul(int a, int b)
 {
   int result = 0;
 
-  for (int n = 0; n<b; n++)
+  for (int n = 0; n<abs(b); n++)
   {
     result += a;
   }
-  return result;
+  return result * sgn(b);
 }
-- 
GitLab