User blog comment:Ikosarakt1/My Turing machine programs/@comment-25418284-20130328183208

This isn't exactly \(f_2(n)\) but it's decently close.

0                  _ 1 * enter_mul 0                  1 * * d_input_right d_input_right      _ * r d_output1_right d_input_right      1 * r * d_output1_right    _ 1 r d_move_separator d_output1_right    1 * r * d_move_separator   * _ r d_output2_right d_output2_right    _ 1 r d_data d_output2_right    1 * r * d_output2_left     _ * l d_output1_left d_output2_left     1 * l * d_output1_left     _ * l d_input_left d_output1_left     1 * l * d_input_left       _ * r d_data d_input_left       1 * l * d_data             _ 1 l d_output2_left d_data             1 _ r 0
 * First we need to duplicate the input.

enter_mul          _ * r m_0 enter_mul          1 * r *
 * After the duplication is finished, prepare to multiply.

m_0           _ * * input_left_gap m_0           1 * * m_input_right m_input_right _ * r m_output_right m_input_right 1 * r * m_output_right _ 1 r m_data m_output_right 1 * r * m_output_left _ * l m_input_left m_output_left 1 * l * m_input_left  _ * r m_data m_input_left  1 * l * m_data        _ 1 l m_output_left m_data        1 _ r m_0
 * And multiply.

input_left_gap     _ * l * input_left_gap     1 * * input_left input_left         _ * r data input_left         1 * l * data               * _ r check check              _ * * halt check              1 * * input_right input_right        _ * * input_right_gap input_right        1 * r * input_right_gap    _ * r * input_right_gap    1 * * m_0
 * After multiplying, we need to go all the way back and remove a count.
 * We need to traverse the gap between the input and output, then find the end of the input, then remove a mark.