Blame matrix/getset_source.c

Packit 67cb25
/**********************************************************************/
Packit 67cb25
/* The functions below are obsolete                                   */
Packit 67cb25
/**********************************************************************/
Packit 67cb25
Packit 67cb25
int
Packit 67cb25
FUNCTION (gsl_matrix, get_row) (TYPE (gsl_vector) * v,
Packit 67cb25
                                 const TYPE (gsl_matrix) * m,
Packit 67cb25
                                 const size_t i)
Packit 67cb25
{
Packit 67cb25
  const size_t M = m->size1;
Packit 67cb25
  const size_t N = m->size2;
Packit 67cb25
  const size_t tda = m->tda;
Packit 67cb25
Packit 67cb25
  if (i >= M)
Packit 67cb25
    {
Packit 67cb25
      GSL_ERROR ("row index is out of range", GSL_EINVAL);
Packit 67cb25
    }
Packit 67cb25
Packit 67cb25
  if (v->size != N)
Packit 67cb25
    {
Packit 67cb25
      GSL_ERROR ("matrix row size and vector length are not equal",
Packit 67cb25
                 GSL_EBADLEN);
Packit 67cb25
    }
Packit 67cb25
Packit 67cb25
  {
Packit 67cb25
    ATOMIC *v_data = v->data;
Packit 67cb25
    const ATOMIC *row_data = m->data + MULTIPLICITY * i * tda;
Packit 67cb25
    const size_t stride = v->stride ;
Packit 67cb25
    size_t j;
Packit 67cb25
Packit 67cb25
    for (j = 0; j < N; j++)
Packit 67cb25
      {
Packit 67cb25
        unsigned int k;
Packit 67cb25
Packit 67cb25
        for (k = 0; k < MULTIPLICITY; k++)
Packit 67cb25
          {
Packit 67cb25
            v_data[MULTIPLICITY * stride * j + k] 
Packit 67cb25
              = row_data[MULTIPLICITY * j + k];
Packit 67cb25
          }
Packit 67cb25
      }
Packit 67cb25
  }
Packit 67cb25
Packit 67cb25
  return GSL_SUCCESS;
Packit 67cb25
}
Packit 67cb25
Packit 67cb25
int
Packit 67cb25
FUNCTION (gsl_matrix, get_col) (TYPE (gsl_vector) * v,
Packit 67cb25
                                 const TYPE (gsl_matrix) * m,
Packit 67cb25
                                 const size_t j)
Packit 67cb25
{
Packit 67cb25
  const size_t M = m->size1;
Packit 67cb25
  const size_t N = m->size2;
Packit 67cb25
  const size_t tda = m->tda;
Packit 67cb25
Packit 67cb25
  if (j >= N)
Packit 67cb25
    {
Packit 67cb25
      GSL_ERROR ("column index is out of range", GSL_EINVAL);
Packit 67cb25
    }
Packit 67cb25
Packit 67cb25
  if (v->size != M)
Packit 67cb25
    {
Packit 67cb25
      GSL_ERROR ("matrix column size and vector length are not equal",
Packit 67cb25
                 GSL_EBADLEN);
Packit 67cb25
    }
Packit 67cb25
Packit 67cb25
Packit 67cb25
  {
Packit 67cb25
    ATOMIC *v_data = v->data;
Packit 67cb25
    const ATOMIC *column_data = m->data + MULTIPLICITY * j;
Packit 67cb25
    const size_t stride = v->stride ;
Packit 67cb25
    size_t i;
Packit 67cb25
Packit 67cb25
    for (i = 0; i < M; i++)
Packit 67cb25
      {
Packit 67cb25
        unsigned int k;
Packit 67cb25
Packit 67cb25
        for (k = 0; k < MULTIPLICITY; k++)
Packit 67cb25
          {
Packit 67cb25
            v_data[stride * MULTIPLICITY * i + k] =
Packit 67cb25
              column_data[MULTIPLICITY * i * tda + k];
Packit 67cb25
          }
Packit 67cb25
      }
Packit 67cb25
  }
Packit 67cb25
Packit 67cb25
  return GSL_SUCCESS;
Packit 67cb25
}
Packit 67cb25
Packit 67cb25
int
Packit 67cb25
FUNCTION (gsl_matrix, set_row) (TYPE (gsl_matrix) * m,
Packit 67cb25
                                const size_t i,
Packit 67cb25
                                const TYPE (gsl_vector) * v)
Packit 67cb25
{
Packit 67cb25
  const size_t M = m->size1;
Packit 67cb25
  const size_t N = m->size2;
Packit 67cb25
  const size_t tda = m->tda;
Packit 67cb25
Packit 67cb25
  if (i >= M)
Packit 67cb25
    {
Packit 67cb25
      GSL_ERROR ("row index is out of range", GSL_EINVAL);
Packit 67cb25
    }
Packit 67cb25
Packit 67cb25
  if (v->size != N)
Packit 67cb25
    {
Packit 67cb25
      GSL_ERROR ("matrix row size and vector length are not equal",
Packit 67cb25
                 GSL_EBADLEN);
Packit 67cb25
    }
Packit 67cb25
Packit 67cb25
  {
Packit 67cb25
    const ATOMIC *v_data = v->data;
Packit 67cb25
    ATOMIC *row_data = m->data + MULTIPLICITY * i * tda;
Packit 67cb25
    const size_t stride = v->stride ;
Packit 67cb25
    size_t j;
Packit 67cb25
Packit 67cb25
    for (j = 0; j < N; j++)
Packit 67cb25
      {
Packit 67cb25
        unsigned int k;
Packit 67cb25
Packit 67cb25
        for (k = 0; k < MULTIPLICITY; k++)
Packit 67cb25
          {
Packit 67cb25
            row_data[MULTIPLICITY*j + k] 
Packit 67cb25
              = v_data[MULTIPLICITY * stride * j + k];
Packit 67cb25
          }
Packit 67cb25
      }
Packit 67cb25
  }
Packit 67cb25
Packit 67cb25
  return GSL_SUCCESS;
Packit 67cb25
}
Packit 67cb25
Packit 67cb25
int
Packit 67cb25
FUNCTION (gsl_matrix, set_col) (TYPE (gsl_matrix) * m,
Packit 67cb25
                                const size_t j,
Packit 67cb25
                                const TYPE (gsl_vector) * v)
Packit 67cb25
{
Packit 67cb25
  const size_t M = m->size1;
Packit 67cb25
  const size_t N = m->size2;
Packit 67cb25
  const size_t tda = m->tda;
Packit 67cb25
Packit 67cb25
  if (j >= N)
Packit 67cb25
    {
Packit 67cb25
      GSL_ERROR ("column index is out of range", GSL_EINVAL);
Packit 67cb25
    }
Packit 67cb25
Packit 67cb25
  if (v->size != M)
Packit 67cb25
    {
Packit 67cb25
      GSL_ERROR ("matrix column size and vector length are not equal",
Packit 67cb25
                 GSL_EBADLEN);
Packit 67cb25
    }
Packit 67cb25
Packit 67cb25
  {
Packit 67cb25
    const ATOMIC *v_data = v->data;
Packit 67cb25
    ATOMIC *column_data = m->data + MULTIPLICITY * j;
Packit 67cb25
    const size_t stride = v->stride ;
Packit 67cb25
    size_t i;
Packit 67cb25
Packit 67cb25
    for (i = 0; i < M; i++)
Packit 67cb25
      {
Packit 67cb25
        unsigned int k;
Packit 67cb25
Packit 67cb25
        for (k = 0; k < MULTIPLICITY; k++)
Packit 67cb25
          {
Packit 67cb25
            column_data[MULTIPLICITY * i * tda + k] 
Packit 67cb25
              = v_data[MULTIPLICITY * stride * i + k];
Packit 67cb25
          }
Packit 67cb25
      }
Packit 67cb25
  }
Packit 67cb25
Packit 67cb25
  return GSL_SUCCESS;
Packit 67cb25
}
Packit 67cb25
Packit 67cb25
Packit 67cb25
TYPE (gsl_vector) *
Packit 67cb25
FUNCTION (gsl_vector, alloc_row_from_matrix) (TYPE(gsl_matrix) * m,
Packit 67cb25
                                              const size_t i)
Packit 67cb25
{
Packit 67cb25
  TYPE (gsl_vector) * v;
Packit 67cb25
Packit 67cb25
  const size_t M = m->size1;
Packit 67cb25
Packit 67cb25
  if (i >= M)
Packit 67cb25
    {
Packit 67cb25
      GSL_ERROR_VAL ("row index is out of range", GSL_EINVAL, 0);
Packit 67cb25
    }
Packit 67cb25
Packit 67cb25
  v = (TYPE (gsl_vector) *) malloc (sizeof (TYPE (gsl_vector)));
Packit 67cb25
Packit 67cb25
  if (v == 0)
Packit 67cb25
    {
Packit 67cb25
      GSL_ERROR_VAL ("failed to allocate space for vector struct",
Packit 67cb25
                        GSL_ENOMEM, 0);
Packit 67cb25
    }
Packit 67cb25
Packit 67cb25
  v->data = m->data + MULTIPLICITY * i * m->tda ;
Packit 67cb25
  v->size = m->size2;
Packit 67cb25
  v->stride = 1;
Packit 67cb25
  v->block = 0;
Packit 67cb25
Packit 67cb25
  return v;
Packit 67cb25
}
Packit 67cb25
Packit 67cb25
TYPE (gsl_vector) *
Packit 67cb25
FUNCTION (gsl_vector, alloc_col_from_matrix) (TYPE(gsl_matrix) * m,
Packit 67cb25
                                              const size_t j)
Packit 67cb25
{
Packit 67cb25
  TYPE (gsl_vector) * v;
Packit 67cb25
Packit 67cb25
  const size_t N = m->size2;
Packit 67cb25
Packit 67cb25
  if (j >= N)
Packit 67cb25
    {
Packit 67cb25
      GSL_ERROR_VAL ("column index is out of range", GSL_EINVAL, 0);
Packit 67cb25
    }
Packit 67cb25
Packit 67cb25
  v = (TYPE (gsl_vector) *) malloc (sizeof (TYPE (gsl_vector)));
Packit 67cb25
Packit 67cb25
  if (v == 0)
Packit 67cb25
    {
Packit 67cb25
      GSL_ERROR_VAL ("failed to allocate space for vector struct",
Packit 67cb25
                        GSL_ENOMEM, 0);
Packit 67cb25
    }
Packit 67cb25
Packit 67cb25
  v->data = m->data + MULTIPLICITY * j ;
Packit 67cb25
  v->size = m->size1;
Packit 67cb25
  v->stride = m->tda;
Packit 67cb25
  v->block = 0;
Packit 67cb25
Packit 67cb25
  return v;
Packit 67cb25
}
Packit 67cb25