about summary refs log tree commit diff stats
path: root/021arithmetic.cc
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2015-05-13 10:03:26 -0700
committerKartik K. Agaram <vc@akkartik.com>2015-05-13 10:03:26 -0700
commit5497090aa1e708c22cd240913a53dda32bb067aa (patch)
tree5a9eb76d447736a8199230c9386bd0a374b325dd /021arithmetic.cc
parent01caf342d072115c27926b1a61c2fc75ab9fbee0 (diff)
downloadmu-5497090aa1e708c22cd240913a53dda32bb067aa.tar.gz
1363 - rename 'integer' to 'number'
..now that we support non-integers.
Diffstat (limited to '021arithmetic.cc')
-rw-r--r--021arithmetic.cc53
1 files changed, 28 insertions, 25 deletions
diff --git a/021arithmetic.cc b/021arithmetic.cc
index 0dedd02d..2bb330a4 100644
--- a/021arithmetic.cc
+++ b/021arithmetic.cc
@@ -18,7 +18,7 @@ case ADD: {
 
 :(scenario add_literal)
 recipe main [
-  1:integer <- add 23:literal, 34:literal
+  1:number <- add 23:literal, 34:literal
 ]
 +run: instruction main/0
 +run: ingredient 0 is 23
@@ -28,9 +28,9 @@ recipe main [
 
 :(scenario add)
 recipe main [
-  1:integer <- copy 23:literal
-  2:integer <- copy 34:literal
-  3:integer <- add 1:integer, 2:integer
+  1:number <- copy 23:literal
+  2:number <- copy 34:literal
+  3:number <- add 1:number, 2:number
 ]
 +run: instruction main/2
 +run: ingredient 0 is 1
@@ -42,7 +42,7 @@ recipe main [
 
 :(scenario add_multiple)
 recipe main [
-  1:integer <- add 3:literal, 4:literal, 5:literal
+  1:number <- add 3:literal, 4:literal, 5:literal
 ]
 +mem: storing 12 in location 1
 
@@ -65,7 +65,7 @@ case SUBTRACT: {
 
 :(scenario subtract_literal)
 recipe main [
-  1:integer <- subtract 5:literal, 2:literal
+  1:number <- subtract 5:literal, 2:literal
 ]
 +run: instruction main/0
 +run: ingredient 0 is 5
@@ -75,9 +75,9 @@ recipe main [
 
 :(scenario subtract)
 recipe main [
-  1:integer <- copy 23:literal
-  2:integer <- copy 34:literal
-  3:integer <- subtract 1:integer, 2:integer
+  1:number <- copy 23:literal
+  2:number <- copy 34:literal
+  3:number <- subtract 1:number, 2:number
 ]
 +run: instruction main/2
 +run: ingredient 0 is 1
@@ -89,7 +89,7 @@ recipe main [
 
 :(scenario subtract_multiple)
 recipe main [
-  1:integer <- subtract 6:literal, 3:literal, 2:literal
+  1:number <- subtract 6:literal, 3:literal, 2:literal
 ]
 +mem: storing 1 in location 1
 
@@ -111,7 +111,7 @@ case MULTIPLY: {
 
 :(scenario multiply_literal)
 recipe main [
-  1:integer <- multiply 2:literal, 3:literal
+  1:number <- multiply 2:literal, 3:literal
 ]
 +run: instruction main/0
 +run: ingredient 0 is 2
@@ -121,9 +121,9 @@ recipe main [
 
 :(scenario multiply)
 recipe main [
-  1:integer <- copy 4:literal
-  2:integer <- copy 6:literal
-  3:integer <- multiply 1:integer, 2:integer
+  1:number <- copy 4:literal
+  2:number <- copy 6:literal
+  3:number <- multiply 1:number, 2:number
 ]
 +run: instruction main/2
 +run: ingredient 0 is 1
@@ -135,7 +135,7 @@ recipe main [
 
 :(scenario multiply_multiple)
 recipe main [
-  1:integer <- multiply 2:literal, 3:literal, 4:literal
+  1:number <- multiply 2:literal, 3:literal, 4:literal
 ]
 +mem: storing 24 in location 1
 
@@ -158,7 +158,7 @@ case DIVIDE: {
 
 :(scenario divide_literal)
 recipe main [
-  1:integer <- divide 8:literal, 2:literal
+  1:number <- divide 8:literal, 2:literal
 ]
 +run: instruction main/0
 +run: ingredient 0 is 8
@@ -168,9 +168,9 @@ recipe main [
 
 :(scenario divide)
 recipe main [
-  1:integer <- copy 27:literal
-  2:integer <- copy 3:literal
-  3:integer <- divide 1:integer, 2:integer
+  1:number <- copy 27:literal
+  2:number <- copy 3:literal
+  3:number <- divide 1:number, 2:number
 ]
 +run: instruction main/2
 +run: ingredient 0 is 1
@@ -182,10 +182,12 @@ recipe main [
 
 :(scenario divide_multiple)
 recipe main [
-  1:integer <- divide 12:literal, 3:literal, 2:literal
+  1:number <- divide 12:literal, 3:literal, 2:literal
 ]
 +mem: storing 2 in location 1
 
+//: Integer division
+
 :(before "End Primitive Recipe Declarations")
 DIVIDE_WITH_REMAINDER,
 :(before "End Primitive Recipe Numbers")
@@ -195,6 +197,7 @@ case DIVIDE_WITH_REMAINDER: {
   long long int quotient = ingredients.at(0).at(0) / ingredients.at(1).at(0);
   long long int remainder = static_cast<long long int>(ingredients.at(0).at(0)) % static_cast<long long int>(ingredients.at(1).at(0));
   products.resize(2);
+  // very large integers will lose precision
   products.at(0).push_back(quotient);
   products.at(1).push_back(remainder);
   break;
@@ -202,7 +205,7 @@ case DIVIDE_WITH_REMAINDER: {
 
 :(scenario divide_with_remainder_literal)
 recipe main [
-  1:integer, 2:integer <- divide-with-remainder 9:literal, 2:literal
+  1:number, 2:number <- divide-with-remainder 9:literal, 2:literal
 ]
 +run: instruction main/0
 +run: ingredient 0 is 9
@@ -214,9 +217,9 @@ recipe main [
 
 :(scenario divide_with_remainder)
 recipe main [
-  1:integer <- copy 27:literal
-  2:integer <- copy 11:literal
-  3:integer, 4:integer <- divide-with-remainder 1:integer, 2:integer
+  1:number <- copy 27:literal
+  2:number <- copy 11:literal
+  3:number, 4:number <- divide-with-remainder 1:number, 2:number
 ]
 +run: instruction main/2
 +run: ingredient 0 is 1
@@ -231,6 +234,6 @@ recipe main [
 :(scenario divide_with_decimal_point)
 recipe main [
   # todo: literal floats?
-  1:integer <- divide 5:literal, 2:literal
+  1:number <- divide 5:literal, 2:literal
 ]
 +mem: storing 2.5 in location 1