本文整理汇总了C++中GSL_ERROR_NULL函数的典型用法代码示例。如果您正苦于以下问题:C++ GSL_ERROR_NULL函数的具体用法?C++ GSL_ERROR_NULL怎么用?C++ GSL_ERROR_NULL使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了GSL_ERROR_NULL函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: gsl_odeiv_control_alloc
gsl_odeiv_control *
gsl_odeiv_control_alloc(const gsl_odeiv_control_type * T)
{
gsl_odeiv_control * c =
(gsl_odeiv_control *) malloc(sizeof(gsl_odeiv_control));
if(c == 0)
{
GSL_ERROR_NULL ("failed to allocate space for control struct",
GSL_ENOMEM);
};
c->type = T;
c->state = c->type->alloc();
if (c->state == 0)
{
free (c); /* exception in constructor, avoid memory leak */
GSL_ERROR_NULL ("failed to allocate space for control state",
GSL_ENOMEM);
};
return c;
}
示例2: gsl_splinalg_itersolve_alloc
gsl_splinalg_itersolve *
gsl_splinalg_itersolve_alloc(const gsl_splinalg_itersolve_type *T,
const size_t n, const size_t m)
{
gsl_splinalg_itersolve *w;
w = calloc(1, sizeof(gsl_splinalg_itersolve));
if (w == NULL)
{
GSL_ERROR_NULL("failed to allocate space for itersolve struct",
GSL_ENOMEM);
}
w->type = T;
w->normr = 0.0;
w->state = w->type->alloc(n, m);
if (w->state == NULL)
{
gsl_splinalg_itersolve_free(w);
GSL_ERROR_NULL("failed to allocate space for itersolve state",
GSL_ENOMEM);
}
return w;
} /* gsl_splinalg_itersolve_alloc() */
示例3: gsl_eigen_gensymm_alloc
gsl_eigen_gensymm_workspace *
gsl_eigen_gensymm_alloc(const size_t n)
{
gsl_eigen_gensymm_workspace *w;
if (n == 0)
{
GSL_ERROR_NULL ("matrix dimension must be positive integer",
GSL_EINVAL);
}
w = (gsl_eigen_gensymm_workspace *) calloc (1, sizeof (gsl_eigen_gensymm_workspace));
if (w == 0)
{
GSL_ERROR_NULL ("failed to allocate space for workspace", GSL_ENOMEM);
}
w->size = n;
w->symm_workspace_p = gsl_eigen_symm_alloc(n);
if (!w->symm_workspace_p)
{
gsl_eigen_gensymm_free(w);
GSL_ERROR_NULL("failed to allocate space for symm workspace", GSL_ENOMEM);
}
return (w);
} /* gsl_eigen_gensymm_alloc() */
示例4: rk2imp_alloc
static void *
rk2imp_alloc (size_t dim)
{
rk2imp_state_t *state = (rk2imp_state_t *) malloc (sizeof (rk2imp_state_t));
if (state == 0)
{
GSL_ERROR_NULL ("failed to allocate space for rk2imp_state",
GSL_ENOMEM);
}
state->knu = (double *) malloc (dim * sizeof (double));
if (state->knu == 0)
{
free (state);
GSL_ERROR_NULL ("failed to allocate space for knu", GSL_ENOMEM);
}
state->ytmp = (double *) malloc (dim * sizeof (double));
if (state->ytmp == 0)
{
free (state->knu);
free (state);
GSL_ERROR_NULL ("failed to allocate space for ytmp", GSL_ENOMEM);
}
return state;
}
示例5: gsl_filter_gaussian_alloc
gsl_filter_gaussian_workspace *
gsl_filter_gaussian_alloc(const size_t K)
{
const size_t H = K / 2;
gsl_filter_gaussian_workspace *w;
size_t state_size;
w = calloc(1, sizeof(gsl_filter_gaussian_workspace));
if (w == 0)
{
GSL_ERROR_NULL ("failed to allocate space for workspace", GSL_ENOMEM);
}
w->K = 2 * H + 1;
w->kernel = malloc(w->K * sizeof(double));
if (w->kernel == 0)
{
gsl_filter_gaussian_free(w);
GSL_ERROR_NULL ("failed to allocate space for kernel", GSL_ENOMEM);
return NULL;
}
state_size = gaussian_size(w->K);
w->movstat_workspace_p = gsl_movstat_alloc_with_size(state_size, H, H);
if (!w->movstat_workspace_p)
{
gsl_filter_gaussian_free(w);
GSL_ERROR_NULL ("failed to allocate space for movstat workspace", GSL_ENOMEM);
}
return w;
}
示例6: avl_spmalloc
static void *
avl_spmalloc (size_t size, void *param)
{
gsl_spmatrix *m = (gsl_spmatrix *) param;
if (size != sizeof(struct avl_node))
{
GSL_ERROR_NULL("attemping to allocate incorrect node size", GSL_EBADLEN);
}
/*
* return the next available avl_node slot; index
* m->tree_data->n keeps track of next open slot
*/
if (m->tree_data->n < m->nzmax)
{
/* cast to char* for pointer arithmetic */
unsigned char *node_ptr = (unsigned char *) m->tree_data->node_array;
/* offset in bytes for next node slot */
size_t offset = (m->tree_data->n)++ * sizeof(struct avl_node);
return node_ptr + offset;
}
else
{
/*
* we should never get here - gsl_spmatrix_realloc() should
* be called before exceeding nzmax nodes
*/
GSL_ERROR_NULL("attemping to allocate tree node past nzmax", GSL_EINVAL);
}
}
示例7: gsl_odeiv_control_scaled_new
gsl_odeiv_control *
gsl_odeiv_control_scaled_new(double eps_abs, double eps_rel,
double a_y, double a_dydt,
const double scale_abs[],
size_t dim)
{
gsl_odeiv_control * c =
gsl_odeiv_control_alloc (gsl_odeiv_control_scaled);
int status = gsl_odeiv_control_init (c, eps_abs, eps_rel, a_y, a_dydt);
if (status != GSL_SUCCESS)
{
gsl_odeiv_control_free (c);
GSL_ERROR_NULL ("error trying to initialize control", status);
}
{
sc_control_state_t * s = (sc_control_state_t *) c->state;
s->scale_abs = (double *)malloc(dim * sizeof(double));
if (s->scale_abs == 0)
{
free (s);
GSL_ERROR_NULL ("failed to allocate space for scale_abs",
GSL_ENOMEM);
}
memcpy(s->scale_abs, scale_abs, dim * sizeof(double));
}
return c;
}
示例8: gsl_odeiv2_evolve_alloc
gsl_odeiv2_evolve *
gsl_odeiv2_evolve_alloc (size_t dim)
{
gsl_odeiv2_evolve *e =
(gsl_odeiv2_evolve *) malloc (sizeof (gsl_odeiv2_evolve));
if (e == 0)
{
GSL_ERROR_NULL ("failed to allocate space for evolve struct",
GSL_ENOMEM);
}
e->y0 = (double *) malloc (dim * sizeof (double));
if (e->y0 == 0)
{
free (e);
GSL_ERROR_NULL ("failed to allocate space for y0", GSL_ENOMEM);
}
e->yerr = (double *) malloc (dim * sizeof (double));
if (e->yerr == 0)
{
free (e->y0);
free (e);
GSL_ERROR_NULL ("failed to allocate space for yerr", GSL_ENOMEM);
}
e->dydt_in = (double *) malloc (dim * sizeof (double));
if (e->dydt_in == 0)
{
free (e->yerr);
free (e->y0);
free (e);
GSL_ERROR_NULL ("failed to allocate space for dydt_in", GSL_ENOMEM);
}
e->dydt_out = (double *) malloc (dim * sizeof (double));
if (e->dydt_out == 0)
{
free (e->dydt_in);
free (e->yerr);
free (e->y0);
free (e);
GSL_ERROR_NULL ("failed to allocate space for dydt_out", GSL_ENOMEM);
}
e->dimension = dim;
e->count = 0;
e->failed_steps = 0;
e->last_step = 0.0;
e->driver = NULL;
return e;
}
示例9: gsl_spmatrix_ptr
double *
gsl_spmatrix_ptr(gsl_spmatrix *m, const size_t i, const size_t j)
{
if (i >= m->size1)
{
GSL_ERROR_NULL("first index out of range", GSL_EINVAL);
}
else if (j >= m->size2)
{
GSL_ERROR_NULL("second index out of range", GSL_EINVAL);
}
else
{
if (GSL_SPMATRIX_ISTRIPLET(m))
{
/* traverse binary tree to search for (i,j) element */
void *ptr = tree_find(m, i, j);
return (double *) ptr;
}
else if (GSL_SPMATRIX_ISCCS(m))
{
const size_t *mi = m->i;
const size_t *mp = m->p;
size_t p;
/* loop over column j and search for row index i */
for (p = mp[j]; p < mp[j + 1]; ++p)
{
if (mi[p] == i)
return &(m->data[p]);
}
}
else if (GSL_SPMATRIX_ISCRS(m))
{
const size_t *mj = m->i;
const size_t *mp = m->p;
size_t p;
/* loop over row i and search for column index j */
for (p = mp[i]; p < mp[i + 1]; ++p)
{
if (mj[p] == j)
return &(m->data[p]);
}
}
else
{
GSL_ERROR_NULL("unknown sparse matrix type", GSL_EINVAL);
}
/* element not found; return 0 */
return NULL;
}
} /* gsl_spmatrix_ptr() */
示例10: cspline_alloc
/* common initialization */
static void *
cspline_alloc (size_t size)
{
cspline_state_t * state = (cspline_state_t *) malloc (sizeof (cspline_state_t));
if (state == NULL)
{
GSL_ERROR_NULL("failed to allocate space for state", GSL_ENOMEM);
}
state->c = (double *) malloc (size * sizeof (double));
if (state->c == NULL)
{
free (state);
GSL_ERROR_NULL("failed to allocate space for c", GSL_ENOMEM);
}
state->g = (double *) malloc (size * sizeof (double));
if (state->g == NULL)
{
free (state->c);
free (state);
GSL_ERROR_NULL("failed to allocate space for g", GSL_ENOMEM);
}
state->diag = (double *) malloc (size * sizeof (double));
if (state->diag == NULL)
{
free (state->g);
free (state->c);
free (state);
GSL_ERROR_NULL("failed to allocate space for diag", GSL_ENOMEM);
}
state->offdiag = (double *) malloc (size * sizeof (double));
if (state->offdiag == NULL)
{
free (state->diag);
free (state->g);
free (state->c);
free (state);
GSL_ERROR_NULL("failed to allocate space for offdiag", GSL_ENOMEM);
}
return state;
}
示例11: akima_alloc
/* common creation */
static void *
akima_alloc (size_t size)
{
akima_state_t *state = (akima_state_t *) malloc (sizeof (akima_state_t));
if (state == NULL)
{
GSL_ERROR_NULL("failed to allocate space for state", GSL_ENOMEM);
}
state->b = (double *) malloc (size * sizeof (double));
if (state->b == NULL)
{
free (state);
GSL_ERROR_NULL("failed to allocate space for b", GSL_ENOMEM);
}
state->c = (double *) malloc (size * sizeof (double));
if (state->c == NULL)
{
free (state->b);
free (state);
GSL_ERROR_NULL("failed to allocate space for c", GSL_ENOMEM);
}
state->d = (double *) malloc (size * sizeof (double));
if (state->d == NULL)
{
free (state->c);
free (state->b);
free (state);
GSL_ERROR_NULL("failed to allocate space for d", GSL_ENOMEM);
}
state->_m = (double *) malloc ((size + 4) * sizeof (double));
if (state->_m == NULL)
{
free (state->d);
free (state->c);
free (state->b);
free (state);
GSL_ERROR_NULL("failed to allocate space for _m", GSL_ENOMEM);
}
return state;
}
示例12: gsl_movstat_alloc_with_size
gsl_movstat_workspace *
gsl_movstat_alloc_with_size(const size_t accum_state_size, const size_t H, const size_t J)
{
gsl_movstat_workspace *w;
size_t state_size = accum_state_size;
w = calloc(1, sizeof(gsl_movstat_workspace));
if (w == 0)
{
GSL_ERROR_NULL ("failed to allocate space for workspace", GSL_ENOMEM);
}
w->H = H;
w->J = J;
w->K = H + J + 1;
if (state_size == 0)
{
/*
* determine maximum number of bytes needed for the various accumulators;
* the accumulators will all share the same workspace
*/
state_size = GSL_MAX(state_size, (gsl_movstat_accum_mad->size)(w->K)); /* MAD accumulator */
state_size = GSL_MAX(state_size, (gsl_movstat_accum_mean->size)(w->K)); /* mean/variance/sd accumulator */
state_size = GSL_MAX(state_size, (gsl_movstat_accum_min->size)(w->K)); /* min/max accumulator */
state_size = GSL_MAX(state_size, (gsl_movstat_accum_sum->size)(w->K)); /* sum accumulator */
state_size = GSL_MAX(state_size, (gsl_movstat_accum_median->size)(w->K)); /* median accumulator */
state_size = GSL_MAX(state_size, (gsl_movstat_accum_Qn->size)(w->K)); /* Q_n accumulator */
state_size = GSL_MAX(state_size, (gsl_movstat_accum_qqr->size)(w->K)); /* QQR accumulator */
state_size = GSL_MAX(state_size, (gsl_movstat_accum_Sn->size)(w->K)); /* S_n accumulator */
}
w->state = malloc(state_size);
if (w->state == 0)
{
gsl_movstat_free(w);
GSL_ERROR_NULL ("failed to allocate space for accumulator state", GSL_ENOMEM);
}
w->work = malloc(w->K * sizeof(double));
if (w->work == 0)
{
gsl_movstat_free(w);
GSL_ERROR_NULL ("failed to allocate space for work", GSL_ENOMEM);
}
w->state_size = state_size;
return w;
}
示例13: gsl_eigen_nonsymm_alloc
gsl_eigen_nonsymm_workspace *
gsl_eigen_nonsymm_alloc(const size_t n)
{
gsl_eigen_nonsymm_workspace *w;
if (n == 0)
{
GSL_ERROR_NULL ("matrix dimension must be positive integer",
GSL_EINVAL);
}
w = (gsl_eigen_nonsymm_workspace *)
calloc (1, sizeof (gsl_eigen_nonsymm_workspace));
if (w == 0)
{
GSL_ERROR_NULL ("failed to allocate space for workspace", GSL_ENOMEM);
}
w->size = n;
w->Z = NULL;
w->do_balance = 0;
w->diag = gsl_vector_alloc(n);
if (w->diag == 0)
{
gsl_eigen_nonsymm_free(w);
GSL_ERROR_NULL ("failed to allocate space for balancing vector", GSL_ENOMEM);
}
w->tau = gsl_vector_alloc(n);
if (w->tau == 0)
{
gsl_eigen_nonsymm_free(w);
GSL_ERROR_NULL ("failed to allocate space for hessenberg coefficients", GSL_ENOMEM);
}
w->francis_workspace_p = gsl_eigen_francis_alloc();
if (w->francis_workspace_p == 0)
{
gsl_eigen_nonsymm_free(w);
GSL_ERROR_NULL ("failed to allocate space for francis workspace", GSL_ENOMEM);
}
return (w);
} /* gsl_eigen_nonsymm_alloc() */
示例14: gsl_eigen_nonsymmv_alloc
gsl_eigen_nonsymmv_workspace *
gsl_eigen_nonsymmv_alloc(const size_t n)
{
gsl_eigen_nonsymmv_workspace *w;
if (n == 0)
{
GSL_ERROR_NULL ("matrix dimension must be positive integer",
GSL_EINVAL);
}
w = (gsl_eigen_nonsymmv_workspace *)
calloc (1, sizeof (gsl_eigen_nonsymmv_workspace));
if (w == 0)
{
GSL_ERROR_NULL ("failed to allocate space for workspace", GSL_ENOMEM);
}
w->size = n;
w->Z = NULL;
w->nonsymm_workspace_p = gsl_eigen_nonsymm_alloc(n);
if (w->nonsymm_workspace_p == 0)
{
gsl_eigen_nonsymmv_free(w);
GSL_ERROR_NULL ("failed to allocate space for nonsymm workspace", GSL_ENOMEM);
}
/*
* set parameters to compute the full Schur form T and balance
* the matrices
*/
gsl_eigen_nonsymm_params(1, 0, w->nonsymm_workspace_p);
w->work = gsl_vector_alloc(n);
w->work2 = gsl_vector_alloc(n);
w->work3 = gsl_vector_alloc(n);
if (w->work == 0 || w->work2 == 0 || w->work3 == 0)
{
gsl_eigen_nonsymmv_free(w);
GSL_ERROR_NULL ("failed to allocate space for nonsymmv additional workspace", GSL_ENOMEM);
}
return (w);
} /* gsl_eigen_nonsymmv_alloc() */
示例15: gsl_odeiv2_driver_alloc_scaled_new
gsl_odeiv2_driver *
gsl_odeiv2_driver_alloc_scaled_new (const gsl_odeiv2_system * sys,
const gsl_odeiv2_step_type * T,
const double hstart,
const double epsabs, const double epsrel,
const double a_y, const double a_dydt,
const double scale_abs[])
{
/* Initializes an ODE driver system with control object of type
scaled_new.
*/
gsl_odeiv2_driver *state = driver_alloc (sys, hstart, T);
if (state == NULL)
{
GSL_ERROR_NULL ("failed to allocate driver object", GSL_ENOMEM);
}
if (epsabs >= 0.0 && epsrel >= 0.0)
{
state->c = gsl_odeiv2_control_scaled_new (epsabs, epsrel, a_y, a_dydt,
scale_abs, sys->dimension);
if (state->c == NULL)
{
gsl_odeiv2_driver_free (state);
GSL_ERROR_NULL ("failed to allocate control object", GSL_ENOMEM);
}
}
else
{
gsl_odeiv2_driver_free (state);
GSL_ERROR_NULL ("epsabs and epsrel must be positive", GSL_EINVAL);
}
/* Distribute pointer to driver object */
gsl_odeiv2_step_set_driver (state->s, state);
gsl_odeiv2_evolve_set_driver (state->e, state);
gsl_odeiv2_control_set_driver (state->c, state);
return state;
}