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