# Maximum value.

max = strip (function (x)
{
  local (c; n; v; e);

  c = class (x);
  if (c == "matrix")
  {
    n = x.nc;
    e = x.cid;
    x = btrans(x;x.nr;1)[(imax(x)-1)*n+seq(n)];
    x.eid = e;

  elseif (c == "table")

    for (v in members (x)) { x.(v) = self (x.(v)); }

  else
    x = x[imax(x)];
  }

  return x;
});

$imax = imax;
imax = strip (function (x)
{
  local (v);

  if (class (x) == "table")
  {
    for (v in members (x)) { x.(v) = self (x.(v)); }
  else
    x = $imax (x);
  }

  return x;
});

# Minimum value.

min = strip (function (x)
{
  local (c; n; v; e);

  c = class (x);
  if (c == "matrix")
  {
    n = x.nc;
    e = x.cid;
    x = btrans(x;x.nr;1)[(imin(x)-1)*n+seq(n)];
    x.eid = e;

  elseif (c == "table")

    for (v in members (x)) { x.(v) = self (x.(v)); }

  else
    x = x[imin(x)];
  }

  return x;
});

$imin = imin;
imin = strip (function (x)
{
  local (v);

  if (class (x) == "table")
  {
    for (v in members (x)) { x.(v) = self (x.(v)); }
  else
    x = $imin (x);
  }

  return x;
});


syntax highlighted by Code2HTML, v. 0.9.1