about summary refs log tree commit diff stats
path: root/cpp/013arithmetic
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2015-02-19 16:54:33 -0800
committerKartik K. Agaram <vc@akkartik.com>2015-02-19 16:56:26 -0800
commit42b31beba71db2012db3ea47f4ca8cfc18136d14 (patch)
treee0c8aa54ec492b3aa2c4b90ed3d972113340defd /cpp/013arithmetic
parent8d7839b99723553c08b33c30980a001e7a3557b6 (diff)
downloadmu-42b31beba71db2012db3ea47f4ca8cfc18136d14.tar.gz
789
Diffstat (limited to 'cpp/013arithmetic')
-rw-r--r--cpp/013arithmetic164
1 files changed, 87 insertions, 77 deletions
diff --git a/cpp/013arithmetic b/cpp/013arithmetic
index 1c3f9d92..7aca4264 100644
--- a/cpp/013arithmetic
+++ b/cpp/013arithmetic
@@ -1,21 +1,23 @@
-:(before "End Primitive Recipe Numbers")
+:(before "End Globals")
 // Arithmetic ops.
-Recipe_number["add"] = 2;
+const int ADD = 2;
+:(before "End Primitive Recipe Numbers")
+Recipe_number["add"] = ADD;
 Next_recipe_number++;
 :(before "End Primitive Recipe Implementations")
-  case 2: {  // add
-    trace("run") << "ingredient 0 is " << p->ingredients[0].name;
-    vector<int> arg0 = read_memory(p->ingredients[0]);
-    assert(arg0.size() == 1);
-    trace("run") << "ingredient 1 is " << p->ingredients[1].name;
-    vector<int> arg1 = read_memory(p->ingredients[1]);
-    assert(arg1.size() == 1);
-    vector<int> result;
-    result.push_back(arg0[0]+arg1[0]);
-    trace("run") << "product 0 is " << result[0];
-    write_memory(p->products[0], result);
-    break;
-  }
+case ADD: {
+  trace("run") << "ingredient 0 is " << p->ingredients[0].name;
+  vector<int> arg0 = read_memory(p->ingredients[0]);
+  assert(arg0.size() == 1);
+  trace("run") << "ingredient 1 is " << p->ingredients[1].name;
+  vector<int> arg1 = read_memory(p->ingredients[1]);
+  assert(arg1.size() == 1);
+  vector<int> result;
+  result.push_back(arg0[0]+arg1[0]);
+  trace("run") << "product 0 is " << result[0];
+  write_memory(p->products[0], result);
+  break;
+}
 
 :(scenario "add_literal")
 recipe main [
@@ -41,23 +43,25 @@ recipe main [
 +run: product 0 is 57
 +mem: storing in location 3
 
+:(before "End Globals")
+const int SUBTRACT = 3;
 :(before "End Primitive Recipe Numbers")
-Recipe_number["subtract"] = 3;
+Recipe_number["subtract"] = SUBTRACT;
 Next_recipe_number++;
 :(before "End Primitive Recipe Implementations")
-  case 3: {  // subtract
-    trace("run") << "ingredient 0 is " << p->ingredients[0].name;
-    vector<int> arg0 = read_memory(p->ingredients[0]);
-    assert(arg0.size() == 1);
-    trace("run") << "ingredient 1 is " << p->ingredients[1].name;
-    vector<int> arg1 = read_memory(p->ingredients[1]);
-    assert(arg1.size() == 1);
-    vector<int> result;
-    result.push_back(arg0[0]-arg1[0]);
-    trace("run") << "product 0 is " << result[0];
-    write_memory(p->products[0], result);
-    break;
-  }
+case SUBTRACT: {
+  trace("run") << "ingredient 0 is " << p->ingredients[0].name;
+  vector<int> arg0 = read_memory(p->ingredients[0]);
+  assert(arg0.size() == 1);
+  trace("run") << "ingredient 1 is " << p->ingredients[1].name;
+  vector<int> arg1 = read_memory(p->ingredients[1]);
+  assert(arg1.size() == 1);
+  vector<int> result;
+  result.push_back(arg0[0]-arg1[0]);
+  trace("run") << "product 0 is " << result[0];
+  write_memory(p->products[0], result);
+  break;
+}
 
 :(scenario "subtract_literal")
 recipe main [
@@ -83,24 +87,26 @@ recipe main [
 +run: product 0 is -11
 +mem: storing in location 3
 
+:(before "End Globals")
+const int MULTIPLY = 4;
 :(before "End Primitive Recipe Numbers")
-Recipe_number["multiply"] = 4;
+Recipe_number["multiply"] = MULTIPLY;
 Next_recipe_number++;
 :(before "End Primitive Recipe Implementations")
-  case 4: {  // multiply
-    trace("run") << "ingredient 0 is " << p->ingredients[0].name;
-    vector<int> arg0 = read_memory(p->ingredients[0]);
-    assert(arg0.size() == 1);
-    trace("run") << "ingredient 1 is " << p->ingredients[1].name;
-    vector<int> arg1 = read_memory(p->ingredients[1]);
-    assert(arg1.size() == 1);
-    trace("run") << "ingredient 1 is " << arg1[0];
-    vector<int> result;
-    result.push_back(arg0[0]*arg1[0]);
-    trace("run") << "product 0 is " << result[0];
-    write_memory(p->products[0], result);
-    break;
-  }
+case MULTIPLY: {
+  trace("run") << "ingredient 0 is " << p->ingredients[0].name;
+  vector<int> arg0 = read_memory(p->ingredients[0]);
+  assert(arg0.size() == 1);
+  trace("run") << "ingredient 1 is " << p->ingredients[1].name;
+  vector<int> arg1 = read_memory(p->ingredients[1]);
+  assert(arg1.size() == 1);
+  trace("run") << "ingredient 1 is " << arg1[0];
+  vector<int> result;
+  result.push_back(arg0[0]*arg1[0]);
+  trace("run") << "product 0 is " << result[0];
+  write_memory(p->products[0], result);
+  break;
+}
 
 :(scenario "multiply_literal")
 recipe main [
@@ -126,24 +132,26 @@ recipe main [
 +run: product 0 is 24
 +mem: storing in location 3
 
+:(before "End Globals")
+const int DIVIDE = 5;
 :(before "End Primitive Recipe Numbers")
-Recipe_number["divide"] = 5;
+Recipe_number["divide"] = DIVIDE;
 Next_recipe_number++;
 :(before "End Primitive Recipe Implementations")
-  case 5: {  // divide
-    trace("run") << "ingredient 0 is " << p->ingredients[0].name;
-    vector<int> arg0 = read_memory(p->ingredients[0]);
-    assert(arg0.size() == 1);
-    trace("run") << "ingredient 1 is " << p->ingredients[1].name;
-    vector<int> arg1 = read_memory(p->ingredients[1]);
-    assert(arg1.size() == 1);
-    trace("run") << "ingredient 1 is " << arg1[0];
-    vector<int> result;
-    result.push_back(arg0[0]/arg1[0]);
-    trace("run") << "product 0 is " << result[0];
-    write_memory(p->products[0], result);
-    break;
-  }
+case DIVIDE: {
+  trace("run") << "ingredient 0 is " << p->ingredients[0].name;
+  vector<int> arg0 = read_memory(p->ingredients[0]);
+  assert(arg0.size() == 1);
+  trace("run") << "ingredient 1 is " << p->ingredients[1].name;
+  vector<int> arg1 = read_memory(p->ingredients[1]);
+  assert(arg1.size() == 1);
+  trace("run") << "ingredient 1 is " << arg1[0];
+  vector<int> result;
+  result.push_back(arg0[0]/arg1[0]);
+  trace("run") << "product 0 is " << result[0];
+  write_memory(p->products[0], result);
+  break;
+}
 
 :(scenario "divide_literal")
 recipe main [
@@ -169,27 +177,29 @@ recipe main [
 +run: product 0 is 9
 +mem: storing in location 3
 
+:(before "End Globals")
+const int DIVIDE_WITH_REMAINDER = 6;
 :(before "End Primitive Recipe Numbers")
-Recipe_number["divide_with_remainder"] = 6;
+Recipe_number["divide_with_remainder"] = DIVIDE_WITH_REMAINDER;
 Next_recipe_number++;
 :(before "End Primitive Recipe Implementations")
-  case 6: {  // divide_with_remainder
-    trace("run") << "ingredient 0 is " << p->ingredients[0].name;
-    vector<int> arg0 = read_memory(p->ingredients[0]);
-    assert(arg0.size() == 1);
-    trace("run") << "ingredient 1 is " << p->ingredients[1].name;
-    vector<int> arg1 = read_memory(p->ingredients[1]);
-    assert(arg1.size() == 1);
-    vector<int> result0;
-    result0.push_back(arg0[0]/arg1[0]);
-    trace("run") << "product 0 is " << result0[0];
-    write_memory(p->products[0], result0);
-    vector<int> result1;
-    result1.push_back(arg0[0]%arg1[0]);
-    trace("run") << "product 1 is " << result1[0];
-    write_memory(p->products[1], result1);
-    break;
-  }
+case DIVIDE_WITH_REMAINDER: {
+  trace("run") << "ingredient 0 is " << p->ingredients[0].name;
+  vector<int> arg0 = read_memory(p->ingredients[0]);
+  assert(arg0.size() == 1);
+  trace("run") << "ingredient 1 is " << p->ingredients[1].name;
+  vector<int> arg1 = read_memory(p->ingredients[1]);
+  assert(arg1.size() == 1);
+  vector<int> result0;
+  result0.push_back(arg0[0]/arg1[0]);
+  trace("run") << "product 0 is " << result0[0];
+  write_memory(p->products[0], result0);
+  vector<int> result1;
+  result1.push_back(arg0[0]%arg1[0]);
+  trace("run") << "product 1 is " << result1[0];
+  write_memory(p->products[1], result1);
+  break;
+}
 
 :(scenario "divide_with_remainder_literal")
 recipe main [