private static void cmprlb(int n, int m, double[] x, int _x_offset, double[] g, int _g_offset, double[] ws, int _ws_offset, double[] wy, int _wy_offset, double[] sy, int _sy_offset,
double[] wt, int _wt_offset, double[] z, int _z_offset, double[] r, int _r_offset,
double[] wa, int _wa_offset, int[] index, int _index_offset, double theta,
int col, int head, int nfree, bool cnstnd, ref int info)
{
int i = 0;
int j = 0;
int k = 0;
int pointr = 0;
double a1 = 0.0d;
double a2 = 0.0d;
if (((!cnstnd) && (col > 0)))
{
{
for (i = 1; i <= n; i++)
{
r[(i - (1)) + _r_offset] = (-(g[(i - (1)) + _g_offset]));
}
}
}
else
{
{
for (i = 1; i <= nfree; i++)
{
k = index[(i - (1)) + _index_offset];
r[(i - (1)) + _r_offset] = ((-((theta * ((z[(k - (1))
+ _z_offset] - x[(k - (1)) + _x_offset]))))) - g[(k - (1)) + _g_offset]);
}
}
bmv(m, sy, _sy_offset, wt, _wt_offset, col, wa,
(((2 * m) + 1) - (1)) + _wa_offset, wa, (1 - (1)) + _wa_offset, ref info);
if ((info != 0))
{
info = -8;
return;
}
pointr = head;
{
for (j = 1; j <= col; j++)
{
a1 = wa[(j - (1)) + _wa_offset];
a2 = (theta * wa[((col + j) - (1)) + _wa_offset]);
{
for (i = 1; i <= nfree; i++)
{
k = index[(i - (1)) + _index_offset];
r[(i - (1)) + _r_offset] = ((r[(i - (1)) + _r_offset]
+ (wy[(k - (1)) + (pointr - (1)) * (n) + _wy_offset] * a1))
+ (ws[(k - (1)) + (pointr - (1)) * (n) + _ws_offset] * a2));
}
}
pointr = ((pointr) % (m) + 1);
}
}
}
}