diff options
author | Ankit Raj | 2017-06-21 11:42:02 +0530 |
---|---|---|
committer | Ankit Raj | 2017-06-21 11:42:02 +0530 |
commit | 061f07929cc984788154bc296c6cc440ef72a3c6 (patch) | |
tree | c486321ca7a986cb0ffe9c1c8c5f9c385a697776 /thirdparty/includes/GSL/gsl/gsl_combination.h | |
parent | ec8943082d8c262485e7b34515b1597b1d887867 (diff) | |
parent | e92d6c6791aae06053637ad3bf6b0f9d8986986c (diff) | |
download | Scilab2C_fossee_old-061f07929cc984788154bc296c6cc440ef72a3c6.tar.gz Scilab2C_fossee_old-061f07929cc984788154bc296c6cc440ef72a3c6.tar.bz2 Scilab2C_fossee_old-061f07929cc984788154bc296c6cc440ef72a3c6.zip |
updated with main repo
Diffstat (limited to 'thirdparty/includes/GSL/gsl/gsl_combination.h')
-rw-r--r-- | thirdparty/includes/GSL/gsl/gsl_combination.h | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/thirdparty/includes/GSL/gsl/gsl_combination.h b/thirdparty/includes/GSL/gsl/gsl_combination.h new file mode 100644 index 0000000..69de7cf --- /dev/null +++ b/thirdparty/includes/GSL/gsl/gsl_combination.h @@ -0,0 +1,92 @@ +/* combination/gsl_combination.h + * based on permutation/gsl_permutation.h by Brian Gough + * + * Copyright (C) 2001 Szymon Jaroszewicz + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __GSL_COMBINATION_H__ +#define __GSL_COMBINATION_H__ + +#include <stdlib.h> +#include <gsl/gsl_errno.h> +#include <gsl/gsl_types.h> +#include <gsl/gsl_inline.h> +#include <gsl/gsl_check_range.h> + +#undef __BEGIN_DECLS +#undef __END_DECLS +#ifdef __cplusplus +# define __BEGIN_DECLS extern "C" { +# define __END_DECLS } +#else +# define __BEGIN_DECLS /* empty */ +# define __END_DECLS /* empty */ +#endif + +__BEGIN_DECLS + +struct gsl_combination_struct +{ + size_t n; + size_t k; + size_t *data; +}; + +typedef struct gsl_combination_struct gsl_combination; + +gsl_combination *gsl_combination_alloc (const size_t n, const size_t k); +gsl_combination *gsl_combination_calloc (const size_t n, const size_t k); +void gsl_combination_init_first (gsl_combination * c); +void gsl_combination_init_last (gsl_combination * c); +void gsl_combination_free (gsl_combination * c); +int gsl_combination_memcpy (gsl_combination * dest, const gsl_combination * src); + +int gsl_combination_fread (FILE * stream, gsl_combination * c); +int gsl_combination_fwrite (FILE * stream, const gsl_combination * c); +int gsl_combination_fscanf (FILE * stream, gsl_combination * c); +int gsl_combination_fprintf (FILE * stream, const gsl_combination * c, const char *format); + +size_t gsl_combination_n (const gsl_combination * c); +size_t gsl_combination_k (const gsl_combination * c); +size_t * gsl_combination_data (const gsl_combination * c); + +int gsl_combination_valid (gsl_combination * c); +int gsl_combination_next (gsl_combination * c); +int gsl_combination_prev (gsl_combination * c); + +INLINE_DECL size_t gsl_combination_get (const gsl_combination * c, const size_t i); + +#ifdef HAVE_INLINE + +INLINE_FUN +size_t +gsl_combination_get (const gsl_combination * c, const size_t i) +{ +#if GSL_RANGE_CHECK + if (GSL_RANGE_COND(i >= c->k)) /* size_t is unsigned, can't be negative */ + { + GSL_ERROR_VAL ("index out of range", GSL_EINVAL, 0); + } +#endif + return c->data[i]; +} + +#endif /* HAVE_INLINE */ + +__END_DECLS + +#endif /* __GSL_COMBINATION_H__ */ |