Java Supercompiler. Version 0.0.75. Copyright (c) 2001 Supercompilers, LLC.

/*  Supercompilation options
	--------------------------------------------------------------------
	internal option name   | command line option                 = value
	--------------------------------------------------------------------
	method                 | -method <method identifier>         = test
	allMethods             | -allMethods, -allm, -am             = false
	destinationDir         | -destination <directory>            = 
	invokeLimit            | -invoke<n>, -i<n>                   = no
	recurLimit             | -recur<n>, -r<n>                    = 5
	arrayLimit             | -arrayLimit<n>, -al<n>              = 10
	joinLabeled            | -joinLabeled, -jla, -join, -j       = true
	joinTree               | -joinLoop,    -jl,  -join, -j       = true
	joinTreeR              | -joinIf,      -ji,  -join, -j       = true
	unfoldLoopNumber       | -loop<n>, -l<n>                     = 0
	unfoldLoop_Empty   ()  | -unfoldLoopEmpty,   -ule,  -ul1     = true
	unfoldLoop_Linear  ()  | -unfoldLoopLinear,  -ull,  -ul2     = true
	unfoldLoop_NoBreak ()  | -unfoldLoopNoBreak, -ulnb, -ul      = true
	defaultArrayElements   | -[no]defaultArrayElements, -[no]dae = true
	multiplyZeroFP         | -[no]multiplyZeroFP,    -[no]mzfp   = true
	changeAccessOrder      | -[no]changeAccessOrder, -[no]cao    = true
	--------------------------------------------------------------------*/
//--------------------------------------   0 sec - field Multiplication.CURRENT_STATE
//--------------------------------------   0 sec - postprocessing...
	public static final int CURRENT_STATE = 0;
//--------------------------------------   0 sec - field Multiplication.CURRENT_SYMBOL
//--------------------------------------   0 sec - postprocessing...
	public static final int CURRENT_SYMBOL = 1;
//--------------------------------------   0 sec - field Multiplication.NEXT_SYMBOL
//--------------------------------------   0 sec - postprocessing...
	public static final int NEXT_SYMBOL = 3;
//--------------------------------------   0 sec - field Multiplication.NEXT_STATE
//--------------------------------------   0 sec - postprocessing...
	public static final int NEXT_STATE = 2;
//--------------------------------------   0 sec - field Multiplication.MOVE
//--------------------------------------   0 sec - postprocessing...
	public static final int MOVE = 4;
//--------------------------------------   0 sec - field Multiplication.instruction
//--------------------------------------   0 sec - postprocessing...
	public static final java.lang.String[][] instruction = new java.lang.String[][] {{"start", "1", "move1right", "W", "R"}, {"move1right", "1", "move1right", "1", "R"}, {"move1right", "_", "mark2start", "_", "R"}, {"mark2start", "1", "move2right", "Y", "R"}, {"move2right", "1", "move2right", "1", "R"}, {"move2right", "_", "initialize", "_", "R"}, {"initialize", "_", "backup", "1", "L"}, {"backup", "_", "backup", "_", "L"}, {"backup", "1", "backup", "1", "L"}, {"backup", "Z", "backup", "Z", "L"}, {"backup", "Y", "backup", "Y", "L"}, {"backup", "X", "nextpass", "X", "R"}, {"backup", "W", "nextpass", "W", "R"}, {"nextpass", "_", "finishup", "_", "R"}, {"nextpass", "1", "findarg2", "X", "R"}, {"findarg2", "1", "findarg2", "1", "R"}, {"findarg2", "_", "findarg2", "_", "R"}, {"findarg2", "Y", "testarg2", "Y", "R"}, {"testarg2", "_", "cleanup2", "_", "L"}, {"testarg2", "1", "findans", "Z", "R"}, {"findans", "1", "findans", "1", "R"}, {"findans", "_", "atans", "_", "R"}, {"atans", "1", "atans", "1", "R"}, {"atans", "_", "backarg2", "1", "L"}, {"backarg2", "1", "backarg2", "1", "L"}, {"backarg2", "_", "backarg2", "_", "L"}, {"backarg2", "Z", "testarg2", "Z", "R"}, {"backarg2", "Y", "testarg2", "Y", "R"}, {"cleanup2", "1", "cleanup2", "1", "L"}, {"cleanup2", "_", "cleanup2", "_", "L"}, {"cleanup2", "Z", "cleanup2", "1", "L"}, {"cleanup2", "Y", "backup", "Y", "L"}, {"finishup", "Y", "finishup", "1", "L"}, {"finishup", "_", "finishup", "_", "L"}, {"finishup", "X", "finishup", "1", "L"}, {"finishup", "W", "almostdone", "1", "L"}, {"almostdone", "_", "halt", "_", "R"}};
//--------------------------------------   0 sec - method Multiplication.test()
//--------------------------------------   2 sec - postprocessing...
	public static void test ()
	{
	  Multiplication.state = "start";
	  while (Multiplication.state != "halt") {
	    if (Multiplication.state == "start"
	    &&  Multiplication.tape[Multiplication.head] == "1") {
	      Multiplication.state = "move1right";
	      Multiplication.tape[Multiplication.head] = "W";
	      Multiplication.head++;}
	    if (Multiplication.state == "move1right"
	    &&  Multiplication.tape[Multiplication.head] == "1") {
	      Multiplication.state = "move1right";
	      Multiplication.tape[Multiplication.head] = "1";
	      Multiplication.head++;}
	    if (Multiplication.state == "move1right"
	    &&  Multiplication.tape[Multiplication.head] == "_") {
	      Multiplication.state = "mark2start";
	      Multiplication.tape[Multiplication.head] = "_";
	      Multiplication.head++;}
	    if (Multiplication.state == "mark2start"
	    &&  Multiplication.tape[Multiplication.head] == "1") {
	      Multiplication.state = "move2right";
	      Multiplication.tape[Multiplication.head] = "Y";
	      Multiplication.head++;}
	    if (Multiplication.state == "move2right"
	    &&  Multiplication.tape[Multiplication.head] == "1") {
	      Multiplication.state = "move2right";
	      Multiplication.tape[Multiplication.head] = "1";
	      Multiplication.head++;}
	    if (Multiplication.state == "move2right"
	    &&  Multiplication.tape[Multiplication.head] == "_") {
	      Multiplication.state = "initialize";
	      Multiplication.tape[Multiplication.head] = "_";
	      Multiplication.head++;}
	    if (Multiplication.state == "initialize"
	    &&  Multiplication.tape[Multiplication.head] == "_") {
	      Multiplication.state = "backup";
	      Multiplication.tape[Multiplication.head] = "1";
	      Multiplication.head--;}
	    if (Multiplication.state == "backup"
	    &&  Multiplication.tape[Multiplication.head] == "_") {
	      Multiplication.state = "backup";
	      Multiplication.tape[Multiplication.head] = "_";
	      Multiplication.head--;}
	    if (Multiplication.state == "backup"
	    &&  Multiplication.tape[Multiplication.head] == "1") {
	      Multiplication.state = "backup";
	      Multiplication.tape[Multiplication.head] = "1";
	      Multiplication.head--;}
	    if (Multiplication.state == "backup"
	    &&  Multiplication.tape[Multiplication.head] == "Z") {
	      Multiplication.state = "backup";
	      Multiplication.tape[Multiplication.head] = "Z";
	      Multiplication.head--;}
	    if (Multiplication.state == "backup"
	    &&  Multiplication.tape[Multiplication.head] == "Y") {
	      Multiplication.state = "backup";
	      Multiplication.tape[Multiplication.head] = "Y";
	      Multiplication.head--;}
	    if (Multiplication.state == "backup"
	    &&  Multiplication.tape[Multiplication.head] == "X") {
	      Multiplication.state = "nextpass";
	      Multiplication.tape[Multiplication.head] = "X";
	      Multiplication.head++;}
	    if (Multiplication.state == "backup"
	    &&  Multiplication.tape[Multiplication.head] == "W") {
	      Multiplication.state = "nextpass";
	      Multiplication.tape[Multiplication.head] = "W";
	      Multiplication.head++;}
	    if (Multiplication.state == "nextpass"
	    &&  Multiplication.tape[Multiplication.head] == "_") {
	      Multiplication.state = "finishup";
	      Multiplication.tape[Multiplication.head] = "_";
	      Multiplication.head++;}
	    if (Multiplication.state == "nextpass"
	    &&  Multiplication.tape[Multiplication.head] == "1") {
	      Multiplication.state = "findarg2";
	      Multiplication.tape[Multiplication.head] = "X";
	      Multiplication.head++;}
	    if (Multiplication.state == "findarg2"
	    &&  Multiplication.tape[Multiplication.head] == "1") {
	      Multiplication.state = "findarg2";
	      Multiplication.tape[Multiplication.head] = "1";
	      Multiplication.head++;}
	    if (Multiplication.state == "findarg2"
	    &&  Multiplication.tape[Multiplication.head] == "_") {
	      Multiplication.state = "findarg2";
	      Multiplication.tape[Multiplication.head] = "_";
	      Multiplication.head++;}
	    if (Multiplication.state == "findarg2"
	    &&  Multiplication.tape[Multiplication.head] == "Y") {
	      Multiplication.state = "testarg2";
	      Multiplication.tape[Multiplication.head] = "Y";
	      Multiplication.head++;}
	    if (Multiplication.state == "testarg2"
	    &&  Multiplication.tape[Multiplication.head] == "_") {
	      Multiplication.state = "cleanup2";
	      Multiplication.tape[Multiplication.head] = "_";
	      Multiplication.head--;}
	    if (Multiplication.state == "testarg2"
	    &&  Multiplication.tape[Multiplication.head] == "1") {
	      Multiplication.state = "findans";
	      Multiplication.tape[Multiplication.head] = "Z";
	      Multiplication.head++;}
	    if (Multiplication.state == "findans"
	    &&  Multiplication.tape[Multiplication.head] == "1") {
	      Multiplication.state = "findans";
	      Multiplication.tape[Multiplication.head] = "1";
	      Multiplication.head++;}
	    if (Multiplication.state == "findans"
	    &&  Multiplication.tape[Multiplication.head] == "_") {
	      Multiplication.state = "atans";
	      Multiplication.tape[Multiplication.head] = "_";
	      Multiplication.head++;}
	    if (Multiplication.state == "atans"
	    &&  Multiplication.tape[Multiplication.head] == "1") {
	      Multiplication.state = "atans";
	      Multiplication.tape[Multiplication.head] = "1";
	      Multiplication.head++;}
	    if (Multiplication.state == "atans"
	    &&  Multiplication.tape[Multiplication.head] == "_") {
	      Multiplication.state = "backarg2";
	      Multiplication.tape[Multiplication.head] = "1";
	      Multiplication.head--;}
	    if (Multiplication.state == "backarg2"
	    &&  Multiplication.tape[Multiplication.head] == "1") {
	      Multiplication.state = "backarg2";
	      Multiplication.tape[Multiplication.head] = "1";
	      Multiplication.head--;}
	    if (Multiplication.state == "backarg2"
	    &&  Multiplication.tape[Multiplication.head] == "_") {
	      Multiplication.state = "backarg2";
	      Multiplication.tape[Multiplication.head] = "_";
	      Multiplication.head--;}
	    if (Multiplication.state == "backarg2"
	    &&  Multiplication.tape[Multiplication.head] == "Z") {
	      Multiplication.state = "testarg2";
	      Multiplication.tape[Multiplication.head] = "Z";
	      Multiplication.head++;}
	    if (Multiplication.state == "backarg2"
	    &&  Multiplication.tape[Multiplication.head] == "Y") {
	      Multiplication.state = "testarg2";
	      Multiplication.tape[Multiplication.head] = "Y";
	      Multiplication.head++;}
	    if (Multiplication.state == "cleanup2"
	    &&  Multiplication.tape[Multiplication.head] == "1") {
	      Multiplication.state = "cleanup2";
	      Multiplication.tape[Multiplication.head] = "1";
	      Multiplication.head--;}
	    if (Multiplication.state == "cleanup2"
	    &&  Multiplication.tape[Multiplication.head] == "_") {
	      Multiplication.state = "cleanup2";
	      Multiplication.tape[Multiplication.head] = "_";
	      Multiplication.head--;}
	    if (Multiplication.state == "cleanup2"
	    &&  Multiplication.tape[Multiplication.head] == "Z") {
	      Multiplication.state = "cleanup2";
	      Multiplication.tape[Multiplication.head] = "1";
	      Multiplication.head--;}
	    if (Multiplication.state == "cleanup2"
	    &&  Multiplication.tape[Multiplication.head] == "Y") {
	      Multiplication.state = "backup";
	      Multiplication.tape[Multiplication.head] = "Y";
	      Multiplication.head--;}
	    if (Multiplication.state == "finishup"
	    &&  Multiplication.tape[Multiplication.head] == "Y") {
	      Multiplication.state = "finishup";
	      Multiplication.tape[Multiplication.head] = "1";
	      Multiplication.head--;}
	    if (Multiplication.state == "finishup"
	    &&  Multiplication.tape[Multiplication.head] == "_") {
	      Multiplication.state = "finishup";
	      Multiplication.tape[Multiplication.head] = "_";
	      Multiplication.head--;}
	    if (Multiplication.state == "finishup"
	    &&  Multiplication.tape[Multiplication.head] == "X") {
	      Multiplication.state = "finishup";
	      Multiplication.tape[Multiplication.head] = "1";
	      Multiplication.head--;}
	    if (Multiplication.state == "finishup"
	    &&  Multiplication.tape[Multiplication.head] == "W") {
	      Multiplication.state = "almostdone";
	      Multiplication.tape[Multiplication.head] = "1";
	      Multiplication.head--;}
	    if (Multiplication.state == "almostdone"
	    &&  Multiplication.tape[Multiplication.head] == "_") {
	      Multiplication.state = "halt";
	      Multiplication.tape[Multiplication.head] = "_";
	      Multiplication.head++;}
	    continue;}
	  /*while*/
	  return;
	}
//--------------------------------------   3 sec - JScp version 0.0.75