diff --git a/hal_test.go b/hal_test.go index 2cf02d5..09a6d56 100644 --- a/hal_test.go +++ b/hal_test.go @@ -158,13 +158,6 @@ func TestNewton2(t *testing.T) { "22 SUBNUM 3", // (8x⁶ + 3x²) - 3 "23 STORE 15", // Result in reg 15 - // This is our exit condition: - // We compare the current result with the last calculated result, if both are equal, we exit - "24 SUB 50", // 50 contains the last result - "25 JUMPNULL 45", // If both are equal, we exit - "26 LOAD 15", // Otherwise load reg 15 again, store it as the current last result and continue - "27 STORE 50", - // f'(x) "30 LOAD 20", // x⁵ which we saved earlier while calculating x⁶ "31 MULNUM 48", // x⁵ * 48 @@ -179,11 +172,22 @@ func TestNewton2(t *testing.T) { "41 DIV 25", // f(x) / f'(x) "42 MULNUM -1", // Invert the result "43 ADD 10", // Add x: Because we inverted the result before, we can do this instead of SUB - lets us reuse the content of the accumulator - "44 JUMP 03", // Go to the beginning - "45 LOAD 10", // Load the result - "46 OUT 1", // Print t - "47 STOP", + "44 STORE 35", // Reg 35 now contains the end result of x - f(x) / f'(x) + + // This is our exit condition: + // We compare the current result with the last calculated result, if both are equal, we exit + "50 SUB 50", // Reg 50 contains the last result + "51 JUMPNULL 60", // If both are equal, we exit + "52 LOAD 35", // Otherwise load reg 15 again, store it as the current last result and continue + "53 STORE 50", + + // Go to the beginning + "54 JUMP 03", + + "60 LOAD 10", // Load the result + "61 OUT 1", // Print it + "62 STOP", } program, err := parser.ParseProgram(input)