Klein, 88 6 bytes
!/4@+3<.3+@4\ Explanation
For the single the program follows a pretty straightforward path. The first mirror deflects it into the second which deflects it through the 4 to the end of the program.
The double is a little more complex. Here it is:
//33++@@44\\ The first two mirrors work the same, however there is a new mirror due to the doubling which deflects the ip back to the beginning, it is caught by the duplicate of the first mirror and deflected towards the end. All that is run is the 33++ which evaluates to 6.