|
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 |
|