[PATCH 2/3] Allow bigparse to handle negative numbers
  [Thread Prev] | [Thread Next]
 
 
- Subject: [PATCH 2/3] Allow bigparse to handle negative numbers
 - From: "S. Gilles" <sgilles@xxxxxxxxxxxx>
 - Reply-to: myrddin-dev@xxxxxxxxxxxxxx
 - Date: Tue, 19 Feb 2019 08:19:08 -0500
 - To: myrddin-dev@xxxxxxxxxxxxxx
 - Cc: "S. Gilles" <sgilles@xxxxxxxxxxxx>
 
---
 lib/std/bigint.myr | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/lib/std/bigint.myr b/lib/std/bigint.myr
index cbabe0fa..c13f0df9 100644
--- a/lib/std/bigint.myr
+++ b/lib/std/bigint.myr
@@ -234,6 +234,12 @@ const bigparse = {str
 	var val : int, base
 	var v, b
 	var a
+	var s = 1
+
+	if hasprefix(str, "-")
+		s = -1
+		str = str[1:]
+	;;
 
 	if hasprefix(str, "0x") || hasprefix(str, "0X")
 		base = 16
@@ -271,7 +277,7 @@ const bigparse = {str
 		if val == 0
 			v.sign = 0
 		else
-			v.sign = 1
+			v.sign = s
 		;;
 		bigmul(a, b)
 		bigadd(a, v)
-- 
2.20.1
| [PATCH 0/3] Handle negatives in bigint arithmetic | "S. Gilles" <sgilles@xxxxxxxxxxxx> | 
- Prev by Date: [PATCH 1/3] Convert bigint tests to use testr
 - Next by Date: [PATCH 3/3] Handle (-1) + (1) and (-3) - (-2) with bigints
 - Previous by thread: [PATCH 1/3] Convert bigint tests to use testr
 - Next by thread: [PATCH 3/3] Handle (-1) + (1) and (-3) - (-2) with bigints
 - Index(es):