<?xml version="1.0" standalone="no"?>
<!DOCTYPE model PUBLIC "-//UC Berkeley//DTD Panda 1//EN"
    "http://ptolemy.eecs.berkeley.edu/~kienhuis/dtd/panda.dtd">

<model name="QRvr">
    <parameter name="N" ub="16" lb="8" />
    <parameter name="K" ub="1000" lb="100" />

    <node name="ND_1" type="SourceNode">
      <function name="_ReadMatrix_Zeros_64x64">
        <argument name="out_0" type="out" />
      </function>
      <domain index="j, i" control="" parameter="N, K">
        <constraint matrix="[1, 1, 0, 0, 0, -1; 1, -1, 0, 1, 0, 0; 1, -1, 1, 0, 0, 0; 1, 0, -1, 1, 0, 0]" />
        <context matrix="[1, -1, 0, 16; 1, 1, 0, -8; 1, 0, -1, 1000; 1, 0, 1, -100]" />
        <mapping matrix="[1, 0, 0, 0, 0; 0, 1, 0, 0, 0]" />
      </domain>
      <port name="OP_1" argument="out_0" variable="r_1">
      </port>
    </node>

    <node name="ND_2" type="SourceNode">
      <function name="_ReadMatrix_U_1000x16">
        <argument name="out_0" type="out" />
      </function>
      <domain index="k, j" control="" parameter="N, K">
        <constraint matrix="[1, 1, 0, 0, 0, -1; 1, -1, 0, 0, 1, 0; 1, 0, 1, 0, 0, -1; 1, 0, -1, 1, 0, 0]" />
        <context matrix="[1, -1, 0, 16; 1, 1, 0, -8; 1, 0, -1, 1000; 1, 0, 1, -100]" />
        <mapping matrix="[1, 0, 0, 0, 0; 0, 1, 0, 0, 0]" />
      </domain>
      <port name="OP_1" argument="out_0" variable="x_1">
      </port>
    </node>

    <node name="ND_3" type="Node">
      <function name="Vectorize">
        <argument name="in_0" type="in" />
        <argument name="in_1" type="in" />
        <argument name="out_0" type="out" />
        <argument name="out_1" type="out" />
        <argument name="out_2" type="out" />
      </function>
      <domain index="k, j" control="" parameter="N, K">
        <constraint matrix="[1, 1, 0, 0, 0, -1; 1, -1, 0, 0, 1, 0; 1, 0, 1, 0, 0, -1; 1, 0, -1, 1, 0, 0]" />
        <context matrix="[1, -1, 0, 16; 1, 1, 0, -8; 1, 0, -1, 1000; 1, 0, 1, -100]" />
        <mapping matrix="[1, 0, 0, 0, 0; 0, 1, 0, 0, 0]" />
      </domain>
      <port name="IP_1" argument="in_0" variable="r_2">
        <domain index="k, j" control="" parameter="N, K">
          <constraint matrix="[1, 1, 0, 0, 0, -1; 1, -1, 0, 0, 1, 0; 1, 0, 1, 0, 0, -1; 1, 0, -1, 1, 0, 0; 1, 1, 0, 0, 0, -2]" />
          <context matrix="[1, -1, 0, 16; 1, 1, 0, -8; 1, 0, -1, 1000; 1, 0, 1, -100]" />
          <mapping matrix="[1, 0, 0, 0, 0; 0, 1, 0, 0, 0]" />
        </domain>
      </port>
      <port name="IP_2" argument="in_0" variable="r_1">
        <domain index="k, j" control="" parameter="N, K">
          <constraint matrix="[1, 1, 0, 0, 0, -1; 1, -1, 0, 0, 1, 0; 1, 0, 1, 0, 0, -1; 1, 0, -1, 1, 0, 0; 1, -1, 0, 0, 0, 1]" />
          <context matrix="[1, -1, 0, 16; 1, 1, 0, -8; 1, 0, -1, 1000; 1, 0, 1, -100]" />
          <mapping matrix="[1, 0, 0, 0, 0; 0, 1, 0, 0, 0]" />
        </domain>
      </port>
      <port name="IP_3" argument="in_1" variable="x_3">
        <domain index="k, j" control="" parameter="N, K">
          <constraint matrix="[1, 1, 0, 0, 0, -1; 1, -1, 0, 0, 1, 0; 1, 0, 1, 0, 0, -1; 1, 0, -1, 1, 0, 0; 1, 0, 1, 0, 0, -2]" />
          <context matrix="[1, -1, 0, 16; 1, 1, 0, -8; 1, 0, -1, 1000; 1, 0, 1, -100]" />
          <mapping matrix="[1, 0, 0, 0, 0; 0, 1, 0, 0, 0]" />
        </domain>
      </port>
      <port name="IP_4" argument="in_1" variable="x_1">
        <domain index="k, j" control="" parameter="N, K">
          <constraint matrix="[1, 1, 0, 0, 0, -1; 1, -1, 0, 0, 1, 0; 1, 0, 1, 0, 0, -1; 1, 0, -1, 1, 0, 0; 1, 0, -1, 0, 0, 1]" />
          <context matrix="[1, -1, 0, 16; 1, 1, 0, -8; 1, 0, -1, 1000; 1, 0, 1, -100]" />
          <mapping matrix="[1, 0, 0, 0, 0; 0, 1, 0, 0, 0]" />
        </domain>
      </port>
      <port name="OP_1" argument="out_0" variable="r_2">
      </port>
      <port name="OP_2" argument="out_1" variable="x_2">
      </port>
      <port name="OP_3" argument="out_2" variable="t_1">
      </port>
    </node>

    <node name="ND_4" type="Node">
      <function name="Rotate">
        <argument name="in_0" type="in" />
        <argument name="in_1" type="in" />
        <argument name="in_2" type="in" />
        <argument name="out_0" type="out" />
        <argument name="out_1" type="out" />
        <argument name="out_2" type="out" />
      </function>
      <domain index="k, j, i" control="" parameter="N, K">
        <constraint matrix="[1, 1, 0, 0, 0, 0, -1; 1, -1, 0, 0, 0, 1, 0; 1, 0, 1, 0, 0, 0, -1; 1, 0, -1, 0, 1, 0, 0; 1, 0, -1, 1, 0, 0, -1; 1, 0, 0, -1, 1, 0, 0]" />
        <context matrix="[1, -1, 0, 16; 1, 1, 0, -8; 1, 0, -1, 1000; 1, 0, 1, -100]" />
        <mapping matrix="[1, 0, 0, 0, 0, 0; 0, 1, 0, 0, 0, 0; 0, 0, 1, 0, 0, 0]" />
      </domain>
      <port name="IP_5" argument="in_0" variable="r_3">
        <domain index="k, j, i" control="" parameter="N, K">
          <constraint matrix="[1, 1, 0, 0, 0, 0, -1; 1, -1, 0, 0, 0, 1, 0; 1, 0, 1, 0, 0, 0, -1; 1, 0, -1, 0, 1, 0, 0; 1, 0, -1, 1, 0, 0, -1; 1, 0, 0, -1, 1, 0, 0; 1, 1, 0, 0, 0, 0, -2]" />
          <context matrix="[1, -1, 0, 16; 1, 1, 0, -8; 1, 0, -1, 1000; 1, 0, 1, -100]" />
          <mapping matrix="[1, 0, 0, 0, 0, 0; 0, 1, 0, 0, 0, 0; 0, 0, 1, 0, 0, 0]" />
        </domain>
      </port>
      <port name="IP_6" argument="in_0" variable="r_1">
        <domain index="k, j, i" control="" parameter="N, K">
          <constraint matrix="[1, 1, 0, 0, 0, 0, -1; 1, -1, 0, 0, 0, 1, 0; 1, 0, 1, 0, 0, 0, -1; 1, 0, -1, 0, 1, 0, 0; 1, 0, -1, 1, 0, 0, -1; 1, 0, 0, -1, 1, 0, 0; 1, -1, 0, 0, 0, 0, 1]" />
          <context matrix="[1, -1, 0, 16; 1, 1, 0, -8; 1, 0, -1, 1000; 1, 0, 1, -100]" />
          <mapping matrix="[1, 0, 0, 0, 0, 0; 0, 1, 0, 0, 0, 0; 0, 0, 1, 0, 0, 0]" />
        </domain>
      </port>
      <port name="IP_7" argument="in_1" variable="x_3">
        <domain index="k, j, i" control="" parameter="N, K">
          <constraint matrix="[1, 1, 0, 0, 0, 0, -1; 1, -1, 0, 0, 0, 1, 0; 1, 0, 1, 0, 0, 0, -1; 1, 0, -1, 0, 1, 0, 0; 1, 0, -1, 1, 0, 0, -1; 1, 0, 0, -1, 1, 0, 0; 1, 0, 1, 0, 0, 0, -2]" />
          <context matrix="[1, -1, 0, 16; 1, 1, 0, -8; 1, 0, -1, 1000; 1, 0, 1, -100]" />
          <mapping matrix="[1, 0, 0, 0, 0, 0; 0, 1, 0, 0, 0, 0; 0, 0, 1, 0, 0, 0]" />
        </domain>
      </port>
      <port name="IP_8" argument="in_1" variable="x_1">
        <domain index="k, j, i" control="" parameter="N, K">
          <constraint matrix="[1, 1, 0, 0, 0, 0, -1; 1, -1, 0, 0, 0, 1, 0; 1, 0, 1, 0, 0, 0, -1; 1, 0, -1, 0, 1, 0, 0; 1, 0, -1, 1, 0, 0, -1; 1, 0, 0, -1, 1, 0, 0; 1, 0, -1, 0, 0, 0, 1]" />
          <context matrix="[1, -1, 0, 16; 1, 1, 0, -8; 1, 0, -1, 1000; 1, 0, 1, -100]" />
          <mapping matrix="[1, 0, 0, 0, 0, 0; 0, 1, 0, 0, 0, 0; 0, 0, 1, 0, 0, 0]" />
        </domain>
      </port>
      <port name="IP_9" argument="in_2" variable="t_2">
        <domain index="k, j, i" control="" parameter="N, K">
          <constraint matrix="[1, 1, 0, 0, 0, 0, -1; 1, -1, 0, 0, 0, 1, 0; 1, 0, 1, 0, 0, 0, -1; 1, 0, -1, 0, 1, 0, 0; 1, 0, -1, 1, 0, 0, -1; 1, 0, 0, -1, 1, 0, 0; 1, 0, -1, 1, 0, 0, -2]" />
          <context matrix="[1, -1, 0, 16; 1, 1, 0, -8; 1, 0, -1, 1000; 1, 0, 1, -100]" />
          <mapping matrix="[1, 0, 0, 0, 0, 0; 0, 1, 0, 0, 0, 0; 0, 0, 1, 0, 0, 0]" />
        </domain>
      </port>
      <port name="IP_10" argument="in_2" variable="t_1">
        <domain index="k, j, i" control="" parameter="N, K">
          <constraint matrix="[1, 1, 0, 0, 0, 0, -1; 1, -1, 0, 0, 0, 1, 0; 1, 0, 1, 0, 0, 0, -1; 1, 0, -1, 0, 1, 0, 0; 1, 0, -1, 1, 0, 0, -1; 1, 0, 0, -1, 1, 0, 0; 1, 0, 1, -1, 0, 0, 1]" />
          <context matrix="[1, -1, 0, 16; 1, 1, 0, -8; 1, 0, -1, 1000; 1, 0, 1, -100]" />
          <mapping matrix="[1, 0, 0, 0, 0, 0; 0, 1, 0, 0, 0, 0; 0, 0, 1, 0, 0, 0]" />
        </domain>
      </port>
      <port name="OP_1" argument="out_0" variable="r_3">
      </port>
      <port name="OP_2" argument="out_1" variable="x_3">
      </port>
      <port name="OP_3" argument="out_2" variable="t_2">
      </port>
    </node>

    <node name="ND_5" type="SinkNode">
      <function name="_WriteMatrix_Rout">
        <argument name="in_0" type="in" />
        <argument name="out_0" type="out" />
      </function>
      <domain index="j, i" control="" parameter="N, K">
        <constraint matrix="[1, 1, 0, 0, 0, -1; 1, -1, 0, 1, 0, 0; 1, -1, 1, 0, 0, 0; 1, 0, -1, 1, 0, 0]" />
        <context matrix="[1, -1, 0, 16; 1, 1, 0, -8; 1, 0, -1, 1000; 1, 0, 1, -100]" />
        <mapping matrix="[1, 0, 0, 0, 0; 0, 1, 0, 0, 0]" />
      </domain>
      <port name="IP_11" argument="in_0" variable="r_2">
        <domain index="j, i" control="" parameter="N, K">
          <constraint matrix="[1, 1, 0, 0, 0, -1; 1, -1, 0, 1, 0, 0; 1, -1, 1, 0, 0, 0; 1, 0, -1, 1, 0, 0; 1, 1, -1, 0, 0, 0]" />
          <context matrix="[1, -1, 0, 16; 1, 1, 0, -8; 1, 0, -1, 1000; 1, 0, 1, -100]" />
          <mapping matrix="[1, 0, 0, 0, 0; 0, 1, 0, 0, 0]" />
        </domain>
      </port>
      <port name="IP_12" argument="in_0" variable="r_3">
        <domain index="j, i" control="" parameter="N, K">
          <constraint matrix="[1, 1, 0, 0, 0, -1; 1, -1, 0, 1, 0, 0; 1, -1, 1, 0, 0, 0; 1, 0, -1, 1, 0, 0; 1, -1, 1, 0, 0, -1]" />
          <context matrix="[1, -1, 0, 16; 1, 1, 0, -8; 1, 0, -1, 1000; 1, 0, 1, -100]" />
          <mapping matrix="[1, 0, 0, 0, 0; 0, 1, 0, 0, 0]" />
        </domain>
      </port>
      <port name="OP_1" argument="out_0" variable="Sink_1">
      </port>
    </node>
    <edge name="ED_1">
      <to name="ND_3" port="IP_1" />
      <from name="ND_3" port="OP_1" />
      <domain index="k, j" control="" parameter="N, K">
        <constraint matrix="[1, 1, 0, 0, 0, -1; 1, -1, 0, 0, 1, 0; 1, 0, 1, 0, 0, -1; 1, 0, -1, 1, 0, 0; 1, 1, 0, 0, 0, -2]" />
        <context matrix="[1, -1, 0, 16; 1, 1, 0, -8; 1, 0, -1, 1000; 1, 0, 1, -100]" />
        <mapping matrix="[1, 0, 0, 0, -1; 0, 1, 0, 0, 0]" />
      </domain>
      <doc>r_2(k-1,j)</doc>
    </edge>
    <edge name="ED_2">
      <to name="ND_3" port="IP_2" />
      <from name="ND_1" port="OP_1" />
      <domain index="k, j" control="" parameter="N, K">
        <constraint matrix="[1, 1, 0, 0, 0, -1; 1, -1, 0, 0, 1, 0; 1, 0, 1, 0, 0, -1; 1, 0, -1, 1, 0, 0; 1, -1, 0, 0, 0, 1]" />
        <context matrix="[1, -1, 0, 16; 1, 1, 0, -8; 1, 0, -1, 1000; 1, 0, 1, -100]" />
        <mapping matrix="[0, 1, 0, 0, 0; 0, 1, 0, 0, 0]" />
      </domain>
      <doc>r_1(j,j)</doc>
    </edge>
    <edge name="ED_3">
      <to name="ND_3" port="IP_3" />
      <from name="ND_4" port="OP_2" />
      <domain index="k, j" control="" parameter="N, K">
        <constraint matrix="[1, 1, 0, 0, 0, -1; 1, -1, 0, 0, 1, 0; 1, 0, 1, 0, 0, -1; 1, 0, -1, 1, 0, 0; 1, 0, 1, 0, 0, -2]" />
        <context matrix="[1, -1, 0, 16; 1, 1, 0, -8; 1, 0, -1, 1000; 1, 0, 1, -100]" />
        <mapping matrix="[1, 0, 0, 0, 0; 0, 1, 0, 0, -1; 0, 1, 0, 0, 0]" />
      </domain>
      <doc>x_3(k,j-1,j)</doc>
    </edge>
    <edge name="ED_4">
      <to name="ND_3" port="IP_4" />
      <from name="ND_2" port="OP_1" />
      <domain index="k, j" control="" parameter="N, K">
        <constraint matrix="[1, 1, 0, 0, 0, -1; 1, -1, 0, 0, 1, 0; 1, 0, 1, 0, 0, -1; 1, 0, -1, 1, 0, 0; 1, 0, -1, 0, 0, 1]" />
        <context matrix="[1, -1, 0, 16; 1, 1, 0, -8; 1, 0, -1, 1000; 1, 0, 1, -100]" />
        <mapping matrix="[1, 0, 0, 0, 0; 0, 1, 0, 0, 0]" />
      </domain>
      <doc>x_1(k,j)</doc>
    </edge>
    <edge name="ED_5">
      <to name="ND_4" port="IP_5" />
      <from name="ND_4" port="OP_1" />
      <domain index="k, j, i" control="" parameter="N, K">
        <constraint matrix="[1, 1, 0, 0, 0, 0, -1; 1, -1, 0, 0, 0, 1, 0; 1, 0, 1, 0, 0, 0, -1; 1, 0, -1, 0, 1, 0, 0; 1, 0, -1, 1, 0, 0, -1; 1, 0, 0, -1, 1, 0, 0; 1, 1, 0, 0, 0, 0, -2]" />
        <context matrix="[1, -1, 0, 16; 1, 1, 0, -8; 1, 0, -1, 1000; 1, 0, 1, -100]" />
        <mapping matrix="[1, 0, 0, 0, 0, -1; 0, 1, 0, 0, 0, 0; 0, 0, 1, 0, 0, 0]" />
      </domain>
      <doc>r_3(k-1,j,i)</doc>
    </edge>
    <edge name="ED_6">
      <to name="ND_4" port="IP_6" />
      <from name="ND_1" port="OP_1" />
      <domain index="k, j, i" control="" parameter="N, K">
        <constraint matrix="[1, 1, 0, 0, 0, 0, -1; 1, -1, 0, 0, 0, 1, 0; 1, 0, 1, 0, 0, 0, -1; 1, 0, -1, 0, 1, 0, 0; 1, 0, -1, 1, 0, 0, -1; 1, 0, 0, -1, 1, 0, 0; 1, -1, 0, 0, 0, 0, 1]" />
        <context matrix="[1, -1, 0, 16; 1, 1, 0, -8; 1, 0, -1, 1000; 1, 0, 1, -100]" />
        <mapping matrix="[0, 1, 0, 0, 0, 0; 0, 0, 1, 0, 0, 0]" />
      </domain>
      <doc>r_1(j,i)</doc>
    </edge>
    <edge name="ED_7">
      <to name="ND_4" port="IP_7" />
      <from name="ND_4" port="OP_2" />
      <domain index="k, j, i" control="" parameter="N, K">
        <constraint matrix="[1, 1, 0, 0, 0, 0, -1; 1, -1, 0, 0, 0, 1, 0; 1, 0, 1, 0, 0, 0, -1; 1, 0, -1, 0, 1, 0, 0; 1, 0, -1, 1, 0, 0, -1; 1, 0, 0, -1, 1, 0, 0; 1, 0, 1, 0, 0, 0, -2]" />
        <context matrix="[1, -1, 0, 16; 1, 1, 0, -8; 1, 0, -1, 1000; 1, 0, 1, -100]" />
        <mapping matrix="[1, 0, 0, 0, 0, 0; 0, 1, 0, 0, 0, -1; 0, 0, 1, 0, 0, 0]" />
      </domain>
      <doc>x_3(k,j-1,i)</doc>
    </edge>
    <edge name="ED_8">
      <to name="ND_4" port="IP_8" />
      <from name="ND_2" port="OP_1" />
      <domain index="k, j, i" control="" parameter="N, K">
        <constraint matrix="[1, 1, 0, 0, 0, 0, -1; 1, -1, 0, 0, 0, 1, 0; 1, 0, 1, 0, 0, 0, -1; 1, 0, -1, 0, 1, 0, 0; 1, 0, -1, 1, 0, 0, -1; 1, 0, 0, -1, 1, 0, 0; 1, 0, -1, 0, 0, 0, 1]" />
        <context matrix="[1, -1, 0, 16; 1, 1, 0, -8; 1, 0, -1, 1000; 1, 0, 1, -100]" />
        <mapping matrix="[1, 0, 0, 0, 0, 0; 0, 0, 1, 0, 0, 0]" />
      </domain>
      <doc>x_1(k,i)</doc>
    </edge>
    <edge name="ED_9">
      <to name="ND_4" port="IP_9" />
      <from name="ND_4" port="OP_3" />
      <domain index="k, j, i" control="" parameter="N, K">
        <constraint matrix="[1, 1, 0, 0, 0, 0, -1; 1, -1, 0, 0, 0, 1, 0; 1, 0, 1, 0, 0, 0, -1; 1, 0, -1, 0, 1, 0, 0; 1, 0, -1, 1, 0, 0, -1; 1, 0, 0, -1, 1, 0, 0; 1, 0, -1, 1, 0, 0, -2]" />
        <context matrix="[1, -1, 0, 16; 1, 1, 0, -8; 1, 0, -1, 1000; 1, 0, 1, -100]" />
        <mapping matrix="[1, 0, 0, 0, 0, 0; 0, 1, 0, 0, 0, 0; 0, 0, 1, 0, 0, -1]" />
      </domain>
      <doc>t_2(k,j,i-1)</doc>
    </edge>
    <edge name="ED_10">
      <to name="ND_4" port="IP_10" />
      <from name="ND_3" port="OP_3" />
      <domain index="k, j, i" control="" parameter="N, K">
        <constraint matrix="[1, 1, 0, 0, 0, 0, -1; 1, -1, 0, 0, 0, 1, 0; 1, 0, 1, 0, 0, 0, -1; 1, 0, -1, 0, 1, 0, 0; 1, 0, -1, 1, 0, 0, -1; 1, 0, 0, -1, 1, 0, 0; 1, 0, 1, -1, 0, 0, 1]" />
        <context matrix="[1, -1, 0, 16; 1, 1, 0, -8; 1, 0, -1, 1000; 1, 0, 1, -100]" />
        <mapping matrix="[1, 0, 0, 0, 0, 0; 0, 1, 0, 0, 0, 0]" />
      </domain>
      <doc>t_1(k,j)</doc>
    </edge>
    <edge name="ED_11">
      <to name="ND_5" port="IP_11" />
      <from name="ND_3" port="OP_1" />
      <domain index="j, i" control="" parameter="N, K">
        <constraint matrix="[1, 1, 0, 0, 0, -1; 1, -1, 0, 1, 0, 0; 1, -1, 1, 0, 0, 0; 1, 0, -1, 1, 0, 0; 1, 1, -1, 0, 0, 0]" />
        <context matrix="[1, -1, 0, 16; 1, 1, 0, -8; 1, 0, -1, 1000; 1, 0, 1, -100]" />
        <mapping matrix="[0, 0, 0, 1, 0; 1, 0, 0, 0, 0]" />
      </domain>
      <doc>r_2(K,j)</doc>
    </edge>
    <edge name="ED_12">
      <to name="ND_5" port="IP_12" />
      <from name="ND_4" port="OP_1" />
      <domain index="j, i" control="" parameter="N, K">
        <constraint matrix="[1, 1, 0, 0, 0, -1; 1, -1, 0, 1, 0, 0; 1, -1, 1, 0, 0, 0; 1, 0, -1, 1, 0, 0; 1, -1, 1, 0, 0, -1]" />
        <context matrix="[1, -1, 0, 16; 1, 1, 0, -8; 1, 0, -1, 1000; 1, 0, 1, -100]" />
        <mapping matrix="[0, 0, 0, 1, 0; 1, 0, 0, 0, 0; 0, 1, 0, 0, 0]" />
      </domain>
      <doc>r_3(K,j,i)</doc>
    </edge>
</model>

